水底

ScalaとかC#とかネットワークとか

散々既出で今更だけどmacOSデフォルトのgrepがめちゃ遅だった

(あまりに内容が雑なのでポエム扱いで)

そこそこデカいファイルを扱っていたら気になったのでメモ. 一時期 grepが10倍速くなった と話題になったりしてましたが自分のユースケースでは最大2,000倍程度の速度差がありました (記事の内容とは関係ない部分のようですが).

TL;DR;

速いし多機能なGNUgrep使おう

続きを読む

`docker exec -it` を便利にしたかった

Dockerコンテナ弄りにはみんな大好き docker exec -it (まさかSSH使ってませんよね…?). docker exec -it $container_name $shell_name とすることでコンテナ内に入ってインタラクティブシェルを使うことが出来ます.

ただし基本的にコンテナ内には素のシェル環境しかありません (ツライ). コンテナ内で作業をするとは言えあくまでコンテナは使い捨て. いちいちコンテナ内にzsh, vimやtmuxの自前環境を用意するのは大変で環境も汚してしまうという問題がありました.

…というわけでローカルに用意しておいた設定をコンテナ内に自動的に持っていく docker exec -it 用のラッパーが出来上がりました.

github.com

使い方やサンプルはリポジトリを参照してください. 大体はSSHでリモートに設定ファイルを持っていくというコンセプトの sshrc に倣っています.

エイリアスを無視してコマンドのフルパスを取得するだけ

例えば .bashrc.zshrcls の利便性を上げるために alias ls='ls -G' といったようにエイリアスを張っているとします. この状態で ls コマンドのフルパスを取得するため which lstype ls を実行するとフルパスではなく ls: aliased to ls -G のようなエイリアス情報が出てきててしまいます. which -a lstype -a ls のようにオプションを渡すことで ls: aliased to ls -G; /bin/lsエイリアス・フルパス全ての情報を取得できますがフルパスのみ欲しい時にはちょっとばかし不便です.

解決策

$SHELL -c 'which ls'

もっといい方法がありそうだけど見当たらなかった (完)

ISUCON7本戦は惨敗でした

最後の学生枠チャンスが…

問題解説は公式に譲るとして次回に向けて覚えていることをメモ. 特に有益な情報はないです.

続きを読む

欲しいもの

見かけたら教えてください

ノートパソコン

MUST

  • 13-15inchi
  • メモリ16GB
  • CPU: HQ以上
  • ペン入力 (w/ 筆圧)
  • SSD
  • 2K以上の解像度

SHOULD

  • 〜2.0kg
  • メモリ32GB
  • hot pluggable eGPU
  • JP配列 or 短スペースキー・最下段キー多めの配列
  • トラックポイント
  • 生体認証
  • LTE

タブレット

MUST

  • 7-9inchi
  • 2K程度の解像度
  • ペン入力 (w/o 筆圧)
  • 生体認証
  • LTE
  • 置いたときにぐらつかない

SHOULD

  • ペン入力 (w/ 筆圧)
  • 背面が滑りにくい素材
  • Android (要検討)

キーボード

MUST

  • テンキーレスコンパクト
  • JP配列 or 短スペースキー・最下段キー多めの配列
  • 赤軸or静電容量
  • トラックポイント

ノーパソは軽量化・U付きCPUが蔓延していてなかなか出てこず, タブレットiPadiOSでなければ…とか思ったり

技術書典お疲れ様でした & BOOTHでScalaTourを販売します

技術書典お疲れ様でした. 技術系個人サークル「かいていどうくつ」としてScala入門本のScala Tourを片手に参加していました. ISUCON2日目と被るわ台風来るわで大変でしたが来てくださった方ありがとうございました.

頒布していたScala Tourですが, 若干数で本のみですがBOOTHにて販売を行います. 技術書典は行けなかったけど気になる…という方は是非! なくなり次第終了で増刷は行いませんのでご了承ください.

ktdkt.booth.pm

Scalaの入門本です. ネットでは探しづらいScalaのアレコレもふんだんに掲載しています. 関数型は難しそう…? なんとScalaでは関数型に深入りせずとも関数型の恩恵だけ受けることができるんです. (以前頒布したα版からの更新が多々あります)

コンテンツ

Scalaとは

・環境構築

・基本文法

・コレクション

・Option/Either

・非同期処理

・外部ライブラリ

・ベストプラクティス

・参考リンク集

今後も「かいていどうくつ」ではScalaやその他技術系で活動を続けていく予定です. 次は夏コミか技術書典4 (あるのか?) でScalaのリファレンスになるようなものを作れたらと考えています.

「かいていどうくつ」の告知サイトはこちら (css…? 知らない子ですね)

ktdkt.sapphire.in.net

ISUCON7予選通過できた #ISUCON

isucon.net

やったぜ!

ISUCON5とISUCON6はScala界隈の方とScalaで突破しようとして一般枠で撃沈していたのですが, 今回はチーム「チーム名を考えるのが苦手すぎる」として OUCC老害組 (@spring_raining, @susisu2413) と人生最後の学生枠を初利用して最終スコア89,047で初の予選突破できました (なお一般枠のスコアを見て真顔). 開催時間が押したことにより @spring_raining の途中離脱が発生したりしましたが無事 (?) 終えることができました.

チームメンバーの2人が 💪JavaScript力の塊💪 だったので (Scalaではなく) JavaScriptです. その2人がアプリ, 私はミドル系で分担していました.

  • アプリ側: Linter/リファクタ → iconsをDBに入れないようにする → ひたすらredisにぶっこむ → 細かいチューニング → ベンチマークガチャ
    (アプリ側はそのうち2人がまとめてくれそう)
  • ミドル側: いろいろ初期化 → いろいろプロファイリング → iconsをDBから取り出す → いろいろ事前gz化 → mysql/nginx/redisの設定を地道に弄る → ベンチマークガチャ

大したことしてないですね, はい. 終始リーダーボードの下の方で見え隠れするくらいのスコアでした. リーダーボード凍結辺りからはCPUが100%に張り付きiconsがタイムアウト連発して全くスコアが伸びませんでした…圧倒的力不足…

よくなかったこと

  • 色々勘違いしてサーバ1台で頑張ってしまった (アホ)
  • キャッシュに関する圧倒的知識・経験不足 (すまん)
  • レギュレーションをちゃんと読まなかった (レギュレーションにヒントが多かった)
  • リハーサルなし (pixiv社内ISUCONがそっくりだったらしい…終了後に知った…)

よかったこと

  • 予選突破 (めでたい)
  • 全員集まって参加 (実は初めて)
  • Webアプリの知見が結構増えた (普段, 特に最近はWebアプリを触る機会がないので. つまり ISUCON最大の目的を達成)

忙しくて (言い訳) 予選は完全に準備不足というか初期化スクリプトの準備くらいしかできていなかったので本戦は足を引っ張らないように頑張りまふ. それと本戦終了後は結果がどうであれもうちょっとまともなエントリ書きます.

チームメンバーのエントリをぺたり

susisu.hatenablog.com

spring-raining.hatenablog.com


最後にISUCON7予選で最高のスクリーンショットを共有しておきたいと思います.

f:id:amaya382:20171023000850p:plain

(デバッグ風景)