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 15:18 | Zajímavý software

CrossOver, komerční produkt založený na Wine, je dnes (23. 5. 2017) dostupný ve slevě. Roční předplatné linuxové verze vyjde s kódem TWENTYONE na $21, resp. $1 v případě IP z chudších zemí jako ČR. Firma CodeWeavers, která CrossOver vyvíjí, významně přispívá do Wine. Přidaná hodnota CrossOver spočívá v přívětivějším uživatelském rozhraní, integraci do desktopu a podpoře.

Fluttershy, yay! | Komentářů: 10
dnes 15:11 | Zajímavý projekt

V únoru loňského roku bylo představeno několik útoků na celou řadu bezdrátových klávesnic a myší s názvem MouseJack. Po více než roce lze chybu opravit, tj. aktualizovat firmware, také z Linuxu. Richardu Hughesovi se podařilo navázat spolupráci se společností Logitech, získat od nich dokumentaci, přesvědčit je, aby firmware poskytovali přímo a ne jako součást .exe souboru, aby mohl být popis začleněn do služby Linux Vendor Firmware Service (LVFS) a aktualizace tak mohla proběhnou přímo z Linuxu pomocí projektu fwupd.

Ladislav Hagara | Komentářů: 0
dnes 13:22 | Nová verze

Po roce a půl vydali vývojáři projektu SANE (Scanner Access Now Easy) (Wikipedie) novou verzi 1.0.27 balíku SANE-Backends. Nejnovější verze tohoto balíku pro přístup ke skenerům přináší například významná vylepšení v několika backendech nebo podporu pro více než 30 nových modelů skenerů. Verze 1.0.26 byla přeskočena.

Ladislav Hagara | Komentářů: 0
včera 20:55 | Komunita

Od 18. do 21. května proběhla v Saint-Étienne Linux Audio Conference 2017. Na programu byla řada zajímavých přednášek a seminářů. Videozáznamy přednášek lze zhlédnout na YouTube. K dispozici jsou také články a prezentace.

Ladislav Hagara | Komentářů: 0
včera 20:44 | IT novinky

Hodnota Bitcoinu, decentralizované kryptoměny, překonala hranici 2 200 dolarů. Za posledních 30 dnů tak vzrostla přibližně o 80 % [reddit].

Ladislav Hagara | Komentářů: 4
včera 17:33 | Nová verze

Po 5 měsících vývoje od vydání verze 0.12.0 byla vydána verze 0.13.0 správce balíčků GNU Guix a na něm postavené systémové distribuce GuixSD (Guix System Distribution). Na vývoji se podílelo 83 vývojářů. Přibylo 840 nových balíčků. Jejich aktuální počet je 5 454. Aktualizována byla také dokumentace.

Ladislav Hagara | Komentářů: 1
včera 17:22 | Nová verze

Po 5 měsících vývoje a 3 týdnech intenzivního testování byla vydána verze 12 open source systému Nextcloud, forku ownCloudu, umožňujícího provoz vlastního cloudového úložiště. Přehled novinek i s videoukázkami v poznámkách k vydání. Pro vyzkoušení je k dispozici demo.

Ladislav Hagara | Komentářů: 8
včera 11:44 | Zajímavý článek

Týden po prvním číslu publikoval Michal Špaček na svých stránkách druhé číslo newsletteru věnovanému bezpečnosti, bezpečnému vývoji převážně webových aplikací a bezpečnosti uživatelů. Věnuje se výpadku Let's Encrypt, únikům dat, bug bounty pro WordPress nebo SQL Injection v Joomla. Zmiňuje také, že Mozilla plánuje z Firefoxu odstranit podporu pro Encrypted Media Extensions (EME) na nešifrovaném HTTP a nadále pro EME vyžadovat HTTPS.

Ladislav Hagara | Komentářů: 0
včera 02:00 | Pozvánky

Ve středu 31. května 2017 od 17:00 proběhne v pražské pobočce SUSE Den otevřených dveří v SUSE. Čekají vás přednášky o live kernel patchingu a nástroji SaltStack. Také se dozvíte zajímavé informace o SUSE, openSUSE, a vlastně všech produktech, na kterých lidé ze SUSE pracují.

Ladislav Hagara | Komentářů: 4
včera 01:00 | Pozvánky

Czech JBoss User Group srdečně zve na setkání JBUG v Brně, které se koná ve středu 7. června 2017 v prostorách Fakulty informatiky Masarykovy univerzity v místnosti A318 od 18:00. Přednáší Tomáš Livora na téma Fault Tolerance with Hystrix. Více informací na Facebooku a Twitteru #jbugcz.

mjedlick | Komentářů: 0
Chystáte se pořídit CPU AMD Ryzen?
 (6%)
 (32%)
 (1%)
 (8%)
 (44%)
 (9%)
Celkem 597 hlasů
 Komentářů: 62, poslední 19.5. 01:57
    Rozcestník

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

    13.4. 15:53 | Přečteno: 1037× | 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
    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: 32 | 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: 32 | 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.