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 16:22 | Nová verze

Byla vydána verze 0.11.0 softwaru pro statistickou analýzu dat GNU PSPP (Wikipedie), svobodné alternativy k proprietárnímu softwaru IBM SPSS Statistics (Wikipedie). Vedle několika vylepšení a oprav chyb jsou řešeny také 2 bezpečnostní chyby CVE-2017-10791 a CVE-2017-10792. O týden později byla vydána verze 1.0.0 přinášející pouze aktualizaci překladů. Proč verze 1.0.0 a ne například 0.11.1? Dle vývojářů jsou důvody následující:

… více »
Ladislav Hagara | Komentářů: 0
včera 10:35 | Komunita

Na blogu Oracle se objevila zpráva o tom, že plánovaná verze Java EE 8 bude uvolněna jako open source (referenční implementace a compatibility kit). V současné době je uvolněna jen Java SE (standard edition) pod licencí GPLv2 v podobě OpenJDK (Open Java Development Kit), kterou začal v roce 2006 uvolňovat Sun.

Max | Komentářů: 4
21.8. 23:55 | IT novinky

Google na YouTube oficiálně představil Android 8.0 Oreo. Přehled novinek v příspěvku na blogu věnovaném vývojářům.

Ladislav Hagara | Komentářů: 24
21.8. 16:44 | Zajímavý článek

Po téměř 3 měsících od vydání třetího čísla publikoval Michal Špaček na svých stránkách čtvrté číslo newsletteru věnovanému bezpečnosti, bezpečnému vývoji převážně webových aplikací a bezpečnosti uživatelů. Jedná se současně o číslo poslední: "Nepíše se mi to lehce, a trvalo to, než jsem to ze sebe dostal, ale tohle je poslední newsletter v této podobě. Ani jsem ho nestihl pojmenovat a už jsem ho zabil. Nezbývá mi tolik času, abych každou událost, novinku a změnu v prohlížeči detailně popisoval tak, jak bych v newsletteru chtěl, mrzí mě to".

Ladislav Hagara | Komentářů: 2
21.8. 07:00 | Nová verze

Byla vydána diaspora* ve verzi 0.7.0.0. Jedná se o svobodný software, který slouží jako osobní webový server pro poskytování služeb sociální sítě (Wikipedie). Přehled novinek v příspěvku na blogu a na GitHubu. Sociální síť diaspora* byla před pěti lety předána komunitě.

Ladislav Hagara | Komentářů: 0
21.8. 06:00 | IT novinky

Společnost Hardkernel stojící za jednodeskovými počítači ODROID představila na YouTube minipočítač určený pro domácí cloud ODROID-HC1 vycházející z ODROID-XU4. Minipočítač s kovovou krabičkou, do které stačí vložit 2 a půl palcový disk, lze koupit za 49 dolarů. ODROID-HC1 je stohovatelný.

Ladislav Hagara | Komentářů: 39
20.8. 16:22 | Nová verze

Byl vydán DB Browser for SQLite (sqlitebrowser) ve verzi 3.10.0. Nejnovější stabilní verze této grafické nadstavby nad relačním databázovým systémem SQLite (Wikipedie) přináší například integraci s DBHub.io, tj. platformou pro sdílení SQLite databází. Podrobnosti na GitHubu.

Ladislav Hagara | Komentářů: 2
20.8. 08:00 | IT novinky

Andy Rubin, spoluzakladatel společnosti Android, jež byla v roce 2005 koupena Googlem, nyní CEO společnosti Essential Products, oznámil předprodej chytrého telefonu Essential. Telefon se začne rozesílat 1. září. Cena telefonu je 699 dolarů. Cena telefonu současně s 360° kamerou s rozlišením 4K byla stanovena na 749 dolarů. Kameru, v budoucnu i další příslušenství, lze k telefonu připojit pomocí konektoru s magnety.

