Programmer/Computer Science
-
원자적(atomic) 연산과 순서(ordering) 제약Programmer/Computer Science 2021. 7. 12. 12:37
스푼라디오에 재직하던 시절 작성한 "원자적 연산과 순서 제약"에 관한 글을 소개한다. 멀티코어, 멀티쓰레드 환경의 고성능 병렬(parallel) 프로그래밍에는 여러가지 함정이 있다. 그중에 하나는 프로그래머의 의도와는 상관없는 시스템의 최적화이다. 이 글은 시스템 최적화에 프로그래머의 의도를 전달하는 두가지 기법, 원자적(atomic) 연산과 순서(ordering) 제약을 소개한다. https://medium.com/spoontech/원자적-atomic-연산과-순서-ordering-제약-ed25e39c4646 전체 내용은 원문으로 확인하자.
-
여러가지 데이터 표현 양식 비교Programmer/Computer Science 2020. 3. 11. 11:11
XML - 과거의 찬란했던 데이터 교환 양식(라떼는 말이야~). 지금은 JSON에 밀려... XML XML은 EXtensible Markup Language의 약어로써, 데이타를 저장하거나 주고받는데 사용하는 마크업(markup) 언어이다. 특징과 장단점 뛰어난 호환성을 제공한다. 많은 프로그램 언어와 웹, 소프트웨어에서 XML을.. unipro.tistory.com 유연함 시스템이 읽고/쓰기 쉬움 유효성 검증(Validation) 주석 IDE의 지원 사람이 읽고 쓰기 어려움 장황함 유연하고 시스템 친화적이며 데이터 검증에 매우 강력하다. 따라서, 엔터프라이즈에서는 여전히 강한 면모가 있다. 하지만, 개발과 디버깅은 사람이 한다. 사람이 읽고 쓰기 어려다는 것은 치명적인 단점이다. JSON - "왕위를 ..
-
JSONProgrammer/Computer Science 2017. 2. 1. 12:18
JSON은 XML에 비해 상대적으로 가벼운 데이터 교환 형식이다. C 언어의 영향을 받은 언어의 구조체/배열 형식과 유사하여 프로그래머에게 매우 친숙한 형태이다. 특히, 고대의 JavaScript의 일부에 토대로 두고 있어서 JavaScript와 그 구조가 매우 유사하다. XML과 많이 비교되는데 공통점으로 뛰어난 호환성을 제공한다. 많은 프로그램 언어와 웹, 소프트웨어에서 JSON을 지원한다. 텍스트 파일로서 사람이 읽을 수 있다. 이는 디버깅에 매우 효과적이다. 텍스트 파일임으로 이진 데이타보다 더 많은 용량을 차지한다. 다른점으로는 상대적으로 가벼워서 구조가 간단한 데이타에 사용하기에는 적합하다. 반면, DTD나 XML 스키마와 같이 언어를 정의하고 확장, 검사하는 도구가 부족하다. 메타데이터와 네..
-
정규 표현식의 분류에 따른 차이점과 올바른 사용법Programmer/Computer Science 2015. 1. 19. 15:54
정규 표현식은 개발이나 운영에 중요한 도구다. 매뉴얼이 없어도 자유자재로 사용할 필요가 있다. 이 글은 유사성을 묶어서 알아야 하는 내용을 줄이고, 각 분류 간의 차이점을 드러내어 지식을 확장하는 방법을 사용하였다. 분류는 기본 정규식, 확장 정규식, 펄 호환 정규식(PCRE, Perl-Compatible Regular Expressions), 이맥스 정규식으로 나누어 살펴보겠다. 표준 정규식 정규 표현식 의미 . 임의의 한 문자 [] 문자 클래스 [^] 부정 문자 클래스. 문자 클래스 안의 문자를 제외한 나머지를 선택 ^ 문자열이나 행의 시작 $ 문자열이나 행의 끝 * 앞 요소를 0회 이상 {n} 앞 요소가 n개 {n,} 앞 요소가 n개 이상 {n,m} 앞 요소가 n개 이상, m개 이하 () 하위식. ..
-
국내에서 IPv6 주소를 접하기 어려운 이유Programmer/Computer Science 2014. 3. 14. 15:51
IPv4의 주소 고갈 문제, IPv6의 전환, IPv6와 멀티미디어 데이타의 증가 등의 얘기가 나온지 꽤 오래되었다. 사실 이미 IANA(Internet Assigned Numbers Authority)에서의 할당은 더 이상 없는 상태다. 관련 종사자들은 이미 “왜?”라는 필요성에 대해서는 공감대의 형성은 지났고 지금은 “어떻게?”라는 IPv6로의 전환 방법에 대해서 연구하고 있다. 그런데, 인터넷 콘텐트 전송 서비스를 개발하고 서비스하는 사람으로써 IPv6을 전혀 체감하지 못하고 있다. 개똥이네 금송아지 얘기를 듣는 기분이다. 뭔가 굉장한 것이 있다고는 하는데, 한번도 본적이 없다. 그러면서 개똥이는 자기네 금송아지를 볼 준비를 하라한다. 즉, 실제 서비스 운영에서는 그것의 그림자도 본적이 없는데, 개..
-
GLib의 GHashTable로 알아보는 해시 테이블의 충동 해결 방법Programmer/Computer Science 2013. 9. 17. 11:19
GLib에서 제공하는 해시 테이블(hash table)의 구현인 GHashTable의 충동을 해결하는 알고리즘을 살펴보자. GHashTable은 Open Addressing 방법 중에 Quadratic Probing 알고리즘을 사용하여 충동을 해결한다. 해시의 연산-삽입(Insert), 검색(Lookup), 삭제(Remove)-을 할 때는, 주어진 키에 해당하는 적절한 해시 테이블의 인덱스 번호를 먼저 구해야 한다. GHashTable에서는 g_hash_table_lookup_node() 함수가 이를 수행한다. 이 함수에서 해시키의 충동 해결 알고리즘이 구현되어 있다. static inline guint g_hash_table_lookup_node (GHashTable *hash_table, gconst..
-
GLib의 GTree로 알아보는 균형 이진 트리 알고리즘Programmer/Computer Science 2013. 8. 20. 17:31
GLib에서 제공하는 균형 이진 트리(balanced binary tree)의 구현인 GTree의 알고리즘을 살펴보자. GTree는 AVL tree (Adelson-Velskii and Landis' tree) 알고리즘을 사용하였다. 우선 균형 상태에 대한 정의부터 해야하겠다. 트리 A가 균형 상태라고 하면A의 하위 트리(subtree) A(L)과 A(R)이 균형 상태이고A(L)과 A(R)의 높이의 차이가 1 이하이다. abs(height(A(L)) - height(A(R))) balance left->balance left->balance > 0 LR node->balance > 1 node->right->balance >= 0 RR node->right->balance < 0 RL..
-
XML 스키마Programmer/Computer Science 2012. 12. 28. 10:21
XML 스키마는 XML 문서의 구조화시키는 방법을 제공한다. XML 스키마는 DTD의 제한 사항을 개선한 차세대 문서 구조화 기법이다. XML 스키마의 특징 XML로 작성되었다.XML 네임스페이스와 데이터 타입을 지원한다.확장성을 가졌다. 요소 XML 스키마 문서의 최상의 요소이다.예 targetNamespace - 작성하는 스키마 문서 내에서 사용자가 임의로 정의하는 문서 요소(요소, 속성 등)이 위치할 네임스페이스를 나타내기 위해서 사용한다.attributeFormDefault, elementFormDefault - XML 문서 내의 요소와 속성이 한정되는 형태를 지정한다.qualified - 요소 또는 속성이 네임스페이스 URI와 결합된다. 일반적으로 이것이 기본값이다. unqualified - 요..