なかっちゃんtech blog

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

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系を使って行こうかと思います.

明るいオタクって言われた話

こんにちは 久々ですね.

YAPCからもう少しで一ヶ月も経つんですね.

昨日,唯一の3限が20分程度で終わってしまったのでちょっと高校に行ってきたんですよね.久々に先生方とお話してきました.そこでとある先生に「あんたは昔から自分であんまやらんけどいろいろ首突っ込むよね」って言われました.(おかしいな自分でもやってたんだけどなぁ)僕的には今みたいにHackerzLab.博多をはじめ,いろんなイベントに行って話ししたりなんたりは大学に入ってやってる認識だったんですけどまさか高校のときからやってたとは思いませんでした.(認識がなかった) 言われてみれば生徒会だったこともあり行事の核になっている人と関わる機会は多かったです.そういうところなのかなと自分で思ったししてました.

その後は「今はなんの勉強してるの」とか「院いくの?」みたいな話をずっとしていたんですが,その中で「あんたは明るいオタクだから就職は心配してない」っていう発言があってですね."明るいオタクというワードがすごい印象に残りました.たしかに同期よりは外で活動してるので大学外の知り合いであるとか,現役の方とは話す機会は多い方だと思ってます.コミュニケーション能力は絶対に必要なものなのであって損はないですね(技術的なことは結構話すことができますがそれ以外がさっぱりだったりする) でもこれが自分の強みなのかなって思います.自分の強みって人に言われないとある程度考えていてもそれに言葉を当てはめるのって難しいですよね.仕事するときも明るいオタクを活かしていきたいなぁって思った今日このごろ

とりあえずテスト乗り切りますね

終わったらまたブログ書きます.

YAPC:Fukuoka行ってきた

聞いたセッション

perlペーペーなのでそれ以外で - Be PaaS Monger - クラウドエンジニアの三大美徳、またはIaaSを使わない3つの理由 - コンテナを「守る」仕組みから、中身を理解しよう! - システム障害をめぐる冒険 - Web application good error messages and bad error messages - 未来のプログラマー達へ ~Perl入学式卒業生から~ - グローバルなエンジニアを目指す為の入門的な話 - Inside Evalpark - the evolution of sandboxing - スキップしていいテスト、スキップしてはいけないテスト 〜速さと信頼を兼ねたテストコードを構築する術〜

懇親会ではわいとんさんとお話させていただいてAzure以外の話もしていただいて感謝です

中身については他の方々が書かれていると思うので学生の僕から得られたものを今の時点でまとめられるだけまとめていきたいと思います.開発経験がなさすぎてサーバを愛でる方がすきな僕が行って思ったことで本当に大事なことは

  • なんでもいいから自分の興味の有るもので設計,開発を行う
  • インフラエンジニアが監視,検知を楽にするためのツールを開発することがある

現役の方々からすると当たり前だろと言われそうですが(特に下は)学生からすると今の現場の流れ,しかも運用なんて聞かないとわからないんですよね,それ以外にも吸収するものが多い時間でした.

次の日はHackerzLabを午前,午後とトークしたりと充実した2日間でした

Perl入学式in福岡とかいう話もあるのでまた新しい機会がうまれそう

Mastodonのお話

この記事はHackerzlab.博多 用の記事です

mastodonとは

マストドンは、Twitterに似た特徴を持つが、オープンソースソフトウェアを実行している分散されたサーバーの連合によって管理される、連合型のソーシャルネットワークである。

簡単に言うとサーバがいっぱいあるTwitter

ストドンのサーバーは「インスタンス」と呼ばれる。利用者は一つのインスタンスに所属し、他者が閲覧できる短文を投稿できる。投稿の公開範囲は、ユーザー自身の設定とインスタンスごとの設定により決定される。投稿者本人のみ閲覧可能・投稿者のフォロワーのみ閲覧可能・あるインスタンス全体に公開・インスタンスを超えマストドンのネットワーク全体に公開・二者間のダイレクトメッセージを、投稿ごとに利用者は選択できる。 twitterとの差別化として、中央集権型のトップダウンの管理ではなく、小さなコミュニティによる自治的な管理という方向性をマストドンのサービスは模索している。

それぞれのインスタンスによって話題の方針がある

一覧 http://k52.org/mastodon/

用語

http://qiita.com/ato1234/items/22d49b9c17c758317077

タイムライン

タイムラインが何種類かあります

  • ホーム

    自分のフォロワーのtoot TwitterのTLみたいな感じ

  • ローカルタイムライン

    自分のインスタンスの人たちのtootが表示

  • 連合TL

​ 連携しているインスタンスのtootが表示

登録してみましょう

Https://hackerzlab.net

スマホアプリもあります http://justsize.hatenablog.com/entry/2017/04/17/060040

技術的な話を

Github:https://github.com/tootsuite/mastodon

ここを参考に今回はdockerを使わずに構築しました.

Redis

全てのデータをメモリにいれるとかなんとか

Postgres

DB

なんで2つDBがあるのか

Redisをキャッシュ保持,高速小容量で動かし,実際のデータはpostgreへって感じ

