# CyberAgentのインターンシップに参加しました
9月7日から9月30日までCyberAgentのインターンシップである, CA TechJobに参加してきました。
そのことを簡単にまとめます。
自分が配属されたのはAbema TVの広告のチームでした。
経緯
このインターンシップに参加するにあたって、面接が2回ありました。
1回目の面接は人事面接で、やってきたこと、やりたいことなどの話を主にしました。
ここで僕は、バックエンドかあまり経験は無いが、インフラ周りをやってみたい!などの話をした記憶があります。
面接の終わり頃にその場で1回目の面接の合格を頂きました。面接でその場で合格を頂いたのが初めてで、すごいスピード感でとても驚きました。
2回目の面接は現場面接で、受け入れ部署のエンジニアの方と面接を行いました。
過去の参加記事などに合った通り、やりたいことを大切にしているんだという印象を受けました。
参加にあたって
自分は元々CyberAgentの子会社でアルバイトをしており、入社にあたっていろいろと問題が起きて人事や労務の方に大変ご迷惑をおかけしました🙇
ありがとうございました🙇
子会社でアルバイトなどをしている場合は面接の時にちゃんと伝えましょう!!!
やったこと
やったことは、「世界を変えるCI改善」という題で、CI/CDの調査・検証・テスト導入などを行っていました。
元々動いていたDroneにいくつか問題があり、それを改善するための活動を行っていました.
調査・検証を行った技術としては
- Drone
- Tekton
- Prow
- GitHub Actions CI/CD
- Argo
- ...
などを調査・検証を行っていました。
期間的にもテスト導入を行えるものが1つが限界そうということになり、最終的にテスト導入を行ったのは Prow + Tekton です。
ProwとTektonに関しては別の記事に書こうと思います。
学んだこと
調査・検証を行う上で、KubernetesやDocker, CI/CD周りの知見はとてもついたと思います。
また、就活に向けてキャリアの話や会社の話などいろいろな話を聞くことができてとても学びになりました。
kubernetes何もわからんになった
— うちぱら (@u_chi_ha_ra_) September 27, 2019
インターン期間中
会社から歩いて5分くらいのシェアハウスの住んでいました。
10月からは無くなるとのことなので、いいタイミングだったな〜〜と思います。
休日はカンファレンスや推しのイベントに参加していました。
沖縄だとほとんど行けないため、とても良い休日になりました。
インターン期間中のツイートです.
twitter.com
インターンを終えて
めちゃくちゃ学びの多い1ヶ月でした!
新しいことなどにも挑戦させてもらえる環境、というのを感じた気がします。
反省としては、もっと早い段階で質問などをしていければ良かったなと思います。
もっと早い段階で見切りをつけるということを意識していかないといけないと感じました。
最後に
配属されたチームの方や、人事の方、関わってくれた皆さん本当にありがとうございました!🙇
この学びを活かして、今後も精進していきます。
毎月末にCAで開催しているJOB(就業型インターン)と内定者バイトの学生の成果発表LT会が終わりました✨
— 清原苑子 (@so_m0318) September 26, 2019
9月は夏休みを利用して全国津々浦々のエンジニア学生が集い、大賑わいの会となりました🙆♀️皆さんお疲れ様でした👏#catechjob pic.twitter.com/4zko7iibgW
responderでboundaryを含んだform valueが取得できない
タイトル通りです.
responderでform valueを取得するコードを書いたときに,boundaryを含むmultipart/form-dataリクエストを投げると,parseに失敗し,正しく値を取得することができません.
Enviroment
versionは以下になります。
responder 1.3.1
Example
import responder api = responder.API() @api.route("/") async def hoge(req, resp): req.media = await req.media() if __name__ == "__main__": api.run(port=8080)
boundaryを含まないrequest
import requests URL = "http://127.0.0.1:8080" payload = { "user": "test_user", "password": "hoge", } r = requests.post(URL, data=payload) print(r.text) # => {"user": "test_user", "password": "hoge"}
boundaryを含むrequest
import requests URL = "http://127.0.0.1:8080" files = { "user": (None,"test_user"), "password": (None, "hoge"), } r = requests.post(URL, files=files) print(r.text) # => {" name": "\"password\"\r\n\r\nhoge\r\n--3dec707edd260e174530419810e62f2c--\r\n"}
curlなどでmultipart/form-dataのrequestを投げると, form valueのみでもboundaryがついてくるので, APIを作ってcurlでテストしていたりしたらハマると思います。
$ curl -X POST -F "user=test_user" -F "password=hoge" localhost:8080
対応策
prを出してmergeされたので,GitHubからpip installすると使えるようになります。
https://github.com/taoufik07/responder/pull/367
https://github.com/taoufik07/responder/pull/378
8/22追記
pypiに新しいversionが登録されたようなので、pip installで行けると思います.
WSLでproxy環境と非proxy環境の切り替えをいい感じに切り替える
WSL、使っていますか?
僕は稀に使っています。
proxy環境下にいるときに、terminalでhttp_proxyを切り替えるのってめんどくさいですよね。
なのでここではWSL環境でhttp_proxyなどをいい感じに切り替える方法を紹介します。
この記事のWSL版です。
スクリプト
上の記事ではSSIDを取得する際に、 nmcli を使っていたためWSLでは動かすことができませんでした。
なので、SSIDを取得するためにWindowsの netsh というものを叩いて取得することにしました。
#!/bin/sh proxy=環境にあわせたproxy_address switch_tori=proxy環境下のssid function set_proxy() { export http_proxy=$proxy export https_proxy=$proxy export ftp_proxy=$proxy export all_proxy=$proxy git config --global http.proxy $proxy git config --global https.proxy $proxy git config --global url."https://".insteadOf git:// } function unset_proxy() { unset http_proxy unset https_proxy unset ftp_proxy unset all_proxy git config --global --unset http.proxy git config --global --unset https.proxy git config --global --unset url."https://".insteadOf } function get_ssid() { echo `netsh.exe wlan show interfaces | awk '$1~/SSID/{print $3}' | awk 'NR==1'` } echo `get_ssid` if [ "`get_ssid`" = "$switch_tori" ]; then echo -e "\e[31mSwitch to proxy for school network\e[m" set_proxy else echo -e "\e[36mUnset proxy settings\e[m" unset_proxy fi
この記事と違うところは get_ssid の中の部分です。
もともと grep してそれを awk しようと思っていたのになぜかpermissionで怒られるのでこれに落ち着きました...
さいご
WSL2楽しみですね。
awkが2つに分かれてしまったのがつらいので、シェル芸に強い人がいたらまとめる方法教えてくれると嬉しいです。