ゆるふわ技術日誌

エンジニア見習いの悪戦苦闘日記

決意表明

今日は2018年6月20日。あと285日で社会人になってしまうらしい。恐ろしく早い。

あと286日で成し遂げたいこと・目標をこの記事に書いておく。恥ずかしいにもほどがあるが、自分への戒めってことで。

目標

目標とされる人になる。

技術力はもちろんだし、物事に対する向き合い方や進め方などの面も含めて。

「あいつの食らいつき方はすごい」くらい言わせてやる。

成し遂げたいこと

大学生のうちに成し遂げたいこと。

  • [ ] 外部勉強会などでのLT/登壇など
    • それができるくらいの技術的インプットをしていきたいという意味
  • [ ] 研究でボスを唸らせる
    • 決して研究もおろそかにしない
  • [ ] TOEIC 550点
  • [ ] 内定先のメンターが腰を抜かすレベルの成長をする
  • [ ] 英語のオライリー本読破
  • [ ] Webサービスのリリース
    • ビジネス的なアイデアとかはどうでもよくて、プロダクションリリースできるレベルのコード(セキュリティ/設計/テスト)を一度通して書いてみる。クラウド周りのインフラにも触る。
  • [ ] 有名OSSへのコントリビュート
  • [ ] 原付長距離ツーリング(片道200km以上)

研究の資料まとめたり・Rubyとか正規表現で遊んだり。

なんだかすごい慌ただしい日曜を過ごして充実感。

研究

スライド資料をちゃんと作った。

ボスに見せてさっさとOKもらいたい。

Rubyとか正規表現とか

Ruby正規表現使ってごにょごにょしていた。

Markdown正規表現でひっかけるのめっちゃ面倒だということがわかってしまった。

もともとHTMLの文書をReverseMarkdownというGemを使ってMarkdownにした上で正規表現でごちゃごちゃこねくり回していたが、よく考えたらHTMLのままnokogiriとか使ってやった方が圧倒的にラクジャーンと思った。マジで辛い。

今日書いたコードだいぶ書き直す羽目になりそうな予感がして最悪である。

雑談

見通しの甘さがすごい2018

勉強会をした

研究室でネタ持ち寄り勉強会をした。

数人だったが参加してくれる人がいて嬉しかった。

完全テーマフリーだったのでこんなコンテンツが並んだ。

  • Docker & Docker Compose(僕)
  • 競プロ・ペアプロの話
  • Golangで作るWebアプリ
  • Prometheus
  • PowerDNS

インフラから競プロまでめっちゃ幅広いが、研究室の人たちが普段何やってるのかとか、知らなかった世界を知れたりとなかなか楽しいイベントになった。

自分の発表は正直、準備不足で不完全燃焼になってしまったので申し訳ねえという感じ。

またやるのでその時は何か聞いてくれた人の役に立つコンテンツを用意したい、そんなお気持ち。

雑談

IT系の勉強会 = 🍕?

しかしまぁ研究室の汚いこと…。

ChromeのXSS保護機能の仕組み

きょうはSAなので技術的な稼働はなく……。

ひょんなことからXSSのデモを見せたくて、適当に書いた適当なスクリプト書いて実行したらChromeにもSafariにもブロックされた。(ERR_BLOCKED_BY_XSS_AUDITORとか言われる)

動いてるのはサーバーから返ってきたただのJSのはずなのに一体どうやって判定してるのだろうか…。

リクエストのクエリパラメータに含まれるJSが全く同じ形でレスポンスに含まれていることを検知して弾いてるのだろう、と推測した。

実際に調べたらそんなことが書いてるページを見つけた。

security.stackexchange.com

予想が当たってとっても嬉しい。

にっき

PHPを書いてました。明日使うサンプルアプリ的なやつなので今日の間になんとかしないとならない………マズイ。

一番良くないのは特に得るものがないということ。単純作業の繰り返しが主なのでただただ作業量が多いだけで辛い。


夕方からは新しく配属になった三年生が来てたので、彼らのセットアップを手伝ったり、先輩含めて技術的な雑談をしてた。

