Unicode-enabled functions are described in Conventions for Function Prototypes. These functions use UTF-16 (wide character) encoding, which is the most common encoding of Unicode and the one used for native Unicode encoding on Windows operating systems..
https://msdn.microsoft.com/cs-cz/library/windows/desktop/dd374081(v=vs.85).aspx
Utf16 je rozsireni ucs2
> Nevadí, že DWORD je 32bitový?
Vadí, moje chyba. Oprava opravy:
WORD raw[3] = {0xD834, 0xDD1E, 0};
wchar_t *text = (wchar_t *)raw;
printf("strlen = %i", wcslen(text));
Vypíše to 2. Takže text Windows interpretuje jako UCS-2, nikoli jako UTF-16. Podle UTF-16 by se mělo jednat o jednoznakový řetězec (0x64321), podle UCS-2 je to dvojznakový řetězec (0xD834, 0xDD1E).
@Meh
Podpásovka? Hlavně je to celé tak trochu pitomost, minimálně zbytečná hloupá zaujatost: Zkusme napsat něco v podobném duchu:
"v základní knihovně funkce pojmenované podle toho jak se kdo z tvůrců jazyka vyspal"
Kec - vstává snad s každým? Je snad někdo z kecalů u rozhodování o jménech?
"parametry podobných funkcí nejsou v různém pořad"
Kec - co je přesně "podobných"? Podle toho jak sse vyspí @Kate?
"umí to UTF-8"
To víš že umí.
A v jakém pak zázraku, na který se nic nenajde, dělá @Kate? Tipnul bych Java, možná nějaké lokální eso v C++ nebo C# - taková ta slabá parodie na Javu, anebo se už rok prsí u funkcionálního jazyka? - mm tam by s tím pojmenováváním funkcí radši mlčel . . .
Konzistentnost pojmenování funkcí se celkem hodí. Ono je fajn když mi stačí vzpomenout si že se knihovní funkce se jmenuje knihovni_funkce a nemusím řešit jestli to náhodou zrovna v tomto případě není spíš knihovnifunkce, funkce_knihovni, nebo funkceknihovni.
Podobné jsou třeba array_filter a array_map. Nebo mi to chceš vyvrátit? Navzájem mají opačné pořadí jinak stejných argumentů. Super :)
Pokud se rozhodnu přejít ve starém projektu z nějaké lokální jednobytové znakové sady na UTF, mám jistotu že bude fungovat? Asi ne… Protože třeba funkce pro zjištění délky stringu vrátí něco úplně jiného. Tomu fakt neříkám „umí UTF-8“
Javu moc nemusím. Python, C++ a hraju si s Go.
"Javu moc nemusím. Python, C++ a hraju si s Go."
Takže jsem to tak nějak tipnul.
array_filter - Filters elements of an array using a callback function
array_map - Applies the callback to the elements of the given array_s_
Ano, mají společné "array" v názvu. To jsou si taky podobné funkce s "_". Mohl by jsi na to napsat RFC, vymezit co se ti zdá "podobné" a pak napsat algoritmus jakým se bude synchronizovat pořadí argumentů aby pořád někdo nevymíšlel blbiny a neremcal . . . a nebo tu funkci prostě použiješ, půjdeš v klidu obědvat a nebudeš muset vypisovat podobné blbiny . . .
"Pokud se rozhodnu přejít ve starém projektu z nějaké lokální jednobytové znakové sady na UTF, mám jistotu že bude fungovat? "
To ale dělá problémy dost často v různých jazycích a nikdo ti že to bude všude fungovat nezaručí . . . Osobně jsem v PHP několikrát měnil scripty do utf-8 problém to nikdy neudělalo.
"Protože třeba funkce pro zjištění délky stringu vrátí něco úplně jiného. Tomu fakt neříkám „umí UTF-8“"
Máš nejaký konkrétní příklad?
Konkrétně třeba co jsem psala, délka stringu - strlen. Jasně, dokumentace říká že je to délka v bytech (i když by to podle mě mohla zmínit výš než v poznámkách), ale kolik lidí to použila jako délku ve znacích?
Ono nejde apriori o to že by se v PHP programovat nedalo. Třeba Nette je celkem pěkný framework. Jen jsem si několikrát ověřila že jazyk s tolika záludnostma a divnýma vlastnostma je náchylnější na chyby programátora. J psal že je PHP super pro začátečníky. Jasně, ale už jenom přetypování v porovnání == může být bezpečnostní riziko. Sekat chyby jde ve všem, v C++ se k tomu dá přidat i množství chyb s pretečením zásobníku apod. Ale jiné jazyky jako Python a Ruby podle mě nejsou o tolik složitější a těch pasti je tam mnohem míň.
Nechci se hádat, Nette je velmi pěkné, rozhodně bych každého PHPkáře v tom nechal udělat pořádně minimálně 2 projekty, ale to není o PHP, to je o pragmatickém a přímém přístupu, který dokázali přetvořit v pěkný transparentní výsledek - to je o stylu uvažování, ne o jazyku.(alespoň z té větší části).
Ono "PHP je dobré pro začátečníky" je taková dvousečná zbraň. Je to dobré v tom, že to má jednoduché nezáludné workflow na to, aby se začátečníkům hned něco hýbalo a hned něco tvořili. Ovšem PHP má temná zákoutí, jako ty "===" vs "==", ale nikomu nikdo nebrání používat "===" pořád a když už použije "==" tak si to dobře rozmyslet. Ono to své místo má. Problém je když někdo doleze z C, o "===" vs "==" neví, překladač mu nezařve a za 14 dnů se pak diví - žádný hate, tak se to děje a je pravda že tutoriály "začněte s php" to neřeší. Naproti tomu C je pro začátky těžké a nudné - ledaskoho to znechutí odradí, nic v běhu neviděl (nemá zkušenosti hrou/bojem) tak mu to ani nic neříká, ty exemplární problémy jsou pro něj nějaké abstrakní nereálno (no začátky). Třeba já byl první na C a mé myšlení to už do toho PHP poznamenalo a dalo mi to to, že jsem už od začátku k PHP tak trochu opatrněji přistupoval, ale první opravdové zábavné programování jsem si zažil až s PHP, jestli se to tak dá říct - koho baví 2 semestry dělat příklady k naučení, s PHP jsem hned sedl a tvořil výsledky - tehdy vlastně opravoval staré knihovny aby dl fungovaly a to bylo fakt zábavnější než řešit problematiku printf - aspoň pro ty začátky.
Co je ale na začátek lepší nevím. Já bych volil 1 měsíc v PHP (nebo pár seminářů) a pak hurá na C nebo Javu, či nějaké ty komplexní jazyky - ve smyslu že v PHP se spoustě problematiky vyhne když se chce, ať už kvůli jednoduššímu typování a ale i jednodušších (jednoduší případy, třeba klasické blogo weby) výsledných aplikacích . . .
"Už to nemá v základní knihovně funkce pojmenované podle toho jak se kdo z tvůrců jazyka vyspal."
Jasně a tohle by jste chtěl vyřešit jak? Přejmenovat polovinu funkcí? Tohle je prostě daň za to, že to dříve nedomysleli a teď už to nejde opravit, leda udělat stovky aliasů a to je zbytečné. Navíc koho zajímá název funkce či pořadí parametrů, nikdo snad v Poznámkovém bloku nepíše.
2kmarty:
"Bylo to snadno rozchoditelny i pro BFU, to je cely ..."
Nikoli, je to predevsim primitivne trivialni primocarej jazyk, kterej sere na nejakou krasu. Je to presne stejny jako s basicem, kterej taky vecne vsichni kritizovali, ale kazdej blbec se ho za odpoledne naucil, dtto pascal.
Zrovna tuhle sem totiz koukal na neco rozumne aktualniho a pro deti ... a kdyz sem videl, co ze jako by pro ty decka melo bejt, tak si sem 100% jistej, ze kdyby v tom veku neco takhle debilniho nekdo predlozil me, tak vzivote nenapisu ani jedinej radek.
To si děláš srandu? Takže ti přijde v pohodě se rochnit v kopě hnoje a říkat jak je skvěle navržená, protože IDE to tak nějak vyřeší? Jinak ano, díky dědictví exkolegů pár věcí musím dělat přes ssh a změna v deployování se prostě už nevyplatí dělat, protože se to brzo zařízne. Bys byl bez IDE v loji, co?
@Vykook
A až to začneš dělat opravdu pořádně a třeba i za peníze, přilezeš k projektu, kde je 25 knihoven na kterých už pracovalo za posledních 5 let 40 lidí z firmy (která měla dobré časy i ty zlé hektické ), 1/2 už tam ani nedělá, dalších 20 lidí na tom dělalo z jakéhokoliv externa, 1/2 dokumentace není, 1/3 za moc nestojí, funkcí jenom na b tam budeš mít 50 bez jediného popisku, tak začneš využívat i to napovídání IDE aspoň na jména, pořadí nebo typy parametrů - případně tě to šéf velice rychle naučí . . .
A zase tupé osobní výpady. Na víc nemáš? Představ si, já za to peníze dostávám a světe div se, jeden projekt byl se vší pravděpodobností starší než ty(alespoň dle tvého projevu odhaduji) a k tomu s nulovou dokumentací, další o chlup mladší s desítka desítkama různejch autorů. Každý statisíce SLOC a ve VIMu to žádný problém nebyl. Jak puk jsem čuměl jen jednou a to když jsem po nějakém paku měl opravovat PHP kód. Raději jsem to přepsal.
"A zase tupé osobní výpady. Na víc nemáš?"
Máš na mysli tohle?
"Ž*rte h*vna! Miliony much se přece nemůžou mýlit."
"Ty skutečná "PHP aplikace" :)"
"To si děláš srandu? Takže ti přijde v pohodě se rochnit v kopě hnoje a říkat jak je skvěle navržená"
Ve svém příspěvku jsem našel jenom příklad ze života. Kde je tam "zase tupé osobní výpady" ????
"A až to začneš dělat opravdu pořádně a třeba i za peníze, přilezeš k projektu, kde je 25 knihoven na kterých už pracovalo za posledních 5 let 40 lidí z firmy (která měla dobré časy i ty zlé hektické ), 1/2 už tam ani nedělá, dalších 20 lidí na tom dělalo z jakéhokoliv externa, 1/2 dokumentace není, 1/3 za moc nestojí, funkcí jenom na b tam budeš mít 50 bez jediného popisku, tak začneš využívat i to napovídání IDE aspoň na jména, pořadí nebo typy parametrů - případně tě to šéf velice rychle naučí . . ."
Mimochodem
"A zase tupé osobní výpady. Na víc nemáš?"
". . . .eden projekt byl se vší pravděpodobností starší než ty . . . "
"Jak puk jsem čuměl jen jednou a to když jsem po nějakém paku měl opravovat PHP kód. Raději jsem to přepsal."
A o tom jsem právě mluvil. U projektíku se to dá. U interního adminu který má stovky mega nevím desítky a stovky tříd a scriptů o tisících a desetitisíc řádcích které míří na interní x set gigové databíze se stovkou tabulek (a viděl jsem i větší), tak uvidíme jak to přepíšeš a kdo ti to zaplatí . . . . To budeš tak dlouho přepisovat, že až to dopíšeš tak už to bude úplně něco jiného a proč? Protože máš radši jazyk kde jsou funkce o trochu intuitivnější a tobě se nechce používat nápověda IDE? Zkus to navrhnout na poradě :-D
"Navzdory nesmyslnému tvrzení "J" o rozšířenosti a z toho plynoucí kvality jazyka už moc nových větších projektů v PHP nevzniká, alespoň z toho co vím :)"
Tak to toho moc nevíš. Určitě neubylo nových projektů v PHP, řekl bych že naopak, ale každopádně se ale začí nají více prosazovat další jazyky (více jako více než předtím samy ku sobě, ne v poměru ku php) - prosazují se JS plnohodnotné framworky, ne jenom sady helperů, z Javy už je taky jazyk vhodný k/hodný nasazení na web, C#, resp. .NET je pořád stejná hrůza a zbytek tak jako nějak vystrkuje růžky. I to PHP se dost změnilo, ale když máš 1100 různých webů na 10 serverech na php 5.3, 5.4 , 5.5, 5.6 a nyní děláš nové v 5.7, tak ti migrace prostě nikdo nezaplatí a tak se někteří lidi kteří začnou ve firmě která má wey na php 5.4 začnou vztekat co je php za hrůzu, no tehdá se i psalo jinak - a všude . . .
Ano, nekonzistence parametrů v několika funkcích jsou opravdu klíčovým problémem PHP. Denně na tento problém narážím a uvažuji kvůli tomu o přechodu na jiný jazyk. Především dnes nemáme na všechno knihovny a frameworky, které tento tak strašně podstatný detail skryjí.
Víte, kdyby jste tímto argumentoval v roce 2000, asi bych se nad tím pousmál. Teď už je to vyloženě trapné :-)
A mne pride lepsie pouzit pre webovu aplikaciu jazyk ktory bol na web stavany, ma dobru podporu a obrovsku uzivatelsku bazu co implikuje aktivny vyvoj a rychle opravy chyb.
Ked pominieme ufrflanost sebestrednych programatorov ktori nie su schopni drzat pod kontrolou svoju OCD (a nutne potrebuju homogennu mennu schemu kontrolnych struktur), su tu vyhody, napr. aj pre spravcov kedze integracia PHP je jednoducha a transparentna, vo vacsine distribucii automatizovana a je jej pomerne vzdy venovana patricna pozornost spravcami repozitarov.
Nehovoriac o pripadoch ked je pouzitie inych "obskurnejsich" technologii vyslovene neziaduce, pretoze na trhu prace sa urcite tazsie hladaju pythonisti, a ini ne-php-isti... Predrazenych javistov ktorych je neustale akutny nedostatok netreba asi ani hlbsie rozoberat, plus v hlavne mensich a menej komplexnejsich projektoch je java proste kanon na vrabce.
@Kate
Logicky ano, ale ne vždy máš tu možnost . . . Teoreticky ano, v praxi to tak jednoduché není. Přesto se lidi snažím, ale speciálně u firem je to cena/výkon. Kvůli trošku lepšímu hodnocí podle 6-7 ajťáků z 10 měnit půl firmy a zavedených nástrojů měnit nebudeš - nehledě na migrace a udržování starých prodaných produktů se servisem.
Případně když máš projekt == produkt za 5 let vývoje 10 lidí na 7 serverch + playground + zálohy tak přemigruješ z PHP ja třeba Javu protože v PHP je torchu nejasné "===" a "==" ?
Ale však jinde píšu že v případě historických duvodů to chápu :) Jen bych v PHP prostě nic nového nezačínala. Jsou i lepší řešení.
BTW, uz znám část důvodu divokého pojmenování standardních funkci. Dobrá divočina :)
https://68.media.tumblr.com/31e6bdedcfbe81dea88919d5c48162c9/tumblr_mxxmb6GLgJ1riu9eco1_1280.png
@Kate
"Jen bych v PHP prostě nic nového nezačínala. Jsou i lepší řešení."
Přímo jsem ti napsal normální důvod proč se píše dál v PHP, i když určitě není jediný - ne každý může vyměnit celý bussiness, team a workflow kvůli pár blbinám. Netvařme se že v PHP nic normálního napsat nejde - jde a normálně a dobře. Výsměch je zbytečný.
A je ti jasné, že že tam v tom linku mluví už o roku 1994 a funkce htmlspecialchars je na každém (99% ) webu použita x*x*x*x krát? Není lepší to tak nechat?
každopádně to žádná divočina není - asi ještě neviděla nějaký starý interní admin pro větší firmu po nějakém flegmatikovi psaný od roku 2005 který má 300 - 400 tříd a scriptů ke kterému přijdeš a nikdo neví co tam je, protože už 2 roky 3 lidi dělají nový v Javě a pořád není plnohodnotný a tak tam dál někdo něco jen tak lepí aby se neřeklo . . . Tak to je divočina, když to máš udrřžovat nebo opravit :-D už několikrát jsem to zažil - je to výživné, ale dost nepříjemné, nějaké "htmlspecialchars" je proti tomu jako "clear as day" - tedy mě to tak připadá . . .
Popravdě, dělala jsem na něčem o řád horším v naprosto šíleném (i když se slušným návrhem) jazyku :) Už z toho důvodu jsem ráda že dělám v něčem z čeho si nervů vlasy a co si netáhne s sebou historické relikty ještě z doby, kdy to jako programovací jazyk ani zamýšleno nebylo :) Ale tak každý má své priority a je fajn že není problém najít práci ve webové firmě kde PHP neexistuje.
Tak to jsem rád že jsou i firmy kde se dělají weby v dokonalých jazycích ;-) Já mám na jednu stranu docela ty bordely kolikrát rád, protože jednak má člověk o čem šíleném vykládat a taky je to občas pořádná výzva a poučení. PHP sice není výkladní skříň, ale je praktické a užitečné . . . Kdo je čuně, jazyk ho nezastaví :-D