Rails

メインですね

API

C#REST APIでてました その他言語でもいけます.


ここから追記(2017/06/25)

スマホアプリ

iOS: Amaroq  

Android: Tusky  

Win/Mac: githubに上がってるそうです. web版でいい気もしますが

今の状況

mstdn.jpに一極集中するというよりかはいろんなところに分散されていっている感じです.企業としては

Qitta,DWANGOは表向きは試験的に行うと書いていました.

1つのインスタンスは一つの話題に特化するということが根付きつつある?

引用

https://matome.naver.jp/odai/2149218081638507401

HackerzLab.博多vol10に参加してきた

2回目の参加してきました.全然解けませんでしたww.これじゃいかんなあって思いなが復習しなきゃなーって思いつつ,レポート書いてました.レポート書き終わったんでささっとまとめて行きますね.

シーザ暗号解析

何文字ずらすかわかんなかったんで「どうしようかなープログラム書こうかなでも時間ないし」ってことで後回しにしました.んで解説でご紹介していただいたツールをここに置いときますね.perlとかで書いてみたいですね.有るものを違う言語で自分の手で作るのもだいぶ訓練になりそう

jad コマンド

javaの逆コンパイルのコマンドですね.ソースコードがそのままでてきてびっくりしました.ここまでの精度でもとにもどるのかーって思いました.

javap

僕はこっちのコマンドで解析しました.こっちのほうが「逆コンパイルだー」って感じがして僕は好きですw

コンパイルデコンパイル

皆さん意味は同じと取るんでしょうけど言葉の意味合いとして何か違和感を感じたので少し調べてみました.ここで言葉の意味を幾つか

んー期待していたとおりにの文言で出てこないですね.今僕の中で詰まっているのは

バイナリからソースコードを生成 することと バイナリからソースコードを取り出す ことは必ずしも同義ではないのではないだろうかと思うんですよ.実際にjavaでやってみました.

public class HelloWorld {
    public static void main (String[] args) {
        System.out.println("Hello World !!");
    }
}
import java.io.PrintStream;

public class HelloWorld
{

    public HelloWorld()
    {
    }

    public static void main(String args[])
    {
        System.out.println("Hello World !!");
    }
}

参考までにC言語は半分もどればいいとかいう話が…..(出処怪しい)

では本題にもどりましょう.上の2つの結果を見ていきましょう.最初のは有名所でHello Worldですね.んで逆コンパイルしたものが下になるんですけど,まあそりゃあそうなるだろって感じですし僕も,「へーこの精度で戻るんだ」って感想です.だからこそ100%すべて戻るみたいないい方をしていないかなと,自分自身で再確認しつつ「元のソースコードを見るためには逆コンパイルしたらいいよ」ではなく「元のコードと同じ動作をするコードの見本が見れるよ」くらいが正しい日本語ではないでしょうか.いやわかっている人はいいんですけど,それを知らない,わからない人に対してさも全く同じようなコードが生成されるような言い方はご法度ではないでしょうか(少し教育的な話にもなるんでしょうけど).今回違和感を覚えたので少しやってみました(文句はいくらでも受け付けます,)

SQLインジェクション

はい有名所ですね.しかし実際に調べたこともなかったのでこれを期にいろいろ調べてみた.はいそもそも定義いってみよう

だそうです.またこれが調べたら出てくる出て来る.これ自分で調べても理解はしていただけそうですね.まあSQL文を悪意のある人の思うように動くように書き換えるんですね.基本的にユーザーの入力したデータをSQL文に組み込むと思うのでそこをうまく活用したのかって感じです.例えば

SELECT * FROM hoge WHERE id= $ID AND password = $PASS 

こんなSQL文があったとしましょう(適当な文ですいません).ここで IDにコメントの “–"を入れると,

SELECT * FROM hoge WHERE id="admin" -- AND password =fuga

ってなるわけですから後ろの方全部無視なんですよね 参考

これは管理者としては阻止しなきゃいけない案件ですねー(NOSQLについても書こうと思ったけどやめた)

htpassword

でたBasic認証のやつ.ここにいろいろ書かれてますよーってやつですね.参考ここで力尽きたので…….

Serverless Frameworkと出会った

最近全然更新してないですね(東京から帰ってきてから更新してないじゃんということに書き出す前に気づいた。)言い訳はしませんが、個人的にかなり大きなことがあったのでなんかもう書く気にすらならなかった(ネタもなかった)。

じゃあ今日はServerless Frameworkの話していきたいと思います。AWSもからむのでLambdaのお話もします。ただホント説明を受けたくらいなのでいろいろなサイトを見ながら書いてます。

Serverless Frameworkとは

一言で言うとサーバレスでいろんなことができる(そのまま)ってイメージですかね。ちまたじゃ注目を浴びてるみたいですね。
公式サイト
github

そもそもServerlessとは

最初聞いたときは"すっげーサーバいらねえんだ なんかブロックチェーンみたいやな"(なおブロックチェーンもよくわかってない)って思ったんですけどんなわけないですよね。 んで引用[1]に書いてあった、"Why The Future Of Software And Apps Is Serverless"のそもそもServerlessとはなんぞねと言うところだけ抜き出してきました。

