Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.


Příspěvky - A. F.

Stran: 1 2 [3] 4
31
Vývoj / Re:Typový system versus unittesty
« kdy: 20. 08. 2018, 13:53:19 »
Že limit nemá být záporný, a že start musí být menší jak str nebudu psát do dokumentace ani do testů. Napíšu to pomocí závislostních typů, protože je to výhodnější.

A jak by si tu funkci substr těmi závislostními typy napsal?

32
Vývoj / Re:Dvě stejné třídy různých verzí (Java)
« kdy: 20. 07. 2018, 19:10:28 »
Nikdy jsem to nezkoušel, ale řekl bych, že pokud instancuju pomocí dvou různých classloaderů a reflexe, tak můžu získat docela snadno dvě instance totožné třídy ze dvou různých jarek, tedy ve dvou verzích. Pak záleží co s nimi chci dělat dál. Pomocí reflexe můžu dělat zase asi cokoli.

Použití si dokážu představit při potřebě přeuložit serializovaná data v jiné verzi třídy. Ale možná existuje na uvedený případ nějaký vhodnější kanonický postup. Ale častěji se stejně serializuje do nějakého neutrálního formátu, třeba xml, takže to není moc často potřeba.
Neměl by si nějaký odkaz? Potřebuji nasměrovat.

Představuju si to stejně jako je uvedeno zde (netestoval jsem):

https://stackoverflow.com/a/11759613/5950455

Tedy:

Kód: [Vybrat]
common.jar:
BaseInterface

v1.jar:
SomeImplementation implements BaseInterface

v2.jar:
OtherImplementation implements BaseInterface

command-line:
java -classpath common.jar YourMainClass
// you don't put v1 nor v2 into the parent classloader classpath

Then in your program:

loader1 = new URLClassLoader(new URL[] {new File("v1.jar").toURL()}, Thread.currentThread().getContextClassLoader());
loader2 = new URLClassLoader(new URL[] {new File("v2.jar").toURL()}, Thread.currentThread().getContextClassLoader());

Class<?> c1 = loader1.loadClass("com.abc.Hello");
Class<?> c2 = loader2.loadClass("com.abc.Hello");

BaseInterface i1 = (BaseInterface) c1.newInstance();
BaseInterface i2 = (BaseInterface) c2.newInstance();

Pokud by obě verze nesdíleli společné rozhraní BaseInterface, tak to tolik nevadí. Mohu je instancovat jako Object a potřebné metody (nebo přímo fieldy) si dohledat a použít pomocí reflexe:

Kód: [Vybrat]
import java.lang.reflect.*

public class Test {
   public String toString(){
      return "This is toString from Test!";
   }
}

Object   o = new Test();
Method m = o.getClass().getMethod("toString");
m.invoke(o);

Takovéhle pokusy se snadno testují v jshellu (v JDK od verze 9).

Excelentní. Takhle na talíři jsem to nečekal. Vyzkouším. Díky!

33
Vývoj / Re:Dvě stejné třídy různých verzí (Java)
« kdy: 19. 07. 2018, 20:07:22 »
Nikdy jsem to nezkoušel, ale řekl bych, že pokud instancuju pomocí dvou různých classloaderů a reflexe, tak můžu získat docela snadno dvě instance totožné třídy ze dvou různých jarek, tedy ve dvou verzích. Pak záleží co s nimi chci dělat dál. Pomocí reflexe můžu dělat zase asi cokoli.

Použití si dokážu představit při potřebě přeuložit serializovaná data v jiné verzi třídy. Ale možná existuje na uvedený případ nějaký vhodnější kanonický postup. Ale častěji se stejně serializuje do nějakého neutrálního formátu, třeba xml, takže to není moc často potřeba.
Neměl by si nějaký odkaz? Potřebuji nasměrovat.

Xstream http://x-stream.github.io/
To je jedna z moznosti jak serializovat objekty do XML.
Tak mě samozřejmě nešlo o tu serializaci do XML.

34
Vývoj / Re:Dvě stejné třídy různých verzí (Java)
« kdy: 19. 07. 2018, 19:52:54 »
Nikdy jsem to nezkoušel, ale řekl bych, že pokud instancuju pomocí dvou různých classloaderů a reflexe, tak můžu získat docela snadno dvě instance totožné třídy ze dvou různých jarek, tedy ve dvou verzích. Pak záleží co s nimi chci dělat dál. Pomocí reflexe můžu dělat zase asi cokoli.