Ladislav Hagara | Komentářů: 1
19.8. 13:44 | Zajímavý software

Evropská komise vydala novou verzi 1.4.0.1 svého open source v Javě naprogramovaného softwaru pro online průzkumy EUSurvey. Online dotazníky lze vytvářet na stránkách Evropské komise nebo si lze software stáhnout (zip a war) a nainstalovat lokálně. Zdrojové kódy jsou k dispozici pod licencí EUPL (European Union Public Licence).

Ladislav Hagara | Komentářů: 0
18.8. 23:55 | Komunita

Ubuntu 17.10 (Artful Aardvark) bude ve výchozím stavu zobrazovat Dok (Launcher). Jedná se o rozšíření GNOME Shellu Ubuntu Dock. To bylo forknuto z rozšíření Dash to Dock. Ukázka na YouTube [reddit].

Ladislav Hagara | Komentářů: 8
Těžíte nějakou kryptoměnu?
 (5%)
 (2%)
 (18%)
 (76%)
Celkem 374 hlasů
 Komentářů: 21, poslední 13.8. 09:57
    Rozcestník

    Dotaz: C - konverze typu a kontrola

    8.6.2009 10:07 jarda
    C - konverze typu a kontrola
    Přečteno: 578×

    Hezky den

    mam toto v c:

    #include <netinet/in.h>
    #define short unsigned int UWORD

    a nekde toto:

    UWORD i = 1;
    i = htons(i); //htons pracuje in/out jen s UWORD, resp uint16_t

    a KDEVELOP stale hlasi:

    warning: conversion to 'short unsigned int' from 'int' may alter its value

    Jak utnout tipec tomuto hlaseni, a ne zrovna tim ze vypnu kontroly typu?

    Predem diky

    Jarda

     

     

    Odpovědi

    8.6.2009 10:52 #Tom | skóre: 32 | blog: Inspirace, aneb co jsem kde vyhrabal
    Rozbalit Rozbalit vše Re: C - konverze typu a kontrola
    Když je to potřeba, je možné použít přetypování, tj. před proměnnou, která se na dané místo typově nehodí, je třeba vložit správný typ v kulatých závorkách. Časté je to zejména u ukazatelů, zejména pak alokace paměti.

    V tomto případě se mi ale nelíbí to makro, správně by druhý řádek měl začínat klíčovým slovem typedef.
    8.6.2009 11:04 graviton
    Rozbalit Rozbalit vše Re: C - konverze typu a kontrola
    #define short unsigned int UWORD
    to není tak docela dobře...
    Neměl to být spíš typedef?
    Nebo když už, tak aspoň #define UWORD short unsigned int
    8.6.2009 13:25 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: C - konverze typu a kontrola
    Navíc bych se vykašlal na unsigned short int a použil uint16_t.
    In Ada the typical infinite loop would normally be terminated by detonation.
    8.6.2009 13:27 jardaz
    Rozbalit Rozbalit vše Re: C - konverze typu a kontrola

    Sorry, ja se pri opisovani spletl, ma tam byt to co jste uvedl (viz nize), ale to problem neresi.

    #define UWORD short unsigned int

    rovnez to neresi ani toto:

    i=(UWORD)htons((UWORD)i);

    ci toto (ikdyz zrusim makro a i definuji jako uint16_t):

    i=(uint16_t)htons((uint16_t)i);

     

    8.6.2009 13:50 Vojtěch Horký | skóre: 39 | blog: Vojtův zápisník | Praha
    Rozbalit Rozbalit vše Re: C - konverze typu a kontrola
    Podle tohohle (část, kde cituje z manuálu gcc) je to spíš chybka u překladače.
    i=(uint16_t)htons((uint16_t)i);
    Ty přetypování bych rozhodně vyhodil, protože proměnné odpovídají hlavičce funkce a takhle se to jenom zatemní.
    I am always ready to learn although I do not always like to be taught. (W. Churchill)
    8.6.2009 16:10 jardaz
    Rozbalit Rozbalit vše Re: C - konverze typu a kontrola

    Ja si to taky myslel, ale radsi se zeptam, protoze nikde neni duvod pouzivat int. No a ta hlaska nedava vice info, zda je to vuci leve hodnote ci parametru funkce. Takze dle odkazu off -Wconversion.

    8.6.2009 16:18 #Tom | skóre: 32 | blog: Inspirace, aneb co jsem kde vyhrabal
    Rozbalit Rozbalit vše Re: C - konverze typu a kontrola
    Možná by nebylo od věci vyměnit překladač nebo prověřit situaci při ručním překladu jediného zdrojového souboru v příkazovém řádku.
    8.6.2009 18:38 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: C - konverze typu a kontrola

    Asi to bude záviset na verzi gcc (nebo glibc). Právě jsem zkusil přesně ten původní kód:

    #include <stdio.h>
    #include <netinet/in.h>
    
    #define UWORD short unsigned int
    
    int main()
    {
      UWORD i = 1;
      i = htons(i);
      printf("%hu\n", i);
      return 0;
    }
    

    a obešlo se to bez protestů i s '-Wall -Wextra'. Použil jsem gcc 4.3.2 a glibc 2.9.

    8.6.2009 19:03 Vojtěch Horký | skóre: 39 | blog: Vojtův zápisník | Praha
    Rozbalit Rozbalit vše Re: C - konverze typu a kontrola
    Asi to bude záviset na verzi gcc (nebo glibc)
    Vypadá to tak: gcc (GCC) 4.1.2 (Gentoo 4.1.2) řve, gcc (GCC) 4.4.0 20090526 (prerelease) je v pohodě.
    I am always ready to learn although I do not always like to be taught. (W. Churchill)
    Fuky avatar 8.6.2009 21:58 Fuky | skóre: 52 | blog: 4u
    Rozbalit Rozbalit vše Re: C - konverze typu a kontrola

    U mě neřve ani jedna verze gcc, glibc 2.7-18:

    gcc-3.3 (GCC) 3.3.5 (Debian 1:3.3.5-13)
    gcc-3.4 (GCC) 3.4.6 (Debian 3.4.6-9)
    gcc-4.1 (GCC) 4.1.3 20080704 (prerelease) (Debian 4.1.2-25)
    gcc-4.2 (GCC) 4.2.4 (Debian 4.2.4-6)
    gcc-4.3 (Debian 4.3.2-1.1) 4.3.2
    

    9.6.2009 09:30 jardaz | Opava
    Rozbalit Rozbalit vše Re: C - konverze typu a kontrola

    Hezky den

    vsem diky ze se problemu venujete, tady davam info, kdy se to generuje na mem sw (stejny kod jak v prizpevku vyse):

    • KDevelop 3.5.4 pod KDE 3.5.10-3.fc10,
    • gcc version 4.3.2 20081105 (Red Hat 4.3.2-7),
    • FC10
    • a nastaveni překladače: -O0 -Werror-implicit-function-declaration -Wimplicit-int -Wuninitialized -Wconversion -Wmissing-declarations -pg -freg-struct-return -O -g3, 

    tak to hlasi testwarning.c:16: warning: conversion to 'short unsigned int' from 'int' may alter its value. Vyradim-li prepinac -Wconversion, tak to hlaseni zmizi, na to vsak upozornil jiz v prispevku Vojtech Horky, takze pouziti tohoto prepinace je dvojsecne, sice oznaci mista, kde se pouzije implicitni pretypovani, ale oznaci varovanim i to kde jiste k pretypovani vubec nedochazi.

    9.6.2009 10:07 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: C - konverze typu a kontrola
    Zajímavé zjištění: samožné -Wconversion nestačí, ale když přidám optimalizaci, začne se ta hláška objevovat i u mne. Zřejmě to souvisí s tím, že ntohs() je definováno jinak při překladu s optimalizací a jinak bez ní. Ale teď bohužel nemám čas rozplétat všechny ty #ifdef-y v hlavičkových souborech.
    9.6.2009 10:34 jardaz | Opava
    Rozbalit Rozbalit vše Re: C - konverze typu a kontrola

    Ja se dival na ten hlavickovy soubor, jednoznacne zneho vyplyva, ze hto... funkce jsou tam ruzne definovany podle optimalizace a zpusobu uschovy udaju v pameti, prakticky lze rici, ze pri max. optimalizaci by stacilo misto funkce pouzit inline assembler a to operaci bswap x (x znaci nejaky ten parametr) a kdo vi jak se to pak jevi prekladaci. Chci jen podotknout, ze htons neni jedine misto, kde se ten prepinac a warning objevuje, vybral jsem ji zcela nahodne.

    9.6.2009 10:47 #Tom | skóre: 32 | blog: Inspirace, aneb co jsem kde vyhrabal
    Rozbalit Rozbalit vše Re: C - konverze typu a kontrola
    Příčina je zřejmě v této části netinet/in.h:
    #ifdef __OPTIMIZE__
    /* We can optimize calls to the conversion functions.  Either nothing has
       to be done or we are using directly the byte-swapping functions which
       often can be inlined.  */
    # if __BYTE_ORDER == __BIG_ENDIAN
    /* The host byte order is the same as network byte order,
       so these functions are all just identity.  */
    # define ntohl(x)       (x)
    # define ntohs(x)       (x)
    # define htonl(x)       (x)
    # define htons(x)       (x)
    # else
    #  if __BYTE_ORDER == __LITTLE_ENDIAN
    #   define ntohl(x)     __bswap_32 (x)
    #   define ntohs(x)     __bswap_16 (x)
    #   define htonl(x)     __bswap_32 (x)
    #   define htons(x)     __bswap_16 (x)
    #  endif
    # endif
    #endif
    
    Můj zkušební kód po gcc -E -O (Debian 4.3.3-7) dopadne takto:
    int main() {
      unsigned short int w1, w2;
      w1 = 0x1234;
      w2 = (__extension__ ({
        register unsigned short int __v, __x = (w1);
        if (__builtin_constant_p (__x))
          __v = ((((__x) >> 8) & 0xff) | (((__x) & 0xff) << 8));
        else
          __asm__ ("rorw $8, %w0" : "=r" (__v) : "0" (__x) : "cc");
        __v;
      }));
      printf("%x\n", w2);
      return 0;
    }
    
    Přiřazení s w2 = … bylo původně w2 = ntohs(w1), při zapnutých optimalizacích tedy w2 = __bswap_16(w1). Rozvoj makra je v příspěvku vidět. Bitové operace v první větvi podmínky vyvolají onu hlášku. Kód se navíc vykoná jen tehdy, pokud je hodnota známá během překladu, pro proměnnou se použije vložený kus asembleru.
    9.6.2009 11:23 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: C - konverze typu a kontrola
    Kód se navíc vykoná jen tehdy, pokud je hodnota známá během překladu, pro proměnnou se použije vložený kus asembleru.

    V podstatě máte pravdu, ale formulace "kód se vykoná" není přesná. To větvení je tam právě proto, že je-li argument konstanta, (neefektivní) výpočet podle vozorečku provede samotný překladač a do kódu jde rovnou výsledná konstanta (stejně jako když napíšete třeba int a = 1 + 1).

    9.6.2009 11:26 #Tom | skóre: 32 | blog: Inspirace, aneb co jsem kde vyhrabal
    Rozbalit Rozbalit vše Re: C - konverze typu a kontrola
    Díky za upřesnění.
    9.6.2009 10:15 petris_ | skóre: 12
    Rozbalit Rozbalit vše Re: C - konverze typu a kontrola
    includujte arpa/inet.h

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.