Zoals jullie kunnen zien zijn er heel wat posts verdwenen, alsook alle comments, en heel wat info.
Door een verkeerd stuk code ben ik een heel deel van m’n database kwijt geraakt, ik heb geprobeerd te redden wat er te redden viel, en dat is me ook goed gelukt
De website ziet er bijna hetzelfde uit als vroeger. Nu nog even een plugin zoeken die automatisch m’n database backupped
Deze post is eigenlijk een hack, een soort van bypass voor een bug in Windows Vista.
In Windows Vista zit, gelijk in XP en zijn voorgangers, de optie ‘map instellingen voor alle mappen onthouden’. Standaard staat dit aan, zodat ge 1 map op afbeeldingen kunt instellen, 1 map op details, 1 map op lijst.
Voor sommige mensen is dit fijn, maar voor mij niet. Ik wil alles gesorteerd hebben op type, gegroepeerd per type, en ik wil details zien! Zo dus:
Dit werkt dus niet in Vista, ge stelt het in, en iedere keer vergeet hij het. Daarom deze oplossing, bestaande uit drie stappen:
Stap 1: Open de register-editor: Winkey + R , en dan regedit, en dan Enter duwen.
Daarnet was ik mijn harde schijf aan het uitpluizen, en kwam dit oude documentje tegen:
");
print("
");
print("...");
print("
");
//en dan bij de submit checken of empty($_POST['zpam']); ja->user->ok, nee->spambot->die();
//voordeel: geen userintereactie
//nadeel: wat als de spambot css ondersteund?
//nadeel2: user MOET css hebben, anders vult hij het ook in. Eventueel er een label bijzetten 'Vul dit niet in'
//en die ook hidden met css
//----------------------------------------------------------------------------------
//deze is ook soms fijn :+
print("
");
//dus de eerste keer als op het form wordt geklikt, veranderd de action.
//voordeel: geen userinteractie
//nadeel: wat als de bot JS heeft?
//nadeel2: wat als de user geen JS heeft?
//----------------------------------------------------------------------------------
print("
");
//en op het einde van u pagina doet ge dit:
?>
Vandaag mijn examen Java zitten te leren, eigenlijk gewoon alle oefeningen opnieuw maken, zodat ik terug de feel van Java te pakken krijg (veel gewerkt met C++ laatste tijd), toch gek, die syntax van klasses in Java, t.o.v. die van C++.
Een voorbeeldje:
//Java
public class ProfileTest extends Test
{
public ProfileTest()
{
super();
}
}
//C++
public class ProfileTest : Test
{
public ProfileTest() : Test()
{
}
}
Veel verschil is er niet, doch vind ik het gek, waarom ze werken met die super();, omdat die toch op de eerste regel MOET staan, voordat er iets anders wordt uitgevoerd. Dan is de syntax van C++ duidelijker, omdat er daar geen verwarring kan bestaan, op welke regel in de constructor deze moet komen.
Een ander onderdeel, waar een compleet andere gedachtengang nodig voor is, is het schrijven van een GUI, neem het simpele voorbeeld van een knop:
In Java doet men:
JButton b = new JButton();
b.addActionListener(new Listener());
public class Listener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
}
}
Weer is .NET veel meer to the point, het enige wat er moet gebeuren, is een functie schrijven, met de code wat er moet gebeuren, en dan een bepaald event aan de knop hangen, die de functie triggert, itt Java, daar moet de code worden geschreven, eventueel een class, of innerclass, die weer bepaalde klassen implementeert, en wat voor een namen: addActionListener(), actionPerformed()… in .NET is het Click. Simpeler kan toch niet?
Wat als ge een form hebt, met een button, die een nieuw form opent. Ge klikt erop, nieuw form opent, en ge hebt mooi 2 forms. Maar als ge dan op de knop duwt opent zich een nieuw form. Ongewenst gedrag. Hier een oplossing:
U popup:
public partial class Popup : Window
{
static Popup instance;
static Popup()
{
}
public Popup()
{
InitializeComponent();
}
public static Popup Instance
{
get
{
if (instance == null)
instance = new Popup();
return instance;
}
}
private void Popup_Closed(object sender, EventArgs e)
{
instance = null;
}
}
En u mainform:
public partial class Main : Window
{
public Main()
{
InitializeComponent();
}
private void clicky_Click(object sender, RoutedEventArgs e)
{
Popup popup = Popup.Instance;
popup.Show();
popup.Focus();
}
}
Op een dag hebt ge een sloot aan code, zo traag als wat. En dan wilt ge gaan controleren waar hij traag is.
Dus we gaan op zoek, Google: Visual Studio 2005 profile code. Leuk, ge moet de Team Edition hebben. En hoe moet ik daar nu aan geraken als zijnde student? MSDN subscription kopen? Sorry maar dat is me net wat te duur.
Ik vind het jammer, de Professional kost ~1000 euro / licentie, dus als ik deze na mijn studies zou aanschaffen, zou ik nog niet eens een profiler hebben. Hier slaat Microsoft toch een beetje de plank mis
Dadelijk eens mailen naar de MSDNAA-maintainer bij ons op school, eens zien of ik via dat systeem kan krijgen. Ook zou ik graag Visual Studio 2008 hebben, maar dat zal nog even duren eer we die kunnen krijgen.
Momenteel ben ik bezig aan een agenda-applicatie, die communiceert met een MySQL database via PHP, zodat ge de agenda overal kunt bekijken. Waarom niet via een online applicatie? Veiligheid, en het ziet er gewoon wat gelikter uit, die mooie venstertjes. Dat is iets waar .NET in uitblinkt, alles ziet er hetzelfde uit. Daar kunnen de devvers van WLM nog wat van leren, aangezien zij hun vensters er standaard anders laten uitzien.
Ik post straks even een tutorial over WLM, hoe dat ge alle vensters er hetzelfde kunt laten uitzien!
Ik schrijf deze tutorial voor personen, die net als ik heel wat problemen hebben met een programma als dit te installeren. Gemakkelijk is het niet.
We hebben een aantal dingen nodig:
Een werkende Apache 2 installatie
Een werkende PHP installatie
(eventueel) een MySQL installatie
Voor de bovenstaande dingen kan ik u verwijzen naar XAMPP.
Anyway, on to the next requirement: de Zend debugger.
Download deze hier. Als ge de zip opent krijgt ge dit:
De dummy.php die ik heb geselecteerd zet ge in de root van u webserver. Going on:
Let’s assume dat u PHP is geinstalleerd in C:\PHP. (of C:\xampp\php\ als ge XAMPP gebruikt)
In de map 5_2_x_comp vind ge ZendDebugger.dll. (nog steeds in het archief) Zet deze file in C:\PHP\. (of C:\xampp\php\)
Open u php.ini (in C:\PHP\php.ini, of C:\xampp\php\php.ini), en plak dit er op het einde aan vast:
zend_extension_ts=c:/php/ZendDebugger.dll
;of, als ge xampp gebruikt, comment de regel hierboven, en uncomment de regel hieronder
;zend_extension_ts=C:/xampp/php/ZendDebugger.dll
zend_debugger.allow_hosts=127.0.0.1
zend_debugger.expose_remotely=always
Ga nu naar de keuken, zet een tas koffie, en als die klaar is, zal u download klaar zijn
De installatie is eigenlijk perfect, ge opent de installer, en klikt constant op next, next, next, …, finish.
Next up: Zend Neon opstarten, wat verschrikkelijk moeilijk is! Dubbelklikken op het icoontje op de desktop!
Ok, Zend is normaal opgestart, en ge krijgt een mooi welkomscherm. Sluit dat, zinloos! Dan krijgt ge dit:
Zonder code natuurlijk
Nu gaan we een nieuw project aanmaken:
File > New > PHP Project. Geef het een naam, en dan komt het ‘moeilijke’: ge moet het pad aanpassen, dus ipv het default pad te kiezen, past ge het pad aan, en zet ge da in de root van u webserver (c:\Apache\htdocs\, wat ge hebt gekozen bij de installatie van Apache)
En dan gewoon op Finish klikken Project klaar.
Nog wakker? Ja -> lees verder. Nee? Dan komt de koffie van pas. Nu verder lezen!
Windows > Preferences. En dan onder: General > Webbrowser. Use external browser.
Nu kunt ge code schrijven, breakpoints toevoegen en dergelijke, en dan via de toestencombinatie ‘Control + Shift + X‘, en dan ‘W‘ het script debuggen in de webbrowser.
Ook is dat mogelijk via de Zend Toolbar, die is meegeinstalleerd, waarmee ge POST kunt debuggen en derlijke. Succes!
Met dank aan Jan voor te testen, en voor het verwijzen naar XAMPP.
Let’s say dat we een form hebben, met allerhande mogelijkheden, en een daarop een knop met de instellingen. Deze instellingen worden in %appdata% of HKCU opgeslagen, daar kan dus geen andere user aankomen / ondertussen aanpassen.
Normaal doet ge het zo: knop wordt ingedrukt, en dan worden de instellingen ingelezen, en die worden dan weer ‘geplakt’ in het form. Maar wat als ge zoiets hebt, maar dan met veel MEER data, wat telkens moet ingelezen en geparsed moet worden.
Of als ge gewoon een venstertje wilt wat zijn inhoud onthoud?
Simpel eigenlijk:
private FormOpen form;
public MainForm()
{
form = new FormOpen();
}
Creeer het form in de constructor.
En dan het Closing (niet Closed!!!!!) event in het nieuwe form:
And shepherds we shall be, for thee my Lord for thee, power hath descended forth from thy hand, that our feet may swiftly carry out thy command. We shall flow a river forth to thee, and teeming with souls shall it ever be. In nomine Patris, et Filii, et Spiritus Sancti.