@m_seki の

I like ruby tooから引っ越し

dRuby 20th anniversary hands-on workshop, RubyKaigi2019編終了

RubyKaigi2019編終了

dRuby 20th anniversary hands-on workshop, more. - @m_seki の つづき。

 

dRuby20周年、ハンズオン全国ツアー松江に続き、2番目の開催はRubyKaigi2019の会場でした。RubyKaigi2019編ではこんな風にスペシャルでした。

  • おやつ
  • 豪華なスタッフ( @ktou @youchan @shugomaeda @drbrain @tenderlove )
  • Rubyチーム参加
  • drbrain のマルチコアを使い切るデモ

 

 

テキストがんばった

がんばって英語風のテキスト作ったけどほとんど日本語の大丈夫な人でした!当日は3つの課題をやる予定でした(実際そうでした)が、時間が余ってしまう人のために2つ余計に書いておきました。後半の2つはDockerを使った練習です。

なおモンgoとかのフレコ書いといたけど友だち増えなかった。

 

予行演習した

これは偶発的に起きたのだけど、前日のコード懇親会でハンズオンの内容をやりました。ハマりポイントなどを知ることができてお得でした。(@chioniyan ありがとう)

コード懇親会、いい感じでした。ほんとにコードで懇親してた。すばらしい。

 

 当日の質問・トラブル

macOSで、プロセスによりIPv4, IPv6のいずれかのポートを開くケースがあった。最初はわからなかったけど、優秀なスタッフが解明してくれた。すげー。

 

「DRb.start_serviceはなにするんですか?」と質問いただいたのですが、説明することがありすぎてうまく答えられませんでした。もうちょっと演習進んでからじゃないと伝わらないと思ったんだよ!ごめん!

それから、最後の方で「Nginxみたいなのを起動しなくてもいいんですか?」って聞かれたので、ああそうか、疑問を持った人の背景に合わせて説明できたらよかったなあと思いました。

 

あと何に使えるんですか?みたいなこと聞かれるけどマイクロサービスでいいようなところにはそのまま使えます、と答えたら雑だろうか(マイクロサービスは何に使えるんですか?と同じ問いになる)。Twitterで昔使ってた、っていうのは説明にとても便利。

RubyConf行った時に教えてもらったのは銀行のなにか、ビデオ配信のなにか、ほかにもいろいろあったけど忘れちゃった。(ユーザー数1なのはTofuだけど、最近2になった)

 

全国ツアー

全国ツアーとか言ってるけど、次の予定はありません。誰か誘って!

福岡はとても美味しかったけど、食べてないものの方が多いのでもう一度誘ってくれてもいいのよ!

 

RubyKaigiではなく、NIXONのリュックの話

SCRIPPS BACKPACKがすごくいい

ほぼ毎年誕生月にリュックを新しくしています。

NIXONのリュックが何度か続いてたのだけど、昨年は別ブランドにしてみたら、その華奢な造り(意外と早く痛んできた)にがっかりして、今年はまたNIXONにもどしました。

んで、LANDLOCK系からSCRIPPSにしました。カタログだとさりげなくてよくわからなかったけど、PCの収納とタブレットの収納が独立してそれぞれクッション入ってるのね。とても使いやすい。(NIXONはPCがサイドから出し入れできるのでメインの荷室とは違うアクセスができる。でもLANDLOCK系はPC用のしきりが薄い。)

あとね、カバンの底側にスニーカーを収納するための独立した部屋がある。これがまたよくて、ミラーレス一眼とその付属品が入れられる。Instagramのサボりたいが加速する感じ。

自分のはIIではなくて番号なしの旧型。せっかくなので実物を自慢してもいいよ?

 

 

 

dRuby 20th anniversary hands-on workshop, more.

ハンズオンの資料

RubyKaigi2019で使用する、ハンズオンの資料のドラフトを公開しました。事前にダウンロード、あるいは印刷してきてね!

スライドスポンサーの皆さんは文面教えてくださーい。

 

http://www.druby.org/fukuoka2019.pdf

 

そしてスライドスポンサーもまだまだ募集しています。

 

当日には間に合わないけどグッズもあるよ!

suzuri.jp

 

druby.booth.pm

 

dRuby 20th anniversary hands-on workshop

RubyKaigi 2019

I will do hands-on workshop. dRuby fans, Please help! (slide translation, interpreting, coaching..) 

dRubyのハンズオンワークショップをやります。dRubyファンのみなさん、当日空いてたら手伝って!英語圏の人も!

slide sponsors

毎年恒例のスライドスポンサーをGumroadで売ってます!つきあいで買おう!

https://gumroad.com/l/drb2019

wishlist

dRuby20周年だし誕生日だしwishlistです。遠慮なく!

https://www.amazon.co.jp/registry/wishlist/1R43BBPSPUEEE/ref=cm_sw_r_tw

Dropboxのアプリの練習をしたよ

DropboxAPIを使ったアプリ

そういうのがあるんですね。知りませんでした。

https://www.dropbox.com/developers/apps

上のリンクからcreate appすると、APIの種類とアクセスのタイプを聞かれました。よくわからないので次のようにしました。

あとはアプリの名前を決めればOK。

そのあとの画面でGenerate Tokenした文字列をメモしておく。OAuth2でもできるのか。まだ試してない。

