Jamon Tutorial - 9. Template Inheritance: Composing Template Output

2008年06月30日(月) 08:48 この記事をクリップ!

 

「Jamon template inheritance allows a template to declare that it can include the output of a child template that extends it.」 !いまいちっぽい Javaの継承機能を持つテンプレートエンジン。 テンプレートエンジン自体は意外と歴史が古く、商用サイトからのスピンアウトプロジェクトっぽい。 MPL

Visit SITE: http://www.jamon.org/tutorial/TutorialSample9.html

 Cocoa on the web: 280 North, Objective-J, and Cappuccino

2008年06月30日(月) 03:19 この記事をクリップ!

 

RIAがいまいち受け入れられない「クライアントのインストール」という障害がないんだよねぇ。 でもなんでObjective-Cなんだ。。。

Visit SITE: http://arstechnica.com/journals/apple.ars/2008/06/26/cocoa-on-the-web-280-north-objective-j-and-cappuccino

 MacではじめるLinux 〜 はじめてのVMware Fusion (導入編) - Unix的なアレ

2008年06月30日(月) 02:31 この記事をクリップ!

 

続く模様。期待してみる

Visit SITE: http://d.hatena.ne.jp/wadap/20080629/1214703866

 第三回Python温泉

2008年06月29日(日) 09:38 この記事をクリップ!

 

まとまった成果は無いけど、一応メモ


自分のリポジトリをmercurialに移行する。

分散リポジトリはbranchを切るのが容易だから、ぜひsvnから移行するといい。正確にはsvnよりmercurialの方がbranchを切るのが容易。svnはbranch切ったrevisionとか覚えておかなきゃいけない。
自分でbranch切ることはあんまりないけど、svnからhttpに切り替えたかったからちょうど良いので。webインターフェースのcssをpateoさんが書いているし。


 Creating a design - CSSEZ- default - base design created by cssez

2008年06月28日(土) 07:09 この記事をクリップ!

 

Browserでデザインを変更できるツール? ローカル版はもっとものすごいことになっていた。

Visit SITE: http://www.cssez.com/design.php#

 プラグイン開発入門: 第 1 回 開発の基本

2008年06月27日(金) 15:21 この記事をクリップ!

 

今からEclipse Pluginsの開発とかしたい場合には、@ITの記事とかよりこっちを見るべき。というか、とにかくこっちを見るべき。

Visit SITE: http://www.ibm.com/developerworks/jp/opensource/library/os-eclipse-plugindev1/

 Eclipseプラグイン開発: 「Eclipseプラグイン開発」記事一覧

2008年06月27日(金) 13:26 この記事をクリップ!

 

よういちろうさんの昔の記事

Visit SITE: http://yoichiro.cocolog-nifty.com/eclipse/2004/05/eclipse.html

 ガベージコレクションの実装法と評価

2008年06月27日(金) 06:01 この記事をクリップ!

 

Visit SITE: http://www.net.c.dendai.ac.jp/~takumi/

 エスカレータをクリエイティブに使って回転し続ける女性の映像 | IDEA*IDEA

2008年06月27日(金) 05:56 この記事をクリップ!

 

ばかすぐる

Visit SITE: http://www.ideaxidea.com/archives/2008/06/post_562.html

 growlでバッテリ残量を通知 - /halt/Snapshot

2008年06月26日(木) 05:55 この記事をクリップ!

 

Linuxでgrowl互換のアプリ

Visit SITE: http://project-p.jp/halt/anubis/blog_show/1005

 【コラム】イマドキのIDE事情 (25) JBoss ToolsでSeam開発!(1) - 便利なオールインワンインストーラが登場 | エンタープライズ | マイコミジャーナル

2008年06月26日(木) 03:52 この記事をクリップ!

 

Visit SITE: http://journal.mycom.co.jp/column/ide/025/

 日本 PHP ユーザ会 (Japan PHP Users Group) :: メイン :: PHPカンファレンス2008 - ライトニングトーク募集

2008年06月25日(水) 09:45 この記事をクリップ!

 

帰ったら申し込む

