Dnešním dnem lze již také v Česku nakupovat na Google Store (telefony a sluchátka Google Pixel).
Apple představil (keynote) iPad Pro s čipem Apple M4, předělaný iPad Air ve dvou velikostech a nový Apple Pencil Pro.
Richard Biener oznámil vydání verze 14.1 (14.1.0) kolekce kompilátorů pro různé programovací jazyky GCC (GNU Compiler Collection). Jedná se o první stabilní verzi řady 14. Přehled změn, nových vlastností a oprav a aktualizovaná dokumentace na stránkách projektu. Některé zdrojové kódy, které bylo možné přeložit s předchozími verzemi GCC, bude nutné upravit.
Free Software Foundation zveřejnila ocenění Free Software Awards za rok 2023. Vybráni byli Bruno Haible za dlouhodobé příspěvky a správu knihovny Gnulib, nováček Nick Logozzo za front-end Parabolic pro yt-dlp a tým Mission logiciels libres francouzského státu za nasazování svobodného softwaru do praxe.
Před 10 lety Microsoft dokončil akvizici divize mobilních telefonů společnosti Nokia a pod značkou Microsoft Mobile ji zanedlouho pohřbil.
Fedora 40 release party v Praze proběhne v pátek 17. května od 18:30 v prostorách společnosti Etnetera Core na adrese Jankovcova 1037/49, Praha 7. Součástí bude program kratších přednášek o novinkách ve Fedoře.
Stack Overflow se dohodl s OpenAI o zpřístupnění obsahu Stack Overflow pro vylepšení OpenAI AI modelů.
AlmaLinux byl vydán v nové stabilní verzi 9.4 (Mastodon, 𝕏). S kódovým názvem Seafoam Ocelot. Přehled novinek v příspěvku na blogu a v poznámkách k vydání.
Před 50 lety, 5. května 1974 v žurnálu IEEE Transactions on Communications, Vint Cerf a Bob Kahn popsali protokol TCP (pdf).
Bylo vydáno do češtiny přeložené číslo 717 týdeníku WeeklyOSM přinášející zprávy ze světa OpenStreetMap.
Řešení dotazu:
WWW::Mechanize HTML::TreeBuilder Data::Dumper LWP::UserAgentPriklad:
#!/usr/bin/perl -w use strict; $| = 1; use LWP::UserAgent; use HTML::TreeBuilder; use Time::HiRes qw(gettimeofday tv_interval usleep sleep); use URI; use File::Path; use Data::Dumper; my $start_url = 'http://blog.hostname.sk'; my $regexp = 'MySQL'; my $ua = LWP::UserAgent->new; my $response = $ua->get($start_url); unless ($response->is_success) { warn $response->status_line; } #warn Dumper($response); my $tree = HTML::TreeBuilder->new_from_content($response->content); my $base = [ map { $_->attr('href'); } $tree->look_down( '_tag', 'base', sub { $_[0]->attr('href') ne '' } ) ]->[0]; $base ||= $start_url; my @raw_links = $tree->look_down( '_tag', 'a', sub { my $href = $_[0]->attr('href'); (defined($href) && $href =~ m/$regexp/i); } ); #print Dumper(\@raw_links); my @links = map { URI->new_abs( $_->attr('href'), $base)->as_string(); } @raw_links; $tree = $tree->delete(); print Dumper(\@links);Skript uvedeny vyssie najde na mojom blogu vsetky linky v suvislosti s MySQL ($regexp). Mozno potrebujes nieco podobne.
printf "1\n2\n3\n4\n5" | ltrace grep "1" 2>&1 | grep -c '^mbrtowc('by mělo hodit tak "2" (ujistěte se že máte ltrace), nebo jinak, zpracování delšího souboru by mělo trvat zhruba stejně dlouho s nastaveným
LANG=C
jako bez něj.cat
před sed
je jistě nesmysl (sed
umí číst ze souboru), grep
za sed
em je patrně také nesmysl (výstup sed
u lze libovolně přizpůsobit)
man mysql
) tak to bude rychlejší, než pouštět N x mysql
.
INSERT INTO `table` (`x`,`y`) VALUES ('x1','y1'), ('x2','y2'), … ('xN','yN');A odeslat do DB a třeba jako nový proces. PS: Nedělejte to pro všechno naráz, 500-1500 by mohlo vycházet nejlépe (záleží na tom jak je DB řádek velký).
Mám program v bashi který načítá data z http. Ty data uložim(wget > soubor) a následně je čtu(cat soubor) a dál separuju - takže cat neco |sed | grep | gawk | gawk | a následně to uložim do db ( | mysql -u user -p -D db) .Ukládání výsledku do souboru je zdržující. Je lepší ho rovnou nasměrovat rourou do filtrů. Je vcelku jedno, kolik jich je, hlavně je nutné se vyvarovat cyklů v bashi. Nejvíc zdržují smyčky ve smyčce, ty by se v bashi vůbec neměly vyskytovat. Je možné, že právě ty jsou největší brzdou. Úloha se dá pohodlně paralelizovat přidáním znaku & za volání bashové funkce. Ovšem v tomto případě bych omezil počet paralelních volání na nějakou rozumnou hodnotu (desítky až tisíce). Hodně zdržují inserty do MySQL po jednom záznamu. Jak už bylo zmíněno, je lepší ukládat např. 500 záznamů jako jednu transakci. Také bych možná zkusil jinou databázi, v tomto případě bych asi vybral Redis (pokud je to možné) a klidně ukládal po jednom záznamu. Je to velmi rychlé. Další proces může eventuálně (pokud to bude nutné) asynchronně záznamy vybírat a po skupinách sázet do MySQL.
root 11217 0.0 0.8 7544 840 pts/2 S 00:31 0:00 grep root 11218 0.0 0.8 9688 836 pts/2 S 00:31 0:00 sed root 11219 0.0 0.8 9688 864 pts/2 S 00:31 0:00 sed root 11220 0.0 0.9 10368 980 pts/2 S 00:31 0:00 gawk root 11221 0.0 2.5 33644 2524 pts/2 S 00:31 0:00 mysql root 11226 0.0 2.0 26644 2048 pts/2 S 00:31 0:00 wget root 11227 0.0 0.8 7544 840 pts/2 S 00:31 0:00 grep root 11228 0.0 0.8 9688 832 pts/2 S 00:31 0:00 sed root 11229 0.0 0.8 9688 860 pts/2 S 00:31 0:00 sed root 11230 0.0 0.9 10368 984 pts/2 S 00:31 0:00 gawk root 11231 0.0 2.5 33644 2520 pts/2 S 00:31 0:00 mysql root 11234 0.0 0.8 9688 836 pts/2 S 00:31 0:00 sed root 11235 0.0 0.8 9688 860 pts/2 S 00:31 0:00 sed root 11236 0.0 0.9 10368 980 pts/2 S 00:31 0:00 gawk root 11237 0.0 2.5 33644 2528 pts/2 S 00:31 0:00 mysql root 11238 0.0 2.0 26644 2048 pts/2 S 00:31 0:00 wget root 11239 0.0 0.8 7544 844 pts/2 S 00:31 0:00 grep root 11240 0.0 0.8 9688 832 pts/2 S 00:31 0:00 sed root 11241 0.0 0.8 9688 864 pts/2 S 00:31 0:00 sed root 11242 0.0 0.9 10368 984 pts/2 S 00:31 0:00 gawk root 11243 0.0 2.5 33644 2524 pts/2 S 00:31 0:00 mysql root 11244 0.0 2.0 26644 2044 pts/2 S 00:31 0:00 wget root 11245 0.0 0.8 7544 840 pts/2 S 00:31 0:00 grep root 11246 0.0 0.8 9688 832 pts/2 S 00:31 0:00 sed root 11247 0.0 0.8 9688 860 pts/2 S 00:31 0:00 sed root 11248 0.0 0.9 10368 980 pts/2 S 00:31 0:00 gawk root 11249 0.0 2.5 33644 2528 pts/2 S 00:31 0:00 mysql root 11250 0.0 2.0 26644 2044 pts/2 S 00:31 0:00 wget root 11251 0.0 0.8 7544 840 pts/2 S 00:31 0:00 grep root 11252 0.0 0.8 9688 832 pts/2 S 00:31 0:00 sed root 11253 0.0 0.8 9688 864 pts/2 S 00:31 0:00 sed root 11254 0.0 0.9 10368 980 pts/2 S 00:31 0:00 gawk root 11255 0.0 2.5 33644 2528 pts/2 S 00:31 0:00 mysql root 11257 0.0 2.0 26644 2044 pts/2 S 00:32 0:00 wget root 11258 0.0 0.8 7544 840 pts/2 S 00:32 0:00 grep root 11259 0.0 0.8 9688 832 pts/2 S 00:32 0:00 sed root 11260 0.0 0.8 9688 864 pts/2 S 00:32 0:00 sed root 11261 0.0 0.9 10368 980 pts/2 S 00:32 0:00 gawk root 11262 0.0 2.5 33644 2524 pts/2 S 00:32 0:00 mysql root 11264 0.0 2.0 26644 2044 pts/2 S 00:32 0:00 wget root 11265 0.0 0.8 7544 840 pts/2 S 00:32 0:00 grep root 11266 0.0 0.8 9688 832 pts/2 S 00:32 0:00 sed root 11267 0.0 0.8 9688 860 pts/2 S 00:32 0:00 sed root 11268 0.0 0.9 10368 984 pts/2 S 00:32 0:00 gawk root 11269 0.0 2.5 33644 2528 pts/2 S 00:32 0:00 mysql root 11271 0.0 2.0 26644 2044 pts/2 S 00:32 0:00 wget root 11272 0.0 0.8 7544 844 pts/2 S 00:32 0:00 grep root 11273 0.0 0.8 9688 836 pts/2 S 00:32 0:00 sed root 11274 0.0 0.8 9688 860 pts/2 S 00:32 0:00 sed root 11275 0.0 0.9 10368 984 pts/2 S 00:32 0:00 gawk root 11276 0.0 2.5 33644 2524 pts/2 S 00:32 0:00 mysql root 11278 0.0 2.0 26644 2048 pts/2 S 00:32 0:00 wget root 11279 0.0 0.8 7544 844 pts/2 S 00:32 0:00 grep root 11280 0.0 0.8 9688 832 pts/2 S 00:32 0:00 sed root 11281 0.0 0.8 9688 864 pts/2 S 00:32 0:00 sed root 11282 0.0 0.9 10368 984 pts/2 S 00:32 0:00 gawk root 11283 0.0 2.5 33644 2528 pts/2 S 00:32 0:00 mysql root 11284 0.0 1.1 16332 1160 pts/0 R+ 00:32 0:00 ps aux root 19216 0.0 3.3 70456 3336 ? Ss Mar24 0:00 sshd: root@pts/2 root 19548 0.0 2.0 19260 2056 pts/2 Ss+ Mar24 0:00 -bash root 26928 0.0 0.9 10632 920 pts/2 S Mar24 0:00 /bin/bash ./prog2 root 26929 0.0 0.9 10632 920 pts/2 S Mar24 0:00 /bin/bash ./prog2 root 26930 0.0 0.9 10632 920 pts/2 S Mar24 0:00 /bin/bash ./prog2 root 26931 0.0 0.9 10632 920 pts/2 S Mar24 0:00 /bin/bash ./prog2 root 26932 0.0 0.9 10632 920 pts/2 S Mar24 0:00 /bin/bash ./prog2 root 26933 0.0 0.9 10632 920 pts/2 S Mar24 0:00 /bin/bash ./prog2 root 26934 0.0 0.9 10632 920 pts/2 S Mar24 0:00 /bin/bash ./prog2 root 26935 0.0 0.9 10632 920 pts/2 S Mar24 0:00 /bin/bash ./prog2 root 26936 0.0 0.9 10632 920 pts/2 S Mar24 0:00 /bin/bash ./prog2 root 26937 0.0 0.9 10632 920 pts/2 S Mar24 0:00 /bin/bash ./prog2Přijde mi jako že se to docela fláká, vytížení cpu na 00 nic. Zkusim to ještě nenačítat rovnou do mysql a uvidim. Jinak fakt nevim.
grep | sed
je do očí bijící, sed
umí grepovat, zjednodušeně sed -e "/grep-like-regexp/ s/foo/bar/"
nefunguje: sed -e "/hledaneslovo/ s/foo/bar/g"
funguje: grep hledaneslovo | sed s/foo/bar/g
sed -ne "/hledaneslovo/ s/foo/bar/gp"
sed
implicitně vypisuje vše, co dostane, jen zde mění foo na bar.
grep
naopak vypisuje jen řádky s hledaneslovo
grep
lze simulovat sed
em (-n
jako nevypisuj, p
jako vypiš):
$ sed -n -e "/hledaneslovo/p"Vaše (jen odhaduji) varianta vám vypíše řádky s hledaneslovo a foo tam změní na bar, if any.
$ printf "foo\nhledaneslovo foo\nhledaneslovo\n" | grep hledaneslovo | sed -e "s/foo/bar/" hledaneslovo bar hledaneslovoČasto je poptřeba jen vypsat podmíněně řádky, kde (resp. pokud) byla udělána substituce.
$ printf "foo\nhledaneslovo foo\nhledaneslovo\n" | sed -n -e "/hledaneslovo/ s/foo/bar/p" hledaneslovo barale pokud chcete i řádky, kde není foo, tak na řádcích s hledaneslovo uděláte nejdřív substituci, a pak co máte dalším příkazem (tedy nepodmíněně vždy) vypíšete. Příkazy se oddělují středníkem, sdružují se závorkami.
$ printf "foo\nhledaneslovo foo\nhledaneslovo\n" | sed -n -e "/hledaneslovo/ {s/foo/bar/;p}" hledaneslovo bar hledaneslovo
sleep 10
... :D
wget --wait=3 --limit-rate=3K -r -p
http://www.abclinuxu.cz/poradna/programovani/show/331044
Pockat 3 vteriny a stahovar rychlosti 3K/s
a nezahnapne to net.
co posloupnost prikazu jako sed a grep resi minuty, jedno awk vyplivne za vterinu. No to minuty vs vteřiny není pravdauz jsem skutecne videl skript, kde se kombinaci sed a grep a nevim co jeste podarilo nahradit jednim awk a skutecne to vedlo az k takovemu zrychleni. ale je fakt, ze uloha tam puvodne byla celkove spatne resena
Tiskni Sdílej: