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 20:40 | Zajímavý článek

Lukáš Růžička v článku S Hydrogenem za lepší rytmus aneb bubeníkem snadno a rychle na MojeFedora.cz představuje automatického bubeníka s názvem Hydrogen (Wikipedie): Hydrogen je velmi vydařený program, který rozhodně nesmí chybět ve výbavě žádného linuxového muzikanta. Umožňuje nejen vytváření jednoduchých bicích doprovodů, ale také sofistikované programování bicích a perkusí, jehož výsledek se naprosto vyrovná drahým

… více »
Ladislav Hagara | Komentářů: 0
včera 13:55 | Zajímavý projekt

UPSat (Twitter) je první open source nanodružice (CubeSat). Jedná se o společný projekt nadace Libre Space Foundation a University of Patras. Repozitáře projektu jsou k dispozici na GitHubu. Pod Libre Space Foundation patří také projekt SatNOGS (zprávička), projekt globální sítě open source pozemních satelitních stanic, vítězný projekt soutěže The Hackaday Prize 2014. UPSat je součástí mise QB50 (Twitter). ID UPSatu je GR02. GPS přijímač na UPSatu je od české společnosti SkyFox Labs. Součástí mise QB50 je i česká nanodružice VZLUSAT-1 s ID CZ02.

Ladislav Hagara | Komentářů: 3
21.4. 15:00 | Komunita

V diskusním listu Thunderbird planning vývojáři poštovního klienta Thunderbird řeší, zda by nebylo možné budoucí Thunderbird postavit nad webovými technologiemi, tj. nad Electronem, stejně jako například Nylas Mail. Gecko, nad kterým je Thunderbird postaven, se má hodně změnit. V plánu je odstranění vlastností, které Firefox už nepotřebuje, ale Thunderbird je na nich závislý [Hacker News, reddit].

Ladislav Hagara | Komentářů: 83
21.4. 10:22 | Bezpečnostní upozornění

Společnost Oracle vydala čtvrtletní bezpečnostní aktualizaci svých softwarových produktů (CPU, Critical Patch Update). Opraveno bylo celkově 299 bezpečnostních chyb. V Oracle Java SE je například opraveno 8 bezpečnostních chyb. Vzdáleně zneužitelných bez autentizace je 7 z nich. V Oracle MySQL je opraveno 39 bezpečnostních chyb. Vzdáleně zneužitelných bez autentizace je 11 z nich.

Ladislav Hagara | Komentářů: 6
21.4. 10:00 | Pozvánky

V úterý 25. dubna proběhne další Prague Containers Meetup. Přijďte se nechat inspirovat jak zlepšit build/delivery pipeline vašich kontejnerových aplikací.

little-drunk-jesus | Komentářů: 2
20.4. 21:33 | Komunita

Na Launchpadu se objevilo kódové jméno následující verze Ubuntu. Ubuntu 17.10 bude Artful Aardvark (mazaný hrabáč) [OMG! Ubuntu!].

Ladislav Hagara | Komentářů: 10
20.4. 20:11 | Zajímavý software

MojeFedora.cz informuje, že společnost Nylas oznámila vydání verze 2.0 poštovního klienta Nylas Mail (původně Nylas N1), která již plně podporuje Linux. Obchodní model společnosti je tzv. open core. Samotný klient je open source, ale uživatel si musí připlatit za některé pokročilé funkce. V základu se lze připojit k GMailu nebo libovolnému účtu přes IMAP. Podpora Exchange je pouze v placené verzi. Klient je napsaný nad Electronem.

Ladislav Hagara | Komentářů: 12
20.4. 15:55 | Zajímavý článek

České centrum pro investigativní žurnalistiku (ČCIŽ) publikovalo na svých stránkách článek s názvem Je česká státní správa „rukojmím Microsoftu“?. Drtivá většina české veřejné správy je závislá na výrobcích softwarového gigantu Microsoft – a nijak zvlášť jí to nevadí.

Ladislav Hagara | Komentářů: 18
20.4. 02:48 | Nová verze

Google Chrome 58 byl prohlášen za stabilní. Nejnovější stabilní verze 58.0.3029.81 tohoto webového prohlížeče přináší řadu oprav a vylepšení (YouTube). Opraveno bylo 29 bezpečnostních chyb. Mezi nimi i chyba umožňující phishing s unicode doménami.

Ladislav Hagara | Komentářů: 0
19.4. 22:44 | Nová verze

