오늘은 Mac이 AI PC로서 왜 최고인지에 대해 이야기해보려고 합니다. 여러분도 알다시피, 인공지능은 우리 삶의 많은 부분을 변화시키고 있죠. 그리고 이러한 변화를 이끌어가는 데 있어서 Mac 컴퓨터가 중요한 역할을 하고 있습니다.
강력한 뉴럴 엔진
Mac 컴퓨터는 매년 더 발전하는 신경망 엔진(Neural Engine)을 갖추고 있어서, 강력한 AI PC로 사용할 수 있습니다. Apple의 M3 칩 가족은 세 년 전 M1 칩과 비교하여 60% 더 빠른 신경망 엔진을 갖추고 있으며, 이전의 M2 칩과 비교하면 15% 더 빠릅니다.
메모리 관리
AI 작업에는 많은 메모리(RAM)와 그래픽 메모리(VRAM)가 필요합니다. Mac 컴퓨터는 이러한 작업에 대한 메모리 관리를 뛰어나게 잘 합니다. Apple Silicon Mac은 중앙 처리 장치(CPU)와 그래픽 처리 장치(GPU) 코어 간에 공유되는 단일 메모리를 사용하지만, Windows PC보다 메모리 관리가 더 좋습니다.
서드파티 AI 앱 지원
Mac은 다양한 온라인 AI 도구를 실행할 수 있습니다. 예를 들어, LM Studio를 Mac에서 사용하여 주요 언어 모델(LLM)을 실행할 수 있습니다. Llama 2도 다양한 방법으로 로컬로 실행될 수 있습니다. 오디오와 동영상 AI 소프트웨어 앱, 같은 Stable Diffusion과 Whisper도 Mac에서 원활하게 작동합니다.
사용자 기반
Mac은 이미 AI PC로 사용되고 있습니다. 2020년부터 Mac은 신경망 엔진을 탑재하여 AI PC로 사용할 수 있습니다. 이는 2020년 출시된 엔트리 레벨 Mac Mini와 MacBook Air가 4년된 지금도 AI PC로 사용할 수 있다는 것을 의미합니다.
Mac은 사용자가 구매해야 할 새로운 AI PC를 구매하지 않고도 AI를 사용할 수 있는 장점이 있습니다. 새로운 노트북이나 PC를 구매하는 빈도가 높지 않기 때문에, 평균 Windows 사용자는 몇 년 동안 NPU를 탑재한 시스템을 구매할 것입니다. 그러나 Mac을 보면, 수백만 명의 사람들이 이미 AI PC로 사용할 수 있는 Mac을 가지고 있습니다.
기본설정은 capslock 이 한/영 전환으로 설정되어 있지만, 저는 capslock 과 ctrl 을 스왑해서 사용하고 있습니다. 이로 인해 한/영 전환을 해야할때, 왼손새끼 손가락을 꿇어야 하는 모양새가 되었습니다. 이를 방지 하기 위해서 window 와 비슷하게 오른쪽 command key 를 변경하여서 사용하기로 했습니다.
리눅스 서버를 다루다보니, 터미널을 매일사용하고 있습니다. 저는 기본으로 fish, tmux. alacritty 을 이용해서 작업을 하고 있습니다. 제가 사용하는 것들의 주요 특징들은 가볍고 빠릅니다. iterm2는 전혀 성에 차지 않습니다. wasp와 같은 터미널 프로그램은 쓸만합니다. 하지만, 기본기로 돌아가면 alacritty 사용을 권하고 싶습니다. (rust 로 작성되어 있다는 점도 무시할 수 없습니다.)
자주가는 reddit.com의 r/unixpron에는 커스텀화 된 화면들을 공유하고 자신들의 설정을 공유하는 곳입니다. 리눅스 사용자들을 위한 곳입니다. 리눅스도 같이 사용하고 있는 저에게는 지루한 랩탑을 좋은 놀이깜으로 만들어주는 곳입니다. (리눅스에 대해서도 학습하면서...) 아래 적용하려고 하는 도구들도 이 곳에서는 많이 사용하는 것들입니다.
여기서 최신 도구들을 몇개 사용해 보려고 합니다. 선정이유는 다들 rust로 작성되어 있는 점입니다. rust를 사랑하는 개발자로서 이 세팅은 반드시(!) 좋을 것 같습니다.
rust로 작성된 최신 데이터 지향 쉘입니다. 기본적인 구성만으로 자동완성 및 기타 유용한 기능을 사용하기 위해 여러 설정을 할 필요가 없습니다.
아직 사용하기에는 여러문제들이 보임.
설치
$ brew install nushell
.......
$ nu
✘ ~ nu
No environment config file found at /Users/forteleaf/Library/Application Support/nushell/env.nu
Would you like to create one with defaults (Y/n):
Config file created at: /Users/forteleaf/Library/Application Support/nushell/env.nu
No config file found at /Users/forteleaf/Library/Application Support/nushell/config.nu
Would you like to create one with defaults (Y/n):
Config file created at: /Users/forteleaf/Library/Application Support/nushell/config.nu
__ ,
.--()°'.' Welcome to Nushell,
'|, . ,' based on the nu language,
!_-(_\ where all data is structured!
Please join our Discord community at https://discord.gg/NtAbbGn
Our GitHub repository is at https://github.com/nushell/nushell
Our Documentation is located at http://nushell.sh
Tweet us at @nu_shell
Nushell has been around for:
3yr 4month 3wk 1day 23hr 37min 48sec 769ms 498µs
You can disable this banner using the config nu command
to modify the config.nu file and setting show_banner to false.
let-env config {
show_banner: false
...
}
장점
Linux, macOS, Window 에서 작동
nu pipeline은 구조화 된 데이터를 사용. 안전하게 선택, 필터링, 정렬을 사용
강력한 플러그인
단점
command 학습이 필요함. shell이름을 확인하려고 했는데....
`echo $SHELL`
Error: nu::parser::variable_not_found (link)
× Variable not found.
╭─[entry #12:1:1]
1 │ echo $SHELL
· ───┬──
· ╰── variable not found
╰────
nushell는 데이터 표현을 테이블 저장합니다. 마치 DB의 쿼리를 이용해서 물러오는 것 같습니다. 기본 zsh, fish, bash 등에 익숙해 있다면 생소한`cui 화면 처럼 보이기도 합니다.
/Users/forteleaf/vagrant〉ls 09/28/2022 11:43:33 PM
╭───┬──────────┬──────┬───────┬──────────────╮
│ # │ name │ type │ size │ modified │
├───┼──────────┼──────┼───────┼──────────────┤
│ 0 │ kubeset │ dir │ 320 B │ 2 months ago │
│ 1 │ window10 │ dir │ 128 B │ 2 months ago │
╰───┴──────────┴──────┴───────┴──────────────╯
Starship은 간단한 yaml 파일에 매우 다양한 구성 옵션을 제공 합니다. 그러나 nushell과 마찬가지로 처음에는 구성이 필요하지 않습니다. 모든 기본값이 이미 설정되어 있습니다! 바로 사용할 수 있는 멋진 구성 사전 설정을 제공합니다.
Starship은 다른 여러 도구 및 기술과 자동으로 통합됩니다. 패키지 버전을 표시하고(예: Poetry 프로젝트에 있을 때) AWS 리전, kubernetes 컨텍스트 및 네임스페이스를 표시할 수 있습니다. 간단히 말해서 모든 것과 작동합니다. 여기에서 전체 통합 목록을 살펴보십시오.
메일을 관리앱. Android, iOS, macOS 을 지원하고, 메일을 사용하는데 이런 기능이 있어야 하나 싶은 기능들을 제공하고 있습니다. 기본메일함을 사용하는 것도 나쁘지 않은 선택이지만, 한번 사용해 보는 것도 나쁘지 않습니다.
Slack
개발자들간의 의사 소통을 위한 필수 앱이 되었다.
Pocket
브라우저에서 링크를 스크랩 하는 기능. google 계정으로 로그인이 가능.
Skitch (무료)
가벼운 사진 편집을 진행하기 좋다. [PhotoScape X]가 나오기 전에 블로그에 수록 된 간단한 사진을 편집하기 좋았다. 단순한 그림에 표시하기 및 텍스트를 추가 하는데 좋다.
PhotoScape X (무료)
사진들을 일괄 편집할 수 있는 앱. Window에서도 제공하고 있다. 간편하게 사진들을 일괄편집 또는 이펙트를 적용하기 좋다.
OmniGraffle (유료)
간단한 그래프를 그리기 위해서 빠르게 작업할 수 있는 앱. 최근에 명함을 구성하는데 사용했는데, AI 처럼 다른 구조체와의 규칙성을 파악해서 알려주는 기능이 끝내준다.
OmniOutliner (유료)
아직 활용 능력이 미흡해서 잘 사용하고 있지는 못하다. 간단한 메모용도로 사용하고 있다. 자료가 쌓이면서 이를 저장해서 어디에 모아놓을지 전혀 생각을 못하고 있다. 확실한 용도를 생각 해 봐야 되겠다.
Notion (유료)
evernote와 같은 메모기능을 주를 이루고 있다. 하지만, Notion이라는 앱은 에버노트를 넘어 더 많은 다양한 기능들을 제공하고 있다.
4$의 유로 결제를 해야지만 더 많은 기능들을 제한 없이 사용할 수 있다.
지금은 무료로 많은 기능을 사용할 수 있게 되었습니다. 예전에는 작성할 수 있는 페이지 수가 제한이 있었는데 이제는 무제한이 되었습니다.
$ brew cask install notion
Microsoft Teams (업무용)
Office 365를 구독해서 사용하면서 처음으로 첩하게 된 앱. 다른 사람들과 공동작업을 진행할 때 사용하기에 좋다. 무료로는 일정기능만 제공하기 때문에 부족한 점도 있지만, 깔끔한 영상통화와 파일을 공유하는 기능은 정말 깔끔하게 필요한 기능만을 제공하는 것 같다. 다른 3rd party 앱들도 연동해서 사용할 수 있기 때문에 확장성이 좋습니다.
Pages (무료)
최근에 성능이 좋은 맥을 사용하고 난 뒤에는 좋은 앱이라는 것을 알게 됨. 무료이면서 몇번의 클릭질로 윈도우에서 볼 수 없는 이쁜작업물이 나온다.
office365를 사용하고 있어서 잘은 안 쓰지만, mac에서 잘 작동하는 것을 역시 pages다.
MacJournal (무료)
매일 블로그나 글을 작성하기 위해서 사용하던 프로그램. 현재는 무료로 기능을 제공하고 있다. app store에 유료로 배포하고 있었지만, 무료버전을 제공하고 있다.
매일 글을 적는 때에 일기장으로 사용할 수 있고, 블로그에 포스팅하는 기능도 가지고 있다. 하지만, 지금은 잘 사용하고 있지 않다.
DEVONThink 3
꾸준히 업데이트가 되고 있는 맥을 사용하는 사람들이 극찬하는 앱.
여러가지 인터넷에 돌고 있는 내용들을 수집하는데 최고의 어플입니다. 많은 이용자들이 논문자료 정리용 앱으로 잘 사용합니다. 저는 블로그 글들을 모아놓은데 사용하고 있습니다.
단점 : 맥에서만 사용할 수 있다. 다양한 기기에서 호환이 안된다.
지금은 역시 잘 사용하고 있지 않다.
스탠다드
프로
서버
$ 99
$ 199
$499
Microsoft Office
회사에서 이를 사용하지 않고 일을 할 수 있을까요?
Adobe
영상이나 그래픽 쪽 일을 한다면 필수적인 앱
개인정보
LastPass
암호관리 프로그램. safari 와 firefox, chrome 의 암호 동기화를 위해서 사용하게 되었다. 생각보다 유연하게 작동되지 않아서, 사용에 주저하게 되어 현재는 설치는 되어 있는데, 한번 더 생각을 해 보고 암호를 저장한다.
현재는 Firefox 에서만 Firefox Lockwise 에 저장하는 걸로 한다.
취미/놀이
Movist (PRO) $7.99
맥에서 제공하는 최고의 동영상 재생기. PRO 버전을 현재는 app store 정책 때문에 홈페이지에게 판매하고 있다.
반드시 구매하자
Steam
맥에서 게임을 즐기기 위해서는 필수아닌 필수 입니다.
Epic Games
요즈음 자주 무료로 풀고 있어서 라이브러리를 모으고 있습니다.
Battle.net
역사의 뒤안길로 가게 된 블리자드.. 까끔 과거를 회상하며 설치했다가도 이 영상으로 uninstall하게되는 자신을 발견한다.
기타 도구들
HapticKey
맥북 터치바에서 키를 누르면 진동을 발생시킨다. vim을 자주 사용하는 입장에서 esc버튼을 누르면 이 것이 눌러졌는지 알수가 없다. 이를 진동을 통해서 알게 해 준다.
지금은 삭제 : 밧데리 많이 먹을 꺼 같아서...
iStat Menus
맥을 상단바에 현재맥의 이더넷, 메모리, 램, CPU 등 다양한 정보를 제공한다. 100MB 정도의 메모리로 상주해 있으며, 현재 상태를 간결히 빠르게 볼 수 있는 점이 좋다.
-l : list 찾은 파일들을 리스트. pipe 구문을 사용하기 위해서 이 옵션을 추가 한다.
xargs는 유닉스 및 유닉스 계열 운영 체제의 명령어로 표준 입력을 통해 명령 줄을 만들고 실행하는 데 사용한다
-i : 출력하지 않고, 파일로 저장한다.
-e : EOF 또는 지정된 문자열이 나올때 까지 계속 xargs 를 통한 필터링을 수행.
파일 마커 문자열의 논리적 끝을 eof-str로 설정하십시오. 파일 마커 문자열의 논리적 끝이 입력 행으로 발생하면 나머지 입력은 무시됩니다. eof-str을 생략 ( '-e')하거나 공백 ( '-e'또는 '-E')하면 파일 마커 문자열의 논리적 끝이 없습니다. 이 옵션의‘-e’형식은 POSIX 호환‘-E’옵션 대신 사용되지 않으며 대신 사용해야합니다. GNU xargs 버전 4.2.9부터 xargs의 기본 동작은 파일 마커 문자열의 논리적 끝이 아닙니다. POSIX 표준 (IEEE Std 1003.1, 2004 Edition)이이를 허용합니다. ‘-d’또는‘-0’옵션이 유효한 경우 파일 마커 문자열의 논리적 끝은 특별히 처리되지 않습니다. 즉, 이러한 옵션 중 하나가 적용되면‘-E’를 사용하더라도 전체 입력 파일을 읽습니다.
두 가지를 모두 사용했으며, Linux가 나를위한 더 나은 선택이라고 확실하게 말할 수 있습니다. 나는 OS선택에 있어서 다른 사람들에 의해서 강요되어 지고 있다고 생각합니다. OSX는 어떤면에서는 Linux보다 좋았지만, 그 혜택은 거의 사라졌습니다.
분명히 리눅스를 주 OS로 사용하는 것이 좋은 생각이라고 생각합니다.
실리콘에서는 개발자들이 마더보드에 16GB를 판매한 2,500달러의 맥북 레티나 프로와 인텔 아이리스 프로 그래픽스 + AMD 라데온 R9 M370X의 트로피를 받을 때까지 "만들 수 없다"는 믿음이 있다.
Mac 하드웨어가 (GPU)보다 더 뒤처지고 소프트웨어의 품질이 계속 떨어짐에 따라, 나는 MBP의 트로피 상태가 떨어지면서 리눅스가 인기를 얻을 것으로 기대한다.
성공의 열쇠는 리눅스에 맞춰져 있고 제조업체가 지원하는 컴퓨터를 사는 것이다. 이는 많은 사람들이 "그냥 일부 오래된 하드웨어"에 로딩할 때 겪는 하드웨어 호환성 문제를 없애는 것입니다.
저는 system76 노트북과 데스크톱을 사용하고 있으며 그들의 컴퓨터와 서비스에 매우 만족해 왔습니다. 노트북 중 하나인 Oryx Pro는 GSync, PCIe SSD, i7, 32GB RAM과 아름다운 IPS 디스플레이를 갖춘 GTX970m GPU를 가지고 있다. 또한 Kubuntu의 선호 소프트웨어에 대한소식지 목록을 유지하는 것입니다. 이외의 건설적인 의견을 존중합니다. Linux를 개발 및 개인 컴퓨팅 전용으로 사용하는 이유는 다음과 같습니다.
뛰어난 GPU 및 CPU
내 가정용 PC와 노트북은 최상의 디스플레이와 GPU를 갖춘 최고급 기기들입니다. 나와 아이들은 2,000개의 게임 중 많은 게임을 스팀에서 하고, 나는 CUDA와 심오한 학습에도 관심이 있습니다. Mac에서는 이 것을 잘 할 수 없습니다. 강력한 GPU는 나에게 매우 중요하기 때문에 나는 32GB System76 i7 WildDogPro에 3440x1440 커브드 모니터에 GTX980Ti를 구매 했습니다. 아이리스 그래픽으로 데크 아웃한 MBP 레티나와 거의 비슷한 가격이였습니다.
서버와의 진정한 호환성
빌드 스크립트의 절반이 Linux Bash + GNU 도구에 있고, 절반이 Bash + BSD 도구를 사용하고 있습니다. 왜냐하면 개발자들이 MBP를 보유해야 한다고 주장하면서 "거의 Linux"라고 가정했기 때문에 반은 Bash + BSD 툴을 사용하고 있었습니다. 말해두지마,ᆫ 그것은 엄청난 착각이었습니다. 컴퓨터에서 코드를 작성하는 데 수 주일의 시간을 보내는데, "OSX가 다르다해도 상관 없다"고 말하는 사람들은 종종 "... OS X는 거의 리눅스에 가깝다"라고 말하면서 종종 모순됩니다. 그러나 그것은 중요한 문제가 아닙니다.
나를 예민하게 만들어 준다
최소한의 컨텍스트 전환으로, 나는 항상 거의 실물과 같은 툴 세트를 사용하고, 본능적으로 사물을 스크랍트를 작성하고, 서버 간에 원활하게 작읍합니다. 필자는 아직 스크립팅 기술로 저에게 깊은 인상을주는 맥 사용자를 아직 찾지 못했습니다. 나는 여러 클러스터에 있는 100대 이상의 리눅스 서버의 소프트웨어를 관리하곤 했는데, 그 작업에 리눅스에서 작업 하는 것 외에는 상사도 할 수 없습니다.
모든 것을 가능하게 한다
필자는 Mac을 사용하는 동료보다 Linux에 대한 문제점이 적다고 생각합니다. /homebrew/fink/macPorts가 필요없고 sudo apt-get update & sudo apt-get upgrade를 사용합니다. 나는 몇몇 회원들이 "트로피"맥을 고집하는 팀을 관리했었습니다. 필자는 컴퓨터를 설치하기위한 스크립트와 절차를 작성했습니다. 맥은 꼬박 2 ~ 3 일의 시간이 필요했고, 리눅스에서는 약 1 시간 정도의 시간이 걸려 거의 완전 자동화되었습니다.
그리고 나서 나는 크롬의 스케일 크기를 두 배로 늘리고 몇 분 안에 그것들을 얻기 위해 크스냅샷을 사용했다. Mac이나 Windows 기기를 가진 사람은 아무도 이것을 어떻게 해야 하는지 몰랐습니다.
"비즈니스 소프트웨어는 Linux에서 실행되지 않는다"라는 주장
은 대부분 설득력이 없다. 특히 MS Office가 곤경에 처한 SV에서는 더욱 그러하다. 필자는 Balsamiq 3, Slack, DropBox, Chrome, Hangoutouts, GoToMeeting, WebStorm, Skype, Gimp, Insync, Inkscape 등을 운영하고 있다. 아, 그리고 쉬는 시간에 스팀. 이 모든 것들은 매우 잘 운영되며, 나는 응용 프로그램이나 시스템 충돌은 거의 보지 못했다. 웹스톰(JetBrains IDE)은 Mac보다 Linux에서 더 잘 작동합니다. NodeJS, MongoDB, MySQL, SQLite 및 수십 개의 다른 개발자 도구와 동일합니다.
7 KDE/Plasma 인터페이스가 Windows와 OSX보다 우월하다고 생각한다.
모든 것을 사용해 봤습니다. sysadmin과 스크립팅 기술이 제한된 수많은 개발자들을 상대하는 것은 답답합니다. 어떤 이들은 명령줄이 아닌 OSX GUI에서 생각하기 때문에 해결책을 생각하지 못합니다. 만약 내가 SV에서 회사를 차린다면, 리눅스 시스템을 우선으로 제공할 것입니다.
Searching Python 3.7 libraries...
Found Python library:/usr/local/opt/python/Frameworks/Python.framework/Versions/3.7/lib/python3.7/config-3.7m-darwin/libpython3.7.dylib
Found Python headers folder:/usr/local/opt/python/Frameworks/Python.framework/Versions/3.7/include/python3.7m
-- The C compiler identification is AppleClang 10.0.1.10010046-- The CXX compiler identification is AppleClang 10.0.1.10010046-- Check for working C compiler:/Library/Developer/CommandLineTools/usr/bin/cc
-- Check for working C compiler:/Library/Developer/CommandLineTools/usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler:/Library/Developer/CommandLineTools/usr/bin/c++-- Check for working CXX compiler:/Library/Developer/CommandLineTools/usr/bin/c++-- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found PythonLibs:/usr/local/opt/python/Frameworks/Python.framework/Versions/3.7/lib/python3.7/config-3.7m-darwin/libpython3.7.dylib (found suitable version "3.7.3", minimum required is "3.5")-- NOT using libclang, no semantic completion for C/C++/ObjC will be available
-- NOT using clang-tidy for static analysis.-- Configuring done
-- Generating done
-- Build files have been written to:/private/var/folders/76/tll39g2x4cz8fyxqk6zxh3_00000gn/T/ycm_build__txi1732
Scanning dependencies of target BoostParts
[2%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/filesystem/src/codecvt_error_category.cpp.o
[7%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/filesystem/src/path_traits.cpp.o
[7%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/filesystem/src/path.cpp.o
[9%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/filesystem/src/utf8_codecvt_facet.cpp.o
[14%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/filesystem/src/portability.cpp.o
[14%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/filesystem/src/operations.cpp.o
[19%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/filesystem/src/unique_path.cpp.o
[19%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/filesystem/src/windows_file_codecvt.cpp.o
[21%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/regex/src/c_regex_traits.cpp.o
[26%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/regex/src/fileiter.cpp.o
[28%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/regex/src/cpp_regex_traits.cpp.o
[28%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/regex/src/cregex.cpp.o
[30%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/regex/src/icu.cpp.o
[33%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/regex/src/instances.cpp.o
[35%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/regex/src/posix_api.cpp.o
[38%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/regex/src/regex.cpp.o
[40%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/regex/src/regex_debug.cpp.o
[42%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/regex/src/regex_raw_buffer.cpp.o
[45%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/regex/src/regex_traits_defaults.cpp.o
[47%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/regex/src/static_mutex.cpp.o
[50%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/regex/src/usinstances.cpp.o
[52%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/regex/src/w32_regex_traits.cpp.o
[54%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/regex/src/wc_regex_traits.cpp.o
[57%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/regex/src/wide_posix_api.cpp.o
[59%] Building CXX object BoostParts/CMakeFiles/BoostParts.dir/libs/regex/src/winstances.cpp.o
[61%] Linking CXX static library libBoostParts.a
/Library/Developer/CommandLineTools/usr/bin/ranlib: file: libBoostParts.a(windows_file_codecvt.cpp.o) has no symbols
/Library/Developer/CommandLineTools/usr/bin/ranlib: file: libBoostParts.a(icu.cpp.o) has no symbols
/Library/Developer/CommandLineTools/usr/bin/ranlib: file: libBoostParts.a(instances.cpp.o) has no symbols
/Library/Developer/CommandLineTools/usr/bin/ranlib: file: libBoostParts.a(regex_debug.cpp.o) has no symbols
/Library/Developer/CommandLineTools/usr/bin/ranlib: file: libBoostParts.a(usinstances.cpp.o) has no symbols
/Library/Developer/CommandLineTools/usr/bin/ranlib: file: libBoostParts.a(w32_regex_traits.cpp.o) has no symbols
/Library/Developer/CommandLineTools/usr/bin/ranlib: file: libBoostParts.a(winstances.cpp.o) has no symbols
/Library/Developer/CommandLineTools/usr/bin/ranlib: file: libBoostParts.a(windows_file_codecvt.cpp.o) has no symbols
/Library/Developer/CommandLineTools/usr/bin/ranlib: file: libBoostParts.a(icu.cpp.o) has no symbols
/Library/Developer/CommandLineTools/usr/bin/ranlib: file: libBoostParts.a(instances.cpp.o) has no symbols
/Library/Developer/CommandLineTools/usr/bin/ranlib: file: libBoostParts.a(regex_debug.cpp.o) has no symbols
/Library/Developer/CommandLineTools/usr/bin/ranlib: file: libBoostParts.a(usinstances.cpp.o) has no symbols
/Library/Developer/CommandLineTools/usr/bin/ranlib: file: libBoostParts.a(w32_regex_traits.cpp.o) has no symbols
/Library/Developer/CommandLineTools/usr/bin/ranlib: file: libBoostParts.a(winstances.cpp.o) has no symbols
[61%] Built target BoostParts
Scanning dependencies of target ycm_core
[64%] Building CXX object ycm/CMakeFiles/ycm_core.dir/Candidate.cpp.o
[66%] Building CXX object ycm/CMakeFiles/ycm_core.dir/CharacterRepository.cpp.o
[69%] Building CXX object ycm/CMakeFiles/ycm_core.dir/Character.cpp.o
[71%] Building CXX object ycm/CMakeFiles/ycm_core.dir/CandidateRepository.cpp.o
[73%] Building CXX object ycm/CMakeFiles/ycm_core.dir/CodePointRepository.cpp.o
[78%] Building CXX object ycm/CMakeFiles/ycm_core.dir/IdentifierDatabase.cpp.o
[78%] Building CXX object ycm/CMakeFiles/ycm_core.dir/CodePoint.cpp.o
[80%] Building CXX object ycm/CMakeFiles/ycm_core.dir/IdentifierCompleter.cpp.o
[83%] Building CXX object ycm/CMakeFiles/ycm_core.dir/IdentifierUtils.cpp.o
[88%] Building CXX object ycm/CMakeFiles/ycm_core.dir/PythonSupport.cpp.o
[88%] Building CXX object ycm/CMakeFiles/ycm_core.dir/Result.cpp.o
[90%] Building CXX object ycm/CMakeFiles/ycm_core.dir/Utils.cpp.o
[92%] Building CXX object ycm/CMakeFiles/ycm_core.dir/Word.cpp.o
[95%] Building CXX object ycm/CMakeFiles/ycm_core.dir/versioning.cpp.o
[97%] Building CXX object ycm/CMakeFiles/ycm_core.dir/ycm_core.cpp.o
[100%] Linking CXX shared library /Users/forteleaf/.vim/bundle/YouCompleteMe/third_party/ycmd/ycm_core.so
[100%] Built target ycm_core
-- The C compiler identification is AppleClang 10.0.1.10010046-- Check for working C compiler:/Library/Developer/CommandLineTools/usr/bin/cc
-- Check for working C compiler:/Library/Developer/CommandLineTools/usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Found PythonLibs:/usr/local/opt/python/Frameworks/Python.framework/Versions/3.7/lib/python3.7/config-3.7m-darwin/libpython3.7.dylib (found version "3.7.3")-- Configuring done
-- Generating done
-- Build files have been written to:/private/var/folders/76/tll39g2x4cz8fyxqk6zxh3_00000gn/T/regex_build_5gvorctk
Scanning dependencies of target _regex
[66%] Building C object CMakeFiles/_regex.dir/regex_3/_regex_unicode.c.o
[66%] Building C object CMakeFiles/_regex.dir/regex_3/_regex.c.o
[100%] Linking C shared library /Users/forteleaf/.vim/bundle/YouCompleteMe/third_party/ycmd/third_party/cregex/regex_3/_regex.so
[100%] Built target _regex
/Users/forteleaf/.vim/bundle/YouCompleteMe/third_party/ycmd/third_party/tsserver/bin/tsc ->/Users/forteleaf/.vim/bundle/YouCompleteMe/third_party/ycmd/third_party/tsserver/lib/node_modules/typescript/bin/tsc
/Users/forteleaf/.vim/bundle/YouCompleteMe/third_party/ycmd/third_party/tsserver/bin/tsserver ->/Users/forteleaf/.vim/bundle/YouCompleteMe/third_party/ycmd/third_party/tsserver/lib/node_modules/typescript/bin/tsserver
+ typescript@3.3.3333
updated 1 package in 0.641s
여러 블로그들을 들어가보면, 사진들에 이쁘게 사진의 사이트들을 알리는 마크 또는 사이트 주소들을 사진에 땅땅하고 찍어 놓는 경우가 있습니다. 다른 곳에 사진을 퍼 가더라도 라이센스를 유지하기 위해서 이렇게 만드는 것인데요. 저도 한번 만들어 보았습니다. 개인적인 사이트들을 운영한지는 꽤 되었지만, 한번도 자신의 마크를 가져본 적이 없었는데요. 한번 제대로 블로깅을 해보자 마음을 먹어서 이렇게 만들게 되었습니다.
저는 macupdate.com 에서 watermark 프로그램을 검색하다가 최신날짜로 업데이트가 되어 있는 어플을 사용했습니다. 자주 업데이트 해주는 어플이 사후 관리를 잘 해주는 좋은 어플이라고 생각합니다.
가격은 30$ 입니다.
제공되는 기능들
워터마크 찍기
사이즈 조절하기
사진 필터
등등등 ....
이 어플의 장점은 resize 와 watermark 를 동시에 실행할 수 있다는 점이다. 설정을 한번 해주면, 그에 맞춰서 사이즈를 줄여주고, 다시 워터마크를 찍어준다.
어떤 순서로 진행되는지는 모르겠지만, 아마도 워터마크 해상도를 보아하니, 사이즈를 줄이고 난 다음에 워터마크를 찍는 듯 합니다.