Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Linux prebacio 4%

[es] :: Advocacy :: Linux prebacio 4%
(TOP topic, by flighter_022)
Strane: << < .. 143 144 145 146 147 148 149 150 151 152 ... Dalje > >>

[ Pregleda: 346238 | Odgovora: 3057 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
*.gprswap.mts.telekom.rs.



+2790 Profil

icon Re: Linux prebacio 2%07.11.2020. u 21:04 - pre 42 meseci
Čekaj, gde je onda problem sa ispisom u konzolu? Nemam Windows pri ruci, pa mi nije jasno.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

Dexic
ASP

Član broj: 253999
Poruke: 3837



+1376 Profil

icon Re: Linux prebacio 2%07.11.2020. u 21:18 - pre 42 meseci
Ma latinicni i cirilicni jezici su laka stvar..

Ivane, dodaj u VM JP language pa probaj.
Mrzi me da probam ja, nema enUS only windzu.
 
Odgovor na temu

Ivan Dimkovic

Administrator
Član broj: 13
Poruke: 16687
2a02:8071:31e1:dd00:6400:7ab..



+7177 Profil

icon Re: Linux prebacio 2%07.11.2020. u 21:20 - pre 42 meseci
Problem je sto moras da se spustis na kolena i lagano sapuces Windows-u kako zelis da vidis "strana slova".

Ali pazljivo, vrlo tihim glasom! Onda, moras platis lokalnoj babi da ti kaze veliku tajnu, za sta ce da ti naplati u naturi.

Kad saznas od babe sledece magicne reci:

Code:

     _setmode(_fileno(stdout), _O_U16TEXT); 


Lepo ih ubacis u svoj mali konzolni kod, izbajes nesto iz nekronomikon-a - i.... ispred tebe se pojave "komunisticka slova"!!! Magija!

Bliskoistocna i azijatska slova bi bila previse "avant-garde" za Microsoft, pa na zalost UKUSA Windows ne sadrzi fontove za konzolu koji su toliko multi-kulti.

Znam, kao i svako ko je "video svetl... cirilicu" sad sigurno imas milion pitanja!

- Zasto Microsoft trazi da bajes _O_U16TEXT budalastine, kad vec imaju dovoljan "hint" (jbni wchar, wcout, itd..) ?
- Zasto Microsoft nije nigde objasnio da moras da bajes, od cega se boje?
- Zasto nema japanskih karaktera u konzolnim fontovima? Kako cu da gledam mangu animiranu u Foobar2000 text renderer-u?
- Zas... ok, dosta za danas

Ako, kao i milioni ljudi, nisi zadovoljan nedostatkom dobrih odgovora, pisi svom kongresmenu da Microsoftu zabrane da pisu softver.

DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1 Videos: http://www.digicortex.net/node/17 Gallery: http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! - https://github.com/psyq321/PowerMonkey
 
Odgovor na temu

Ivan Dimkovic

Administrator
Član broj: 13
Poruke: 16687
2a02:8071:31e1:dd00:6400:7ab..



+7177 Profil

icon Re: Linux prebacio 2%07.11.2020. u 21:21 - pre 42 meseci
Citat:
Dexic
Ivane, dodaj u VM JP language pa probaj.
Mrzi me da probam ja, nema enUS only windzu.


Cekam nov laptop, ovaj je pun skroz... probacu cim mogu.
DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1 Videos: http://www.digicortex.net/node/17 Gallery: http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! - https://github.com/psyq321/PowerMonkey
 
Odgovor na temu

Dexic
ASP

Član broj: 253999
Poruke: 3837



+1376 Profil

icon Re: Linux prebacio 2%07.11.2020. u 21:34 - pre 42 meseci
https://simonsapin.github.io/wtf-8/

^^ kakve veze ovo, kada sam ja W API koristo, tj. USC2?
 
Odgovor na temu

Ivan Dimkovic

Administrator
Član broj: 13
Poruke: 16687
..1e1:dd00:3545:f7db:47e4:bab3



+7177 Profil

icon Re: Linux prebacio 2%08.11.2020. u 03:49 - pre 42 meseci
Pa REKAO SAM TI da batalis fajlove - tvog zdravlja radi :-) Sam si trazio! Ovako... Ako si koristio "W" API-je, i verzija Windows-a je 5.1+ ti si koristio UTF-16, ne UCS-2.

