wifiのパスワードをハッシュ化する

raspberrypiでwifiの設定
/etc/wpa_supplicant/wpa_supplicant.confにSSIDとパスワードを書きますが、
そのwifiパスワードを直に書かない方法。

wpa_passphrase "SSID" "パスワード"

と入力すると、ハッシュ化されたパスワードが画面に出力されます。
それを書き込んで再起動します。

network={
   ssid="SSID"
   psk=ハッシュ化されたパスワード(※""は不要)
}

参考にさせて頂いたサイトはこちらです。

Jelly2の指紋認証を少し楽にする

最近、unihertzのJelly2を買いました。

なんと最初からケースも保護シールも付いてました。

買った目的は、電話とPayPay用の端末が欲しかったからです。
普段使いのスマホでペイペイを使おうとすると、指紋認証をするよう要求されます。
スマホに指紋認証をかけるのがずっとストレスだったので、その機能だけを分離しようと思ったのがですが、Jelly2の指紋認証の精度がとても悪い・・・

そこで考えたのが、同じ指の指紋を何個も登録してみようという。

一個は指の向きを色々変えてみたり、一個は同じ個所を何回も認識させてみたり、お風呂上がりのふやけた指を登録させてみたり。
すると指紋認証の精度が少しマシになった気がしました。
もっといい方法ないものか。。。

raspberry pi で固定ip

古い記憶をたどって /etc/network/interfaces を編集すると、

ここを編集するな、/etc/dhcpcd.conf を編集せよ、のようなことが書いてある気がする。

恐る恐る末尾に書き加えてみる
sudo vim /etc/dhcpcd.conf

interface eth0
static ip_address=192.168.1.100/24
static routers=192.168.1.1

とりあえず動いています。

ラジコを聞く~その2~

以前、raspberrypiでradikoを聞けるようにしましたが、いつの間にか聞けなくなってしまいました。AdobeがFlashのサポートをやめたことが関係しているとかいないとか。

別の方法はないかと思い検索していたらこちらのサイトを見つけました。感謝です。

まずはStreamlinkというものをインストール。こちらのサイトの通りにコマンド。

pip install --upgrade --user streamlink

すると
『Command “python setup.py egg_info” failed with error code 1 in /tmp/pip-build-uWhOKs/cryptography/』
というエラーが出てしまいました。
こちらのサイトを参考にさせて頂くと、必要なライブラリが足りないかもらしい。
試しに、

pip install cryptography

と打ってみると、エラーが出なくなりました。

次にmpvという再生アプリケーション(?)をインストール

sudo apt-get install mpv

後はスクリプトファイルを作りコマンドを実行。

#!/bin/sh
~/.local/bin/streamlink -p mpv http://radiko.jp/#!/live/FMT best

↑はFM TOKYOを聞く場合。
スクリプトファイルを作らずに直接コマンドを実行しても、何故かうまくいきません。

前の方法よりスムーズに聞けるようになりました。快適!

環境ってなんだ?

消しちゃった過去のブログから転載。というか転災。読み返すと恥ずかしい・・・

投稿日: 2011年1月22日

プログラミングに関して持っていた漠然としたイメージは、
プログラミング言語は書けばその通りに動いてくれる、というものでした。

でも違いました。動く「環境」が無いとプログラムはいくら書いても動かない。
そして「環境」の意味がわからなかった。

それ以前に、プログラミング言語が何種類もあるということすら知りませんでした。
自分が出会ったPHPという言語はその内の一つでした。

プログラミング言語には、その言語が活躍できる場所が決まっているそうです。

魚は水の中、鳥は空。
バスケットボールはバスケットコート、サッカーはサッカーコート、ゴールも設置されてないとできませんよね?

そんな感じで、PHPはサーバーの中で、javascriptはブラウザの中(※2021年現在はサーバーでも動きますが)で、他の言語は電車の自動券売機の中やカメラなどの電子機器の中、企業の基幹システムの中など、それぞれの場所でそれぞれの言語が適材適所で動いているんだそうです。

そのような言語が動く場所を「環境」と呼ぶんだそうです。
理解するまで時間がかかりました。

イラレ(Adobe)の解約料を0円にする

