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í
×
16.8. 19:00 | Nová verze

Byla vydána verze 18.08.0 KDE Aplikací (KDE Applications). Přehled novinek v kompletním seznamu změn a na stránce s dalšími informacemi.

Ladislav Hagara | Komentářů: 0
16.8. 18:44 | Pozvánky

Spolek OpenAlt zve příznivce otevřených řešení a přístupu na 155. brněnský sraz, který proběhne v pátek 17. srpna od 18:00 na zahrádce restaurace Tanganika (Horova 35). V případě nepřízně počasí uvnitř. Tentokrát bude sraz pojat tématicky. Vzhledem k blížícímu se 50. výročí invaze vojsk Varšavské smlouvy do Československa proběhne malá výstava. Kromě literatury budou k vidění též originály novin z 21. srpna 1968, dosud nikde nezveřejněné fotky okupovaného Brna a původní letáky rozdávané v ulicích.

Ladislav Hagara | Komentářů: 0
16.8. 01:00 | Komunita

Měsíc po Slackware slaví 25 let také Debian. Přesně před pětadvaceti lety, 16. srpna 1993, oznámil Ian Murdock vydání "Debian Linux Release".

Ladislav Hagara | Komentářů: 10
15.8. 06:00 | Nová verze

Byla vydána nová verze 1.26 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a animovanými gify v poznámkách k vydání. Představení novinek také na YouTube.

Ladislav Hagara | Komentářů: 27
15.8. 03:00 | Nová verze

Po více než 3 měsících vývoje od vydání verze 2.12.0 byla vydána nová verze 3.0.0 otevřeného emulátoru procesorů a virtualizačního nástroje QEMU (Wikipedie). Přispělo 169 vývojářů. Provedeno bylo více než 2 300 commitů. Přehled úprav a nových vlastností v seznamu změn. Proč verze 3.0.0 a ne 2.13.0? Není to kvůli triskaidekafobii. QEMU letos v březnu slavilo 15 let od oznámení verze 0.1 a to je dle vývojářů dobrý důvod pro novou major verzi. Vývojáři mají v plánu zvyšovat major verzi jednou ročně, vždy s prvním vydáním v daném roce.

Ladislav Hagara | Komentářů: 3
14.8. 22:11 | Bezpečnostní upozornění

Intel potvrdil (INTEL-SA-00161) další bezpečnostní problém ve svých procesorech. Problém byl pojmenován L1 Terminal Fault aneb L1TF. Popis problému přímo od Intelu na YouTube. Jedná se o CVE-2018-3615 (SGX), CVE-2018-3620 (OS/SMM) a CVE-2018-3646 (VMM). Další informace na stránce Foreshadow nebo přímo v dnešním commitu do Linuxu.

Ladislav Hagara | Komentářů: 19
14.8. 12:33 | IT novinky

Po více než 4 letech bylo vydáno RFC 8446 popisující verzi 1.3 protokolu TLS (Transport Layer Security). Popis novinek i historie TLS například v příspěvku na blogu Cloudflare.

Ladislav Hagara | Komentářů: 0
14.8. 11:11 | Zajímavý software

V roce 1998 uvedla společnost Tiger Electronics na trh elektronickou hračku, malého chlupatého tvora s velkýma ušima, Furby. Furby patřil k nejžádanějším hračkám. Během tří let se jich prodalo více než 40 milionů. Furby již tenkrát reagoval na světlo, zvuk, polohu, doteky a přítomnost dalších Furby. Sám mluvil a pohyboval se. Firmware uvnitř simuloval postupný vývoj a učení. Zdrojový kód tohoto firmwaru byl zveřejněn na Internet Archive [Hacker News].

Ladislav Hagara | Komentářů: 21
14.8. 02:00 | Nová verze

