なかっちゃんの日記

勉強会とか日々の勉強の記録

YAPC:Fukuoka行ってきた

聞いたセッション

perlペーペーなのでそれ以外で - Be PaaS Monger - クラウドエンジニアの三大美徳、またはIaaSを使わない3つの理由 - コンテナを「守る」仕組みから、中身を理解しよう! - システム障害をめぐる冒険 - Web application good error messages and bad error messages - 未来のプログラマー達へ ~Perl入学式卒業生から~ - グローバルなエンジニアを目指す為の入門的な話 - Inside Evalpark - the evolution of sandboxing - スキップしていいテスト、スキップしてはいけないテスト 〜速さと信頼を兼ねたテストコードを構築する術〜

懇親会ではわいとんさんとお話させていただいてAzure以外の話もしていただいて感謝です

中身については他の方々が書かれていると思うので学生の僕から得られたものを今の時点でまとめられるだけまとめていきたいと思います.開発経験がなさすぎてサーバを愛でる方がすきな僕が行って思ったことで本当に大事なことは

  • なんでもいいから自分の興味の有るもので設計,開発を行う
  • インフラエンジニアが監視,検知を楽にするためのツールを開発することがある

現役の方々からすると当たり前だろと言われそうですが(特に下は)学生からすると今の現場の流れ,しかも運用なんて聞かないとわからないんですよね,それ以外にも吸収するものが多い時間でした.

次の日はHackerzLabを午前,午後とトークしたりと充実した2日間でした

Perl入学式in福岡とかいう話もあるのでまた新しい機会がうまれそう

Mastodonのお話

この記事はHackerzlab.博多 用の記事です

mastodonとは

マストドンは、Twitterに似た特徴を持つが、オープンソースソフトウェアを実行している分散されたサーバーの連合によって管理される、連合型のソーシャルネットワークである。

簡単に言うとサーバがいっぱいあるTwitter

ストドンのサーバーは「インスタンス」と呼ばれる。利用者は一つのインスタンスに所属し、他者が閲覧できる短文を投稿できる。投稿の公開範囲は、ユーザー自身の設定とインスタンスごとの設定により決定される。投稿者本人のみ閲覧可能・投稿者のフォロワーのみ閲覧可能・あるインスタンス全体に公開・インスタンスを超えマストドンのネットワーク全体に公開・二者間のダイレクトメッセージを、投稿ごとに利用者は選択できる。 twitterとの差別化として、中央集権型のトップダウンの管理ではなく、小さなコミュニティによる自治的な管理という方向性をマストドンのサービスは模索している。

それぞれのインスタンスによって話題の方針がある

一覧 http://k52.org/mastodon/

用語

http://qiita.com/ato1234/items/22d49b9c17c758317077

タイムライン

タイムラインが何種類かあります

  • ホーム

    自分のフォロワーのtoot TwitterのTLみたいな感じ

  • ローカルタイムライン

    自分のインスタンスの人たちのtootが表示

  • 連合TL

​ 連携しているインスタンスのtootが表示

登録してみましょう

Https://hackerzlab.net

スマホアプリもあります http://justsize.hatenablog.com/entry/2017/04/17/060040

技術的な話を

Github:https://github.com/tootsuite/mastodon

ここを参考に今回はdockerを使わずに構築しました.

Redis

全てのデータをメモリにいれるとかなんとか

Postgres

DB

なんで2つDBがあるのか

Redisをキャッシュ保持,高速小容量で動かし,実際のデータはpostgreへって感じ

Rails

メインですね

API

C#REST APIでてました その他言語でもいけます.


ここから追記(2017/06/25)

スマホアプリ

iOS: Amaroq  

Android: Tusky  

Win/Mac: githubに上がってるそうです. web版でいい気もしますが

今の状況

mstdn.jpに一極集中するというよりかはいろんなところに分散されていっている感じです.企業としては

Qitta,DWANGOは表向きは試験的に行うと書いていました.

1つのインスタンスは一つの話題に特化するということが根付きつつある?

引用

https://matome.naver.jp/odai/2149218081638507401

HackerzLab.博多vol10に参加してきた

2回目の参加してきました.全然解けませんでしたww.これじゃいかんなあって思いなが復習しなきゃなーって思いつつ,レポート書いてました.レポート書き終わったんでささっとまとめて行きますね.

シーザ暗号解析

