rbenvなrubyをcronで回す
ドはまりしたので載せておく.
$ crontab -e とかの設定ファイルにこいつを書く.
* * * * * {username(なくてもいい)} /bin/bash -c 'export PATH="$HOME/.rbenv/bin:$PATH" && eval "$(rbenv init -)" && cd {実行したいrbファイルのディレクトリまでのパス} && ruby {実行したい.rb}'
ここを参照したのだけど,結局1,2,3のうち2がうまくいった.
gemで怒られたりいろいろしたけど上記のやつならうまくいった.
=2017/04/06追記=
usernameはなくてもいいって書いたけど,逆にあるとうまくいかない
/bin/sh: 1: {username}: not found
と言われる.なので今のところ下記が良さそう.
* * * * * /bin/bash -c 'export PATH="$HOME/.rbenv/bin:$PATH" && eval "$(rbenv init -)" && cd {実行したいrbファイルのディレクトリまでのパス} && ruby {実行したい.rb}'
screenコマンドでシリアル通信しながらxmodem転送
mac El capitanでxmodemした
http://netmark.jp/2011/12/gnu-screen-xmodem.html
上記がとても参考になったので備忘録として書いておく.
lrzszをインストールしておく
$ brew install lrzsz
screenを使ってシリアル接続する.
多分大体こんな感じだと思う.USB接続されたデバイスはdevの下にあるはずなので.tty.まで打つと補完が効くと思う.
$ screen /dev/tty.usbserial
Xmodem転送の実行
Ctrl+aを一回押し,コロンを入力するとコンソールの下らへんにコロンが入力されていて,コマンドが打てるようになる.
そこに下記のようにコマンドを入れて実行する.
:exec !! /usr/local/Cellar/lrzsz/0.12.20/bin/lsx -kb [ファイルまでのパス]
/usr/local/Cellar/lrzsz/0.12.20/bin/lsx はバージョンによって変わってくると思うので適切に.
ファイルまでのパスはフルパスいれればいいと思う.相対パスはどこ基準なのだろう?
たぶん/usr/local/Cellar/lrzsz/0.12.20/bin/lsxか?
オプションの-kbは1kパケットのバイナリ転送.
$ /usr/local/Cellar/lrzsz/0.12.20/bin/lsx --help
すればオプションが確認できるのでお好みで.
Rubyを用いて予定をgoogle カレンダーに登録する
あるページから自動で予定をスクレイピングしてきて自動的にGoogle Calendarに登録したかったので,Rubyを使って実現した.
使ったバージョンは下記のとおり
・ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-darwin15]
・google-api-client (0.8.6)
#google-api-clientが,0.9以降だと下記のコードは使えない.
#v0.9以降では,require で 'google/api_client' の下の階層の指定が必要らしいです.
まずはgemをインストールする
$ gem install google-api-client -v 0.8.6
google developerで認証等の手続きをする
google dev. console ( https://console.developers.google.com/ )に行って,Credentialsの登録をする.
Create credentialsをクリック
Service account keyでアカウントを作成する
今回はP12 keyを用いた.JSONがRecommendされてるから次からはJSON使おう.
account nameやIDを入力.Createをクリックすると,P12キーがダウンロードされ,secret passwordが表示されるのでメモっとく.
これで登録は完了だ.
準備ができたのでコードを書く.いろいろなサイトを参照したが,
以下のようなコードができた.
# encoding: UTF-8 require 'google/api_client' CALENDAR_ID = '[登録したいカレンダーのID]' client = Google::APIClient.new(:application_name => 'test') # 認証 key = Google::APIClient::KeyUtils.load_from_pkcs12('[p12ファイルへのパス]', '[秘密のパスワード]') client.authorization = Signet::OAuth2::Client.new( token_credential_uri: 'https://accounts.google.com/o/oauth2/token', audience: 'https://accounts.google.com/o/oauth2/token', scope: 'https://www.googleapis.com/auth/calendar', issuer: '[シークレットアカウント(emailアドレス形式)]', signing_key: key ) client.authorization.fetch_access_token! # google calendar に登録 cal = client.discovered_api('calendar', 'v3') event_name = "New Event!" #イベントのタイトル(summary) event = { 'summary' => event_name, 'start' => { 'date' => "[開始日の日付]", }, 'end' => { 'date' => "[終了日の日付]", } } result = client.execute(:api_method => cal.events.insert, :parameters => {'calendarId' => CALENDAR_ID}, :body => JSON.dump(event), :headers => {'Content-Type' => 'application/json'})
以下の部分をAPIのReferenceに合わせて上手に書いてあげることでいろいろなことができる.
result = client.execute(:api_method => cal.events.insert, :parameters => {'calendarId' => CALENDAR_ID}, :body => JSON.dump(event), :headers => {'Content-Type' => 'application/json'})
:api_method => cal.events.insert
の部分を cal.events.[やりたい動作] にして,
Referenceに書いてある Parameters を与えてやる.
:parameters => {'calendarId' => CALENDAR_ID}
bodyやその他もろもろも,Referenceを覗いて,それを書いてあげるだけでいい.
今回は,eventの中身をjson formatにしてあるので(どこかのコードを参考にしたため),jsonでstart.dateやend.dateを指定しているが,eventオブジェクトを生成してその中に入れていくということもできると思う.
例えば,書き換えると以下のようなことができる.
・現在を中心とした過去と未来の各6ヶ月分の予定を引っ張ってくる(計1年)
d = Date.today time_max = (d >> 6).to_time.iso8601 time_min = (d << 6).to_time.iso8601 params = {'calendarId' => CALENDAR_ID, 'orderBy' => 'startTime', 'timeMax' => time_max, 'timeMin' => time_min, 'singleEvents' => 'True'} result = client.execute(:api_method => cal.events.list, :parameters => params)
これは,Referenceのlistを参考にするとよい.
ここらへんを参考にパラメータをうめていく.
・削除する(イベントIDとカレンダーIDを指定する)
params = {'calendarId' => CALENDAR_ID, 'eventId' => event.id} result = client.execute(:api_method => cal.events.delete, :parameters => params)
DeleteはcalendarIdとeventIdを指定しろと書いてあるから,それだけ.
==参考==
Google Calendar API Reference
https://developers.google.com/google-apps/calendar/v3/reference/
Google Calendar API を使って予定表を自動更新したりする
http://maehrm.hatenablog.com/entry/20141216/p1
Googleカレンダーに予定をRubyで登録する
http://maehrm.hatenablog.com/entry/20141216/p1
rubyでgoogleカレンダーのイベントを取得するメモ
http://qiita.com/mechamogera/items/bf2ed20e332dc31d2352
ファイルの復元結果
先日Recuvaと,Ease US Data Recovery Wizard の比較をしていた.
復元した結果が出たので,お知らせ.
Recuvaは148件きちんと復元.
Ease US Data Recovery Wizardはというと
こちらも273個きちんと復元.
いずれにせよ,検知も復元もきちんとできたEase US Data Recovery Wizardいいですね.
ここでネタバレなんですけど,Ease US Data Recovery Wizardは,こうやってブログでレビューを書くと,無料でEase US Data Recovery Wizard Professionalにアップグレードできるライセンスがもらえるのです.(そういうキャンペーンをやっています 2016/05/20現在)
なので,先日とか(ステルス)マーケティングみたいな記事になったわけなんですけど,それにしてもこのソフトはいいソフトだと思います.
検知率も復元率もよい.
いざというときはレビューで紹介してコードをもらってみてはいかがでしょうか.
デジタルSWRメータの作製2 =方向性結合器の作製2=
先日作った方向性結合器だが,うまく動作してくれずに悩んでいる.
コアの向きが違うのか?と思って向きを変えていくつものパターンを試したりしたけど,一つもうまくいかない.回路は理解できてると思っていて,その通りに組んでいるはずなのだけど動いていない.
症状としては,FWD出力,REF出力両方同じようなパワーが出てきてしまっている.
ANT側を50オームで終端してもしなくてもだ.
なにか高周波的な罠にはまっている気がする.
小さく収めようとしすぎて結合したりしてしまっているのだろうか?
GNDで囲っているから結合はあまりないと思っているけど,GNDとコアが近すぎて影響していたりするのだろうか?
高周波の工作は初めてだから,このあたりで躓いている可能性は大いにある.
うーんわからない.HELP.
ファイル復元ソフト EaseUS Data Recovery Wizardはすごい
昨日,データを誤って誤削除してしまった.
録画データなどが主だ.
私はいつもデータを削除するときはゴミ箱を経由せずに[Shift + Del.]するようにしているから,気づいた時には時すでに遅しでした.
そこで今回はデータ復旧ソフトを使ってみた.
まずは,おなじみ?のRecuvaを試してみた.
そこで得られた結果がこちらだ.
スキャンによりマッチしたのは148コだ.
本来はもっとたくさんのファイルがあったので,すべてのファイルを検知できたわけではないことを意味している.
このソフトでは,重要な,私のほしいデータは手に入らなかった.
次にこのソフトを試してみた.
EaseUS Data Recovery Wizardと呼ばれるものだ.
簡単な紹介をすると以下のようになる.
(EaseUS Data Recovery Wizard日本語公式サイトより抜粋)
================================================
削除、フォーマット、消失してしまったデータを復元する最高のフリーソフト
最高の無料データ復元ソフト - EaseUS Data Recovery Wizard は、あらゆるデータ損失の問題を解決できます。HDD、外付けHDD、USBメモリ、メモリカード、デジカメ、携帯、音楽プレーヤー、またはほかの記憶メディアから、削除、フォーマット、ソフトクラッシュ、HDD障害、ウィルスアタック、パーティション紛失またはほかの原因不明のデータ損失に対応できます。わずか3つのステップで消失したデータを簡単復元!
強力なデータ復旧機能
2種類のスキャンモード:『クィックスキャン』と『ディープスキャン』。『クィックスキャン』は間違って削除したデータの復元や、ゴミ箱を空にした後でのファイル復元に最適。『ディープスキャン』はアクセスできないパーティションや、完全消失、フォーマットしてしまった際のデータの復元に最適。
あらゆる失われたデータを復元:写真、ビデオ、音楽、Eメール、ドキュメント…
多彩な記憶装置に対応:パソコン、ノートパソコン、デジタル装置、記憶メディア…
いつでも一時停止、再開可能:スキャン中に一時停止し、スキャンの結果を保存して、次回スキャンせずに復元プロセスを再開することが可能です。
EaseUS Data Recovery Wizard は数多くのデバイスに対応できる無料データ復旧ソフト
EaseUS Data Recovery Wizard で色んなデータ損失状況から無料のデータ復旧を実現する
迅速、快適、精確、そして安全!
復元したいファイルの種類を指定してスキャンが可能
ファイル名、種類、日付でフィルタ検索ができ、ファイル復旧の時間を節約できます
復元を完了する前に、プレビューでファイルの詳細と品質を確認可能
安全、簡単、使いやすい!
3ステップでファイルを簡単復元できる、安全なデータリカバリツールです。データ復旧の経験がなくても、直感的で簡単なインターフェースにより復旧作業をおこなえます。初心者でもすぐ使える!
対話型の使いやすユーザーインターフェイスで、3ステップで失われたデータを復元できるように設計されています。
安全設計。デバイスに保存されたデータを破壊しないよう、元のデータに上書きなどをおこないません。
================================================
こちらのソフトも,利用はとても簡単だ.
このようなウィザードにしたがって進めていく.
この次では,ファイルの場所(どのドライブを検索するか)を選択し,スキャンを開始する.
スキャン結果がこれだ.
なんと273個のファイルを検知することに成功している.
先述のRecuvaの148個と比べて,約1.84倍も多くのファイルを検知している.
驚きである.
このファイルをきちんと復元できるかはまだわからないが,実行次第報告したいと思う.
デジタルSWRメータの作製1 =方向性結合器の作製=
アマチュア無線をやっているわけなんだけど,私は個人のSWRメータを持ってない.
いつも社団のやつをお借りするなどしていた.
なので前々からSWRメータがほしかった.
というわけでgoogleでいろいろ検索したらよさげな記事を見つけたのだ.
[ham][tech] 自作デジタル SWR 計 (進行波・反射波電力計) | Tue, Nov 11. 2014 - 氾濫原
タンデムマッチという比較的広帯域な方式で,方向性結合器を構成している.
その方向性結合器からの出力をログアンプで受けて,パワーを対数電圧に変換.
それをADCにかければ,dBmメータができるというわけ.
SWRは,SWR=(sqrt(Pf)-sqrt(Pr))/(sqrt(Pf)+sqrt(Pr))で表せるわけなので,これをマイコンに入れてあげればいいわけだ.
なんとシンプルな仕組みだろうか.
これなら高周波工作がロクにできない私にでもできそうだ.ということで作ってみることに.
まずはコアが必要だということで,タンデムマッチ用のコアを買う.
秋葉原に行ったときに,千石で買った.先ほどのブログで推奨されていた,FT82-61を用いた.30ターン巻き巻きする.
そうしたらまずは方向性結合器を作る.
適当なシャーシに穴をあけてMコネのレセプタクルをつけて,この2つのコアの結合を疎にするようにGNDでシールドする.
そうして,同軸などをはんだ付けして,方向性結合器部分は完成だ.
なんてシンプルなんだろう.
仕組みも作っているうちにすぐに理解できた.
こんなに簡単に方向性結合器が作れるとは思わなかった.
まだ測定してないから特性はわからんけど.
とりあえず今はこんな感じです.
今はログアンプ検波から,マイコン関連の基盤を作成している.
めんどくさいのでエッチングしたいと思う.
金属皮膜抵抗でATT.とかを構成したいのだが,手持ちがないので買いに行かなければならない.
早く完成させたい.