golangでお手製コマンド作成

CODEBASE OKINAWA advent calender 8日目の担当のid:unimarimoです。 golangを触ったのでそれの感想です。

背景

みなさん、検索をするときなんのツールを使っていますか、私はAlfred(ctrl + space)で呼び出した後に"ggl hoge fuga foo"という感じで検索して調べての繰り返しをしながら行なっています。しかし、最近ではVSCodeatomを使うことがなくなり純粋なVimを使うようになったのでItermに張り付きぱなしです。そこで、今回はItermのコマンドプロンプト上で"ggl hoge fuga"が行えたら幸せじゃないのかということで作ってみました。

実践

github.com

コードは上のGitHubを参照してください。

やってること自体は簡単ですね。受け取る引数をGoogleのURLパラメーターに渡すだけできてしまいます。 しかし、今の段階だとgo run main.goという風に行なっておりコマンドぽさがありません。

しかし、安心してください。

golangコンパイル型言語なのでコンパイルが必要です。go run だと自動的にコンパイル、実行という風にしてくれますが今回はgo buildを行うことで バイナルファイナリが出来上がりますので出来上がったファイルの./gglと行うことで実行することができるようになりました。

感想

今回はgolangを触ってみました。作成したコマンドですがまだ検索の文字列が連続した文字列一つのみしか渡せないのでそこ改造しようと考えています。A Tour of Goしかしてないですが、簡単なコードですんなりとできました。また、golangではクロスコンパイルもできるのも強みらしいのでそこも試したいと思います。最近はいろんな言語にてを出していて迷走していたので面白そうな言語に出会えた気がしますね。

拙い、ブログですがここまでにします。ありがとうございました。

owasp okinawaのAttack & Defenseに参加してきた

はじめに

OwaspOkinawaでAttack & Defenceを開催していただいたのでそれの感想です。

Attack & Defenseの感想

Attack & Defense自体への参加は今回初めてですが、Attack & Defence自体は一度体験したことがあります。セキュリティミニキャンプ in 福岡で一度Attack & Defenseさせていただきました。そのときはセキュリティの知識も今よりも浅くosコマンドインジェクションをやられボコボコにされた記憶があります。これがあったので今回のリベンジとして参加してきました。結果としてはセキュリティの知識自体はさほどではないですがこの脆弱性があることやこのポートの向き閉じればいいかとか少し対策などがきたと思います。しかし、直接コードに対しての修正を行うことができる実力がなかったのが残念でした。セキュリティの知識がまだまだと痛感しました。

終わりに

今回のAttack & Deffenceを通して得られたこと次はコードに対して修正を加えてSQLインジェクションとかの攻撃を防ぎたいと思いました。また、今回のAttack & Defenseで構築していただいた環境がDockerなので似たようなさられサイトも構築してみたいなと思いました。今回はここまでにします。OwaspOkinawaのみなさま、参加者のみなさまありがとうございました。

VOYAGE GROUPのサポーターズ1on1イベントに行ってきた

はじめに

こんばんは、id:unimarimoです。サポーターズの1on1イベントに参加してきました。今回のブログはそのイベントに参加してきたイベントについての感想です。

1on1イベントの感想

1on1イベントは今回渋谷で行われた会社の方と学生で一対一で行う面談イベントです。参加したきっかけとしては学部の時は沖縄で就活をしていてうまくいかなかったので東京であるということと東京に一回くらい行っておいてどんな所か見てみたいと思ったので参加しました。当日のイベントでは50名くらいの学生と30社近くの企業の方がいました。参加する前はどんな人がくるとか全く何も考えていなかったのですが、よく名前を聞く大学だったりサマーインターンのテックブログとかで紹介されていた人などがいて果たして私に人権なんてあるのかと思ってました。結果としては人権ありました。6社の企業からお話をさせていただいて技術系の話だったりどんな企業なのかとかの質問にも答えてくださり大変ありがったかったです。また、他の参加していた学生の方とも少しおしゃべりができたりして楽しかったです。 今回の1on1イベント参加しての感想としては楽しいイベントだったと思います。地方勢だったので金銭的な面でも支援していただけることで参加してよかったです。

えもかったこと

私が学部3年の時編入をしてきました。その時初めて参加したイベントがYAPCというイベントでした。この時LTをして映像の入出力に苦戦したのですが今でも覚えています。えもかったことについては、まさかのそのイベントで参加していて且つ私もイベントスタッフとして参加をしていた方とお会いしました。まさか、別のイベントでYAPCであったことがある方とお会いするとは思わず、1on1イベントでお会いすることになって私も変化してるんだなと感じました。

