인터넷에는 수없이 많은 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
2016년 11월 5일 있었던 GDG DevFest 2016 Seoul 행사에서 진행된 `Boot Camp: 초보 개발자를 위한 웹 프론트엔드 개발 101` 워크숍의 소개 부분 슬라이드입니다.
- 행사 URL: https://festi.kr/festi/gdg-korea-2016-devfest-seoul/program/92/
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
2016년 11월 5일 있었던 GDG DevFest 2016 Seoul 행사에서 진행된 `Boot Camp: 초보 개발자를 위한 웹 프론트엔드 개발 101` 워크숍의 소개 부분 슬라이드입니다.
- 행사 URL: https://festi.kr/festi/gdg-korea-2016-devfest-seoul/program/92/
PHP 개발자에게 단비 같은 책!
『이클립스 PDT』는 이클립스 PDT를 사용하기 위한 첫 단계부터 디버그, 배포, 협업 도구 등을 자세히 다루었다. 이클립스 PDT의 설치 방법과 기능, 사용법, 그리고 이클립스 PDT 활용법으로 구성되어 있는 이 책은, PHP 개발자들이 JRE 환경에 익숙하지 않다는 것을 전제로 쉽고 자세하게 기술하였다. 이클립스 PDT가 어떤 기능을 제공하고, 이 기능들을 어떻게 잘 활용할지 알려주고, 특히 개발자가 코딩 이외에 가장 많은 시간을 보내는 디버그, 배포 과정에서 이클립스 PDT를 활용하는 방법도 자세히 설명하였다.
http://book.naver.com/bookdb/book_detail.nhn?bid=6471689
<3탄>스프링 부트를 사용한 마이크로 서비스 개발 (로컬 환경) | 페어 프로그래밍 데모 (테스트 작성)
이번 세션에서는 Spring Boot를 사용한 웹 애플리케이션 개발에 대해 소개합니다. 이때 제작되는 애플리케이션은 Pivotal에서 풀타임으로 사용하고 있는 페어프로그래밍을 통해 테스트부터 작성하는 핑퐁 페어등을 소개합니다. 두명이 함께 코드를 작성하는 환경을 통해 빠른 사업환경의 변화를 수용할 수 있는 개발 업무가 Pivotal에서는 어떻게 다른지 살펴봅니다.
플루토미디어 주최 "UX 월드 2017" 강연자료.
1. 프로토타이핑을 하는 이유
- 인터랙션 디자인
- Lean UX 프로세스
- 프로토타이핑 프로세스와 기대효과
2. 프로토타입 툴의 트랜드
- 프로토타입 툴의 종류
- 프로토타입 툴의 선택 기준
- 프로토타입 제작 원칙
3. 카카오 UX팀의 프로토타입 제작 사례
- Piccoma : 카카오재팬. 신규 서비스 프로토타입.
- ZERO+ : 인터랙션 라이브러리(인하우스용).
- IX Watch : 아이디어 발산을 위한 컨셉 스마트워치.
2020년 서울시에서 주최한 강소기업탐방 프로그램에서 발표한 자료 입니다.
학교를 졸업하고 software engineer로 취직을 하기까지의 여정을 다뤘습니다
1. 개발자가 나에게 맞을지 고민하기 위한 방법
2. 개발자로 취직하기 (이력서/면접 준비 팁)
3. 개발자로 취직한 후 우리가 하는 일
2011년도에 진행된 디자이너를 위한 앱 개발 과정의 일지다. 그동안 여러 교육기관들의 UI 디자이너 과정의 커리큘럼과 결과물들을 보면 대부분 현실적인 여건의 문제로 최종 결과물이 UI 목업(Mock-up, 모형)을 만드는 데에서 그쳤으며, UI 목업조차도 실제 앱으로 구현되기 어려운 부분이나 UI 가이드라인을 크게 어기는 경우를 흔히 볼 수 있었다. 모바일 환경과 애플리케이션 제작현장을 잘 알고 디자인을 한다면 목업을 만들 때에도 보다 구체적이고 현실적인 결과물이 나올 수 있을 것이지만 디자이너가 볼 수 있는 기술서적은 거의 없다. 이 책이 그 대안이 되어 앱을 만드는 디자이너들이 알아야 하는 ‘앱 개발 범위’에 대한 기준이 될 수 있을 것이다.
yes24 에서 구매 가능합니다.
http://www.yes24.com/24/goods/6498614?scode=032&OzSrank=2
14. #1 기초 과목의 중요성
• 학생들이 귀에 못이 박히도록 듣는 말..
• 하지만 (역시나) 직접 경험해보니 백 번 천 번 맞는 말이더라
• #2 ~ #4는 중요도 순이 아니지만 이 항목은 중요도 1순위
• 자료구조 및 알고리즘, 데이터베이스, 컴퓨터 네트워크, 운영
체제 등등
15. #1 기초 과목의 중요성
자료구조
•프로그래밍은 데이터를 다루는 일
•자료구조는 데이터를 저장해두는 곳
•업무 중 하루에도 십 수 번씩 내려야 하는 의사결정
“여기에는 어떤 자료구조가 적합할까?”
•자료구조 간의 차이점/장단점 확실하게 알자
•신입, 경력을 불문하고 면접 단골 질문
16. #1 기초 과목의 중요성
알고리즘
•프로그래밍은 데이터를 다루는 일
•알고리즘은 작업의 단계 + 작업 효율성의 척도
•Time Complexity & Space Complexity
•어떤 자료구조를 사용하는게 적합할지 판단하기 위해
서는 자료구조별 access, search, insert, delete 작업
의 time complexity 비교
•Sorting 알고리즘별 time & space complexity 공부
가 좋은 시작
17. #1 기초 과목의 중요성
컴퓨터 네트워크
“브라우저에 http://www.naver.com 을 입력하면 어떤 일들이
일어날까?”
• OSI 7 layers, DNS
• HTTP는 왜 TCP/IP 일까?
• TCP/IP와 UDP의 차이점
구글에서 만들고 라인, 페이스북 등에서 사용한 SPDY 프로토콜
• HTTP의 작동 방식을 이해
• 왜 실시간 커뮤니케이션을 할 때 단점이 있는지
• HTTP/2
20. #2 멀티쓰레드 환경에서의 개발
코드는 평면에 순차적으로 쓰여있지만 실제 실행될때는 이렇
게 여러개의 쓰레드가 동시에 실행되며 다른 쓰레드를 생성
해서 작업을 시키기도 하고 작업의 결과를 리턴 받기도 한다.
이미지 출처 : http://camel.apache.org/asynchronous-processing.html
21. #2 멀티쓰레드 환경에서의 개발
친구의 프사가 바뀌
었다는 메시지 수신
서버에서 이미지
다운로드
원형으로 비트맵
리사이즈
기존 프사 삭제하고
새로 저장
UI 반영
친구가 속해있는
단체방 검색
단체방 피자 모양
썸네일 새로 생성
기존 썸네일 삭제
후 새로 저장
UI 반영
친구가 프사를 바꾸면 내 앱에서는 무슨 일이 일어날까?
22. #2 멀티쓰레드 환경에서의 개발
•Asynchronous vs Synchronous (동기 vs 비동기)
•다른 쓰레드에 맡긴 작업의 결과를 기다리는 동안 다
른 작업을 할 수 있느냐, 못하느냐
•모바일 앱에서 메인쓰레드의 중요성
•UI에 대한 I/O 작업 할 수 있는 단 하나 뿐인 쓰레드!
•너무 많은 작업을 하거나 오래 걸리는 작업을 메인쓰
레드에서 할 경우 앱이 버벅이고 유저 인풋을 받을
수 없기 때문에 좋은 사용자 경험을 줄 수 없음
친구가 프사를 바꾸면 내 앱에서는 무슨 일이 일어날까?
23. #2 멀티쓰레드 환경에서의 개발
친구가 프사를 바꾸면 내 앱에서는 무슨 일이 일어날까?
main thread worker thread network thread file I/O thread
이미지 다운로드
SYNC
이미지 리턴
기존 프사 delete 및 새 프사 write
ASYNC
UI 업데이트
비트맵 작업
ASYNC
친구가 속한
그룹방 검색
그룹 멤버들 프사 read
SYNC
프사 합성
UI 업데이트
ASYNC
기존 프사 delete 및 새 프사 write
ASYNC
24. #2 멀티쓰레드 환경에서의 개발
•데드락
•데드락이 발생할 수 있는 조건 4가지
•데드락 해소 방법
•식사하는 철학자들 문제
•Race condition
•Thread safety
•디버깅 헬게이트
멀티쓰레딩은 어렵다
45. #3 SW 아키텍처에 대한 고민
• 언어나 프레임워크에 종속된 것이 아니기 때문에 어떤
프로젝트(iOS, 안드로이드, node.js, django 등)를 하
더라도 유사한 디자인 패턴을 찾을 수 있기 때문에 새
프레임워크도 쉽게 익힐 수 있음
• iOS와 안드로이드에서 상속 없이 커스텀 로직을 추가
하는 방법 (delegate vs listener)
• 패턴을 알고 있는 개발자라면 코드를 더 빨리 쉽게 읽을
수 있고 동료 개발자들과 추상화된 커뮤니케이션을 할
수 있음
• “이건 팩토리 패턴으로 짜면 더 편리하지 않을까요?”
48. #4 동료 개발자로서의 나
"수진님, A 기능을 추가하려고 하는데 (수진님이 작
성한) B 클래스에 어떻게 추가해야하나요?"
"수진님이 짠 클래스 수정했는데 리뷰 좀 해주세요"
"C 클래스를 이렇게 사용하는게 맞나요?"
49. #4 동료 개발자로서의 나
"(도대체) 왜 이렇게 짜셨어요??"
"수진님, A 기능을 추가하려고 하는데 (수진님이 작
성한) B 클래스에 어떻게 추가해야하나요?"
"수진님이 짠 클래스 수정했는데 리뷰 좀 해주세요"
"C 클래스를 이렇게 사용하는게 맞나요?"
50. #4 동료 개발자로서의 나
"내가 만든 서비스의 유저들도 나의 고객이지만 내가 짠
코드를 사용하는 동료 개발자들도 나의 고객이구나..."
• 동료 개발자들에게 더 좋은 서비스(좋은 코드)를 제공하기
위해서 어떻게 해야할까?
• 동료 개발자들에게 좋은 코드란 뭘까?
• (나에게 물어보지 않아도) 새 코드를 어디에 추가해야될
지 앎
• 클래스의 설계 목적과 의도대로 사용
• 이 와중에 의도치 않은 버그가 발생하지 않음 (or 최소화)
51. #4 동료 개발자로서의 나
• 구조가 잘 잡힌 소프트웨어 == 잘 정리된 방?
• 얼마전에 친구가 집에 놀러와서 꼴을 보더니 모든 물건을 끄
집어내서 버릴건 버리고 물건의 특성에 따라 재정리해줌
• 한번 구조를 잡아주니까 정리정돈을 못하는 나도 오랫동안
깨끗하게 유지가 된다!
• 새로운 클래스가 추가되고 다른 개발자가 참여하더라도 깔끔
하게 유지되는 코드를 짜는 것이 동료 개발자로서 할 수 있는
일?
비개발자 친구가 내 방을 리팩토링
“… 앞으로 이런 물건은 여기에 놓고 이건 자주 안쓰는거니까 저기
안에 넣어두고 이건 자주 쓰는거니까 책상 근처에 두면서 쓰고…”
53. PART 2
• 개발 실력은 코딩하는 만큼 업그레이드 된다
• 하지만 남이 시키는 개발은 재미가 없다 (특히 학교 과제ㅜㅜ)
• 내가 만들고 싶은 걸 찾아서 만들면 재미도 있고 개발도 는
다
• PART 1에서 언급한 것들을 맛보기 버전으로 미리 느껴볼 수
있다.
• 개발 면접 / 자소서 필수 항목
• 프로젝트를 진행해본 경험
• 프로젝트를 하면서 부딪힌 어려움, 어떻게 극복했는지
만들어보자
54. 토이 프로젝트
직접 만들어보세요!
#1 보안카드 위젯 개발 계기
#2 한 개라도 차별점을 확실히
#3 시작이 반, 출시가 반
#4 UI/UX 디자인은 필수
#5 가능하면 팀으로
55. #1 보안카드 위젯 개발 계기
iOS 수업 과제인 개인 프로젝트 주제 고민 중, 특이하고 새로운
기능을 가진 앱 보다는 내가 자주 쓰는 앱 중에 하나를 앱스토어
에 유료로 팔 수 있을 수준으로 완성도 높게 만들어보고 싶었음.
고민 끝에 내 자신이 여태 스마트폰을 쓰면서 가장 오래, 꾸준히
써온 보안카드 앱을 만들어보기로!
그리고 나서 스펙을 정리하면서, 새로 나온 iOS8의 새로운 기능
들을 어떻게든 써보고 싶어서 머리를 싸매던 도중 알림 센터의
활용 가치를 깨닫게됨.
나의 토이 프로젝트
56. #2 한 개라도 차별점을 확실히
• 너무 새로워서 생소한 것보다는 이미 사람들이 많이 쓰고 있
거나 특정 사람들이 강하게 필요로하는 것들을 만들어보자
• 공부 시간 측정, 메모, todo, 토론 타이머, 게임 스탯 분석
등등
• 누군가 내가 만든걸 써야하는 이유가 최소한 하나는 있어야함
• 보안카드 앱도 이미 수 년 전부터 여러 비슷한 앱이 존재했음
• 비슷한 서비스들도 자세히 살펴보면 조금씩 차별점이 있다.
• 사용자 리뷰를 살펴보면 사람들이 왜 그 특정 서비스를 쓰는
지, 그 서비스의 강점을 파악할 수 있다. 본보기로 삼자
만들고 싶은게 이미 존재하더라도 실망하지 말자
57. #2 한 개라도 차별점을 확실히
사람들은 계속해서 새로운 것을 찾는다
• 2015년 다운로드 수 그래프
• 힌트 : 10월 23일
58. #2 한 개라도 차별점을 확실히
사람들은 계속해서 새로운 것을 찾는다
• 2015년 다운로드 수 그래프
• 힌트 : 10월 23일
• 사람들이 폰을 새로 산 후 / 바꾼후 새 앱을 다운
• 그 외에도, 이미 쓰고 있는 서비스가 추후 지원을 중단하거나
• 더 마음에 드는 것이 나와서 바꿀 유인이 충분하다면
59. #3 시작이 반, 출시가 반
핵심 기능(차별점 포함)만 갖추고 일단 출시!
• 사용자가 생기기 시작하면 요구사항들이 쏟아짐
• 가장 개발을 쉴새없이, 미친듯이 했던 기간
• 사람들이 원하는 기능을 만들고 있다는 기쁨
• 없던 개발력도 생기게 하는 유저들의 긍정적인 피드백
그 이후는 물 흐르듯이
출시
60. #3 시작이 반, 출시가 반
핵심 기능(차별점 포함)만 갖추고 일단 출시!
• 사용자가 생기기 시작하면 요구사항들이 쏟아짐
• 가장 개발을 쉴새없이, 미친듯이 했던 기간
• 사람들이 원하는 기능을 만들고 있다는 기쁨
• 없던 개발력도 생기게 하는 유저들의 긍정적인 피드백
그 이후는 물 흐르듯이
61. #4 UI/UX 디자인은 필수
아이콘만 이뻐도 다운로드가 증가하더라
별다른 기능 추가 없이 아이콘 업데이트
62. #5 가능하면 팀으로
• 더 나은 결과물을 더 빨리 낼 수 있다
• 보안카드 위젯 앱도 디자이너 1명과 같이 작업
• 중요한 협업의 경험
• 개발자-개발자, 개발자-디자이너, 개발자-기획자
• 개발자간 협업을 하게 되면 Git과 Github을 꼭 사용
비교우위를 활용하자