胃弱だより

セキュリティとかに興味ある感じの雰囲気あいおーてーエンジニアのブログ

ここ数ヶ月のまとめ

ここ数ヶ月ブログの更新をサボってしまった。

誰も見てないブログだけど、記録の為にやっているのでちゃんと更新せねば。

ということで今日はここ数ヶ月の記録をまとめて書いちゃいます。

 

## イベント編

### 2018/12/02

OWASP Nagoya #8 ~Micro Hardening~@名古屋 2018/12/02 - connpass

初めてHardeningに参加しました。

Linuxも基本的なコマンドしか知らず迷惑をかけてしまいましたが、運営の方の計らいで経験者チームに入れていただき、周りの方にフォローいただきました。

その計らいのお陰で大体の流れややるべき事を覚えることができました。

Micro Hardeningは45分セットを3回繰り返すのですが、その反復練習のお陰で物覚えの悪い私でも色々身に着けることが出来たかなと思います。

とはいえ、私がやったのは権限絞りやポート絞り、あとはログ監視ぐらい。

これをきっかけにLinuxとネットワークをもっと勉強したいと思いました。

ちなみにこれに参加する為に初ボーナスでMac Book Proを買いました!ヒュー! 

### 2019/01

CoderDojo長岡京〜小中学生のためのプログラミング道場〜 46回目 - CoderDojo長岡京〜小中学生のためのプログラミング道場〜 | Doorkeeper

CoderDojoでメンターをさせていただきました。

### 2019/02/13 

セキュリティマイスター道場(SecDojo) ~総関西サイバーセキュリティLT大会コラボ~ - connpass

今度はnano Hardeningに参加してみました。

経験者ということもあり、大体の流れがわかってる分少しは役に立てたかもしれない。

セキュリティソフトの会社の同年代やセキュリティキャンプ出身の大学生と知り合えたので良かったです。

丁度ゼミでIoTセキュリティの研究をしてる大学生に晩御飯に誘ってもらって、サブウェイのパンを齧りながら何をテーマにして研究を進めたらいいのか相談に乗ってもらった。普段はセキュリティの研究をしている人が側にいる環境じゃないので、気軽にそういう話が出来たのは嬉しかった。

夜の部では気がついたら運営の人にドアマンをお願いされてなぜかドアマンをしてました。。。笑

### 2019/03/10

CoderDojo長岡京〜小中学生のためのプログラミング道場〜 48回目 - CoderDojo長岡京〜小中学生のためのプログラミング道場〜 | Doorkeeper

CoderDojoでメンターをさせていただきました。

思いとかはツイッターで呟いたので割愛(恥ずかしい)

 

## 資格編 

AWS認定クラウドラクティショナーを受験して合格しました。

かなりギリギリだった…

f:id:chequita:20190406113515p:plain

特に請求と料金周りがだめだったみたいです。

スコアのところはただ単に重みの値なのかな?自分より点数いい人も同じ数字だったので…

f:id:chequita:20190406113108p:plain

模試(84%)よりも点数悪かった。。。というか日本語が分からなさすぎる。それどういうニュアンス?ってなって、何回も英語に切り替えてみたけど、多分英語のニュアンスも似たような感じだった。英語出来ないからわかんないけど。

今月末にはソリューションアソシエイトのトレーニングを受けさせてもらうので、来月にはアソシエイトの試験受けたいなーって感じです。認定者特典で模試がタダになるバウチャーが発行されたので、GW中に模試を受けようと思います。あとアソシエイトからは問題集が出てるのでそれを何週もやる。問題文に慣れねば…

## 読書編

### 2019/01

ついに徳丸本の演習を終えました。

長かった…

とはいえきちんと理解出来てる自信が皆無だったので、少し時間を置いてから2周したいと思いました。

会社にお願いして黒林檎さんの「IoTハッキングの教科書」を買ってもらったので、それを読み始めました。

## 記事編

書きました。

### 2019/01

chequita.hateblo.jp

qiita.com

### 2019/04

qiita.com

 

## 総括

以上、大体こんな感じです。

気がついたら社会人2年目になってました。

この1年、とにかく目の前の仕事に必死で大変だったな。。。

