うなすけとあれこれ

2016年09月21日

高専DJ部 #9 でした

書きました

セトリ

  1. Playing With Fire - kors k
  2. Second Heaven - Ryu☆
  3. GOLD RUSH - DJ YOSHITAKA-G Feat. Michael A La Mode
  4. FIRE FIRE - StripE
  5. Time to Air - 青龍
  6. MENDES - Humanoid
  7. Go Beyond!! - Ryu☆ Vs. Sota
  8. smooooch・∀・ - kors k
  9. 3y3s - 青龍
  10. GOLDEN CROSS - dj REMO-CON VS dj TAKA
  11. 突撃! ガラスのニーソ姫! & KAMAITACHI (mashup) - 山本椛 & DJ TECHNORCH Feat. GUHROOVY
  12. 405nm(Ryu☆mix) - Another Infinity
  13. 532nm - Ryu☆
  14. VEGA - REDALiCE
  15. 廿 - DJ TECHNORCH
  16. Prophet Vibe - Sota Fujimori Feat. Calin
  17. GAIA - 猫叉L.E.D.Master+
  18. Valanga - DJ Totto
  19. ドーパミン - U1 overground
  20. Cleopatrysm - ピラミッ℃

選曲について

BEMANIで行くって決めたのでこうなりました。終わった後みんなからからよかったって言われてよかったです。

当日早朝に試しにやってみたところ3分ほど足りなくなったのであわてて曲を追加したら、当初最後に流そうと思っていたのが時間がなくて流せませんでした。もっと前々から準備しよう。

2016年09月19日

ISUCON予選スコア0

isucon競技中に座っていた椅子

行動ログ(面倒なので常体)

前日(2016-09-16)

当日(2016-09-17)

やったこと(順不同)

僕らが高速化したのはRuby実装です。

slow_query_logの有効化

まずは定石、SQLのslow_queryが何なのかの調査をはじめました。

しかし、何度mysqlのconfigファイルにその設定を有効化した記述をしても、systemctl restart mysql.serviceすると無効状態に戻ってしまうので、 なんだかわからないままrestartは諦めました。(そもそもrestartするのも正しかったのか……?)

結果として、stars テーブルのkeywordentryテーブルのkeyworduserテーブルのnameにindexを張った他に、content_length(keyword)としていた部分を keyword_lengthに値を格納してそこを見に行くようにアプリを変更したりするなどを行いました。

アプリの一元化

isudaisutarの2つのsinatra appが相互に通信を行っており、この部分がボトルネックになるのではないかと考えました。

そこで2つのappとdbをまとめてしまいましたが、効果の程はわかりません。(この改善で一瞬だけスコアが0以上を返しました。たしか160から180くらいでした。)

静的ファイルをnginxから配信する

public以下の静的なファイル群はnginxが返すように変更しました。

keywordのanchor link化における正規表現での置換で用いるハッシュ関数を高速なものに置き換え

存在するkeywordはそのkeywordのurlへと置き換える実装がありました。その中で、一度keywordをSHA-1で置き換える部分があったのですが、それをZlib.crc32に置き換えて高速化を狙いました。

ただ、おそらくはアルゴリズムの改変もしくは結果のキャッシュ化を行えたほうが良かったのではないかと思います。

AppArmorの無効化

完全に気休めでした。

RACK_ENVをdeploymentに

unicornはRACK_ENVをdeploymentかdevelopment以外は無視するので、アクセスログを見るためにproductionになっていたのをdeploymentにしました(thx kirikiriyamama!)

訂正(2016-09-20)

RACK_ENVとsinatraの環境は分離させることができて、sinatraのenvironmentをproductionにすることで高速化できたようです。ただproductionのままだとunicornでログを見ることができないので、いずれにせよこの値はdeploymentにし、sinatraのenvironmentをproductionにすべきでした。

スパム判定の呼び出しを少なくした

descriptionとkeywordそれぞれでスパム判定している部分を、それらを結合した文字列に対してスパム判定を行うようにしました。

不要なエンドポイントの削除

/registerへはGETもPOSTもされていないので、エンドポイントごと削除しました。これやる意味あった?

unix domain socketを使用する

unicornとnginxとの通信にunix domain socketを使用するようにしました。

またそれに限らずnginxまわりのチューニングは全部kirikiriyamamaさんに任せたので、これ以上のことをやってたかもしれません。

パスワードの平文保存

ユーザー名とパスワードは同一のものが使用されているので、パスワードの暗号化処理をやめて平文で保存するようにしました。

