yoy.be "Why-o-Why"
Freeware:
![[MetaKeys]](http://yoy.be/freeware/ico_metakeys.png)
|
06-28 10:18
Metro 🇧🇪
Overheid werkt aan alternatief voor Itsme # Als ze slim zijn maken ze het 'open' genoeg, en direct klaar om ook Europees aan te bieden, al was het om tegenwicht te bieden aan Estland die hun platform ook graag zou ingevoerd zien over geheel Europa...
06-26 13:34
/.
Are Today's Programmers Leaving Too Much Code Bloat? # Ik krijg mijn kop nog altijd niet rond
isOdd. Hoe is dat zo ver kunnen komen! Kon er echt niet meer ingegrepen worden? Wie schopt er de losgeslagen horde een geweten? Nee we moeten bijna niet meer rebooten na een blauw scherm, maar dit is
omdat er net nog een paar goeie de juiste dingen hebben kunnen doen voor het te laat was.
06-24 23:43
c|net
The Mercedes-Benz Vision EQXX Looks at Home on the Race Track - CNET # Oh, ontstaat daar een nieuwe wedstrijdsklasse? 1200Km op een volle lading (en dan nog over hebben voor een paar rondjes)! Wie doet beter? De vraag is wel of je de deelnemers op gelijke basis kan vergelijken, want als ze de passagiers-plaatsen bijvoorbeeld laten vallen ten voordele van nog een hoop batterijen, kan je waarschijnlijk gek gaan in afstand op een 'enkele batterijlading'...
06-24 23:27
Foreign Policy
What in the World? # 8/10! Heb er 3 goed gegokt, en dat van G7 had ik eigenlijk wel moeten weten...
My take on Free vs FreeAndNil
2022-06-25 00:52
FreeAndNil
[permalink]
→ Coding in Delphi and beyond: Delphi Debates: FreeAndNil
;TLDR: I agree.
I, for myself, have a pretty straight-forward rule to follow. In most cases 'lifetime management' of objects is pretty plain and normal: there's one single place in the code where an object comes into existence (the call to a constructor), and exactly one single place in the code where it is cleaned up. In that case there's no reason that I can think of to use anything else than the Free
method. Sometimes the constructor is called from another constructor, and you free from the partner destructor, in effect linking the lifetime of the object to this 'owner' object. Most other cases, you just need an instance of a class to do something with. It typically looks like this:
var
a:TThing;
begin
a:=TThing.Create;
try
//...
finally
a.Free;
end;
end;
Neat! One very (very) important thing to note here is that under no circumstance you're supposed to do anything with this object reference after that (other than assigning with a new constructor call etc.) Thanks to Delphi internals, you'll probably get an access violation, but you might just as well end up calling some code that has been put in the memory where the instance was, and has unintended consequences.
If, for any reason whatsoever, you need/want to write code that may or may not be assigned to a live instance of an object, you could and should use nil
. In the places in the code where it's not sure if there's an instance, be sure to check for a nil
value. Consider this snippet:
var
a:TThing;
begin
a:=nil;//counter warning
try
if //only in some cases
begin
a:=TThing.Create;
//...
end;
//...
if a<>nil then
begin
//use a for something
end;
//...
finally
if a<>nil then
begin
a.Free;
a:=nil;
end;
end;
end;
Seasoned Pascal-coders will have objections to this snippet, rightfully so, but the point I want to make that there's some extra steps taken here to 'keep it safe'. There's just this one thing that's not so easy to spot: a.Free;
could in theory throw an exception. If there's an except
clause below that, and it wants to get some data from a
, it won't work. a
isn't nil, but the constructor may have already taken down the object instance so far down it will no longer behave as expected. There's a way around that though, and you can see for yourself rightaway if you have a look for yourself at FreeAndNil
itself:
procedure FreeAndNil(var Obj);
var
Temp:TObject;
begin
Temp:=TObject(Obj);
Pointer(Obj):=nil;
Temp.Free;
end;
(There's some casting to/from pointer and TObject here, but that's to make sure it works in even the strangest cases. It basically sets the reference to nil
before calling Free
.) If you've seen that first without the context I described above, you might think 'what is going on here' or 'what is the fuss about'. So I hope I was able to bring some enlightenment. The best case would be if you've learnt nothing new here, and also agree with this rule:
If you have an abnormal object instance lifetime management situation and/or need to entertain instance references that may be nil
, use FreeAndNil
. In all other cases use plain Free
(and keep calls to constructors and destructors in perfect balance!)
06-24 16:18
scripting
It shouldn't be 6-3 # Hij mist denk ik de hoofdzaak in deze. Waarom zijn de hoogste justitiefunctionarissen hoegenaamd partij-gealignieerd?! Hun scheiding der machten is dus eigenlijk in gevaar. Meer nog: waarschijnlijk al geruime tijd een travestie. Ik dacht eerst 'waar zou je zelfs twee gemodereerden moeten vinden,' maar dan dacht ik hoe het bij ons zou gaan, en ik kreeg even een knoop in de maag aan de gedachte dat onze procureurs des konings zouden aan een partij verbonden zijn. Maar misschien weet ik er gewoon te weinig van (en is dat zelfs zo, maar in de praktijk gewoon helemaal geen probleem). Ik vraag me toch langzaamaan af of hun State of the Union eigenlijk plots niet heel erg in gevaar zou komen door al die domme dingen...
06-22 18:16
phys
Startup using microorganisms to make 'green' cement # Ik was vandaag nog aan het denken: woestijnzand willen ze niet in de bouw om beton te maken, dat is te fijn. Het moet heel specifiek rivierzand zijn dat net precies goed genoeg is in korreltjes gebroken zonder al te veel door watererosie te zijn afgevlakt. Zou je toch een procédé kunnen ontwikkelen om woestijnzand 'om te zetten' in geschikt zand voor beton? Stel dat je het smelt (ter plekke in de woestijn op zonne-energie) en dat dan manueel verbrijzeld tot in de juiste graad?
06-20 14:00
vox
Why grain can’t get out of Ukraine # Zou er al in stilte worden gewerkt aan een internationaal politiek momentum om een internationale alliantie te maken die van buiten Ukraïne kan optreden om de Russen te verdrijven? Het is gemakkelijker dan gezegd, en gaat een heel stuk meer inhouden dan wat we nu in Ukraïne zien. Wat met een eventuele dreiging langs de Finse grens? Wat met Moldavië? Wat met Wit-Rusland? Wat met Noord-Ossetië, nu Georgie blijkbaar ook in de Europese Unie wil? Ik blijf een storm op Moskou zien op de horizon van het domein aan mogelijke militaire reacties op de huidige malaise...
06-21 18:10
NWS
Vier miljoen (!) mensen hebben dringend hulp nodig na overstromingen in India en Bangladesh # Het is nu natuurlijk gemakkelijker dan gezegd, — en dit mag zeker niet af doen aan het respect en medeleven dat ik heb voor de mensen die dit moeten ondergaan — maar zou het kunnen dat er misschien meer had kunnen worden geïnvesteerd in infrastructuur van de waterwegen en regenwaterbeheersing? Ik dacht even aan die 'droge kanalen' die je af en toe wel eens in Amerikaanse films zag, maar da's misschien een brug te ver. Er is niet alleen het juiste politieke klimaat voor nodig, maar ook de kennis en kunde en die komen niet zomaar vanzelf natuurlijk.
06-17 11:29
tweakers
TSMC produceert komende drie jaar 3nm-chips op vijf verschillende procedés # Dat is toch gek?! Straks gaan ze zo klein dat elektronen gewoon niet meer braaf van links naar rechts gaan springen! Meer nog, wat ik hier niet terugvind, als ze zo klein gaan, in massa-productie, dan als er iets fout is, dan gaat het goed fout en zijn er direct x units voor de vuilbak. Meer nog, het gevaar wordt toch groter nu dat in de post-productie tests er defecten niet worden ontdekt?
06-20 20:40
HN
I Fucking Hate Jira # Ik ben er vooralsnog ver uit de buurt van kunnen blijven (hoewel een ander team op het werk is gaan gebruiken...) Ik ben dus niet op de hoogte van de sterke en (blijkbaar veelvuldige) mindere punten. Wel ben ik verregaand geïnvesteerd in
mijn eigen oplossing en zal waarschijnlijk mijn eigen set inzichten en meningen aanbrengen mocht ik ook moeten een evaluatie aanbrengen.
06-18 15:00
Motley Fool
Can Bitcoin Reach $100,000? # Zou ik kunnen gelijk hebben met het idee dat vanwege de inflatie eerst de 'echte houders' wat verkopen — of moeten verkopen — en dat door die verkoop de 'speculatieve houders' zijn mee gaan verkopen? Is de daling van nu dus eigenlijk een 'correctie'? Waar zou de bodem dan zitten? Zou het terug ophoog gaan? Naar 100K$? Wel ben ik bijna zeker dat niet de finale interesse-val is zoals de ontwerper van Bitcoin had voorzien.
06-17 10:57
TheCritic 🇬🇧
The American nightmare # Ik vraag me ook af wat er effectief zou zijn tegen de 'zwaai naar rechts' die zich blijkbaar blijft doorzetten. Plus ook moeten we waken dat er geen 'zwaai naar links' wordt ingezet. Als we ons nu inzetten tegen de pendelbeweging an sich? Vóór langetermijndenken en nuance?
06-17 16:50
jalopnik
Ferrari Says Never to Self-Driving # Ah kijk. Een tijd terug dacht ik dat er een gevaar bestaat de Jan-met-de-pet-in-de-straat die het allemaal maar moet zien te volgen hopeloos in de war zou raken tussen elektrische wagens en zelf-rijdende wagens, en de twee onterecht over een enkele kam zou scheren, maar nu maak ik me daar geen zorgen meer in. De prijs van elektrische wagens gaat genoegdoend omlaag zodat het er naar uit ziet dat ze langzaamaan voor heel veel mensen een betere optie worden, en met die zelf-rijdende auto's is er nog een hele hoop niet in orde...
06-16 06:34
Independent 🇬🇧
PG&E moves power underground in plan to bury 10,000 miles # Ik blijf mij afvragen of ondergrondse hoogspanning altijd met gelijkspanning moet. Het probleem daarbij is het verlies bij omzetting (x2) en de extra plaats en investering dat die omzettingsinstallaties nodig hebben... Ik beeld me een tunnel in met daarin een hoogspanningskabel, maar dat is misschien te simplistisch. En of dat dan nog altijd minder duur is dan alleen een kabel in de grond (met twee omzettingsinstallaties) weet ik ook niet natuurlijk.
06-14 10:00
𝒟 ɴʟ
Microsoft stopt Internet Explorer support # Ik dacht ooit iets super vernuft te kunnen maken om met
OleDraw en een TWebBrowser instance relatief vlot HTML in een JPG te kunnen omzetten, en dit heeft jaren vlot gewerkt voor iets op het werk, maar dit heb ik dan toch maar recent met iets nieuw vervangen, in de veronderstelling dat dit mogelijk 'binnenkort' (of toch op volgende Windows versies) gewoon helemaal niet meer gaat werken. (Voor wie het interesseert: nee, ik heb het niet met een 'headless browser' vervangen, dat is veel te veel overkill voor wat het ding eigenlijk moest doen...)
06-10 16:29
phys
Nuclear energy is wildly uncompetitive without a high price on carbon dioxide emissions # Boeiend. Ja, een nuchtere discussie is nodig. Als je gegenereerde CO₂ wil zien meetellen in de markprijs, dan moet de prijs van de elektriciteit zoals we ze nu kennen flink omhoog, want maar een (klein?) deel wordt nucleair opgewekt. Dat gaan de mensen niet graag zien komen natuurlijk. En de voordelen van een sterke vermindering van de CO₂ uitstoot zijn niet zo tastbaar. Het gaat interessant zijn waar de opbrengst van de carbon-taks voor moet worden aagewend worden, neem ik aan. Uitbreiding van het elektriciteits-netwerk? Batterij-installaties? Vooruitbetalen van de nucleaire afbouw?
06-08 17:06
HN
Sunsetting Atom Text Editor # Dit zat er aan te komen, dit had je moeten zien aankomen. Ikzelf heb ook even intens atom.io gaan gebruiken, tot ik — zoals waarschijnlijk velen — ben overgestapt naar
vscode. Dat en deze die aan
Sublime blijven plakken lijken nog heel moeilijk van iets anders te overtuigen, heb ik zo de indruk... Maar inderdaad
Electron leeft verder, de inspanning die naar Atom ging nu naar andere dingen gaat is misschien niet slecht.
06-03 10:10
FC
Why are so many high-income Americans living paycheck to paycheck? # Zie, dat vroeg ik me ook al af. Done ze veel, zo niet alles, op krediet? Hier staat dat er een deel gewoon veel uitgeeft en daarom ongeveer uitkomt aan het eind van de maand. Wat er niet staat maar toch ook moet spelen is dat studeren dat uiteindelijk duur is (en je dus afstudeert diep in het rood) en hun vadertje staat veel minder gul is op latere leeftijd dan hier...
06-03 19:23
cringely
Apple’s Space Ambitions are Real # Ja, het kan kloppen. En dan zijn het weer de Amerikanen die het voor het zeggen hebben, dat gaan ze niet leuk vinden in de Europese Commissie...
05-22 15:05
tnw
Here’s why Europe needs a digital euro # Het lijkt me allemaal zo'n glazen-bol-getuur. Het klinkt allemaal goed en wel in idee-fase, maar ik wil toch al wat meer lezen over hoe ze het concreet zouden uitwerken. Je kan misschien een block-chain starten en hopen dat het ingang vind bij de (juiste) mensen, en dat er spontaan de nodige dingen rond ontstaan zoals bij Bitcoin en Ethereum zijn ontstaan (zoals de monitors en exchanges), maar ik vrees in een officiële capaciteit dat ze ook dat in handen gaan moeten nemen én toch op de juiste plekken onafhankelijkheid garanderen... Moeilijke evenwichtsoefening als je het mij vraagt, al was het dat elke nieuwe officieel-crypto-oplossing een link gaat móéten hebben naar de huidige (niet of minder officiële) crypto.
05-19 19:16
HN
Computer science is a liberal arts degree # Da's al een knap lijstje! Ik zou die moeten toevoegen aan mijn
collectie hier en zelfs misschien ooit eens op een dek kaarten laten drukken, zodat je die 'op tafel kan gooien' om te argumenteren en tegen-argumenteren over systeem-ontwerpen alsof het een kaartspel is...
05-21 13:00
ars
Biden administration lays out plan for four carbon-capture facilities # Met al die nieuwe batterij-technologie waar er naar gezocht wordt... Als je zo'n hoop gesequestreerd koolstof hebt, zou je dat als batterij kunnen gebruiken om elektronen in te parkeren over al dat koolstof? Waarschijnlijk ga je koolstof op zich niet zomaar als kathode of anode kunnen gebruiken...
05-20 23:27
reuters 🇪🇺
U.S. says Turkey's approach to Sweden, Finland NATO bid not a bilateral topic # Zou iemand de ballen hebben om nu aan Erdogan voor te stellen dat misschien op termijn de Koerden eigenlijk wel graag zouden hun stukje land vredig en ongestoord zelf in eigen controle willen hebben? Jammer dat er met classificaties van terroristen wordt gegoocheld, maar het verleden wis je niet uit natuurlijk, en gaat altijd meespelen in beslissingen over de toekomst...
05-20 09:19
tokyo
Urusei Yatsura Anime Reboot to Air This October! # Zie, ze kunnen soms héél mooie dingen doen als ze die echt oude dingen hernemen. Het is niet gewoon dat alles een nieuw laagje krijgt, ze herbekijken de opbouw van het verhaal en kunnen sommige dingen nog eens extra uitwerken, uitdiepen of zelfs een onverwachte draai geven. Dat is toch wat ik heb opgevangen van Yamato 2199 dat ik ten zeerste de moeite vond (zonder de originele Yamato reeks helemaal gezien te hebben).
05-20 16:45
gizmodo
The 10 Dumbest Apple Patents That Made People Lose Their Minds # Tja, kijk, als het geld vlotjes binnenkomt, dan kan je het veroorloven om alles te patenteren, vanaf het idee zich al laat opschrijven — gelijk welk idee. Je weet nooit of het iets wordt, dan heb je alvast het patent al. Als een ander er ook op komt en er later wél iets mee slaagt te doen, kan je misschien alsnog er geld voor vangen...
Archive...
Search...