読者です 読者をやめる 読者になる 読者になる

株式会社はてなに入社しました

株式会社はてなに入社しました

株式会社はてなに入社しました - hitode909の日記

ルームシェアの闇と光の戦士

以下の記事を見て、非常に面白かったので、2014年から1年ほどルームシェアを行っていた時に自分の身に起こったことを時系列で紹介します。

あれから二年経ちましたが。 - 深淵 http://hanabi.2ch.net/test/read.cgi/ogame/1454839298/

要約

  • Yという人物とルームシェアしていたが、40万ほど家賃光熱費を滞納した
  • Yの言う支払いができない理由、支払いの目処に多くの虚実が含まれていた
  • Yの親が弁済済みでこの件は解決している。

以下時系列

2013/11月頃

高校の頃の友人とルームシェアすることになり、頭数が多いほうが効率的だろうとYをルームシェアに誘う。 Yは家賃8万円までと参加するとになった。 家賃15万円の3LDKを借り、Yは6万円で一番広い部屋を真っ先に選択した。 初期費用は2ヶ月分の家賃を含め一人頭訳25万となったが、Yの分は受け取るタイミングがなかったので立替えた。

2014年1月20日

立替えていた初期費用のうちとりあえず10万円のみ返済される。

2014年2月

ルームシェア開始

2014年5月末

家賃・光熱費を催促したところ 住民税を払ったら金がなくなったとのことで家賃・光熱費滞納

2014年7月末

5月分+7月分の家賃光熱費の5万円払われる

2014年8月末

残りも支払われる

2014年10月16日

朝、現金で1000円貸す どうやら足りなかったらしく、銀行振込で2000円追加で貸す 後日2000円のみ返済された

2014年10月末

催促したところ財布をなくしキャッシュカード再発行するまで払えないと返答。 本人が大家に連絡しまってもらうとのことだったので連絡先を教える。

2014年11月12日

まったくもって払う気配がなかったので、10月分の家賃を立て替える。

2014年11月中旬

建て替えていた家賃、光熱費を催促。キャッシュカードがまだ無い等と言っていた覚えがある。 月末にまとめて払うとのこと。 返してもらわないと家賃が足りなくなるとも伝えた。

2014年11月末

当月分のみ家賃・光熱費を支払われる。

2014年12月末

10月分と当月分の家賃を催促。 払っただろと言うので、11月分は受け取ったが10月分は受けっ取っていないと返答。 この時点でルームシェアしていた3人中もう一人が12月末で退去するとのことだったので、初期費用はもういいし10万そこら貸すから1月末でルームシェア解消を提案した。 空いた部屋の分も含め払うからこのままでいいと言っていた。 翌月10日(給料日)に払うと言ってた。

2015年1月10日

支払われなかった

2015年1月末

10月分、12月分、1月分の家賃光熱費を催促。 当月分すらない様子だったので経済状況を確認を口頭で確認した。Y宛に届く郵便物などから自転車操業状態を疑っていたので問いただしたが、一貫して大丈夫と言いはり続けた。 なので、2月末に初期費用も含めた全額を返済するという借用書と、支払われなかった場合ルームシェアを解消するという覚書を書かせた。(今考えるときちんと最初に作るべきだった) f:id:YarmUI:20160221221619j:plain

2015年2月25日

2月分の光熱費を含めて支払われなかった。

2015年2月26日

ルームシェア解消の通知と、今後どうするのかの確認をした。 2月分は月末、滞納分は月5万の分割で払うと約束した。

2015年3月1日

催促。親と相談中で、週明けまで待ってほしいと返答された。

2015年3月9日(週明け)

支払われなかった。

2015年3月10日

催促に部屋をノックするが応答がなかった。 FF14の音が聞こえたので、自室で確認すると大迷宮バハムートに挑んでいた(同じ鯖だったので分かった)。 大迷宮から帰還したのを確認後、再度部屋をノックすると、溜息をつく音と電気を消す音が聞こえた。

2015年3月11日

連絡先を見つけたので、Yの親に連絡。親は初めて聞いたと驚いていた。 翌々日と当月末の2回に分けて返済され、ルームシェア解消まで家賃光熱費は親が払う事になった。

