サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
大そうじへの備え
takahirox.hatenadiary.org
THREE.MMDLoader which I've been developing will be available in Three.js r74. It was already merged into r74 dev. https://github.com/mrdoob/three.js/pull/7687 MMDLoader enables you to use MMD data on browser with Three.js. Demo: http://takahirox.github.io/three.js/examples/index.html#webgl_loader_mmd_stage (Sound comes out) http://takahirox.github.io/MMDLoader-app/index.html Source code: https://g
はじめに 最近Lions' Commentary on UNIXを読み始めました。 読み進めるだけでは理解が浅いと感じたので、メモをこのブログに書いていこうと思います。 Lions’ Commentary on UNIX (Ascii books) 作者: ジョンライオンズ,John Lions,岩本信一出版社/メーカー: アスキー発売日: 1998/07メディア: 単行本購入: 13人 クリック: 807回この商品を含むブログ (33件) を見る 対象は第五章以降の予定。途中で挫折しないことが最大の目標。 malloc メモリリソースの種類 coremap メインメモリ。32word(64byte)単位で読み書き swapmap ディスクスワップ領域。256word(512byte)単位で読み書き malloc, mfreeにはどちらかが渡される。ルーチン自体は扱っているリソースがどちら
Introduction You know, I've been implementing a STG with JavaScript and HTML5. (This article follows the previous article http://d.hatena.ne.jp/takahirox/20130819/1376894048) Recently, the low performance of the STG was getting serious, therefore I got the profile. I found the GC was one of the most heavy processings (though the heaviest processing is canvas drawing), and I attempted to reduce GC
Introduction This entry follows the last entry. http://d.hatena.ne.jp/takahirox/20130707/1373178742 I'll introduce my PDP11 emulator implemented with JavaScript because I almost achieved it. PDP-11 Emulator implemented with JavaScript You can run UNIX V6 on your web browser here. (Note that I confirmed only it runs on the combination of Windows and Chrome.) http://takahirox.github.io/pdp11-js/unix
Introduction Hi, it's been a while. I'll show you what I implemented recently today. PDP-11 Emulator implemented with JavaScript 2013/07/22 2013/07/21 2013/07/09 2013/07/07 I implemented a PDP-11 Emulator with JavaScript. You can see on the video that UNIX 6th Edition runs on a web browser. I didn't implement whole features yet and I know there are a lot of bugs. And also I need to make it much fa
はじめに 「はじめてのOSコードリーディング 〜UNIX V6で学ぶカーネルのしくみ〜」という本を2013年1月8日に技術評論社から出版します。 はじめてのOSコードリーディング ~UNIX V6で学ぶカーネルのしくみ (Software Design plus) 作者: 青柳隆宏出版社/メーカー: 技術評論社発売日: 2013/01/09メディア: 単行本(ソフトカバー)購入: 56人 クリック: 1,959回この商品を含むブログ (29件) を見る このエントリでは、その本の紹介を行います。もし興味を持ったならば、書店などで手に取っていただけると幸いです。 追記 追記 2013/08/17 PDP11エミュレータをJavaScriptで実装しました。WebBrowser(Crhome)上でUNIX V6の動作確認を行うことができます。デバッグ機能もありますので、読者の方はコードリーディ
はじめに 半年くらい抱えていたとあることが、一応一段落したので、またブログを更新していこうと思っています。UNIX v7 code readingを継続するのと、それに加えてUNIX v6 システムプログラミング(code reading)というものを始めます。他にもいくつかネタはあるのですが、それは追々。 UNIX v6のカーネルは一通り理解できたつもりなので、次はカーネルが提供するサービスを使って、システムを構築・管理するユーザランドのシステムプログラムを見ていこうというものです。 カーネルは最低限のサービスを提供するものであり、その内容を真に理解するためには、サービスを使用する側の理解も必要だと考えています。これはカーネルだけでなく、ハードウェアとソフトウェア間や、ネットワークのレイヤ間などでも同様のことが言えるでしょう。 /etc/init 起動処理のおさらい 今回は/etc/in
http://d.hatena.ne.jp/takahirox/20110827/1314441832の続き 紹介動画 免責 まだバグバグな状態です。無限ループなどにはまる可能性もあります。自己責任で使用してください。 ローパワーなマシンだと結構遅いです。 使い方 下記のリンクをクリックしてください。Windows + Chrome環境のみで動作確認しています。 http://unix-v6-hacks.googlecode.com/git/html5/terminal.html --allow-file-access-from-filesオプションをつけてchromeを実行しておく必要が有ります。このサイトを参考にしてください。 http://chrome.half-moon.org/43.html emulatorのページを開いたらウィンドウ内にディスクイメージをドラッグ&ドロップして
はじめに Unix 6th Edition readingが一息ついたので、7th Editionのreadingに移ります。 6thのときと同じように、ここでメモを書いていこうと思っています。 今回は、6thと7thの差分をざっと明らかにして、どういう方針でメモを書いていくかを決めます。 ソースコード このサイトを使ってソースを読んでいます。 http://www.tamacom.com/tour/kernel/unix/ 検索機能が便利です。 6thと7thの差分 最初に、6thと7thの差分を明らかにすることを試みました。 UNIX PROGRAMMER'S MANUAL Vol.1の"CONVERTING FROM THE 6TH EDITION"という項を読んでみましたが、カーネル内部の大きな変更は無さそうだということがわかりました。 UNIX PROGRAMMER'S MANU
このエントリはhttp://d.hatena.ne.jp/takahirox/20120131/1328006885を和訳したものです。 はじめに 最近UNIX 6thのソースコードの読書メモを書き終えました。 みさなんにもUNIX 6thのソースコードを読むことをオススメします。 その理由をこのエントリで書いていきます。 まとめ UNIX 6thは初めてOSのソースコードを読む人にうってつけ! 今すぐ読み始めましょう! UNIX 6thのソースコードはこちらなどで読むことができます。 http://minnie.tuhs.org/cgi-bin/utree.pl?file=V6 UNIX 6thのソースコードを読むことをオススメする理由 たったの10,000行 最近のLinuxカーネルのソースコードは100万行を超えています。全てを理解するのは至難の業です。 一方、UNIX 6thのカー
はじめに 今回はパイプを見ていきます。 ソースコードのunix/pipe.cを中心に追っていきます。 パイプの仕組み パイプとはプロセス間の通信を実現する仕組みのことです。 各プロセス毎に固有のアドレス空間を持っているため、通常は他プロセスが持っているデータにアクセスすることができません。プロセス間でデータをやり取りするために生まれたのがパイプです。 パイプはファイルシステムを使って実現されます。 root diskのinode(=パイプ)を取得し、そのinode(が指すデータ領域)越しにデータをやりとりします。パイプの容量は4,096bytesとなっており、パイプがいっぱいになったら自分は寝て、読む側のプロセスを起こしパイプのデータを読み取ってもらいます。読み取ったデータはパイプから取り除きます。逆にパイプから読むデータがなくなったら自分は寝て、書く側のプロセスを起こしパイプにデータを書
はじめに 今回は対話型端末の処理方法を見ていきます。 Lions本で言うと24章にあたります。 対話型端末とは 対話型端末とは何なのか、まずは調べてみました。 テレタイプ端末というのがそれにあたるようです。 http://ja.wikipedia.org/wiki/%E3%83%86%E3%83%AC%E3%82%BF%E3%82%A4%E3%83%97%E7%AB%AF%E6%9C%AB 上記リンク先に載っている写真のように、キーボード(タイプライタ)とディスプレイ(プリンタ)が1つになったような装置です。 YouTubeにテレタイプ端末の1つであるASR-33という端末を使ってPDP11/40を操作している動画がありました。 この動画で、テレタイプ端末がどういうものかわかったと思います。 ttyというキーワードが出てきますが、これはテレタイプ端末(tele type writer)から
はじめに 前回のエントリの続きで、今回もUNIX v6のファイルシステムを見ていきます。 前回はブロックデバイスを中心に見ていきました。今回はコアメモリを中心に見ていきます。 コアメモリ中のファイル関係のデータ構造 inode構造体 アクティブなファイルのinodeなどはコアメモリ中のinode[]構造体の配列(5659行目で定義)に格納されます。ブロックディスク上で扱われるinode構造体の定義(5605行目で定義)と中身が少し異なりますので注意してください。 inode構造体はi_countという参照カウントをもっており、このカウントが0だった場合、そのinodeエントリは割りあてられていない空きエントリとみなされます。 file構造体 ファイルをオープンすると、5507行目で宣言されているfile構造体の配列にエントリが追加されます。 file構造体はREAD, WRITE, PIP
はじめに 今回からUNIX v6のファイルシステムを見ていきます。 いきなりLions本18章を読み解いていくのは難しいと感じたので、まずはファイルシステムの概要をまとめてみました。 今回はブロックデバイス上での処理を中心にまとめていきます。次回はコアメモリ中での処理をまとめようと思っています。 ブロックデバイス ブロックデバイスの先頭#0はブートプログラムなどに使われます。 次の#1はsuper blockと呼ばれるブロックで、そのデバイスの情報が含まれます。filsys構造体(5561行目)を参考にしてください。 その後の#2〜#n+1まではinodeで占められます。inodeはファイルの情報を持ったデータで、ファイルサイズやパーミッションや更新日時、対応したファイルデータのアドレスなどを持ちます。後述しますが、ファイル名は持っていません。 また、i_numberとして、inode自体
はじめに 今回は12章の続きを追います。 システムコールのfork, exec, breakを見ていきます。 Lions本ではexec, fork, breakの順に扱っていますが、fork, exec, breakの順に見ていきます。こちらの方が理解しやすいと思います。 fork & exec system call forkとexecシステムコールはセットで使用されることが多いです。まずはそれぞれの概要を見ていきます。 forkとは forkはプロセスを新たに生成するシステムコールです。内部でnewproc( )を呼び出します。 新しいプロセスはforkシステムコールを呼び出したプロセスのコピーと言えます。ただしpidは新しいid, ppidはforkシステムコールを呼び出したプロセスのpidになります。詳細はnewproc( )の1861-1869あたりや以前のエントリを参考にしてく
はじめに 今回は14章の「プログラムスワッピング」を読み解いてきます。 スワッピング処理とは 高速であるが、高価・小容量である物理メインメモリ(コアメモリ)を効率よく使用するためにプログラムスワッピングという機構があります。 コアメモリが足りなくなったら、寝ていたり使っていないプロセスのデータセグメントを、ディスクなど低速だが大容量のスワップ領域に待避します(スワップアウト)。 スワップアウトしたデータが必要になったら、スワップ領域からコアメモリに戻します(スワップイン)。 絵にするとこんな感じです。 スワッピングの単位はデータセグメント、テキストセグメント単位のようです。なので、ページングと違い、コアメモリ以上に大きなプログラムは実行できないのではないかと思います。(スワッピングとページングは比較するものではない?) 共有テキストセグメントとは プロセスが保持しているセグメントのうち、テ
introduction i said that we could use GAE as web cron at http://d.hatena.ne.jp/takahirox/20110424/1303652584 i worried about cron when i made bot with ruby. http://d.hatena.ne.jp/takahirox/20090523/1243086497 perhaps, GAE can resolve this problem. python GAE application with "urllib2" and your bot with ruby or other language that executed via CGI on the other sever. i tried doing that. and i'll ma
このエントリの和訳です。http://d.hatena.ne.jp/takahirox/20110424/1303652584 はじめに GAE(Google App engine)とpython(とLinux)を使ってtwitterのbotを作ってみました。そのときのメモを残しておきます。 botを作ってみようと思っている人の参考になれば。 作ったbot http://twitter.com/forecasthoge 東京の天気予報を呟きます。 twitterアカウントを取得してtwitter applicationを設定する twitterアカウントの取得 最初にbot用のtwitterアカウントを取得します。 https://twitter.com/signup 今回は @forecasthoge というアカウントを取得しました. twitter applicationを設定する 次
introduction i tried to make a bot with GAE(Google App Engine), python and Linux. i'll make notes of it. i hope it helps you who wants to make a bot. bot i developed http://twitter.com/forecasthoge it tweets the weather forecast of tokyo, japan. getting a twitter account and setting a twitter application get a twitter account first of all, get a twitter account for a bot. https://twitter.com/signu
はじめに 先日「ぐだ生」(@magoroku15さんのUstream. この間までunix v7を取り上げていた)を見ていたところ「新人には足し算システムコールをとりあえず作らせる」という旨の発言がありました。 それを聞いて「よっしゃ、やってみるか」と思ったのが今回の始まりです。 参考リンク http://d.hatena.ne.jp/oraccha/20101101/1288582382 こちらを参考にsimh+PDP11+UNIX v6環境を構築しました http://toyoshim.blogspot.com/2010/12/unix-6th-edition.html UNIX v6にselectシステムコールを追加しています。正直なところ、今回のエントリにはこのページ以上の情報はありません http://d.hatena.ne.jp/takahirox/20110220/12982
初めての方はこちらを参照 http://d.hatena.ne.jp/takahirox/20101024/1287923014 はじめに 今回は10章です。 トラップと割り込みルーチンを追っていきます。各トラップ・割り込みの個別処理は次章以降で扱われます。本章では個別処理に入る前・入った後の共通処理部分を見ていきます。 何故、割り込み・トラップという機構があるのか 割り込みの説明 割り込み・トラップのロジックを追う前に、その機構が存在する理由を自分なりに考えてみました。 割り込み機構は絵にするとこんな感じです。 各デバイスはCPUに対し要求をするときにREADY/DONE bitのフラグ(CPUのstate bit7?)をセットします。 また、CPUは1loop毎にDONE/READY bitを調べます。セットされていたら割り込み処理を、セットされていなければ通常処理を行います。 追記
XMLHttpRequestを使ったGoogle chrome extensionを作ってみたのでソースを公開してみます。 詰まるポイントが結構あったので、メモも残しておきます。 作ったもの webページ上記に東京の明日の天気予報を表示するGoogle chrome extension GoogleのSample Code(Cross-domain XMLHttpRequest from a content script)をベースにした http://code.google.com/chrome/extensions/samples.html livedoorの天気予報webAPIを使用 http://weather.livedoor.com/weather_hacks/webservice.html screen shot source code manifest.json permis
はじめに 前回のエントリではtwitterのpublic TLを取得するgoogle chrome extensionを作成しました。 今回はhome TL(friends TL)を取得するextensionを作成してみました。そのソースを公開しておきます。 大変だった点 OAuth認証 方針 とりあえず、アプリーション登録とaccess tokenを前もって手動で取得し、それらを直接コード中に埋め込むことにしました。 参考 http://route477.net/w/?RubyTwitterJa#l5 http://d.hatena.ne.jp/is0me/20100725/1280075887 http://d.hatena.ne.jp/takahirox/20101024/1287909298 参考にしたサイト http://blog.tomatomax.net/archives/2
「#MA6 Mashup Camp - Chrome Extensions / Web Apps Day」というイベントに参加してきました。 http://atnd.org/events/8390 Google chrome extension(わかりやすく言うと、web browserのプラグイン)作成を覚えてきたので、紹介しときます。 まとめ&その他 必要な環境はchromeのみ。( + html, javascriptなどを編集するエディタ ) 必要な知識はほぼjavascriptのみ。あとはextensionの構造やextension関係のAPIを理解すればだいたいOK. たったこれだけでブラウザ拡張できるってすごくない? そしてさらに デバッガなどのデベロッパーツールが充実している。 http://gihyo.jp/dev/feature/01/devtools とりあえずchr
比較的最近気が付いたことがあります。どうやら自分は聴覚情報処理障害があるのではないかと。 昔から騒がしいところでの会話が苦手でした。相手が何を言っているのかよく聞き取れないのです。例えば大衆居酒屋。例えば人混みの中。車や飛行機などの乗り物の中でもあまり聞き取れません。 なので誰かと夜の外食に行くのが苦手でした。騒がしいところが多いので、非常に聞き取りづらいのです。それでも何とか頑張って聞き取ろうとするので疲労がすごいのです。 アメリカのレストランは日本よりさらに騒がしいことが多いので、稀にお夕飯に誘われると正直なところ嬉しさより疲れるから嫌だなという感情が勝ってしまいます。実際たいてい断ってしまいます。 反響音の強い場所でも何を喋っているのかうまく聞き取れません。例えば銭湯。例えばサッカースタジアムでの選手インタビュー。 くぐもった声もよく聞き取れません。例えば低音質の電話。思い出してみる
お知らせ twitterがbasic認証を受け付けなくなったため、以下のスクリプトは動かなくなりました。 新しいスクリプトは以下です。 http://d.hatena.ne.jp/takahirox/20101024/1287909298 http://twitter.rubyforge.org/ を使用したクライアントスクリプトを作ってみました。 プロキシ越しにアクセスする方法を調べるのに少々時間がかかったので、公開しときます。 #!/usr/local/bin/ruby require 'rubygems' require 'twitter' require 'time' USERNAME = 'username' PASSWORD = 'password' PROXY_ADDR = nil PROXY_PORT = nil def request( base, getting_rep
引数を与えるとpost & get, 引数がないと get のみ #!/usr/local/bin/ruby require 'rubygems' gem( 'twitter4r', '>=0.3.0' ) require 'twitter' require 'time' USERNAME = 'username' PASSWORD = 'password' message = nil if ARGV.size > 0 then message = ARGV.join( ' ' ) end client = Twitter::Client.new( :login => USERNAME, :password => PASSWORD ) if message != nil then post_status = client.status( :post, message ) end statu
前々から興味のあった mixi アプリを作ってみた。そのときのメモ。あまりきちんと調べていないので嘘が紛れ込んでいるかも。 作ったもの RSS リーダ 動いているのを確認し、実際に自分のページに設置してみた まだ公開レベルは非公開 基本的には mixi Developer Center に従えばOK。 その上でちょっと詰まったところをメモしときます。 mixiDeveloper に登録 mixi アプリを作成するためには、下記リンクより mixiDeveloper に登録する必要がある。 mixi Developer Center その際、本名・住所・携帯のメールアドレスを記入する必要があった。非常に抵抗があったけど結局正直に登録。 参考: http://blog.alt-scape.com/archives/314 http://www.yama3.biz/programing/2009
ふと twitter の bot を作ってみたくなったので作ってみた。そのときのメモ 動作しているもの http://twitter.com/supertimebot 特徴は以下 5 分ごとに現在時刻をポストする bot ローカルで動作させているので、PC の電源を切っているときは動かない bot 入門用に、と思ったものなのでとってもシンプル 方針決め さて bot を作る、とは言ったものの、どう実現すればいいのか。恐らく必要となるものは次だろう twitter にアクセスするソフト ( スクリプト ) そのスクリプトを定期的に自動で実行してくれる環境 1. twitter にアクセスするソフト ( スクリプト ) 以前の記事を参考にスクリプトを用意すれば OK だろう。 2. そのスクリプトを定期的に自動で実行してくれる環境 crontab が使えるサーバがあれば実現できる……のだけれど
次のページ
このページを最初にブックマークしてみませんか?
『やる気のないブログ(A boring diary)』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く