hu's profile混吃等死滴高手PhotosBlogLists Tools Help

Blog


    July 07

    crack xbm by ruby

    经过一段时间的使用感觉ruby简直是脚本之王,用的很爽,下面是xbm图像的crack代码用ruby写的
    def xbm(xbm)
    v0 = "0x3c,0x66,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0x66,0x7e"
    v1 = "0x18,0x1c,0x18,0x18,0x18,0x18,0x18,0x18,0x18,"
    v2 = "0x3c,0x66,0x60,0x60,0x30,0x18,0x0c,0x06,0x06,0x7e"
    v3 = "0x3c,0x66,0xc0,0x60,0x1c,0x60,0xc0,0xc0,0x66,0x38"
    v4 = "0x38,0x3c,0x36,0x33,0x33,0x33,0xff,0x30,0x30,0xfe"
    v5 = "0xfe,0xfe,0x06,0x06,0x3e,0x60,0xc0,0xc3,0x66,0x3c"
    v6 = "0x60,0x30,0x18,0x0c,0x3e,0x63,0xc3,0xc3,0x66,0x3c"
    v7 = "0xff,0xc0,0x60,0x30,0x18,0x18,0x18,0x18,0x18,0x18"
    v8 = "0x3c,0x66,0xc3,0x66,0x3c,0x66,0xc3,0xc3,0x66,0x3c"
    v9 = "0x3c,0x66,0xc3,0xc3,0x66,0x3c,0x18,0x0c,0x06,0x03"
    v = [v0, v1, v2, v3, v4, v5, v6, v7, v8, v9]
    list = []
    xbm.each_line{|l| list = l[0..-5].split(",") if l.size > 45 }
    vlist= []
    4.times do |y|
    a = []
    10.times do |x|
        a << list[4*x+y]
    end
      vlist << a
    end
    code = ""
    vlist.each do |x|
        code << v.index(x.join(',')).to_s
    end
    code
    end

    Delphi with RESTful Rails

    有个需求需要Delphi的客户端和rails的站进行交互,Delphi通过IDhttp控件使用get方法header="Accept: text/xml"的方式获取xml,再通过XMLTransformProvider控件转换成ClientDataSet可以用的数据。
    procedure TForm1.Button1Click(Sender: TObject);
    var
      hstream: TMemoryStream;
    begin
      hstream := TMemoryStream.Create;
      self.IdHTTP1.Get('http://192.168.0.200:9999/lists', hstream);
      hstream.Position := 0;
      self.Memo1.Lines.LoadFromStream(hstream);
      hstream.Position := 0;
      self.XMLDocument1.LoadFromStream(hstream);
      self.XMLTransformProvider1.TransformRead.SourceXmlDocument := self.XMLDocument1.DOMDocument;
      self.ClientDataSet1.Active := true;
    end;
    January 24

    RoR的使用点滴

    >>>form的date_select field取参数方法
    view中的声明<%= date_select 'cond', 's_bdate'  %>
    controller中params[:cond]["s_bdate(1i)"]取年, params[:cond]["s_bdate(2i)"]取月, params[:cond]["s_bdate(3i)"]取日,其他顺延
     
    >>>月份的格式化
    把2月份格式化成02,如month="2",使用'%02d' % month,即可
     
    >>>取消复数关系在environment.rb中使用ActiveRecord::Base.pluralize_table_names = false参数,或在RadRails中新建project时点选上Disable table pluralization选项。model中使用set_table_name指定到对应的表,controller和view中依然使用复数关系。
     
    >>>ms sql server数据表的字段名如果使用大写,相关代码中也要使用大写。如表bus中有字段NAME,view中要使用bus.CODE才能正常存取,这是因为sqlserver是大小写区分的,也可以改成不区分的在rails里,http://wiki.rubyonrails.org/rails/pages/HowtoConnectToMicrosoftSQLServer
     
    >>>rails分页在ms sqlserver不起作用,必须在paginate加:order => 'id' ,参考http://dev.rubyonrails.org/ticket/3059
     
    >>>设定页面编码为gb2312
    class ApplicationController < ActionController::Base
       before_filter :set_charset
       def set_charset
          @headers["Content-Type"] = "text/html; charset=gb2312"
       end
    end
     
    >>>汉化月份
    app/overrides/date.rb
    require 'date'
    class Date
      MONTHNAMES = [nil, '一月', '二月', '三月', '四月', '五月',
                    '六月', '七月', '八月', '九月', '十月',
                    '十一月', '十二月' ]
    end
     
    app/overrides/all.rb
    Dir[File.dirname(__FILE__) + "/**/*.rb"].each { |file| require(file) }
    >>>汉化active record :message错误信息
    module ApplicationHelper
          def error_messages_for(object_name, options = {})
            options = options.symbolize_keys
            object = instance_variable_get("@#{object_name}")
            unless object.errors.empty?
              content_tag("div",
                content_tag(
                  options[:header_tag] || "h2",
                  "发生#{object.errors.count}个错误"
                ) +
                content_tag("p", "下列字段发生了问题:") +
                content_tag("ul", object.errors.full_messages.collect { |msg| content_tag("li", msg) }),
                "id" => options[:id] || "errorExplanation", "class" => options[:class] || "errorExplanation"
              )
            end
     end
    end
     
    >>>ajax不支持gb2312编码,所以不要用汉字做参数传递,用code
    >>>:conditions或find_by_sql里面使用like '%',rails会提示malformed format string,是因为Rails uses sprintf (%) on the inside. So, Escape your % with %%
    January 12

    Distributed Ruby

    Programming Ruby有讲Distributed Ruby一节,里面的demo在本机跑没问题,放在两台机器上如何呢
    试验了一下真正点,不过有个地方需要注意
    ########server.rb
    require 'drb'
    class TestServer
    def add(*args)
    args.inject {|n,v| n + v}
    end
    end
    server = TestServer.new
    DRb.start_service('druby://localhost:9000', server)
    DRb.thread.join # Don't exit just yet!
     
    ##########client.rb
    require 'drb'
    DRb.start_service()
    obj = DRbObject.new(nil, 'druby://localhost:9000')
    # Now use obj
    puts "Sum is: #{obj.add(1, 2, 3)}"
     
    server和client中的'druby://xxxxxxx:9000'字符串要同名,server不能用localhost绑定本地地址
     
    January 01

    rails的模板逻辑问题,good or bad

    关于页面模板里要不要包含逻辑,一直是java社区争论的问题。
    各种框架的处理方式大致分为几种:

          一种是模板里完全不要逻辑代码,只是用些标准xml标签来标识要替换的元素,逻辑部分由擅长计算的程序部分来搞。
           一种是模板里搞出一套独立的模板语言出来,处理简单的模板逻辑,数据绑定什么的。
          另外一种是模板里用和framework类似的程序语言来处理那些工作。
          还有一种是混合型的。

    那么怎样使模板控制灵活但又不会象asp,php那样一锅粥呢?
    rails的作者DHH给出了答案:logic is good, biz logic is bad

    没话说了,看来还是我们看问题不够深入,没有抓到问题的核心,再复杂混合的方案都是shit。值得我们深思反省!