それは十中八九お前のJavaScriptのコードがおかしい。
jQueryの.live()はv1.9で廃止されたぞ。.on()になったぞ。確認したか?
3時間前の俺へ。
電脳ゲリラ兵站基地
2013/04/08
2013/02/15
C#でフォルダ内の全てのファイルのMD5を求める
GUIはコードからなんとなく想像できると思う。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.Collections.Generic; | |
using System.ComponentModel; | |
using System.Data; | |
using System.Drawing; | |
using System.Linq; | |
using System.Text; | |
using System.Windows.Forms; | |
using System.IO; | |
using System.Collections; | |
using System.Security.Cryptography; | |
namespace MD5Checker | |
{ | |
public partial class Form1 : Form | |
{ | |
public Form1() | |
{ | |
InitializeComponent(); | |
} | |
private void folderDialogButton_Click(object sender, EventArgs e) | |
{ | |
//フォルダ指定ダイアログの表示 | |
FolderBrowserDialog dialog = new | |
FolderBrowserDialog() | |
{ | |
RootFolder = Environment.SpecialFolder.Desktop, | |
Description = "フォルダを選択してください" | |
}; | |
if (dialog.ShowDialog() == DialogResult.OK) | |
{ | |
// 選択されたフォルダのパスをテキストボックスに表示 | |
folderPathTextBox.Text = dialog.SelectedPath; | |
} | |
} | |
private void calculateMD5Button_Click(object sender, EventArgs e) | |
{ | |
//指定されたフォルダが存在しない場合はメッセージを表示してメソッドを抜ける | |
if (!Directory.Exists(folderPathTextBox.Text)) | |
{ | |
MessageBox.Show("指定されたフォルダは存在しません"); | |
return; | |
} | |
//結果出力ファイルの指定 | |
SaveFileDialog saveFileDialog = new | |
SaveFileDialog() | |
{ | |
Title = "保存ファイルを指定してください", | |
InitialDirectory = @"C:\", | |
Filter = "CSVファイル|*.csv" | |
}; | |
//OKボタン以外がクリックされた場合はメソッドを抜ける | |
if (saveFileDialog.ShowDialog() != DialogResult.OK) return; | |
//結果をファイルに書き出す | |
using (StreamWriter writer = new StreamWriter(saveFileDialog.FileName)) | |
{ | |
foreach (string file in getAllFilePaths(folderPathTextBox.Text)) | |
{ | |
writer.Write(Path.GetDirectoryName(file)); | |
writer.Write(","); | |
writer.Write(Path.GetFileName(file)); | |
writer.Write(","); | |
writer.WriteLine(getMD5Hash(file)); | |
} | |
} | |
MessageBox.Show("ファイルの出力が完了しました。"); | |
} | |
//再帰的にファイルの一覧を取得する | |
private ArrayList getAllFilePaths(string topFolderPath) | |
{ | |
ArrayList filePathList = new ArrayList(); | |
foreach (string filePath in Directory.GetFiles(topFolderPath)) | |
{ | |
filePathList.Add(filePath); | |
} | |
foreach (string folderPath in Directory.GetDirectories(topFolderPath)) | |
{ | |
filePathList.AddRange(getAllFilePaths(folderPath)); | |
} | |
return filePathList; | |
} | |
//ファイルのMD5ハッシュを算出する | |
private string getMD5Hash(string filePath) | |
{ | |
//ファイルを読み込んでMD5ハッシュ値を算出する | |
byte[] hashValue = new MD5CryptoServiceProvider().ComputeHash(File.ReadAllBytes(filePath)); | |
//ハイフンを除外して返す | |
return string.Join("", BitConverter.ToString(hashValue).Split('-')); | |
} | |
} | |
} |
2013/02/04
とあるモノレールの記念乗車券
劇場版『とある魔術の禁書目録~エンデュミオンの奇蹟~』劇場公開記念乗車券。
2月3日に多摩モノレールの立川北駅まで行って買ってきた。
この作品に特段の思い入れがあるわけではないが、駅のホームのポスターに写るインなんとかさんの労働意欲溢れる姿に心打たれた。
2月2日から販売開始だったが、天下一カウボーイ大会とかぶっていたので買いに行けなかった。
行列がヤバいことになってるみたいな話も出ていたので、
初日で売り切れて2日目はもう買えないかなと思ってたが、当日電話で問い合わせたら買えるとのことで行ってきた。
行ってみたら行列など微塵も形成されておらず、待ち時間ゼロで買えた。
最終的には売れ残るんじゃないか?
ニートのくせに制服が似合うなんとかデックスさん。
第肆回天下一カウボーイ大会 参加メモ
2月2日(土)、場所は秋葉原のアキバホール。
何年ぶりだっけ? 前回も行った。そこでレッドブルが無料配布されていて、試しに飲んだら美味くてハマったんだった。
Lightweight Language系のイベントと違って、発表者は学者やその道の専門家が多く、草の根的な面白さはない。
ただ、その道の専門家であるが故の最先端さ(?)は、刺激的だった。
どこかで日本版のTED(ヤク中のテディベアではない)みたいだという意見を見たが、その表現は適切だと思う。
開会挨拶(清水亮 代表取締役兼CEO)
- 「virtual reality」は一般に「仮想現実」と訳される。
- IBMの人間が「仮想記憶」という言葉を作ったのが、「仮想現実」という訳が生まれたきっかけらしい。
- しかしこの訳は適切ではない。これでは何か別の現実があるのだと受け止められてしまう。
- あくまでも、この現実と陸続きになった「現実」。現実に追加されるもの。
- なので「人工現実感」と訳すのが妥当。
- 「augumented reality(拡張現実)」。
「人間能力の拡張とテレイグジスタンス」(舘暲 慶応義塾大学大学院教授)
- テレイグジスタンス ⇒ 遠隔臨場感、遠隔存在感。
- EyePlusPlus社の「AuxDeco」。視覚障害者をサポートするデバイス。
- カメラで撮影した映像をヘアバンドから刺激として伝達することで空間認識する。
- 再帰性投影技術(RPT:Retro-reflective Projection Technology)
- 物体に再帰性反射材を塗布すると、入射光が入射した方向に返ってくる。
- 複雑な形状の物体でも映像を投影可能。光学迷彩や車の壁を透明にするなどに応用。
- TWISTER。360度の立体映像を映すディスプレイ。
- 映像の前にスリットを置くことで左右の眼の視覚の差を利用して立体に見せる(参考)。
- スリット自体は高速回転させることで見えなくする。扇風機の羽と同じ原理。
- 東京大学と慶應大学に設置されている。
enchuntMOON特別座談会(清水亮×樋口真嗣×東浩紀×安倍吉俊×辻秀美)
- 辻秀美氏はUEIの社員。enchuntMOONの企画担当。
- UEIが開発中の新型タブレット「enchuntMOON」に関する座談会。
- ロゴは三日月をイメージしていたが、宗教上の理由でやめた。
- ロゴは最終的に樋口氏がデザインした。
- タブレットの外観デザインは安倍氏が出した。絵を描きやすいタブレット、がコンセプト。
- イメージPVはアップルが1984をモチーフにしたCMを意識している。
- 仮想敵はiPad。iPadはプログラマブルじゃない。人差し指と親指しか使えない。
- イメージPVに出てくる林檎や指を拘束された人間はそれを表現している。
東浩紀がイメージPVの世界観の基礎となったなんかのSF小説のタイトルを上げていたのだが、忘れた。
enchuntMOONの使用イメージは以下。結構欲しいかも。「invert」って書くと白地に黒字になるらしい。
9leap授賞式
どれが何を受賞したのかは覚えてない。
最も評価が高かったのが「ラウンドナイツ」。確かに発想が斬新で面白かった。
「にゃっきvsドロイド君」は、東浩紀が「気持ち悪くて面白い。精神病理学的な意味で」みたいな感想を述べていた。
180 Rodeo
- 180秒のプレゼン。いわゆるライトニングトーク。
- 以前の天下一カウボーイ大会でも発表していた、新宿の焼鳥屋の人。
- よく覚えてないが、ゲームの点数を声で読み上げるとそれを認識して対応するグラフィックを描画するみたいな。
- おなじみ安達真グルコース社長の煩悩駆動開発。
- Tumblerはリブログは公開されるがlikeが公開されない。
- しかしGoogleで検索すればそのユーザが何をlikeしてるかがわかる。
- 個人製作のテレプレゼンスロボット。発表者の名前は忘れた。
- 実際に結婚式に持って行って、海外にいる友人からメッセージを伝えた。
- @yositosi氏の視聴者参加型プレゼン。
- 参加者がwebページの質問に答えると、回答が集計されてプレゼン画面に表示される。
- ニコ動の視聴者質問をプレゼンでやるイメージ。
川田十夢(AR三兄弟)
- プレゼンのタイトルは忘れた。
- 元々はメーカーの技術者で、特許も取った。
- しかし技術を人にわかりやすく伝えたいと思ったので今の活動をやっている。
内容は今までのAR三兄弟の仕事の紹介という感じ。
栗原一貴(産業技術研究所研究員)
- プレゼンのタイトルは忘れた。
- 他人の喋りを邪魔するデバイスでイグノーベル賞取った人。
- 動画を高速で見る。字幕部分は2倍速。それ以外は6倍速で見る。そういうシステム。
- Googleカレンダーの隙間時間に動画を埋め込むシステム。ためこんだ動画を処理する。
- 情報が多様化する今日は「No pain. No gain.」の精神で挑まなければならない。
坂井直樹(コンセプター)
- プレゼンのタイトルは忘れた。
- 今までやってきたデザインの仕事を振り返る。
- アメリカでは個人作成の飛行機のベンチャーが作られている。
- 電気自動車。
米澤朋子(関西大学総合情報学部准教授)
- 映画『TED』のような、破天荒さが人間らしさであり、それこそがロボットに求められているのではないか。
細金正隆、井戸真貴子(電通)
- 講演タイトルは「コミュニケーションにゲーミフィケーション」(うろ覚え)。
- 電通の研修に清水氏が講師として招かれた。
- ゲームの企画をするという課題があり、そのテーマが「社会貢献をするゲーム」。
- カンボジアに埋まっている地雷の問題を解決することを考えた。
- スマホでARを利用して、街に地雷が埋まっているから除去するみたいな。
- ゲームをすると、地雷除去団体に寄付される仕組みを作ろうとしている。
- ノベルゲームになっていて、地雷の除去によりストーリーが進む。
- 単に地雷が埋まってるだけだと不謹慎なゲームになるので、ノベル形式で文脈を導入した。
- ノベルゲームを理解させるために、清水氏は井戸氏に『Steins;Gate』をやらせた。
9Minute Coding Battle
- enchant.jsを使って9分間でゲームを作る。
- ライブコーディング
- 参加者は3名。
- テーマは数字の13。これにちなんだゲームを作る。
- 13日の金曜日に想を得たゲーム、的が13体出てくるゲーム、ゴルゴ13に想を得たゲーム。
まあ9分しかないので、最低限動くだけというゲームだが。面白かった
司会の日高のり子のカラみが面白かった。
エディタは2人がSublime2 Text、1人がVimだった。もうEmacsはオワコンなのか。
enchant.js作者の高橋さん(だっけ?)、が一番大量にコード書いてたな(この人がVim使い)。
「CGパイオニアからインタラクティブレンダリングへの開拓史」(西田友是 東京大学大学院教授)
- 1963年、アイバン・サザーランドの「スケッチパッド」からCGの研究は始まった。
- 米国のユタ大学がCG研究の総本山。
- ラジオシティ法
- フォトンマッピング法
なんか学会のチュートリアル講演みたいだったな。
河森正治(アニメ監督)
- プレゼンのタイトルは忘れた。
- 『超時空要塞マクロス』の監督。
- メカニックデザインが専門で、同作のロボットである可変戦闘機バルキリーをデザインした。
- バルキリーはおもちゃ会社との商品化をめぐる話で一悶着あった。
- 商品展開の観点から、人型に変形できることが求められていた。
- ロゴブロックで試作品を作り、実際に変形できることを立証し、関係者を説得した。
- 辺境への旅や、武術の達人への取材などから、アイデアを引き出している。
後半で人間の深層心理がどうとか語りだした。ぶっとび具合は今大会のプレゼンで一番だったかも。
以下のスライドからカオス具合が伝わってくるだろう。
イベント総括(清水亮×遠藤諭)
- 森山徹『ダンゴムシに心はあるのか』
- 映画『TED』が流行ってるが、俺たちカウボーイ的には『misery bear』だろ、みたいな。
2013/01/28
JavaScriptでプライオリティーキュー
JavaScriptでアルゴリズム書こうとしたときにプライオリティーキューがないから不便だなと思って書いた。
でも書き終わった後にJavaScriptのArrayにはsortメソッドがあることを思い出した。
pushもpopもあるからプライオリティーキューなんかいらんがな。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var PriorityQueue = function() { | |
this.heap = new Array(); //二分木の配列表現 | |
this.pointer = 0; //最終ノードを表すポインタ | |
}; | |
PriorityQueue.prototype = { | |
push : function(x) { | |
var i = this.pointer++; | |
while (i > 0) { | |
//親ノードの番号を求める | |
var p = Math.floor((i - 1) / 2); | |
//もう逆転してなければ処理を打ち切る | |
if (this.heap[p] <= x) break; | |
this.heap[i] = this.heap[p]; | |
i = p; | |
} | |
this.heap[i] = x; | |
}, | |
pop : function() { | |
var ret = this.heap[0]; | |
var x = this.heap[--this.pointer]; | |
var i = 0; | |
//子ノードがなくなるまでループ | |
while (i * 2 + 1 < this.pointer) { | |
var a = i * 2 + 1; //左子ノード | |
var b = i * 2 + 2; //右子ノード | |
if (b < this.pointer && this.heap[b] < this.heap[a]) a = b; | |
//もう逆転してなければ処理を打ち切る | |
if (this.heap[a] >= x) break; | |
this.heap[i] = this.heap[a]; | |
i = a; | |
} | |
this.heap[i] = x; | |
//最終ノードを削除する | |
this.heap.pop(); | |
return ret; | |
}, | |
size : function() { | |
return this.heap.length; | |
} | |
}; | |
function test() { | |
//テストコード | |
var queue = new PriorityQueue(); | |
queue.push(5); | |
queue.push(3); | |
queue.push(4); | |
queue.push(1); | |
queue.push(2); | |
alert(queue.size()); // => 5 | |
alert(queue.pop()); // => 1 | |
alert(queue.pop()); // => 2 | |
alert(queue.pop()); // => 3 | |
alert(queue.size()); // => 2 | |
queue.push(6); | |
alert(queue.size()); // => 3 | |
alert(queue.pop()); // => 4 | |
queue.push(2); | |
alert(queue.pop()); // => 2 | |
} | |
でも書き終わった後にJavaScriptのArrayにはsortメソッドがあることを思い出した。
pushもpopもあるからプライオリティーキューなんかいらんがな。
2013/01/20
2012年 ダイジェスト
- 人事異動でメインフレームを扱う部署へ配属になった。
- 格闘技の道場を休会した。
- 初めて学会というものに参加した(発表はしてない)。
- ウェイトとプロテインで体重を10キロ増やした。
- 社会人大学院を修了して修士号(情報科学)を取得した。
修士論文の作成に捧げた一年であった。
今年は色々と生産的な一年にしたいが、さてどうなるものか?
ちなみに新年早々インフルエンザに罹患して寝込んでしまった。
流行には疎いにも関わらず、こういうイヤなところだけ流行に追随する性分らしい。
2013/01/12
Subscribe to:
Posts (Atom)