PERLにて2次元配列の動的な作成方法を教えてください。
■この記事で取り上げているトピックハイライト■ なぜ、メタオブジェクトを自分自身で使いこなせるようになると、日常のプログラミング生産性が大きく向上するのか? なぜ、メタオブジェクト技術を使うと、分散オブジェクト、Rails、DI、ORマッピング、Webサービスなどの、大きく生産性を向上させる仕組み自体を自分でつくれるのか? C#のどのメタオブジェクト機能をどのように使えば、簡単に「C# on Rails」を作れるのか? なぜ「Ruby on Rails」は陳腐化してしまう運命にあるのか? 「Ruby on Rails」を陳腐化させるアーキテクチャとはどのようなものなのか? ■構成■ まず、Ruby on Railsと同様のフレームワークを、C#で作ったとしたら、どのようになるのかという例題を通して、メタオブジェクト機能、つまり、リフレクション、カスタム属性、CodeDOM、パーサジェネレー
John Hughes, Institutionen för Datavetenskap, Chalmers Tekniska Högskola, 41296 Göteborg, SWEDEN. rjmh@cs.chalmers.se この日本語訳は原著者の承諾を得て山下がここに公開するものです。 この訳文についての、御指摘などは山下伸夫(nobsun .at. sampou.org)までおねがい いたします。 翻訳最終更新日 : 2011-09-17 原文 "Why Functional Programming Matters" 日本語訳PostScript この論文は1984年以来何年ものあいだChalmers大学のメモとして回覧された。 1989年と1990年に幾分か改訂をしたのが[Hug89]と [Hug90]である。この版はもとのChalmer大学のメモ のnroff原稿をもとに
2009年7月21日 メタプログラミングパターン (1) 特異メソッド 『Rubyによるデザインパターン』(ラス・オルセン著 ピアソン・エデュケーション刊)の例をPythonに変換して書いています。 目次 Ruby向けデザインパターンその2。 メタプログラミングは動的言語の専売特許ではありません。 静的なC++では、テンプレートやマクロを使ってメタプログラミングをします。 それはつまり、メタプログラミング用に実行時とは別の言語を用意するということです。 (「使える言語」にC++(runtime)とC++(compile time)の2種類を書くというジョーク?があります。) しかし、動的言語のPythonならばより自然に柔軟な記述が可能です。 コンパイル時と実行時の区別が無く、クラスやオブジェクトを、リストや辞書並みに、バリバリ変更できるので、メタプログラミング用にPython自身を使え
みんなのIoT/みんなのPythonの著者。二子玉近く160平米の庭付き一戸建てに嫁/息子/娘/わんこと暮らしてます。月間1000万PV/150万UUのWebサービス運営中。 免責事項 プライバシーポリシー Pythonのメタプログラミング手法の一つ「メタクラス」は,初心者にとっては「なんか強そう/経験値たくさんもらえそう」なアイテムの最右翼だと思う。反面「どうすればいいか/なにができるか」ということがなかなか理解しづらい。 英語のブログを見ていたら,メタクラスの理解に役立ちそうなちょうどよいサンプルを見つけたので,紹介がてら独自の解説を付け加えたいと思います。 メタクラスを簡単に説明すると,「本来コードを書かなければ実現できないような処理を黒魔術的な処理でなんとかしちゃう」ためのテクニックです。コード量を(時には劇的に)減らすことができたり,すっきりした見通しの良いクラス設計を実現できま
この前の続き。先週の週末にやるつもりだったけど、暇がなかった。 MeCabで区切った単語を再びつなげる - yasuhisa's blog 前回の流れとしては 専門用語を一つの単語として取ってくるのは難しい MeCabを使うと細かくなりすぎる 専門用語には名詞のsequenceが多そう じゃあ、名詞つなげてみればいいんじゃね? ということで名詞を繋げてみるだけというところをやりました(それだけ。。。)。id:niamさんがコメントしてくださったように"出現頻度と連接頻度に基づく専門用語抽出",自然言語処理, 2003を使うと専門用語らしさ(?)のようなスコア付けができるようなので、それをやってみることにしました。とりあえずp6のLR(CN)のところまでを実装。あとはスコア付けの関数を2つくらい用意して、評価指標の関数を用意すれば、という感じです。 # -*- coding: utf-8 -
もうすぐ5月です。 Twitterの投稿内容から鬱度を測定するRubyスクリプトを書いてみました。 これには東京工業大学の高村さんが公開している単語感情極性対応表というものを使っています。 http://www.lr.pi.titech.ac.jp/~takamura/pndic_ja.html これはある単語がどの程度の感情を表すかを数値化した表で、-1 ~ +1 までの値が特定の単語に割り当てられています。 その単語がネガティブな感情表現だとマイナスの値、ポジティブな感情表現だとプラスの値になっています。 なので、鬱度を測定といってもポジティブな投稿内容が多いときにはプラスの値を返します。 また日本語文の形態素解析にはYahoo!の日本語形態素解析APIを使っています。 http://developer.yahoo.co.jp/webapi/jlp/ma/v1/parse.html ア
4歳の長女とオセロで遊ぶようになりました。挟んでひっくり返すのはできるのですが、ナナメに挟むというのが難しいようです。そこ、ナナメもひっくり返せるよ。と思うのですが、長女は気づきません。私もあえて口に出さず、常に圧勝しています。白黒はっきりしないグレーなオセロを楽しんでいます。 さて、Rubyの特徴のひとつに、メタプログラミングがやりやすいことが挙げられます。あ、オセロの話は一切関係ないので、忘れてください。 Rubyのリフレクション解説(eval族のはなし) - このブログは証明できない。 メタプログラミングをすると、肩こりや便秘の解消などいろいろな効果がありますね。今回は、そのうちのひとつを紹介したいと思います。思い浮かべてください。既存のライブラリのある処理だけ差し替えたい。下の例では、targetメソッドの中で使われているFixnum#to_sメソッドを差し替えたいのです。そう、差
2007/08/15 検索サービスを提供するベンチャー企業のムーターは8月1日、辞書を必要としない形態素解析エンジン「マリモ」の提供を開始した。従来、形態素解析では品詞情報を含む日本語辞書を用意するのが常識だったが、マリモでは、そうした辞書を不要とした。新技術のアプローチと特性について、開発元のムーターに話を聞いた。 統計処理で単語部分を推定 形態素解析とは、与えられた文を、文法上意味のある最小の単位(形態素)に区切る処理。「今日は晴れています」なら、「今日(名詞)/は(助詞)/晴れ(動詞)/て(助詞)/い(助詞)/ます(助動詞)」と分ける。検索エンジンをはじめ、さまざまな自然言語処理の場面で必要となる基礎技術だ。 形態素解析を行うには、あらかじめ品詞情報が付加された数十万語からなる辞書を用意する必要がある。また、新語や造語、専門用語に対応するには、個別に人力で単語を登録する必要がある。
JavaScriptリンク要素のアドレスなどをユーザーが訪れたことがあるか否かをJavaScriptから知る方法を以前調べたがわからなかった。多分、プライバシーの問題の絡みで存在しないのだと勝手に合点した。今日、CSS(display:none) + 擬似セレクタ(:hover) + 要素の高さ(offsetHeight) の組み合わせを思いつき書いた。 function isVisited(link){ if(!isVisited.initialized){ isVisited.initialized = true; addRule("#check_visited:visited", "display:none"); } var a = document.createElement("a"); a.href = link; a.id = "check_visited"; documen
の、雛形。 http://la.ma.la/misc/userjs/ldr_with_hatenaster.user.js (function(){ var w = typeof unsafeWindow != "undefined" ? unsafeWindow : window; var initialized = false; var s = document.createElement('script'); s.src = 'http://s.hatena.ne.jp/js/HatenaStar.js'; s.charset = 'utf-8'; document.body.appendChild(s); var t = setInterval(function(){ if(w.Hatena){ init(); initialized = true; clearInterval(t
頑張って作ろうかと思ったら既にConfigLoaderというのが定義されてたからそれ使うだけで良かった。 Add HatenaStar JSONをevalしないでクライアントサイドでパースしたほうが安全じゃない?というような話。 http://d.hatena.ne.jp/ku0522/20070927/1190868347 Greasemonkeyみたいに外部ドメインのデータ引っ張ってこれるとは限らないので、JSONPがあること自体は良いことだと思う。JSONPがあるのは設定不要で簡単に貼り付けられるようにするためだと思うけど、動的に取得するようになってるとWikiで挙動を変えられてしまうので危険だと思う。例えばJSONを出力する処理にバグがあった場合とか、凄く処理が重くなるセレクタとかを指定されるとか。あくまでコード生成の補助に使うぐらいがいいんじゃないかなあ、という気がする。 整形済
最近は、三項演算子を多用しているのだけれど、やっぱり人が使ってるのを見ると気持ち悪い。 http://d.hatena.ne.jp/brazil/20050921/1127314004 Test.Builder.globalScope = typeof JSAN != 'undefined' ? JSAN.globalScope : typeof window != 'undefined' ? window : typeof _global != 'undefined' ? _global : null; これは解読するのにやたら時間がかかる気がする。コロンの後が値なのか条件なのかわからないからだ。 俺ならこう書く。 Test.Builder.globalScope = (typeof JSAN != 'undefined') ? JSAN.globalScope : (typeof wi
経緯 id:kazuhooku さんが一年前にやってたことですが Kazuho@Cybozu Labs: JavaScript/1.7 で協調的マルチスレッド 今日やっと挙動が理解できたのと、 Weave のソースを読んでいたらこのテクニックをバリバリ使っていて「ちょwwおまwww」ってなったので、自分でも作ってみようと思いました。 ほとんど id:kazuhooku さんのと同じものなので、既出です><本当にありがとうございました>< まず、 yield とは何か yield とは、 JavaScript 1.7 から導入された機能です。 以下に yield の細かい挙動を示しておきます。 function f() { // なんかの処理 yield; // ... (1) // なんかの処理 yield; // ... (2) // なんかの処理 } var g = f(); // こ
これのこと。 AJAXサイトをスピード化するMXHR - huixingの日記 Digg the Blog » Blog Archive » DUI.Stream and MXHR どこにも解説が無かったので、詳しく読んだ。 上の記事から引用すると、「サーバーとクライアント間で、ただひとつだけのHTTPコネクションを開く。これによりサーバーがページのどのパーツを先行して読み込むかをコントロールすることが可能になり、ユーザーにとってはページ読み込みがほぼ一瞬で済むことを意味する。」という技術。XMLHttpRequest を使って複数のデータを受信する場合に効果がある。 まずデモから デモ1は10個のテキストをダウンロードして表示するもの。 デモ2は300個の画像をダウンロードして表示するもの。 どちらも左側 (MXHR 有効) が完了した後に右側 (MXHR 無効) を開始するので驚かない
自分なんぞがオブジェクト指向とはなんぞと語るなんておこがましく、「オブジェクトっぽい話」でいいかなーと思っていたのですが、ブックマークするときに「オブジェクト」でタグ付けてる人がいたので、これはいかんと思い、こっそりタイトルを直しました。 2回目の今回は、複数のインスタンスをまとめて操作する方法について書きます。 まんじゅうマネージャー 前回、クラス作ってインスタンスを作ると便利だというところで終わりましたが、便利な点としてはまず、「複数のインスタンスをまとめて操作したり、作ったりできることができる」という点があります。どういうことかというと、とりあえず、以下のサンプルを見てみてください。 まんじゅうマネージャーサンプル まんじゅうを一気に作ったり、隠したりすることができます。 これで賞味期限が切れたりしても大丈夫なはずです。 この機能を作れと言われたら、前回の知識だけは結構厳しいのではな
その3では、アプリを実機で動かすための手続きを説明しましたが、AppStoreあるいは、AdHoc用にもう少し登録する必要があります。その手順は下記の通りです。 1. Certificates > Distributionセクション(証明書要求) (1) iPhone Developer Program Portalへログイン (2) Certificates>Distributionを選択、「Add Certificate」ボタンをクリック (3) 「ファイルを選択」ボタンをクリックし、ローカルに保存したCSRを選択し、「Submit」をクリック。 (4) 認証要求を通知するメールが届く (5) 先ほど見た「Certificates」タブの「Distribution」を再確認。アップしたCSRの「Action」で「Approve」をクリック。 (6) メールで承認された旨の通知が来ます。
学部4年春にiPhoneアプリを作りました。その時に登録〜実機デモまでの手順を示したPDFを配布しました。今回はそれを改訂し、載せておこうと思います。「これからアプリ作ってみたいな〜」という方は、ぜひ参考にしてください。 では、以下手順説明です。 実機で操作までの行程 Apple IDの発行:iPhone Developer Centerへのログイン iPhone Developer Programへの加入 Current Development Certificatesの登録 Current Registered Devicesの登録 App IDの発行 Development Provisioning Profilesの発行 Provisioning Profilesを自分のiPhone / iPod touch / iPadへ登録する Xcodeのプロジェクトファイルの設定を変更す
JSON¶ Ruby on Railsの拡張で、Hash、ActiveRecordのデータなどをJSON形式のデータに変換して出力できる RailsでJSONのデータを送信するには¶ 以下のようにformat.json { render :json => @zips }を設置 respond_to do |format| format.html { render :partial => 'zip_list' } format.xml { render :xml => @zips } format.json { render :json => @zips } end リクエストゲットする場合¶ <% form_remote_for(@zip, :url => {:controller => 'top_page', :action => 'post', :format => 'json'}
概要 クライアント側からポストされたJSON形式のデータを、サーバ側でparamsから利用する。 こんな感じ。 クライアント側 $ telnet localhost 3000 POST /projects HTTP/1.1 Accept: application/json Content-Type: application/json Content-Length: * { project : { name : "Hello!", desc : "Hello World Project!" } } サーバ側 def create project = Project.new project.name = params['project']['name'] project.desc = params['project']['desc'] project.save ... end 通常の場合 通常
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く