uoz 作業日記

様々な作業の記録を共有するブログです。

LINE BOT Rubyリベンジ

数カ月前にLINEのボットがはやったとき、人の書いたPHPのやつをコピペして
一応動かせた。

その時は何がなんだかわかってなかったけど、
Rubyで作り直してちょっとわかった。


メッセージを送るだけの単純な代物
.envでいろんな値を管理しています。

github.com



こちらにある、from(mid)を間違う問題でめっちゃはまったよ。

今更だけどラウル様と会話できる LINE bot を作ってみようとしてやめました→動きました - Qiita

Webstorm (Intellij idea) でnode.jsデバッグが止まらねえ

症状

タイトルのとおり。
ブレークポイントを設定しても止まらない。



厳密に言えば、とまってるっぽいけど、Webstorm上でそれが検出されない。
Resume buttonにも反映されないので、止まってるのを動かすこともできない。
再起動するしかない。

原因

とりあえず、console.logを実行するとそれ以降のブレークとポイントで止まらない事がわかった。

対策

stackoverflow等、いろいろ探してみた。
debugging - Webstorm console.log interrupts debugger - Stack Overflow
今のところ、解決策なし...

How to take sreencapture (screenshot) of WebView for OSX app (swift) | OSXのSwiftアプリでスクリーンショットを取る方法(webViewのiframe内)

I found two ways.
ググりまくって、2つの方法を見つけた。iOSの場合は多いが、OSXアプリの情報は少ない。

Using WKWebView | WKWebViewを使う方法

References
https://github.com/lemonmojo/WKWebView-Screenshot
http://qiita.com/edo_m18/items/3df1861dfb837838d33b(timer)

let delay = 3.0 * Double(NSEC_PER_SEC)
let timeout = dispatch_time(DISPATCH_TIME_NOW, Int64(delay))

let image = self.webView!.captureScreenshotWithTimeout(timeout)

"self.webView" is a instance of WKWebView.

This method works, but can not take contents inside iframe.

Another problem is that this code use private API, so you cannot publish apps through the App Store using this codde.

ただし、この方法だとiFrame内が真っ黒になってとれない。

Using screencapture command | OSXのscreencaptureコマンドを使う方法

References
https://github.com/leemachin/say-cheese

 system("screencapture -c -x");
 let imageFromClipboard = NSImage(pasteboard: NSPasteboard.generalPasteboard())

This code can get iframe content.
However, you have to crop image if you need only a part of the whole screenshot.

  • R option allows you to take a part of the whole screen.

http://qiita.com/South_STR/items/f4624134726eca839647

私のtodo タスク管理の変遷

学生時代から10年くらいの私のTodo管理の変遷です。
でも初期の頃のは覚えてなかった...

googleカレンダーのタスク

これです。
Google カレンダーに ToDo リストを表示する | Google カレンダー の使い方

Gmailをずっと使っているし良いかと思ったけど、なんか欄が小さいからか定期的にみることが習慣化しなかった。

Toodoledoo

ちょうどGTDとか流行ってた時期、iPhoneアプリもいれてやってみた。

http://www.toodledo.com/signin.phpwww.toodledo.com

タスクとかの登録がめんどくさすぎてあきらめました。

Evernoteでテンプレート

Evernoteチェックボックス機能とか使って単純にtodoリストを作ってたけど、
予定と実績を管理したいなと思って作ったテンプレート。
f:id:uoz:20160216123012p:plain

これを毎日コピーして使ってた。

ただし、スマホだと表がくずれるのと、予定の変更がめんどくさいのでもっとシンプルなものに変えた。

Evernoteテンプレート改良


表を使うのをやめて、単純に/で予定と実績を区切ることにした。

f:id:uoz:20160216125051p:plain

良かった点

これは結構使いやすくてつづいた。

スマホでも入力がかんたんだし。

欠点

ただし、この方式だと、開始時刻はきめられても終了時刻がないからダラダラやっちゃって、だいたい予定の半分くらいしか消化出来ていなかった。

あと、これを使い始めた頃から忙しくなり、複数のプロジェクトの進捗管理という問題がでてきた。

Torrelo

