분류 전체보기
-
비동기(Async)통신과 동기(Sync)통신공부 2016. 6. 23. 19:26
동기(Sync)동기식 전손은 한 문자 다누이가 아닌 미리 정해진 수 만큼의 문자열을 한 묶음으로 만들어서 일시에 전송하는 방법. 해당 방법에서 데이터와는 별도로 송신 측과 수신 측이 하나의 기준 클럭으로 동기신호를 맞춰 동작함수신측에서는 클럭에 의해 비트를 구별하게 되므로, 동기식 전송을 위해선 데이터와 클럭을 위한 2회선이 필요.송신측에서 2진 데이터들을 정상적인 속도로 내보내면 수신측에서는 클럭의 한사이클 간격으로 데이터를 인식 동기식 전송은 비동기식에 비해 전송효율이 높음수식측에서 비트를 계산해야 하고 문자를 조립하는 별도의 기억장치가 필요해 비동기보다 가격이 높음송신측에서 전송된 데이터를 수식측에서 정확히 수신하기 위해 보내는 측과 받는 측의 각 비트가 동일한 타이밍이 취해져야 하는데, 이때 송수..
-
parameter (또는 argument) 앞에 *, ** (아스테리크 = asterisk = 별표) 의미언어/파이썬 & 장고 2016. 6. 23. 18:47
장고 orm이나 파이썬 코드를 보면 *args, **kwargs를 확인할 수 있습니다.해당 뜻은 어떤 파라미터를 몇개를 받을지 모르는 경우 사용한다 라고 하지만 막연하기 때문에 예를 들어 설명하겠습니다.*args *args는 파라미터를 몇개를 받을지 모르는 경우 사용하고 튜플 형태로 전달됩니다. def test(*args): print(args) test('a','b','c') #결과 ('a', 'b', 'c')위처럼 argument로 여러 값을 던지고 해당 함수에서 tuple을 사용할 수 있습니다. dict타입과 같이 변수 자체를 그대로 넘기면 튜플 내에 데이터 1개로 취급됩니다.def test(*args): print(args) a = {'name': 'a', 'name2': 'b', 'name3':..
-
젠킨스란?서버 2016. 6. 20. 20:41
젠킨스를 통해 지속적인 통합 (CI: Continuous Integration)을 행할 수 있다. 형상관리(git, 서브버전 등)와의 연동젠킨스와 같은 CI툴이 등장하기 전에는 일정시간마다 빌드를 실행하는 방식이 일반적이었다. 특히 개발자들이 당일 작성한 소스들의 커밋이 모두 끝난 심야 시간대에 이러한 빌드가 타이머에 의해 집중적으로 진행되었다. 젠킨스는 정기적인 빌드에서 더 업그레이드 해 서브버전, Git와 같은 버전관리 툴과 연동하여 소스의 커밋을 감지하면 자동적으로 자동화 테스트가 포함된 빌드가 작동되도록 설정 할 수 있다. 개발 도중의 커밋은 빈번하게 일어나기 때문에 커밋 횟수만큼 빌드를 실행하는 것이 아니라 큐잉되어 자신이 실행될 차례를 기다리게 된다. 코드의 변경과 함께 이뤄지는 자동화 빌드와..
-
RestFul API웹 2016. 6. 20. 20:15
Rest API란REST는 HTTP/1.1 스펙과 동시에 만들어졌는데, HTTP 프로토콜을 정확히 의도에 맞게 활용하여 디자인하게 유도하고 있기 때문에 디자인 기준이 명확해지며, 의미적인 범용성을 지니므로 중간 계층의 컴포넌트들이 서비스를 최적화하는 데 도움이 된다. REST의 기본 원칙을 성실히 지킨 서비스 디자인은 “RESTful 하다.” 라고 흔히 표현.무엇보다 이렇게 잘 디자인된 API는 서비스가 여러 플랫폼을 지원해야 할 때, 혹은 API로서 공개되어야 할 때, 설명을 간결하게 해주며 여러 가지 문제 상황을 지혜롭게 해결하기 때문에 (버전, 포맷/언어 선택과 같은) REST는 최근의 모바일, 웹 서비스 아키텍처로서 아주 중요한 역할을 하고 있다.웹 아키텍처 클라이언트/서버 (Client/Serv..
-
세션, 쿠키, 캐시웹 2016. 5. 21. 16:51
세션과 쿠키, 캐시의 정의에 대해 매번 햇갈려 정리합니다. 1. Stateless 프로토콜기본적인 HTTP통신의 원칙은 Stateless입니다. 클라이언트의 상태를 가지지 않는 서버 처리 방식을 말합니다. 다시 말해, 클라이언트와의 첫번째 통신에서 데이터를 받았다고 해도 두번째 통신에서 이 데이터를 계승하지 않는 처리 방식입니다. 하지만 실제 서비스에서는 이와 같은 기본 원칙보다 Stateful한 방식이 필요한 경우가 많습니다. 예를 들어, 상품을 선택하고, 구입을 하는 예를 생각해 봅니다. 상품 선택의 통신이 끝난후, 상품 구입의 리퀘스트가 서버로 보내지게 될 터인데, 여기서 만약 서버가 선택한 상품의 정보(상태)를 가지고 있지 않다면 유저는 상품을 구입 할 수가 없습니다. 따라서 웹 어플리케이션 개발..
-
크롬 확장프로그램 (Chrome Extension)웹 2016. 5. 21. 14:05
모바일의 앱스토어 처럼 구글에도 웹스토어가 존재합니다. 이에 어떻게 크롬 확장프로그램을 개발할지와 이를 이용해 ajax를 호출하는 확장프로그램 개발을 설명하겠습니다.개발확장프로그램을 개발하기 위해서는 html과 자바스크립트를 사용할 수 있어야 합니다. https://developer.chrome.com/extensions 해당 url에서 익힐 수 있지만 여기서는 테스트 api에 ajax 호출을 하는 프로그램을 개발할 수 있도록 진행하겠습니다.manifest.json매니페스트에 정의된 것으로 크롬이 해당 확장프로그램을 인식하고 어떻게 동작할 지 확인합니다. 자세하게 확장 프로그램의 이름, 설명, 어떠한 파일이 먼저 실행될 지, 사용하는데에 필요한 퍼미션은 무엇인지 등을 기술합니다.아래의 예는 사무실 문을 ..
-
BOWER저장소/BOWER 2016. 5. 21. 12:42
bower는 트위터에서 만든 프론트앤드용 패키지 매니저 입니다. bower는 node.js로 만들어진 도구이므로 npm을 이용해서 설치하고 커맨드라인 명령어로 사용합니다. npm과 pypi와 마찬가지로 지금부터 private하게 구축하는 방법을 설명하겠습니다.private-bower 설치아래 명령어로 bower 이미지를 다운받습니다. $ docker pull tandrup/private-bower빠른 시작$ docker run -e ADDRESS=ip주소 -i -t -d -v /home/bower:/data -p 5678:5678 -p 6789:6789 -p 7891:7891 --name bower tandrup/private-bower 모든 데이터는 /home/bower에 저장되며 컨테이너 내의 /da..
-
PYPI 업로드시, 옵션 선택하기저장소/PYPI 2016. 5. 21. 12:41
PYPI에 업로드할 때, 파일 또는 패키지를 어떻게 올릴지 정할 수 있습니다. 아래에서는 PYPI에 어떠한 옵션으로 올릴 수 있는지 확인하겠습니다.SETUP의 Attributesetup의 attribute는 다음과 같이 정의합니다.from distutils.core import setup setup( name='untitled8', version='0.3', package_dir={'':'untitled8'}, author='lee', author_email='lee@lee.com', description='test_django_project method', ) namepypi 서버에 올릴 모듈 또는 패키지의 이름입니다.versionpypi 서버에 올릴 버전입니다. 만약 이름과 버전이 이미 pypi 서버..
-
PYPI저장소/PYPI 2016. 5. 21. 12:40
PYPI는Python Packagy Index의 줄임말입니다. PYPI는 간단하게 파이썬 관련 패키지들이 모여있는 저장소라고 할 수 있습니다. 파이썬 개발자들은 자신이 개발한 파이썬 모듈들을 PYPI에 업로드할 수 있습니다. 또한 PYPI에 저장된 이 모듈들은 누구에게나 공개되어 있습니다. 여기서는 PYPI를 private하게 구축하는 방법을 설명하겠습니다. PYPI 설치아래명령어로 pypi 이미지를 다운받습니다.$ docker pull codekoala/pypiUsagesudo mkdir -p /srv/pypi # 패키지를 담는 디렉토리를 로컬에 생성합니다. sudo touch /srv/pypi/.htaccess # 패키지를 추가하기 위한 credential 파일 docker run -t -i -d \..
-
NPM저장소/NPM 2016. 5. 21. 12:29
NPM은 Node Packaged Modules의 줄임말입니다. 단어 그대로 Node.js에서 사용하는 모듈을 패키지로 모아 놓은 곳입니다. 사용자가 사용하고자 하는 패키지들을 다운받을 수 있습니다. 여기서는 공통으로 사용하는 npm이 아닌 private하게 npm을 구축하는 것을 설명하겠습니다.NPM 설치docker에 NPM 이미지를 아래의 명령어를 실행시켜 다운 받습니다.$ docker pull rnbwd/sinopia빠른 시작아래의 명령어로 이미지를 실행시킵니다.$ docker run --name sinopia -d -p 4873:4873 rnbwd/sinopiasinopia는 기본적으로 4873 포트를 사용하고 docker를 실행 시, http://vm주소:4873으로 실행화면을 확인 할 수 있습..