Thinking Serverless

The phrase “serverless” doesn’t mean servers are no longer involved. It simply means that developers no longer have to think that much about them. Computing resources get used as services without having to manage around physical capacities or limits. Service providers increasingly take on the responsibility of managing servers, data stores and other infrastructure resources. Developers could set up their own open source solutions, but that means they have to manage the servers and the queues and the loads.

Multiply this effort by the number services an app might consume (task processing, message queues, SMTP servers, payment services), hosted services quickly start to look like the future of computing.

エンジニアがサーバーの事考えなくてもええよーって意味ですね。AWSGoogle Platform,Azureのこと知ってたのになんでわかんなかったんかなw
今まで発生していたインフラ側のトラブルがほぼ無くなるわけですね。(AWSはS3がこの間トラブってましたがそれでもかなり高い稼働率)しかも使用する会社としてはそこの責任は自社にはないので"治るまでまってくださいーい"で終わるわけですね。そりゃあ流行るわな

それを踏まえて何ができるの?何が動いてるの?

こっから先はAWSのお話ですすめて行きます。(僕自身がAzureとかいじる予定はないので) あとわかりやすいサイトを[3]においておきますね。先輩から聞いたお話や調べたもののまとめですけどわかりやすくまとめるとなんらかのトリガーによってAPI Gatewayを経由してLambda Functionを呼び出し処理を行うって感じになるんですかね(用語の説明は下にしますね。)この説明はServerlessFrameworkを使ってAWSで実装するときのイメージになりますね。我ながらすっごい抽象的なことしか言えないですね(これから勉強するんだからそりゃそう)まあ処理によってはAPI Gatewayを通らないこともあるんですかね(DBの更新をトリガーにするとかしたらそうなりそう)できることはLambda Functionでできることはなんでもできるって感じですかね?

API Gateway

調べてたらAPIの意味がそもそもちゃんとわかってないなってわかったので下に書いた。 じゃあ気を取り直して行きましょう。引用[4]がわかりやすかったです。APIの管理システムなんですね。さあそれを聞いたらなおさら頭は混乱してきた。"なんでAPIを管理するシステムを通る必要があるの?参照でもしてるのかな あとこの感じだとさっきのAPI Gatewayを通らないものがあるってのも怪しい感じですね"(今の脳内)

API

http://it-trend.jp/words/api 規約、関数の集合のことなんですね。

Lambda

任意のトリガーに対して任意のコードを実行してくれるサーバくらいの認識でいいのかな。 知識も語彙力もないのでこれ以上のことがかけないです

REST API

でてきてないけど(自分用) ここ

これに関しては1年間くらいかけてやっていくことになるのでゆっくり成長していきます。

追記 Socket Proxis

これ便利ですね。大学のLANに入り込むのもいちいちいろいろソフトを起動しなくていい sshの"-D"optionでポート指定してProxis設定すればいいというお話kyutechのみなさんお試しを(iscのアカウントで入り込めばいい)

引用

[1]サーバなのに?サーバがない?サーバレスアーキテクチャの使いどころ

[2]Why The Future Of Software And Apps Is Serverless

[3]サーバーレスアーキテクチャという技術分野についての簡単な調査

[4]5分でわかるAmazon API Gateway

東京旅行を終えて

Facebookでもちょこちょこチェックインしていましたが2月24日から3月1日まで東京、横浜、静岡と弾丸で行ってきました。

ScalaMatsuriを終えて

さんざんひとりでに盛り上がっていましたが「採用担当者、CTO ぶっちゃけ座談会」を聞いて自分の中でしっかり気持ちが固まりました。いい意味で決意できました。まずScalaをする前にきちんとC,Javaの勉強をしようと思いました。(まあバイトでrailsも触りますが)大学生という少し特殊な時間の中で学問をきちんと学ぶときにScalaをやるのはすこし的はずれかなという結論に至りました。(ScalaMatsuriでお話された方々はほんとうに優秀でScalaをガンガン使っていらしゃったし、学生のうちからScalaを扱ってる方を否定するわけではなく僕の生き方として)今はScalaをするんじゃなくてもっとよく使われている根本を学びたいなとおもいました。座談会でも言われいましたが今Scalaができるかどうかではなくて、技術の根っこを理解してそれを自分の中で整理し、その言語の考え方を抑えることをやりたいと思っています。本当にいい機会になりました、自分の勉強不足を感じました。

ps: 司会の方が英語と日本語をどんどん切り替えてお話されていたのかっこいーなーってすごい思いました

新しい目標

Webapp

Javaで一つwebappを作ろうかなと思っています。2年後期で自分がいる界隈があまりに課題の管理ができていなかったこと、課題が多すぎてパンクしていたことを踏まえてそれを解決するようなアプリを開発していこうと思います。LINEで通知とか来たらうれしいな。

ksnctf

きままにCTFしようと思いました(まあ気分転換にでも)

paiza

ちゃんとプログラミングしますw

最後に

東京からの疲れがまだまだ抜けていないのでここらへでいおわりますね。