カンバンです。

Evernoteによるその日のtodo一覧に加え、プロジェクトの管理として使っている。

trello.com

良い点

UIが単純でわかりやすいので意外と続いている。

Fluidでアプリ化して使ってます。
fluidapp.com

悪い点

プロジェクトの分け方が難しい。
これは別にトレロのせいではないか。

時間割方式 Evernoteテンプレート

f:id:uoz:20160216125357p:plain

小学校とかの時間割みたいにしたら、週の予定を俯瞰できるし、あるタスクをどれくらいやるか管理できて便利じゃないかと思って作ってみた。
定着するかどうか試し中。



時間を決めるという点では、ポモドーロテクニックに影響を受けている。
今日から始める生産性アップ術。ポモドーロ・テクニック再入門ガイド | ライフハッカー[日本版]

RailsでgulpでES6をやってみたかったんです

Babel / gulp / es6 / rails

なので、このブログの通りにやりました。

ruby-rails.hatenadiary.com


できたコードは、ここにあげました。

aoyagikwansei / rails-gulp-template — Bitbucket

sprockets-rails / es6 / rails

RailsでbabelでES6を使う方法は、gulpとかgruntとか使うこれみたいな方式とrailsにもとからついているsproketsを使う方式の大きく2パターンあります。

後者のsprockets方式はこっちに公開してるので良かったらどうぞ。


aoyagikwansei / babelTest — Bitbucket

こっちはこの記事をそのままやったものです。

Sprockets4を使ってRailsアプリケーションのJavaScriptをBabelで書く - Qiita

Airbnbをスクレイピングして相場とか出すサービスをつくろうとしたけど諦めて公開する話

f:id:uoz:20160207224447j:plain

エアビーデータバンク

最近、Airbnb関連のことを始めようと思ってて面白いサイトを教えてもらった。

AirbDatabank(エアビーデータバンク)


どんなサイトかというと、日本のAribnbの宿泊率や客単価を東京の区とか、エリアごとに時系列で見られるというもの。

Airbnbやろうとしている人にとっては、どのあたりに物件を借りるかとか、宿泊料金をどう設定しようかとか、いろいろと使えそうなサイト。

パクろう!

なかなか需要がありそうなサイトだけど、私が初めて見た時はまだ東京24区しかデータがなかったし、いろいろ改善の余地ありと思ったので、パクリサイト(ある種のクローラー)をつくろうと実装を始めた。

Rubyベースで、ヘッドレスブラウザPhantomJS(poltergeist)を利用している。

GitHub - teampoltergeist/poltergeist: A PhantomJS driver for Capybara

あれ?

これでビューを集めていろいろしようと思ってたのだが、なんと今日本家のエアビーデータバンクの作者が知り合いだったことが判明した。

そこと戦うのもなんだし、本家もしらんうちに日本全国に対応していたりして、やる気が失われたので、作りかけを公開します。


ソースコードはこちら。

github.com

できること


例えばローカルで普通に動かすと、

http://localhost:3000/home/rooms

にアクセスすると、コード内で指定した地域について、物件の下記データを取得する。

  1. 名前
  2. URL
  3. airbnb内のid
  4. まるまる貸切?
  5. 宿泊人数
  6. ベッドルーム数
  7. ベッド数
  8. エリア名
  9. 住所

本当はこの後、上記部屋データを元に、稼働率、宿泊料金に加え、データを分析して、例えば

  1. 駅から何分ならいくら位でいけるのか
  2. 駅ごと、路線ごとの料金相場
  3. 地価、ホテルの稼働率や料金との比較

なんかを提供できたら良いなと思っていた。

使うためには

phantomjsをダウンロードして実行ファイルにパスを通す。
PhantomJS | PhantomJS


あとはこっからコードをダウンロードして動かすだけ。
GitHub - uozias/air-b-scraping-tool: scraping tool fof the famouts homestay service


これでわからない初心者の人がいたらコメントで聞いてもらえればこたえるかも。

最後に

これからこちらが進化していくと思うので、AirbDatabank(エアビーデータバンク)の方をどうぞよろしく。

AirbDatabank(エアビーデータバンク)