Negde izmedju 1998 i 2000 je Microsoft prebacio Windows NT sa UCS-2 na UTF-16, tako su bar rekli!

Od tog momenta:

- Do 2017: unutra, svi Win32 "A" API-ji su samo omotaci koji prevode parametre (na osnovu kodne stranice) i proslede dalje "W" API-jima
- Od 2017: pojma nemam kako tretiraju UTF-8 i sta se desava sa "A" pozivima unutar Windows-a kad je CP=65001 (UTF-8)... iskreno, ni ne zelim da znam!

Ili.. bar tako kazu? :-) Kad su poceli, SteveB je verovatno rekao ovo: https://www.youtube.com/watch?v=uL0ROeZw7wA

Enter: WTF-8!

- Sa stanovista NT kernela/FS drajvera: imena fajlova su, jednostavno, sekvence 16-bitnih WCHAR-ova
- Microsoft-ova "konvencija" za imenovanje fajlova je: https://docs.microsoft.com/en-...le?redirectedfrom=MSDN#maxpath i predatira UTF-16
- Zbog ovoga je moguce da imena fajlova u Windows-u budu nekorektan UTF-16!

Sad ce neko reci, "ALI I LINUX RADI TO ISTO" - ne, Linux definitivno ne radi to isto. Jedina slicnost izmedju Linuxa i Windows-a su kerneli koji rade sa stringovima koji su "neprovidni" i to je sve! Linux, za pocetak, nema DrJeckyl&Mr.Hyde varijante API-ja kao Win32 - gde su OBE API VARIJANTE promenile svoje znacenje vremenom (Win32 --> "W" je prvo bio UCS-2, pa onda UTF-16; "A" je prvo bio ANSI, pa su dodate kodne strane, onda 'MBCS - ALI NE UTF-8', onda 'UTF-8 ali samo ako vendor zna sta radi' i, konacno, 'UTF-8 ali beta - ako korisnik zna sta radi').

Da li si prebrojao API i charset/encoding kombinacije kod Windows-a? Ne zaboravi da dodas i imena fajlova koja imaju svoju (MSFT) konvenciju "ni tamo ni ovamo"!

Elem, fajlovi: posto imena fajlova mogu imati (i nekad i imaju) sekvence koje nisu validan UTF-16 - ako hoces 100% korektan rad, moras biti VRLO pazljiv pri parsiranju (i svestan s*anja). Da stvari budu jos gore, neke od tih sekvenci uopste ne mogu biti predstavljene u UTF-8! Tipicno za Microsoft, u novijim Windows-ima si aktivno sprecen (naravno nedokumentovano kako treba) od nekih API-ja da proguras "nelegalni" UTF-16 string, ali nit je garantovano niti smes da se oslnonis na ovo.

Tipicna greska aplikacije koja ne moze da se nosi sa "MSFT" imenima fajlova koji nisu validan UTF-16 je .. nemogucnost brisanja, itd.

WTF-8 je format koji moze da se nosi sa ovim budalastinama. WTF-8 = UTF-8 + podrska surogatnih tacki kodiranja koje nisu u paru.

Jos detalja? Vidi dole. Obavezno proveri da li imas ibuprofena u kucnoj apoteci, glavobolja je garantovana. Uzivaj :-)

Exhibit A - https://exyr.org/2015/!!Con_WTF-8/slides.pdf
Exhibit B - https://lkml.org/lkml/2020/4/15/159
Exhibit C - https://github.com/libuv/libuv/pull/2192

Da li sam mozda pomenuo.. a nisam: @Nedeljko, da li bi se slozio da je ova eksplozija u kombinacijama API varijanti, kodnih stranica, kodiranja karaktera, znacenja API parametara recept za nestabilan kod i sigurnosne rupe? Svajpuj desno ako se slazes da je ovo manifestacija API-ja koji je djubre. Ono, treba ti tajno rukovanje da bi ti konzolna aplikacija printf-ovala polovicni UTF-16!

I sve to, uporno odrzavajuci konfuziju kod developera i korisnika oko toga sta je "Unicode"!

Citat:

Windows NT uses the Unicode (two bytes wide UTF-16) as the default encoding method throughout the Windows NT API. If you choose to use ASCII or multibyte character set as your default character set, they will transform ASCII to Unicode. And use ASCII character set will be slower than Unicode


