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.とかを構成したいのだが,手持ちがないので買いに行かなければならない.
早く完成させたい.
ルータ/スイッチ設定用コンソールケーブルの作成
最近,ネットワーク機器であるルータを設定する機会があったのだが,コンソールケーブルを持っておらず,お借りすることになる事案があった.
普通の家庭用のルータとかだと,ネットワークにはすぐ接続できて,設定もGUIなのでこう言うケーブルは必要ないんですけど,Ciscoとかの事業用のルータなどを設定する時は,このケーブルが必要になったりする.
そういうことで,コンソールケーブルを自作することにした.
Cisco社純正ケーブルを分解した人がいて,その人の情報を参考にした.
ピンアサインは以下のようになっていた.
この通りに配線すれば動くはずだ.
ということで作っていく.
色々と検討したのだが,最終的には,小型であるとよいと感じ,アダプタをつくることにした.
普通のコンソールケーブルを作ってしまうと,持ち歩く時にケーブルの線の部分がかさばってしまう.
そのため,シリアルのコネクタとRJ-45コネクタを設けた変換器という形で実現することにした.このRJ-45端子に普通のストレートケーブルを接続し,もう一方をコンソールポートに接続すると設定ができるというワケ.
ネットワーク機器を設定しようとしているのだから,現場にはUTPストレートケーブルは1本くらいはあるはずなので,苦労することはないと思う.ただ,USB-シリアル変換は必要なんだけどね.これは持っていくしかないかな.多分大抵現場にもあるけど.
というわけで,まずは変換器のケースを加工することにした.
ケースとしては,秋月で売ってるシリアルコネクタのシェル(http://akizukidenshi.com/catalog/g/gC-00034/)を活用.
これは普通にシリアル接続するケーブルを作る時によくお世話になったので,手持ちがあったし,最近はなかなか使わなくなったのでこれを使うことにした.
このシェルをカッターナイフの刃をバーナーで熱して加工する.
このシェルはシリアル側のコネクタはそのままいい感じに固定されるが,RJ-45をつけるところを作る必要がある.
RJ-45コネクタをシェルの側面からアクセスできるようにするといいかんじにRJ-45コネクタが収まったので,そのように加工する.
こんな感じ.この大きな四角い穴にRJ-45コネクタが来る.
シェルが加工できたら,早速半田付けをする.
先ほどのピンアサインの通りにはんだづけするだけだ.簡単.
今回は昔よくラッピングワイヤとして使われていたETFE線を使った.
通信するだけだから問題ないと思う.本当はもうちょっと太い線を使いたい.
で,半田付けをしたあとは線を軽く引っ張ってすぐに外れたりしないかどうか,他の線とショートしていないかなどを念入りにチェックする.
私はここでテスターを用いてきちんとピンアサインが正確かチェックした.
いい感じにETFE線をぐるっとしてケースに入れてみた.
ノイズの問題とかはあると思うけど,高速な通信ではないので気にしないことにする.
いい感じにケースに収まることが確認できたら,RJ-45コネクタをエポキシ接着剤で接着.
ついでに,ETFE線が動かないように,隙間の部分にもエポキシを入れて,耐故障性の向上を図る.エポキシで隙間を埋める感じで.
それと同時に,もう一方のケースもエポキシで固定.
エポキシは便利だ.
こんな感じで完成になる.
こんなに簡単に作れるので,みなさん是非作ってみてください.
なお,RJ-45に接続するするケーブルを間違えないようにしたいですね.
ストレート仕様の変換器にクロスなんかをつなぐとまずいです.
大抵はそんなことはないと思いますが.
これでいつでもどこでもルータ/スイッチの設定が出来ます.
Canon MP640プリンタ給紙機構の修理
Canon MP640の給紙機構が壊れた.
後トレイから給紙しようとすると,用紙が詰まった旨の表示が.
一度に用紙を何枚も送ってしまっている.
Yahoo知恵袋のあるトピックにこう書いてあった.
=============
電源が入った状態か、正しく電源を切った状態で、後トレイのふたを開け、紙を乗せるところの板が上がって給紙ローラーに接触していれば故障です。
部品を交換しなければ直りません。
=============
とのこと.
なるほど確認してみると紙を載せるところが見事に給紙ローラに接触している.
こういう風になるとなんか悔しくて直してやろうという精神が働いたのでまずは分解することに.
いろんなものを分解してきたので,経験を生かしていいかんじに分解.
制御基板.ビューティフォー.
ありました,パキっと割れたカムです.
相手側のカム.なるほど.これは直せそうですね.
というわけでさっそく採寸.
部品の大まかな型取りをして,ノギスやらスケールやらで出来るだけ正確に寸法や角度を出します.
(ちなみにボスはφ7.8です.記載されているφ8ではありませんでした.)
その寸法をもとに,3Dモデルに落とし込みます.
そして3Dプリンタでその部品を印刷.
なかなかいい感じに再現できてます.
細かいところはカッターナイフやらを熱してあげて,溶かす感じで再加工.
微細なところはこれでいいのです.
ということで,
こうなりました.
壊れていた頃は,真ん中の上側の大きなローラ(給紙ローラ)が用紙を載せるところに常に当たっている状態だったのですが,この写真では当たっていません.
動画もどうぞ.
前までは,常に用紙が給紙ローラに接触した状態で,一度に何枚もの用紙が送り出されてしまう状態だったのですが,修理後は,送る際に跳ね上げ機構が動作し,一枚送った後に,きちんと元の状態(跳ね上げ機構が下がっている状態)に戻っています.
これは作製したカムがちゃんと動作しているという事を意味しています.
ということで直すことができました.めでたし.
# 追記(2018/01/09)
ブログをを見てくれた方からの要望があり,ここで作ったモデルのカムは,DMM 3Dプリントに出品しています.
本日までで30個を超える購入があり,皆さまが修理にチャレンジしていただいた修理報告も多数受けております.ありがとうございます.