2つのインターンとその後

Oct 1, 2017 - 1 minutes
インターン行ってきたーん いろいろな縁に恵まれ、V社の3週間のインターンと、 直後、4,5日の完全な夏休みを挟んで、2日間のハッカソンに行けた。 得られたものは多かったが、最後にオチがある。 V社 まずこちらから振り返っていこう。 3週間程のインターン。 前半は、前提知識の事前教育。 中身はある程度理解しているものだったが、 問題は追従するのに必要な手を動かすスピードである。 工学部の情報系の演習なんて生易しいものではない。 エンジニアの方が「いつものスピード」、「いつもの思考速度」 のまま口八丁手八丁の講義をする。 中程ではそれまでの教育の内容を活かして、 一つアプリケーションを仕立てるという中間課題もある。 そしてようやっと、後半のグループでのアイデアソンから開発。 5人のグループで、アイデア出しからすべて、ターゲットとなるユーザーを考えて、 機能、仕様の優先度決定もすべて、自分たちの考えたユーザーを考え抜いてやる。 アイデアはもちろん、技術ももちろん。 グループ開発で5人ほど、たかが5人、されど5人。化学反応が激しく起こる。 人間にはどこかしらに癖があり、グループ分けは自分達で組むのではなく 組まれるわけだが、なんだかんだでよく考えて仕組まれている。 私のグループはグループ名決定の段階から大揉めしてしまった。 なんだかんだで作っていくが、機能の優先度、実装方針などでも揉めてしまう。 それでも、なんとか作った。 グループで各々、「これに関しては負けない」という点が必ずある状態となる。 そうして……表現でぼかされたところや、 続きが気になる方はV社のインターンへ行きましょう。 すごいですよ(ステマ) 教訓 なんとなくやばい、と思ったら本当にやばい。 やばさが露見した時にはもう遅い。 直感は正しい場合が多い。言語化を待つと流される。いったん止めろ。 あと、熱中すると他人からの問い合わせに対して、見事に上の空なのに関わらず、 なんとなく応答してしまうのは、ほぼ無意識なので直せるものではやはりなさそう。 事前周知することにした。 夏休み V社のインターンが終わったあと、 地元の花火大会でオフ会した。 ここで私の今年の夏は終わりました。 得ることの多い夏でした、と言い切りたいところだが、 私はここから秋のたびに出る。 中央西線、東海道線、山陽本線で福山へ行き、 福塩線、三江線、山陰本線、伯備線、岡山で、山陽本線へ戻ってきた。 その後、御殿場で、さわやかのげんこつハンバーグを頂いた。 非常においしかった。 翌日、東海道線で東京へ行って、V社のインターンで一緒になった人とお話し、 直後、我孫子で弥生軒の唐揚げそばを啜ったあと、秩父へ泊まった。 長野県民なので、秩父の谷を伊那谷あたりだと錯覚してしまう。 雁坂トンネルの取付道路と、武甲山を見ると秩父だということがわかる。 そしてC社インターン前夜は秩父に泊まり、久々に鉄道で旅した感覚を味わった。 C社 翌朝、事務所に集合し、3人チームを組んで、某山奥の温泉地で2日間開発してきた。 サーバとクライアントで分業したものの、意外とサーバ側が早く終わってしまって、 非常に後悔することになった。クライアントはUnityだった。 恥ずかしながら、私ははじめからUnityの環境整備をすればよかったものの、 ここまでサーバが早く終わるとは思っておらず、最後はかなり手が空いてしまった。 歴としたハッカソンに参加したのはこのインターンが初めてであり、 少人数ハッカソンにおけるアンチパターンを踏みぬいてしまった。 教訓 どう実装コストが分散するかわからないので、構築が大変な開発環境があるなら、それはは全員持っておけ。 さもないと開発環境持ってない奴が暇になってプロダクトが最悪死ぬ。 後日談 先日、ISUCONの練習会をサークルでやって、 Golangを巨視的に読めなくて悲しい思いをしました。 私はまだ未熟です。わかってました。 Read more ...

IPv6+802.1qの設定にハマった

