Deno (Wikipedie), běhové prostředí (runtime) pro JavaScript, TypeScript a WebAssembly, bylo vydáno v nové verzi 2.9. Hlavní novinkou je deno desktop pro převod Deno projektu na desktopovou aplikaci. Jedná se o alternativu k frameworkům Electron nebo Tauri.
Od zítra jsou Datové schránky oficiálně na nové adrese datovka.gov.cz. Adresa mojedatovaschranka.cz zůstává funkční do 27. srpna 2026, následně budou uživatelé automaticky přesměrováni na datovka.gov.cz.
Dolphin (Wikipedie), tj. open source multiplatformní emulátor herních konzolí GameCube a Wii od Nintenda, byl vydán ve verzi 2606. S podporou Game Boy Playeru.
Vasudeva Kamath představil utilitu debvulns, alternativu k nativní utilitě debsecan, pro výpis zranitelností v Debianu. Navíc má především možnost výstupu ve strukturovaných formátech JSON a CSV. V plánu je exportér pro Prometheus.
Oficiální český státní eshop s elektronickými dálničními známkami nově najdete na edalnice.gov.cz. Doména gov.cz jasně potvrzuje, že jste na oficiálním státním webu [𝕏].
Byla vydána nová verze 4.8.0 interaktivního shellu fish (friendly interactive shell, Wikipedie). Přehled novinek v poznámkách k vydání.
Byl aktualizován seznam 500 nejvýkonnějších superpočítačů na světě TOP500. Nejvýkonnějším superpočítačem se nově stal čínský LineShine v Národním superpočítačovém centru v Šen-čenu (NSCS) s výkonem 2,198 exaFLOPS. Z prvního místa sesadil americký superpočítač El Capitan s výkonem 1,809 exaFLOPS. Nejvýkonnější český počítač C24 klesl na 215 místo. Karolina, GPU partition klesla na 249. místo a Karolina, CPU partition na 475. místo.
… více »Zemřel průkopník videoherní hudby Bobby Prince (Wikipedie). Složil hudbu pro hry Wolfenstein 3D, Doom, Doom II, Duke Nukem II a Duke Nukem 3D.
Počítačová hra Operace Flashpoint (Arma: Cold War Assault) od společnosti Bohemia Interactive slaví 25 let. Při této příležitosti bylo publikováno bezplatné hratelné Arma: Cold War Assault Remastered Demo a na GitHubu byly zveřejněny zdrojové kódy.
Na trh v České republice přichází HP EliteBoard G1a. Jde o plnohodnotný AI počítač integrovaný přímo do těla klávesnice, tedy zařízení, které na první pohled vypadá jako minimalistická klávesnice, ale ve skutečnosti nahrazuje klasickou počítačovou jednotku.
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: