[기술서] 파이썬 병렬 프로그래밍 – 내용없음

리뷰 내용 말고 책 내용없음
스레드나 그 메커니즘을 자세히 설명한 것도 아니고
튜토리얼이 잘 나온것도 아니다

GIL이라던가.. 하는 파이썬에서 논란이 많은 부분에 대한 설명이있었으면 했는데
그냥 키워드만 나온다
각 기술의 차이도 비교가 상세히 되어있지 않다.

그냥 파이썬에서 병렬프로그래밍을 할 수 있는 기술과 그 샘플코드 정도만 소개 돼 있다.

내부모듈 이용

  1. threading
  2. multiprocessing

라이브러리 이용(추상화계층을 얹어서 병렬프로그래밍 구현)

  1. Celery: 표준. https://docs.celeryproject.org/en/stable/
    multiprocessing, gevent, eventlet 등 활용
  2. PP: Parallel Python 안쓰이지 않나….

파이썬 분산형 서버를 만들때 사용하는 기술

이 책에서는 참고할게 없고 그냥 일반적으로는

  • RabbitMQ, Redis 사용시에는 Celery 사용
  • Kafka와 StreamData를 다룰 때는 FaustStreams 사용

threading이나 multiprocessing은 쓸 일이 있을까
한 서버에서 돌릴수 있는 정도의 프로그램을 만들때
웹프로그램에서는 사용하지 않음

실용주의 프그래머The Pragmatic Programmer,

자기계발서 읽는 느낌이다
다 맞는 말인데
머리에 남는건 별로 없는

  • 이미 하고 있는 것들
  • 하면 좋은 것들
  • 해야만 하는 것들
  • 할 수 없는 것들

이렇게 분류 해 볼 수 있을까

그냥 한번 읽어보고 넘어가면 될 것 같다
잠재의식 속에 남아있겠지

커맨드라인

find . -name '*.c' -newer Makefile -print
zip archive.zip *.h *.c
tar cvf archive.tar *.h *.c
find . -name '*.java' -mtime +7 -print
find . -name '*.java' -mtime +7 -print | xargs grep 'java.awt'
grep '^import '*.java |
  sed -e's/.*import *//' -e's/;.*$//' |
  sort -u > list

여기서 할 줄 아는게……압축하는거

맨먼스 미신The Mythical Man-Month, 프레더릭 브룩스

내용

  • Prototype – 두 번째 시스템
    : 첫번째 시스템은 프로토타입이다
  • 1:10 업무효율
    : 같은 조직내에서 비슷한 급여를 받는 살마들 사이에도 업무능력 차이는 10배
  • 일정 늘어짐
    : 일정은 항상 늘어진다. 일정을 너무 루즈하게 잡은게 아니라면. 돌발상황에 대비해 조금 타이트하게 업무처리
  • 문서화
    : 워크북. 요즘은 위키를 주로 사용
  • 급하다고 많은 인원 투입
    : 의사소통 비용 증가
  • 소수정예
    : 큰 프로젝트 불가
  • 핵심개발인력과 보조인력 구조
    : 아키텍트와 모듈분할
  • 구체적인 마일스톤의 정의
  • 프로젝트 관리자는 의사 결정이 아닌 의사 소통

대상

오히려 개발자보다
한국에서의 특이직군인 기획자, PM
그리고 스타트업 대표, PO, 원청업체담당자가 봐야 할 책

읽고나서

소프트웨어 공학을 모를 때도
개발 업무를 하면서 맞딱뜨리게 되는 불편한 점들과 개선점을 생각했었는데
내가 찾아낸 최선의 방법의 핵심은 빠른 프로토타이핑과 작은 개선의 반복이었다.

이 책에서는 이것을 포함해서 그리고 더 다양한 상황에서의 대응법이 잘 정리가 되어 있다. 현업을 겪어보지 못했다면 그렇구나.. 하면서 감흥없이 넘어갔을 것 같다. 어차피 한번 겪어보고 다시 읽어야 됐었겠지
소프트웨어 개발 싸이클틀 겪어 본 사람이라면 이 책을 읽으면서 자기가 겪었던 문제점이 그대로 다 써 있다는데 놀라지 않을까

1975년 초판이라는데
아직도 그대로라니

UNIX 유닉스의 탄생

그냥 옛날이야기나 써 있을 줄 알았는데
기술서적이었다