/loginの静的ページ化

/loginのGETは完全に静的ページを返せるので、そのようにしました。

反省

とにかく、スコアが0のまま放置していたのが一番の反省かと思います。どのような改善を試行しても、それによって性能が良化したのか悪化したのかが判断できないからです。

競技中間、確か14時頃からはずっと/login/star/keywordへのPOSTがタイムアウトする原因を探っていました。アクセスログを見る限り、499が返っているのですが、手元ではmsec単位でresponseが返ってくるので本当に謎でした。それらのPOST requestは終了後に/へリダイレクトするのですが、この/へのアクセスが重いのでタイムアウトするのではないかと予測もしたのですが、それでは「POSTがタイムアウトする」というベンチマーカーのメッセージへの答えにはなっておらず、本当にうんうん唸ってそのまま終わってしまいました。

次回も参加したい!!!!!!!!

commit log

コミットログ

2016年08月25日

静的Webサイトのつくりかた その3

ドメイン入力

つくりかた記事リスト

ドメインを取る

今回は、webサイトを公開するためのドメインを、お名前.comで取得します。

ドメインとは

インターネット上で接続することのできるコンピューターには、IPアドレスというものが割り当てられています。例えばこのブログ、blog.unasuke.comを配信しているサーバーには133.130.125.80というIPアドレスが割り当てられています。(記事公開時点)

しかし、このブログを読むために、いちいちIPアドレスを入力するのは手間ですし、そもそもIPアドレスはそう簡単に覚えられるものではありません。

そこで、ドメインというものを取得し、IPアドレスと紐つけることによって、blog.unasuke.comでこのブログにアクセスできるようになります。

ちなみにIPアドレスの取得にもドメインの取得にもお金がかかります。クレジットカードがあると便利です。 この記事ではドメインをお名前.comで、サーバーをConoHaで取得します。どちらのサービスもクレジットカード以外にコンビニ支払いや銀行口座決済に対応しています。

お名前.comでドメインを探す

(ここから先の画像は、記事公開時点のもので、将来的に変更されるおそれがあります)

まずはお名前.comで、欲しいドメインを入力しましょう。

ドメイン入力

いくつか空いているものがあるので、欲しい分選択します。

ドメイン選択

「お申し込みへ進む」と、このような画面になります。今回はドメインだけ取得するので、レンタルサーバー、officeのチェックは外します。

オプション選択

Whois情報公開代行とは何でしょうか。Whoisというのは、ドメインの所有者情報のことです。Whoisで、そのドメインの所有者が誰なのか、所有者への連絡先は何かなどの情報を取得することができます。

たとえばこれは、政府広報オンラインのドメインに対してWhois情報を取得した結果です。

$ whois gov-online.go.jp
[ JPRS database provides information on network administration. Its use is    ]
[ restricted to network administration purposes. For further information,     ]
[ use 'whois -h whois.jprs.jp help'. To suppress Japanese output, add'/e'     ]
[ at the end of command, e.g. 'whois -h whois.jprs.jp xxx/e'.                 ]

Domain Information: [ドメイン情報]
a. [ドメイン名]                 GOV-ONLINE.GO.JP
e. [そしきめい]                 ないかくふせいふこうほうしつ
f. [組織名]                     内閣府政府広報室
g. [Organization]               Cabinet Office
k. [組織種別]                   政府機関
l. [Organization Type]          Government
m. [登録担当者]                 HI3920JP
n. [技術連絡担当者]             NH2778JP
p. [ネームサーバ]               ns02.gov-online.go.jp
p. [ネームサーバ]               ns00.vips.ne.jp
p. [ネームサーバ]               ns01.vips.ne.jp
s. [署名鍵]
[状態]                          Connected (2016/12/31)
[登録年月日]                    2001/12/19
[接続年月日]                    2001/12/20
[最終更新]                      2016/01/01 01:02:15 (JST)

このWhois情報には、ドメイン登録者の名前や住所を含める必要があります。お名前.comでは、これらの個人情報のかわりにGMOインターネット株式会社(お名前.comの運営会社)の情報を登録してくれるサービスを提供しているので、それを利用したい場合はチェックを入れておきます。

この後は、お名前.comの会員登録を済ませているのであればログインしてドメイン取得、そうでなければ新規会員登録をする必要があります。

お名前.com 新規会員登録

購入確認

購入しました。ドメインを購入するとメールが一気に何通も来ます。それらの内容をよく読み、必要な手続きを済ませましょう。(メールアドレスの有効性確認などがあるかもしれません。)

購入完了

さて、これでドメインの取得は完了しました。ちょっと長くなったのでここで終わりにして、次はサーバーを契約してsshするところまでやりたいと思います。

参考

2016年08月11日

PCを新しく組みました

勢揃い

構成

部品 製品名
CPU Intel Core i5-6500
CPUクーラー CRYORIG M9i
メモリ Corsair 32GB (2x16GB) DDR4 DRAM 2666MHz(CMK32GX4M2A2666C16)
マザーボード ASUS Z170-A
ビデオカード ASUS ROG STRIX-GTX1080-O8G-GAMING
電源 Corsair Modular CS650M — 650 Watt
SSD Sandisk Z410 SSD 240GB
HDD Westan Digital Blue 2TB WD20EZRZ
ケース Cooler Master: Silencio 652S
ディスプレイ Dell 24型ウルトラHD 4Kモニタ – P2415Q
OS Windows 10 Pro

構成でお分かりかと思いますが、貯金が消失しました。

うちがわ

2016年07月24日

高専DJ部 #8 でした

それっぽい画像

セトリ

  1. Insane Techniques - kors k
  2. Gimme a Big Beat - kors k
  3. Mother Ship (Camellia’s “KABOOOOOOOM!!” Remix) - かめりあ
  4. PLANET//SHAPER - かめりあ
  5. Magnolia - Guriri
  6. Hero (Teminite Remix) - Pegboard Nerds feat. Elizaveta
  7. Weaponize - Pegboard Nerds & MIU
  8. Rave After Rave (Original Mix) - W&W
  9. ベィスドロップ・フリークス - かめりあ Feat. ななひら
  10. Saiko - Aero Chord
  11. Kill EVERYBODY - Skrillex
  12. Centipede - KNIFE PARTY
  13. Bonfire(Camellia’s ElectroHouse Bootleg) - かめりあ
  14. Kyoto - Skrillex Feat. Sirah
  15. Snowblind (feat. Tasha Baxter) - Au5
  16. Blossom - Au5
  17. Keep On Rocking - F.O.O.L

選曲について

最初3曲で「Let’s start」→「Gimme a big beat」→「いきまーす」がしたかったのでこうなりました。後はSaikoの後にKill EVERYBODYで殺していく感じにするのも決めてました。あとは流れですね。

ただもうちょっと治安できたのではないかと思います。

身体

2016年07月16日

Dentoo.LT #14とfukuitech 06でunasuke.comについて話しました

fukuitech 6th

ようやく

2016年6月12日に開催されたDentoo.LT #14と2016年7月9日に開催されたfukuitech 06で、unasuke.comについて話してきました。

また、fukuitechでは例によって配信を担当したので、その録画動画の切り出し、youtubeへのアップロードも済ませました。

資料

内容

話した内容は、middlemanのバージョンが4系に上がったことによるsprocketsの廃止、それに伴うCSSのコンパイルについてどのように行ったか、使用VPSサービスの選定、サーバーソフトウェアの選定などです。fukuitechでは、それに加えてDockerの基礎的なコマンドの実行などをデモしました。

発表した内容について更に詳しく説明した記事を書こう書こうと思っているのですが、下書きのなかに書きかけのままになっていて手を付けられていないのが現状です。やっていきたい。

2016年06月25日

Dockercon 2016 in Seattleに参加した

Dockercon 階段

世界を股にかける男なので、Dockercon 2016に参加してきました。

日記

1日目 日本発、Seattle着

日本を出たのは16時で、Seattleに着くのが9時、その間のフライト時間は8時間で、単純計算すると24時になった瞬間に朝9時まで飛ばされるという感じです。

機内ではwifiが使えるとのことでしたが、APにはつながるもののインターネットには繋がらなくて呼吸ができなかったです。 機内食は美味しかったです。が、エコノミークラスの狭い空間でナイフとフォーク使わせるのは本当につらい。

到着してからは、ようこそ時差という感じで、さらに2日ほど前からお腹の調子がよろしくなく、シアトルの寒さに追い打ちをかけられたのもあり、1日目はずっとホテルで寝ていました。

この日のTシャツはRubyKaigi 2015のノベルティであるsushi tshirtでした。

2日目 Warby Parkerで買い物

spice lifeがショールームを始めるきっかけのひとつが、Warby Parkerというアメリカのメガネブランドです。

そいうったこともあり、Warby Parkerには行ってみたかったのです。

さて交通手段ですが、事前に買っていた「地球の熱き方」は全く参考になりませんでした。

