A devportal.hu egyik blogjáról jutottam el a What is the best comment in source code you have ever encountered? humoros cikkre a stackoverflow-n, ahonnan az egyik megjegyzésből a Making Wrong Code Look Wrong hasznosságra.
Jó olvasgatást…
A devportal.hu egyik blogjáról jutottam el a What is the best comment in source code you have ever encountered? humoros cikkre a stackoverflow-n, ahonnan az egyik megjegyzésből a Making Wrong Code Look Wrong hasznosságra.
Jó olvasgatást…
Néhány hasznos dolog Delphi programozóknak ami eddig kimaradt.
Még régebben találtam egy jo kis magyar leÃrást a többszálúságról pontosabban annak elkerülésérÅ‘l Delphiben, miközben a felhasználói felletet nem akadályozva akarunk hosszabb ideig tartó műveleteket végezni.
szálőrület bejegyzései: TThread, Application.ProcessMessages, PeekMessage, OnIdle
A Windows üzenetkezelésérÅ‘l Delphiben egy másik hasznos leÃrás a A Key’s Odyssey
Dynamic array, open array parameters, array of const @ Rudy’s Delphi Corner – Open array parameters
Debugging with OutputDebugString() @ Delphi Tips – Delphi Programming
Persze még van sok minden de most ezek jutottak eszembe.
Ma találtam egy idézetet ami jól leÃrja tapasztalataimat a c fordÃtók hatékonyságáról:
“When C++ compilers can be coerced to emit rcl and rcr, I *might* consider using one.”
Ma egy új program nyelvvel ismerkedtem meg: D
Éppen egy genetikai mintaillesztésen (short-read) gondolkodtam. Rendezési, indexelési algoritmusokat olvasgattam a neten, amikor egy in-place radix sort algorithm kérdésbe futottam bele, ahol egy D mintakódot láttam, és felkeltette az érdeklÅ‘désemet. Ahogy olvastam a nyelv leÃrását, összehasonlÃtásokat C++-szal, újra elÅ‘jöttek a különbözÅ‘ programozási nyelvekrÅ‘l alkotott gondolataim.
Az évek során elég sok programozási nyelvvel találkoztam: asm, asp, basic, bapc, c, c++, c#, clipper, delphi, java, js, pascal, perl, php, vbs, és ami most nem jut eszembe. Persze nem mindben programozok napi szinten, de Ãrtam bennük működÅ‘ programot. Az elsÅ‘ a basic volt még C64-en 🙂 Persze ezeken kÃvül láttam vagy hallottam még egyéb programnyelvekrÅ‘l is (ada, cobol, fortran, python).
Minden nyelvnek megvannak az elÅ‘nyei hátrányai. A delphiben imádom a string kezelést. Szeintem ez a legnagyobb elÅ‘nye a c-vel szemben. Egyszerű kezelni, hatékony, másolható, összefÅ‘zhetÅ‘, gyors (referencia számlált), nem kell bajlódni a memória kezeléssel. A c programok jelentÅ‘s részében a hibák, biztonsági rések oka a helytelen memória kezelés, string műveletek. Amikor egy függvény több karaktert Ãr a visszatérési bufferbe, mint annak a mérete, lásd scanf, gets, wchat konverzió.
A másik amit szeretek a delphiben a függvény paraméterek kezelése: érték szerinti, const ill. var referencia szerinti átadás. Tiszta, jól látható, könnyen módosÃtható. Kiráz a hideg, amikor a c pointer változó átadásaira gondolok, és hogy milyen könnyű hibás kódot irni. A c++ referencia paraméteri már sokkal jobbak.
A Delphiben az erÅ‘s tÃpusosság is jól jön idÅ‘nként, megkönnyÃti a véletlen hibák kiszűrését, programozást az IDE-ben.
Egy másik dolog ami elég megtévesztÅ‘ tud lenni c-ben, az a pointer növelés és tömb indexelés: int32 a[5]; a[3] == *(a+3), word hi=*(word*)(a+2), hi=*(word*)((int)a+2), hi=*(word*)((char*)a+2) … én egy konstans eltolástól naivan egy mov word ptr [dx+2]-t várnék, egy indexeléstÅ‘l pedig mov word ptr [dx+idx*sizeof]-ot, de a c szerint az eltolás is tÃpusfüggÅ‘ indexelés…
A C#-ban a using blokk hasznos a biztonságos erÅ‘forrás felszabadÃtáshoz.
Na mára ennyi elég…
Néhány szó a kategóriákról: A kategóriák és a cimkék nem azonosak. Bár ugyanazt a funkcionalitást többé kevésbé el lehet érni, nem ugyanarra valók.
A kategóriák hierarchikus rendszerben vannak, és rendszerezésre szolgálnak, a funkciójuk ugyanaz mint a könyvekben a tartalomjegyzéknek.
A cimkék a tartalom leÃrására szolgálnak, a könyvekben erre a célra a szójegyzék/index szolgál.
Használjuk ezeket ennek megfelelően.
http://lorelle.wordpress.com/2006/03/01/tags-are-not-categories-got-it/
Most hogy probaltam a C#-ban megirt kodot VB-re atirni jottem ra, hogy meg a 3.5-os VB.NETben sincs automatikusan implementalt property…
Automatically implemented properties
Auto-implemented Properties in VB and C#
Igaz, hogy Delphiben sincs, de nem is nagyon van ra szukseg. A VB-nek viszont nagyon kene.
Lassuk mit tudnak az automata konverterek:
Az elso viszonylag jol hasznalhato, bar meg nem volt idom tesztelni
Convert C# to VB.NET
a tobbi amit eddig talaltam ennel gyengebb:
converter.telerik.com
KamalPatel.Net – Convert C# to VB .NET
Az elkeszult projektet nem art neha ellenorizni:
ASP.NET Memory Leak Case Study: Sessions Sessions Sessions
Production Debugging for .NET Framework Applications
Windows Debuggers: Part 1: A WinDbg Tutorial
Ha valakinek nincs kedve debuggerekkel szorakozni akkor a jo kis adminisztratori eszkoz is szolgalhat hasznos informaciokkal: Admin. Tools – Performance Monitor
A titok a megfelelo szamlalok kivalasztasaban van. (hdd-hez a disk queue-t ajanlottak)
.NET CLR Memory – aspnet_wp – # Bytes in all Heaps
ASP.NET Applications – Cache API Entries
Process – aspnet_wp – Private Bytes
.NET Framework General Reference: Memory Performance Counters
.NET Framework Developer’s Guide: Performance Counters for ASP.NET
Ha valaki sql-lel foglalkozik akkor tudnia kell mi az az SQL Injection, es hogy hogyan lehet vedekezni ellene.
pl. php + MySQL : mysqli_real_escape_string()
php + PostgreSQL : pg_escape_string()
tovabbi leiras :addslashes()
(html generalasakor ajanlatos megnezni a htmlspecialchars(), htmlentities() fuggvenyeket)
MSSQL-ben tobb lehetoseg is van az escape character hasznalata mellett:
How To: Protect From SQL Injection in ASP.NET
Az SqlParameter Class hasznalata akkor is jo, ha sql queryben datetime tipusokat kell osszehasonlitani (es nem tudjuk milyen istenverte formaban varja tolunk a datumot)
SqlDataAdapter adapter = new SqlDataAdapter(
"SELECT * FROM Food WHERE expdate < = @expd", connection);
adapter.SelectCommand.Parameters.Add("@expd", SqlDbType.DateTime).Value = DateTime.Now;
a kapcsolatok megfelelo kezelesere erdemes elolvasni ezt:
C# Using Statement
Adatbazis kapcsolat tarolasa web.config-ban (mert ott jo, vagy machine.config-ban):
How to: Read Connection Strings from the Web.config File
vagy ConfigurationSettings.AppSettings[...]