何文字ずらすかわかんなかったんで「どうしようかなープログラム書こうかなでも時間ないし」ってことで後回しにしました.んで解説でご紹介していただいたツールをここに置いときますね.perlとかで書いてみたいですね.有るものを違う言語で自分の手で作るのもだいぶ訓練になりそう

jad コマンド

javaの逆コンパイルのコマンドですね.ソースコードがそのままでてきてびっくりしました.ここまでの精度でもとにもどるのかーって思いました.

javap

僕はこっちのコマンドで解析しました.こっちのほうが「逆コンパイルだー」って感じがして僕は好きですw

コンパイルデコンパイル

皆さん意味は同じと取るんでしょうけど言葉の意味合いとして何か違和感を感じたので少し調べてみました.ここで言葉の意味を幾つか

んー期待していたとおりにの文言で出てこないですね.今僕の中で詰まっているのは

バイナリからソースコードを生成 することと バイナリからソースコードを取り出す ことは必ずしも同義ではないのではないだろうかと思うんですよ.実際にjavaでやってみました.

public class HelloWorld {
    public static void main (String[] args) {
        System.out.println("Hello World !!");
    }
}
import java.io.PrintStream;

public class HelloWorld
{

    public HelloWorld()
    {
    }

    public static void main(String args[])
    {
        System.out.println("Hello World !!");
    }
}

参考までにC言語は半分もどればいいとかいう話が…..(出処怪しい)

では本題にもどりましょう.上の2つの結果を見ていきましょう.最初のは有名所でHello Worldですね.んで逆コンパイルしたものが下になるんですけど,まあそりゃあそうなるだろって感じですし僕も,「へーこの精度で戻るんだ」って感想です.だからこそ100%すべて戻るみたいないい方をしていないかなと,自分自身で再確認しつつ「元のソースコードを見るためには逆コンパイルしたらいいよ」ではなく「元のコードと同じ動作をするコードの見本が見れるよ」くらいが正しい日本語ではないでしょうか.いやわかっている人はいいんですけど,それを知らない,わからない人に対してさも全く同じようなコードが生成されるような言い方はご法度ではないでしょうか(少し教育的な話にもなるんでしょうけど).今回違和感を覚えたので少しやってみました(文句はいくらでも受け付けます,)

SQLインジェクション

はい有名所ですね.しかし実際に調べたこともなかったのでこれを期にいろいろ調べてみた.はいそもそも定義いってみよう

だそうです.またこれが調べたら出てくる出て来る.これ自分で調べても理解はしていただけそうですね.まあSQL文を悪意のある人の思うように動くように書き換えるんですね.基本的にユーザーの入力したデータをSQL文に組み込むと思うのでそこをうまく活用したのかって感じです.例えば

SELECT * FROM hoge WHERE id= $ID AND password = $PASS 

こんなSQL文があったとしましょう(適当な文ですいません).ここで IDにコメントの “–"を入れると,

SELECT * FROM hoge WHERE id="admin" -- AND password =fuga

ってなるわけですから後ろの方全部無視なんですよね 参考

これは管理者としては阻止しなきゃいけない案件ですねー(NOSQLについても書こうと思ったけどやめた)

htpassword

でたBasic認証のやつ.ここにいろいろ書かれてますよーってやつですね.参考ここで力尽きたので…….

Serverless Frameworkと出会った

最近全然更新してないですね(東京から帰ってきてから更新してないじゃんということに書き出す前に気づいた。)言い訳はしませんが、個人的にかなり大きなことがあったのでなんかもう書く気にすらならなかった(ネタもなかった)。

じゃあ今日はServerless Frameworkの話していきたいと思います。AWSもからむのでLambdaのお話もします。ただホント説明を受けたくらいなのでいろいろなサイトを見ながら書いてます。

Serverless Frameworkとは

一言で言うとサーバレスでいろんなことができる(そのまま)ってイメージですかね。ちまたじゃ注目を浴びてるみたいですね。
公式サイト
github

そもそもServerlessとは

最初聞いたときは"すっげーサーバいらねえんだ なんかブロックチェーンみたいやな"(なおブロックチェーンもよくわかってない)って思ったんですけどんなわけないですよね。 んで引用[1]に書いてあった、"Why The Future Of Software And Apps Is Serverless"のそもそもServerlessとはなんぞねと言うところだけ抜き出してきました。

Thinking Serverless

