Languages & Frameworks
[C++] 맵 : unordered_map (hash_map)
[C++] 맵 : unordered_map (hash_map)
2018.08.20find와 count로 exist 체크내부에 해당 key가 존재하는지는 ``c count()/find()``를 사용한다.중복을 허용하지 않는 자료구조에서 둘은 내부적으로 거의 똑같기 때문에, 취향 대로 사용하면 된다.```cpp#include #include std::unordered_map hash_map;int main() { hash_map.insert(std::make_pair("umbum", 1234)); // hash_map["umbum"] = 1234 도 가능. if (hash_map.count("umbum")) { std::cout
[C++] directory listing (traversal)
[C++] directory listing (traversal)
2018.08.10원래는 boost에 있는 API이고, C++ 17에서 표준으로 추가되었기 때문에, boost를 추가하거나 컴파일러를 C++17로 변경해야 한다.후자가 더 편하기 때문에, 프로젝트 설정 - C/C++ - Language - C++ Language Standard를 `` /std:c++17``로 변경해준다. ```cpp#include #include namespace fs = std::filesystem;using namespace std; int main(int argc, char **argv){ for (auto& p : fs::recursive_directory_iterator(root_path)) { /* .path() 메서드가 다시 path 객체를 리턴하기 때문에 C style의 입출력을 사용하지 ..
[C/C++] clock : 수행 시간 측정 / logging : 에러 출력
[C/C++] clock : 수행 시간 측정 / logging : 에러 출력
2018.08.09clock과 chrono의 초단위 정밀도 차이```c[clock ] 0.001513[chrono] 0.00151351``` [C] clock```c#include int main(int argc, char *argv[]) {clock_t begin, end;begin = clock();// processing end = clock();printf("[*] processing time : %lf\n", (double)(end - begin) / CLOCKS_PER_SEC);return 0;}``` [C++] chrono```cpp#include #include #include #include int main() { auto start = std::chrono::system_clock::now(); // p..
[python] @property, getter setter, private 필드
[python] @property, getter setter, private 필드
2018.08.07프로퍼티 지정 protected로 만들거면 `` _``, private으로 만들거면 `` __`` 프로퍼티는 일반 변수와 같이 명명하는게 통일성 있다. 메서드지만 외부에서는 변수처럼 보여야 하니까. property() 사용하는 방법도 있으나 decorator 사용하는 방법이 나아보인다. lock 변수를 사용할 때 좋은 듯 ```python @property def running_flag(self): with self.__running_flag_lock: flag = self.__running_flag return flag @running_flag.setter def running_flag(self, value): with self.__running_flag_lock: self.__running_flag ..
[C++] File IO : <ifstream> 과 pubsetbuf()
[C++] File IO : <ifstream> 과 pubsetbuf()
2018.08.03``c ifstream``을 사용할지, ``c fopen()``을 사용할지는 얻어낸 결과를 어디에 담을 것인지에 따라 결정하면 된다. 어차피 얻어낸 데이터를 가공하는 과정에서 `` string``으로 만들어야 한다거나, `` string``의 메서드를 사용해야 편한 경우라면 그냥 `` ifstream``을 사용한다. 왜냐면, ``c char*``에서 `` string``으로 변환하는건 새로운 `` string``을 만들면서 생성자로 ``c char*``데이터를 집어넣는 수 밖에 없는데 이 때 Deep copy가 발생한다.Shallow copy하는 방법 없나 찾아봤는데 아마 없는 것 같다.그래서 문자열 데이터가 큰 경우 copy시 발생하는 오버헤드를 줄일 필요가 있기 때문에 아예 가공할 데이터의 타입을 따..
[C/C++]의 동적 할당과 Memory leak
[C/C++]의 동적 할당과 Memory leak
2018.06.11이게 아주 중요한 이슈인데, memory leak은 구조체, 포인터의 배열 등 동적 할당 받은 공간이 또 다른 동적 할당 받은 더 큰 공간의 entry가 될 때 자주 발생한다. 다음과 같이 단순한 경우는 그냥 해제 해주면 그만이다.```cvoid normal() { void *foo = malloc(4); free(foo);}``` 근데 문제는 다음과 같은 상황이다.```ctypedef struct _ {int *record[3];} Bucket; Bucket *bucket; void insertEntry() {int *foo = (int*)malloc(sizeof(int));*foo = 1;bucket->record[0] = foo;} void leak() {bucket = (Bucket*)malloc..
[python] time, date, datetime
[python] time, date, datetime
2017.11.12timeout https://pypi.python.org/pypi/timeout-decorator time ```python time.time() #UTC 기준 초단위 실수형 리턴 time.localtime() #초단위 실수형 리턴값을 연,월,시 등의 time.struct_time(투플)로 리턴 time.asctime() #time.struct_time을 보기 좋은 형태로 리턴 time.ctime() == time.asctime(time.localtime(time.time())) time.strftime('형식 포맷 코드', time.localtime(time.time())) time.sleep() ``` date ```python >>> import datetime >>> datetime.datetim..
[PHP] HTML tag escape
[PHP] HTML tag escape
2017.11.11HTML Tag escape```phphtmlentities( string $string, ENT_QUOTES, 'UTF-8');`````php htmlentities()``는 HTML Character Entity에 존재하는 모든 문자를 엔티티로 변환하기 때문에 의도하지 않은 문자까지 이스케이프 될 수 있다.( e.g., `` ! → !`` )그래서 사이트에서 EUC-KR을 사용하는 경우 ``php htmlentities()``를 사용하면 글자가 깨지기 때문에 ``php htmlspecialchars()``를 사용해야 하지만UTF-8 인코딩을 사용하는 경우 글자가 깨지지 않기 때문에 ``php htmlentities()``의 세번째 인자를 `` UTF-8``로 지정해서 사용하는 편이 더 안전하..
[PHP] File Upload
[PHP] File Upload
2017.11.11파일 업로드`` PUT``을 사용한 방식과 `` POST``를 사용한 방식 두 가지가 있다.파일 업로드와 관련된 php.ini 설정에 어긋나는 경우 ``php $_FILES``가 아예 비어있을 수 있으니 주의.``file_uploads = off````upload_tmp_dir````upload_max_filesize````POST_MAX_SIZE````memory_limit`` POST를 사용한 방식==CLIENT==```html```==SERVER==```php$_FILES["userfile"]["name"]...if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)){ ...```반드시 ``html 86f7e437faa5a7fce1..
[PHP] File IO
[PHP] File IO
2017.11.11write```php$fname = "open.txt";if ($fp = fopen($fname, "w")) { fwrite($fp, "test string\n"); // alias : fputs() fclose($fp);}``` 간결하게 사용하려면 이를 사용하는 것이 좋지만, ``php $fp``를 계속 열고 닫아야 하는 경우는 위를 사용하는게 더 빠르다.```phpfile_put_contents("newfile.txt", "contents\n"); // identical to calling fopen - fwrite - fclose``` read```php$fname = "open.txt";if ($fp = fopen($fname, "r")) { echo fread($fp, filesize($fnam..
[C] system V IPC
[C] system V IPC
2017.11.10이 글은 보호되어 있기 때문에 이것을 보려면 암호가 필요합니다.
[C] dll을 이용한 메모리(데이터) 공유
[C] dll을 이용한 메모리(데이터) 공유
2017.11.10전통적인 IPC method를 사용하지 않고 프로세스 간 데이터를 공유할 수 있는 방법. data_seg pragma dll injection 되어있을 때, injection 된 dll에 ``c #pragma data_seg()``가 있으면 해당 memory(data)에 접근해 exe나 타 dll이 가져다 쓸 수 있다. ```c #pragma comment(linker, "/SECTION:.SHARE, RWS") ``` section의 attribute를 바꾸는 코드인데(RWS) 굳이 안해도 된다. ```c #pragma data_seg(".SHARE") //section은 .SHARE든 뭐든 아무거나 지정하면 된다. 변수 선언 및 초기화 . . . #pragma data_seg() ```