タグ

cに関するclouderのブックマーク (19)

  • livedoor Techブログ : 本当はもっと速いImlib2: Imlib2でもImageMagickと同じ仕組みでサムネイル画像生成を速くする方法

    こんにちは!こんにちは! 開発部のやましーです。 今回はSmallLightの中でやっている細かいことについてです。 SmallLightとは SmallLightとは、2010年末にlivedoor labs EDGEにてリリースした画像サムネイル生成用Apacheモジュールです。 JPEG画像の読み込み処理の最適化 JPEG画像は、その圧縮アルゴリズムの特性で読み込み時に1/2、1/4、1/8にダウンスケーリングすることができます。libjpegでは画像読み込み時にjpeg_decompress_struct構造体のscale_denomにダウンスケーリング指数を指定します。 SmallLightではこれをJPEGヒントオプションとして実装しています。パターン文字列に jpeghint=y を付与することで有効になります。(SmallLightの README の100行目) JPEG

  • Animation Basics -- IM v6 Examples

    Index ImageMagick Examples Preface and Index GIF Animations and Animation Meta-data Frame Disposal Methods Dispose None - overlay each frame in sequence Dispose Previous - preserve background canvas Dispose Background - clear to background Studying Animations Identify - information about an animation Adjoin - splitting into individual frame images Coalesce - fill out frames completely Frame Montag

  • libjpeg-turboでjpegの変換が速くなる - かみぽわーる

    巷でlibjpeg-turboというやつが速いというのを聞いたので試してみる。 今回はaptで入れた以下のモジュールでベンチマークしてみた。いちおうサーバはさくらのVPSでOSはUbuntu 10.04 LTSです。 Image::Magick 6.5.7 Imager 0.72 GD 2.39 Image::Imlib2 2.02 ふつうにaptで入れる。 sudo aptitude install perlmagick libimager-perl libgd-gd2-perl libimage-imlib2-perl cpanm Image::Resizelibjpeg-turboを入れる。 wget http://downloads.sourceforge.net/project/libjpeg-turbo/1.0.0/libjpeg-turbo_1.0.0_amd64.deb s

    libjpeg-turboでjpegの変換が速くなる - かみぽわーる
  • Imlib2でImageMagickより3倍高速かつ美しいサムネイル画像の生成 - 昼メシ物語

    この記事の概要 Imlib2を使って画像のサムネイルを生成してみたところ、ImageMagickより3倍速かった。 また一般的には、Imlib2の方が画質が悪いとされているが、パラメータを調整することで、十分に美しいサムネイル画像を得ることができた。 はじめに Imlib2は画像処理ライブラリ。mixiの発表資料大規模画像配信とPerl によれば、mixiは高速に高品質なサムネイルを生成するために、ImageMagickでなくImlib2を選んでいる。 上記資料の中では、以下のように説明されている。 速度 Epeg > Imlib2 > Imager >>> ImageMagick 画質 ImageMagick > Imlib2 >>> EpegImlibの画質は多少ImageMagickに劣るが、速度は十分に速い、とのこと。 一方で、404 Not Foundという記事では、ImageM

  • LL脳な人でもこれぐらいは覚えておくとうれしいgdbのつかいかた。または猫でもわかるgdb講座 - tokuhirom's blog

    LLつかってても「ばすえらーになるー」っていう状況ってたまにあるわけですが、LL しか普段つかわないゆとりは、ここでお手あげになってしまったりすることがままあります。 で、「ばすえらーになるんですが」ってときの最低限これだけはやってみたらどうか、という話。「えー、わたし gdb とかわかんないしー」とかいってる人でもこれぐらいならできるんじゃないかなーっと。 perl t/00_load.tというコマンドで segv するという場合、gdb をつかって % gdb --args perl t/00_load.tとうつ。 すると、以下のようにプロンプトがでるので、"run" とうつ。これでスクリプトがはしりはじめる。 % gdb --args perl t/00_load.t GNU gdb (GDB) 7.0-ubuntu Copyright (C) 2009 Free Software

  • 第九研究室だより:オンラインCHATを作るよっ!

  • TheC10kProblem - 「C10K問題」(クライアント1万台問題)とは、ハードウェアの性能上は問題がなくても、あまりにもクライアントの数が多くなるとサーバがパンクする問題のこと

    TheC10kProblem - 「C10K問題」(クライアント1万台問題)とは、ハードウェアの性能上は問題がなくても、あまりにもクライアントの数が多くなるとサーバがパンクする問題のこと 目次 この文書について C10K 問題 関連サイト まず読むべき I/O フレームワーク I/O 戦略 1. 各スレッドが複数のクライアントを受け付ける. そしてノンブロッキング I/O と レベル・トリガ型の完了通知を利用する. 伝統的な select() 伝統的な poll() /dev/poll kqueue() 2. 各スレッドが複数のクライアントを受け付ける. そしてノンブロッキング I/O と 変更型の完了通知(readiness change notification)を利用する. kqueue() epoll リアルタイム・シグナル fd 単位のシグナル (Signal-per-fd)

  • 『Cプログラムの中身がわかる本』感想 - Kentaro Kuribayashi's blog

    「ポチのプログラミング講座」と銘打たれた『Cプログラミングの中身がわかる』という書籍を読みました。どこで知ったのか忘れてしまいましたが、どなたかのブログで良書として紹介されていたです。 Cプログラムの中身がわかる 作者: 日向俊二出版社/メーカー: 翔泳社発売日: 2008/02/20メディア: 単行(ソフトカバー)購入: 4人 クリック: 42回この商品を含むブログ (14件) を見る タイトルや表紙など、一見「なんだこれ……」という感じなのですが、中身はプログラムにおける様々な要素(四則演算、制御構文、配列・ポインタ・構造体を用いたプログラム、マルチスレッド等)を、簡単なCのコードとそれに対応するアセンブラのコードによって、実際にどのようにプログラムが実行されるのかを逐一解説したで、僕など、理屈ではわかってるつもりでも実際にはあまり馴染みのない話なので、ためになりました。 た

    『Cプログラムの中身がわかる本』感想 - Kentaro Kuribayashi's blog
  • C で split をどう書くかという、昭和時代の自転車置き場の議論 - kazuhoのメモ置き場

    でまあというわけで split/join とかしたい時は 99% 速度なんて気にしてないという法則から、普通に vector かえす split がとりあえずあったりいいんじゃないかなぁとか思うわけです。 split/join - はじめてのにき(2009-03-17) C++ の場合であれば 100% 同意です。ただ、good old な C 言語の場合はどうするのがいいのかな、と思ったのでした。メモリ確保したりしたら、解放めんどくさいし。で、自分だったら、 size_t split_str(char *s, int split_char, char **list, size_t max_count) { size_t count = 0; if (count < max_count) list[count] = s; count++; for (; *s != '\0'; s++) {

    C で split をどう書くかという、昭和時代の自転車置き場の議論 - kazuhoのメモ置き場
  • strtok

    > 静的なバッファ… "変数領域" に確保する配列のことです。例えば、関数の外で定義した配列は "静的" になります。(関数内で定義することもできますが…詳細は割愛します) > ポインターとはconst array … この場合の "3453/5252" は "定数領域" にありますので const になります。ですので char *chk = "3453/5252" とすると chk に代入されるのは const ポインタです。 関数内で char chk[] = "3453/5252" とすると、文字列はスタック上の領域(auto 変数)にコピーされ、chk にはその領域を指すポインタが代入されます。これは const ではありません。 > chkにはユーザーが入れた値を代入したいので… いずれにしても入力された文字列を蓄えておく領域(文字配列・バッファ)は必要でしょうし、予想される文

    strtok
  • Epeg で JPEG ファイルのサムネイルを高速に生成する - bkブログ

    Epeg で JPEG ファイルのサムネイルを高速に生成する Epegは JPEG ファイルのサムネイル (縮小画像) を高速に生成するライブラリです。JPEG に特化した手法でサムネイルの処理を行うため、内部的に画像をビットマップに伸張せず、高速かつ少ないメモリで処理できるのが特徴です。 インストール Epeg は Debian パッケージになっていないようなので、ソース (ダウンロード) からインストールしました Epeg は内部的に libjpeg を使っているため、Debian GNU/Linux では sudo apt-get install libjpeg62-dev で事前にインストールしておく必要があります。 Epeg そのものは ./configure && make && sudo make install でビルド・インストールできます。 サンプルコード Epeg の

    clouder
    clouder 2009/07/02
    これは使えそう
  • エンコーディング検出ライブラリ「encdet」をリリース - spiritlooseのはてなダイアリー

    さて、久しぶりなわけですが。 タイトルの通りリリースしました。 http://wiki.github.com/spiritloose/encdet http://github.com/spiritloose/encdet/tree/master Mozillaの「Mozilla Universal Charset Detector」というやつのCバインディングです。 MozillaのMercurialリポジトリからコピってきて、Cのインターフェースをつけてautotools化してみました。 http://www.void.in/wiki/Universalchardet っていうのもあったんですが、家の方が結構変わってたり、 autotools化したかったり、もろもろあったので作りました。 今のところ LinuxとFreeBSDで動作確認してます。 #include <encdet.h>

    エンコーディング検出ライブラリ「encdet」をリリース - spiritlooseのはてなダイアリー
    clouder
    clouder 2009/06/19
    ひさびさだなw
  • Emacs + GDB チートシート - higepon blog

    Emacs + GDB を利用したいならば、何よりも GNU Emacs Manual: Debuggers(英語) を読むことを強くおすすめします。 和訳も存在しますが内容が古く、マウスを利用した操作やグラフィカルな機能についての記述がありませんでした。 マニュアルを読んで理解したあとは実践で覚えていくわけですが、以下にまとめたチートシートを利用すれば時間が節約できるかもしれません。 もしも便利な機能に関して漏れがあれば是非教えてください。 .emacs ;;; GDB 関連 ;;; 有用なバッファを開くモード (setq gdb-many-windows t) ;;; 変数の上にマウスカーソルを置くと値を表示 (add-hook 'gdb-mode-hook '(lambda () (gud-tooltip-mode t))) ;;; I/O バッファを表示 (setq gdb-use

    Emacs + GDB チートシート - higepon blog
  • C言語ポイント学習 (文字列と2次元配列)

    C言語初心者向けのページです。 づまづきやすい、「ポインタと配列」についてまとめてみました。 内容は少ないですが随時ふやしていきたいと思っています。 配列とポインタ(その1) 配列とポインタ(その2) 文字列・ポインタと配列 文字列と2次元配列 文字列の比較 C言語で文字列の配列を表現するにはどうしたら良いでしょう? ここでは、下記ようなの名簿を管理するプログラムを想定して 話を進めていきます。 ・名簿 ┏━━━━━━━━━━━━━━━━━━━━━┓ ┃Asano ┃ ┃Fukushima ┃ ┃Furuichi ┃ ┃Hirao ┃ ┃Nanbo ┃ ┗━━━━━━━━━━━━━━━━━━━━━┛ 文字の配列の配列 上記の名簿(と言っても名前しかないですが。)を配列を使って表現すると 以下のようになります。 char Meibo[5][10] = { "Asano", "Fukus

  • iPhoneでインラインアセンブラを使う(プログラム編[6] 画像のグレースケール化) - 強火で進め

    iPhoneでのインラインアセンブラの使い方を簡単に説明してきましたが最後となる第6回では実用的なサンプルとして「画像のグレースケール化」の解説をします。 サンプルのインラインアセンブラの部分はこの様になります。 static __inline__ void asmGrayscale(unsigned char *bitmap, int bitmapSize){ int div3 = 21845; // 16:16の固定少数での 1/3 の値 __asm__ volatile ( "1: \n\t" // メモリからロード "ldrb r0, [%[src_bitmap]], #1 \n\t" // r0 = R値 "ldrb r1, [%[src_bitmap]], #1 \n\t" // r1 = G値 "ldrb r2, [%[src_bitmap]], #2 \n\t" // r2

    iPhoneでインラインアセンブラを使う(プログラム編[6] 画像のグレースケール化) - 強火で進め
  • C でリライトされてるジョブサーバー gearmand を試した - 日向夏特殊応援部隊

    いつの間にやら http://gearmanproject.org/doku.php にて、gearman library 0.1 が C で書き直されてました。MySQL で有名な Brian Aker らが開発しているようです。 これは期待出来るかも? 追試 (2009-01-16T21:49:11+09:00) 0.02 がリリースしてたので試してみました。下のサンプルは正常に安定して動いてました。 一応報告。 インストール CentOS 5.2 で試してみました。 libevent のインストール CentOS の libevent は yum でインストールすると、1.1a と言うとんでもなく古いもので、これでは gearman library はコンパイル出来ません。従ってソースからインストールします。 $ cd /usr/local/src $ wget http://mon

    C でリライトされてるジョブサーバー gearmand を試した - 日向夏特殊応援部隊
  • sizeof演算子

    せりか式 - C 言語チュートリアル - sizeof演算子 sizeof演算子について検索してくる人が多いようなので,真面目にsizeof演算子についても書いておくことにします. 簡単に言うと,sizeofに渡された型や変数のメモリサイズを調べるものです. sizeof演算子は2種類の使い方があります. sizeof(型) sizeof 変数や定数,あるいは式など 前者の型を与える方は特に悩む必要は無いと思います. 単に指定した型が利用するメモリサイズを返すものです. 問題は,後者の変数や定数を渡す方です. sizeofに変数を渡した場合,その変数名で確保されているメモリサイズを返します.

  • セマフォを使った排他制御

    排他制御とは、あるメモリやある操作を、同時に複数のプログラムからアクセスあるいは実行させないようにするための処理です。 プロセス間で排他制御をするには、グローバル変数は使えません。グローバル変数はプロセスごとにもつものだからです。 共有メモリの1バイトをフラグとして使ったりすると、フラグを立てた瞬間に2つ以上のプロセスが同時に 走ってしまう危険性があります。ファイルを作成し、ファイルが存在するか否かをフラグに使っても同じような 問題があります。 セマフォとは以上のような問題点を解決するための仕組みです。セマフォはOSが用意するグローバルなフラグのようなもので、 そのフラグを待っているプロセスが複数あったとしても、セマフォから実行の許可が得られるプロセスを1つ に制限させることができます。 サンプルプログラムを考えます。このプログラムは親が500バイト共有メモリを作成します。 そして、for

    clouder
    clouder 2009/01/07
    セマフォについて
  • Index of /

    Index of /

  • 1