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í
×
    dnes 12:11 | Humor

    Lidi dělají divné věci. Například spouští Linux v Excelu. Využít je emulátor RISC-V mini-rv32ima sestavený jako knihovna DLL, která je volaná z makra VBA (Visual Basic for Applications).

    Ladislav Hagara | Komentářů: 1
    dnes 10:44 | IT novinky

    Revolut nabídne neomezený mobilní tarif za 12,50 eur (312 Kč). Aktuálně startuje ve Velké Británii a Německu.

    Ladislav Hagara | Komentářů: 20
    dnes 09:55 | IT novinky

    Společnost Amazon miliardáře Jeffa Bezose vypustila na oběžnou dráhu první várku družic svého projektu Kuiper, který má z vesmíru poskytovat vysokorychlostní internetové připojení po celém světě a snažit se konkurovat nyní dominantnímu Starlinku nejbohatšího muže planety Elona Muska.

    Ladislav Hagara | Komentářů: 0
    dnes 09:33 | IT novinky

    Poslední aktualizací začal model GPT-4o uživatelům příliš podlézat. OpenAI jej tak vrátila k předchozí verzi.

    Ladislav Hagara | Komentářů: 0
    dnes 08:11 | Nová verze

    Google Chrome 136 byl prohlášen za stabilní. Nejnovější stabilní verze 136.0.7103.59 přináší řadu novinek z hlediska uživatelů i vývojářů. Podrobný přehled v poznámkách k vydání. Opraveno bylo 8 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře.

    Ladislav Hagara | Komentářů: 0
    včera 20:55 | Nová verze

    Homebrew (Wikipedie), správce balíčků pro macOS a od verze 2.0.0 také pro Linux, byl vydán ve verzi 4.5.0. Na stránce Homebrew Formulae lze procházet seznamem balíčků. K dispozici jsou také různé statistiky.

    Ladislav Hagara | Komentářů: 0
    včera 16:22 | Nová verze

    Byl vydán Mozilla Firefox 138.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 138 je již k dispozici také na Flathubu a Snapcraftu.

    Ladislav Hagara | Komentářů: 0
    včera 15:55 | Pozvánky

    Šestnáctý ročník ne-konference jOpenSpace se koná 3. – 5. října 2025 v Hotelu Antoň v Telči. Pro účast je potřeba vyplnit registrační formulář. Ne-konference neznamená, že se organizátorům nechce připravovat program, ale naopak dává prostor všem pozvaným, aby si program sami složili z toho nejzajímavějšího, čím se v poslední době zabývají nebo co je oslovilo. Obsah, který vytvářejí všichni účastníci, se skládá z desetiminutových

    … více »
    Zdenek H. | Komentářů: 2
    včera 15:44 | IT novinky Ladislav Hagara | Komentářů: 4
    včera 13:55 | Komunita

    Richard Stallman přednáší ve středu 7. května od 16:30 na Technické univerzitě v Liberci o vlivu technologií na svobodu. Přednáška je určená jak odborné tak laické veřejnosti.

    Ladislav Hagara | Komentářů: 17
    Jaký filesystém primárně používáte?
     (58%)
     (1%)
     (9%)
     (21%)
     (4%)
     (1%)
     (2%)
     (0%)
     (1%)
     (3%)
    Celkem 489 hlasů
     Komentářů: 19, poslední dnes 11:32
    Rozcestník

    PHP 5.5.29, 5.6.13 a 7.0.0 RC 2

    Byly vydány verze 5.5.29, 5.6.13 a 7.0.0 RC 2 skriptovacího jazyka PHP. Ve všech verzích jsou řešeny také bezpečnostní chyby. Ve verzích 5.5.29 a 5.6.13 bylo opraveno 11 bezpečnostních chyb. Ve verzi 7.0.0 RC 2 jich bylo opraveno 7. Dle plánu by finální verze PHP 7.0.0 měla vyjít 12. listopadu 2015.

    4.9.2015 19:45 | Ladislav Hagara | Bezpečnostní upozornění


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

    Komentáře

    Vložit další komentář

    4.9.2015 22:30 Miloslav Ponkrác
    Rozbalit Rozbalit vše Re: PHP 5.5.29, 5.6.13 a 7.0.0 RC 2
    A stále to ještě nemá řetězce, jen bajtové chunky pojmenované jako string.
    5.9.2015 09:31 David
    Rozbalit Rozbalit vše Re: PHP 5.5.29, 5.6.13 a 7.0.0 RC 2
    PHP = Personal Home Page a tam to bude urcite stacit :) Pro ostatni pouziti je tady Ruby, Java, Python, Haskell, Elixir, Clojure ...
    5.9.2015 15:54 Miloslav Ponkrác
    Rozbalit Rozbalit vše Re: PHP 5.5.29, 5.6.13 a 7.0.0 RC 2
    Například Ruby také nemá řetězce, také pouze bajtové chunky, nad kterými jsou implementovány sice jakože metody pro práci se znaky v určitém kódování. Takže ani Ruby nemá skutečné řetězce, pouze bajtové bloky, nad kterým definujete kódování a ono to emuluje práci s řetězci. Tedy je na tom prakticky stejně jako PHP.
    7.9.2015 10:31 Michal Karas | skóre: 45 | blog: /dev/random
    Rozbalit Rozbalit vše Re: PHP 5.5.29, 5.6.13 a 7.0.0 RC 2
    A co je potřeba ještě navíc, aby to byl skutečný řetězec?
    7.9.2015 13:39 Miloslav Ponkrác
    Rozbalit Rozbalit vše Re: PHP 5.5.29, 5.6.13 a 7.0.0 RC 2
    To není skutečný řetězec, to je pouze blok bajtů.

    U datového typu řetězec mě nezajímá, jak je vnitřně uložen – to je interní věcí programovacího jazyka. Z hlediska programátora je řetězec sekvencí znaků, ideálně Unicode.

    Protože stejně pitomě implementovanou „jakoby emulaci řetězců“ nad bloky bajtů má i PHP.
    7.9.2015 15:27 Michal Karas | skóre: 45 | blog: /dev/random
    Rozbalit Rozbalit vše Re: PHP 5.5.29, 5.6.13 a 7.0.0 RC 2
    Takže řetězec v Ruby teda není sekvence znaků? Jak se to projevuje?
    7.9.2015 15:34 Miloslav Ponkrác
    Rozbalit Rozbalit vše Re: PHP 5.5.29, 5.6.13 a 7.0.0 RC 2
    Ne, je to sekvence bajtů. Projevuje se to tak, že jako programátor jsem otravován tím, že musím nad řetězci přemýšlet jako nad bajty v určitém kódování naprosto vždy a všude. A to je to, co si ve 21. sotletí velmi rád odpustím.

    Vím, jak to vzniklo. Autor Ruby prostě nenávidí Unicode, a tak se prostě zuby nehty brátní, aby v Ruby čistý řetězec (nikoli prekabátěný byte chunk) byl. Je to jeho aktivitstá a ideologická lidskoprávní aktivita. A já si jí rád odpustím tím, že si odpustím Ruby.
    Bystroushaak avatar 7.9.2015 15:41 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
    Rozbalit Rozbalit vše Re: PHP 5.5.29, 5.6.13 a 7.0.0 RC 2
    Takže řetězec v Ruby teda není sekvence znaků? Jak se to projevuje?
    Imho naráží například na problémy s indexováním, kde indexování v ne-unicode přináší problémy s variable-lenght encoding u UTF-8, kde třeba znak `á` zabírá dva bajty a `a` jen jeden. Pokud budu mít takovýto řetězec, tak přistoupením na konkrétní index získám v někdy neplatný odpad a jindy celý znak, což je krapet nepředvídatelné.
    7.9.2015 15:51 Miloslav Ponkrác
    Rozbalit Rozbalit vše Re: PHP 5.5.29, 5.6.13 a 7.0.0 RC 2
    Přesně tak. Jakmile se začnu chtít pohybovat po řetězci, nakonec se ukáže, že král je nahý, a že se po mně chce, abych nad tím přemýšlel jako nad bajty.

    Máme tu už cca 20 let unicode, a myslím, že je to jeden z nejlepších nápadů v IT, a umožňuje konečně abstrahovat od bajtů.

    Doby, kdy bajt a znak bylo totéž, už jsou celá desetiletí pryč, a programovací jazyk, který to nestihl v plné míře reflektovat, není jazyk, ve kterém chci programovat.
    7.9.2015 16:05 Michal Karas | skóre: 45 | blog: /dev/random
    Rozbalit Rozbalit vše Re: PHP 5.5.29, 5.6.13 a 7.0.0 RC 2
    Takže tohle v Ruby není možné?
    [1] pry(main)> str = 'příliš 黄色 лошадь'
    => "příliš 黄色 лошадь"
    [2] pry(main)> str.encoding
    => #<Encoding:UTF-8>
    [3] pry(main)> str.size
    => 16
    [4] pry(main)> str.bytesize
    => 29
    [5] pry(main)> str[10]
    => "л"
    
    7.9.2015 16:24 Miloslav Ponkrác
    Rozbalit Rozbalit vše Re: PHP 5.5.29, 5.6.13 a 7.0.0 RC 2
    Toto je možné i ve strojovém kódu s příslušnými rutinami.

    Ovšem vyšší programovací jazyk je od toho, aby dělal určitou abstrakci. A jedna abstrakce je odlišení bajtů a znaků i jinak, než pomocí metod bad bajtovým blokem.

    A řetězec jednoduše není blok bajtů a nechci se starat o žádné kódování ani o rozdíly mezi bajty a znaky, pokud nedělám I/O. Metoda bytesize nad řetězcem je totální nesmysl, pokud to není bajtový blok.
    7.9.2015 16:42 Michal Karas | skóre: 45 | blog: /dev/random
    Rozbalit Rozbalit vše Re: PHP 5.5.29, 5.6.13 a 7.0.0 RC 2
    A kde je tady ta potřeba starat se o kódování a rozdíly mezi bajty a znaky?

    Nejrychlejší by asi bylo, kdybyste mohl ukázat kousek kódu v nějakém vyšším programovacím jazyce se skutečnými řetězci™, ať je vidět, co je s nimi tedy možné provádět.
    7.9.2015 17:19 Miloslav Ponkrác
    Rozbalit Rozbalit vše Re: PHP 5.5.29, 5.6.13 a 7.0.0 RC 2
    Řetězec v Ruby je obyčejný bajtový chrchel, ke kterému byly přidány metody na emulaci řetězce v nějakém kódování.

    Velmi dobře chápu, že když to váš oblíbený jazyk nemá, že je to zbytečné.

    Domnívám se, že výhody oddělenosti datových typů řetězec a datových typů bajt či bajtové pole – jsou naprosto jasné, a není třeba je obhajovat.

    Proč bych měl být obtěžován nutností volit pro řetězec nějaké kódování, když prostě jen pracuji s řetězci?

    Co udělá operace a + b, když „a“ bude řetězec kódovaný v ISO-88859-6 a „b“ bude řetězec kódovaný v ISO-8859-11? Nejspíše vznikne default string v default kódování. Proč by měl ale programátor či jazyk vůbec řešit tyto problémy a hovadiny? Jen proto, že nějaký Japonec nesnáší Unicode? Až jde do háje tedy i s jeho Ruby.

    Jak efektivní bude operace porovnání dvou řetězců, když zbytečně navíc musí brát ještě kódování?

    Všechny operace s řetězci budou mít výkon na exkrement, protože to nejsou jednoduše znaky, ale bajtové bloky v kódování. Takže se interně stejně převedou na znaky, a pak zase zpět kódují na bajty v nějakém kódování.

    Znaky v řetězcích v době Unicode prostě nejsou bajty ani sekvence bajtů. A proto je zbytečné nutit programátora, aby nad nimi tak musel uvažovat.

    Jedna ze základních pouček programování je nemít zbytečně na starost věci, které mít nemusíte. A jedna z nich je řešit kódování znaků v programovacím jazyce. Řetězec je prostě řetězec – sekvence znaků, nikoli bajtů. Tečka.

    To už se můžeme ptát, proč nejsou třeba celá čísla reprezentovaná jako stringy s metodami pro +, -, *, /, a že mít skutečná čísla je zbytečné. Protože to třeba TCL nemá.
    7.9.2015 23:07 Michal Karas | skóre: 45 | blog: /dev/random
    Rozbalit Rozbalit vše Re: PHP 5.5.29, 5.6.13 a 7.0.0 RC 2
    Takže z
    U datového typu řetězec mě nezajímá, jak je vnitřně uložen – to je interní věcí programovacího jazyka. Z hlediska programátora je řetězec sekvencí znaků, ideálně Unicode.
    jsme se dostali akorát k tomu, že řetězec nesmí být vnitřně uložen jako "bajtový chrchel". Příklad jazyka s nějakou zázračnou strukturou pro reprezentaci skutečných řetězců™ jste neuvedl a kde jsou v Ruby ty problémy s přistupováním k řetězcům jako sekvenci znaků také ne. Takže je asi zbytečné dále ztrácet čas.
    18.9.2015 19:34 tacoberu | skóre: 6
    Rozbalit Rozbalit vše Re: PHP 5.5.29, 5.6.13 a 7.0.0 RC 2
    Právě jsem si zkusil toto:
    str = 'příliš 黄色 лошадь'
    puts str.encoding # UTF-8
    file = File.open("rusian.txt", "r:KOI8-U")
    strrus = ""
    file.each {|line|
    	strrus << line
    }
    puts strrus.encoding # KOI8-U
    cons = str + strrus # sample.rb:30:in `<main>': incompatible character encodings: UTF-8 and KOI8-U (Encoding::CompatibilityError)
    
    
    Což by dávalo Pankrácovi za pravdu.

    ruby -v ruby 2.1.7p400 (2015-08-18 revision 51632) [x86_64-linux]
    18.9.2015 19:52 tacoberu | skóre: 6
    Rozbalit Rozbalit vše Re: PHP 5.5.29, 5.6.13 a 7.0.0 RC 2
    Python3 je na tom lépe (to Pankrác nebude rád):
    # -*- coding: utf-8 -*-
    import codecs
    
    s1 = 'příliš 黄色 лошадь'
    f = codecs.open('rusian.txt', encoding='KOI8-U')
    s2 = f.read()
    print (s1, type(s1))
    print (s2, type(s2))
    print (s1 + s2) # příliš 黄色 лошадьлошадь
    
    Bystroushaak avatar 5.9.2015 13:44 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
    Rozbalit Rozbalit vše Re: PHP 5.5.29, 5.6.13 a 7.0.0 RC 2
    Třeba se jednou kodeři dočkají a tvůrci jim z toho udělají menší parodii na programovací jazyk.
    Bedňa avatar 6.9.2015 21:32 Bedňa | skóre: 34 | blog: Žumpa | Horňany
    Rozbalit Rozbalit vše Re: PHP 5.5.29, 5.6.13 a 7.0.0 RC 2
    Nejaký čas už vývoj PHP nesledujem, ale všetky tie problémy ktoré sa časom na PHP nabalili mala odstrániť verzia 6. Čo tak teraz pozerám, tak sa šestka asi preskočí a bude rovno sedmička.

    V PHP sa dá písať aj ľudsky a nemá adekvátnu náhradu (okrem /o/u/pravenéhu PHP = HHVM) v žiadnom jazyku na web. Django nad Pythonom je paródia rovnako ako rôzne pokusy deformácií Javy.
    KERNEL ULTRAS video channel >>>
    Václav 7.9.2015 11:00 Václav "Darm" Novák | skóre: 26 | blog: Darmovy_kecy | Bechyně / Praha
    Rozbalit Rozbalit vše Re: PHP 5.5.29, 5.6.13 a 7.0.0 RC 2
    V čem ty ostatní jazyky nejsou adekvátní náhrada? Třeba v Ruby on Rails mi zatím nic nechybělo, spíš naopak.
    Cross my heart and hope to fly, stick a cupcake in my eye!
    7.9.2015 14:48 Miloslav Ponkrác
    Rozbalit Rozbalit vše Re: PHP 5.5.29, 5.6.13 a 7.0.0 RC 2
    Ruby on Rails není programovací jazyk, to je framework. Bohužel používá nedokonalý jazyk Ruby nemající ani pravé řetězce., protože jeho autor Japonec nenávidí Unicode. A já raději pracuji s dobrými programovacími jazyky, než jazyky aktivistů, kteří si na programovacím jazyky vybíjejí svoje ideologické choutky a nenávisti.
    svido avatar 7.9.2015 15:21 svido | skóre: 28
    Rozbalit Rozbalit vše Re: PHP 5.5.29, 5.6.13 a 7.0.0 RC 2
    a jaké to jsou dobré programovací jazyky? Pouč nás...
    7.9.2015 15:35 Miloslav Ponkrác
    Rozbalit Rozbalit vše Re: PHP 5.5.29, 5.6.13 a 7.0.0 RC 2
    To nechám na výběru a chuti toho kterého soudruha.
    svido avatar 8.9.2015 16:52 svido | skóre: 28
    Rozbalit Rozbalit vše Re: PHP 5.5.29, 5.6.13 a 7.0.0 RC 2
    takovéhle odpovědi jsem se obával... :-D Nejprve máš plnou hubu keců jak je PHP hnusný, debilní a stupidní a že programuješ jen v dobrých jazycích. Když se člověk zeptá, aby si po cca 20 letech programocáni rozšířil obzory, tak dostane odpověď s vkusem každého soudruha.

    Co vím, ideálního a dokonalý jazyk není - dělám v C# .NET, Java, PHP, Bash, Python, Perl, JS a každý á své neduhy.
    Václav 7.9.2015 18:03 Václav "Darm" Novák | skóre: 26 | blog: Darmovy_kecy | Bechyně / Praha
    Rozbalit Rozbalit vše Re: PHP 5.5.29, 5.6.13 a 7.0.0 RC 2
    Odpovídal jsem mimo jiné i na zmíněné Django, které je framework nad pythonem. Rozdíl mezi frameworkem ajazykem si samozřejmě uvědomuji.
    Cross my heart and hope to fly, stick a cupcake in my eye!
    Bedňa avatar 7.9.2015 18:06 Bedňa | skóre: 34 | blog: Žumpa | Horňany
    Rozbalit Rozbalit vše Re: PHP 5.5.29, 5.6.13 a 7.0.0 RC 2
    Ako predrečník písal, je to framework a tie ma zatiaľ vždy nasrali keď od toho človek chce niečo viac. Je pravda že na RoR som sa nikdy ani nepozrel a okrem pomalosti som výčitky naň nepostrehol.
    KERNEL ULTRAS video channel >>>
    Jendа avatar 8.9.2015 14:40 Jendа | skóre: 78 | blog: Jenda | JO70FB
    Rozbalit Rozbalit vše Re: PHP 5.5.29, 5.6.13 a 7.0.0 RC 2
    V čem ty ostatní jazyky nejsou adekvátní náhrada?
    Většinou nemůžeš to existující statické stránky prostě vložit <?jazyk kousek_kódu ?>, který se prostě vykoná a vypíše.
    8.9.2015 15:14 Michal Karas | skóre: 45 | blog: /dev/random
    Rozbalit Rozbalit vše Re: PHP 5.5.29, 5.6.13 a 7.0.0 RC 2
    Toho snad jde dosáhnout v každém jazyku, který má jen trochu co dočinění s webem, ne? JSP v Javě, ERB v Ruby, Python neznám, ale taky to vypadá, že na to má hromadu enginů.
    Bedňa avatar 8.9.2015 22:35 Bedňa | skóre: 34 | blog: Žumpa | Horňany
    Rozbalit Rozbalit vše Re: PHP 5.5.29, 5.6.13 a 7.0.0 RC 2
    Problém je skôr inde, jazyky neurčené pre web dajú proste viac práce. Pre PHP je štandartne výstup HTML a v ostatných jazykoch sa to "nejak" rieši, hoci presmerujú štandartný výstup do Apača ... ale vždy to dá viac práce. Nehovorím o jednoduchých veciach tie spravíš pár riadkami aj BASHi (áno aj v ňom sa dá písať interaktívny web) ale tie veci okolo ako sa to ladí, keď odtiaľ nelezie čo si očakával a tak. No a prehľadnosť kódu napr. v Djangu je pre mňa španielska dedina. Písal som aj v PERLy, čo bol asi prvý jazyk ktorý smeroval aj na web, ale proste vždy som natrafil na väčšie problémy ako s PHP.
    KERNEL ULTRAS video channel >>>
    Bystroushaak avatar 8.9.2015 23:45 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
    Rozbalit Rozbalit vše Re: PHP 5.5.29, 5.6.13 a 7.0.0 RC 2
    What? Ostatní jazyky, resp. jejich frameworky jako třeba bottle mají webserver přímo v sobě, takže nepotřebuješ žádnej smradlavej apache.
    Jendа avatar 9.9.2015 15:21 Jendа | skóre: 78 | blog: Jenda | JO70FB
    Rozbalit Rozbalit vše Re: PHP 5.5.29, 5.6.13 a 7.0.0 RC 2
    Používám lighttpd, který mi nepřijde (na rozdíl od Apache) smradlavý.
    Bedňa avatar 9.9.2015 20:19 Bedňa | skóre: 34 | blog: Žumpa | Horňany
    Rozbalit Rozbalit vše Re: PHP 5.5.29, 5.6.13 a 7.0.0 RC 2
    Áno sú web servery čo majú aj pár riadkov a potom zas natrafíš na problémy ktoré budeš nejak prasácky riešiť. To radšej prasácky jazyk a server a budem sa vyhýbať tomu čo sa označuje ako zlé praktiky.
    KERNEL ULTRAS video channel >>>
    Bystroushaak avatar 9.9.2015 20:57 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
    Rozbalit Rozbalit vše Re: PHP 5.5.29, 5.6.13 a 7.0.0 RC 2
    To radšej prasácky jazyk a server a budem sa vyhýbať tomu čo sa označuje ako zlé praktiky.
    Hm. Označovat kým? Co může být víc zlé, než PHP?
    mirec avatar 9.9.2015 08:50 mirec | skóre: 32 | blog: mirecove_dristy | Poprad
    Rozbalit Rozbalit vše Re: PHP 5.5.29, 5.6.13 a 7.0.0 RC 2

    Bolo by dobre rozlišovať programovacie a šablónovacie jazyky. Je v tom totiž dosť podstatný rozdiel.

    PHP je webový framework napísaný v C. Jeho šablónovací jazyk (šablóny majú príponu .php) sú turing complete. Nie je to nič výnimočné čo by sa v iných šablónovacích jazykoch neobjavovalo. Nie je to síce žiadúce, ale je to tam.

    Rozdiel je v tom, že programovacie jazyky nepotrebujú žiadne otváracie a uzatváracie značky označujúce "tu je kód" a zvyšok vyhoď na stdout.

    Teoreticky môžem mať framework napísaný v pythone ktorý by som spustil podobne ako php-fpm (ak nepoznáš vygoogli si, predstavy o fungovaní webserveru niekedy okolo roku 2000 sú už prekonané a dnes sa považuje za rozumné použiť blbý webserver na obsluhu statického obsahu a zvyšok forwardovať na php-fpm, uwsgi ..., v minulosti sa pred apache dával varnish, lebo apache je žalostne pomalý), interpretoval by každý súbor s príponou .somskaredyjaknoc niektorým z týchto templatovacích systémov a mal by som prakticky to isté čo PHP. Spúšťalo by sa to tak isto, fungovalo by to tak isto ... ale načo keď sa to dá riešiť lepšie?

    LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
    Bedňa avatar 9.9.2015 20:13 Bedňa | skóre: 34 | blog: Žumpa | Horňany
    Rozbalit Rozbalit vše Re: PHP 5.5.29, 5.6.13 a 7.0.0 RC 2
    Blbosť, toto máš v Shakalovi bežne <%= item.name %> tak kde je rozdiel?

    Premenné pomenované z RND generátoru bez jedinej poznámky zrejme sa dá prasiť všade.
    KERNEL ULTRAS video channel >>>
    mirec avatar 9.9.2015 20:48 mirec | skóre: 32 | blog: mirecove_dristy | Poprad
    Rozbalit Rozbalit vše Re: PHP 5.5.29, 5.6.13 a 7.0.0 RC 2
    % grep -R "item.name" .
    ./static/js/richeditor/editor.js:					link.name = item.name;
    ./static/vendor/ckeditor/samples/plugins/toolbar/toolbar.html:					names.push( buttonsNames[ item.name ] );

    Templatovací jazyk je jazyk ebedovaný v dokumente. Ja v shakalovi používam templatovací engine jinja2.

    Premenné pomenované z RND generátoru bez jedinej poznámky zrejme sa dá prasiť všade.

    Neviem koľko krát som to povedal povedz presne kde ti chýba dokumentácia, ja ju doplním. Neviem kde si pozeral, ale hádam všetko okrem HTML parsera ktorý chcem vyhodiť hneď keď nájdem náhradu je ok. A to keď si porovnám s PHP-čkovou verziou tak vyzerá ešte celkom ok:

    static $pos=0;
    static $opened_tag=array();
    static $depth=0;
    static $r=array();
    static $empty=array();
    while ($pos<$num)
    {
        $char=$html[$pos];
        if ($char=='<'&&$pos<$num-1)
        {
            $pos++;
            $char=$html[$pos];
            $tag="";
            while ($char!='>'&&$pos<$num-1)
            {
                $tag=$tag.$char;
                $pos++;
                $char=$html[$pos];
            }
            if (strlen($tag)==0)
                array_push($error,array($pos,"empty",strlen($out)));
            else
            {
                if ($tag[0]=="/")
                {
                    $name=substr($tag,1);
                    $depth--;
                    $open_tag=array_pop($opened_tag);
                    // Oprava span
                    if ($name=="span")
                    {
                        if (is_array($open_tag))
                        {
                            $span_tags=array_reverse($open_tag);
                            $name=implode("></",$span_tags);
                            $open_tag=$name;
                        }
                        else
                            array_push($error,array($pos,"close",strlen($out),$name));
                        
                    }
                    // Oprava span
                    if ($name==$open_tag)
                    {
                        $out=$out."</".$name.">";
                    }
                    else
                        array_push($error,array($pos,"close",strlen($out),$name));
                    if (isset($r[$depth])) {
                        if (count($r[$depth])!=0) {
                            array_push($error,array($pos,"req",array_pop($r[$depth])));
                        }
                    }
                    if ($empty[$depth])
                        array_push($error,array($pos,"empty",$name));
                }
                elseif ($tag[strlen($tag)-1]=="/")
                {
                    $name=substr($tag,0,strpos($tag,' '));
                    $out=$out."<".$name." />";
                }
                else
                {
                    $empty[$depth]=true;
                    $name=substr($tag,0,strpos($tag,' ')?strpos($tag,' '):strlen($tag));
                    $opened_tag[$depth]=$name;
                    if ($depth==0) {
                        if (!in_array($name,$tags["root"]["tags"]["o"])) {
                            array_push($error,array($pos,"unknown",$name));
                            $name="";
                            unset($opened_tag[$depth]);
                        }
                        else {
                            if (isset($tags[$name]["tags"]["r"]))
                                $r[$depth]=$tags[$name]["tags"]["r"];
                            else
                                $r[$depth]=array();
                        }
                    }
                    else {
                        if (isset($opened_tag[$depth-1])&&isset($tags[$opened_tag[$depth-1]])) {
                            if (!in_array($name,$tags[$opened_tag[$depth-1]]["tags"]["o"])&&!in_array($name,$tags[$opened_tag[$depth-1]]["tags"]["r"])) {
                                array_push($error,array($pos,"unknown",$name));
                                $name="";
                                unset($opened_tag[$depth]);
                            }
                            else {
                                if (isset($r[$depth-1])) {
                                    foreach ($r[$depth-1] as $id=>$t) {
                                        if ($name==$t)
                                            unset($r[$depth-1][$id]);
                                    }
                                }
                                $r[$depth]=$tags[$name]["tags"]["r"];
                            }
                        }
                        else {
                            unset($opened_tag[$depth]);
                            array_push($error,array($pos,"unknown",$name));
                            $name="";
                        }
                    }
                    //array_push($error,array($pos,"not_closed",array_pop($opened_tag)));
                    // Oprava span
                    if ($name=="span")
                    {
                        $style=substr($tag,strpos($tag,'=')+2,strrpos($tag,'"')-strpos($tag,'=')-2);
                        $stylea=explode(';',$style);
                        foreach ($stylea as $style)
                        {
                            $position=0;
                            //ostranime zbytočné medzery
                            $stylecp="";
                            while ($position<strlen($style))
                            {
                                if ($style[$position]!=' ')
                                    $stylecp=$stylecp.$style[$position];
                                $position++;
                            }
                            $at=explode(":",$stylecp);
                            if (count($at)==2)
                                $tag_array[$at[0]]=$at[1];
                        }
                        $out_tag=array();
                        if (isset($tag_array["font-weight"]))
                        {
                            if ($tag_array["font-weight"]=="bold")
                                $out_tag[0]="b";
                        }
                        if (isset($tag_array["font-style"]))
                        {
                            if ($tag_array["font-style"]=="italic")
                                $out_tag[1]="i";
                        }
                        if (isset($tag_array["text-decoration"]))
                        {
                            if ($tag_array["text-decoration"]=="underline")
                                $out_tag[2]="u";
                        }
                        $tag=implode("><",$out_tag);
                        $opened_tag[$depth]=$out_tag;
                    }
                    // Oprava span
                    $depth++;
                    if (strlen($tag)>0) {
                        $out=$out."<".$tag.">";
                    }
                    Parser::parse($html,$error,$out,$num);
                }
            }
        }
        elseif ($char!=">")
        {
            if ($char==' '||$char=="\t"||$char=="\n"||$char=="\r") {
                if ($char=="\r") {
                    $cont=false;
                    if (isset($html[$pos-1])) {
                        if ($html[$pos-1]=='>')
                            $cont=true;
                    }
                    if (isset($html[$pos+1])) {
                        if ($html[$pos+1]=='<')
                            $cont=true;
                    }
                    if (isset($html[$pos+2])) {
                        if ($html[$pos+2]=='<')
                            $cont=true;
                    }
                    if (!$cont) {
                        if ($depth==0)
                            $char="<br />";
                        elseif($tags[$opened_tag[$depth-1]]["e"]=="n"&&$opened_tag[$depth-1]!="pre")
                            $char="<br />";
                    }
                }
            }
            else {
                if (isset($empty[$depth-1])) {
                    if ($empty[$depth-1]) {
                        for ($j=0; $j<$depth; $j++)
                            $empty[$j]=false;
                    }
                    if (isset($opened_tag[$depth-1])&&isset($tags[$opened_tag[$depth-1]])) {
                        if ($tags[$opened_tag[$depth-1]]["e"]=="y") {
                            array_push($error,array($pos,"ue",$opened_tag[$depth-1]));
                        }
                    }
                }
            }
            $out=$out.$char;
        }
        $pos++;
    }
    if ($pos==$num)
    {
        if (count($opened_tag)>0)
        {
            array_push($error,array($pos,"not_closed",array_pop($opened_tag)));
        }
    }
    LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
    Václav 9.9.2015 10:12 Václav "Darm" Novák | skóre: 26 | blog: Darmovy_kecy | Bechyně / Praha
    Rozbalit Rozbalit vše Re: PHP 5.5.29, 5.6.13 a 7.0.0 RC 2
    Tak nevím… interpret jazyka (nebo klidně i zkompilovaná binárka) prostě pošle výstup a o ten se postará web server. PHP samotné o tom jestli z něj leze HTML vůbec neví, nebo se pletu? :)
    Cross my heart and hope to fly, stick a cupcake in my eye!
    mirec avatar 9.9.2015 11:11 mirec | skóre: 32 | blog: mirecove_dristy | Poprad
    Rozbalit Rozbalit vše Re: PHP 5.5.29, 5.6.13 a 7.0.0 RC 2
    prostě pošle výstup a o ten se postará web server

    Záleží na tom aký webserver. Autor komentára žije v predstave že správne je keď je webserver tlstý a keď si vypýtam súbor index.php tak ho webserver vezme, nájde tam reťazce <?php a ?> a ich obsah nahradí tým, čo vráti php-čkovy eval. Ešte raz zdôrazňujem, že toto robí priamo web server, nie PHP, nie niekto iný, ale webserver pri štarte loadne shared object (knižnicu) a stará sa o tieto veci sám. PHP teda beží v procese apacha, ak má pretečenie stacku alebo niečo podobné má rovnaké práva ako apache, ak sa zasekne tak proste zasekne proces apacha, lebo nie je nijako oddelený. Z historických vecí spomeniem ešte htaccess a mod_rewrite, ktoré sa využívali na to, aby sa s PHP dali dosiahnuť pekné URL adresy (teda mod_rewrite zvyčajne prepísal adresy typu /kravina/1/ na index.php?dajmi=kravina&id=1).

    Túto predstavu narušil až príchod web serverov, ktoré vedia dobre jednu vec - obsluhovať HTTP(S). Taký nginx je proste blbý proces ktorý na rozdiel od apacha ani len nespúšťa vlákna pri požiadavke. Celé spracovanie funguje v jednom event-loope. Otvorené spojenie na rozdiel od apacha nepotrebuje žiaden vlastný stack, ukladá len minimálnu informáciu o stave (doslova pár B). Preto pre nginx nie je problém nechávať http spojenie aktívne aj niekoľko hodín a kľudne môže mať niekoľko tisíc (až kým nedôjdu porty) aktívnhych spojení súšasne a spotrebou pamäte to prakticky ani nepohne. Väčšina požiadaviek na web server sú jednoduché požiadavky na statický súbor (zvyčajne 1 request na webovú stránku a mnoho requestov na css, javascripty, obrázky ...) a to vedia blbé web servery na rozdiel od apacha s minimálnou réžiou. Potom už stačí len nastaviť nech zvyšné požiadavky preposiela serveru, ktorý obsluhuje dynamické veci. Na webhostingoch je to často apache (u nás najväčší hosting websupport to má takto riešené, jednoducho pred apachom je nginx, ktorý sa stará o statické súbory a dynamické veci rieši apache ktorý je tam kvôli kompatibilite s htaccess). Ak nie je potrebný htacces je možné apache vynechať a posielať požiadavky rovno na php-fpm, uwsgi, unicorn, gunicorn ... To, že je to budúcnosť už pochopili aj zadubenci z PHP a od verzie 5.3 je php-fpm štandardnou súčasťou PHP. Keby ešte neboli banda idiotov a riešili si bezpečnostné diery ...

    LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
    mirec avatar 9.9.2015 11:35 mirec | skóre: 32 | blog: mirecove_dristy | Poprad
    Rozbalit Rozbalit vše Re: PHP 5.5.29, 5.6.13 a 7.0.0 RC 2

    Ešte aby som trochu dovysvetlil: PHP je ekvivalent ERB v ruby on rails. PHP je webový framework napísaný v C. Ruby on rails je webový framework napísaný v ruby. PHP je možné programovať v C (a pár krát som bol nútený si prepísať niektoré funkcie ktorým leakovala pamäť sám v C). Ruby on rails zase v ruby. Niektorí ľudia sú schopní písať aplikácie v šablónovacom jazyku PHP. Väčšinou si tá skupinka ľudí uzatvára kód do divných značiek lebo inak by im web server vrátil celý kód v nedotknutom stave.

    LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
    Bedňa avatar 9.9.2015 20:23 Bedňa | skóre: 34 | blog: Žumpa | Horňany
    Rozbalit Rozbalit vše Re: PHP 5.5.29, 5.6.13 a 7.0.0 RC 2
    Nevie, ale jazyk je navrhnutý tak že počíta s tým že dáta budú odoslané na web server. Preto je tam skoro na každý output nejaká funkcia a nepotrebuješ k tomu ďalšie veci ako nejaký framework.
    KERNEL ULTRAS video channel >>>
    Jendа avatar 9.9.2015 15:21 Jendа | skóre: 78 | blog: Jenda | JO70FB
    Rozbalit Rozbalit vše Re: PHP 5.5.29, 5.6.13 a 7.0.0 RC 2
    A teď porovnej tu vstupní bariéru s PHP:
    # apt-get install php5-fpm php5
    # lighttpd-enable-mod fastcgi
    # lighttpd-enable-mod fastcgi-php
    # /etc/init.d/lighttpd force-reload
    # mv index.html index.php
    # vim index.php
    > <?php echo "ahoj"; ?>
    Podle mě je tohle ten důvod, proč si snad všichni jako první zkusí helloworld v PHP, no a pak už u něj zůstanou (můžu se mýlit).
    9.9.2015 19:28 Michal Karas | skóre: 45 | blog: /dev/random
    Rozbalit Rozbalit vše Re: PHP 5.5.29, 5.6.13 a 7.0.0 RC 2
    # apt-get install ruby-sinatra
    # mkdir views
    # mv index.html views/index.erb
    # vim myapp.rb
    > require 'sinatra'
    > get('/') { erb :index }
    # vim views/index.erb
    > <%= 'hello world!'%>
    # ruby myapp.rb
    
    Já proti PHP vcelku nic nemám, prasit se dá ve všem. Jen si myslím, že vstupní bariéra mohla být argument možná tak před 10 lety.
    Acci avatar 6.9.2015 23:24 Acci | skóre: 3 | blog: Jen na chvíli…
    Rozbalit Rozbalit vše Re: PHP 5.5.29, 5.6.13 a 7.0.0 RC 2
    A proč je to problém?
    7.9.2015 13:46 Miloslav Ponkrác
    Rozbalit Rozbalit vše Re: PHP 5.5.29, 5.6.13 a 7.0.0 RC 2
    Problém je to v tom, že programovací jazyk má mít určitou sadu základnáích typů. A pokud nemá, jedná se o jazyk pro pazourkovou dobu. Jistě se dá cokoli nahradit něčím jiným.

    Například v Basicu pro ZX Spectrum nebyl datový typ celé číslo. Namísto toho programátor používal čísla reálná. Taky to nebyl problém v zásadě.

    Jednoduše vyžaduji, aby programovací jazyk ve 21. století měl určitou sadu datových typů, a do jednoho z těchto požadavků patří, že řetězce jsou pravé řetězce a ne emulované bloky bajtů, jako je tomu třeba u jazyků PHP, Ruby, a dalších.

    Stejně jako není v zásadě problém ve 21. století nebo místo sekmísto kalkulačky počítat na kuličkovém počítadle, nebo namísto sekerky štípat stromy kusem pazourku, nebo namísto Linuxu používat ENIAC – ale pro mě už to není akceptovatelné. A stejně je to s jazyky z doby dinasaurů, které nedospěly ani k tomu, aby měly pravý typ řetězec.
    Slavko avatar 5.9.2015 10:45 Slavko
    Rozbalit Rozbalit vše Re: PHP 5.5.29, 5.6.13 a 7.0.0 RC 2
    Prosím vás, a kde sa stratila 6-ka?
    5.9.2015 10:56 AAnarchYsta
    Rozbalit Rozbalit vše Re: PHP 5.5.29, 5.6.13 a 7.0.0 RC 2
    Legendy hovoria že PHP 6 mal byť nejaký pokus dať do PHP UTF-8 či čo a nevyšlo im to. Potom ďalšiu verziu premenovali na 7 aby si to ľudia nemýlili so 6. Ale ruku do ohňa za toto tvrdenie nedám! :D
    5.9.2015 16:18 Miloslav Ponkrác
    Rozbalit Rozbalit vše Re: PHP 5.5.29, 5.6.13 a 7.0.0 RC 2
    Pravda mluví tak, že do PHP 6 měl být dán jako základní typ unicode řetězec.

    Pravda mluví tak, že PHP v minulosti přechod mezi verzí 4 a 5 tak dokonale zmrvilo, že lidé nechtěli přecházet z verze 5, protože museli poměrně dost podstatně přepsat své skripty. Alias mizerné zpětná kompatibilita. Následkem toho lidé přešli na verzi 5 asi o 4 roky později, než vyšla, a v době, kdy verze 5 měla končit a stát se obsoleted a nahradit jí verze 6. Kvůli tomu získali vývojáři obrovskou paniku pro přejmenování hlavního čísla verze.

    Následkem hnědých kalhot vývojářů PHP došlo k tomu, že změny, které měly být v PHP 6 postupně integrovali do PHP 5.3, další featury do PHP 5.4. Začali se bát změny hlanvího čísla verze jako čert kříže, neboť stále ještě měli v hlavách neúspěch z přechodu na PHP 4.

    Dále se zjistilo, že jaksi nejsou schopni zaintegrovat unicode, protože zkrátka je to nad jejich síly. Tedy nikdo tam není odborníkem.

    Když se rozhodli, že udělají další verzi, hlasovalo se, zda se bude jmenovat 6 nebo 7. Mnoho odkazů totiž vedlo na PHP 6 (i já se v ní odkazuji ve své učebnici PHP, kterou jsem vydal), ale vše kromě řetězců bylo již v PHP 5.4. Nakonec se rozhodlo že pro vynechání znatku se verze 6 přeskočí.

    Miloslav Ponkrác
    Slavko avatar 6.9.2015 11:23 Slavko
    Rozbalit Rozbalit vše Re: PHP 5.5.29, 5.6.13 a 7.0.0 RC 2
    ďakujem všetkým za vysvetlenie ;-)
    mirec avatar 5.9.2015 10:56 mirec | skóre: 32 | blog: mirecove_dristy | Poprad
    Rozbalit Rozbalit vše Re: PHP 5.5.29, 5.6.13 a 7.0.0 RC 2

    Kde sa stratila windows 9?

    LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
    MMMMMMMMM avatar 5.9.2015 11:55 MMMMMMMMM | skóre: 44 | blog: unstable | Valašsko :-)
    Rozbalit Rozbalit vše Re: PHP 5.5.29, 5.6.13 a 7.0.0 RC 2
    Legendy hovoria že Windows 9 mal byť nejaký pokus dať do Windows BSOD obrazovku so žltým podkladom či čo a nevyšlo im to. Potom ďalšiu verziu premenovali na 10 aby si to ľudia nemýlili so 9. Ale ruku do ohňa za toto tvrdenie nedám! :D

    :-)
    5.9.2015 16:19 Miloslav Ponkrác
    Rozbalit Rozbalit vše Re: PHP 5.5.29, 5.6.13 a 7.0.0 RC 2
    Pravda mluví tak, že Microsoft chtěl mít operační systém verze 10 stejně jako Apple.
    5.9.2015 11:01 Ladislav Hagara | skóre: 105 | blog: Ride the Raven
    Rozbalit Rozbalit vše Re: PHP 5.5.29, 5.6.13 a 7.0.0 RC 2
    Wikipedie:
    Vývoj 6 narazil někdy během roku 2010 na problémy kolem implementace Unicode a od té doby se vydání nové hlavní verze odkládalo, nicméně mnoho podstatných změn přinesly dílčí verze 5.3 a 5.4. PHP 6 bylo stále vyvíjeno, ale nedosáhlo bodu, ve kterém by bylo schváleno k vydání. V červenci 2014 se hlasovalo o názvu nové verze a bylo odhlasováno, že to bude PHP 7.
    7.9.2015 08:44 chochi | skóre: 29 | Praha
    Rozbalit Rozbalit vše Re: PHP 5.5.29, 5.6.13 a 7.0.0 RC 2
    Ja zas cetl, ze verzi "6" povazuji za nestastnou (kvuli Perl 6).
    Treba tady neco o tom pisou - http://blog.brentlaabs.com/2015/05/three-tales-of-second-system-syndrome.html - tezko rict, zda je to pravda, ale urcite je to alespon zabavne :-) .
    5.9.2015 19:09 Ladislav Hagara | skóre: 105 | blog: Ride the Raven
    Rozbalit Rozbalit vše Re: PHP 5.5.29, 5.6.13 a 7.0.0 RC 2

    Založit nové vláknoNahoru


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