[Cursor] Playwright로 테스트부터 디버깅까지 한번에 끝내기
·
Development
요즘 개발 트렌드를 보면 코드 짜는 것 자체보다 디버깅에 쏟는 시간이 훨씬 길어지는 것 같다. 특히 `Cursor`, `ChatGPT` 같은 AI 코딩 도구의 도움으로 코드를 빠르게 생성할 수록, 생성된 코드를 읽고 이해하며 잠재된 버그를 찾아내는 데 더 많은 시간이 필요하다는 아이러니한 상황에 직면하곤 한다. 😭 프론트엔드 개발자라면 UI 자동화 테스트의 중요성을 익히 알고 있을 것이다. 하지만 테스트 코드를 짜는 것만큼이나 어려운 것이 테스트 실패 시 원인 파악과 디버깅이다. 테스트 코드의 중요성을 알지만, 테스트 코드를 작성하는 비용 때문에 망설이는 개발자도 많은 것 같다. (일단 나부터 그러하다.) 매번 브라우저를 띄워 수동으로 재현해보고, 콘솔 로그를 뒤져보고... 이 과정에서 소중한 개..
[CS] "나누기 0"은 왜 어떤 언어에선 에러가 나고, 어떤 언어에선 무한대(Infinity)가 될까?
·
Development
자바 예외처리(exception)에 대해 보다가 문득 ArithmeticException에 대해 궁금해져서 정리하게 된 글입니다. 개요아래 코드의 실행 결과는 뭘까?public class Main { public static void main(String[] args) { int a = 5, b = 0; try { System.out.print(a / b); } catch (ArithmeticException e) { System.out.print("출력1"); } catch (ArrayIndexOutOfBoundsException e) { System.out.print("출력2"); ..
[React] 배포 후 간헐적으로 개발 서버에서 화면 에러가 뜨는 이유
·
Development
기록용으로 찾아보며 정리한 글로, 해당 내용에 대해 틀린 내용이 있을 수 있습니다! 틀린 내용은 지적해 주시면 감사하겠습니다:)개요개발 서버에 배포하면 간헐적으로 모든 라우터에서 에러바운더리가 발생하고 화면이 뜨지 않는 문제가 종종 발생하였다.새로고침 시나 라우터 이동 으로는 해결되지 않고 모든 페이지에서 발생했다. 그리고 브라우저에서 캐시 비우기 및 강력 새로고침을 하면 정상 동작하였다. 강력 새로고침만 했을 때는 동작하지 않음.즉, 캐시 비우기가 핵심인데 왜 이런 건지? 왜 개발 서버에서만 발생하고 로컬 환경에선 괜찮은 건지 이유가 궁금했다.강력 새로 고침: `Cmd + Shift + R` 예를 들어 스타일시트 수정이나, 이미지 수정은 크롬 브라우저에서 일반 새로고침 시에 캐시 때문에 반영이 안 되는..
[Web] 브라우저 “탭( Tab )”을 노리는 공격, Tabnabbing
·
Development
정보처리기사 실기를 공부하면서 브라우저 탭(Tab) 관련 보안 용어를 정리했습니다. 실무 경험담이 아니라, 문서/자료를 기반으로 정리한 글입니다. 아래 용어 중에서, 올바른 용어를 고르는 문제였는데, 정답은 Tabnabbing이다. 나머지는 문맥적으로 조합하여 부를 수는 있으나, 실제로 통용되는 정확한 정식 용어는 아닌 것으로 보인다. 문제에 출제된 단어와 문맥상으로 해석한 것은 아래와 같다.용어 요약용어내용표준성Tabnabbing (Reverse Tabnabbing)target="_blank"로 연 탭이 window.opener를 통해 원래 탭을 피싱 페이지로 바꿔치기널리 쓰임Tabjacking / Tabhijacking스크립트/확장프로그램이 탭의 콘텐츠/히스토리/포커스를 가로채거나 바꿔치기혼용Tabs..
[C언어] return 0, 그리고 0과 1의 진짜 의미
·
Development
오랜만에 C언어 보기 👀정보처리기사 실기 프로그래밍 언어에는 C언어, 자바, 파이썬이 나온다. 고로 두루두루 알고 있어야 함!! C언어는 대학교 1학년 때 배운 이후로 다 까먹은.. C언어의 return 0은 왜 True가 아닐까?return 0;이 “정상 종료”라는 건 알고 있지만, “그럼 0이 True인가?”, “if문에서 0이면 실행되나?” 같은 궁금증이 문득 들었다. 이 글은 C언어와 Shell에서 0과 1의 의미를 설명한다. C에서의 0과 1 (False / True)값의미조건식에서의 동작0거짓(False)분기 진입 안 함0 이외의 모든 값참(True로 간주)분기 진입if (0) puts("실행 안 됨");if (1) puts("실행 됨");if (-5) puts("이것..
[macOS] port 빠르게 종료하기
·
Development
여러분은 포트 충돌이 일어나면 어떻게 하나요? 왜 Spring Boot는 "같은 포트(기본 8080)"만 쓰나?Port 8080 was alerdy in use.Spring boot 쓰다 보면 지겹도록 보는 에러입니다.. IntelliJ를 강제 종료하거나, IDE가 예기치 않게 종료되었을 때 백그라운드 프로세스에서는 기존 포트가 이미 가동 중이므로, 충돌이 나는 거죠.물론 mySQL에서도 자주 보는 에러입니다.💦 Spring Boot는 서비스 서버입니다. 클라이언트/리버스 프록시/웹훅/OAuth 콜백 등 외부에서 고정 주소로 붙어야 합니다.포트가 이미 점유되어 있으면 실패(fail-fast) 하는 게 맞습니다. 자동으로 다른 포트로 도망가면 모니터링/프록시/헬스체크가 전부 틀어집니다. `lsof -i ..