The phrase “serverless” doesn’t mean servers are no longer involved. It simply means that developers no longer have to think that much about them. Computing resources get used as services without having to manage around physical capacities or limits. Service providers increasingly take on the responsibility of managing servers, data stores and other infrastructure resources. Developers could set up their own open source solutions, but that means they have to manage the servers and the queues and the loads.

Multiply this effort by the number services an app might consume (task processing, message queues, SMTP servers, payment services), hosted services quickly start to look like the future of computing.

エンジニアがサーバーの事考えなくてもええよーって意味ですね。AWSGoogle Platform,Azureのこと知ってたのになんでわかんなかったんかなw
今まで発生していたインフラ側のトラブルがほぼ無くなるわけですね。(AWSはS3がこの間トラブってましたがそれでもかなり高い稼働率)しかも使用する会社としてはそこの責任は自社にはないので"治るまでまってくださいーい"で終わるわけですね。そりゃあ流行るわな

それを踏まえて何ができるの?何が動いてるの?

こっから先はAWSのお話ですすめて行きます。(僕自身がAzureとかいじる予定はないので) あとわかりやすいサイトを[3]においておきますね。先輩から聞いたお話や調べたもののまとめですけどわかりやすくまとめるとなんらかのトリガーによってAPI Gatewayを経由してLambda Functionを呼び出し処理を行うって感じになるんですかね(用語の説明は下にしますね。)この説明はServerlessFrameworkを使ってAWSで実装するときのイメージになりますね。我ながらすっごい抽象的なことしか言えないですね(これから勉強するんだからそりゃそう)まあ処理によってはAPI Gatewayを通らないこともあるんですかね(DBの更新をトリガーにするとかしたらそうなりそう)できることはLambda Functionでできることはなんでもできるって感じですかね?

API Gateway

調べてたらAPIの意味がそもそもちゃんとわかってないなってわかったので下に書いた。 じゃあ気を取り直して行きましょう。引用[4]がわかりやすかったです。APIの管理システムなんですね。さあそれを聞いたらなおさら頭は混乱してきた。"なんでAPIを管理するシステムを通る必要があるの?参照でもしてるのかな あとこの感じだとさっきのAPI Gatewayを通らないものがあるってのも怪しい感じですね"(今の脳内)

API

http://it-trend.jp/words/api 規約、関数の集合のことなんですね。

Lambda

任意のトリガーに対して任意のコードを実行してくれるサーバくらいの認識でいいのかな。 知識も語彙力もないのでこれ以上のことがかけないです

REST API

でてきてないけど(自分用) ここ

これに関しては1年間くらいかけてやっていくことになるのでゆっくり成長していきます。

追記 Socket Proxis

これ便利ですね。大学のLANに入り込むのもいちいちいろいろソフトを起動しなくていい sshの"-D"optionでポート指定してProxis設定すればいいというお話kyutechのみなさんお試しを(iscのアカウントで入り込めばいい)

引用

[1]サーバなのに?サーバがない?サーバレスアーキテクチャの使いどころ

[2]Why The Future Of Software And Apps Is Serverless

[3]サーバーレスアーキテクチャという技術分野についての簡単な調査

[4]5分でわかるAmazon API Gateway

東京旅行を終えて

Facebookでもちょこちょこチェックインしていましたが2月24日から3月1日まで東京、横浜、静岡と弾丸で行ってきました。

ScalaMatsuriを終えて

さんざんひとりでに盛り上がっていましたが「採用担当者、CTO ぶっちゃけ座談会」を聞いて自分の中でしっかり気持ちが固まりました。いい意味で決意できました。まずScalaをする前にきちんとC,Javaの勉強をしようと思いました。(まあバイトでrailsも触りますが)大学生という少し特殊な時間の中で学問をきちんと学ぶときにScalaをやるのはすこし的はずれかなという結論に至りました。(ScalaMatsuriでお話された方々はほんとうに優秀でScalaをガンガン使っていらしゃったし、学生のうちからScalaを扱ってる方を否定するわけではなく僕の生き方として)今はScalaをするんじゃなくてもっとよく使われている根本を学びたいなとおもいました。座談会でも言われいましたが今Scalaができるかどうかではなくて、技術の根っこを理解してそれを自分の中で整理し、その言語の考え方を抑えることをやりたいと思っています。本当にいい機会になりました、自分の勉強不足を感じました。

ps: 司会の方が英語と日本語をどんどん切り替えてお話されていたのかっこいーなーってすごい思いました

新しい目標

Webapp

