タグ

ブックマーク / amachang.hatenablog.com (23)

  • pthread でキューを作ってみる(再々挑戦、最終版) - IT戦記

    先日の pthread のキューですが pthread でキューを作る(再挑戦)。ついでに dtrace でスレッドの解析 - IT戦記 このエントリのコメント欄でさらに id:n-soda さんにアドバイスを頂いたので、修正したいと思います。 まず、 memory.h は古いらしい string.h を使いましょう。ということらしい 試しに、 /usr/include/memory.h を cat してみたら /* * Copyright (c) 1988, 1993 * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are per

    pthread でキューを作ってみる(再々挑戦、最終版) - IT戦記
  • 若者に一度だけ与えられる出会いの場、セキュリティ&プログラミングキャンプ - IT戦記

    はじめに 2008 年 8 月 13 日 〜 17 日まで、講師としてセキュリティ&プログラミングキャンプ 2008 に参加させていただきました。 セキュリティ&プログラミングキャンプって何? セキュリティキャンプ&プログラミングキャンプとは、 2004 年から始まった「若くて優秀なセキュリティ人材やプログラマーを育てちゃおうよ!」というイベントです。 キャンプの名のとおり 5 日間キャンプ形式で行わます。そして、毎日 8:00 〜 22:00 まで講義が行われるという大変ハードでエキサイティングなイベントです。 僕が経験したキャンプ 僕がキャンプの中で経験したこと感じたことを書いておきたいと思います。 楽しさを伝えることの重要性 僕は、 JavaScript の講義を担当していたのですが、前日まで作っていた資料とは全然違う資料を使って講義を行いました。 一日目、手を動かしながら目を輝かせ

    若者に一度だけ与えられる出会いの場、セキュリティ&プログラミングキャンプ - IT戦記
  • JavaScript OOP におけるクラス定義方法 - IT戦記

    クラスを定義する方法です。考え付くだけでも、これだけたくさんの方法があります。やっぱり、 JavaScript って柔軟であり複雑な言語ですね。 ちなみに、以下のすべての例はこのクラスを定義しています。 ちなみに、僕は一番下の書き方ですね。 皆さんはどのようにプログラミングしていますか? プロトタイプを使わない。クロージャを使う。 // プロトタイプを使わない。 // クロージャを使う。 function Item(price) { this.showPrice = function() { alert(price); }; } プロトタイプを使わない。クロージャを使わない。 // プロトタイプを使わない。 // クロージャを使わない。 function Item(price) { this.price = price; this.showPrice = function() { aler

  • ブラウザでお絵描きプログラミング! Processing.js 登場! - IT戦記

    はじめに 今日、 jQuery の作者として有名な John Resig さんが Processing.js という JavaScript のライブラリを公開しました。 John Resig - Processing.js このライブラリを使うと、比較的簡単に以下のようなグラフィックスやアニメーションを書くことができるようになります。 というわけで、公開されたばかりのこのライブラリを簡単な使い方から詳しい使い方までとことん掘り下げてみたいと思います。 Processing.js 概要 まず、 Processing.js とは何かという話をします。 Processing.js とは、ブラウザで Processing というプログラミング言語を実行する JavaScript のライブラリです。 では、 Processing とはどのようなプログラミング言語なのでしょうか。 Processing

    ブラウザでお絵描きプログラミング! Processing.js 登場! - IT戦記
  • Perl で JS の arguments.callee 的なことしようと思ってハマった - IT戦記

    JavaScript では arguments.callee を使うと以下のように無名関数の再帰が書ける (function(c) { if (c == undeinfed) c = 10; console.log(c); if (c--) arguments.callee(c); }); Perl で そういうことをやる方法を知らないので do { my $c = 10; my $callee = sub { print "$c\n"; &$callee if ($c--); }; }->(); とやろうと思ったら怒られた>< なんで怒られたれたかというと sub は作られた時点のレキシカル変数しか記憶しないからのようだ。 さっきの例の my $callee = sub { ... }; では、 sub { ... } の評価が my より先に行われる。 なので、 sub { ... }

    Perl で JS の arguments.callee 的なことしようと思ってハマった - IT戦記
    mogwaing
    mogwaing 2008/05/02
    無名関数の再帰
  • Devel::Caller が便利すぎる件について - IT戦記

    こんなことを書いていたら Perl で JS の arguments.callee 的なことしようと思ってハマった - IT戦記 さっそく教えて貰えた>< http://d.hatena.ne.jp/tokuhirom/20080501/1209625789 ありがとうございます! さっそく使ってみた! 以下のコードを # test.pl use strict; use warnings; use Devel::Caller qw(caller_cv); sub { my $c = shift; print "$c \n"; caller_cv(0)->($c) if ($c --); }->(10); 実行! $ perl test.pl 10 9 8 7 6 5 4 3 2 1 0 $ おおおおおお。キタコレ!かなりシンプル! これで無名関数の再帰ができる>< id:tokuhirom

    Devel::Caller が便利すぎる件について - IT戦記
    mogwaing
    mogwaing 2008/05/02
    jsのarguments.callee 的なことをperlで
  • Y コンビネータって何? - IT戦記

    このエントリの 親友へ。ブログを書こう。 - IT戦記 y がブログを始めたみたいなので、読んでみた。 で、最新のエントリを読んでみたら、 Y コンビネータというものについて書いてあったので、 Y Combinatorが凄すぎる! - yuji1982の日記 Y コンビネータって何ってところから、自分でもいろいろ考えてみた。 結局なんなのかさっぱり分からなかったんですが、自分が考えたことをまとめておく まず、フィボナッチ数を求める fib を定義する var fib = function(n){ return (n <= 2) ? 1 : (arguments.callee(n-1) + arguments.callee(n-2)); }; fib(10); おお! JS すげー!名前は n しか使ってねーよ! めでたし、めでたし。。。。じゃなくて! JS が素晴らし過ぎて話が終わってしま

    Y コンビネータって何? - IT戦記
  • mmap の話 - IT戦記

    今のところの理解 int fd; char * addr; fd = open("/Users/amachang/hoge", O_RDONLY); addr = mmap(0, size, PROT_READ|PROT_WRITE, MAP_FILE|MAP_PRIVATE, fd, 0); close(fd); こんな感じでやると、 hoge っていうファイルと addr から始まるメモリがちょうどスワップファイルとページの関係になる。 つまり、実際はファイルとメモリの番地は関連付けられただけで、アクセスするとページフォルト割り込みが発生してその都度読みにいく。 他のプロセスが既にこのファイルを mmap してたら同じ物理アドレスを指す仮想アドレスが帰ってくる。(仮想アドレスは違うけど、物理アドレスは同じ) MAP_PRIVATE が指定されている場合、プロセスがメモリの内容を変更する

    mmap の話 - IT戦記
  • 動的スクリプトローディング(さんざん既出だと思うけど - IT戦記

    なんか、既出な予感もするんですけど 私製版を作ったので コード var load = function(src, check, next) { check = new Function('return !!(' + check + ')'); if (!check()) { var script = document.createElement('script') script.src = src; document.body.appendChild(script); setTimeout(function() { if (!check()) setTimeout(arguments.callee, 100); else next(); }, 100); } else next(); }; 考え方は、 このエントリ と同じです。 使い方 以下の場合 // 処理 1 // ← ここで jQu

    動的スクリプトローディング(さんざん既出だと思うけど - IT戦記
  • お手軽 Deferred を作ってみた - IT戦記

    昨日 id:cho45 たちと飲んで deferred のメリットを教えてもらいました>< で、僕も色々考えて自家製を作ってみました。 自家製 deferred 用関数 var defer = function(f) { var fs = []; if (f) fs.push(f); var deferred = function(f) { if (f) fs.push(f); setTimeout(function() { while (fs.length) { var f = fs.shift()(); if (f && f.isdeferred) { setTimeout(arguments.callee, 0); break; } } }, 0); return function(f) { if (f) fs.push(f); return arguments.callee; }

    お手軽 Deferred を作ってみた - IT戦記
  • JavaScript-XPath をリリースしました!さあ、あなたも XPath を使おう!(解説付き) - IT戦記

    JavaScript-XPath とは JavaScript-XPath は、 DOM 3 XPath を実装していないブラウザに対して、実用的な速度で動作する DOM 3 XPath のエンジンを追加します。 一言で乱暴に言ってしまえば、どのブラウザでも document.evaluate って関数で XPath 使えるようになるよ!ってことです。 以下が公式サイトになります。 http://coderepos.org/share/wiki/JavaScript-XPath DOM 3 XPath ってなんなの!? めっちゃ簡単(で、ちょっとだけ適当)なDOM 3 XPath の説明をします><。 JavaScript でよく使う document.getElementById や document.getElementsByTagName って関数ありますよね? DOM 3 XPath

    JavaScript-XPath をリリースしました!さあ、あなたも XPath を使おう!(解説付き) - IT戦記
    mogwaing
    mogwaing 2007/11/13
    すごい!
  • IT戦記 - JavaScript で数式パーサを書いてみた。

    背景 いままで、ちゃんとパーサというものを書いたことがなかったので勉強のためにアレコレ考えながらやってみようと思って、簡単な数式を木にするパーサを書いてみようと思ったのです>< 今回作るパーサの仕様 パースする数式の演算子は二項演算子 + - * / と単項演算子 + - だけ。 括弧とかは使わない。 演算の優先順位は * / のほうが + - より高い。つまり、 1 + 1 * 1 は 1 + (1 * 1) 単項演算子は二項演算子より優先順位が高い。つまり、 - 1 + 1 は (-1) + 1 で、作ってみた! ソースコード filter 関数とか使ってるので、 Firefox only です。 var parse = function(source) { var tokens = source.match(/[-+*/]|[^-+*/\s]+|\s+/g).filter(/^[^\

    IT戦記 - JavaScript で数式パーサを書いてみた。
  • IT戦記 - 僕も半透明 png を使うためのライブラリ作った!

    いろいろと古い IE で半透明 png を使うための JS が紹介されています http://web.kankodo.net/2007/02/01-233315.html http://labs.unoh.net/2007/02/ie6_png_fix.html http://phpspot.org/blog/archives/2007/02/iepngjavascript.html で、自分も使おうと思ったのですが。 ライブラリの依存とか、 window の load イベントの時に処理されるのがちょっとだけ嫌だったので、自分用のを作りました。 意外と便利だったので公開します デモ(IE5.5 or IE 6 で見てください) http://usrb.in/amachang/static/AlphaLoader/demo.html 使いかた 半透明にしたい img 要素のあとに http

    IT戦記 - 僕も半透明 png を使うためのライブラリ作った!
    mogwaing
    mogwaing 2007/10/19
    ie6でアルファチャンネル画像を扱う
  • IT戦記 - JavaScript の this について

    WEB+DB PRESS 編集の R たんから、僕の連載記事に読者様から質問が来ていると教えていただいたので、その内容を教えていただきました。 以下、内容を転載 「JavaScriptわくわく開発道」の記事に関して質問です。 今回の内容で特に興味を持ったのはthisキーワードの振る舞いでした。 thisキーワードの説明には、オブジェクト型の変数を別の変数にコピーしてから初期化すると、コピーした変数からメソッドを実行できなくなるという例が紹介されていました。 そこには「(1)の時点でobj0には{}が入っているため、hogeは未定義となってしまう」という説明があるのですが、誌面の都合上省略があるためか、thisキーワードを用いることで問題を回避できるという理由がなかなか理解できないでいます。 自分なりに考えてみたところ、内部的には以下のようなことが起きているのではないかと思いました。 (1)

    IT戦記 - JavaScript の this について
  • Shibuya.js を終えて #2 - IT戦記

    資料置いておきます。(Firefox 推奨、IE では一部エフェクトが効きません) ↓上下キーでページ送りです。 http://sample.ecmascript.jp/shibuya_js_tt2/amachang/ 感想 うーん。テーマがテーマなだけに新しいことを話すのが難しかった。 やっぱ、prototype.js script.aculo.us は語りつくされた感ありますね。 そんな中、 id:motemen さんの Mochikit にびびっとキマシタね! これだ!みたいな。今後、 prototype.js よりも Mochikit をいじっていきましょうかね。 あとは、最速 ma.la さんがすごかった。Trigger はパクると思う。 関連リンク http://shibuyajs.org/articles/2006/06/15/technical-talk-2

    Shibuya.js を終えて #2 - IT戦記
  • IE 以外の JavaScript で getter setter が使えるようになる! - IT戦記

    Opera 9.5 では getter setter が使えるようになります。 http://my.opera.com/desktopteam/blog/kestrel-is-coming で Safari 3 でも使えるか試してみたら・・・ alert({ get x() { return 'ok' } }.x); // ok つ、使えた! Firefox でも かなり前から getter setter が使える という事は・・・ IE 以外で getter setter が使えるのはもうすぐだ!!! IE にしかないプロパティを他のブラウザで実装することができるようになる!! たとえば、こんな感じ? // ↓条件付きコンパイル /*@cc_on @if (@_jscript) @else @*/ if (!('returnValue' in Event.prototype)) { Ev

    IE 以外の JavaScript で getter setter が使えるようになる! - IT戦記
  • JavaScript 1.8 では無名関数が書きやすくなる。 - IT戦記

    以下のブログで JavaScript 1.8 の新文法が紹介されています。 http://ejohn.org/blog/javascript-18-progress/ MDC の資料 -> http://developer.mozilla.org/en/docs/New_in_JavaScript_1.8 その中でも無名関数についての新文法が楽しいので紹介します。 // 関数の中に文が一つでその評価値を return してるような関数は function(x) { return x * x } // 以下のように書ける function(x) x * x たとえば [1, 2, 3, 4, 5].filter(function(x) x < 3); // [1, 2] element.addEventListener('click', function(e) e.stopPropargat

    JavaScript 1.8 では無名関数が書きやすくなる。 - IT戦記
  • Mac 2 日目の僕でも出来た! XCode を使った Firefox デバッギング - IT戦記

    ちょっと釣りっぽいタイトルでごめんなさいw でも、当に簡単に出来るので皆様もお試しあれ。あと、 Mac まだよくわかってないのですごい回りくどいことやってるかもしれないので、そのときは指摘してくだしあ>< じゃあ、いってみよう! 1. Firefox のソース持ってくる! $ mkdir ~/source $ cd ~/source $ export CVSROOT=:pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot $ cvs login pass:anonymous $ cvs co mozilla/client.mk mozilla/browser/config $ cd ~/source/mozilla $ make -f client.mk pull_all MOZ_CO_PROJECT=browserとやるとソースがダーっとダ

    Mac 2 日目の僕でも出来た! XCode を使った Firefox デバッギング - IT戦記
  • 5/19 日に行った勉強会の動画をニコニコ動画にアップしました。 - IT戦記

    このエントリーの動画です。 http://d.hatena.ne.jp/amachang/20070519/1179592450 最初にお詫び テープが切れてしまって、僕と fladdict さんと taka:nium さんの動画が録れてませんでした><ごめんなさい!ほんとにごめんなさい! お礼 動画は http://miniturbo.org/ の kz 君が編集&アップしてくれました。相当時間がかかったみたい><ありがとう!ほんとにありがとう!今度なんか奢ります。 動画一覧 haXe remoting でチャチャッとチャット - tocy.Net http://www.nicovideo.jp/watch/sm365442 ActionScriptでサーバーとごにょごにょ - ll_koba_ll http://www.nicovideo.jp/watch/sm365636 RIAと呼

    5/19 日に行った勉強会の動画をニコニコ動画にアップしました。 - IT戦記
  • 勉強会資料-IT戦記

    勉強会の趣旨 nitoyon さんから amachang への一通のメールから始まりました。 5/16-18にお仕事で東京にいく予定です。 (中略) 19, 20 も予定がないので、なんか面白いネタ(勉強会?)が あれば参加してみたいものです。 というわけで、じゃあ、 nitoyon さんの興味のありそうな分野の人を集めようということで、今回の勉強会が決定しました。 発表と各資料のリンク 随時リンクしていきます。資料を公開したかたはトラックバックやコメントをくれるとうれしいです! tocy – haXe remoting でチャチャッとチャット ll_koba_ll – ActionScriptでサーバーとごにょごにょ(資料) nitoyon – RIAと呼ばれるものまとめ(資料) ZIGOROu – Canvas Mario Bros. cho44 – Ruby, RubyCocoa,

    勉強会資料-IT戦記