なかっちゃんtech blog

勉強会とか日々の勉強の記録

YAPC::Okinawa行ってきた

ツイッターではうるさかったですが,3/2~5まで沖縄に行ってきました.福岡以来でした.ちっと研究室配属の関係で書くのが遅くなってしまいました. 福岡記事はこちら kaoru1615.hatenablog.com

学生支援

今回は学生支援で行かせていただきました!.スポンサー企業の皆様ありがとうございました! 個人的にはGaiaxさんやペパボさんとインフラの話をもっとしたかった.Webの方が多いのでなかなかインフラの話できないなぁって思っていたので,個人的にすごい嬉しかった. 東京はできれば登壇,最低でもLTとかしたいなぁって思っているのでまたお願いできたらなと思います!

見たセッション

Webサービスを監視するときに僕達が考えたこと

papix.hatenablog.com

普段からサーバ監視をする学生という完全に例外感はありましたが,しかし監視はセキュリティ的な監視で,運用的な監視はあまりしたことがありません(厳密にはうそ).一応serverlessでwebサーバ監視するツールはpythonで実装していて,こちらです.(宣伝ですがlambdaの都合でpython実装です.) 200が帰ってこなかったらメールが飛ぶようになっています.まあ一過性のものだと200が帰ってこなかったことをトリガーにインスタンスのスケールアップとプロセスの再起動でとりあえず耐えられそうですね.ほかはそれなりの対応が入りそうですがね.

あとは何を持って障害とするかみたいな話はすごく勉強になりました,一過性があるのか,それとも障害が発生しているのか,それを見極めないと真実と違った通知が来てしまう,それはみんなにとって不幸なことなのでできる限り0にしたいというのが実際のところだと思うので難しいなぁって思いました.あとMackerelの中身気になる

あと思ったことは可視化するということで今まで人間の感覚でやっていたものの敷居を低くしてくれるということが,どれくらいいいことなのかということです.そもそも今までの障害とかの原因ってほんとに探すの大変だと思うんですよ.それが可視化できる,しかもうまくやれば前兆を察知できるというのは運用にとって有意義なことだと思います.そのサーバに合わせて必要な通知をしてあげることが大切なのかもしれない.

お客さんに悟られる前に障害対応とか考えたことなかった.

HTTP/2にまつわる事実と誤解

www.slideshare.net

HTTP2はパケットロスに弱いってことはわかったけどグラフもいっぱいあったしきちんと見直していきたい.ACKの返し方ってのもさることながら,通信路の高速化によってなおさらエアータイムもできてしまうので難しいですよね.  

全部Perlが教えてくれたこと

speakerdeck.com

  • コミュニティはgive and takeで行きましょう 福岡でもコミュニティやらせていただいているのでなおさら考えることがたくさんありました.人を定着させつつ,お互いに与えることができるようにやっていくのさえ大変なのにそれを何年も継続させていくってのはもっと大変だと思います.難しいし,これからも考えて行くことだなぁと思います.

gest 新屋さん

形式自由文法とか2年前に講義でやったいらいで覚えてないなぁ. 無限級数となるものをいかに計算機に扱わせるかがおもしろかった. 普通にオートマトンの講義とかうけてみたいなぁ

Perlを中心としたワンライナーあれこれ

speakerdeck.com

一回限りのものはさっと書いて作業を終わらせそう いいですよね,ワンライナー 全部書くのめんどくさいしぱっぱと一回だけのものは終わらせちゃいましょう

いろいろ書かなくていいならそれですませたいですよね

WordPress運用を支えるPerl

静的,動的コンテンツをうまく配信させるにはどうするか これはもう一回資料みたさある

perlのおかげの出会い

入学式なりアナグラくんなりPerlYAPCがないと会えなかった出会いがあってすごい好きです.次回東京はなんか登壇できたらなぁという気分

Perl入学式in福岡

rebootということでFukuoka.pmの方々と顔合わせしてきました.あとは校長の@papixさんを@xtetsujiさんに紹介していただきました.これから5月くらいに第一回を開催できたらいいなという方向で調整しています.Perlがくれたものの分少しでも誰かのためになればなという思いでやっていこうかなと思ってます.次回YAPC東京は入学式周りの話とかありきたりだけどしてみたい.

