「おねいも」と「波よ聞いてくれ」が面白すぎて最高である
※ネタバレちょっとありです注意
勢いのある田舎姉妹日常系ギャグ・コメディ、面白い
詩原ヒロさんのおねいも、web上で無料で試し読みしてて楽しみだったやつ
ついに1巻でて案の定めっちゃ面白かった!
- 作者: 詩原ヒロ
- 出版社/メーカー: 講談社
- 発売日: 2015/05/22
- メディア: Kindle版
- この商品を含むブログを見る
RubyでARGVを使う時に引数指定するならARGV.getoptsが便利
rubyコマンドの際、引数にオプションを指定すると便利
Raspberry Piのカメラモジュールを使っています。
ディレクトリ内にjpgファイルなどを置いて、rubyによって呼び出したりなんか作業するのに rubyファイル内でARGVを使うとファイルの呼び出しが可能なことはわかったが
rubyコマンドの引数の順番がバラバラでも対応出来るように、探してみたところgetoptsというのが便利っぽかった
Ruby - OptionParser よりも指定が楽な ARGV.getopts のオプション指定(ロング/ショートも) - Qiita
Ruby - ARGVの処理にOptionParserを使ってるライバルをバックミラーから高速に消し去るARGV.getoptsの使い方 - Qiita
ただ、パッと見ただけでは使い方が良く分からなかったのでメモ これ実際、色々打って試してみるのが一番良いです、眺めていても全くわからなかったです(^_^;)
「:」をつけないと、ただのtrueかfalseを返す、「:」をつけるとハッシュになる
わかりやすくするためにとりあえずひとつだけ指定してみた
# coding: utf-8 require 'optparse' params = ARGV.getopts('japan:') p params
実行結果は
同じ文字(japanのa)は最初のだけ適用される
$ ruby test.rb {"j"=>false, "a"=>false, "p"=>false, "n"=>nil}
-j をつけると、jにtrueが入る
ruby test.rb -j {"j"=>true, "a"=>false, "p"=>false, "n"=>nil}
-japのようにいっぺんに指定も出来る
$ ruby test.rb -jap {"j"=>true, "a"=>true, "p"=>true, "n"=>nil}
同じ文字は何度使ってもtrue
$ ruby test.rb -jaaaaaaa {"j"=>true, "a"=>true, "p"=>false, "n"=>nil} # もちろん、-japaのように指定も出来る $ ruby test.rb -japa {"j"=>true, "a"=>true, "p"=>true, "n"=>nil}
nに関しては、コロン(:)が付いてるのでさらに要素を指定して代入しなければエラーになる
# -n に何も指定しなかった場合 $ ruby test.rb -n test.rb:5:in `<main>': missing argument: -n (OptionParser::MissingArgument) # -nに task を指定した場合、nのハッシュ要素として task が挿入される $ ruby test.rb -n task {"j"=>false, "a"=>false, "p"=>false, "n"=>"task"}
ちなみに-nにtaskをくっつけても(スペースを入れなくても)可能
$ ruby test.rb -ntask {"j"=>false, "a"=>false, "p"=>false, "n"=>"task"}
以上を踏まえると次のようなことも出来る
$ ruby test.rb -japan goal {"j"=>true, "a"=>true, "p"=>true, "n"=>"goal"}
コロンがついていない要素に、値を指定するとコロンの要素が入らなくなったりしてめんどいので注意
$ ruby test.rb -j blue -n aaa {"j"=>true, "a"=>false, "p"=>false, "n"=>nil} # jには要素は入らないはずなので、blueと指定してしまうと -nのハッシュに値が代入されなくなってしまう、これはよくわからなかったので要調査
ハイフンを2つ繋げると、単語1つ認識の入力になる コマンドオプションの, -h と --help が同じ動作をするような感じです しかし、今回は'japan:'としか指定していないのでエラーになります
$ ruby test.rb --japan chek test.rb:5:in `<main>': invalid option: --japan (OptionParser::InvalidOption)
これを回避するために、-n: も記述してあげます。test.rbを書き換えます これで通るようになります
# test.rbを以下のように訂正 # coding: utf-8 require 'optparse' params = ARGV.getopts('n:', 'japan:') p params
これで通るようになります
$ ruby test.rb --japan goal {"n"=>nil, "japan"=>"goal"}
ただ、これに関してはちょっとバグの原因になるので仕様変わらないのかな?という感じです (この次点で僕は ruby 2.1.1を使ってます)
以上備忘録がてら
パーフェクトRuby on Rails 6章 i18nの設定をするのとこでつまずいたのと解決方法
パーフェクトRuby on Railsを読んでます (2014年7月10日初版のRails4.1対応版)
僕の環境は Vagrantで仮想環境を構築、OSはCentOs6.5 Rails 4.2.0
です
第6章のi18nの設定のところで躓いた
結果、大したことではなかったのですが書籍の通りに行ったら出来なかったので
第6章の「i18nの設定をする」
のところで、curlコマンドによってgithubからファイルをダウンロードしているのですが このコマンドでやってもうまくいかなかった・・・ダウンロードされたja.ymlファイルをみてみると
全然違うファイルがダウンロードされてました
CentOsで行ってたのが原因かもしれませんが、下記のページを参考にしてwgetのコマンドでやるとうまくいきました
Railsの多言語化対応 i18nのやり方を整理してみた!【国際化/英語化】 - 酒と泪とRubyとRailsと
何が原因だったかわかりませんが、初心者は本の通りにやってうまくいかないと辛いです(^_^;)
コマンドの打ち間違い、Railsのバージョンの違い、OSの違いなど様々あるかもしれませんが エラーメッセージを読めるようになるともうちょっと出来るようになるんでしょうね 精進せねば
railsチュートリアル10章
リスト10.20サンプルデータにマイクロポスト用のコードを追加する。ではまる
リスト10.20の通りにマイクロソフト投稿のコードをFaker(バージョン1.4.3)を使って記述するけど エラーが出てしまう・・・ エラーとしては、ターミナル上で、
$ bundle exec rake db:populate をした後に下記のエラーが出た
/Users/xxx/.rvm/gems/ruby-2.1.1/gems/activerecord-4.1.4/lib/active_record/scoping/named.rb:24:in
all' /Users/xxx/sample_app/lib/tasks/sample_data.rake:23:in
block (2 levels) in' /Users/xxx/.rvm/gems/ruby-2.1.1/bin/ruby_executable_hooks:15:in eval' /Users/xxx/.rvm/gems/ruby-2.1.1/bin/ruby_executable_hooks:15:in
'
と出てしまう どうやらアクティブレコードに 'all' なんてパラメーターはないよ、ってことらしい 参考↓ ruby on rails - wrong number of arguments (1 for 0) Hartl chapter 10...bundle exec rake db:populate - Stack Overflow
なので、上記のリンク通りに
User.all(limit:6) ではなく
User.limit(6) としてやればちゃんとマイクロソフトが投稿されました良かった
一応、マイクロソフトがちゃんと投稿されたsample_data.rakeを記述しておきます
namespace :db do desc "Fill database with sample data" task populate: :environment do admin = User.create!( name: "Example User", email: "example@railstutorial.jp", password: "foobar", password_confirmation: "foobar", admin: true ) 99.times do |n| name = Faker::Name.name email = "example-#{n+1}@railstutorial.jp" password = "password" User.create!( name: name, email:email, password: password, password_confirmation: password ) end users = User.limit(6) 50.times do content = Faker::Lorem.sentence(5) users.each{|user| user.microposts.create!(content: content)} end end end
自分はgemのバージョンを指定せずに色々やってるので ちょいちょい今まで引っかかってます(^_^;) (Fakerはバージョン1.4.3です) バージョンのせいなのかもしれないけどとりあえず動いて良かった
TWE-Strongにファームウェアを書き込む方法(てこずった)
TWE-Strongはピン配置が違って最初は難しい
2015/04/15 追記(TWE-Lite-Rを使った書き込み方法、一番下に記載)
TWE-liteを使って無線通信を行っています
今回は、TWE-liteのシリーズであるTWE-Strongを使って見てるのですが
ZigBeeモジュール TWE?Strong 外付けアンテナ版 ※外付けアンテナ別売り
- 出版社/メーカー: TOCOS
- メディア: エレクトロニクス
- この商品を含むブログを見る
まず、TWE-Lite DIPなどと違いピンの大きさが違います(ピンが0.4mm幅) そのため、簡単に書き込むには2.54mmピッチ変換基板が必要になります
TWE-Strongに使うピッチ変換基板
- メディア:
- この商品を含むブログを見る
これ、ファームウェアなどを書き込みたい時(プログラムを書き換えたい時)に、コスモス電機さんのホームページには 「DIPと同じピン配置で、同じように書き込むことが出来ます」
みたいに書いてあるのですがどうみても難しいです・・・・ 電子工作初心者には厳しいものがあるかなと (電子工作歴長い方に聞いてみても「・・・これはわかりにくいよ」とおっしゃってました(^_^;))
とにかく、便利なツールではあるので苦労してなんとか使えるようにしました
とりあえず、配線を行う
ファームウェアの書き込みに使ったのが ・UART-USBケーブル or アダプター (シリアルピンを、パソコンのUSBと繋げるのに必要な部品) 今回はSWITCHSCIENCEさんのFTDI USBシリアル変換アダプター(5V/3.3V切り替え機能付き)を用いました↓
FTDI USBシリアル変換アダプター(5V/3.3V切り替え機能付き)
- 出版社/メーカー: スイッチサイエンス
- メディア: エレクトロニクス
- この商品を含むブログを見る
・Windowsパソコン(windows8を使いましたがwindowsであればなんでも良いと思います, コマンドラインを叩くのでもしかしたらMacでもいけるかもしれません(未確認)) ・ジャンパーピン ・ブレッドボード ・ブレッドボード用スイッチ(2.54mmピッチ変換基板があれば無くてもいけると思います) スイッチは例えばこんなのです↓
- 出版社/メーカー: ELPA
- メディア: その他
- クリック: 1回
- この商品を含むブログ (1件) を見る
(ちなみに、最初はTWE-Liteのプログラム書き込み用の通信ケーブル接続可能なTWE-Lite Rで試してましたけど、うまくいかなかったのでアダプターを用いましたがたぶんTWE-Lite Rでもできます。 試してみたら追記しよう)
公式ページを参考に、配線してみたけど初心者にはわかりずらいです(笑)
UART-USBケーブルでの書き込み - TOCOS-WIRELESS.COM
そもそもピン配置が違うからな・・・
2.54mmピッチ変換基板にピンソケットをはんだ付して TWE-Strongを2.54mmピッチ変換基板に載せた状態にします こんな感じ↓
次にブレッドボードと繋ぎます、配線は、行ったやつを書くと(5iとか20hとか書いてあったらブレッドボードのアルファベットと数字のことです) ピッチ変換基板のピン配置と名前は以下を参照
2.54mmピッチ変換基板 - TOCOS-WIRELESS.COM
シリアル変換アダプターとブレッドボードの接続
・ブレッドボードの+列(電源)とFTDI USBシリアル変換アダプターのVCCをジャンパーピンで接続 ・ブレッドボードの-列(グランド)とFTDI USBシリアル変換アダプターのGNDをジャンパーピンで接続
シリアル変換アダプターとピッチ変換基板の接続
・シリアル変換アダプターのTXとピッチ変換基板の8ピン(DIO7, UART Receive Data(input), RXピンのこと)を接続 ・シリアル変換アダプターのRXとピッチ変換基板の7ピン(DIO6, UART Transmit Data(output), TXピンのこと)を接続
ピッチ変換基板とブレッドボードの接続
・ピッチ変換基板の39ピン(VCC)を電源に接続(+列に直接でも、5iとかに橋渡しでもどちらでも。僕は5iにジャンパーピンを挿して、5jと+列をさらにジャンパーピンで繋ぎました。以下同様にしました) ・ピッチ変換基板の40ピン(GND)をグランドに接続(-列でも橋渡しでもどちらでも可) ・ピッチ変換基板の27ピン(RESETN, Active Low Reset, リセットボタン(RST)のこと)をブレッドボードの28iに接続(後でスイッチと接続します) ・ピッチ変換基板の23ピン(MISO, SPI Master In / Slave Out, これがプログラム書き込み用のピン(PMG)の代わりになります、ここが最初わからなかったので苦労した・・・)
ブレッドボードにスイッチを接続
スイッチには足が4つあります。スイッチは2つ使います(RST(リセット)用とPGM(プログラムモード)用)
・スイッチの一つは、足4つをそれぞれブレッドボードの20f, 22f, 20e, 22eに接続しました(PGM用) ・スイッチのもう一つは、足4つをそれぞれブレッドボードの28f, 30f, 28e, 30eに接続しました(RST用) ・ブレッドボードの22aとマイナス列(グランド)を橋渡し ・ブレッドボードの30aとマイナス列(グランド)を橋渡し
これを行うと、↓の写真のようになると思います(わかりにくいですが・・・)
ここまで出来たら、次に電源をいれてプログラムを書き換えていきます!
プログラムの書き込みはjenprogで行わないとできなかった
ToCoStickとか、TWE-Lite DIPなどはTWE programmerってアプリを使えばドラッグアンドドロップで書き込みが出来て便利なのですが
TWE-Lite専用プログラマ - TOCOS-WIRELESS.COM
おそらくこの書き込みソフトではStrongに書き込みできません、なんかCOMポートを認識しないってエラーが出ます ↓
(このエラーのせいでよくわからなかったのでTWE-Lite Rは使ってませんが、たぶんTWE-Lite Rでも書き込めるので 後日やってみます)
パソコンにUSBケーブルを挿し、シリアル変換アダプターとつなぐ
書き込みするのに参考にしたサイト↓
TWE-Lite RでTWE-LiteにFWの書き込み。 - Qiita
USBケーブルと接続するとパソコンを電源として電流が流れます(ちなみにシリアル変換アダプターは3.3Vとなるようにしておいてください。購入した時点では、ジャンパーピンが3.3Vになるように接続されてました)
FTDI USBシリアル変換アダプター(5V/3.3V切り替え機能付き) - スイッチサイエンス
次に、PMGスイッチを押しながらRSTスイッチを押して、RSTスイッチから指を離してからPMGスイッチから指を離すと TWE-Strongがプログラム書き込みモードで立ち上がります (これでTWE programmerでも書き込めるのかなと思っていたのでハマってしまいました・・・) (ちなみに、ピッチ変換基板にもPGMボタンとRSTボタンがついてるので、こちらでも可能だと思います)
次に、jenprogを立ち上げます UART-USBケーブルでの書き込み - TOCOS-WIRELESS.COMのページからjenprog単体をダウンロードしてもよいですし、ToCoNet SDK - TOCOS-WIRELESS.COMのページからToCoNetのSDK全部入りをダウンロードしてやっても良いです。僕はパソコンにSDK全部入りをダウンロードしていたのでそちらを用いました
SDK全部入りのフォルダを開いて、ディレクトリ(フォルダ)の階層で TWESDK/Tools/jenprog/bin と開いていって、binフォルダのなにもない所でshiftキーを押しながら右クリックすると 「コマンドウィンドウでここを開く」が出てくるので開きます 参考
TWE-Lite RでTWE-LiteにFWの書き込み。 - Qiita
(コマンドライン(黒い画面)が出てくるけど怖くないです大丈夫です)
コマンドラインが出てきたら
jenprog
とうつと、接続されているポートの名前(USBの接続ポート)が出てきます
例えば、TWE-Lite RでTWE-LiteにFWの書き込み。 - Qiitaのサイトだと COM3 に接続されているので
jenprog -t COM3
と打つと、状態が表示されます
プログラムを書き込んでみる
プログラムを書き込むためには、書き込みたいプログラムが同じフォルダ内にある必要があります(そのほうが簡単)
なので、先ほどのbinフォルダ内(TWESDK/Tools/jenprog/bin)に書き込みたいプログラムやファームウェアを置いて 書き込みます。 例えば公式サイトから、標準アプリをダウンロードしてきて アプリ・ダウンロード - TOCOS-WIRELESS.COM
TWE-Strong用のファームウェアをbinフォルダに移します。 今回僕はApp_TweLite_Master_JN5148_1_6_7.binというのを用いました(JN5148はTWE-Regular/Strong用、JN5164はTWE-Lite DIPなど用のプログラムみたいです)
App_TweLite_Master_JN5148_1_6_7.bin をbinフォルダ内にコピーしたら、またコマンドラインから入力を行います
jenprog -t COM3 App_TweLite_Master_JN5148_1_6_7.bin
と入力してみましょう。そしたら参考サイトのように
writing...
と出てきて書き込みが始まるはずです
ここでerrorなど出てくる場合は、配線が間違えているか プログラム書き込みモードになっていないので、PMGスイッチとRSTスイッチを用いてモードを切り替えて下さい。
出来てしまえば簡単なことなんですが、なんの説明もないのでここまで辿り着くのに時間かかりました・・・
なんにせよ、これでTWE-Strongが使えるようになったので色々実験できます!
わからないこととかあったらコメント欄などにどうぞ
追記 TWE-Lite-Rを使った書き込み方法
TWE-Lite-RとTWE-Strongを接続して、jenprogを使うことで書き込みすることが出来ました。
配線は下記のようにつなぎます TWE-Lite-Rのピン配置はTWE-Lite DIPのピン配置の名前を参考にしてください (数字はピン配置) (リンク先PDF注意)
TWE-Strong(ピッチ変換基板) - TWE-Lite-R
VCC(39) - VCC(28)
RX(8) - RX(3)
TX(7) - TX(10)
RESETEN(Active Low Reset)(27) - RST(21)
MISO(SPI Master In / Slave Out)(23) - PE
TWE-Lite-RのPEは、下記リンクの使用例Cで用いている、先端の5Pピンヘッダの真ん中になります USBアダプター TWE-Lite R(トワイ・ライター) - TOCOS-WIRELESS.COM
つないだ写真
あとは↑に記載しているように、jenprogでの書き込みが行えるようになります RSTボタンとPRGボタンはTWE-Lite-Rについてるボタンを押すことで出来ますので TWE-Lite-Rを持っている場合はこっちのほうが楽ですね
Raspberry Pi Type A+にスイッチサイエンスのバニラ基板(B+用)がぴったり合う
Raspberry Pi Type A+を使ってみています
ラズベリーパイのTypeA+を使って色々とやってみてます
raspberry pi typeAを無線LANに接続、リモート操作するのに詰まったので - ネット偽善者でもいいじゃない
んで、あまりType A (A+)を使ってる人はいないのか ユニバーサル基板などもType B(B+)のものが多いんですよね・・・
そんななか、スイッチサイエンスさんのところの基板を見てると 丁度良さそうなのがありました Raspberry Pi Model B+用バニラ基板(α版) - スイッチサイエンス
これ、よく見てみると「もしかしてA+でも余裕で設置できる?」と思ったので 調べてみるとやってる方がいらしまして
「へー出来るんだ、じゃあA+は既に持ってるから買ってみるかな」
ということで購入
バニラ基板付けてみた
バニラ基板付けてみました(はんだ付はまだやってませんが) ぴったり!
ラズベリーパイのGPIOピンからバニラ基板に取り付けるのにピンの大きさを変換する 2x20のピンヘッダが付いているので 広すぎず狭すぎずちょうどいい感じのスペースができてます
はんだ付もスペーサーも設置してないのでちょっと斜めってますが(;´Д`) スペーサーも付属しているので取り付けないとですね
これは良いものだ・・・ Raspberry Pi Type A+は消費電力も小さいみたいですし
Raspberry Piブログ : [コラム] Raspberry Pi Model A+は驚くほど省電力。乾電池2本で駆動に成功
ユニバーサル基板が使えるならとても便利そうですね
Raspberry Pi 2も発売になってるし・・・どこまで便利になるのやら(^_^;)
- 出版社/メーカー: 梅本合同会社, RS Components
- メディア: エレクトロニクス
- この商品を含むブログ (2件) を見る
みんなのRaspberry Pi入門 [対応言語:Python]
- 作者: 石井モルナ,江崎徳秀
- 出版社/メーカー: リックテレコム
- 発売日: 2015/02/05
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
VirtualBoxを使ってcentOSに入ろうとするがvagrant upでエラーがおきてしまう
久しぶりに開発環境にログインしようとすると Vagrant upしてcentOSにログインする際にエラーが起きてしまう
VirtualBoxが2015年2月12日にversion 4.3.22にversion up したらしく新しいのをインストールしてしまったのが 原因っぽい・・・
結局仮想開発環境を一旦削除して対応したけどまた環境構築からなのでめんどくさかった(´;ω;`)
ちなみに再び環境を整えようと思ってvagrant up までいったとこで似たようなエラーを吐き出しましたが
vagrant-vbguestプラグインがGuestAdditionsを無効にしてしまう - Qiita
を参考にしたら解決しました
続きを読む