Fakultät in Groovy

Ich habe schon seit einer Ewigkeit die Angewohnheit, dass ich in einer neuen Programmiersprache als erstes Programm eine Fakultätsberechnung schreibe – und zwar nicht die einfache Version, die einfach Zahlen aufmultipliziert, sondern eine etwas bessere, welche Faktultäten bis maximal ca. 50000 berechnen kann.

Vor einiger Zeit war nun Groovy an der Reihe.

Das ganze könnt ihr hier auf Ideone.com auch live im Browser ausprobieren!

class Num {
   List num

   def Num() { 
       num = [1]
   }
   
   def mul(val) {
       def Integer overflow = 0
       for(i in 0..num.size()-1) {
           num[i] = num[i] * val + overflow
           overflow = num[i] / 10000
           num[i] = num[i] % 10000
       }
       if(overflow > 0) {
           num.push overflow
       }
   }
   
   def String toString() {
       def txt = Integer.toString(num.last())
        for(i in num.size()-2..0) {
           txt = txt.plus(Integer.toString(num[i]).padLeft(4, "0"))
       }
       txt
   }
}

def n = new Num()

for(f in 2..150) {
  n.mul(f)
}

println n

Die Ausgabe sieht so aus:

57133839564458545904789328652610540031895535786011264182548375833179829124845398393126
57448867531114537710787874685420416266625019868450446635594919592206657494259209573577
89293253572904449624724054167907221184454371222696755200000000000000000000000000000000
00000

Live Wallpaper online

Es ist soweit! Mein Live Wallpaper „Glow Lines“ ist im Google Play Store verfügbar!

Dies ist ein Live Wallpaper das bewegte 3D Linien und Punkte mit einem glühenden Schein zeichnet.
Die Idee zu dieser App kam mir, als ich nach längerer Zeit mal wieder über den Film “Tron” gestolpert bin und das Intro gesehen habe. Die Kamerafahrt in der abstrakten Linien und Punkt-Szenerie fand ich einfach sehr schön. Im Film endet die Kamerafahrt mit einer Überblendung in eine gefilmte Szene einer Straßenkreuzung. Für das Wallpaper habe ich nun eine unendliche Wiederholung der Linien und Punkte Muster gewählt. Die Elemente steigen von unten nach oben auf, verschwinden oben und erscheinen unten an anderer Stelle erneut.

Hier gehts zum Google Play Store

So sieht das Wallpaper in Aktion aus:

Ausgesperrt aus Magento Admin Seite durch falsche Basis URLs

Ändert man die base_url Einstellungen bei Magento zu unvorsichtig, so ist es sehr schnell passiert, dass man sich aus dem Shop und auch aus der Admin Konsole aussperrt. Mir ist das heute passiert und ich musste die Einstellungen anschließend manuell mühsam in der Datenbank zurücksetzen.

Damit es das nächste mal einfacher wird, habe ich die SQL Statements behalten und falls ihr diese auch einmal braucht gibt es die hier:

update core_config_data set value='http://localhost/' where path='web/unsecure/base_url';
update core_config_data set value='{{unsecure_base_url}}' where path='web/unsecure/base_link_url';
update core_config_data set value='{{unsecure_base_url}}skin/' where path='web/unsecure/base_skin_url';
update core_config_data set value='{{unsecure_base_url}}media/' where path='web/unsecure/base_media_url';
update core_config_data set value='{{unsecure_base_url}}js/' where path='web/unsecure/base_js_url';

update core_config_data set value='https://localhost/' where path='web/secure/base_url';
update core_config_data set value='{{secure_base_url}}' where path='web/secure/base_link_url';
update core_config_data set value='{{secure_base_url}}skin/' where path='web/secure/base_skin_url';
update core_config_data set value='{{secure_base_url}}media/' where path='web/secure/base_media_url';
update core_config_data set value='{{secure_base_url}}js/' where path='web/secure/base_js_url';

Punkte gleichmäßig auf einer Kugel verteilen

Vor einigen Tagen habe ich für ein Testprogramm versucht eine bestimmte Anzahl von Punkten möglichst gleichmäßig auf einer Kugel zu verteilen. Es stellte sich heraus, dass das wohl nicht so ganz einfach ist, es wirklich perfekt hinzubekommen (http://www.lienhard-wimmer.de/geometrie/mathe/dipl.pdf).

Glücklicherweise habe ich im Netz unter http://www.xsi-blog.com/archives/115 einen Algorithmus gefunden der dieses Problem annähernd löst und auch noch schön schnell ist.
Weiterlesen

A simple WebGL Tutorial

Screenshot of the WebGL example

Screenshot of the WebGL Example

To get something visible on the Screen with WebGL, more work is necessary than it was with classic OpenGL. This is due to the fact, that WebGL dropped the Fixed-Function Pipeline and we now have to provide shaders to calculate the vertex transformation and the lighting on our own. The missing lighting, material and projection functions make it harder to get started with WebGL. I hope to make this easier with the following post that tries to cover the most basic WebGL aspects.

Weiterlesen