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

dnsdist, specializovaný balancer pro DNS provoz, dosáhl stabilní verze 1.2.0. Tento software vyvíjí komunita kolem PowerDNS a neměl by uniknout pozornosti nikomu, kdo provozuje vytíženější rekurzivní DNS servery. Balancer je vhodný k obraně před DDoS útoky, je skriptovatelný v LUA, disponuje konzolovým rozhraním a má spoustu dalších zajímavých vlastností.

… více »
BigWrigley | Komentářů: 0
včera 15:22 | Nová verze

Byla vydána verze 9.5 open source alternativy GitHubu, tj. softwarového nástroje s webovým rozhraním umožňujícího spolupráci na zdrojových kódech, GitLab (Wikipedie). Představení nových vlastností v příspěvku na blogu. Zdůraznit lze možnost ověřování GPG podpisů u commitů.

Ladislav Hagara | Komentářů: 2
22.8. 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
22.8. 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ářů: 33
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
Těžíte nějakou kryptoměnu?
 (5%)
 (2%)
 (18%)
 (76%)
Celkem 374 hlasů
 Komentářů: 21, poslední 13.8. 09:57
    Rozcestník

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

    13.4. 15:53 | Přečteno: 1070× | 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: 74 | 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
    tf_train.py:93: global_step=110749, loss=1.4074e+17
    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.