心地よい環境のために

X1が帰ってきたついでに環境の再構築をしてる.思ったより手こずってしまった.

ここに自分にいい感じの環境再構築方法を書いていこうと...

んでここからは事象のメモ

UbuntuVirtualBoxからrawdiskのwindowsを呼ぶために

こちらを参考(丸パクリ)にさせていただいた.

細かいことは省略しておこう.今回詰まったのは2箇所

WayLand vs Xorg

Ubuntu17.10で何も触らずにログインするとGUIはWayLandで実行されます.17.10が出た当初は日本語が対応していないという理由で確実に使わなかった.しかしWayLandのmozc日本語対応したんですね.全く気づけなかった.... tweetdeckの挙動とかよくなってた.以前は半角と全角を入れ替えると勝手に入力されなくなるとかいうのもあったんだけど,改善され,ディスプレイ周りもxrandrコマンドを使わずともまあそこそこにいい感じになってくれていた.「おー 改善されてるじゃん」って気分だったんですが,WayLandだった.

なんで気づいたかっていうとvirtualboxでraw disk上のwindowsを呼ぼうとしたとき,そもそもsudoでvirtualboxがうごかなかった.

nkchan@x1-nk:~$ sudo virtualbox 
Qt WARNING: QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
No protocol specified
Qt FATAL: QXcbConnection: Could not connect to display :0
中止

これの原因は結局WayLandでした.細かい理由まではわからんけどroot権限かつ,グラフィックを伴うということでだめだったぽい.解決したのはうれしい.でもねtweetdeckが滑らかに動くのは嬉しい. なのでwindwosを使わないときはWayLand,使うときはXorgを使うことにした.これでプレゼンしながらツイッターが捗らなくなるね!

なんか32bit版が入ってた?

これなことがあって,エラーコードでぐぐって,このページにたどり着いて,このページのとおりにしたら動いたw askubuntu.com

追記

LaTeX環境をubuntuに移そうと思っています.さて環境の構築しなきゃなぁ

ICMP ってL3のプロトコルですよね?

仮配属でCISCOルータで遊ばせてもらってるので久々にネットワークで遊んで楽しんでます.んでいろいろ調べてたわけですが

changineer.info

こちらのサイトに

ICMPは、以下の誤解が巷にあふれています。
- ICMPはUDPである
- ICMPはLayer3のプロトコルである
これら主張は大嘘です。知恵袋などの質問サイトを見ると、「pingのポート番号を教えて下さい」等の質問がありますが、ICMPはTCPでもUDPでもありません。このような誤った概念を持たないようにするには、まずはIPのprotocol numberの概念を理解する必要があります。

って書いてあって「はえええ??? ICMPってL3のプロトコルじゃないの???」って思いですね,流石に調べた.

いや...他のサイトはL3プロトコルって書いてるんだけどというわけで勉強ついでにRFC792に行きました.

イントロの

The Internet Protocol (IP) [1] is used for host-to-host datagram service in a system of interconnected networks called the Catenet [2]. The network connecting devices are called Gateways. These gateways communicate between themselves for control purposes via a Gateway to Gateway Protocol (GGP) [3,4]. Occasionally a gateway or destination host will communicate with a source host, for example, to report an error in datagram processing. For such purposes this protocol, the Internet Control Message Protocol (ICMP), is used. ICMP, uses the basic support of IP as if it were a higher level protocol, however, ICMP is actually an integral part of IP, and must be implemented by every IP module.

ってことで「Gateway to Gatewayでやってるときにエラーのレポートしてくれたらいいよね.それをICMPとする.んでこの機能はIPを前提としているのでIPよりも上のレベルのプロトコルのようだが,IPにとって不可欠なものであり,全てのIPモジュールはこれを実装しなければならない.」って書いてますね.んでTCP/IPのモデルで考えてICMPがL4のプロトコルだと仮定してもL3のIPにとってL4のICMPが不可欠なものだとしたらそれは思想に反し,下のレイヤが上のレイヤに依存していることになる.というわけで仮定はおかしいということになりますね.

