Photo by K15 Photos on Unsplash 쓰레드를 생성하는 pthread_create()의 함수 시그니처는 아래와 같다. int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void *), void *arg); 그런데 빌드시에 파라미터로 들어가는 start_routine() 함수에서 warning이 뜬다. 분명 리턴값이 void 인데 왜 warning이 뜰까? warning: Control reaches end of non-void function [-Wreturn-type] 별거 아니다. 쓰레드 함수의 리턴값은 아래와 같이 해주어야 한다. pthread_exit(NULL); 참고 ..
.PHONY가 어떤 상황에서 어떤 용도로 쓰이는지 한 번 찾아보고 간단히 정리해본다. GNU 참고 링크: https://www.gnu.org/software/make/manual/html_node/Phony-Targets.html 간결한 예제 링크: https://sodocumentation.net/makefile/topic/5542/-phony-target TL;DR 1. 실제 파일명과 target 이름의 충돌문제를 해결한다. 2. 성능을 향상시킨다. .PHONY를 쓰는 첫번째 이유: 실제 파일이름과의 충돌을 해결 Phony는 가짜라는 의미이며 phony target 이란 실제 파일이름이 아닌 target을 의미한다. make 명령이 실행되는 디렉토리에 Makefile의 target과 같은 이름의 파일..
최근 Software Engineering at Google 이라는 책을 무료 PDF로 읽고 있다. - PDF 링크: https://abseil.io/resources/swe_at_google.2.pdf 책을 읽다보니 저자중 한 명인 Hyrum Wright(하이름 정도로 발음하면 될 듯)의 이름을 딴 Hyrum's Law라는 것을 알게 되어 이를 한 번 정리해보았다. - Hyrum's Law: https://www.hyrumslaw.com/ Hyrum's Law "With a sufficient number of users of an API, it does not matter what you promise in the contract: all observable behaviors of your syste..
Photo by Joshua Reddekopp on Unsplash 원문링크: Five things I have learned after solving 500 Leetcode questions 원문을 기반으로 나름의 정리를 해본다 원문에도 자주 언급되는 "LeetCode 가 실무랑 무슨 상관! 다들 코딩 인터뷰를 하려고 하니 어쩔 수 없이 하는 거지! " 하는 부류가 바로 나였는데, 글 정리를 하면서 요 며칠 사이 재미가 붙어버리기도 한 LeetCode를 꾸준히 해야겠다 싶다. 참고: 보통 이렇게 둘을 비교한다. Grinding leetcode vs. creating meaningful software - LeetCode 문제 푸는 기계가되기 vs. 실제 의미있는 프로그램을 짜기 본문 정리 시작 기술 인..
Photo by Lesley Davidson on Unsplash 데이터 중심 애플리케이션 설계 라는 책을 읽고 있다. 알라딘 링크: http://aladin.kr/p/t1Nzd 책에서 설명해주는 ACID의 개념이 그동안 어렴푸시 이해했던 부분을 명확하게 밝혀주는 기분이 들어 책의 내용을 정리하며 나의 것으로 만들어보려 한다. 아래는 책의 223p-227p의 내용이다. ACID의 의미 "1983년 테오 하더(Theo Harder)와 안드레아스 로이터(Andreas Reuter)는 데이터베이스에서 내결함성 메커니즘을 나타내는 정확한 용어를 확립하기 위해 ACID를 만들었다." 223p 그런데 문제는 현실 세계에서 ACID에 대한 기준이 모호하다는 것이다. Atomicity - 원자성 클라이언트가 쓰기 작업..
Photo by 青 晨 on Unsplash 컴퓨터 공부를 하다보면 엔디언(Endian)이라는 개념이 나온다. 빅 엔디언, 리틀 엔디언 어원은 걸리버 여행기에 나오는 소인국들의 싸움의 원인인 달걀을 어느쪽으로 깨먹는가 하는 논쟁이다. 달걀의 뾰족한 부분이 아닌 상대적으로 넙적한 부분을 Big-end 라고 부른 것에서 나온 것이다. 그렇다면 컴퓨터에서 이야기하는 빅 엔디언, 리틀 엔디언은 무슨 의미일까? 1바이트가 넘는 타입을 메모리에 저장하는 방법 integer 4바이트 타입이 있고 이 타입의 값을 메모리에 저장한다고 생각해보자. 이 값을 16진수로 0x12345678 이라고 하자 컴퓨터 메모리는 한 바이트마다 주소값을 가진다. 4바이트를 저장해야 하니 4개의 메모리 주소에 각각 한 바이트씩 저장할 것이..
Photo by David Travis on Unsplash 6장 애자일해지기 까지만 정리하려 한다. 지금까지 애자일 프로세스를 실천하는 방법을 다 배웠다. 그런데 실전에서 제대로 해내는 조직은 드물다. 6장은 진짜 애자일한 조직으로 가는 길에 대한 이야기를 한다. 결론부터: 로버트 마틴이 말하고자 하는 애자일한 조직이 되는 방법 "나는 아직도 20년 전 생각에 변함이 없다. '너무 쉬운데? 몇 가지 단순한 규칙과 실천 방법만 지키면 되잖아, 아무것도 아니네" 188p "그러니 방법론 중 하나만 골라라. 아예 고르지 않아도 된다. 전체 생애 주기에 걸쳐 모든 규칙을 지키고 있는지 확인하라. 팀 전체의 동의를 구하라. 그리고 시작하라. 용기와 소통, 피드백, 단순함을 기억하고, 정기적으로 규칙과 행동을 조..
Photo by David Travis on Unsplash 비즈니스 실천 방법, 팀 실천 방법에 이어, 클린 애자일 5장은 마지막 동그라미인 기술 실천 방법을 이야기 한다. 기술 실천 방법이 애자일의 진짜 핵심이다. 기술 실천 방법 다음과 같다. 테스트 주도 개발(Test-Driven Development): 실패하는 테스트를 짜고, 그 다음에 테스트를 통과하는 코드를 짠다. 리팩터링(Refactoring): TDD를 통해 동작하는 코드를 짜고 나면, 이를 리팩터링 한다. 단순한 설계(Simple Design): 리팩터링 목표중의 하나이다. 최대한 단순하게 최소한의 코드로만 작성하라는 것이다. 짝 프로그래밍(Pair Programming): 두 사람이 함께 프로그래밍을 해나간다. 하나하나 자세한 설명이..
Photo by Thomas Jensen on Unsplash 회사 내부에 여러 부서가 AP를 사용하며 테스트하다 보니 때때로 설정이 꼬여서 인터넷이 안되는 경우가 많았다. 복잡한 개론을 떠나서 쉽게 풀어서 문제점과 해결 방안을 정리해 보았다. 문제는 인터넷을 사용하려면 게이트웨이를 통해서 외부로 나가야 한다. Windows 에서 아래와 같이 게이트웨이 IP를 설정하는 이유이다. (아래 그림으로 본다면) 사무실의 내 컴퓨터가 192.168.0.203 이라는 Local IP를 이용하는데 외부와 연결이 되는 게이트웨이의 정보를 명시해줘야 하는 것이다. 그런데 (우리가 흔히 공유기라 부르는) 사무실의 AP가 여러 대이고 꼼꼼히 관리를 하지 않았다면 192.168.0.1 IP를 쓰는 AP가 여러 개 존재하게 되..
- Total
- Today
- Yesterday
- 중용
- 명상
- pool
- ChatGPT
- Bug
- ORM
- Gin
- solid
- bun
- 클린 애자일
- OpenAI
- 체호프
- 영화
- 독서후기
- 인텔리제이
- postgres
- folklore
- notion
- strange
- Shortcut
- go
- 2023
- 잡학툰
- github
- golang
- intellij
- 노션
- API
- websocket
- agile
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |