タグ

hogemのブックマーク (3,157)

  • 【Developers Summit 2020フォローアップ】グランブルーファンタジーを支えるサーバーサイドの技術

    こんにちは。サーバーサイドエンジニアの小松・大橋です。 2020年2月13日・14日に開催された「Developers Summit 2020(デブサミ2020)」において、『グランブルーファンタジーを支えるサーバーサイドの技術』と題した講演を行いました。ご参加いただいた皆様、当日は素晴らしい時を共有させていただき、ありがとうございました。 なお、この講演はWebメディア「CodeZine」でも取り上げていただきました。ご興味のある方はご参照いただければと思います。 講演資料はこちらになります。 稿では、講演でお伝えし切れなかったことや、質問を多くいただいた事項をフォローアップしていきます。 中長期的な改善の意義について 講演では、中長期的な改善の意義についてお話ししました。 我々にとって最も大切なのは、お客様に快適にプレイしていただくことです。そして、トラブルを未然に防ぐことも目的の一

    【Developers Summit 2020フォローアップ】グランブルーファンタジーを支えるサーバーサイドの技術
    hogem
    hogem 2020/03/28
  • opensslでRSA暗号と遊ぶ - ろば電子が詰まつてゐる

    opensslとRSA暗号についてちょっと調べてみようかな、と思った。 まずRSA暗号とは、 公開鍵暗号方式の実装のひとつである 2つの素数の積(ケタ数が大きい場合の素因数分解の困難さ)を利用している ってことを理屈としては理解しているけど、実際にopensslコマンドで作った鍵ファイルの中身がどうなっているのか? ということまで踏み込んだことが無かった。 というわけで、ちょっとその辺をコマンド叩きながら遊んでみることにする。 はじめに:opensslの操作について opensslコマンドは増築に増築を重ねすぎており、もはやそびえ立つ××のようである。ヤヴァいことになったレベルで機能てんこ盛りのコマンドなので、サブコマンドとして機能名を指定して使うことになる。 openssl command [ command_opts ] [ command_args ]上例の「command」には、R

    opensslでRSA暗号と遊ぶ - ろば電子が詰まつてゐる
  • CDNとの付き合い方 – cat /dev/random > /dev/null &

    最近何かと話題なCDNですが、そもそもCDNってなんだろう・・・どんなことに使えるんだろう?的なことを書いてみようと思います。 一応先に言っておくと、私はCDN業者に所属したことないのであくまでも利用者として見た時の話を書きます。 また、私の考えであり、様々なワークロードがあるなかでこれがすべてではありませんので、こんな考えもあるんだなぁぐらいに思ってもらえると助かります。 そもそもCDNってなんだろうか そもそもCDNはContent Delivery Networkの略であってCache Delivery Networkの略ではありません。 要はコンテンツをクライアントに対して高速・効率的に配信するためのネットワークです。 良くCDNといえばその成り立ちからキャッシュというイメージはありますが、重要な要素の一つではあるもののCDNの全てではありません。 さらに言えばAkamaiのInt

    hogem
    hogem 2017/07/02
  • Webサーバのベンチマークツールはh2loadが便利 - 人間とウェブの未来

    Webサーバのベンチマークをとるのが趣味になりつつあるmatsumotoryです。 Webサーバのベンチマークについては、abからはじまりwrk等を使っていたのですが、最近ではほぼh2loadを使っています。 h2loadはnghttp2というHTTP/2ライブラリのアプリケーションに含まれているツールですが、 HTTP/2(SPDYも)とHTTP/1.xに両対応している ベンチマーク側の同時スレッド数を増やせる TLS及びSNIもサポートしている 最小、最大、平均、標準偏差あたりもちゃんとでる ので、色々プロトコルを変えつつ同じベンチマークツールで、値の目安を出すにはとても重宝しています。 Nghttp2: HTTP/2 C Library - nghttp2.org 実行結果のサンプルは例えば以下、 $ h2load -c 100 -n 10000 https://localhost:

    Webサーバのベンチマークツールはh2loadが便利 - 人間とウェブの未来
    hogem
    hogem 2016/10/01
  • HAPrxoy 1.6.0 で導入された DNS の動的名前解決の検証結果 - tkuchikiの日記

    追記(2016-07-13 16:40) Changelog に書いてあるとおり(BUG/MEDIUM: dns: unbreak DNS resolver after header fix)、 動的名前解決ができないバグが修正されました。 HAProxy 1.6.6 で動的名前解決できないバグが修正されていました(Changelog にも書いていますが一応検証しました)— tkuchiki (@tkuchiki) 2016年7月13日 詳細は省きますが、記事と同様の検証を行い、動的名前解決ができることを確認しました。 追記(2016-06-24 12:34) HAProxy 1.6.5 は、DNS の動的名前解決が動作しないようです。 ご注意ください。 HAProxy 1.6.5 で動的名前解決できない問題については 1.6.4 で困っていなければそれを使って、1.6.5 がよければ

    HAPrxoy 1.6.0 で導入された DNS の動的名前解決の検証結果 - tkuchikiの日記
    hogem
    hogem 2016/03/20
    良さげ
  • シェルスクリプトの平文パスワードをセキュアにする方法 - 余白の書きなぐり

    追記: (2015/8/3) 大量のはてブが付いたので 続き を書きました。 sshを使用している人は文字列を手軽に暗号化・復号化できるという話。 このテクニックを使えば色々セキュアになるのでおすすめ。 今回はシェルスクリプト中の平文パスワードをセキュアに代替する。 平文パスワードはやめよう シェルスクリプト中でパスワードが必要になったとき、 とりあえず平文で書いてしまいがち。 #!/bin/sh PASSWORD="hoge" これをセキュアにしたい。 面倒くさいのは嫌なので、なるべく手持ちのツールで暗号化、復号化したい。 ssh用の rsa 秘密鍵と、openssl(大抵の環境に入っている)を使って改善しよう。 秘密鍵の準備 パスワードを暗号化するにあたって、秘密鍵を使用する. sshを常用している場合は ~/.ssh/id_rsa という秘密鍵が存在するだろう。 もし秘密鍵が無ければ

    シェルスクリプトの平文パスワードをセキュアにする方法 - 余白の書きなぐり
    hogem
    hogem 2015/08/01
    お手軽で良い!
  • cdの引数を絶対パスにしてコマンドヒストリに残す - ももいろテクノロジー

    cdの引数が相対パスのままコマンドヒストリに残って便利な例が思いつかないので、絶対パスでコマンドヒストリに残すようにする。 具体的には、以下のシェル関数を.bashrcに書く。 if [[ -n "$PS1" ]]; then cd() { command cd "$@" local s=$? if [[ ($s -eq 0) && (${#FUNCNAME[*]} -eq 1) ]]; then history -s cd $(printf "%q" "$PWD") fi return $s } fi いくつかの重要なポイントを以下に記す。 cdの定義を上書きしているが、このような場合中で普通にcdを呼ぶと再帰してしまうためcommand組み込みコマンドを使う。 "$@"の代わりに"$1"を使うことはできない。cdを引数なしで呼んだときホームディレクトリに移動しなくなってしまう。 cdの

    cdの引数を絶対パスにしてコマンドヒストリに残す - ももいろテクノロジー
    hogem
    hogem 2015/02/03
    だいぶ良い
  • なぜHTTPSはHTTPより速いのか

    先週、httpvshttps.com というウェブサイトが公開されました。このウェブサイトでは、HTTP と HTTPS を用いてアクセスした場合のウェブページのダウンロード完了までにかかる時間の比較ができるのですが、多くの環境で HTTPS の方が HTTP よりも高速なことに驚きの声が上がっていました。 HTTP が TCP 上で平文を送受信するのに対し、HTTPS は TCP 上で TLS (SSL) という暗号化技術を用いて通信を行います。ならば、TLS のオーバーヘッドのぶん HTTPS のほうが遅いはずだ、という予測に反する結果になったのですから、驚くのも無理はありません。 実は、この結果にはからくりがありました。 Google Chrome、Mozilla Firefox、最近のSafari注1は、Google が開発した通信プロトコル「SPDY」に対応しており、HTTPS

    なぜHTTPSはHTTPより速いのか
    hogem
    hogem 2014/12/08
  • InfratasterでNginxのルーティングのテスト書いてる: InfratasterでNginxのルーティングのテスト書いてる, , Infratasterは、ServerspecみたいにRubyのRSpecの記法でテストを書いて、(例えば)HTTPリクエスト

    [Infrataster] InfratasterでNginxのルーティングのテスト書いてるサーバーのテストはServerspecで書いているんだけど、Nginxの設定ファイルで書いているウェブサーバーのルーティングのテストをどうしようかと思っていました。自分で、簡単なツールでも書くべきかなあと。 /path/to/app でアプリケーションにプロクシーする 但しcookieがない場合は静的ファイルをサーブする /path/to/static/file で静的ファイルをNginxが直接サーブする /path/to/health/check でヘルスチェック用のレスポンスを返す、但しHTTPヘッダーを見て普通のブラウザーアクセスではForbiddenにする バーチャルドメインごとに微妙にパスとかが違う みたいなルーティングのテストは、外側からのテストなのでちょっとServerspecのスコー

    hogem
    hogem 2014/05/06
  • CentOS 6.4 で Linux Network Namespace (netns) を使う

    Linux ディストリビューションでは比較的 CentOS を使うことが多いんだけど、残念なことにバージョン 6.4 ではまだ Linux Network Namespace (netns) が使えない。 どうやら Linux カーネルと iproute2 のバージョンが足りてないらしい。 $ ip netns list Object "netns" is unknown, try "ip help". $ uname -r 2.6.32-358.14.1.el6.x86_64 $ rpm -qf `which ip` iproute-2.6.32-23.el6.x86_64 じゃあどうするかっていうと RedHat が出している OpenStack ディストリビューションの RDO を使う。 OpenStack では netns をガンガン使ってるので RDO はそれに対応するために専用

    CentOS 6.4 で Linux Network Namespace (netns) を使う
    hogem
    hogem 2014/02/01
    iproute / ip netns
  • ESXi でのVMのクローンについて(vCenterがない場合)

    ESXi上のVMをクローニング(複製)したいケースが多いと思いますが、 vCenterがないと、単純に「右クリックで[クローン作成]」といったことができません。 vCenterなし環境でVMを複製する場合、 だいたい、下記のどれかの方法となるのではないかと思います。 A. VMをOVF(OVA)形式でエクスポート→別のVMとしてインポート。 B. ESXiに直接ログイン(SSH等)して、VMの構成ファイルをコピー。 C. VMware vCenter Converter を使用する。 「A」の方法では、VMのイメージや構成ファイル(VMDKファイルやVMXファイルなど)を 一度、ESXiのデータストアの以外の場所に保存する必要があり、 そこには数GB(VMの使用している容量分)の空き容量が必要になります。 「C」の方法は、Converterをどこか(ESXiにアクセスすることができるPC

    hogem
    hogem 2014/01/28
    ありがたい
  • モチベーションを下げる罠、「アンダーマイニング効果」にご注意。 - 烏は歌う(はてなダイアリー跡地)

    久しぶりの学習心理ネタ。 ○「アンダーマイニング効果」とは アンダーマイニング効果とは、 「外発的なモチベーション」が、「内発的なモチベーション」に「負の影響」を与えること です。 これだけだと、なんのことだかさっぱりなので、喩え話を紹介すると… ある老人が、隣の空き地で、放課後に子供たちが毎日野球をするので、騒がしくて困っていました。 そこで老人は実に巧妙な計画を思いつきました。ある日、子供たちにこう言いました。 「君たちの野球を見るのがとても楽しくていつも家からみているんだよ、これからここで毎日野球をやってくれたら、100円あげよう」 遊びにきたのにお金がもらえるということで、子供たちはびっくりしましたが、その後一週間、老人は毎日100円をあげました。 翌週老人は「すまんがお金に余裕がなくなってきてね。これからは毎日50円にするけど、それでいいかね」といいました。 子供たちの一部はしぶ

    モチベーションを下げる罠、「アンダーマイニング効果」にご注意。 - 烏は歌う(はてなダイアリー跡地)
    hogem
    hogem 2014/01/24
  • Linux Network Namespace

    Linux が持つネットワーク仮想化機能の話。 kernel 2.6.24 以降でサポートされる。実行にはiprouteパッケージの 3(おそらく) 以降が必要。 Fedora16, 17、Ubuntu12.04 は標準で利用可能を確認。 RHEL6系はiprouteのバージョンが低いため利用不可。 利用可否は以下のコマンドで確認可能。 # ip netns このコマンドがエラーにならなければ、利用条件を満たせている(はず 利用方法は以下 一つのホスト内で独立したネットワーク環境を作成できる。 作成したネームスペースはホストの物理環境や、他のネームスペースの干渉を受けない。 特に1ホスト上での仮想マシンのネットワーク的な分離に利用される。 ■作成方法 # ip netns add testns01 ■ネームスペースの確認 # ip netns testns01 ■ネームスペースのネットワー

    Linux Network Namespace
    hogem
    hogem 2014/01/22
    iproute / ip netns / 参考になる
  • [記事移転済]WordPressサイトを構築するといくらかかる? 見積り勉強会で価格を出してみた | WordBench

    はじめまして。このようなやり方の勉強会では以下の理由により意味がないと思います。 ・依頼主の予算感や運用に対する具体的な数字がでていない ・依頼主とのすり合わせができていない ・案件を段階的に進める事が想定されていない 見積は依頼の背景がクリアになって初めて価格の適正が評価可能になりますので、件のようなスタンスで”典型的なWordPressサイトの見積りでも現状はまだまだ標準的な見積手法が確立されていないことが分かります”とコメントしてしまうのは「無限に広がる土地に家を建てるならこんな設計」って提案を複数並べて「いやー予算と間取りがバラつきましたね。これはまだ建築設計に標準的な工法が無いことを示しています」とコメントしてしまうことと同意で、見積金額がばらつくのは自明です。 また、金額の多寡は状況に依存しますので普遍的に評価することは難しいと思います。逆説的に言えば平均的な価格よりも多少高

    hogem
    hogem 2014/01/14
    WordPressによるサイト構築見積りのシミュレーション / おもしろい
  • CentOS 6.2 で RPS/RFS を使ってネットワークの割り込み処理を複数コアに分散してみた - blog.nomadscafe.jp

    以前(2010年)に「アプリケーションがマルチスレッドでもマルチコアCPUを活かせない件」というエントリにてCPUのコアが増えても割り込み処理が分散されないのでスケールされないと書いたけど、その後Linux KernelにRPS/RFSなる機能が追加され、割り込み処理が分散できるようになり、CentOS 6.2 でも使えるらしいので試してみました。 RPS/RFSについての紹介は VIOPS06で「RPS・RFS等最新Linux Kernel事例」と題してお話してきました http://d.hatena.ne.jp/syuu1228/20110722/1311322653 Linux内核 RPS/RFS功能详细测试分析 http://www.igigo.net/archives/204 が詳しい。2番目のはほぼ読めないけど、性能比較のグラフが分かりやすい。 今回試したサーバは、 OS: C

  • DMM inside

    アニメ初の快挙!海外アニメ賞を受賞した『スキップとローファー海外ライセンス部長&プロデューサーが語る、奮闘の舞台裏

    DMM inside
    hogem
    hogem 2014/01/14
    "RPS/RFSを使用するとソフトウェア的にNICの割り込みに使用するCPUを分散してくれます。"
  • 一時ファイルとdentry cacheとメモリ - blog.nomadscafe.jp

    わりと長い間悩んでいたんだけど、最近解決したのでメモ。 サービスで利用しているsmalllightの画像変換サーバが、Apacheが使っているメモリ以上のメモリを使用し、Swapしたりメモリ枯渇でサーバがダウンするなどのことが何度かありました。 ↑メモリの動きはこんな感じ いろいろ調べた結果「dentry cache」なるものがメモリ多くを占めていることがわかりました。dentry cacheはディレクトリやファイル名とinodeとを結びつけに使われるキャッシュです。smalllightでは画像を変換する際に一時ファイルを作成するので、その情報が残るようです。 手元で再現させる 番で使っているサーバはCentOS5系ですが、手元のVagrant上のCentOS6(ファイルシステムはext4)で、再現させてみました。 use Parallel::Prefork; use File::Tem

    hogem
    hogem 2014/01/14
  • Red Hat Enterprise Linux 7 BetaにおけるMariaDB 5.5の構成 - SH2の日記

    MySQL Casual Advent Calendar 2013の14日目です。 2013年12月11日にRed Hat Enterprise Linux 7 Betaがリリースされました。以前から噂されていたとおり、RHEL 7ではMySQLではなくMariaDBが採用されています。日は、RHEL 7 BetaにおいてMariaDBがどのような構成になっているのかを簡単に確認していきたいと思います。 パッケージ構成 MariaDB関連パッケージは13個用意されています。 mariadb-bench.x86_64 : MariaDB benchmark scripts and data mariadb-devel.i686 : Files for development of MariaDB/MySQL applications mariadb-devel.x86_64 : Files

    Red Hat Enterprise Linux 7 BetaにおけるMariaDB 5.5の構成 - SH2の日記
  • 2013年12月31日をもって退職します

    2013年12月31日をもって、現在の会社を退職することになりました。 2001年より丸12年間、会社設立時からのメンバーとして、全エンジニアを統括するマネージャとして、そして一人のエンジニアとして、業務に従事させて頂きました。経営や、マネージメントや、リーダーの在り方や、エンジニアとしての働き方や、当に多くのものを学ばせて頂きました。厚くお礼申し上げます。 こんなにもお世話になった会社を退職させて頂くことになったのは、一重に僕個人の危機感によるものです。 0.前提 僕は過去12年間、インフラエンジニアとして働いてきました。インフラというのはとても大きな括りのざっくりとした言葉ですが、地方におけるインフラエンジニアとしては有りがちな「環境何でも屋」に近い位置づけです。ネットワーク設計からネットワーク機器の設定・構築を中心として、ネットワークに関わるサーバやサービス、DB、フレームワーク、

    hogem
    hogem 2014/01/06
    1, 2, 3 あたり読んで自分が書いたんじゃないかという気がするくらい感慨深い。新しい武器欲しい
  • RHEL(CentOS)6系でトラフィックをたくさん捌くサーバが死ぬ問題は6.5のkernel-2.6.32-431.el6以降で多分直る - このブログはURLが変更になりました

    タイトルで言いたいことはすべて言った。 経緯 うちの場合はLVS+keepalivedなロードバランサなんだけど、ちょくちょくkernel panicになる問題が発生してた。 そこでcrashコマンドで解析してみた。crashコマンドの使い方はこちらが参考になる。Linux crash dump 読み方入門 # crash /boot/System.map-2.6.32-279.14.1.el6.x86_64 /usr/lib/debug/lib/modules/2.6.32-279.14.1.el6.x86_64/vmlinux /var/crash/127.0.0.1-2013-09-27-16\:21\:01/vmcore (snip) SYSTEM MAP: /boot/System.map-2.6.32-279.14.1.el6.x86_64 DEBUG KERNEL: /usr

    RHEL(CentOS)6系でトラフィックをたくさん捌くサーバが死ぬ問題は6.5のkernel-2.6.32-431.el6以降で多分直る - このブログはURLが変更になりました
    hogem
    hogem 2014/01/01