今年は自分のキャリアを見据えて着実に力をつけていきたい。

転職した先輩が「半年頑張ればIT筋力がついてくるよ」って言ってたけど、果たして付いてきているのだろうか…?

リーダブルコードを読んだ

めちゃくちゃ今更ながら、駆け出しエンジニア Advent Calendar 2018 - Qiitaに参加させていただいていたのに、投稿していなかったので投稿します🙇‍♂️

リーダブルコード自体は結構昔に読んだのですが、改めて読み直してまとめてみました。

以下は Dustin Boswell氏・Trevor Foucher氏著 角 征典氏翻訳の”リーダブルコード より良いコードを書くためのシンプルで実践的なテクニック”のまとめです。

 

#リーダブルコード

優れたコード
 理解するまでに時間のかかる短くてかっこいいコードよりも、理解するまでにかかる時間の短い分かりやすくて長いコードの方が優れている。
読みやすさの基本定理
 コードは他の人が最短時間で理解できるように書かなければならない。他の人というのは数ヶ月後の自分も含むので、例え自分しかいないプロジェクトだったとしても、未来の自分の為にも読みやすく書くべきである。
感想:自分しかいないプロジェクトだとしても、将来的にプロジェクトを誰かに引き継いでもらう時にコードの可読性が低いとすごく大変なので、可読性はどんな時にでも重視する必要があると感じた。
表面上の改善
 変数名や関数名などは分かりやすさを心掛ける。分かりやすさとは、名前を見ればどういった振る舞いをしているのかが分かる混乱のない名前のことを指す。混乱のない名前とは、誤解を与えるような抽象的な名前や、語弊のある名前でないことである。
 ただし、スコープが小さい時は短い名前でも良い。
 頭文字や省略形は、新しく入ってきたチームメイトでも理解できるのであれば問題ない。
美しさ
 見た目が美しいコードの方が使いやすいのは明らか。一貫性のある簡潔な改行位置や文字を整列させることで、視覚的な可読性が向上する。また意味を持つコードごとに単位や段落で分けることで、コードを理解しやすくする。
一貫性
 もし途中で参加したプロジェクトのコードが間違ったスタイルだらけだったとしても、正しいコードを書くよりも一貫性を優先させた方が良い。
コメントするべきこと
 コメントが長ければ長いほどコードを読む時間が減ってしまうので、価値のないコメントは書かないようにする。例えば、コードを読めば分かるようなことは書くべきではない。
 名前のせいでコメントをつけないといけない時は、名前の方を変える。
 自分の考えを記録する。
 コードの欠陥にコメントをつける(TODO, FIXME, HACK, XXX)
 ハマりそうな罠を告知する。
 入出力の実例をかく
 コメントは長々と書かずに簡潔に書く
制御フローを読みやすくする
 条件は肯定形で書く
 単純な条件を先に書く
 ネストは浅くする
とにかく、実行の流れを追えるコードを書くこと
巨大な式を分割する
 説明変数…処理の前に変数に代入することで、意味を分かりやすくする
 要約変数…式を変数に代入しておくことで、コードを短くする
 巨大な式を分割し、本質を理解しやすいコードを書く
変数と読みやすさ
 コードが読みやすくならない変数は削除する
 結果を保持するだけの変数を使うよりも、早く結果を返す
 制御フロー変数を使わない
 変数のスコープを縮める
 変数の変更箇所は出来るだけ少なくする
無関係の下位問題を抽出する
 エンジニアリングとは、大きな問題を小さな問題に分割して、それぞれの解決策を組み立てること
 高レベルの目標に直接的に効果がないコードは別の関数に切り出す
 プロジェクト固有のコードから汎用コードを分離する
一度に一つのことをする
 ・コードが行なっているタスクを一覧に挙げる
 ・タスクを出来るだけ小さく異なる領域に分割する
コードに思いを込める
 書こうとしているコードを簡単に言葉で説明する
 実装は最低限にする
 標準ライブラリに慣れ親しんでおく
テストと読みやすさ
 テストコードの読みやすさ=保守のしやすさ
 テストコードが複雑だと、テストコードを書き換えることを恐れて本物のコードを書き換えなくなってしまう
 最小のテストコードを作成する
 エラーメッセージを読みやすくする
 入力値を単純化する

 

 

