<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6838834297478738089</id><updated>2012-01-26T20:13:41.058+09:00</updated><category term='Python'/><category term='Compiler'/><category term='Tennis'/><category term='SQL'/><category term='Game'/><category term='Information Retrieval'/><category term='Machine Learning'/><category term='acpi'/><category term='Programing'/><category term='VB.NET'/><category term='Math'/><category term='PLC'/><category term='Resarch'/><category term='Display'/><category term='Windows'/><category term='Production'/><category term='Comic'/><category term='Apple'/><category term='Lisp'/><category term='Keyboard'/><category term='Announcement'/><category term='Ajax'/><category term='Web'/><category term='Computer'/><category term='Mining'/><category term='C++'/><category term='Data Structure'/><category term='CPU'/><category term='Parallel'/><category term='Graphics'/><category term='iPod'/><category term='Mac OS'/><category term='Industry'/><category term='Shopping'/><category term='Objective-C'/><category term='Food'/><category term='Randomness'/><category term='Software'/><category term='Mac OS X'/><category term='携帯'/><category term='Work'/><category term='Inference'/><category term='Money'/><category term='Book'/><category term='Common Lisp'/><category term='Health'/><category term='Scheme'/><category term='hardware'/><category term='Typing'/><category term='Virtual Machine'/><category term='Network'/><category term='xml'/><category term='All'/><category term='Revision Control'/><category term='Javascript'/><category term='Electric'/><category term='Development Method'/><category term='Silicon'/><category term='Factory Automation'/><category term='Strage'/><category term='Design'/><category term='FreeBSD'/><category term='LDA'/><category term='Java'/><category term='USB'/><category term='Pattern'/><category term='C#'/><category term='Haskell'/><category term='VBA'/><category term='Algorithm'/><category term='Reflection'/><category term='Occurrence Match'/><category term='MFC'/><category term='Mouse'/><category term='Canonical Form'/><category term='Ruby'/><category term='Database'/><category term='Linux'/><category term='Tree'/><category term='au'/><category term='TeX'/><category term='Cocoa'/><category term='Text Retrieval'/><category term='Robot'/><category term='Trackpad'/><category term='Meta'/><category term='human'/><category term='OS'/><category term='Excel'/><title type='text'>HSDocumentBuilder</title><subtitle type='html'>Language, Structure, Mining, Randomness, Robotics, Value&lt;br&gt;
His story history -- My story mystery</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default?start-index=101&amp;max-results=100'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>286</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-7043193046257114841</id><published>2010-08-05T19:56:00.001+09:00</published><updated>2010-08-05T19:57:51.383+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Trackpad'/><category scheme='http://www.blogger.com/atom/ns#' term='Mac OS'/><category scheme='http://www.blogger.com/atom/ns#' term='Mouse'/><category scheme='http://www.blogger.com/atom/ns#' term='Apple'/><title type='text'>Magic Trackpad</title><content type='html'>&lt;a href="http://hszaki.blogspot.com/search/label/Mouse"&gt;マウス運&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;で提案した物が本当に出た。&lt;br /&gt;&lt;br /&gt;慣れるまでは、違和感がありますが、&lt;br /&gt;操作感は、悪くありません。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-7043193046257114841?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/7043193046257114841/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=7043193046257114841' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/7043193046257114841'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/7043193046257114841'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/08/magic-trackpad.html' title='Magic Trackpad'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-5514709875254838833</id><published>2010-07-13T20:22:00.000+09:00</published><updated>2010-07-13T20:22:07.644+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>JRubyでJDBCを使うには</title><content type='html'>JRubyでjdbcを使うのに、Class.forName()はなぜか使えない。&lt;br /&gt;&lt;br /&gt;そのかわり、Driverを直で叩くと使える。&lt;br /&gt;例：&lt;br /&gt;&lt;pre&gt;d = org.postgresql.Driver.new&lt;br /&gt;cp = java.util.Properties.new &lt;br /&gt;cp.put("user", user) &lt;br /&gt;cp.put("password", password) &lt;br /&gt;c = d.connect(url, cp) &lt;br /&gt;s = c.createStatement &lt;br /&gt;rs = s.executeQuery(sql) &lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-5514709875254838833?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/5514709875254838833/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=5514709875254838833' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/5514709875254838833'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/5514709875254838833'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/07/jrubyjdbc.html' title='JRubyでJDBCを使うには'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-1065470412688932135</id><published>2010-07-10T21:47:00.000+09:00</published><updated>2010-07-10T21:47:54.252+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><category scheme='http://www.blogger.com/atom/ns#' term='Programing'/><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>JSFとResultSet</title><content type='html'>JSFのdataTableで、FirebirdのデータをJDBCを介してResultSetを取得して内容を読もうとして、&lt;br /&gt;&lt;br /&gt;Not yet implemented.&lt;br /&gt;&lt;br /&gt;とエラーが出た。ResultSetを返す部分は、&lt;br /&gt;&lt;pre&gt;Statement s = conn.createStatement();&lt;br /&gt;String sql = "select * from t";&lt;br /&gt;rs = s.executeQuery(sql);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;これでは、原因がさっぱりわからなかったので、&lt;br /&gt;とりあえず、メジャーなMySQLとPostgreSQLで同じことを試した。&lt;br /&gt;MySQLは、上記のコードでOK。&lt;br /&gt;&lt;br /&gt;PostgreSQLは、以下のエラーが出た。&lt;br /&gt;&lt;br /&gt;Operation requires a scrollable ResultSet, but this ResultSet is FORWARD_ONLY.&lt;br /&gt;&lt;br /&gt;原因が掴めたので、以下のようにすると、PostgreSQLもFirebirdも動いた。&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;Statement s = conn.createStatement(&lt;br /&gt;  ResultSet.TYPE_SCROLL_SENSITIVE, &lt;br /&gt;  ResultSet.CONCUR_READ_ONLY);&lt;br /&gt;String sql = "select * from t";&lt;br /&gt;rs = s.executeQuery(sql);&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-1065470412688932135?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/1065470412688932135/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=1065470412688932135' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/1065470412688932135'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/1065470412688932135'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/07/jsfresultset.html' title='JSFとResultSet'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-4410185457901957328</id><published>2010-07-04T20:12:00.000+09:00</published><updated>2010-07-04T20:12:33.399+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>NetBeans 6.9</title><content type='html'>NetBeans 6.9を使ってみている。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;デザインも、操作性も、軽さもIDEとしては十分なレベル。&lt;br /&gt;さらには、Java,JRuby,C/C++,主要なフレームワーク,アプリケーションサーバまでオールインワン。&lt;br /&gt;&lt;br /&gt;Java関連を手っ取り早く手に入れて試すのには一番良いかもしれない。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-4410185457901957328?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/4410185457901957328/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=4410185457901957328' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/4410185457901957328'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/4410185457901957328'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/07/netbeans-69.html' title='NetBeans 6.9'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-1369424242352161584</id><published>2010-07-03T18:16:00.002+09:00</published><updated>2010-07-03T18:27:04.174+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><category scheme='http://www.blogger.com/atom/ns#' term='Mac OS X'/><title type='text'>JRuby</title><content type='html'>Java関連で色々調べている内に、JRubyの存在を思い出した。&lt;br /&gt;昔は、まだまだ遅いという結論になったんだけど、&lt;br /&gt;&lt;br /&gt;今回、Rubyと比べて、&lt;br /&gt;Mac OS X上で、互角か場合によっては、それ以上。&lt;br /&gt;Windows上では明らかに、上のパフォーマンスを得られた。&lt;br /&gt;&lt;br /&gt;sqlite3を動作させるのに、sqlite3-rubyが使えない問題は、残っているけど、&lt;br /&gt;この問題が解決すれば、Rubyが、Windowsで使うメインスクリプトの座を奪還するかもしれません。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-1369424242352161584?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/1369424242352161584/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=1369424242352161584' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/1369424242352161584'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/1369424242352161584'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/07/jruby.html' title='JRuby'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-2706046253168942515</id><published>2010-06-28T22:03:00.000+09:00</published><updated>2010-06-28T22:03:08.929+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><category scheme='http://www.blogger.com/atom/ns#' term='VB.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Programing'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>ASP.NET</title><content type='html'>普通にGUIアプリを作る感覚で、簡単なWebアプリなら作れそう。&lt;br /&gt;&lt;br /&gt;VB.NETが使えるから、VBしか経験がない人に対しても、敷居が低そうなところも魅力。&lt;br /&gt;&lt;br /&gt;個人的には、Javaでフレームワーク組み合わせてみたいなことをやりたいけど、&lt;br /&gt;開発効率と保守の観点から、魅力的な選択肢。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-2706046253168942515?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/2706046253168942515/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=2706046253168942515' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/2706046253168942515'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/2706046253168942515'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/06/aspnet.html' title='ASP.NET'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-3515086988787061107</id><published>2010-06-27T15:10:00.000+09:00</published><updated>2010-06-27T15:10:19.696+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Game'/><title type='text'>ADVANCED WORLD WAR 千年帝国</title><content type='html'>手に入れた。&lt;br /&gt;ハマった。&lt;br /&gt;シミュレーションゲームの傑作。&lt;br /&gt;&lt;br /&gt;パワーメモリも買ってしまった。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-3515086988787061107?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/3515086988787061107/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=3515086988787061107' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/3515086988787061107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/3515086988787061107'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/06/advanced-world-war.html' title='ADVANCED WORLD WAR 千年帝国'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-7323591942339214308</id><published>2010-06-26T16:17:00.000+09:00</published><updated>2010-06-26T16:17:14.805+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programing'/><category scheme='http://www.blogger.com/atom/ns#' term='Scheme'/><title type='text'>Re: pushマクロ</title><content type='html'>&lt;a href="http://hszaki.blogspot.com/2010/05/push.html"&gt;pushマクロ&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;を、syntax-caseを使って書くと、かなりシンプルになった。&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;(define-syntax push&lt;br /&gt;  (syntax-rules ()&lt;br /&gt;    ((_ x (f y))&lt;br /&gt;     (let ((g y))&lt;br /&gt;      (set! (f g) (cons x (f g)))))&lt;br /&gt;    ((_ x lst)&lt;br /&gt;     (set! lst (cons x lst)))))&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-7323591942339214308?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/7323591942339214308/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=7323591942339214308' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/7323591942339214308'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/7323591942339214308'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/06/re-push.html' title='Re: pushマクロ'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-2218655886797926612</id><published>2010-06-19T20:12:00.000+09:00</published><updated>2010-06-19T20:12:23.323+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programing'/><category scheme='http://www.blogger.com/atom/ns#' term='Scheme'/><category scheme='http://www.blogger.com/atom/ns#' term='Common Lisp'/><category scheme='http://www.blogger.com/atom/ns#' term='Lisp'/><title type='text'>On Lisp Common Lisp to Scheme 9</title><content type='html'>Figure 5.1: Returning destructive equivalents.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;(define *!equivs* (make-hash-table))&lt;br /&gt;&lt;br /&gt;(define !&lt;br /&gt;  (lambda (fn)&lt;br /&gt;    (or (hash-table-get *!equivs* fn #f)&lt;br /&gt;        fn)))&lt;br /&gt;  &lt;br /&gt;(define def! &lt;br /&gt;  (lambda (fn fn!)&lt;br /&gt;    (hash-table-put! *!equivs* fn fn!)))&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-2218655886797926612?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/2218655886797926612/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=2218655886797926612' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/2218655886797926612'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/2218655886797926612'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/06/on-lisp-common-lisp-to-scheme-9.html' title='On Lisp Common Lisp to Scheme 9'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-2104290396467237736</id><published>2010-06-17T19:19:00.000+09:00</published><updated>2010-06-17T19:19:05.442+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programing'/><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>SQLite3 WrapperをPythonに移植</title><content type='html'>&lt;a href="http://www1.odn.ne.jp/hitohiro/tech/sqlite3ADODB.zip"&gt;SQLite3 &amp; ADODB Wrapper for Ruby &lt;/a&gt;の、SQLite3の部分をPythonに移植作業中&lt;br /&gt;&lt;br /&gt;標準で、sqlite3が使えるのもあるのか、やたらと速くなった。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-2104290396467237736?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/2104290396467237736/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=2104290396467237736' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/2104290396467237736'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/2104290396467237736'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/06/sqlite3-wrapperpython.html' title='SQLite3 WrapperをPythonに移植'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-7472425812116998488</id><published>2010-06-16T19:41:00.000+09:00</published><updated>2010-06-16T19:41:21.548+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programing'/><category scheme='http://www.blogger.com/atom/ns#' term='Scheme'/><category scheme='http://www.blogger.com/atom/ns#' term='Common Lisp'/><category scheme='http://www.blogger.com/atom/ns#' term='Lisp'/><title type='text'>On Lisp Common Lisp to Scheme 8</title><content type='html'>Figure 4.8: Functions which operate on symbols and strings.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;(define mkstr&lt;br /&gt;  (lambda args&lt;br /&gt;    (call-with-output-string&lt;br /&gt;      (lambda (s)&lt;br /&gt;        (dolist (a args) (display a s))))))&lt;br /&gt;        &lt;br /&gt;(define symb&lt;br /&gt;  (lambda args&lt;br /&gt;    (string-&gt;symbol (apply mkstr args))))&lt;br /&gt;    &lt;br /&gt;(define reread&lt;br /&gt;  (lambda args&lt;br /&gt;    (read-from-string (apply mkstr args))))&lt;br /&gt;    &lt;br /&gt;(define explode&lt;br /&gt;  (lambda (sym)&lt;br /&gt;    (map (lambda (x) (string-&gt;symbol (string x)))&lt;br /&gt;         (string-&gt;list (symbol-&gt;string sym)))))&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-7472425812116998488?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/7472425812116998488/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=7472425812116998488' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/7472425812116998488'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/7472425812116998488'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/06/on-lisp-common-lisp-to-scheme-8.html' title='On Lisp Common Lisp to Scheme 8'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-451085150272504222</id><published>2010-06-09T20:37:00.001+09:00</published><updated>2010-06-09T21:24:56.061+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programing'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>RubyとPythonの可変長引数の決定的違い</title><content type='html'>ruby:&lt;br /&gt;&lt;pre&gt;f(*a)&lt;br /&gt;  a&lt;br /&gt;end&lt;br /&gt;&lt;/pre&gt;と、&lt;br /&gt;&lt;br /&gt;python:&lt;br /&gt;&lt;pre&gt;f(*a):&lt;br /&gt;    return a&lt;br /&gt;&lt;/pre&gt;では、動作に決定的な違いがある。&lt;br /&gt;rubyでは、&lt;br /&gt;f(*[1,2],3,*[4,5]) =&gt; [1,2,3,4,5]&lt;br /&gt;のように、*arrayと他を組み合わせることができるけど、&lt;br /&gt;pythonでは、&lt;br /&gt;f(*[1,2],3,*[4,5]) =&gt; SyntaxError: only named arguments may follow *expression&lt;br /&gt;と、エラーになってしまう。&lt;br /&gt;&lt;br /&gt;pythonの場合、rubyのflattenに相当するものを作れば、以下のように回避できる&lt;br /&gt;f(*flatten([[1,2],3,[4,5]]))&lt;br /&gt;&lt;br /&gt;と、思っていたんだけど、もっと一般化した時に困る。&lt;br /&gt;つまるところ、listと他の値を混在して、渡したい時に困る。&lt;br /&gt;&lt;br /&gt;pythonの場合、そもそも、以下のように、配列を渡すようにするのが、現実的。&lt;br /&gt;g([[1,2],1,[3,4],2])&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-451085150272504222?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/451085150272504222/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=451085150272504222' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/451085150272504222'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/451085150272504222'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/06/rubypython.html' title='RubyとPythonの可変長引数の決定的違い'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-5327848213925776693</id><published>2010-06-04T23:08:00.000+09:00</published><updated>2010-06-04T23:08:34.892+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programing'/><category scheme='http://www.blogger.com/atom/ns#' term='Scheme'/><title type='text'>プログラミング言語 SCHEME 第８章 拡張シンタックス</title><content type='html'>「プログラミング言語 SCHEME」の第８章 拡張シンタックス&lt;br /&gt;&lt;br /&gt;突然、難易度が上がった。&lt;br /&gt;&lt;br /&gt;syntax-caseを使うにために、PLT Scheme(DrScheme)をインストール&lt;br /&gt;&lt;br /&gt;Lazy Schemeなんてものも使える（他には、FrTime, Algol 60）。&lt;br /&gt;Lazy Schemeはちょっとは想像つくけど、他はとりあえず、謎。&lt;br /&gt;&lt;br /&gt;それは、それとして、無知にも比較的新しいものと思っていたsyntax-caseが、&lt;br /&gt;少なくとも2000年の時点（本の出版年度から考えて）で存在することにびっくり。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-5327848213925776693?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/5327848213925776693/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=5327848213925776693' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/5327848213925776693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/5327848213925776693'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/06/scheme.html' title='プログラミング言語 SCHEME 第８章 拡張シンタックス'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-6275563522073084672</id><published>2010-05-26T19:10:00.000+09:00</published><updated>2010-05-26T19:10:57.778+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>ふたたびPythonにお世話になる</title><content type='html'>Windows上のRubyの遅さが、モロに影響するデータを処理する必要が出てきた。&lt;br /&gt;&lt;br /&gt;Pythonの方が圧倒的に速いので、ふたたび、Pythonのお世話になることにした。&lt;br /&gt;&lt;br /&gt;しかし、関数の定義の出だしが似ているとか、値を返すにはreturnしないといけないとか、()つけないと、関数オブジェクトが返るとか、細かな点で異なるから、良く打ち間違える。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-6275563522073084672?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/6275563522073084672/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=6275563522073084672' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/6275563522073084672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/6275563522073084672'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/05/python.html' title='ふたたびPythonにお世話になる'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-8127133182004860838</id><published>2010-05-24T20:14:00.000+09:00</published><updated>2010-05-24T20:14:53.517+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programing'/><category scheme='http://www.blogger.com/atom/ns#' term='Scheme'/><category scheme='http://www.blogger.com/atom/ns#' term='Common Lisp'/><category scheme='http://www.blogger.com/atom/ns#' term='Lisp'/><title type='text'>On Lisp Common Lisp to Scheme 7</title><content type='html'>Figure 4.7: I/O functions.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;(define my-read-line&lt;br /&gt;  (lambda args &lt;br /&gt;    (let ((str (apply read-line args)))&lt;br /&gt;      (if (equal? str "")&lt;br /&gt;          (apply read-line args)&lt;br /&gt;          str))))&lt;br /&gt;&lt;br /&gt;(define readlist&lt;br /&gt;  (lambda args&lt;br /&gt;    (values (read-from-string&lt;br /&gt;      (string-append "("&lt;br /&gt;                     (apply my-read-line args)&lt;br /&gt;                     ")")))))&lt;br /&gt;                     &lt;br /&gt;(define prompt&lt;br /&gt;  (lambda args&lt;br /&gt;    (apply format (current-output-port) args)&lt;br /&gt;    (flush (current-output-port))&lt;br /&gt;    (read (current-input-port))))&lt;br /&gt;&lt;br /&gt;(define-macro (loop x)&lt;br /&gt;  `(call/cc&lt;br /&gt;    (lambda (return)&lt;br /&gt;      (while #t&lt;br /&gt;             ,x))))&lt;br /&gt;&lt;br /&gt;(define break-loop&lt;br /&gt;  (lambda (fn quit . args)&lt;br /&gt;    (format (current-output-port) "Entering break-loop.~%")&lt;br /&gt;    (flush (current-output-port))&lt;br /&gt;    (loop&lt;br /&gt;      (let ((in (apply prompt args)))&lt;br /&gt;        (if (quit in)&lt;br /&gt;            (return)&lt;br /&gt;            (format (current-output-port) "~A~%" (fn in)))))))&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-8127133182004860838?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/8127133182004860838/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=8127133182004860838' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/8127133182004860838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/8127133182004860838'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/05/on-lisp-common-lisp-to-scheme-7.html' title='On Lisp Common Lisp to Scheme 7'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-7579474184751415895</id><published>2010-05-20T20:42:00.000+09:00</published><updated>2010-05-20T20:42:14.196+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programing'/><category scheme='http://www.blogger.com/atom/ns#' term='Scheme'/><title type='text'>Gaucheインタプリタ上でのread-line 2</title><content type='html'>一晩経って、もっと単純にできることに気がついた。&lt;br /&gt;&lt;br /&gt;ついでに、引数も渡せるようにした。&lt;br /&gt;&lt;pre&gt;(define my-read-line&lt;br /&gt;  (lambda args&lt;br /&gt;    (let ((str (apply read-line args)))&lt;br /&gt;      (if (equal? str "")&lt;br /&gt;          (apply read-line args)&lt;br /&gt;          str))))&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-7579474184751415895?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/7579474184751415895/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=7579474184751415895' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/7579474184751415895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/7579474184751415895'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/05/gaucheread-line-2.html' title='Gaucheインタプリタ上でのread-line 2'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-6997711767642341871</id><published>2010-05-19T21:06:00.000+09:00</published><updated>2010-05-19T21:06:02.970+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programing'/><category scheme='http://www.blogger.com/atom/ns#' term='Scheme'/><title type='text'>Gaucheインタプリタ上でのread-line</title><content type='html'>gaucheインタプリタ上では、read-lineは、困った動きをする。&lt;br /&gt;&lt;br /&gt;&gt; (read-line)&lt;br /&gt;""&lt;br /&gt;&gt;&lt;br /&gt;などと、read-lineを実行した直後のリターンコードを読み込んでしまう。&lt;br /&gt;となると、&lt;br /&gt;On Lispの、&lt;br /&gt;Figure 4.7: I/O functions.&lt;br /&gt;readlist&lt;br /&gt;の実装が暗礁に乗り上げる。&lt;br /&gt;&gt; (read-line)a b c&lt;br /&gt;"a b c"&lt;br /&gt;&gt;&lt;br /&gt;などとして、出来たことにしても良いけど、どうにか回避することに挑戦する。&lt;br /&gt;とりあえず、readは動作するので、最初だけreadで読み込んで文字列に変換すれば良い。&lt;br /&gt;つまり、&lt;br /&gt;&lt;pre&gt;(write-to-string (read) write)&lt;/pre&gt;これに、(read-line)の結果をつなげるんだけど、&lt;br /&gt;単純に、&lt;br /&gt;&lt;pre&gt;(string-append (write-to-string (read) write) (read-line))&lt;/pre&gt;は、Gaucheでは働くけど、Schemeは評価の順番が不定だから、他の処理系では、動かない可能性がある。&lt;br /&gt;そこで、もう少し、工夫して、&lt;br /&gt;&lt;pre&gt;(let ((str (write-to-string) (read) write)))&lt;br /&gt;  (string-append str (read-line)))&lt;/pre&gt;これで、readlistは、準備OK&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-6997711767642341871?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/6997711767642341871/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=6997711767642341871' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/6997711767642341871'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/6997711767642341871'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/05/gaucheread-line.html' title='Gaucheインタプリタ上でのread-line'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-4452865510546210688</id><published>2010-05-16T16:21:00.000+09:00</published><updated>2010-05-16T16:21:28.295+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Game'/><title type='text'>セガサターンゲットだぜ！</title><content type='html'>ジャンクのセガサターンを手に入れた。&lt;br /&gt;&lt;br /&gt;懐かしの、&lt;a href="http://www.gamearts.co.jp/products/ss-gungriffon.html"&gt;ガングリフォン ～ザ ユーラシアンコンフリクト～&lt;/a&gt;&lt;br /&gt;も手に入れた。&lt;br /&gt;&lt;br /&gt;懐かしすぎて、涙ものである。&lt;br /&gt;&lt;br /&gt;後は、「ADVANCED WORLD WAR 千年帝国」を手に入れたら言うことはない。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-4452865510546210688?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/4452865510546210688/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=4452865510546210688' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/4452865510546210688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/4452865510546210688'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/05/blog-post_16.html' title='セガサターンゲットだぜ！'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-3148227331689463058</id><published>2010-05-15T17:58:00.000+09:00</published><updated>2010-05-15T17:58:12.856+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><category scheme='http://www.blogger.com/atom/ns#' term='Book'/><title type='text'>C++の設計と進化 読了</title><content type='html'>C++の設計思想。Bjarne Stroustrupの思想。物事が決っていくプロセス。&lt;br /&gt;そして、後発の様々な言語がC++の影響を受けているということに対する驚き。&lt;br /&gt;&lt;br /&gt;これらが、この本の醍醐味。&lt;br /&gt;&lt;br /&gt;C++にもっと習熟してから、もう一度読み直したいと考えている。&lt;br /&gt;新たに得られるものがあるはずである。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-3148227331689463058?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/3148227331689463058/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=3148227331689463058' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/3148227331689463058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/3148227331689463058'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/05/c.html' title='C++の設計と進化 読了'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-2496949617349982506</id><published>2010-05-12T18:14:00.000+09:00</published><updated>2010-05-12T18:14:49.073+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Scheme'/><category scheme='http://www.blogger.com/atom/ns#' term='Common Lisp'/><title type='text'>pushマクロ</title><content type='html'>多重評価のバグが入り込む典型例。&lt;br /&gt;&lt;br /&gt;普通は、&lt;br /&gt;&lt;pre&gt;(set! lst (cons x lst))&lt;br /&gt;&lt;/pre&gt;と考えば良いけど、lstが二回評価されて、おかしな動作をする可能性がある。&lt;br /&gt;&lt;br /&gt;ということで、pushマクロを修正。&lt;br /&gt;&lt;pre&gt;(define-macro (push x lst) &lt;br /&gt;    (if (pair? `,lst) &lt;br /&gt;        (let &lt;br /&gt;            ((g1 (cadr `,lst)) &lt;br /&gt;             (g2 (car `,lst)) &lt;br /&gt;             (g (gensym))) &lt;br /&gt;            `(let ((,g ,g1)) &lt;br /&gt;                (set! (,g2 ,g) (cons ,x (,g2 ,g))))) &lt;br /&gt;        `(set! ,lst (cons ,x ,lst)))) &lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-2496949617349982506?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/2496949617349982506/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=2496949617349982506' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/2496949617349982506'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/2496949617349982506'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/05/push.html' title='pushマクロ'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-4822549131250880149</id><published>2010-05-08T17:38:00.002+09:00</published><updated>2010-05-09T08:47:05.707+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programing'/><category scheme='http://www.blogger.com/atom/ns#' term='Scheme'/><category scheme='http://www.blogger.com/atom/ns#' term='Common Lisp'/><category scheme='http://www.blogger.com/atom/ns#' term='Lisp'/><title type='text'>On Lisp Common Lisp to Scheme 6</title><content type='html'>Figure 4.6: Mapping functions.&lt;br /&gt;&lt;pre&gt;(define-macro (push x lst)&lt;br /&gt;    `(set! ,lst (cons ,x ,lst)))&lt;br /&gt;&lt;br /&gt;(define map0-n&lt;br /&gt;  (lambda (fn n)&lt;br /&gt;    (mapa-b fn 0 n)))&lt;br /&gt;    &lt;br /&gt;(define map1-n&lt;br /&gt;  (lambda (fn n)&lt;br /&gt;    (mapa-b fn 1 n)))&lt;br /&gt;&lt;br /&gt;(define mapa-b&lt;br /&gt;  (lambda (fn a b . args)&lt;br /&gt;    (let-optionals* args ((step 1))&lt;br /&gt;      (do ((i a (+ i step))&lt;br /&gt;           (result '()))&lt;br /&gt;          ((&gt; i b) (reverse! result))&lt;br /&gt;        (push (fn i) result)))))&lt;br /&gt;&lt;br /&gt;(define map-&gt;&lt;br /&gt;  (lambda (fn start test-fn succ-fn)&lt;br /&gt;    (do ((i start (succ-fn i))&lt;br /&gt;         (result '()))&lt;br /&gt;        ((test-fn i) (reverse! result))&lt;br /&gt;      (push (fn i) result))))&lt;br /&gt;&lt;br /&gt;(define mappend &lt;br /&gt;  (lambda (fn . lsts)&lt;br /&gt;    (apply append (apply map fn lsts))))&lt;br /&gt;  &lt;br /&gt;(define mapcars&lt;br /&gt;  (lambda (fn . lsts)&lt;br /&gt;    (let ((result '()))&lt;br /&gt;      (dolist (lst lsts)&lt;br /&gt;        (dolist (obj lst)&lt;br /&gt;          (push (fn obj) result)))&lt;br /&gt;      (reverse! result))))&lt;br /&gt;&lt;br /&gt;(define rmapcar &lt;br /&gt;  (lambda (fn . args)&lt;br /&gt;    (if (any (lambda (x) (not (pair? x))) args)&lt;br /&gt;        (apply fn args)&lt;br /&gt;        (apply map&lt;br /&gt;               (lambda args&lt;br /&gt;                 (apply rmapcar fn args))&lt;br /&gt;               args))))&lt;br /&gt;&lt;/pre&gt;2010-05-09 修正: pushマクロ追加&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-4822549131250880149?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/4822549131250880149/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=4822549131250880149' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/4822549131250880149'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/4822549131250880149'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/05/on-lisp-common-lisp-to-scheme-6.html' title='On Lisp Common Lisp to Scheme 6'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-589016164210692333</id><published>2010-05-07T22:57:00.000+09:00</published><updated>2010-05-07T22:57:42.878+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><title type='text'>ポータブルRuby</title><content type='html'>&lt;a href="http://rubyforge.org/projects/ocra/"&gt;OneClick Ruby Application Builder(OCRA)&lt;/a&gt;&lt;br /&gt;と、evalを組み合わせると、Rubyスクリプトを実行できる、コンパクトなexeを作ることができる。&lt;br /&gt;&lt;br /&gt;ruby_eval.rb:&lt;br /&gt;&lt;pre&gt;require '...'&lt;br /&gt;require '...'&lt;br /&gt;&lt;br /&gt;def cont&lt;br /&gt;   ARGV.shift&lt;br /&gt;   binding&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;if ARGV[0]&lt;br /&gt;    File.open(ARGV[0], "r") do |file|&lt;br /&gt;        eval file.read, cont&lt;br /&gt;    end&lt;br /&gt;end&lt;br /&gt;&lt;/pre&gt;&lt;pre&gt;ocra ruby_eval.rb&lt;br /&gt;=&gt; ruby_eval.exe 完成&lt;br /&gt;&lt;/pre&gt;これで、&lt;br /&gt;&lt;pre&gt;ruby_eval.exe hello.rb&lt;br /&gt;&lt;/pre&gt;などと、スクリプトを実行できる。&lt;br /&gt;&lt;br /&gt;ARGVは、Bindingをevalに渡すことで、参照できるようにする。&lt;br /&gt;スクリプトでrequireするものは、予め、ruby_eval.rbでrequireする必要があるのが注意点。&lt;br /&gt;&lt;br /&gt;ちなみに、ocraでスクリプトをチェックする時、ARGV[0]はnilと評価される。&lt;br /&gt;そのため、if ARGV[0] ... end で挟まないと、タイプエラーが出る。&lt;br /&gt;ズボラなスクリプトは、ocraではそのまま、exeにできないことがある。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-589016164210692333?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/589016164210692333/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=589016164210692333' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/589016164210692333'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/589016164210692333'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/05/ruby.html' title='ポータブルRuby'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-5822220275688331300</id><published>2010-05-06T21:54:00.000+09:00</published><updated>2010-05-06T21:54:21.984+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programing'/><category scheme='http://www.blogger.com/atom/ns#' term='Common Lisp'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><category scheme='http://www.blogger.com/atom/ns#' term='Book'/><title type='text'>The C++ Programming Language</title><content type='html'>「C++の設計と進化」は今、第二部を読み進めている。&lt;br /&gt;&lt;br /&gt;効率を優先する実用言語の中で、C++ほど言語として興味深いものは無い。&lt;br /&gt;何しろ、エレガントさを優先する言語と比べても、十分、興味深いのである。&lt;br /&gt;&lt;br /&gt;なぜ、Haskellに進むはずが、C++に脱線したかというと、不思議なことに、&lt;br /&gt;Common LispとC++の間に似たものを感じたから。&lt;br /&gt;&lt;br /&gt;多様性とメタプログラミング&lt;br /&gt;&lt;br /&gt;C++を理解することで、Common Lispの理解も深まることを期待している。&lt;br /&gt;ということで、じっくり極めてみることにしました。&lt;br /&gt;今までの経験で、バイブルの類いは、大概は訳が酷いので、思い切って洋書の、&lt;br /&gt;「The C++ Programming Language Third Edition」&lt;br /&gt;を入手。&lt;br /&gt;&lt;br /&gt;Haskellに通じる何かが見つかれば、更におもしろい。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-5822220275688331300?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/5822220275688331300/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=5822220275688331300' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/5822220275688331300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/5822220275688331300'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/05/c-programming-language.html' title='The C++ Programming Language'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-1714846597150465529</id><published>2010-05-05T17:23:00.000+09:00</published><updated>2010-05-05T17:23:39.915+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programing'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>SQLite3 &lt;=&gt; Jet 4.0 Wrapper For Ruby 改良版 公開</title><content type='html'>ファイル構成変更。これで、ADODBのプロバイダの変更が容易に。&lt;br /&gt;サンプルプルグラム追加。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www1.odn.ne.jp/hitohiro/tech/sqlite3ADODB.zip"&gt;SQLite3 &amp;amp; ADODB Wrapper for Ruby&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-1714846597150465529?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/1714846597150465529/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=1714846597150465529' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/1714846597150465529'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/1714846597150465529'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/05/sqlite3-jet-40-wrapper-for-ruby.html' title='SQLite3 &lt;=&gt; Jet 4.0 Wrapper For Ruby 改良版 公開'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-1728188399185018628</id><published>2010-05-03T17:00:00.001+09:00</published><updated>2010-05-03T17:19:45.938+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programing'/><category scheme='http://www.blogger.com/atom/ns#' term='Meta'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><category scheme='http://www.blogger.com/atom/ns#' term='Data Structure'/><title type='text'>テンプレートメタプログラミング</title><content type='html'>&lt;a href="http://www.amazon.co.jp/C-の設計と進化-ビョーン-ストラウストラップ/dp/4797328541"&gt;C++の設計と進化&lt;/a&gt;を読んでいて、ふと、テンプレートメタプログラミングの領域に足を踏みいれてみたくなった。&lt;br /&gt;&lt;br /&gt;パターンマッチとか、関数型プログラミングとか、かじったことがあると、理解に役に立つ。&lt;br /&gt;問題は実用的な応用だけど、ぱっと考えると、データ構造を作るのに使うのが実用的。&lt;br /&gt;&lt;br /&gt;とりあえず、練習として、pairを使って、以下を書いてみた。&lt;br /&gt;&lt;pre&gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;#include &amp;lt;utility&amp;gt;&lt;br /&gt;&lt;br /&gt;using namespace std;&lt;br /&gt;&lt;br /&gt;template &amp;lt;int N&amp;gt;&lt;br /&gt;struct Array : std::pair&amp;lt;int, Array&amp;lt;N - 1&amp;gt; &amp;gt;&lt;br /&gt;{&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;template &amp;lt;&amp;gt;&lt;br /&gt;struct Array&amp;lt;0&amp;gt;&lt;br /&gt;{&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;int main()&lt;br /&gt;{&lt;br /&gt;  Array&amp;lt;3&amp;gt; a;&lt;br /&gt;  &lt;br /&gt;  a.first = 1;&lt;br /&gt;  a.second.first = 2;&lt;br /&gt;  &lt;br /&gt;  cout &amp;lt;&amp;lt; a.first &amp;lt;&amp;lt; endl;&lt;br /&gt;  cout &amp;lt;&amp;lt; a.second.first &amp;lt;&amp;lt; endl;&lt;br /&gt;  &lt;br /&gt;  return 0;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-1728188399185018628?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/1728188399185018628/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=1728188399185018628' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/1728188399185018628'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/1728188399185018628'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/05/blog-post.html' title='テンプレートメタプログラミング'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-8069776553496463458</id><published>2010-04-30T23:32:00.000+09:00</published><updated>2010-04-30T23:32:51.052+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programing'/><category scheme='http://www.blogger.com/atom/ns#' term='Scheme'/><category scheme='http://www.blogger.com/atom/ns#' term='Common Lisp'/><category scheme='http://www.blogger.com/atom/ns#' term='Lisp'/><title type='text'>On Lisp Common Lisp to Scheme 5</title><content type='html'>Figure 4.5: Search functions which compare elements.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;(define-syntax mset!&lt;br /&gt;  (syntax-rules ()&lt;br /&gt;    ((_ v x)&lt;br /&gt;     (set! v x))&lt;br /&gt;    ((_ v x v2 x2 ...)&lt;br /&gt;     (begin (set! v x) (mset! v2 x2 ...)))))&lt;br /&gt;     &lt;br /&gt;(define most&lt;br /&gt;  (lambda (fn lst)&lt;br /&gt;    (if (null? lst)&lt;br /&gt;        (values '() '())&lt;br /&gt;        (let* ((wins (car lst))&lt;br /&gt;               (max (fn wins)))&lt;br /&gt;          (dolist (obj (cdr lst))&lt;br /&gt;            (let ((score (fn obj)))&lt;br /&gt;              (when (&gt; score max)&lt;br /&gt;                (mset! wins obj&lt;br /&gt;                      max score))))&lt;br /&gt;            (values wins max)))))&lt;br /&gt;            &lt;br /&gt;(define best&lt;br /&gt;  (lambda (fn lst)&lt;br /&gt;    (if (null? lst)&lt;br /&gt;        '()&lt;br /&gt;        (let ((wins (car lst)))&lt;br /&gt;          (dolist (obj (cdr lst))&lt;br /&gt;            (if (fn obj wins)&lt;br /&gt;                (mset! wins obj)))&lt;br /&gt;            wins))))&lt;br /&gt;            &lt;br /&gt;(define mostn&lt;br /&gt;  (lambda (fn lst)&lt;br /&gt;    (if (null? lst)&lt;br /&gt;        (values '() '())&lt;br /&gt;        (let ((result (list (car lst)))&lt;br /&gt;              (max (fn (car lst))))&lt;br /&gt;          (dolist (obj (cdr lst))&lt;br /&gt;            (let ((score (fn obj)))&lt;br /&gt;              (cond ((&gt; score max)&lt;br /&gt;                     (mset! max score&lt;br /&gt;                           result (list obj)))&lt;br /&gt;                    ((= score max)&lt;br /&gt;                     (push obj result)))))&lt;br /&gt;          (values (reverse! result) max)))))&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-8069776553496463458?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/8069776553496463458/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=8069776553496463458' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/8069776553496463458'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/8069776553496463458'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/04/on-lisp-common-lisp-to-scheme-5.html' title='On Lisp Common Lisp to Scheme 5'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-4301671685095481443</id><published>2010-04-24T18:59:00.001+09:00</published><updated>2010-04-24T19:56:53.585+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programing'/><category scheme='http://www.blogger.com/atom/ns#' term='Scheme'/><category scheme='http://www.blogger.com/atom/ns#' term='Common Lisp'/><category scheme='http://www.blogger.com/atom/ns#' term='Lisp'/><title type='text'>Scheme, Common Lisp 間の変換</title><content type='html'>Common Lispのソースを、Schemeに直している時に気がついた、仕様の相違点&lt;br /&gt;&lt;br /&gt;真偽値判定が違う&lt;br /&gt;特に、&lt;br /&gt;Common Lispでは、空リストとNILは等しいのに対して、&lt;br /&gt;Schemeでは、実装によって真か偽か異なる。さらには、#f != '()である&lt;br /&gt;&lt;br /&gt;cdrに空リストを渡した時の動作が違う&lt;br /&gt;Common LIsp: (cdr '()) =&gt; '()&lt;br /&gt;Scheme     : (cdr '()) =&gt; error&lt;br /&gt;&lt;br /&gt;if式の仕様が異なる&lt;br /&gt;Common Lisp: (if nil a) =&gt; nil&lt;br /&gt;Scheme     : (if #f  a) =&gt; #&amp;lt;undef&amp;gt; (Gaucheの場合)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-4301671685095481443?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/4301671685095481443/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=4301671685095481443' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/4301671685095481443'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/4301671685095481443'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/04/scheme-common-lisp.html' title='Scheme, Common Lisp 間の変換'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-1885306751098502907</id><published>2010-04-24T17:51:00.001+09:00</published><updated>2010-04-24T17:54:47.848+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programing'/><category scheme='http://www.blogger.com/atom/ns#' term='Scheme'/><category scheme='http://www.blogger.com/atom/ns#' term='Common Lisp'/><title type='text'>On Lisp Common Lisp to Scheme 4</title><content type='html'>Figure 4.4: Functions which search lists.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;(define find2&lt;br /&gt;    (lambda (fn lst)&lt;br /&gt;        (if (null? lst)&lt;br /&gt;            '()&lt;br /&gt;            (let ((val (fn (car lst))))&lt;br /&gt;                (if (and val (not (null? val)))&lt;br /&gt;                    (values (car lst) val)&lt;br /&gt;                    (find2 fn (cdr lst)))))))&lt;br /&gt;                    &lt;br /&gt;(define before&lt;br /&gt;  (lambda (x y lst . args)&lt;br /&gt;    (let-keywords args ((test eq?))&lt;br /&gt;      (if (null? lst)&lt;br /&gt;        '()&lt;br /&gt;        (let ((fst (car lst)))&lt;br /&gt;          (cond ((test y fst) '())&lt;br /&gt;                ((test x fst) lst)&lt;br /&gt;                (else (before x y (cdr lst) :test test))))))))&lt;br /&gt;&lt;br /&gt;(define my-cdr&lt;br /&gt;    (lambda (lst)&lt;br /&gt;        (if (null? lst)&lt;br /&gt;            '()&lt;br /&gt;            (cdr lst))))&lt;br /&gt;&lt;br /&gt;(define my-member &lt;br /&gt;    (lambda (obj lst . args)&lt;br /&gt;        (use srfi-1)&lt;br /&gt;        (let-keywords args ((test eq?))&lt;br /&gt;            (let ((r (member obj lst test)))&lt;br /&gt;                (if r r '())))))&lt;br /&gt;&lt;br /&gt;(define after&lt;br /&gt;    (lambda (x y lst . args)&lt;br /&gt;        (let-keywords args ((test eq?))&lt;br /&gt;            (let ((rest (before y x lst :test test)))&lt;br /&gt;                (if (null? rest)&lt;br /&gt;                    '()&lt;br /&gt;                    (my-member x rest :test test))))))&lt;br /&gt;&lt;br /&gt;(define duplicate&lt;br /&gt;  (lambda (obj lst . args)&lt;br /&gt;    (let-keywords args ((test eq?))&lt;br /&gt;      (my-member obj (my-cdr (my-member obj lst :test test))&lt;br /&gt;                 :test test))))&lt;br /&gt;                    &lt;br /&gt;(define-macro (push x lst)&lt;br /&gt;    `(set! ,lst (cons ,x ,lst)))&lt;br /&gt;    &lt;br /&gt;(define split-if &lt;br /&gt;    (lambda (fn lst)&lt;br /&gt;        (let ((acc '()))&lt;br /&gt;            (do ((src lst (cdr src)))&lt;br /&gt;                ((or (null? src) (fn (car src)))&lt;br /&gt;                 (values (reverse! acc) src))&lt;br /&gt;              (push (car src) acc)))))&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-1885306751098502907?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/1885306751098502907/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=1885306751098502907' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/1885306751098502907'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/1885306751098502907'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/04/on-lisp-common-lisp-to-scheme-4.html' title='On Lisp Common Lisp to Scheme 4'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-6804013043530935752</id><published>2010-04-23T20:58:00.000+09:00</published><updated>2010-04-23T20:58:50.495+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><category scheme='http://www.blogger.com/atom/ns#' term='OS'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><title type='text'>Chrome台頭</title><content type='html'>Firefox, IE, Safariの３ウェブブラウザが、このブログの３強なのですが、&lt;br /&gt;Chromeが追い上げてきました。&lt;br /&gt;&lt;br /&gt;OSは、&lt;br /&gt;Windows XP, Mac OS X 10.6, Windows 7の順&lt;br /&gt;Windows 7急成長&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-6804013043530935752?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/6804013043530935752/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=6804013043530935752' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/6804013043530935752'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/6804013043530935752'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/04/chrome.html' title='Chrome台頭'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-4185161783428412208</id><published>2010-04-23T20:43:00.000+09:00</published><updated>2010-04-23T20:43:58.583+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programing'/><category scheme='http://www.blogger.com/atom/ns#' term='Scheme'/><category scheme='http://www.blogger.com/atom/ns#' term='Common Lisp'/><title type='text'>On Lisp Common Lisp to Scheme 3</title><content type='html'>Figure 4.3: Doubly-recursive list utilities.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;(define flatten&lt;br /&gt;    (lambda (x)&lt;br /&gt;        (letrec (&lt;br /&gt;            (rec (lambda (x acc)&lt;br /&gt;                (cond ((null? x) acc)&lt;br /&gt;                      ((not (pair? x)) (cons x acc))&lt;br /&gt;                      (else (rec (car x) (rec (cdr x) acc)))))))&lt;br /&gt;            (rec x '()))))&lt;br /&gt;&lt;br /&gt;(define prune&lt;br /&gt;    (lambda (test tree)&lt;br /&gt;        (letrec (&lt;br /&gt;            (rec (lambda (tree acc)&lt;br /&gt;                (cond ((null? tree) (reverse! acc))&lt;br /&gt;                      ((pair? (car tree))&lt;br /&gt;                       (rec (cdr tree)&lt;br /&gt;                            (cons (rec (car tree) '()) acc)))&lt;br /&gt;                      (else (rec (cdr tree)&lt;br /&gt;                                 (if (test (car tree))&lt;br /&gt;                                     acc&lt;br /&gt;                                     (cons (car tree) acc))))))))&lt;br /&gt;            (rec tree '()))))&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-4185161783428412208?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/4185161783428412208/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=4185161783428412208' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/4185161783428412208'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/4185161783428412208'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/04/on-lisp-common-lisp-to-scheme-3.html' title='On Lisp Common Lisp to Scheme 3'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-4837919866096452633</id><published>2010-04-17T16:56:00.001+09:00</published><updated>2010-04-17T16:59:10.208+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programing'/><category scheme='http://www.blogger.com/atom/ns#' term='Scheme'/><category scheme='http://www.blogger.com/atom/ns#' term='Common Lisp'/><title type='text'>On Lisp Common Lisp to Scheme 2</title><content type='html'>Figure 4.2: Larger functions that operate on lists.&lt;br /&gt;Gauche特有機能を使っているところ有り。&lt;br /&gt;list-tailは、nthcdrと微妙に仕様が違うので、自分で作った。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;(use gauche.collection)&lt;br /&gt;(define longer&lt;br /&gt;    (lambda (x y)&lt;br /&gt;        (letrec ((comp (lambda (x y)&lt;br /&gt;                    (and (pair? x)&lt;br /&gt;                         (or (null? y)&lt;br /&gt;                             (comp (cdr x) (cdr y)))))))&lt;br /&gt;            (if (and (list? x) (list? y))&lt;br /&gt;                (comp x y)&lt;br /&gt;                (&gt; (size-of x) (size-of y))))))&lt;br /&gt;        &lt;br /&gt;(define-macro (push x lst)&lt;br /&gt;    `(set! ,lst (cons ,x ,lst)))&lt;br /&gt;  &lt;br /&gt;(define my-filter &lt;br /&gt;    (lambda (fn lst)&lt;br /&gt;        (let ((acc '()))&lt;br /&gt;            (dolist (x lst)&lt;br /&gt;                (let ((val (fn x)))&lt;br /&gt;                    (if val (push val acc))))&lt;br /&gt;            (reverse! acc))))&lt;br /&gt;&lt;br /&gt;(use gauche.sequence)   &lt;br /&gt;(define group &lt;br /&gt;    (lambda (source n)&lt;br /&gt;        (if (= n 0) (error "zero length"))&lt;br /&gt;        (letrec (&lt;br /&gt;                 (my-list-tail (lambda (lst k)&lt;br /&gt;                    (if (or (null? lst) (&lt;= k 0))&lt;br /&gt;                        lst&lt;br /&gt;                        (my-list-tail (cdr lst) (- k 1)))))    &lt;br /&gt;                 (rec (lambda (source acc)&lt;br /&gt;                    (let ((rest (my-list-tail source n)))&lt;br /&gt;                        (if (pair? rest)&lt;br /&gt;                            (rec rest (cons (subseq source 0 n) acc))&lt;br /&gt;                            (reverse! (cons source acc)))))))&lt;br /&gt;            (if (not (null? source)) (rec source '()) '()))))&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-4837919866096452633?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/4837919866096452633/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=4837919866096452633' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/4837919866096452633'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/4837919866096452633'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/04/on-lisp-common-lisp-to-scheme-2.html' title='On Lisp Common Lisp to Scheme 2'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-611204971532272204</id><published>2010-04-13T19:41:00.000+09:00</published><updated>2010-04-13T19:41:04.639+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programing'/><category scheme='http://www.blogger.com/atom/ns#' term='Scheme'/><category scheme='http://www.blogger.com/atom/ns#' term='Common Lisp'/><title type='text'>On Lisp Common Lisp to Scheme 1</title><content type='html'>第一回目&lt;br /&gt;&lt;br /&gt;On Lisp&lt;br /&gt;Figure 4.1: Small functions which operate on lists.&lt;br /&gt;の関数をSchemeに変換&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;(define last1 &lt;br /&gt;    (lambda (lst) &lt;br /&gt;        (car (last-pair lst))))&lt;br /&gt;    &lt;br /&gt;(define single&lt;br /&gt;    (lambda (lst)&lt;br /&gt;        (and (pair? lst) (null? (cdr lst)))))&lt;br /&gt;        &lt;br /&gt;(define append1&lt;br /&gt;    (lambda (lst obj)&lt;br /&gt;        (append lst (list obj))))&lt;br /&gt;        &lt;br /&gt;(define conc1&lt;br /&gt;    (lambda (lst obj)&lt;br /&gt;        (append! lst (list obj))))&lt;br /&gt;        &lt;br /&gt;(define mklist &lt;br /&gt;    (lambda (obj)&lt;br /&gt;        (if (list? obj)&lt;br /&gt;            obj&lt;br /&gt;            (list obj))))&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-611204971532272204?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/611204971532272204/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=611204971532272204' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/611204971532272204'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/611204971532272204'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/04/on-lisp-common-lisp-to-scheme-1.html' title='On Lisp Common Lisp to Scheme 1'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-2587924678276353518</id><published>2010-04-07T19:28:00.000+09:00</published><updated>2010-04-07T19:28:04.527+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programing'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>ADODB経由でSQLite3</title><content type='html'>&lt;a href="http://www.ch-werner.de/sqliteodbc/"&gt;SQLite ODBC Driver&lt;/a&gt;をインストールすることで、&lt;br /&gt;&lt;br /&gt;ADODB経由でSQLite3を動かすことができる。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www1.odn.ne.jp/hitohiro/tech/sqlite3ADODB.zip"&gt;SQLite3 &amp;amp; ADODB Wrapper for Ruby&lt;/a&gt;も、プロバイダを変えるだけと思っていたら、関数を生成する部分がJetに依存しまくっていた。&lt;br /&gt;その部分をそっくり、入れ替えたら動いた。&lt;br /&gt;&lt;br /&gt;そもそも、かなり適当な状態なまま、公開したので、今度時間がある時にでも、ファイル構成を整理し直す予定。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-2587924678276353518?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/2587924678276353518/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=2587924678276353518' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/2587924678276353518'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/2587924678276353518'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/04/adodbsqlite3.html' title='ADODB経由でSQLite3'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-8704618249512366036</id><published>2010-04-02T20:22:00.000+09:00</published><updated>2010-04-02T20:22:41.806+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Computer'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><category scheme='http://www.blogger.com/atom/ns#' term='Parallel'/><category scheme='http://www.blogger.com/atom/ns#' term='hardware'/><category scheme='http://www.blogger.com/atom/ns#' term='Book'/><title type='text'>コンピュータアーキテクチャのエッセンス読了</title><content type='html'>&lt;a href="http://www.amazon.co.jp/コンピュータアーキテクチャのエッセンス-Architects-Archiveシリーズ-ダグラス・E・カマー/dp/4798109908/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1270205941&amp;sr=8-1"&gt;コンピュータアーキテクチャのエッセンス&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;読了。&lt;br /&gt;&lt;br /&gt;CPU、メモリ、IO、命令セット、その他諸々、網羅的に理解が深まる。&lt;br /&gt;&lt;br /&gt;述べられている並列処理やパイプライン処理、アウトオプオーダ実行などの概念は、ハードウェアだけでなく、ソフトウェアに応用できる。&lt;br /&gt;マルチコアが当たり前になりつつある現在、なおさら様々なソフトウェアへの応用があるはず。&lt;br /&gt;&lt;br /&gt;さらには、コンピュータに限らず、効率的な仕事の進め方や生産プロセス、様々なことに応用できる。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-8704618249512366036?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/8704618249512366036/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=8704618249512366036' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/8704618249512366036'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/8704618249512366036'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/04/blog-post.html' title='コンピュータアーキテクチャのエッセンス読了'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-938751131326255652</id><published>2010-03-29T19:24:00.000+09:00</published><updated>2010-03-29T19:24:10.238+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programing'/><category scheme='http://www.blogger.com/atom/ns#' term='Excel'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><category scheme='http://www.blogger.com/atom/ns#' term='MFC'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>LPDISPATCHをVARIANT型の引数に渡す</title><content type='html'>MFCでExcelプログラミングをするとき、&lt;br /&gt;引数の型がVARIANTのメソッドにLPDISPATCHを渡さなければならないケースがある。&lt;br /&gt;&lt;br /&gt;文字列とか、数値だったら、&lt;br /&gt;COleVariantに包めば、渡すことができる。&lt;br /&gt;&lt;br /&gt;LPDISPATCHは、そうはいかなかった。&lt;br /&gt;&lt;br /&gt;単純に、キャストする。&lt;br /&gt;キャストしてCOleVariantで包む。&lt;br /&gt;色々試して、&lt;br /&gt;最後は、ソースコードを読んだ。&lt;br /&gt;&lt;br /&gt;結果、自分でラッパクラスを作った。&lt;br /&gt;&lt;pre&gt;class DispatchVariant : public VARIANT &lt;br /&gt;{ &lt;br /&gt;public: &lt;br /&gt;        DispatchVariant(LPDISPATCH disp) : VARIANT() { &lt;br /&gt;                this-&gt;vt = VT_DISPATCH;         &lt;br /&gt;                this-&gt;pdispVal = disp; &lt;br /&gt;        } &lt;br /&gt;};&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;とりあえず、動いている。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-938751131326255652?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/938751131326255652/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=938751131326255652' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/938751131326255652'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/938751131326255652'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/03/lpdispatchvariant.html' title='LPDISPATCHをVARIANT型の引数に渡す'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-1053468167565719849</id><published>2010-03-28T18:39:00.000+09:00</published><updated>2010-03-28T18:39:16.675+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programing'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>C#でC/C++の関数を実行</title><content type='html'>今、GUIをC#で作って、実際の処理は、C++のMFC使ってやることを考えている。&lt;br /&gt;最初は、単純に、C++のコードを別プロセスとして起動することを考えた、&lt;br /&gt;&lt;br /&gt;しかし、C#で、C/C++の関数を実行する方法が、思った以上に、簡単だったので、&lt;br /&gt;C/C++側の関数を直接実行することも検討して見た。&lt;br /&gt;&lt;pre&gt;class A {&lt;br /&gt;[DllImport("some.dll")]&lt;br /&gt;static extern void func();&lt;br /&gt;...&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;これだけ。&lt;br /&gt;&lt;br /&gt;しかし、処理の進行をログとして出力してC#のテキストフィールドに出力する簡単な方法が見つからなかった。&lt;br /&gt;&lt;br /&gt;開発にあんまり時間書けたくないので、変なところではまるより、&lt;br /&gt;結局、単純に、C++のコードを別プロセスとして起動することになりそう。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-1053468167565719849?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/1053468167565719849/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=1053468167565719849' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/1053468167565719849'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/1053468167565719849'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/03/ccc.html' title='C#でC/C++の関数を実行'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-7923413377639354817</id><published>2010-03-28T17:47:00.002+09:00</published><updated>2010-03-28T17:47:14.923+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Food'/><title type='text'>Volvic Fruit Kiss</title><content type='html'>半分予想していたけど、&lt;br /&gt;&lt;br /&gt;Volvic Fruit Kiss&lt;br /&gt;は、レモン味のスポーツドリンクと同じ味だった・・&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-7923413377639354817?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/7923413377639354817/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=7923413377639354817' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/7923413377639354817'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/7923413377639354817'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/03/volvic-fruit-kiss.html' title='Volvic Fruit Kiss'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-4450013612507793676</id><published>2010-03-24T20:20:00.000+09:00</published><updated>2010-03-24T20:20:31.358+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programing'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>SQLite3 &lt;=&gt; Jet 4.0 Wrapper For Ruby 公開</title><content type='html'>&lt;a href="http://hszaki.blogspot.com/2010/02/sqlite3-jet-40.html"&gt;SQLite3 &lt;=&gt; Jet 4&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;で、言っていたラッパーを公開。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www1.odn.ne.jp/hitohiro/tech/sqlite3ADODB.zip"&gt;SQLite3 &amp;amp; ADODB Wrapper for Ruby&lt;/a&gt;&lt;br /&gt;今のところ、Jet 4.0で決め打ちしているけど、provider返れば、他でもいけるはず。&lt;br /&gt;必要になったら、ビューが非互換なとことか、テーブルの定義部分は、変えないといけないとか、大丈夫にした、分厚いラッパーを作るかもしれない。&lt;br /&gt;&lt;br /&gt;パブリックドメインです。自由に使ってください。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-4450013612507793676?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/4450013612507793676/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=4450013612507793676' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/4450013612507793676'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/4450013612507793676'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/03/sqlite3-jet-40-wrapper-for-ruby.html' title='SQLite3 &lt;=&gt; Jet 4.0 Wrapper For Ruby 公開'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-2825648475671258798</id><published>2010-03-24T19:52:00.000+09:00</published><updated>2010-03-24T19:52:53.558+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VBA'/><category scheme='http://www.blogger.com/atom/ns#' term='Programing'/><category scheme='http://www.blogger.com/atom/ns#' term='Excel'/><category scheme='http://www.blogger.com/atom/ns#' term='MFC'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>MFCでExcel</title><content type='html'>MFCでのExcelプログラミングを調査している。&lt;br /&gt;&lt;br /&gt;ものすごく、めんどくさい。&lt;br /&gt;&lt;br /&gt;メソッドから返ってくるのは大概Variantです。&lt;br /&gt;つまり、&lt;br /&gt;o.get_Range(...).func()&lt;br /&gt;のような、書き方はできなくて、&lt;br /&gt;キャストするか、目的の型の変数に代入するかしないと、オブジェクトにアクセスできない。&lt;br /&gt;&lt;br /&gt;今のところの方針は、最低限の部分はMFCでプログラングして、&lt;br /&gt;後は、VBAでマクロ組んで、マクロを実行ってのを考えている。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-2825648475671258798?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/2825648475671258798/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=2825648475671258798' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/2825648475671258798'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/2825648475671258798'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/03/mfcexcel.html' title='MFCでExcel'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-8670075135110803441</id><published>2010-03-21T19:14:00.000+09:00</published><updated>2010-03-21T19:14:47.912+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programing'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>JetのViewの制限</title><content type='html'>TEXTの問題は、適当な長さのCHARに置き換えることで解決したけど、&lt;br /&gt;&lt;br /&gt;Jetのビューでは、&lt;br /&gt;&lt;br /&gt;order byが使えない。&lt;br /&gt;エラー:&lt;br /&gt;VIEWSには、単純なSELECTクエリしか使用できません。&lt;br /&gt;&lt;br /&gt;unionが使えない。&lt;br /&gt;エラー:&lt;br /&gt;サブクエリではUNION句を使用できません。&lt;br /&gt;&lt;br /&gt;この辺りは諦めるしかなさそうです。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-8670075135110803441?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/8670075135110803441/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=8670075135110803441' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/8670075135110803441'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/8670075135110803441'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/03/jetview.html' title='JetのViewの制限'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-6817406496783782605</id><published>2010-03-19T21:15:00.001+09:00</published><updated>2010-03-19T21:38:09.756+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programing'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Jet 4.0 TEXT型の罠</title><content type='html'>文字を格納する部分を全部TEXT型にしてハマった。&lt;br /&gt;&lt;br /&gt;max,minなどの関数が使えない。&lt;br /&gt;さらには、group byを使うとなぜか、分け解らない値になる。&lt;br /&gt;&lt;br /&gt;SQLite3 &amp; Jet 4.0 共通ライブラリ計画がかなり遠のいた。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-6817406496783782605?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/6817406496783782605/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=6817406496783782605' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/6817406496783782605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/6817406496783782605'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/03/jet-40-text.html' title='Jet 4.0 TEXT型の罠'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-4015824672478908334</id><published>2010-03-15T11:55:00.000+09:00</published><updated>2010-03-15T11:55:12.224+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Health'/><category scheme='http://www.blogger.com/atom/ns#' term='Tennis'/><title type='text'>体力</title><content type='html'>数ヶ月前は、2コートを5周×3セットでヒイヒイ言ってました。&lt;br /&gt;&lt;br /&gt;一ヶ月ほど前は、練習して2コートを10周×3セット走れるようになりました。&lt;br /&gt;しかし、筋肉痛が一週間続きました。&lt;br /&gt;&lt;br /&gt;数週間前は、普通に、2コートを10周×3セット走れるようになりました。&lt;br /&gt;&lt;br /&gt;昨日は、試合に入りまくった後に、2コートを10周×3セットやりました。&lt;br /&gt;気がつけば、5時間ほど運動していました。&lt;br /&gt;&lt;br /&gt;今日は、全身筋肉痛で泣きながら書いていますが、&lt;br /&gt;一時期の信じられないほどの体力低下に比べて、かなりの進歩です。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-4015824672478908334?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/4015824672478908334/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=4015824672478908334' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/4015824672478908334'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/4015824672478908334'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/03/blog-post_15.html' title='体力'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-2226040595233547899</id><published>2010-03-15T11:41:00.000+09:00</published><updated>2010-03-15T11:41:44.886+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OS'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='Virtual Machine'/><title type='text'>Windows 7使用感</title><content type='html'>デザイン自体は、非常に良くなったと思う。&lt;br /&gt;&lt;br /&gt;使い心地は、なんとも言えないのですが、普通に使えています。&lt;br /&gt;&lt;br /&gt;PowerShellとかコマンドプロンプトが、ほとんど変わっていなかったのは、残念です。&lt;br /&gt;PowerShellにはPowerShell ISEという開発環境が追加されました。これについては、まだなんとも言えないのですが、求めていたのに近い可能性はあります。&lt;br /&gt;&lt;br /&gt;ネイティブで動かすと印象は変わるかもしれないのですが、VMware上では、アニメーションがチカチカしてうるさい感じです。&lt;br /&gt;&lt;br /&gt;アニメーションは、&lt;br /&gt;"コントロール パネル\コンピューターの簡単操作\コンピューターの簡単操作センター\コンピューターを見やすくします"&lt;br /&gt;の、"必要のないアニメーションは無効にします"にチェックを入れることでオフにできます。&lt;br /&gt;&lt;br /&gt;デフォルトではウィンドウの枠が太すぎる印象を受けました。&lt;br /&gt;ウィンドウの設定を変更するには、&lt;br /&gt;"コントロール パネル\デスクトップのカスタマイズ\個人設定\ウィンドウの色とデザイン"&lt;br /&gt;の、"デザインの詳細設定..."&lt;br /&gt;を開いて変更します。&lt;br /&gt;&lt;br /&gt;正直なところ、設定がどこにあるのか非常に分かりにくのが難点でしょうか。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-2226040595233547899?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/2226040595233547899/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=2226040595233547899' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/2226040595233547899'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/2226040595233547899'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/03/windows-7_15.html' title='Windows 7使用感'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-2484645205288680030</id><published>2010-03-10T22:54:00.000+09:00</published><updated>2010-03-10T22:54:24.265+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OS'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><category scheme='http://www.blogger.com/atom/ns#' term='Virtual Machine'/><title type='text'>Windows 7 インストール</title><content type='html'>Windows 7のアップグレード版をVMware上にインストール。&lt;br /&gt;&lt;br /&gt;焦った、焦った、苦戦した。&lt;br /&gt;&lt;br /&gt;まず、新規にインストールしようとして、失敗。&lt;br /&gt;Windows XP 32bit版に、64bit版インストールしようとして、ディスクを認識しなくて失敗。&lt;br /&gt;&lt;br /&gt;Windows 7 RC版に、インストールしてはじめて成功した。&lt;br /&gt;&lt;br /&gt;今度、32bit版をインストールしてみる予定。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-2484645205288680030?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/2484645205288680030/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=2484645205288680030' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/2484645205288680030'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/2484645205288680030'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/03/windows-7.html' title='Windows 7 インストール'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-4572093547133179352</id><published>2010-03-09T22:22:00.000+09:00</published><updated>2010-03-09T22:22:43.289+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programing'/><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>SQLite3 &lt;=&gt; Jet 4.0 進捗</title><content type='html'>ADODBのRecordsetに合わせて、sqlite3_rubyのquery使おうとして、酷い目にあった。&lt;br /&gt;&lt;br /&gt;finalizer付けとけば、最悪GC時にcloseされるからOKと思っていたら、そうはいかなかった。&lt;br /&gt;closeし忘れているクエリーが一つでもあれば、commitできない。&lt;br /&gt;&lt;br /&gt;メモリ使用量が気になると言えば気になるけど、配列を返すexecuteを使うことにした。&lt;br /&gt;&lt;br /&gt;もうちょっと、動作確認したら、公開できると思う。&lt;br /&gt;&lt;br /&gt;しかし、かなり割り切って機能を限定しないと、SQLite3とJetの細かな差が吸収できない。&lt;br /&gt;&lt;br /&gt;なかなか、難しい。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-4572093547133179352?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/4572093547133179352/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=4572093547133179352' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/4572093547133179352'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/4572093547133179352'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/03/sqlite3-jet-40.html' title='SQLite3 &lt;=&gt; Jet 4.0 進捗'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-6148528809895532470</id><published>2010-03-08T23:12:00.000+09:00</published><updated>2010-03-08T23:12:54.339+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programing'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><title type='text'>Ruby deepcopyとdeepfreezeがほしい</title><content type='html'>オブジェクトをfreezeしたはずが、内容が変わっている。&lt;br /&gt;&lt;br /&gt;インスタンス変数の内容自体はfreezeされないから、不変オブジェクトでない限り、変更できてしまう。&lt;br /&gt;&lt;br /&gt;てことは、インスタンス変数一個一個freezeしてもやっぱり内容が変わる可能性がある。&lt;br /&gt;&lt;br /&gt;deepcopyもそうだけど、一筋縄ではいかない。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-6148528809895532470?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/6148528809895532470/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=6148528809895532470' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/6148528809895532470'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/6148528809895532470'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/03/ruby-deepcopydeepfreeze.html' title='Ruby deepcopyとdeepfreezeがほしい'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-3444827059783804084</id><published>2010-03-07T19:01:00.002+09:00</published><updated>2010-03-07T19:31:38.754+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='Typing'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><category scheme='http://www.blogger.com/atom/ns#' term='Mac OS X'/><title type='text'>タッチタイピング</title><content type='html'>僕の知るかぎり最高のタッチタイピング練習ソフト&lt;a href="http://homepage.mac.com/t_ogihara/software/OSX/typist-jpn.html"&gt;Typist&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;今まで、バージョン1.31をRosettaのサポートが切れたらどうしようと、ビクビクしながら使っていたのですが、&lt;br /&gt;バージョン2.01が、とっくの昔にリリースされていたことがわかった。&lt;br /&gt;&lt;br /&gt;ソースコードまで、入手できるので、さっそくダウンロード。&lt;br /&gt;&lt;br /&gt;あんまり、親切じゃないけど、Windows用やUNIXで動く&lt;a href="http://homepage.mac.com/t_ogihara/software/CLI/typist/doc/jp/index.html"&gt;Typist on Terminal&lt;/a&gt;もありますので、お試しあれ。&lt;br /&gt;&lt;br /&gt;最初は、しんどいかもしれないけど、一通り練習すれば、タッチタイピングがかなりうまくなります。&lt;br /&gt;&lt;br /&gt;コースによっては、かなり長いです。&lt;br /&gt;さらには、ミスるともう１回やり直しになります。&lt;br /&gt;ミスりやすいように文字が配置されている、としか思えないような時も多々あります。&lt;br /&gt;&lt;br /&gt;それでも、忍耐強くやり通せば、うまくなります。&lt;br /&gt;&lt;br /&gt;僕は、これの英文コースを何回も繰り返し練習しています。&lt;br /&gt;調子が悪いか、へんな癖が付くと、なんどやってもミスる時は、ミスります。&lt;br /&gt;へんな癖が付いた時は、直るまで繰り返します。どうしても、クリアできない時は、休憩して時間を置いてやります。&lt;br /&gt;すると、繰り返すごとに、タッチタイピングがうまくなっていくのが実感できます。&lt;br /&gt;&lt;br /&gt;僕はミス０を目指してがんばっているのですが、&lt;br /&gt;最初は、ミスしてもいいので、やり通すのが良いでしょう。達成感を味わってください。&lt;br /&gt;&lt;br /&gt;ある程度繰り返して慣れてくれば、ミス０を目指すのをおすすめします。&lt;br /&gt;ある程度早くタイプできるようになってくると解るのですが、&lt;br /&gt;1文字ミスしたら、僕の場合気がついた時には、5,6文字は先に行っています。&lt;br /&gt;戻って修正すると、かなりのタイムロスにつながります。&lt;br /&gt;&lt;br /&gt;ミスするくらいならスピードを落とした方が結局は速くタイピングできる。&lt;br /&gt;&lt;br /&gt;この、ソフトがミスに対するペナルティが厳しいのは、そこが理由です。&lt;br /&gt;&lt;br /&gt;おすすめです。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-3444827059783804084?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/3444827059783804084/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=3444827059783804084' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/3444827059783804084'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/3444827059783804084'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/03/blog-post_07.html' title='タッチタイピング'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-5358792658438231482</id><published>2010-03-06T07:55:00.004+09:00</published><updated>2010-03-06T08:42:47.739+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programing'/><category scheme='http://www.blogger.com/atom/ns#' term='human'/><title type='text'>○○はすべきでない</title><content type='html'>「○○はすべきでない」と言われたなら、みなさんはどうしているでしょう？&lt;br /&gt;&lt;br /&gt;単に従う。逆にやる。色々だと思うのですが、僕は、&lt;br /&gt;&lt;br /&gt;「なぜ、すべきでないのか？」&lt;br /&gt;&lt;br /&gt;を、考えることにしている。&lt;br /&gt;「なぜ」が解ると、逆に、使いどころが解る。&lt;br /&gt;&lt;br /&gt;「gotoを使うべきではない」&lt;br /&gt;よく言われることですし、今や常識となっています。&lt;br /&gt;&lt;br /&gt;なぜ、使ってはいけないかというと、&lt;br /&gt;「プログラムの制御構造がぐちゃぐちゃになる」&lt;br /&gt;からです。&lt;br /&gt;&lt;br /&gt;ということは、逆に、&lt;br /&gt;使うことで「プログラムの制御構造が解りやすくなる」&lt;br /&gt;なら、使うべきと考えています。&lt;br /&gt;具体的には、深いループからの脱出とか典型例でしょう。&lt;br /&gt;&lt;br /&gt;こんなこと言っている僕は、実は結構、保守的でした。&lt;br /&gt;ルールはとにかく守るもの、時間はとにかく守るものでした。&lt;br /&gt;&lt;br /&gt;Perlの考え方よりPythonの考え方の方が好きですし、&lt;br /&gt;Cのif文は、一行の場合でも、&lt;br /&gt;&lt;pre&gt;if (...) {&lt;br /&gt; ...&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;と {} を必ず付けています。&lt;br /&gt;こんな考え方では、Rubyを使いこなせてはおらず、&lt;br /&gt;Rubyの使い方は、正規表現が使える使いやすい言語程度のものでしたし、&lt;br /&gt;C++のテンプレート使って、コンパイル時に計算して、階乗求めるとか、無意味にテクってどうするの？でした。&lt;br /&gt;&lt;br /&gt;今は、段々と考え方が変わってきました。&lt;br /&gt;&lt;br /&gt;もちろん、今でも、当時からの、&lt;br /&gt;ソースコードは、簡素で明瞭であるべきという考え方は変わりませんが、&lt;br /&gt;&lt;br /&gt;C++のテンプレートは使うべき時は使うし、&lt;br /&gt;Rubyのいろんなテクニックや文法もどんどん取り入れてプログラミングするようになってきました。&lt;br /&gt;&lt;br /&gt;すると、遠い昔は、単に括弧だらけの言語だった、Lispが理解できるようになってきた。&lt;br /&gt;&lt;br /&gt;プログラミングだけでなく、今まで解らなかった様々なものが見えるようになってきた。&lt;br /&gt;&lt;br /&gt;さて、トップに追加されたサブタイトルの、&lt;br /&gt;&lt;br /&gt;His story history -- My story mystery&lt;br /&gt;&lt;br /&gt;ふと、思いついた駄洒落なのですが、&lt;br /&gt;（パクったのではありません。本当です）&lt;br /&gt;考えれば考えるほど、奥が深い気がしませんか？&lt;br /&gt;これだけをネタに一筆書けそうです。&lt;br /&gt;&lt;br /&gt;気に入っています。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-5358792658438231482?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/5358792658438231482/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=5358792658438231482' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/5358792658438231482'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/5358792658438231482'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/03/blog-post_06.html' title='○○はすべきでない'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-4814407819128732444</id><published>2010-03-02T19:53:00.003+09:00</published><updated>2010-03-02T20:00:25.806+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Computer'/><category scheme='http://www.blogger.com/atom/ns#' term='Electric'/><category scheme='http://www.blogger.com/atom/ns#' term='PLC'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><title type='text'>コンピュータアーキテクチャのエッセンス</title><content type='html'>&lt;a href="http://www.amazon.co.jp/コンピュータアーキテクチャのエッセンス-Architects-Archiveシリーズ-ダグラス・E・カマー/dp/4798109908/ref=sr_1_2?ie=UTF8&amp;s=books&amp;qid=1267527252&amp;sr=8-2"&gt;コンピュータアーキテクチャのエッセンス&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;PLCやったことがある身としては、非常におもしろい。&lt;br /&gt;&lt;br /&gt;PLCのプログラムの難しいところは、回路に見えるけど、ソフトウェアとして考えないといけないところ。&lt;br /&gt;&lt;br /&gt;回路設計とソフトウェア設計は真逆の考えたが要求される。&lt;br /&gt;&lt;br /&gt;回路はコピーした方がパフォーマンスが出るしシンプルにできる。&lt;br /&gt;ソフトウェアは、できるだけ共通化した方がわかりやすいし、保守しやすい。&lt;br /&gt;&lt;br /&gt;マイクロシーケンサに関する記述を見ると、PLCが特殊なものだという考えを見直させられる。&lt;br /&gt;シーケンス制御はいたるところで使われる。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-4814407819128732444?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/4814407819128732444/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=4814407819128732444' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/4814407819128732444'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/4814407819128732444'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/03/blog-post.html' title='コンピュータアーキテクチャのエッセンス'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-2075044268014035463</id><published>2010-02-27T22:51:00.005+09:00</published><updated>2010-02-28T11:46:57.728+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programing'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><title type='text'>ruby a=(x)が返す値は？</title><content type='html'>rubyでは、例えば、&lt;br /&gt;&lt;pre&gt;class A&lt;br /&gt;  def f= x&lt;br /&gt;    @f = x &lt;br /&gt;  end&lt;br /&gt;&lt;br /&gt;  def f&lt;br /&gt;    @f&lt;br /&gt;  end&lt;br /&gt;end&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;とすると、&lt;br /&gt;&lt;pre&gt;a = A.new&lt;br /&gt;a.f = 1&lt;br /&gt;a.f =&amp;gt; 1&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;のように、メソッドが代入みたいに見えるようにできる。&lt;br /&gt;&lt;br /&gt;では、&lt;br /&gt;&lt;pre&gt;class A&lt;br /&gt;  def f= x&lt;br /&gt;    @f = x&lt;br /&gt;    x + 2&lt;br /&gt;  end&lt;br /&gt;&lt;br /&gt;  def f&lt;br /&gt;    @f&lt;br /&gt;  end&lt;br /&gt;end&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;と定義すると、&lt;br /&gt;&lt;pre&gt;a.f = 2&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;は、何を返すでしょう？&lt;br /&gt;&lt;pre&gt;a.f = 2 =&amp;gt; 4 # ×&lt;br /&gt;a.f = 2 =&amp;gt; 2 # ○&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;単純に考えると、4が返るはずなのですが、&lt;br /&gt;2が返ります。&lt;br /&gt;&lt;br /&gt;これは、多分&lt;br /&gt;&lt;pre&gt;x = a.f = 2&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;としたとき、の整合性をとるため。&lt;br /&gt;つまり、xが4になってしまうと代入ではなくなってしまう。&lt;br /&gt;&lt;s&gt;「メソッドが代入みたいに見えるようにできる」&lt;/s&gt;&lt;br /&gt;『特殊な表記のメソッド」&lt;br /&gt;と考えるとハマる。&lt;br /&gt;&lt;br /&gt;ちなみに、次のバイトコード解析すると、&lt;br /&gt;&lt;pre&gt;class A&lt;br /&gt;  def f= x&lt;br /&gt;    x + 2&lt;br /&gt;  end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;a = A.new&lt;br /&gt;b = a.f = 2&lt;br /&gt;puts b&lt;br /&gt;&lt;/pre&gt;次のように、確かに、 'x + 2' は返り値としては無視されて、代入した値が返される。&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;0036 setn             2&lt;br /&gt;0038 send             :f=, 1, nil, 0, &amp;lt;ic&amp;gt;&lt;br /&gt;0044 pop      &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;以下、バイトコード全体&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;== disasm: &amp;lt;RubyVM::InstructionSequence:&amp;lt;main&amp;gt;@a.rb&amp;gt;====================&lt;br /&gt;local table (size: 3, argc: 0 [opts: 0, rest: -1, post: 0, block: -1] s1)&lt;br /&gt;[ 3] a          [ 2] b          &lt;br /&gt;0000 trace            1                                               (   1)&lt;br /&gt;0002 putspecialobject 2&lt;br /&gt;0004 putnil           &lt;br /&gt;0005 defineclass      :A, &amp;lt;class:A&amp;gt;, 0&lt;br /&gt;0009 pop              &lt;br /&gt;0010 trace            1                                               (   7)&lt;br /&gt;0012 getinlinecache   &amp;lt;ic&amp;gt;, 19&lt;br /&gt;0015 getconstant      :A&lt;br /&gt;0017 setinlinecache   12&lt;br /&gt;0019 send             :new, 0, nil, 0, &amp;lt;ic&amp;gt;&lt;br /&gt;0025 setdynamic       a, 0&lt;br /&gt;0028 trace            1                                               (   9)&lt;br /&gt;0030 putnil           &lt;br /&gt;0031 getdynamic       a, 0&lt;br /&gt;0034 putobject        2&lt;br /&gt;0036 setn             2&lt;br /&gt;0038 send             :f=, 1, nil, 0, &amp;lt;ic&amp;gt;&lt;br /&gt;0044 pop              &lt;br /&gt;0045 setdynamic       b, 0&lt;br /&gt;0048 trace            1                                               (  10)&lt;br /&gt;0050 putnil           &lt;br /&gt;0051 getdynamic       b, 0&lt;br /&gt;0054 send             :puts, 1, nil, 8, &amp;lt;ic&amp;gt;&lt;br /&gt;0060 leave            &lt;br /&gt;== disasm: &amp;lt;RubyVM::InstructionSequence:&amp;lt;class:A&amp;gt;@a.rb&amp;gt;=================&lt;br /&gt;0000 trace            2                                               (   1)&lt;br /&gt;0002 trace            1                                               (   2)&lt;br /&gt;0004 putspecialobject 1&lt;br /&gt;0006 putspecialobject 2&lt;br /&gt;0008 putobject        :f=&lt;br /&gt;0010 putiseq          f=&lt;br /&gt;0012 send             :"core#define_method", 3, nil, 0, &amp;lt;ic&amp;gt;&lt;br /&gt;0018 trace            4                                               (   5)&lt;br /&gt;0020 leave                                                            (   2)&lt;br /&gt;== disasm: &amp;lt;RubyVM::InstructionSequence:f=@a.rb&amp;gt;========================&lt;br /&gt;local table (size: 2, argc: 1 [opts: 0, rest: -1, post: 0, block: -1] s1)&lt;br /&gt;[ 2] x&amp;lt;Arg&amp;gt;     &lt;br /&gt;0000 trace            8                                               (   2)&lt;br /&gt;0002 trace            1                                               (   3)&lt;br /&gt;0004 getlocal         x&lt;br /&gt;0006 putobject        2&lt;br /&gt;0008 opt_plus         &lt;br /&gt;0009 trace            16                                              (   4)&lt;br /&gt;0011 leave &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;2010-02-28: 一部表記を修正&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-2075044268014035463?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/2075044268014035463/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=2075044268014035463' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/2075044268014035463'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/2075044268014035463'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/02/ruby-ax.html' title='ruby a=(x)が返す値は？'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-3808152076857294</id><published>2010-02-27T10:19:00.003+09:00</published><updated>2010-02-27T10:29:03.936+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programing'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><title type='text'>rubyのメソッド定義</title><content type='html'>Rubyのメソッド。&lt;br /&gt;&lt;br /&gt;使う時は、括弧を付けずに使うことができます。これは知っていたし、よく使うのですが、&lt;br /&gt;&lt;br /&gt;てっきり、定義するときは、変数は括弧で囲まないといけないと思い込んでいたのですが、いらないことが判明。&lt;br /&gt;&lt;br /&gt;つまり、&lt;br /&gt;&lt;pre&gt;def f(x)&lt;br /&gt;...&lt;br /&gt;end&lt;/pre&gt;ではなくて、&lt;br /&gt;&lt;pre&gt;def f x&lt;br /&gt;...&lt;br /&gt;end&lt;/pre&gt;&lt;br /&gt;とできる。&lt;br /&gt;&lt;br /&gt;エレガントに見えるだけでなく、')'一つ分、タイプ数が削減できます。&lt;br /&gt;すぱらしい。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-3808152076857294?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/3808152076857294/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=3808152076857294' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/3808152076857294'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/3808152076857294'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/02/ruby.html' title='rubyのメソッド定義'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-5059935860528308901</id><published>2010-02-26T22:18:00.005+09:00</published><updated>2010-02-26T23:48:25.810+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programing'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='Mac OS X'/><title type='text'>SQLite3 &lt;=&gt; Jet 4.0</title><content type='html'>SQLite3データベースとJet 4.0データベースの両方で使える、Ruby用SQLライブラリを作ろうかと企んでいる。&lt;br /&gt;&lt;br /&gt;というのも、僕個人で使うなら、SQLite3だけで、満足しているんだけど、&lt;br /&gt;他人の環境で動かすこと考えると、Windows環境では、SQLite3用にソフトウェアをインストールしないといけない点がネックとなる。&lt;br /&gt;&lt;br /&gt;そして、Rubyで雑務をできるだけこなしたい僕としては、WIN32OLEは非常にありがたい。&lt;br /&gt;しかし、非常に薄いラッパなので、もろに元々のAPIの影響を受けて、Rubyとして考えると使いにくい。&lt;br /&gt;ということで、もうちょっと分厚いラッパがほしい。&lt;br /&gt;&lt;br /&gt;sqlite3-rubyベースの自作ライブラリがすでにあるので、インタフェースだけこれに合わせて切り替えることができないかと考えている。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-5059935860528308901?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/5059935860528308901/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=5059935860528308901' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/5059935860528308901'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/5059935860528308901'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/02/sqlite3-jet-40.html' title='SQLite3 &lt;=&gt; Jet 4.0'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-5391382268826116607</id><published>2010-02-24T18:54:00.003+09:00</published><updated>2010-02-24T19:05:09.182+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programing'/><category scheme='http://www.blogger.com/atom/ns#' term='Scheme'/><category scheme='http://www.blogger.com/atom/ns#' term='Common Lisp'/><category scheme='http://www.blogger.com/atom/ns#' term='Lisp'/><category scheme='http://www.blogger.com/atom/ns#' term='Book'/><title type='text'>On Lisp読了</title><content type='html'>On Lispを読み終わった。&lt;br /&gt;文字通り読み終わっただけで、理解するのは、これからである。&lt;br /&gt;&lt;br /&gt;それ、読んだとは言わないと思うかもしれないけど、&lt;br /&gt;単に、文字を追うだけで、読書として十分に意味がある。&lt;br /&gt;&lt;br /&gt;On Lispを理解するに当たっては、On LIspのプログラムをSchemeで書き直すことを考えている。&lt;br /&gt;これによって、Common LispとSchemeの両方の理解が深まる。&lt;br /&gt;&lt;br /&gt;さて、最近、&lt;br /&gt;ケント ディヴィグ 著の「&lt;a href="http://www.amazon.co.jp/プログラミング言語SCHEME-R-ケント-ディヴィグ/dp/4894712261/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1267005766&amp;sr=8-1"&gt;プログラミング言語 SCHEME&lt;/a&gt;」&lt;br /&gt;が、なぜ良書なのか、やっとわかってきた。&lt;br /&gt;&lt;br /&gt;この調子で、難攻不落だったSICPを攻略する予定である。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-5391382268826116607?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/5391382268826116607/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=5391382268826116607' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/5391382268826116607'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/5391382268826116607'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/02/on-lisp.html' title='On Lisp読了'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-8142141085420147458</id><published>2010-02-21T19:44:00.003+09:00</published><updated>2010-02-21T20:05:54.846+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programing'/><category scheme='http://www.blogger.com/atom/ns#' term='Excel'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><category scheme='http://www.blogger.com/atom/ns#' term='MFC'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Windowsでの開発</title><content type='html'>RubyのWIN32OLEの存在を最近知った。&lt;br /&gt;ExcelのQueryTableの存在を最近知った。&lt;br /&gt;&lt;br /&gt;開発の手間がかなり減ったかもしれないのですが、今までの苦労の一部は無駄となった。&lt;br /&gt;&lt;br /&gt;こうも後手に回ることが多いのは、そもそも、Windowsを知らないから。&lt;br /&gt;&lt;br /&gt;それと、C/C++を使ってWindows上でプログラミングする機会が今後増えそう。&lt;br /&gt;&lt;br /&gt;MFCとか、COMとか使うことになるのですが、こういったものの書籍って情報が古いし高い。&lt;br /&gt;しかし、知らないで、わけわからないとこでハマったり、作らなくていいもの作ったりするより、よほど良い。&lt;br /&gt;ということで、かなり迷ったのですが、&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/gp/product/4881357042/ref=s9_simi_gw_p14_i1?pf_rd_m=AN1VRQENFRJN5&amp;pf_rd_s=center-2&amp;pf_rd_r=1PPSF0KQ4KT4AMCWXSEY&amp;pf_rd_t=101&amp;pf_rd_p=463376756&amp;pf_rd_i=489986"&gt;標準講座MFC6.0―Visual C++による効率的なWindowsプログラミング&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;を手に入れた。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-8142141085420147458?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/8142141085420147458/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=8142141085420147458' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/8142141085420147458'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/8142141085420147458'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/02/windows.html' title='Windowsでの開発'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-4414388444634993203</id><published>2010-02-20T23:15:00.002+09:00</published><updated>2010-02-21T00:02:05.952+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programing'/><category scheme='http://www.blogger.com/atom/ns#' term='Scheme'/><title type='text'>CPS変換</title><content type='html'>継続を理解するために、とりあえず、CPS変換を機械的にやってみる。&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;(define (! x)&lt;br /&gt;  (if (&lt; x 1)&lt;br /&gt;      1&lt;br /&gt;      (* x (! (- x 1)))))&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;まず、if文の部分を置き換える&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;(define (!/cc x c)&lt;br /&gt;  (if (&lt; x 1)&lt;br /&gt;      (c 1)&lt;br /&gt;      (c (* x (! (- x 1))))))   &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;(! (- x 1))&lt;/pre&gt;の継続は、&lt;br /&gt;&lt;pre&gt;(lambda (c2) (c (* x c2))&lt;/pre&gt;&lt;br /&gt;よって &lt;br /&gt;&lt;pre&gt;(define (!/cc x c)&lt;br /&gt;  (if (&lt; x 1)&lt;br /&gt;      (c 1)&lt;br /&gt;      (!/cc (- x 1) &lt;br /&gt;            (lambda (c2) (c (* x c2)))))) &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;fibについても、同様に、&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;(define (fib x)&lt;br /&gt;  (if (&lt; x 1)&lt;br /&gt;      1&lt;br /&gt;      (+ (fib (- x 1)) &lt;br /&gt;         (fib (- x 2)))))&lt;br /&gt;&lt;br /&gt;(define (fib/cc x c)&lt;br /&gt;  (if (&lt; x 1)&lt;br /&gt;      (c 1)&lt;br /&gt;      (c (+ (fib (- x 1)&lt;br /&gt;            (fib (- x 2)))))&lt;br /&gt;&lt;br /&gt;(define (fib/cc x c)&lt;br /&gt;  (if (&lt; x 1)&lt;br /&gt;      (c 1)&lt;br /&gt;      (fib/cc (- x 1)&lt;br /&gt;               (lambda (c2) &lt;br /&gt;                   (c (+ c2 (fib (- x 2))))))))&lt;br /&gt;&lt;br /&gt;(define (fib/cc x c)&lt;br /&gt;  (if (&lt; x 1)&lt;br /&gt;      (c 1)&lt;br /&gt;      (fib/cc (- x 1)&lt;br /&gt;              (lambda (c2)&lt;br /&gt;                  (c (+ c2 (fib/cc (- x 2)&lt;br /&gt;                                   (lambda (c3) c3))))))))&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-4414388444634993203?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/4414388444634993203/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=4414388444634993203' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/4414388444634993203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/4414388444634993203'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/02/cps.html' title='CPS変換'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-1998524534923000882</id><published>2010-02-20T09:36:00.002+09:00</published><updated>2010-02-20T09:39:21.424+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programing'/><category scheme='http://www.blogger.com/atom/ns#' term='Excel'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><category scheme='http://www.blogger.com/atom/ns#' term='MFC'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>Re: Visual Studio 2008 C++ MFC Excel コンパイル通らない</title><content type='html'>&lt;a href="http://hszaki.blogspot.com/2010/02/visual-studio-2008-c-mfc-excel.html"&gt;Visual Studio 2008 C++ MFC Excel コンパイル通らない。&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;自動生成されるクラスの#importをコメントアウトすると、コンパイル通った。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-1998524534923000882?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/1998524534923000882/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=1998524534923000882' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/1998524534923000882'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/1998524534923000882'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/02/re-visual-studio-2008-c-mfc-excel.html' title='Re: Visual Studio 2008 C++ MFC Excel コンパイル通らない'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-968756260198923925</id><published>2010-02-18T23:47:00.004+09:00</published><updated>2010-02-18T23:56:29.935+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programing'/><category scheme='http://www.blogger.com/atom/ns#' term='Excel'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><category scheme='http://www.blogger.com/atom/ns#' term='MFC'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>Visual Studio 2008 C++ MFC Excel コンパイル通らない。</title><content type='html'>Visual Studio 2008 C++でExcel操作したいってことで、&lt;br /&gt;&lt;br /&gt;&lt;a href="http://support.microsoft.com/kb/308407/ja"&gt;http://support.microsoft.com/kb/308407/ja&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;を参考に、&lt;br /&gt;CApplicationクラス作って、ヘッダーインクルードしただけのプログラムがコンパイルが通らない。&lt;br /&gt;&lt;br /&gt;エラー 1 error C2371: 'FontPtr' : 再定義されています。異なる基本型です。 e:\mydocument\workspace\exceltest\exceltest\debug\excel.tlh 1219 ExcelTest&lt;br /&gt;&lt;br /&gt;など、その他200以上のエラー。&lt;br /&gt;&lt;br /&gt;いきなり、躓いたな。どうしよう。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-968756260198923925?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/968756260198923925/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=968756260198923925' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/968756260198923925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/968756260198923925'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/02/visual-studio-2008-c-mfc-excel.html' title='Visual Studio 2008 C++ MFC Excel コンパイル通らない。'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-8137291243708266436</id><published>2010-02-17T21:20:00.005+09:00</published><updated>2010-02-17T23:16:52.507+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programing'/><category scheme='http://www.blogger.com/atom/ns#' term='Scheme'/><category scheme='http://www.blogger.com/atom/ns#' term='Common Lisp'/><category scheme='http://www.blogger.com/atom/ns#' term='Book'/><title type='text'>On Lisp 17章到達</title><content type='html'>第17章 リードマクロ に到達。&lt;br /&gt;&lt;br /&gt;半分以上、読み終わったことになる。&lt;br /&gt;&lt;br /&gt;しかし、ここからが勝負。&lt;br /&gt;16章までは、今までのSchemeの知識でどうにかなったけど、リードマクロは初めて。&lt;br /&gt;&lt;br /&gt;読み進める前に、&lt;a href="http://www.amazon.co.jp/ANSI-Common-Lisp-スタンダードテキスト-グレアム/dp/4894714337/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1266409757&amp;sr=8-1"&gt;ANSI Common Lisp&lt;/a&gt;を読んだ方が良いかもしれない。&lt;br /&gt;&lt;br /&gt;それにしても、昔は否定的だったんだけど、マクロとか、メタプログラミングとかに対する認識が変わってきたかもしれない。&lt;br /&gt;&lt;br /&gt;2010-02-17 23:15 : ANSI Common Lispのリードマクロの部分、すぐに読み終わった。17章もよく見るとそんなにページ数はない。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-8137291243708266436?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/8137291243708266436/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=8137291243708266436' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/8137291243708266436'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/8137291243708266436'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/02/on-lisp-17.html' title='On Lisp 17章到達'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-3915375831740832304</id><published>2010-02-16T21:37:00.003+09:00</published><updated>2010-02-16T21:42:11.797+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programing'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Re: System.Data.SQLite自動生成したビューがなぜか動かない</title><content type='html'>同じビューがSelectで読み込んでdataGridViewのデータソースとして設定、&lt;br /&gt;AutoGenerateColumnsを有効にすると、表示できた。&lt;br /&gt;&lt;br /&gt;System.Data.SQLiteのビューの自動生成部分になんらかのバグがあると見てよさそう。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-3915375831740832304?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/3915375831740832304/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=3915375831740832304' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/3915375831740832304'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/3915375831740832304'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/02/re-systemdatasqlite.html' title='Re: System.Data.SQLite自動生成したビューがなぜか動かない'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-676814764799406725</id><published>2010-02-15T21:56:00.004+09:00</published><updated>2010-02-15T22:12:49.497+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programing'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>System.Data.SQLite自動生成したビューがなぜか動かない</title><content type='html'>System.Data.SQLiteで、自動生成されるDataSetのビューをDataGridViewのデータソースにして、表形式で表示しようとしているのですが、なぜか、失敗します。&lt;br /&gt;&lt;br /&gt;そもそも、そのビューをVisual Studio 2008のデザイナで開いて編集して保存しようとすると失敗する。解析時に失敗しているっぽい。&lt;br /&gt;inner join使ってるだけなのですが、'(',')'があるべきところから消えてしまっていて入力し直しても、元に戻ってエラーになり保存できない。&lt;br /&gt;&lt;br /&gt;System.Data.SQLiteのバグかなぁ。&lt;br /&gt;&lt;br /&gt;今後の方針：&lt;br /&gt;&lt;br /&gt;自動生成に頼らずに、自分で、データベース開いてSelect文実行してビューを読み込んで見る。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-676814764799406725?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/676814764799406725/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=676814764799406725' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/676814764799406725'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/676814764799406725'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/02/systemdatasqlite.html' title='System.Data.SQLite自動生成したビューがなぜか動かない'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-7047156701831006821</id><published>2010-02-14T23:14:00.002+09:00</published><updated>2010-02-14T23:33:48.233+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programing'/><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>DataGridView Memo</title><content type='html'>SQLiteデータベースのGUIインタフェース作りのメモ&lt;br /&gt;&lt;br /&gt;動的にクエリ作って、DataGridViewに表示させたい。&lt;br /&gt;&lt;br /&gt;DataGridView : ビュー&lt;br /&gt;BindingSource : コントローラ&lt;br /&gt;DataSet: モデル&lt;br /&gt;&lt;br /&gt;DataGridView.DataSource -&gt; BindingSource.DataSource -&gt; DataSet&lt;br /&gt;&lt;br /&gt;tableAdapter.Fill( DataSet.テーブル )&lt;br /&gt;&lt;br /&gt;tableAdapterに手を加えれば良さそうってところで、タイムオーバー&lt;br /&gt;引き続き、調査が必要。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-7047156701831006821?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/7047156701831006821/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=7047156701831006821' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/7047156701831006821'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/7047156701831006821'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/02/datagridview-memo.html' title='DataGridView Memo'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-2646088969553812425</id><published>2010-02-14T21:21:00.002+09:00</published><updated>2010-02-14T22:25:47.794+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><category scheme='http://www.blogger.com/atom/ns#' term='Mac OS X'/><category scheme='http://www.blogger.com/atom/ns#' term='Revision Control'/><title type='text'>Mercurialを導入</title><content type='html'>Mac OS XでもWindowsでも使える。&lt;br /&gt;シンプル。&lt;br /&gt;サーバを必要としない（分散型）。&lt;br /&gt;&lt;br /&gt;これらのハードルの低さ３要件を満たすバージョン管理システムをと考えた結果、&lt;br /&gt;&lt;br /&gt;両方ともインストーラが用意されている。&lt;br /&gt;コマンド体系もシンプルだし、Mac OS Xではhelpが日本語。オンラインドキュメントも充実している。&lt;br /&gt;言うまでもなく分散型。&lt;br /&gt;&lt;br /&gt;ということで、&lt;br /&gt;&lt;a href="http://mercurial.selenic.com/"&gt;Mercurial&lt;/a&gt;を導入してみたのが、１ヶ月ほど前、&lt;br /&gt;&lt;br /&gt;最初の頃より、コミットが重くなったことを省けば、特に問題らしい問題もなく使えています。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-2646088969553812425?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/2646088969553812425/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=2646088969553812425' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/2646088969553812425'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/2646088969553812425'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/02/mercurial.html' title='Mercurialを導入'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-8089706789794601436</id><published>2010-02-13T14:54:00.003+09:00</published><updated>2010-02-13T15:05:59.668+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><category scheme='http://www.blogger.com/atom/ns#' term='Book'/><category scheme='http://www.blogger.com/atom/ns#' term='Apple'/><title type='text'>IPhone電子書籍とiPad</title><content type='html'>オライリーとかから、様々な電子書籍がApp Storeで売っている。&lt;br /&gt;外国語版しかないことを省けば、衝撃的な値段で。&lt;br /&gt;&lt;br /&gt;3000~4000円が600円とか300円とか&lt;br /&gt;&lt;br /&gt;試しに、350円の 「C++ Pocket Reference」を買って試してみました。&lt;br /&gt;&lt;br /&gt;想像以上に快適でした。&lt;br /&gt;さすがに、iPhoneで通して分厚いやつを読むなら、つらいかもしれないのですが、&lt;br /&gt;これを、iPhoneの画面ではなく、iPadの画面で見たら、かなり快適かもしれない。&lt;br /&gt;認識を改めた次第です。&lt;br /&gt;&lt;br /&gt;やぱいなぁ、積極的な理由が一つできてしまいました。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-8089706789794601436?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/8089706789794601436/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=8089706789794601436' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/8089706789794601436'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/8089706789794601436'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/02/iphoneipad.html' title='IPhone電子書籍とiPad'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-5793305266321945728</id><published>2010-02-10T21:47:00.003+09:00</published><updated>2010-02-10T22:13:49.173+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Computer'/><category scheme='http://www.blogger.com/atom/ns#' term='CPU'/><category scheme='http://www.blogger.com/atom/ns#' term='Parallel'/><title type='text'>POWER7についてちょっとだけ</title><content type='html'>8コア 32スレッド 4.1GHz 32MB 3次キャッシュ&lt;br /&gt;&lt;br /&gt;UltraSPARC T1 は性能犠牲にして、同時に扱えるスレッド数を優先して、8コア 32スレッド&lt;br /&gt;今や、同じレベル。&lt;br /&gt;&lt;br /&gt;個人レベルでも、今や、4コア 8スレッド&lt;br /&gt;&lt;br /&gt;近い将来、個人レベルで、1チップで2桁台のスレッドを扱えるマシンが手に入りそうな勢い。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://hszaki.blogspot.com/2009/01/blog-post_06.html"&gt;並列&lt;/a&gt;&lt;br /&gt;でも書きましたが、ますますロマンを掻き立てられます。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-5793305266321945728?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/5793305266321945728/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=5793305266321945728' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/5793305266321945728'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/5793305266321945728'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/02/power7.html' title='POWER7についてちょっとだけ'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-3648827868390916178</id><published>2010-02-09T21:16:00.002+09:00</published><updated>2010-02-09T21:30:26.124+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programing'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>SQLite3 日時計算Memo</title><content type='html'>SQLite3では、日付は文字列として格納される。&lt;br /&gt;dataとかdatetimeといった型はない。&lt;br /&gt;&lt;br /&gt;そのため、日時の計算が大変。&lt;br /&gt;&lt;br /&gt;日付と時間のフォーマットは、厳密に、&lt;br /&gt;&lt;br /&gt;yyyy-mm-dd hh:mm:ss&lt;br /&gt;&lt;br /&gt;でなければ、datetime関数は日付と判断してくれない。&lt;br /&gt;&lt;br /&gt;MAX(日付) : datetime(max(strftime('%s', 日付)), 'unixepoch')&lt;br /&gt;&lt;br /&gt;同じ日のtime1時からtime2時までの時間hh:mm:ssの計算は、&lt;br /&gt;&lt;br /&gt;time(datetime(strftime('%s', 'yyyy-mm-dd') + strftime('%s', 'yyyy-mm-dd ' || time2) - strftime('%s', 'yyyy-mm-dd ' || time2), 'unixepoch'))&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-3648827868390916178?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/3648827868390916178/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=3648827868390916178' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/3648827868390916178'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/3648827868390916178'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/02/sqlite3-memo.html' title='SQLite3 日時計算Memo'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-1632554091979230028</id><published>2010-02-07T20:37:00.003+09:00</published><updated>2010-02-07T21:33:00.472+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='Programing'/><category scheme='http://www.blogger.com/atom/ns#' term='Scheme'/><category scheme='http://www.blogger.com/atom/ns#' term='Common Lisp'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><title type='text'>iPhone上でプログラミング</title><content type='html'>iPhoneアプリをプログラミングではなくて、&lt;br /&gt;iPhone上でプログラミング。&lt;br /&gt;&lt;br /&gt;iPhone上で動くLispとか一応あるらしいけど、ものすごく単純な方法がある。&lt;br /&gt;&lt;br /&gt;Javascript&lt;br /&gt;&lt;br /&gt;アイディアは、&lt;a href="http://blog.livedoor.jp/dankogai/archives/50940883.html"&gt;アマグラマーのすすめ - 下ごしらえ -- 404 Blog Not Found&lt;/a&gt;ここから得たというか、そのまんまなのですが、これを自分に合わせてカスタマイズして、iDiskとかWeb上とか、iPhoneから見れるところにhtmlを置いて開くだけで、Javascriptを書いて実行できます。&lt;br /&gt;&lt;br /&gt;ということは、Javascript上で動く言語作れば、動く。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://labs.cybozu.co.jp/blog/nakatani/2008/01/javascript_ruby_jsruby_01.html"&gt;JSRuby 0.1&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.yuasa.kuis.kyoto-u.ac.jp/~yhara/webscheme/"&gt;WebScheme&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;とか、iPhone上で動くかは別として、探せばほかにもありそう。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-1632554091979230028?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/1632554091979230028/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=1632554091979230028' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/1632554091979230028'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/1632554091979230028'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/02/iphone.html' title='iPhone上でプログラミング'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-4606723639422430563</id><published>2010-02-07T12:18:00.001+09:00</published><updated>2010-02-07T12:45:35.642+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Scheme'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><title type='text'>CotEditor用 Scheme(Gauche)シンタックス定義 公開</title><content type='html'>&lt;a href="http://www1.odn.ne.jp/hitohiro/tech/downloads.html"&gt;CotEdior Scheme(Gauche) Syntax Rules&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2010-02-07 12:45 アウトラインの条件を少し修正&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-4606723639422430563?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/4606723639422430563/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=4606723639422430563' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/4606723639422430563'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/4606723639422430563'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/02/coteditor-schemegauche_07.html' title='CotEditor用 Scheme(Gauche)シンタックス定義 公開'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-5586006826331758476</id><published>2010-02-06T18:49:00.005+09:00</published><updated>2010-02-08T08:44:32.661+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Scheme'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><category scheme='http://www.blogger.com/atom/ns#' term='Mac OS X'/><title type='text'>CotEditor用 Scheme(Gauche)シンタックス定義</title><content type='html'>お気に入りのSmultronの開発が止まってしまったので、代わりのテキストエディタを探していた。&lt;br /&gt;そこで、白羽の矢が当たったのが、&lt;a href="http://www.aynimac.com/p_blog/files/article.php?id=41"&gt;CotEditor&lt;/a&gt;。&lt;br /&gt;&lt;a href="http://editra.org/"&gt;Editra&lt;/a&gt;も有力候補だったのですが、まだまだバグが散見される。&lt;br /&gt;&lt;br /&gt;シンタックス定義周りの設定をしている時、Schemeのシンタックスカラーリングをやりたいと思い立った。&lt;br /&gt;Scheme用シンタックス定義が検索で引っかかったけど、リンク切れ。&lt;br /&gt;&lt;br /&gt;そこで、自分で定義を作ることにした。&lt;br /&gt;&lt;br /&gt;Gaucheのレファレンスのhtmlを解析して、CotEditor用のScheme.plist作って、commandsArrayに、プロシージャ名をぶち込んだ。&lt;br /&gt;&lt;br /&gt;その作業に、もちろん、CotEditorを使っていたのですが、数千行ほどコピーした時、動作がとたんに重くなった。&lt;br /&gt;そこで、Smultronの64bitスペシャルベータ版を使って開いてみたら、普通に作業できた。&lt;br /&gt;&lt;br /&gt;Smultornはつくづくよく出来ていると再確認。64bit版CotEditorがほしい。&lt;br /&gt;&lt;br /&gt;Scheme(Gauche)のシンタックス定義は、もうちょっといらない部分とか取り除く作業をしたら、公開予定。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-5586006826331758476?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/5586006826331758476/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=5586006826331758476' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/5586006826331758476'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/5586006826331758476'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/02/coteditor-schemegauche.html' title='CotEditor用 Scheme(Gauche)シンタックス定義'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-4541148313770088252</id><published>2010-02-05T20:49:00.002+09:00</published><updated>2010-02-05T21:02:46.822+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programing'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>SQLite</title><content type='html'>Windows用ファイルベースのRDBについて、最初は、Access(Jet) とSQL Server Compact Edtionを比較検討していた。&lt;br /&gt;正直なところ、どちらも、軽量というよりも、下手に重量級でめんどくさい。&lt;br /&gt;&lt;br /&gt;そこで、目を付けたのが、SQLite3&lt;br /&gt;ファイルベースだし、DLL一個と十分軽量。コマンドラインでお手軽に試操作できる。&lt;br /&gt;そして、クロスプラットフォーム。&lt;br /&gt;&lt;br /&gt;さらには、&lt;br /&gt;&lt;br /&gt;.NET用に、&lt;a href="http://sqlite.phxsoftware.com/"&gt;System.Data.SQLite&lt;/a&gt;&lt;br /&gt;Ruby用に、&lt;a href="http://rubyforge.org/projects/sqlite-ruby"&gt;sqlite-ruby&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;言うことなし。ほぼ決定です。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-4541148313770088252?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/4541148313770088252/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=4541148313770088252' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/4541148313770088252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/4541148313770088252'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/02/sqlite.html' title='SQLite'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-9175205610453289960</id><published>2010-01-30T16:17:00.005+09:00</published><updated>2010-01-30T16:58:00.738+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programing'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><title type='text'>技巧の罠</title><content type='html'>rubyでは、if文は式です。つまり、&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;x = if ... then&lt;br /&gt;  ... &lt;br /&gt;  then_value &lt;br /&gt;else&lt;br /&gt;  ...&lt;br /&gt;  else_value&lt;br /&gt;end&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;というふうに、値を返して、変数に代入したりできる。&lt;br /&gt;&lt;br /&gt;エレガント気取りであるループの中で、これを使おうとして、こんな感じになった。&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;x = nil...&lt;br /&gt;s.each do ..&lt;br /&gt;&lt;br /&gt;x ||= if ... # ||=は、一度だけ代入を許すためのイディオム&lt;br /&gt;&lt;br /&gt;  if flag&lt;br /&gt;    ...&lt;br /&gt;    x = nil&lt;br /&gt;  end&lt;br /&gt;end&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;変数が増えた時に気がついたのですが、全然エレガントじゃない。&lt;br /&gt;そもそも関数型的な技巧なんだから、再代入がある時点で考えなおさないといけない。&lt;br /&gt;&lt;br /&gt;普通に、以下のようにした方がシンプルになる。&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;x = nil...&lt;br /&gt;s.each do ..&lt;br /&gt;  if ...&lt;br /&gt;     x = ...&lt;br /&gt;  end&lt;br /&gt;&lt;br /&gt;  if flag&lt;br /&gt;    ...&lt;br /&gt;  end&lt;br /&gt;end&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;技巧は、エレガントにするための手段なのに、手段が目的化すると、逆にエレガントでなくなる。&lt;br /&gt;&lt;br /&gt;正しい使い方は、例えば、&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;def f(...)&lt;br /&gt;  if ...&lt;br /&gt;     x = then_v&lt;br /&gt;  else&lt;br /&gt;     x =  else_v&lt;br /&gt;  end&lt;br /&gt;  g(x)&lt;br /&gt;end&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;のように、'x = 'が２回出てくるのを&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;def f(...)&lt;br /&gt;  x = if ...&lt;br /&gt;     then_v&lt;br /&gt;  else&lt;br /&gt;     else_v&lt;br /&gt;  end&lt;br /&gt;  g(x)&lt;br /&gt;end&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;一回で済ましたりするのに使う。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-9175205610453289960?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/9175205610453289960/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=9175205610453289960' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/9175205610453289960'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/9175205610453289960'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/01/blog-post_30.html' title='技巧の罠'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-4623831142421868224</id><published>2010-01-29T12:02:00.003+09:00</published><updated>2010-01-29T12:33:38.103+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Computer'/><category scheme='http://www.blogger.com/atom/ns#' term='Apple'/><title type='text'>iPad</title><content type='html'>iPadの一番のネックは多分、お値段。&lt;br /&gt;&lt;br /&gt;Netbookで十分な人が多分ターゲットになる。&lt;br /&gt;触ってみて、「おっ」と思うところまでは、多分持っていける。&lt;br /&gt;&lt;br /&gt;けど、値段見てウッとなりそう。Netbookのスペックや値段と比べてしまう。&lt;br /&gt;だから、なおさら、使い心地や物欲勝負になる。&lt;br /&gt;&lt;br /&gt;僕個人はと言うと、誰かにプレゼントとかならともかく、自分が買って使うことは多分ない。&lt;br /&gt;&lt;br /&gt;携帯端末は、iPhone, iPod touchで十分。&lt;br /&gt;ノートパソコンとしては、NetbookやMacBook Airでさえ見送ったので、完全に不十分。&lt;br /&gt;娯楽機器としては、PS2でさえも、ほとんどやらなくなってしまった自分としては、必要ない。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-4623831142421868224?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/4623831142421868224/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=4623831142421868224' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/4623831142421868224'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/4623831142421868224'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/01/ipad.html' title='iPad'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-8737410506873105077</id><published>2010-01-24T19:40:00.002+09:00</published><updated>2010-01-24T20:09:23.118+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Development Method'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><title type='text'>中間生成物とテスト</title><content type='html'>&lt;a href="http://www.amazon.co.jp/アジャイルソフトウェア開発-Agile-Software-Development-アリスター・コーバーン/dp/4894715791/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1263108312&amp;sr=8-1"&gt;アジャイルソフトウェア開発&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;読了した。&lt;br /&gt;&lt;br /&gt;僕の開発方法は、驚くことに、おおむね、本書で肯定されている。&lt;br /&gt;&lt;br /&gt;・コメント（ドキュメント）より、とにかく動くものを&lt;br /&gt;報告書書く暇があったら、ソースコードを書く。&lt;br /&gt;コメント書く暇があったら、ソースコードを書く。&lt;br /&gt;UMLで細かく設計する暇があった、ソースコードを書く。&lt;br /&gt;報告（中間生成物）ではなく、最終成果物（ソフトウェア）で評価しよう。&lt;br /&gt;&lt;br /&gt;・思い切ったリファクタリング&lt;br /&gt;このコード重複しているから、関数に纏めよう&lt;br /&gt;そもそも、設計ややこしいから、やり直そう&lt;br /&gt;評価と改善を繰り返す&lt;br /&gt;&lt;br /&gt;一方で、リファクタリングを進めながら、よく思うことがあるけど、実践できていないことがある。&lt;br /&gt;&lt;br /&gt;テストの自動化&lt;br /&gt;&lt;br /&gt;動かなくなったらどうしょうという恐怖を押さえながら、&lt;br /&gt;リファクタリングするんだけど、やっぱり怖いものは怖い。&lt;br /&gt;&lt;br /&gt;テストにかかるコストを削減できたなら、より思い切ったリファクタングを頻繁にできる。&lt;br /&gt;&lt;br /&gt;できることなら個室が欲しいとうのは、誰もが思うことなんだけど、&lt;br /&gt;本書では、コミュニケーションを最重視します。&lt;br /&gt;メンバーはできる限り、同じ場所に集める。反発したくなるけど、正しいことを実感している。&lt;br /&gt;&lt;br /&gt;本書を読むに当たって、気をつけるべき点は、解を求めないこと。&lt;br /&gt;解はプロジェクト毎にあるという立場で書いている。&lt;br /&gt;具体的なことはあんまり書いてなくて、回りくどい。何を書いているか解らない時も多いです。&lt;br /&gt;意図して、回りくどくしているんだけど、この点は、注意すべき。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-8737410506873105077?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/8737410506873105077/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=8737410506873105077' title='2 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/8737410506873105077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/8737410506873105077'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/01/blog-post_24.html' title='中間生成物とテスト'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-7735645219705116245</id><published>2010-01-17T16:27:00.002+09:00</published><updated>2010-01-17T16:35:23.843+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Health'/><category scheme='http://www.blogger.com/atom/ns#' term='Announcement'/><category scheme='http://www.blogger.com/atom/ns#' term='Food'/><category scheme='http://www.blogger.com/atom/ns#' term='human'/><title type='text'>体重&lt;70kg達成</title><content type='html'>体重が、60kg代になった。&lt;br /&gt;&lt;br /&gt;目標達成である。&lt;br /&gt;引き続き、減量を続けて65kgを目指す。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://hszaki.blogspot.com/2010/01/blog-post.html"&gt;減量方針&lt;/a&gt;は、このまま維持+筋力維持のためのトレーニングを行う。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-7735645219705116245?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/7735645219705116245/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=7735645219705116245' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/7735645219705116245'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/7735645219705116245'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/01/70kg.html' title='体重&lt;70kg達成'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-4536586810860997781</id><published>2010-01-16T15:08:00.003+09:00</published><updated>2010-01-16T15:42:05.667+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programing'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>久々のC/C++プログラミングと領域破壊</title><content type='html'>久々に、C/C++でプログラミングを行った。&lt;br /&gt;&lt;br /&gt;動的にメモリ確保をする必要はほとんど必要ない内容だったけど、文字列の扱いでハマった。&lt;br /&gt;文字列の「長さ」だけ文字をコピーすることによるバグ。&lt;br /&gt;&lt;br /&gt;string型で完結するならいいんだけど、そういうわけにもいかず、&lt;br /&gt;strncpy系の関数を使っていて、サイズをミスっていた。&lt;br /&gt;&lt;br /&gt;つまり、'¥0'がコピーされない。&lt;br /&gt;こうなると、確保している領域を超えてアクセスされて領域破壊が起こって、異常終了。&lt;br /&gt;&lt;br /&gt;後は、オブジェクトのリンクとか、ヘッダーのインクルードとかで、ハマった。&lt;br /&gt;つくづく、面倒くさい言語である。&lt;br /&gt;&lt;br /&gt;とはいえ、独特の手応えのある言語で嫌いではないです。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-4536586810860997781?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/4536586810860997781/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=4536586810860997781' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/4536586810860997781'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/4536586810860997781'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/01/cc.html' title='久々のC/C++プログラミングと領域破壊'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-41936548027001473</id><published>2010-01-10T16:21:00.005+09:00</published><updated>2010-01-10T16:43:22.874+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Development Method'/><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><title type='text'>ローテクノロジーとソフトウェア開発</title><content type='html'>&lt;a href="http://www.amazon.co.jp/%E3%82%A2%E3%82%B8%E3%83%A3%E3%82%A4%E3%83%AB%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E9%96%8B%E7%99%BA-Agile-Software-Development-%E3%82%A2%E3%83%AA%E3%82%B9%E3%82%BF%E3%83%BC%E3%83%BB%E3%82%B3%E3%83%BC%E3%83%90%E3%83%BC%E3%83%B3/dp/4894715791/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1263108312&amp;sr=8-1"&gt;アジャイルソフトウェア開発&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://hszaki.blogspot.com/2009/12/success-win.html"&gt;Success &amp; Win&lt;/a&gt;で引用した文の出典、なのですが、&lt;br /&gt;&lt;br /&gt;実感としては意外ではない。けど、ITシステム開発という観点からは意外なのですが、&lt;br /&gt;&lt;br /&gt;普通の掲示板で進捗の管理をしたり、ホワイトボードで議論したり、紙での情報伝達や共有をはじめ、ローテクノロジーに焦点が当てられている。&lt;br /&gt;&lt;br /&gt;一方で、一定期間ごとに、自動でソフトウェアがコンパイル＆テストされてエラー内容が自動的に担当者にメールで送られるなんてハイテクノロジーな例もとり上げられている。&lt;br /&gt;&lt;br /&gt;僕個人は、なんでもかんでもハイテクハイテクっていう傾向が強いのですが、ローテクノロジーの使いどころってのは、非常に重要な位置を占めているのではないかと再認識させられた。&lt;br /&gt;&lt;br /&gt;逆に、ハイテクノロジーの立場からは、如何にローテクノロジーの得意分野に進出するのかが鍵になると強く感じた。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-41936548027001473?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/41936548027001473/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=41936548027001473' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/41936548027001473'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/41936548027001473'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/01/blog-post_10.html' title='ローテクノロジーとソフトウェア開発'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-8054009304210837867</id><published>2010-01-09T08:12:00.002+09:00</published><updated>2010-01-09T08:15:49.435+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Food'/><title type='text'>カロリーメイト　ポテト味</title><content type='html'>カロリーメイトのポテト味&lt;br /&gt;&lt;br /&gt;いやな予感はしていました。&lt;br /&gt;そして、的中してしまいました。&lt;br /&gt;&lt;br /&gt;なんだか、ぱさぱさのコーンスープかなんか。&lt;br /&gt;&lt;br /&gt;メープル味は、気に入ったのですが残念。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-8054009304210837867?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/8054009304210837867/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=8054009304210837867' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/8054009304210837867'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/8054009304210837867'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/01/blog-post_09.html' title='カロリーメイト　ポテト味'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-1435574568422589638</id><published>2010-01-03T10:59:00.005+09:00</published><updated>2010-01-03T11:52:57.513+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Money'/><category scheme='http://www.blogger.com/atom/ns#' term='Announcement'/><category scheme='http://www.blogger.com/atom/ns#' term='Book'/><category scheme='http://www.blogger.com/atom/ns#' term='human'/><title type='text'>削減</title><content type='html'>今年の目標は削減&lt;br /&gt;&lt;br /&gt;買ったものの、読み切れていない、多数の本の削減&lt;br /&gt;体重の削減&lt;br /&gt;お金使いの削減&lt;br /&gt;&lt;br /&gt;「アジャイルソフトウェア開発」を優先的に読んで、次にプログラミング言語系は、「On Lisp」、「Real World Haskell」、&lt;br /&gt;システム関係は、「継続的インテグレーション入門」、「コンピュータアーキテクチャのエッセンス」、&lt;br /&gt;データベース関連は、「アート・オブ・SQL」。&lt;br /&gt;&lt;br /&gt;これだけは、読み終わってから、本を買うものとする。当分の間、本代を削減できる。&lt;br /&gt;&lt;br /&gt;外食×、飲み物は、水かお茶、70キロ代をうろうろしているのですが、なんとか60キロ代を目指したい。&lt;br /&gt;外食×なので食費も削減できる。&lt;br /&gt;&lt;br /&gt;すでに、コンピュータに関しての大規模な投資（Mac Pro）は終わっている。&lt;br /&gt;それだけでも去年消費したお金の大部分が削減できる予定。&lt;br /&gt;&lt;br /&gt;今年の目標は、Value Engineeringで言うところのコスト(C)の削減が中心なのですが、&lt;br /&gt;来年の目標は機能(F)向上を中心に目指したい。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-1435574568422589638?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/1435574568422589638/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=1435574568422589638' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/1435574568422589638'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/1435574568422589638'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2010/01/blog-post.html' title='削減'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-8171703130213857170</id><published>2009-12-27T10:12:00.003+09:00</published><updated>2009-12-27T10:20:48.390+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programing'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><title type='text'>Rubyのメソッドチェーン</title><content type='html'>Ruby1.9のメソッドチェーン&lt;br /&gt;&lt;br /&gt;使う時には、ちょっと注意が必要なようである。&lt;br /&gt;まず、irbでは使えない。&lt;br /&gt;次に、&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;a = []&lt;br /&gt;  .push 1&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;は動くのに、&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;a = []&lt;br /&gt;  .push 1&lt;br /&gt;  .push 2&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;は動かない。&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;a = [].push 1.push 2&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;のように、解釈されるらしい。&lt;br /&gt;&lt;br /&gt;つまるところ、意図どうりに解釈させるには、以下のようにしなければならない。&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;a = []&lt;br /&gt;  .push(1)&lt;br /&gt;  .push(2)&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-8171703130213857170?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/8171703130213857170/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=8171703130213857170' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/8171703130213857170'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/8171703130213857170'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2009/12/ruby.html' title='Rubyのメソッドチェーン'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-8009252110713656235</id><published>2009-12-19T19:09:00.005+09:00</published><updated>2009-12-19T19:51:02.793+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programing'/><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><title type='text'>スクリプトの裏</title><content type='html'>こんな作業、スクリプト書いたら一発。&lt;br /&gt;マクロ書いたら一発。&lt;br /&gt;&lt;br /&gt;と、スクリプトやらマクロを書いて、活用している人は、結構多いのではないでしょうか？&lt;br /&gt;&lt;br /&gt;もちろん、僕も活用しているのですが、&lt;br /&gt;こういった小技の裏には、改善すべき問題が隠れている。&lt;br /&gt;&lt;br /&gt;何かを改善するために作ったのですから当然と言えば当然なのですが、&lt;br /&gt;そもそも、元々の作業になんらかの欠陥があって、それを軽減するための対症療法になってしまっている場合、&lt;br /&gt;深刻視しなけらばならない。&lt;br /&gt;&lt;br /&gt;根本が解決されていないから、問題が表面化するのを遅らせているだけになっているケースがある。&lt;br /&gt;&lt;br /&gt;改善点と欠陥をどうやって見分けるかって言うと、&lt;br /&gt;欠陥のあるものって、千発がどうにかこうにか百発とか、一発ってわけにはいかないことが多い。&lt;br /&gt;&lt;br /&gt;さて、あなたのスクリプトの裏に隠れているのは、どちらでしょう？&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-8009252110713656235?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/8009252110713656235/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=8009252110713656235' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/8009252110713656235'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/8009252110713656235'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2009/12/blog-post.html' title='スクリプトの裏'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-3147679808258547095</id><published>2009-12-09T22:15:00.002+09:00</published><updated>2009-12-09T22:42:33.109+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Development Method'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><title type='text'>Success &amp; Win</title><content type='html'>&lt;blockquote&gt;&lt;br /&gt;Goldman(1997)&lt;br /&gt;アジャイルは動的で，コンテキスト固有で，積極的に変化を受け入れる，成長指向である。猛烈な競争の嵐を乗り切るのは，効率の改善でも，コストの削減でも，ビジネスのハッチを板で密閉することでもない。成功と勝利である。それは，出現する競争のアリーナにおける成功，多くの会社が恐れる「競争の嵐」の中心にある収益，マーケットシェア，顧客の獲得である。&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;僕は、この文を一瞬で気に入った。&lt;br /&gt;&lt;br /&gt;長らく、開発の方法論といったことには、実は無関心だった。&lt;br /&gt;しかし、そろそろ、考えるべき時期が来たと感じている。&lt;br /&gt;&lt;br /&gt;当然、アジャイルが正しいかもわからないし、そのまま導入できないことも多いだろうと思う。&lt;br /&gt;しかし、方法論を導入する上で、決して忘れてはならないのが、&lt;br /&gt;なぜ、そうするのか？&lt;br /&gt;&lt;br /&gt;なぜ？を突き詰めていったら、コストでも効率でもなく、&lt;br /&gt;&lt;br /&gt;勝つためなのである。&lt;br /&gt;&lt;br /&gt;正しく、本質を突いている。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-3147679808258547095?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/3147679808258547095/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=3147679808258547095' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/3147679808258547095'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/3147679808258547095'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2009/12/success-win.html' title='Success &amp; Win'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-626897859793897044</id><published>2009-12-05T11:44:00.004+09:00</published><updated>2009-12-05T12:09:38.297+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OS'/><category scheme='http://www.blogger.com/atom/ns#' term='Scheme'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='Mac OS X'/><title type='text'>GaucheがWindows対応</title><content type='html'>Gaucheがバージョン0.9になってMac OS X 10.6 Snow LeopardとWindows対応&lt;br /&gt;&lt;br /&gt;地味に、Windows対応が嬉しいかもしれない。&lt;br /&gt;仕事では、ほぼ100% Windowsを使っています。&lt;br /&gt;&lt;br /&gt;これまで、Lisp系言語に慣れていなこと、暇がない、&lt;br /&gt;さらには、Windows上で安定して使えるScheme処理系は限られていました。&lt;br /&gt;&lt;br /&gt;しかしこれからは、Gaucheが選択肢として加わりました。ということで、&lt;br /&gt;実用的な作業にSchemeを使える可能性がぐっと高まりました。&lt;br /&gt;&lt;br /&gt;そうなると、実践を通してSchemeを学ぶことができます。&lt;br /&gt;&lt;br /&gt;これからは、Schemeをお仕事用言語として使えるかもしれません。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-626897859793897044?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/626897859793897044/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=626897859793897044' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/626897859793897044'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/626897859793897044'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2009/12/gauchewindows.html' title='GaucheがWindows対応'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-905720592652937346</id><published>2009-11-28T19:09:00.002+09:00</published><updated>2009-11-28T19:25:35.113+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programing'/><category scheme='http://www.blogger.com/atom/ns#' term='Scheme'/><title type='text'>maplistのScheme実装2</title><content type='html'>&lt;a href="http://hszaki.blogspot.com/2009/10/maplistscheme.html&lt;br /&gt;"&gt;maplistのScheme実装&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;の続き。前回は、不必要に複雑になってしまっていた。&lt;br /&gt;&lt;br /&gt;まずは、単純化してリスト一つだけバージョン&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;(define (maplist fn x)&lt;br /&gt;         (if (null? x)&lt;br /&gt;             '()&lt;br /&gt;             (cons (fn (list-copy x)) (maplist fn (cdr x)))))&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;任意個バージョン&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;(define (maplist fn . liss)&lt;br /&gt;  (define (rec liss)&lt;br /&gt;    (if (member '() liss)&lt;br /&gt;        '()&lt;br /&gt;        (cons (apply fn (map list-copy liss)) (rec (map cdr liss)))))&lt;br /&gt;  (if (null? liss)&lt;br /&gt;      '()&lt;br /&gt;      (rec liss)))&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-905720592652937346?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/905720592652937346/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=905720592652937346' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/905720592652937346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/905720592652937346'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2009/11/maplistscheme2.html' title='maplistのScheme実装2'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-3739182117367892428</id><published>2009-11-21T18:58:00.003+09:00</published><updated>2009-11-21T19:35:04.450+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Computer'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><title type='text'>リモートデスクトップ</title><content type='html'>スペックが我慢ならないケースには、二通りある。&lt;br /&gt;&lt;br /&gt;・スピードが遅すぎる&lt;br /&gt;・画面が狭すぎる&lt;br /&gt;&lt;br /&gt;スピードが遅すぎて我慢できないケースは、最近は、めっきり減ったのですが、&lt;br /&gt;画面が狭すぎるというケースは頻発しています。&lt;br /&gt;&lt;br /&gt;特に、ノートパソコンの時に顕著だし、大画面ディスプレイを接続しようとしても、余っていなければどうにもなりません。&lt;br /&gt;&lt;br /&gt;しかし、ネットワークと大画面のパソコンが一台あれば、反応速度さえ気にしなければ、ある程度解決できます。&lt;br /&gt;&lt;br /&gt;リモートデスクトップ&lt;br /&gt;&lt;br /&gt;画面が小さいパソコンでも、リモートデスクトップを使って大画面のパソコンから利用すると、画面を広くできます。&lt;br /&gt;ということで、VMwareとともに、大活躍。&lt;br /&gt;&lt;br /&gt;最近は、15inch MacBook Proからリモートデスクトップを使うことを検討しています。&lt;br /&gt;Mac OS X用リモートデスクトップと、WindowsのリモートデスクトップをVMware上から使うという二種類を検討したのですが、&lt;br /&gt;&lt;br /&gt;反応速度は、ほぼ同じくらい。機能的には、Windowsのリモートデスクトップの方が上ということでVMware上から使うことにしました。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-3739182117367892428?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/3739182117367892428/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=3739182117367892428' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/3739182117367892428'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/3739182117367892428'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2009/11/blog-post.html' title='リモートデスクトップ'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-7284383360820139769</id><published>2009-11-15T22:30:00.002+09:00</published><updated>2009-11-15T22:52:10.384+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OS'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><title type='text'>64bit版Windows</title><content type='html'>64bit版Windowsについて、大きな勘違いをしていました。&lt;br /&gt;&lt;br /&gt;てっきり、64bit版では、32bitアプリケーションが動かないと思っていたのですが、動くらしい。&lt;br /&gt;ということで、確実に非互換なのは、32bitのドライバということになるようです。&lt;br /&gt;&lt;br /&gt;これだったら、64bit版のWindows XPを手に入れておいても良かったかもしれません。&lt;br /&gt;Windows 7の評判は良好のようだし、32bitと64bitが両方含まれるので、Windows 7を手に入れるというのもありかなと思えてきました。&lt;br /&gt;&lt;br /&gt;問題は、GUI。個人的にクラシックUIが一番しっくりくるのですが、RC版を試した限りは、クラシックにしてしまうと違和感があります。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-7284383360820139769?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/7284383360820139769/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=7284383360820139769' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/7284383360820139769'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/7284383360820139769'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2009/11/64bitwindows.html' title='64bit版Windows'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-7148798326363270018</id><published>2009-11-13T22:36:00.002+09:00</published><updated>2009-11-13T22:58:23.542+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programing'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>.NET シリアライズ</title><content type='html'>.NETのシリアライズは便利。&lt;br /&gt;&lt;br /&gt;基本的にアノテーションつけるだけで、すぐにシリアライズ可能になる。&lt;br /&gt;しかし、罠もある。&lt;br /&gt;&lt;br /&gt;A)シリアライズするオブジェクトのグラフが複雑だとメモリを消費する。&lt;br /&gt;B)ある一定数以上（確か13.2百万個）のオブジェクトはシリアライズできない。&lt;br /&gt;C)ジェネリクスを使うと、SoapFormatterは使えない。&lt;br /&gt;&lt;br /&gt;特にAは頻発しているようで、みんな苦しんでいる。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-7148798326363270018?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/7148798326363270018/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=7148798326363270018' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/7148798326363270018'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/7148798326363270018'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2009/11/net.html' title='.NET シリアライズ'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-4125015680159551186</id><published>2009-10-31T22:01:00.003+09:00</published><updated>2009-10-31T23:09:29.547+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><category scheme='http://www.blogger.com/atom/ns#' term='Virtual Machine'/><category scheme='http://www.blogger.com/atom/ns#' term='Mac OS X'/><title type='text'>Snow Leopard On VMware</title><content type='html'>Mac OS X Serverなら仮想マシン上で、合法的に動かすことができる。&lt;br /&gt;&lt;br /&gt;VMware Fusion 2.0.6は、Mac OS X Server 10.6に実験的にではあるが、対応している。&lt;br /&gt;ならば、Windows上のVMwareで動くかもしれないと期待して、&lt;br /&gt;検証用に、&lt;br /&gt;VMware Fusion上の、Windowsに、VMware Playerをインストールしようとして、&lt;br /&gt;仮想マシン上にインストールできないと怒られて失敗。&lt;br /&gt;&lt;br /&gt;ならばと、VMware Workstation 7の評価版をインストールして起動しようとしたら、&lt;br /&gt;ホストOS上のVMwareの設定を変えないと起動できないと怒られて失敗。&lt;br /&gt;&lt;br /&gt;仕方が無いの、Boot Campで、Windows XPをインストールして、&lt;br /&gt;VMware Workstationをインストールして、&lt;br /&gt;設定画面を見るとMac OS X Server 10.6が表示されている。これは、いけるかもとかなり期待して、&lt;br /&gt;Mac OS X Serverのイメージを起動してみると、&lt;br /&gt;残念ながら、&lt;br /&gt;&lt;br /&gt;Operating System Not Found&lt;br /&gt;&lt;br /&gt;vmxの内容いじくってみたけど、だめ。&lt;br /&gt;&lt;br /&gt;あやしげなツールをインストールすると、いけるらしいが、&lt;br /&gt;あやしげな場所からダウンロードしないといけないことと、&lt;br /&gt;&lt;br /&gt;そもそも、ここまでいくと、合法的ではなくなっている気がするので、断念。&lt;br /&gt;&lt;br /&gt;さて、せっかく買ってしまった、Mac OS X Server Snow Leopardはどうしよう？&lt;br /&gt;&lt;br /&gt;ちなみに、Fusion(2.0.6)上では、ほぼ正常に動きます。&lt;br /&gt;キーボードがUSになってしまうんだけど、この問題は、「画面を共有する...」経由でアクセスすれば、回避できる。&lt;br /&gt;ネットワークを介するとちょっと厳しいが、ホストOS上からなら、ほぼストレスなしで操作できる。&lt;br /&gt;&lt;br /&gt;補足：&lt;br /&gt;使用許諾書ちゃんと読んでみると、そもそも、Apple製コンピュータ上じゃないと、Serverといえどもだめとのこと。&lt;br /&gt;VMware Workstation With Mac OS Xとかあったら、迷わず買うのですが残念です。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-4125015680159551186?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/4125015680159551186/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=4125015680159551186' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/4125015680159551186'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/4125015680159551186'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2009/10/snow-leopard-on-vmware.html' title='Snow Leopard On VMware'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-5943987348556869947</id><published>2009-10-17T10:15:00.002+09:00</published><updated>2009-10-17T10:37:33.094+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programing'/><category scheme='http://www.blogger.com/atom/ns#' term='Scheme'/><category scheme='http://www.blogger.com/atom/ns#' term='Common Lisp'/><category scheme='http://www.blogger.com/atom/ns#' term='Lisp'/><title type='text'>defunとdefine</title><content type='html'>Schemeのdefineと、Common Lispのdefunには、文法の違い以上の違いがある。&lt;br /&gt;&lt;br /&gt;defineが関数の定義以外にも使えるというのは言うに及ばず、スコープが違う。&lt;br /&gt;&lt;br /&gt;Common Lisp:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;(let ((x 1))&lt;br /&gt;  (defun f (y) (+ x y)))&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;と、&lt;br /&gt;Scheme:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;(let ((x 1))&lt;br /&gt;  (define (f y) (+ x y)))&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;では、動作が決定的に違う。&lt;br /&gt;Common Lispの関数fは、外から見えるのに対して、Schemeの関数fは、外から見えない。&lt;br /&gt;&lt;br /&gt;SchemeでCommon Lispでやってることを無理やりやると、&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;(define *global* #f)&lt;br /&gt;(let ((x 1)) &lt;br /&gt;  (define (f y) (+ x y)) &lt;br /&gt;  (set! *global* f))&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;ちょっとマシな書き方すると、&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;(define global &lt;br /&gt;   (let ((x 1)) &lt;br /&gt;        (define (f y) (+ x y)) &lt;br /&gt;        f)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;普通に、書くと&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;(define f (let ((x 1)) (lambda (y) (+ x y)))&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-5943987348556869947?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/5943987348556869947/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=5943987348556869947' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/5943987348556869947'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/5943987348556869947'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2009/10/defundefine.html' title='defunとdefine'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-8721314175878793771</id><published>2009-10-16T23:58:00.003+09:00</published><updated>2009-10-17T00:52:45.651+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programing'/><category scheme='http://www.blogger.com/atom/ns#' term='Scheme'/><category scheme='http://www.blogger.com/atom/ns#' term='Common Lisp'/><category scheme='http://www.blogger.com/atom/ns#' term='Lisp'/><title type='text'>maplistのScheme実装</title><content type='html'>Common Lispのmaplistが、Schemeでもほしいけどない。&lt;br /&gt;&lt;br /&gt;ないなら、作ってしまえということで、&lt;br /&gt;&lt;br /&gt;まずは、リスト一つだけバージョン :&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;(define maplist&lt;br /&gt;  (lambda (fn lis)&lt;br /&gt;    (define (proc lis acc)&lt;br /&gt;      (if (null? lis)&lt;br /&gt;          (reverse acc)&lt;br /&gt;          (proc (cdr lis) (cons (fn (list-copy lis)) acc))))&lt;br /&gt;    (proc lis '())))&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;これを、拡張して、リスト任意個バージョン :&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;(define maplist&lt;br /&gt;  (lambda (func lis . args) &lt;br /&gt;    (define (proc nl? mp ap liss acc)&lt;br /&gt;      (define (rec liss acc)&lt;br /&gt;        (if (nl? liss)&lt;br /&gt;            (reverse acc)&lt;br /&gt;            (rec (mp cdr liss) (cons (ap func (mp list-copy liss)) acc))))&lt;br /&gt;      (rec liss acc))&lt;br /&gt;    (if (null? args)&lt;br /&gt;      (proc (lambda (lst) (null? lst))&lt;br /&gt;            (lambda (fn x) (fn x)) &lt;br /&gt;            (lambda (fn mp) (fn mp)) &lt;br /&gt;            lis '())&lt;br /&gt;      (proc (lambda (lst) (member '() lst))&lt;br /&gt;            (lambda (fn x) (map fn x)) &lt;br /&gt;            (lambda (fn mp) (apply fn mp)) &lt;br /&gt;            (cons lis args) '()))))&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;lambdaの部分は、cutを使うともっとすっきりする。&lt;br /&gt;&lt;br /&gt;ちなみに、&lt;br /&gt;(member '() xxx)&lt;br /&gt;の部分は、最初、&lt;br /&gt;(apply or yyy)&lt;br /&gt;としようとして、正常動作せずに、どうすれば良いのか迷った。&lt;br /&gt;orはマクロだから、関数として、applyに渡すことができない。&lt;br /&gt;&lt;br /&gt;次回は、reverse使わないバージョン。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-8721314175878793771?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/8721314175878793771/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=8721314175878793771' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/8721314175878793771'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/8721314175878793771'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2009/10/maplistscheme.html' title='maplistのScheme実装'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-397932733954400464</id><published>2009-10-12T13:33:00.003+09:00</published><updated>2009-10-12T13:48:21.061+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><category scheme='http://www.blogger.com/atom/ns#' term='Mac OS X'/><title type='text'>MacPorts＆Leopard</title><content type='html'>Snow Leopardの開発環境でビルドできなくても、Snow Leopardでバイナリは動く場合ってのは、結構多い。&lt;br /&gt;&lt;br /&gt;そこから、ヒントを得て、Snow Leopardで、Leopardで動作していたMacPortsを動かす方法を発見。&lt;br /&gt;&lt;br /&gt;まず、別パーティションに、Mac OS X 10.5 LeopardとDeveloper Toolsをインストール&lt;br /&gt;（この段階で、パーティション一つしか作ってなくても、別パーティションを後から追加できることを発見。すばらしい）&lt;br /&gt;MacPortsは、--prefixを指定（僕の場合/opt2/local）してソースからコンパイルしてLeopardの環境にインストール&lt;br /&gt;Snow Leopardを起動して、レオパルド上の、opt2へのシンボリックリンクを/に作る。&lt;br /&gt;&lt;br /&gt;つまり、&lt;br /&gt;sudo ln -s Leopard_path/opt2 /opt2&lt;br /&gt;&lt;br /&gt;後は、/opt2/local/binをPATHに追加&lt;br /&gt;&lt;br /&gt;Leopard上で、MacPortsを使って任意のソフトをビルド＆インストール&lt;br /&gt;&lt;br /&gt;これで、とりあえず、hugs98とswi-prologの起動を確認。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-397932733954400464?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/397932733954400464/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=397932733954400464' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/397932733954400464'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/397932733954400464'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2009/10/macportsleopard.html' title='MacPorts＆Leopard'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-3817010280350315049</id><published>2009-10-10T13:47:00.003+09:00</published><updated>2009-10-10T14:12:07.919+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programing'/><category scheme='http://www.blogger.com/atom/ns#' term='Common Lisp'/><category scheme='http://www.blogger.com/atom/ns#' term='Lisp'/><title type='text'>Common Lisp</title><content type='html'>僕が、よくやる本の読み方なんですが、&lt;br /&gt;最初から、通して読むのは、大概しんどいので、まず、面白そうなところを、つまみ食いします。&lt;br /&gt;そうして、つまみ食いしている内に、食欲（熟読する力）が段々わいてきたら、改めて最初から読んで行きます。&lt;br /&gt;&lt;br /&gt;On Lispも、このやり方で、読破できるだろうと思っていたのですが、やはり、Common Lispがわからない。&lt;br /&gt;&lt;br /&gt;ということで、Common Lispに入門することにした。&lt;br /&gt;&lt;br /&gt;インストールしたCommon Lispの処理系は、 &lt;a href="http://www.sbcl.org/"&gt;sbcl(Steel Bank Common Lisp)&lt;/a&gt;&lt;br /&gt;残念ながら、ソースコードからのコンパイルは、出来上がったバイナリが正常に起動しないので、諦めました。&lt;br /&gt;Mac OS X 10.5 Leopardを、どこかに、インストールし直す必要があるかもしれない。&lt;br /&gt;&lt;br /&gt;入門書は、同じポール・グレアム著の、「ANSI Common Lisp」。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-3817010280350315049?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/3817010280350315049/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=3817010280350315049' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/3817010280350315049'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/3817010280350315049'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2009/10/common-lisp.html' title='Common Lisp'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-5925073729929326123</id><published>2009-10-08T20:44:00.003+09:00</published><updated>2009-10-10T14:12:30.571+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programing'/><category scheme='http://www.blogger.com/atom/ns#' term='Common Lisp'/><category scheme='http://www.blogger.com/atom/ns#' term='Lisp'/><title type='text'>マクロ</title><content type='html'>On Lisp -- P.219&lt;br /&gt;&lt;br /&gt;省略形：&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;(defmacro mvbind (&amp;rest args)&lt;br /&gt;  '(multiple-value-bind ,@args))&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt; &lt;br /&gt;nameを導入：&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;(defmacro mvbind (&amp;rest args)&lt;br /&gt;  (let ((name 'multiple-value-bind))&lt;br /&gt;    '(,name ,@args)))&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;テンプレート化：&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;'(defmacro ,short (&amp;rest args)&lt;br /&gt;  (let ((name ',long))&lt;br /&gt;    '(,name ,@args)))&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;簡略化：&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;'(defmacro ,short (&amp;rest args)&lt;br /&gt;  '(,',long ,@args))&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;に、Lispの本質を垣間みた。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-5925073729929326123?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/5925073729929326123/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=5925073729929326123' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/5925073729929326123'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/5925073729929326123'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2009/10/blog-post_08.html' title='マクロ'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-7506841491320336358</id><published>2009-10-03T15:04:00.004+09:00</published><updated>2009-10-10T17:49:07.643+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programing'/><category scheme='http://www.blogger.com/atom/ns#' term='Scheme'/><category scheme='http://www.blogger.com/atom/ns#' term='Common Lisp'/><category scheme='http://www.blogger.com/atom/ns#' term='Lisp'/><title type='text'>リバース</title><content type='html'>&lt;a href="http://www.amazon.co.jp/Lisp-ポール-グレアム/dp/4274066371"&gt;On Lisp&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;最初は、あまりのCommon LispとSchemeの差&lt;br /&gt;(mapcarって何？setqって何？そもそも、defunとか文法からして違うし、などなど)に、拒否反応を起こしかけたが、我慢して読んでいくうちになれてきた。&lt;br /&gt;&lt;br /&gt;例とか、現状から言うと古いないようものもあるが、なかなか為になる。&lt;br /&gt;&lt;br /&gt;手続き型の考え方では、処理が上から下に流れて行くのに対して、関数型では処理が逆流するようなイメージだったのですが、&lt;br /&gt;手続き型のプログラムを関数型への直し方を見ると、まさに、ドンピシャリ。&lt;br /&gt;&lt;br /&gt;ものすごく、わざとらしくすると、&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;(let ((x 1) (y 2))&lt;br /&gt;  (+ x y))&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;は、&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;(+ 1 2)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;でいいじゃんということ。&lt;br /&gt;&lt;br /&gt;なるほどと思った。&lt;br /&gt;&lt;br /&gt;まだ、最初の方しか読んでいないけど、読んでおくべき古典の一つだと思う。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-7506841491320336358?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/7506841491320336358/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=7506841491320336358' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/7506841491320336358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/7506841491320336358'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2009/10/blog-post_03.html' title='リバース'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-8372056141725884758</id><published>2009-10-03T11:09:00.004+09:00</published><updated>2009-10-10T14:12:49.286+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programing'/><category scheme='http://www.blogger.com/atom/ns#' term='Scheme'/><category scheme='http://www.blogger.com/atom/ns#' term='Lisp'/><title type='text'>継続</title><content type='html'>(call/cc print) =&amp;gt; &lt;br /&gt;#&amp;lt;subr continuation&amp;gt;&lt;br /&gt;#&amp;lt;undef&amp;gt;&lt;br /&gt;&lt;br /&gt;(call/cc (lambda (break) (break))) =&amp;gt;&lt;br /&gt;#&amp;lt;undef&amp;gt;&lt;br /&gt;&lt;br /&gt;(call/cc (lambda (break) (break 1))) =&amp;gt;&lt;br /&gt;1&lt;br /&gt;&lt;br /&gt;(call/cc (lambda (break) (break 1 2))) =&amp;gt;&lt;br /&gt;1&lt;br /&gt;2&lt;br /&gt;&lt;br /&gt;多値が返ってくる。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/プログラミングGauche-Kahuaプロジェクト/dp/4873113482/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1254537467&amp;sr=8-1"&gt;プログラミングGauche&lt;/a&gt;&lt;br /&gt;の継続の章を、なんども読み返している。&lt;br /&gt;&lt;br /&gt;だいたい、掴めたんだけど、掴めきった気がしない。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-8372056141725884758?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/8372056141725884758/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=8372056141725884758' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/8372056141725884758'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/8372056141725884758'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2009/10/blog-post.html' title='継続'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-2212483633954817149</id><published>2009-09-30T13:12:00.002+09:00</published><updated>2009-09-30T13:35:42.162+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Game'/><category scheme='http://www.blogger.com/atom/ns#' term='Robot'/><title type='text'>ロボットゲーム</title><content type='html'>ロボットの話題がほとんどないのもなんなので、僕が持っているロボットゲームのリストを掲載することにする。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.square-enix.co.jp/fm/fma/index.html"&gt;フロントミッション オルタナティヴ&lt;/a&gt;&lt;br /&gt;異色のシミュレーションゲーム。装備とパラメータ調整して、侵攻方向を決めたら眺めてるだけのゲーム。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.square-enix.co.jp/fm/fm5/"&gt;フロントミッション５〜Scars of the War〜&lt;/a&gt;&lt;br /&gt;定番のフロントミッション。普通のターンごとにロボットを移動させる普通のシミュレーションゲーム。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.armoredcore.net/acff/"&gt;アーマード・コア　フョーミュラフロント&lt;/a&gt;&lt;br /&gt;装備とパラメータ設定した後は、本当に見ているだけの異色のロボットシミュレーション。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.artdink.co.jp/japanese/title/chez/"&gt;Garnage Heart EZ&lt;/a&gt;&lt;br /&gt;なんと、ロボットの思考ルーチンをプログラミングできる、異色中の異色のシミュレーションゲーム。戦略シミュレーションとして見るとしょぼいけど、ロボット同士の対戦は熱い。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.artdink.co.jp/japanese/title/zeus2/info.html"&gt;ZEUSⅡ Carnage Heart&lt;/a&gt;&lt;br /&gt;カルネージハートの続々編。日曜日くらいにやっと手に入れました。&lt;br /&gt;とりあえず、一言だけ。こんな、お母さん、絶対嫌だ・・。&lt;br /&gt;&lt;br /&gt;それにしても、最近のゲームってなんで、アクションとかシューティングとかRPGばっかりなんだろう。フロントミッションの続編も残念ながら、アクション系になってしまいまいした。&lt;br /&gt;最近のハード使って、ばりばりのロボットシミュレーションゲーム、どこか作ってくれないだろうか？&lt;br /&gt;カルネージハートと、フロントミッションオルタナティブを掛け合わせたようなイメージで。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-2212483633954817149?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/2212483633954817149/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=2212483633954817149' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/2212483633954817149'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/2212483633954817149'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2009/09/blog-post_30.html' title='ロボットゲーム'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-6893244300455846097</id><published>2009-09-24T20:37:00.003+09:00</published><updated>2009-09-24T20:44:54.153+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Compiler'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>Ruby, clangバイトコード表示メモ</title><content type='html'>バイトコードの表示の仕方メモ&lt;br /&gt;&lt;br /&gt;ruby --dump=i file.rb&lt;br /&gt;ruby --dump=i -e'...'&lt;br /&gt;&lt;br /&gt;Mac OS X 10.6 Snow Leopardでは、clangが使える。&lt;br /&gt;LLVMのバイトコードのアセンブリファイルを作成するには、&lt;br /&gt;&lt;br /&gt;clang -flto -S file.c&lt;br /&gt;clang -emit-llvm&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-6893244300455846097?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/6893244300455846097/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=6893244300455846097' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/6893244300455846097'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/6893244300455846097'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2009/09/ruby-clang.html' title='Ruby, clangバイトコード表示メモ'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-3343028098069413857</id><published>2009-09-21T23:00:00.008+09:00</published><updated>2009-09-22T11:38:33.833+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Programing'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>RubyとPython比較 再び</title><content type='html'>&lt;a href="http://blog.mwsoft.jp/article/30688416.html"&gt;JavaとRuby、Pythonの速度を比較してみる -- はぐれプログラマ清純派&lt;/a&gt;&lt;br /&gt;にちょっとまった。&lt;br /&gt;&lt;br /&gt;Javaが、こちらで実行した結果、bubblesort_linearserchが異常に遅いので置いておくとして、&lt;br /&gt;いくらなんでも、Rubyが遅すぎる。&lt;br /&gt;&lt;br /&gt;Mac OS X 10.6.1 (2.93 GHz Intel Xeon) 上でMacPortsでビルドしたRuby1.9.1と、Python3.1 を比較してみた結果（三回計測して平均（s））：&lt;br /&gt;・Ruby&lt;br /&gt;simple_loop: 7.59&lt;br /&gt;fivo1: 1.91&lt;br /&gt;fivo2: 1.71&lt;br /&gt;bubblesort_linearsearch(リスト作成、バブルソート、リニアサーチ): 0.0003, 0.165, 0.068&lt;br /&gt;output_file(生成、書込み): 1.43, 2.49&lt;br /&gt;&lt;br /&gt;・Python&lt;br /&gt;simple_loop: 3.97&lt;br /&gt;fivo1: 0.963&lt;br /&gt;fivo2: 5.34&lt;br /&gt;bubblesort_linearsearch(リスト作成、バブルソート、リニアサーチ): 0.002, 0.245, 0.0817 &lt;br /&gt;output_file(生成、書込み): 0.266, 3.00&lt;br /&gt;&lt;br /&gt;となり、ほぼ互角。fivo2, bubblesort_linearsearch, output_file(書込み)に関してはRubyの方が速い。&lt;br /&gt;&lt;br /&gt;さらに、simple_loopを、Javaに合わせて、&lt;br /&gt;Ruby:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;c = 0&lt;br /&gt;while c &lt; cnt&lt;br /&gt;  c += 1&lt;br /&gt;end&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Python:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;c = 0&lt;br /&gt;while c &lt; cnt:&lt;br /&gt;  c += 1&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;とすると、&lt;br /&gt;Ruby: 2.90(s)&lt;br /&gt;Python: 11.8(s)&lt;br /&gt;となる。&lt;br /&gt;最初のPythonのループと比べても、速い。&lt;br /&gt;mswin32版Rubyが遅すぎると考えた方が良さそう。&lt;br /&gt;&lt;br /&gt;9/22:&lt;br /&gt;output_file -&gt; output_file(書込み)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-3343028098069413857?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/3343028098069413857/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=3343028098069413857' title='1 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/3343028098069413857'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/3343028098069413857'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2009/09/rubypython.html' title='RubyとPython比較 再び'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-8841215190028532500</id><published>2009-09-20T18:08:00.005+09:00</published><updated>2009-10-10T14:13:22.925+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programing'/><category scheme='http://www.blogger.com/atom/ns#' term='Scheme'/><category scheme='http://www.blogger.com/atom/ns#' term='Lisp'/><category scheme='http://www.blogger.com/atom/ns#' term='Haskell'/><title type='text'>SchemeとCommon Lisp、そしてHaskell</title><content type='html'>Schemeは、関数型言語的な要素は確かにあるけど、関数型言語ではない。&lt;br /&gt;&lt;br /&gt;ファーストクラスオブジェクトに対するスタンスから考えるに、&lt;br /&gt;SchemeとCommon Lispは、同じLisp系ではあっても、もはや、別物という印象を受ける。&lt;br /&gt;&lt;br /&gt;以前、HaskellとSchemeを比較したけど、この二つの言語を比較するのは、特徴が違いすぎて不適切。&lt;br /&gt;&lt;br /&gt;SchemeはScheme&lt;br /&gt;&lt;br /&gt;Schemeに対する何かを、やっと、掴みつつあるような感じです。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-8841215190028532500?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/8841215190028532500/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=8841215190028532500' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/8841215190028532500'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/8841215190028532500'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2009/09/schemecommon-lisphaskell.html' title='SchemeとCommon Lisp、そしてHaskell'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-7268590171325151896</id><published>2009-09-20T10:37:00.002+09:00</published><updated>2009-09-20T11:39:27.600+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programing'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><title type='text'>Rubyオブジェクト2</title><content type='html'>privateとか、attr_accessorとか、実はメソッド&lt;br /&gt;&lt;br /&gt;つまり、&lt;br /&gt;&lt;br /&gt;class A&lt;br /&gt;  method1&lt;br /&gt;  method2&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;みたいにして、class Aを定義する時に、メソッドを実行することができる。&lt;br /&gt;では、method1, method2は、どうやって定義するかというと、&lt;br /&gt;&lt;br /&gt;2. Moduleのインスタンスメソッドとして定義する（ClassのスーパクラスはModule）&lt;br /&gt;1. Objectのインスタンスメソッドとして定義する（ModuleのスーパクラスはObject）&lt;br /&gt;などなど、&lt;br /&gt;&lt;br /&gt;一番簡単なのは、&lt;br /&gt;トップレベルで、メソッドを定義すれば良い。&lt;br /&gt;つまり、べた書きで、&lt;br /&gt;&lt;br /&gt;def func&lt;br /&gt;...&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;とメソッドを定義すると、Objectのインスタンスメソッドとなる。&lt;br /&gt;これが嫌な場合、トップレベルで、&lt;br /&gt;&lt;br /&gt;def self.func&lt;br /&gt;...&lt;br /&gt;end&lt;br /&gt;などと、特異メソッドにすれば、例えば、&lt;br /&gt;&lt;br /&gt;class A&lt;br /&gt;# このなかからfuncは、見えない&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;というように、できる。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-7268590171325151896?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/7268590171325151896/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=7268590171325151896' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/7268590171325151896'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/7268590171325151896'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2009/09/ruby2.html' title='Rubyオブジェクト2'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-5520252918178358081</id><published>2009-09-19T21:52:00.002+09:00</published><updated>2009-09-19T22:03:10.840+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tennis'/><title type='text'>オムニコート</title><content type='html'>砂入り人工芝コートの別名&lt;br /&gt;&lt;br /&gt;知らなかったのですが、オムニコートって世界的には、稀とのこと。&lt;br /&gt;&lt;br /&gt;しかも、オムニコートでは、テニスの上達に限界があるらしい。&lt;br /&gt;クレーコートのように、イレギュラーがあるわけでもなく、ハードコートのように、球足が速いわけでもない。&lt;br /&gt;&lt;br /&gt;僕の中で、オムニコートは、高級なコートというイメージがあったのですが、悪い面も多々あるようです。&lt;br /&gt;&lt;br /&gt;確かに、オムニコートでばっかり、テニスやった後に、クレーコートで最初にテニスした時は、イレギュラーバウンドに苦しんだ。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-5520252918178358081?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/5520252918178358081/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=5520252918178358081' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/5520252918178358081'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/5520252918178358081'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2009/09/blog-post_19.html' title='オムニコート'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6838834297478738089.post-341857564926129264</id><published>2009-09-19T21:00:00.004+09:00</published><updated>2009-09-19T21:15:11.975+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programing'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Reflection'/><category scheme='http://www.blogger.com/atom/ns#' term='Meta'/><title type='text'>Ruby: method_missing</title><content type='html'>「リクレクションとメタプログラミング」&lt;br /&gt;読み終わりました。&lt;br /&gt;&lt;br /&gt;method_missingと、const_missingが、感動もの。&lt;br /&gt;&lt;br /&gt;それぞれ、呼び出したメソッドが定義されていない時、定数が定義されていない時に呼ばれる。&lt;br /&gt;&lt;br /&gt;これらを使って、定数を使用するタイミングで動的に生成したり、委譲実現したりする。&lt;br /&gt;&lt;br /&gt;これで、Rakeのソースコード読むことができる。ちょっとしたDSLを作ることもできそう。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6838834297478738089-341857564926129264?l=hszaki.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hszaki.blogspot.com/feeds/341857564926129264/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6838834297478738089&amp;postID=341857564926129264' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/341857564926129264'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6838834297478738089/posts/default/341857564926129264'/><link rel='alternate' type='text/html' href='http://hszaki.blogspot.com/2009/09/ruby-methodmissing.html' title='Ruby: method_missing'/><author><name>hszaki</name><uri>http://www.blogger.com/profile/09254484634734206256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
