본문 바로가기
반응형

전체 글729

흥미로운 링크들 1월 4주차 새해 복 많이 받으세요. 이번 글은 개인 정보를 무지막지하게 빨아들이고 있는 무시무시한 최종 보스, 구글의 광고 타게팅과 관련된 내용부터 시작합니다. https://adssettings.google.com/authenticated?hl=ko 로그인 - Google 계정 하나의 계정으로 모든 Google 서비스를 Google 계정으로 로그인 accounts.google.com 구글은 겉으로 티를 내고 있지 않을 뿐이지 페이스북 처럼 여러분의 행동을 이용해 여러분이 어떤 사람인지 파악하고 있습니다. 특히 이를 개인 광고 최적화를 위해서 주로 사용하고 있지요. 이 링크에서 구글이 여러분을 어떻게 인식하고 있는지 알 수 있습니다. 그리고 저는 미식축구를 좋아하지 않아요. 구글 바보. https://tldr.sh.. 2020. 1. 27.
약간은 더 현실적인 Combine 예제들 컴바인에 대한 여러 개념적인 이야기들을 써오긴 했는데 역시 개념 설명 글은 와 닿는 것이 없는 것 같습니다. 아무래도 현실적으로 현업에서 쓸 만한 예제는 아니니깐요. 그래서 이번에는 조금은 더 실용성이 있어 보이는 컴바인 예제 투성이라는 주제로 글을 써봅니다. 기본 자료구조의 퍼블리셔 스위프트(Swift)는 다채로운 자료구조를 제공합니다. 예를 들어 기본 타입도 있겠지만 배열(array)이나 사전형(dictionary) 같은 복잡한 자료구조도 있지요. 대표적으로 Sequence.publisher를 살펴보겠습니다. 이 타입은 보통 배열(array) 혹은 리스트(list)라고도 불리며 굉장히 자주 쓰이는 타입이지요? let publisher = [1, 2, 3, 4, 5].publisher publisher.. 2020. 1. 27.
Combine 이벤트 체인이 왜 필요할까? 앞서 작성한 글에서 Combine Framework의 기본 개념인 퍼블리셔(Publisher)와 서브스크라이버(Subscriber), 그리고 서브젝트(Subject)에 대해 간략히 살펴봤습니다. 이번 글에서는 왜 이런 것을 이용해 프로그래밍을 하는지에 대한 이유를 정리해보고자 합니다. 사실 잘 설명할 수 있을지는 의문이긴 합니다만, 개인적으로도 글로 정리하는 것이 큰 공부가 되기에 억지로(?) 글을 써 봅니다. 전통적인 예제 그냥 다짜고짜 예제부터 시작해 봅시다. var value = 1 if value % 2 == 0 { print("\(value) is even!") } 이 코드의 의도는 value의 값이 짝수인지 판단하는 것입니다. 짝수이면 해당 값을 콘솔에 찍지요. 실행시키면 당연하게도 1은 짝수.. 2020. 1. 23.
어쩌다 가끔 쓸 일이 생기는 인코딩 변환기 iconv 윈도가 아닌 OS를 쓰다 보면 가끔 한글이 깨지는 문제를 겪을 때가 있습니다. 예를 들어 맥에서 작성한 파일을 윈도에서 열어보면 깨져서 보인다거나 윈도에서 작성한 텍스트를 맥에서 열어보면 깨진다거나 등등 말이지요. 물론 이는 전적으로 아직도 구식 한글셋을 사용하는 윈도의 잘못(?)으로 봐야겠지만 어쨌든 한국에서는 윈도 사용자가 압도적으로 많으니 이에 맞춰야겠지요. 이 경우 사용할 수 있는 리눅스나 macOS 빌트인 도구로 iconv를 사용할 수 있습니다. 별도의 GUI는 없는 CLI 유틸리티입니다. Convert UTF-8 to euc-kr(cp949) UTF-8으로 작성된 특정 텍스트 파일을 euc-kr(혹은 CP949 등 윈도에서 사용하는 한글 인코딩)로 바꾸려면 아래와 같은 식으로 이용할 수 있습니.. 2020. 1. 21.
흥미로운 링크들 1월 3주차 이번엔 개발 관련 소식들이 좀 있네요. https://github.com/swift-embedded/swift-embedded swift-embedded/swift-embedded Swift for Embedded Systems ✨. Contribute to swift-embedded/swift-embedded development by creating an account on GitHub. github.com Swift는 바이너리 코드로 컴파일하는 언어입니다. 그렇다면 임베디드 분야에서 못 쓸 이유가 없지요. 네~ 임베디드 스위프트입니다. https://sungdoo.dev/programming/start-ios-development-with-offical-docs/ 공식문서 만으로 iOS 개발 배우기.. 2020. 1. 20.
Combine Framework는 어떤 녀석일까요? Combine Framework는 SwiftUI가 소개되면서 함께 소개된 정체 불며의 이벤트 기반 데이터 흐름 처리 프레임워크입니다. 근데 이 설명은 사실 멋대로 붙인 거고, 실제론 Rx의 애플판이라는 말이 더 맞다고는 하는데 저는 Rx도 몰라요. 그렇다면 바닥부터 공부해야겠네요... 아아... Combine Framework Combine 은 이벤트 처리 오퍼레이터를 조합하여 만든 비동기 이벤트 처리 프레임워크입니다. 네 뭔 소리인지 모르겠습니다. 어쨌든 앞서 이야기 했다시피 보통은 Rx라는 것이 사용하던 반응형(Reactive) 프로그래밍 라이브러리라고 설명합니다. 뭐 이렇게 이야기 해 봤자 의미 없으니 막무가내로 예제 코드부터 시작합시다. import Combine 네. Combine 은 프레임워크.. 2020. 1. 15.
Org Mode 문서에 외부 이미지 넣기 Org Mode 문서에 이미지를 넣기 위해서는 단순히 이미지 파일을 준비해놓고 아래처럼 링크 문법으로 이미지 파일의 경로를 적어주면 됩니다. [[./foo/bar/image.png]] 하지만 외부 이미지, 즉 다른 사이트에 있는 이미지를 문서에 첨부하려는 경우는 좀 다릅니다. 예를 들어 아래의 경우를 봅시다. [[https://foo.bar/img/image.png]] 위 링크는 과연 이미지가 나올까요? 아니면 링크가 걸릴까요? 물론 평범하게 URL 링크가 걸리게 됩니다. 따라서 당연하게도 익스포트 한 결과물에는 이미지가 나오지 않지요. 자 그러면 이 문제를 어떻게 해결하면 좋을까요? 커스텀 링크 Org Mode에는 친절하게도 org-add-link-type 함수를 이용해 커스텀 링크를 추가하는 방법을 .. 2020. 1. 14.
흥미로운 링크들 1월 2주차 링크 모음 글은 매주 월요일 발행을 목표로 쓰고 있는데, 지난 글은 1월 2일을 월요일로 착각하는 바람에 너무 빨리 올려버렸습니다. 좀 부끄럽지만 😏 다시 내리거나 하지는 않고 그냥 그대로 이어가기로 했습니다. 그래서 이번 글은 좀 양이 많아질 수도 있겠네요. 어쨌든 시작합니다. https://pythonclock.org Python 2.7 Countdown Python 2.7 will retire in 2020. Learn more and see the countdown here. pythonclock.org 사실 이 링크는 별 의미가 없을지도 모릅니다. 왜냐하면 이미 소임을 다하고 가사상태(?)에 돌입했기 때문이지요. Python 2.7의 남은 퇴출 시간을 표시하던 이 사이트의 카운터가 2020년이 .. 2020. 1. 13.
Org Publish가 이맥스를 자꾸 얼리고 있어요 앞서 Org Publish에 관한 글을 썼습니다. 매우 편하게 Org Mode 글들을 자동으로 익스포트 해주는 고맙고 편한 도구이지요. 그런데 글들을 익스포트 하기 위해 org-publish-all 등의 함수를 사용하면 간혹 이맥스가 꽁꽁 얼어버립니다. 반응도 없이 마치 죽은 것처럼 말이죠. 이 글은 이 문제를 해결하기 위한 사투를 간단하게(?) 정리하는 글입니다. 긴 글을 읽고 싶지 않으시다면 가장 마지막의 '대안' 항목을 읽어보세요. 문제를 찾아보려 했으나 증상을 정확히 정의하자면, 글을 편집하고 나서 org-publish 혹은 org-publisha-all 함수를 사용해 업데이트 한 글을 자동으로 퍼블리시를 시도하는데 이때 특정 확률로 이맥스가 멈춰 버리고 커서가 바람개비 뺑뺑이로 표시되고 CPU .. 2020. 1. 10.
Org Publish로 익스포트 자동화하기 Org Publish는 이맥스(Emacs)에서 Org Mode로 작성된 .org 문서들로 정적 웹사이트를 만들 수 있게 해주는 도구입니다. 쉽게 말해서 특정 디렉터리 안의 .org 파일들을 .html 파일로 익스포트 해서 원하는 디렉터리로 복사해 줍니다. 그리고 각종 css나 스크립트, 이미지 등의 파일도 자동으로 복사하는 등의 기능을 제공합니다. 제 관리가 안 되는 😭 깃헙 페이지도 이 Org Publish를 이용해 만들었습니다. 시작하기 설명을 시작하기에 앞서 아래와 같은 디렉터리에서 글을 쓴다고 가정합니다. ~/org/ static/ style.css img/ someimage.jpg index.org foobar.org ... 이 가정에서는 ~/org 라는 디렉토리에서 .org 파일로 글을 작성합.. 2020. 1. 9.
파이썬의 새로운 의존성 관리자 Poetry Poetry는 파이썬(Python)용 패키징 겸 의존성 관리를 도와주는 도구입니다. pip와 virtualenv를 합쳐놓은 듯한 pyenv와 비슷하게 생각되는 도구네요. 최근에는 1.0으로 버전이 올라가면서 이제 쓸만해진 것 아닌가 하는 생각이 듭니다. 공식 홈페이지: https://python-poetry.org 굳이 pip나 virtualenv와 다른 점이 뭐가 있냐면 좀 더 통일화된 관리 방식을 제공해 준다는 점이 차이가 있으려나요? 실제로 poetry는 완전히 새로운 것이 아니라 기존에 제공되던 pip나 pipx, virtualenv 등을 그대로 사용하는 관리 방식을 제공합니다. 대신 npm이나 Cocoapods처럼 하나의 스펙 파일로 패키지 및 프로젝트 엔트리 포인트 등을 관리할 수 있게 해 준.. 2020. 1. 7.
맥용 잠자기 방지 도구 caffeinate 가끔 맥이 잠자기에 빠지지 않게 해야 할 경우가 있습니다. 예를 들어 개발 서버를 띄워 놓았다거나 등등 말이죠. 이럴 때는 다양한 전용 앱을 활용할 수도 있습니다만, 굳이 별도의 앱을 설치할 필요 없이 터미널에서 간단한 셸 커맨드 만으로 잠자기에 빠지지 않게 할 수도 있습니다. 바로 caffeinate 라는 macOS 전용 CLI 도구입니다. 사용법 잠자기 방지 터미널에서 caffeinate를 그냥 실행하면 맥이 잠자기에 빠지지 않게 됩니다. caffeinate 이 유틸리티는 실행된 상태에서 아무런 변화 없이 가만히 돌아가기만 합니다. 따라서 종료시킬 때는 ^C (Ctrl+C) 키를 눌러서 빠져나오면 됩니다. 모니터가 꺼지지 않게 막기 잠자기와 디스플레이 모니터가 꺼지는 것은 직접적인 관계가 없기 때문에.. 2020. 1. 6.
흥미로운 링크들 12월 5주차 ~ 1월 1주차 연말연시가 껴있다 보니 다들 바쁘신가 봅니다 😅 적지만 흥미 있었던 사이트 링크를 정리해 봅니다. https://www.cockroachlabs.com/blog/go-file-size/ Why are my Go executable files so large? | Cockroach Labs This blog post was originally published on the author's personal blog. Overview I built some tooling to extract details about the contents of a Go executable fi www.cockroachlabs.com 왜 Go로 빌드한 실행파일은 크기가 클까요? 뭐 예상은 되겠지만 당연히 뭔가를 많이 집어넣기 때.. 2020. 1. 2.
흥미로운 링크들 12월 4주차 무의미한 대표 이미지로 시작하는 2019년 링크집(?)의 거의 마지막 글이 되겠네요. 시작합니다. http://jeonghwan-kim.github.io/series/2019/12/10/frontend-dev-env-webpack-basic.html 프론트엔드 개발환경의 이해: 웹팩(기본) 1. 배경 jeonghwan-kim.github.io 웹팩(Webpack)이 자바스크립트를 하나로 뭉쳐주는 요상한(?) 놈이라는 것은 알고 있었는데, 정작 이런 게 왜 필요했었는지를 몰랐었습니다. 그리고 이 글로 왜 이런 '다른 언어에서 보면 매우 이상한 도구'가 나오게 되었는지 파악하게 되었습니다. 그나저나 기본이라는데 내용이 엄청 많네요. https://hacks.mozilla.org/2019/04/pyodide-.. 2019. 12. 30.
Doom Emacs에서 Emojify 사용해보기 이맥스에서 글을 쓰다 보면 종종 이모티콘을 입력하고 싶은데 막막할 때가 있습니다. 맥의 경우 Command+Control+Space 키를 이용해 이모티콘을 쉽게 검색해서 입력할 수 있는데 이맥스는 이 키 입력을 몽땅 먹어버리기 때문이지요. (윈도는 어떤지 모릅니다만...) 그래서 정보를 찾아보니 Emojify라는 확장이 있었습니다. 이맥스에서 이모티콘(에모지)를 표시하거나 입력하는 것을 도와주는 확장이라니 딱 맞네요. 설치, 설정 및 사용하기 우선 설치하기 위해서 packages.el 파일을 열어서 아래 한 줄을 넣습니다. (package! emojify) 이후 터미널에서 아래 커맨드를 입력하여 패키지가 설치될 수 있도록 합니다. ~/.emacs.d/bin/doom refresh 그 다음 아래 설정을 c.. 2019. 12. 29.
흥미로운 링크들 12월 3주차 이번 주엔 그다지 재미있는 소식이 없었네요. 그래서 땜빵(?)을 몇 개 넣었습니다. https://csslayout.io CSS Layout Starting with the most basic part, you can customize easily for each specific need. By composing them, you can have any possible layout that exists in the real life. csslayout.io 레이아웃 CSS 코드의 66가지 예제를 볼 수 있습니다. 사이트나 페이지의 전반적인 레이아웃을 잡을 때 참고하면 좋을 것 같습니다. https://github.com/docker-slim/docker-slim docker-slim/docker-slim.. 2019. 12. 23.
728x90
반응형