Steve Jobs a superpočítač Cray-1 budou vyobrazeny na pamětních jednodolarových mincích vyražených v příštím roce v rámci série Americká inovace. Série má 57 mincí, tj. 57 inovací. Poslední 4 mince budou vyraženy v roce 2032.
Byl zveřejněn průběžně aktualizovaný program konference OpenAlt 2025 o otevřeném softwaru a datech, IT bezpečnosti, DIY a IoT. Konference proběhne o víkendu 1. a 2. listopadu v prostorách FIT VUT v Brně. Vstup je zdarma.
Senát včera opětovně nepřijal návrh ústavního zákona, který měl do Listiny základních práv a svobod zakotvit právo občanů platit v hotovosti nebo být off-line. Návrh předložila skupina senátorů již v roce 2023. Senát dnes návrh neschválil, ale ani nezamítl. Pokud by ho přijal, dostala by ho k projednání Sněmovna a vyjádřila by se k němu vláda.
V programovacím jazyce Go naprogramovaná webová aplikace pro spolupráci na zdrojových kódech pomocí gitu Forgejo byla vydána ve verzi 13.0 (Mastodon). Forgejo je fork Gitei.
Společnost Eclypsium se na svém blogu rozepsala o bezpečnostním problému počítačů Framework. Jedná se o zranitelnost v UEFI umožňující útočníkům obejít Secure Boot.
Editor kódů Zed (Wikipedie) po macOS a Linuxu s verzí 0.208.4 už běží také ve Windows.
Apple dnes představil 14palcový MacBook Pro, iPad Pro a Apple Vision Pro s novým čipem M5.
Debian pro mobilní zařízení Mobian (Wikipedie) byl vydán ve verzi 13 Trixie. Nová stabilní verze je k dispozici pro PINE64 PinePhone, PinePhone Pro a PineTab, Purism Librem 5, Google Pixel 3a a 3a XL, OnePlus 6 a 6T a Xiaomi Pocophone F1.
Operátor O2 představil tarif Datamanie 1200 GB . Nový tarif přináší 1200 GB dat s neomezenou 5G rychlostí, a také možnost neomezeného volání do všech sítí za 15 Kč na den. Při roční variantě předplatného zákazníci získají po provedení jednorázové platby celou porci dat najednou a mohou je bezstarostně čerpat kdykoli během roku. Do 13. listopadu jej O2 nabízí za zvýhodněných 2 988 Kč. Při průměrné spotřebě tak 100 GB dat vychází na 249 Kč měsíčně.
Byly publikovány informace o útoku na zařízení s Androidem pojmenovaném Pixnapping Attack (CVE-2025-48561). Aplikace může číst citlivá data zobrazovaná jinou aplikací. V demonstračním videu aplikace čte 2FA kódy z Google Authenticatoru.
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 }
test
, tak jeho alias [
jsou built-in příkazy bash
e. 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: