Digitra

LINUXサーバの設定やプログラムのことなどを中心にブログを書いています。

cronで1分以下の実行をさせる方法

sleepさせてから実行するプロセスを一気に作ってしまうことで実現します。

 

* * * * * for i in `seq 0 15 59`;do (sleep ${i} ; /path/to/script &> /tmp/script.log ) & done;

 

上の例だと、15秒おきに実行となる。

sleep 0 ; /path/to/script &> /tmp/script.log
sleep 15 ; /path/to/script &> /tmp/script.log
sleep 30 ; /path/to/script &> /tmp/script.log
sleep 45 ; /path/to/script &> /tmp/script.log

のプロセスが出来て、15秒おきの実行が実現できる。

GoogleMapApiで地名と緯度経度を相互変換する

GoogleMapのAPIで地名と緯度経度を変換するAPIがあります。

今のところこのAPIデベロッパーキーなどの指定がなくても利用できるようなので、以下のようなPHPのコードで簡単に変換することが出来ます。

 

地名から緯度経度を得る

第一引数:地名
第二引数:検索結果の地名を何語で得るか(デフォルト日本語にしています)
返り値:GoogleMapGeocodeのAPIのレスポンスを連想配列にしたもの

function getGoogleGeoCode($location, $lang="ja") {    
    $url = "http://maps.google.com/maps/api/geocode/json?sensor=false";
    $url.= "&language=".$lang;
    $url.= "&address=".urlencode($location);
    $rawdata = file_get_contents($url);
    return json_decode($rawdata,TRUE);
}

 

緯度経度から地名を得る

第一引数:緯度
第二引数:経度
返り値:GoogleMapGeocodeのAPIのレスポンスを連想配列にしたもの

function getGoogleGeoAddress($lat, $lng) {
    $url = "http://maps.google.com/maps/api/geocode/json?sensor=false";
    $url.= "&latlng=".$lat.",".$lng;
    $rawdata = file_get_contents($url);
    return json_decode($rawdata,TRUE);
}

 

file_get_contentsの関数でURLをOpen出来ないようなサーバの場合は、 cURLとかで叩いてください。 

 

developers.google.com

 

PHP: file_get_contents - Manual

PHPでディレクトリ内のファイルをまとめて消したい

PHPでファイルを消すときにはunlink、ディレクトリを消すときにはrmdirを使いますが、ディレクトリ内のファイルをまとめて消す場合や、*でパターンで消したい場合は、

array_mapとglob関数を使って、消してあげましょう。

PHP: array_map - Manual

PHP: glob - Manual

 

例:

array_map('unlink', glob("/tmp/hoge/*.txt"));

 

とてもスマートですね。

iPhoneが突然電源が切れる問題は解決するのか

AppleがiPhone6Sが突然電源が切れる問題の交換プログラムが開始されたので、早速自分のiPhoneが対象になっているかを調べてみた。

iPhone 6s が突然シャットダウンする問題に対するプログラム - Apple サポート

 

シリアル番号は、「設定」>「一般」>「情報」を開いて、「シリアル番号」のところを長押しするとコピーできる。

 

で、入れてみたものの、おめーのは対象じゃないぜ!とのこと。マジかよ。。

 

更に来週には、iOSのソフトウェアアップデートで診断プログラムが配布されるとのことだ。

www.rbbtoday.com

 

そもそも、iPhone6Sに限定したAppleは対応をすすめているが、うちの嫁さんはiPhone5Sでも発生するし、同僚はiPhone6でも発生している。

しかも、自分含め、3人共、iOS10にアップする前には発生しなかった問題だ。

 

空気が原因だったという見解も出てきた。

japan.cnet.com

 

iPhone6Sの一部の機種はもしかするとそうなのかもしれないが、他のiPhone機種でも発生しているのだから、やはりOSの問題なのではないだろうか。

 

もし、バッテリーがヘタっているのだとしたら、残容量が十分にあるにも関わらず、突然電源が切れるのは、どうにも納得がいかない。

あるとしたら、実はバッテリーの残容量は殆どないにも関わらず、バッテリー残容量がまだ20%や30%あるように見えているバグだろう。

 

iOSのアップデートで直る問題なら良いのだが、今のiOSがバッテリー周辺のモジュールをぶっ壊してしまうようなもので、世界中の新旧iPhoneをぶっ壊しているのだとしたら累計出荷台数10億台超えているから大変なことだ。

 

 

MacでEclipseが起動しなくなったと思ったらiCloudのせいやった

MacBookAirでEclipseを使っているのですが、突然Eclipseを起動ができなくなりました。
ログを見ろとことなので、見てみると

java.lang.NoClassDefFoundError: Could not initialize class jp.sourceforge.mergedoc.pleiades.aspect.resource.Translations

 

と出力されている。
んなとこ、触ってないがな!!
と原因を調べてみると、必要なファイルが見つからないようだ。

MacOS Sierraになってからか、利用頻度の少ないファイルをiCloudに勝手にどんどんアップして、ローカルストレージを節約していくような機能がついたようで、ローカルの実体ファイルがなくなっていたりします。
普通のファイルとかだったらアクセスしたときにiCloudからダウンロードしてくるので問題ないですが、アプリケーションでファイルチェックしているような場合は困るわけです。

私の場合は、Eclipseをダウンロードして ~/Documents/以下に展開していたので、iCloudが親切にもアップしてくださっていたようです。
EclipseのアプリディレクトリにiCloudの雲のマークがついていたので、これをクリックするとそのディレクトリ以下のiCloudにアップロードしていたファイルをダウンロードしてきてくれます。