Komentar? Nema potrebe :-)

--

A sada, BIS!

Napisah gore da je, bar do 2017-me put naseg C++ programa zavrsavao u "W" verzijama Win32 API-ja, bilo kako. Od tog momenta, sto Ameri kazu: "Turtles (WCHARS) all the way down".

Da li se neko pitao, gde prestaju kornjace - sta se onda desava?

Ako se baci pogled na izvorni kod Windows XP SP2 kernela: https://github.com/HighSchoolS...b/Windows-Research-Kernel-WRK-

I njegovih dizajn dokumenata (iz 1989) - videce da je u kernelu sve 16-bitni WCHAR, sa helperima koji mogu da generisu ANSI ako treba. Drugim recima NT API nema "A" varijante.
DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1 Videos: http://www.digicortex.net/node/17 Gallery: http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! - https://github.com/psyq321/PowerMonkey
 
Odgovor na temu

nkrgovic
Nikola Krgović
Beograd

Član broj: 3534
Poruke: 2807

ICQ: 49345867
Sajt: https://www.twinstarsyste..


+655 Profil

icon Re: Linux prebacio 2%08.11.2020. u 10:36 - pre 42 meseci
Citat:
Enter: WTF-8!

Ova skracenica znaci nesto drugo.... Mada, mozda je ti i uoptrebljavas kako treba. Kad pogledam Windows naming, WTF jeste fraza koja mi pada na pamet.... :D
Please do not feed the Trolls!

Blasphemy? How can I blaspheme? I'm a god!'
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
*.gprswap.mts.telekom.rs.



+2790 Profil

icon Re: Linux prebacio 2%08.11.2020. u 11:14 - pre 42 meseci
Samo da prenesem neka svoja iskustva.

Onomad je usled nekog baga (verovatno DELL-ovog) Windows 10 Home krenuo da lupeta kako je disk enkriptovan bitlocker-om, mada ga Windows 10 Home nema i niko nikada nije uneo šifru.

Operater MS-ove podrške nije mogla da pomogne ni uz napomenu da podaci nisu važni, odnosno da može sve da se briše.

Ja sam to uspešno vratio u fabričko stanje.

Izgleda da je taj meni bio DELL-ov i da onda MS-ov operater neće da ulazi u to.

Međutim, kako MS nema svoju stavku menija za vraćanje u fabričko stanje?

Što se tiče Win32 API-ja:

2010 godine je na projektu u legalnom Visual C++ 2010 i MFC-u trebalo da se skinuje GUI. Ako se meni oboji, obojiće se skoro cela površina menija. Jedan ivica širine 1 piksel nije bila obojena. Dakle, cela gornja, donja, leva i desna ivica, širine 1 piksel su ostale neobojene, a kod je kopiran iz MFC-a. Problem je bio poznat na netu i rešenje je bilo kupovina nekih komercijalnih dodataka za skinovanje, koji nisu MS-ovi. Kada ih licenciraš, onda reše to, a zabrljaju nešto drugo.

Problem je na kraju bio rešen licenciranjem Qt-a i bacanjem licence za taj MFC dodatak za skinovanje, koja je koštala ihahaj. Naravno, ceo projekat je bio portovan na Qt, gde ti ne trebaju nikakvi dodaci da bi se sve lepo skinovalo. Bio je poneki problem i sa Qt-om, ali su svi bili rešivi.

Izgleda da je onaj Win32 API meni imao taj problem, a da Qt nije definisao svoje menije kao Win32 API menije, nego kao Win32 API pravougaone oblasti, od kojih je onda pravio meni.

Dok sam pričao da je MFC zaostao u razvoju jer ga je MS napustio u korist .NET-a, Ivan Dimković me je ubeđivao kako MS ozbiljno ulaže u MFC.

Ne kažem ja da je Win32 API idealan. Ako koristiš MFC, koji je previše direktan omotač oko Win32 API-ja, onda se deo problema nasleđuje. Ali, brate, uvek si imao druge frejmvorke, koji ti lepo sve upakuju da radi, tako da su problemi bili rešivi.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
*.gprswap.mts.telekom.rs.



+2790 Profil