Visit SITE: http://www.php.gr.jp/seminar/20080721/lt_offer.php

 Carsonified » Blog Archive » Why Objective-J, Cappuccino and SproutCore are completely changing the web app industry

2008年06月25日(水) 05:45 この記事をクリップ!

 

「Cappuccino is a port of Cocoa (the set of Mac OS X Objective-C application frameworks) to the web. It was created by the 280North team.」 激しく期待。まだオープンになってないのか?

Visit SITE: http://www.carsonified.com/web-apps/why-objective-j-cappuccino-and-sproutcore-are-completely-changing-the-web-app-industry

 シナモン ザ ムービーのDVD

2008年06月25日(水) 00:55 この記事をクリップ!

 

さるご縁で特典映像に我が娘が出ております。
いまやサンリオをしょっているシナモンの映画DVDです。

親が果たせなかった名前付きの出演を4歳にして果たしましたorz

俺だって軍服着てBSスペシャルドラマに映ったさ><

 開発者とデザイナの協働

2008年06月24日(火) 23:34 この記事をクリップ!

 

「開発者は最初の段階からデザイナーと共同で作業する必要がある」

グーグル、「App Engine」でデザイナーと開発者の連携狙う


デザイナとプログラマの協調作業については、Djangoのコア開発者(含むデザイナ)たちが提唱してきたことです。Djangoが標準ライブラリとして含まれるApp Engineが「デザイナーと開発者の連携」をうたうのもおかしいことではありません。


 PHP Framework Fight!

2008年06月24日(火) 14:57 この記事をクリップ!

 

「PHP Framework Fight! は、数多く存在するPHPのフレームワークに、 同じアプリケーションを実装させ、その性能や実装効率を比較しようという企画」負けずにDjango版作る

Visit SITE: http://labs.strk.jp/code-fight/

 [OSS][ERP][Nexedi] オープンソースERPのNexediグループが日本法人「株式会社Nexedi」を設立 / Nexedi KK est fondé au Japon. - ふぇみにん日記 (2008-06-24)

2008年06月24日(火) 13:22 この記事をクリップ!

 

Pythonの仕事がありますよー。かずひこさんと同僚ってのもポイント高いんだろうな。語学も堪能じゃないし、経営学もほとんど授業出てないし、条件満たさないなぁ。

Visit SITE: http://kazuhiko.tdiary.net/20080624.html#p01

 ギークと197xと学生によるIT討論会

2008年06月24日(火) 11:11 この記事をクリップ!

 

ひがさんのエントリで、非常に期待をしていたら、さらにやばい人たちのセッションもある模様。

アルファギークと学生の討論会がギークと学生の討論会、
さらに、自重しない197xリアル現場な人たちと学生の交流会[197Xs]アルファギークと学生の討論会 featuring 197Xsが続きます。
shot6さんはギークなんじゃないかとも思ったりしますが、団塊ジュニアな197xの気持ちが強いんでしょうか。197xは自重していると埋もれてしまう世代なんですよ。ひと大杉。


200人のキャパじゃきっとたりないから、是非ともSeasarカンファレンスの400人はいるという会場でやってほしい。見に行く。
しかし、9/6って結婚記念日だな。また、母子家庭とか言われるなぁ。。。

 MacThemes / [Growl] iPhonesque — ala the dialog box on iPhone

2008年06月24日(火) 02:03 この記事をクリップ!

 

growl用テーマ

Visit SITE: http://macthemes2.net/forum/viewtopic.php?id=16783761

 第4回 Python 温泉

2008年06月24日(火) 00:00 この記事をクリップ!

 

[2008年10月24日(金)のイベント]

今回は何をしようか…

 λ Tony’s blog λ » Blog Archive » Tests as Documentation

2008年06月23日(月) 01:28 この記事をクリップ!

 

ScalaでDocTest?

Visit SITE: http://blog.tmorris.net/tests-as-documentation/

 SourceForge.net: JCR Browser

2008年06月22日(日) 07:43 この記事をクリップ!

 

Java content repository in Eclipse

Visit SITE: http://sourceforge.net/projects/jcrbrowser/

 Python: Writing a Compiler and Interpreter in 160 lines of code

2008年06月20日(金) 14:19 この記事をクリップ!

 

