개요최근 알고리듬 문제 풀이 공부를 하면서 C++로 진행하고 있다. 이때 vector라는 가변 길이 배열을 자주 사용하게 되는데 이를 처음 선언하고 다룰 때 어떻게 하는 것이 가장 좋을까라는 고민을 하게 되었다. 여기에는 capacity와 size가 있는데 이것은 무엇이며, resize와 reserve가 있는데 이는 언제 사용하는지, 왜 사용하는지 알아보자. (프로그램은 mac m1 환경에서 실행 되었으며, 예시에서 대부분 main와 헤더 파일 등 공통적인 부분은 생략합니다)vector의 생성자와 capacity, size 변경 방법.기본 생성자vector의 기본 생성자는 다음과 같이 호출할 수 있다. vector arr;vector는 push_back이라는 메서드로 삽입 순서를 기억한 상태로 자료..
전체 글
하고 싶은 것들을 하며 성공하기
오랜만의 포스팅입니다. 이번에 프로그래머스에서 진행하는 세미나에 다녀왔는데요! 여러 경험을 가진 개발 선배님들을 만나뵐 수 있어서 신청했고, 운 좋게 오프라인에 당첨 되어서 강남역에 위치한 프로그래머스 강남점에 방문했습니다. 데브 코스라고 하는 부트 캠프 자체에는 관심이 적었지만, 강대명 강사님을 이전부터 알고 있어서 신청하게 되었습니다. 그리고 좋은 경험을 공유해준다는 소식을 듣고 한 걸음에 찾아갔습니다. 요즘 이직을 준비하면서 고민도 많았고, 다른 분들은 어떤 생각을 갖고 사는지 궁금했거든요! 아래 URL은 강대명 님이 구름에서 진행한 인터뷰입니다. 궁금하신 분들은 참고 부탁해요!https://blog.goorm.io/daemyungkang/ 결론적으로 세미나는 만족했고, 세 개의 발표 모두 양질의 ..
개요socket.io의 공식 문서를 읽으며 알게 된 특징과 장단점을 기술해보려 합니다. 왜 web socket이 아닌 socket.io를 사용해야 하는지, socket.io는 어떤 환경에 적합한지 알아보겠습니다.본문1. Socket.io 와 Web socket은 다르다 - socket.io는 web socket의 구현체가 아니다. 웹 소켓도 이미 구현체이고, 이에 추가적인 기능을 가진 개체가 Socket.io이다. - web socket과 다르게 socket.io는 Acknowledgement, connection recovery, event 단위 처리 등이 가능하다는 장점이 있다. 2. socket.io는 백그라운드 프로그램에 어울리지 않다. - 지속적으로 open TCP 연결을 해야 하기 때문에 모..
개요채팅을 구현하는 것은 이번이 두 번째입니다. 처음 구현할 때는 웹 개발을 처음했을 때라 웹소켓보다 기본적인 API에 집중했습니다. 그러다 보니 소켓 관련 부분은 게임 파트 동료가 만들어둔 것을 사용하는 형식으로 했고, 디테일이 부족했습니다. 하지만 이번에 채팅을 한 번 더 구현할 기회가 생겨 관련하여 공부하고, 기록으로 남겨볼 예정입니다. 본문현재 ec2 docker의 WAS의 아키텍처는 무중단 배포를 위해 인스턴스가 두 개 존재합니다. 때문에 클라이언트와의 통신 요청-응답 사이에 상태를 서버에서 저장하면 안 됩니다. DB 등의 또다른 인스턴스에서 저장해야 한다는 이야기이죠. 때문에 In-memory caching을 할 수 있는 Redis 등을 이용하여 서버 소켓을 저장해야 합니다. 이렇게 redis..
개요Socket.io는 무엇이고, 언제 사용할 수 있는지, 그리고 WebSocket과의 차이점을 알아보겠습니다.본문Socket.io이란?Socket.io는 클라이언트와 서버 간의 짧은 지연 시간, 양방향, 이벤트 기반의 통신입니다. 때문에 실시간 서비스에서 사용하기에 적합한 라이브러리입니다. Socket.io는 HTTP와 다르게 연결만 되어 있다면 서버에서도 원할 때 요청을 먼저 줄 수 있습니다. 또 클라이언트와 연결이 비정상적으로 끊어졌을 때 자동으로 재연결을 시도하며, 패킷을 자동으로 버퍼에 저장하고, 재연결이 되면 이를 전송합니다. 주의 할 점은 Socket.io는 모바일 애플리케이션의 백그라운드 서비스에서 사용하기에 적합하지 않습니다. 서버와 개방형 TCP 연결을 유지하므로 배터리를 많이 소모할 ..
개요자사 서비스 어드민 페이지 유지 보수 및 기능 개발을 맡게 되었다. 이에 따라 처음으로 프론트 리액트 공부를 하게 되었고, 내용을 정리하여 한다.본문 Total clicks: 0 Click me span특정 텍스트를 감싸는 인라인 컨테이너이다. javascript로 특정 span의 텍스트 내용을 변경할 수 있다.템플릿 리터럴(``)자바스크립트에서 문자열로 나타낼 수 있으며 변수를 문자열과 같이 넣을 수 있어 편리하다. java나 C 같은 언어에서는 문자열에서 '+' 같은 연산자를 사용해야 하는데 자바스크립트는 이것도 지원하지만 더 편리하게 이를 사용할 수 있다. ${variable name}을 내부에 적으면 된다. 여기에선 count 변수의 값을 넣어주고 있다.document로드된 HTML 문서..

개요 벌써 취업해서 일한지 4주차이다. 나는 지금 하루가 다르게 성장하며 배우고 즐겁게 일하고 있다. 다만 시간이 부족할 뿐...! 입사하자 마자 4주차까지 SI로 일했고, 이제 드디어 자사 서비스 개발에 들어간다. 그래서 4주간 일했던 경험을 피드백으로 작성해볼 것이다. 평소 나는 ORM을 주로 사용했다. Spring에 DataJPA 또는 NestJS에 TypeORM으로 코드로 추상화 된 DB 작업만 했는데 여기에선 Spring에 xml 파일 기반의 MyBatis라는 DB Mapper를 사용했다. 4주간 이 덕분에 기술 부채로 남겨뒀던 SELECT 문을 맘껏 써봤다. 지금은 SELECT문 작성과 두 개 이상의 서브 쿼리, CTE(Common Table Expression)을 사용한 복잡한 조회 문을 손..
Function DATE_FORMAT() WHERE date_format(sales_ym, '%Y%m') = date_format(date_add(now(), interval - 1 month), '%Y%m'), '%Y%m' 값을 주어진 형식에 맞춰 문자열로 변환하는 함수이다. 위처럼 sales_ym이 char(6)의 문자열일 때 이를 date_format으로 받을 수 없다. date_format은 단순 문자열이 아니라 날짜 또는 시간만 받을 수 있다. WHERE sales_ym = date_format(date_add(now(), interval - 1 month), '%Y%m') 그렇기 때문에 가장 위처럼 하는 것은 이미 202403, 202404 등의 형식으로 저장된 문자열을 의미 없이 같은 타입의..