Použití si dokážu představit při potřebě přeuložit serializovaná data v jiné verzi třídy. Ale možná existuje na uvedený případ nějaký vhodnější kanonický postup. Ale častěji se stejně serializuje do nějakého neutrálního formátu, třeba xml, takže to není moc často potřeba.
Neměl by si nějaký odkaz? Potřebuji nasměrovat.

35
Vývoj / Dvě stejné třídy různých verzí (Java)
« kdy: 18. 07. 2018, 04:53:28 »
Ahoj.

Něco málo jsem slyšel o class loaderech v javě. Ale nemám větší zkušenosti. Zajímalo by mě, zda zvládnou následující úlohu:

Mám třídu org.vendor.App z balíčku app-1.2.3.jar a pak jinou implementaci třídy org.vendor.App z balíčku app-1.2.1.jar. Je možné, nějakým způsobem načíst a vytvořit instance těchto dvou tříd tak, abych s nimi mohl pracovat najednou v jedné metodě?

36
Vývoj / Re:Je utf8 univerzální?
« kdy: 04. 07. 2018, 23:30:40 »
Akorát bych podotkl, že podpora vícejazyčnosti je širší téma než jen uložení/načtení textu. Ligatury, směr toku textu, spellchecker, řazení a porovnávání textu, různé formáty čísel, měn a datumu, odlišná časová pásma, fulltextové vyhledávání, tisk, různé jednotky (váhy, míry), různá legislativa, atd.
Jsem si toho vědom. Mě ale zajímá pouzet text. Tudíž z toho co jste vyjmenoval pouze ligatury. Na wiki píšou, že ligatury se dávají do "Doplňková oblast pro soukromé použití". Víte jak to funguje?

Arabské slitky ( l + `aliv: لا, k + `aliv, k + l, k + l + `aliv, l + m) jsou umístěné kde, netušíte? Dévanágarí jich má mít také mnoho. Vzhledem k tomu, že slitky nejsou povinné, v arabštině l + `aliv povinné je, ostatní již ne; fi, ti v češtině záleží na druhu slova - tak si nedovedu představit, že by se to dělalo automaticky.

37
Vývoj / Re:Je utf8 univerzální?
« kdy: 04. 07. 2018, 23:18:59 »
Utf-8 muzete s klidem pouzit a zakodujete libovolny znak.
OK, díky.

Ma akorat promenlivou delku, casto pouzivane znaky latinky azbuky a alfabety jsou 1-2 bajtove, ostatni znaky maji bajtu vice. Je to jen zpusob kodovani cele Unicode mnoziny. Co vam chteli povedet je ze jedna vec je znak zakodovat a druha vec je ho zobrazit - cili potrebujete font co je obsahuje. A treti vec je ze pozor na knihovny  ci utilitky na zpracovani textu - ne vsechny umeji vicebajtovye znaky - hlavne bacha na regex.
Dobře, dobře, ale už je to mimo téma mé otázky :-)

38
Vývoj / Re:Je utf8 univerzální?
« kdy: 04. 07. 2018, 20:19:24 »
Kde jsou hranice?

UTF-8 se snaží napasovat Unicode nad ASCII kódování, pro uložení textového souboru. UTF-8 se pak načte do paměti, kde se reprezentuje 4bytově little nebo big engian podle platformy. Je třeba také uvažovat o směru textu zleva doprava i obráceně.

Hranice může nastat při použítí textově orientovaných utilitek, kde se s UTF nepočítá a s knihovnami třetích stran pro zpracovaní nějakých datových struktur, kde může docházet k nějakým neplechám, kvůli potencionálně neplatným sekvencím bytů...

Zajímá mě pouze to získávání textu. Tedy řeknu uživateli: "sem piš co chceš, ale musí to být v utf8". Já si to následně zpracuju. Přičemž už je na mě, abych měl třeba kompletně unicode fonty atd.

39
Vývoj / Re:Je utf8 univerzální?
« kdy: 04. 07. 2018, 20:17:01 »
pro zacatek narazis u japonskych/cinskych pisem
Můžeš být konkrétnější?
Pro japonská a čínská písma nelze použít vůbec, nebo "jen" většinou ano, ale v některých okrajových případech ne?
Co se používá místo toho?

