Český úřad zeměměřický a katastrální zavedl u anonymního nahlížení do katastru nemovitostí novou CAPTCHA ve formě mapové puzzle: nepřihlášení uživatelé musí nově správně otočit devět dlaždic v 3x3 poli tak, aby dohromady daly souvislý obrázek výseče reálné mapy, přičemž na to mají pouze jeden časově omezený pokus. Test je podle uživatelů i odborníků příliš obtížný a na sociálních sítích pochopitelně schytává zaslouženou kritiku a
… více »Byla vydána verze 1.95.0 programovacího jazyka Rust (Wikipedie). Podrobnosti v poznámkách k vydání. Vyzkoušet Rust lze například na stránce Rust by Example.
Mozilla prostřednictvím své dceřiné společnosti MZLA Technologies Corporation představila open-source AI klienta Thunderbolt. Primárně je určený pro firemní nasazení.
Firma Cal.com oznámila, že přesouvá svůj produkční kód z otevřeného do uzavřeného repozitáře z důvodu bezpečnostního rizika umělé inteligence, která prý dokáže vyhledávat a zneužívat zranitelnosti rychleji, než by je jejich vývojářský tým stíhal opravovat. Zároveň zveřejnila samostatnou, open-source verzi Cal.diy pod licencí MIT, ovšem bez řady původních funkcí. O tom, zda je toto opatření rozumné, existují pochyby. … více »
Vývojáři KDE na Mastodonu oznámili vydání balíku aplikací KDE Gear 26.04. Přehled novinek i s náhledy a videi v oficiálním oznámení.
Kryptografická knihovna OpenSSL byla vydána v nové verzi 4.0. Přehled změn v souboru CHANGES.md na GitHubu. Odstraněna byla podpora SSLv2 Client Hello a SSLv3. Ve výchozím nastavení byla zakázána podpora odmítnutých eliptických křivek v TLS dle RFC 8422. Přibyla například podpora Encrypted Client Hello (ECH, RFC 9849).
curl up 2026, tj. setkání vývojářů a uživatelů curlu, proběhne opět v Praze. O víkendu 23. a 24. května v Pracovně.
Aplikace pro ověřování věku uživatelů on-line platforem je technicky hotová a brzy bude k dispozici pro občany EU, oznámila dnes předsedkyně Evropské komise Ursula von der Leyenová. Půjde podle ní o bezplatné a snadno použitelné řešení, které pomůže chránit děti před škodlivým a nelegálním obsahem. Aplikace bude podle ní fungovat na jakémkoli zařízení a bude zcela anonymní.
V prosinci 2012 byla z linuxového jádra odstraněna podpora procesorů 386. Včera započalo odstraňování podpory procesorů 486.
IuRe (Iuridicum Remedium) vyhlásila Ceny Velkého bratra za rok 2025. Slídily roku jsou automobilka Volkswagen, Meta a česká Ministerstva vnitra a průmyslu a obchodu. Autorem Výroku Velkého bratra je dánský ministr spravedlnosti zpochybňující právo na šifrovanou komunikaci. Naopak Pozitivní cenu získali studenti Masarykovy univerzity za odpor proti nucení do používaní aplikace ISIC.
function clean()
{
if test -f "Makefile"
then
rm -f "Makefile"
fi
if test -f "install.sh"
rm -f "install.sh"
fi #tu mi to hlásí chybu unexpected token fi
if test -f "$DEST_DIR/toolkit-config"
rm -f "$DEST_DIR/toolkit-config"
fi
}
clean()
{
if [ -f "Makefile" ]; then
rm -f "Makefile"
fi
}
Uvedeni slova "function" me nefunguje v cistem sh. Dal bych proto prednost neuvadeni jej.
V praxi se lze ovsem setkat i s necim takovymhle:
clean()
{
MAKEFILE="Makefile"
[ -f Makefile ] && rm -f Makefile
}
To uz ovsem silne pripomina zkratky jak je zavadi C a perl a ja osobne se jim snazim kvuli prehlednosti vyhybat.
clean()
{
MAKEFILE="Makefile"
[ -f "$MAKEFILE" ] && rm -f $MAKEFILE
}
Prikaz [ je iba link na prikaz test. Ked chces pouzivat interny test z bashu, tak [[ a ]]. Je to aj trocha rychlejsie. Teda ked to clovek vola 1000 a viac krat.
test, tak jeho alias [ jsou built-in příkazy bashe. A na rozdíl od vámi propagovaného [[...]], což je čirá bashovina, fungují i v jiných bourne-like shellech, pouze trochu pomaleji.
$ which [ /usr/bin/[Na interny prikaz toho vykonava sakra vela:
$ strace [
execve("/usr/bin/[", ["["], [/* 78 vars */]) = 0
uname({sys="Linux", node="semo", ...}) = 0
brk(0) = 0x804f000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=89324, ...}) = 0
mmap2(NULL, 89324, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f0b000
close(3) = 0
open("/lib/libc.so.6", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\0200\213"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=1201624, ...}) = 0
mmap2(0x4989e000, 1141980, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x4989e000
madvise(0x4989e000, 1141980, MADV_SEQUENTIAL|0x1) = 0
mmap2(0x499af000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x110) = 0x499af000
mmap2(0x499b3000, 7388, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x499b3000
close(3) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f0a000
mprotect(0x499af000, 4096, PROT_READ) = 0
mprotect(0x4989a000, 4096, PROT_READ) = 0
set_thread_area({entry_number:-1 -> 6, base_addr:0xb7f0aa90, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0
munmap(0xb7f0b000, 89324) = 0
open("/dev/urandom", O_RDONLY) = 3
read(3, "b\\\300\"", 4) = 4
close(3) = 0
open("/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
brk(0) = 0x804f000
brk(0x8070000) = 0x8070000
open("/usr/share/locale/locale.alias", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=2586, ...}) = 0
mmap2(NULL, 131072, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7eea000
read(3, "# Locale name alias data base.\n#"..., 131072) = 2586
read(3, "", 131072) = 0
close(3) = 0
munmap(0xb7eea000, 131072) = 0
open("/usr/lib/locale/en_US/LC_IDENTIFICATION", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=378, ...}) = 0
mmap2(NULL, 378, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f20000
close(3) = 0
open("/usr/lib/locale/en_US/LC_MEASUREMENT", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=28, ...}) = 0
mmap2(NULL, 28, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f1f000
close(3) = 0
open("/usr/lib/locale/en_US/LC_TELEPHONE", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=64, ...}) = 0
mmap2(NULL, 64, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f1e000
close(3) = 0
open("/usr/lib/locale/en_US/LC_ADDRESS", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=160, ...}) = 0
mmap2(NULL, 160, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f1d000
close(3) = 0
open("/usr/lib/locale/en_US/LC_NAME", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=82, ...}) = 0
mmap2(NULL, 82, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f1c000
close(3) = 0
open("/usr/lib/locale/sk_SK/LC_PAPER", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=39, ...}) = 0
mmap2(NULL, 39, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f1b000
close(3) = 0
open("/usr/lib/locale/en_US/LC_MESSAGES", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFDIR|0755, st_size=80, ...}) = 0
close(3) = 0
open("/usr/lib/locale/en_US/LC_MESSAGES/SYS_LC_MESSAGES", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=57, ...}) = 0
mmap2(NULL, 57, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f1a000
close(3) = 0
open("/usr/lib/locale/en_US/LC_MONETARY", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=291, ...}) = 0
mmap2(NULL, 291, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f19000
close(3) = 0
open("/usr/lib/locale/en_US/LC_COLLATE", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=21499, ...}) = 0
mmap2(NULL, 21499, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f13000
close(3) = 0
open("/usr/lib/locale/en_US/LC_TIME", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=2456, ...}) = 0
mmap2(NULL, 2456, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f12000
close(3) = 0
open("/usr/lib/locale/en_US/LC_NUMERIC", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=59, ...}) = 0
mmap2(NULL, 59, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f11000
close(3) = 0
open("/usr/lib/locale/sk_SK/LC_CTYPE", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=178464, ...}) = 0
mmap2(NULL, 178464, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7ede000
close(3) = 0
open("/usr/share/locale/en_US/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
write(2, "[: ", 3[: ) = 3
write(2, "missing `]\'\n", 12missing `]'
) = 12
close(1) = 0
exit_group(2) = ?
Process 387 detached
To ovšem vůbec neznamená, že to není interní příkaz. Za prvé:
mike@lion:~> echo -n > ~/bin/history mike@lion:~> chmod +x ~/bin/history mike@lion:~> which history /home/mike/bin/history mike@lion:~> history | wc -l 1000
Znamená to snad podle vás, že history není builtin příkaz shellu? Za druhé: pokud spustíte 'strace [', je jasné, že se spustí externí verze, pokud ale spustíte jen '[', spustí se builtin. A konečně za třetí: vytvořte si skript jménem showpid s tímto obsahem:
#!/bin/bash echo $$a zkuste spustit:
./showpid ; ./showpid ; test -e blabla ; ./showpid ; /usr/bin/test -e blabla ; ./showpid
Pokud se vám do toho něco nepřiplete, vypíše vám to tři po sobě jdoucí čísla a čtvrté, které je o dva větší než třetí. Přesně stejně to dopadne i v případě, že místo test použijete levou hranatou závorku. Dokážete to vysvětlit za předpokladu, že test není interní příkaz bashe?
test interní příkaz bashe, proč je uváděn jako builtin jak v manuálové stránce k bashi samotnému, tak v manuálové stránce jeho builtin příkazů?
chmod 000 /usr/bin/test test a = a && echo "a=a" test a = b && echo "a=b" chmod 755 /usr/bin/test
$ time for ((i=0; i<10000; i++)); do [ a == a ]; done real 0m0.183s user 0m0.168s sys 0m0.016s
$ time for ((i=0; i<10000; i++)); do test a == a; done real 0m0.178s user 0m0.172s sys 0m0.004s
$ time for ((i=0; i<10000; i++)); do [[ a == a ]]; done real 0m0.123s user 0m0.116s sys 0m0.004sPre porovnanie skutocne externy prikaz (je teda jasne, ze nic z vyssieho nebude externe):
$ time for ((i=0; i<10000; i++)); do /usr/bin/test a = a ; done real 0m30.510s user 0m7.212s sys 0m23.281sZaujimave uz len ostava, preco ku rovnakym prikazom (aj ked pod inym menom) sa sprava rozne. Dokonca aj [ sa lisi od test.
Tiskni
Sdílej: