banbanの備忘録

あったことを適当に書き残します

MacにRustをインストールして入門してみた

 お久しぶりです。banbanです。 タイトルの通り、Rust環境をMacにインストールしたので、備忘録的に残します。

Rustとは?

私が参考にした「プログラミング言語Rust」によると

Rustは安全性、速度、並行性の3つのゴールにフォーカスしたシステムプログラミング言語です。

らしいです。 もともと「メモリ安全な言語だよ〜(曖昧)」という風に聞いていて、興味がありました。 今回は、これをインストールして「Hello world!」までを試してみました。

インストール

まずは、Rustのコンパイラをインストールする必要があります。

curl https://sh.rustup.rs -sSf | sh

これでインストールが始まります。とっても簡単!!
途中、一度だけ以下のような選択を求められます。

Current installation options:

   default host triple: x86_64-apple-darwin
     default toolchain: stable
  modify PATH variable: yes

1) Proceed with installation (default)
2) Customize installation
3) Cancel installation

Customizeとかよくわからないので、ここでは 1) を選択しました。
 インストールが完了すると以下のような表示がされます

// (略)

  stable installed - rustc 1.25.0 (84203cac6 2018-03-25)


Rust is installed now. Great!

To get started you need Cargo's bin directory ($HOME/.cargo/bin) in your PATH 
environment variable. Next time you log in this will be done automatically.

To configure your current shell run source $HOME/.cargo/env

とりあえずインストールできたみたいです。
一応、最後に To configure your current shell run source $HOME/.cargo/env と言われているので source $HOME/.cargo/env をそのままコピペして叩いておきます。
こうしないと、Rustをコンパイルする rustc コマンドが使えないですからね。

次は、初修言語と言えばやっぱり「Hello, World!」ですよね。 やっていきます。

Hello, World! やってみた。

はい、というわけで プログラムは、参考サイトから引っ張ってきた以下のコード

fn main() {
    println!("Hello, world!");
}

これを、hello_world.rs.rs 拡張子で保存 → コンパイル → 実行 をしてみたいと思います。 以下が叩いたコマンド

$ rustc hello_world.rs 
$ ls
hello_world hello_world.rs
$ ./hello_world 
Hello, world!

まあ、失敗する要素内ですもんね。 上手くいきました!!

これで、Rustを勉強するための環境が整ったので、これからRustでなにかしらプログラムを書いていこうと思います。

自分は、よく初修言語を学ぶために、CLIの電卓を作ります。なのでRustでもやってみようかなと思っています。 電卓は、数値計算や文字列出力、文字列入力(オプションの機能)など色々使うので、基本を学ぶための良いプログラミング題材だと思っています。

では、また進捗が出たら報告いたします。

以上

参考サイト:

プログラミング言語Rust

Google Home開発してみたい!! #1

お久しぶりです。
前の記事からだいぶ時間が経ってしまいましたが、やっていきたいと思います。

0. GoogleHomeをもっと使いたい

昨年末にGoogleHomeが半額セールしていたので、衝動買いしてしまいました。

実際、買ってからも便利に使っていました。
例えば「ねえGoogleBluetoothオン」と言えば、スマホとつながってくれるので音楽聞いたりできますし、「タイマー3分」と言えば、3分測ってくれます。カップ麺にお湯入れたことを忘れて、別のことに集中してしまうこともなくなりました。

それから、しばらく経って...

GoogleHome買ったのに、有効活用出来てないのでは!?

と思い始めました。
というわけで、GoogleHomeで色々やってみたいと思います。(前置きが長い)

 

1. 開発ってなにからすれば良いの?

 これまで、なにかしたかったらPythonで適当にヤッていた僕。
Google先生に「GoogleHome Python 開発」と尋ねてみます。
記事はいくつか出てきますが、以下の2ワードがよく出てくる。

・Node.js
google-home-notifier

なにやらGoogleHome開発にはNode.jsの "google-home-notifier"という、便利なライブラリを使うのが一般的なよう。
というわけで、Node.jsで色々やってみることにします。
 

2. 環境準備

Node.jsとgoogle-home-notifierを準備しましょう。
適当にググれば出てきます。
とりあえず、作業用フォルダ作って、 npmで必要そうなのをインストールしておきます。
 

3. とりあえずやってみよう

環境の準備も出来たので、とりあえずサンプルコード的なやつを動かしてみます。

GitHub - noelportugal/google-home-notifier: Send notifications to Google Home

上記のサンプル的なコードを書き換えて動かしてみましょう。
喋ります。 以上。
とりあえず、好きな言葉を喋らせられるだけですが、色々とできそうな事の想像が膨らみますね!!
こういう瞬間がとても楽しいです。
 

4. 何か作る

しかし、ここで気づきました。

JavaScript書いたことなくね?」

そうです。恥ずかしながら、JSを読む機会はたまにあれど、一から書いたことはほぼ無いのです。また、調べるとNode.jsにはNode.js的な書き方がいくつかある模様。
というわけで、とりあえずJS(Node.js)の勉強でもしながらやっていきたいと思います。
 