結論、こちらのサイトに書いてある通りにやったらうまくいきました。
ありがとうございました!

イラストレーター、慣れると便利で便利で、ちょっとした書類を作るのにも使っていましたが、使用頻度と月額のバランスが自分の中で崩れてきたので涙を飲んで解約しようと思い立ちました。
ところがいざ解約しようとするとそう簡単ではなく、途中解約料なるものが発生することがわかりました。
それを回避するためには一旦別のプランに変更し、改めて解約することで契約月に解約になり、解約料が発生しなくなります。

まず普通に解約しようとすると、

契約した時期によって途中解約手数料が発生します。

このとき、右下の解約ボタンは押してはいけません。

プラン変更をします。

適当なプランに変更します。

変更してしばらくは管理画面へのリンクが表示されません。

待つこと15分~30分、「プランを管理」が表示されるので先に進みます。

改めて、解約手続きをします。

途中解約料が発生しませんでした。

PHPでSqlite3を使おう(PDO)

Sqlite3、手軽で移行も楽で良いですよね。

PHPでPDOを使ってDBに接続するときいつも忘れてしまうのでメモ。

function db_connect($sql){
	try{
		$pdo=new PDO('sqlite:/path/db');//ここにSqlite3のファイルを指定
		$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
		$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE,PDO::FETCH_ASSOC);
		$stmt=$pdo->prepare($sql);
		$stmt->execute();
		$result=$stmt->fetchAll();
		unset($pdo);unset($stmt);
		return $result;
	}catch(Exception $e){echo $e->getMessage().PHP_EOL;}
}

DB作成
オートインクリメントの書き方もいつも忘れるのでメモ。

$sql='CREATE TABLE table(
	id INTEGER PRIMARY KEY AUTOINCREMENT,
	title varchar(255),
	contents text,
	status INTEGER
)';
db_connect($sql);

最後に、テーブルの存在を確認したいときのメモ。

$sql='SELECT count(*) FROM sqlite_master WHERE type="table" AND name="table"';
$res=db_connect($sql);
var_dump($res);

virtualbox、そんなことではまる?

消しちゃた過去のブログの記事から。

———-投稿日: 2011年6月19日———-

VirtualBoxをインストールして、仮想Ubuntuを立ち上げた。

しかし、起動しなおすたびにUbuntuをインストールする画面に戻されていた。

原因は仮想CDドライブにUbuntuのイメージファイルを入れっぱなしだったから。

なるほど。先が思いやられる。

———-過去記事終わり———-

読み返してちょっと笑いました。
微笑と苦笑。

Opera Neonをアンインストールする

Opera Neonというブラウザを使ってみましたが、斬新なUIに慣れずアンインストールしようとしたらうまくできませんでした。

コントロールパネルからアンインストールしようとすると、タスクバーにアイコンがピコピコするだけで先に進みません。

どうやら画面の外に
「本当にアンインストールしますか?
[yes] [no]」
的なダイアログが表示されてると思われます。わざとだとしたら陰湿です。

なので、タスクバーのアイコンをクリックや右クリックをして、見えないダイアログをアクティブにし、
エンターキーを押すと、yesが選択されたようにで、アンインストールが完了しました。
良かった。

昔感じたスーツとギークのすれ違い

昔書いて消してしまったブログから再掲。読み返したらちょっと面白かったので。
当時この記事を書いて先輩からスーツとギークという言葉を教わりました。
なので文中では営業ネイティブ、技術ネイティブという変な言葉を使ってますが、そのままに。
文章が乱暴だったので多少修正加筆を加えました。

——–以下過去の記事——–

タイトル:技術4ヶ月目の記録
投稿日: 2011年4月26日

会計事務所での営業職を退職し、PHPを始めて運良く技術の現場で働くことができ、思うことがあったので記録。
ただいま技術経験4ヶ月でわからないことだらけ、日々戸惑いを隠せません。
しかし、今後自分が技術をある程度習得したら、今の感覚を忘れてしまいそうなので言葉にしたいと思います。

営業の人と技術の人があるシステムを設計するためにミーティングをしていて、
その現場に自分もいて、会話のずれを感じました。ぼんやりとすれ違ってるなぁと思いつつ、両者は気付いていない様子。

