Languages & Frameworks
[python] plotly
[python] plotly
2017.07.19Plotly? Python, JS, R을 지원하는 오픈소스 차트 라이브러리. https://plot.ly/python/user-guide/ https://plot.ly/python/reference/ https://plot.ly/python/line-charts/ https://plot.ly/python/network-graphs/ https://plot.ly/python/configuration-options/ DiGraph에서 방향 표현하기 Plotly-python, Dash, Plotly-js Plotly-python은 파이썬에서 그래프를 구성하고 파일 기반으로 그래프를 생성해준다. 그래서 그래프 이외에 select box를 붙인 다던가, 이 select box의 동작이 그래프에 영향을 미친다던가 ..
[python] graph visualization
[python] graph visualization
2017.07.19graphnetworkx anaconda에 포함되어 있음. 사용법도 간단하지만 룩이 구리고 pure-python implementation이라 속도가 굉장히 느리다.graphviz 논문에 나올법한 상당히 구식 룩이나 쓰기 편함. 활용도가 높음. 사용하기 위해서는 graphviz라는 프로그램 자체와 이를 python과 연결해주는 라이브러리 둘 다 설치해야 한다. * graphviz 설치하고 bin폴더 환경변수에 등록해주어야 함. 라이브러리로는 ``py graphviz, pygraphviz, graphviz-python``이 있는데 그냥 ``py graphviz``가 제일 무난하고 대중적인 듯. 그리고 이거 사용할 때 아주 주의해야 할 것이 ``py ":"``가 node나 edge에 들어가 있으면 그 앞까지..
malloc/calloc tip, wrapper
malloc/calloc tip, wrapper
2017.07.12calloc```cvoid *calloc(size_t nmemb, size_t size);```결과적으로 할당되는 크기는 ``c nmemb * size`` bytes다. 어차피 0으로 초기화 할거면, ``c malloc() + memset()`` 보다 ``c calloc()``을 사용하는게 더 빠르다. kernel이 memory를 제공하기 전에 zero로 만들고 제공할 수 있기 때문. malloc wrapper```c/* like malloc(), but terminates on failure */void * xmalloc(size_t size){ void *p; p = malloc(size); if (!p) { perror("xmalloc"); exit(EXIT_FAILURE); } return p;}..
[python] subprocess, Popen
[python] subprocess, Popen
2017.07.03Note )subprocess로 실행하는 바이너리가 출력→입력대기 순서로 진행할 때,``c read() -> write()``를 주었는데도 제대로 동작하지 않는 경우가 있다.이는 실행하는 바이너리 자체에서 입력 대기 하기 전에 출력을 파이썬으로 보내주어야 하는데, 입력 대기가 끝난 이후에 파이썬으로 출력 내용을 보내기 때문에 발생하는 현상으로 보인다. 그래서, 파이썬 단에서는 파이프를 새로 만들든 무슨 짓을 하든 해결이 안되고, 바이너리에서 flush해주는 수 밖에 없는 듯. Popen세부적인 제어는 `` subprocess.Popen()``을 사용해야 한다.stdio 연결```python>>> p = subprocess.Popen(argv, stdin=subprocess.PIPE, stdout=subp..
[python] with / try-except
[python] with / try-except
2017.07.02with 파일 open, read는 이런식으로 사용한다. ```python with open("foo.txt", "w") as f: while True: line = f.readline() if not line: break print(line) ``` auto close를 위해 with를 사용하는게 좋다. with를 빠져나오면서 자동으로 close한다. 파일에서 데이터를 읽어오는데 read(), readline(), readlines() 함수를 지원한다. readlines()는 각 라인을 리스트로 반환한다. 대신 try - finally로 finally에서 `` close()``를 호출해 주는 방법도 괜찮다. 간단한 open은 with로, 다른 메소드를 호출해야 하는 등의 나머지 경우는 finally로 ..
[python] directory parse / glob / pathlib
[python] directory parse / glob / pathlib
2017.07.02```pythonos.getcwd() # working directory == python command를 실행한 pathos.path.dirname(os.path.abspath(__file__)) # 현재 파일이 위치한 directory```디렉토리의 파일을 얻는 방법은 ``py os.listdir()``과 ``py glob.glob()`` 두 가지가 있다.3.4 부터 ``py pathlib``이라는 고수준 파일 시스템 모듈이 있으니 이걸 쓰는게 좋다.```pythonfrom pathlib import Pathp = Path('.')attack_packages = [x.resolve() for x in p.iterdir() if x.is_dir()]a.suffix # asdf.py이면 .py 반환a.s..
[python] 람다(lambda), 함수형 fileter / map / reduce
[python] 람다(lambda), 함수형 fileter / map / reduce
2017.07.02아무래도, 파이썬에서는 filter, map, reduce 보단 list comprehension을 사용하는게 더 pythonic하다는 의견이 주류인 것 같다. https://www.artima.com/weblogs/viewpost.jsp?thread=98196 [python] Comprehension, Generator / iterator VS iterable / itertools lambda ```python lambda args : returns ``` 람다식은 `` filter, map, eval``같은 larger expression에 끼워서(inline) 사용하는 경우 가독성을 높여준다. 복잡한 상황에서는 명확한 ``py def``를 사용하는 편이 가독성이 더 좋다. 그리고 이런 식으로 람다식..
[python] Comprehension, Generator / iterator VS iterable / itertools
[python] Comprehension, Generator / iterator VS iterable / itertools
2017.07.02List Comprehension확실히 일반 for문 보다 속도 우위가 있다. [python] 프로파일링(profiling)reduce 사용한 코드와 비교해서 더 깔끔한 것으로 선택하면 될 듯. map filter도 마찬가지보통 reduce를 사용해야 하는 경우라면 list comprehension이 더 깔끔한 경우가 많기는 하다.순서가 보장된다. https://stackoverflow.com/questions/1286167/is-the-order-of-results-coming-from-a-list-comprehension-guaranteed `` result``를 `` a`` 리스트의 요소들 중 짝수인 요소들만 골라 `` *3`` 한 값들로 채우려면```pythonresult = [num * 3 fo..
[PHP] mysqli, PDO / password_*
[PHP] mysqli, PDO / password_*
2017.06.24MySQL 접속에 사용할 수 있는 API는 ``php mysql, mysqli, PDO`` 세 가지다.`` mysql``보다는 오브젝트로 관리할 수 있는 ``php mysqli, PDO``를 사용하는 것이 좋다.* query 결과가 저장된 변수를 그냥 ``php print $result``하면 안되고, 함수를 사용해야 한다. mysqli```php$mysqli = new mysqli('localhost', 'sample', '123qw', 'sampledb');if($mysqli-> connect_error){print " =================== ";die('Connect Error:('.$mysqli->connect_errno.') '.$mysqli->connect_error);} prin..
[C++] Namespace 네임스페이스
[C++] Namespace 네임스페이스
2017.06.15여러 명이 함께 개발에 참여할 때, UML을 작성하는 등 체계적으로 접근해서 시작부터 프로젝트를 잘 모듈화해서 구성한다면함수나 변수, 클래스 이름이 충돌 날 가능성이 적지만 보통 일단 시작부터 하고 보기 때문에 이름이 충돌하는 경우가 있다. 네임스페이스는 이름을 묶어주는 그룹이라고 생각하면 된다.user1과 user2가 모두 `` funcA``를 정의했을 때, 각각이 다른 namespace에 속한다면 namespace를 명시하는 것으로 둘을 구분할 수 있기 때문에 그대로 `` funcA``를 사용할 수 있는 것이다. naming convention```cppCompanyName.TechnologyName[.Feature][.Design]```대소문자도 위처럼 쓰면 된다. c++에서의 namespace``..
[PHP] 함수, 클래스, 객체, 상속, 트레이트
[PHP] 함수, 클래스, 객체, 상속, 트레이트
2017.06.10함수내부 함수를 사용할 수 있다. 클로저나 콜백에 사용할 수 있는 익명함수를 정의할 수 있다. 기본적으로 Call by value지만 선언 시``&``를 붙이면 Call by reference로 동작한다. 선언 시에만 ``&``를 붙이고, 호출 시에는 그냥 호출한다. 함수나 메소드 앞에 ``&``를 붙일 수 있다. ``php return [v1, v2]`` 배열을 만들면서 리턴할 수 있다. Parameter를 정의할 때 Type을 적어주면, 받을 수 있는 Type을 제한할 수 있다. ( Type Hinting ) 객체기본적으로 자바와 흡사한데 ``php trait``가 추가되었다. 클래스 외부에서 클래스의 ``php static, constant``에 접근할 때,클래스 내부에서 상속 계층 상의 프로퍼티나..
[PHP] form tag, GET POST / cookie, session
[PHP] form tag, GET POST / cookie, session
2017.06.10==CLIENT==```html ```==SERVER== ( ?user=default_value )```php````` $_GET[user]``은 get method로 넘어온 query string에서 `` user``라는 key에 대응되는 `` value``를 의미한다. 즉 여기서는 `` default_value``가 된다.GET이든 POST든 관계없이 취급하려면 `` $_REQUEST``를 사용한다.어떤 `` key=value``쌍이 존재하는지는 ``php isset()``으로 확인한다. 배열로 받기checkbox와 listbox는 ``html ``로 지정하고 배열로 받는다. ``php $_POST["key"][idx]`````phpif (isset($_REQUEST["check"])){ foreac..