んー やっぱ本質とかなんでそれができたかどうかを知るときはRFCを読むに限りますね.

バイトの成果のあれ

やっとこさある程度のとこまで言ったのでpushです github.com

Nodeに半年苦戦して結局できず,pythonにシフトして3ヶ月くらいですかね.もう一人のバイトの人とここまで完成させました.
READMEはCognitoを用いたログイン機構ができたらきちんと書きます....

一旦ここで区切りです 会社のリポジトリにpushするの緊張しますねえ

SoftetherでVPN構築

久々の技術記事です. conohaで借りてるVPSに追加機能として構築しました.

そもそもなんで建てようとなったのかというと,Faceboook,インスタともにうるさかった北海道旅行がきっかけです.あまりにfreewifiにつなぐ機会が多く,怖いなぁって思ってました. きちんと通信路を安全なようにしたいなと思い立ったのが理由です.

今回はfreebsdに構築しました.

install

http://www.softether.org/ からfreebsd用の最新版をダウンロード https://ja.softether.org/4-docs/1-manual/7/7.3 を見ながら作業を進める

ダウンロードファイルをmakeするとなんかcheckされた

VPN Tools>Check
Check コマンド - SoftEther VPN の動作が可能かどうかチェックする
---------------------------------------------------
SoftEther VPN 動作環境チェックツール

Copyright (c) SoftEther VPN Project.
All Rights Reserved.

この動作環境チェックツールを実行したシステムがテストに合格した場合は、SoftEther VPN ソフトウェアが動作する可能性が高いです。チェックにはしばらく時間がかかる場合があります。そのままお待ちください...

'カーネル系' のチェック中...
              [合格] ○
'メモリ操作系' のチェック中...
              [合格] ○
'ANSI / Unicode 文字列処理系' のチェック中...
              [合格] ○
'ファイルシステム' のチェック中...
              [合格] ○
'スレッド処理システム' のチェック中...
              [合格] ○
'ネットワークシステム' のチェック中...
              [合格] ○

すべてのチェックに合格しました。このシステム上で SoftEther VPN Server / Bridge が正しく動作する可能性が高いと思われます。

コマンドは正常に終了しました。

その後fileを/usr/localへ

sudo mv vpnserver /usr/localへ

serviceコマンドで使えるように/usr/local/ect/rc.dにvpnserverファイルを追加 /etc/rc.confに vpnserver_enable="YES"を追加

実際の作業

コマンドの実行後HUBの作成

VPN Server > HubCreate 

ハブを指定してユーザ作成

VPN Server > HUB hoge
VPN Server/hoge > UserCreate
VPN Server/hoge > UserPasswordSet

L2TP over IPSecの設定と仮想 NAT および DHCP サーバー機能 (SecureNAT 機能) の有効化

VPN Server/hoge> IPsecEnable
IPsecEnable コマンド - IPsec VPN サーバー機能の有効化 / 無効化
L2TP over IPsec サーバー機能を有効 (yes / no): yes

Raw L2TP サーバー機能を有効 (yes / no): no

EtherIP / L2TPv3 over IPsec サーバー機能を有効 (yes / no): no

IPsec 事前共有鍵の文字列 (9 文字以下を推奨): ********

VPN 接続時に仮想 HUB 名が省略された場合のデフォルト仮想 HUB 名: example

コマンドは正常に終了しました。
VPN Server/hoge> SecureNatEnable

参考文献 https://qiita.com/showwin/items/92861057a8b62611444d

これで公衆wifiも安心できますね. 細かいとこはまだ把握できてませんがおいおい確認しながら設定をかえつつよりセキュアに便利にやっていきます.

大学で学ぶということ

最近思っていることがまとまってきたので文章にしようと思います.最近はそもそもなぜ自分がそれをしているのかを考える癖がついてきた感じがあり,非常にいい感じの方向に進んでいる感じがあって良いです. 今日は結婚式で,「院にいくん?」みたいな話になったのでそれも含めての話です.なんで今自分が大学にいて,院に行こうとしているのか.

そもそもなんで大学に入ったか

