PCの調子がおかしい

 マルチメディア(死語)サーバとして使っているShuttleのXS36V5だが、動画サイトを見るとクラッシュするようになった。Google ChromeでもFirefoxでも同様。

 メモリの不調を疑い、memtest86+を走らせてみたが完走。ならばと再インストール。だがインストールを完走できない。コピーの途中で止まってしまう。前回うまくいったHDDクリア法でも同様。

 次に疑ったのはHDD。

続きを読む

thunarのアクションで与える引数の挙動

 昨日の続き。

 普通の場合は特に気にすることはないが、ファイル名にスペースが含まれると挙動がおかしくなる。

 こんなphpスクリプトを作って、実行権限をつけて引数%Fを与えるよう設定し、2つのファイルを選択して右クリックメニューから実行してみる。ファイル名は"/tmp/Screenshot 2.png"と"/tmp/Screenshot 1.png"。

#!/usr/bin/php
<?php
$file='nanchara.txt';
array_shift($argv);
file_put_contents($file, $argv);
?>

 ダブルクオーテーションで囲んだ場合。

続きを読む

escapeshellarg

 phpでsyncthingサーバの新しいファイルをローカルにコピーするスクリプトを作っていたけど、一部のディレクトリでコピーできていない。ログを取るようにして原因発見。Androidのコラージュ作成ソフトが作成するファイルの名前にスペースが入っていたせいだった。
 いったんは$filename=str_replace(' ','\\ ',$filename);したけど、ちょっと検索してescapeshellargという関数があるのを発見。こりゃ便利だ。

 とはいえ、外部コマンドを呼び出すときはクォテーションで囲って、phpの関数に渡すときははずさないとうまくいかない。諸悪の根源はファイル名にスペースを入れるAndroidアプリだけど。

phpでinstagramをスクレイピングして更新時刻を得る

 instagramのAPIは自分のアカウントの情報しか得られないらしいが、サブアカウントの更新情報を更新情報ページに反映させたい。

 ならソースコードを見ればいいかと思ったが、大部分はJavaScriptで書かれているので、そのままではいかなそう。
 ふとスクレイピングという単語を思い出し、「instagram スクレイピング」で検索。
blog.xin9le.net

 なるほど、JavaScriptの変数にJsonとやら(名前は知っていた)の形式で書かれているらしい。Jsonはphpで簡単に扱えるらしい。

 で、作ったのが以下。エラー処理はテキトー。

続きを読む