icon Re: Linux prebacio 2%08.11.2020. u 11:56 - pre 42 meseci
Opet, MS je oduvek imao Visual Basic, u kome nikada nisam radio, ali sam čuo da je radio kako treba. Ne sa toliko visokim performansama kao C++, ali je uvek moglo da se programira. Za C/C++ su MS-ova rešenja bila i ostala to što jesu, ali si imao C++ Builder i druga okruženja.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

nkrgovic
Nikola Krgović
Beograd

Član broj: 3534
Poruke: 2807

ICQ: 49345867
Sajt: https://www.twinstarsyste..


+655 Profil

icon Re: Linux prebacio 2%08.11.2020. u 12:14 - pre 42 meseci
Postoji jedan problem u ovome sto Nedeljko brani Win32 API...

Ja sam pre jedno godinu dana "konzumirao" API jednog provajdera. U sustini, korektno, RESTfull, pristojno dokumentovano, bukvalno moze sa sa CURL da se radi... Gde je problem. Pa ovako - provajder ima software defined routing i, ako hocu da preselim IP sa VM-a X na VM Y moram, osim podesavanja OS-a da okinem API poziv koji kaze "Ja sam taj-i-taj, zakaci IP G na VM Y". Prosto.

Problem je, API poziv je, dok javi "200 OK" trajao, nekih 50-80 sekundi.

API radi, lepo je dokumentova i ocigledno moze da se radi sa njim. Nista ne puca, nemas timeout, sve moze da se podesi - i sa time moze da se napravi resenje. S'druge strane, reci da je to "dobar API" je vic. Realno, to je, na svoj nacin, djubre. Ravoj i kome svaki test traje bar minut, ako ne i dva, jer cekas minut na API je ubistvo za onoga ko razvija nesto.

Cinjenica da nesto "radi" ne znaci da je to nesto "dobro". Cinjenica da moras da uzmes dodatno resenje, da bi mogao da zivis sa njim ne znaci da je to "OK" jer "eto, ima resenje".

Po meni, ako je nesto "pain in the rear" za onoga ko ga koristi, taj proizvod je djubre. Ne mora da ne radi da bi bio djubre - onda ne bi bio obicno, vec neispravno djubre. :)
Please do not feed the Trolls!

Blasphemy? How can I blaspheme? I'm a god!'
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
*.gprswap.mts.telekom.rs.



+2790 Profil

icon Re: Linux prebacio 2%08.11.2020. u 12:30 - pre 42 meseci
Ja ne razumem člana nkrgovic.

Konzumirao je API jednog provajdera...

Pričamo o Win32 API-ju, a ne o API-ju jednog provajdera. Na tom API-ju trči gomila vrhunskih programa, na njemu su obavljeni vrhunski psolovi i OS sa tim API-jem je toliko dominirao i još uvek dominira na desktopu. Čime to objasniti?

Šta je sve urađeno na API-ju tog jednog provajdera i koliko je taj jedan provajder dominantan u odnosu na ostale?

Uostalom... Ne sviđa vam se Windows-ov API? Palite na Linux, MacOS, BSD... Imate toliko alternativa, neke su čak i besplatne.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

Dexic
ASP

Član broj: 253999
Poruke: 3837



+1376 Profil

icon Re: Linux prebacio 2%08.11.2020. u 13:16 - pre 42 meseci
Citat:
Ivan Dimkovic:
Pa REKAO SAM TI da batalis fajlove - tvog zdravlja radi :-) Sam si trazio! Ovako... Ako si koristio "W" API-je, i verzija Windows-a je 5.1+ ti si koristio UTF-16, ne UCS-2.

Negde izmedju 1998 i 2000 je Microsoft prebacio Windows NT sa UCS-2 na UTF-16, tako su bar rekli!

Pogledaj source code NTFS-a (imas ga tu i tamo..), on ne uzima u obzir ni u Server 2003 da je UTF16, vec USC-2, nema multi-word karaktera, iskljucivo WORD-sized.

Citat:

- Do 2017: unutra, svi Win32 "A" API-ji su samo omotaci koji prevode parametre (na osnovu kodne stranice) i proslede dalje "W" API-jima
- Od 2017: pojma nemam kako tretiraju UTF-8 i sta se desava sa "A" pozivima unutar Windows-a kad je CP=65001 (UTF-8)... iskreno, ni ne zelim da znam!