ダウンロードが終わったら、再度Eclipseを起動してみると、何事もなかったように動く。
あーよかった。っと数日経つとまたiCloudさんが勝手にアップしてEclipseが起動できなくなっていた。

~/Documents/ 以下にアプリ置いてんじゃないよってことだろうから、Eclipseの置き場所を ~/MyApp/ とかのディレクトリ作ってお引越しします。

VisualStudio for Macインストールに失敗したゴミを消すよ

VisualStudio for Macのプレビュー版やて?よっしゃインストールしてやるぜ!
MacBookAir(128GBモデル)のストレージの残量18G、いけるやろ!!
と意気込んで、インストールを始めるものの、ま~サイズの大きいこと。
インストール途中でストレージが足りなくて断念したですよ。


インストーラをQuitしたものの空き容量は戻らず。
こりゃ、手動でアンインストールして上げないと駄目かな。
ということで、以下のファイルを消しまくって、なんとか元のストレージ空き容量まで戻しました。
 

~/Library/Caches/com.xamarin.universalinstaller
~/Library/Caches/XamarinInstaller
~/Library/Developer/Xamarin
~/Library/Logs/XamarinInstaller
~/Library/Preferences/Xamarin
~/Library/Xamarin
~/.local/share/MonoForAndroid
~/.local/share/Xamarin
/Developer/MonoTouch
/Developer/MonoAndroid
/Library/Frameworks/Xamarin.Android.framework
/Library/Frameworks/Mono.framework

インストールの段階にもよるかもしれないけれど、以下のディレクトリも出来ている場合があるらしいのであれば消す。

~/.local/share/XamarinInsights
~/Downloads/app-crm-master
~/Library/Preferences/XamarinStudio-5.0
~/Library/Logs/XamarinStudio-5.0
~/Library/Logs/XamarinStudio-6.0

他にもゴミがないかをfindで調べておこう

$ sudo find / -iname *xamarin*

 

新しいMacBook買おうかな。。

Magsafeで充電がなかなかされないのだよ!

私の使っているMacBook Airは2011 Midモデル。

もう5年も前のモデルになるがOSはまだ更新対象になっているし、動作はそれほど遅いと感じない。 内蔵SSDが128GBなので万年ストレージ不足で悩ましいぐらい。

JetDrive欲しいが、そろそろXCodeなどのツールがこのモデルでは使えないとかになると、 買い替えが必須なので、JetDriveにも手を出す時期かどうかの判断も迷うところ。

 

それはさておき、この頃、Magsafeでの充電が中々うまくいかない。

何度も挿しなおしてようやく充電されるといった症状。

Magsafeの純正アダプターは1年ちょっとで断線したので、その後は非正規の Magsafe互換アダプターを利用していて、今までは快調であったが、2台とも最近調子が悪い。

 

新しいアダプターを購入

1台はL字型で、接続をするとノイズが発生するのか、なぜかトラックパッドがまともに動かなくなる。 もう一台はT字型で、ノイズの問題はない。

2台とも何度も抜き差ししないと充電が始まらない。

T字型の方は、2013年の夏に買ったので、2年半以上使ったのでそろそろ寿命かなと思い、 新しいMagsafe(L字型)を昨日購入したが(これも非正規品)、充電が始まらない。

もしや本体かと、同僚にT字型のMagsafeを使ってもらうと、問題なく充電される。

新しく買ったL字型のMagsafeも使ってもらうがこちらも問題ない。

MacBook Air本体の問題? アダプターが問題ないとなると、MacBookAir本体の問題となる。 Magsafeの接点の汚れのせいかなと思い、KUREの接点復活剤スプレーを買いに行って、 早速接点のお掃除をしてみた。

 

Magsafe接点のお掃除

KUREの接点復活剤スプレーの注意書きに電源を落としてから作業しましょうと書いてあるので、 Macbook Airのシャットダウンを行う。

ただし、シャットダウンしてもノートPCは バッテリーで通電しているので、しっかりと電源を落とすために、バッテリーを取り外す。

底面から星形のドライバーで背面の10個のネジを取り外す。

底面のパネルを取り外したら、これ以上のネジを取る分解はしなくて大丈夫。

バッテリーとメインボードを繋ぐ電源のコネクタを引き抜く。

ディスプレイとキーボードの間にティッシュを挟み、下にタオル引いて、 MagsafeコネクタにKURE接点復活剤スプレーをプシュッと吹き付け、 綿棒で丁寧にお掃除。

 

Magsafeコネクタのボディ側の絶縁

以前より充電されやすくなった気がするがそれでも何度か抜き差しをしないと充電されないことがある。

手で接続の角度を少し変えてやると充電されやすいことから、どうも何かコネクタ接点の汚れ以外に 何か問題がありそうだなと。

綺麗になったコネクタをよくよく見てみると、Magsafeのマグネットとなっているピンの周りの接点(ボード側)の 白い塗料が劣化により剥がれたようになっている。

少し浮かせてやると充電されることから、おそらくこの塗料で絶縁して動作するようになっていると考えられる。

 

後から調べてみるとAppleのサポートにもしっかり 「アダプタの白い絶縁体が MagSafe コネクタの磁気端部からはがれている。」

 と記載があった。

 

絶縁テープを白い絶縁塗料の剥がれた上に貼り、再びMagsafeを接続してみるとあっさり充電されるようになった。

ということで、接点復活剤も新しいアダプターも買う必要はなかった。。_| ̄|○