waifu2x (waifu2x-converter-cpp tanakamura版) を Mac でコンパイル
waifu2x-converter-cpp WL-Amigo 版のコンパイル方法は既に yuuki-arc さんが書かれていますが、tanakamura 版はなかったので自分の為に書いておきます。
環境
無理矢理コンパイルが通るようにしたパッチ (git clone した後に waifu2x-converter-cpp フォルダに waifu2x-converter-cpp.diff という名前のテキストファイルにして入れておきます。)
diff -uprN waifu2x-converter-cpp.orig/CMakeLists.txt waifu2x-converter-cpp/CMakeLists.txt --- waifu2x-converter-cpp.orig/CMakeLists.txt 2018-02-07 16:44:37.000000000 +0900 +++ waifu2x-converter-cpp/CMakeLists.txt 2017-08-26 23:12:27.000000000 +0900 @@ -9,6 +9,7 @@ pkg_check_modules(OPENCV_PKG opencv) string(TIMESTAMP TS) add_definitions(-DBUILD_TS="${TS}") +set(CMAKE_MACOSX_RPATH 1) if (${OPENCV_PKG_FOUND}) set(CMAKE_REQUIRED_INCLUDES ${OPENCV_PKG_INCLUDE_DIRS}) @@ -26,10 +27,10 @@ check_include_file_cxx("opencv2/opencv.h find_library(IMGCODECS_LIBRARY NAMES opencv_imgcodecs opencv_highgui HINTS ${OPENCV_PKG_INCLUDE_DIRS} ${OPENCV_PREFIX}/lib) -if(HAVE_OPENCV) +#if(HAVE_OPENCV) add_definitions(-DHAVE_OPENCV) set(OPENCV_LIBRARIES opencv_core opencv_imgproc ${IMGCODECS_LIBRARY} opencv_features2d) -endif() +#endif() if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux") # include_directories("/usr") @@ -225,20 +226,20 @@ add_custom_target(gensrcs ALL enable_testing() -if (${HAVE_OPENCV}) +#if (${HAVE_OPENCV}) add_executable(waifu2x-converter-cpp src/main.cpp) target_link_libraries(waifu2x-converter-cpp LINK_PUBLIC w2xc) - add_executable(runtest w32-apps/runtest.c) - target_link_libraries(runtest w2xc) - add_test(runtest runtest) +# add_executable(runtest w32-apps/runtest.c) +# target_link_libraries(runtest w2xc) +# add_test(runtest runtest) install(TARGETS w2xc waifu2x-converter-cpp RUNTIME DESTINATION bin LIBRARY DESTINATION "lib${LIB_SUFFIX}" ARCHIVE DESTINATION "lib${LIB_SUFFIX}" ) -endif() +#endif() add_executable(runbench w32-apps/runbench.c) target_link_libraries(runbench LINK_PUBLIC w2xc) diff -uprN waifu2x-converter-cpp.orig/src/common.cpp waifu2x-converter-cpp/src/common.cpp --- waifu2x-converter-cpp.orig/src/common.cpp 2018-02-07 16:44:38.000000000 +0900 +++ waifu2x-converter-cpp/src/common.cpp 2017-11-20 21:51:39.000000000 +0900 @@ -198,11 +198,11 @@ update_test(const char *dst_path, struct stat src_st; stat(src_path, &src_st); - if (src_st.st_mtim.tv_sec > dst_st.st_mtim.tv_sec) { + if (src_st.st_mtimespec.tv_sec > dst_st.st_mtimespec.tv_sec) { return true; } - if (src_st.st_mtim.tv_nsec > dst_st.st_mtim.tv_nsec) { + if (src_st.st_mtimespec.tv_nsec > dst_st.st_mtimespec.tv_nsec) { return true; }
OpenCV が無い場合は Homebrew などであらかじめインストールしておくこと。
あとは以下のコマンドを打ちます。
% git clone https://github.com/tanakamura/waifu2x-converter-cpp.git % cd waifu2x-converter-cpp % patch -p1 < waifu2x-converter-cpp.diff % cmake . % make
すると waifu2x-converter-cpp が出来ているので、このまま使うなり GUI をかぶせるなり自由に使いましょう。
waifu2x (waifu2x-converter-glsl) を Mac でコンパイル
waifu2x-converter-glsl を Mac でコンパイル出来たのでやり方を書いておきます。
環境
- OS X Yosemite 10.10.3
コンパイルする為には Xcode が必要です。あらかじめ AppStore からダウンロードしておいて下さい。またコンパイルには GLFW3 と OpenCV 3.0 が必要ですから、別途インストールします。例えば homebrew があれば以下の様にインストールが可能です。
% brew install homebrew/versions/glfw3 % brew install homebrew/science/opencv3
次に waifu2x-converter-glsl の最新版をダウンロードしましょう。ここではデスクトップにダウンロードするとします。
% cd ~/Desktop % git clone https://github.com/ueshita/waifu2x-converter-glsl.git
フォルダ waifu2x-converter-glsl/build/ へ移動し、次のコマンドを実行しコンパイルします。
% cd waifu2x-converter-glsl/build/ % xcodebuild -project waifu2x-converter-glsl.xcodeproj -target waifu2x-converter-glsl -configuration Release build "HEADER_SEARCH_PATHS = /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include /usr/local/include ../include /usr/local/Cellar/opencv3/3.0.0/include" "LIBRARY_SEARCH_PATHS = /usr/local/lib /usr/local/Cellar/opencv3/3.0.0/lib"
/usr/local/Cellar/opencv3/3.0.0/include と /usr/local/Cellar/opencv3/3.0.0/lib は、導入の仕方によって変更する必要があります。ここでは homebrew を使っていて、かつ OpenCV 3.0.0 がインストールされたとしています。
これでコンパイルが完了し、waifu2x-converter-glsl/build/build/Release/ 内に waifu2x-converter-glsl が出来ているはずです。これを waifu2x-converter-glsl フォルダに移動しましょう。これで waifu2x-converter-glsl が使えるようになりました。例えば以下の様に実行できます。
% ./waifu2x-converter-glsl -i ファイル名 --noise_level 1 --scale_ratio 1.5
waifu2x-converter-glsl は使用する際に、カレントディレクトリに models/ と shaders/ が無いといけないみたいなので、これらは消さないように。
MacTeX 2014 で埋め込みフォントをフリーフォントにしてみる
後でもう少し書きます。
上を参考にフォントを設定しようと思ったんだけどマップファイルのせいか上手く行かなかったので、IPAフォント埋め込みのマップファイルを参考に書き直した。これには4つのファイルを用いれば良い。
otf-allfree.map
% TEXT, 90JIS hminl-h H ipaexm.ttf %!PS IPAMincho hminl-v V ipaexm.ttf %!PS IPAMincho hminr-h H ipaexm.ttf %!PS IPAMincho hminr-v V ipaexm.ttf %!PS IPAMincho hminb-h H :1:mogamb.ttc %!PS IPAMincho hminb-v V :1:mogamb.ttc %!PS IPAMincho hgothr-h H ipaexg.ttf %!PS IPAGothic hgothr-v V ipaexg.ttf %!PS IPAGothic hgothb-h H migmix-2p-bold.ttf %!PS IPAGothic hgothb-v V migmix-2p-bold.ttf %!PS IPAGothic hgotheb-h H migmix-2p-bold.ttf %!PS IPAGothic hgotheb-v V migmix-2p-bold.ttf %!PS IPAGothic hmgothr-h H migmix-1m-regular.ttf %!PS IPAGothic hmgothr-v V migmix-2m-refular.ttf %!PS IPAGothic % TEXT, JIS04 hminln-h H ipaexm.ttf %!PS IPAMincho hminln-v V ipaexm.ttf %!PS IPAMincho hminrn-h H ipaexm.ttf %!PS IPAMincho hminrn-v V ipaexm.ttf %!PS IPAMincho hminbn-h H :1:mogamb.ttc %!PS IPAMincho hminbn-v V :1:mogamb.ttc %!PS IPAMincho hgothrn-h H ipaexg.ttf %!PS IPAGothic hgothrn-v V ipaexg.ttf %!PS IPAGothic hgothbn-h H migmix-2p-bold.ttf %!PS IPAGothic hgothbn-v V migmix-2p-bold.ttf %!PS IPAGothic hgothebn-h H migmix-2p-bold.ttf %!PS IPAGothic hgothebn-v V migmix-2p-bold.ttf %!PS IPAGothic hmgothrn-h H migmix-1m-regular.ttf %!PS IPAGothic hmgothrn-v V migmix-2m-refular.ttf %!PS IPAGothic % CID otf-cjml-h Identity-H ipaexm.ttf/AJ16 %!PS IPAMincho otf-cjml-v Identity-V ipaexm.ttf/AJ16 %!PS IPAMincho otf-cjmr-h Identity-H ipaexm.ttf/AJ16 %!PS IPAMincho otf-cjmr-v Identity-V ipaexm.ttf/AJ16 %!PS IPAMincho otf-cjmb-h Identity-H :1:mogamb.ttc/AJ16 %!PS IPAMincho otf-cjmb-v Identity-V :1:mogamb.ttc/AJ16 %!PS IPAMincho otf-cjgr-h Identity-H ipaexg.ttf/AJ16 %!PS IPAGothic otf-cjgr-v Identity-V ipaexg.ttf/AJ16 %!PS IPAGothic otf-cjgb-h Identity-H migmix-2p-bold.ttf/AJ16 %!PS IPAGothic otf-cjgb-v Identity-V migmix-2p-bold.ttf/AJ16 %!PS IPAGothic otf-cjge-h Identity-H migmix-2p-bold.ttf/AJ16 %!PS IPAGothic otf-cjge-v Identity-V migmix-2p-bold.ttf/AJ16 %!PS IPAGothic otf-cjmgr-h Identity-H migmix-1m-regular.ttf/AJ16 %!PS IPAGothic otf-cjmgr-v Identity-V migmix-1m-regular.ttf/AJ16 %!PS IPAGothic % Unicode 90JIS otf-ujml-h UniJIS-UTF16-H ipaexm.ttf %!PS IPAMincho otf-ujml-v UniJIS-UTF16-V ipaexm.ttf %!PS IPAMincho otf-ujmr-h UniJIS-UTF16-H ipaexm.ttf %!PS IPAMincho otf-ujmr-v UniJIS-UTF16-V ipaexm.ttf %!PS IPAMincho otf-ujmb-h UniJIS-UTF16-H :1:mogamb.ttc %!PS IPAMincho otf-ujmb-v UniJIS-UTF16-V :1:mogamb.ttc %!PS IPAMincho otf-ujgr-h UniJIS-UTF16-H ipaexg.ttf %!PS IPAGothic otf-ujgr-v UniJIS-UTF16-V ipaexg.ttf %!PS IPAGothic otf-ujgb-h UniJIS-UTF16-H migmix-2p-bold.ttf %!PS IPAGothic otf-ujgb-v UniJIS-UTF16-V migmix-2p-bold.ttf %!PS IPAGothic otf-ujge-h UniJIS-UTF16-H migmix-2p-bold.ttf %!PS IPAGothic otf-ujge-v UniJIS-UTF16-V migmix-2p-bold.ttf %!PS IPAGothic otf-ujmgr-h UniJIS-UTF16-H migmix-1m-regular.ttf %!PS IPAGothic otf-ujmgr-v UniJIS-UTF16-V migmix-1m-regular.ttf %!PS IPAGothic % Unicode JIS04 otf-ujmln-h UniJIS2004-UTF16-H ipaexm.ttf %!PS IPAMincho otf-ujmln-v UniJIS2004-UTF16-V ipaexm.ttf %!PS IPAMincho otf-ujmrn-h UniJIS2004-UTF16-H ipaexm.ttf %!PS IPAMincho otf-ujmrn-v UniJIS2004-UTF16-V ipaexm.ttf %!PS IPAMincho otf-ujmbn-h UniJIS2004-UTF16-H :1:mogamb.ttc %!PS IPAMincho otf-ujmbn-v UniJIS2004-UTF16-V :1:mogamb.ttc %!PS IPAMincho otf-ujgrn-h UniJIS2004-UTF16-H ipaexg.ttf %!PS IPAGothic otf-ujgrn-v UniJIS2004-UTF16-V ipaexg.ttf %!PS IPAGothic otf-ujgbn-h UniJIS2004-UTF16-H migmix-2p-bold.ttf %!PS IPAGothic otf-ujgbn-v UniJIS2004-UTF16-V migmix-2p-bold.ttf %!PS IPAGothic otf-ujgen-h UniJIS2004-UTF16-H migmix-2p-bold.ttf %!PS IPAGothic otf-ujgen-v UniJIS2004-UTF16-V migmix-2p-bold.ttf %!PS IPAGothic otf-ujmgrn-h UniJIS2004-UTF16-H migmix-1m-regular.ttf %!PS IPAGothic otf-ujmgrn-v UniJIS2004-UTF16-V migmix-1m-regular.ttf %!PS IPAGothic
otf-up-allfree.map
% TEXT, 90JIS uphminl-h UniJIS-UTF16-H ipaexm.ttf %!PS IPAMincho uphminl-v UniJIS-UTF16-V ipaexm.ttf %!PS IPAMincho uphminr-h UniJIS-UTF16-H ipaexm.ttf %!PS IPAMincho uphminr-v UniJIS-UTF16-V ipaexm.ttf %!PS IPAMincho uphminb-h UniJIS-UTF16-H :1:mogamb.ttc %!PS IPAMincho uphminb-v UniJIS-UTF16-V :1:mogamb.ttc %!PS IPAMincho uphgothr-h UniJIS-UTF16-H ipaexg.ttf %!PS IPAGothic uphgothr-v UniJIS-UTF16-V ipaexg.ttf %!PS IPAGothic uphgothb-h UniJIS-UTF16-H migmix-2p-bold.ttf %!PS IPAGothic uphgothb-v UniJIS-UTF16-V migmix-2p-bold.ttf %!PS IPAGothic uphgotheb-h UniJIS-UTF16-H migmix-2p-bold.ttf %!PS IPAGothic uphgotheb-v UniJIS-UTF16-V migmix-2p-bold.ttf %!PS IPAGothic uphmgothr-h UniJIS-UTF16-H migmix-1m-regular.ttf %!PS IPAGothic uphmgothr-v UniJIS-UTF16-V migmix-2m-refular.ttf %!PS IPAGothic % TEXT, JIS04 uphminln-h UniJIS2004-UTF16-H ipaexm.ttf %!PS IPAMincho uphminln-v UniJIS2004-UTF16-V ipaexm.ttf %!PS IPAMincho uphminrn-h UniJIS2004-UTF16-H ipaexm.ttf %!PS IPAMincho uphminrn-v UniJIS2004-UTF16-V ipaexm.ttf %!PS IPAMincho uphminbn-h UniJIS2004-UTF16-H :1:mogamb.ttc %!PS IPAMincho uphminbn-v UniJIS2004-UTF16-V :1:mogamb.ttc %!PS IPAMincho uphgothrn-h UniJIS2004-UTF16-H ipaexg.ttf %!PS IPAGothic uphgothrn-v UniJIS2004-UTF16-V ipaexg.ttf %!PS IPAGothic uphgothbn-h UniJIS2004-UTF16-H migmix-2p-bold.ttf %!PS IPAGothic uphgothbn-v UniJIS2004-UTF16-V migmix-2p-bold.ttf %!PS IPAGothic uphgothebn-h UniJIS2004-UTF16-H migmix-2p-bold.ttf %!PS IPAGothic uphgothebn-v UniJIS2004-UTF16-V migmix-2p-bold.ttf %!PS IPAGothic uphmgothrn-h UniJIS2004-UTF16-H migmix-1m-regular.ttf %!PS IPAGothic uphmgothrn-v UniJIS2004-UTF16-V migmix-2m-refular.ttf %!PS IPAGothic
ptex-allfree.map
rml H ipaexm.ttf %!PS IPAMincho urmlv V ipaexm.ttf %!PS IPAMincho ugbm H migmix-2p-bold.ttf %!PS IPAMincho ugbmv V migmix-2p-bold.ttf %!PS IPAMincho
uptex-allfree.map
urml UniJIS-UTF16-H ipaexm.ttf %!PS IPAMincho urmlv UniJIS-UTF16-V ipaexm.ttf %!PS IPAMincho ugbm UniJIS-UTF16-H migmix-2p-bold.ttf %!PS IPAMincho ugbmv UniJIS-UTF16-V migmix-2p-bold.ttf %!PS IPAMincho uprml-h UniJIS-UTF16-H ipaexm.ttf %!PS IPAMincho uprml-v UniJIS-UTF16-V ipaexm.ttf %!PS IPAMincho upgbm-h UniJIS-UTF16-H migmix-2p-bold.ttf %!PS IPAGothic upgbm-v UniJIS-UTF16-V migmix-2p-bold.ttf %!PS IPAGothic uprml-hq UniJIS-UCS2-H ipaexm.ttf %!PS IPAMincho upgbm-hq UniJIS-UCS2-H migmix-2p-bold.ttf %!PS IPAGothic
TeXShop からの脱却
ずっと MacVim + TeXShop で文書を作っていたが、TeXShop に依存しているのも面倒になってきたので、なるべく MacVim から出ないで "てふてふ" 出来るようにしてみた。
環境
- Mac OS X 10.9.2
- MacVim 7.4 + KaoriYa 20140107
latexmk という自動でタイプセットをしてくれるツールがあるのでタイプセットにはこれを使い、vim からは vim-quickrun を使って動かす事にする。
まずは latexmk の設定をする。latexmk は TeX を TeXLive で入れていれば最初から入っている。
~/.latexmk を作り、中身に以下を書く。(参照: [1,2]) *1 *2
#!/usr/bin/env perl $latex = 'platex -kanji=utf8 -guess-input-enc -synctex=1'; $latex_silent = 'platex -kanji=utf8 -guess-input-enc -synctex=1 -interaction=batchmode'; $bibtex = 'pbibtex -kanji=utf8'; $dvipdf = 'dvipdfmx %O -o %D %S'; $makeindex = 'mendex %O -o %D %S'; $max_repeat = 5; $pdf_mode = 3; # generates pdf via dvipdfmx # Prevent latexmk from removing PDF after typeset. # This enables Skim to chase the update in PDF automatically. $pvc_view_file_via_temporary = 0; # Use Skim as a previewer $pdf_previewer = "open -ga /Applications/Skim.app";
これだけで latexmk でのタイプセットは出来るようになっているはず。
次に vim-quickrun の設定をする。まず vim-quickrun のプラグインを入れる。これには NeoBundle などを使うと楽である。NeoBundle を用いて vim-quickrun を入れるには、~/.vimrc に
NeoBundle 'thinca/vim-quickrun'
を追加し vim で :NeoBundleInstall コマンドを実行すれば良い。
設定は ~/.vimrc に
let g:quickrun_config = {} let g:quickrun_config.tex = { \ 'outputter' : 'error', \ 'command' : 'latexmk', \ 'outputter/error/error' : 'quickfix', \ 'exec' : ['%c %s'], \ }
を追加すれば良い。(参照: [1,2])
sbcl + cl-cairo2
どうしても LISP から図形を描きたかったので cl-cairo2 を入れてみた。
環境
まず cairo が入っていなければ何も始まらない。何らかの方法で cairo をインストールする。
例えば Homebrew で。
$ brew install cairo
とすれば良い。
次に cl-cairo2 を入れる。こういうのはパッケージシステムを使うのが便利なので ASDF なるものを使おうと思ったが、それは途中でコケた。なので Quicklisp を使う事にした。インストール方法は公式ページに書いてある方法そのまま。
あとは sbcl を起動し、
* (ql:quicklisp :cl-cairo2)
でインストール完了。使う時もこのコマンドをやってから、(use-package :cl-cairo2) などをすれば良い。
MacVim + slimv + sbcl
MacVim に slimv を導入してみた。使う Lisp は sbcl にすることにした。
環境:
Vim には NeoBundle が導入されていると仮定します。NeoBundle が分からない場合は Google 先生などに聞いてください。
~/.vimrc に以下を追加します。
NeoBundle 'https://bitbucket.org/kovisoft/slimv'
let g:slimv_lisp='/usr/local/bin/sbcl'
let g:slimv_swank_cmd='!osascript -e "tell application \"iTerm\"" -e "tell the first terminal" -e "set mysession to current session" -e "launch session \"Default Session\"" -e "tell the last session" -e "exec command \"/bin/bash\"" -e "write text \"sbcl --load ~/.vim/bundle/slimv/slime/start-swank.lisp\"" -e "end tell" -e "select mysession" -e "end tell" -e "end tell"'
sbcl のパスは環境によって違うので、自分の環境に合わせて変更してください。また slimv_swank_cmd は iTerm を用いる場合です。もし Terminal を使う場合は slimv の公式サイトに例があったと思いますので、そこを参照してください。
NeoBundle 'https://bitbucket.org/kovisoft/slimv'
ですが、:NeoBundleInstall する際に mercurial がインストールされていないとコケます。なのであらかじめインストールするようにしてください。Homebrew を使っているなら
で良いです。
最後に ~/.sbclrc に
(require 'asdf)
を追加してください。これで拡張子 .lisp のファイルを MacVim で開くと Slimv というのがメニューに現われるはずです。あとは ,c と入力すれば自動的に swank サーバが起動します。Slimv の詳しい使い方は公式のチュートリアルかマニュアルに投げる事にします。
MacVim に Powerline を入れる
Qiita で Powerline の記事を見つけたのでうちの MacVim にも入れてみた。
結局色々な記事を飛び回ってやっとインストール出来たので、ここに参考になったサイトをまとめます。
MacVim のバージョンは Custom Version 7.3 (KaoriYa 20121213)。
Vim のパッケージマネージャ NeoBundle を使うので git が必要。
また Powerline はフォントにパッチを当てる事で、より美しい表示が可能。
パッチを当てる為には homebrew 等であらかじめ fontforge を入れておく必要がある。
まずは以下を参考に NeoBundle をインストール
NeoBundleの導入
次に NeoBundle を使って Powerline をインストール
powerlineをいつ使う?今でしょ!
vi 上で :NeoBundleInstall コマンドを実行するのを忘れずに。
これで Powerline は入ったが、フォントが化けているはず。
パッチを当てたフォントを使い化けを解消したい。
上の Powerline の記事を参考にフォントを作ろうと思ったが、Ricty なんてフォント入っていなかった。
Google 先生に聞いてみると、以下がヒットした。
プログラミング用フォント Ricty
無理にこのフォントを使わなくても良いのだろうが、せっかくなので書いてある通りに Ricty を作って使うことにした。
出来た Ricty にパッチを当てて Mac で使えるようにしておく。(普通はダブルクリックすればインストールされる。)
最後に、~/.gvimrc へ
set guifont=Ricty\ Regular\ for\ Powerline:h14
と書き込む。
これで無事文字化けが解消されて Powerline が使えるようになるはず。
参考にしたサイト