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í
×
    včera 19:22 | Nová verze

    Multiplatformní prohlížeč elektronických knih KOReader byl vydán ve verzi 2026.07 "Sailing Walrus". U PDF souborů s SMask lze vyčistit pozadí. Přibyla podpora Kobo v5 nebo základní podpora OPDS 2.0.

    Ladislav Hagara | Komentářů: 0
    včera 14:22 | Komunita

    Společnost Valve sponzoruje a společnost Collabora portuje RADV (open source Vulkan ovladač pro AMD GPU z projektu Mesa) na Windows.

    Ladislav Hagara | Komentářů: 0
    28.7. 20:44 | Zajímavý projekt

    Starling (GitHub) je desktopové prostředí vytvořeno umělou inteligencí (s dohledem jednoho vývojáře během šesti měsíců).

    Ladislav Hagara | Komentářů: 26
    28.7. 14:22 | IT novinky

    Dne 30. června 2026 byla završena fyzická realizace projektu Czech National Quantum Communication Infrastructure (CZQCI), tedy České národní kvantové komunikační infrastruktury. Projekt byl realizován od 1. března 2023 a financován z Národního plánu obnovy částkou 121,6 milionu Kč. Cílem podpořeného projektu bylo vybudovat základy národní kvantové komunikační infrastruktury a ověřit možnosti jejího praktického využití. Mezi

    … více »
    Ladislav Hagara | Komentářů: 3
    28.7. 14:11 | IT novinky

    Město Šumperk se stalo terčem kybernetického útoku, chod úřadu je omezen. Zjišťuje se, jestli unikla nějaká data. Cílem hackerů byla městská datová síť. První útoky zaznamenali odborníci na informační technologie již v pondělí večer, závady se ale plně projevily až dnes ráno. Město událost nahlásilo Národnímu úřadu pro kybernetickou a informační bezpečnost (NUKIB).

    Ladislav Hagara | Komentářů: 1
    28.7. 13:55 | Bezpečnostní upozornění

    Samba, svobodná implementace síťového protokolu SMB/CIFS, byla vydána ve verzích 4.24.5, 4.23.10 a 4.22.11. Řešeno je 6 zranitelností.

    Ladislav Hagara | Komentářů: 0
    27.7. 23:44 | IT novinky

    Přední technologické společnosti (Adobe, Cadence, Capital One, Cisco, Cloudera, Cloudflare, Cognition, CrowdStrike, Databricks, Dell Technologies, DoorDash, Elastic, HPE, Hugging Face, IBM, LangChain, Linux Foundation, Microsoft, NAVER, NetApp, Nous Research, NVIDIA, OpenClaw, Palantir, Palo Alto Networks, Red Hat, Reflection AI, Salesforce, SAP, ServiceNow, Siemens, SK Telecom, Snowflake, SpacexAI, Synopsys, Thinking

    … více »
    Ladislav Hagara | Komentářů: 5
    27.7. 18:11 | Zajímavý projekt

    Krabix.cz je online 3D konfigurátor krabiček pro 3D tisk s exportem do STL. Běží přímo v prohlížeči. Nic se neposílá na server.

    Ladislav Hagara | Komentářů: 7
    27.7. 17:00 | Komunita

    Nadace Open Home Foundation spustila veřejnou preview verzi komunitní databáze zařízení pro Home Assistant. Má fungovat jako „Wikipedie pro chytrá zařízení".

    Ladislav Hagara | Komentářů: 0
    27.7. 15:22 | Komunita

    Na stránce nového panelu Firefoxu přibudou nové widgety. Například denně aktualizována interaktivní křížovka.

    Ladislav Hagara | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (11%)
     (7%)
     (2%)
     (18%)
     (30%)
     (5%)
     (6%)
     (2%)
     (15%)
     (23%)
    Celkem 2279 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    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.