2015年4月26日

Yが退去する。 掃除をしに元Yの部屋に入ったところ、可燃不燃含め分別されていないゴミ袋やパイプベッド等の粗大ごみ、カメラやゲーム機オーディオ機器などの化粧箱が大量に見つかる。 DMでこの様な連絡を取り合う。 f:id:YarmUI:20160221221010p:plain f:id:YarmUI:20160221221020p:plain とりあえず、分別されていないゴミを分別したところ、大量の書類が見つかり以下の真実が明るみに出た。

  • 住民税は払われていなかったので5月の家賃滞納理由は虚実だった
  • 10月末財布を無くしたのは事実だったが、そもそも大した金額が口座に残っておらず、無くした後に銀行窓口で全額下ろしてた
  • クレカや消費者金融に多額の借金があり返済が滞ってた
  • 近隣に住むと家賃補助がでる会社に転職していた

2015年4月27日

DMの返答がなかったため、Yの親に「ゴミを着払いで送るから新住所教えて」と連絡。

2015年4月29日

丁度自分がいない時間に廃品回収業者を使ってゴミを捨てたらしく、部屋に何もなくなる。

なんで今さら公開したの

  • 毒吐きしてすっきりしたかった
  • Yが今年に入ってSNSで「自分は被害者だった」的な投稿をしておりつらみがあった
  • 公開することで自衛になると思った

Yに言いたいこと

1000円返せ

さいごに

ルームシェアなんてするべきではないし、借金の催促はこまめにするべきである。 ルームシェアにいたもう一人も金を貸していたらしいが、もっとひどい人間と交流があるらしくきちんと回収出来ていたらしい。

自己責任といったらそこまで何だけど、ウシジマくんに出てくるタイプの人間が本当にいるとは思わなかった。 そんな収入が多くない時期に、毎月自分より収入が多かったはずの人間に8万円近く自動的に貸し続けるのはこの上ない精神的苦痛だった。 今でもウッとなるのでお見舞いお待ちしております。

www.amazon.co.jp

スマートメータを自作した話

12/24 この記事は おうちハック Advent Calendar 2015 の24日目の記事です。

3日連続で鍵の話題が続いているのを中断するのは心苦しいのですがスマートメーターの話です。

はじめに

昨年、3人でシェアハウスしていたのですが電気代が3万円を超え、24時間1000W位上の電気を使っている状態になっていました。 漏電、盗電、メータの故障、電気代が折半なのをいいことにビットコインを掘ってる人がいる等の可能性が出てきたので、スマートメータを設置し電気使用量を可視化しました。

結果的に理由はわからずじまいのままシェアハウスは解散し、パーツだけ手元にあった状態で放置されてましたが、調度良い機会だったので再設置し記事にしました。

用意するもの

作成

スマートメーター仕組みとしては配電盤に電流センサを設置しマイコンで取得、サーバに送信し蓄積・可視化するだけです。

配電盤の近くにはコンセントは無いため、長期間電池駆動可能な無線マイコンのTWE-Liteを選択しました。 TWE-LITEは、

  • 省電力: 間欠1秒モードの場合単3電池2本で1年以上保つ
  • プログラム不要: 親機子機で通信する分には電源を入れるだけでOK

等と今回の案件にぴったりでした。

ただし、クランプ型電流センサの出力は交流なので、間欠動作では1秒間に何度もサンプリングして実効値を算出する方法が使えないません。 そこで平均値整流型電流変換回路を使います。

適当にブレッドボードに回路を組んで完成。 ADコンバータが余ってもったいないのでLM61を挿してます。 f:id:YarmUI:20151223210526j:plain

配電盤に設置します。 f:id:YarmUI:20151224205827j:plain

PCに親機であるToCoStickを接続し、こんな感じのルビースクリプトを書いてデータを取得します。

require 'serialport'
dev = '/dev/tty.usbserial-AHXKQMRT'

