protocol buffers, gRPC周りの整理

protocol buffers, gRPC周りの整理 この記事に書くこと 書くこと gRPCの簡単な説明 protocol buffersの簡単な説明 上記のサンプルコード(公式ドキュメントとほとんど同じ) 最初にざっくりと protocol buffersは読み書きしやすいIDL(XMLみたいなもの) gRPCは…

rails開発3週間で学んだことなど

rails開発を始めて早いものでもう3週間も経った。 最初の開発も一段落しつつあるので何かメモを残しておこうかなと。 rails以外でも学んだことは多いのでそれも含めてのメモ。 コードリーディング編 使っているライブラリやモジュールを全てgrepで調べること…

プロを目指す人のためのRuby入門を読んだ

10月から転職してRubyも書く人になったので、プロを目指す人のためのRuby入門を読んでみた。 この流れで勉強すればよかったな、っていう振り返りも最後に合わせて記載。 この本をやる前の状態 Ruby未経験からRubyとGoの会社に転職(一部Rust、C++、Pythonも動…

python3でプロコンのためのデータ構造とアルゴリズム

プログラミングコンテスト攻略のためのアルゴリズムとデータ構造の基礎編までを終えた。 アリ本が有名だが、こちらの方が評判がよくまとまっていると感じた。 新しい言語でやりたかったというのもあって、python3で書いている。 githubにコードと簡単なコメ…

ハノイの塔を実装する

ハノイの塔についてこちら 前提 3つの杭を3つの配列(orig, tmp, to)で表現する 各配列をスタックとみなし行える操作はpushとpopのみ 円盤1つを配列内のintとして表現。大きな円盤は大きな数字で 例えば、3段のハノイの塔は[3,2,1]といった形で表現する 目標 …

goのチャネルの簡単なまとめ

Goならわかるシステムプログラミングを読んで。 概要 キュー構造である ただしランダムアクセスはできず、投入と取り出しのみ行うことができる 並列処理されても正しくデータを受け渡す同期機構である goroutine間での情報共有としての利用が推奨されている …

ブラウザアクセスでファイルをダウンロードさせる方法

やり方 HTTPレスポンスヘッダーにContent-Disposition: attachmentをセットする。 デフォルトでは、Content-Disposition: inlineとなっており、Webページとして表示される。 ちなみにdispositionの意味は、何かの置き方や配置の仕方、という意味。 The way i…

depを触ってみたよ

the "official experiment" dependency management tool for the Go languageというdepを触ってみた。 これがgoのライブラリ管理ツールでは公式になっていく模様。 公式ドキュメントを見ながらやってみる。 installation macの場合、crewで入る。 $ brew ins…

CentOS6にscreen-4.6.2をインストールする

ソースを取ってくる このサイトから、screen-4.6.2.tar.gzのリンク先をコピーして/usr/local/src/下にダウンロードする。 $ cd /usr/local/src/ $ sudo wget https://ftp.gnu.org/gnu/screen/screen-4.6.2.tar.gz インストール まずは解凍 $ sudo tar -zxvf …

実践ハイパフォーマンスMySQLメモ

はじめに 実践ハイパフォーマンスMySQLを読む中で、知らなかった単語や気になったことのメモ この書籍では5.5について書かれているが、最新は5.7なので異なる点がいくつかあるのだろうと懸念はある。 とはいえ、根本的な仕組みはそうそう変わるものではない…

DockerとかCI試す用のアプリ作ったよ

Dockerで何かアウトプットをしておきたかったのと、 CircleCIを使ってみたかったので簡単な、本当に簡単なアプリケーションを作った。 githubに置いておいた。 使い方はリンク内のINSTALLATION AND LAUNCHを参照のこと。 このアプリケーションでCIを試す CI…

Athenaで元データのカラム数とテーブル定義が一致しない時どのような挙動になるか

概要 ある日のデータからカラムが追加されることになった。 その時、Athenaではどのようなデータが表示されることになるのだろうか テスト準備 csvファイルを2つ作成(Athenaに対応しているファイル形式なら何でもよい) まずは下記カラムのファイルをここで作…

AWS 認定ソリューションアーキテクトに合格するまで

AWS認定ソリューションアーキテクト – アソシエイト (2018 年 2 月リリース)を取った。 どんなことやったかとかを書いておく。 前提レベル エンジニア歴1年半 普段ちょこちょこAWSサービスに触るものの自分で環境構築することはほぼない 使ってたりちょこっ…

MySQLのEXPAINの見方

EXPLAINとは クエリオプティマイザがクエリをどのように実行するのかを解明する手段 どのインデックス使ってるのかなーとか確認する 実際に実行するとこんな感じになる mysql> EXPLAIN SELECT * FROM covering_test WHERE key1 = 1; +----+-------------+---…

アルゴリズムの計算量について

1年ちょい前に基本的なソートと探索は研修で実装したんだけど(written in Perl) その頃はなんだか分からないまま実装してた感あったので計算量もちゃんと意識やってみる それにあたって計算量の基本の確認 計算量の評価 計算量の評価は時間計算量と領域計算…

メインルートテーブルに関してすごい勘違いをしていた

背景 AWSソリューションアーキテクトの勉強も兼ねてVPCの勉強をしていて、どーしても分からないなぁとなっていた。 VPC自体にルートテーブルを設定して何に使うんだ?と。 サブネットに設定されてあるルートテーブルでええやん?と。 結論 VPCに設定したルート…

DNSとDNSレコードについて

AWSについて勉強していて、Route 53に差し掛かったところでそもそもDNSよく分かってないや、ってなったので簡単なまとめ。 Route 53独自のレコードについても触れる。 そもそもDNSサーバ 2種類あるから混同させちゃダメ DNSキャッシュサーバ PCなどから名前…

バイト列を受け取ったブラウザがDOMツリーをつくるまで

概要 ブラウザがページをレンダリングするまでにはいくつかのステップを経ている。 googleのConstructing the Object Modelを読んで、分からなかった単語などを調べながらまとめる。 CSSDOMのところは除いてとりあえずDOMツリーが作られるところまで。 バイ…

MySQLのデータ型の後にある括弧について(おまけ: charとvarchar)

整数型の場合 テーブルを作る 何文字まで入るのか、確認のためINSERTしていく mysql> CREATE TABLE tinyint_test ( `num` tinyint(1) NOT NULL ); mysql> INSERT INTO `tinyint_test` VALUES ( 1 ); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO…

URIのスキーマを省略すると?

どういうこと? こうではなく <img src="https://example.jp/index.html" /> こう書くということ <img src="//example.jp/index.html" /> どうなるの? 現在見ているサイトのプロトコルでリクエストが送られる。 httpで見ているサイトならhttpで、httpsで見ているサイトならhttpsで 短くかけて便利だけど、、、 参考リンクやGoogle HTML/CSS Styl…

UUID生成について

UUIDとは Universal Unique Identifier 汎システム的に他とは重ならない識別子 uuidgen uuidを生成するコマンドラインユーティリティ libuuid(3)ライブラリが使われている 生成されたUUIDは、いつどこで作られたUUIDとも重ならないと考えて良い 書式 uuidgen…

webpack簡単まとめ

はじめに react + echo でSPAを作るぞ、と意気込んだものの色々分からないので、ちょっとずつ進めていく。 自分のレベルはcreate-react-appでTODOアプリくらいは作ってみたけど、なんで動いているのかよく分かっていないよ、くらい node、npmはこの前簡単に…

React の Quick start の簡単なまとめ

はじめに installなど、そのまま簡単に進められたものは省く installationを見るとよい React公式ドキュメントを読み進める中で、覚えておきたいもののメモ。 github-pagesで動いていてて、コードはgithubにあるが、メモ程度に考えてもらった方が、、、 Rend…

npm install のオプションについて

最近はReact+echoでなんか作ろうプロジェクトを進めている! npm install オプション無し ex) npm intall カレントディレクトリに存在するpackage.jsonに応じて、./node_modules/ 以下にモジュールをインストールする package.jsonとは、パッケージ名や、バー…