情報系を勉強する女子大生 Advent Calendar 2017

最近、Qiitaがどうあるべきかが議題に上がっている。
Qiitaにはコミュニティガイドライン - Qiita:Support というものがあって、そのなかで

Qiitaは「プログラミングに関する知識を記録・共有するためのサービス」です。プログラマーが興味を持つものではなく、プログラミングに関する記事を投稿しましょう。

(中略)

 >例えば「厳密にプログラミングとは言えない記事」「プログラマーのライフスタイルに関する記事」など判断に迷う場合は、「技術的な内容が主目的かどうか」を基準として考えています。

 

とはっきり明言されている。過去にもアドベントカレンダーでポエムのカレンダーが削除された実績から、

Qiitaの運営がポエム記事を推奨していないことが分かる。

そこで自分の過去の投稿を見たところ、一切技術的な内容のないポエム記事を投稿してしまっていたことがあった。
ので、該当する記事はブログに移行し、アドベントカレンダーのリンクも今回はこっちを貼っておくことにします。
ということで、以下該当記事


==================================================


 これは情報系を勉強する女子大生 Advent Calendar 2017 - Qiitaの24日目の記事です。

 以前は文系エンジニアは珍しくありませんでしたが、文系を中心に採用していた企業でも昨今は理系採用に力を入れ始めているように感じます。もし文系で採用されても開発職に就けるかは分かりません。
 私自身、文系ということで苦労しました。その経験がエンジニア(特に開発職)になりたいと考えている文系学生の助けになればと思いこの記事を書きました。


#お前だれよ


 2年間アルバイト(7.5h*週3)で働いたIT企業で内定を貰ったしがない(Fラン)文系学生です。今もバイト続けてます。最近はロボット(ラズパイで制御)にAWS Rekognitionを使った顔解析機能を実装したりしました。

 

# 文系で苦労したこと


- 数学がマジでわかんない
線形代数微分積分?ベクトル????やったっけ???って感じでした。というか、それどころか普通の算数ですら怪しいです

- インターンに応募しても中々受からない
- みんなが何話してるのかわかんない
→殺す?死んだ?何の話? サーバ?プロキシ?なにそれ?

 

# そんで就活って何をしたらいいの?


以下おすすめの行動です

  • インターンやアルバイトに参加する(出来るだけ長期のもの)
  • とりあえず何かを作る
  • 勉強会やコミュニティに参加する
  • スカウト型の就活サイトに登録する(私は就職課の勧めでOfferBoxを使っていました)
  • Qiita記事を読む
  • Twitterをやる(楽しい)

## インターンやアルバイトに参加する(出来るだけ長期のもの)

 正直、文系学生にはハードルが高いかもしれません。
私の場合は就職課に開発補助のアルバイトを紹介して貰いました。個人で応募したインターンは断られてしまったので、まずは就職課に相談すると良いと思います。就職課が紹介してくれる所は大抵採用実績のある企業なので、個人で申し込むよりも合格率は高いと思います!

 それから、こういうのは出来るだけ長期のものが良いと思います。
 恐らく文系学生にいきなり開発をさせてくれる所はないんじゃないでしょうか(あるかも)。まずはテスターやマニュアル作成などからだと思います。勿論これらは文系学生にとって凄く学びのある仕事です。これらからは設計やユーザビリティなどの大事なことを学べます。
 ですが、開発がしたい学生はここからじわじわと開発サイドの仕事を勝ち取らねばなりません。通常業務をこなしながらも、積極的に手をあげ、やりたいアピールを常にし、CSSを少し修正するだけ、同じ機能を増築するだけなどの簡単なコーディング作業をこなしてじわじわと侵食していきましょう!(もしそれが出来る自信がない事だとしても「出来る自信はないけどやってみたいです」と素直に言ってみましょう。もしかしたら、とりあえずやらせてもらえるかもしれません!)
 恐らくそれは長期戦になるので、出来るだけ長い期間留まれるのが望ましいです。

 