Python: Writing a Compiler and Interpreter in 160 lines of code

Visit SITE: http://www.jroller.com/languages/entry/python_writing_a_compiler_and

 日本語のDjango本が出ます

2008年06月17日(火) 12:27 この記事をクリップ!

 

本家のペーパーバックとは関係ない、日本語書下ろしです。
増田さん中居さん松原さんと私の共著です。

 これはすごい、PDFの編集ができるOpenOffice.org 3.x用エクステンション - ブログ: 岡崎 - Okazaki's blog

2008年06月12日(木) 09:20 この記事をクリップ!

 

PDFをインポートして編集できるエクステンション

Visit SITE: http://blogs.sun.com/okazaki/entry/これはすごい_pdfの編集ができるopenoffice_org_3_x用エクステンション

 解答が発表されているみたいだけど、いけしゃあしゃあと課題 7 と 8 をやってみる

2008年06月12日(木) 09:17 この記事をクリップ!

 

コンテキストを関数として扱うという話

Visit SITE: http://return0.dyndns.org/d/2007/01/30

 圏論やモナドが、どうして文書処理やXMLと関係するのですか? - 檜山正幸のキマイラ飼育記

2008年06月12日(木) 09:16 この記事をクリップ!

 

Visit SITE: http://d.hatena.ne.jp/m-hiyama/20070125/1169702291

 Scala Language | ActiveState Community Site

2008年06月12日(木) 08:32 この記事をクリップ!

 

Syntax highlighting and templates for the Scala programming language.

Visit SITE: http://community.activestate.com/komodo-extension/scala-language

 InfoQ: Distributed Version Control Systems: A Not-So-Quick Guide Through

2008年06月12日(木) 07:22 この記事をクリップ!

 

gitとmercurialとbzrの比較。 フリーホスティングへのリンクもある。

Visit SITE: http://www.infoq.com/articles/dvcs-guide

 Visual jQuery 1.2.6

2008年06月12日(木) 03:13 この記事をクリップ!

 

JQueryのAPIを見やすく(たどりやすく)したもの

Visit SITE: http://remysharp.com/visual-jquery/

  Mac OSX Expose Clone for Windows Vista :: the How-To Geek

2008年06月09日(月) 07:13 この記事をクリップ!

 

Expose is an application on Mac OSX that tiles all the open windows

Visit SITE: http://www.howtogeek.com/howto/windows-vista/mac-osx-expose-clone-for-windows-vista/

 Fat Cat Software - iPhoto Library Manager

2008年06月08日(日) 13:13 この記事をクリップ!

 

「multiple iPhoto libraries」 ライブラリを複数扱えるようにする。

Visit SITE: http://www.fatcatsoftware.com/iplm/

 Scalaのtraitを試す

2008年06月07日(土) 22:57 この記事をクリップ!

 

さて、Python温泉ではScalaで動作するLIFTを見てみようと思っていますが、その前にScalaについてもう少し。


このエントリは、OSX(10.5.3)上のScala version 2.7.1.final (Java HotSpot(TM) Client VM, Java 1.5.0_13)を前提としています。core2duoのマシンが欲しいなぁ…


Scala勉強会で気になった機能にtraitという機能があります。
traitはclassに対して機能を追加するような使い方をするもので、定義自体はclassに似ています。


trait BehaviorA{
    def hello(name: String) : String = "BehaviorA::" + name
}


Javaは多重継承を禁じていますので、共通機能を複数持ったクラスを作ろうと思うとclassの継承とinterfaceの実装を組み合わせなければなりません。
interface自体は実装を持たないため、同じ名前のメソッドを実装していることを保証するに過ぎないもので、しかも何度も同じような実装を記述しなければなりませんでした。こんなことをしようとするとJavaは助長なコードを書かざるを得なかったのです。


traitを使えば、機能の追加はこんな感じに書けます。AnyRefという参照型のボスを継承していますが、ここに本来継承したいクラスがくると考えてください。バラバラの機能 BehaviorA と BehaviorB を trait として定義しています。

trait BehaviorA{
    def hello(name: String) : String = "BehaviorA::hello(" + name + ")"
}

