タグ

ブックマーク / x1.inkenkun.com (13)

  • MySQLでorder byにインデックスが効かないケース・゚゚(゚-゚*; )オロオロ( ;*゚-゚)・゚゚

    order byにインデックスが効かないケースの前に・・・order byにインデックスが使用されるのは、どんな時? 単独でインデックスが張られているカラムをorder byに指定したとき。 Where節内で使用したカラムとorder byで指定したカラムと合わせて複合インデックスが張られているとき(ただし、Where内では定数が指定されていること) この通りに指定してもインデックスが効かないケースがあります。 それが下記です。 ※ key1はkey_part11で構成されるインデックス、key2はkey_part21とkey_part22で構成されるインデックスとしています。 order by句に複数のインデックスを使用する SELECT * FROM t1 ORDER BY key_part11, key_part21, key_part22; この例では2つ以上のインデックスをord

  • actix_web は Actorモデルでどのようにwebリクエストを捌いているのか

    actix_web は Actor モデルを採用した Rust の web frameworkです。 「Actor モデルでwebリクエストを捌く」仕組みを雑に想像すると、 TCPリスナーがHTTPリクエストをメールボックスに貯め、それをワーカーであるActorが拾ってレスポンスを返す? この仕組だと複数のActorで1つのメールボックスを共有する機構が必要になってきます。 しかし、Actorシステムを提供する actix にはこの機構はなさそうに見えます。 それに、恐らくこの仕組みでパフォーマンスを出すのは難しいでしょう。 そこで、actix_web がどのようにHTTPリクエストを捌いているのか、ソースコードを追ってみることにしました。 ※ 読み間違え等ありましたらコメント頂けると大変嬉しいです… 🙏 actix_web の構成 actix_web の依存関係を図示するとおおよそ下記

  • Rust の Web Framework, actix_web のパフォーマンスをとことん測定する

    Erlang製のtsungというツールを使って負荷をかけました。 これは、複数のサーバをクラスタ化して負荷をかけることができるので、負荷側が先にパンクするケースを軽減できます。 パフォーマンス測定の前に actix_web 関係なく、 もはや Webサーバの基と言っても良いのですが、actix_webを動作させるサーバと負荷サーバの両方で、 ulimit(システムリソース上限) と tcp系のカーネル・パラメータを調整します。 ulimit システムリソース上限を上限いっぱいに設定します。 /etc/security/limits.conf を編集します。 root soft nofile 65536 root hard nofile 65536 * soft nofile 65536 * hard nofile 65536 再起動します。 カーネル・パラメータ いくつかのカーネル・パラ

  • Rust を Bazel でビルドする〜前編〜

    そんなに需要がないだろうなあ、と思いつつも、ちょっと面白かったので記事にしました。 Rust で書いたソースコードを Google製ビルド・ツール Bazel を使ってビルドします。 Rust の場合、通常であれば迷わず Cargo でビルドしたいところです。 しかし、多言語を扱う monorepo スタイルの開発であったり、C/C++ソースも一緒にコンパイルしたい場合、複数言語のビルドを一貫して行える Bazel という選択肢がでてきます。 (tensorflow/rust を使うときもですかね) 参考: 大規模ビルドシステムにおけるRustの扱いに関する議論 (ここでも議論されています) Bazel では、ビルドするためのルールを BUILD というファイルに記述します。 様々な言語向けのルールが既にたくさん用意されているので、BUILD にダウンロード設定を記述して使うことができます

  • http://x1.inkenkun.com/archives/5558

    http://x1.inkenkun.com/archives/5558
  • 第2回 Solr4のコア設定

    Solr4を動かしてみるシリーズの2回目です。 2.1. コアとは? solrのコアとは、検索エンジンそのものを差します。 サーチャーやインデクサーの定義、インデックスデータの管理、プラグインの管理などを行う単位です。 solrは1.4系からマルチコアに対応し、コアごとにこれらの設定を行えるようになりました。 例えば、 のタイトルと内容から検索する 著者の名前と自己紹介から検索する 例を考えてみます。 のタイトルと内容から検索したいケースと、著者の名前と自己紹介から検索したいケースは同じではない方が多いかと思います。 ここで著者との内容が混ざってしまうと、欲しい結果を得るのが難しくなります。 よって、こういうケースでは2つの検索エンジンを用意する必要があります。 用の検索エンジン 著者用の検索エンジン そこで、マルチコアの機能を使います。 ※solrでは、マルチコアがデフォルトです

  • macにDockerを入れてNginxでwebサーバーを立てるまで

    Docker流行ってますね。 そんなわけでmacDocker入れてmacのブラウザからDockernginxにアクセスできるようにしたいと思います。 Docker Toolboxというのがあるので、これでサクッとmacにインスコできちゃいます。 動画内で使用したコマンドはこちら Centosのイメージをダウンロードしてくる $ docker pull centos ダウンロードしたイメージ一覧 $ docker imagex コンテナを起動する ローカルのDocuments/dockerdocker内の/dockerと共有フォルダとして、inkenコンテナという名前で立ち上げています。 $ docker run --privileged -td -p 80:80 -v /Users/inken/Documents/docker:/docker --name inken centos

  • 第1回 Solr4のインストールから起動まで

    1. Solr4.5を動かしてみる 全文検索エンジンSolrにRDBのデータを喰わせてインデックスを作成するところまでを目標に、 Solr4のインストール〜構築を行っていきます。 Solr4を動かしてみる Solr4のコア設定 Solr4のインデックス設定(さわりだけ) Solr4にRDBのデータをくわせる Solr4でレプリケーションを構築する 1.1. まずはjavaのインストール! RHEL系だったらyum, debian系だったらapt-getで入れてしまいましょう。 ※上記例ではopenjdkを入れてますが、sun-javaのrpmをインストールしても大丈夫です。 1.2. Solr4をダウンロードしてみる Solrのサイト ダウンロード Solr4.5.1のチュートリアル ダウンロードしたファイルを解凍します。 解凍してできたディレクトリの中はこんな感じになっています。 Sol

  • 第4回 Solr4にRDBのデータをくわせる

    Solr4を動かしてみるシリーズの4回目です。 今回は、SolrにRDBのデータをくわせてみます。 solrのチュートリアルにはRESTインターフェイスからインデックスするデータを登録するやり方が書いてありますが、インデックスしたいデータの多くはRDBやNoSQL等のストレージに格納されていることが多いと思います。 いっこいっこPOSTなんてやってられません。 で、RDBのデータを読んでインデックスを作成することにします。 このチュートリアルではRDBとしてMySQLを使用します。 4.1. JDBCドライバを設置する solrはjava製のプロダクトなので、MySQLに接続するためにJDBCドライバを使います。 MySQLのサイトからJDBCドライバをダウンロードします。 MySQL Connector/J 解凍してjarをコアディレクトリのlib内に置きます。 tar zxvf mys

  • ScalaでフォルトトレラントなRabbitMQクライアントと方肺実験

    ScalaでフォルトトレラントなRabbitMQクライアントをつくりました。 sstoneのamqp-clientというライブラリを使っています。 このライブラリでかんたんにフォルトトレラントなRabbitMQクライアントが作れちゃいます。 sstone/amqp-client https://github.com/sstone/amqp-client Githubにはサンプルコードもコミットされており、とてもわかりやすいです。 amqp-clientなのですが、内部的にakkaとRabbitMQが公式に提供しているjavaライブラリを使用しています。 作成時点のバージョンは下記です。 scala: 2.11.0 akka: 2.3.2 amqp-client: 1.4 RabbitMQの2台構成クラスタリングが存在しているものとして話をすすめます。 192.168.0.101:5672

  • バツイチとインケンのエンジニアブログ

    以前作った自作PCをずっと動画編集用に使っていたんだけど、机周りを変えたのと、バツイチちゃんが今会社で3DCGをやってるので、それ用のマシンとして渡してしまった。 で、RTX2060をQuadroに変えたいと言うので、じゃあRTX2060とM.2のSSDだけもらって、もうひとつ自作PCを作ろうと思ったのだった。 作るんだったら長尾製作所のmini ITXのオープンフレームの白がいいなーなんて考えていたのだが、結構売り切れで諦めてたところ、たまたま在庫を見つけてポチったのがきっかけ。 CPUは11世代Interlと迷ったけどRyzen使ったことなかったのでRyzen7にした。 他のパーツはお財布と相談して以下な感じ。 [続きをもっと見る…]

  • iOS初心者がSwiftでグノシーみたいなタブ型RSSリーダーを作ってみた

    こんにちわインケンです。 先月からswiftを始めました。Obj-Cもまともに触ったことないし、全くのiOS初心者です。 「はじめてのアプリ」みたいな初心者はいくつか読んだのですが、もうちょっと突っ込んだ情報が欲しいなーと作りながら思っていたので、同じような境遇にいる初心者の方の参考になれば。 Xcodeのバージョンは6.3.1です。 完成はこんな感じ ソースはこちら https://github.com/inkenkun/RssReader ストーリーボードは使わず、カスタムセルのxibとコードのみで作りました。 タブというかメニュー型のカテゴリがあってスワイプすると、そのカテゴリの記事の一覧に切り替わります。 一覧の記事をタップすると右の詳細ページへ。詳細ページはWEBブラウザになっています。 使用するライブラリ 使用したライブラリはこれ Alamofire https://gith

  • あなたのPythonを爆速にする7つの方法

    最近プロコン(プログラミング・コンテスト)をはじめました。 基的にはアルゴリズム勝負なのですが、とにかく速度を競うプロコンです。 小手先の速度チューニングもバカにできません。 何が速くて何が遅いのかはっきりさせるため、ボトルネックになりそうな操作のベンチマークを取りました。 実行環境は下記のとおりです。 python2.7.5 OS: MacOSX 11 CPU: Core i7 2GHz (4core) MEM: 16GB その1. 配列の初期化を高速化する まずはプロコンの基中の基、配列の初期化です。 下記7つの初期化方法を比較してみます。 空配列へappendして配列をつくる for内包表記で配列をつくる サイズ1(None)の配列を乗算してから値を代入する サイズ1(None)の配列を乗算する サイズ1(ゼロ)の配列を乗算する すべてゼロのarrayをつくる 0〜nのarra

  • 1