40
Vývoj / Re:Zjištění chyby při neúspěchu fwrite()
« kdy: 04. 07. 2018, 20:14:37 »
Citace
Kdybys měl alespoň trochu ánunk o tom, o čem píšeš, tak by ti došlo, že posix_get_last_error() je z POSIX modulu, tedy funguje jen pro jeho funkce. Ty se vyznačují tím, že mají prefix posix_. No a jak si můžeš všimnout, funkce fwrite() ten prefix nemá. Takže na ni posix_get_last_error() logicky nefunguje a tedy to co jsi psal, je totální hovadina.

Přímo v dokumentaci http://php.net/manual/en/function.posix-get-last-error.php se používá v příkladu stream_select(), takže to s tím "posix_" prefixem není pravda. Zbytek se mi nechce hledat, ale řekl bych, že ta funkce logicky vrací "errno".
Zkoušel jsem to. Ty funkce bohužel nefachají. Ani jedna.

41
Vývoj / Je utf8 univerzální?
« kdy: 04. 07. 2018, 19:27:19 »
Zdravím.

Předpokládejme, že mám systém, který texty načítá z nějakého souboru. Aspiruju na mezinárodní trh.

Otázka: mohu prohlásit, že obsah toho textového souboru musí být v utf8? Pokryje to všechny normální jazyky a písma na světě (tedy třeba minojština mě až tak netrápí). Nebo naopak mohu narazit třeba u Japonštiny? Čínštiny? Kde jsou hranice?

Děkuji za odpověď.

42
Vývoj / Re:Zjištění chyby při neúspěchu fwrite()
« kdy: 03. 07. 2018, 00:18:02 »
Pardon. Přiznám se, že jsem nevšiml, že tahle část je obsolete. Teoreticky by mohlo jít použit eio_open() z https://pecl.php.net/package/eio a protože se tím krmí libev, předpokládám, že vrací file descriptor. Bez záruky, do kódu jsem se nedíval.

Tak teda to EIO jsem zkusil. Funguje to hezky. Při vyčerpání místa to vrátí chybu, a tu lze přečíst pomocí eio_get_last_error(). Takhle by se mi to líbilo u to fwrite(), škoda, že to neumí no.

43
Vývoj / Re:C# a Ncurses
« kdy: 02. 07. 2018, 23:20:23 »
MonoCurses, CursesSharp jsou ncurses. Nenech se zmást jménem.

44
Vývoj / Re:Zjištění chyby při neúspěchu fwrite()
« kdy: 02. 07. 2018, 23:07:49 »
Na což se neptal, nesouviselo to s tím na co se ptal, a ani to nijak nepomohlo s jeho problémem. Rada na nic.
Vy jste stále ještě nepochopil, jaký problém se tu řeší. Takže vaše názory na to, co pomohlo a co ne, jsou k ničemu.
Tak jeho rada (https://forum.root.cz/index.php?topic=18906.msg272378#msg272378) sice nebyla moc povzbudivá, ale alespoň byla k věci a normální.

45
Vývoj / Re:Zjištění chyby při neúspěchu fwrite()
« kdy: 02. 07. 2018, 23:04:40 »
No a včil mudrujte.
No tak hurá, aspoň někdo to zkusil! Odtud:
https://github.com/php/php-src/blob/master/ext/standard/file.c#L1189
a odtud:
https://github.com/php/php-src/blob/master/main/streams/streams.c#L1189
#define php_stream_write(stream, buf, count)   _php_stream_write(stream, (buf), (count))
to vypadá, že se pracuje s FILE, nikoliv s fd.

Byl byste ochotný udělat ještě jeden pokus, kdy se soubor otevře pomocí dio_open() a odtud se teprve získá stream?
Určitě!
Ale bohužel. Mám PHP verzi 5.6, tohle je pro < 5.1 (dle dokumentace). Pro jistotu jsem to i tak zkusil, člověk nikdy neví, ale už tam není no.

(Degradovat na 5.1 se mi nechce, a i kdyby to pomohlo, tak to stejně nebudu moct použít.)

Stran: 1 2 [3] 4