Electronでパスワード生成アプリを作ってみる
どこかのサイトに登録する際に必ず指定するパスワードですが、
考えるのも面倒なので、ランダムな文字列を出力するシェルスクリプトを使っていました。
しかし、何回か使っているといくつか不満な点が・・・。
- パスワードに使用できない記号を含んでしまう
- 過去に似たようなパスワードになっている?($RANDOMを使っているから?)
そこで、勉強ついでにパスワード生成アプリを作ることにしました。
MacでもWindowsでも使いたいため、クロスプラットフォームで実装できるElectronを使用することに。(Electronを使う意味がない気がしますが、勉強ということで)
ひとまず、パスワード生成アプリに実装したい機能は3つ。
- 文字数が指定可能である
- 使用できない記号または使用できる記号が指定可能である
- パスワードの強度を判定する
Electronの使い方は、こちらのページを参考にHello Worldが表示されるところまでは実行できました。
qiita.com
実装
Hello Worldが表示される状態をベースに、パスワードを生成してalertで表示する処理を実装します。
パスワードを生成するjavascriptは、genPassword.jsとしてhtmlと同じ階層に作成しています。
html側
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Electron-Password</title> </head> <body style="background-color: #fff"> <p>パスワード生成プログラム</p> <button onclick="generatePassword()">パスワードを生成する</button> <script src="genPassword.js"></script> </body> </html>
function generatePassword() { var length = 10; // 文字数は10文字固定 var pw = ""; for (var i=0; i < length; i++) { pw += randomChar(); } alert(pw); } function randomChar() { var randChar = ""; var randNum; // 33 ~ 126までの乱数を取得 randNum = Math.round( Math.random() * 93 ) + 33; randChar = String.fromCharCode(randNum); return randChar; }
やっていること
- ボタンを押すと33〜126までの乱数を生成
- 乱数(asciiコード)から文字に変換
- 変換された文字をつなげる
Electron-Passwordという名前で作成したので、 以下コマンドで実行します。
このとき、Electron-Passwordの一つ上の階層で実行します。
> electron Electron-Password
実行の様子
デザインもへったくれもないので殺風景ですが、
実行すると、alertにて半角英数字+記号で構成された文字列が表示されます。
今のところ、3つの機能のうちの1つも実装できていないので、
次は文字数を指定できるようにしていきたいと思います。
Arduinoっぽいやつが届いた!
Amazonのサイバーマンデーセールで見つけたArduino互換品つきのスターターキットを買ってみた。
2300円くらいだったかな。
Elegoo UNO キット レベルアップ チュートリアル付 uno mega2560 r3 nanoと互換 Arduino用
- 出版社/メーカー: Elegoo
- メディア: その他
- この商品を含むブログを見る
7セグディスプレイとか、超音波センサ?とかいろいろ入っていていい感じですね。
ある程度のことは色々できそう。
CD-ROMには、WindowsとMacのArduino IDE(1.8.3)やサンプルコードも入っていたためすぐに始められそうです。(英語ですが・・・)
IDEは現時点では、若干古い程度ですが新しい方がよいという人は公式サイトからダウンロードしたほうがよさそうです。
まずはLチカからぼちぼち始めるとします。 付属の青いUSBコードでPCとUnoを接続。
電源付いた。
付属のLEDの短い足をGNDに、長い方を13とかいてある穴に刺す。
すると、点滅が始まる。
たぶん最初からLチカのプログラムが入っているっぽい?
ググって出てきたコードを参考にしてIDEに入力。
const int LED = 13; void setup() { // put your setup code here, to run once: pinMode(LED, OUTPUT); // 13番ポートを使用する } void loop() { // put your main code here, to run repeatedly: digitalWrite(LED, HIGH); // LED点灯 delay(500); // 500 ms待機 digitalWrite(LED, LOW); // LED消灯 delay(500); // 500 ms待機 }
左上のチェックマーク(検証)をクリックすると、コンパイルしてくれる。(コメントうそついてますね・・・)
次に右矢印のマーク(マイコンに書き込む)でUnoに書き込めるっぽいのだが、エラー。
CD-ROMにあるPDFを見ると、ドライバーを入れる必要があるようだ。 www.ftdichip.com.
Drivers → VCP Driversと順にクリックすると下のような表が現れるため、使用OSを選択する。
使用OSがMac OS Sierraなため、Mac OS X 10.9 and above x64(64bit)を選択。
あとはインストーラに従ってインストール。
IDEからツール → シリアルポート → (Arduino / Genuino Uno)と書いてあるやつを選択。たぶんWindows版も同じなはず。
もう一度、右矢印のマークをクリックするとUnoに書き込みが成功したというメッセージが出る。
LEDのチカチカする頻度が変わったら成功。
ただLEDがチカチカするだけですが、プログラムによって制御できてる感じがしてワクワクしました。
センサとかで温度取得とかもやってみたいですね。
Raspberry pi でDjangoを動かす
まずはdjangoのインストール
sudo pip install django
適当な場所でプロジェクト作成
django-admin.py startproject プロジェクト名
サーバー起動
python プロジェクト名/manage.py runserver ... Django version 1.11.7, using settings 'report_maker.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CONTROL-C.
しかし、Raspberry piはsshで操作しているため、 手元のPCからアクセスしてもつながるわけがない
ググってみると、ポートフォワーディング接続というやつでいけるらしい。 一度sshから抜け、以下のオプションを付けてssh接続
ssh -L適当なポート番号:ポートフォワードしたいアドレス username@リモートマシンのIP
今回の場合だと、以下の感じでログイン後、djangoサーバーを起動する。
ssh -L8888:127.0.0.1:8000 username@raspberrypiのIP
ホストPCのブラウザから http://127.0.0.1:8888/ にアクセスして こんな感じの画面になれば成功。
今までssh使ってきたけどこんな事ができるなんて知らなかった
Rasperry piにGitBucketを導入(続き)
だいぶ前のことになるが、Raspberry piにGit Backetを導入した。
それから、Git Bucketのことなんかすっかり忘れていたのだが、 プライベートなGitリポジトリが欲しくなったので本格導入することにした。
とりあえず、aptにあるっぽいので、
$ sudo apt-get install tomcat8
で入れようとするも、手こずる。
調べてみると、aptで入れるよりもどっかから持ってきたほうが楽っぽいので、
tomcat8を何処かから入手したあと、
$ tar zxvf apache-tomcat-8.5.11.tar.gz
で展開し、/opt以下にコピーし、tomcat以下の所有者をtomcat8に変更。 場合によってはsudoが必要になる。
$ sudo mv apatch-tomcat-8.5.11 /opt/tomcat8 $ sudo chown -R tomcat /opt/tomcat8
その後にgitbucket.warをtomcat8以下にコピーし、 スクリプトでtomcat起動
$ sudo cp gitbucket.war /opt/tomcat8/webapp $ sudo /opt/tomcat8/bin/startup.sh
あとは、ブラウザから http://[hostname]:8080/ で表示されていれば成功。