Po šesti týdnech od vydání verze 52.0 byla vydána verze 53.0 webového prohlížeče Mozilla Firefox. Z novinek lze upozornit například na nové kompaktní vzhledy – tmavý z Firefoxu Developer Edition a jeho světlá varianta. Na Linuxu byla ukončena podpora procesorů starších než Pentium 4 a AMD Opteron. Podrobné informace v poznámkách k vydání a na stránce věnované vývojářům. Řešeny jsou také bezpečnostní chyby.

Ladislav Hagara | Komentářů: 11
Chystáte se pořídit CPU AMD Ryzen?
 (4%)
 (35%)
 (0%)
 (7%)
 (45%)
 (10%)
Celkem 273 hlasů
 Komentářů: 31, poslední 20.4. 21:26
    Rozcestník

    Hledání řetězce v řetězci (C vs. Python)

    13.4. 15:53 | Přečteno: 946× | Ostatní | poslední úprava: 13.4. 16:15

    Jestliže chceme zjistit, zda je přítomen určitý řetězec v jiném řetězci, můžeme v jazyce C použít funkci strstr() ze standardní knihovny.
    char *strstr(const char *prohledavany_řetezec, const char *hledany_retezec)
    
    Funkce vrací pointer na první výskyt hledaného řetězce v prohledávaném řetězci, pokud se hledaný řetězec v prohledávaném řetězci nenachází, funkce vrací NULL.

    Tohoto chování můžeme využít a napsat si vlastní funkci nstrstr(), která bude vracet počet výskytů řetězce v řetězci, jak ukazuje následující příklad.
    #include <stdio.h>
    #include <string.h>
    
    int nstrstr(char *s, char *find);
    
    int main()
    {		
    	char str[] = "UBUNTU, KUBUNTU, XUBUNTU A LUBUNTU!";
    	char substr[] = "UBUNTU";	
    	
    	printf("%s je v retezci %dkrat.\n", 
    		substr, nstrstr(str, substr));	
    		
    	return 0;
    }
    
    int nstrstr(char *s, char *find)
    {
    	int n = 0;
    	
    	while ((s = strstr(s, find)) != NULL) {		
    		s++;
    		n++;
    	}
    	
    	return n;
    }
    
    To samé v Pythonu 3. (V Pythonu 2 nebude fungovat kvůli diakritice.)
    str1 = "UBUNTU, KUBUNTU, XUBUNTU A LUBUNTU!"
    strsub = "UBUNTU"
    
    n = str1.count(strsub)
    
    print("{0} je v řetězci {1}krát.".format(strsub, n))
    
    Céčkové funkci strstr() odpovídá v Pythonu metoda find(), která vrací číselnou pozici (index) na první výskyt, anebo -1, pokud není řetězec nalezen. V příkladě s UBUNTU by vrátila nulu.        

    Hodnocení: 43 %

            špatnédobré        

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

    Komentáře

    Vložit další komentář

    13.4. 22:07 Jardík
    Rozbalit Rozbalit vše Re: Hledání řetězce v řetězci (C vs. Python)
    V pythonu 2 je třeba nastavit kódování souboru na utf8, takže diakritikou to nebude.
    kozzi avatar 13.4. 22:56 kozzi | skóre: 55 | blog: vse_o_vsem | Pacman (Bratrušov)
    Rozbalit Rozbalit vše Re: Hledání řetězce v řetězci (C vs. Python)

    nejak tam nevidim tu diakritiku

    Linux je jako mušketýři "jeden za všechny, všichni za jednoho"
    14.4. 10:41 Jardík
    Rozbalit Rozbalit vše Re: Hledání řetězce v řetězci (C vs. Python)
    V řetězci. Python 2 hlásíval chybu, co si pamatuju, že není specifikované kódování. tady je nějaký PEP, kde je vidět, jak to má vypadat.
    14.4. 01:25 unicode
    Rozbalit Rozbalit vše Re: Hledání řetězce v řetězci (C vs. Python)
    Hodně neefektivní kód bych řekl.
    14.4. 01:28 unicode
    Rozbalit Rozbalit vše Re: Hledání řetězce v řetězci (C vs. Python)
    Navíc, neměla by ta funkce vracet size_t? Použít int na takovou věc může být celkem nebezpečné...
    14.4. 10:38 Jardík
    Rozbalit Rozbalit vše Re: Hledání řetězce v řetězci (C vs. Python)
    To by asi měla. Největší počet může být stejný jako počet znaků, což je stejné, jako maximální velikost objektu (-1 na ukončovací nulu), a k tomu je size_t určený. Já jsem to nějak nezkoumal, jinak bych mu vynadal taky :-)
    14.4. 10:38 Jardík
    Rozbalit Rozbalit vše Re: Hledání řetězce v řetězci (C vs. Python)
    Samozřejmě pak musí použít "%zu" ve formátovacím řetězci místo "%d".
    14.4. 12:14 sad
    Rozbalit Rozbalit vše Re: Hledání řetězce v řetězci (C vs. Python)
    Tak díky za připomínky. A bylo by korektní použít pro size_t ve formátovacím řetězci "%lu", když bych se chtěl vyhnout C99.
    16.4. 21:45 Jardík
    Rozbalit Rozbalit vše Re: Hledání řetězce v řetězci (C vs. Python)
    Bohužel by nebylo. Ve Windows např. sizeof(long) není stejné jako sizeof(size_t) v 64bit verzi. Předpoklady takových věcí jsou naprd. Vyhýbat se C99 nemá smysl. Kdyby se jednalo o C11, tak možná, ale C99 je tu skoro 20 let a většina programů na tvém systému napsaných v C buď C99 používá, nebo má závislost na něčem, co používá C99. Např. gtk/glib se C99 pořád brání (nebo alespoň bráníval), přitom je to kravina a bez C99 gtk nefunguje, protože X11 podporu C99 požaduje.
    Bedňa avatar 15.4. 22:50 Bedňa | skóre: 33 | blog: Žumpa | Horňany
    Rozbalit Rozbalit vše Re: Hledání řetězce v řetězci (C vs. Python)
    jinak bych mu vynadal taky :-)
    Hneď po prečitani som si hovoril, že tu píšeš pod facke nickom unicode :-)
    Pokecajte si s umelou stupiditou na http://www.kernelultras.org/
    16.4. 13:43 Kvakor
    Rozbalit Rozbalit vše Re: Hledání řetězce v řetězci (C vs. Python)
    Hodně neefektivní kód bych řekl.
    No, teoreticky by to mělo smyls, kdyby se počítaly překývající řetězce (typu Hledej "nan" v "banananana" :-) ), ale v praxi by nejspíš bylo něco takového naprosto k ničemu. Přitom by úplně stačilo ze začátku si zjistit délku vyhledávaného řetězce a zapamatovávat si hodnotu vrácenou strstr(), pak by se vyhledávalo ne od s++, ale od <vráceno strstr()>+strlen(<délka vyhledeávaného řetězce>)+1.
    Jendа avatar 16.4. 18:18 Jendа | skóre: 73 | blog: Výlevníček | JO70FB
    Rozbalit Rozbalit vše Re: Hledání řetězce v řetězci (C vs. Python)
    IMHO jde o to, že podle implementace strstr buď nepoužívá optimalizovaný vyhledávací automat (KMP, Aho-Corasick…), nebo ho používá, ale při každém zavolání ho musí vytvořit znovu, protože neví, co hledalo a v jakém stavu posledně skončilo.

    Ale to strašně závisí na use-case. Pokud to děláš jednou za půl hodiny na normální řetězec dlouhý 1000 znaků, tak to přece není potřeba řešit. Pokud ti ale celá aplikace začne hnít na porovnávání stringů na vstupu, tak se to asi hodí. V tomto případě jsem poslal patch, který to zrychlil stodesetkrát (!) :-D
    "Vzbuď se ve 4.20 a jdi ke kolejím (k jakýmkoliv, které najdeš)" "OK, jsem na Strahově, what next?"
    16.4. 11:59 sarimak
    Rozbalit Rozbalit vše Re: Hledání řetězce v řetězci (C vs. Python)
    ad Python: Pritomnost (tedy ne pocet vyskytu nebo index zacatku) substringu lze zjistit jednoduseji - pomoci "substring" in original_string - napr. "kolo" in "okolo" vrati True.
    Bystroushaak avatar 16.4. 18:44 Bystroushaak | skóre: 31 | blog: Bystroushaakův blog | Praha
    Rozbalit Rozbalit vše Re: Hledání řetězce v řetězci (C vs. Python)
    Nejen jde, ale běžně se to ani nijak jinak nedělá a použití ukázky ke kontrole přítomnosti by bylo považováno za špatné a narazit na ně někde v práci, tak to buď nenechám projít code review, nebo bez milosti zrefactoruju.

    Osobně jsem vůbec nepochopil smysl těhle blogů, kde se probírá něco úplně základního, co je v každém tutoriálu, navíc stylem, který nejen že nic nepřidává, ale často působí zmateným dojmem, asi jako kdyby se to zrovna včera naučil. Třeba tenhle blog:
    Hledání řetězce v řetězci (C vs. Python)
    jestliže chceme zjistit, zda je přítomen určitý řetězec v jiném řetězci
    Což působí dojmem, že chce kontrolovat existenci podřetězce, ale pak přejde na počítání počtu výskytů a chytne se o toho i v pythonní verzi. Pokud bych byl začátečník, měl bych v tom po přečtení blogu tak akorát větší bordel, než jsem měl předtím. Jako nezačátečník musím konstatovat jen že jsem se z toho nic nenaučil, ani nedozvěděl a třeba Jendův příspěvek v diskuzi pro mě byl hodnotnější, než celý blog.

    Autora od psaní nechci odrazovat, ale imho by se měl víc zamyslet a dát to před publikací přečíst někomu jinému, kdo mu k tomu řekne nestranný názor. Taky by si imho měl ujasnit smysl a důvod, proč to publikuje tak jak to publikuje. Je cílem jen vyvolat diskuzi, nebo i někoho něco naučit, nebo jen ukázat, že se něco nového naučil, nebo to tahá náhodně z klobouku?
    16.4. 19:05 hypvofxy | skóre: 5 | blog: hypvofxy
    Rozbalit Rozbalit vše Re: Hledání řetězce v řetězci (C vs. Python)
    +1. Mozna to autor vnima spis jako poradnu, kdy svymi slovy zkusi neco vysvetlit a ceka, az ho ostatni v diskuzi opravi. Na druhou stranu nevim, jak moc je to uzitecne pro kteroukoliv ze zucastnenych stran.

    Osobne nerad radim zacatecnikum, protoze bud jim vedome poskytnu zjednodusenou a neuplnou odpoved, nebo odpoved natolik slozitou, ze ji nedokazou pochopit. Sice se tim mozna neco noveho nauci, ale to uceni je pak nesystematicke.

    Vzdycky rikam, ze prace programatora spociva v neustalem reseni problemu. Naucit se programovat je ten prvni problem. Lidi, co na to maji predpoklady, si tu cestu proste najdou. Pak jsou lidi, co potrebujou vest krucek za kruckem a pokud se jim takove asistence dostane, do nejake miry se to nauci. Otazkou je, jestli je pak vlastne bude bavit to programovani delat, kdyz budou muset hodiny v kuse sedet jen s monitorem a svymi myslenkami.

    Kazdopadne, co se tyka vymeny rad, zkusenosti a inspirace, je vzdycky idealni najit si nekoho, kdo je ve studiu podobne daleko a resit to s nim.
    16.4. 20:19 sad
    Rozbalit Rozbalit vše Re: Hledání řetězce v řetězci (C vs. Python)
    Programování v C mě docela baví, tak si občas něco napíši a dám to sem. Programovat zatím moc neumím, tak jsem rád, když mě skuteční programátoři upozorní na chyby a špatné postupy. Samozřejmě bych byl rád kdyby se kvalita mých blogů zvyšovala, a ne naopak.

    Třeba tenhle zápisek zase nebyl tak špatný, ne?
    Funkce strtol a nanosleep (jazyk C)

    Pokud vidíte v publikování těchto blogů vážně problém, tak mohu přestat.
    Bystroushaak avatar 16.4. 21:07 Bystroushaak | skóre: 31 | blog: Bystroushaakův blog | Praha
    Rozbalit Rozbalit vše Re: Hledání řetězce v řetězci (C vs. Python)
    Pokud vidíte v publikování těchto blogů vážně problém, tak mohu přestat.
    Jak jsem psal, nechci tě odrazovat. Viz ten poslední odstavec. Tu kritiku jsem myslel konstruktivně, ne jako hejt.
    16.4. 21:09 hypvofxy | skóre: 5 | blog: hypvofxy
    Rozbalit Rozbalit vše Re: Hledání řetězce v řetězci (C vs. Python)
    Pokud vidíte v publikování těchto blogů vážně problém, tak mohu přestat.
    Ne. Je to tvuj blog, pis, co uznas za vhodne. My to maximalne nebudeme cist, nebo na to reagovat.
    Bedňa avatar 16.4. 21:15 Bedňa | skóre: 33 | blog: Žumpa | Horňany
    Rozbalit Rozbalit vše Re: Hledání řetězce v řetězci (C vs. Python)
    Robíš to dobre, občas keď niekto bude potrebovať pomoc, tak si to tu nájde aj s komentármi. Určite neprestávaj.
    Pokecajte si s umelou stupiditou na http://www.kernelultras.org/
    20.4. 14:46 pedro
    Rozbalit Rozbalit vše Re: Hledání řetězce v řetězci (C vs. Python)
    Pocet nebo index?

    Založit nové vláknoNahoru

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