### インターンやアルバイトを始めたら


 恐らく大学の授業とインターン・アルバイトの内容との乖離に混乱するでしょう。また、勉強時間が中々確保できず、カツカツになると思います。私も週3でIT企業でアルバイト、週2で1限~7限の授業、土曜日(課題をやりつつ)休んで日曜日はアパレル店員のアルバイトをやって、死にかけた事があります(比喩)。時間が無くなると、何を優先して、何を捨てるのか常に選択しなければならなくなります。スケジュール管理は勇気を持ってやりましょう。楽観的に組んだガバガバなスケジュールは、結局周りの人に迷惑をかけてしまいます(実体験)。

 

## とりあえず何かを作る


 文系がアピールするとすれば「やる気」だと思います(技術では専門で研究している学生に勝てないので)。しかし、当然ながら就活ではみんながやる気をアピールするでしょう。
 なので、やる気を証明する為にも何かひとつでもいいのでモノを作るといいと思います。
 モノが作れなくても、私の場合はアルバイトの面接でコードを写経したものを印刷して提出しました。今でもその時の面接官に笑い話にされますが(GitHubとか使えばよかった…)、何もしないよりかはダサくてもやる気は見てもらえると思います!

 

## 勉強会やコミュニティに参加する


 「初心者向け」と書かれている勉強会やコミュニティに参加してみましょう。暖かく迎え入れてもらえます。PCとテザリングもしくはポケットWiFiを忘れずに!
 勉強会には大きくわけてハンズオンとLTがあります。ハンズオンは実際にモノを作ってみる参加型の勉強会で、LTは発表者によるスライドを使ったプレゼンテーションの聴講です。
 それ以外にも相談会を開いているコミュニティもあります。どのように勉強すればよいかなどを教えてもらえるので、機会があれば是非参加してみてはいかがでしょうか。
 私はよくconnpass - エンジニアをつなぐIT勉強会支援プラットフォームで勉強会やコミュニティのイベントなどを探しています。

 

## スカウト型の就活サイトに登録する


 私は口下手でコミュ障なので、先にプロフィールを見てからスカウトしてもらえるこのタイプの就活サイトには凄くお世話になりました。履歴書だけで伝えきれないアピールポイントなども伝えられて、ほかの就活生よりも有利に面接できるんじゃないでしょうか。

 

## Qiita記事を読む


 文系にとってエンジニアの仕事は未知の世界だと思います。専門的な話が分からなくてもポエムなど読み物としても面白いものがたくさんあります。それらを通して雰囲気を掴むのも大事かなと思います。また、この記事のタグにもついている「新人プログラマ応援」を辿ると為になる記事が沢山出てくると思います(恐らく本記事よりももっと役に立つ記事が…)
以下、おすすめの記事です

qiita.com

qiita.com

qiita.com

 

