20 Jul 2012 New Programming Jargon Stack Overflow – like most online communities I've studied – naturally trends toward increased strictness over time. It's primarily a defense mechanism, an immune system of the sort a child develops after first entering school or daycare and being exposed to the wide, wide world of everyday sneezes and coughs with the occasional meningitis outbreak. It isn't alwa
16 Apr 2012 Learn to Read the Source, Luke In the calculus of communication, writing coherent paragraphs that your fellow human beings can comprehend and understand is far more difficult than tapping out a few lines of software code that the interpreter or compiler won't barf on. That's why, when it comes to code, all the documentation probably sucks. And because writing for people is way harder t
「グローバルトランザクション」という言葉の意味について、昨日の飲み会で議論になったので、まとめ。 グローバルトランザクションと分散トランザクション グローバルトランザクションは、分散トランザクションと同義です。グローバルトランザクションは複数のリソースマネージャを含むトランザクションを指します。一方、ローカルトランザクションは単一のリソースマネージャ(DB等)のみで構成されるトランザクションを指します。 http://download.oracle.com/docs/cd/B14117_01/java.101/b10979/xadistra.htm#i1066628 A distributed transaction, sometimes referred to as a global transaction, is a set of two or more related transac
ディスクI/Oの並列度が1000超えてないDremelクローンって… Apache DrillやCloudera ImpalaといったDremelインスパイア系のリアルタイム低遅延でカラム型なデータストア的何かがいくつか出てきて、最初はちょっと身構えた(Amazon RedshiftはRDBクラスタって感じでDremel系とは違うかも)。Dremelの立場危うし! しかし、よくよく話を聞いてみるとどれも並列度が数十って規模らしく、ちょっとガッカリ+安心した次第。オープンソースでDremel的なものを作るなら、俺ならこうするぜ!ってアイディアを今朝思いついたので、自分で実装する気はないけど書き残しておきたい。 ビッグデータの最大のボトルネックはディスクドライブ 先日公開されたBigQueryのホワイトペーパー、英語だし基本はDremelペーパーを読みやすくした程度の内容なのであまりまじめに読
<Google App Engine Stackの構成(引用元)> GAE Stackの特徴 現在の利用状況 8万以上のアプリを収容 140M PV/day 20万人以上の開発者が利用 統合環境を提供 サーバーの構築や管理が不要。デプロイが容易 ログ管理、管理コンソールや各種ツールを提供 スケーラブルなWebアプリ構築のためのベストプラクティス利用を促す環境 個々のリクエストの処理時間やリソース消費を制限 ステートレス設計と内蔵APIの利用 Datastoreによるパーティション化されたデータモデルの利用 非常に高いスケーラビリティと可用性を備えるGoogleのクラスタ環境を簡単に利用できる 自動クラスタリングによる負荷分散と高可用性を提供 アプリの負荷状況に応じてApp Serverを動的に増減 アプリ間の隔離性を維持、個々のアプリの安全性とパフォーマンスを確保 既存のGoogleテクノ
Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at
熟練したCプログラマは誰でも、 自然とさまざまなイディオムやテクニックを身につけているものです。 新しい言語を学ぼうとすると、時にこれらのイディオムに慣れすぎたせいで、 同じことを別の言語でどう実現するのかわからなくなってしまいます。 そこでここに、C のよく知られたテクニックと、対応するDでのやり方を集めてみました。 C にはオブジェクト指向関連の機能はありませんので、 オブジェクト指向の話は C++ プログラマのための D 言語 に分けて書きました。 C のプリプロセッサについては Cプリプロセッサ vs D で扱っています。 型のサイズを取得する 型の最大・最小値を取得する 組み込みデータ型 特殊な浮動小数点数の値 浮動小数点数の剰余 浮動小数点数の比較でのNaNの扱い assert 配列要素の初期化 配列の要素ごとのループ 可変長配列の作成 文字列連結 整形print 関数の前方参
初めまして、リコーの濱田です。このたび私も本ブログを担当することになりました。今後ともよろしくお願いいたします。 本エントリではデータベースに関する技術トピックとして、MySQL 5.1 から導入された機能であるパーティショニングについて書こうと思います。少し長くなりそうなので、「基本知識編」「性能検証編」の2回に分けて書くことにします。 今回は「基本知識編」として、パーティショニングの概要と基本的な使い方について紹介します。 パーティショニングの概要 パーティショニングとは、事前に設定されたルールに従ってデータをパーティションと呼ばれる部分的なテーブルに分割する仕組みです。 データ挿入時には、設定ルールに従ってデータが該当するパーティションに自動的に振り分けられます。データ参照時には、オプティマイザがクエリから必要なパーティションを判断し、該当するパーティションのみにアクセスします。これ
An upcoming paper, "The Case for RAMClouds: Scalable High-Performance Storage Entirely in DRAM" (PDF), makes some interesting new arguments for shifting most databases to serving entirely out of memory rather than off disk. The paper looks at Facebook as an example and points out that, due to aggressive use of memcached and caches in mysql, the memory they use already is about "75% of the total si
後で書く書いた。 第100回カーネル読書会にLinusをはじめとするLinux Kernel Hackersにいっぱいいっぱい来てもらった。 時系列に言うと、こんな感じだ。2008年の春頃(調べてみたら、夏ではなくて春頃に2009年のKernel Summitは日本でやるとアナウンスされていたようだ)から、2009年のKernel Summitが開催されるので、そこでカーネル読書会BoFを開催して、そこにLinusを呼ぼうというようなことを言っていた。id:publichtmlに指摘されて気がついたのだけど、1000speakersでそんなことを言っている。*1 カーネル読書会の作り方 1000 speakers conference, 2/23/'08View more documents from Hiro Yoshioka. それ以来、カーネル読書会の前説で、Kernel Summi
テラバイトデータや構造化知識研究に関する過去の記事です。 1990年6月 コンピューターの中央処理装置4台を並列的につなぎ、人間のように推理したり連想したりするコンピューターの模擬実験に、九州大学の研究グループが成功した。1991年度にも20台に増結する計画で、最終的には1万台をつなぎ、人間の思考そっくりの柔軟性に富んだコンピューターシステムを目指す。キャリアウーマン並みの有能秘書や、建物の形状を判断できる掃除ロボットの開発にもつながると期待されており「人工知能」開発競争に一石を投じそうだ。 九州大学で実験に成功 模擬実験を行ったのは、九大総合理工学研究科の雨宮真人教授(情報システム専攻)のグループ。雨宮教授らは、記憶した知識で推論や連想を行う人間の思考回路網に着目。「食物-果物-黄色-酸っぱい-レモン」など属性や因果関係でつながる情報を与えて連想ネットワークを構成。このネットワーク網をコ
Starting from version 1.4 Java has a new library called NIO. Everyone who writes scalable network software uses this library because it supports non-blocking network operations. Without this library, you will have a separate Thread for each connection, and Java doesn’t scale well with threads. Of course, this library is not just about non-blocking network operations. It also accelerates access to
01:29 09/10/28 七不思議HA 七不思議ハードオオイカリパッチ深遠100F到達しました。 やった! (→ リプレイファイル) サブ剣に 日本刀[封必-脱封守]+17。盾は深層で[潰][爆][祓]を順次追い出して左のスクリーンショットが最終形。 [冷]も消してよかったな。保存の壺フィーバーが来たのでなんとかクリアできた感じでした。 普通の引きだと70F前後で大抵力尽きる。 普通にバランスのとれてるノーマル版に、 ・シレンで言うところのカンガルー3種を投入し ・主人公LVアップ時のHPと攻撃力の上昇量を減らし ・床落ちアイテム数を減らし敵のドロップ率も減らし、 たらどうなるでしょうかというパッチ。このゲーム4倍速まで上がるのでオオイカリ状態がより一層ヤバい。 代わりに幾つかの印の効果が強化されてて、レアアイテム出現率がやや上がっているので、 その辺りを鍵に頑張ることになります。 ト
17:17 08/01/30 ところで C++ か JavaScript か PHP が批判されてるのを見ると思わず何か言いたくなってしまうのだけど、 考えてみるに、他の言語だと割とどうでもいい。そういう意味では、今の自分が好きなプログラミング言語は この3つということになるのかなあ……などと徒然なるままに思いました。 単純に、つきあいが長い方から3つというだけかもしれない。 いやしかし、PHPに対する批判の多くはその通りであるとは思うのですが。 Attacking PHP で触れられてる「リストであり辞書でもある」 array ってあれは普通に便利じゃないです? 結構他の言語でも欲しくなるのですが。 17:08 08/01/29 PHP で Yコンビネータ PHP じゃ Y コンビネータつくれない と聞いて。 <?php // PHPでは関数呼び出しは 関数名(...) か 変数(...
PFI セミナー GPU コンピューティングの現状とスーパーコンピューティングの未来を見る。予想以上に遥かにおもしろかった。説明も分かりやすいしなにより @nushio さんの話し方が心底楽しそうなのがとてもよい :-) エンジニアにせよ研究者にせよ、一番大事なのは自分のやっていることに情熱をかけられるか、楽しんでいるか、ということに尽きると思う。上記のリンクは放映されたものの録画なのだが、スライドはこちら。トークもちょうど1時間程度なので、時間があればスライドだけではなく、トークの最初の数分だけでも見る(というか聞く)ことをお勧めする。先日のウェブ学会のときも思ったが、東京にいなくてもこういうのが聞ける時代になって、すごく便利だなあ。(あとから見ることもできるし、文字通り時空を超えている) GPGPU ってなんなのよ、というと、これは General Purpose computing
このあたりの内容を卒業研究にする予定で、中間報告書まで書いたけど、整理と裏付けが全然追いつかなくて卒論なんて書けそうにないので、とりあえずテキトーにブログに書いておくなど。 データストアには、状態を永続化して共有する機能と、データモデル(状態を操作する意味論)を規定する機能の、2つの機能がある。この2つの機能を、より使いやすく、より高速に、よりスケーラブルに提供することが求められる。そうでないとシステム全体が成り立たない。 冗長化とか負荷分散とか、ハードの質に頼らない高性能なシステムを構築したいときは、「状態を持たないようにする」のが定石になる。同じ状態を2台のホストで同期し続けたり、状態を分割しながら整合性を保ち続けるのは、非常に難しい。このため、状態は共有データストアに保存しておくのがもっとも簡単で、現実的な解になる。 MVCアーキテクチャにおけるViewとControllerはMod
ブログ(iiyu.asablo.jpの検索) ホットコーナー内の検索 でもASAHIネット(asahi-net.or.jp)全体の検索です。 検索したい言葉のあとに、空白で区切ってki4s-nkmrを入れるといいかも。 例 中村(show) ki4s-nkmr ウェブ全体の検索 ASAHIネット(http://www.asahi-net.or.jp )のjouwa/salonからホットコーナー(http://www.asahi-net.or.jp/~ki4s-nkmr/ )に転載したものから。 --- オライリー・ジャパンの矢野さんから、新刊が送られて来た。いつもありが とうございます。 http://www.amazon.co.jp/exec/obidos/ASIN/4873114357/showshotcorne-22/ 並行コンピューティング技法 ―実践マルチコア/マルチスレッドプロ
TAKESAKOさんにお誘い頂き、shibuya.pmでLux IOについて話してきました。 Perlとはほとんど関係無いですが、NoSQL特集ということで呼んで頂きました。 以前のKey-Value Store 勉強会よりも少しだけ設計方針などを交えましたが、 あんまり変わらない資料で恐縮です。一応、以下に載せておきます。 Lux IO - Shibuyapm View more documents from mogwaing. NoSQL vs NoKVS みたいなのもテーマとしてあったらしく、発表の後半の奥一穂さんなどは、NoSQLではなくて、やっぱりリレーショナルモデルでACID性があって安定していてそこそこ高速なオープンソースのRDBMSをスケールさせて使いたいとのことで、InclineとPacificという新しいプロダクトの紹介をされていました。 KVSの基盤となるD
開発しているシャーディングミドルウェアである Incline と Pacific については YAPC::Asia 2009 を始めいろいろな所で話をする機会をいただいてきたので、今回は、なぜ RDBMS ベースのアプローチを採用したのかという背景を中心に説明させていただきました。概念的な話が多くて分かりにくかったと思います(すみません)が、細かな点についてはパフォーマンスとスケーラビリティのためのデータベースアーキテクチャ (BPStudy#25発表資料)を参照いただければと思います。 また、中で出てきた「実体化ビュー」については、Materialized view - Wikipedia, the free encyclopediaが良くまとまっているかと思います。Incline は一言でいうと、RDBで構成されるshard群の上で read-only かつ eventually co
ブログ(iiyu.asablo.jpの検索) ホットコーナー内の検索 でもASAHIネット(asahi-net.or.jp)全体の検索です。 検索したい言葉のあとに、空白で区切ってki4s-nkmrを入れるといいかも。 例 中村(show) ki4s-nkmr ウェブ全体の検索 ASAHIネット(http://www.asahi-net.or.jp )のjouwa/salonからホットコーナー(http://www.asahi-net.or.jp/~ki4s-nkmr/ )に転載したものから。 --- http://iiyu.asablo.jp/blog/2009/12/17/4760647 やっと出たAIMA(Artificial Intelligence: A Modern Approach)第3版 http://iiyu.asablo.jp/blog/2009/12/21/47678
渋川さん テストファーストが大好き。MindMapもキレイに書きこなしていた。 大川さん 製薬系の人はPythonを使う人が多い。ライブラリが豊富なことが理由らしい。(Rubyは少ない、とのこと) 根本さん iPhone(脱獄済み)を持ってました!いろいろ見せてもらい、自分のiPod touchと比較。カメラ機能があって、写真を撮った後に写真閲覧モードにシームレスに移動していたところに感動。おもてなしの美学だなあ。 小吉さん Python1.4から使用している方。総務なのに、Pythonを業務に使用して役立てているとのこと。 西尾さん Jython本を書いているとのこと。いつ頃でるのかな?楽しみだ。(飲み会での追記:最短で4月らしい)
19:27 08/02/29 不動点ふたたび LtU で "Data Types a la Carte" を読みました。これの鍵となる技は「型コンストラクタに対する不動点演算子」だと思うのだけど、 あれ、なんで俺これ考えたことなかったんだ…?と不思議に思うくらい楽しげなアイデアですね。てい。 // 不動点演算子 via テンプレート。Dで。 // // Haskell でいう"普通の"不動点関数 fix f = f (fix f) と同じようなもの // = の代わりに継承になっちゃってますけど、まあ似たようなものです class Fix!(alias F) : F!(Fix!(F)) {} 不動点演算の実装は本題ではないので、Yコンビネータみたいな無駄な複雑化はしない方針で。 さて、これを使って class Pair(T) { T left; T right; } 2個同じ型の値のペアを
_ jsstr.c http://d.hatena.ne.jp/Gimite/20080802/1217647596 の予想は正しげ。 JSString * js_ConcatStrings(JSContext *cx, JSString *left, JSString *right) { if (!JSSTRING_IS_MUTABLE(left)) { /* We must copy if left does not own a buffer to realloc. */ s = (jschar *) JS_malloc(cx, (ln + rn + 1) * sizeof(jschar)); if (!s) return NULL; js_strncpy(s, ls, ln); ldep = NULL; } else { /* We can realloc left's space
Presentations about Hadoop This is a list of presentations about Hadoop, by event and paper (newest first): Public Presentations A lot of these presentations are at local user groups. If there is not one in your area, start one! Take one of the existing talks and give it! Don't be afraid. The only thing to fear is trying to do live demos of MapReduce against a remote cluster. Most presenters avoid
JavaScriptが速くて、Rubyが遅い理由というエントリがあったのですが、コメントやトラックバック、追記などを読むと 実用上HotRubyがC Rubyより速いというわけではまったくない プリミティブ型の有無が原因という話はどうやら間違い のようです。 とはいえ「↓のベンチマークでHotRubyがC Rubyより速い」というのは事実です。これがなぜなのかちょっと気になったので考えてみました。 startTime = Time.new.to_f sum = "" 50000.times{|e| sum += e.to_s} endTime = Time.new.to_f puts (endTime - startTime).to_s + ' sec' これについてはRubyが遅いのは本当にBoxingのせいか?が参考になります。まず、C Rubyではベンチマークの += を << に書
yacc/lexとは Cでプログラミング言語の処理系を実装するのであれば、 多くの場合、yaccとlexというツールを使います。 実のところ、Cとyacc/lexで簡単なプログラミング言語を作る、というのは、 以前、「C言語ヨタ話 」で書いた「 電卓を作ってみよう」 の焼き直しになります。yaccとlexの説明もそちらに簡単に書いたので、 そちらを見てください――と言いたいところですが、 まあここでも軽く説明します。 内容的には重複、というかコピペしている部分もありますが。 プログラミング言語の処理系は、通常、以下のような手順を取ります。 字句解析 ソースプログラムを、「字句(トークン)」の並びに分割する処理です。 構文解析 トークンの並びから、解析木を構築する処理です。 この後、Cなどの機械語を吐くコンパイラや Javaのようなバイトコードを吐くコンパイラなら、 「コード生成」という処理
k.inabaさんの「一時変数のために使用している謎のforループを取り除く」というネタに反応した自分の2/19の日記のネタをさらに研究してみる。 Pythonでは式と文が明確に分かれている。Rubyは、「a = b」は式だが、Pythonでは文である。 Pythonの文には以下のものがある。 代入文 if文 for文 while文 break文、continue文 print文 def文 class文 raise文 など 他にもあるかもしれないがとりあえずこの程度。ここで考えたいのは代入文である。変数は初期化、代入、参照、削除の4つの操作しかない。web系の用語で言えばCRUD(Create、Read、Update、Delete)。ここで、初期化、代入は構文が同じなので同じものとして考える。すると、代入、削除は文であり、参照は式であることが分かる。 ここで、リスト内包表記やlambda式
d.y.d: 内包表記 (http://www.kmonos.net/wlog/82.html#_1753080218) リスト内包表記で一時変数を使用したいがために無駄なforループを1つ増やしているということだが、問題点は以下の3つ。 式しか書けないので代入文が書けない sys.stdinから読み取ってsplitしたやつで回したいのに、2段階に分けないといけない 式が1つしか書けないので、初期化したり、途中で代入したりする場所がない 1つ目は、書き方は汚いが代入文を式に変換する方法がある。2つ目は、__iter__をオーバーライドする方法がある。もしくは一時変数に保存しておけば良い。3つ目は、ifの後や結果の式中に無理やり書ける。 以下2通りの方法を考えたが、いずれも汚い。結局、きれいに書くにはPythonのポリシー通り内包表記でなくfor文で普通に書くしか思いつかない...。我ながら
http://d.hatena.ne.jp/Gimite/20080802/1217647596 でちょっと思い出した、前からやってみたかった実験をやってみたらだいたい思った通りな感じだった。 class Fixnum def times i = 0 s = self while i < s yield i i += 1 end end end s = 0 1000000.times{|i| s+=i } p s みたいなコードを書くわけです。ご存知の通り、 Ruby の Fixnum#times は C 言語で実装されてます。それを Ruby で実装しなおしたら当然遅くなります。ホント時間のムダです。実はそうでもないんです。 > time ruby1.9 bench.rb 499999500000 ruby1.9 bench.rb 0.10s user 0.00s system 91%
« Building and Scaling a Startup on Rails: 12 Things We Learned the Hard Way | Main | GIS Application Hosting » Update 6:: Back to the Future for Data Storage. We are in the middle of a renaissance in data storage with the application of many new ideas and techniques; there's huge potential for breaking out of thinking about data storage in just one way. Update 5: Building Scalable Web Application
Ronnie Chaiken, Bob Jenkins, Per-Ake Larson, Bill Ramsey, Darren Shakib, Simon Weaver, and Jingren Zhou have an upcoming paper at VLDB 2008, "SCOPE: Easy and Efficient Parallel Processing of Massive Data Sets" (PDF), that describes a parallel data processing tool "being used daily ... inside Microsoft" on "large clusters ... of thousands of commodity servers" over "petabytes of data". Scope is sim
Chris Olston, Benjamin Reed, Adam Silberstein, and Utkarsh Srivastava at Yahoo Research had a USENIX 2008 paper, "Automatic Optimization of Parallel Dataflow Programs" (PDF), that looks at optimizations for large-scale Hadoop clusters using Pig. The paper says that it is only attempting "to suggest some jumping-off points for [optimization] work." With much of the paper spending a fair amount of t
I’ve been worried for some years that the open source movement might fall prey to the problem that Kim Stanley Robinson so incisively captured in Green Mars: “History is a wave that moves through time slightly faster than we do.” Innovators are left behind, as the world they’ve changed picks up on their ideas, runs with them, and takes them in unexpected directions. In essays like The Open Source
Google VP Udi Manber offers a high level description of what goes into Google's relevance rank in his recent post, "Introduction to Google Search Quality". Some excerpts:Ranking is hard ... We need to be able to understand all web pages, written by anyone, for any reason ... We also need to understand the queries people pose [and their needs], which are on average fewer than three words, and map t
何秒後に実行する、キューにためこむイメージで後々、まとめて実行するなど スケジューリングして実行するサンプル。 方法は2つあってbisectかheapq。 どちらもソート済みにするって点は同じかな。 bisect import bisect import time timers = [] def add_timer(second, cb, *args, **kwargs): scheduled_time = time.time() + second insert = bisect.insort_right insert(timers, (scheduled_time, (cb, args, kwargs))) def fire_timer(): now = time.time() last = bisect.bisect_right(timers, (now, ())) for i in
PEP 249に対応しようとしてるんだけどなかな難しい。 description。今ぶつかってる問題がここ。 Field Packetでは lengthはバイト数で返ってくる fieldのcharsetは取れるが、何バイトの文字なのかは送られてこない display_sizeが謎 utf8のvar_charだと50ー>150で返ってくる。 50でセットしたいんだけどねえ。 descriptionで返す7項目のタプルは以下 (name, type_code, display_size, internal_size, precision, scale, null_ok) 必須なのは先頭の2つだけなので249的には満たすことはできるんだけど。。。。 実際に何バイトなのかはmysqlのstrig/ctype-xxx.c内のmbmaxlenの値を見ればわかるので charsetのdictを定義(なん
USTREAM.TVというWebカメラで撮影している画像と、マイクで拾った音声を 全世界に発信できるサービスがあります。 USTREAM.TV http://www.ustream.tv/ ustreamグループ ちょっとしたイベントのレポートから、自分の自己顕示欲の満足、 露出したい病の人の自己表現の場、空間の共有、自己監視など、 いろいろなことに使える素敵なサービスです。 ustreamの効果的な公開 このustreamにおける公開する側の楽しみは IRCによるメッセージ交換と、Viewer数の増減を見て 一喜一憂することだと思っているのですが、 Viewer数ってなかなか伸びません。 なぜなら普通の人は自宅から限られた数のstreamerしか閲覧できません。 ustreamではそのように閲覧を制限されているのです。 なので、単に男性が自分を写しているくらいでは誰も注目しれくれません。
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く