「PC/プログラム/開発」カテゴリーアーカイブ

光電管計測器への道3

タイム計測といえば光電管。
つまるところ非接触で動いてくれるスイッチですね。
前回でプッシュスイッチとマイコンでそれっぽい動作をする所まではできたので、いよいよセンサーを取り付けてみることに。

某オクでオムロンの光電センサE3S-R2E4を入手。
反射板付きで送料込1,000円チョイ。安!

スタートとゴールを別にするパターンに対応したかったので、型番違いでさらにもう一つセンサを調達。

さてマイコン側は5Vで動作、センサー側は12Vで動作。
電圧を混在させて回路を組むためには、フォトカプラという部品を使うのが定番らしい。
生まれて初めて電子部品の単品指名買いでフォトカプラを入手。

見よう見まねでブレッドボードで回路を構築、どうにかマイコン側で光電センサのON/OFFが拾えるところまで到達!
繋がってしまえば、あとはProcessing側でひたすらロジックいじりを繰り返すだけ。

それっぽく動いた!
おお、なかなかいいんじゃないだろうか!?

光電管計測器への道2

さてマイコンで色々できる気がしてきたので、計測器第1号の作成に入って行きたいます。
まずは、以下の様なシンプルな流れを実装してみたい。
・光電センサのかわりにタクトスイッチで回路作成。
・タクトスイッチをPUSHしたら、マイコン側のリアルタイムクロックからタイムを取得してPC側へ送信。
・PC側では、前回受信したタイム値があれば差を計算して画面表示。

PC側を何で作るべきか迷いました。
環境依存が少なくて、扱いやすい…そんな都合のいいものあるのだろうか?
と思って調べてみると、Arduino系の解説ページでよく使われているProcessingという環境を発見。
試しに使ってみたところ、まさにドンピシャな感じ。
お手軽なのに、Javaのパッケージなどがそのまま使えるのも強いですね。
PC側はこちらで行くことにします。

部品類はArduino エントリーキットで調達した物。
せっかくなので、マイコン側も情報量が多いArduinoで組み込んでみます。
開発環境自体はmbedのほうがクールだけど、開発のリズムはArduinoのほうがいいかな?
単に慣れの問題かもしれません。

色々やってみたらこうなった。

お、意外とそれっぽい!?
ソースはこんな感じです。
あとは光電センサを繋げば使えそう・・・?

続く

光電管計測器への道

作りたいんですよ。
何って、タイム計測器をね。

ソフト部分はともかくとして、ハード部分がサッパリなので手の出せない領域だったんですが
練習会で見かけるあのタイマーの製作者さんが、たまたま某勉強会でマイコン入門講座やってくれるということなんでさっそく参加。
(当日の様子はこちら)

会場で頂いたSTM32 Nucleoのマイコンボードを自宅でためしてみる。

マイコンっていうと、
データシート見てインタフェースボードを自作して(←ここで挫折)
っていう印象があったんですが…

いざトライしてみると、USBケーブルで繋いでブラウザのエディタでコーディングするだけというヒジョーに今風な開発環境。
15分もあればLED点滅まで行けてしまいました。
2015-12-19-1
こりゃすごい。
最近、猫も杓子もIoTって言ってんなという印象があったけど、これだけ簡単になっているならそりゃ流行るなーと。

後日、ブレッドボードと電子部品のスターターキットを購入
2つのLEDを交互に点灯させたり、タクトスイッチからの入力を拾ってシリアルでPCに送ったりという事も、それほど苦もなくできるようになってきた!

2015-12-19-2

なんだかやれそうな気がしてきた〜!
続く

GitHubに移行

お仕事環境のバージョン管理はこれまでずっとSVNだったんですが、本日ついにGitHubに全面移行!

SVNからgitへの移行を参考にしながら
git-svnを使ってSVNからチェックアウトしたリポジトリをGitHubへPushじゃー!

3年目に入ってそれなりのリビジョン数になっているので結構時間かかりましたが、どうにかこうにか移行できました。
開発環境は標準でGitが使えるPhpStormなので、こちらはリポジトリ指定するだけで特に問題なし。

運用面でまだまだ課題山積みとはいえ、ツール系に関してはようやく今風な物が揃ったという感じか。
しかしPrivateリポジトリだとユーザーページのContributionsに反映されないからちょっと悲しい・・・

いやほらちゃんと仕事してるんだってば
contributions

httpsページに接続できない件(wget/curl/HTTP_Request)

つい先日出た現象について覚え書きです。
結論だけ知りたい方向け→「該当箇所をcurlに置き換える事で対応しました」

例の脆弱性の件もあるしやっぱり今後は最新版で動かしたいよね。
って事でためしに以下のAmazonLinuxにてお仕事サイトを動かしてみる事に。
[bash]<br> $ cat /etc/system-release<br> Amazon Linux AMI release 2014.03</p> <p>$ openssl version<br> OpenSSL 1.0.1g-fips 7 Apr 2014</p> <p>$ rpm -qa | grep openssl<br> openssl-1.0.1g-1.69.amzn1.x86_64</p> <p>$ php -v<br> PHP 5.5.10 (cli) (built: Mar 27 2014 23:56:37)<br> Copyright (c) 1997-2014 The PHP Group<br> Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies</p> <p>$ pear version<br> PEAR Version: 1.9.4<br> PHP Version: 5.5.10<br> Zend Engine Version: 2.5.0<br> [/bash]

ところが別系統システムへの接続で問題が…
内容としてはPEARのHTTP_RequestでAPIをコールというありがちな処理なんですが…
PHP上でAPIのレスポンス自体が取得できない。
(HTTP_Request2じゃない点がアレですがそこは色々な事情があってゴニョゴニョ)

問題を切り分けたいので既存システムとは別にphpファイル作って
[php]<br> require_once "PEAR.php";<br> require_once "HTTP/Request.php";<br> $http_request = new HTTP_Request("https://hoge/api");<br> $http_response = $http_request-&gt;sendRequest();<br> if (PEAR::isError($http_response)) {<br> echo $http_response-&gt;getMessage();<br> } else {<br> echo $http_request-&gt;getResponseBody();<br> }<br> [/php]
動かして見たところ
[bash]<br> fsockopen(): unable to connect to ssl://hoge/api:443<br> [/bash]

HTTP_Requestに問題ありか?ってことでwgetで試す
[bash]<br> $ wget https://hoge/api<br> –2014-04-18 15:17:25– https://hoge/api<br> hoge をDNSに問いあわせています… xxx.xxx.xxx.xxx<br> hoge|xxx.xxx.xxx.xxx|:443 に接続しています… 接続しました。<br> OpenSSL: error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version<br> SSL による接続が確立できません。<br> [/bash]
うーむSSLの接続自体に問題があるっぽい。
英語で出てきた一部情報によるとプロトコルのネゴシエーションがどうたらこうたら。
試しにwgetのオプションに
–secure-protocol=TLSv1
をつけてみたら取得成功

ちなみに別のサイトのhttpsページをオプション無しでwgetしてみるとすんなり取得成功。
なんなんだ・・・
普段このあたりを意識する事などないのでなかなか厳しい。

curlでもためしてみるか。
SSLバージョン指定できるオプションがあるようなので
[php]<br> $ch = curl_init();<br> curl_setopt_array($ch,<br> array(<br> CURLOPT_URL=&gt; "https://hoge/api",<br> CURLOPT_SSLVERSION=&gt;3,<br> )<br> );<br> curl_exec($ch);<br> curl_close($ch);<br> [/php]
こちらは取得成功。
※CURLOPT_SSLVERSION無しで動かしてみるとNG。

HTTP_RequestにはSSLバージョン指定的なオプションが無いようなので、試しに直接書き換え
/usr/share/pear/HTTP/Request.php
707行目あたりの
[php]<br> $host = ‘ssl://’ . $host;<br> [/php]

[php]<br> $host = ‘tls://’ . $host;<br> [/php]
に変えてみたら取得成功。
やっぱりこのへんか…

HTTP_Request2ではAdapterとしてcURLが指定できるそうなので、そっちに置き換えた上でSSLバージョン指定してしまうのが順当な感じか。
しかしモノがモノだけにさくっと置き換えて完了という訳にもいかず。
ちょっと古めのopensslなら問題無しなんだけどいつまでもそれではちょっと・・・
どうしたもんですかね。

参考サイトにあったようにPHP再コンパイルっていう手もある模様。
phpinfo見てみたらうちも見事にSSL VersionはNSS/3.15.3でした。

参考にさせていただいた事例
ニコニコ動画にhttps(SSL)接続できなかった件
PHPのcurlで”SSL Connection Error.”のエラーがどうしても出る時の対策

追記
参考サイトのはてブコメントにて気になる情報。
相手方が古めのIISだとこうなるという。あ・・・
結局、該当箇所だけcurlに置き換えることでどうにかこうにか対応完了

更に追記(2014/10/16)
SSL3.0が無効になってて困ってる事例多数出ているようです

サーバー移転

前々から妄想していたサーバー移転作業が完了!
クラウドの大定番AWSに移行じゃーい!
DBもRDSに!
これだけ贅沢な構成にしても1年間事実上無料とはAmazonさまさまです。

CMSもWordPress最新版を投入してスマフォやタブレットからも見やすいレスポンシボーなサイトに変身だ!
わー今風ぅー!(自画自賛)

せっかくクラウドに変えたんだし本番業務では試せないあんなことやこんなことをしっかり試して
仕事にフィードバックしたいと思う今日このごろ

VirtualBox上のWindowsでemetersが認識しない件

自宅会社ともにMacに統一されて一つ困ったことが。
emetersのアップロードソフトがWindows版しか無い…

しかし
便利な時代になったもので、実機がなくても仮想環境用意すればほとんど困ることはない!
mac版VirtualBoxに、以前使ってたWindows7をインストールして、っと。

ところが
いざemetersを繋ぐと認識しない。
mac側で「取り出し」を選択すると瞬間的にWindows側で認識するんだけど、アップロード前にメーターが取り外されたというメッセージ。

ここはひとつ
Mac OS X 版 VirtualBoxでUSBがうまく割り当てできない場合メモを参考に…

無事アップロードできました。ほっ。

移行

自宅マシンをMBAに切り替えて数年たったものの
業務ではいまだWindowsのままでしたが・・・
そろそろ環境を統一したほうがいろいろと得だなと思い始めた昨年。

そしてついにこの時がっ・・・
仕事の環境もMacへ移行!

2014-02-27.jpg

Retinaにするかどうかは最後まで悩んだんだけど
ディスクやらメモリやらをグレードアップした時のコスト感がどうにも厳しいという結論に至り。
非RetinaのMBPにして光学ドライブ取り外し&SSD+HDD両搭載にメモリは積めるだけ積むという構成に決定。

今のところまだ完全に切り替えられなくて旧マシンといったりきたりする日々ですが
完全移行を果たせば相当な生産性UPだぜ!(と思いたい)

Laravelもくもく勉強会に行ってきた

CakePHP歴も5年になりました。
しかしメインで使っているバージョンは未だ1.3。
連想配列にデータをを入れたり出したりする毎日
これでいいのかなー
生きてるってなっんだーろ生きてるってーなぁにー(懐

たまには違う事したい!という訳で
第13回関西PHP勉強会 新春Laravelもくもく勉強会に行ってきた!
今回のもくもくでの個人的テーマは、Cakeで使いにくいと思っていた以下の2点がLaravelではどうだろう?という点です。
・独自SQLの使い勝手(柔軟なJOIN、深い階層にあるカラムを検索条件にする、etc)
・paginationの使い勝手

前日までにやったことは、VagrantでCentOS環境準備。
やっとVagrantに取り組めた。
ワンタッチでVM上に素のCent環境が出来てしまうのでとても楽かつ早い。
親機とVM間のファイル共有も設定されるので、ソースの配置も楽々。
流行ってるのがわかる気がしましたねー。
(macでは共有ディレクトリの権限の関係があるのでconfig.vm.synced_folderのパラメータいじる必要あり)

あとはyumでapacheとmysql入れて
PHP5.4以降が必要なのでちょといじって
mbstringやらmcryptやらの関連モジュール入れて
httpd.confでAllowOverride Allにして
公式のクイックスタート見ながらLaravel本体のセットアップ。
とはいえcomposerでコマンド叩くだけなので特に何をどうするわけでもなく。
laravelのhomeが出るところまではすんなり。

当日会場にて。
話題に出たLaravel IDE Helperをインストール。
phpstormでしっかり補完が効くようになり、VisualStudio的ないたれりつくせり感。
こりゃーいい。

準備が整ったので、開発で使ってるDBを使ってデータを画面表示させてみるところまでやってみる。
といってもあまり時間もないのでクエリビルダ使っていろんなパターンのSELECTをしてみた、程度です。
Cakeだと期待するSQLを吐かせるのって結構手間だけど、Laravelは吐かれるSQLもヒジョーに素直で好印象。

独自で組み立てたSQLでのpaginationまで試したかったんだけど時間なかった…

たった2時間だったけど、ひさびさに集中して作業できた感があって満足感高い1日でしたとさ。

2013年買ってよかったもの

買ってよかったものをまとめるのが流行ってるらしいので便乗して。

しごとPC(Windowsノート/Lenovo G570)をSSDに交換したのでそれですかねー。

自宅用で使ってる2010MBAよりも(ディスク以外の)スペックは全般的に上のはずなんですが。
ファイルの検索やSVN操作で黙りこんでしまうし全般的に動作もっさり。
どうにもこうにもストレスが多めでした。

という訳で評価が高く価格も手頃な128GBのSSDに交換してみる事に。



OSと開発環境各種はSSDに。
外した標準HDDはUSB外付けケースに入れてデータ保存用に。

仕事柄、サイズの小さいファイルがいっぱいあるという使い方が多いので効果絶大でした。
いちまんえんの投資でこれだけ待ち時間が減らせるのは素晴らしい。

次回以降は最初からSSDモデルを選びたいと思った次第。

ちなみに外付けディスクなんですがやっぱりUSBで遅いのと
ケーブル類がゴチャゴチャしてしまうのがネック。

後から気づいたんですが、ノートの光学ドライブ外してHDDマウントできるアダプタが。
タイミングを見てこっちに変えてしまいたい感じ。

まあ、このマシンとももう少しでお別れの予定なんですがね・・・(意味深)