abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 21:44 | Komunita

    Na čem aktuálně pracují vývojáři GNOME a KDE Plasma? Pravidelný přehled novinek v Týden v GNOME a Týden v KDE Plasma.

    Ladislav Hagara | Komentářů: 0
    dnes 14:22 | IT novinky

    Před 25 lety zaplavil celý svět virus ILOVEYOU. Virus se šířil e-mailem, jenž nesl přílohu s názvem I Love You. Příjemci, zvědavému, kdo se do něj zamiloval, pak program spuštěný otevřením přílohy načetl z adresáře e-mailové adresy a na ně pak „milostný vzkaz“ poslal dál. Škody vznikaly jak zahlcením e-mailových serverů, tak i druhou činností viru, kterou bylo přemazání souborů uložených v napadeném počítači.

    Ladislav Hagara | Komentářů: 10
    včera 22:33 | Nová verze

    Byla vydána nová major verze 5.0.0 svobodného multiplatformního nástroje BleachBit (GitHub, Wikipedie) určeného především k efektivnímu čištění disku od nepotřebných souborů.

    Ladislav Hagara | Komentářů: 2
    2.5. 22:22 | Komunita

    Na čem pracují vývojáři webového prohlížeče Ladybird (GitHub)? Byl publikován přehled vývoje za duben (YouTube).

    Ladislav Hagara | Komentářů: 0
    2.5. 19:11 | IT novinky

    Provozovatel čínské sociální sítě TikTok dostal v Evropské unii pokutu 530 milionů eur (13,2 miliardy Kč) za nedostatky při ochraně osobních údajů. Ve svém oznámení to dnes uvedla irská Komise pro ochranu údajů (DPC), která jedná jménem EU. Zároveň TikToku nařídila, že pokud správu dat neuvede do šesti měsíců do souladu s požadavky, musí přestat posílat data o unijních uživatelích do Číny. TikTok uvedl, že se proti rozhodnutí odvolá.

    Ladislav Hagara | Komentářů: 3
    2.5. 11:22 | Zajímavý projekt

    Společnost JetBrains uvolnila Mellum, tj. svůj velký jazykový model (LLM) pro vývojáře, jako open source. Mellum podporuje programovací jazyky Java, Kotlin, Python, Go, PHP, C, C++, C#, JavaScript, TypeScript, CSS, HTML, Rust a Ruby.

    Ladislav Hagara | Komentářů: 2
    2.5. 09:11 | Bezpečnostní upozornění

    Vývojáři Kali Linuxu upozorňují na nový klíč pro podepisování balíčků. K původnímu klíči ztratili přístup.

    Ladislav Hagara | Komentářů: 2
    1.5. 20:00 | Komunita

    V březnu loňského roku přestal být Redis svobodný. Společnost Redis Labs jej přelicencovala z licence BSD na nesvobodné licence Redis Source Available License (RSALv2) a Server Side Public License (SSPLv1). Hned o pár dní později vznikly svobodné forky Redisu s názvy Valkey a Redict. Dnes bylo oznámeno, že Redis je opět svobodný. S nejnovější verzí 8 je k dispozici také pod licencí AGPLv3.

    Ladislav Hagara | Komentářů: 3
    1.5. 19:22 | IT novinky

    Oficiální ceny Raspberry Pi Compute Modulů 4 klesly o 5 dolarů (4 GB varianty), respektive o 10 dolarů (8 GB varianty).

    Ladislav Hagara | Komentářů: 0
    30.4. 22:33 | Nová verze

    Byla vydána beta verze openSUSE Leap 16. Ve výchozím nastavení s novým instalátorem Agama.

    Ladislav Hagara | Komentářů: 0
    Jaký filesystém primárně používáte?
     (58%)
     (1%)
     (8%)
     (21%)
     (4%)
     (2%)
     (3%)
     (0%)
     (1%)
     (3%)
    Celkem 520 hlasů
     Komentářů: 19, poslední 30.4. 11:32
    Rozcestník

    Administrace komentářů

    Jste na stránce určené pro řešení chyb a problémů týkajících se diskusí a komentářů. Můžete zde našim administrátorům reportovat špatně zařazenou či duplicitní diskusi, vulgární či osočující příspěvek a podobně. Děkujeme vám za vaši pomoc, více očí více vidí, společně můžeme udržet vysokou kvalitu AbcLinuxu.cz.

    Příspěvek
    26.8.2019 17:46 Andrej | skóre: 51 | blog: Republic of Mordor
    Rozbalit Rozbalit vše Re: Návrhový vzor pro obalování C knihoven v C++

    No, já jsem se k tomuhle vláknu dostal naneštěstí až takhle pozdě, takže už další odpověď asi nikoho nezajímá. Ale mě zase nezajímá, že to nikoho nezajímá, takže si tu zkrátka uprdnu následující:

    #include <iostream>
    #include <string>
    
    #include <errno.h>
    #include <fcntl.h>
    #include <string.h>
    #include <sys/stat.h>
    #include <sys/types.h>
    #include <unistd.h>
    
    namespace {
    class FileOverwriter {
     public:
      FileOverwriter(const std::string& pathname)
          : path{pathname}, fd{[this]() {
              const int result{open(path.c_str(),
                                    O_CREAT | O_WRONLY | O_TRUNC,
                                    S_IRUSR | S_IWUSR)};
              if (result == -1) throw errno;
              std::cerr << "opened '" << path << "'\n";
              return result;
            }()} {}
    
      FileOverwriter(FileOverwriter&& old) : path(old.path), fd(old.fd) {
        old.fd = -1;
      }
    
      ~FileOverwriter() {
        if (fd != -1) {
          if (close(fd) == -1) {
            std::cerr << strerror(errno) << std::endl;
          }
          std::cerr << "still owning '" << path
                    << "', closing it for real\n";
        } else {
          std::cerr << "no longer owning '" << path << "', not closing\n";
        }
      }
    
      FileOverwriter& operator<<(const std::string& what) & {
        write_to_fd(what);
        return *this;
      }
    
      const FileOverwriter& operator<<(const std::string& what) const& {
        write_to_fd(what);
        return *this;
      }
    
      FileOverwriter operator<<(const std::string& what) && {
        write_to_fd(what);
        return std::move(*this);
      }
    
     private:
      void write_to_fd(const std::string& what) const {
        const char* bufpos = what.c_str();
        size_t to_write = what.size();
        for (;;) {
          const ssize_t written = write(fd, bufpos, to_write);
          if (written == -1) throw errno;
          to_write -= written;
          if (!to_write) break;
          bufpos += written;
        }
      }
    
      const std::string path;
      int fd;
    };
    
    void WriteFooterAndClose(FileOverwriter o) {
      o << "this is at the end\n";
    }
    
    FileOverwriter WriteSomethingAndGiveItBack(FileOverwriter o) {
      o << "this is somewhere in the middle\n";
      return o;
    }
    
    void JustWriteBlahBlah(const FileOverwriter& o) {
      o << "blah\n"
        << "blah\n";
    }
    }  // namespace
    
    int main() try {
      // A few std::move() experiments on /tmp/first.
      FileOverwriter o{"/tmp/first"};
      o << "o says blah\n";
      FileOverwriter p{std::move(o)};
      p << "p says blah\n";
      FileOverwriter q{WriteSomethingAndGiveItBack(std::move(p))};
      q << "q says blah\n";
      WriteFooterAndClose(std::move(q));
    
      // A somewhat temporary FileOverwriter on /tmp/second.
      FileOverwriter("/tmp/second") << "cheche\n"
                                    << "blabla\n";
    
      // Full R-value crazinesss on /tmp/third.
      WriteFooterAndClose(
          WriteSomethingAndGiveItBack(FileOverwriter("/tmp/third")
                                      << "first line\n"
                                      << "second line\n")
          << "one more line"
          << "penultimate line; the end is near\n");
    
      // To also check the const-reference case (on /tmp/forth)...
      FileOverwriter r("/tmp/forth");
      JustWriteBlahBlah(r);
      // And we don't std::move `r` anywhere; let it die naturally.
    
      return 0;
    } catch (int err) {
      std::cout << strerror(err) << std::endl;
      return 1;
    }
    

    Tohle^^^ "obaluje" soubor otevřený POSIXovým stylem pro zápis a zavře ho to jenom jednou, i přes různé předávání do/z funkcí a operátorů na všechny možné způsoby a strany.

    V tomto formuláři můžete formulovat svou stížnost ohledně příspěvku. Nejprve vyberte typ akce, kterou navrhujete provést s diskusí či příspěvkem. Potom do textového pole napište důvody, proč by měli admini provést vaši žádost, problém nemusí být patrný na první pohled. Odkaz na příspěvek bude přidán automaticky.

    Vaše jméno
    Váš email
    Typ požadavku
    Slovní popis
    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.