サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
おみそ汁
yoru9zine.hatenablog.com
結論 tcpdump に適切なオプションを渡す。 -B で大きい数字を指定することでカーネルバッファのサイズを増やす -n で余計な名前解決を減らすことでカーネルバッファの読み込みスピードを上げる -w で tmpfs を指定すると IO のスピードをかなり減らせるので検討してもよい 詳細 tcpdump していたがどうも集めたデータがおかしいという事があった。 こういうときは tcpdump の実行終了時に X packets dropped by kernel と出ていることがある。 tcpdump - Why would the kernel drop packets? - Unix & Linux Stack Exchange が参考になるが、どうも tcpdump にはバッファがあって、それを使い果たすと drop したということになるらしい。 具体的には tcpdump が内部
html で リンクを新しいタブ(やウィンドウ)で開かせたい場合、target="_blank" を指定するが、 この使い方には落とし穴があるらしい。 www.jitbit.com リンクを開いた先の javascript から、開いた元のページを操作できてしまうとのこと。 気になったので確認してみた。 悪用のパターン insecure.html が最初に開くページで、ここに target="_blank" なリンクがある。 このリンクを押すと new_window.html を新しいタブで開く。 この new_window.html に javascript が仕込まれており、元ページを操作されるという話。 具体的には window.opener.location="./evil.html" と実行すると、元タブは evil.html に遷移する。 実際試してみたのが ここ。 リンクを開
dockerを使っていると、コンテナ内の時間がUTCになっていてアレっとなることがよくある。 最初はわざわざdocker build時にtimezoneを設定していたが、ある時/etc/localtimeをvolume mountすればいいじゃないかと気づいた。 docker run -it --rm -v /etc/localtime:/etc/localtime:ro <image> という感じ。これでだいたい満足していたが、ふと検索していたら github.com を見かけた。 まとめるとTZ環境変数を使えということらしい。 $ docker run -it --rm ubuntu:16.04 date Thu Jan 12 13:45:25 UTC 2017 $ docker run -it -e TZ=Asia/Tokyo --rm ubuntu:16.04 date Thu J
netnsでネットワークの勉強 tl;dr netnsというlinuxのネットワーク機能を紹介する。 netnsをコマンドレベルで触ってみて、基本的なネットワークの勉強をする。 netnsとは linuxにNetwork Namespaces(netns)という仕組みがある。 Linux Namespacesと呼ばれるリソースの仮想化のための機能の一部で、名前の通りネットワークの機能を提供する。 docker等でも用いられている技術で、コンテナ毎に異なるネットワーク設定が行える部分で用いられている。 具体的にはプロセス毎に異なるIPアドレスを使って通信するといったことができるようになる。 docker使えば? dockerや各種コンテナ技術がnetnsをうまく隠してくれているのに、わざわざnetnsを直接触る必要がないと思った方。 その通りで、ここでは勉強用に使うことを想定している。 (も
Redmine in Docker redmine は便利だが、何も無い所から使える状態まで用意するのは少し手間がかかる。 どうも official の redmine docker image があるようなので簡単にできないか試してみた。 事前準備 docker のインストールは終わっているものとする。 (試した環境は ubuntu 14.04 on vagrant で公式ドキュメント通りにインストール) イメージ取得 まず必要な docker image を持ってくる。今日の時点で最新を選んだ。 docker pull postgres:9.5.0 docker pull redmine:3.0.7 データ保存場所の作成 次にデータ保存用のディレクトリを予め作成。 *1 mkdir -p ~/redmine-data/redmine mkdir -p ~/redmine-data/pg
ネットワークでは避けて通れない NAT。 Network Address Translation を略したもので、文字通りアドレスの変換を行う。 NAT は SNAT/DNAT に分類され、 送信元アドレスを変換するのが SNAT。 送信先アドレスを変換するのが DNAT。 この技術が解決しようとしているのは プライベートアドレスとグローバルアドレスは直接通信できない という問題。(実際はこの限りではないが、大体の場合はこれ) グローバルアドレスは限りがあるので、普通はプライベートアドレスを使う。 プライベートアドレスを使っているとグローバルアドレスと通信できない。 それでは困るのでプライベートネットワークの代表者にグローバルアドレスを付与する。 この代表者が NAT 機能を提供する。 この例で表現すると、 SNAT はプライベートアドレスから発生した通信をグローバルアドレスに届ける技術。
golang には sync.Pool というライブラリがある。 同じ処理を何度も実行 都度メモリ割り当てが発生 するような場合にサクッとパフォーマンスを向上させられるので紹介する。 メモリ割り当ての処理と、メモリ解放のために動く gc の実行時間を削ることでパフォーマンスを上げることができる。 話を単純にするために以下の仕様で関数を作るとする。 入力: string 出力: 入力を n 回繰り返し、[]byte として返す n はグローバル変数、適当に調整する バージョン1 func func1(in string) (out []byte) { buf := &bytes.Buffer{} for i := 0; i < n; i++ { buf.WriteString(in) } out = buf.Bytes() return } bytes.Buffer を作って string
このページを最初にブックマークしてみませんか?
『yoru9zine.hatenablog.com』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く