Reklama
Nepřihlášený uživatel | Zaregistrovat se
 

Téma:

Počítače a InternetVývoj software

Spravují:

arnost,
Fencer

Může vás zajímat



Reklama



Vse o tomto genialnim programovacim jazyku.
JDK 1.5 dokumentace

Pozor! Komu se Java z jakekoholiv duvodu nelibi a rad by si na ni zanadaval pri srovnavani se svym oblibenym jazykem, necht podobne diskuse smeruje do klubu Jazykove valky.
Vytvarime keystore pro codesign:

openssl pkcs12 -in Certificates.p12 -out clientcert.pem -nodes -clcerts
openssl x509 -in psrootqca2.crt -inform DER -out psrootqca2.pem
openssl x509 -in psqualifiedca2.crt -inform DER -out psqualifiedca2.pem
cat clientcert.pem psqualifiedca2.pem psrootqca2.pem > all.pem
openssl pkcs12 -export -in all.pem -out clientcertchain.pfx
keytool -genkey -alias 4 -keystore 4.jks
keytool -delete -alias 4 -keystore 4.jks
keytool -v -importkeystore -srckeystore clientcertchain.pfx -srcstoretype PKCS12 -destkeystore 4.jks -deststoretype JKS


arnost Snad zas nechci tak  moks
Predne bych zkusil v nejakem radkovem klientu, co to vlastne dela, jestli na druhe strane neni nejake ochrana proti robotum.

A pak bych se vykaslan na URL a pouzil http clienta, jako kazdy slusny clovek

https://openjdk.java.net/groups/net/httpclient/intro.html
url.openStream()
Ahoj všem!
stává se mi, že se program občas zasekne ve funkci openStream().

URL url = new URL(s);
InputStream in = url.openStream();

Zkoušel jsem i nastavit setConnectTimeout a setReadTimeout, ale zbytečně (implicitně by stejně mělo být 20s)
Nevím jak se z toho dostat. Zůstane trvale zaseklý, žádná výjimka, prostě nic.
Máte někdo nějaký nápad?
 
Mormegil Už jste  přispěli?
Ano, v tomto smyslu vskutku žádný význam.
arnost Snad zas nechci tak  moks
Ja jsem to bral jako komentar toho puvodniho postu

https://www.okoun.cz/boards/java?contextId=1070275194#article-1070275194
Mormegil Už jste  přispěli?
Definuj „žádný význam“. Samozřejmě to nemá žádný vliv na chování toho překladače, ale pro smysl toho kódu jako takového je to zásadní, celá podstata je, že varianta se Supplier je líná, takže lze psát věci typu coalesce(x, () -> soubor.read()). Když by místo toho byl List, tak by to vskutku moc smyslu nedávalo.
Mormegil Už jste  přispěli?
Ano, je to funkce, bezparametrická, vracející T.
arnost Snad zas nechci tak  moks
nebo neanonymni, ale v zasade to nema v tom priklade zadny vyznam, lze to nahradit treba List‹T› a bude se to chovat stejne.
von_Zeppelin Vyhubit lidstvo  pclib php framework
Že vám do toho lezu - vím, že řešíte něco jiného, ale už se nevydržím nezeptat: To Supplier‹T› je v podstatě nějaká anonymní funkce, předávaná jako parametr.
 
Mormegil Už jste  přispěli?
Co z toho? Že se jmenujou stejně? No jasně, když to beztak nefunguje, ale jinak na tom není nic zvláštního. (Teda samozřejmě až na to, že jsem tam napsal String místo T.)
koles ... 
Neprojde přes code review.
Mormegil Už jste  přispěli?
public static ‹T› T coalesce(@Nullable T a, @Nullable T b) {
return a == null ? b : a;
}

private static ‹T› String coalesce(@Nullable T a, @Nonnull Supplier‹T› b) {
return a == null ? b.get() : a;
}


je IMHO úplně pohodový a smysluplný kód, přičemž se signatury těch dvou metod ani skoro neprotínají: pro který typ T platí, že T = Supplier‹T›? Inu, ano, máme problém u literálu null. Což je sice dost okrajový případ (který by šel i ozáplatovat tím, že i ve druhé variantě dovolím jako b posílat null), ale stejně…
Mormegil Už jste  přispěli?

V tu chvíli kupodivu „reference to GuessWhat is ambiguous“. Udělat jeden null→T a druhý null→Supplier mu přijde lepší, než udělat dvakrát null→T, ale zato stejně dobré jako udělat dvakrát null→Supplier.

Nazaretsky Jsem do muziky celej blázen  protože jsem blázen
No uplne nevidim duvod, proc do toho motat ty generika. Kdyz to napisu takhle:

private void bla(Object a, Object b) {..}

private void bla(Object a, String b) {..}

private void bla(String a, Object b) {..}

pak uz je zjevne

void xxx() {bla(null, null);}

nekompilovatelne.

arnost Snad zas nechci tak  moks
a kdyz se tam prida jeste?

private static ‹T› String GuessWhat(Supplier‹T› a, Supplier‹T› b) {

return "Supplier/Supplier";

}
Nazaretsky Jsem do muziky celej blázen  protože jsem blázen
Nepozna, ze nahore ambigous, ale vyhodi uprostered ze never use locally. Dole je nejvic spefificka, tak proto.
Mormegil Už jste  přispěli?
Jestlipak uhodnete, co udělá tohle? :-)

public static void main(String args[]) {

System.out.println(GuessWhat(null, null));
}

private static ‹T› String GuessWhat(T a, T b) {
return "T/T";
}

private static ‹T› String GuessWhat(T a, Supplier‹T› b) {
return "T/Supplier";
}

 
Mormegil Už jste  přispěli?
Prej ve stávající verzi opraveno...
Nazgul Vtipnýs 
Našel jsem jakýsi soubor compiler.xml a v něm <bytecodeTargetLevel target="1.8" />. Změnil jsem to ručně na 11 a funguje to. Děkuji za správné nasměrování. Patrně jde o nějaký bug v IDEA
Nazgul Vtipnýs 

~$ ./gradlew --version ... ------------------------------------------------------------ Gradle 5.2.1 ------------------------------------------------------------ Build time: 2019-02-08 19:00:10 UTC Revision: f02764e074c32ee8851a4e1877dd1fea8ffb7183 Kotlin DSL: 1.1.3 Kotlin: 1.3.20 Groovy: 2.5.4 Ant: Apache Ant(TM) version 1.9.13 compiled on July 10 2018 JVM: 11.0.8 (Ubuntu 11.0.8+10-post-Ubuntu-0ubuntu118.04.1) OS: Linux 5.4.0-42-generic amd64

mpts Je rozumění nerozumění  také rozuměním?
Myslel jsem něco jako tohle String version = System.getProperty("java.version");

https://stackoverflow.com/questions/2591083/getting-java-version-at-runtime