しばらくの目標は、使ってないRaspberryPiがあるので、連携して何かできたらなぁと考えています。
 

※ タイトルに「#1」とありますが、続くかは未定です。

Harekaze Advent Calendar 2017-Day20-

この記事は、Harekaze Advent Calendar 2017の20日目の記事です。
※技術系記事ではない。

adventar.org

 

 

はじめに

他の方々が技術系の記事を書いていますが、自分には良さげな技術ネタがない...

「何かいいネタはないか?」「アドカレの枠は貰ってるし何か書かねば...」

いろいろ考えた結果、Harekazeの先輩(?)の友利奈緒が昨年開催していた友利奈緒Advent Calenderで友利奈緒が書いていた以下の記事

snow-poijio.hatenablog.com

これを思い出しました。

以前に切り絵をやったことがあったので、今更ながら再挑戦してみました。

 

切り絵やってみた

用意したものは以下の通り。

  • 切りたい画像
    切るところがわかりやすいように白黒印刷
  • 黒い紙
    画用紙も良いが、堅いのは嫌いなので薄いコピー用紙的なのを用意
  • デザインナイフ & 替刃 & カッターマット
    ホムセンやダイソーなどで購入可能
  • 粘着力の弱いテープ
    マスキングテープなどの剥がすときに簡単に剥がれるもの

f:id:BanBan:20171220011521j:plain

すべて以前買ったものが家にあったので、追加で買ったものはありません。

N年ぶりにやるためやり方合ってたっけ?となりながら挑戦しました。

 

(途中過程も撮ればよかったのですが、撮り忘れました。すいません...)

 

で完成品がこちら

f:id:BanBan:20171220011824j:plain

メイタマかわいい。

久しぶりだったので、完成しただけましと考えましょう。
ちなみに口はどこかへ行きました。切り直しは面倒なので、このままです。

 

おわりに

久しぶりの切り絵はなんだかんだ楽しかった。

また気が向いたら別の絵も切ってみようと思います。

Hardening2017fesに参加してきた

2017/11/23(木) - 25(土)にかけて淡路島の淡路夢舞台国際会議場で開催されたHardening 2017 Fesに参加してきました。

Hardenig Projectについては以下を見てください

wasforum.jp

 

私は、チーム#13 もみじ3号 というチームで参加してきました。

簡単に記事を書こうと思います。

 

当選から〜前々日

Hardening 2017 Fesに参加するには、応募して抽選に通る必要があります。

倍率もそこそこあるそうで(4倍ぐらい?)、知り合いの何人かも抽選に落ちたそうです。

 

無事参加が決まってからは、同じチームになったメンバの方々とSlack、SpledSheet、Skypeを使って週一回以上の打ち合わせを繰り返し、本番に備えました。

 

個人的には、AnsibleのPlaybookをいくつか用意して、検証などを行い本番に備えました。

 

前日

一日目の開始時間が9:00ということで、当日出発では間に合わない!ということで、前日入りしました。

 他のメンバも前日入りするということで、前夜にはつオフサイトミーティングをやりました。

みなさん優しい方で良かった。

 

一日目

事前情報から9時間耐久だよ!って言われていたので、ビビっていたのですが、気づいたら9時間経過していました(すごく疲れはしましたが)。

初動のAnsibleは概ね上手く動いたのですが、公開鍵認証がうまく行かず結局断念したぐらいです。

ただ反省としては、初動が終わったあとにすることを明確に決めていなかったことです。

初動でやることリストは気合入れて作っていたのですが、初動の設定が終わったお昼過ぎ以降にやることがあまり明確ではなかったです。

基本的に、怪しいスクリプトやユーザがいないかをLinuxサーバ巡って確認+バックアップのリストア+落ちたサーバの原因調査ぐらいです。

時間は正直あったので、改ざん検知ツールやconfig設定などをいじれるように勉強しておけば良かったです。

 情報流出についての社長報告もありました。(写真は私のチームが謝罪している様子)

 

一日目の競技時間が終わり「終わった〜」と思ったのも束の間、

LACの川口さん「明日も延長線やります!!」

とのこと。マジカヨ...

 

二日目

二日目は朝の二時間だけの競技でした。

加えて、初日との一番大きな違いは、人事異動があったことです。

社長を残して、他のメンバが別のチームの環境を任されると言ったもの。

感想は「チームによって、やり方が違うんだなー」といったところ。

やったことは初日とあまり変わらなかったです。トホホ...

 

三日目

三日目はSoftningDayでした。

各チームが競技中にやったことをプレゼン形式で発表します。

発表は以下のリンク先動画で見れます。

Hardening 2017 Fes - Softening Day - YouTube

スライドは前日の夜に作成したものをチームのリーダが徹夜で作ってくれました。

ここでも改めてお礼を申し上げます。

 

 

感想

出来たこともありましたが、出来なかったことも多くあって正直悔しい気持ちが大きいです。もちろんとても楽しかったですし、学びも多かったと思います。