Aug 6, 2017 - 1 minutes
背景 IPv6への接続を得たが、いまいち知見が足りないため、 サーバへの接続が安定しない。 構成 enp2s0f0 IPv4: 192.168.1.1/24 enp2s0f0.107 IPv4: 192.168.107.1/24 enp2f0f0.108 IPv4: 192.168.108.1/24 IPv6: RA/Stateless(EUI-64) 実装 RAでプレフィクスを配っているものの、IPv6 Privacy Extensionが有効になっていると サーバーとしては使い物にならないので無効に。 echo 'net.ipv6.conf.all.user_tempaddr=0' >> /etc/sysctl.conf カーネルモジュール8021qとman interfacesあたりを調べて回りましたが、 ifup -a && ifdown -aで確実に動作する設定は見つからず。 pre-up /sbin/vconfig add $iface $vid post-down /sbin/vconfig rem $iface.$vid こちらを/etc/interfacesに記述 この調査にほとんどの時間を費やした。 そして、IPv6の設定は iface enp2s0f0.108 inet6 auto であっさり終わり。 未だ不明な点として、 DNSの取得のためだけにDHCPv6を使う場合の設定が さっぱり明白にならないというオチがついた。 RFC8106で標準化され各種OSで実装が進んでいる、RAによるDNS設定が 自宅のルータから可能になれば万事解決ではある話だが……。 今後も調べ続けることになりそうだ。 参考資料 Privacy Extensions for Stateless Address Autoconfiguration in IPv6 enable IPv6 privacy extension on Ubuntu Linux - Men and Mice Suite - Men & Mice Documentation IPv6 Router Advertisement Options for DNS Configuration Read more ...

ETロボコン参加ハードルの299打鍵を減らす話

Jun 2, 2017 - 1 minutes
成果物 fono09/oo-ev3rt: 一発ビルドとアップロードまでできるやつ 背景 所属している研究室でETロボコンのプライマリクラスを、新人研修として使うことになった。 参加経験がない人間なりに、最大限サポートするという立場から、環境整備を行うことにした。 参考資料あるにDockerを活用して299打鍵以下でビルドした先人のQiitaを見たら、Dockerfileにentrypoint.sh当てて、行っている手順を更に自動化できると気づいた。 実装 最終的なビルドに本当に必要なパラメータはビルドを行うプロジェクトのディレクトリ名これだけです。 加えて、オプションとして、ロボットへアップロードするよう指定すると、ロボットへ勝手にアップロードされるようになってます。 Dockerfile Githubのリポジトリにある通り、 pizzafactory/che-stack-ev3rtを取ってくる イメージ内に、entrypoint.shを据えて実行可能にする /projectsを作業ディレクトリにする entrypoint.shをエントリポイントにして動作開始 entrypoint.sh 一部手順はDockerfileでやってしまってもいいのですが、いかんせん取り出すのが面倒なので、entrypoint.shに書いています。 /projectsへ移動 /projectsにクローン済みのev3rt-git/ev3rt-hrp2がないか確認、無ければクローン ディレクトリを移動し、ローダと指定されたプロジェクトのビルドを終わらせる アップロードフラグが立ってたらアップロードする メンテナ用にbashを立ち上げる build.sh 当初はdocker-composeとか使おうかなと思っていたのですが、立ち上げっぱなしにする必要性も感じず、さらに最初に書いたとおり、ビルドが終われば用済みなので、ビルドしてイメージまるごと消えるようにしました。 環境変数APP_NAME,UPLOADを指定 イメージを決めたタグでビルド コンテナ立ち上げビルド作業 イメージ消して終了 成果物だけ残してあっさり消えるようになっています。 評価 Qiitaと同等の操作の実現 helloev3をビルド完了するまでの打鍵数をカウントすることにします。 $ git clone https://github.com/fono09/oo-ev3rt/blob/master/build.sh $ mkdir ./projects $ ln -s /mnt/ev3rt upload $ ./build.sh アドレスはコピペするとして、64打鍵に抑えました。 それ以外のユースケース helloev3以外の場合はbuild.shを編集してディレクトリ名を指定するので、打鍵数増加要因となります。 しかしながら、2回目以降は./build.shの実行(11打鍵)となるので、非常に強力な打鍵数削減手段であるといえます。 参考資料 300打鍵以内でEV3RTをビルドする - Qiita pizzafactory/che-stack-ev3rt - Docker Hub ev3rt-git/ev3rt-hrp2: RTOS for Mindstorms EV3 Read more ...