猫の手も借したい

暇を極めた時に更新します

ボイスチャットしながらのPAYDAY2がギャグコメディな件

(akkisino02)
(7sr_)
(Tilqis)
(Monsuil)

の四人でPAYDAY2をプレイしました。

実績:We Are All Professionals

OVERKILL以上の Go Bank で、民間人を1人も殺害せず、アラームも鳴らさずにクリアする。
www.youtube.com

この時点ではVCでうまく連携をとって成功させました。何度かトラブルでリスタートはしましたが、無事実績解除。


実績:Gone in 240 Seconds

Car Shop を4分以内にクリア

失敗例

www.youtube.com

敗因

  • 7sr_が英語の人名を読めなかった
  • ホモが鍵を取り忘れてきた
  • 二台目以降は律儀にコンテナに詰めなくていいのを知らなかった

もう何から何まで面白すぎて常時爆笑しながらプレイしていました。


成功例

www.youtube.com

  • 何故か一回前のプレイのブレーキ痕が残ってた
  • Jiro(7sr_)おじいちゃんがなんかダウンした
  • 先に発車したはずの7sr_をTilqisが追い越した

誰かと通話しながらゲームすることはとてもおもしろいのでオススメです。特にCo-opだととても楽しい。

超小型OTG変換アダプタを購入

横浜駅ドスパラで面白そうな物が売ってました。
f:id:akkisino02:20151007211343j:plain
OTGの変換アダプタのようです。値札に「上級者向け」と書いてありました。1つ¥370/(税抜き)

WindowsタブレットにUnifyngのレシーバを挿してトラックボールを繋いでいるので、このような小型アダプタが魅力的に思い2つ買ってみました。


f:id:akkisino02:20151007211328j:plain
レシーバにアダプタ付けてみたところ。直接USBオスの中に潜るような構造になっています。
サイズはかなりギリギリに作ってあって、機器との抜き差しで外れてしまうようなことはなさそう。かと言って硬すぎてアダプタが外せないということもなし、任意に付け外しできる良い形状です。


f:id:akkisino02:20151007211308j:plain
Winタブに挿してみたところ。短いとはいえOTGケーブルがぶらーんと出ているよりは、全然スマートです。
ただ、微妙に長さが余っているMicroUSBオスの部分が浮いているので、ここに負荷がかかるとまずいかも。うっかり引っ掛けたりしたら折れるかもしれない。まあこの点は普通にMicroUSB接続のもの全てに言えるので、この商品自体の問題ではないと。


昨今でUSBオスをMicroUSBオスに変換する需要があるのか、といわれるとそれほどではないような気もしますが、私のようにフルUSBメスのないWindowsタブレットにUSB機器を接続したい人間やスマホUSBメモリを刺したいような人間には、無駄のないクレバーな商品だと思います。安いし。
OTGケーブルの購入を検討している方は是非ご検討をば。2015/10/07時点で結構在庫残ってました。

飯テロJazzアルバム「ジャズ麺 ~麺好き専用 極上のジャズ~」がヤバい(ヤバい)

CDアルバムの紹介です。
この商品はJazz14曲のオムニバスアルバム。


収録楽曲は、

1. In The Mood
2. My Favorite Things
3. Moanin'
4. Someday My Prince Will Com
5. Take Five
6. Melodie En Sous-Sol "Palm Beach"
7. The Girl From Ipanema
8. American Patrol
9. Waltz For Debby
10. Take The A Train
11. Stella By Starlight
12. Fly Me To The Moon
13. Moonlight Serenade
14. When You Wish Upon A Star

と、比較的スタンダードなJazzの定番。
ここまでは普通のJazzオムニ。


しかしここからがおかしい。

歌詞カードに各曲それぞれと一緒に食べたいラーメンが細かく書いてある。しかもこの文章がとてもうまい。
一部抜粋すると「朝からラーメン、略して"朝ラー"。スッキリさっぱりの淡麗系がお似合い。」や「麺はもちろん細麺。鯛を練り込んだツミレがまた至福。澄んだスープの黄金色も美しすぎます。」など。

いやJazz関係ねえじゃん、みたいな。
最初こそ大爆笑しながら読みつつ曲をまじめに鑑賞していたんだけども、なんだか書いてあることがもっともなような気がしてきた...
Take The A Trainを聴くとつけ麺が食べたくなるし、Waltz Fir Debbyは王道の醤油ラーメンが食べたくなってくる。もう駄目かもしれない。


という読み手を惹きつける謎の魅力があります。
もうほんとに面白い。歌詞カードだけでも見る価値があります。まあ全曲インストだから歌詞書いてないんだけど。


もちろん演奏の方も素敵です。このCD用にアレンジしたかは知らないけど、New York Jazz Trioが好きになりました。ピアノトリオのいいところを潰さず綺麗に活かしているTake Fiveのアレンジは私の好みドストライクです。

