Jak flushować pliki INI

Jakiś czas temu próbowałem tworzyć kopię zapasową pliku INI, który właśnie został zaktualizowany 2 linijki kodu wyżej i czego bym nie zrobił, wykonanie kopii zapasowej nigdy nie udawało się (plik nie zawierał wcześniej wprowadzonych zmian).

Próbowałem nawet jakichś dziwnych sposobów z użyciem funkcji Sleep, ale nic nie dawało rezultatów, ostatecznie z braku dalszych pomysłów (i nie aż tak ważnej roli tego kodu) porzucilem pomysł na wykonywanie tychże kopii zapasowych.

Dzisiaj zupełnie przypadkowo zobaczyłem na jakiejś stronie wywołanie funkcji WritePrivateProfileString z wszystkimi parametrami ustawionymi na NULL i jak się okazało to było to czego kiedyś szukałem – konkretnie powoduje zapisanie zmian wprowadzonych do pliku INI na dysk lub do rejestru (jeśli plik jest mapowany).

Zgodnie z dokumentacją na stronie MSDN, pliki INI są cache’owane, aby zwiększyć wydajność działania systemu operacyjnego.

Morał z tej historii taki, że jak już się czyta dokumentację, to nie należy kończyć na opisie parametrów i zwracanych wartościach 🙂

C Minus Minus

C– to język pośredni pomiędzy dowolnym innym językiem programowania, a kompilatorem i linkerem generującym binarny kod x86.

Suppose you are writing a compiler; how will you get quality machine code? You might write your own code generator—but that’s a lot of work. You might use somebody else’s: perhaps VPO, MLRISC, or the gcc back end. But each of these impressive systems has a rich, complex, and ill-documented interface, and furthermore, to use MLRISC you must write your front end in ML, to use gcc you must write it in C, and so on. You might generate C, if you can live without multiple results in registers, proper tail calls, computed gotos, accurate garbage collection, and efficient exceptions.

You would be much happier with one portable assembly language that could be generated by a front end and implemented by any of several code generators. Such a language should serve as the interface between high-level compilers and retargetable, optimizing code generators. Authors of front ends and authors of code generators could cooperate easily. C– is that language.

http://www.cminusminus.org/

WordPress v2.3.1

Ukazała się wersja 2.3.1 platformy WordPress (którą aktualnie oglądacie), w której poprawiono ponad 20 bugów.

WordPress 2.3.1 is now available. 2.3.1 is a bug-fix and security release for the 2.3 series. 2.3.1 fixes over twenty bugs. Some of the notable fixes are: Tagging support for Windows Live Writer Fixes for a login bug that affected those with a Blog Address different than their WordPress Address Faster taxonomy database queries, especially tag intersection…

http://wordpress.org/development/2007/10/wordpress-231/

Opera v9.5 beta

Wyszła wersja 9.5 beta przeglądarki internetowej Opera.

http://my.opera.com/desktopteam/blog/2007/10/25/opera-9-5-beta-released

Ciekawa sprawa z tą Operą, używam jej od bardzo dawna (za sprawą moich hax0rskich kolegów z czasów szkoły średniej), na początku nie była niczym kompresowana, potem przez parę lat traktowano ją Aspackiem i zupełnie ignorowano fakt wyłączania mechanizmu DEP powodowany użyciem Aspacka, co było dla mnie zupełnie niezrozumiałe, bo przecież DEP chroni przed atakami typu przepełnienie stosu na co przeglądarki internetowe powinny być wysoce uczulone.

Od kilku miesięcy zaczęto stosować UPX’a zamiast wysłużonego (i chyba dawno nieaktualizowanego) Aspacka i muszę powiedzieć, że jest to dobry krok.

Opera jest też ewenementem wśród przeglądarek internetowych, bo jest jedyną mi znaną spakowaną przeglądarką, żadna inna firma nie zdecydowała się nigdy skompresować swoich binarek, Internet Explorer, FireFox, Safari są czyste jak łza pod tym kątem. Lęk przed nieznanym, czy może zbytnia obawa przed oprogramowaniem antywirusowym?