タグ

kicyonのブックマーク (3,900)

  • 第1回 JVMはどのようにメモリ空間を利用するのか | gihyo.jp

    あのWebサービスもJVMを利用している 「Javaは大規模なエンタープライズシステムにしか使われない」 それが常識だと思っていませんか? たしかに、これまでJava Virtual Machine(JVM)は、他の言語を実行すると遅く、Javaのプログラムを実行する環境にすぎないものでした。ところが、Java 7から実装されたInvokeDynamicにより、JVM上で、RubyPHPなどさまざまなコンピュータ言語で記述されたプログラムをより高速に実行できるようになりました。 これにより、今までエンタープライズでJava言語で記述されたプログラムを実行するだけの環境であったJVMが、汎用的な実行環境になったと言えます。また、これまでJavaの実行環境として使用されていたノウハウが、他の言語で記述されたプログラムを実行する際にも利用できます。 最近では、TwitterがJVMをアプリケー

    第1回 JVMはどのようにメモリ空間を利用するのか | gihyo.jp
    kicyon
    kicyon 2013/04/23
    java
  • Using filesort

    去年ソートに関する記事を書いたが、今日はその続きである。 MySQLでEXPLAIN SELECT...を実行するとExtraフィールドでよく見かける「Using filesort」という文字列。Filesortって一体なんだろう?と思ったことはないだろうか。単刀直入に言ってFilesortの正体はクイックソートである。 クエリにORDER BYが含まれる場合、MySQLはある程度の大きさまでは全てメモリ内でクイックソートを処理する。ある程度の大きさとはsort_buffer_sizeであり、これはセッションごとに変更可能である。ソートに必要なメモリがsort_buffer_sizeより大きくなると、テンポラリファイル(テンポラリテーブルではない)が作成され、メモリとファイルを併用してクイックソートが実行される。 Filesortは全てのソート処理において実行されるわけではない。前回の記事

    Using filesort
    kicyon
    kicyon 2013/01/11
  • Make チュートリアル

    Make というツールは多くのプログラマが利用しているでしょう。 動作原理自体は単純で、 目的のファイルと依存関係にあるファイルとの更新時刻を比較して、 必要なら再実行すべき処理を行なう、というものです。 しかしメイクファイルには「推論規則」や 「(内部的に定義済みの)暗黙のルール」といったものがあり、 これらを多用されると初心者にはちょっとわかりにくいものになる場合があります。 そういう私もこういったルールを知らずに使っていたことがあり、 いざというときに苦労した覚えがあります。 そこで、これを機会にチュートリアルとしてまとめておくことにしました。 なお、ここで使用した Make は GNU Make version 3.80 です。 Make の基 マクロ ターゲット指定と疑似ターゲット 推論規則と拡張子 暗黙のルール ファイルのインクルードとメイクファイルの階層化 【参考文献】 「

  • Page not found - ファイヤープロジェクト

    The page you are trying to reach does not exist, or has been moved. Please use the menus or the search box to find what you are looking for.

  • I/Oの多重化 - s-kita’s blog

    I/Oの多重化(I/O multiplexing)2つ以上のI/Oに対して、どれかが入出力可能になった場合の通知をカーネルに依頼する機能 I/Oの多重化が用いられる状況クライアントが複数のディスクリプタ(普通はstdinとネットワークソケット)を扱っている時 クラインとが複数のソケットを同時に扱う場合 TCPサーバーが、リスニングソケットを接続済みソケットを同時に扱う場合 サーバーがTCPとUDPの両方を扱っている場合 サーバーが複数のサービスや、複数のプロトコルを扱う場合 I/OモデルブロッキングI/O 非ブロッキングI/O I/Oの多重化 (select, poll) シグナル駆動I/O (SIGIO) 非同期I/O (aio_関数群) ブロッキングI/Oモデル 最も一般的に用いられる。 非ブロッキングI/Oモデル ソケットを非ブロッキングに設定することは、そのソケットに要求したI/O

    I/Oの多重化 - s-kita’s blog
    kicyon
    kicyon 2013/01/10
    [i/o]
  • mixiがはまったmemcached(or libevent?)の問題を調べる人たち

    Neal Sato @nealsato 二日とも複数台のmemcachedが連続して落ちました。コアは吐かずにストンと落ちるので、原因追及に時間がかかりましたが、memcachedへの接続数が異常に多いと落ちる事は再現できました。 #mixi 2010-08-12 02:33:00 Neal Sato @nealsato memcachedが大量の接続を受けると突然停止をするので、memcachedへの接続数を減らし安定運用中。外部からの過剰アクセスではなく、サーバ追加→クライアント数増加→停止。 2010-08-12 08:45:50 Masahiro Nagano / 長野雅広 @kazeburo ファイルディスクリプタが不足してmemcachedが落ちたとして、そのときには、3万強の接続となってるはず。3万強の接続となるにはアプリケーションサーバ側のmax clientが平均60とし

    mixiがはまったmemcached(or libevent?)の問題を調べる人たち
  • memcached

    記事は当初HTMLに整形せずに掲載してしまい、ご覧になった方にはご不便をおかけしました。お詫び申し上げます。 consistent hashingの記事でmemcachedが名前だけ出てきたので少し調べてみた。 memcachedは単純なキーと値のペアによる分散キャッシュサーバ。高速で、非常に台数にスケールすることが利点という。ほとんど設定いらずでインストールしてそのまま起動できる。 動的に生成するウェブページのキャッシュ等に用いられる。キャッシュの他HTTPのセッション情報のような消えてしまっても致命的でない情報の保持に使われることもある。検索してみると国内でもmixiやはてな等で広く使われているようだ。各種言語のクライアントライブラリも多い。 目次 libevent クライアント1万台問題 memcached Ruby-MemCache libketama libevent mem

    memcached
  • C初心者がmemcached-1.4.5を追いかける。(1) - developer's diary

    http://memcached.org/よりDLしたソースをスーパーpre記法ではてなに貼りつけてmainから少しずつ読んでいこう。 memcached.c int main (int argc, char **argv) { int c; bool lock_memory = false; bool do_daemonize = false; bool preallocate = false; int maxcore = 0; char *username = NULL; char *pid_file = NULL; struct passwd *pw; struct rlimit rlim; char unit = '\0'; int size_max = 0; /* listening sockets */ static int *l_socket = NULL; /* udp s

    C初心者がmemcached-1.4.5を追いかける。(1) - developer's diary
  • ファイル入出力の基本 (IO モデル) を勉強する - フリーフォーム フリークアウト

    移転しました http://please-sleep.cou929.nu/20121103.html

    ファイル入出力の基本 (IO モデル) を勉強する - フリーフォーム フリークアウト
  • Seer Interactive Blog

    Artificial Intelligence Our take on how we can leverage AI to transform your business

  • PHPの実行をPHPのソースコード(C言語)のレベルで見る方法 - suztomoのはてなダイアリー

    PHPはソースコードを読めばわかるとおりC言語で書いてあります。 そのC言語の中でPHPがどんな処理をしているのかをデバッガであるgdbを用いて見ることができるのでそれを紹介します。まぁ普通のgdbの使い方なんですが:p ソースをダウンロードしてコンパイル PHP-5.2.6のソースをダウンロードします。 まず./configureするとのMakefileができます。 このMakefileの中で-gオプションがついていることを確認しましょう。*1 これがデバッガ(gdb)用のオプションで、コンパイルされたバイナリファイルにソースコードとの対応付けができます。 次にmakeします。時間がかかります。 サンプルファイル makeしている間に次のようなPHPファイルを作成しましょう。 <?php $i = "12"; $k = intval($i); ?> これは文字列の"12"をintval関

    PHPの実行をPHPのソースコード(C言語)のレベルで見る方法 - suztomoのはてなダイアリー
    kicyon
    kicyon 2012/12/27
  • GDBデバッガを利用してPHP内部の動きを知る - PHPソースコードリーディング入門その2 - id:anatooのブログ

    前回: PHPソースコードリーディング入門(とっかかり編) - id:anatooのブログ PHPのソースコードを読んでいく際に、どうしてもソースコードを読むだけではよくわからない部分というのが出てくる。この記事ではPHPをデバッガで動かして内部の働きを明らかにする方法を書く。 ソースコードの取得 gitから取ってくる。 $ git clone https://github.com/php/php-src.git デバッガで動かせるようにビルドする 余計な拡張は無しで、デバッガで動かせるようにビルドする。configure時に--enable-debugオプションを渡す。 $ cd php-src $ ./buildconf $ ./configure --disable-all --enable-debug $ make GDBで動かす makeした後、コマンドラインで動かせるバイナリは

    GDBデバッガを利用してPHP内部の動きを知る - PHPソースコードリーディング入門その2 - id:anatooのブログ
    kicyon
    kicyon 2012/12/27
  • gcc+gdbによるプログラムのデバッグ 第3回 gdbの便利な機能、デバッグの例

    いくつかのバグを含むツリーソートのプログラムを用意しました。 treesort1.c #include <stdio.h> #include <stdlib.h> struct node { int value; struct node *left; struct node *right; }; void treeadd(struct node**, int); void treewalk(struct node*); void treefree(struct node*); int main(int argc, char **argv) { struct node *rootp; int i; int array[15] = {50, 12, 18, 70, 41, 19, 91, 1, 7, 6, 81, 65, 55, 20, 0}; for (i = 0; i < 15; i++)

    kicyon
    kicyon 2012/12/27
  • 第1回 マイクロアドに聞く、職人集団が支える広告プラットフォームの世界 | gihyo.jp

    ユーザがWebサイトにアクセスした瞬間にリアルタイムにオークションを行い、配信する広告を決定するしくみが「RTB」です。このRTBによる広告配信サービスを提供するマイクロアドに、システムのインフラやアプリケーションの部分などについてお話を伺いました。 わずか5ミリ秒で広告を選定し入札 インターネットにおける広告配信システムのいとつとして、大きな注目を集めているのが「RTB」(⁠Real Time Bidding)というしくみです。これは、広告枠を持つWebサイトにユーザがアクセスした際、そこに表示する広告をリアルタイムにオークション形式で選定するというもの。媒体社が広告収益の最大化を目的に利用する「SSP」(⁠Supply Side Platform⁠)⁠、広告主が広告効果の最大化を目的に利用する「DSP」(⁠Demand Side Platform)という2つのプラットフォームの間で、1

    第1回 マイクロアドに聞く、職人集団が支える広告プラットフォームの世界 | gihyo.jp
  • throw Life - AndroidのHandlerとは何か?

    AndroidでWeb APIを使う場合、マルチスレッドによるユーザビリティ向上を以前のエントリで説明しました。 AndroidアプリのUIはシングル・スレッド モデルです。 単純にマルチスレッドにしてUIの操作をしてしまうと、CalledFromWrongThreadExceptionでアプリがダウンしてしまいます。 これを回避する仕組みがHandlerです。 Handlerの仕組みを簡単に説明しようと思ったのですが、 またもや長くなってしまったので、先にまとめます。 AndroidUI操作はシングル・スレッド モデル ユーザビリティ向上の為にはマルチスレッドが必要 Handlerで実現 Handlerを使わない場合に起きる例外は実行スレッドのチェックで発生 Handlerを使うと、UI Threadの持つキューにジョブを登録できる キューはUI Threadにより実行される

  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

    はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
  • PHP: 例 - Manual

    <?php function print_line($fd, $events, $arg) { static $max_requests = 0; $max_requests++; if ($max_requests == 10) { // 10 回書き込んだらループを抜けます event_base_loopexit($arg[1]); } // 行を表示します echo  fgets($fd); } // ベースとイベントを作成します $base = event_base_new(); $event = event_new(); $fd = STDIN; // イベントフラグを設定します event_set($event, $fd, EV_READ | EV_PERSIST, "print_line", array($event, $base)); // イベントベースを設定します ev

  • libeventでechoサーバをつくってみた - Rhythm & Biology

    memcachedで使われていることで有名なlibeventを試してみました。 以前libevを試したことがあるのですが、libeventの方が少し書きやすいという印象です。パフォーマンスに関してはlibevのほうが上という噂ですが。 libeventやlibevに関して少し説明しておくと、これらは非同期IOを実現するライブラリです。他にもシグナルやタイマー処理といったこともできるらしいです(まだ詳しく調べていません)。 非同期IOのAPIはOSごとに独自のもの(epoll, kqueueなど)があるのですが、libeventなどを利用するとその違いを隠蔽してくれるため、移植性が高まります。freebsdで開発してlinuxで動かすということだって出来ますね。 インストールに関しては、macの場合にはmacportsで簡単に入れられますし、linuxであればyumやapt-getで簡単に導

    libeventでechoサーバをつくってみた - Rhythm & Biology
  • memcached : MYH

    reading memcached は、今回で読んでおきたい主要な部分は全部追えたので最終回です。後は必要に応じてちょこちょこと読んでいっても問題ないでしょう。 今回は核心部分であるデータの取得と挿入部分を読んでいきましょう。 まず get コマンドから読んでいくことにします。memcached.c の 2522 行目の process_get_command() 関数を見ていきます。 process_get_command 関数 この関数のプロトタイプ宣言は次のとおりです(実際のソースにはプロトタイプ宣言はありません)。 void process_get_command(conn *c, token_t *tokens, size_t ntokens, bool return_cas); c は connection, tokens は get の引数達、ntokens は引数リ

  • IT news, careers, business technology, reviews

    Q&A: How Thomson Reuters used genAI to enable citizen developers

    IT news, careers, business technology, reviews