전체 글 256

[OCaml] Variadic Function 구현하기

Function currying에 대해서 공부한 이후, OCaml에서 Variadic function을 구현할 수 있지 않을까?라는 의문이 들었다. Variadic function은 매개변수를 임의의 개수로 받을 수 있는 함수다. 예를 들면 C언어에서 printf 함수가 대표적인 variadic function이다. #include #include int add_em_up (int count,...) { va_list ap; int i, sum; va_start (ap, count); /* Initialize the argument list. */ sum = 0; for (i = 0; i < count; i++) sum += va_arg (ap, int); /* Get the next argument v..

프로그래밍 2020.01.11

[LaTeX] Tistory에서 LaTeX 수식 입력하는 방법 (MathJax)

세상 정말 좋아졌다는 생각이 든다. MathJax라는 라이브러리인데, 클라이언트 브라우저에서 LaTeX 구문을 해석하여 수식을 Rendering 해준다. 우선 스킨 편집 메뉴에서 다음 코드를 넣으면 된다 (홈페이지 참조). Inline 수식은 \\( \LaTeX \\)처럼 입력할 수 있다. 한 줄을 차지하는 수식은 \\[ \LaTeX \\]을 입력하면 된다. 예시 Inline 수식은 \(\LaTeX\)처럼 입력할 수 있다. \[\LaTeX\] \[ \int_D ({\nabla\cdot} F)dV=\int_{\partial D} F\cdot ndS \] 모바일에서 긴 수식이 제대로 표시되지 않을 때 html, body { margin: 0; padding: 0; background-color: #f1f1f..

컴퓨터 일반 2020.01.11

공부를 효율적으로 하는 방법

최근에 공부 방법에 대해 다시 생각해보게 되는 계기가 생겼다. 교육 전문가는 아니지만 이때까지 공부를 하면서 느꼈던 점이다. 구체적인 테크닉은 아니고 다소 원론적인 이야기다. 골자는 다음과 같다. 균형 잡힌 입력-처리-출력 (Balanced Input-Process-Output) 메타 인지 (Meta Recognition) 심성 모형 형성 (Mental Model Creation) 공부에 대해서 잘못 알려진 상식이 있다면, 많이 반복하여 익숙해지면 이해가 잘 된다고 생각하는 것이다. 실제로는 얼마나 많이 반복하는가는 중요하지 않다. 내가 알고 있는 사전 지식(prior knowledge)을 바탕으로 어떤 개념을 정확하게 이해를 한 다음에 필요하다면 반복을 하는 것이다. 이해 없는 반복은 기억에도 오래 남..

일상 & 단상 2020.01.11

[원노트] Microsoft OneNote 중복 페이지 제거

옛날에 필요해서 만들었던 툴인데, 마이크로소프트 원노트의 중복 페이지들을 찾아서 제거해주는 툴입니다. 원노트의 중복 페이지들은 기존 파일 중복 제거 프로그램으로는 해결할 수 없습니다. 중복 페이지들이 발생하는 이유는 여러 가지가 있겠지만 주로 동기화 과정에서 뭔가 잘못된 경우에 발생합니다. 혹은 예전에 백업해놓은 원노트 파일들을 합치려면 당연히 중복 페이지들이 생기겠죠? 프로그램 인터페이스는 화려한 편은 아니지만... Scan duplicate를 누르면 현재 원노트에서 열려 있는 노트북을 대상으로 중복된 페이지를 검색합니다. 파일 시스템을 직접 검색하는 것은 아니고, 원노트가 제공하는 API를 바탕으로 중복 페이지들을 찾아내게 됩니다. 팁! 원노트에서 중복 제거가 필요한 노트북만 열어 놓으면 그 노트북에..

컴퓨터 일반 2020.01.10

텍스트 인코딩 더 이상 헷갈리지 말자 (euc-kr, utf-8, ucs-2, 유니코드?)

너무 길어져서 아예 글을 따로 쓰게 되었습니다. 사실 인코딩 문제는 근본적으로 우리가 "글자"를 어떻게 컴퓨터가 이해하는 "숫자"로 나타내는가에 관한 것입니다. 기본적으로 "안녕하세요!!"라는 문자열은 "안" + "녕" + "하" + "세" + "요" + "!" + "!" 각 글자들을 일렬로 배치한 것이고요. 인코딩(encoding)이란 각 글자들을 어떤 방식으로 컴퓨터가 이해하는 바이트로 대응(mapping)시켰는지 규칙을 의미합니다. 만약 규칙을 잘못 적용하면 엉뚱한 글자들을 보게 되겠죠? 과거 영어권 나라에서는 7 bit (0 ~ 127)만 가지고도 알파벳을 "대강" 나타낼 수 있었습니다. ASCII 코드표를 보시면 a~z, A~Z, 0~9 등등을 모두 넣어도 충분했습니다. 나머지 128 ~ 255..

컴퓨터 일반 2020.01.10

자막 파일/텍스트 파일 한글 깨질 때 (EUC-KR -> UTF-8 변환)

안녕하세요. 가끔 자막이나 한글 텍스트 파일을 열면 위와 같이 한글이 깨져서 표시되곤 하는데요. 이는 문서가 예전 방식인 EUC-KR으로 인코딩 되었기 때문입니다. 이를 해결하기 위한 방법으로는 (1) 현존하는 모든 다국어(emoji 포함)를 지원하는 유니코드 (UTF-8) 형식으로 변환하거나 (2) 프로그램이나 OS의 인코딩 설정을 EUC-KR으로 맞추는 방법들이 있습니다. 그러나 EUC-KR은 다른 다국어 인코딩 방식과 잘 호환이 되지 않습니다. 텍스트 인코딩과 관련해서는 https://folivora.tistory.com/19에서 조금 더 자세하게 설명을 해보았습니다. 리눅스나 맥 환경에서는 iconv 명령어로 텍스트 인코딩을 변환할 수 있는데요. $ cat | iconv -f euc-kr -t u..

컴퓨터 일반 2020.01.10