Hyper.sh - Container-native Cloud
Hyper.shは、とても手軽にDocker containerをhostingできるサービスです。課金は秒単位で行なわれ、一番安いプランだと月に$1ちょっとしか費用がかかりません。
これを使って、特定の単語に反応するTwitter Botを運用してみます。
Twitter Application Management
まずはここからCreate New Appします。Consumer Key
、Consumer Secret
、Access Token
、Access Token Secret
を入手します。
今回つくるBotは、特定の文字列からなるDMを受けとったときに返信するというものです。
require 'logger'
require 'twitter'
logger = Logger.new(STDOUT)
config = {
consumer_key: ENV['CONSUMER_KEY'],
consumer_secret: ENV['CONSUMER_SECRET'],
access_token: ENV['ACCESS_TOKEN'],
access_token_secret: ENV['ACCESS_TOKEN_SECRET'],
}
rest_client = Twitter::REST::Client.new(config)
logger.info 'REST client initialized'
streaming_client = Twitter::Streaming::Client.new(config)
logger.info 'Streaming client initialized'
streaming_client.user do |tweet|
if tweet.is_a?(Twitter::DirectMessage) && %r[\A年収\z].match?(tweet.text)
logger.info "Recieved DM #{tweet.text} from #{tweet.sender.screen_name}"
rest_client.create_direct_message(tweet.sender, "#{ENV['ANNUAL_INCOME']}万円")
end
end
このようになりました。
さて、まずはこのDocker imageをDocker Hubにpushします。 unasuke/annual-income - Docker Hub
次に、hyperの中にpullしてきます。hyperをローカルマシンと同様のものだと考えるとわかりやすいかもしれません。
$ hyper pull unasuke/annual-income:v0.1.1
そして、docker-compose.ymlを作成してあるので、次のコマンドでもうBotが動作し始めます。
# project名にハイフンが使えないと怒られたので直接指定
$ hyper compose up -d -p unasuke_annual_income
という訳で、僕に「年収」とだけ書いたDMを送ると僕の年収が返ってきます。
どうですか、Hyper.sh。ちなみにプランは自動で決まるのか、僕のBotはS4(月$5.18)で実行されています。
以下にinvitation linkを置いておくので是非活用してください。 https://console.hyper.sh/register/invite/yApE4Arn3osDm9RPDG3LuLJPj1BwR8fK
デフォルトでS4になり、docker-compose.yml内で指定できるそうです。
Compose File Reference | Hyper.sh User Guide
もともと去年組んだPCは、VRを楽しむために組んだものでした。でも資産的に厳しい状態が結構続き、VRデバイスには手を出せずにいました。
そしたらなんと、Oculus Riftがいきなり5万円まで値下げしたじゃないですか。数十分悩んだ末、購入を決めました。
というわけで、やっていきましょう pic.twitter.com/PZVuuv5Xmk
— うなすけ (@yu_suke1994) 2017年7月15日
僕は眼鏡をかけているのですが、Oculusを装着するのが一番大変で、コンテンツの視聴やゲームのプレイ自体には支障ありませんでした。
しばらくしたら少し小さめの眼鏡を買おうと思います。
セットアップの過程でセンサーによる部屋の認識が(と言っていいのか?)あるのですが、それにてこずりました。そんなに広くない部屋なので、何度も「もう少し離れてください」と表示されてしまいました。
サマーセールで購入した場合には、5つほどのゲームが無料でバンドルされてきます。そのうちで惹かれたRobo Recallをやってみました。
Robo Recallが、というよりやっぱりVRはすごいもので、VRという意識が薄れていないゲーム開始時のムービーですらヒヤッと思わせられました。没入感がとにかく凄いです。
操作性に関しては、僕があまりゲームをやらないのと、とにかく敵が迫って来て焦るので、終始わちゃわちゃしてしまいました。
ヤバい
上のみくにゃんはリリース記念に描きました。やる気の続く限り、maekawaのリリースごとにみくにゃんを描いていこうかと思います。
いつの日からか、TargetにもIAM Roleを指定できるようになっていたのでそれの対応をしました。
cliで実行するときに、aws credentialのprofileを指定して実行できるようにしました。
今回のリリースのメインです。
Amazon ECS Now Supports Time and Event-Based Task Scheduling
spice lifeでは CloudWatch Eventsからecs taskを実行するのに、今まではlambdaを中間層として実行していました。
しかしTime and Event-Based Task Schedulingによって、中間層となるlambda functionが不要となり、直接ecs taskを実行できるようになりました。
今回のリリースで、maekawaからEcsParametersを取り扱えるようになりました。
いつの日からか、Kinesisにも対応していたのでmaekawaでも取り扱えるよう対応しました。
InputTransformerとRunCommandPrametersには対応していませんし、今後するつもりもありません。
理由として、まずこの2つの機能をspice lifeで使っていないこと、そして実装が困難であることが理由です。
Golangを初めて触って作成した初めてのcli applicationなので、実装にまだ整理されていない部分があります。その上、言語知識がまだ不足しているので、複雑な構造の型への対応が今の僕には困難です。
なので実装予定はありません。
ただ、もちろんPullRequestを頂けるのならありがたく頂戴しますし、Amazon Wishlistなどの手段で圧を掛けてくだされば実装する気持ちになると思います。
outputをもうちょっとかっこよく(色とか差分とか)できたら1.0.0としてリリースしたいですが、いつになるかは未定です。
@yu_suke1994 あなたとはてなスター、いますぐ設置 https://t.co/sihB5jvGDx
— あそなす (@asonas) 2017年5月17日
ということがあり、つくりました。
Tokyo Middleman Meetup#3 - connpass というイベントを開催したのですが、そこでのLTでlive cordingをして、日曜から清書してできあがり、という経緯があったりします。
を参考に、トークンを取得してください。
これは例です。詳しくは はてなスターをブログに貼り付ける - はてなスター日記 を読んでください。
activate :hatenastar,
token: 'your token',
uri: 'h2 a',
title: 'h2 a',
container: 'h2',
entry_node: 'section.article'
<head>
のどこかで = hatenastar_tag
を呼び出して完了です。
また、引数でconfig.rbの設定値を上書くこともできます。
= hatenastar_tag(entry_node: 'div.article')
エントリの複数指定、1エントリ内での複数スター表示にまだ対応できていません。pull requestを送ってくれてもいいんですよ
とりあえずスター連打してください。
middlemanでemoji記法 :example:
をemoji画像に置換するmiddleman pluginをつくりました。
あ、middleman v4以降必須です。
絵文字使いたかった、けどunicode emojiの入力ってけっこうしんどい、なのでGitHub風に絵文字を入力したかった。
できるならemojiのproviderも選べるようにしたかった…… そんな感じです。
Gemfileに次の行を追加して、bundle install
します。
gem 'middleman-somemoji'
$ bundle exec somemoji extract --provider=twemoji --destination=./source/images/emoji
このへんは本家 r7kamura/somemoji を見に行ったほうがいいかもしれません。
activate :somemoji,
provider: 'twemoji',
emojis_dir: '/images/emoji'
上のコマンドそのまま実行すると設定はこんな風になります。
あと、asset_hash
を使っているならemoji画像以下はhashを付けないようにしてください。
# こんなふうに
activate :asset_hash, ignore: 'images/twemoji'
:star:
<pre>
や<code>
の中にあるemoji記法も否応なしに<img>
タグに変換してしまうので、これを直したいです。見通しは立ってます。手を動かすだけです。
これ必要かなぁ……
(2017-05-13 10:53 誤字修正)
こちらになります → lupinus.bouquet.blue
やぎにいが一晩でやってくれました。 dark pink color theme by yagi2 · Pull Request #3 · unasuke/mastodon
ALBが頻繁に500を返すので、ログを見たらpumaが起動直後に死んでるのでインスタンスタイプをt2.mediumに上げたら安定しました。
before
after
つらい。
nodeからpostgresへの接続がうまくいっていないのか、Missing access tokenで怒られている。
https://lupinus.bouquet.blue/@unasuke/59
S3のACLはpublicにreadできるはずなのに、何故。
以下、現状(t2.medium)です。
まだログインできません。
最初、いちからterraformで構築しようと思っていたのですが面倒すぎたので r7kamura/mastodon-terraform をforkして作成しました。
追加で作成したリソースは、SESとlog用のS3 bucketとRoute53のzoneやrecordです。
構成は前述のリポジトリと変えている部分はないのでスケールしやすい構成ではあるのですが、スケールすると大変なことになるのでしばらくはおひとりさまインスタンスとして色々いじってみたいと思います。
が、新規アカウント作成できるようにするつもりではあります。
右のDJでした。
はしゃぎすぎて機材のコンセントを踏み抜いてしまったこと、大変申し訳なく思っております。
今回はB2Bなので、僕が流した曲を順に貼っていきます。
unasuke/maekawa: AWS CloudWatch Events client
maekawaは、Golangで書かれたAWS CloudWatch Eventsのcli clientです。Yamlに定義されたRuleとTargetを登録します。
冪等性を持つようになっているので、便利です。
軽く探したのですが、CloudWatch Eventsの操作をするcli toolが見当たらなかったので作りました。
Golangはクロスコンパイルが容易にできる言語です。1つのソースから複数環境に適したバイナリを生成することができます。
手元のmacOSで実行したり、CIサービスで稼動しているLinux上での実行をしたりすることを考えると、クロスプラットフォーム対応は必須でしょう。
Golang向けのaws-sdkがあるので、awsの機能を使用するプログラムが簡単に作成できます。
aws/aws-sdk-go: AWS SDK for the Go programming language.
最大の理由です。
クロスプラットフォームも、aws-sdkも、どちらも僕の慣れているRubyで書くことにしても、同じ利点があります。
ただ、何か静的型付けでコンパイルする言語を学習しておきたいなと思ったので、Golangを選択しました。
隣の席の人に「どんな名前にしたらいいですかね」って聞いたら「maekawaでいいんじゃない」って言われたのでそうしました。
READMEを読んでください。
あとまだ安定してないので実戦投入オススメしないです。直せてプルリク送れるレベルで使ったほうがいいです。
そこそこ安定したらversion 1.0.0にします。
もともと社内で使うために作ったので、そのへんも追々会社のブログに書こうと思います。
ヲチモノ- 【ヘッドホン】Beats 『Solo3 Wireless』 レビューチェック
発売開始はどうやら2016年の9月。なんで今頃になって買ったのかと言うと、発売当初になかった(PRODUCT)RED色がいつの間にかラインナップに追加されていたからです。
(PRODUCT)REDというか赤が好きなので。
音質は僕はどうこう言える耳を持っていないのでなんともですが、今までに使っていたbeatsのヘッドホン(Mixr)と同様に低音がちゃんと出ているように思います。
DJブースでも使ってみましたが、モニターヘッドホンとして支障なく使うことができました。
しっかり押さえつけてくれるので、うがいとかしても外れません。ただやっぱり長時間つけてると耳が痛くなりますね。眼鏡もかけてるし。これは最初からわかってました。
いくら(PRODUCT)REDとはいえ赤すぎでは???????