sp = SerialPort.new(dev, 115200, 8, 1, SerialPort::NONE)
loop do
  l = sp.gets.chomp
  next if l[0] != ":" || l.size != 49
  l = l[1, 48]

  chk = l.scan(/.{1,2}/).map{|e| e.hex}.inject(:+) & 0xff
  next unless chk.zero?
  src       = l[0, 2]  # print "  src       = 0x%02x" % l[0]
  src_long  = l[10, 8] # print "  src long  = 0x%08x" % ladr
  command   = l[2, 2]  # print "  command   = 0x%02x (data arrival)" % l[1]
  dst       = l[18,2]  # print "  dst       = 0x%02x" % l[9]
  pktid     = l[4, 2]  # print "  pktid     = 0x%02x" % l[2]
  prtcl_ver = l[6, 2]  # print "  prtcl ver = 0x%02x" % l[3]
  lqi       = l[8, 2]  # print "  LQI       = %d / %.2f [dbm]" % (l[4], (7*l[4]-1970)/20.)
  timestamp = l[20, 4].to_i(16)
  vlt       = l[26, 4].to_i(16)
  dibm      = l[32, 2].to_i(16)
  dibm_chg  = l[34, 2].to_i(16)
  er        = l[44, 2].to_i(16)

  di     = []
  di_chg = []
  4.times do |i|
    di[i]     = dibm     & 0x1
    di_chg[i] = dibm_chg & 0x1
    dibm     >>= 1
    dibm_chg >>= 1
  end
  ad = []
  4.times do |i|
    av = l[i*2 + 36, 2].to_i(16)
    next ad[i] = nil if av == 0xFF
    ad[i] = (av*4 + (er & 0x3))*4
    er >>= 2
  end
  puts "#{Time.now}\t#{(ad[0]+ad[1])*2.7}w\t#{(ad[2]-600)/10}"
end

公式で公開されているPythonスクリプトを参考にしました。ADコンバータの値だけ取得すればよいのですが、取れる値全部変換しています。

可視化

本職がウエッブエンジニアなのではやりのfluentd+elasticsearch+kibana4を使います。 上記ルビースクリプトにfluentd-loggerを追加、ログとしてfluentdに垂れ流すだけで簡単に可視化できます。 qiita.com セットアップはここなどを参考にしてください。

完成したダッシュボードがこちらになります f:id:YarmUI:20151224213638p:plain

去年設置していた旧版ですが、kibana3のほうがダッシュボードはかっこいいです・・・ f:id:YarmUI:20151224213803g:plain (gif画像です、クリックで動きます)

課題と今後

  • 電流値なので正確な電力は測れない。精度が欲しい場合はコンセント経由で電圧も取得する必要がある。
  • 電波垂れ流しなので、ご近所にTWE−LITE使ってる人がいると電気使用量が筒抜けになる。(TWE-Liteは通信を暗号化する機能もあるけど面倒だった)
  • データ量が1秒に1件と多いのでnorikraを使って1分に1件に減らしたい。
  • ついでにnorikra使ってブレーカ落ちる警告を出したい。

おわりに

以上、スマートメータを自作した話でした。スマートメータを設置して驚いたのは、この時間のエアコンをつけた、ケトルを使った等の電気に伴う行動があとから結構分かるということでした。 ブログを書くのが久しぶりすぎてひどい文章だと思いますが、読んでくれた方はありがとうございました。

明日の最終日は@massa142さんの「皆さんの投稿を参考にして1週間でおうちを快適にしてみる」です。 メリークリスマス!!!

株式会社********を退職しました

株式会社********を退職しました。正確には有給消化中です。

f:id:YarmUI:20140712205749p:plain

社長に転職の意思を伝えたところ全くリアクションが得られませんでしたが、上長に了承を得られたので多分退職できています。

f:id:YarmUI:20140712205749p:plain

株式会社********には丸1年所属していたことになります。仕事内容はフロント以外のエンジニアリングすべてです。

f:id:YarmUI:20140712205749p:plain

株式会社********に就職した理由は、去年オフィスライセンス違反等が理由で後先考えずに前前職を退社し、色々と(主に金銭的に)追い込まれていた時に知人の知人経由でお誘い頂いたからです。優秀な技術者がいっぱいいるとのことで行ってみたらエンジニアが実質自分一人だったり、同じ社屋にある社長が同じ別企業の従業員が2ヶ月で全員辞めたり、非常に良い人生経験になりました。