技術専門の人と営業専門の人は、そもそも持っている文化も言葉もまったく違う人種なのに、
なまじお互い日本語を使っているので表面上の意味は通じてしまっているような、そんな感じがしました。

営業ネイティブは、システムを作るにあたって、どこがどう難しいのか、システムをどのような段取りで作るかわからず、
技術ネイティブは、お客さんの顔が見えず、お客さんがどうしたいか、何がしたいかがわからない。

営業ネイティブの人はお客さんから聞いた要望を、技術ネイティブに伝えますが、そこですれ違いが生まれているように感じます。
かといって技術ネイティブがお客さんのところに行けばいいと思いますが、それは難しいのです。
お客さんは別の仕事をなりわいとしているので、IT会社の営業職よりも当然システムに疎いからです。
意思疎通が難しくなります。

それと、気質として、営業ネイティブはモノを売る人で、「人を説得する」ことを大切にし、
技術ネイティブはモノを作る人で、「自分が納得する」ことを大事にしているように感じます。どちらが優れているという話ではありません。

例えば、

「仕様」という言葉があります。技術ネイティブと営業ネイティブではニュアンスが違います。
技術ネイティブにとって、仕様とは設計図のようであり、開発過程に入ってからの仕様変更というのは、家を建てているときに、まるで机や椅子でも動かす感覚で、やっぱ柱はこっちがいいなぁ、と言われるくらいの衝撃があります。
営業ネイティブにとっては、仕様とはお客様の要望を聞き取ったもので、開発過程でミーティングを重ね都度柔軟に書き換えるものです。

営業ネイティブが技術ネイティブに車を作ってくださいと言ったとして、
技術ネイティブは車の設計から始め、製作工程を見極め、段取りを取り、実際に開発作業にとりかかります。

そんなとき、仕様の変更。

営業ネイティブはプログラムをちょっと書き換えるだけだと思っています。プログラム=何でもできる、と思っているからです。自分もそう思っていました。
ところが、技術ネイティブにとってタイヤをキャタピラにしてくださいと言われたくらいの衝撃を受けます。
システムは目に見えないので、ちょっとした変更なのか大規模な変更なのか分かり辛いのです。
場合によっては設計からやりなおしなのです。

そして、タイミングや予算によっては、最初から作る余裕や時間もなくなって、
無理矢理組み上げた、キャタピラの上に車が乗っただけの、ギアをバックに入れるとキャタピラが逆回転して結果前に進む、みたいな謎のシステムが出来上がります。
ギリギリのラインで希望通りの動きをします。お客様にとっては一応思い通りに動くのでなんとか納品できますが、
営業ネイティブにとっても技術ネイティブにとっても満足のいくものが出来上がりません。

これがすれ違いが生む悲劇なのではないでしょうか。

自分は元営業なので、当初は、
プログラムは書けばその通りに動くと思っていましたし、「PHPをインストール」なんてまるで意味がわかりませんでした。
プログラミング言語なんて書けばどこでも動くと思っていました。
PHPはサーバーサイドで動くものだということを理解するのに時間がかかりました。インストールしないとサーバーがPHPを使えないということも理解するのに時間がかかりました。
JavaScriptはブラウザで動くものということも理解しずらかったです。
デザインと言われてもどこからどこまでがデザインで、どこまでがシステムなのかもわかりませんでした。
それはJavaScriptやPHPがどこで動いてどんなことができるのか、CSSは何ができるのか、システムがどのように開発されてゆくのかを見て、やってみて初めて理解しました。

技術ネイティブは、それが日常なので、それがわからない人の感覚がわからないのです。
自分はその両者の気持ちがわかる貴重な体験をしているような気がします。

今はそんな風に考えています。
半年後に読み返したら自分はどんな風に思うのでしょうか。きっと恥ずかしくて削除するかもしれません。

現在、ミーティング中にぼんやりしたすれ違いを見つけても言葉にできなくて、結局何も発言せずで終わってしまいます。
もう少し感覚を研ぎ澄ませて、営業ネイティブと技術ネイティブの通訳ができたらなぁと思います。
以上、散文でした。