中学時代に高専落ちしたので元カノ(当時は彼女じゃなかったので)を追いかけるだけのために高校を選び(馬鹿なので昔からリソース全振),専門学校でも行こうかと思い,まあ福岡で偏差値50あればええやってことで高校に進学.そこでなんか知らんけど進研模試で数学校内10位とかいう成績で高校の担任に大学にいけと言われまあ市立大かなって感じで生徒会で行事の運営ばっかしやってた,あとは先生に恵まれたので数学楽しんで解いていた.んで九工大の推薦をうけてみと言われ受けてみたら合格.

大学に入って今まで

ネットワークしたかったから某団体へ,まあ4年でそこそこのとこに行けたらええやろ的な感じで日々の暮らしに精一杯だった.そこで知り合ったメンツは今のコアなメンバーになってる.もう全部が手一杯なくせに全部本気でするから壊れかけで心配ばっかしされてた.恋愛も必死だったし3年前期はほんとにやばかった.全部がうまくいかなくてもうだめかと思ってた.それでも人と違うことをしたい俺は,友人をさそって勉強会にでるようになった.それがHackerzLabとの出会いだったし今は気づいたら問題作ってる.YAPCでいろんな人ともあった.わりと考え方が変わったのはここかもしれない.エンジニアの最大美徳を学ぶとともに元カノといざこざ仕出して自分を大事にするように意識をしだした.んで今勉強していることは絶対役にやつことだからそれを考えるように.

今の考え

以前とある方には話したのですが大学で学ぶ計算機科学ってのはそもそも現場で用いるものとは根本的にちがうものでその深さが違うものだからということを答えました.これは次の章で書きましょう.まず思うのは院に行っても6年なので全部をフルでやるのは無理だなってことです.恋愛と勉強とバイトを全部はむりでせいぜい2つが限界だと思ってて,僕はいろいろあってバイトと勉強を選ぶことにwwww(そりゃあ大学の近くに一人暮らしして彼女と半同棲的な感じで暮らしていくのも絶対楽しいので体験したかった).人生,家庭がいい感じになるか仕事が楽しいかのどっちかが達成できたらそれで十分な感じある.まあこんな話は置いといて,そもそもこんなにお金のことを気にせずになんでも学べるのって今だけじゃね?ってことに気づいたんですよね.ネットワークしながらプログラミングするし,みんなでサーバを立ててわいわいするのもたのしい.なんか哲学的なことをお酒を飲みながら議論して,気づいたらしょうもない話に変わってたり,んでもって先生のもとでそのことに集中して良くて,本の作者と本の中身について議論し,享受してもらい,たまにはわいわいもするような環境,もう人生にはないのではないだろうか.なにより高みがみたい,仕事に生きなくてもいいからなにか一つをやり遂げた先にあるものが見てみたい.きっとそれができるようになったら働きだしてもその方法(またはそれを進化させたもの)を活かして人よりも成長できるのではないだろうか.それを続けてば確実に自分の力になる,どこでもそこそこ通じればお金には困らないでしょう.それで今の流れを維持したまま勉強を続けることができるならそれは奨学金を借りてでもいきますよ.

大学で学ぶものの深さ

きっと今,エンジニアの殆どは既成のライブラリを使い物を作りそれを売ってお金にしているでしょう.ハードの世界も同様でしょう.只今のハードもソフトも過去の天才たちがそれより深いところがわからなくても大丈夫なように作っちゃってるせいで,さも自分はすべてを知っているような気になってるひとも多いのではないでしょうか.(けっこうこのセリフけんか売ってるなぁ).プログラミングと一言に言ってもライブラリを作るのとライブラリを使ってものをつくるのではかなりの違いがあるようにそれと同じだと思います. ハードウェアの話をしましょう.細かく大雑把にいくと

ハードウェア

半導体の集合  

↓  

LISのパーツ  

↓  

AND ORゲートの集合体  

↓  

ANDゲートは複数のトランジスタを組み合わせたもの  

↓  

トランジスタの根本は電子回路,電磁気  

↓  

電子回路,電磁気を学ぶために解析,線形を学ぶ.  