Zeznuo si se oko vremena, mnooooogo pre 2017. su A verzije samo wrapper-i, cak i u Windows 7 je bilo tako za file API, za XP ne mogu da tvrdim..
Evo vec ~10-a instrukcija u CopyFileA je:
78db544d e8ae0df8ff call kernel32!Basep8BitStringToDynamicUnicodeString
i onda koja instrukcija kasnije poziv:
00000000`78db548d e87ebff7ff call kernel32!CopyFileExW


Citat:
Enter: WTF-8!

WTF-8 je valjda zbudzeni UTF-8, tako da on nema nikakve veze sa fajlovima.


Citat:
VARIJANTE promenile svoje znacenje vremenom (Win32 --> "W" je prvo bio UCS-2, pa onda UTF-16;

Nema podrske za UTF-16 ni u Win10. Pogledaj source code Fastfat-a ako nista drugo. ONi pretpostavljaju da je Length = size / sizeof(wchar). TO je cist USC2.
CIm ti smatras da je broj karaktera deljiv sa 2, a ne variable, vrlo lako ces doci do situacije da trazis slash, a nadjes neki code point ciji je deo isti kao i karakter za slash i mucak.
To sam iskusio kada je neko probao da parsira string tako i u usermodu :)

[Ovu poruku je menjao Dexic dana 08.11.2020. u 14:33 GMT+1]
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
*.gprswap.mts.telekom.rs.



+2790 Profil

icon Re: Linux prebacio 2%08.11.2020. u 13:57 - pre 42 meseci
Ako u UTF-8 tražiš sleš, ne možeš naći ništa drugo. Ako u UTF-8 tražiš "Čačak", možeš naži samo "Čačak" i ništa drugo. UTF-8 nema taj problem, zato što nepočetni bajt koji nekog znaka ima najviša dva bita 10, dok početni bajtovi znakova imaju na početku 0 ili 11.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

Dexic
ASP

Član broj: 253999
Poruke: 3837



+1376 Profil

icon Re: Linux prebacio 2%08.11.2020. u 14:03 - pre 42 meseci
Naravno da mozes da se zeznes :)
Konkretno 5C je za (Windows) slash, slovo Ŝ je u015C - sto znaci da ko trazi slash u stringu, "naci ce ga" i kada slovo Ŝ nadje, tj. mislice da je nasao slash, a nije.
I onda tu presece string, i dobije neku brljotku.

U USC2 ne mozes da se predjes tako, ali u UTF8 i UTF16 mozes.

Isto je i za slovo ɜ (u025C) i u035C karakter.

A znas li koliko tek moze da se predje za forward slash, 2F?:) 20 karaktera ima 2F bajt u sebi, a nisu forward slash.

Code:

while(string[i] != '\\') i++;

Vidis problem?
 
Odgovor na temu

Ivan Dimkovic

Administrator
Član broj: 13
Poruke: 16687
..1e1:dd00:3545:f7db:47e4:bab3



+7177 Profil

icon Re: Linux prebacio 2%08.11.2020. u 15:09 - pre 42 meseci
@nkrgovic,

Citat:

Ova skracenica znaci nesto drugo.... Mada, mozda je ti i uoptrebljavas kako treba. Kad pogledam Windows naming, WTF jeste fraza koja mi pada na pamet.... :D


WTF-8 je nesto sto su drugi morali da naprave kako bi se nosili sa Microsoft-ovim izumima. WTF je bas ono sto mislis da znaci.

@Nedeljko,

Citat:

Pričamo o Win32 API-ju, a ne o API-ju jednog provajdera. Na tom API-ju trči gomila vrhunskih programa, na njemu su obavljeni vrhunski psolovi i OS sa tim API-jem je toliko dominirao i još uvek dominira na desktopu. Čime to objasniti?


Lakse je da pitas cime ne mozes objasniti, odgovor: Win32 API

Cime objasniti? Kombinacijom veste poslovne i proizvodne strategije i spremnosti da se krse zakoni radi eliminisanja konkurencije.

United States v. Microsoft Corporation tj. "findings of fact": https://www.justice.gov/atr/us-v-microsoft-courts-findings-fact -

Performanse Microsofta u segmentima gde nisu imali mogucnost zloupotrebe polozaja su dijametralno suprotne (cast izuetcima kao sto su XBox i Azure)

Citat:

Na tom API-ju trči gomila vrhunskih programa


Adobe Photoshop nije osvojio trziste zahvaljujuci API-ju za iscrtavanje prozora i I/O.

Ispravno bi bilo reci "Uprkos tom API-ju, trci gomila vrhunskih programa".

Win32 API je TOLIKO dobar da je sam MS Office tim napravio kompletno paralelni GUI svet (i verovatno jos boga pitaj sta). Zamisli, sopstveni kljucni proizvod generacijama uopste ne koristi OS API-je za GUI, vec IMITIRA OS GUI elemente! I, naravno, ti GUI elementi se ne ponasaju 100% kao "original", kako bi uopste?

Ima jos! :-) Situacija postaje jos smesnija kada, onda, Windows tim krece da imitira Office!!! Tako da nekad imas sledece:

- Win32 API uvede "originalnu" implementaciju nekih GUI elemenata
- MS Office ne koristi Win32 vec prave svoju "skoro identicnu kopiju" koja "lici" na Win32 (!!!) + dodaju jos neke nove elemente
- Win32 tim >mozda< implementira imitaciju tih novih elemenata (facepalm) u OS API-ju
- U prosla vremena, Visual Studio tim imitira DRUGU imitaciju, recimo Ribbon u MFC-u... Zapravo, to cak nije bio Microsoft kod, vec su KUPILI TUDJU IMITACIJU SVOJE IDEJE
- Danas Win32 ima rodbinu, pa nove nezavisne implementacije nicu u WPF-u i sl...

Hoces prvi bis? Ako si mislio da je ovo gore (engleski strucni termin: FUCKERY) dno dna, ispod koga nema dalje...

POGADJAJ PONOVO!

Enter Lawyers! :-) Ribbon UI je imao LICENCU!! https://law.stackexchange.com/...ft-ribbon-licensing-as-of-2017

Microsoft je cak tuzio Corel zbog ovoga! Najjaci deo sledi: licenca je nestala!!! Pojela je macka! Posto je Microsoft izgubio licencu, izdali su neko nemusto saopstenje da je OK ako imate Ribbon UI u vasoj aplikaciji, ako je taj Ribbon UI jedan od mnostva MS-ovih emulacija i implementacija.

OK OK, ovo je GUI... mozda je Office tim imao tesne rokove? Jeste da to ne objasnjava nista drugo, ali hajde, go Team MS (ili..MS Team...s??)

Zaboravimo GUI, sigurno klasicne OS funkcije nisu dupli... NEEE!! JESU!

Drugi bis ("Sistemski API")

Sta kazes na to da jedna od MS-ovih kljucnih serverskih aplikacija (MS SQL Server) ne zeli da Windows upravlja task-ovima? WTF?

MS SQL Server je od ranih 2000-tih imao svoj scheduler!!! Toliko su bili zadovoljni Win32 API-jem da su trazili da se SKLONI SA NJIHOVIH PROCESORA!! :-)

Posto ih je i EU nasla krivim za zloupotrebe, interni privatni API-ji su "no no" i zahvaljujuci tome imamo... tadaaa: https://docs.microsoft.com/en-...irectedfrom=MSDN#ums-scheduler - Nedeljko, sad i ti mozes da imitiras OS u tvojim aplikacijama! Svi znamo da nema vece zabave!

"Roll your own", MS Office rola svoj GUI API, MS SQL Server svoj scheduler... samo je pitanje kad stize i "roll your own OS". Odlicna reklama, ne za OS.

Ali cekaj, IMA JOS!!!!

Pitanje: Sta lose moze da se desi ako aplikativni softver pokusava da imitira OS?
Odgovor: Puno toga! Poslusaj Nensi Regan i "Just.Say.No!" pre nego sto ti se desi OVO:

Citat:

The Tao of a Deadlock Scheduler in SQL Server


https://techcommunity.microsof...uler-in-sql-server/ba-p/333991

Kljucne reci: deadlocked scheduler, orphaned spinlocks, unreleased spinlocks, I/O latches, heavy latch chains...

Cek bre, zvuci kao nesto sto normalni ljudi resavaju u OS-u? Hmmm, da ali, ne ali, da ali...
DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1 Videos: http://www.digicortex.net/node/17 Gallery: http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! - https://github.com/psyq321/PowerMonkey
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
*.gprswap.mts.telekom.rs.



+2790 Profil

icon Re: Linux prebacio 2%08.11.2020. u 16:46 - pre 42 meseci
Citat:
Dexic: Naravno da mozes da se zeznes :)
Konkretno 5C je za (Windows) slash, slovo Ŝ je u015C - sto znaci da ko trazi slash u stringu, "naci ce ga" i kada slovo Ŝ nadje, tj. mislice da je nasao slash, a nije.
I onda tu presece string, i dobije neku brljotku.

U USC2 ne mozes da se predjes tako, ali u UTF8 i UTF16 mozes.

Isto je i za slovo ɜ (u025C) i u035C karakter.

A znas li koliko tek moze da se predje za forward slash, 2F?:) 20 karaktera ima 2F bajt u sebi, a nisu forward slash.

Code:

while(string[i] != '\\') i++;

Vidis problem?

U015C se u UTF-8 kodiranju beleži kao C59C, tako da se 5C ne može naći u njemu. Pogledaj kako funkcioniše UTF-8 kodiranje.

Znak u opsegu 00-7F (ASCII) se beleži baš tako. Dakle, bajt počinje bitom 0.

Znaci u opsegu 0080-07FF se beleže sa dva bajta. Prvi počinje bitovima 110, a drugi bitovima 10.

Znaci u opsegu 0800-FFFF se beleže sa tri bajta, pri čemu prvi počinje bitovima 1110, a preostala dva bitovima 10.

Znaci u opsegu od 010000-10FFFF se beleže sa četiri bajta, pri čemu prvi počinje sa 11110, a preostala tri počinju sa 10.

Dakle, bajt koji nije prvi, počinje sa 10, odnosno nalazi se u opsegu 80-BF, pa ne može nikako biti 5C.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

Ivan Dimkovic

Administrator
Član broj: 13
Poruke: 16687
...kabel-badenwuerttemberg.de.



+7177 Profil

icon Re: Linux prebacio 2%08.11.2020. u 17:05 - pre 42 meseci
Citat:
Dexic
WTF-8 je valjda zbudzeni UTF-8, tako da on nema nikakve veze sa fajlovima.


WTF-8 je prebudzeni UTF-8 (UTF-8 + Ekstra sos) koji moze da korektno podrzi sve sto je "legalno" u Microsoft-ovoj konvenciji za imena fajlova koja "Nije skroz UTF-16".

Vec napisano sta je probem: surogatne kodne tacke - bez para (problem za UTF-16). Surogatni parovi su dodatna muka. Sve to nit je kanonski UCS-2, nije ni UTF-16 - to je hakovani UCS-2, nekompatibilan sa UTF-16 i UTF-8. Sve da hoces, ovo ne bi lako postigao namerno.

Imas i linkove sa literatorom i malom prezentacijom za TL;DR

Citat:

Nema podrske za UTF-16 ni u Win10. Pogledaj source code Fastfat-a ako nista drugo. ONi pretpostavljaju da je Length = size / sizeof(wchar).


Pricamo o razlicitim stvarima:

- Win32 API je UTF-16 od Windows 2000 (manje/vise, OK?)

- NT API o kome sada pricamo u najvecem broju slucajeva komotno prolazi sa tretiranjem stringova kao sekvenci 16-bitnih WCHAR-ova, bez razmisljanja o kodiranju (prednost kad si kernel)

- Windows imena fajlova imaju posebnu konvenciju koja se grubo moze opisati kao: UCS-2 + stake, verovatno zato sto su im Azijati trazili da se skockaju (hahaha, da su znali... ali Azijati imaju svoju tonu hakova u aplikativnom sloju)

Citat:
TO je cist USC2.


Ne, nije cist UCS-2. Ti gledas samo NT API i njihovu unutrasnju konvenciju kako da ignorisu userland budalastine. Moze im se: NT API savrseno boli qrz za enkoding u 99% slucajeva..

Tamo gde takva radna pretpostavka ne prolazi, imas RtlXXXXXX f-je koje ce ti pomoci.

Fun fact: probaj da u NT (OS) ili DDK dokumentaciji nadjes WTF je zapravo UNICODE_STRING osim "niz WCHAR-ova". Srecno! :-)

Ali, u WinSvetu u userlandu, imena fajlova mogu "legalno" par da imaju parove surogata i usamljene surogate i, sokantno, nekad moras i da ih ispises ili da pitas korisnika da upise. To nije ni UCS-2 ni UTF-16, jos gore: to cak nije ni kompatibilno sa UTF-16 ili UTF-8.

Zanimljivo, bar u vreme 2003 R2 kernela, u kodu mozes naleteti komentare gde se vide pogresne pretpostavke MSFT programera o "Unicode" (Unicode = wide char, i sl.), cak i direkt kod f-ja vezanih za UTF-8 (ima ih i u WRK-u, ali jako malo: samo u domenu DNS hostname->NETBIOS computer name mapiranja). Valjda su vremenom naucili nesto vise.

Citat:

Pogledaj source code NTFS-a (imas ga tu i tamo..), on ne uzima u obzir ni u Server 2003 da je UTF16, vec USC-2, nema multi-word karaktera, iskljucivo WORD-sized.


NTFS sors? Za to treba neka druga "distribucija" Windows izvornog koda, sto otezava komunikaciju :-) WRK 1.2 nema ni HAL-ove ni FS drajvere, na zalost. Mada, iskreno, da su bili pametni i to otvorili skroz pocetkom 2000-tih i delegirali odrzavanje na telo kao sto je SGI uradio sa OpenGL-om... danas verovatno ne bi lupali glavu oko stringova.

Plus, nema potrebe da gledam, 99% NT kernela radi kako si napisao. Kodiranje stringova je "crna kutija". NT kernel radi sa apstraktnim pojmom "string" (UNICODE_STRING) koji se sastoji od 16-bitnih jedinica. Ovo, naravno, nije skroz tacno, ali sve dok znas gde tacno nece raditi, to sljaka.

Problem sa Microsoft-om je sto imas kombinatoricku eksploziju mogucnosti, rezultat 30 godina budzenja - pa "dok znas gde tacno nece raditi" je skoro nemoguc koncept. Zbog toga je UTF-8 "beta" od 2018 u Windows 10.
DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1 Videos: http://www.digicortex.net/node/17 Gallery: http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! - https://github.com/psyq321/PowerMonkey
 
Odgovor na temu

Dexic
ASP

Član broj: 253999
Poruke: 3837



+1376 Profil

icon Re: Linux prebacio 2%08.11.2020. u 17:48 - pre 42 meseci
Sors FastFat-a je javno dostupan, krzo DDK samples odavno.

Medjutim, i user level file API pretpostavlja da je wchar, ne nesto drugo. Za druge user level apis ne znam, ove sam disasemblovao i video.
Iste pretpostavke prave kao i fastfat - da nema surogata, nego length = size/sizeof(wchar).
E, sad, to mozda i funkcionise maltene uvek, jer fs gleda da li ima onih 10-15 ilegalnih karaktera u imenu (i specijalnih znakova). Ostalo moze da samelje bilo ono code pair ili ne.
Ali ceo file system api pretpostavlja da je wchar, i da nema code pairs. Samo Ansi varijante mogu da nesto muljaju oko code pairs tu.


@Nedeljko, hmm, da u pravu si.. ne znam na cemu je ovo pucalo onda, ali znam da nije radilo i samo latinska slova kada se ukombinuju.
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
*.gprswap.mts.telekom.rs.



+2790 Profil

icon Re: Linux prebacio 2%08.11.2020. u 18:00 - pre 42 meseci
Ako si tražio '\', onda si verovatno radio na Windows-u, čiji API ne radi po UTF-8.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

Dexic
ASP

Član broj: 253999
Poruke: 3837



+1376 Profil

icon Re: Linux prebacio 2%08.11.2020. u 18:25 - pre 42 meseci
Ne, ovo je bio C++ obican. Mislim jeste kasnije to stizalo do API-a, ali vec u onoj proveri je pucalo.
Nemam taj kod pri ruci, ali vidim da nije moglo ovako kao sto sam pomenuo, nijedan slash da je u pitanju.
 
Odgovor na temu

[es] :: Advocacy :: Linux prebacio 4%
(TOP topic, by flighter_022)
Strane: << < .. 143 144 145 146 147 148 149 150 151 152 ... Dalje > >>

[ Pregleda: 346238 | Odgovora: 3057 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.