Spring BootによるAPIバックエンド構築実践ガイド 第2版 何千人もの開発者が、InfoQのミニブック「Practical Guide to Building an API Back End with Spring Boot」から、Spring Bootを使ったREST API構築の基礎を学んだ。この本では、出版時に新しくリリースされたバージョンである Spring Boot 2 を使用している。しかし、Spring Boot3が最近リリースされ、重要な変...
![スケーリング Dropbox](https://cdn-ak-scissors.b.st-hatena.com/image/square/51cbeef5b0e05e27be6c023defe60b92115a9178/height=288;version=1;width=512/https%3A%2F%2Fcdn.infoq.com%2Fstatics_s1_20240530133244%2Fstyles%2Fstatic%2Fimages%2Flogo%2Flogo-big.jpg)
ネットワークの計測と解析 インターネットの使われ方やネットワークの挙動を把握する事は、ネットワークを運用し、その技術開発を行う ために欠かせません。しかし、観測で得られるデータ量は膨大ですがノイズが多く、また、観測できるのは極めて限られた部分でしかありません。そこで、膨大なデータから意味のある情報を抽出したり、部分的な観測からより一般的な傾向を推測する事が必要となります。... インターネット基盤技術 速くて、安全で、信頼性が高く、使いやすく、など、インターネットサービスへの要求はますます高まっています。これらの要求に応えるために、インターネットの 基盤技術も日々進歩しています。いまやインターネットはつながるだけのサービスではなく、高度で複雑な機能を備えた社会基盤となりました。IIJ技術研究所は、インターネットの基盤として実現が期待される機能を提供するために、さまざまな技術課題に取り組んで
こんにちは! "ドワンゴ 弁当" で最近少し話題になったドワンゴエンジニア、の氏家です。 どんな人が中で働いてるのか想像しにくい方も多いかもしれませんが、普通の人・オタクな人・ギークな人・家庭持ち・リア充・イケメン、いろんな人が混じってる、楽しい会社だと思っています。 人と同じように 多種多様なサービス・システム・ミドルウェア・デバイス・プログラム言語を駆使してみんながニコニコできるものを産み出そうとがんばっていますので、こういったエンジニアリングに興味がある方は是非コチラからご応募ください!ニコニコ入社一時金制度もやっています。 そしていろいろと長くなってしまいましたが、今回でChef Solo話、完結したいと思います。今回はやってみて気づいた点・はまった点などを詳しく説明しますので、少しでもみなさんの参考になれば幸いです。 roleはjsonで書くべき? それともruby? recip
はじめに Redisの開発者である@antirezが一昨日投稿したブログポストにとても共感したので翻訳しました。 English has been my pain for 15 years - <antirez> 世界一わかりやすい英文法の授業 作者: 関正生出版社/メーカー: 中経出版発売日: 2008/02メディア: 単行本購入: 14人 クリック: 99回この商品を含むブログ (31件) を見る 僕が@antirezの文章を翻訳するのは今回が初めてではありません。RedisのドキュメントをまだRedisがバージョン2.0になったばかりの頃に日本語訳したのが最初でした。Redisドキュメント日本語化をしていた当時は翻訳しながら「ドキュメントが整っているなぁ」と感じたと同時に「独特の英語を使うなあ」という印象を受けました。その当時は彼が英語に苦労していた過去のことなど知らなかったので、こ
この前「Rubyのエンコーディング」という記事を書いたのですが、それをネタに 8/25 の NSEG で発表しました。 Rubyのエンコーディング from Masahiro Tomita この中で、エンコーディングが原因で予期しないところで落ちてしまうことが結構あるという話もしたんですが、今回はプログラムが落ちないようにするにはどうすればいいかを考えてみます。 エンコーディングが原因で落ちてしまうのは大体次のパターンのようです。 文字列や正規表現のエンコーディングが異なる 文字列中に不正な文字が含まれている 文字列や正規表現のエンコーディングが異なる 正規表現をリテラルで生成していれば、エンコーディングは敢えて指定しない限りは普通はスクリプトエンコーディングになってると思うので、問題は文字列の方です。 特にファイルから読み込んだ文字列のエンコーディングが何になっているかに注意しましょう。
以前書いた記事(Ruby 1.9 の新機能を調べてみた)の m17n がらみの箇所についてコメントやらトラックバックやらをいただいたので、もう少し調べてまとめてみた。 なお、1.9.0 リリース版ではなく、開発版(trunk r14835)で動作を確認している。 コマンドラインオプション -E --encoding "ruby -E エンコーディング名" または "ruby --encoding=エンコーディング名" のように使う。 Encoding.default_external を指定したエンコーディングに変更する。 コマンドラインで指定したスクリプトファイル(または -e で指定したスクリプト)のエンコーディングを変更する。(スクリプト内でマジックコメントによるエンコーディング指定を行なったのと同じ効果だが、マジックコメントで指定がある場合はそちらが優先) -K ruby 1.8
覚えているうちに脳内メモリを書き出しておく。例えば標準入力が Shift_JIS で出力を UTF-8 にしたい場合は以下のコードで出来る。
2013年08月22日13:26 Ruby factory_girl で最低限知っておきたい4つの使い方 みなさん、テストを書くときには Fixture Replacement として何を使ってますか?一番メジャーなところだと factory_girl でしょうか。machinist も有名ですね。シンタックスの違いのようなので基本的にはどちらでも良さそうです。 参考(stackoverflow)Machinist vs FactoryGirl - pros and cons In other words, both are extremely similar, just with a different default syntax. 今回は(僕が factory_girl4.2.0 を使ってるので)factory_girl4.2.0 についての話です。 インストール まずインストールし
ActiveRecordには便利なprevious_changesというメソッドがあります。 割と知名度が低いので、ここで使い方をご紹介します。 (08/26追記) はてブでご指摘(?)頂きましたが、正確にはActiveRecordではなくActiveModel::Dirtyの機能です。 まずはchanges previous_changesの前に基本のchangesです。 これは、saveする前に変更されたattributeを調べる機能です。 まずはfindした直後です。changed?は当然falseになります。 User.create(name: "Taro") user = User.find(1) user.changed? # => false user.changed [] user.changes # => {} user.changed_attributes # => {
ProductTwo-factor AuthenticationToday we're adding two-factor authentication to GitHub. When you enable this feature, it adds an additional layer of security to your account. When logging in to GitHub, after providing your… Today we’re adding two-factor authentication to GitHub. When you enable this feature, it adds an additional layer of security to your account. When logging in to GitHub, after
Rspec/Capybara/Turnipの入門記事を全力でまとめてみた Aug 30th, 2013 Tweet さっき、『 The Rspec Book』を読み終えました。厚めの本ですが、RspecやCucumber、Webrat、Seleniumなどを活用するためのノウハウ満載で大満足でした! ということで、この本で読んだ内容を忘れないようにするためと、その過程でRspec/Capybaraなどのネット資料をあつめたので、まとめるためにこの記事を書きます。もし、間違いを発見した場合や他にもいいリソースがあれば、是非メッセージを願いします! テスト駆動開発(TDD)と振る舞い駆動開発(BDD) テスト駆動開発(TDD)とは、コードを書く際に最初にテストを書き、次にテストが通る最低限のコードを書き、その後にリファクタリングしていく開発手法です。一方で振る舞い駆動開発(BDD)はTDDの発
ツチノコブログのWEBサーバベンチマークツール比較の記事で紹介されていた。WebサーバのG-WAN。この記事によると凄く速いようです。 Intel Xeon E5-2640 (6コア/12スレッド 2.50GHz) を2つというサーバで gwan 334944 req/s nginx 111842 req/s と、速いと言われているnginxの3倍の速度を出しています。 このベンチマーク結果がとても気になったので、なぜG-WANが速いのか、自分でも検証してみました。 結論から言うと以下の2つ。 1) G-WANはデフォルトで物理CPUに合わせた数のスレッドを起動する 2) HTMLファイルも一度読み込んでキャッシュする という事です。 今回はAWSのcc2.8xlarge(E5-2670 8コア/16スレッド 2.60GHz *2)を使ってベンチマークを行いました。OSはAmazon L
Takayuki Shimizukawa @shimizukawa @masa_edw コネクションプールが無い場合、使い終わったコネクションが即解放されない(解放まで多少遅延する)ので実際に使っているコネクションの数より多く存在する。その分メモリを圧迫して効率が悪い。っていう話は聞いたことがあるよ(要出典 2013-09-04 09:27:28 ハイパーむとう @masa_edw @voluntas 現状で必要な状況は理解していますが、なぜそうなるのか理解していないということです。他にもたとえば、bitlyの呼び出しはコネクションプールを使うべきか?なぜ(べき、べきでない)のか?どういう要請でそうなのか?と言う問いに僕は答えられません。 2013-09-04 09:31:22
前述したTCPサーバ例では、サーバを終了した直後にもう一度サーバを起動しようとすると、bindがエラーで終了することがあります。 ここでは、その問題を回避するためにSO_REUSEADDRを有効にする方法を説明したいと思います。 TIME_WAIT TCPサーバのプログラムを書いていて、TCPサーバを終了して直後にもう一度起動したときに、 bindが「Address already in use」というようなエラーで失敗してしまったとこは無いでしょうか? 「あれ?もうTCPのサーバプロセスは終了しているのに。何故、bind出来ないのだろう?」と思いつつ、 しばらく時間がたってからもう一度実行すると問題なくbindが成功したりします。 この問題はTCP自体の仕組み(仕様)によって引き起こされています。(Linuxソケットの問題ではなく、TCPの仕様です)。 具体的にはTIME_WAIT状態と
斎藤です。こんにちは。 今日は、etckeeperを用いて、設定ファイルをバージョン管理する方法を説明します。設定ファイルの書き換えで辛い目に遭う前に、どうぞお試しください。 ※CentOS 6.4, Ubuntu 12.04 LTS, etckeepr 1.7を基準に説明します etckeeperとは etckeeperは主に/etc配下をVCS(Version Control Systems)を用いてバージョン管理します。実態は、gitやmercurialのwrapperとなっています。 設定ファイルの書き換えの際に、ファイル名に日付をつけてバックアップしたりする手間を省いたり、誤って書き換えてしまったときのための 保険 として利用する事ができます。 インストール方法 はじめに 先程も述べました通り、etckeeperはVCSのwrapperとして動きます。そのため、インストール時には
Meldの開発者は9月1日、GUIでグラフィカルに差分表示やマージを行えるdiffビューア/マージツール「Meld 1.7.5」をリリースした。プロジェクトのWebサイトよりダウンロードできる。 Meldはマルチプラットフォームに対応するマージツール。ファイルやディレクトリの差分を視覚的に表示できるほか、Git、Bazaar、Mercurial、Subversionなどでのマージ操作でも利用できる。2方向のほか3方向での比較もサポートするほか、自動マージモード、リアルタイムアップデートなどの機能もある。踏査環境はWindowsおよびMac OS X、Linux。ライセンスはGPLv2。 Meld 1.7.5は細かな機能強化が中心となる。gconfにおける誤設定の処理を改善し、ファイル比較で現在の行をハイライトするかどうかを設定できるようになった。コミットダイアログにアクセスできるキーボード
Meld Visual diff and merge tool Meld helps you compare files, directories, and version controlled projects. It provides two- and three-way comparison of both files and directories, and has support for many popular version control systems. Meld helps you review code changes and understand patches. It might even help you to figure out what's going on in that merge you keep avoiding. File comparison
.play { color: #ffba16; font-family: 'FB Condor Bold', sans-serif; font-size: 100px; letter-spacing: 0.2em; padding: 10px 0; -moz-transform: skew(-25deg) rotate(5deg); -ms-transform: skew(-25deg) rotate(5deg); -webkit-transform: skew(-25deg) rotate(5deg); transform: skew(-25deg) rotate(5deg); text-shadow: 0 1px #ff9b0d, 1px 0 #f79100, 1px 2px #ff9b0d, 2px 1px #f79100, 2px 3px #ff9b0d, 3px 2px #f79
今まで作ってきたプログラムに暗号ライブラリCryptokitを組み込んだら,プログラムの動作が急に遅くなってしまいました。どうやら,乱数を生成している箇所で数秒〜数十秒の待ちが発生している模様です。 問題が発生した環境は,VMWare Fusion上で稼動しているFedora 14です。 調査 psコマンドでプロセスの状態を確認してみると,random_readという関数で止まっていました。random_readをキーに検索したところ,以下のことがわかりました。 Linuxの乱数は「エントロピープール」を元に乱数を生成する。 エントロピープールが枯渇すると乱数生成時に待ちが発生する(ただし,/dev/randomを使用した場合。/dev/urandomを使用すれば精度は悪くなるが待ちは発生しない)。 エントロピープールの量(ビット数?)は,‘cat /proc/sys/kernel/ran
2011年12月17日00:15 カテゴリ 同じようにインストールしたLinuxはどこまで同じなのか(2) ほぼ2年前に行おうとして、挫折したもの。 同じようにインストールしたLinuxはどこまで同じなのか(1) まず、今にして思うことは、同一のファイルでもi-node番号が違う。これがfindなどでの順番の違いと関係しているような気がする。 結局、当時の試行で同じ手順でインストール作業を実施しても、全体で見てしまうと違いがごくわずかしか現れないような同一性は確認できないことはわかったので、もっと実効上の差異に焦点を絞って確認してみる。 ということで/etcの内容の差異を確認した。 同一のvCPU,メモリ容量,HDDで構成し、FDDの有無だけ異なるものについて確認した。 aliases.db:バイナリが異なるらしい blkid/blkid.tab:デバイスのDEVNO,TIME,UUIDが
Webシステムを安定稼働させるには、考慮しなければならないことは数々存在する。システムの適切なサイジングを行うことも、その1つだ。 今回は、その中でもJavaVMのメモリのサイジング(見積もり)とGC(ガベージ・コレクション)に着目して説明する。 現象の見え方 今回は、以下の問題についての話だ。 メモリサイジングをミスした場合、業務ピーク時のGCの多発や長期化からこの現象に陥る場合がある。CPU利用率が100%に張り付いて性能が出ない場合は、GCが原因かを疑う必要がある。その場合、まずはGCログを参照し、GCの処理時間や発生頻度から1分ごとのGC処理の占有率を確認してみるとよい。 占有率が大きい場合、アプリケーションの処理やメモリのサイジングを見直す必要がある。以降では、GCを考慮したメモリのサイジングについて説明する。 JavaVMのメモリ空間はどうなっているのか 初めに、Cosmine
3つのGCを使い分けてCPUの使用率をコントロールする 「GCの時間が長くてシステムが反応してくれない……もっと短くならないかな?」 「GCが始まると、CPUが占有されちゃって、ほかのプロセスの動きが重くなるんだよね……」 「GCの停止時間が多少長くなってもいいから、ほかのプロセスへの影響を軽くできないかな?」 JVMを使用しているシステムでは、そんな話を耳にします。GCが起きていることまでは把握できているのですが、それからどうしたら良いのかわからないのです。 GCは、JVMの内部でGCスレッドがCPUに処理されることで行われています。そのため、GCが行われている間はCPUの使用率が増加してしまうのです。 GCをスレッドの観点で見ると、以下の3種類があります。 シリアルGC パラレルGC コンカレントGC これらの違いを把握すれば、CPUの使用率とアプリケーションの停止時間をコントロールす
An autonomous pod. A solid-state battery-powered sports car. An electric pickup truck. A convertible grand tourer EV with up to 600 miles of range. A “fully connected mobility device” for young urban innovators to be built by Foxconn and priced under $30,000. The next Popemobile. Over the past eight years, famed vehicle designer Henrik Fisker…
最近、youtubeやTwitter、様々なサイトのサイドバーの広告でよく見かけるようになった人たちがいます。こういう人たちです。 彼らの多くは20台前半で、”起業家”を自称しています。どうやら彼らは、誰にも縛られない”自由な生き方”をしているのに、毎月数十万円を稼いでいるようです。なんてうらやましい。 たいていの場合はTwitterのプロフィールにリンクが貼られており、クリックすると彼らのHPに飛びます。そのペラページでは、彼らがどうやってその羨ましい生活を手に入れたのか、今に至るまでのサクセスストーリーがこれでもかと書いてあります。 そしてページの下部には情報商材の購入ややメルマガの購読を申し込むフォームがデカデカと掲載されています☆ こういった情報商材やメルマガの販売は、インターネッツの黎明期から存在していました。ヤフオクを使った情報商材販売なんて、すごく活気がありましたねぇ。それ以
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く