このような流れになっているから僕は大学で線形や電磁気をやっているんですよ.しかしこれなしで教育に時間がかかるだなんだかんだ言っても大学は職業訓練校ではないので. 今まで深いとこをやってきた(本人がどう思っているかは別として),そこに上がって来るまでに少し時間を要するんだと思うので企業の皆さん優しく見守っていただけると幸いです.

僕はある程度全体を網羅した後に細かいとこを詰めていくのでバイトや勉強会と積極的にやっているって感じです.

ではでは以上(まあ多分これはどんどん書き加えていきますよ)

ThinkPad X1 Carbon への情報収集

というわけで

そうなんですよ! こういうわけでパソコンを変えます.

macは?

まあ大学入学前に買って今まで頑張ってくれたんですけどね,「ここぞ!」というときにパワーが足りないんですよ.Latexコンパイル(20ページくらいのレポート)をする時もなんかもたもたって感じで.... あとスリープ復帰してだいぶ長い間CPU使用率が100%付近とかいう状態でバイト先でも端末借りてる状態でした.

求めるスペック

  • CPU Core i 5 or 7
  • メモリ 16GB以上
  • SSD 特にないけど多いと良い
  • USキーボードが選べる

これさえ満たしてもらえばいいかな.あとはMBPみたいにType-cしかないばっかしにhyperdriveとか買って周辺機器にお金使うのはなぁってのもあります.

ThinkPadにした理由

ここで候補に上がったのは「MBP」「ThinkPad」「Surface」です.これ以外のメーカは最初から眼中にないです.(Iiyamaとか若干気になるのはあるんですけどね),Ubunut入れたいしBIOSレベルでいじられてたらやっとられんので.いやーMBPが高いのはわかってた.これを満たそうとすると20万超えます.これに消費税とApple Careで25万orz) あとMacじゃないといけない理由も見当たらなかったですしね よしじゃあもうWindowsを抜いてUbuntuを入れるとしてwindows機を買おうと思い.Surfaceへ...

「お前 絶対Mac意識しとるやろ!」 とレビューを見ながら思いました.

さてThinkPadは前々からバイトで若干触る機会があり,これいいなぁって思ってました.X1 Carbonの新品なんて完全に一目惚れですね.XシリーズやTシリーズもいいなぁって(この時点でThinkPadに確定) Xシリーズは画面サイズが12.5インチという理由でなしに,x1にするかTにするか.... 持ち運びは毎日するのでやっぱし軽いほうがいいかなという理由でX1 Carbonにしました.

構成

  • Core i7-7500U (2.7GHz,MB)
  • メモリ 16GB
  • SSD 256GB 少し心配

SSDが少し心配ですがまあ十分なスペックなのでこれで行きます.OfficeはGoogoleのツールたちでなんとかしていきます.これから半年困らなかったら研究室の端末という手がでてくるのでどうにかなるでしょう.

集めた情報

今回はWindowsを完全に消し去ってUbuntuを入れるのできちんと情報収集をして作業を行おうと思いまして(あと全部記録を取ろうと)

UbuntuのVersion

現状(20170909)が最新版が17.04(End of Life data is January 2018)で次の18.04 LTSがでるのは2018年の4月とかいう話です.んで17.10が10月にでます.んー アップデート何回もするのめんどくさいけど来るのは9月20前後になりそうだし,夏休みに移行作業を済まして置きたいなぁ.16.04LTSのどちらにするか悩みどころ.タイミングが悪い

って思ってたんですけど17.04にしようと思います.理由はSwap領域の話になります.さっきのSSDの容量的なお話もあり,Swap領域はなしにしようかなって思ってました.これを見てあー  休止状態か... 基本スリープだろうけど長時間使わないときは使いそう....

SDカードを買って来てそこにswap領域を作るかってつもりでしたがところがどっこいUbuntu 17.04からスワップパーティションからスワップファイルに移行してるじゃないですか(参考サイト)

しかも

また確保するスワップファイルのサイズ計算は今までと大きく異なる。 ボリュームの空き容量の5%以下、もしくは、2GiBのいずれか小さいサイズを採用する。

だそうでメモリが大容量化してSwapがほぼ使われていないような状態になっている流れなのでそれを汲んででしょうね.

というわけでアップデートの回数多いけど17系を使って行こうかと思います.