第56回Linuxカーネルのコンテナ機能 - cgroup v2から使うメモリコントローラ(1) 加藤泰文 2024-08-16
# [前提] # 以下の様なデータを持つusersテーブルが作成されているとする。 # | id | name | # | 1 | taro | # | 2 | hanako | require 'active_record' # ここは使用するDBにあわせる(この例ではSQLite3) ActiveRecord::Base.establish_connection( "adapter" => "sqlite3", "database" => "./hoge.sqlite3" ) # 各テーブルのModelを動的に作成する ActiveRecord::Base.connection.tables.each do |table_name| class_name = table_name.singularize.camelcase self.class.const_set class_name
Feb 22, 2015 堅牢で使いやすいAPIクライアントをSwiftで実装したいをライブラリにまとめてAPIKitとしてリリースしました。 なお、”Swiftらしい”というのは主観です。 https://github.com/ishkawa/APIKit 利用側のコード リクエストに渡すパラメーターは型によって明らかになっている。 レスポンスはモデルオブジェクトとして受け取れる。 成功時にレスポンスを非オプショナルな値で受け取れる。 失敗時にエラーを非オプショナルな値で受け取れる。 // リクエストに渡すパラメーターを型で制限 let request = GitHub.Endpoint.SearchRepositories(query: "APIKit", sort: .Stars) GitHub.sendRequest(request) { response in // option
2ヶ月くらい前にCDNをAkamaiに切り替えたので、知見を公開。 (追記 2015年8月18日 私個人の認識不足で用語の使い方に問題があったので一部修正しました s/SLA 100%/高可用性構成/g) TL;DR Kaizen Platform, Inc.で利用しているCDNをAkamaiに切り替えた Akamaiはスタートアップでも利用出来るコスト感 高可用性構成のAkamaiを利用することでCDNの可用性というインフラエンジニア的に頭の痛い問題が減った CDN第一世代 AWS CloudFront CDN (-2015年1月) CDNにCloudFrontを利用 サービスで利用しているインフラのほとんどがAWSで稼働しており、 その関係でCDNもCloudFrontを選択。 CDN第二世代 CloudFront + CDN77 (2015年1月-5月) AWS CloudFront
今日はDockerで高速と呼ばれているOverlayFSを利用することをしたいと思います。 すでに、いろいろな報告、紹介があるので、そちらも合わせてみていただければと思います。 1.中井さんのめもめも:Fedora22のDockerでoverlayfsドライバーを利用する手順 2.【RHEL7.1】Dockerでoverlayfsが便利すぎるので乗り換えるべき! 3. 第68回 Dockerストレージドライバーの性能比較 (中井悦司) ※Dockerコンテナを複数起動するときに、overlayFSを利用した場合は非常に速度が速いようです。ファイルシステムの仕組み上、ファイルシステムの書き込み/読み込みにおいても同様の結果が得られると思います。 ※利用環境は、CentOS 7.1+Dockerです。 CentOSでoverlayを使用する Dockerの設定は、3つあります。/etc/sys
形態素解析を行なうためのライブラリとして有名なものにMeCabがあります。 これを用いて名詞を抽出する機会があったので、 mecab-noun_parser として公開しました。 インストール方法 Gemfile に以下を書いて bundle します。 gem 'mecab' gem 'mecab-noun_parser' もちろん、別途 MeCab 本体のインストールを行なう必要があります。 使い方 使い方としては、 MeCab::NounParser のインスタンスを生成し、それに解析したい文章を追加します。 parse メソッドでこれを解析し、 nouns メソッドで結果を取得できます。 require 'mecab' require 'mecab-noun_parser' parser = MeCab::NounParser.new parser << 'Rubyは、手軽なオブジェ
イヤホンを新調したら雨夢楼と光のストライドがきれいに聴こえて嬉しいeller86です。洗濯機でイヤホンを洗濯してしまったときは絶望の淵に立たされていた気がしますが、あの絶望がこの喜びにつながるとは一体誰が想像したでしょうか。 さて前回のGuava紹介記事がそこそこ人気?だったようなので、I/Oにもう少し突っ込んだ内容も書いてみたいと思います。 イディオムを隠蔽化するFilesクラス 前回イディオムを排除できるクラスとしてCloseablesを紹介しましたが、Filesクラスもまた役立ちます。少なくとも以下のメソッドはおさえておくと役立つはずです。 ファイルから読むためのBufferedReaderを作ってくれるnewReader(File, Charset) ファイルに書くためのBufferedWriterを作ってくれるnewWriter(File, Charset) Sun Java5以
Guavaのテストコードを読んでいたらTruthというtesting frameworkが使われていることに気づき、最新の個人プロジェクトで使ってみました。まだアルファ版ですし、自分でも使い続けるかどうか微妙なところですが、試用記録として利点をまとめます。 なお著者がアサーションフレームワークに求めるのは、大人数が関わるプロジェクトにおける「開発者の個性(経験、知識、趣味)に限らず、短時間で保守性が高く直感的なコード・エラーメッセージが書ける」ことです。異なる観点からこのプロダクトを見ると、また違った意見があるかと思います。 assertThat()が必要とされた理由 そもそもassertThat()はなぜ必要なのでしょうか。それはassertTrue(), assertFalse() などのメソッドが生むエラーメッセージが直感的でないからです。 Truthのウェブサイトにのっている例が非
1. はじめに WebRTCの動向を追いかけている人であれば、ORTCについて耳にしたことがあると思う。 だが、ORTCの登場背景等について、記載した日本語記事があまりなかったので、 私の知る範囲で、以下にまとめておこうと思う。 (ORTCを当初から追いかけているわけではないので、間違っていたら@iwashi86までご指摘ください。非常に歓迎です!) 1.1. 本記事の対象者 WebRTCについてある程度知識がある人向け SDP何それ?な人は、HTML5Rocksあたりを読んでから、以降を読むと分かりやすいと思う 2. なぜORTCが登場したのか? 2.1. WebRTC 1.0の世界 既存のWebRTC(まだ、仕様として固まっていないが、以降では分かりやすくWebRTC1.0と呼ぶ)において、 シグナリングプロトコルは規定されていない。これは次のJSEPのドラフトからも確認できる。
Scala関西 Summit 2015での発表で触れていたN+1クエリ問題をなんとかするためのライブラリを公開した. 発表は以下のもので, ここでは「関係モナド」という名前で紹介していたけれど, これは口頭でも説明したように便宜上てきとーにつけた名前であって, とくにそういう名前のよく知られたモナドがあるというわけでもなければ, そもそもモナドであるかどうかはあまり本質的ではない. この発表のあとに, Rails (Active Record)でのbulletのようにN+1問題の検出をScalaでやる方法はないだろうか, と言っている人がいたので, そういうものを探していて辿りつけるとよかろうということで, bullet-scalaという名前にした. もちろんN+1問題の検出のためのライブラリというわけではないし, 動的に検出するのではなく原理的に問題が発生しないようにするものなので, 思
タイトルでいいきった。 ISUCON5参加者へのアドバイス まもなくISUCON5が開催されますね。 毎年参加して予選突破を果たしている私からのアドバイスは、過去問を解いてチューニング力を高めることが重要です。これホント大事。 過去問やってる? ですが、ISUCONの過去問はAWS用AMIとソースコード一式が用意して提供されているものの結構難しいんですよね。 AWSの利用は課金がつらい(特に学生) AWSの利用はクレジットカードが必要でつらい*1 ソースコードから構築する方法がわからない(AMIの中身を見ないとわからないこと多数) 無料で過去問やろう そこで無料かつ簡単に手元で構築できるよう、VagrantfileとAnsible用Playbookを用意しました。 https://github.com/matsuu/vagrant-isucon/ https://github.com/ma
MySQL 5.7では生成列の機能が追加され実体化されない仮想列を作成できるようになった。ユースケースとしては関数インデックスを効果的に利用すると、JSONなどをうまく扱える可能性がある。 免責事項 この記事はJimmy Yang氏によるMySQL Server Blogの投稿「JSON Labs Release: Effective Functional Indexes in InnoDB」(2015/4/9)をユーザが翻訳したものであり、Oracle公式の文書ではありません。 MySQL 5.7.6では、我々は生成列(Generated Columns)と呼ばれる新しい機能を追加した。最初の段階では全ての生成列は、仮想的なものであってもマテリアライズされていた。これでは不要なディスクスペースが使用され、ディスクI/Oが発生するだけでなく、いかなるテーブルの変更に対してもテーブルを完全に
Private content!This content has been marked as private by the uploader.
モナドって結局何なのよ?¶ Haskell を勉強しようとすると必ず「モナド」ってのが出てきます。困ったものです。数学とか圏論とか関係があるらしくって、何が書いてあるんだか分からなくって嫌になってしまいます。でもね、Haskell って凄いらしいじゃないですか、格好良いらしいじゃないですか。ここはちょっとがんばって色々考えてみましょう。 そもそも Haskell って何なのよ?¶ 何なんでしょうね、Haskell って。コンピュータ言語らしいんです、あ、それは分かってると。良く挙げられる性質は次な感じ?: 関数型言語 強い型付け 遅延評価 参照透過 ここでちょっと型に関して見てみましょう。試しに Haskell の実装の 1 つである Hugs で 1 について考えてみます。Hugs では :type や :info というコマンドで hugs に型の情報などを質問することができます。例え
そろそろ秋が近づいてきたのですが、モバイル開発をしている人は新OSの対応やらで忙しい時期ではないでしょうか。 Androidは例年ほぼ何もしなくても良くて気が楽だったのですが、今年は比較的ドラスティックでRuntime Permissionsという機能が追加される予定です。 今までだとGoogle Playからインストールする時に全ての権限をユーザーが確認して許可していたのですが、はっきり言ってかなり怖い&一度インストールしてしまうとユーザーがコントロールできない、といったマイナス面が多く今回ついにGoogleが重い腰を上げたという事の様です。 本件、ユーザー的には良い事尽くめなのですが、開発者的には結構頭が痛かったりします。 頭痛の種は色々とあるのですが、 targetSdkVersionをMにしない場合でも、ユーザーが設定画面から権限をrevokeできてしまう ユーザーがいつでも権限を
作成:2013/07/22 更新:2014/11/01 Web制作 > 先日、お客さんのところへ提案にいったところ、「サイトを自分でも作りたいので定期的に講習会を開いて欲しい。Wordしか分からない。」と言われました。とはいっても、自分である程度、継続して勉強しておかないと、受講する人は2回目以降の受講内容を理解出来ないし、教える人も基本知識をしっかり身につけておかないと、質問に答えることもできません。 今回はWeb製作をするなら必ず抑えるべきこと、知識「0」から学ぶ、基本的な知識を習得できるスライド・サービス・サイトをまとめました。ディレクションにもOK。メジャーなもの中心です。とはいえ量が膨大になったので、必要な部分だけピックアップして学びましょう。※スライドがないものに関しては、お役立ちリンクをつけてます。 エンジニア速報は Twitter の@commteで配信しています。 もくじ
8/11~8/15まで行われたセキュリティキャンプを見学してきました。 インターン先が協賛企業ということで、主に講義などを見学することができました。 僕自身は2014年にセキュリティキャンプに応募しましたが、落選してしまったのでありがたい機会でした。 見学した講義についてのtwitterや公開資料・関連サイトのまとめです。 どこまで口外していいかわからないので、基本的に公開情報をまとめただけ・・・ 基本的には解析トラックを見学しました。マルウェア関連の講義があったため、検知トラックも少し見学しました。 以下公式サイトのトラック紹介から引用 解析トラック 【概要】 本トラックでは、様々な脆弱性や攻撃、マルウェアなどを解析、対策する手法を取り扱います。脆弱性はどこに存在するのか?攻撃者はどのようにそれを悪用するのか?アセンブリやデバッガ、OS、仮想マシンモニタといった切り口でこれらを明らかにし
Elixir では Stream モジュールを使って、遅延評価と無限リストを扱うことができるがそれによりエラトステネスのふるいを、Haskell と同じように無限リストを使った記述ができるか・・・というのが今回の試み。結果としては、カッとなれば、できる。 以下、Stream の解説も交えてお届けする。 Enumerable プロトコルと Enum および Stream Elixir の Enum モジュールには map/2 や filter/2 や zip/2 など、コレクション操作に必要な関数が多数実装されている。以下はそのドキュメントの例である。Functions のところに Enum の関数が列挙されているのが分かる。 ちなみにこのドキュメント閲覧は Dash の画面。自分は主に iOS 開発のドキュメント閲覧によく使っているが、見ての通り Elixir のドキュメント参照にも便利。
さて変更を反映するか。 $ git pull remote: Counting objects: 74, done. remote: Compressing objects: 100% (37/37), done. remote: Total 60 (delta 26), reused 55 (delta 21) Unpacking objects: 100% (60/60), done. From xxxxxxxxxx xxxxxx..xxxxxx master -> origin/master Updating xxxxxx..xxxxxx error: Your local changes to 'xxxxxxxxxx' would be overwritten by merge. Aborting. Please, commit your changes or stash them
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 参考 2019/1/1現在の日本語ドキュメントをもとに再編成しています。 最新版は英文を確認ください。 In-App Purchaseプログラミングガイド [公式ドキュメント] (https://developer.apple.com/jp/documentation/StoreKitGuide.pdf) [失敗しない iOS In-App Purchase プログラミング] (http://d.hatena.ne.jp/glass-_-onion/20111201/1322697417) [iOS の アプリ内課金(In-App Pu
経緯 WebSocketを使ったアプリケーションを作ったが、ポートが80しか使えない nginxでどっちも80に流したい ポイント / はまり所 WebSocketのプロキシにはUpgradeヘッダ(HTTP 1.1)への対応が必要 Upgradeヘッダへの対応は nginx v1.3.13以降 参考: WebSocket proxying 厳しい条件から先に書く デフォルトだと30秒通信がないと切断される(!) nginxでリバースプロキシしているときだけ一定時間で接続が切れるので何かと思えば、 普通のHTTPの通信と同様に30秒(だったはず)通信がなかった場合はタイムアウトってことで自動でコネクションを切ってくれていたみたい。 ping/pongを30s以内にやればいいんだろうけど、とりあえず5分に設定。 config server { listen *:80 default_serv
August 16, 2015 今年もYAPCで発表させて頂くことになりました。 投票してくれた方、ありがとうございます。 ##我々はどのように冗長化を失敗したのか / YAPC::Asia 2015 追記にも記載しましたが、 挑戦したこと 冗長化について Redis + Redis Sentinel Consul MySQL + mysqlfailover consul-template hostsの順番 クラウドという名の混乱 対応 冗長化の終わり、そして という内容になりそうです。色々なソフトウェアを利用し、ある思想を持って冗長化にチャレンジしたが アマチュアのような見積り、構成の甘さや、インフラではなくプロジェクト全体の問題などを含め 改めて実体験として経験したこと、改めて大切だと理解したことなどをお話しできればと考えています。 Webサービスを運用しているけど、インフラ担当なんて
MySQLクライアントといえば、開発時にはphpMyAdminが使えますが、開発に慣れてくるとCUIのクライアントを使うことが多いかと思います。しかし画面はシンプルですし、機能も多くないのが難点です。 そこで使ってみたいのがMycliです。Python製のMySQLクライアントで、シンタックスハイライトやオートコンプリート機能があります。 Mycliの使い方 MycliはMac OSXであればHomebrewを使ってインストールができます。後はmycliコマンドでMySQLサーバに接続します。こんな感じに自動補完候補が表示されます。 シンタックスハイライトも良い感じです。 色がついている分、使いやすいでしょう。 MycliはMySQLの他、MariaDBやPerconaにも利用できます。普段使っているMySQLクライアントがちょっと寂しいと思ったらMycliを使ってみてください。 Mycl
Goアプリのデプロイはバイナリをひとつ配布して完了なのでとても楽なのですが、バイナリ自体をどこで管理するかについては意外と頭を悩ませることになります。 Goを使うにあたって、コードさえあればあとはバイナリも簡単に配布できる状態というのが望ましいと思い、仕組みを作ってみました。 2015/08/16追記: CargoはRustのパッケージマネージャーと名前がかぶってたのでTorokko(トロッコ)に改名しました! TorokkoはGoアプリのビルドと成果物ダウンロード用のAPIを提供するビルドプロキシです。 リクエストのURLで対象リポジトリ、GOOS、GOARCH、バージョンを指定します。 ビルドはDockerコンテナを用いて行い、バックエンドストレージに成果物が保存され、ビルドリクエストと同じURLでダウンロードを行うことができます。 Docker Hub の Automated Bui
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く