Hatena::ブログ(Diary)

Hacking My Way 〜 itogのhack日記 RSSフィード Twitter

2015-07-29

yoctoで起動スクリプト(systemd)

edisonの標準OS yoctoでは起動スクリプトにsystemdが採用されている。SystemVとは全く違った概念でランレベルとかもなくなったようだ。

systemdでは制御対象を、サービスや従来で言うランレベルに近いものを内包したユニットという単位で管理する。

edisonでシステム起動時にデーモン起動などをするには以下の手順でユニットを追加、有効化する。

hogeというユニットを追加する場合"/etc/systemd/system"以下に*.serviceというファイルを作成し、以下の様にする。

# vi /etc/systemd/system/hoge.service
[Unit]
Description=hoge service

[Service]
ExecStart=/usr/bin/hoge

[Install]
WantedBy=multi-user.target 

書式は他所を参照してくださいw

これでsystemdから認識されるはず。"systemctl status"でstatusをチェックする。ファイル名が間違ってたりするとこの時点でエラーになる。以下のようになればOK

# systemctl status hoge
● hoge.service - hoge service
   Loaded: loaded (/etc/systemd/system/hoge.service; disabled)
   Active: inactive (dead)

これで準備OK。"systemctl enable"で有効にする。

# systemctl enable hoge
ln -s '/etc/systemd/system/hoge.service' '/etc/systemd/system/multi-user.target.wants/hoge.service'

再起動すると、スタートアップ時にサービスで指定したスクリプトが実行されているはず。


参考)

https://wiki.archlinuxjp.org/index.php/Systemd_FAQ?rdfrom=https%253A%252F%252Fwiki.archlinux.org%252Findex.php%253Ftitle%253DSystemd_FAQ_%2528%2525E6%252597%2525A5%2525E6%25259C%2525AC%2525E8%2525AA%25259E%2529%2526redirect%253Dno#.E3.83.96.E3.83.BC.E3.83.88.E3.83.97.E3.83.AD.E3.82.BB.E3.82.B9.E3.81.AE.E9.96.93.E3.81.AB.E3.82.B9.E3.82.AF.E3.83.AA.E3.83.97.E3.83.88.E3.82.92.E8.B5.B7.E5.8B.95.E3.81.99.E3.82.8B.E3.81.AB.E3.81.AF.E3.81.A9.E3.81.86.E3.81.99.E3.82.8C.E3.81.B0.E3.81.84.E3.81.84.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F

http://wiki.bit-hive.com/tomizoo/pg/systemd%20%26%20systemctl

2015-07-27

Macで「このアプリケーションで開く」のゴミを消す方法

ファイルを右クリックして「このアプリケーションで開く」または"Open With"を選択すると、関連付けられたアプリが表示されてどれで開くか選択できるんだけど、アプリを削除してもアップデートされないようだ。

で、こんなふうに古いアプリが残っちゃったりする。

f:id:itog:20150727212726p:image

これを解消するには、コマンドラインで以下を実行するだけ!(10.5〜)

$ /System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -kill -r -domain local -domain system -domain user

これでDBが再構築されて、現在インストールされているアプリだけが表示されるようになる。

参考)

http://lifehacker.com/5708820/how-to-clean-up-your-macs-open-with-contextual-menu

2015-07-17

「通信の最適化」チェッカーをつくった

「通信の最適化」が議論を呼んでいる。通信内容に含まれる画像や動画などのファイルを、ソフトバンクが強制的に不可逆圧縮をしていて、それを利用するアプリで不具合が生じたために大きな話題となったようだ。

詳しくはこの辺りを参照。

ソフトバンク、「通信の最適化」は『正当業務行為』。解除不可 - Engadget Japanese

「通信の最適化」に関する高木浩光氏の見解 - Togetterまとめ

事の良し悪しとは別として、実際にどういった条件で、どれくらい最適化されるのか知りたかったのでアプリを作ったみた。

【実験用アプリ】「通信の最適化」チェッカー - Google Play の Android アプリ

ファイルをサーバにアップロードし、同じファイルをダウンロードして、アップロード前のファイルとダウンロード後のファイルのダイジェストを比較して同じかどうかチェックするだけのアプリ。

WiFi環境でやると当たり前だがファイルの内容が変わるということはない。ソフトバンクの回線でもやってみたが、3MBほどのjpgファイルでは圧縮はされなかった。それ以上大きいファイルはパッと手元になかったのでやってないので、ファイルと帯域に余裕のある人はやってみてくださいw

2015-07-14

Xcode7でios8.4の実機がunavailableになる問題の対策

Xcode7 betaでiOSを8.3から8.4にアプデするとターゲット選択画面でunavailableになって実行できなくなる。

f:id:itog:20150714145034p:image

これはxcode7のdevice supportにiOS8.4が追加されていないため。

$ ls /Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/

6.0/ 7.0/ 8.1/ 8.3/

6.1/ 7.1/ 8.2/ 9.0 (13A4293g)/

xcode6だとこんな感じ。

$ ls /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/

4.2/ 5.0/ 6.0/ 7.0/ 8.0/ 8.2/ 8.4 (12H141)/

4.3/ 5.1/ 6.1/ 7.1/ 8.1/ 8.3/

この"8.4 (12H141)"をxcode7のdevice supportに加える。

$ cp -a /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/8.4\ \(12H141\) /Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/

xcode-beta再起動すればOK.

ちなみに、8.x系の端末でDeployment Targetが9.0だと以下のようになる。

f:id:itog:20150714145035p:image

2015-07-02

Macでファイルのタイムスタンプを変更する

タイムスタンプとは

まずおさらいですが、PC上で作られ、編集されたファイルには自動的に作成日(created), 編集日(modified)といったタイムスタンプが付加されます。

通常は自動で付加されたタイムスタンプを変える必要はありませんが、現在時刻設定が間違っていた場合、タイムスタンプも間違ってしまいます。

MacやWindowsと行った普段使っているPCではあまり起こりませんが、デジカメなど電池が切れると時刻設定がリセットされてしまう機器を使う場合は注意です。

間違った時刻が記録されてしまった場合は以下の方法でで修正できます。

編集日を変更する

編集日を変更したい場合、実際にファイルを開いてなにか編集して保存してもOKですが、touchコマンドを使えば簡単に出来ます。

usage: touch -t CC]YY]MMDDhhmm[.SS] file

  • ex)

$ touch -t 201506301000 hoge.txt

作成日を変更する

ファイル作成日を変更するにはXcode Command Line Toolsに含まれるSetFileコマンドを使います。

Xcode Command Line Toolsをインストールしていない場合は先にインストールする必要があります。

yosemiteだとコマンドを打てばインストールを促すダイアログが出るっぽいです。

参照) Xcode Command Line Tools · Yosemite · Install

SetFileコマンドが使えるようになったら以下コマンドで作成日を変更出来ます。

usage: SetFile -d mm/dd/[yy]yy [hh:mm[:ss] [AM | PM)* file

  • ex)

$ SetFile -d "06/30/2015 10:00" hoge.txt

以上です。

あわせて読みたいブログパーツ テクノラティのお気に入りに追加する