• mina86.com

  • Categories
  • Code
  • Contact
  • Most vexing parse

    Here’s a puzzle: What does the following C++ code output:

    #include <cstdio>
    #include <string>
    
    struct Foo {
    	Foo(unsigned n = 1) {
    		std::printf("Hell%s,", std::string(n, 'o').c_str());
    	}
    	~Foo() {
    		std::printf("%s", " world");
    	}
    };
    
    static constexpr double pi = 3.141592653589793238;
    
    int main(void) {
    	Foo foo();
    	Foo bar(unsigned(pi));
    }

    Strach

    English version available on The Codeless Code.

    Niedawno przyjęty do świątyni mnich zbliżył się do mistrza.

    — Otrzymałem zadanie dodania kilku nowych funkcji do systemu obsługi zamówień Cesarskiego Szewca, ale nie jestem w stanie zrozumieć, jak on działa. Logika jest rozproszona pomiędzy wiele aplikacji zaimplementowanych przy użyciu najróżniejszych technologii. Zamiast stworzyć wspólne biblioteki, autorzy najzwyklej skopiowali fragmenty kodu pomiędzy różnymi miejscami, często wprowadzając subtelne rozbieżności. Zadania pracujące w tle wyszukują i modyfikują rekordy w bazie danych bez żadnego udokumentowanego powodu. Sama baza danych wydaje się spiskować przeciwko mnie: prosta modyfikacja jednej tabeli może wyzwolić kaskadę zmian w wielu innych.

    The time has come to stand up for the GPL

    For people who know me it should come with no surprise that I support free software in most forms it can take. I also believe that if someone gives you something at zero price, basic courtesy dictates that you follow wishes of that person. This is why when Software Freedom Conservancy started a GPL Compliance Project for Linux Developers I didn’t hesitate even for a minute to offer little Linux copyright I held to help the effort.

    Most importantly though, it is why I fully support Conservancy in taking legal action against VMware which for years has been out of compliance with Linux’s license.

    If you care about free software, the GPL or want more projects like OpenWrt, consider donating to help Christoph Hellwig and the Conservancy with their legal battle against this multi-billion-dollar corporation who for some reason decided to free-ride on other people’s work without respecting their wishes.

    If you can’t or don’t want to donate, twitting something along the lines of ‘Play by the rules, @VMware. I defend the #GPL with Christoph & @Conservancy. #DTRTvmware Help at https://sfconservancy.org/supporter/’ or otherwise spreading the word will help as well. Oh, and in case you were, like I was, wondering — DTRT stands for ‘do the right thing’.

    And if you want to know more:

    Miscellaneous tips and tricks

    Don’t you hate when you need to do something you had done before, but cannot remember how exactly? I’ve been in that situation several times and sometimes looking up for a correct method turned out considerably harder than it should. To alleviate the need for future Googling, here’s a bag of notes I can reference easily:

    Looking for Python stuff? Those are now in separate post:

    Prime numbers less than 100

    The #1 programmer excuse for legitimately slacking off: ‘My code’s compiling.’
    XKCD #303

    Anyone working in a major company must have been hit by some ‘funny’ mail from a coworker that helps everyone gets through the day. No different at my office — at one point all engineers have been challenged to write the shortest code in C that prints all prime numbers (and only prime numbers) less than a hundred each on separate line.

    This is an interesting brain-teaser so posting it here so others may choose to think about it while their code’s compiling.

    Of course, a ‘C program’ needs not to be taken too seriously — depending on not too far fetched undefined behaviours of given implementation is all right (but please do not use system or exec family of calls; not that I can see how that would help).

    By the way, if you’re interested in how this challenge looks solved in Rust, I’ve described that as well.

    Synchronizacja w jądrze Linux

    Prezentacja z seminarium dyplomowego na temat mechanizmów synchronizacji w jądrze Linux. Pokrótce przedstawia bariery pamięci, zmienne atomowe, semafory, spinlocki itp.

    Dni Wolnego Oprogramowania

    UPDATE: Dni ciągle jeszcze trwają, acz moja prelekcja już się odbyła, w związku z czym umieszczam nowszą, a tym samym poprawioną wersję prezentacji wraz z pełnymi kodami źródłowymi.

    Niektóry wiedzą, inni właśnie się dowiedzą, iż w przyszły piątek (5 marca) ruszają III Dni Wolnego Oprogramowania w Bielsku-Białej. Będę miał przyjemność nie tylko bycia na tej imprezie, ale również aktywnego uczestnictwa. Dla wszelkich osób zainteresowanych udostępniam wersję alfa prezentacji, którą będę przedstawiał. Po zakończeniu wystawię wersję finalną wraz ze wszystkimi kodami źródłowymi.

    Treasure Hunt w Prologu

    W poprzednim wpisie pisałem o Google Treasure Hunt, a w szczególności o zadaniu czwartym. Teraz, w ramach przygotowań do kolokwióm z języka Prolog postanowiłem napisać w nim rozwiązanie postawionego problemu:

    Czcionki a kwestia tłumaczeń

    Jakiś czas temu natknąłem się na artykuł opisujący własności wyświetlanego na monitorze tekstu i konsekwencje niskich rozdzielczości. Znalazła się tam również bezmyślna propaganda na rzecz słowa „font”, o której chciałbym pokrótce napisać.

    Autor uzasadniał, iż „czcionka” to pojedyncza litera, z której składało się całe strony i ma się nijak do tego czym są obiekty stosowane w komputerze. Zarzucał nieudolność tłumaczom, którzy z braku wiedzy zastosowali złe określenie.

    Pragnę jednak wszystkich zachęcić, aby słowa „font” nie używać! Jest ono okropne! Jako ordynarne ściągnięcie z angielskiego brzmi dziwacznie.

    Tymczasem zarzucanie, że „czcionka” jest nazwą niewłaściwą, to jak zarzucanie, że nazwa „plik” nie powinna być używana, bo już od dawna dane nie są przechowywane w postaci plików kartek. W kontekście informatycznym istnieje wiele słów, których znaczenie jest odległe od jego znaczenia w innych kontekstach i dlatego nic nie stoi na przeszkodzi, aby stosować nazwę „czcionka”!

    Do tego wszystkich Czytelników gorąco zachęcam, a osoby zajmujące się składaniem tekstu niechaj zostawią kwestie językowe językoznawcom.

    Treasure Hunt a szybkość D

    Zachęcony wpisem GiMa postanowiłem pobawić się w Google Treasure Hunt. Z początku moje wrażenia były negatywne, ale to dlatego, że zacząłem od zadania sieci, które jest co najmniej denne. Archiwum też nie napawało optymizmem, już zacząłem się zastanawiać, czy wszystkie będą tak prymitywne — na szczęście nie były.