본문 바로가기

설명30

[PHP] array_walk_recursive와 배열 순회 탐색 소스코드 공유 array_walk_recursive, 배열 순회 탐색, 전체 경로 찾기 array_walk_recursive - 전체 배열을 포인터 위치와 상관없이 탐색한다. - 모든 요소에 콜백 함수를 사용할 수 있다. - 사용자가 정의한 함수를 재귀적 사용이 가능하다. 쉽게 얘기하면 인자로 주어진 배열을 구성하는 모든 요소의 마지막 key/value를 찾아내 준다. 그리고 각 요소에 대한 함수를 정의할 수 있다. nested json format처럼 구조적으로 단순 패턴화 할 수 없는 경우 사용된다. array_walk_recursive 포맷 array_walk_recursive(array|object &$array, callable $callback, mixed $arg = null): bool array_wal.. 2021. 12. 28.
[PHP] json_decode 설명과 예제 json_decode - json string을 data로 변환한다. string to object, array. 아래는 json string을 json object와 array로 decode 하는 예제이다. object(stdClass)#1 (3) { ["name"]=> string(6) "muabow" ["url"]=> string(26) "https://muabow.tistory.com" ["desc"]=> string(16) "한글과 공백" } muabow https://muabow.tistory.com array(3) { ["name"]=> string(6) "muabow" ["url"]=> string(26) "https://muabow.tistory.com" ["desc"]=> string(.. 2021. 12. 28.
[PHP] json_encode 설명과 예제 json_encode - data를 json string 으로 변환한다. array, object to json string. 아래는 array 를 json string 으로 encode 하는 예제이다. string(95) "{"name":"muabow","url":"https:\/\/muabow.tistory.com","desc":"\ud55c\uae00\uacfc \uacf5\ubc31"}" string으로 변환된 것을 확인 할 수있지만 역슬러시(\)가 포함되고 한글은 유니코드로 변경된 것을 확인할 수 있다. 특히 가장 중요한 출력 포맷을 지키지 않고 한줄로 string화 하여 출력되는데 우리는 이러한 문제를 encode flag 를 통해 해결할 수 있다. json_eoncde 포맷 json_enco.. 2021. 12. 27.
[PHP] shell_exec() 한글이 포함된 svn 이 동작하지 않을 때 해결 방안 shell_exec() 로 한글 경로가 포함된 svn 이 동작하지 않을 때 결론부터 얘기하면 shell의 locale 문제였다. shell에서 실행하면 shell에 설정된 locale에 따라 url encode 가 동작하니 당연히 정상으로 동작하고, web을 통해 실행하면 shell_exe()의 기본 환경(LC_CTYPE=C) 때문에 한글 경로가 오류 나는 것이었다. shell - locale 실행 결과 interm@interm-virtual-machine:~/www/public_html$ locale LANG=en_US.UTF-8 LANGUAGE= LC_CTYPE="en_US.UTF-8" LC_NUMERIC=ko_KR.UTF-8 LC_TIME=ko_KR.UTF-8 LC_COLLATE="en_US.UTF.. 2021. 12. 27.
[javascript] jquery multiple select 예제와 소스코드 공유 jquery multiple select jquery를 사용할 때 가장 많이 사용하는 기능은 아마 event bind(e.g. click, change..)와 selector 가 아닐까 싶다. 특히 다중의 attribute를 선택할 때 빈번하게 사용하는 기능의 샘플을 정리해본다. name_1 name_2 name_3 id_1 class_1 selector는 id(#)와 class(.)를 키워드로 지정할 수 있고 그 외의 태그에는 name을 사용하면 된다. 더욱 자세한 설명은 jquery api 문서를 참고하면 도움이 된다. https://api.jquery.com/category/selectors/ Selectors | jQuery API Documentation Select all elements th.. 2021. 12. 26.
[javascript] jquery ajax 예제와 소스코드 공유 jquery ajax 소스 코드 $.ajax({ type: "POST", url: _target, data: _args, async: false, success: function(data) { if( data != null ) { result = data; } } }); jquery ajax를 POST 타입, sync ajax를 구성하여 data를 송수신하는 함수이다. ajax 내 파라미터의 추가/삭제 그리고 파라미터 값의 수정을 통해 sync/async 또는 error handle 및 success 외 행동들도 정의할 수 있다. 예제 코드 class CommonFunc { constructor() {} makeArgs(_key, _value) { var args = "&" + _key + "=" + _.. 2021. 12. 26.
[C/C++] explode, split 구현 방법과 소스코드 공유 explode, split implode 함수의 반대 동작인 문장의 분리를 하는 explode 역시 vector를 사용해 PHP와 같은 방식으로 구현해보았다. https://github.com/muabow/home/tree/main/src/cpp/explode GitHub - muabow/home: C/C++, PHP, GO source/library C/C++, PHP, GO source/library. Contribute to muabow/home development by creating an account on GitHub. github.com 소스코드 내용 #include #include using namespace std; vector explode(const string _delimiter,.. 2021. 12. 24.
[C/C++] signal handler library 활용과 소스코드 공유 signal handler library C/C++ 에는 signal.h 를 사용한 signal 함수가 존재한다. 시스템 인터럽트 외 여러 상황에 사용할 수 있기 때문에 필수로 시그널 처리를 하게 된다. 가장 쉬운 예를 들면 ctrl + c를 통해 SIGINT를 발생시켜 프로그램을 종료할 때 메모리 반환을 하여 메모리 누수를 막거나 소켓 또는 IO 핸들러들의 상태를 닫아주어 graceful 한 종료를 해야 할 때 사용된다. 수많은 프로그램을 작성하면서 번번이 signal에 대한 정의와 시그널 처리에 따른 콜백 함수 등을 작성하기 귀찮아 라이브러리로 작성하였고 이를 공유한다. https://github.com/muabow/home/tree/main/library/cpp/lib_signal GitHub - .. 2021. 12. 24.