東京に対しての感想

私自身東京に行くのが修学旅行で行った5年ぶりとなりほぼ初めての東京となりました。私は人混みが多いのが大嫌いで人が多い所に行くときは空いてる時間帯だったりを狙っていくぐらい人混みが嫌いです。なので、就活なども人ゴミが多いのは仕方ないけど地元の福岡にしようと思っていました。しかし、今回のイベントで東京に対しての印象が変わりました。特によかったのが歩いてる人が全く他人に興味をもっていなくて携帯をみていたことです。私は被害妄想もひどいのでみられてるのではとかに過敏になっているのですが歩いている人が携帯ばっかをみていて最高でした。なので、今回のイベントでは東京での就活も視野に入れる機会になりました。

終わりに

ついったーで予想以上にいいねついたのでプレッシャーになってしまったのでささっと書きました。拙いブログですがここで終わりにします。

Kubernetesハッカソンに参加してきた

初めに

みなさん、こんにちは。オンプレでKubernetesを構築して挫折した id:unimarimoです。今回MicrosoftのてらだよしおさんがAzure Kubernetes Service(以下AKS)を用いて無料の範囲内でできることを、ハッカソンとして開いていただきそれに参加したことについてのブログです。

1日目

1日目です。最初はチームで分けることになりました。私はKubernetesを何度か触れたことがあるので触ったことのあるチームで参加しました。もう一つのチームはKubernetesをあまり触ったことがないチームと別れてハッカソンを開始しました。最初に冒頭で説明した通りオンプレでのKubernetesの環境を構築して壊れました。私はこの時点で長く険しいKubernetesとの戦いが始まるのだろうと思っていました。しかし、AKSが優秀すぎて構築をGUI上でぽちぽちするだけで構築ができることに驚きました。踏み台サーバを構築して、わずか10分程度でクラスターを作成することができました。次に、クラスター内にノードを作成しました。masternodeとnode1の2台構成です。そして最初に作成したコンテナイメージはNode.jsで書いてHelloWorldをcurlで叩いて返すものでした。実際にこれをAKSでコンテナレジストリーを作ってそこにimageをpushしました。次にこれをpodという最小単位でデプロイします。最初に行ったのがDeploymentでpodを作成しました。これでCurlで叩けばHelloWorldを返してくれます。オンプレのとき環境壊れてしまってここまで行けてなかったので感動しました。次にServiceでのpodのデプロイです。今回は二つ作りそれをデプロイしました。これで興味深かったのでlavelのversionを指定しないでcurlで叩くとLoadbalncerのように別々のPodのHello World-v1,Hello World-v2が帰ってくるのが面白かったです。ちなみにlabelのversionをすればその指定したものしか帰ってこないのもこんなに手軽にできることに驚きました。ここでひとまず1日目は終了です。Kubernetesの素晴らしいところとAKSの素晴らしいところが見れました。

2日目

2日目です。この日は最初にチームですることを決めました。することとしてはlog調査について行いました。logの調査はコンテナ内のlogファイルはどうするのかと思っていましたがAKSで確認することができるようで、なんとクエリを書くだけでそのlogファイルが見えるようです。本当にAKS便利だなと実感しました。次にKubernetesのCI/CD周りについてです。私自身CircleCIなどと合わせて使うものだと思っておりましたし、KubernetesのCI/CD一体どうやるんだっと思っていました。しかし、Azure DevOpsによってその問題は解決しました。やってもらえることとしてはCIの機能とデプロイ機能の両方をやってくれます。私自身CirlclCIを使用するとき自分でyamlを書いてテストをしていましたが、Azure DevOpsはGUI上でWorkFlowを決めることができるので使用者に対してインフラ周りのことを気難しく考えなくていいのがいいですね。次にKubernetesへのデプロイです。これもほとんどGUI上で行うことができます。一部yamlを書かなければなりませんが使用者へのストレスがあまり感じられませんでした。ここまで完成されたことをAzure DevOpsは機能をほぼ無料で使えるそうで、人数も5人までなら課金する必要性がないそうです。

まとめ