次は、多分来年の6月に沖縄であると予想しているのでそれにもぜひ挑戦したいと考えています。

今回不足していた技術や知識を補充してリベンジします!!

 

最後になりましたが、ほぼ旅費と食費だけでこんな経験をさせていただけるのは、スポンサーや運営の皆様のおかげです。

ほんとにありがとうございました。

CODEBLUE2017に参加した

CODEBLUE

11月8日(水)~11月9日(金)に東京で開催された情報セキュリティ国際会議CODEBLUEに学生スタッフとして参加してきました.

CODEBLUEはコチラ

codeblue.jp

 DAY 0

僕は金欠学生なので,前日の23:30ぐらい岡山発の夜行バスで一路東京へ

 

東京に朝9:30頃に着く予定だったので,どう時間をつぶすか考えていたところノノ君(@no_______nonono)にラブホ朝ご飯にさそわれたので,一緒に朝ご飯を食べました.

 朝ご飯を適当に食べ,集合時間の3時間前に会場へIN

もちろん,誰もいなかったです(はやすぎ...)

 この日は,スポンサー企業の方との懇親会+会議の準備を行いました.

他の参加しているプロの方々の自己紹介や話を聞いて,ひたすら「すげぇ」と言ってた気がします.

 

夜は,他のスタッフのみなさんと優勝しました.

オタクが端の方に固まっていて,うるさかったです(楽しかったです)

DAY 1

DAY1は朝7:00集合ということで,前日の酒の影響が心配でしたが遅刻せずに済みました.

 この日もほぼ一番乗りでした.

 なんやかんやあって,この日の業務が終わりました.

正直,自分の業務は各Track内でドアの開け閉め+レシーバ回収だったので,業務中も講演を聞くことが出来ました.すごくお得な配置でした.

この日の夜は,弊研究室のOBの方々に焼肉とお酒をごちそうになりました.

この日も優勝しました.

DAY 2

 DAY2は,一日自由行動です.

研究しているUse-After-Free脆弱性に関する講演があったので,それだけは聞きたかったので,それ以外は講演を聞いた入りCTFに挑戦したりしてました.

聞いたUse-After-Free脆弱性の講演スライドが公開されていました.

また復習しておきます.

speakerdeck.com

 

 この日は,ネットワーキングパーティという参加者全員で行う懇親会に参加させていただきました.

有名な企業の方々と名刺交換をたくさんしていただきました.

名刺を頂いたような企業に就職できるよう精進しなければ..

また,学生の方ともお話してまだまだ努力が足りないと感じました.

二次会,三次会も参加させて頂いて優勝しまくりました.

 

 

おわりに

講演も聞いて,3日とも優勝して,とても充実した3日間でした.

来年はM2なので,参加するかは分かりませんが,時間とタイミングが合えばぜひ参加したいと思っています.

楽しかったです.お世話になったみなさん,ありがとうございました.

MWSCUP2017に参加した

山形で開催されたCSS2017に参加してきました。

目的は研究発表のためです。

また、CSSと併設で開催されるMWSCUPに研究室のメンバで組んだ「セキュリティ讃歌」として参加してきました。

 

CSS2017で学生論文賞を頂いたのですが、この記事ではMWSCUPについて書きます。

 

MWSCUP

 MWSCUPはマルウェアの解析技術を競う大会です。

評価は、「事前課題とそのプレゼン」+「当日課題(pcap解析、静的解析、動的解析)」の合計点で勝敗が決まります。

 

あまり、問題内容をかいてはいけない気がするので書きません。

 

ちなみに私が担当したのは、pcap解析でした。

pcap解析のうち8割正答できたので、個人的にはOKです。

 

静的解析のメンバは点数を稼いでくれたのですが、動的解析と事前課題のプレゼンがパッとしない点数だったため総合3位でした。

(まあ、プレゼンを担当したのは僕なんですが。。。)

 

ちなみに昨年参加したときよりもチームに貢献できた気がするので、

来年はもっと貢献して優勝を狙いたいと思います。

 

 

06Hardening(a.k.a MINI Hardening Project #2.4)に参加してきた.

先日,タイトルにもある06Hardeningに参加してきました.

06Hardeingの詳細は以下のリンクからどうぞ

minihardening.connpass.com

 

Hardeningは,簡単に言うとECサイトの堅牢化技術を競い,長時間安定してECサイト運用することでたくさんお金を稼げば勝ちです.

 

 

今回の競技の中身はあまり書いてはいけないらしいので,競技の感想だけ一言.

「バックアップは超大事!! 無いと詰むよ!!」

感想から,私の参加したチームに何が起こったか察してください...

 

今回参加した06HardeningはMINIだったので,3時間程度だったのですが

本戦(?)の競技は8時間耐久らしいです.

毎年,沖縄で開催してるらしいですが,今年は淡路島で11月に開催されるらしいです.

今住んでるところとも近いので,私は初めて応募してみました.

倍率は例年3-4倍程度らしいので抽選に通ることを祈るばかりです.

 

興味のある方は,以下のリンクから申し込んでみも良いと思います.

wasforum.jp