trait BehaviorB {
    def gooby(name: String) : String = "BehaviorB::gooby(" + name + ")"
}

class MainClass extends AnyRef with BehaviorA with BehaviorB {
    def test(): String = {
        return hello(getClass().getName()) + " and " + gooby(getClass().getName())
    }
}

object Test {
    def main(args:Array[String]) : Unit = {
        val mc = new MainClass()
        println(mc.test())
    }
}


このscalaコードをコンパイルし、scala Testと実行すると、以下のように出力します。

BehaviorA::hello(MainClass) and BehaviorB::gooby(MainClass)


実装を持った BehaviorA と BehaviorB の機能を使えるMyClassが出来上がりました。
でも、ちょっと待ってください。Scalaって実はJavaのバイトコードにコンパイルされるんですよ。Javaって多重継承できませんよね?


できあがったclassファイルをjadでデコンパイルしてみました。
デコンパイルされたコードを見て、まず、へぇー、と。なんというかいいですねw


ちなみに、traitは状態も持てます。また「同名のメソッド等を知らないうちに上書きしてしまうのでは?」という恐れに対しては、メソッド等の上書き時にはきちんとoverride宣言をしないとコンパイルエラーとなるといった細やかな気の使い方で、安全にtraitを使用できるようになっています。


以下、デコンパイルしたコード

BehaviorA.jad

import scala.ScalaObject;

public interface BehaviorA
    extends ScalaObject
{

    public abstract String hello(String s);
}

BehaviorA$class.jad

import scala.StringBuilder;

public abstract class BehaviorA$class
{

            public static void $init$(BehaviorA behaviora)
            {
            }

            public static String hello(BehaviorA $this, String name)
            {
/*   2*/        return (new StringBuilder()).append("BehaviorA::hello(").append(name).append(")").toString();
            }
}

BehaviorB.jad

import scala.ScalaObject;

public interface BehaviorB
    extends ScalaObject
{

    public abstract String gooby(String s);
}

BehaviorB$class.jad

import scala.StringBuilder;

public abstract class BehaviorB$class
{

            public static void $init$(BehaviorB behaviorb)
            {
            }

            public static String gooby(BehaviorB $this, String name)
            {
/*   6*/        return (new StringBuilder()).append("BehaviorB::gooby(").append(name).append(")").toString();
            }
}

MainClass.jad

import scala.ScalaObject;
import scala.StringBuilder;

public class MainClass
    implements BehaviorA, BehaviorB, ScalaObject
{

            public MainClass()
            {
/*   9*/        BehaviorA.class.$init$(this);
/*   9*/        BehaviorB.class.$init$(this);
            }

            public String test()
            {
/*  11*/        return (new StringBuilder()).append(hello(getClass().getName())).append(" and ").append(gooby(getClass().getName())).toString();
            }

            public int $tag()
            {
/*   9*/        return scala.ScalaObject.class.$tag(this);
            }

            public String hello(String x$1)
            {
/*   9*/        return BehaviorA.class.hello(this, x$1);
            }

            public String gooby(String x$1)
            {
/*   9*/        return BehaviorB.class.gooby(this, x$1);
            }
}

Test$.jad

import scala.Predef$;
import scala.ScalaObject;

public final class Test$
    implements ScalaObject
{

            public Test$()
            {
            }

            public void main(String args[])
            {
/*  17*/        MainClass mc = new MainClass();
/*  18*/        Predef$.MODULE$.println(mc.test());
            }

            public int $tag()
            {
/*  15*/        return scala.ScalaObject.class.$tag(this);
            }

            public static final Test$ MODULE$ = this;

            static 
            {
                new Test$();
            }
}

Test.jad
public final class Test
{

    public static final int $tag()
    {
        return Test$.MODULE$.$tag();
    }

    public static final void main(String args[])
    {
        Test$.MODULE$.main(args);
    }
}

 ハイブリッド言語Scalaを使う

2008年06月07日(土) 14:23 この記事をクリップ!

 

「BPStudy #10 : ハイブリッド言語Scalaを使う」 為になる。が、やっぱり説明聞いた方がためになる。