以上2日間のまとめを書きました。上記以外にもやったこともありますが一部理解が足りてなくて間違えている部分もあると思いますので教えていただけると幸いです。今回初めてではないですが、こんなに深く長くクラウド技術に触れたのは初めてでした。私の知らないことだったり、すでにある知識も深められたりなどとても充実したハッカソンでありました。また、沖縄でKubernetesの詳しいお話、ハンズオンなどもなかなか見つけられず今回参加できたことは大きかったです。これを気にクラウドサービスを無料の範囲内で使用したいと思いました。最後に、一緒にチームだった方、Microsoftのてらだよしおさん、今回のハッカソンに関わった方に深くお礼を申し上げます。以上でこのブログの記事は終わろうと思います。

最後

オンプレでのKubernetesチャレンジは時間が許す限りしていこうと思うので何か進展があったらブログに残そうと思います。ありがとうございました。

#hatenatechに途中参加してきた

北海道から帰ってきた

北海道から帰ってきたらはてなのpapixさんとcohalzさんがはてなmeetupがあったので途中参加ですが参加してきました。

2部からの参加

お話をしていただけたのですがかなり疲れていたのでところどころ忘れていると思いますのでご了承ください。

お話の内容としては主に技術系のお話が2部からなので多かった印象でした。特に印象に残ったのはcohalzさんのお話でした。私自身最近(技術的な方で)成長できているのかどうかという不安がありました。そこで、高校生の頃からコードを書いているとおっしゃていたので長い期間プログラミングしててすごいとなりました。また、手をうごしてものだけが世界を変えるとおっしゃていたのは間違いないと思います。それを頭に置きながら手を動かして行きたいと思います。

終わりに

拙いブログですがここで終わりたいと思います。技術的なお話の部分を書きたいのですがその時完全に疲れていたので間違ったものを書きたくないのでここでは控えようと思います。

次回、沖縄でHatenameetupがあったら参加したいと思います。短いブログですがここで終わりたいと思います。ありがとうございました。

Hardening II SU に参加してきた

はじめに

おひさしぶりの投稿です。id:unimarimo です。Hardening II SU に参加してきました。場所は北海道で行われました。沖縄から北海道に行くのと北海道にいったことがないことに不安を抱えながら行きました。

北海道1日目

北海道1日目はほぼ移動でした。昼の2時から飛行機に乗り5時過ぎくらいに北海道の新千歳空港に着きました。その後快速に揺られながら「沖縄と植物全然ちげぇし涼しぎわろた」などと言いながらテンションアゲアゲでした。そのあとAirbnbでとった宿をとっていたので荷物を置き各々のチームのミーティングに行きました。ミーティングでは主に前日に配られる資料を読み合わせしながらHardeningの当日のための対策を練りました。ちなみに、ここで10時くらいに居酒屋に行ったのですが最高に北海道の食べ物うまかったです。カレイの丸揚げとか最高でした。

北海道2日目

北海道2日目はHardeningの当日です。まず一番目の課題は朝が早いとうことです。入場開始は8:30なので早起きチャレンジでしたが無事に起きました。そして会場について入場しました

f:id:unimarimo:20190708115428j:plain

そして会場ついてからはHardeningの実行委員会の方からの説明があって、10時くらいに競技が開催されました。最初の1時間は競技環境に入ってパスワードの変更などを行い競技環境がどのようになっているのかを観察しました。2時間目からkuromame6からの攻撃が開始しました。パスワードの変更が終わらず一つのサーバは乗っ取られてしまいました。3時間目からは基本自分のチームでは攻撃をどのようにして防ぐかよりもサービスが停止しないことに努めました。

自分たちのチームは学生がほとんど締めるチームでした。なので、現役のエンジニアの方には到底及ばないということで集中してサービスを常に稼働させるということを第一に動きました。また、最初の1時間でのパスワード変更はかなり重要です。ここで、やっていないとではサービスの稼働に支障の対応が段違いであると思います。

私は、主にサービスの再スタートや実際にサイトが改ざんされていないのかなどの調査を行なっていました。ここで思うことは自分の技術力不足と自動化することを怠ったということだと思います。

なので次回にHardeningに参加することがあれば以下のようなことができればいいなと思います。

  • パスワードの自動変更(主にシェルスクリプトやAnsible)
  • XSSなどの脆弱性などの事前に書いていた脆弱性を防ぐこと(セキュリティの勉強)
  • WordPressEC-CUBEなどの脆弱性についての知識(学内で運営しているWordPressを参考にしたり、Dockerなどで環境を作って脆弱性を知ること)
  • 幅広いレイヤー層を警戒すること(今回はIoT機器で電源を落とされることがあったから警戒すること)

