Getting Started With Ruby dRuby (Drb)
dRuby is a distributed object system for Ruby. It allows an object in one Ruby process to invoke methods on an object in another Ruby process on the same or a different machine.
The Ruby standard library contains the core classes of the dRuby package.
Because it's really hard to find a good example that is NOT the usual "we'll create a tuplespace" one, I decided to put something up.
This example contains 3 conponents:
a) "rinda": this component is the point where the servers announce theit services and the clients receive information about the servers. Servers and clients automatically find the server thanks to UDP broadcasts
b) the server: basically a wrapper arround a "regular" class file that looks for the rinda server, registers the service there once it has found it and provides the interface to the "regular" class file over the network
c) the client:
rinda:
require 'rinda/ring' require 'rinda/tuplespace' # start DRb DRb.start_service # Create a TupleSpace to hold named services, and start running Rinda::RingServer.new Rinda::TupleSpace.new puts "started rinda service" # Wait until the user explicitly kills the server. DRb.thread.join
The Server
require 'drb' require 'rinda/ring' # expand the load path puts "creating the service" # creating my service my_service = SomeClass.new #making it available via DRB (local IP gets detected automatically) drb_wrapper = DRb.start_service(nil, my_service) puts "looking for rinda server" ring_server = Rinda::RingFinger.primary puts "Found it!--> #{ring_server.__drburi}" puts "Registering my service" name = `hostname` #will be checked every 5 seconds renewer = Rinda::SimpleRenewer.new(5) tuple = [:name, my_service, drb_wrapper, "Monitoring Service on #{name}"] ring_server.write(tuple, renewer) puts "Registered and running!" DRb.thread.join
The Client
require 'drb' require 'rinda/ring' puts "Getting available Servers" DRb.start_service ring_server = Rinda::RingFinger.primary services = ring_server.read_all [:name, nil, nil, nil] puts "Services on #{ring_server.__drburi}" puts "Amount: #{services.size}" #create an array of hashes services.map!{|service| {:object => service[1], :uri => service[2].__drburi, :description => service[3]} } #sort them according to IP/URI services.sort{|srv1, srv2| srv1[:uri] <=> srv2[:uri]}
if you want to execute a function, just use it like a regular object:
bla = Drbobject.new(nil,service[:object]) bla.some_method
Facebook Opens Up Xmpp Chat
Facebook has officially opened up their facebook chat:
The question is: do I really want that in my roster?
Also: no SSL/TLS?
Visio 2007 Pro in Wine
For a lot of people, visio 2007 professional immediately crashes when you try to open a .vsd file in wine.
Using those .dll overrides, it works like a charm:
Hope this helps somebody :)
Refreshing System Environment Variables in Windows
It is impossible to simply tell a process to "refresh" the system environment variables in Windows. A running process will always have the ones present from when he began executing.
One thing you CAN do, is simply get the current System Environment using vbscript and set it as temporary variables. After the next login, the variables will be there anyway.
Just create a .vbs file:
Set oShell = WScript.CreateObject("WScript.Shell") filename = oShell.ExpandEnvironmentStrings("%TEMP%\resetvars.bat") Set objFileSystem = CreateObject("Scripting.fileSystemObject") Set oFile = objFileSystem.CreateTextFile(filename, TRUE) set oEnv=oShell.Environment("System") for each sitem in oEnv oFile.WriteLine("SET " & sitem) next path = oEnv("PATH") set oEnv=oShell.Environment("User") for each sitem in oEnv oFile.WriteLine("SET " & sitem) next path = path & ";" & oEnv("PATH") oFile.WriteLine("SET PATH=" & path) oFile.Close
And a matching batch file:
"%~dp0resetvars.vbs" call "%TEMP%\resetvars.bat" del "%TEMP%\resetvars.bat"
By launching the batch file, you'll get updated temporary variables in your current process.
found on stackoverflow
How to Change the APN on the Palm Pre
While in the beginning, you actually had to fiddle with an sqlite database, you now can simply edit the APN settings from within them phones menu system. Here is how:
- select the phone icon (as if you wanted to make a call)
- go to the menu at the top and select preferences:
- enable the "manual settings" field and tap on "Edit Network Settings"
- Insert your settings
It worked fine for me without any manual settings on simyo (german virtual provider using the eplus network), but I'm sure this will come in handy
Event: Veranstaltung Zur Architektur Und Zum Betrieb Sozialer Netzwerke
StudiVZ, Xing und Co - Die Langsamen werden verlassen. Veranstaltung zur Architektur und zum Betrieb sozialer Netzwerke
Soziale Netzwerke gehören mittlerweile zu den größten von Menschen erstellten IT-Infrastrukturen. Sie stellen enorme Anforderungen an die Architekturen sowie an den Betriebsablauf. Wie werden sie in der Praxis realisiert, damit Millionen von Usern problemlos und schnell kommunizieren können?
Bei der MediaNight stellen Studierende Projektarbeiten vor Das erfahren Interessenten am 22. Januar 2010 ab 12.30 Uhr an der Hochschule der Medien (HdM). Macher und Experten sozialer Netzwerke gestatten einen Blick hinter die Kulissen von StudiVZ oder XING. Gäste sind zu der Veranstaltung herzlich willkommen, die Teilnahme ist kostenlos.
Zum Auftakt stellen Studierende des Master-Studiengangs Computer Science and Media der HdM die Techniken zur Durchführung von Last- und Performancetests, Monitoring und Alarming, Caching und Parallelverarbeitung am Beispiel einer Wikimedia Installation vor. Sie gehen auch auf alternative Architekturen ein. Anschließend beschreibt Heiko Specht, Account Manager bei Gomez Deutschland, München, die Möglichkeiten externen Monitorings. Mit diesem Verfahren stellen die Betreiber großer Websites sicher, dass ihre Inhalte überall auf der Welt in der gewohnten Qualität verfügbar sind. Danach geht Johannes Mainusch, Vice President Operations bei XING, auf die Performance von Websites ein. Unter dem Motto: „Wer langsam ist, wird verlassen" lässt er hinter die Kulissen von XING blicken. Was Clients bei externem Monitoring besser machen können, stellt Jakob Schröter vom Master-Studiengang Computer Science and Media der HdM vor. Den Schlusspunkt setzt Dennis Bemmann, StudiVZ-Gründer und Informatiker. Er geht auf die Skalierbarkeit, den Datenschutz und die Geschichte der Plattform StudiVZ ein und freut sich auf eine rege Diskussion zu den Entwicklungsperspektiven der sozialen Netze.
Die Veranstaltung wird aufgezeichnet. Der Mitschnitt wird auf der Webseite des Studiengangs Medieninformatik bereit gestellt.
PROGRAMM 12.30 Uhr Begrüßung und Einführung ins Thema Prof. Walter Kriha, Studiengang Medieninformatik der HdM 12.45 Uhr Wikimedia - Ausmessen des LAMP Stacks mit Werkzeugen, Studierende des Master-Studiengangs Computer Science and Media der HdM 13.30 Uhr Externes Monitoring Heiko Specht, Account Manager Gomez Deutschland 14.45 Uhr Wer langsam ist wird verlassen - Performance großer Websites, ein Blick hinter die Kulissen von XING Dr. Johannes Mainusch, Vice President Operations XING 16.00 Uhr Client-side Optimizations Jakob Schröter, Master-Studiengangs Computer Science and Media der HdM 16.30 Uhr Skalierbarkeit, Datenschutz und Geschichte von StudiVZ - Technik und Diskussion Dennis Bemmann, StudiVZ Gründer 17.45 Uhr Ende der Veranstaltung Wann? 22. Januar 2010, 12.30 Uhr Wo? HdM, Nobelstr. 10, 70569 Stuttgart, Raum 056 (Aquarium)
UPDATE: Videos sind nun hier verfügbar.
Starting Batch Files From UNC Paths
If you want to execute a batch file from an UNC Path, windows will first tell you that "CMD does not support UNC paths as current directories" and it will switch to some other directory instead.
If you still want to be able to do your stuff without copying everything to your local drive: use pushd and popd.
pushd will automatically connect the given path as a network drive and popd will disconnect it again.
By using %dp0 as a paramter, you're using the path of the batch file and handing it over to pushd :)
pushd "%~dp0" [...] popd
happy scripting :)
Alternative Infrastructure
Just a short presentation for a lecture. hacked together, nothing really original :)
PDF [here]
Communitygetriebene Android Systemerweiterungen
A short (German) presentation of an upcoming paper :)
Slideshare:
PDF available here
Nigerians Apparently Still Active
I just tried out "eBay Kleinanzeigen" (apparently they bought kijiji) and this is the first thing I recieved (it's german... sorta):
Hallo, Ich werde beim Kauf Ihres Artikels für meinen Kunden in Nigeria als ein Geschenk und ich Jahreszeit interessant werden Sie von Bank zu Bank Überweisung oder PayPal zahlen, so werde ich, wie Sie zu mir zurück Mail für weitere Diskussionen zu Zahlung und Versand des Artikels. Danke James Smith
Oh Mr. Smith... :)
Update, next one:
Hallo, wie Sie tun Sie akzeptieren, 450 EUR für diesen Artikel auch die Portokosten zu meiner Frau in Großbritannien
Update 2; WTF?:
hallo Ich bin der Mrs Rose Mary Lopez, ich bin am Kauf der Artikel bei Ihnen interessiert sind, so möchte ich den aktuellen Status dieses Problem kennen und auch die letzte price.and die Methode der Zahlung per Überweisung auf das Bankkonto, geben Sie dies bitte zurück zu mir so bald wie möglich an meine E-Mail-Adresse ([email protected]). Ich warte auf Ihre Antwort. Mit besten Grüßen. Mrs Rose Mary Lopez
Update 3:
Nachricht: Hallo Verkäufer der Saison ergänzen i bin sehr an diesem Titel und ich interessiert sind, möchten Sie mich wissen lassen, wenn ihr noch Avaialable zum Verkauf email me back asap .. bis janet.linda20009 @ gmail.com
Update 4:
Ich will gerne wissen, ob dieser Position ist noch verfügbar zum Verkauf Zurück zu mir auf: - [email protected]
Update 5:
Hallo, Ich bin am Kauf dieses Artikels bitten lassen Sie es mich wissen, die Gesamtkosten für diesen Artikel und den Versand nach Nigeria mit DHL interessiert. Und auch senden Sie mir Ihre Bankverbindung, damit ich die Zahlung kann am Montag Morgen, nachdem die Artikel dringend erforderlich Danke ([email protected])
Update 6:
Hello You still have this item for sale? you can get back to me with the total cost payment via bank transfer or paypal so kindly reply me back to this email directly: [email protected]