본문 바로가기
반응형

분류 전체보기945

또 시험을 하고 있습니다. 깃허브 페이지를 이용한 정적 사이트 운영을 다시 해 보고 있습니다. https://seorenn.github.io/ Home Seorenn Home Page seorenn.github.io 이번엔 이전과는 다르게 블로그 포스트 기능까지 겸하고 있습니다. 따라서 이 티스토리 블로그에는 한동안 업데이트가 없을 가능성이 높습니다. 물론 닫거나 버릴 일은 절대 없을거구요. 그냥 그렇다는 소식입니다. 🙂 2020. 4. 22.
흥미로운 링크들 4월 3주차 지난주는 아이폰 SE 소식이 약간 핫 했네요.https://www.youtube.com/watch?v=SQIbeAk-bFA애플이 코로나19로 시끄러운 요즘 아주 조용하게 아이폰 SE를 내놨습니다. 55만 원부터 시작하는 가격대의 저렴이 (이게???) 버전입니다. 근데 저렴이 주제에 AP는 애플 답지 않게 최고급을 달았네요. 사이즈는 당연히 커져버렸기에 작은 사이즈를 원하시는 분들에겐 안타까운 소식이 되겠네요. 어쨌든 한국 애플 스토어에서도 바로 확인 가능합니다.https://poem23.com/3390 드디어 나온, 하지만 예상 그대로 나온 아이폰 SE, 그리고 아이폰12에 대한 루머들..소문만 잔뜩 돌았었던 아이폰 SE의 후속 모델이 동일한 이름으로 애플스토어를 통해 또 몰래 발표되었다. 최근 애플은 .. 2020. 4. 20.
흥미로운 링크들 4월 2주차 순수한 Swift 글로 시작하는 제 멋대로 지난 4월 2주차 소식입니다.https://pilgwon.github.io/post/episode-10-a-tale-of-two-flat-maps [번역] Point-Free #10 두 flatMap 이야기Point-Free #10 A Tale of Two Flat-Mapspilgwon.github.ioSwift의 flatMap에 대한 소개와 다양한 활용 방법을 소개한 글입니다. 끝내주는 글이네요. 🙂https://techit.kr/view/?no=20200407002655 세상을 구원할 코볼(COBOL) 프로그래머 구합니다! - 테크잇며칠전 4월 4일(현지시간) 미국 뉴저지 주정부가 긴급 구인 공지를 띄웠다. 주지사까지 나서서 주정부에게 닥친 재정 위기를 구.. 2020. 4. 13.
macOS에서 앱 별로 언어 설정하기 개인적인 사유로 macOS의 언어를 영어로 세팅하고 사용하고 있습니다. 아무래도 개발자라 객기 부리고 싶었기... 때문은 아니고 간혹 번역된 메시지가 더 이해하기 어려운 경우가 많다 보니 이렇게 쓸 수밖에 없는 상황이지요.그런데 시스템 언어를 영어로 세팅해 놓으면 약간의 문제가 있습니다. 사파리(Safari)가 영어 모드로 동작하기 때문에 다국어를 지원하는 사이트를 접속해도 영어로 웹페이지가 표시된다는 문제를 예로 들 수 있습니다. 만약 유튜브에서 구독 목록을 보는데 한국어 제작자가 올린 영상들 제목이 영어이면 많이 이상하고 불편하겠지요? 😢iOS는 시스템 언어와 별개로 앱 별 언어 설정이 가능한데 macOS는 왜 없나 생각만 하고 있었습니다. 그런데 눈을 크게 뜨니 macOS에서도 앱 별로 언어를 설.. 2020. 4. 11.
보안을 버리고 기능을 얻는다는 것? 이 글은 Command-E라는 로컬 서치 엔진의 등장을 보고 느낀 감정(?)을 정리한 글입니다. 결코 광고나 비난의 목적은 없음을 밝힙니다.안드로이드에서 느꼈던 그것(?)구글의 유명한 스마트폰 OS인 안드로이드의 과거는 지금과는 약간 달랐다. 당시 스마트폰 시장의 선두 주자였던 애플의 아이폰을 따라잡기 위해서였을까? 안드로이드는 아이폰이 제공하지 않는 수많은 기능들을 무장하고 있었다. 당연히 이러한 기능을 원하는 사용자들의 호평은 이어지기 마련이었다.하지만 이런 화려한 편리 기능의 이면을 나는 좀 심각하게 보고 있었다.안드로이드에서 제공하는 편리했던 기능들 중 특히 아이폰에선 제공하지 않는 기능들은 사용자의 개인적인 영역을 일부 열어서 가능했던 기능들이 많다. 대표적인 희생양(?)이 메시지함이다. 써드파.. 2020. 4. 9.
흥미로운 링크들 4월 1주차 이 블로그엔 약간 뜬금없지만, 이번에는 애플의 로직 프로 소식부터 시작합니다. 제가 이런 거 좋아했었거든요.https://9to5mac.com/2020/03/29/logic-pro-x-live-loops-mac/ Unreleased version of Logic Pro X surfaces on Apple’s website with Live Loops feature - 9to5MacApple is seemingly prepping a new version of Logic Pro X for the Mac with support for Live Loops. The feature has proven to be popular in Garageband for iPad, and now Apple is looking .. 2020. 4. 6.
Property List (Emacs Lisp) Property List(plist)아래처럼 key-value가 나열되는 형태를 프로퍼티 리스트라고 합니다.'(name "Conrad" age 20 phone "82-10-1234-5678" address "Earth, Milkyway, Laniakea Supercluster")일반적인 언어의 사전형(Dictionary) 타입과 비슷한 형태로 유추됩니다.키를 위 처럼 그냥 문자열로 해도 되고 콜론(:)으로 시작되는 심볼로 해도 관계는 없습니다. 하지만 백틱을 이용해 인용(quote)한 상태로 정의해버리면 나중에 액세스가 힘들어질 수도 있습니다.값 읽기값을 읽을 때는 plist-get을 사용합니다.(let ((plist '(name "Conrad" age 20 .. 2020. 3. 30.
Let과 Let* (Emacs Lisp) Emacs Lisp에서 이름이 닮은 let과 let*의 기능과 차이점을 간단히 정리해 봅시다.letlet은 Emacs Lisp에서 지역 변수(Local Variable)를 정의할 때 사용합니다.(let ((a 1) (b 2)) (+ a b));; => 3let 내부에는 progn 처럼 Lisp 코드를 나열할 수 있고 마지막 값이 반환 값처럼 동작합니다.생성된 변수는 지역 변수이기 때문에 let 리스트 외부에서는 동일한 이름의 변수에 접근할 수 없습니다.(let ((a 1) (b 2)) (+ a b))(+ a b);; => Symbol's value as variable is void: a각각의 변수는 각자의 영역(?)에서 생성되기 때문에 초기화 단계에서 서로를 참조할 수 없습니다.(.. 2020. 3. 30.
흥미로운 링크들 3월 4주차 지난주엔 (개인적으로) 정말 핫한 소식인 Swift 5.2 릴리즈 소식이 가장 눈에 띄었던 것 같습니다. 그래서 5.2 릴리즈 링크와 함께 시작합니다.https://swift.org/blog/swift-5-2-released/ Swift 5.2 Released!Swift 5.2 is now officially released! 🎉swift.orgiOS 13.4와 Xcode 11.4의 등장과 함께 Swift 5.2도 공식적으로 릴리즈 되었습니다. 저도 시간을 내서 관련 업데이트 내역을 정리해 봐야겠습니다. (사실 이미 정리했지만요😏)https://developer.apple.com/news/?id=03232020b Universal Purchase for Mac Apps Now Available - N.. 2020. 3. 30.
Filter와 Map (Emacs Lisp) Filter(require 'seq)(seq-filter (lambda (x) (= 0 (% x 2))) '(1 2 3 4 5 6));; => (2 4 6)seq 패키지에 들어있는 함수이기 때문에 상황에 따라 임포트를 해야할 수도 있습니다.Map(mapcar (lambda (x) (* x 2)) '(1 2 3 4 5));; => (2 4 6 8 10)물론 lambda 대신 일반적인 함수도 사용할 수 있습니다.Map(2)(mapc (lambda (x) (* x 2)) '(1 2 3 4 5));; => (1 2 3 4 5)이름 때문에 적어보긴 했는데, 사실 mapc는 Map이라고 하기엔 좀 그렇고, 오히려 Interation에 가깝습니다. 따라서 다른 언어의 for문과 비슷하게 리스트 원소를 이용.. 2020. 3. 30.
문자열 처리 함수들 (Emacs Lisp) 문자열 생성이어붙이기(concat "a" "b" "c");; => "abc"포매팅(Formatting)(format "%d + %d = %d" 10 20 30);; => "10 + 20 = 30"문자열 리스트나누기(Split)(split-string "my name is conrad" " ");; => ("my" "name" "is" "conrad")마지막 파라미터를 구분자로 이용해 입력된 문자열을 리스트로 나눠줍니다.합치기(Join)(string-join '("my" "name" "is" "conrad") " ");; => "my name is conrad"마지막 파라미터는 생략 가능합니다.기타문자열 비교(string= "abc" "abc");; => t문자열 검색(string-match "amp" ".. 2020. 3. 29.
나는 그저 영어 사전을 보고 싶었다 (macOS) 영어 문서를 읽을 때 모르는 단어의 의미를 찾기 위해 macOS에서 트랙패드 세 손가락 터치를 이용해 사전 보기를 종종 사용합니다. 참고로 이 기능은 포스터치 트랙패드가 달려있는 최신 맥북의 경우 기본적으로 한 손가락 깊은 터치로 설정되어 있는데, 트랙패드 설정으로 세 손가락 터치로 바꿀 수 있습니다.참고로 이 글은 팁 글이 아닐 수도 있습니다! 주의하세요! 🤪하여간 이 세손가락 터치로 사전을 볼 때 가끔 아래처럼 나오라는 사전은 안 나오고 시리 지식 같은 이상한 것이 튀어나올 때가 있습니다.왜 사전 내용이 나오지 않고 시리 지식 같은 당장은 필요하지 않은 내용이 나오는 걸까요? 불필요한 녀석들을 없애보자이 기능은 사실 사전과는 관계없고 Spotlight의 제안에 의해 나타나는 기능입니다. 따라서 이 .. 2020. 3. 28.
Swift 5.2 업데이트 내역 살펴보기 이 글은 스위프트 공식 블로그의 Swift 5.2 Released! 글에서 언급한 두 가지 업데이트된 기능을 살펴보는 글입니다. 이 외에도 사실 여러 업데이트가 있겠지만 아무래도 이게 핵심이니까 언급한 것이겠죠? 키 경로 표현식을 함수처럼 사용하기 SE-0249 Key Path Expressions as Functions 제안을 통해 Swift 5.2에 구현된 기능입니다. 이 기능은 함수나 클로져를 넘겨서 처리하는 다양한 기능에서 함수나 클로져 대신 키 경로(Key Path)를 넘기는 것으로 구현을 간단하게 할 수 있도록 해줍니다. 간단하게 위의 제안 내용의 예제를 인용해 보겠습니다. 우선 아래의 구조체 User를 선언했습니다. struct User { let email: String let isAdmi.. 2020. 3. 25.
iOS 13.4로 이제 재난 경보 스트레스를 덜 받을 수 있습니다 요즘 코로나19로 재난 경보 문자가 시도 때도 없이 날아듭니다. 특히 아이폰 사용자는 그 특유의 괴로운 경고 소리 때문에 스트레스가 이만저만이 아니었지요. 사실 이 알림에는 재난 비상경보뿐만 아니라 공공 안전 경보도 포함되어 있는데 이 둘을 구분하지 못하고 둘 다 재난 비상경보처럼 소리가 울리는 거였지요.오늘 업데이트가 뜬 iOS 13.4부터는 이 재난 문자에서 공공 안전 경보가 따로 분리가 되었으며 알림 사운드 또한 일반 알림으로 바뀌었습니다. 그리고 이를 받을 건지 말 건지를 설정할 수 있습니다.당연하지만 이 기능을 사용하려면 일단 iOS 13.4로 업그레이드부터 하셔야 합니다.업그레이드가 완료된 후 만약 공공 안전 경보를 끄고싶다면 아래와 같은 순차로 찾을 수 있습니다.우선 설정으로 들어갑니다.설정.. 2020. 3. 25.
리스트 다루기 (Emacs Lisp) 리스트 생성그냥 생성하기(list 1 2 3 4);; => (1 2 3 4)위의 경우가 가장 가독성은 좋은 코드이겠지만 보통은 아래처럼 백틱을 이용한 quote 구문을 많이 사용합니다.'(1 2 3 4);; => (1 2 3 4)순차적인 리스트 만들기(number-sequence 2 5);; => (2 3 4 5)굳이 정수가 아니라도 사용 가능하니 매뉴얼을 읽어봅시다.리스트에 추가하기제일 앞에 추가하기(cons 1 '(2 3 4));; => (1 2 3 4)리스트끼리 연결하기(append '(1 2 3) '(4 5 6));; => (1 2 3 4 5 6)리스트끼리 연결하기(2)(let ((some-list '(1 2 3))) (nconc some-list '(4)) some-list);; => (1 .. 2020. 3. 24.
Emacs 이 블로그의 Emacs Note 카테고리 글 일부를 별도로 링크로 정리하는 글입니다. 카테고리로 보기가 불편할 때 참고하기 위한 지극히 개인적인 용도입니다.Emacs Lisp리스트 다루기파일/디렉토리 경로와 관련된 Emacs Lisp 함수들문자열 처리 함수들Filter와 MapLet과 Let*Property ListEmacs Lisp Snippets파일 읽어서 내용 수정하고 저장하기Org Mode TipsOrg Mode 문서에 외부 이미지 넣기Org Mode 테이블 스프레드시트Org Publish로 익스포트 자동화하기 2020. 3. 24.
파일/디렉토리 경로와 관련된 Emacs Lisp 함수들 파일 경로나 디렉터리 경로를 다루는 Emacs Lisp 함수 몇 가지를 정리합니다.완벽한(?) 경로 구하기(expand-file-name "~/.emacs.d");; => "/Users/seorenn/.emacs.d"UNIX에서 홈 디렉터리($HOME)를 축약해서 표시하는 문자인 ~(Tilde, 물결 혹은 지렁이 무늬)를 원래 경로로 치환하는 데 주로 사용합니다.와일드카드를 이용해 특정 경로의 파일 목록 구하기(file-expand-wildcards "~/.emacs.d/*.el");; => ("~/.emacs.d/early-init.el" "~/.emacs.d/init.el" "~/.emacs.d/init.example.el")배치 작업을 위해 파일 목록을 구할 때 편하게 사용할.. 2020. 3. 23.
파일 읽어서 내용 수정하고 저장하기 (Emacs Lisp) Emacs Lisp을 이용해 특정 파일 내용을 읽어서 여기에 몇 가지 내용을 추가한 후 다른 파일로 저장하는 코드입니다.(with-temp-buffer (insert-file-contents "/foo/bar/file.md") (goto-char (point-min)) (insert "# New Header") (search-forward "Status: ") (insert "TODO") (goto-char (point-max)) (insert "# Footer") (write-file "/foo/bar/file-updated.md"))추가로 아래와 같은 함수를 참고할 수 있습니다.(erase-buffer) :: 버퍼 내용을 몽땅 삭제(delete-char N) :: N 개수만큼 글자를 삭.. 2020. 3. 23.
728x90
반응형