Git 커밋 히스토리에서 파일 완전히 삭제하기
원치 않는 커밋이 저장소에 올라갔을때, 나의 실수를 남들도 모르게 하고 싶을 때, Git 커밋 기록 완전히 삭제하기 vscode를 메모장처럼 쓰던 나는 나도 모르는 사이에 회사 파일이 개인 깃에 올라간 걸 발견했다. 부랴부랴 삭제한 후, 다시 커밋-푸시를 날려보았지만 이미 히스토리에 남아있는 나의 치욕의 상처는 지워지지 않고 남아있었던 것이다,,, git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch 경로/파일명.확장자' --prune-empty --tag-name-filter cat -- --all git add . git commit -m "커밋메시지" git push origin --force --all 이제 히스토리에..
[python | 파이썬] Greedy Algorithm | 그리디 알고리즘
그리디 알고리즘은 말그대로 "탐욕법" 즉, 현재 상황에서 지금 당장 좋은 것만을 고르는 방법을 의미한다. 그리디의 대표적인 문제인 거스름돈 문제를 살펴보자. 5585번: 거스름돈 타로는 자주 JOI잡화점에서 물건을 산다. JOI잡화점에는 잔돈으로 500엔, 100엔, 50엔, 10엔, 5엔, 1엔이 충분히 있고, 언제나 거스름돈 개수가 가장 적게 잔돈을 준다. 타로가 JOI잡화점에서 물건을 사 www.acmicpc.net 이 문제는 그리디 알고리즘을 이용해 풀 수 있는 가장 대표적인 문제로, 가장 큰 화페 단위부터 돈을 거슬러 주는 방식으로 해결할 수 있다. coins = [500, 100, 50 , 10, 5 , 1] n = int(input()) money = 1000-n cnt = 0 for coi..
[프로그래머스 | 파이썬 python] 단속카메라
🌏 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 👽 풀이 def solution(routes): answer = 0 routes.sort(key = lambda x : x[1]) checked = [0] * len(routes) for i in range(len(routes)): if checked[i] == 0: camera = routes[i][1] answer += 1 for j in range(i+1,len(routes)): if routes[j][0]
[ Python | 파이썬 ] 정렬 알고리즘 정리 및 코드
🌏 Sorting 정렬 정렬이란, 데이터를 특정한 기준에 따라서 순서대로 나열하는 것을 의미한다. 정렬 알고리즘은 프로그램을 작성할 때 가장 많이 사용되는 알고리즘이며 코딩테스트에서도 자주 출제되는 알고리즘 중 하나이기 때문에 확실하게 정리하고 넘어가보자! 👽 Bubble Sort 거품 정렬 정렬의 과정에서 데이터의 이동이 거품이 수면으로 올라오는 듯한 모습을 보이기 때문에 버블 정렬이라 한다고 함! 서로 인접한 두 데이터의 크기를 비교하여 데이터의 위치를 바꾸는 과정을 반복하는 알고리즘 def bubbleSort(): for i in range(len(arr)): for j in rnage(len(arr)-i): if arr[j] > arr[j+1]: arr[j], arr[j+1] = arr[j+1],..
[JS | JavaScript ] 이미지 URL 유효성 검사
DB에서 이미지 url을 받아와서 이미지를 표기하는데, 이미지가 만료된 링크가 많아서 유효성 검사를 하는 코드를 추가해줬다. 그냥 두면 오류난 것 같잖아!!!!!!! 😭😭😭😭😭 function checkImageValidity(url) { var img = new Image(); img.onload = function() { // 이미지가 로드되었을 때 실행할 코드 console.log('이미지가 유효합니다.'); }; img.onerror = function() { // 이미지 로드에 실패했을 때 실행할 코드 console.log('이미지 로딩에 실패했습니다.'); }; img.src = url; } var imageUrl = 'http://example.com/image.jpg'; checkImage..
[Nuxt3 | Vue] iframe 사용 이슈
1. iframe 내부인지 외부인지 판별하기같은 코드여도 iframe 내부에서의 동작과 외부에서의 동작을 구분해야 하는 경우가 있다.if (window.self !== window.top) { // iframe 내부에서 실행될 함수} else { // iframe 안에 있지 않음!}2. 로드 후 onMounted, onNuxtReady 실행 안됨iframe 내에서 주소 이동을 했을 때 바로 실행되는 함수를 만들기 위해 onNuxtReady, onMounted를 사용해도 적용되지 않았다. ➡️ iframe의 src가 변경되면, iframe 내부에서는 Nuxt의 초기화가 다시 실행되지 않기 때문에 onNuxtReady가 실행되지 않는다.따라서 iframe에 @load를 추가하여 iframe이 로드..
사용되고 있는 특정 포트 죽이기
포트 죽이는 거 맨날 찾아봐서간단 정리. 포트 찾기예시 ➡️ 8080번을 사용중인 프로세스 찾아내기netstat -a -o | findstr 8080 그럼 이렇게 사용중인 프로세스들이 주륵 나오는 데 우리가 봐야할 건 PID 번호 죽이기taskkill /f /pid PID번호 이러면 죽음 끗
🌟 ESLint 빨간 밑줄? 당황하지 말고 이렇게 해결하자! 🎨✨
하,, 지피티가 만들어준 제목 어질어질하노,,개발하다 보면 변수를 선언했는데 아직 안 썼거나, 특정 규칙을 위반해서 ESLint가 빨간 밑줄을 그어줄 때가 있다. 🛠 1. eslint-disable-next-line이걸 사용하지 않는 변수 위에 추가하면 ESLint가 다음줄은 무시하고 넘어가줌! 📌 예제// eslint-disable-next-lineconst unusedVariable = "안쓰는 변수";이러면 더 이상 경고 없음! 🎉🎨 2. 특정 규칙만 비활성화하고 싶다면?만약 특정 ESLint 규칙 때문에 빨간 밑줄이 뜬다면, 아래처럼 규칙 이름을 지정할 수있다.// eslint-disable-next-line no-unused-varsconst unusedVariable = "안쓴다고"; ..
[Spring boot | Nuxt | Vue] 외부 접근 허용 CORS에러
회사에서 내 컴퓨터에 붙어서 내가 개발한 부분을 확인하고 싶다고 요청했다.IP 주소 알려주고 인바운드 규칙만 풀어주면 연결할 수 있을것이라고 생각했지만,계속 접속이 안된다는 대답만이,, 들려왔다,,로그를 보니 CORS에러,, ㅎㅎ,,,또 너구나급하게 코드 수정해서 다시 열어드리고 기록을 남겨둔다. 환경Nuxt3 + vueSpring Boot Nuxtexport default defineNuxtConfig({ devServer:{ host: '0.0.0.0', port: 3000 }})Nuxt 서버 설정을 0.0.0.0 으로 하면 외부에서 접근 가능하도록 열린다. spring boot@Configurationpublic class WebConfig implements WebMvcConfigurer {..
Spring @Transactional 어노테이션 적용 안될 때 | try-catch문, 체크드 예외
까먹기전에 짧게 정리. 분명 어노테이션을 적용했는데도 롤백이 되지 않아서 찾아봤다. 앙딱정1. @Transactionl 어노테이션을 썼다 해도 try-catch문으로 예외 처리를 한다면 롤백이 적용되지않는다. 따라서 catch문에서 예외를 다시 발생시키거나, 강제로 롤백을 실행해야한다.2. 체크드 예외를 적용했을 경우 따로 어노테이션에 rollbackFor 속성을 추가해야한다. 🌈Try-cath 문 사용 시한 줄 정 리 : catch문 안에 throw new Exception(); 을 넣어서 예외를 발생시켜야 한다방법1 | 예외 재발생@Transactionalpublic void yourMethod() { try { // 비즈니스 로직 } catch (Exception e) {..