王道な名曲をまとめたJazzアルバムなので、「Jazzはあまり聞かない」「興味はあるけど...」という方、ラーメンのレビューを機会に是非聞いてみてください。きっと「Jazzを聴くとラーメンが食べたくなる体」に調教されてしまうことでしょう。



P.S. 深夜に聴くと空腹で死ぬ。

一眼レフのデータを整理した話

ちるきす(@Untilqis)がブログ記事でバスを撮りに行った写真を公開しています。tilkiss.hatenablog.com

私はバスに興味ないのですが、彼の記事の一枚目の写真がとても好きです。かなりいい雰囲気出ていると思います。
オナホとくまモンを撮って記事にしてる奴のセンスだとは思えねえ。
そんな彼に感化されて、久々に一眼レフのデータを大掃除しようと思いました。

パートナー

私のパートナーはOLYMPUSの「E-620」です。

f:id:akkisino02:20151002192120j:plain

発売された当時はバケモノレベルの小ささと軽さを誇る、異色のカメラでした。スタンダードなズームレンズですら重心が前に行くレベルの軽さです。

今ではミラーレスが主流となりあまりその小ささが目立ちませんが、私の小さな手にもよく馴染むのでとても愛着を持っています。

スタイル

私の撮影スタイルは、

  • 被写体を絞らない
  • 気付きを大切にする
  • 撮影対象と同じ目線になる

です。

「被写体を絞らない」は、「何を撮る」「何を収める」をわざと意識しないようにしています。
いわばフレームに入ったものすべてが被写体です。全てが主役で全てが脇役、全体の調和を大切に意識しています。

「気付きを大切にする」は、普段見逃してしまうような些細なモノを出来るだけ見つけたいという考え方です。
日常の中の小さな非日常を見つけ、それと同じ目線で写真に収めるのが大好きです。


そのスタイルを取っていてもまだまだ具現化出来てはいませんが、今までに撮影したものでお気に入りの写真を紹介します。
※かなり元データを紛失してしまった写真があります。圧縮したデータだったりするのでご了承ください


f:id:akkisino02:20151002194846j:plain
f:id:akkisino02:20151002200442j:plain
f:id:akkisino02:20151002200453j:plain
f:id:akkisino02:20151002200503j:plain
f:id:akkisino02:20151002200509j:plain
f:id:akkisino02:20151002200521j:plain
f:id:akkisino02:20151002200530j:plain

気に入っていた写真のRAWデータが気づいたら見つからないのはかなりショックです。純粋に不注意で削除したものが多いので、今後管理は気を使うべきですね。反省点です。


E-620は割りと年代物なカメラなのでそろそろ限界を迎えつつあります。元気は元気ですが画素も昨今ではけして高くはないし、センサーも相応なのでISOを少しあげたらもうザラザラし始めます。
なので、新しいパートナーを迎え入れようかと検討しているところでもあります。もちろんE-620は気に入っているので手放すつもりも飾りにするつもりもありませんが。

現在検討しているのは、三本持っているズームレンズがもったいないのでフォーサーズマイクロフォーサーズとの変換アダプタを購入、マイクロフォーサーズが刺さるOLYMPUSのミラーレスボディかなといったところ。
別にレンズ揃え直してもいいんですけどね、なんかまだまだ一緒に歩きたいので。

ドメイン「akkisino02.com」を取得した

お名前.comで「.com」が680円セールしてたのでakkisino02.comを買ってみました。

猫氏小屋(新築)


とりあえずラズパイのApache2のテストを兼ねてBootstrapのフリーテンプレートを基板に改変してページを作成。



どうせ一ヶ月くらいしたらテンプレの面影もなくなるので、時々覗いてみてください。ちょこちょこ手を加えていきます。

「あいつまだ寝てるのかプログラム」をハゲにパクられたので風邪の中進捗出しました。

nanaesu.hatenablog.com


@7shageに「last_post スクリーンネーム」で最終Postの時間のみを返す仕様の模様。


彼もコードを公開しているので脆弱性を見つけて煽るしか無い、と頭をフル回転させました。


や っ た ぜ 。

$lastPostTime = $lastStatus[0]->created_at;
sec2str(time() - strtotime($lastPostTime), $d, $h, $m, $s);

多分引き算した数字をそのまま出力したからこういうことになってるわけで、それの60との商を上の位に足せばいいのでは。
とか書いてた下書き記事をハゲに見せたら即修正されました。

nanaesu.hatenablog.com




以降しつこく圧力をかけてきます。



とは言え、製作時間一時間ほどで同等のものを作られてしまったので年上のプライドとして距離を離しておこうとキーボードに向かいました。熱出てるのに。



絶対ゆるさねえこいつ

進捗報告

  • 未実装だった「Postされた瞬間の時間」を返すようにした→相対時間を返す仕様に変更
  • よってタイムスタンプを廃止
  • UUIDを「問い合わせ時点の分秒から生成する四桁の数字」に変更
  • 現在時間との差分のみを返すモードも作った
  • 元のPostを参照した際140文字を超えてしまう場合の対策を実装
  • 本人 or bot自体 を指定された場合参照しない仕様に

相対時間

