Bernhard Frank – Web Platform Architect Evangelist
Tags: IIS 7, Launch EventComments (0) |
Ab März bringt CodeGear/Borland eine neue Entwicklungsumgebung für PHP heraus. Dabei wird die IDE auf den gewohnten Delphi-Komfort aufsetzen und eine Alternative zu Visual Studio 2005 / ASP.NET bieten. Besonders interessant dürfte der integrierte Debugger sein, da es momentan teilweise doch sehr anstrengend sein kann PHP zu debuggen. “Delphi for PHP” soll übrigens auch eine eigene Komponentenbibliothek (“VCL for PHP”) mitbringen, so dass viele Standardaufgaben wie LogIn usw. “out of the box” mitgeliefert werden. Die Visual Component Library ist nebenbei auch komplett in PHP 5 geschrieben, so dass man sie auf jeden Standardserver benutzen kann.
Als Einführungspreis gibt CodeGear 249,- USD an – als Studentenversion ist Delphi for PHP wohl für 99,- USD zu haben.Â
Tags: ASP.NET, Delphi for PHP, Tools, Visual StudioComments (1) |
Will man beispielsweise einen Scheck bedrucken, so steht man vor der Problem einen Geldbetrag (z.b. 123,-) in Worten (also “Einhundertdreiundzwanzig”) angeben zu müssen. Der folgende Quellcode tut dies für Zahlen bis zu 100 Milliarden.
Die Idee dahinter ist die Ziffern der Zahl immer in Dreierblöcke zu zerlegen und dann diese Dreierblöcke als einzelne Gruppen zwischen 0 und 999 zu behandeln. Im Anschluss wird dann eine “Nachsilbe” (z.b. “tausend”) an den Block angefügt. So lassen sich auch sehr große Zahlen (die leider nur selten auf meinen Schecks stehen) leicht in Text umwandeln.
PROCEDURE GetAmountInWords @1105400001(p_Amount@1105400000 : Integer) r_Result : Text[1024]; VAR l_TempAmount@1105400001 : Text[1024]; BEGIN IF p_Amount = 0 THEN EXIT('Null'); l_TempAmount := FORMAT(p_Amount); r_Result := GetGroup(l_TempAmount,0); IF STRLEN(l_TempAmount) >= 1 THEN r_Result := GetGroup(l_TempAmount,1) + r_Result; IF STRLEN(l_TempAmount) >= 1 THEN r_Result := GetGroup(l_TempAmount,2) + r_Result; IF STRLEN(l_TempAmount) >= 1 THEN r_Result := GetGroup(l_TempAmount,3) + r_Result; IF STRLEN(l_TempAmount) >=1 THEN ERROR('Betrag wird nicht unterstÂtzt.'); r_Result := UPPERCASE(COPYSTR(r_Result,1,1)) + COPYSTR(r_Result,2,STRLEN(r_Result)); END; PROCEDURE GetGroup @1105400003(VAR v_Text@1105400003 : Text[1024]; p_Group@1105400006 : Integer) r_Result : Text[1024]; VAR l_H@1105400000 : Text[250]; l_T@1105400001 : Text[250]; l_O@1105400002 : Text[250]; l_Value@1105400004 : Integer; l_Group@1105400005 : Text[3]; BEGIN FillGroup(v_Text); l_Group := COPYSTR(v_Text, STRLEN(v_Text)-2,STRLEN(v_Text)); EVALUATE(l_Value,COPYSTR(l_Group,1,1)); IF l_Value > 0 THEN IF l_Value = 1 THEN l_H := 'einhundert' ELSE l_H := GetDigit(l_Value) + 'hundert'; EVALUATE(l_Value,COPYSTR(l_Group,2,2)); IF (l_Value >= 10) AND (l_Value < 20) THEN l_O := GetTenToTwenty(l_Value) ELSE BEGIN EVALUATE(l_Value,COPYSTR(l_Group,2,1)); IF l_Value > 1 THEN l_T := GetTens(l_Value); EVALUATE(l_Value,COPYSTR(l_Group,3,1)); IF l_Value > 0 THEN BEGIN IF l_T = '' THEN l_O := GetDigit(l_Value) ELSE BEGIN IF l_Value = 1 THEN l_O := 'einund' ELSE l_O := GetDigit(l_Value) + 'und'; END; END; END; RemoveGroup(v_Text); r_Result := l_H + l_O + l_T; IF p_Group = 1 THEN BEGIN IF r_Result = 'eins' THEN r_Result := 'eintausend' ELSE r_Result := r_Result + 'tausend'; END; IF p_Group = 2 THEN BEGIN IF r_Result = 'eins' THEN r_Result := 'einemillion' ELSE r_Result := r_Result + 'millionen'; END; IF p_Group = 3 THEN BEGIN IF r_Result = 'eins' THEN r_Result := 'einemilliarde' ELSE r_Result := r_Result + 'milliarden'; END; END; PROCEDURE GetDigit @1105400004(p_Value@1105400000 : Integer) : Text[30]; BEGIN CASE p_Value OF 0: EXIT('null'); 1: EXIT('eins'); 2: EXIT('zwei'); 3: EXIT('drei'); 4: EXIT('vier'); 5: EXIT('fÂnf'); 6: EXIT('sechs'); 7: EXIT('sieben'); 8: EXIT('acht'); 9: EXIT('neun'); ELSE ERROR('%1 ist kein Einer',p_Value); END; END; PROCEDURE GetTenToTwenty @1105400005(p_Value@1105400000 : Integer) : Text[30]; BEGIN CASE p_Value OF 10: EXIT('zehn'); 11: EXIT('elf'); 12: EXIT('zwölf'); 13: EXIT('dreizehn'); 14: EXIT('vierzehn'); 15: EXIT('fünfzehn'); 16: EXIT('sechzehn'); 17: EXIT('siebzehn'); 18: EXIT('achtzehn'); 19: EXIT('neunzehn'); ELSE ERROR('%1 ist nicht zwischen 10 und 20',p_Value); END; END; PROCEDURE GetTens @1105400006(p_Value@1105400000 : Integer) : Text[30]; BEGIN CASE p_Value OF 2: EXIT('zwanzig'); 3: EXIT('dreizig'); 4: EXIT('vierzig'); 5: EXIT('fünfzig'); 6: EXIT('sechzig'); 7: EXIT('siebzig'); 8: EXIT('achtzig'); 9: EXIT('neunzig'); ELSE ERROR('%1 ist keine Zehner',p_Value); END; END; PROCEDURE FillGroup @1105400007(VAR v_String@1105400000 : Text[30]); BEGIN WHILE STRLEN(v_String) < 3 DO v_String := '0' + v_String; END; PROCEDURE RemoveGroup @1105400000(VAR v_String@1105400000 : Text[1024]); BEGIN v_String := COPYSTR(v_String,1,STRLEN(v_String) - 3); END;
Comments (4) |
Ende April / Anfang Mai bietet Microsoft eine Launch Roadshow zu Navision 5.0:
Desweiteren präsentiert Microsoft die neue Navision-Version auch vom 15. – 21.03.2007 auf der CeBIT (Vortragsprogramm).
Tags: bad_homburg, cebit, hamburg, launch, microsoft, msu-solutions-GmbH, Navision, neuss, roadshow, VeranstaltungenComments (0) |
Endlich gibt es das bereits vor langer Zeit angekündigte VS2005-Update für Windows Vista. Damit fällt endlich die nervige Startmeldung weg. 😉
Download: Visual Studio 2005 Service Pack 1-Update für Windows Vista
Tags: Visual Studio, Windows VistaComments (1) |
Wie mir mein Provider heute mitgeteilt hat, wurde über meine ehemalige Firmenseite www.forksoft.de massiver E-Mail-Spam begangen. Ich habe an der Seite schon seit geraumer Zeit nichts mehr geändert, aber offensichtlich habe ich damals eine Sicherheitslücke in mein E-Mail-Kontaktformular eingebaut.
Das Problem ist, dass ich die übergebene Absenderadresse damals nicht ausreichend validiert habe. Wenn man z.B. folgendes einträgt, konnte man an ziemlich viele Mailadressen Spam versenden:
kunde@domain.de[Zeilenumbruch]Bcc: test1@spamopfer.de, test2@spamopfer.de, …
Die Lösung ist natürlich mehr Misstrauen auf die Benutzereingaben zu legen:
if(!preg_match( "/^([a-zA-Z0-9])+([.a-zA-Z0-9_-])*@([a-zA-Z0-9_-])" . "+(.[a-zA-Z0-9_-]+)+$/", $fromAddress) die("ungültiges mailformat");
Also merke: Alle Benutzereingaben sind böse!
Tags: SecurityComments (0) |
In einem lesenswerten Artikel erklären Dr. Piers Barnes und Nic Svenson wieviele Aufnahmen man statistisch machen muss, damit in einem Gruppenbild niemand blinzelt. Sie modelieren dabei die durchschnittliche “Blinzelrate” mit 10 pro Minute. Ein Blinzeln dauert dabei ungefähr 250ms während die Belichtungszeit mit 8ms angegeben wird. Dann werden einigen weitere Annahmen getätigt und Dr. Barnes gibt im Anschluss eine Faustformel für Gruppen mit max. 20 Personen ab:
“Divide the number of people by three if there’s good light and two if the light’s bad.”
Die Anzahl der benötigten Fotos steigt natürlich stark mit der Anzahl der Personen. Bei ca. 30 Personen braucht man schon 30 Fotos um eine 99% Chance auf ein gutes Bild zu haben – bei 50 Personen ist es dagegen schon statistisch aussichtslos.
Gefunden über: Farbfoto
Tags: Steffen, WissenschaftComments (1) |
Microsoft hat Visual Studio 2005 mit dem ehrgeizigen Ziel konzipiert überall IntelliSense anzubieten. Das funktioniert in den meisten Fällen auch einwandfrei – aber es gibt ein paar wenige Ausnahmen. So wurde zum Beispiel vergessen Intellisense für Skin-Files in ASP.NET zu aktivieren.
Wenn man auf ein solches Problem stößt kann man unter Extra/Optionen/Text-Editor neue Dateierweiterungen an Text-Editoren binden. In dem speziellen Fall einfach “skin” Als Erweiterung angeben und den “Editor für benutzerdefinierte Steuerelemente” auswählen.
Tags: Visual StudioComments (0) |
Ehemals “theveniceproject” jetzt Joost ist ein Programm mit welchem man übers Internet Fernsehen kann. Aber das ist nicht alles man kann sich auch mit anderen unterhalten und nach Programmen suchen. Joost verwendet die p2p Technik zum Streamen der Programme (verwendeter Codec: H.264/MPEG-4 AVC).
Es ist wirklich nicht schlecht, wenn noch ein paar mehr Programme dazukommen. Die Qualität kann sich auch sehen lassen, also kann man nur hoffen, dass es irgendwann das “normale” Fernsehen ersetzt. 😉 Wer hat schon immer einen Fernseher dabei? So wird dies in Zukunft hoffentlich möglich sein.
Ich bin schon seit einiger Zeit Beta Tester und habe somit die Möglichkeit 2 Glückliche einzuladen. Also schnell ein Kommentar mit E-Mail Adresse schreiben, denn wer zuerst kommt mahlt zuerst. 🙂
Tags: joostComments (84) |
Nachdem die STC 2006 wegen dem ImagineCup-Finale ausgefallen ist, steigt dieses Jahr vom 21. bis 22. Mai 2007 wieder die beliebte Technologiekonferenz. Diesmal im Landschaftspark Duisburg.
Ab jetzt kann man sich auf http://www.studentconference.de registrieren und sogar für bestimmte Themen auf der Agenda voten. Da ich vor 2 Jahren so viel Spaß auf der STC hatte, werde ich mich natürlich auch dieses Jahr dafür anmelden.
Die Teilnahmegebühr beträgt diesmal 50,- Euro; enthalten sind dabei der Zutritt zur Veranstaltung, die Verpflegung, die Veranstaltungsunterlagen und eine Übernachtung in der Sportschule Wedau vom 21. auf 22. Mai.
Unter den ersten zweihundert Anmeldungen (vor dem 01.04.2007) verlost Microsoft sogar noch 10 mal Office Professional 2007
Anmeldungsschluss ist der 07. Mai 2007.
Warning: Creating default object from empty value in /www/htdocs/w007928a/blog/wp-content/plugins/wp-referencesmap/GoogleMapsWrapper.php on line 55
Bericht und Bilder der STC 2007
Tags: .NET, finale, stc, VeranstaltungenComments (0) |