Australská společnost Blackmagic Design oznámila vydání verze 15 svého proprietárního softwaru pro editování videa a korekci barev DaVinci Resolve běžícího také na Linuxu. Představení nových vlastností na YouTube. Základní verze DaVinci Resolve je k dispozici zdarma. Plnou verzi DaVinci Resolve Studio lze koupit za 299 dolarů. Před rokem to bylo 995 dolarů.

Ladislav Hagara | Komentářů: 0
13.8. 21:00 | Zajímavý projekt

Cílem projektu DXVK bylo vytvořit vrstvu kompatibility mezi Direct3D 11 a Vulkanem a začlenění této vrstvy do Wine. Direct3D 10 nad Vulkanem bylo možné řešit mezikrokem pomocí vrstvy DXUP překládající Direct3D 10 na Direct3D 11. Vývojáři DXVK se rozhodli přímo podporovat Direct3D 10. Podpora byla začleněna do hlavní větve na GitHubu.

Ladislav Hagara | Komentářů: 4
Používáte zařízení („chromebook“, „chromebox“ či tablet) s ChromeOS?
 (7%)
 (4%)
 (13%)
 (77%)
Celkem 199 hlasů
 Komentářů: 9, poslední 14.8. 21:03
    Rozcestník

    How crazy can I get? part 1

    27.7. 05:52 | Přečteno: 2408× | Výběrový blog | poslední úprava: 27.7. 05:52

    Well I won't lie: quite a lot. This is a blogpost about an ANSI escape text user interface for a mobile phone ... made in the shell enhanced with elements from the object programming paradigm.

    WTF? (or how did it start?)

    It all started with a PXA272 SoC based mobile phone (Let's teach penguin how to become magician 1 2 3). The SoC is really buggy. Usually I've had only one way of the control: an USB device network. The problem is the PXA272 USB device controller is really buggy so the USB network crashed a lot. How can you reset the controller if the only access to the system is over the crashed controller? One way is to use the phone keyboard itself, unless it has only 10 buttons (most of them are unusable for "typing") and a touch screen? You need to make a menu then!

    Usable alternatives

    There isn't much and X windows server mostly keeps failing, so only a terminal application based menus are available. The most obvious use is a ncurses based dialog and it has been used as the first implementation. The problem with ncurses+dialog is the size of hundreds of kB and they require gpm for the pointing device support. The dialog has a big graphical overhead for 30x40 character display (for 8x8 font, we could use 4x6 fonts, but dialogs with them are an ugly thing).

    The gpm had another problem with a correct support for the touchscreen's absolute position reports. This itself disqualifies the full use of the dialog and there is a problem with the switching between two focusable groups. There is not enough buttons. Problem with gpm disqualified the scriptable menu drawing utility gpm-root too.

    Some "history" first

    By using a dialog based menu I've realised an interesting fact. You can redirect output of any ncurses application (for example midnight commander) to any (even regular) file and later dump it back to terminal. So why should I use dialog and ncurses to draw an almost static UI when I can use a ansi escape dumpfile with highly compression ratio? Why do I even need to store a dumpfile when I can draw it dynamically? Why would I use this awesome interface to only reset an USB controller when I can build whole GUI with it?

    The answer is here:

    alpha version menu

    Almost everything in this version was hardcoded. Still, it already supported a reset of some controllers and a battery charging checks (first thing which dies with the undercharged battery is the USB device controller).

    How to make a simple colored button

    We gonna need a reference for ansi escape codes and some frame drawing characters. The wikipedia uses UTF-16, but the terminal uses UTF-8, we need to convert the values. The laziest way is to copypaste them from the wikipedia into your hexdump :-). You can store the following 3 bytes as a string for a symbolic naming. Using the native character should be possible (and the string will have only one quart length), but you may have problems with editing or parsing the source code and with debugging the shells without a valid unicode support. There shouldn't be problems with printing the string, so it should be safe, but still you really want to debug the string parsing functions in the shell source code? :-D

    c_form_h="\xe2\x94\x80"
    c_form_v="\xe2\x94\x82"
    c_form_tl="\xe2\x94\x8c"
    c_form_tr="\xe2\x94\x90"
    c_form_br="\xe2\x94\x98"
    c_form_bl="\xe2\x94\x94"
    

    Now we have the constant frame drawing symbols defined. Let's make more constant strings (readonly mode is enforced by the mind of a programmer, obviously):

    c_form_h_arr="${c_form_h}"
    c_form_h_arr="${c_form_h_arr}${c_form_h_arr}"
    c_form_h_arr="${c_form_h_arr}${c_form_h_arr}"
    c_form_h_arr="${c_form_h_arr}${c_form_h_arr}"
    c_form_h_arr="${c_form_h_arr}${c_form_h_arr}"
    c_form_h_arr="${c_form_h_arr}${c_form_h_arr}"
    c_form_h_arr="${c_form_h_arr}${c_form_h_arr}"
    c_form_h_arr="${c_form_h_arr}${c_form_h_arr}"
    

    lazy to copypaste the constant string 2^n times. Some 10 lines of that should be enough for everybody (unless you want to fill 4k monitor with 4x6 font).

    c_spaces=" "
    c_spaces="${c_spaces}${c_spaces}"
    c_spaces="${c_spaces}${c_spaces}"
    c_spaces="${c_spaces}${c_spaces}"
    c_spaces="${c_spaces}${c_spaces}"
    c_spaces="${c_spaces}${c_spaces}"
    c_spaces="${c_spaces}${c_spaces}"
    c_spaces="${c_spaces}${c_spaces}"
    

    same with spaces. Yeah and don't forget to use "{" and "}" or you gonna have the hell with a renaming. And now we can print a simple frame:

    c_sizex=10
    c_sizey=10
    c_color="32;1"
    
    echo -e "\x1b[${c_color}m${c_form_tl}${c_form_h_arr:0:$(((${c_sizex} - 2)*12))}${c_form_tr}"
    
    i=1
    while [ ${i} -lt $((${c_sizey}-1)) ] ; do
      echo -e "\x1b[${c_color}m${c_form_v}\x1b[0m${c_spaces:0:$((${c_sizey} - 2))}\x1b[${c_color}m${c_form_v}"
      i=$((${i}+1))
    done
    
    echo -e "\x1b[${c_color}m${c_form_bl}${c_form_h_arr:0:$(((${c_sizey} - 2)*12))}${c_form_br}"
    

    I don't use printf as I've found inconsistencies between different shell implementations. Some may have problems with escaping the predefined strings. A raw unicode character could help, but the copying from the array is the place where an unicode unaware shell may differ from an unicode aware shell.

    # xxx="╬"
    # echo -n ${xxx} | xxd
    00000000: e295 ac                                  ...
    # echo ${#xxx}
    1
    

    And mine configuration of the busybox shell would count bytes, but I don't remember if I configured all parts of the system with the unicode support.

    If we want to print the frame somewhere in the middle of the screen we need to add "cursor position set" ansi escape code for every line. We can use the code "CSI n ; m H" (there are multiple ways):

    while [ ${i} -lt $((${c_sizey}-1)) ] ; do
      echo -e "\x1b[${c_row};${c_column}H\x1b[${c_color}m${c_form_v}\x1b[0m${c_spaces:0:$((${c_sizey} - 2))}\x1b[${c_color}m${c_form_v}"
      i=$((${i}+1))
    done
    

    BTW the values of c_row and c_column are counted from 1 (yum), but you can incerment them in the string with an embedded $(()) expression.

    The CSI for the color settings can set different attributes, which may or may not work on your terminal emulator. For example: the one for the framebuffer in the kernel cannot blink, you would have to write some scheduled rewriting in the kernel driver, but most of framebuffer drivers can increase the intensity and X server terminal emulators can do anything.

    Following versions

    During the bugfixing I've started naming the versions by the letters of the greek alphabet. Let's see the β version:

    beta version enhanced menu

    Now the engine supported a directory based menu (and a "nice" hardcoded selection frame):

    beta version submenu

    BTW I was able to chroot the whole system from an SD card into the RAM (because of my second crazy project).

    By abusing the loadkey database I was able to type a simple command and run it in the terminal (with only arrows, enter and 2 more keys).

    echo -e "keycode 169 = F70\nstring F70 = \"${KEYSTRING}\"" | /usr/bin/loadkeys - > /dev/null
    

    gamma version keyboard gamma version terminal

    In the Delta version I've manually colored all icons with the ansi escape codes:

    delta full colored version

    and in the Epsilon I've started to rewrite the engine (for the first time) for more flexibility. Here is what happens when you make movable "window" in a shell:

    epsilon dragged button

    BTW the engine should be called "ever rewrite engine" as we will see but I called it "Failsafe" (the irony was intended, but it was more stable than Xorg by that time).

    In the next part we will take a look on the basic data manipulation in a shell.

    If you have found this idea funny or you want me to rewrite the engine in a more sane language, consider a donate to my BTC adress: 1CqzWKDLdcbjbzvzkrcP5bHsScjm5CwcjH or to my ETH adress: 0x1440d31eD70fc6b084c71f03590F6e1d121C919E

           

    Hodnocení: 75 %

            špatnédobré        

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    27.7. 05:55 pc2005 | skóre: 36 | blog: GardenOfEdenConfiguration | liberec
    Rozbalit Rozbalit vše Re: How crazy can I get? part 1
    Aneb jak si Bedňa přál ...
    Bedňa avatar 28.7. 00:30 Bedňa | skóre: 34 | blog: Žumpa | Horňany
    Rozbalit Rozbalit vše Re: How crazy can I get? part 1
    Kurňa kuknem na to a hovorím si je to ono, si pán, dík kámo.
    KERNEL ULTRAS video channel >>>
    27.7. 07:59 debian
    Rozbalit Rozbalit vše Re: How crazy can I get? part 1
    Can you give on and article/blog your full example code? I wanna try that.

    Thx.
    27.7. 23:13 pc2005 | skóre: 36 | blog: GardenOfEdenConfiguration | liberec
    Rozbalit Rozbalit vše Re: How crazy can I get? part 1
    Not yet, I don't wanna spoil blogposts, maybe in 4-5 part, definitely on the end of the series. These version are not even able to run on PC and they would randomly wrote to a random memory locations.
    28.7. 08:11 debian
    Rozbalit Rozbalit vše Re: How crazy can I get? part 1
    Ok. Then u give on too on github or here. ... I like what i studying, can testing.
    xkucf03 avatar 28.7. 17:20 xkucf03 | skóre: 46 | blog: xkucf03
    Rozbalit Rozbalit vše úložiště pro zdrojové kódy
    s/github/gitlab/g

    nebo jinam…

    • Git != GitLab
    • verzovací systém != Git
    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-Výuka.cz, Nekuřák.net
    vlastikroot avatar 27.7. 19:08 vlastikroot | skóre: 24 | blog: vlastikovo | Milevsko
    Rozbalit Rozbalit vše Re: How crazy can I get? part 1
    Proboha proc? :-( Na grafiku nejsou potreba Xka, staci framebuffer (ktery musi fungovat, kdyz funguje konzole na displayi).
    Sg1-game | We will destroys the Christian's legion ... and the cross, will be inverted | IP 80.188.182.6
    27.7. 23:15 pc2005 | skóre: 36 | blog: GardenOfEdenConfiguration | liberec
    Rozbalit Rozbalit vše Re: How crazy can I get? part 1
    Právě pro takovéhle komentáře :-D. A to tohle je ještě nuda >:-D. BTW tohle není grafika, to jsou znaky v terminálu.
    vlastikroot avatar 28.7. 08:55 vlastikroot | skóre: 24 | blog: vlastikovo | Milevsko
    Rozbalit Rozbalit vše Re: How crazy can I get? part 1
    Je to grafika, to vidim :-D Me jde prave o to, proc to delat takhle oklikou (bash -> fbcon -> framebuffer) a ne rovnou (c/c++ -> framebuffer).
    Sg1-game | We will destroys the Christian's legion ... and the cross, will be inverted | IP 80.188.182.6
    28.7. 10:29      
    Rozbalit Rozbalit vše Re: How crazy can I get? part 1
    Protože to jde? Nebuď takovej suchar
    29.7. 02:23 pc2005 | skóre: 36 | blog: GardenOfEdenConfiguration | liberec
    Rozbalit Rozbalit vše Re: How crazy can I get? part 1
    No primárně protože ten daný den mě nešel zkompilovat ncurses a binárka byla moc velká do initramdisku, pak jsem se ho nechtěl učit a nakonec to bylo because we can :-D. V céčku bych to samozřejmě napsat mohl a možná to přepíšu. Z bashe to bude triviální :-D.
    Bedňa avatar 28.7. 01:19 Bedňa | skóre: 34 | blog: Žumpa | Horňany
    Rozbalit Rozbalit vše Re: How crazy can I get? part 1
    Tak a teraz k EN. Fakt sranda, že roky som bol len na písanej angličtine "pls fix my bug" a teraz som sa na dlhšiu dobu ocitol za hranicami a emajly robím v pohode. Potom mi volá fakt pekná Alexia a bla, bla bla, pretože je moc ukecaná a nejde k veci, takže to nechytám a poviem jej prepáč, dáme kávu ja si idem prečítať email na ktorý som sa vysral :)

    Kurwa si borec vo veciach ktorým som kedysi venoval kopec času, tak tebe fandím, ako to háčkuješ.

    "more stable than Xorg*" alebo tak niečo tam píšeš, nechce sa mi k tomu vracať :) Sorry ja som zástanca Xorgov a nemám rád kecy bez riešenia čo je na nich zlé :)
    KERNEL ULTRAS video channel >>>
    28.7. 03:57 pc2005 | skóre: 36 | blog: GardenOfEdenConfiguration | liberec
    Rozbalit Rozbalit vše Re: How crazy can I get? part 1
    "more stable than Xorg*" alebo tak niečo tam píšeš, nechce sa mi k tomu vracať :) Sorry ja som zástanca Xorgov a nemám rád kecy bez riešenia čo je na nich zlé :)
    To se přímo netýka bashe, ale spíš intel Xscale SoC architektury. V té době nefungoval pořádně touchscreen, Xka sežerou značnou část RAM a nevejdou se do 30MB ramdisku (takže je nelze spouštět bez SD karty), fluxbox má dost neefektivní stavový automat na obsluhu klikání, takže se špatně fungujícím touchscreen driverem to bylo nepoužitelné. Když umře nějakej driver, tak potřebuju vidět dmesg puštěnej ve smyčce, v tty konzoli to je přece jen robustnější. GTK se nedá použít na rozlišení menší než 640x480 (mám dojem, že to mají dokonce ve specifikaci UI layoutu, minimálně jsem musel ty layouty ručně upravovat, protože jsem jinak viděl jen výpis adresářů). Současně používaný matchbox ještě v té době pořádně nefungoval (je málo vyvíjenej) a občas segfaultoval. Stejně tak nefungovala virtuální klikací klávesnice (jsem musel najít až minulej rok, že se před x lety změnil server repa).

    Dále zapnutí Xek začne víc žrát baterku, takže je vyšší šance, že systém selže nadproudem (ani bych neměl v xkách aplikaci na sledování odběru z baterky). Intenzivní používání "grafického" "řadiče" ho může zablokovat.

    A finálně největší problém. GCC pro xscale negenerovalo validní instrukce a tak občas dostal ARM buď random kód a nebo instrukci z novější generace architektury (protože ARMv5TE nemá pořádnou podporu debuggingu, tak to vypadalo tak, že kód skáče náhodně po paměti a on nejspíš i občas skákal). Taky to znemožňovalo používat 16bpp xkový aplikace (ty instrukce se používají pro zoomování pixmap).
    vlastikroot avatar 28.7. 09:04 vlastikroot | skóre: 24 | blog: vlastikovo | Milevsko
    Rozbalit Rozbalit vše Re: How crazy can I get? part 1
    Xka se na embedded vubec nehodi. Nejlepsi je kreslit primo na framebuffer. Qt ma moduly linuxfb (legacy FB) a eglfs (openGL KMS), takze jde pouzivat i bez X. Ale to PXA270 je asi moc slaby i na Qt, ja delam s Freescale iMX 5 a 6 a ani tam to neni zadna slava.
    Sg1-game | We will destroys the Christian's legion ... and the cross, will be inverted | IP 80.188.182.6
    vlastikroot avatar 28.7. 09:25 vlastikroot | skóre: 24 | blog: vlastikovo | Milevsko
    Rozbalit Rozbalit vše Re: How crazy can I get? part 1

    BTW, ja pouzivam Qt/QML i na miniaturnim monochromatickem displayi 128x64 OLED s radicem SSD1305. Mam tam dost podobne GUI, jako jsou screenshoty v zapisku (program slouzi k flashovani a otestovani zarizeni ve vyrobe, takova ozivovaci SD karta).

    Vyhoda je, ze mam tim padem stejne vyvojove prostredi, at uz jsem na PC, dotykovem embedded zarizeni, i na tech nejjednodusich tlacitkovych zarizenich.

    Sg1-game | We will destroys the Christian's legion ... and the cross, will be inverted | IP 80.188.182.6
    29.7. 02:26 pc2005 | skóre: 36 | blog: GardenOfEdenConfiguration | liberec
    Rozbalit Rozbalit vše Re: How crazy can I get? part 1
    Čistý xka s vlastním layoutem by jely, akorát teda by bylo málo paměti. Matchbox docela sedí i když je dost natvrdo naprogramovanej (divná nabídka a občas něco segfaultuje).
    xkucf03 avatar 28.7. 17:37 xkucf03 | skóre: 46 | blog: xkucf03
    Rozbalit Rozbalit vše Re: How crazy can I get? part 1

    Přijde mi to dost nečitelné. Nepřemýšlel jsi o rozdělení na vrstvy bitmap (resp. spíš znakových map)?

    text = "
     ╭──────╮
     │ Ahoj │ 
     │ 123  │
     │ ...  │
     ╰──────╯
    ";
    
    barvaPisma = "
     xxxxxxxx
     x      x 
     x aaaa x
     x bbbb x
     xxxxxxxx
    ";
    
    barvaPozadi = "
     dddddddd
     d cccc d 
     d      d
     d      d
     dddddddd
    ";
    
    akce = "
     dddddddd
     daaaaaad 
     daaaaaad
     daaaaaad
     dddddddd
    ";

    A pak mít funkci, která ti to poskládá dohromady a vygeneruje ANSI sekvence. Ve zdrojáku by bylo na první pohled vidět, co bude na obrazovce. Dynamické hodnoty by se daly doplňovat prostým nahrazením textu (+x kontrola délky), např. bys tam měl {ppp} a za to bys doplňoval hodnotu nabití baterie v procentech.

    Další funkce by pak podle souřadnic zjistila akci a vrátila např. akci "a".

    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-Výuka.cz, Nekuřák.net
    28.7. 20:05 debian
    Rozbalit Rozbalit vše Re: How crazy can I get? part 1
    A naprogramoval by a la ncurses ....
    29.7. 02:36 pc2005 | skóre: 36 | blog: GardenOfEdenConfiguration | liberec
    Rozbalit Rozbalit vše Re: How crazy can I get? part 1
    Co vlastně všechno ncurses umí, můžu si definovat kompletní okenní paradigma, nebo jsou závislosti mezi oknama součástí knihovny?
    Josef Kufner avatar 29.7. 23:26 Josef Kufner | skóre: 68
    Rozbalit Rozbalit vše Re: How crazy can I get? part 1
    Okna v ncurses jsou dost low-level záležitost a do oken jak je známe z grafických desktopů to má hodně daleko.
    Hello world ! Segmentation fault (core dumped)
    29.7. 02:29 pc2005 | skóre: 36 | blog: GardenOfEdenConfiguration | liberec
    Rozbalit Rozbalit vše Re: How crazy can I get? part 1
    Jako rozdělit to na planární grafiku? To nejde ash neumí pole a jinak nemáš jak bys dostal atribut třeba pozadí ke specifickému znaku. A bajtový copypaste by bylo ultrapomalý. Jedině že bys generoval ty ansi escape kódy z nějakého vlastního jazyka, ale to by bylo furt pomalý. Nicméně aktuální verze to má jinak (nebo spíš může mít, zatím jsem byl línej to implementovat) :-D.
    29.7. 02:35 pc2005 | skóre: 36 | blog: GardenOfEdenConfiguration | liberec
    Rozbalit Rozbalit vše Re: How crazy can I get? part 1
    Jo a pak by se to taky blbě generovalo kdyby se měly generovat jednotlivý atributový roviny.
    Josef Kufner avatar 29.7. 23:27 Josef Kufner | skóre: 68
    Rozbalit Rozbalit vše Re: How crazy can I get? part 1
    Rychlost je nepodstatná. Předkompiluješ si to při překladu či před prvním použitím.
    Hello world ! Segmentation fault (core dumped)
    30.7. 01:45 pc2005 | skóre: 36 | blog: GardenOfEdenConfiguration | liberec
    Rozbalit Rozbalit vše Re: How crazy can I get? part 1
    před prvním použitím
    Jo to je ten problém, co popíšu v dalších částech.
    29.7. 20:54 RM
    Rozbalit Rozbalit vše Re: How crazy can I get? part 1
    Regarding printf inconsistency over diverse shells, what`s a problem?
    30.7. 03:15 pc2005 | skóre: 36 | blog: GardenOfEdenConfiguration | liberec
    Rozbalit Rozbalit vše Re: How crazy can I get? part 1
    Hmm I wrote it illegibly, because I partly don't remember why I didn't switch to printf and I don't remember older configurations of my busybox. I can only try to retrace my thinking.

    It's more like inconsistencies between shell implementations not directly printf, altought there are some.

    The busybox implementation of ash is slow (it even calls the kernel after every keyword). But the strings in busybox ash are __very__ slow, so I always assume a string parsing will slow the graphical engine to an unusable speed. The main goal is use the strings as little as possible. The echo -e -n command should be fast enough as it contains only switches, but the printf you cannot directly use a general graphical data string in the formating part (it can contain "%"). You need to use them as a parameter. The formating string can only be "%b".

    You could use stuff like this:

    # printf "AAA %.5s BBB\n" "${var2}"

    but it does not copy five UTF-8 characters (with 3 bytes). It copies only 5 bytes (1 and 2/3 of an three bytes UTF-8 char).

    In this situation "printf" doesn't have any benefits over "echo", but it has a disadvantage with the formatting string, which has to be complexly parsed. In the bash it doesn't really matter as the implementation overhead of a program with more features is bigger than the speed differences between echo and printf (= there are equally slow). In busybox there may be speed differences.

    And you can opt to disable one of the busybox ash functions to gain a space for the binary so using only a dumb echo output could be seen as a benefit.

    The rest of the "echo over printf" choice was most likely in my unwillingness to deal with the printf documentation as a _much_ more difficult stuff required my attention.

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.