実験

メモしたトークンを.dropboxに書いて実験。
これはラズパイで撮影した写真を定期的にアップロードする例。youchan にもらったカメラモジュールを組み込んだラズパイで動く。
5分おきにループして、"run"というファイルがある間はアップロードする。ないときはなにもしない。

dropbox APIを利用するgemはいくつかあるようだけど、このスクリプトでは"dropbox_api"を使いました。dropbox アンダースコア api だよ!他にハイフンもあるよ!

require 'dropbox_api'

key = File.read('.dropbox')
db = DropboxApi::Client.new(key)

while true 
  running = db.download('/zero/run') {|x| break x } rescue nil
  if running
    image = `raspistill -rot 90 -o -`
    db.upload(
      '/zero/test.jpg',
      image,
      :mode => :overwrite
    )
  end
  sleep 300
end

あとでFull Accessのアプリも試してみよう

追記

youchanも利用している、私あてwishlistはこちらです。

http://www.amazon.co.jp/registry/wishlist/1R43BBPSPUEEE/ref=cm_sw_r_tw

それから、Gumroadも。

恒例!スライドに名前を入れる券 2019-2020

今年はdRuby20周年だよ

体験dRuby - はじめての分散Rubyやりました

Rubyアソシエーションの前田さんに誘っていただいて、dRubyのワークショップをやりました。会場は松江駅前のオープンソースラボ。7年ぶりの松江。前回松江に来たのは島根大学の講義のとき。今回のワークショップも当時の講義をアップデートした内容で、複数の端末を使ってプロセス間でメソッドを呼んだり、オブジェクトを渡したり、返したりする様子を体験しました。

 

rubyassociation.doorkeeper.jp

 

Rubyを始めて間もない人から、仕事で使っている人まで、みんなそれなりに楽しめたみたい。ワークショップとしては成功だったと思うことにしました!

 

今年はdRuby20周年。初心者向けワークショップで全国ツアーしたい。

 

以下松江滞在メモ。

  • 当日の天候は雪で、今年も出雲大社はあきらめた。
  • 橋を徒歩で渡るとき、風に注意。
  • ミスドがなくなってたけど、セブンイレブンがあった。
  • ローソンにはポプラが追加されてる。
  • クルマだと15時間(休憩込み)
  • ドーミーイン快適だった。磁気活性水はなくていいと思う。
  • たべすぎた。

なおウイッシュリストはこちらです。

 

lambdaのノート、Ruby編

AWSのlambdaのこと

AWS lambdaでRubyが使えるようになったそうなので、いつまでもlambdaを避けて通れなくなってきました。(自分に言い訳しづらくなてきた) 仕事でもそれ以外でも使ってないし、AWSしぐさが全然わからんのです。ぐぬぬ

最終的にやりたいこと

CGIで済むようなものを作れるようになっておきたい。(池澤さんのための素振り)

準備

はじめてのAlexaスキル開発 [音声認識アプリ開発の基礎知識を身に付ける! ]

はじめてのAlexaスキル開発 [音声認識アプリ開発の基礎知識を身に付ける! ]

アレクサの本を読んでAWSアカウントの作成やら、lambdaの簡単なサンプルは実験してありました。 この本、サンプルアプリは少ないんだけど、アカウントの作成が詳しくて重宝しましたよ!

今日やったこと

gemとかアーカイブしてアップロードして...みたいな記事を見てやってたけどうまくいかなくて(今は原因わかったけど)、基本に戻ろうと思って次の関数書きました。 ハンドラに渡される引数をppして確認するだけのlambdaです。

lambdaの設定画面から新規の関数を作って埋めただけ。

require 'pp'

def lambda_handler(event:, context:)
    body = { 'event' => event, 'context' => context }.pretty_inspect
    
    {
        'statusCode' => 200, 
        'headers' => { 'Content-Type' => 'text/plain'},
        'body' => body
    }
end

トリガーの左のペインからAPI Getewayっていうのを選んでいろいろ適当にやった結果動くようになりました。

https://8zmwlgdxf9.execute-api.ap-northeast-1.amazonaws.com/default/pp_inspect

実行すると引数のオブジェクトを観察できます。URLの末尾にパスを連結したり、クエリを追加したりしてHashがどう変わるか調べることができました。 WEBrick::CGIやTofuにこのインターフェイスを吸収するレイヤーを用意するのがかっこいいんだろうけど、どうせ誰かやるだろうから待ってよう。

ところで、URLから「default/」(ステージ?)っていうのを消したいんだけど...(よくわからないのでそのまま...)。

最後にリクエストの表現がわかってきたので、EAN(JAN)コードを与えると、その商品のamazonのページに飛ぶ関数を書いてみました。 クエリに「ean=値」をつけると該当商品のページが表示されます。(追記: 移動先のURLを以前は自分で組み立てていましたが、リクエストの結果から転記するようにしました。 2018-12-23)

https://qtmf64s8p8.execute-api.ap-northeast-1.amazonaws.com/default/myFirstRuby?ean=9784756142818

合わせて読みたい

ラムダノートのラインナップより。

RubyでつくるRuby ゼロから学びなおすプログラミング言語入門

RubyでつくるRuby ゼロから学びなおすプログラミング言語入門