rhacoとかhttp://d.hatena.ne.jp/rhaco/rhacoとか2007-08-26T20:33:13+09:00ViBhttp://d.hatena.ne.jp/rhaco/20070826/1188127993

rssの本文中にformをくっつけて、そこからコメントを投稿!

という話をid:Voluntasの兄貴がしていたので作ってみた。

が! livedoor ReaderとかGoogle Readerとかformなんて消しちまいますぜ!

いやー、残念。 面白いアイディアだとは思ったんだけどねぇ。

http://rhaco.sakura.ne.jp/vib/

]]>
Sun, 26 Aug 2007 20:33:13 +0900
Django勉強会 Disk4http://d.hatena.ne.jp/rhaco/20070826/1188127994

いってきた。

11時スタート。

懇親会終了23時。

12時間てw

楽しかった。







デスマは怖かぁ

]]>
Sun, 26 Aug 2007 20:33:14 +0900
デザイナ募集とかいってみたけどhttp://d.hatena.ne.jp/rhaco/20070810/1186708660

よくよく考えたら、募集つったって常駐してもらわなきゃ困るわけじゃない。

良く知らない世界だから、デザイナってまとめて言っちゃったのも実際になんちゃらデザイナの人には「で、なにを?」だと思った。


これは人に「仕事何してるの?」って聞かれた時に「システムエンジニア」って答える事が多いんだけど(phpやってるとか、java

やってるじゃ通じないから)、その後に「じゃあパソコン詳しいんだ」っていわれて「いやいやいや」と思うのと同じだなと。


大概の場合、「じゃあパソコン詳しいんだ」=パソコンが関わる事なら何でも知ってるとなっている。

実際はエクセルなんて分からないし、ワードなんか触ってもないし、DTMの事聞かれても???だし、写真編集の事聞かれてもiPhotoとしか言えない。

はては、パソコン=秋葉原になったりもしてメイド喫茶の事きかれても分かんないし、コスプレの事聞かれても分からない。


確かに、そんなものがある事は知っているし、どういう物かもなんとなくは知っている。

けど、「教えて」「手伝って」と言われても困る。


同じようにデザイナの人募集って言われたところで、何を募集しているのか分からないよなと。


なので、ちょっと整理。



rhaco.orgで募集しているのは以下をやってくれる人です。

ただ、募集といっても常駐してくださいとかってわけでは無くって「こんなのどう?」とか「こんなの作ってみた」とか軽いノリで求めています。

仕事としてやってるわけではないので、人生かけられても困りますw


ロゴデザインをしてくれる人(絵を描いてくれる人)
バナーデザインをしてくれる人(絵を描いてくれる人)
DB管理画面とかsetup画面とかのインタフェースデザインをしてくれる人
(JavaScript & CSS & HTMLで制作しれくれる人)

※もちろん、全部ができる人しかダメってわけじゃないです。


とにもかくにも、rhacoに興味のある人は http://twitter.com/rhaco とか http://www.lingr.com/room/rhaco とかで声かけてみてください。


追記:

http://ingoodlight.co.jp/netshop/

こういうセンスが好き。 Tシャツの柄とかステキ。

]]>
Fri, 10 Aug 2007 10:17:40 +0900
2007-08-09http://d.hatena.ne.jp/rhaco/20070809
serialize -> serialization
 http://jp2.php.net/manual/ja/function.serialize.php
unserialize -> deserialization
 http://jp2.php.net/manual/ja/function.unserialize.php

un?

]]>
Thu, 09 Aug 2007 00:00:00 +0900
rhaco->Djangohttp://d.hatena.ne.jp/rhaco/20070807/1186498349

スパム親分の野望通りrhacoの話はDjango勉強会の話として記憶されたw

http://d.hatena.ne.jp/shrkw/20070804

 rhaco
  Django勉強会が8/25にあるらしいので、行けたら行きたい
]]>
Tue, 07 Aug 2007 23:52:29 +0900
LL魂の記事でITProにのったhttp://d.hatena.ne.jp/rhaco/20070807/1186492081

ITProの記事からのアクセスがそこそこあった。

あぁITProって見てる人多いんだなぁ。 と。

http://itpro.nikkeibp.co.jp/article/NEWS/20070806/279163/?P=5&ST=oss

いらっしゃい。


LL:まだまだ言語,フレームワーク,セキュリティ
...
...

露木誠は国産PHPフレームワーク「rhaco」

露木誠氏の発表は歯切れが悪かったけど時間切れではありません。

http://www.everes.net/2007/aug/06/ll-spirit-rhaco-slide/

]]>
Tue, 07 Aug 2007 22:08:01 +0900
Variable::mixinhttp://d.hatena.ne.jp/rhaco/20070806/1186376887

先日のLL魂でLTでの発表もあったrhacoのmixinですが、次のリリースで仕様変更を行います。

現在のもの(1.2.1)は前方優先でしたので、メソッドのオーバーライドができませんでした。

さらに変数の扱いも、いまいちでしたので参照を行うように修正しました。

以下、修正Diffです。 これから使ってみようという方はアップデートお願いします。