유닉스 계열을 많이 경험 해 보지 않은 사람이 보면 대부분 내용은 그냥 넘어가야 하지 않을까
awk, sed, grep, … 을 한 번도 써 보지 않았다면 내용에 몰입하기 힘들 것 같다.

자주 사용하던 기술들이 어떻게 만들어졌고 왜 생겼는지를 알게 되는것으로도
기술을 이해하는데 도움이 되니
유닉스계열(리눅스)를 자주 사용하는 사람이라면 한번 보면 좋을 것 같다

미국의 벨 연구소

kt연구소랑 비슷한 분위기일 것 같다
독점기업의 지원금에 돈 걱정없고
빡빡한 듯 하지만 자유롭고
연구 좀 실패해도 아무도 뭐라 안 하고

KT연구소도 좀

[도서] 웹서비스 해킹 대작전 – 해킹관련 소프트웨어 목록

http://www.acornpub.co.kr/book/web-hacking

회사에 있어서 봤는데 유치한 제목때문에 별거 아닌 줄 알았는데
흔한 해킹기법이나 신경써야할 부분이 좀 나와있다
옛날에 나온 책이라 그런지 보통 다 아는부분일듯

60년대 프로그램은 엄청 잘만들었는데
70년대는 퍼스널컴퓨터 처음 나오면서 개판레거지가 많다는듯
이후에 비슷한 흐름이긴한데 좀 나아지다가

내 생각엔 21세기 다시 비슷한 양상이 발생하고 있는 것 같다
노드를 필두로한 초보개발언어들이 난립하면서 점점 개판설계 코드가 많아지고 있다
노드쪽은 라이브러리도 초반에 생각없이 설계한게 남아있어서 이상한게 많다

해킹테스트용 소프트웨어 소개

취약점 스캔
nikto: https://cirt.net/Nikto2
wikto: nikto의 GUI https://github.com/sensepost/wikto

Web Scan
Stunnel: https://www.stunnel.org/
black widow: Proxy https://github.com/1N3/BlackWidow
paros: fiddler 유사 https://sourceforge.net/projects/paros/
fiddler: https://www.telerik.com/fiddler
BurpSuite: https://portswigger.net/burp

Gnu
curl: 커맨드라인으로 http 호출시 많이 쓴다고..
wget: 다운로드 recursive 방식 사용도 가능하다는데

SSL
SSL Digger: https://www.owasp.org/index.php/Testing_for_SSL-TLS_(OWASP-CM-001)

자바9 모듈프로그래밍, 한빛미디어

자바9의 모듈화(jigsaw) 개념을 중심만 다뤘다.

간단하다
소스루트에다가 module-info.java파일을 생성해서
module{}을 정의하고
requires, exports.. 외 몇가지 구문으로 정의하는것.

typescript같은 언어에서 export 선언한 것만 접근할 수 있는것처럼

 

이 책의 내용은 이게 전부다. 모듈화에만 집중해놔서
자세한 정보는 : http://openjdk.java.net/projects/jigsaw/quick-start

실전적용

라이브러리 개발의 경우에는 캡슐화에 신경쓰려면 세부적인 설정을 해야겠지만
일반적인 서비스모듈 개발에는 현재와 별 차이는 없을 것 같다.
maven/gradle에서 좀 더 신경쓸게 생기겠지만

gradle의 한개 모듈마다 module-info.java를 한개씩 갖게 된다.
jar파일 한개당 한개의 module이라고 생각하면 된다.

기타 책들

가장 빨리 만나는 코어 자바9: 자바9으로 배우는 모던 자바, 길벗
도 같이 봤는데.. 이건 두꺼우면서 쓸데없는 내용이 잔뜩 있고
막상 중요한 부분은 짧게 설명이 돼 있어서 제대로 보지 않았다.

자바9에서 변하는 점

구조적으로 큰 변화인지는 모르겠지만 개발하는 입장에서는 코드상에 큰 변화는 없다.

gradle에 mysql.jar을 가져와서 ide에서는 com.mysql.Driver이 검색되는데 프로젝트에서는 빨간불이 뜨는 상황은 좀 더 자주 보게 되겠지만.

어차피 지금도 gradle 모듈로 프로젝트 나눠서 개발하는 사람은 거의 변화를 못 느끼지 않을까

~

어차피 금방 보니까 한번 보면 좋지 않을까

혹시 다른내용이 있나 싶어서 꼼꼼히 읽다가 몇시간 지났는데 별거 없으니 그냥 훑어보면 될 것 같다. 아니 그냥 공식도큐먼트랑 블로그만 몇 개 봐도 되려나