토요일, 7월 27, 2019

[B급 프로그래머] 7월 4주 소식(빅데이터/인공지능, 암호화폐/블록체인, 읽을거리 부문)

(오늘의 짤방: 치과 종이컵 via @minor0304)
  1. 빅데이터/인공지능
  2. 암호화폐/블록체인
  3. 읽을거리
오늘의 보너스: How to deploy machine learning models into production
EOB

금요일, 7월 26, 2019

[B급 프로그래머] 7월 4주 소식(개발/관리도구, 고성능 서버/데이터베이스 부문)

(오늘의 짤방: O(1)에 직업 찾기 @mzp)
  1. 개발/관리도구
  2. 고성능 서버/데이터베이스
보너스: 소프트웨어 개발의 다섯 단계 via @summerlight00

토요일, 7월 20, 2019

[B급 프로그래머] 7월 3주 소식(빅데이터/인공지능, 암호화폐/블록체인, 읽을거리 부문)

(오늘의 짤방: Trust the process: 계획 수립 잘했다면 그거 믿고 최대한 빨리 밀고 나가기. 당장은 뭐 나오는거 없어보이지만 계획을 믿고 추진. 그래야 나중에 그게 망해도 배우는게 있음. via @zedoring)
  1. 빅데이터/인공지능
  2. 암호화폐/블록체인
  3. 읽을거리
(오늘의 보너스 #1: 기계학습의 시대가 된지 꽤 됬는데 나는 이 시대가 곧 끝나지 않을까 생각하고 있다. 기계학습이 망한다 뭐 이런게 아니라 인터넷, 스마트폰의 시대가 간 것처럼 새로운 붐이 오지 않을까라고 생각하고 있다. via @zedoring)
(오늘의 보너스 #2: 지금 트위터하는 당신 - 거북목을 교정 할 시간입니다 via @1689hae)
EOB

토요일, 7월 13, 2019

[B급 프로그래머] C에 대해서 잘 아시나요?

C는 상당히 까다로운 프로그래밍 언어다. 특히 언어 명세 과정에서 몇 가지 어두운 구석이 존재하기 때문에 깜짝 놀랄만한 결과를 실행 시점에서 얻고 대략 난감할 수도 있다. 먼저 So you think you know C?에 들어가서 문제를 풀어보자. 스포일러 방지를 위해 문제를 풀고 나서 스크롤 하시라!

























문제를 다 푸시고 [See the score] 버튼을 누르면 채점표와 함께 아래에 해설이 나오는데 몇 가지 추가 설명을 드리겠다.

  1. 1번. 이 문제는 포인터를 조금만 알고 계시면 바로 맞출 수 있다. 32비트와 64비트에 따라 포인트 크기가 달라지므로 미정의가 된다.
  2. 2번. C에서는 아키텍처에 따라 타입마다 정해진 크기가 다를 수 있고, 형 변환 과정에서 어떻게 될지 모르므로 미정의가 된다.
  3. 3번. 이 문제는 너무 잘 알아도 틀리는 문제다. ' '가 십진수 32이며, 여기에 13을 곱하면 256을 넘어가므로 오버플로우가 발생할 것으로 예상해서 답을 -96으로 적고 싶지만... char 타입 크기를 정확하게 모른다는 문제가 있다. 따라서 미정의가 된다.
  4. 4번. 이 문제는 상당힌 트릭을 발휘하고 있어서 맞추는 분들이 적을 것이다. 하지만 컴파일러는 답을 알고 있다.













    여기서 최신 gcc 컴파일러에서는 자체 비교는 항상 참이라는 경고가 나오는데(결국 어떻게 해도 참이 될 것이다), 구식 컴파일러는 int 크기로 인해 이해할 수 없는 상황을 맞이할 수 있다.
  5. 5번. 이 문제는 워낙 유명해서 아마 많은 분들께서 맞추셨을 것이다.














    여기서 시퀀스 포인트는 모든 식의 평가가 완료되는 지점이며, 시퀀스 포인트 사이에서 식의 값은 한 번만 수정될 수 있다. 이 문제는 시퀀스 포인트 사이에서 여러 차례 식의 값이 변경되므로 컴파일러 입장에서는 미정의가 된다.

그렇다고 C 프로그래밍이 몹쓸 언어라는 말은 아니다. 여러 가지 제약 사항을 알고, 플랫폼마다 차이가 난다는 사실을 이해하고 있으면 대부분 큰 문제없이 함정을 피할 수 있을 것이다.

EOB

일요일, 7월 07, 2019

[B급 프로그래머] 7월 1주 소식(개발/관리도구, 고성능 서버/데이터베이스 부문)

(오늘의 짤방: Converted your monolithic app to a container? via @richcampbell
  1. 개발/관리도구
  2. 고성능 서버/데이터베이스
보너스: How Diablo Was Reverse-Engineered Without Source Code [video]