インフラに目覚めそう。そう思った。

研究のこととか・webpack

研究のこととか

余裕を持って〜ということで準備をしてた。今日はスライドを作った。

パワポが落ちまくるのでおかしいと思ったらバージョンが古かったのでインストールしに行ったりもした。

インストーラーが途中でコケるのでおかしいと思ったら

こういうわけだった。

Webpack

こういうわけでWebpackのドキュメントを片っ端から読んでる。

importされた時にどこをどんな順番で探すかとか、フルパス書いた時と相対パス書いた時の違いとかいろいろと知らなかったことが出てきて面白い。

雑談

ツイッターにいろいろ書いておくとブログ書くの楽だなと思った。

やっぱ僕はSNS断ちとか無理っすわ〜〜。

そういや今日でTwitter歴9年らしい。ウケる。

Twigでyieldっぽいことをする

なぜだかPHPを書いています。こんにちわ。

Twigというテンプレートエンジンを使ってみることにしたのですが、erbでやるyieldっぽいことをしたいなと思って調べてみた。

yieldっぽいとは

いろいろのページで使い回すレイアウト用のテンプレートが以下のようにあったときに

<html>
<head>        
  <title>hoge</title>
</head>
<body>
  <%= yield %>
</body>
</html>

以下のようなHTMLをrenderすると、

<p>Hello world!</p>

テンプレートのyield部分に埋め込んでくれて最終的に以下のようなHTMLを吐き出す機能。

<html>
<head>        
  <title>hoge</title>
</head>
<body>
  <p>Hello world!</p>
</body>
</html>

子が自分自身を親に埋め込むみたいなそんなイメージ。

Twigでやってみる

layout.htmlみたいな名前で(名前はなんでもいい)テンプレートを保存する。以下のような感じ。

<html>
<head>        
  <title>hoge</title>
</head>
<body>
  {% block content %}
  {% endblock %}
</body>
</html>

まぁ要はblockってのを用意してあげればよい。

そういした上でblockの中身となるファイルを用意する。以下のような感じ。

{% extends '/layout.html' %}
{% block content %}
  <p>ようこそ!{{ name }}さん!</p>
{% endblock %}

んで、あとはrenderしてやるだけ。

$twig->render('index.html', ['name' => 'みりん']);

簡単楽チン。

雑談

不本意?に半ば書かされているPHPですが結構面白いです。

そんなことよりフロントエンドの勉強がしたい。

なぜかPHPやってた

なんでかPHPをやってた。

モダンなPHP事情

PHPっていうとどうしてもCGI的な、

<p>ようこそ<?php echo $name ?>さん!</p>

みたいなやつばっかり思い描いてしまうのですが、最近はそうでもないらしく、ルーティングライブラリを使ったりすると、よくあるpathに対してハンドラー関数があって〜みたいなこともできるようです。

ルーティングライブラリはこのへん。

qiita.com

個人的にはkleinがExpressとかと近い感じがしていいかなぁと思った。

テンプレートエンジンなんかも当然ライブラリがある。

最近の流行り?だとTwigとかいうものがあるらしい。

Home - Twig - The flexible, fast, and secure PHP template engine

オブジェクトをドットで辿るのがなんともPHPらしからぬ点をのぞいては概ね良さそう。

mod_rewriteをDockerで使う

↑のようなルーティングライブラリは、一度Webサーバーに来たリクエストを全て単一のPHPファイルに飛ばして使います。

そのため、Webサーバーの設定を変更してどのリクエストもエントリーポイントとなるPHPファイルにリクエストが行くようにしてあげる必要があります。

そのためには以下のような.htaccessを書いて置いてあげればよい。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* index.php

と思ったら、RewriteEngineがねぇよと言われたので、調べたら以下のコマンドを実行して有効にしてあげる必要があるらしい。

a2enmod rewrit

これでApacheを再起動したらうまくいく。

ちなみに環境はphp:7.2.3-apache on Docker

なんだかSPAのルーティングみたいだなぁと思いました(こなみ

雑談

ぐりぐりハングリーに勝ちに行け!