Login|Sign Up
怒了,三个月来根本没有人点广告!!! :((
 

最新博文

mysql union     [数据库]

http://dev.mysql.com/doc/refman/5.0/en/union.html

QA mm用子查询效率很慢找到了union的方法,我也顺带学习学习

发觉用处不大,不过挺搞怪的,可能零时查查还有些用户

2010-7-29 15:46:35

amf3 socket server     [ruby]

用了rocket amf , 有些问题 , Externalized的话没法处理,不过别的都不错

require 'rubygems'
require 'eventmachine'
require 'rocketamf'

RocketAMF::ClassMapper.define do |m|
  m.map :as => 'User', :ruby => 'User'
  #m.map :as => 'vo.User', :ruby => 'Model::User'
end

class User
  attr_accessor :name
  attr_accessor :age

  def initialize(name = 'kk' , age = 1)
    @name = name
    @age = age
  end

  def to_amf serializer
    stream = ""
    if serializer.version == 0
      p "to amf 0"
      data = {
        :name=> @name,
        :age=> @age
      }
      serializer.write_hash(data, stream)
    else
      p "to amf 3"
      serializer.write_object(self, stream)
    end
    ret = stream
    p ret
    ret
  end


end


class AmfServer < EM::Connection
  def post_init
    p "post init!!!!!!!"
  end

  def unbind
    p  "unbinddding!!!!!"
  end

  def receive_data data
    p data
    obj = RocketAMF.deserialize(data, 3)
    p obj
    p obj.name
    p obj.age
  end

end

EM::run do
  EM::start_server 'localhost' , 8088 , AmfServer
end

 

2010-7-9 15:54:41

socket client amf3     [flash]

// client.as

package
{
	import flash.display.Sprite;
	import flash.events.*;
	import flash.net.Socket;
	import flash.text.TextField;
	import flash.net.registerClassAlias;
	
	public class amfclient extends Sprite
	{
		protected var txt:TextField = new TextField();
		public function amfclient()
		{
			registerClassAlias("User", User);
			
			txt.text = 'hello world';
			txt.x = 10;
			txt.y = 10;
			txt.addEventListener(MouseEvent.CLICK , clickHandler);
			this.addChild(txt);
			
		}
		
		public function clickHandler(e:MouseEvent):void{
			txt.text = 'ok';
			var client:Socket = new Socket();
			client.connect('localhost' , 8088);
			var msg:String = "hello i am amf clientt1";
			msg = 'hello i ';
			//传过去还是带了一个长度信息在前面的
			//client.writeUTF(msg);
			var tt = ['aa' , 'bb'];
			var user = new User();
			client.writeObject(user);
			client.flush();
		}
	}
}

 // User.as

package
{
	import flash.utils.IExternalizable;
	import flash.utils.IDataInput;
	import flash.utils.IDataOutput;

	public class User implements IExternalizable
	{
		
		public var name:String;
		public var age:int;
		
		public function User()
		{
			name = 'helloo';
			age = 12;
		}
		
		public function readExternal(input:IDataInput):void {
			//id = input.readUnsignedInt();
			name = input.readUTF();
		}
		
		public function writeExternal(output:IDataOutput):void {
			//output.writeInt(age);
			output.writeUTF(name);
			
		}
	}
}

 

2010-7-9 15:52:02

eventmachine mysql     [ruby]

http://github.com/tmm1/em-mysql
sudo gem install em-mysql
http://github.com/espace/mysqlplus
sudo gem install mysqlplus
em-mysql 跑不起来,版本问题


http://github.com/igrigorik/em-mysqlplus
sudo gem install em-mysqlplus

归根到底所有的都用了mysqlplus这个可以使用非阻塞或者多线程
http://www.javaeye.com/news/3423-mysqlplus---non-blocking-mode-ruby-mysql-interface

需要defer用一个线程来执行吗?
我觉得没有这个必要,整个业务逻辑可以defer实现,这个是业务的一部分
应该就可以在业务的那个线程里面跑,当然他的非阻塞特性还是用到了

 

#require 'mysqlplus'
#require 'em/mysql'
require 'em-mysqlplus'

EventMachine.run {
  EM.stop
  conn = EventMachine::MySQL.new(:host => 'localhost' , :user => 'saybot' , :password => 'saybot' , :database => 'saybot_vw')
  query = conn.query("select id , passport_id from User order by id limit 3")
  sleep(1)
  #query = conn.query("error sql select id , passport_id from User order by id limit 3")
  p "xxxxxxxxx"
  query.callback { |res| p res.all_hashes }
  query.errback  { |res| p 'error happended'}
  p "xxxxxxxddddd"
}

 

2010-7-8 17:41:38

 1 2 3 >  Last ›

 
Google 本站内容:
 
Copyright (c) 2007-2010 kk. All Rights Reserved. 版权所有        联系邮箱:admin@kkito.cn
沪ICP备07503863号        您是第 291052 位访客        RSS订阅
Powered by PHP && CodeIgniter && Zend Framework