Languages & Frameworks
[PHP] HTTP response header 수정 ( redirect, Download Dialog )
[PHP] HTTP response header 수정 ( redirect, Download Dialog )
2017.06.08response headerheader() - Send raw HTTP header```phpvoid header( string $string [, bool $replace = true [, int $http_response_code ]] )`````php header()``를 사용하면 HTTP response header를 직접 조작할 수 있다.``php header()``는 반드시 어떤 output을 보내는 코드 이전에 위치해 있어야 한다. empty lines나 spaces가 있어도 안되니 주의.이것저것 해봤는데 ``php header()``앞에 HTML tag나 어떤 output을 출력하는 코드가 있어도 제대로 동작하는 환경도 있는 듯. ```php``` redirectionHTTP redirec..
[PHP] Program execution, Shell escape
[PHP] Program execution, Shell escape
2017.06.07실행 연산자 `command`안전모드 상태이거나, ``php shell_exec()``가 무효일 때는 사용할 수 없다.```php$filelist = `ls -al`; // 명령을 실행. 반환값은 실행 결과 전체.echo "$filelist";``` Program execution 함수 목록안전모드 상태일 경우 ``safe_mode_exec_dir``에 지정되어 있는 디렉토리에 위치해 있는 경우에만 실행할 수 있다.``system`` — Execute an external program and display the output 명령을 실행하고 자체적으로 실행 결과 전체를 출력. 리턴값은 실행 결과의 마지막 한 행.``passthru`` — Execute an external program and disp..
[PHP] 상수 목록 / Super globals
[PHP] 상수 목록 / Super globals
2017.06.07상수상수 정의는 ``php define("name", "value");``로 하고, global scope다.클래스 내부에서 상수를 정의할 때는 ``php const``를 사용하는 편이 좋다.```phpclass Member{ const MaxAge = 20; function printMaxAge( ) { print self::MaxAge; //$this->가 아니라 self::를 사용한다. }}``` 유용한 상수``PHP_VERSION``, ``PHP_OS````php __LINE__``, ``__FILE__``, ``__DIR__````__FUNCTION__``, ``__CLASS__``, ``__METHOD__````__TRAIT__``, ``__NAMESPACE__`` global전역 변수 참조는..
[PHP] 문자열, 배열
[PHP] 문자열, 배열
2017.06.06문자열PHP는 기본적으로 문자열을 이루는 각 문자를 `` 1 byte``로 간주한다.멀티바이트 문자를 다룰 때도 이를 `` 1 byte`` 단위로 다루기 때문에 오류를 방지하기 위해 ``php mb`` prefix가 붙은 함수를 사용해야 한다.`` mb`` 함수는 기본으로 설치되지 않기 때문에 undefined function Error가 발생할 수 있다.``bash apt-get install php-mbstring``해주고 아파치 재시작해주면 된다. 좋은 문법``php echo``가 ``php print``보다 아주 약간 빠르다.`` .``으로 잇는 것 보다 그냥 `` ,``으로 출력하는게 더 빠르다.```phpecho 'Hello', ' ', 'World';``// is better than ech..
[python] binary data와 16진수 / struct.pack
[python] binary data와 16진수 / struct.pack
2017.05.09binary datahex, bin```pythonhex = 0xf1bin = 0b11110001``` unicode / bytes 변환 int to ascii문자열을 bytes로 형변환 하고 싶다면 이 방법이 제일 간단하기는 하다. ```pythona = b'string to byte'```b'\x80' 으로 직접 지정하면 \x80 이상 data도 입력할 수 있다.```pythonhex(ord('a')) #unicode -> bytechr(0x61) #byte -> unicode```ord는 설명으로는 ASCII 변환이라고 써있기는 하지만 `` \x81``같은 데이터를 넘겨도 잘 동작한다. struct.packbinary data를 little endian으로 정렬할 때는 struct module을 사..
[python] 출력 관련 : 문자열, str <> bytes, bytearray
[python] 출력 관련 : 문자열, str <> bytes, bytearray
2017.05.09str과 bytes-like object문자열을 bytes로 만들고 싶다면 이 방법이 제일 간단하기는 하다.```pythona = b'string to byte'```b'\x80' 으로 직접 지정하면 \x80 이상 data도 입력할 수 있다. 파이썬에서 str형은 유니코드를 의미한다. 그래서 ASCII 문자열/바이트 문자열(bytes-like object)을 사용하는 부분에서 문제가 발생하곤 한다. 문자열을 byte 형식으로 변환하고 싶다면 인코딩 해야 한다. str→ → → → encode() → → → → ASCII← ← ← ← decode() ← ← ← ← ```python>>> a = 'string to byte'>>> a.encode()b'string to byte'````` encode()``..
exec 계열 함수
exec 계열 함수
2017.05.01```c#include int execl(const char *path, const char *arg1, arg2, ..., NULL); int execlp(const char *file, const char *arg, arg2, ..., NULL); int execle(const char *path, const char *arg, arg2, ..., char * const envp[]); int execv(const char *path, char *const argv[]); int execvp(const char *file, char *const argv[]); int execve(const char *file, char *const argv[], char *const envp[]);```모든 exec..
fork - exec / wait +clone
fork - exec / wait +clone
2017.05.01fork```c#include pid_t fork(void);```fdchild는 parent의 file table을 복사해가기 때문에``c fork()``나 ``c exec()``나 `` fd``는 유지된다.* thread는 main thread의 context를 공유하기 때문에, thread도 마찬가지다. exec2017/03/08 - [System/etc] - exec 계열 함수 wait (man wait)All of these system calls are used to wait for state changes in a child of the calling process, and obtain information about the child whose state has changed. A stat..
[python] Jupyter notebook
[python] Jupyter notebook
2017.04.16https://www.dataquest.io/blog/jupyter-notebook-tips-tricks-shortcuts/Help - Keyboard Shortcuts에서 Shortcut을 볼 수 있고 Edit도 가능하다.Keyboard Shortcuts help의 단축키는 H Docstring shortcut : `` shift + tap`` ( twice ) IPython 4.0부터 notebook 기능 등은 jupyter로 옮겨가고, IPython은 Interactive Python 기능만 지원한다고 한다.그래서 notebook을 사용하려면 Jupyter를 사용해야 한다. ```jupyter notebook```기본 IP:port는 localhost:8888 이다. 들어가면 웹에서 편집, 저장, ..
[python] numpy, pandas, sklearn
[python] numpy, pandas, sklearn
2017.03.11NumPy 그냥 python for 돌면 무조건 느리다. C가 아니니까... 파이썬으로 아무리 해봐야 크게 개선이 안됨. 그래서 Pandas나 Numpy가 제공하는 방법 대로 접근하는게 제일 효과적인 성능 개선 방법. ```python import numpy as np x = np.array([1, 2, 3]) print(type(x)) > ``` 특정 값을 가진 index들을 반환받는 방법 : where ```python >>> arr = np.array([[1,2,0],[0,1,2]]) >>> np.where(arr == 0) (array([0, 1], dtype=int64), array([2, 0], dtype=int64)) -> 0,2와 1,0 ``` 산술 연산과 브로드캐스트 넘파이 배열에 대한 ..
[PHP] Tip, php.ini, etc APIs
[PHP] Tip, php.ini, etc APIs
2017.03.09PHP는 Personal Home Page의 initialism이었으나 PHP: Hypertext Preprocessor의 recursive initialism으로 변경되었다.PHPSCHOOLPHP.net - 단순한 docs가 아니라 feature, security, core mechanism 등을 잘 정리해 놓은 가이드. TIPPHP 5.4.0부터 내장 웹 서버가 있어 Apache를 사용하지 않아도 PHP 어플리케이션을 실행해볼 수 있다. 그러나 당연히 프로덕션 환경에서는 사용하지 않는 것이 좋다. `` php -S 0.0.0.0:4000`` (python과 비슷하다) 닫는 php태그 ``php ?>``를 적지 않는다. * ``php ?>``를 넣고 나서 빈 줄을 넣으면 이를 출력으로 간주해 오류가 발..
[python] url parsing / BeautifulSoup4, bs4
[python] url parsing / BeautifulSoup4, bs4
2017.03.02URL structure```protocol://net_loc/path;params?query#frag```query : &로 구분된 '키=값' 쌍frag : 문서 내의 앵커 등 fragment 지정 ( 목차에서 클릭하면 그 항목으로 이동하는 것 )net_log : 일반적으로 서버의 주소를 나타내지만, 사용자 정보를 포함할 수 있다.net_log 구조는 다음과 같다. ```[user:passwd@]host[:port]```user:passwd 지정은 FTP 등에만 사용하는걸로 알고 있었는데, HTTP에도 사용할 수 있다. Basic 인증 등에 사용하는 듯. 관련 모듈 : urlliburlparse = urllib.parse원래 독립 모듈로 있다가 urllib.parse로 합쳐졌다.URL을 조작할 때 사용..