Blize im App Store

Posted by admin Sat, 18 Dec 2010 21:28:00 GMT

Es ist soweit. Blize ist ab sofort im App Store erhältlich. Nun kann ich auch sagen; "Ich habe eine App im Store". Ich habe das Spiel schon während der Entwicklung gerne auf der Fahrt zur Uni gespielt. Ab jetzt bin ich um so mehr gespannt, ob es auch noch anderen Leuten gefällt. Wir werden sehen :)
Hier hin gehen für mehr Informationen

Blize

keine Kommentare |

Metasploit mit Rails

Posted by admin Thu, 04 Nov 2010 13:52:00 GMT

Im Projekt FIDIUS wollten wir das Datenbankschema von Metasploit mit Rails verwenden. Was muss man also tun?

Anmerkung: Es wurde Rails 2.3.5 verwendet, weil sich Rails 3 mit Metasploit nicht verstehen will.

In config/enviroment.rb:

Rails::Initializer.run do |config|
  # Do initialisation for Metasploit Framework
  msf = YAML::load(open(File.join(File.dirname(__FILE__), 'msf.yml')))
  LOCAL_MSF_SVN_CHECKOUT = msf['msf_path']
  $:.unshift(File.join(LOCAL_MSF_SVN_CHECKOUT,"lib"))

  require 'rubygems'
  require 'active_record'
  require 'msf/core/db_objects'
  require 'msf/core/model'
  
  # nochmal die models reinladen, nachdem wir die grundlegenden
  # sachen von msf geladen haben, um nachträglich noch modifizierungen 
  # haben zu können
  Dir.glob(File.join('app','models', '*.rb')) do |rb|
    require rb  
  end
end

Metasploit bringt von sich aus schon alle Migrations mit, um die Datenbank zu erstellen. Also warum nicht von Rails darauf zugreifen?

Der Migrator von ActiveRecord lässt sich auch direkt ansprechen:

class SetupMsfDb < ActiveRecord::Migration
  def self.up
    msf = YAML::load(open(File.join(File.dirname(__FILE__), '..', '..', 'config', 'msf.yml')))
    ActiveRecord::Migrator.migrate(File.join(msf['msf_path'], 'data', 'sql', 'migrate'))
  end

  def self.down
  end
end

Und schon kann man Datenbank seine Datenbank mit erstellen.

rake db:create
rake db:migrate

Sobald man allerdings auf die Assoziationen eines Models zugreifen will, komm ein Fehler der Art: "ArgumentError: Msf::DBManager is not missing constant Service!" Dieses Problem habe ich mit Hilfe von dieser Erklärung gelöst.

Im Endeffekt handelt es sich um folgende Ergänzung in der enviroment.rb:

module ActiveSupport
  module Dependencies
    extend self
    
    #def load_missing_constant(from_mod, const_name)
    
    def forgiving_load_missing_constant( from_mod, const_name )
      begin
        old_load_missing_constant(from_mod, const_name)
      rescue ArgumentError => arg_err
        if arg_err.message == "#{from_mod} is not missing constant #{const_name}!"
          return from_mod.const_get(const_name)
        else
          raise
        end
      end
    end
    alias :old_load_missing_constant :load_missing_constant
    alias :load_missing_constant :forgiving_load_missing_constant
  end
end

keine Kommentare |

Ruby Benchmarking

Posted by admin Fri, 18 Jun 2010 17:25:00 GMT
Ich habe unseren Rails-Server, der aktuell die Magie hinter unserer IPhone App macht, auf Sinatra umgestellt. Im Zuge dessen sind einige Speicherprobleme in Verbindung mit RMagick aufgefallen, um diese zu finden kann ich folgende Debugausgaben empfehlen, um nachzuvollziehen, wieviel Speicher wann alloziert ist.
i1 = `ps -o rss= -p #{Process.pid}`.to_i
puts i1.to_s+" KB memory"

Posted in | keine Kommentare |

java.lang.UnsatisfiedLinkError: no *** in java.library.path

Posted by admin Wed, 26 May 2010 16:20:00 GMT
JNI (Java Native Interface) hat so seine Eigenheiten. Damit seine externe Bibliothek mit
static{
  System.loadLibrary("externe_lib");
}
auch wirklich geladen wird muss man der JVM das Argument -Djava.library.path=native mitgeben. Wobei native in dem Beispiel für den Ordner steht, wo sich die lib befindet. In Eclipse kann man dies unter Run Configurations -> VM Arguments eintragen. Startet man das Projekt, oder die JAR von Hand muss man das Argument auch beim Start mit angeben. java -Djava.library.path=native -jar fmq_client.jar

Posted in | keine Kommentare |

ActiveRecord puffert ?!

Posted by admin Wed, 26 May 2010 16:10:00 GMT
Wer hätte das gedacht? Im Rahmen von Designing User Experiences, wo wir eine IPhone-App entwickeln und einen Rails-Server zur Kommunikation benutzten, ist mir nach längerem Suchen aufgefallen. Das ActiveRecord die Ergebnisse der find-Methode puffert. Umgehen kann man diesen Effekt, indem man explizit uncached angibt:
  def self.find_uncached(x,y)
    uncached do 
      return Tile.find(:first,:conditions=>{:pos_x => x,:pos_y => y})
    end
  end

Posted in | keine Kommentare |