のようにした。0日~のように数値がゼロの際その項目を省くのはそのうち実装予定。
具体的には、created_atと現在時間の差分を秒で出して、あとから日時分に繰り上げてる。
ソースコード45-52行あたり

UUID

Postの末尾についてる(nnnn)
今まではタイムスタンプをそのまま付加していたので文字数が多い上に投稿時間と見分けづらかった。
連投規制を回避するためのものなので、UUIDである必要なくない?と気付き「一時間ごとにリセットされるID」にすることに。
要は分分秒秒で四桁の数字化しているだけなので、「一時間前のリクエストから他のリクエストがなかった時」かつ「同じユーザーが前回と全く同じ分秒でリクエストした」というスナイプを決められると連投規制にかかる。

まあそんなスナイパーいないでしょwと思いこういう仕様にしています。
ソースコード60行目

差分のみを返すモード

文字通り。
「last_time スクリーンネーム」で動作。
57行目以降。

140文字超え対策。

上のPostにも書いてあるが、...(以下略)という部分。参照したPostを無条件で70文字にカットすることにした。
TwitterのIDが最大15文字らしいので、そこからもし15文字のユーザーにリクエストされた場合超えない文字数をちょっと余裕を持って設定した結果がこれ。
43行目。

本人のPost/botを指定された場合弾く


どちらもこの処理があるということはその瞬間が最終Postなので、聞かなくてもわかるでしょってことで
33-36行。



まあ色々実装して更に穴も増えたので徐々に改善していこうと思います。
風邪引いてるのにこんなことをさせるハゲきらい。

ソースコード

# coding: utf-8

require "./consumer"
require "twitter"
require 'date'

rest_client = Twitter::REST::Client.new do |config|
	config.consumer_key        = CONSUMER_KEY
	config.consumer_secret     = CONSUMER_SECRET
	config.access_token        = ACCESS_TOKEN
	config.access_token_secret = ACCESS_SECRET
end

stream_client = Twitter::Streaming::Client.new do |config|
	config.consumer_key        = CONSUMER_KEY
	config.consumer_secret     = CONSUMER_SECRET
	config.access_token        = ACCESS_TOKEN
	config.access_token_secret = ACCESS_SECRET
end

time = Time.now.strftime("%Y-%m-%d %H:%M:%S")
rest_client.update("Start. #{time}")

stream_client.user do |status|
	if status.is_a?(Twitter::Tweet)

		if status.text.match("@got_up_bot last_post")

			user = status.text.gsub(/(@got_up_bot|last_post|\s|\.)/, "")
			uuid = Time.now.strftime("%M%S")
			time = Time.now

			if user == status.user.screen_name
				rest_client.update("@#{status.user.screen_name} 問い合わせユーザー自身の最終Postは取得しません。(#{uuid})")
			elsif user == "got_up_bot"
				rest_client.update("@#{status.user.screen_name} 当bot自身の最終Postは取得しません。(#{uuid})")

			else
				puts "(@#{status.user.screen_name}) take #{user}'s post. #{time}"
				rest_client.user_timeline(user, { count: 1 } ).each do |timeline|
					tweet = rest_client.status(timeline.id)
					del_at = tweet.text.gsub(/(@)/, "(at)")
					post = del_at[0...70]

					at_post = tweet.created_at
					post_time = (time.to_time.to_i - at_post.to_time.to_i)
					d = post_time / 86400
					h = post_time % 86400 / 3600
					m =	post_time % 86400 % 3600 / 60
					s = post_time % 86400 % 3600 % 60
					before = "#{d}#{h}時間#{m}#{s}"
					rest_client.update("@#{status.user.screen_name} #{user}の最終投稿は「#{post}...(以下略)」で#{before}前です。 (#{uuid})")
				end
			end
		end

		if status.text.match("got_up_bot last_time")

			user = status.text.gsub(/(@got_up_bot|last_time|\s|\.)/, "")
			uuid = Time.now.strftime("%M%S")
			time = Time.now

			if user == status.user.screen_name
				rest_client.update("@#{status.user.screen_name} 問い合わせユーザー自身の最終投稿は取得しません。(#{uuid})")
			elsif user == "got_up_bot"
				rest_client.update("@#{status.user.screen_name} 当bot自身の最終投稿時間は取得しません。(#{uuid})")

			else
				puts "(@#{status.user.screen_name}) take #{user}'s time. #{time}"
				rest_client.user_timeline(user, { count: 1 } ).each do |timeline|
					tweet = rest_client.status(timeline.id)
					at_post = tweet.created_at
					post_time = (time.to_time.to_i - at_post.to_time.to_i)
					d = post_time / 86400
					h = post_time % 86400 / 3600
					m =	post_time % 86400 % 3600 / 60
					s = post_time % 86400 % 3600 % 60
					before = "#{d}#{h}時間#{m}#{s}"
					rest_client.update("@#{status.user.screen_name} #{user}の最終投稿時間は#{before}前です。 (#{uuid})")
				end
			end
		end

	end
end