12.12.2011 22:44:40 by isKar
Der letzte Post ist schon länger her … aber des … also …
Wir (meine neue Firma) haben ein Stück Software entwickeln lassen.
Diese ist jetzt “fertig” und läuft im Beta Test.
Da die externe Firma das im Zend Framework gebaut hat, wollte damit hier niemand was zu tun haben – entweder weil Angst vor Ugly_Long_Class::Names_And_Constant oder weil das Wort Framework doch einige zusammen zucken lässt.
Aber mal echt Zend!? OpenSource – Doku – einfach nur PHP … da ist kein Voodoo dahinter. Dennoch wollte man mich auf ne Schulung schicken (die war für jemand anderen “gekauft” und somit bezahlt – der wollte/konnte dann aber nicht) – naja zwei Stunden am Stück zu hören wie toll doch Zend ist (achja und man kann das Studio kaufen!) und am nächsten Tag die Vorteile eines autoloader … da war bei mir Schicht im Schacht – am zweiten Tag hab ich die Schulung geschmissen…
Hab den Quellcode angefordert, aufgemacht…
übersetzt stehen da so Sachen drin wie (Pseudo-Code!)
-
<?php
-
class SomeService extends Service {
-
private function getMoneyFromObj ($id) {
-
$obj = $this->db->getById($id);
-
$this->user->addMoney ($obj[‘gold’]);
-
$obj[‘gold’] = 0;
-
$this->db->update($obj, $id);
-
return $this->user;
-
}
-
}
-
?>
Facepalm – so schaut es in jeder der 50 verdammten Methoden aus! (Einige haben noch left Join über > 5 Tabellen)
Des einzige was die von Zend benutzen ist der AMF Server / Methoden-Call-Verteiler und um zu schauen ob jemand eingeloggt ist per Auth – mehr Prüfungen sind nicht drin.
Sprich User X eingeloggt – dann darf der durch die Datenbank wandern:
SomeService::getMoneyFromObj(1)
SomeService::getMoneyFromObj(2)
...
SomeService::getMoneyFromObj(87)
usw...
Wollt schon den Projekt Namen ändern in “Lustiger Id rate spiel server”
Other posts by isKar
Posted in Arbeit | No Comments »
19.10.2011 14:09:20 by isKar
Jetzt brauch ich ein Facebook Account – so ein Shit – sonst bekomm ich keine App-Codes/Doku usw..
Update:
Hehe
Bitte vervollständige eine Sicherheitskontrolle
Sicherheitskontrollen helfen dabei, Facebook vertrauensvoll zu gestalten und von Spam zu befreien.
Benutze ein Telefon, um dein Konto zu bestätigen
The phone number you ....
Ok des war´s ich frag ob ich Zugangsdaten von nem Kollegen haben kann.
Kein Bock auf die Jungs…
Other posts by isKar
Posted in Unactgeoirzde | No Comments »
17.07.2011 20:01:22 by isKar
Halbwertszeiten und Wahrscheinlichkeiten sind was lustiges.
- Eine Funkmaus geht kaputt
- Ein Zahn muss gezogen werden
- Ein Netzteil vom Switch geht kaputt
- Beim Zahn Ziehen entsteht ein Durchbruch zur Nasenhöhle
- Einer der Internet-Automatisch-Abmahner schreibt einen Brief
Es ist sehr wahrscheinlich dass eines der Ereignisse irgendwann mal passiert.
In den letzten zwei Wochen ist alles davon passiert.
Nunja, glücklicherweise sind die zwei Wochen wahrscheinlich in 3 Stunden vorbei…
Other posts by isKar
Posted in Unactgeoirzde | No Comments »
07.04.2011 22:14:49 by isKar
Wir haben die PHP Version auf dem Server geändert… die anderen Scripts (Post davor) laufen nun auch wieder so wie “geplant” – aber:
Durch einen Fehler (den ich auch noch suche – weil genauso ähm… komisch) wurde diese Methode (Namen geändert) nicht mit einem Integer sondern mit einem Objekt aufgerufen. (zumind. sagt mir mein Backtrace Foo::foo (Foo) usw..) Auch wenn keiner $nr hier ändern darf – egal. Da kommt aufjedenfall eine Instanz von “Foo” raus bei (int) $this->nr;
Ok, also ich glaub der Webserver will mich einfach nur ärgern….
-
<?php
-
class Foo {
-
-
private $nr = 1337;
-
-
private function bar () {
-
return (int) $this->nr;
-
}
-
-
private function foo ($nr) {
-
if ($nr >= 1338) {
-
ErrorHandler::throwManual (‘there is no ‘ . $nr . ‘ here’);
-
}
-
}
-
-
public function test () {
-
$this->foo($this->bar());
-
}
-
}
-
-
$temp = new Foo();
-
$temp->test();
-
-
?>
Jetzt möchte man meinen bei $nr >= fliegt das Script mit “Object of class Foo could not be converted to integer” nein…. sondern in der nächsten Zeile – wohl gemerkt jetzt müsste $nr >= 1338 also irgendwie auf Integer “converted” sein und dann noch größer als 1338 – aber – nein String converted ist nicht drin “Object of class Foo could not be converted to string“…
Naja es geht noch besser “Illegal offset type in unset” und zwar bei so nem Code … und nein $index wird nirgends in den Zeilen dazwischen (sind nur 10) überschrieben – und nein, global isses auch nicht
-
<?php
-
foreach ($allItems as $index => $item) {
-
if ( ! $item instanceOf Bar) {
-
continue;
-
}
-
if ($item instanceOf Foo) {
-
// more code….
-
}
-
unset ($allItems[$index]);
-
}
-
?>
Kobolde! Verflucht! Wie soll man so arbeiten…. Ich will meine Variablen wieder zurück.
Other posts by isKar
Posted in Unactgeoirzde | No Comments »
04.04.2011 23:17:03 by isKar
Also die letzten 3 Stunden hab ich ja mit einem der echt üblen Fehler.
Um ca. 17-18 Uhr hab ich eine neue Version auf dem Webserver hochgeladen.
Des PHP-Script ist ein 890KiB (nicht kB) File – mit ca. 500 Klassen drin. Auf der Entwicklungs-Kiste lief des Script eigentlich ohne Probleme – auf dem Beta-Webserver hochgeladen kommen auf einmal die unmöglichsten Fehlermeldungen – “hier Objekt nicht da” – “dort Endlosloop” . Was eigentlich garnich sein kann – weil Teilweise die Methoden
-
<?php
-
class Foo {
-
public function bar(Bar $fail) {
-
$fail->random();
-
}
-
}
-
?>
Mit nem “method called on non-object” abfliegt – wohl gemerkt kein “Argument 1 passed to Foo::bar() must be an object of class Bar“. Jetzt stellt sich natürlich die Frage was da los is – weitere Tests haben dann den Fehler sogar auf “var_dump($this);” mit der Ausgabe “NULL” zurückgeführt.
Sehr toll sind natürlich dann auch Scripte ala:
-
<?php
-
class Foo {
-
public function bar(Bar $fail) {
-
while ( ! $fail->loaded) {
-
$fail->load();
-
}
-
}
-
}
-
?>
Danke des nicht vorhandenen E_STRICT (jetzt isses wohl zu spät dem Src des noch beizubringen) läuft dies natürlich while …. unendlich (PHP geht einfach mal davon aus wenn $fail Null ist könnte man ja ein Objekt vom Typ stdClass draus machen wenn da jemand ne Eigenschaft von laden will – die dann halt mal NULL ist)
Das Test-Script hier z.b. läuft nach ca. 20 Loops mit dieser Ausgabe auf:
Setting: int(890)
Setting inside: int(890)
now inside: NULL
Getting inside: NULL
Getting: NULL
$this reference fail!
Hier der komplette Quellcode:
-
<?php
-
-
-
-
class foo {
-
-
private $integer;
-
-
public function set ($i) {
-
echo ‘<br>Setting inside: ‘;
-
-
$this->integer = $i;
-
-
-
}
-
-
public function get () {
-
echo ‘<br>Getting inside: ‘;
-
-
return $this->integer;
-
}
-
}
-
-
-
$temp = new foo ();
-
-
-
-
-
$temp->set($random);
-
$get = $temp->get();
-
if ($get != $random) {
-
-
-
echo ‘<h1>$this reference fail!</h1>’;
-
-
-
}
-
?>
-
<script>
-
window.setTimeout(‘document.location.href="test.php";’, 100);
-
</script>
Die “große” Datei mit allen Klassen ist auch schon mit der alten ausgetauscht worden – die Klassen einzeln über einen autoloader eingebunden – der lighttpd angehalten usw… Webserver neustarten bringt nur was für n paar Minuten … echt ich hab kein Plan was da los sein soll…. Als würde ein Kobold meine Referenzen durcheinander würfeln oder natürlich der Webserver steht auf Htrae.
Und wieder bin ich beim:
-
/* This program will only run if the laws of mathematics hold */
-
//Oh crap – we are not running in the correct Universe
-
ps.:
hehe Melodic-Death-Comic-Metal Deadlock – Htrae – reinhörn
Other posts by isKar
Posted in Unactgeoirzde | No Comments »