s3の特定ディレクトリにファイルがあるか確認する

S3のバケット・ディレクトリにファイルが上がっているか、ファイルが空でないかを検知したい。 ので、検知する用のシェルスクリプトを書いた。 あまり綺麗な書き方ではないと思うのでもっといいやり方があれば知りたい。 ディレクトリの想定 特定バケット以…

mysqlで複数カラムを追加・削除したい

mysqlで同一テーブルに対して複数カラムの追加・削除する必要があるときに、 今まで複数のALTER文を発行していたけど、1クエリーで実行できるように書くようにした。 カラム追加 複数行で書くと普通にALTER文を何回か書く感じになる。 ALTER TABLE `table` A…

node.js?npm?Javascriptとどんな関係が?

npmとnode.jsとJavascriptの関係性がよく分からない。 node.js サーバーサイド用Javascript の言語処理系のこと。 サーバーサイド用Javascriptってなんやねん。 ブラウザで動くJavascript(いつもjsファイルに書いているやつ)と似てるようで実は違うJavascrip…

CentOS7にGoの最新版をインストールする

最新版のgoをインストールする流れをまとめてみた 全体の流れ $ uname -m x86_64 $ sudo su - # cd /usr/local/src # wget https://dl.google.com/go/go1.9.4.linux-amd64.tar.gz # tar -zxvf go1.9.4.linux-amd64.tar.gz # mv go /usr/local # exit $ vi ~/…

htmlファイルの上の方にいるあいつら

ブログ長らく放置していたけど、しれっと再開しますw あまり肩肘張らずちょっとした内容でもちょいちょい更新していきます。 そして基本的には丁寧語とか使わず、自分用のメモに近い形で書いていきます。 htmlファイルの先頭とかhead内にいろいろ書くと思う…

ハイパフォーマンスWebサイトを読んで

こんにちは。 寒くなってきましたね。 半袖じゃ若干きついですね、、、 仮想通貨を少し買ってみてるんですが、値段の乱高下が半端ないですね。 ビットコインの分裂があーだこーだというのを聞いても実際がよく分からないので、 近々ブロックチェーン技術を勉…