nDiki : シンボリックリンク

シンボリックリンク - symbolic link

ツール

  • symlinks

2012年2月7日 (火)

Unison で同期しているディレクトリの一部を Dropbox フォルダへ移動してどこでも編集可能に

さくらのレンタルサーバ上にあるデータはローカルの Linux BOX と Unison で同期している。 この nDiki の記事も Emacsテキストファイルで作成した後、Unison で同期して公開している。

 [さくらのレンタルサーバ]
 /home/naney 
     |
   <Unison> 同期
     |
 [ローカル PC]
 /home/naney/site/site_name/sync

ただこれだとローカル PC から離れている時の記事の下書きとか面倒くさい。ということで Dropbox 上に一部を置くことにした。同期している全てのデータを Dropbox 上に置くのはナンセンスなので、一部のディレクトリのみ。

Dropbox フォルダ側は単一のディレクトリツリーである必要があるので、Unison で同期しているディレクトリのツリーの一部を Dropbox フォルダ上へ移動し、シンボリックリンクに置き換え。Unison の設定ファイルに follow = path share/some_dir を追加してそのディレクトリはシンボリックリンクを辿ってその先の中身で同期するようにした。

 [さくらのレンタルサーバ]
 /home/naney 
     |
   <Unison> 同期
     |
 [ローカル PC]
 /home/naney/site/site_name/sync
     /home/naney/site/site_name/sync/share/some_dir
         |
       <symbolic link>
         |
     /home/naney/var/Dropbox/site/_name/sync/some_dir
 /home/naney/var/Dropbox/site/_name/sync
    |
 [Dropbox]

これで Dropbox を入れた他の PC や Android 端末から記事の作成・編集ができるようになった。

ちなみに Google Chrome に SourceKit をインストールすると、Web ブラウザ上から直接 Dropbox 上にテキストファイルを作成したり既存のテキストファイルを編集したりできて便利。 テキストファイルUTF-8LF になるのでいい感じ。

[ 2月7日全て ]

2012年7月19日 (木)

JavaScript ソースコードフォーマッタ JS Beautifier

ちょっと JavaScript コードを書く機会が増えてきそう。 そうなると、Perl コードを書く時には perltidy が手放せないように、JavaScript ソースコードフォーマッタが必要だ。 なのでとりあえず検索してよくひっかかってきた JS Beautifier を使ってみることにした。

JavaScript で書かれたバージョンと Python で書かれたバージョンがあって、後者の方はそのままコマンドラインからの呼び出しできるようになっているので、それを使うようにしてみる。

手元の環境だと Python の dev 系のファイルがインストールされていなくて setup.py が通らないので、Python からマルっと入れた。

 $ tar zxvf Python-2.7.3.tgz
 $ cd Python-2.7.3
 $ ./configure --prefix=$HOME/local/python-2.7.3
 $ make
 $ make altinstall

Python をインストールしたら JS Beautifier をインストール。

 $ git clone https://github.com/einars/js-beautify.git
 $ cd js-beautify/python
 $ $HOME/local/python-2.7.3/bin/python2.7 setup.py install

$HOME/local/python-2.7.3/bin/js-beautify がインストールされる。PATH の通ったところにシンボリックリンクしておく。

あとは Emacs から実行できるように設定。

 (defun js-beautify-region()
   "Run js-beautify on the current region."
   (interactive)
   (save-excursion
     (shell-command-on-region (point) (mark) "js-beautify -i" nil t)))

を設定しておいて、整形したいところをリージョン選択してから M-x js-beautify-region を実行するとその範囲を整形してくれる。

ちょっと使ってみた範囲では、大外ししてインデントメチャクチャとかは無かった。perltidy ほど賢くない感じだけれど、これで一貫したスタイルで書けるようになるのでいい感じかな。

[ 7月19日全て ]

2013年7月2日 (火)

Fedora 17 の home 以下に GHCHaskell Platform をインストール

Fedora 17 の home 以下に GHCHaskell Platform をインストールの、ちょっと手を入れる必要があったのでメモ。