シアトルタコマ空港からシアトル市内への行き方 | Developers.IO

この記事に助けられました。

電車とバスを乗り継いで、Warby Parkerに到着。 この時点ではまだ開店していなかったで、starbucksに寄って暇をつぶしました。ほっとコーヒを頼んだら殺しにかかってくるのかというくらい熱くてビビりました。なんなら夜までずっと熱かったです。

starbucks

開店したので、メガネを買いました。まだ度は入ってないです。

warby parker

Verne Eyeglasses in Jet Black for Men | Warby Parker

glasses

決済は店員さんの持っているiPad miniで行えるのですが、クレジットカードのサインが、指を離すまで線が描かれない感じでとにかく難しかったです。 なんか謝られました。どう作ったらあんな使いにくくなるんでしょう。

この日のTシャツはLGTM yamama(TMIX)でした。

3日目 Dockercon first day

コーヒーのせいでほとんど眠らないまま11時頃に会場入りしたら、受付が16時からなのを見落としていたので一旦ホテルに戻って寝ました。計画性のなさ。

1日目はExpo(企業のブースがいっぱいある)くらいしかなく、とにかくTシャツとステッカーを貰いまくった感じです。

この日のTシャツはcontainer mermaid(TMIX)でした。

参加セッション

4日目 Dockercon second day

After partyでNTT、docomo、MTI、Yahoo Japanの人と話しましたが、日本語なのに何を言っているのか分からなくてアーでした。

この日のTシャツはvivaldi(STEERS)でした。

参加セッション

5日目 Dockercon final day

終わったあと、Googleの人に勧められた公園に行きました。

この日のTシャツはTMIX 404 not found(TMIX)でした。

参加セッション

6日目 Seattle発、日本着

空港で現地のおじさまに話しかけられ、写真を撮ってくれと頼まれました。そのおじさまと一緒に居たのが帰国する日本人で、住む場所も近いという偶然があったりしました。

機内のwifiはやっぱりインターネットまで出られませんでした。なんなんだ。

この日のTシャツはpplog fix hiwai(STEERS)でした

感想

Seattle

寒かったです。

ホテルですが、開催1ヶ月を切ってから申し込んだのですが、その割に安く、なのでそれなりの感じがしました。 お湯をわかすポットが欲しかったのと、もっとシャワーの水量が欲しかったです。

20時頃まで日が昇っていて明るく、緯度の高さを感じました。

交通はわかってしまえば楽です。道も名前が付いているので最高に便利という感じです。日本より楽かもですね。

インターネット

空港で買ったsimはUltra Mobileというところのもので、通信網はT-mobileのものを使用していました。4G回線も特に何事も無く使えて良かったです。

プリペイドsim

ちなみに端末はXperia Z5の国際版です。

Dockercon 2016

ウオー複数コンテナ使うイイカンジアプリケーション作りたくなった〜〜という感じです。 カンファレンスに参加するとモチベーションが上がりますね。

社でもドカドカやっていきたい所存です。

General session会場

2016年06月16日

開発環境 2016年6月時点

termのスクショ

会社ブログに書きました

spicelifeのエンジニアは、どんな開発環境で仕事をしているの? - スパイスな人生を書きました。

自分のことについてはあまり深く突っ込んで書いていないので、ここで詳細を書くことにします。

これ以降はOS Xについて主に書いていきます。なぜならwindowsを持っていないからです。linuxは常用する暇がなくなったからです。

shell

iTerm2の上でzshが動き、その上でtmuxを起動してワイワイやっています。colorschemeはsolarizedです。

登録しているaliasesは、現時点では以下のとおりです。

dotfiles/aliases.zsh at 285a411b96 · unasuke/dotfiles

#alias
#ls
alias la='ls -alGh'
alias ll='ls -lGh'

#git
alias g='git'
compdef g=git

#peco
#cd repository
alias e='cd $(ghq list -p | peco)'

#bundler
alias bi='bundle install'
alias be='bundle exec'

#vim
alias vi='vim'

editor

主にvimを使っていますが、ごくたまにatomを起動し、ちょちょっとしたメモが欲しい時はCotEditorを使います。

vim

vimのプラグイン管理はShougo/neobundle.vimShougo/dein.vimに乗り換えました。

よく使うプラグインはscrooloose/nerdtreeで、space+eで開閉するようにしています。 あと、ctrlpvim/ctrlp.vimがインストールされていることをよく忘れます。

