일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- #스파르타코딩클럽후기 #내일배움캠프후기
- SSR
- Morphological analysis #Corpus
- taskkill
- 코딩온라인
- terminate
- 서버사이드렌더링
- 플젝후체크
- khaiii
- 마크다운
- Anaconda
- github
- expression statement is not assignment or call html
- 비동기
- github markdown
- 필사
- 카우치코딩 #couchcoding #6주포트폴리오 #6주협업프로젝트
- 파이콘
- 파이썬
- address
- 출처: 자바의 신 8장
- 카우치코딩 #couchcoding #6주포트폴리오 #6주협업프로젝트v
- PID
- 자바파이썬
- Technical Writing
- gitbash
- Kakao
- 모바일웹스킨
- 클라이언트사이드렌더링
- Machine Learning
- Today
- Total
목록전체 글 (130)
개발 일기
10년 뒤 당신은 어떤 엔지니어가 되고 싶나요? 자소서 질문으로 자주 받았던 질문이다. 그런데 요즘은 꼭 10년은 아니어도, 내가 어떤 사람이 되어야 하는가 자주 생각한다. 사실 비즈니스에 있었을 때는 이런 생각을 크게 하지 않았고, 주위에 하는 사람도 별로 없었다. - 모두가 아는 것이라고 할 지라도, 실수할만한 포인트를 항상 인지하고 치명적인 실수를 하지 않는 개발자가 되고 싶다.(ex. gitignore, application.yml의 설정, ddl-auto 같이 실수하면 큰일나는 것들..) - 공식 문서만으로 개발할 수 없더라도, 공식 문서를 자주 들여다보고 싶다 -> 정말 다행인 것은, 이제는 영어로 문서를 읽는 게 꽤 할만하다는 것이다. 코딩을 처음 시작할 때는 사람들이 너는 영어를 잘 하..
팀 코드에는 다른 시스템에(ex. 결제 -> 회원 서비스) 메시지를 전달할 때, 코루틴을 활용한다. 해당 코드를 작업 하면서, 코루틴을 공부한 내용을 정리해두었다. 코루틴을 이해하려면, 먼저 동기와 비동기를 이해해야 한다.동기와 비동기 특성동기 프로그래밍비동기 프로그래밍실행 순서작업이 순차적으로 실행됨 (이전 작업 완료 이후)작업 간 순서가 중요하고, 결과가 즉시 필요할 때.한 작업의 완료를 기다리지 않고, 다음 작업으로 넘어간다. 작업이 완료되면, 코루틴/콜백 등을 통해 처리.블로킹 여부호출된 스레드를 차단함.완료될 때까지 호출된 스레드가 기다려야 함.호출된 스레드를 차단하지 않고 즉시 제어 반환하므로,다른 작업을 그동안 진행함.코드 복잡성비교적 간단하고 직관적복잡하며 관리가 필요응답성작업 중 응답이..
Graceful Shutdown 이란? 스프링 부트의 공식문서에서는 아래와 같이 설명한다. 해석해보면 이런 뜻이다. GracefulShutdown 은 애플리케이션 컨텍스트를 종료하고, 빈을 중단하는 초기 단계에서 일어난다.중단하는 과정에서는 Grace Period 를 제공하는 타임아웃을 사용한다. Grace Period 동안 기존 요청들은 실행을 마칠 수 있지만, 새로운 요청은 허용되지 않는다. It occurs as part of closing the application context and is performed in the earliest phase of stopping SmartLifecycle beans. This stop processing uses a timeout which provid..
팀에서는 파일을 다루는 업무가 많기 때문에, 파일을 읽고, 조회하고, 리눅스 명령어를 다룰 일이 많다. 리눅스는 유닉스 계열 운영체제이다. 쉘은 유닉스 및 리눅스 시스템에서 사용자가 시스템과 상호작용하게 해준다. 쉘을 통해 파일 시스템을 탐색하고, 파일을 열고, 편집하고, 프로그램을 실행할 수 있다. 쉘 이란?쉘은 사용자가 입력한 명령을 해석해 커널에 전달하거나, 커널의 처리 결과를 사용자에게 전달하는 역할을 한다 (쉘 스크립트 프로그래밍 (velog.io)) Shebang 이란?셔뱅(shebang)은 해시 기호와 느낌표(#!)로 이루어진 문자 시퀀스로, 스크립트의 맨 처음에 온다.유닉스 계열 운영 체제에서 셔뱅이 있는 스크립트는 프로그램으로서 실행되며, 프로그램 로더가 스크립트의 첫 줄의 나머지 부분을..
메모리 에러가 발생하자 선배가 Heap Dump 를 분석하는 것을 보았다. 특히 메모리 누수나, Out Of Memory 같은 이슈가 있을 때 깊이 분석해보기 위해 사용한다고 한다. 처음 알게 된 개념을 실습해보고자, 인위적으로 OOM 을 발생시킨 후 힙 덤프를 떠보았다. 순서 1) SpringMVC로 간단한 프로젝트를 만들기 2) Heap Dump 만들어서 읽기3) 가비지 컬렉터를 바꿔보기 4) System.gc() 호출해보기5) StringTableSize 바꿔보기 실습 환경 Java 17 | Spring 3.1.1 먼저 자바 애플리케이션을 실행한다. ./gradlew build 명령어 실행 시, build/libs 에 jar 파일이 생성된다.java -jar demo-0.0.1-SNAPSHOT...
현재 팀에서 다루는 서버의 절반은 TCP 통신 기반이다.자주 쓰이지만 익숙치 않은 개념이어서, TCP 통신과 관련해서 기초 네트워크 개념을 정리해보았다. 실무에서 자주 쓰이는 패킷도 들여다 보고자 한다. IO와 NIO 의 차이 자바 Socket 은 blocking IO 로 동작한다. IO는 스트림(Stream)이라는 단방향 통로를 생성해서 외부 데이터와 통신, 연결 클라이언트 수가 적고 대용량, 순차처리에 적합하다. NIO는 채널(Channel)이라는 양방향 통로를 생성해서 외부 데이터와 통신, 연결 클라이언트 수가 많고 소규모 빠른 대응에 적합하다. IONIO스트림방식 Non-buffer버퍼방식동기방식동기/비동기 모두 지원블로킹 방식블록킹/논블록킹 모두 지원 순수 Java NIO로 TCP Echo 서..
상황 프레시 카트는 Redis 를 사용하고 있고, 용도는 아래와 같습니다 - 다중 서버 환경에서 로그인 유저의 세션을 보관할 수 있는 공통 저장소 - 추후 메인 페이지에서 보여지는 전체 상품 데이터를 캐싱하기 위해. 서버는 언제나 fail 될 수 있고, 서버 문제로 애플리케이션이 동작하지 않는다고 가정해봅시다. 서버가 동작하지 않는 시간 만큼 비즈니스 중단/고객의 불편이라는 손실로 이어집니다. 특히 프레시 카트의 메인 기능인 주문은 로그인을 해야 가능하기 때문에, 늘 로그인을 가능하게 하는 것이 중요합니다. Redis Clustering 을 선택한 이유 레디스의 fail over 방식으로는 replication, clustering, sentinel이 있습니다. 이에 대해서는 별도 포스팅에서 자세히 설명..
문제 판매자의 제품 등록 기능에서 Insert 쿼리가 다수 발생한다는 것을 발견했습니다. Disk I/O는 웹 서비스 성능에 많은 영향을 미치는 중요 모니터링 지표입니다. 디스크의 데이터 처리 속도가 메모리나 CPU에 비해 너무 느리기 때문입니다. DISK I/O를 줄이는 것은 DB 성능 개선의 핵심 이기도 합니다. 이번 글에서는 쿼리를 여러번 날렸을 때, 나타나는 지연 현상을 개선 해보겠습니다. 개요 네이버 쇼핑, 배달의 민족 등 평소 이용하는 이커머스 서비스를 보면, 소비자가 다양한 옵션을 구성할 수 있도록 제품이 제공됩니다. 이를 충족하기 위해, 판매자가 제품을 등록할 때, 다양한 옵션 그룹과 옵션을 설정할 수 있어야 합니다. 제품 등록 POST 요청 값의 예시입니다. 제품(샐러드) 에 옵션이 있을..