libgmp.so.3

GHC で libgmp.so.3 が必要だけれど無いので libgmp.so.10 にシンボリックリンクを作ってごまかす。

 mkdir ~/lcoal/lib
 cd ~/local/lib
 ln -s /usr/lib64/libgmp.so.10 libgmp.so.3
 export LD_LIBRARY_PATH=$HOME/local/lib

GHC 7.6.3

 cd ~/install
 wget http://www.haskell.org/ghc/dist/7.6.3/ghc-7.6.3-x86_64-unknown-linux.tar.bz2
 tar jxvf ghc-7.6.3-x86_64-unknown-linux.tar.bz2
 cd ghc-7.6.3
 ./configure --prefix=$HOME/local/ghc-7.6.3
 make install
 ~/local/ghc-7.6.3/bin/ghci           # インタプリタ起動してみる。
 PATH=$PATH:$HOME/local/ghc-7.6.3/bin

Haskell Platform 2013.2.0.0

 cd ~/install
 wget http://lambda.haskell.org/platform/download/2013.2.0.0/haskell-platform-2013.2.0.0.tar.gz
 tar zxvf haskell-platform-2013.2.0.0.tar.gz
 cd haskell-platform-2013.2.0.0
 ./configure --prefix=$HOME/local/haskell-platform-2013.2.0.0

OpenGL 関連のライブラリが入っていないホストで、かつとりあえず必要無さそうので適当に消す(なんで OpenGL いるのー)。

  • configure.ac の Check for OpenGL and GLUT のところを全部コメントアウト。
  • packages/platform.packagesから以下を削除。
    • GLURaw-1.3.0.0
    • OpenGL-2.8.0.0
    • GLUT-2.4.0.0
    • OpenGLRaw-1.3.0.0
  • packages/haskell-platform-2013.2.0.0/haskell-platform.cabal の build-depends からも上記のパッケージ名を削除。

あとこのままだと GHC_PACKAGE_PATH 云々とエラーが出て止まるので script/build.sh をいじる。 以下をコメントアウト。

 GHC_PACKAGE_PATH="${ORIG_GHC_PACKAGE_PATH}" \

あとは configure を作り直してビルド

 ./autoconf
 ./configure --prefix=$HOME/local/haskell-platform-2013.2.0.0
 make
 make install
 PATH=$PATH:$HOME/local/haskell-platform-2013.2.0.0/bin
[ 7月2日全て ]

2013年8月1日 (木)

Migemo が無いとイラッとするので。

普段 Migemo 使っているので、それの入っていない開発環境だとちょっと不便だなということで、ソースから入れる。

C/Migemo をインストール

Migemo だと Ruby のパッケージも入れる必要があるので、ここは C/Migemo で。

 git clone https://github.com/koron/cmigemo.git
 cd cmigemo
 ./configure --prefix=$HOME/local/cmigemo
 make gcc
 mak gcc-dict
 make gcc-install

LD_LIBRARY_PATH=/home/naney/local/lib にしているので C/Migemo のライブラリへのシンボリックリンクをそこに作る。

 cd ~/local/lib
 ln -s $HOME/local/cmigemo/lib/libmigemo.so* .

Migemo

migemo.el だけ Migemo の tarball からもらう。Ruby のライブラリ入れてないため configure が通らないので、手で migemo.el.in から migemo.el に変換する(@pkgdatadir@ を置換)。

 wget http://0xcc.net/migemo/migemo-0.40.tar.gz
 tar zxvf migemo-0.40.tar.gz
 cd migemo-0.40
 sed -e 's!@pkgdatadir@!/home/naney/local/migemo/share/migemo!g' migemo.el.in > migemo.el
 cp -a migemo.el <自分の site-lisp なディレクトリ>

Emacs の設定