他によく使うキーバインドは、space+t:tabnewで、space+jspace+lでタブの移動をしています。

ウィンドウの分割は、vimで行うよりはtmuxで分割することにしています。理由は特に無いです。

atom

vim-modeで使っています。特筆することはないです。有名ドコロのpackageは一通り入っていると思います。

git

抜粋してこんな感じです。

dotfiles/.gitconfig at 285a411b96 · unasuke/dotfiles

[color]
  ui = true
[push]
  default = simple
[core]
  excludesfile = ~/.gitignore_global
  precomposeunicode = true
  quotepath = false
[ghq]
  root = ~/src
[alias]
  s = status
  sh = stash
  shu = stash -u
  shp = stash pop
  c = commit -v
  l = log --oneline --decorate --color --graph
  l = log --oneline --decorate --color --graph --all
  pl = pull
  ps = push
  ch = checkout
  chb = checkout -b
  ad = add
  d = diff
  dc = diff --cached
  fe = fetch --prune
  me = merge
  miku = !git stash 1> /dev/null && echo 'もうしょうがないにゃぁ、この変更はみくが覚えておくにゃ!'
  g = grep
  branches = branch -a
  tags = tag
  stashes = stash list
  unstage = reset -q HEAD --
  discard = checkout --
  uncommit = reset --mixed HEAD~
  amend = commit --amend -v
[rebase]
  autostash = true
[stash]
  showPatch = true
[diff]
  algorithm = patience
  compactionHeuristic = true
[pager]
  log = diff-highlight | less
  show = diff-highlight | less
  diff = diff-highlight | less
[interactive]
  diffFilter = diff-highlight

よく使うaliasはsshcchadですね。最近、人間らしいGitのエイリアス | プログラミング | POSTDからいくつか拝借しました。

ruby

rbenv/rbenv-default-gemsを入れて、よく使うrubygemsはrubyをインストールした時に同時に入るよう設定しています。 あと、amatsuda/gem-srcを使って、rubygemsのソースを同時にgit cloneするようにしています。

ghq

ソースコードの管理はmotemen/ghqで行っています。上のgem-srcもghqを使用して、いい感じのディレクトリにcloneするよう設定しています。

ディレクトリの移動はpeco/pecoによる絞込で行っています。

物理環境 at 会社

Amazon.co.jp: サンワサプライ 机上に設置可能便利タップ 3個口 集中スイッチ仕様 TAP-B25: パソコン・周辺機器

これを机に設置すると無限に便利です。

卓上コンセント

macのACアダプタの巻き方

macのACアダプタには、「どうぞここにコードを巻き付けてください」と言わんばかりの部位があるけれど、あそこに巻きつけているとコードの癖がひどいし、断線もしやすくなると思うのです。(主観)

なので、僕はこう巻きます。

ACアダプタとコード

2016年05月29日

unasuke.comができました。

unauske.com

できました

unasuke.com

How does it work?

使っている技術は、

くらいです。

いい加減静的Webサイトの作り方の続き書きます……

2016年05月04日

kosen10's LT #4 in OSAKA でカップル専用アプリの話をした

kosen10's in OSAKAロゴ

どうも、blogでは文章を書くうなすけです。ところで、kosen10’s LT #4 in OSAKAに参加してきました。

当日発表資料

カップル専用アプリ紹介 from うなすけ

感想

ルーターの話だとかlogの読み方だとか児童教育の話とかセクマイの話とかの中にぶっこんでごめんなさいという感じの発表をしてきました。ごめんなさい。ごめんなさいっていうか、やっていきましょう。

なんとこれまで皆勤賞らしいので、このまま流れに乗って行きたい所存です。

次回開催を弊社で、というのは密かに狙っているので、各位よろしくお願いします。

まじめに

どうやらkosen10'sのグループの中では僕は結構意識が低空飛行で、すごい発表の後でも「おお、俺もいっちょやったるか」とはあまりならず、上のような発表ばかりになる傾向があります。

それでもこれまでの計4回に継続して参加して来れたのは、やはりkosen10'sのメンバーに会いたいという気持ちと、みんなの気持ち、テンション、やる気に乗せられているところが大きいのかもしれません。非常にありがたいです。

そういう意味で、僕がこの集まりに対して貢献できることといえば、今は開催場所のあてがある、ということくらいしかないので、「なんとしても」という位の気持ちで次回開催を弊社でできるように交渉していきたいのです。

次回がいつになるかはまだ決定していませんが、その時はよろしくお願いします。その時こそなにかいい話をしたいと思います。

古い投稿