Javaで一つwebappを作ろうかなと思っています。2年後期で自分がいる界隈があまりに課題の管理ができていなかったこと、課題が多すぎてパンクしていたことを踏まえてそれを解決するようなアプリを開発していこうと思います。LINEで通知とか来たらうれしいな。

ksnctf

きままにCTFしようと思いました(まあ気分転換にでも)

paiza

ちゃんとプログラミングしますw

最後に

東京からの疲れがまだまだ抜けていないのでここらへでいおわりますね。

Ruby on Rails触ってみました

テストも落ち着きました.あとは英語1つだけなので実質春休みみたいなところはあります.来週には東京です.いやー楽しみです.ScalaMatsuri楽しみです.

なんでScalaって言ってたのに急にRailsをいじってるんだ(しかもRubyですらない)と思われそうですがまあバイトでじゃあやってみよーってなったので(笑) しかし環境ろくにできてなかったので最初に環境作成からです.(これがまた1時間かかった)

Rails環境構築

Apple Command Line Tools

結論からいくとこいつが1時間もかかった犯人です.ここからDLできます.これは一体なにがまとまっているToolなんだろうか調べてもいろんな問題の解決に導いているツールですねw(なんで今まで入れてなかったんだろう).実際,この中のどのツールが解決に導いたかはわかんないです.

homebrew

これもまた普段からつかってるのに全然メンテナンスしてないから問題いっぱい抱えてました.libxml2が入ってないエラーとPATHの問題でした.

 export PATH="$HOME/.rbenv/shims:$PATH"

を追加してhomebrewが普段から抱えている問題を解決しました.(これに関しては完璧に普段の自分が悪いですねw)

rails install

これはまあ上記の問題を解決したらいっぱつで

sudo gem install rails

で一発ですね.

ps:エラー文読むって大事ですね

最初はもちろんHello World

今回はこの本の3版を参考にさしました.こちらに原文のまま載ってますね.この順番に行きました.

rails new railsbook
rails generate controller hoge

あー Dive into Codeの勉強会で やったなあそういえばって感じです.とりあえずsqlite3でしたっけ?DB周りくらいまでいって本日は終了でした.

今日のメインはRailsより環境構築だった感じがすごいする.はいテスト終わりであんま記事は書かないでおこう.

HTTPSと表皮効果

今回は2つのお題がつながっているようでつながっていないような話です.

HTTPS

最近ブラウザでSHA-01だと怒られるようになりましたね.詳細はこのサイトがよかったの で 管理者たるもの証明書周りはちゃんとしなきゃなー(自動化してない)(自分への戒め

Let’s Encrypt

僕は自宅サーバー時代からお世話になってますねーなんせ無料でいい感じですから今でもgitbucketに使ってますよ.(ちなみにブログにプログラム載せるときはこのリポジトリ使っていきますね)

ACMEプロトコル

今日はこれのお話がしたくてですね. Let’s Encrypt専用のプロトコルなんですね.うちのサイトはここのツールを使って証明書周りをやってます.まあ所詮無料と言うことで使われるところはかぎられますけどねー(笑

表皮効果

あとですねLANケーブルのことについて勉強してたんですけどなんでより対線があるかって話であれ受信と送信用で流れる電流の向きを逆にすることで磁界をお互いに打ち消す合うようにできてるんですね.へーって感じでした. このサイトが良い説明してくれていたのでちょっとだけ(こっから電磁気ガンガンはいりますね)

まあここで Maxwell’s equationsより (texをやろうと努力しましたが折れました)
f:id:kaoru1615:20170208223921p:plain ※画像は http://www.geocities.jp/sugachan1973/doc/funto105-no410.html より

まあこれで説明終わりでもいいんですけど(これは自然はこういう風になってるのでまあツッコミどこもなく) ③'の式に"これを使う"て書いてあるんで僕の解釈だけすこしいれましょうか,磁界にたいしてナブラの外積(rot)をとると電流がでてくるんですよね.これが導線中心部の抵抗(電流の打ち消しとでも言うのでしょうか)になっているんですね.わかりやすく言うと電界が発生してそれを妨げるように電流が発生する,その電流がもとの電流と逆なんで打ち消す位の感覚ですね.

というわけで今回は今話題のSHA1のながれでHTTPSとそれをささえるLANケーブルがなぜより対線なのかという理由でちょっと電磁気してみました.

ps:話題と言えばWordPressやばそうですね,サイトをもっているかたはさっさとアップデートしてくださいね