Visit SITE: http://www.slideshare.net/bpstudy/scala-453237/

 Scala勉強会に行ってきました

2008年06月07日(土) 03:19 この記事をクリップ!

 

株式会社ビープラウドさんが主催の Scala 勉強会に行ってきました。


実のところあまりJavaの技術は追っていなかったのでScalaに興味を持ったのはliftのせいだったりします。興味を持った後も分厚い仕様等のドキュメントをプリントアウトしてちらっと見ただけでした。


勉強会自体は講師(MC?)の小泉守義さんが様々な言語に明るいこともあって、非常にためになりました。内容についてはスライドが公開されるようですし、きっとどなたかがきちんとエントリをおこすでしょう。


ちょっといくつか Scala の動作を試してみたいと思ったりもしましたが、電車に乗っている間に何をしたかったのか忘れてしまったのでよくPythonでやることを Scala でもやってみることでお茶を濁します。



カレントディレクトリにあるファイルのファイル名をゴニョゴニョするだけのスクリプト。基本的に、インタラクティブシェルからやってます。


Python

>>> import os
>>> for x in os.listdir(os.getcwd()): os.rename(x, '%s.jpg' % x)


Scala

scala> import java.io.{File}
scala> for(f <- new File(".").listFiles) {
     |   f.renameTo(new File(f.getName + ".jpg"))
     | }


まぁ、あんまりかわんないw。拡張子を削りたい場合とかはスライスがあるのでPythonの方がいいかな。

 Hello, OSGi, Part 1: Bundles for beginners - Java World

2008年06月05日(木) 08:21 この記事をクリップ!

 

Creating, executing, and managing bundles in an OSGi container

Visit SITE: http://www.javaworld.com/javaworld/jw-03-2008/jw-03-osgi1.html

 アップル ヒューマンインタフェースガイドライン

2008年06月05日(木) 04:43 この記事をクリップ!

 

この書類は、第一にMac OS Xのためのインタフェース資料です。

Visit SITE: http://potting.syuriken.jp/potting_conv/XHIG_J/XHIGIntro/chapter_1.html

 Versions - Mac Subversion Client

2008年06月05日(木) 02:56 この記事をクリップ!

 

Versions provides a pleasant way to work with Subversion on your Mac.

Visit SITE: http://versionsapp.com/

 Vista/XP Virtual Desktop Manager - Home

2008年06月03日(火) 09:11 この記事をクリップ!

 

A virtual desktop manager made for Windows Vista using the new thumbnail APIs to create a live preview of all of your desktops. It also supports Windows XP. Organize all of your open windows with a full screen interactive virtual desktop preview.

Visit SITE: http://www.codeplex.com/vdm

 ロープ: 理論と実践

2008年06月03日(火) 01:58 この記事をクリップ!

 

Java 言語のデフォルトの String クラスと StringBuilder クラスは、大量のストリング・データを処理するシステムとなると十分に対応しきれません。この場合、これらのデフォルト・クラスより優れた手段となるのがロープ (rope) というデータ構造です。この記事では Java プラットフォームのロープ実装、Ropes for Java について紹介し、パフォーマンス上の問題を探るとともに、このライブラリーの効果的な使い方をアドバイスします。

Visit SITE: http://www.ibm.com/developerworks/jp/java/library/j-ropes/

 言語のGC機能と参照カウント (前編) - font-family: monospace

2008年06月03日(火) 01:43 この記事をクリップ!

 

「原始的な参照カウントベースのガーベジコレクションは、循環参照が発生すると、その参照に含まれるオブジェクトを回収できないという厄介な問題を抱えている」 あとで試す

Visit SITE: http://d.hatena.ne.jp/moriyoshi/20080528/1211955227

 Cuzillion

2008年06月03日(火) 01:29 この記事をクリップ!

 

「Webページ構造によるパフォーマンス・テストツール」 後で試す

Visit SITE: http://stevesouders.com/cuzillion/

 twigadge - Google Code

2008年06月02日(月) 05:59 この記事をクリップ!

 

Vistaガジェット用twitterクライアント

Visit SITE: http://code.google.com/p/twigadge/

 
ponybadge

Powered by

Feedbacks

Tweets

Tags

Calendar