お尋ね者との戦いのTAB譜作った。
お尋ね者との戦いのTAB譜作った。メタルマックス3が出るらしいので。
node.websocketを試す。
HTML5の機能の一つWebSocketを試そうと思いました。その名の通りHTMLのスクリプト上でソケットを使う機能です。
こちらのページを大変参考にしました。ありがとうございます。
噂のnode.websocket.jsでサーバサイドJSとHTML5 WebSocketを体験してみたの巻 - ダウンロードたけし(寅年)の日記
基本的にはこの手引きのまま環境を整えていたのですが、いざWebSocketのサーバーを動かす件がうまくいきません。
READMEに従いportを指定しようとするとエラーが出てしまうのです。
$ node runserver.js --port='8888' (evcom) bind() Permission denied Error: Permission denied at new <anonymous> (/home/*/src/node.websocket.js/websocket.js:61:15) at Object.<anonymous> (/home/*/src/node.websocket.js/runserver.js:4:28) at Module._loadContent (node.js:942:21) at node.js:970:20 at node.js:571:25 at node.js:1031:9
nodeの仕様が変わったのか、node.websoketのオプションの解釈部分がうまく動いていないようです。
ざっくり修正ですがとりあえずtools.jsを以下のようにすると動きました。
diff --git a/tools.js b/tools.js index 6c834ce..31d8d64 100644 --- a/tools.js +++ b/tools.js @@ -32,10 +32,10 @@ this.merge = function(obj, newobj){ // reads argv, parses --option=value into {option: value} this.argvToObject = function(argv){ - var obj = {}, regex = /\-\-(\w+)(\=(\\'.+\\'))?/; + var obj = {}, regex = /\-\-(\w+)=(.+)/; for (var i = 0, l = argv.length, match; i < l; i++){ match = argv[i].match(regex); - if (match) obj[match[1]] = match[3] !== undefined ? eval(match[3]) : null; + if (match) obj[match[1]] = match[2] !== undefined ? match[2] : null; } return obj; };
swigのpointerサンプルをC#に移植
swigでC#をちょこちょこ遊んでるんですがswigのExample/charpはいまいち数が少ない。でpointerサンプルもなかったのでJavaのを見ながら移植してみた。
class Program{ static void Main(string[] args){ // First create some objects using the pointer library. System.Console.WriteLine("Testing the pointer library"); SWIGTYPE_p_int a = example.new_intp(); SWIGTYPE_p_int b = example.new_intp(); SWIGTYPE_p_int c = example.new_intp(); example.intp_assign(a,37); example.intp_assign(b,42); System.Console.WriteLine(" a ={0:X}", example.intp_value(a)); System.Console.WriteLine(" b ={0:X}", example.intp_value(b)); System.Console.WriteLine(" c ={0:X}", example.intp_value(c)); // Call the add() function with some pointers example.add(a,b,c); // Now get the result int res = example.intp_value(c); System.Console.WriteLine(" 37 + 42 " + res); // Clean up the pointers example.delete_intp(a); example.delete_intp(b); example.delete_intp(c); // Now try the typemap library // Now it is no longer necessary to manufacture pointers. // Instead we use a single element array which in Java is modifiable. System.Console.WriteLine("Trying the typemap library"); int r = 0; example.sub(37,42,out r); System.Console.WriteLine(" 37 - 42 = " + r); // Now try the version with return value System.Console.WriteLine("Testing return value"); int q = example.divide(42,37,out r); System.Console.WriteLine(" 42/37 = " + q + " remainder " + r); } }
コンパイル例。
swig -csharp example.i gcc -c -fpic *.c gcc -shared *.o -o libexample.so mcs -nologo -t:library -out:example_wrap.dll examplePINVOKE.cs example.cs SWIGTYPE_p_int.cs mcs -nologo -r:example_wrap.dll -out:runme.exe runme.cs
実行結果。
Testing the pointer library a =25 b =2A c =0 37 + 42 79 Trying the typemap library 37 - 42 = -5 Testing return value 42/37 = 1 remainder 5
迷路といた。
人材獲得作戦・4 試験問題ほか: 人生を書き換える者すらいた。
前にやったやつを貼ってみようかと。
レベルがいくつになってんのかはしらねーです。アルゴリズムも名前があるものかないものかもしらねーです。
3時間以内には書けました。
require 'pp' Maze = " ************************** *S* * * * * * * ************* * * * * ************ * * * * ************** *********** * * ** *********************** * * G * * * *********** * * * * ******* * * * * * ************************** " def split(m) m.split(/\n/).map{|line| line.split(//) } end def join(m, width=1) m.map{|line| line.map{|c| sprintf("%0#{width}s", c.to_s)}.join } end def pos(c) @maze.each_with_index{|line, y| if x = line.index(c) return [x,y] end } nil end def fill(rute) x,y = *(rute[-1]) len = rute.size case @maze[y][x] when "*" return when "S" when "G" @rute ||= rute @rute = rute if len < @rute.size return when " " @maze[y][x] = len else return if len >= @maze[y][x] @maze[y][x] = len end fill(rute+[[x+1,y]]) fill(rute+[[x-1,y]]) fill(rute+[[x,y+1]]) fill(rute+[[x,y-1]]) end @maze = split(Maze) @rute = nil fill([pos("S")]) pp join(@maze, 3) p @rute m = split(Maze) @rute[1..-2].each{|x,y| m[y][x] = "$" } pp join(m)
乙女よ大志を抱け!!を演奏してみた。
演奏しました。紛らわしいタイトルですがアテフリは無しで動画と音と同時に撮ったものです。
収録時間は4時間くらい。っていってもTakeは一桁。演奏動画をちゃんと撮るのが初めてだったのでその環境準備にけっこう時間がかかりました。まずデジカメ探すところからスタートですからね。そのつぎ充電器。これかなり重い作業だった。満を持して充電。これがなげーなげー。おまけで収録。この画と音と同時にというのはなかなか幹部の辛いところでして、デジカメつないだTVをモニターしながら弾くんですが、ついつい動き回って演奏ぐだったりまた逆だったりとバランスが難しかったです。
中身的には構想は結構前からしてました。イメージとしてこの曲のたのしたのし感を出来るだけ表現したいナーと思ってました。でやっぱりアレンジが悩みどころで、とくにサビですねあれは結構考えた。小気味良い感じにしたかったんです。結果まあまあ気にいってはいます。逆にAメロあたりはその場の感でやっつけてたりしててだめだめですね。ごめんなさい。
ギターはIbanezeのRG、エフェクターはPOD、録音編集はCubaseLE。PODはLine 6 Spinel Puppetっていうつまみデザインがどくろの、メタルメタルしいアンプモデルで、ドライブ7ベース5ミドル6トレブル3プレゼンス4くらいのセッティング。他のエフェクトはOFF。つーかリバーブもOFFにしてたってさっき気づきました。このセッティングですが、撮り終えて聴いたらちょっとこもったのでCubeseのEQで高音足しました。
動画的には、デジカメからでたMOVファイルをAviutilで切って可逆圧縮で書き出し。それをCubase上で画にあわせて音のタイミング調節。CubaseLEさんはZOOMのマルチにただでついてきたっていうのに動画再生機能まであるんですよほんと便利。
ところがここで問題があってどうも画と音がずれる。5分弱の動画の最初と最後で0.数秒くらいずれる。画が早い。音が遅れる。検証はしてないけどたぶんこのデジカメの動画機能の特性なんだろうなーと思ってます。なんだども画を細かく伸び縮みさせる術を知らないので、またもCubaseさんに出張ってもらい、音のほうを99.8%ほどに縮めて解決しました。して出来た画と音をつんでれんこに突っ込んでmp4作成。つんでれんこはこまけーこと気にしないで良いので気に入ってます。
演奏してみたの方はまー昔から、アイドルマスターとか好きになる全然前からやってみてーと思っていたジャンルではありまして。でもまーあそこの人たちってちょーうめえ人ばっかだし、と思うにとどまっている俺でした。ところがなんかいつの間にかアイマスさんに乗っかる感じに支えてもらい、動画を上げることの壁をこえてしまっていたのでした。なので演奏もまあ俺の一ネタとして使えると思えるようになり、また憧れもやっぱりありますから、ここでもアイマスさん踏み台に上げさせたもらったのでした。ありがとうございました。
次の演奏は未定ですけど、でもまた何かは弾きたいですねー。
pixivをAutoPagerizeしてみた。
pixiv.ccのブログ用。なんかpixiv.ccでもブログによって中身が違うようなんでorとか使ってるし、見え方もちょっと微妙。
{ url: '^http://pixiv\\.cc/\\w+/archives/\\d+\\.html', nextLink: '//li[@class="prev"]/a', pageElement: '//div[@id="first" or @class="column"]', }
www.pixiv.netイラスト観覧用。こっちもちょっと微妙だけど便利は便利。
{ url: '^http://www\\.pixiv\\.net/member_illust\\.php\\?mode=medium&illust_id=\\d+', nextLink: '//div[@id="content2"]/div/a[last()]', pageElement: '//div[@id="content2"]', },
twitterのタイムラインをIDでフィルターする
タイムライン上にFF13の感想等がでるのがいやーなので
IDでフィルターしてしまうことにしましたすみません。
ネタバレ苦手なんですすみません。
って思ったけどこれニコニコかんけーねーなすみません。
しかも数分ためしてすでに使い物にならねーと思いましたすみません。
// ==UserScript== // @name twitter_filter // @namespace twitter // @include http://twitter.com/ // ==/UserScript== //config var ng_id_list = ["oscdis"] //logic function eval_xpath(rcv, doc, xpath){ return rcv.evaluate(xpath, doc, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); } function doc_xpath(xpath){ return eval_xpath(document, document, xpath); } function ary_xpath(xpath){ var ret = []; var a = doc_xpath(xpath); for (var i = 0; i < a.snapshotLength; i++){ ret.push(a.snapshotItem(i)); } return ret; } function ancestor(node, i){ return i==0 ? node : ancestor(node.parentNode, i-1); } function is_ng_id(id){ for (var i = 0; i < ng_id_list.length; i++){ if (ng_id_list[i] == id) return true; } return false; } //main var a = ary_xpath('//span[@class="status-body"]/strong/a'); for (var i = 0; i < a.length; i++){ if (is_ng_id(a[i].text)){ var li = ancestor(a[i], 3) li.parentNode.removeChild(li); } }