분류 전체보기 53

C++ 테스트 환경 구축 - CLion에서 Google Test 연동, 사용 방법(with cmake)

C++ 초심자를 위한 테스트 환경 구축 방법을 소개하고자 한다. 아마 대부분의 개발자는 python의 pytest, javascript의 jest, java의 junit 같이 테스트 디펜던시만 추가해서 동작시킬 수 있는 환경을 원할 것이다. 나 역시 그랬고, C++의 패키지 매니저가 뭔지도 몰라 삽질했던 나같은 사람을 위해 이 글을 작성한다. CLion에 Google Test 적용하기 IDE: CLion(VS 등 다른 IDE 사용자는 다른 게시글을 찾길 권장. 이 게시글에 하트가 많이 눌려있다면 다른 IDE나 라이브러리, 플랫폼도 작성해보겠습니다) 요구사항 필수 C++ 버전: 14를 호환할 수 있는 버전(17에서도 동작한다) 선택 cmake(이 문서에 따르면, Bazel도 지원하는 것으로 확인 됨. CL..

IT 2023.04.17

GPT-4의 등장과 개발 방법론의 변화 예측

개발 방법이란 개발팀은 비즈니스 요구사항을 만족시키기 위해 개발이란 걸 한다. 개발의 최종 도착점은 같지만 다른 길을 선택할 수 있는데, 이를 개발 방법론 혹은 개발 방법 모델이라 부르고, 대표적으로 워터폴, 나선형, 프로토타입, 애자일 등이 있다. 최근 GPT-3.5와 GPT-4를 사용하면서 느낀 차이를 통해 중장기적인 개발 방법론에도 크고 작은 변화가 생길 것이란 걸 직감하게 되었고, 이를 기록해두려 한다. GPT-3.5 vs GPT-4 나는 아래 규칙을 GPT들에게 물어봤고, GPT-4는 정확하게 유추해냈다. 이를 보며, GPT-4는 많은 개발자의 "코딩능력"을 대체하기 충분한 역량을 갖췄다고 느꼈다. 나는 카탈란 수열을 "카탈란 수열"이라고 알려주지 않고, 그저 숫자만 나열해서 물어본 것이었는데,..

IT 2023.04.04

Flutter iOS만 실행 실패 시, 해결 방법

Dependency에 뭔가 문제가 있다 문명 약 3일 전까지만 해도 잘 실행되던 프로젝트가 코드 몇 줄 추가 후, iOS한정으로 아래와 같은 에러를 벹으며 동작하지 않는다. 왜 그럴까? 어떻게 해결할까? Error: CocoaPods's specs repository is too out-of-date to satisfy dependencies. To update the CocoaPods specs, run: pod repo update Error running pod install Error launching application on iPhone 14 Pro Max. 해결 방법 오랜 삽질 끝에 결정적으로 이 답변대로 따라하자 해결되었다. 요약 1. Podfile의 platform 주석처리 코드 ..

IT 2023.04.03

Nest.js와 TypeORM 그리고 Prisma ORM

현재 회사(2020년 시점)에서 Nest.js에 TypeORM이라는 걸 붙여 프로젝트를 시작하였고, 한 달 정도 부분적으로 참여하며 느낀 장단점, 심경을 얘기해보고자 한다. Nest.js를 선택한 배경 기존 프로젝트는 Django와 React를 사용하였다. CTO가 떠나고 새로온 PL이 환기차원에서 이것 저것 바꾸고 있었는데, 그중 하나이다. 환기차원도 있었겠지만, 조금 더 큰 이유는 크게 두 가지로 보인다. Django 2.2.x버전에선 비동기 통신을 지원하지 않아 `channels`를 이용하여야 한다 프론트엔드를 Angular로 대체함에 따라 프론트엔드 개발자가 백엔드 코드를 볼 수 있다 그 밖의 부수적인 이유 타입이 있다(유지보수, 자동완성 등에 강점, 개발자의 대체 가능성에 유연) 보편적인 클린 ..

IT 2023.01.29

PostgreSQL에 사용자와 권한 추가하기(CREATE USER, GRANT PERMISSIONS)

사용자 생성 내가 가장 많이 사용하는 사용자 생성 방법. CREATE USER [WITH [ENCRYPTED] PASSWORD ]; -- 예시 CREATE USER myuser WITH ENCRYPTED PASSWORD 'mypassword'; superuser로 생성 잘 쓰지 않지만, 간혹 쓸 일이 있다. 사실상 localhost에서만 사용하는데, AWS같은 클라우드 DB 인스턴스에서 보통은 동작하지 않기 때문. CREATE USER WITH SUPERUSER PASSWORD ; -- 예시 CREATE USER myuser WITH SUPERUSER PASSWORD 'mypassword'; 권한 부여 특정 DB에 모든 권한 부여 아래와 같은 명령일 것 같지만, 아래 명령은 의도대로 동작하지 않는다. C..

IT 2023.01.28

Typia(이전 명칭: TSON) 사용 후기

삼촌samchon이라는 개발자가 만든 라이브러리를 알게 되었다. 정의된 타입을 기준으로 유효성검사가 끝난다니..! 이전엔 유효성검사를 위해 @IsIn 등의 class-validator 라이브러리 함수로 여기 저기를 장식해야했는데, 조금 더 짧은 코드를 작성할 수 있는 것인가...! 현실과 이상의 차이 삼촌께서는 nestia라는 명칭으로 플러그인과 함께 nestjs를 덮어썼는데, 새로운 장식(데코레이터)을 써야하는 것은 내게 불만이었다. 그런데 기존 코드까지 많은 변경이 필요하다면, 내 기준에선 도입할 이유가 없었다. 왜냐하면 나는 TS에서 디버깅하기 불편한 데코레이터라는 기능을 선호하지 않는데다가, JS는 성능보단 빠른 코드작성을 위해 사용하고 있다. node에서 유효성 검사를 몇 천배 더 빠르게 해봐야..

IT 2022.12.15

Node Engine 수정하기

배경: 나는 http/3를 쓰고 싶었다 나는 nestjs에서 http/3을 사용하고 싶었다. 하지만 현재 node에서 http/3를 지원하지 않으므로 express나 fastify 역시 http/3를 쓸 수 없다. 어쩔 수 없다. 현시점(2022.12.10) http/3를 원하는 경우, Nginx나 Netty외엔 선택지가 없다. 이 이슈가 해결이 된다면, node(express든 fastify든 어디서든)에서도 http/3를 사용할 수 있을 것이다. Node Engine Customization 실무에서 고작 http/3를 위해 node engine을 수정하고 있을 순 없다. 하지만 개인적으론 욕심이 났다. 나는 node에서 http/3를 쓰고 싶다. 이번에 http/3와 node engine에 대해 자..

IT 2022.12.10

Android emulator에서 Push notification이 수신되지 않을 때

문제 상황 Firebase cloud messaging(이하 FCM)을 이용하여 푸시 알림push notification을 구현하다보면, 가끔 정상 수신되지 않을 때가 있다. 해결 방법 일부 에뮬레이터는 푸시 알림을 기본적으로 거부한다. 이 설정을 변경해주면 보통 해결되었다. 푸시 알림 권한은 기기에 따라, Settings > Notifications 에 있을 수도 있고, Settings > Apps & Notifications 에 있을 수도 있다. 앱 알림 권한을 잘 찾아서 확인해보자. 아래는 예시 해결 방법이다.

IT 2022.12.04