サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
CES 2025
www.nishiohirokazu.org
[English] 西尾泰和のホームページへようこそ!ここは西尾泰和についての最新の情報を公開するためのページです。なお英語版がメインです。 簡潔に自己紹介 2006年、24歳で博士(理学)取得。2007年よりサイボウズ・ラボにて、チームワークや知的生産性を高めるソフトウェアの研究に従事。著書に「コーディングを支える技術」「word2vecによる自然言語処理」など。2014年技術経営修士取得。2015年より一般社団法人未踏の理事を兼任。(141文字) 1981-07-23 誕生 1994-04 灘中学 入学 1997-04 灘高等学校 進学 2000-04 京都大学工学部情報学科 入学 2001-07/2002-02 独立行政法人 情報処理振興事業協会(IPA) 未踏ソフトウェア事業 2002-11/2003-03 IPA 未踏ソフトウェア創造事業(未踏ユース)→スーパークリエイター認定
書いちゃった。 Brainf*ckは、テープを破壊的に書き換えまくったり、 特定のコマンドが来たときには入出力を行ったり、と Haskellで書きにくそうな問題だ。 基本的にWorldという「ポインタの位置」「テープ」「実行すべきコード」「スタック」 の4つがセットになった型のオブジェクトを iterateのようなもので何度も何度も呼ぶ設計にしていたのだけど、 IOをする段になって悩む。 結局(IO World)というIOモナドで包んだ世界にしてやって、 いままで単純にWorldを返していた部分はreturn Worldに置き換える必要があった。 入出力をする部分は、getCharやputStrのような入出力をする命令とreturn Worldをbindして やる。 入出力周りは理解するまでが大変だったけども、 書いてみると行数的にさほど手続き型言語より面倒かというとそうでもないような。
はじめてのGitチートシート(初級編) other machine your machine repository index work tree stash repositorypush/pull/clone 「何をどう変更したか」のを蓄える仕組み A A A A A A A A A A A A git add A git commit (edit A) git add A git rm --cached A git checkout -- A git reset -- A A A A git reset --soft HEAD^ git commit git reset --soft HEAD^ work tree index repository (create A) git reset HEAD^ git reset --hard HEAD^ git rm -f A 「前の状態に
NISHIO Hirokazu's website > NISHIO HIROKAZU # Archived COREBlog これは2004年11月4日から2006年2月18日までZopeで運用していたCOREBlogの静的なアーカイブです。 新しい日記は「西尾泰和の日記」で運用しています。 nilは比較できるといい? arai blogの同名記事にRubyのnilは数値と比較できないうんぬんの話が書かれている。 Rubyのnilって、Javaのnullとはまったくの別物なんじゃないかと思うんだけどどうなんだろう? コメントを見ていると「あれ?nilはnullなの?」と言う気にもなるけど、 そんな設計になってるのかなぁ。 まぁ、Rubyのことは詳しく知らないのでPythonの話をしよう。 PythonのNoneはnullのような目的で使われるオブジェクトで >>> None >> Non
#!/usr/bin/env python #coding:utf-8 # author H.K. # date 2007.6.12 # 2つのディレクトリ間でファイルの同期をとる # Usage # ./sync.py dir1 dir2 # 使用方法の表示 def usage(): print "synchronize two directories." print "Usage : ./sync.py dir1 dir2" # dir1,dir2間で同期をとる # @param dir1 ディレクトリ1 # @param dir2 ディレクトリ2 def sync(dir1 , dir2): import os files1 = os.listdir(dir1) files2 = os.listdir(dir2) (f1to2,f2to1,fconf) = conflict(file
iTheremin is an iPhone app work like a theremin. Getting warmer! It is being reviewed. You may know the theremin, an musical instrument. The app, iTheremin, is similar to the theremin. You can play it without touch it. Please watch following demonstration movies on YouTube. It is a kind of magic. Everyone was surprised and wondered to see the magic. Magic movies on YouTube Links iTheremin coming s
西尾泰和(にしお ひろかず) http://www.nishiohirokazu.org/ サイボウズ・ラボ株式会社に勤務。 プログラマのためのコロシアム「どう書く?org」をβ公開中。 2005年、Lightweight Language Day and Nightにて出された 「計算機を作れ」というお題に対して、Jythonで「関数を定義できる関数電卓」を作成。 2006年、Lightweight Language Ringにて「ネットワーク通信をしてじゃんけんを戦う エージェントプログラムを作れ」というお題に対して Pythonのワンライナーで参戦。(動画) 2007年、Lightweight Language SpiritにてJython担当としてパネルディスカッションに参加、 Jythonでフィボナッチ数列を曲にするデモなどを行う。 本書の「はじめに」を転載します。 みなさんはど
Here is English version. このページは研究者としてのプロフィールです。広い意味で「やっていること」について知りたい場合は 西尾泰和の活動ダイジェストをご覧ください。 メールアドレス 「nishio どっと hirokazu あっと gmail どっと com」 経歴など 1981/07/23 誕生 1994/04-1997/03 灘中学 入学 → 卒業 1997/04-2000/03 灘高等学校 進学 → 卒業 2000/04-2003/03 京都大学工学部情報学科 入学 → 退学 2001/07-2002/02 独立行政法人 情報処理振興事業協会(IPA) 未踏ソフトウェア事業 2002/11-2003/03 IPA 未踏ソフトウェア創造事業(未踏ユース) 2003/04-2004/03 奈良先端科学技術大学院大学(NAIST) 情報科学研究科博士前期過程 入学
RubyのyieldとPythonのyieldは実は全然違うような気がしてきたので、整理のために書いてみます。 まず、Rubyでeachに相当する物を自分で実装してみました。 # Ruby 1 class Array def my_each self.each{|x| yield x } end end [1, 2, 3, 4, 5].my_each{|x| puts x } これに相当する物をPythonで書くと、実はyieldを使いません。 # Python 1 class Array(list): def each(self, f): for i in self: f(i) def myprint(x): print x Array([1, 2, 3, 4, 5]).each( myprint ) これをもっとRuby 1のコードに近づけて書くと以下のようになります。Pythonには
NISHIO Hirokazu was born in 1981. He received B.Sc. degree from Nara Institute of Science and Technology (NAIST) in 2004. He received a degree of doctor from NAIST in 2006.[PDF] He wan been a Research Fellow of Japan Society for the Promotion of Science from 2005. His research interests include Visualization of Large-scale data obtained from biological experiments. He is a member of Information Pr
MIXI Pythonライブラリ — Emerge Technologyを参考にしましたが、リンク先はログイン処理に問題があってきちんとログインが出来ていないように思われます。 import urllib import re class MixiOpener(urllib.FancyURLopener): def login(self, email, password): LOGIN_URL = "http://mixi.jp/login.pl" params = urllib.urlencode({ "email": email, "password": password, "next_url":"home.pl"}) r = self.open(LOGIN_URL, params) cookie = [] for c in r.headers.getheaders("Set-Cooki
サイボウズラボのサイボウズOffice掲示板でやっている 「西尾のひとりごと」スレ(ITmedia)からDjango関係の文章を抽出してみる。実際はこれの4~5倍くらいの書き込みがある。 まとめ記事にしてブログに載せようとか思いつつほったらかしなので、 このまま埋もれてしまうよりは雑然とでも公開した方がいいかと思って。 Lingrログとかとあわせて整理されて Django - UeblogWiki に載るかも知れない。整理するの大変だろうなぁ(自分では整理するのを諦めた) = 西尾のひとりごと 2007-06-18 はてさて 当初の予定では GRINEditは今日でいったん保留にして 金曜日までに露木さんに教えてもらったDjangoのプログラムを参考に 「どう書く」プログラムのプロトタイプを作って、 金曜日からのPython合宿でいろいろ教えてもらって その次の土曜のPython Work
[2007-09-22 15:44] アマゾンは本をきちんと整理して棚に直していない。 場所はコンピュータが知っている。 選ぶべきものを入力すると最短経路を答えてくれる。 棚を整理していないので、増やすときには適当に棚を追加して適当に本を入れればよい。 整理をしないからスケールする。 BtoBtoCのtoは右結合性。(BtoB)toCではなBto(BtoC)。 ブックマークレットでメニューをインサートして選ばせるくらいならば、 ライトユーザーにも使わせられる? 複数人で開発する際は、 「メソッドをアルファベット順に並べる」というルールにすれば、 並べる順を迷わなくなる。 SQLiteは本体のコードよりもテストのコードの方が多い。 キン肉マンは最初の方巨大化したりビームを打ったりする。 ドカベンは最初は柔道をしていた。 YouTubeやニコニコ動画のブームのおかげで、CDNが儲かった。アカマ
以前西尾泰和のブログ: ノウハウの4レイヤーというエントリーで下のように書いたが、それは間違いでした。お詫びして訂正します。 スキル(ノウハウ)には最低でも4つのレイヤーがあると思う。 1:バッドノウハウ。 2:バッドノウハウを作るスキル。 3:バッドノウハウを取り除くスキル。 4:バッドノウハウを作らせないスキル。 正しいのはこちら スキルには最低でも5つのレイヤーがあると思う。 4:知識がなくても直感的に使えるようなシステムを作れるスキル。 3:ノウハウを知らなくても使えるようにするラッパを作れるスキル。 2:問題を解決する方法を作り出し、ノウハウとして共有できるスキル。 1:ノウハウを習得し、適切なタイミングで使えるスキル。 0:ノウハウを見つけてブックマークするスキル。 参考文献。 日記を書く[・ _ゝ・]はやみずさん - 覚えてはいけないちょっと計算を早くするための小技 はてなブ
面白い。 via IT戦記 - 忙しいとネットの話題についていけないなあ どんなに技術があろうと出来る人であろうと駄目なものは駄目、って誰かが言わないと。 (Junnama Online (Mirror)) 辛辣インターフェース評議会 - amebloのフィードが酷い件 は99%くらい技術的に価値のある指摘だけど、 最後の1行はやり過ぎだと感じる人もいる。(もちろん最初から「これはわざとだ」と思う人もいる) でjunnamaさんはおそらく前者で、最初の1行は正論っぽい。 だけど個人ブログを会社に絡めた手口とか、言及先を明記しないスタイルとか、 本題と関係なさげな肖像権問題への言及とか、そういう周辺的なもののせいで 「 はてなブックマーク - どんなに技術があろうと出来る人であろうと駄目なものは駄目。って誰かが言わないと。 (Junnama Online (Mirror))」 こうなっている
(無意味に自重しました) Mozilla24 on Flickr - Photo Sharing! 眠い。 最初の20分でバッテリーがなくなったのでログはなし。 yukobaさんにさんざんPythonの処理系を書けとけしかけられる。あうたびに言われている気がする。 shi3zの日記 - マシン語を知らない子ども達 の正論に賛同して 「プログラミング言語というのは、その言語の処理系を実装して初めて「書ける」と言うのです。 プログラムが書ける、という状態は「処理系が書ける」という状態の延長線上にあるべきで、処理系を書けないということはその言語を理解していないということです。」 とか書こうと思ったけど面倒だからやめた。 ♪僕らの名前を覚えて欲しい 機械語を知らない子供たちさ~ AutoPagerize+LDRize入れた AutoPagerize (swdyh) IT戦記 - Firebug で
via Googleの面接試験、一体どのような質問をされるのか? - GIGAZINE 5人の海賊がいて、彼らは1位から5位にまでランク分けされています。1位の海賊は100枚の金貨をどのように分けるかというプランを提案する権利があります。残りの海賊はこのプランに投票する権利があり、賛成が半分に満たない場合には1位の海賊は殺されます。1位の海賊の分け前を最大にしてなおかつ彼が生き残るにはどうすればいいですか?(ヒント:一人の海賊は結局、金貨の98%で終わる) まず大前提として、 「海賊はなるべく自分が死なないように行動する」 「(死なないならば)なるべくコインが多くなるように行動する」 と仮定しよう。 これを否定したら「死にたい…」とか「ちょっと損だけどBには以前から腹が立っていたので殺す」 なんて選択肢が出て論理パズルではなくなる。 パズルとして成立させるためにこの仮定を置いた方がいいと面
いわゆる「ローカル変数」の読み込みはLOAD_FAST >>> from dis import dis >>> def foo(x): x >>> dis(foo) 2 0 LOAD_FAST 0 (x) 3 POP_TOP 4 LOAD_CONST 0 (None) 7 RETURN_VALUE グローバル変数はLOAD_GLOBAL >>> def foo(): x >>> dis(foo) 2 0 LOAD_GLOBAL 0 (x) (以下略) 代入があるとローカル変数になる。 >>> def foo(): x = None >>> dis(foo) 2 0 LOAD_CONST 0 (None) 3 STORE_FAST 0 (x) global宣言をつけるとグローバルになる。 >>> def foo(): global x x = None >>> dis(foo) 3 0
久しぶりにレバレッジメモ。 Amazon.co.jp: 社長になっていい人、ダメな人: 本: 丸山 学 自分は社長には向いていないと思うので社長になる予定はないのだけど、 タイトルに惹かれてどんなことが書いてあるのかぱらぱら見てみたら面白そうだったので買った。 僕は研究開発職なので経営も営業も向いていないのだけども、 人間誰しも自分を経営したり自分を営業したりしないといけないからね。 向いていなくても学ぶ必要はある。 = 目標が決まっていない人。 大きな目標だけが決まっていて、そこへ至る道を考えてない人。 自らゴールドラッシュに飛び込む人。 ゴールドラッシュで、真っ先に乗り込んだ人は金を採取できた。 先行者利益。 しかし金が出た情報を聞きつけてぞろぞろ集まってきた人たちは、 激しい競争に巻き込まれることになった。 「このビジネスが儲かるらしい」なんて噂で聞いてから初めてもダメ。 一方ゴー
開発合宿サーベイ とりあえずゆるーくまとめた。 開発合宿(三月号)にいってきたぞ、と。 | i d e a * i d e a 長野県松本市まで行ってきました。 (snip) 「温泉 24時間 無線LAN」あたりで検索 、ホテル池田屋さんにしました。12畳の和室でもちろん座椅子つき。作業用の机も出していただきました。 (snip) 温泉はもちろん24時間。 (snip) プロジェクター大活躍 (snip) お互いのナレッジシェアはやはりいいですね。 (snip) iPodも持って行きました。いままでiTunesを使っていたのですが、iTunes立ち上げているとCPUに負荷がかかるし、なによりMusic Storeをついつい見てしまうのでいけません (snip) 座椅子もいいのですが、机と椅子の方がなんとなく作業効率がいいような気が (snip) ちょっとした緊張感が大部屋の方にはありますね
PBoMC - LL魂のタイムテーブルが出てた 今年は西尾さんのワンライナー芸が見られなさそうで残念だ。 いやいや、去年のLL Ringで懲りましたから。ワンライナー イクナイ! ワンライナーはダークサイド。 やすきに流されてワンライナーを書いてはいけないのですよ! 先日のプログラミングシンポジウムで「カレンダーを表示するプログラムを書け」というお題が出されて、 ついついワンライナーで書いてしまったのですが… やっぱりこれはいけないですよね。 いくら資料を作り始めたのが開始の前日の夜だったからといって、 手抜きしてワンライナーなんか書いちゃいけないんですよ。 やっぱりPythonのコードは読みやすく改行を入れるべきなのですよ。 「本当は一行なんだけどもエディタの折り返し幅を32文字にすることで正方形!」とか 何を寝ぼけたことを言っているのかと。 そんなトリッキーなコードを書いていないできち
どうも、こう書く課Jythonの西尾です。 ブログと顔はなかなか一致しないと思うので、 1行目で宣言してみました。 はてなブックマーク - タグ llspirit ←スタンドプレーの結果としてのチームワーク? ということはうぇぶ2.0って「攻殻機動隊風」ということなのか? 冗談はさておき 生デモいくぞー = LL魂のスライド | スパムとか 露木さんのプレゼンの語り口があんな感じだとは知らなかった。 いきなりサイボウズラボでDjango勉強会をやることを発表するからびっくりしたよ! = Yoshioriの日記: [LLSpirit] LL 魂の発表資料と感想 プレゼンでは FX の表示領域( screenx )を 1440 にしてもう一個の画面に表示するという荒技のためにプロジェクタに繋げてから起動をしなくてはいけなくなりしょうがないので可符香ちゃんを写して時間稼ぎ なるほど。 =
NISHIO Hirokazu's website > NISHIO HIROKAZU # Archived COREBlog これは2004年11月4日から2006年2月18日までZopeで運用していたCOREBlogの静的なアーカイブです。 新しい日記は「西尾泰和の日記」で運用しています。 Pythonでスペクトラム解析 カリンバの調律の話の続編。 左右交互に半音ずつ上がる調律に変えたら、僕の音程分解能ではさっぱり調律できなくなってしまった。そこでスペクトルアナライザを作成。とりあえず一番下の音(僕としてはドのつもり)を録音してtmp.wavという名前で保存。PythonにはNumericPythonとかがインストールされているものとする。 import wave fi = wave.open(r"c:\tmp2.wav") (_,_,frameRate,numFrames,_,_)
Ajax, Ajax, Ajax... = 日本全国ラボめぐり:グループウェアの新しい使い方「ひとり言スレ」──サイボウズ・ラボ - ITmedia Biz.ID もうちょっとマシな写真はなかったのかと問いたい…orz = Ratingを使おうかと思っていたけど、 微妙に気に入らないところがあって、修正するよりシンプルなのを自分で作る方がいいと判断。 = jQueryに値を渡すためにDjangoのカスタムテンプレートタグ作っててちっともAjaxの勉強になってない! $(".rating .button").click(function(){ alert("hello"); return false; }); が動かないなぁと思ったら $(document).ready(function(){ }) で包まないといけないのか… お、動いた動いた。 = JavaScriptはデフォルト
Karetta|キミならどう書く 2.0 - 2007 - その 2 想像以上にいっぱいあるなぁ。オリジナルの小町算は除算が整除じゃないからもっと正解の個数が少ないんだが…。 正解は303個。 1 123+45-67+8-9 == 100 2 123+45/6*7-8*9 == 100 3 123+4-5+67-89 == 100 4 123+4*5-6*7+8-9 == 100 5 123-45-67+89 == 100 6 123-4-5-6-78/9 == 100 7 123-4-5-6-7+8-9 == 100 8 123-4-5-6*7/8-9 == 100 9 123-4*5+6+7/8-9 == 100 10 123-4*5+6-7/8-9 == 100 11 123*4-56*7+8/9 == 100 12 123*4-56*7-8/9 == 100 13 123*4/5-
新橋の駅で迷う。 東海道本線って東京と新大阪を結ぶ新幹線のことだと思ってたよ。 普通の電車なのに途中にグリーン席がある。 普通の席が混んでて座れない。1時間ちょい乗るので作業できないのはもったいない。 1200円。 タッチする自動ドアと、押すドア、引くドア、スライドするドアがあってひどい。 やば、酔ってきた。 二階建てデッキの下へ。 = uにauth.models.Userオブジェクトが入っているとして、 IPythonでprint u.firstnameってやるとエラーになるのはなぜだろうか。 = ダウンロード機能が付いた。 熱海に着いた。バッテリーがなくなった。 やるべきことをリストアップして優先順位をつけよう。 = ついた。 = 会議室はペットボトルの飲み物ならOK。 Mac率が高い、っていうか僕の机は僕以外Macだ。 = 静的略語展開について調べる。 略語展開。 メジャー
Django面白い。Pythonのイントロスペクションがガンガン効く。 僕はZopeとJettyしか使ったことがないので、 RoRとかTurboGearsとかがどうなのかは知らないけど。 まず「あれこのオブジェクトなんだろう?、どんな属性を持っているんだろう?」 と思ったらtypeやdirで囲うだけですぐに見ることができるのがすごい。 サーバとか再起動しなくていいし。あ、Zopeももちろんそうだったけど。 それからshellモードがあって、それはもう普通に対話的に実行ができる。IPythonを入れるとTABで補完とかされるのですごい。 でコード投稿サイトを作る話は、露木さんに教えてもらったDjango snippetsに使われているCabってやつがBSDライセンスなのでそれを使えばいいかなと。でもこれは最新のDjangoの機能を使っているので、インストーラでインストールした僕の環境では動か
来る6月30日、東大駒場キャンパスでPython Workshop the Edge 2007が開催されます。 「Pythonコード添削道場」はこのワークショップのセッションの一つで、私、西尾 泰和と増田 泰さん、柴田 淳さんの3人で投稿されたコードを添削するという企画です。 この企画はみなさんにコードを投稿して頂かないと始まりません。 コードの内容は自由です。自由投稿のページのコメント欄から投稿してください。 また「投稿してといわれても、ちょうどいいコードがないなぁ」という人のために、お題が7つ用意してあります。お題に挑戦してみて結果のコードを投稿するのもよいでしょう。お題の解答はそれぞれのお題のページのコメント欄から投稿してください。 コードの投稿の際に名前を書く必要はありません。 完全に匿名でも、自分にしかわからないようなハンドルネームでもOKです。その方が添削する我々も、容赦なく添
次のページ
このページを最初にブックマークしてみませんか?
『NISHIO Hirokazu』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く