ぐらいが思いつくものだと思います。これを次回のHardeningまでに埋めるのは難しいと思いますが、少しでも上記のものが埋めれて行けばいいかと思っています。

そして、今回一番重要に感じたものは「声出し」だと思います。IT系だとSlackだったりのチャットツールでやりとりしていくのかと思いますが、Hardeningは8時間連続で売り上げを伸ばしていく競技です。また、サービスなどが止まったりするなどのインシデントが常に発生している状態が続きます。つまり、声を出すことによってお互いがなにをしているかの確認も容易になります。また、Slackなどのチャットツールに書く時間も省くことができます。やはり、一人で行う競技ではなくチームで行う競技であるためコミュニケーションを大切にしていくことが重要であると思います。

次に、チーム以外の重要なこととしてはMPだと思います。MPはさまざまな攻撃ななどを防いでくれたりなどのチーム間だけではなく連合間でも役に立つことを共有していただけました。しかし、一つだけ注意するべきだとしてはMPのものを使うとクローラーがうまく回ってくれないということがあります。このようなことがあるとうまく売り上げが伸びないうことがあります。なので、MPを選択するのは自分たちのチームを見ながら選択を行なっていくものだと思います。

一旦ここで切り上げます。まだ書きたいことがありますので思い出しながら書き足していくと思います。

北海道3日目

3日目はSofteningです。簡単に言えば振り返り回と攻撃の解説、賞の授与式などを行われます。まずは、振り返り回です。これはHardeningの競技終了後に各チームでスライドを製作し発表を行い競技についてどうだったかを発表を行うものです。次に攻撃の解説です。攻撃の解説は全ての解説を行いません。重要な攻撃に対しての解説を行っていただけました。また、攻撃だと思っていたものは思い込みであることもあり実際には攻撃では自分たちの操作ミスではないのかとありました。これは、実際にすぐに攻撃だと思っていたので今後からも意識して覚えて起きたいです。 そして、興味深かったのはHardeningの環境についてのお話でした。 物理サーバ62台、インスタンス410、一チームあたり20.3と聞きました。この環境を構築してからかつ実際の競技までに不具合が起こさないようにするのは大変な作業だと思いますし高い技術力をもっているからこそできたことなんだと思いました。本当にありがとうございます。

北海道4日目

ここからはただの観光の話です。朝に車を借りて観光を行いました。行ったところでは小樽に行きました。よくテレビとかに出てる運河があったので本当にあったんだ!と少し感動しました。それと、食べ物ですが美味しかったものはザンギとソフトクリームです。ザンギは唐揚げ?みたいなものですが最高に美味しかったです。また、ソフトクリームはチーズの味がして美味しかったです。夜は居酒屋にいったのですがここのザンギも美味しかったですし、締めの味噌ラーメンも最高に美味しかったです。

f:id:unimarimo:20190708115453j:plainf:id:unimarimo:20190708115430j:plainf:id:unimarimo:20190708115417j:plain

北海道5日目

最後の日は10時の便で帰るので朝は空港について少しお土産を買って終了しました。

総括

今回はじめてHardeinigに参加しましたが本当に楽しかったです。。次回も開催されるのであれば応募したいと思います。

また、自分は人生において初めての北海道だったのですが過ごしやすくてご飯も美味しかったので個人的に旅行なども行きたいと思いました。拙いブログとなりましたがこれで終わろうと思います。見てくださったかたありがとうございました。

近況

初めてのAtCoderのコンテスト参加

初めてのAtCoderのコンテストに参加しました。参加した理由としては今日あるよとお知らせが来たので参加してみました。

結果としてはA問題しか溶けませんでした。問題文の制約の部分を条件を含めて行ってしまいました。また、問題文の出力のYes,Noが小文字だったので気づくのが遅かったです。しかし、A問題が解けていたことがよかったです。

次のB問題は途中まで解けいたのでですが時間をかけすぎたのでもっとメソッドをうまく使いこなしたいと思いました。

次にやること


次にやりたいことを書いたいと思います。 やりたいこととしては * CTFcpwnに取り組む * 8946に取り組む * atcoder problemに取り組む *codebaseの講義でやったwebapiを作ってみてもらう

です。優先順位ですがcodebaseの取り組みながらやって行こうと思います。 以上です。また書きます。