IT 50

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

[Refactoring 2판]에 대한 내 생각과 비판

이 책의 초판은 2012년 11월이고, 2020년에 2판이 나왔다. 2판은 ES6를 기준으로 작성되어있다. 코드 리팩터링의 기본 원칙에 대해 js로 풀어낸 것이므로, 객체지향 언어라면 대동소이하다. 사실 이 책에 나오는 내용 대부분은 학부 시절에 접할 수 있는 내용들이다. js로 작성되었다고해서 js 특성에 맞는 특별한 리팩터링 방법을 기대한다면 다른 책을 추천한다. 사실 ts가 나온 현 시점에서는 js라는 언어 자체가 리팩터링 대상이기 때문이다. 그냥 js가 대중적이니까 js판 리팩터링책을 만든 느낌이지, 다른 개발자들이 js쓰는 것을 보고 답답함을 느껴서 "야 너희들 js 리팩터링 그렇게 하는 거 아니야!"라는 느낌으로 책을 쓴 게 아니란 얘기다. 나는 사실 이 책의 작성 배경이 후자이길 바랐다. 만..

IT 2022.11.13