웹개발을 하다보면 HTTP 캐시 문제로 애를 먹을 때가 있습니다. 서버는 변경했다고 하는데, 클라이언트는 변경된 파일이 반영되지 않는 경우죠. 특히 클라이언트 사이드 렌더링을 하거나 웹뷰를 포함한 네이티브 앱을 개발할 때 그런 일이 일어나는데요, 이 현상을 이해하기 위해서는 HTTP 캐시 규칙을
개발자로서 더 성장을 하고 싶은 생각이 든다면, 자신의 기술 스택에서 한 단계만 내려가서 공부하는 걸 추천합니다. 내 코드의 최종 결과물이 뭔지 살펴보고, 그 결과물을 소비하는 녀석을 찾아서 공부하는거죠. 리액트라면 최종 결과물이 HTML/CSS/JS의 집합일 거고 그걸 소비하는 녀석은
딥러닝에 입문하실 때는 다음 책 2권을 동시에 공부하시는 걸 추천드리고 싶습니다. 우선 <개발자를 위한 머신러닝&딥러닝> 챕터 1, 2를 공부하신 후, <밑바닥부터 시작하는 딥러닝> 챕터 2, 3장을 공부하시면 좋습니다. 이를통해 딥러닝이 뭔지 대략 감이 잡히면 좋은 첫 출발이 될 것 같아요~
규모 있는 IT 기업에 들어가기 전에는 대규모 시스템을 다뤄볼 기회가 없어 답답하실 수도 있는데요, 스케일 아웃할 수 있는 대규모 시스템이 어떻게 구성되어 있는지 쉽게 잘 설명한 책을 소개해드려요. 일반적인 웹서비스부터 알림, 채팅, 뉴스피드 등의 시스템 구성을 들여다 보실 수 있습니다.
얼핏 맞는 얘기긴 하지만, 개발자의 재능이 한마디로 정의되는 건 아닙니다. 스포츠에서도 각 포지션마다 재능이 각각 다른 것처럼, 개발자의 재능 역시 여러 형태가 있습니다.
코드는 좀 지저분하지만 빠르게 치고 나가는 능력, 설계를 탄탄하게 잘하는 능력, 딥테크를 깊이있게 이해하는 능력,
현대의 프론트엔드는 종합 예술에 가깝습니다. 변덕스러운 사용자의 입력과 고지식한 백엔드의 응답을, 그것도 예상하기 힘든 순서로 발생하는 상황의 상태를 관리해가며 조율해내는 노련함이 요구됩니다.
프론트엔드가 더 많은 상태를 효율적으로 다룰 수록, 백엔드의 중간 연산을 프론트엔드로
반면에 프론트엔드는 코드 자체의 복잡도를 낮추는 일에 집중하게 된다. 특히 모바일 진영에서 '클린 아키텍처'가 괜히 오래도록 유행인 게 아니다. 코드베이스 자체의 복잡도가 워낙 크기 때문에 그렇다. 또한 주된 "어려운" 작업은 복잡한 상태를 다루는 일이다. 그래서 상태 관리를 어떻게 할
튜링의 사과 공간에서 열심히 취업 준비를 하는 개발자분이 계신데, 며칠 전 본 기술면접에서 불합격 소식을 듣게 되어서, 면접관분께 메일로 공손히 피드백을 부탁드렸더니, 그 면접관 개발자께서 장문의 이메일로 면접 피드백을 보내주셨습니다. 피드백 내용을 떠나서 이렇게 시간쓰기 힘들텐데,
윈도우를 제외한 대부분의 현대적 컴퓨터의 운영체제의 원형인 유닉스에 대해 얼마나 알고 계시나요?
<유닉스의 탄생>은 유닉스의 역사를 기록한 책이자 회고록으로 수필 같은 느낌으로 가볍게 읽기 좋은 책인데요.
유닉스의 탄생 과정 뿐만 아니라 유닉스에 사용되는 명령어의 탄생 과정과 함께
리액트로 개발된 웹페이지의 치명적인 단점은 검색 엔진이 웹페이지의 내용을 인덱싱하지 않는다는 점입니다. 검색 엔진 크롤러는 리액트의 코드가 웹페이지 내용을 렌더링하기 직전의 빈 페이지만을 확인하고 그냥 떠나버립니다.
리액트를 사용하면서도 검색엔진에게 웹페이지의 내용을 제대로
"호흡 음주 측정기로 인해 음주운전으로 고발당한 사람이 음주 측정기 코드를 리뷰한 결과 무죄로 판결된 판례가 있다. 음주 측정기 코드가 버그투성이여서 판결이 뒤집혔다."
- <한 권으로 읽는 컴퓨터 구조와 프로그래밍> 중에서
오늘 짠 코드를 다시 들여다보게 되네요. ㅎㅎ
개인적으로 언어는 도구일 뿐이라는 관점으로 변화가 생긴 사건이 지메일 웹을 접했을 때였습니다. 많은 개발자들이 무시하던 자바스크립트를 극단으로 활용하여, 데스크탑 앱에 버금가는 웹앱을 만들어내는 것을 보고 충격을 받았죠. 목수는 연장을 가리지 않는다는 뜻을 깨닫게 된 사건. 그런 면에서
주니어 시절, 코딩을 시작하면 항상 핵심 기능 구현으로 곧장 뛰어들었어요. 재미있거든요. 근데, 지금은 환경부터 만들어요. 앱 개발을 한다면 언제든지 스토어에 올릴 수 있도록 설정해놓고, 백엔드를 개발한다면 배포 도구부터 갖춰놓고 기능 개발에 들어갑니다. 이러면 보호받는 느낌이 들더라구요
시니어가 되면 겪게 되는 지식과 경험의 저주가 있습니다. 개발 24년차인 요즘도 종종 겪게 되는데요, 구현하고 싶은 기능이 있는데 구현에 들어가게 되면 이렇게 개발하는 게 맞는 방법인지 고민하다가 손을 놓게 되는 경우입니다. 주니어 때는 기능이 구현되는 경험만으로도 희열을 느꼈는데,
튜링의사과 몰입형 공간에 제가 좋아하는 창의성 카드덱을 가져다놨습니다. 활용법은 간단한데, 뭔가 풀리지 않는 문제가 있다면 그 문제를 떠올린 후 한 장을 뽑은 뒤, 거기에 나온 조언대로 문제의 해법을 고민해보는 겁니다. 예전에 프로그래밍 문제가 안풀릴 때 종종 도움을 받았어요~
자연어 처리 인공지능에 입문하려면 다음 2권으로 시작하면 좋습니다. 두번째 책을 공부하기 전에 파이썬과 판다스 라이브러리에 익숙하면 좋은데, 그 때 첫번째 책을 읽으시면 될 것 같아요. 파이썬에 익숙하시다면 판다스는 검색으로 공부할수도 있으니 바로 두번째 책으로 다이브하셔도 됩니다.
프레임워크 없이 개발 가능하신가요? IT 산업이 발전하면서 서버 인프라를 직접 다룰 필요가 없어졌고, 이제는 강력한 프레임워크들이 등장해서 번거로운 기초 작업들은 모두 프레임워크가 처리해주는 시대가 되었습니다. IT 산업 전체에 걸쳐 추상화 레벨이 매우 높아졌고, 달리 말하면 지금
지난 주말 튜링의사과에 오신 개발자분과 토론한 내용이군요! 결제 서비스 구현에서 이중 지불을 막기 위해 레디스를 이용하여 트랜잭션 락을 구현한거였는데, 레디스가 싱글쓰레드이긴해도 get과 set의 2번의 콜은 아토믹하게 처리되지 않기 때문에 트랜잭션 락이 제대로 동작하지 않을 거라는
프로그래머에게 정규표현식이 중요할까요? 댓글에 많은 의견이 올라오네요. 저는 꽤 중요하다고 생각하고, 정규표현식을 이용하면 문자열을 다루는 코드가 매우 심플해질 수 있어서 활용도가 높다고 생각하는데, 유용하긴 하지만 챗GPT 출현 이후 굳이 배울 필요는 없다는 의견도 보이네요.
이번에는 『튜링의 사과』 에서 조금 특별한 강의를 준비했습니다. 연세대 컴퓨터과학과 이시윤 교수님께 듣는 '알고리즘과 문제의 해결' 강의 입니다. 강의와 함께 알고리즘에 대한 이해를 더 깊게 할 수 있는 도서, <논리적 사고를 기르는 알고리즘 수업>까지 증정해 드려요.
3월 21일(목) 오후
튜링의 사과, 첫 인공지능 강의 소식 알려드려요. 『핸즈온 머신러닝』 등 다수의 좋은 책을 쓰시고 번역하신 박해선 저자님의 인공지능 입문 강의입니다. 10월 18일(수) 저녁 7시에 튜링의 사과 매장에서 진행되고, 무료 강의입니다. 선착순 신청 폼은 추후에 따로 공지하겠습니다. stay tuned!
프로그래머가 된다는 건, 파도 치는 바다에서 스쿠버 다이빙을 하는 것과 같은 듯 해요. 어떤 사람은 선천적으로 물이 무섭지 않을 수도 있지만, 어떤 사람은 물이 너무 두렵기도 하죠. 하지만 지금 물이 무섭다고 해서 앞으로도 계속 무서울거라고 생각할 필요는 없는 것 같아요. 반복을 통해 몸으로
러스트 공부 1일차 회고.
장점:
- 문법이 간결하다. 특히 조건문.
- 타입 자체에 관련 메소드가 정의되어 있다.
- 기본적으로 변수는 immutable 이고, 예외적일 경우에만 mut 선언을 한다. 잘했다!
- 참조하는 함수의 정의가 코드 뒷부분에 있더라도 선언을 따로 하지 않아도 된다.
- 표준화된
개발 작업에서 챗GPT를 사용하면서 느낀 점은, 질문 대상에 대한 개념과 용어를 잘 알아야 한다는 점이었습니다. 특정 기술에 대한 공부 방식 역시 구체적인 예제 중심보다는 개념과 용어 중심으로 변경하는 게 좋겠다는 생각이 드네요. 무엇을 물어봐야 할 지 제대로 알아야 좋은 답변을 받게 됩니다.
아이쿠야. 제 글을 정정해야 겠네요. 이런 대답이면 좋을 것 같습니다. "A 프레임워크를 사용한 경험은 없지만, B 프레임워크를 사용하면서 거기에 만족하지 않고 더 낮은 레벨의 기본적인 동작 원리를 익혔습니다. 기본 원리를 알고 있기 때문에 A 프레임워크에 익숙해지는 데 어렵지 않을 것
트친분의 파이토치 책 추천 요청에 다음 책을 알려드려요. 딥러닝에서 필수적인 개념인 합성 함수와 미분을 파이토치가 어떻게 다루는지 잘 설명한 책입니다. 그럼에도 딥러닝을 처음 다뤄보신다면 파이토치보다는 딥러닝 워크플로우 자체를 프레임워크로 구현한 허깅페이스부터 공부하는 걸
<스트리트 코더> 책 목차를 살펴보는데, "goto를 사용하라"는 문장이 눈에 띄네요. 사실 C언어에서 goto 문을 이용하면 try/catch와 비슷한 형태의 구조를 깔끔하게 작성할 수 있습니다. goto가 나쁘다고만 생각할 게 아니라 언어가 제공하는 기능을 어떻게 사용하느냐에 따라 좋고 나쁨이 결정된다는