Languages & Frameworks
[PHP] SQL Escape & Bypass
[PHP] SQL Escape & Bypass
2017.10.23SQL Escape methodmysqli::real_escape_string이스케이프 문자 목록```php' " \ \x00(NUL) \x1a(EOF) \n \r``` 아래는 모두 동일한 함수.```phpstring mysqli::escape_string ( string $escapestr ) // aliasstring mysqli::real_escape_string ( string $escapestr )string mysqli_real_escape_string ( mysqli $link , string $escapestr )``` addslashes이스케이프 문자 목록```php' " \ \x00(NUL)```DB에서 지원해주는 함수가 정 없다면 addslashes() 를 사용한다. magic_quo..
[C] dup2 + pipe
[C] dup2 + pipe
2017.10.12이 글은 보호되어 있기 때문에 이것을 보려면 암호가 필요합니다.
[C] File IO : open, fopen, setbuf / fd VS fp
[C] File IO : open, fopen, setbuf / fd VS fp
2017.10.12이 글은 보호되어 있기 때문에 이것을 보려면 암호가 필요합니다.
[C] File IO : mmap - memcpy family
[C] File IO : mmap - memcpy family
2017.10.09이 글은 보호되어 있기 때문에 이것을 보려면 암호가 필요합니다.
[python] File IO open 함수 및 내장함수
[python] File IO open 함수 및 내장함수
2017.09.22open 함수```python>>> fd = os.open("./f", os.O_RDWR) >>> fd8>>> fdo = os.fdopen(fd, "wb")>>> fdo>>> fdo2 = open("./f", "wb")>>> fdo2`````python Built-in open("file name") return file object````python os.open("file name") return fd````python os.fdopen(fd) return file object``그래서, ``python Built-in open("./f") == os.fdopen(os.open("./f"))`` 이다. 내장함수```pythonall() #iterable을 입력받아 요소들 중 거짓이 하나도 없으면 Tr..
[python] pyplot.matplotlib
[python] pyplot.matplotlib
2017.09.13matplotlib 그래프를 그리는 라이브러리다. matplotlib의 pyplot모듈을 이용한다. 룩이 좀 구리지만 기능 자체는 꽤 쓸만하다. x값 만들기 ```python x = np.arange(1, 7, 1) # 1부터 7까지 1의 간격으로 숫자 생성. [1 2 3 4 5 6] x = np.arange(1, 7, 2) [1 3 5] x = np.linspace(1, 6, 6) # 1부터 6까지를 동일한 간격으로 6개의 값으로 나눈다. [1. 2. 3. 4. 5. 6.] x = np.linspace(1, 6, 5) [1. 2.25 3.5 4.75 6. ] ``` 2차원 좌표평면값 만들기 ```python # (-1,-1) (-1, -0.99)...(-1, 4) (-0.99, -1) ... (4, 4..
[C] 타입 Types / Type Casting / 가변 인자
[C] 타입 Types / Type Casting / 가변 인자
2017.09.04``c ``를 사용하도록 하자.``c int``보다 ``c uint8_t`` 같은 고정 크기 타입을 사용하는 것이 좋다.``c char``보다 ``c TCHAR``를 사용하는 것이 좋다. 윈도우인 경우 컴파일 옵션에 따라 리눅스 등에서도 호환 가능하기 때문. Types```cuintptr_t```포인터를 대상으로 덧셈, XOR 등 수치 연산이 필요한 경우 포인터를 숫자값으로 취급하기 위해 사용하는 타입.어떤 포인터라도 담을 수 있는 크기의 데이터 타입이라는 의미가 된다.따라서 포인터를 대상으로 수치 연산이 필요한 경우 사용한다.``cpp (uintptr_t)this + 4`` 이렇게 더하기 연산을 해도 1씩 증가하기 때문에, `` uint8_t*``같은 것으로 변환하는 것 보다 더 낫다. `` uint8..
[C/C++] define, inline, const, enum, enum class
[C/C++] define, inline, const, enum, enum class
2017.09.04#define의 쓰임``c #define``은 옵션이나 flag를 지정할 때만 사용하고, 다른 용도일 경우 ``c inline``이나 ``c static const``를 사용하는 편이 좋다.이렇게 할 경우 1. type-safe하고, 2. 어디에 쓰느냐에 따라 scope도 지정 가능하며, 3. 디버깅 심볼이 생성되어 디버깅이 편하다는 장점이 있다. 간단한 함수 차원의 #define / inlineC에서 사칙연산 같은 간단한 작업은 ``c #define macro``를 활용해 왔으나, 요즘은 C에서도 inline이 가능하므로 이 쪽을 권장한다.```cextern inline void f() { }``` C++에서도 ``c #define``은 꼭 필요한거 아니면 쓰지 않는 것을 권장한다. (Google C+..
[python] asyncio
[python] asyncio
2017.08.27파이썬의 코루틴과 태스크 API파이썬의 이벤트 루프 API asyncio실행 흐름```pythonimport asyncio async def sub(n): await asyncio.sleep(n) print("sub{}".format(n)) async def comain(): times = [1, 2, 2] fts = [asyncio.ensure_future(sub(t)) for t in times] for f in asyncio.as_completed(fts): x = await f print("comain") loop = asyncio.get_event_loop()loop.run_until_complete(comain()) # comain()이 Future로 wrapping되며 Task schedul..
[python] ( coroutine / Task )와 비동기 모듈
[python] ( coroutine / Task )와 비동기 모듈
2017.08.25coroutine 코루틴이란 ? 각 루틴이 종속적인 관계 아닌(caller, callee 관계인 subroutine이 아닌) 대등한 관계로, 서로를 순차적으로 호출하도록 되어 있는 함수 ~3.4 에서는 제너레이터를 사용해 코루틴을 구현 제너레이터는 어디까지 실행했는지를 기억했다가 나중에 다시 그 부분부터 실행되기 때문에, 이를 Future와 결합하면 코루틴을 구현하기 용이 ```python # next(c) 한 번 호출 시 다음 yield까지 실행. # 즉 아래 함수는 next(c)를 3번 호출 가능 def coro(): # 밑줄 부분을 실행("yield1" 반환)하고 첫 번째 멈춤. 즉 hello = ???는 아직 실행 전. hello = yield "yield1" yield hello # hello를..
[python] threading, multiprocessing, GIL, concurrent.futures.ThreadPoolExecutor
[python] threading, multiprocessing, GIL, concurrent.futures.ThreadPoolExecutor
2017.08.25threading ( multiprocess ) 직접 `` threading.Thread`` 클래스의 객체를 생성하는 방법 `` threading.Thread``를 상속받은 다음 이 클래스의 객체를 생성하는 방법 (한 가지 방법이 더 있지만 어차피 안쓴다) #1 import threading def say(msg): for i in range(2): time.sleep(1) print(msg) for msg in ['THREAD1', 'THREAD2', 'THREAD3']: t = threading.Thread(target=say, args=(msg, )) # recv() 같은 blocking 함수를 호출하는 thread는 flag를 False로 만든다고 해도 # 애초에 recv()에서 넘어가질 않기 때..
[C] the end of the address space check
[C] the end of the address space check
2017.07.27```cif (__builtin_expect ((uintptr_t) p > (uintptr_t) -size, 0)```* `` size`` is `` p``'s size ``c type(x) = uintptr_t``일 때, ``c x + ~x = uintptr_t's MAX (111...11)`` 이므로``c p + x = MAX`` 이면 ``c p = ~x``다. ``c -x = ~x + 1``이므로 ``c p = -x - 1``이다.* 이를 대입하면 ``c x -x -1 = MAX``가 나오는데, 보통 ``c int(-1) = uintptr_t's MAX (111....11)``임을 생각해보면 된다. 따라서 ``c p = -x -1``이면 ``c p + x = uintptr_t's MAX``다.``c..