nGrinder 소개 + 고급 사용법
- 아키텍쳐
- 자이선 / 그루비 스크립트 동작 방식
- DB 테스트
- 로그 레벨 조작 방법
- 리소스 처리 방법
- 라이브러리 처리 방법
- 대규모 응답 처리 방법
- 가중치 부여 방법
- 쓰레드별 다른 처리 방법
- XML / JSON 처리 방법
nGrinder 소개 + 고급 사용법
- 아키텍쳐
- 자이선 / 그루비 스크립트 동작 방식
- DB 테스트
- 로그 레벨 조작 방법
- 리소스 처리 방법
- 라이브러리 처리 방법
- 대규모 응답 처리 방법
- 가중치 부여 방법
- 쓰레드별 다른 처리 방법
- XML / JSON 처리 방법
초고속 웹사이트 개발을 위한 Codeigniter PHP FrameworkInseok Lee
지난 10월에 연구실에서 진행했던 세미나 자료입니다.
웹개발에 대한 기본적인 개념이나 프레임웤에 대한 내용을 전혀 모르는 학부 학생들과 연세가 있으신 박사과정 학생들을 위해 제작되었습니다.
Codeigniter의 내용보다도 왜 Codeigniter를 쓰면 좋은지, 그리고 웹 개발 방법은 어떻게 바뀌어 왔는지 등을 이곳저곳의 슬라이드(Codeigniter 한국사용자 포럼의 웅파님, 다음커뮤니케이션의 윤석찬님)를 정리하였습니다.
초보자를 대상으로 하는 강의에서 참고하면 좋을 것 같아용~
관련 문의는 Codeigniter 한국사용자 포럼 codeigniter-kr.org 에서 해주세요~
PHP 개발자에게 단비 같은 책!
『이클립스 PDT』는 이클립스 PDT를 사용하기 위한 첫 단계부터 디버그, 배포, 협업 도구 등을 자세히 다루었다. 이클립스 PDT의 설치 방법과 기능, 사용법, 그리고 이클립스 PDT 활용법으로 구성되어 있는 이 책은, PHP 개발자들이 JRE 환경에 익숙하지 않다는 것을 전제로 쉽고 자세하게 기술하였다. 이클립스 PDT가 어떤 기능을 제공하고, 이 기능들을 어떻게 잘 활용할지 알려주고, 특히 개발자가 코딩 이외에 가장 많은 시간을 보내는 디버그, 배포 과정에서 이클립스 PDT를 활용하는 방법도 자세히 설명하였다.
http://book.naver.com/bookdb/book_detail.nhn?bid=6471689
인터넷에는 수없이 많은 PHP 튜토리얼이 있다. 이들 대부분은 이미 낡고 쓸모없어진 지 오래지만 불행히도 구글 검색 결과에 살아남아 여전히 참조자료로 활용된다. 이런 낡은 정보를 무분별하게 받아들인 PHP 프로그래머는 자신도 모르는 사이에 느리고 보안에 취약한 PHP 애플리케이션을 만들게 된다.
이 책에서는 슬림(Slim) 프레임워크의 제작자이자 ‘PHP The Right Way’의 창안자인 조시 록하트가 최신 PHP 기술을 소개하는 한편, 자신의 오픈소스 프로젝트와 일상 업무에서 매일 사용하는 최신 기술을 보여준다. 독자 여러분도 이 책을 통해 PHP의 짜릿한 변화의 순간에 동참하고 진보된 PHP를 온전히 활용할 수 있게 될 것이다.
- 네임스페이스, 트레이트, 제너레이터, 클로저 등의 모던 PHP 기능
- PHP 컴포넌트를 검색, 사용, 작성하는 방법
- 보안, 데이터베이스 작업, 문자열, 스트림, 에러와 예외 등에 대한 모범 사례
- 프로비저닝, 배포, 튜닝, 테스팅, 프로파일링에 필요한 도구와 기술
- 페이스북이 선보인 HHVM과 Hack이 최신 PHP에 미친 영향
- 프로덕션 서버에 대응하는 로컬 개발 환경 구축
★ 대상 독자
- PHP에 대한 기본적인 이해가 있으며 자신의 기량을 강화하고 싶은 모든 개발자
- 수년 전부터 같은 패턴으로 개발하고 있는 PHP 개발자
- PHP의 최신 변화가 궁금하고 미래를 적극적으로 준비하고 싶은 개발자
- 호환되지 않는 여러 PHP 버전의 설명이 혼재된 인터넷 자료에 고생하고 있는 개발자
★ 추천사
나는 PHP 언어와 커뮤니티의 현 상황을 제대로 반영한 서적을 찾느라 수년을 보냈다. 이제 주저하지 않고 『Modern PHP』를 추천한다.
─ 에드 핀클러, 개발자 겸 블로거(funkatron.com)
프로그래밍에서 절대 변하지 않는 진리는 ‘프로그래밍은 변한다’는 사실뿐이다. PHP는 변하고 있고 여러분의 개발 방법 역시 변해야만 한다. 조시는 최신 PHP로 작성하기 위해 알아야 할 도구와 개념을 제시한다.
─ 캘 에번스, E.I.C.C. CEO
초고속 웹사이트 개발을 위한 Codeigniter PHP FrameworkInseok Lee
지난 10월에 연구실에서 진행했던 세미나 자료입니다.
웹개발에 대한 기본적인 개념이나 프레임웤에 대한 내용을 전혀 모르는 학부 학생들과 연세가 있으신 박사과정 학생들을 위해 제작되었습니다.
Codeigniter의 내용보다도 왜 Codeigniter를 쓰면 좋은지, 그리고 웹 개발 방법은 어떻게 바뀌어 왔는지 등을 이곳저곳의 슬라이드(Codeigniter 한국사용자 포럼의 웅파님, 다음커뮤니케이션의 윤석찬님)를 정리하였습니다.
초보자를 대상으로 하는 강의에서 참고하면 좋을 것 같아용~
관련 문의는 Codeigniter 한국사용자 포럼 codeigniter-kr.org 에서 해주세요~
PHP 개발자에게 단비 같은 책!
『이클립스 PDT』는 이클립스 PDT를 사용하기 위한 첫 단계부터 디버그, 배포, 협업 도구 등을 자세히 다루었다. 이클립스 PDT의 설치 방법과 기능, 사용법, 그리고 이클립스 PDT 활용법으로 구성되어 있는 이 책은, PHP 개발자들이 JRE 환경에 익숙하지 않다는 것을 전제로 쉽고 자세하게 기술하였다. 이클립스 PDT가 어떤 기능을 제공하고, 이 기능들을 어떻게 잘 활용할지 알려주고, 특히 개발자가 코딩 이외에 가장 많은 시간을 보내는 디버그, 배포 과정에서 이클립스 PDT를 활용하는 방법도 자세히 설명하였다.
http://book.naver.com/bookdb/book_detail.nhn?bid=6471689
인터넷에는 수없이 많은 PHP 튜토리얼이 있다. 이들 대부분은 이미 낡고 쓸모없어진 지 오래지만 불행히도 구글 검색 결과에 살아남아 여전히 참조자료로 활용된다. 이런 낡은 정보를 무분별하게 받아들인 PHP 프로그래머는 자신도 모르는 사이에 느리고 보안에 취약한 PHP 애플리케이션을 만들게 된다.
이 책에서는 슬림(Slim) 프레임워크의 제작자이자 ‘PHP The Right Way’의 창안자인 조시 록하트가 최신 PHP 기술을 소개하는 한편, 자신의 오픈소스 프로젝트와 일상 업무에서 매일 사용하는 최신 기술을 보여준다. 독자 여러분도 이 책을 통해 PHP의 짜릿한 변화의 순간에 동참하고 진보된 PHP를 온전히 활용할 수 있게 될 것이다.
- 네임스페이스, 트레이트, 제너레이터, 클로저 등의 모던 PHP 기능
- PHP 컴포넌트를 검색, 사용, 작성하는 방법
- 보안, 데이터베이스 작업, 문자열, 스트림, 에러와 예외 등에 대한 모범 사례
- 프로비저닝, 배포, 튜닝, 테스팅, 프로파일링에 필요한 도구와 기술
- 페이스북이 선보인 HHVM과 Hack이 최신 PHP에 미친 영향
- 프로덕션 서버에 대응하는 로컬 개발 환경 구축
★ 대상 독자
- PHP에 대한 기본적인 이해가 있으며 자신의 기량을 강화하고 싶은 모든 개발자
- 수년 전부터 같은 패턴으로 개발하고 있는 PHP 개발자
- PHP의 최신 변화가 궁금하고 미래를 적극적으로 준비하고 싶은 개발자
- 호환되지 않는 여러 PHP 버전의 설명이 혼재된 인터넷 자료에 고생하고 있는 개발자
★ 추천사
나는 PHP 언어와 커뮤니티의 현 상황을 제대로 반영한 서적을 찾느라 수년을 보냈다. 이제 주저하지 않고 『Modern PHP』를 추천한다.
─ 에드 핀클러, 개발자 겸 블로거(funkatron.com)
프로그래밍에서 절대 변하지 않는 진리는 ‘프로그래밍은 변한다’는 사실뿐이다. PHP는 변하고 있고 여러분의 개발 방법 역시 변해야만 한다. 조시는 최신 PHP로 작성하기 위해 알아야 할 도구와 개념을 제시한다.
─ 캘 에번스, E.I.C.C. CEO
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...hoondong kim
[Tensorflow-KR Offline 세미나 발표자료]
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps Cycle 구성 방법론. (Azure Docker PaaS 위에서 1만 TPS Tensorflow Inference Serving 방법론 공유)
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템강 민우
본 세션에서는 Protocol:hyperspace Diver의 개발 과정 전반에 대한 포스트 모템을 수행하며 기획적인 부분을 바탕으로 제기된 요구사항에 대응하기 위한 기술적인 이슈에 어떻게 대응하였는지를 살펴볼 예정입니다. 게임을 기획하며 게임에 어떤 기능들이 요구되었으며, 엔진 레벨에서부터 모바일 게임을 개발하는 과정에서 이런 요구사항들에 어떻게 대응하였는지를 살펴봅니다. 게임을 위한 전체적인 설계 및 문제 해결 전략과 각각의 문제 해결 과정에서 세부 내용에 대한 기술적 노하우를 공유합니다.
NHN NEXT 게임 서버 프로그래밍 강의 자료입니다. 최소한의 필요한 이론 내용은 질문 위주로 구성되어 있고 (답은 학생들 개별로 고민해와서 피드백 받는 방식) 해당 내용에 맞는 실습(구현) 과제가 포함되어 있습니다.
참고로, 서버 아키텍처에 관한 과목은 따로 있어서 본 강의에는 포함되어 있지 않습니다.
4. What is the concurrency?
http://image.slidesharecdn.com/threadsactors-111001130121-phpapp02/95/actors-and-
threads-5-728.jpg?cb=1317558832
5. What is the concurrency?
• 병렬 프로그래밍
• 병렬프로그래밍은 하나의 프로그램이 동시에 여러일 수항게 만드는 방법을 통칭
• 병렬 프로그래밍은 성능 향상을 목적으로 명시적으로 멀티 프로세서를 사용함
• e1 + e2를 계산할때 e1과 e2를 각각의 프로세서에서 실행을 하던 하나의 프로세서에서 실행을 하던
겉으로 보이는 결과는 반드시 같아야 한다.
• 동시성프로그램
• 병렬 프로그래밍이라는 말은 고성능 컴퓨팅(HPC, High Performance Computing)의 한 분야를 지칭
하는 좁은 뜻으로도 사용되기 때문에 혼돈을 피하기 위해 동시 프로그래밍(concurrent
programming)이라는 말을 쓰기도 한다.
• 동시성 자체가 명세에 포함되는 개념
• 프로그램이 여러개의 동시적인 쓰레드로 실행이 되고 따라서 결과가 비결정적
http://skyul.tistory.com/327
6. Concurrency is not parallelism
• Concurreny가 parallelism이 될 수도 있지만 parallelism
은 아니다.
• 한프로세서에서 프로그램을 돌릴때 concurrent할게 할
수 있지만 이게 parallel은 아니다.
• 하지만 잘 만들어진 concurrent program는 parallel한
multiprocessor를 효율적으로 이용할 수 있다.
http://talks.golang.org/2012/concurrency.slide#7
7. 규모가변성
• 코어의 수를 늘렸을 때 프로그램의 성능 향상이 일어나는 정도를 말
한다.
• 코어가 2배가 되었을 때 프로그램 성능이 2배가 된다면 규모가변성이
매우 뛰어난 병렬 프로그래밍
• 코어가 2배가 되었음에도 성능 향상이 미미하다면 규모가변성이 떨
어지는 프로그램
• 예를 들면 데크는 학부수준의 프로그램입니다.
• 하지만, 규모가변성이 보장되면서 쓰레드 세이프한 데크 작성은 논문
으로 낼 수준이 된다.
http://skyul.tistory.com/327
16. volatile은 언제 쓰나?
• 두개의 thread가 동시에 read write를 하는 경우엔 적합
하지 않다.
• 한 thread는 항상 읽기 쓰기만 하고 나머지 thread는 읽
기만 할 경우엔 항상 최신값을 읽는것을 보장한다.
• volatile을 쓰지 않은 경우에는 보장 되지 않는다.
• volatile로 main memory에 직접 접근을 하기 때문에 정
말 보여주는게 필요할때만 사용하는게 좋다. 그렇지 않으
면 속도 저하를 가져온다.
22. Concurrency hazard
• Dead Lock
• 락을 정해진 순서와 다르게 획득했을 때 발생한다.
• Live Lock
• 서로에게 응답을 미뤄서 lock은 걸려있지 않지만 진행이 안되는 상
태
• Starvation
• 한 thread가 오래동안 공유 자원을 잡고 있어서 다른 thread는 잡
을 수 없는 상대
34. actor
• light process (erlang) or thread (scala)
• 쉽게 생각하면 single thread
• thread 간에 shared memory를 두지 않고 분리를 해서 multi thread 환경을
구성함
• 주로 사용하는 언어는 erlang, scala
• 기존과 다른거는 언어차원이나 프레임워크 자원에서 지원함
• 또한 shared memory를 가지고 가지고 가질 않기 때문에 기존 보다 개발이 단
순해짐.
• producer - consumer만 이해하면 가능함.
40. CSP
• Communicating Sequential Processes
• 주로 사용하는 언어 : clojure core/sync, go
• 사용방법은 actor란 비슷
• ex) message <- “hello”
• actor와 다른점은 actor 는 pid에게 전달을 하지만 csp는
anonymous로 channel로 전달함.
• blocking queue와 비슷한 개념
43. STM
(Software transactional memory)
• a concurrency control mechanism analogous to database
transactions for controlling access to shared memory in
concurrent computing (wikipedia)
• It is an alternative to lock-based synchronization. STM is
strategy implemented in software, rather than as a hardware
component.(wikipedia)
• 대표적인 지원언어 clojure, haskell
• 하지만 자바도 lib로 지원함.
• lock free하다.
44. mvcc
• clojure가 mvcc 기반으로 개발됨 (haskell은 mvcc모델이
아님)
• 다중 버전 병행 수행 제어는 데이터베이스 관리 시스템
이 일반적으로 사용하는 동시성 제어 방식으로, 데이터베
이스로의 동시 접근을 제공하고 프로그래밍 언어에서 트
랜잭셔널 메모리를 구현한다(wikipedia)
• db에는 다 구현되어 있는 방식
48. concurreny 프로그래밍에 대한
생각
• java에서는 atomic이나 lock free 알고리즘을 써라
• 아니면 lock free가 되는 프레임워크를 써라.
• https://github.com/LMAX-Exchange/disruptor 추천
• 기본적인 패턴은 producer consumer부터 생각해보자
• 다른 패턴은 상황에 맞게 생각을 해보자.
• 다른 언어도 가능하다면 잘 이해하고 쓰는것도 나쁘지 않다.