↓これを初めて読んだときは全く内容が理解出来なかったのですが、かっけー!と感動してモチベが上がったので載せました。[増田のこの記事](https://anond.hatelabo.jp/20120904230532)を書いた方らしいです。増田の記事のほうもかっこいいです。こういう難しいけどモチベが上がる記事を一つ見つけて、それを理解できるようになることを目標にするのもアリだと思います。

qiita.com

 

## Twitterをやる(楽しい)


 ほんと単純に楽しいです。テクノロジーを楽しんでる人をフォローすると楽しくお勉強できます。

 

# 最後に


 幸いにも、この業界で女子だからと苦労した事はあまりないです。女子が少ない事で寂しかった事はありますが、最近は女子限定の勉強会なども盛り上がっていて、それも解消されつつあります。男女平等に仕事をくれる職場に恵まれた為、開発の仕事も自由に思う存分にやらせてもらっています。
 ただ、ここに来るまではいろんな人に「無理だ」と沢山言われました。昔、ある人に「〇〇大学の、しかも女の子を雇ってくれる会社なんかあるの」と嗤われた事があります。
 もしこんな事を言われた人が他にもいたら、そんなクソッタレな呪詛は今すぐ記憶から消去してください。メモリの無駄です。
 あなたはどこにでも行けて、何にでもなれます。宇宙人や魔法少女にはなれないかもしれませんが、少なくともエンジニアにはなれます。あなたに「無理だ」と言う人がいたとしても、その人は無責任にも「明日の天気は雨だ」くらいのノリで言ってるだけなので、耳を貸してはいけません。
 「あなたが雨だというから出かけるのをやめにしたのに!」と怒ったとしても、その人は責任をとってくれるどころか、言ったことすら忘れています。自分の人生の責任をとれるのは、自分だけです。自分を信じましょう!(これはマジ)

 

 これからも…自分にたくさんいいよって言ってあげてね たとえ失敗してもきっと笑えるから大丈夫 僕がそうだったみたいに

アヤメくんののんびり肉食日誌(6)」- 奈良アキラ

 

OpenBlocks BX1 のOS をDebian7 からDebian8 にする方法.

研究開発の為にBX1を渡されたが、標準搭載されているDebian7ではRubyが1.x系しか使えない。

Ruby 2.x系を使おうと思ったら、自分でコンパイルして入れてやらなきゃいけないらしいが、面倒くさそうなので大人しくOSのアップデートする事にした。

幸い、公式からパッチは出ている。

f:id:chequita:20181023093613p:plain

OpenBlocks IoT Family リリース情報 - ソフトウェア - OBDN - 開発者向け情報 | OpenBlocks

 

手順は以下。

操作はmacOS High Sierra v10.13.6 を使用しています。

 

2点の注意

- うろ覚えなので間違ってたらごめんなさい

- アプデでデータもconfigもぶっ飛ぶので、バックアップは各自お願いします

 

1. 必要だったか分からないが、U-Bootの環境変数vmallocを設定してやる

まずGNU Screenを入れて、シリアルコンソールに接続します。
GNU Screenの導入はこちらを参考にしました。

homebrewの最新バージョンでscreenがinstall出来なくなった時の対処法 - アラのアラアラしい日記

そのあと、以下を参考にしてシリアル接続します。BX1の場合は `opneblocks> ` ではなく、` boot>` と出るので注意。

 OpenBlocks IoT BX1にシリアル接続する | DevelopersIO 

シリアル接続が出来たら、以下を参考にしてvmallocの設定をしてください。存在しなかったら新しく作る感じで。多分。

 

2. v1.0.13を入れる

アップデート用ファイルをインストールしようとすると、「その前にv1.0.13にしてね」と書いてある。

f:id:chequita:20181023094724p:plain

なので、v1.0.13をリリース欄から検索をかけて、ヒットしたkernel-imageをインストールして展開。

userland とかも展開したかもしれない。うろ覚え。(http://ftp.plathome.co.jp/pub/BX1/wheezy/3.10.17-17/)

f:id:chequita:20181023101905p:plain

3.上記を無事に展開出来たら、ようやくDebian8アップデートファイルを落としてきて、公式が指示しているコマンドで展開

f:id:chequita:20181023102219p:plain

すぐにrebootがかかるので、放置。LEDが赤点灯するはず。曰く、アプデが完了したらLEDが消灯するはずだが、私の場合は消灯しなかった。1日祈り続けても消えなかったのでぶち抜いてシリアル接続したら無事にアプデが完了してました。メデタシ。

configファイルとかも全部ぶっ飛ぶので、パスワードは初期パスワードになっている。起動したら真っ先にパスワードを変更されたし。

 

 

 

C++とラップ

C++書いてる時に疲れて書いたラップが出てきた。

 

 

C++の仕様に振り回されて俺フラフラ。

しょうがねえからggって解決

とはいかねえからヤバヤバ。

納期迫ってる、危機迫ってる。

フラフラの俺とC++……

 

 

「GPSアプリ開発と雨」

GPSアプリ開発と雨」

 GPSは雨天時、とても荒ぶる。

 私は屋根の上を軽快に歩き、雨の中、不思議な場所で留まり続ける。

 私はGPSデータのバッファーをテストしたいだけなのに。ログを持ち続けられないこのデバイスで、バッファーのテストをしたいだけなのに。

 昨日も雨、今日も雨。

 私は屋根の上を軽快に歩き、雨の中、不思議な場所で留まり続ける。

 

  

 

====================================

同僚からの評価: ★★★★★☆☆☆☆☆