본문 바로가기

개발자 레니는 지금 -/소프트웨어와 함께

(59)
[ C/C++ ] Type bool Type bool 원래 C에서는 bool type은 없었다. ( C99 이전 )하지만 C도 이제 bool type이 필요하다고 생각한 것인지 드디어 bool type이 등장했다. 1. bool 이 아닌이유C99 이전에도 사람들은 bool이 필요했다.그래서 보통은 define 명령어를 이용해 사용자 정의로 bool을 사용하고 했다. 이런식으로,typedef int bool#define false 0#define true 1 bool b;b = true; 따라서 C99에서 bool type을 적용시킬 때 문제가 발생하게 된다.C99에서 bool 타입을 추가하려고 하니 기존에 사람들이 사용하던 저 코드들이 문제가 되는 것이다! 2. 그래서 선택한 방법그리하여 우리의 C00는 _Bool 이라는 type을 만들어..
[ MODULE ] audioop:: pcm data 모노, 스테레오 정보 바꾸기 PythonAudioop:: Manipulate raw audio data#Ubuntu 16.04 LTS#Python 3.5.2 #>> 상세 설명, 실행화면 audioopThe audioop module contains some useful operations on sound fragments. It operates on sound fragments consisting of signed integer samples 8, 16 or 32 bits wide, stored in Python strings. This is the same format as used by the al and sunaudiodev modules. All scalar items are integers, unless specified ..
[ BASIC ] 발생자 제네레이터 PythonGenerator#Ubuntu 16.04 LTS#Python 3.5.2 제네레이터이터레이터를 생성해주는 함수이며 발생자라고 부르기도 한다.이터레이터와 마찬가지로 모든 값을 다 반환하고 나면 StopIterater 예외를 발생시킨다. 재네레이터는 __iter__, __next__ 메소드를 가지고 있으며 yield라는 키워드를 사용한다.재네레이터 객체에서 __next__ 메소드를 호출할 때마다,재네레이터 함수 안의 yield까지 코드를 실행한 뒤 값을 반환하고 다음 __next__를 기다린다. 즉, yield를 사용하면 값을 제네레이터 함수는 yield 다음 코드 실행을 잠시 중단하고 함수의 바깥으로 값을 전달하면서 코드 실행을 함수 바깥에 양보하여 함수 바깥의 코드가 실행되도록 한다. + Tip..
[ BASIC ] 반복자 이터레이터 PythonIterator#Ubuntu 16.04 LTS#Python 3.5.2 이터레이터?값을 차례대로 꺼낼 수 있는 객체로 반복자라고도 불린다. 만약 연속한 숫자를 미리 만들면 숫자가 적을 때는 상관없지만 숫자가 아주 많을 때는 메모리를 많이 사용하므로 성능에 불리하다.그래서 파이썬에서는 이터레이터만 생성하고 값이 필요한 시점이 되었을 때 값을 만드는 방식을 사용하는데 이를 지연 평가( lazy evaluation )라고 한다. 반복 가능한 객체 = 이터레이터 ?결론 부터 이야기하면 단순히 반복만 가능한 객체는 이터레이터가 아니다. 1. 반복 가능한 객체반복 가능한 객체는 요소가 여러개 들어 있고, 한 번에 값을 하나씩 꺼낼 수 있는 객체로 문자열, 리스트, 딕셔너리 등등이 있다.객체가 반복 가능한 ..
[ MODULE ] boto3:: aws api PythonBoto3 #Ubuntu 16.04 LTS#Python 3.5.2 #>> 상세 설명, 실행화면 Installation$ pip install boto3 특별한 버전을 지정해서 설치하고 싶으면 아래 처럼 버전을 적어주면 된다.$ pip install boto3==verstion Configuration아마존에서 인증 받은 key id와 access key를 입력해주어야 한다. $ aws configure 명령어를 입력하면 아래 와 같이 key_id 와 access_key를 입력하라는 표시가 하나씩 나타난다. aws_access_key_id = YOUR_ACCESS_KEYaws_secret_access_key = YOUR_SECRET_KEY 키를 입력하고 나면 그냥 enter를 2번 쳐서 넘어가도..
[ DO ] 파이썬 마이크 입력 코드 PythonMic input#Ubuntu 16.04 LTS#Python 3.5.2 코드 해석마이크 관련 코드를 찾다가 어떤 분이 블로그에 주석을 달아서 매우 잘 정리하셨길래, 참고하고자 가져왔다. #!/usr/bin/env python import pyaudiofrom six.moves import queueimport time # 녹음용 값 # 16khzRATE = 16000# 버퍼는 1600CHUNK = int(RATE / 10) # 100ms class MicrophoneStream(object): """마이크 입력 클래스""" def __init__(self, rate, chunk): self._rate = rate self._chunk = chunk # 마이크 입력 버퍼 생성 self._buff..
[ BASIC ] PEP8 - Style Guide for Python Code PythonPEP8 - Python code style 충격적인 사실별 신경 안쓰고 있다가, 유지보수할 때나 나중에 코드볼 때를 생각해서 지켜보자 하고 봤는데.. 나름 충격적이었다.나는.. 대체.. T_T 좀 더 많은 자세한 내용은 참조내용을 보자.. 1. Tab이 아닌 Spcae로 들여쓴다.2. 한 줄의 문자 길이가 79자 이하여야 한다. 3. 함수, 변수, 속성은 lowercase_underscore( 소문자, 연결 되는 단어 언더바 ) 사용4. 보호 인스턴스는 _leading_underscore( 변수명 앞에 _ 한개, 연결 되는 단어 언더바 ) 사용5. 비공개 인스턴스는 __docule_underscore( 변수명 앞에 _ _ 두개, 연결 되는 단어 언더바 ) 사용6. 클래스와 예외는 Capita..
[ Python ] 복사의 늪에서 벗어나자, 얕은 복사 vs 깊은 복사 vs 걍 복사 PythonShallow copy / Deep copy / Copy#Ubuntu 16.04 LTS#Python 3.5.2 #>> 상세 설명, 실행화면코드 동작을 시켜보고 싶으신 분은 아래 참조내용에 1. GitHub에 가셔서 코드를 다운 받아서 "main.py"를 실행 시키세요 :) 1. Copy 단순 복사단순 객체의 복사는 그냥 같은 객체 주소를 가르킨다고 생각하시면 됩니다.둘 중에 하나를 수정하면 원래의 내용도 수정된다고 생각하면 되요. 00. list1을 list2에 복사했을 때- - - - - - - - - - list 1 >[3, 'string', [1, 0, 0, 4], {'b': 'MAMAMO', 'a': 'kitty'}]id > : 3id > : stringid > : [1, 0, 0, 4..