設定ファイル (~/.emacs.d/init.el とか)に設定を追加。

 (when (load "migemo" t)
   (setq migemo-use-pattern-alist t)
   (setq migemo-use-frequent-pattern-alist t)
   (setq migemo-command "/home/naney/local/cmigemo/bin/cmigemo")
   (setq migemo-options '("-q" "--emacs" "-i" "\a"))
   (setq migemo-dictionary "/home/naney/local/cmigemo/share/migemo/euc-jp/migemo-dict")
   (setq migemo-user-dictionary nil)
   (setq migemo-regex-dictionary nil))
[ 8月1日全て ]

2014年12月20日 (土)

aufs で ro なブランチに書き込まれたかと思った

かなり久しぶりに aufs を使った Web サイトのドラフト作成をしようと思ってマウントしたのだけれど、なぜかスタックされた ro の方のディレクトリのファイルが書き変わってアレレとなった。

しかもディレクトリによっては rw の方にきちんと変更が書き込まれて、ro は変更されないようにきちんとなっている。

なんだろうと思ってしばらく調べた結果、一部のディレクトリはシンボリックリンクaufs でマウントした外のディレクトリを指していてアウトオブ aufs だったというオチ。ああ。

今日のさえずり: やられたー。イチゴが高くなってる。

2014年12月20日

[ 12月20日全て ]

2018年2月26日 (月)

Markdown で書いているノートWeb ブラウザで見るのに MkDocs を使う

ノート/メモははライティングアプリ Ulysses を使い Markdown で書いていて、検索・閲覧・整理も Ulysses で基本済ませています。ただいくつかの良く参照するファイルはブックマークやハイパーリンクから Web ブラウザでさっと表示させたかったりします。なので以前は Plack::App::Directory::Markdown を使った自作 PSGI アプリケーションを使ってました。

が、セットアップしたり保守したりという手間を今とれないなと思って、 Markdown ビューアを探してみたところ MkDocs が良さそうなので試してみました。

  • http://www.mkdocs.org/ (公式サイト自体が MkDocs で作られているのでどのような表示になるか確認できます)

MkDocs を Homebrew で入れてみる

MacBook ProHomebrew で入れて動かしてみます。

 $brew install MkDocs
 $mkdir -p ~/var/mkdocs
 $cd ~/var/mkdocs
 $mkdocs new local
 $cd local
 $mkdocs serve

Web サーバが立ち上がるので http://127.0.0.1:8000/ にアクセスすると ~/var/mkdocs/local/docs/index.md の内容を HTML に変換したものが表示されます。お手軽! 設定変更は ~/var/mkdocs/local/mkdocs.yml できます。

あとは docs の下に Markdown ファイルを置いておけば Web ブラウザで閲覧できます。docs の下に既存の Markdown ファイルノートディレクトリへシンボリックリンクを作ればそれらも辿って表示されます。

pip で入れ直す

試していてブラウザでのレンダリング表示が重いなと思って HTML ソースを見たら同じ JavaScript ファイルを何十回も読み込んでいて何か変ぽかったので Homebrew のをやめて pip で入れなおしました。どちらも現在 mkdocs 0.17.2 ですが pip で入れた方は問題なかったのでこちらを使うことにします。

 $brew uninstall mkdocs
 $brew install python
 $pip2 install mkdocs

MkDown は静的サイトジェネレータで、プレビューサーバは補助的機能ですがまずまず使えそうです。

[ 2月26日全て ]

2019年2月21日 (木)

Google ドライブ ファイル ストリーム駄目だった

MacBook Pro のリプレースにあたり Google ドライブのローカルへの同期を「ドライブ ファイル ストリーム」にしてみたんだけれど、自分の使い方ではデメリットが多いので即日「バックアップと同期」に戻した。

ドライブ ファイル ストリームにしようと思った理由

  • 共有ファイルを気軽にマイドライブに追加してたらどんどんファイルが増えた。
  • ファイルのオーナー引き継ぎを何度も受けてどんどんファイルが増えた。
  • シンボリックリンクがないので「追加」多用しているのだけれど、これバックアップと同期ではローカルにそれぞれ実体ができて無駄な感じになる。

ドライブ ファイル ストリームなら実体はクラウドストレージ側にあるのでファイル数が多くてもへっちゃらではないか。そう思ったわけです。

ドライブ ファイル ストリームにしたら困ったことに

機能比較で「Microsoft OfficePhotoshop などのネイティブ アプリを使用する」とあったので、 Google Chrome 拡張機能の Application Launcher for Drive (by Google) が使えると思ったら使えなかった。ファイルシステム上で開けるという意味だったようだ。この拡張機能がないと「Chrome 上で Google ドライブ検索してからの、ネイティブアプリで閲覧編集」という使い方ができないので劇的に不便になる。

それから Finder (Path Finder でも)ブラウズできないフォルダがあってこちらは致命的な問題。ターミナルで cd していけるのだけれど Finder では駄目。これは駄目。

バックアップと同期に戻す

結局ドライブ ファイル ストリームはやめてバックアップと同期に戻すことにした。 archive フォルダをマイドライブ直下に作ってここは同期しないことにし、いったん全部そこに移動した。

選択同期は面倒なので今まで避けてきたけれどしかたあるまい。今後は作業中のフォルダだけ同期することにする。

[ 2月21日全て ]

2021年1月5日 (火)

最近の Unisonビルドする

双方向ファイル同期化ツール Unison File Synchronizer、 Mac で使っているのが Unison 2.48.6 の GUI 版なのだけれど、古いせいか macOS Catalina だと「Install command-line tool」 が機能しない(/usr/bin にインストールしようとしているからかな)。

macOS 上で text UI 版がちょっと使いたい & GUI 版も新しいのにしたいなと思ってビルドとかした。

現在の Unison のバージョン

2021年01月05日時点での安定版は 2.51.3

Homebrew で入れる

 $ brew install unison

で text UI 版の「unison version 2.51.3 (ocaml 4.10.0)」が入る。GUI 版は入らない。

macOS Catalina 上でビルドする

Unison 最新版のバイナリ配布が見当たらないのでビルドしてみる。 Xcode が必要。

 $ xcode-select --install

で入る Command Line Tools だけだと text UI 版の Unison しかビルドできないので App Store から Xcode をインストールした。

OCaml は Homebrew ので済ます。

 $ brew install ocaml

今日時点で入るのは OCaml 4.10.0 だ。次に Unison 2.51.3 をビルドする。

 $ cd ~/tmp
 $ curl -OL https://github.com/bcpierce00/unison/archive/v2.51.3.tar.gz
 $ tar zxvf v2.51.3.tar.gz
 $ cd unison-2.51.3
 $ make all

make だけだと text UI 版しかビルドされないので make all してみた。が残念 GUI 版はエラーで途中で止まった。今はうまくビルドできないのかもしれない。

諦めて make で text UI 版だけバイナリを得ることにした。 make 後

 $ ./src/unison -version

で実行できることを確認。 ./src/unison を適当なところにコピーしておく(これなら brew install unison で十分だった)。

FreeBSD 上でビルド

ローカルホストの Unison とリモートホストの Unison のバージョンが合っていないと同期できないのでリモートホスト側 (FreeBSD 9.1-RELEASE-p24) でも同じバージョンのものをビルドする。さくらのレンタルサーバ プレミアムで root 権限はないのでユーザー権限にて。

まずは OCaml。最近の OCaml は opam というのでインストールして使うのが流儀らしい。 opam をインストール。

 $ cd ~/tmp
 $ mkdir bin
 $ curl -OL https://raw.githubusercontent.com/ocaml/opam/master/shell/install.sh
 $ BINDIR=$HOME/tmp/bin sh install.sh

リモートホストの環境に合ったプレビルドが無いとエラーが出て install.sh ではインストールできず。

OCaml の前に遡って opam のビルドをする。

 $ cd ~/tmp
 $ curl -OL https://github.com/ocaml/opam/archive/2.0.7.tar.gz
 $ tar zxvf 2.0.7
 $ cd opam-2.0.7
 $ gmake cold CONFIGURE_ARGS="--prefix ~/tmp/opam"
 $ gmake cold-install

ビルドできた。opam を初期化する。

 $ PATH=$HOME/tmp/opam/bin:$PATH
 $ opam init

gpatch が無いとエラーで止まった。 patch へのシンボリックリンクで gpatch を作ってイケるかなと思ったけど今度は別のエラーで止まる。うーん。 opam で OCaml をインストールするのは断念。

OCaml のドキュメントを読んだら今まで通り configure して make も普通にできるじゃない。

 $ curl -OL https://github.com/ocaml/ocaml/archive/4.10.0.tar.gz
 $ tar zxvf 4.10.0.tar.gz
 $ cd ocaml-4.10.0
 $ ./configure --prefix $HOME/tmp
 $ gmake
 $ gmake install

次に Unison 2.51.3 をビルドする。出来上がったバイナリは今使っている Unison 2.48.3 と併用できるように別のディレクトリへ。

 $ cd ~/tmp
 $ curl -OL https://github.com/bcpierce00/unison/archive/v2.51.3.tar.gz
 $ tar zxvf v2.51.3.tar.gz
 $ cd unison-2.51.3
 $ PATH=$PATH:$HOME/tmp/bin
 $ gmake
 $ ./unison -version
 $ mkdir -p $HOME/local/unison-2.51.3/bin
 $ cp -a src/unison $HOME/local/unison-2.51.3/bin

サイト

[ 1月5日全て ]

2021年3月3日 (水)

今日のさえずり: ひな祭りなのでから持たされた餅を食べます

[ 3月3日全て ]

2022年1月15日 (土)

今日のさえずり: 電子レンジで温めたカントリーマアムうまーい

  • 08:59 惚れ惚れする曲線。すっきりとした空。 #photography RICOH GR IIIx #GR #GRIIIx #GR3x https://t.co/RkFemjGvv6
  • 13:34 午前中にパイ活動してきた。カスタードクリームとメープルシロップソースのハーモニー。 なお、隣の人は話題のハッシュポテト食べてた。 https://t.co/ftt0Y5DUAy
  • 14:56 カクノにブルーブラックインキを入れた。 透明オレンジ、めちゃかわいい! https://t.co/kkEWQMb6BU
  • 15:17 普段 B (太字)から研ぎ出した F (細字)で走り書きしているのでカクノの F が結構細く感じた。 でも店頭に透明オレンジの M (中字)は無かったので、カラー優先でこれでヨシ。
  • 15:20 ロルバーン ポケット付メモMに書くならカクノの F (細字)合ってるかもね。 M (中字)で走り書きするならロルバーン ポケット付メモLぐらいのノートがいい。
  • 15:58 シンボリックリンクだと思って削除したの、1つだけ通常のファイルだった。消えた。
  • 15:59 ふう、 Time Machine バックアップから戻した。
  • 16:21 電子レンジで温めたカントリーマアムうまーい。
  • 19:24 シャワートイレの電源ランプが猛烈に点滅している。取扱説明書によると点検時期が来ていることを表しているらしい。
  • 23:50 2022年1月15日(土) やったこと - 洗面室引き戸の戸車を掃除 - カナディアンメープルカスタードパイ - カクノ 透明オレンジにインクを入れる - カントリーマアムを電子レンジで温め
[ 1月15日全て ]

About Me

Naney Naneymx Naney

Naney (なにい)です。株式会社ミクシィで SNS 事業の部長をしています。

About nDiki

nDiki1999年1月に始めたコンピュータ日誌を前身とする NaneyWeb 日記(兼パーソナルナレッジベース)です。

#nNote タグがついている記事は他の記事に比べて、より断片的・未整理・不完全なちょっとしたノートです。まだ結論に至っていない考えなども含まれます。頻繁/大幅に更新したり削除したりすることがあります。

※本サイトの内容は個人的見解であり所属組織とは関係ありません。

最近検索されている記事

Other Notes

ナレッジベースアプリケーション Obsidian で書いているノートの一部を notes.naney.org で 公開しています。

月別インデックス
Process Time: 0.089971s / load averages: 0.85, 0.67, 0.58
nDiki by WATANABE Yoshimasa (Naney)
Powered by DiKicker