전체 글 (130) 썸네일형 리스트형 Vue 개발자가 Next.js를 배우며 겪은 혼란: Server Component와 Client Component 이해하기 Vue와 Nuxt에 익숙한 개발자로서 Next.js를 처음 접했을 때, 가장 혼란스러웠던 부분은 "왜 데이터를 fetch 했는데 화면이 업데이트되지 않는가?"였습니다. Vue에서는 당연하게 작동하던 반응형 시스템이 Next.js에서는 전혀 다른 방식으로 동작했고, revalidatePath라는 낯선 함수를 호출해야 했습니다.이 글은 Vue/Nuxt 개발자가 Next.js의 Server Component와 Client Component를 이해하는 과정을 담았습니다.첫 번째 혼란: 왜 화면이 업데이트되지 않는가?Vue/Nuxt에서의 당연함Vue나 Nuxt에서 개발할 때, 반응형 시스템은 너무나 자연스럽게 작동합니다. {{ post.title }} 이 코드는 예상대로 작동합니다. 게시글을 추가하면 .. 영화 '얼굴' ※ 이 글은 영화를 보고 나서 쓰는 글이라 영화의 내용이 포함되어 있습니다. 박정민 주연의 '얼굴'을 봤습니다.오랜만에 제대로 몰입해서 본 영화였습니다.박정민 배우가 1인2역으로 자신의 캐릭터와 권해효 배우의 젊은 시절을 연기했는데, 권해효 배우의 말투와 음성까지 완벽하게 재현해낸 연기력에 먼저 놀랐습니다. 하지만 더 강렬하게 남은 건 영화가 던지는 질문이었습니다. 쉽게 평가하는 말의 폭력성 아름다운 것을 좋아하는 건 자연스러운 일입니다.문제는 그걸 타인에게 함부로 평가하고 말하는 행위입니다.특히 "못생겼다"는 말.영화 속 어머니는 평범한 얼굴을 가진, 사교성 없고 꾸미지 않는 순박한 사람이었습니다.그런 사람을 주변 사람들은 "괴물같이 못생겼다"고 말했습니다.단순히 외모 평가가 아니라, 그 말은 그녀의 .. JavaScript 개발자가 Flutter의 copyWith를 이해하기까지 시작하며Flutter를 배우면서 가장 궁금했던 것 중 하나가 바로 copyWith 패턴이었습니다.// 이게 왜 안 되는 거지?deck.keyword = "커피"; // 컴파일 에러!// 왜 이렇게 해야 하지?final newDeck = deck.copyWith(keyword: "커피");"JavaScript였으면 그냥 바꾸면 되는데..." 라는 생각이 들었습니다. 하지만 실제로 사용해보니 이 패턴이 왜 필요한지 이해하게 되었고, 오늘은 그 내용을 공유하려 합니다.JavaScript에서는 당연했던 것들JavaScript(특히 React)로 개발할 때, 객체나 배열을 다루는 방식은 이랬습니다:// 객체 일부 변경const user = { name: "김철수", age: 30, email: "kim@exam.. Dart 메서드 vs Getter: 언제 무엇을 사용해야 할까? Flutter/Dart로 개발하다 보면 클래스의 속성에 접근하는 방법을 선택해야 할 때가 있습니다. 메서드로 구현할지, getter로 구현할지 고민되는 순간들이 있죠. 오늘은 이 둘의 차이와 올바른 선택 기준을 명확하게 정리해보겠습니다.1. 기본적인 차이점메서드 방식class Rectangle { double width; double height; // 메서드로 구현 double area() { return width * height; } double perimeter() { return 2 * (width + height); } Rectangle(this.width, this.height);}// 사용void main() { final rect = Rectangle.. Git 경고 해결하기: CRLF와 LF, 그게 뭔데? 문제 상황Windows 환경에서 Flutter 프로젝트를 만들고 Git에 커밋하려는 순간, 이런 경고 메시지를 본 적 있으신가요?warning: LF will be replaced by CRLF in [파일명]The file will have its original line endings in your working directory처음 보면 당황스럽지만, 사실 이 경고는 매우 흔한 상황입니다. 오늘은 CRLF와 LF가 무엇인지, 왜 이런 경고가 뜨는지, 그리고 어떻게 해결할 수 있는지 알아보겠습니다.CRLF vs LF: 무엇이 다를까?줄바꿈 문자의 역사CRLF와 LF는 모두 **줄바꿈(Line Ending)**을 표현하는 방식입니다. 타자기 시대부터 내려온 차이인데요:CR (Carriage Return.. 화면 뒤에 있는 것들 개발자에게 돈을 지불하는 걸 꺼리는 사람들이 있다. "이거 금방 되는 거 아니에요?""이 정도에 왜 이렇게 비싸요?""다른 개발자는 더 싸게 해주던데요." 개발을 단순 작업으로 본다.화면 하나 만드는 게 며칠이면 될 거라고 생각한다.하지만 그 뒤에는 설계가 있고, 데이터 구조가 있고, 서버 로직이 있고, 배포 과정이 있다.보이지 않는 것들이 훨씬 많다. 내가 주로 일하는 분야에서도 이런 일을 자주 겪는다.IT를 부가적인 서비스 정도로 여기는 경우가 많다.기술의 복잡함을 이해하지 못한다.그래서 가격만 보고 선택한다.하지만 경험이 부족한 개발자는 시행착오를 반복하고, 구조를 제대로 잡지 못해 나중에 유지보수가 어려워진다.단가가 낮다고 해서 총 비용이 적게 드는 건 아니다. 실제로 운영중이던 한 프로젝트를 다.. Laravel 운영 서버에서 env() 함수가 null을 반환하는 이유 문제 상황Laravel 프로젝트를 운영 서버에 배포한 후, 이상한 현상을 경험했습니다.// Blade 파일분명 .env 파일에 FILESERVER_HOST 값이 설정되어 있는데, 화면에서는 빈 문자열이 출력되었습니다. 더 이상한 건 DB 연결은 정상적으로 작동한다는 점이었죠.tinker로 확인해보니:$ php artisan tinker> env('FILESERVER_HOST')= null> env('DB_HOST')= null> env('APP_NAME')= null모든 환경 변수가 null로 반환되었습니다. 하지만 애플리케이션은 정상적으로 데이터베이스에 접속하고 있었습니다. 도대체 무슨 일이 벌어진 걸까요?원인: config:cache의 동작 원리문제의 원인은 php artisan config:cach.. MySQL 타임존 SYSTEM 설정과 UTC 저장 문제 해결하기 MySQL 쓰다 보면 SELECT @@global.time_zone, @@session.time_zone; 결과가 SYSTEM으로 나오는데, 막상 DB에 저장된 TIMESTAMP 값을 보면 UTC 기준으로 들어가 있는 당황스러운 상황, 겪어보셨나요?오늘은 이 문제의 원인과 해결 방법을 차근차근 정리해볼게요!먼저 알아야 할 것: TIMESTAMP vs DATETIMEMySQL의 TIMESTAMP는 좀 특별해요.내부적으로 UTC로 저장조회할 때 세션의 time_zone 기준으로 변환되어 표시됨반면 DATETIME은?변환 없이 입력한 값 그대로 저장단순하게 "보이는 시간"만 맞추고 싶다면 DATETIME도 방법!-- TIMESTAMP는 UTC로 저장 후 세션 타임존으로 변환CREATE TABLE test ( .. 이전 1 2 3 4 ··· 17 다음