Index: Variable.php
===================================================================
--- Variable.php	(.../tags/1_2_1/lang/Variable.php)	(revision 1602)
+++ Variable.php	(.../trunk/lang/Variable.php)	(revision 1602)
@@ -367,17 +367,13 @@
 	 * @return object
 	 */
 	function mixin(){
-		$objects	= func_get_args();
-		$methods	= array();
-		$funcs		= array();
-		$vars		= array();
-		$classses	= array();
-		$first		= "";
-		$name		= "MIXINCLASS_";
-		$obj		= null;
-
-		if(empty($objects) || !is_object($objects[0])) return false;
+		$objects = func_get_args();
+		$classses = $methods = $funcs = $vars = $classvar = array();
+		$obj = null;
+		$name = "";
 
+		if(is_string($objects[0])) $name = array_shift($objects);
+		if(empty($objects) || !is_object($objects[0])) return false;		
 		krsort($objects);
 		foreach($objects as $key => $object){
 			if(is_object($object)){
@@ -382,15 +378,18 @@
 		foreach($objects as $key => $object){
 			if(is_object($object)){
 				if(!is_object($object))	return false;
-				
-				$class				= get_class($object);
-				$classses[$class]	= $class;
-				$first				= $class;
-				$name				.= "__".$class;
-			
-				foreach(get_class_methods($object) as $method) $methods[$method] = $class;
-				foreach(get_object_vars($object) as $key => $value) $vars[$key]	= $class;
-			}else{
+
+				$classname = get_class($object);
+				$classses[] = $classname;
+
+				foreach(get_class_methods($object) as $method){
+					if(!isset($methods[$method])) $methods[$method] = $classname;
+				}
+				foreach(get_object_vars($object) as $key => $value){
+					$vars[$key]	= $classname;
+					$classvar[$key][] = $classname;
+				}
+			}else if(is_array($object)){
 				$object = Variable::arrays($object,0,3,true);
 				if(!empty($object[0])){
 					if(empty($object[2])) $object[2] = $object[1];
@@ -399,10 +398,15 @@
 				unset($objects[$key]);
 			}
 		}
+		
+		krsort($classses);
+		if(empty($name)) $name = implode("__",$classses);
+
 		if(!class_exists($name)){
 			if(isset($methods["istype"])) unset($methods["istype"]);
-			if(isset($vars["CLASS"])) unset($vars["CLASS"]);	
-	
+			if(isset($vars["CLASS"])) unset($vars["CLASS"]);
+			$first = Variable::implode($classses,"",0,1);
+
 			$value = "class ".$name." extends ".$first."{\n";
 			$value .= "var \$CLASS = array();\n";
 			foreach($vars as $var => $class) if($first != $class) $value .= "var \$".$var.";\n";
@@ -409,16 +413,21 @@
 
 			$value .= "function ".$name."(){\n";
 			foreach($classses as $class) if($first != $class) $value .= "\$this->CLASS['".$class."'] = new ".$class."();\n";
-			foreach($vars as $key => $class) if($first != $class) $value .= "\$this->".$key." = &\$this->CLASS['".$class."']->".$key.";\n";
+			foreach($vars as $key => $class){
+				if($first != $class) $value .= "\$this->".$key." = &\$this->CLASS['".$class."']->".$key.";\n";
+				foreach($classvar[$key] as $classname){
+					if($classname != $class) $value .= "\$this->CLASS['".$classname."']->".$key."=&\$this->".$key.";\n";
+				}
+			}
 			$value .= "}\n";
-			
+
 			foreach($methods as $method => $class){
 				if($first != $class){
-					$value .= "function ".$method."(){\n";
-					$value .= "\$args = func_get_args();\n";
-					$value .= "\$obj = &\$this->CLASS['".$class."'];\n";
-					$value .= "return \$obj->".$method."(\$args);\n";
-					$value .= "}\n";
+					$value .= "function ".$method."(){\n".
+									"\$args = func_get_args();\n".
+									"\$obj = &\$this->CLASS['".$class."'];\n".
+									"return call_user_func_array(array(\$obj,\"".$method."\"),\$args);\n".
+								"}\n";
 				}
 			}
 			foreach($funcs as $funcname => $func) $value .= "function ".$funcname."(".$func[0]."){\n".$func[1]."\n}\n";
@@ -423,12 +432,11 @@
 			}
 			foreach($funcs as $funcname => $func) $value .= "function ".$funcname."(".$func[0]."){\n".$func[1]."\n}\n";
 
-			$value .= "function istype(\$class){\n";
-			$value .= "if(Variable::istype(\$class,\$this))	return true;\n";
-			$value .= "foreach(\$this->CLASS as \$obj) if(Variable::istype(\$class,\$obj)) return true;\n";
-			$value .= "return false;\n";
-			$value .= "}\n";
-
+			$value .= "function istype(\$class){\n".
+							"if(Variable::istype(\$class,\$this))	return true;\n".
+							"foreach(\$this->CLASS as \$obj) if(Variable::istype(\$class,\$obj)) return true;\n".
+							"return false;\n".
+						"}\n";
 			$value .= "}\n";
 			eval($value);
 		}
@@ -434,9 +442,7 @@
 		}
 		if(class_exists($name)){
 			$obj = new $name();
-			foreach($objects as $object){
-				$obj = Variable::copyProperties($object,$obj,true);
-			}
+			foreach($objects as $object) $obj = Variable::copyProperties($object,$obj,true);
 		}
 		return $obj;
 	}

]]>
Mon, 06 Aug 2007 14:08:07 +0900