본문 바로가기

전체 글33

알고리즘 문제 테스트를 위한 테스트 실행 함수 만들기 요즘 기업 코딩 테스트 대비하기 위해서 열심히 알고리즘 문제를 풀고 있다. 프로그래머스 문제만 푼다면 편하게 프로그래머스를 이용하면 되지만 책에 있는 문제도 풀어보고 인프런 강의 문제도 풀다보니 바로 테스트 할 수 있고 실행시간도 알 수 있는 테스트 함수가 필요하다고 생각했다. 문제 풀 때 함수 자동완성이랑 포맷팅 때문에 마침  VSCODE에서 풀고 깃허브에 올리고 있는데 마침 잘 됐다! 완전 럭키잖앙 ㅎ  test-helper.jsimport assert from 'assert';/** * @param {string} testName - 테스트케이스 이름 * @param {Function} soluctionFunc - 테스트 진행할 함수 * @param {*} expectedResult - 함수 예상 .. 2024. 5. 3.
[MySQL] 특정 쿼리 결과 세로 출력 조회 쿼리를 실행 할 때 컬럼 개수가 많으면 다음줄로 침범해서 굉장히 보기 힘듭니다. 그래서 결과 row들을 컬럼 별로 조회할 수 있는 방법을 찾아봤습니다. MySQL은 쿼리 뒤에 \G를 붙여서 실행하면 됩니다. 참고로 PostgreSQL에서는 쿼리 실행전 \x 명령어를 실행하면 됩니다. 기존 쿼리 select * from job_posting where company_name = "두핸즈"; 세로 출력 명령어 적용 쿼리 select * from job_posting where company_name = "두핸즈" \G; 2024. 3. 23.
GitHub Actions으로 CI/CD 자동화하기 CI/CD는 소프트웨어의 개발, 테스트, 배포 프로세스를 자동화하고 워크플로우를 간소화 할 수 있습니다. CI(Continuous Intergration, 지속적 통합)란? 지속적 통합은 개발자가 작성한 코드를 공유 저장소에 병합할 때 빌드와 테스트를 자동으로 실행하는 것을 의미합니다. 그렇기 때문에 여러 개발자가 main 브랜치에 병합할 때 발생할 수 있는 문제를 줄여줍니다. 지속적 통합을 적용하면 함께 작업하는 동료가 먼저 main 브랜치에 병합했을 때 본인은 pull --rebase만 하면 됩니다. CD(Continuous Delivery/Deployment, 지속적 전달/배포)란? 지속적 전달 - 지속적 통합(CI)의 확장 단계 - CI가 정상적으로 통과된 다음 공유 저장소(github, cont.. 2024. 3. 6.
job-hunter 회고 #1 개발 초기 정말 오랜만에 개인 프로젝트를 만들어봤다. 이직을 위해 채용 공고를 둘러보던 중 새로 올라온 공고를 알려주는 프로그램을 하나 만들어야겠다고 생각했다. 그리고 요즘 디스코드를 자주 켜놓기 때문에 디스코드 알림으로 볼 수 있도록 디스코드 봇으로 만들기로 결정했다. 나의 초기 계획 디스코드에서 원하는 직군, 지역 구독/구독해제 채용 공고 사이트 여러 곳에서 관련 데이터 크롤링 후 DB에 저장 새로 올라온 채용 공고 디스코드로 알림 마감된 채용 공고 디스코드로 알림 각 포지션 별로 회사에서 어떤 기술 스택을 원하는지 데이터 분석해서 통계해서 디스코드로 알림 내가 처음 기획한 내용은 위에 항목대로 여러가지 기능을 추가하고 싶었지만 우선 나만의 MVP 기능 먼저 동작하는 거 확인하고 추후 추가하기로 했다. CI/C.. 2024. 1. 15.
[Typescript] Type vs Interface 전 직장에서 typescript를 사용하기 시작하면서 팀원들과 type 사용 방식이 각각 달랐습니다. 저는 interface를 사용하다가 utility type을 사용해야 할 때는 type을 사용했었는데 그땐 그냥 필요해서 사용했지 어떤 기준으로 사용해야할지에 대해 찾아보진 않았던 것 같습니다. 그러다가 최근 개인 프로젝트를 진행하면서 찾아보게 되었는데요. 정리하면 좋을 것 같아서 글을 씁니다. github에서 유명한 typescript 프로젝트들을 봤을 때 type과 interface를 섞어서 쓰고 있더라구요. 이렇게 되면 더욱 고민이 됩니다. 그들은 무슨 기준으로 선언을 하는 걸까요 ? 우선 type, interface 에 대한 간략한 설명을 먼저 보겠습니다. type - 새로운 타입을 정의하고 일반.. 2023. 12. 15.
[Docker] 명령어 정리 안녕하세요. 자주 사용하는 Docker 명령어를 정리해보았습니다. 실행 중인 컨테이너 목록 확인 -a: 중지된 컨테이너도 확인 할 수 있음(-all) docker ps 실행 중인 컨테이너 중지 실행중인 컨테이너 하나 또는 여러개 중지 가능 docker stop 컨테이너 제거 docker rm 컨테이너 로그 확인 docker logs 이미지 목록 확인 docker images 이미지 다운로드 docker pull docker pull [OPTIONS] NAME[:TAG|@DEGEST] docker pull ubuntu:18.04 이미지 삭제 docker rmi 네트워크 생성 도커 컨테이너끼리 이름으로 통신할 수 있는 가상 네트워크 생성 docker network create docker network cr.. 2023. 11. 28.
[Redis] 공식문서를 보면서 Redis에 대해 알아보자! key-value 구조이며 in-memory 저장으로 인해 데이터 처리 속도가 빠르다고 잘 알려진 Redis에 대해서 알아보겠습니다. 저는 로그인 세션 관리나 자주 읽어오는 데이터를 캐싱할 때 쓰거나 실시간 업데이트를 위해서 사용 해봤었는데요. 생각보다 제공하는 기능들이 많은 것 같아서 공식 문서를 보면서 공부하는 시간을 가져보자 합니다. Redis(Remote Dictionary Server)란? 데이터베이스, 캐시, 메시지 브로커, 스트리밍 엔진으로 사용되는 오픈소스 in-memory 데이터 구조 저장소입니다. 원래 BSD 라이선스였으나 향후 릴리스에서 이중 라이선스(RSALv2 또는 SSPLv1 중 선택)가 적용 될 거라고 합니다. in-memory 저장이란? 데이터를 메모리(RAM)에 저장하고 관.. 2023. 7. 19.
아직 1년 안 된 백엔드 개발자인 후기 (짧음) 매우매우매우 개인적인 후기 코드 읽는 속도가 빨라졌다. 처음엔 회사 코드 읽는 것도 오래 걸리고 중간에 졸고 아무튼 힘들었는데 지금은 함수 추적하면서 타고 타고 파도타기를 할 수 있게 되었다. 타입스크립트가 짱짱맨인지 알게 되었다. 내가 짠 코드가 아닌 남이 짠 코드를 볼 때 타입이 다 정해져 있으면 그렇게 행복할 수가 없다. 그리고 자바스크립트에서는 오류가 나지 않는 것도 타입스크립트로 빌드할 때 오류가 발생해서 실서버 반영하기 전에 문제를 찾을 수 있다는 점이 너무 맘에 든다. 생각보다 타입 에러가 자주 발생하더라,,아직 회사에선 자바스크립트로 서비스 운영 중이다. 영어 공부가 된다. 영어로 된 공식 문서가 많기 때문에 어쩔 수 없이 영어 공부가 된다. 그리고 문서를 더 잘 이해하기 위해서 영포자인 .. 2022. 1. 18.