f:id:YarmUI:20140712205749p:plain

退職理由は単純に転職先が見つかったからです。直近の案件だけでも終わらせてから退職しようとも考えましたが、収入に差がありすぎたのと、開発速度より仕様変更の速度のほうが速く完成しなさそうだったので最短で退職させていただきました。ネイティブアプリ開発の外注先には多大なるご迷惑をお掛けすることになってしまい誠に申し訳ない気持ちでいっぱいです。

f:id:YarmUI:20140712205749p:plain

少なくとも今年の2月には転職を決めていたのですが、転職活動に当たって衣服や交通費を賄うのが厳しく季節を2つ跨いでしまいました。転職活動は某女子大生とペアプロできるとこや@oqunoっぽいアイコンのとこを活用しました。転職活動自体は別エントリーで詳しくかけたらと思います。

f:id:YarmUI:20140712205749p:plain

株式会社********ですが、ホームページに乗っている人間を有名人順にソートし頭文字を並べるとホモ.+になります。そういった所から声がかかった場合、失職中や転職意欲のあるエンジニア各位は十分注意していただけたらと思います。

f:id:YarmUI:20140712205749p:plain

転職先はエオルゼアの双蛇党です。光の戦士として回復・後方支援に尽力しようと思います。

退職祝いお待ちしております。

JavaScriptの小技集とかって記事を参考になるなって見てる人とは仕事したくない。

久しぶりの日記

あれ、いつも書いてるな~というJavaScript の小技集 | バシャログ。

配列からランダムで値を取り出す

Math.floorが抜けてるからnullが返って来る

等差数列の配列を作る

すごく見にくい。普通にforループでええやん

A-Zのアルファベットと英数字からランダムな文字列を取得する

そうかくならwhile(len--)のほうがスマートなのでは?!!?

配列をシャッフルする

すっごく偏る http://ideone.com/uB1GJk

もう疲れた。この記事に載ってる処理のほとんどがunderscore.jsで関数1個とかに置き換えられるのでお勧めです。

Wikipediaのリンク最短経路を探索するウェブアプリを公開しました。

http://wikipetan.kfka.net/

こんな感じ

なんかGWの4日くらい消費して、半年近くフロントエンドエンジニアしてたせいでプログラミング能力が恐ろしく落ちているのを実感しました。

アルゴリズムとか詳細

計算機触った人ならだれもが尊敬するダイクストラ様のアルゴリズムを借用しています。 Celeron G530の1コアで1クエリあたり500msで処理出来ます。 始点が一緒なら終点が違う経路探索は計算結果を使いまわせるのですが、ダイクストラ法の計算結果が1MB近くのサイズになり、それをキャッシュして管理するのが面倒なのでしていません。代わりに、分散処理が容易になるようにRedisのRPUSH/BLPOPとPub/Sub(後述)を使っています。

Redis RPUSH/BLPOPとPub/Sub

  • WebAppはリクエストを受け取った時点でPub/Subでサブスクリプションして、メッセージを待つ。
  • WebAppはリクエストをRPUSHでジョブキューを追加して、ワーカーはBLPOPでジョブを受け取る。
  • ワーカーは受け取ったジョブをこなしてPub/Subのパブリッシュでメッセージを送信。
  • WebAppはPub/Subのメッセージを受信しレスポンスを返す。

といった感じで処理しています。正確には最終的な結果をキャッシュしているのでもう少し複雑ですが。

Debian SqueezeにRedis 2.6をインストール

Redis Linux

ほとんど公式ドキュメントのまま。 ビルドするのにbuild-essential、テストにtclが必要なので最初にインストールしてる。 redis-2.6.xx.tar.gzの部分は公式ドキュメントから安定版の最新を各自取得してください。

$ sudo apt-get install -y build-essential tcl
$ wget http://redis.googlecode.com/files/redis-2.6.xx.tar.gz
$ tar xzf redis-2.6.13.tar.gz
$ cd redis-2.6.13
$ make
$ make test
\o/ All tests passed without errors!
$ sudo make install