悠々としたTECH日記

「TECH日記」と言いながらそんなに面白いこと書いてない。備忘録的な感じ。 もちろん、宣伝とかもするけど、ブログを基本的にTwitterの延長としか考えてないので、その程度に。あと、作文の練習も兼ねて。

DojoMeguri in Tottori に参加してきたので簡単なレポート

経緯

よく覚えてない、というか気づいたら参加することになってました。う~ん、どんな風な感じでこうなったんやろ。

うろ覚えの状態ですが、たぶん、一か月ほど前?のTwitterで、「DojoCon JPというイベントで、すげぇ奴が最優秀賞を受賞した!」ということが流れていて... (僕も参加したかったけど学校があった(´;ω;`))

んで、CoderDojo 大山のChampion(主宰)さんが、その最優秀賞を受賞した方の一人と、その他、中学生でメンターやってる奴ら集めて交流会兼CoderDojoしようぜ!!という話になって、元々そのChampionさんとは面識があったもので、僕も参加させてくださる事に。

様子

以下のツイートを見てくだされば。

f:id:yu-san-19:20171223213833j:plain
おそらくグループプログラミングの様子

f:id:yu-san-19:20171223213948j:plain
LEGO ロボットをいじくる僕とNinja

↑ 結構おもろい作品できましたよ!!あとなぜか写真に写る僕の顔は毎回怖くなるんだよな...

あとで主宰の方から共有されるそうなので、されたら詳細とそれぞれの感想を追記しますー。

所感

すげぇ、と思った事

ジュニアメンターの一人である、 yuki384 さんのデザインというか絵心、センス?

季節に合わせたテーマで作品作ったり、すごかったです。

あと、彼女、とても大人な考え方で...

ツイートの内容からしてもそうだし、しっかり冷静に物事を見てる方なんだなーと。(自分は結構感情的になりやすい。というか、なった。)

うちのメンターさんからもスゲェぞ、と聞かされてたんですけど、いやもうびっくり。

yoshiki さんというジュニアメンターさんもすごかったです!

いやぁー、Scratchであそこまでできるとは思いもしない...

発表してたりする時なんか、気絶しそうなぐらい。いや、ホント、Scratchであっこまでやられたらほんとに気絶しますよ、まったく。

もっとスクリプトの方を見たかったんですけど、なんせチビッ子たちに絡まれてたもんで... すんません。

(なぜか僕ってチビッ子にはモテるんですよね、この前も全く知らないチビッ子に絡まれたりしたり。)

グループプログラミングでは、山本さんっていうジュニアメンターのチームも面白かったですね、かなり独創的なアイデアのゲームを作っていて...

バスで敵キャラを倒していくんですが、その方法はひき殺すんでなくて、バスから発射されるレーザーで倒すという...

発表会でも結構沸いてましたね~!!

いやはや、世の中ではいろんな人がいるんだなぁと。

疑問に思った事、気になったこと、吸収したこと

世の中というか、そういう分野

スゴイ人たちがたくさんいるんだな、という事。

技術的な事

オブジェクト指向を完璧に学習するともっとできるようになる、とメンターさんから教えていただきましたー!

あと、もうちょっとわかりやすい変数の命名方法にしたほうが良い場合があるらしい。

(そーいや、Javaで変数名を似たようなものにしたばかりに五時間ぐらい考えこんだ事もあったような。)

リーダブルコードだったっけ、ここだけじゃなくて他のところでも必ず聞くぐらいの本だけど、いまだに買ってない...

あと、プレゼンとか発表上手だね!って言われました。

岡山 岡南 のメンターの方々がいろいろとご指導してくださったおかげかもです!

まとめ

世界って広くて狭い

今回、総じて一番改めて強く思ったことは、

世界って広くて狭い ということかなー。

やはり、様々な価値観を持ってる方や、素晴らしい技術、自分とは一致しない考え方を持った方がいるし、そういう意味では世界って「広い」なと思いますし、でもこういう三十人ぐらいのイベントでこんなに様々な方にお会いするというのはある意味「狭い」な、とも感じられる。

そういう広くて狭い世界で、活躍、というほどでもないけれど、上手く活動できるような大人になりたいな、と思いました。

あとは絵心欲しい、デザインの感覚欲しい。センス欲しい。うらやましい。デザインもできてプログラミングもできるって最強じゃん。マジで。

今後もどんどんこういう系のイベントや交流会、勉強会に学校がないときに参加していきたいなーと思います!!(特に中高生が多めのところ。どっかないですかね!?)

ということで様々な刺激を受けた一日でした。準備してくれたCoderDojo 大山 の方、それから県外から来られたメンターさん、juniorメンターに、いろいろと絡んでくれたNinja達、ちょっと最後はバタバタでゆっくりお別れできませんでしたけれども、どうもありがとうございました。

また今度は是非 CoderDojo 岡山 岡南 に来てくださいねっ ^^)ノシ

「自動で卓上ベルの音を発表会で鳴らしてくれる機」を頑張って作っているので、学習したことをまとめる。

つくったもの

Dojoで時間制限付きの発表会をしてたけど、あまり人手が足りないので、なんなら自動で鳴らそうか、と。 下のツイートの動画がそれ。デザイン系は全然やってない...(Help Me...)

機能

  • スタートしてから設定した時間になったら「チンッ」とならす。
  • 音楽ファイルは自分で設定できる
  • タイマーだけでなく、単体で好きなタイミングで鳴らせるようにもする。

ただこれだけ。

使ったツールや環境

んで、わかったこと・嵌ったことなど。

Form のスレッドに直書きで Thread.Sleep() を実行すると、そのままFormもSleep状態になる。

  • 解決策: 普通に別Threadに切り出す。でも、わざわざ新しいThreadクラスを作るほどバカではないので...
// PlaySound(int i) はそのまんま音鳴らす。
Task task_play_sound_auto = Task.Run(() =>
    {
        Thread.Sleep(time_1);
        PlaySound(1);

        Thread.Sleep(time_2 - time_1);
        PlaySound(2);

        Thread.Sleep(time_3 - time_2);
        PlaySound(3);
        });
    }

Task.Runを使う。これでOK。

音楽鳴らす方法がわからん。

  • WMP Lib を使って頑張った。
//オーディオファイルを指定
mediaPlayer.URL = 'FilePath';
//再生
mediaPlayer.controls.play();

ユーザーの設定を保存したい

  • プロジェクト > [プロジェクト名] のプロパティ >設定 を開く。すると、下のような画面が。 f:id:yu-san-19:20171214210243p:plain

名前に、プロパティ名、種類に型を入力、スコープはユーザーにしたらOK。 すると、

Properties.Settings.Default.「プロパティ名」 = "値";
Properties.Settings.Default.Save(); // これがないと保存されない

で各種パラメーターの保存ができる。

これはユーザーの設定以外にも使えそうな感じ...?

最後に

一番時間がかかったのが、Task.Run()と、音を鳴らすやつ。

別のスレッドにリソースが占有されちゃって、音が鳴らなくなったり、みたいなことがあって、結構難しかった。 (正直そこまで詰まるとは思わんかった...)

でもやっぱ、C#のほうがまだわかる感じ。(今頑張ってRailsやってるので...)

まあ、これでいろいろと理解できたのでめでたしめでたし。

一応、使ったツールやライブラリのライセンス確認して、問題なかったらGithubに載っけるので、間違いあったら容赦なく嬲り殺してくださって結構です^^


追記 Github にようやく載せれた。

github.com

Ruby Sinatra を使ってGoogle認証をする(実験~一気に解決編)

前置き

十数日前にSinatraGoogleOAuth認証をしようとしたゆ~さんの成功への道は非常に困難なものであったが、また一筋の光が見えてきているのであった。
↑前回の下調べ編です。
なんか見つけた

いろいろと調べていくうちに、このようなリポジトリを見つけた。
んで、額にしわを寄せながら、英語を解読していくと、なんか OmniAuth と連動してGoogleOAuth認証を簡単にできるよ!!的なツールと理解できた。
それで、じゃあやってみようということで、
まずはGemfileに以下を追記
SinatraのBundleを使うことになっているので、インストールする必要があるみたいだが、元から入ってたのでその作業は省けた。)
そして、 bundle install を実行。
ついでに、ここの段階で exportコマンドを使用して、サーバーへの環境変数の設定をしておく。
その後がまた苦労した。
先ほど、rackもインストールしていたので、ここでRackも使用することに。
これによってちょっと難しくなってくる。
とにかくリポジトリのReadMeの通りにやってみる。
Config.ru で App.new をしているので、当然ながらに App Class を作んなきゃいけない。
んで、また ReadMEを見てみると、どうやら、/auth/google_oauth2/callback にPOSTで帰ってきて、情報は、request.env['omniauth.auth'] に保存されているらしい。
...でも取り出し方がわかんない。(;´・ω・)
試行錯誤の結果、ようやく仕組みがわかってくる。
返ってくる形式は、
こんな感じらしく、それを取り出すには...
これを実行すると、きちんとブラウザ上にメールアドレスが表示される。
どうやら、きちんと取得された模様。
...とまあ、Googleの認証はうまく行ったけど、なんとあのPostのあとに、 erb の表示をするように付け加えたらうまいように表示してくれないので、まだまだ記事のネタはたくさんありそう。
それについてはまた後程。(;´・ω・)