Zaměstnavatelé a programovací jazyky

Labrat

Re:Zaměstnavatelé a programovací jazyky
« Odpověď #90 kdy: 27. 02. 2018, 19:41:06 »
Citace
Buď to půjde nějakým fíglem s TRAILING alignmentem, nebo možná (dost pravděpodobně) taky ne a bude potřeba použít jiný layout, třeba BorderLayout.

Ty fakt máš pocit, že tohle je problém? (v životě jsem swing neviděl)

Na to si potrebuješ naštudovať GroupLayout manager, čo sú to sequenčné a paralelné grupy a musíš praxou zistiť, ako to všetko v praxi uplatniť. (Naučiť sa pravidlá šachu vs hrať úspešne šach.) Je to triviálny príklad, ale bez dlhšieho štúdia nespravíš dobrý layout. A to som výrazne pomohol tým, že som tam dal GroupLayout, pretože korektný layout vo Swingu sa dá spraviť len s ním alebo s MigLayout manažérom. Toto všetko som zistil až po mnohých mesiacoch štúdia. Napríklad, ak by sa na to niekto spýtal na stackoverflow, veľmi často dostane nesprávnu odpoveď. Ktorá síce funguje, ale nie je portabilná.

Toto nehovorím preto, že by som sa chválil. Ja som dosť starý a zrelý na to, aby som sa potreboval nad niekým vyvyšovať. Ja som Javista ty si iba PHPčkár, ja som backend programátor, ty iba frontenďák apod. Je to na ilustráciu.

Kód: [Vybrat]
    private fun createLayout(vararg arg: JComponent) {

        val gl = GroupLayout(contentPane)
        gl.autoCreateGaps = true
        gl.autoCreateContainerGaps = true

        contentPane.layout = gl

        gl.autoCreateContainerGaps = true

        gl.setHorizontalGroup(gl.createSequentialGroup()
                .addGap(5, 250, Int.MAX_VALUE)
                .addPreferredGap(RELATED,
                        GroupLayout.DEFAULT_SIZE, Int.MAX_VALUE)
                .addComponent(arg[0])
                .addComponent(arg[1])
        )


        gl.setVerticalGroup(gl.createSequentialGroup()
                .addGap(5, 250, Int.MAX_VALUE)
                .addPreferredGap(RELATED,
                        GroupLayout.DEFAULT_SIZE, Int.MAX_VALUE)
                .addGroup(gl.createParallelGroup()
                        .addComponent(arg[0])
                        .addComponent(arg[1]))
        )

        gl.linkSize(SwingConstants.HORIZONTAL, arg[0], arg[1]);

        pack()
    }

Pre zaujímavosť, buttony do pravého dolného rohu sa dajú nakódiť takto.

Ak by som chcel zvoliť niečo zložitejšie, tak by som navrhol spraviť nasledovný layout:



To je board pre monopoly. Vnútorný priestor sa mení, vonkajšie tvary sú fixné. Dosť som sa s tým potrápil.
To je v Javě nejjednodušší řešení? Před +-30 lety to bývalo v Nextstepu od dva řády jednodušší.


gll

  • ****
  • 429
    • Zobrazit profil
    • E-mail
Re:Zaměstnavatelé a programovací jazyky
« Odpověď #91 kdy: 27. 02. 2018, 19:43:41 »
To je board pre monopoly. Vnútorný priestor sa mení, vonkajšie tvary sú fixné. Dosť som sa s tým potrápil.

Kdybyste použil webové technologie, tak by si tu hru možná někdo i zahrál. Ale nemohl byste machrovat, že znáte exotickou knihovnu.

Jano7

Re:Zaměstnavatelé a programovací jazyky
« Odpověď #92 kdy: 27. 02. 2018, 19:52:53 »
Citace

To je v Javě nejjednodušší řešení? Před +-30 lety to bývalo v Nextstepu od dva řády jednodušší.

No ide to aj jednoduchšie, pomocou MigLayout manažéra:

Kód: [Vybrat]
    private void initUI() {

        setLayout(new MigLayout("", "[grow][]", "[grow][]"));

        JButton okButton = new JButton("OK");
        JButton closeButton = new JButton("Close");

        add(okButton, "cell 0 1, right, sgx");
        add(closeButton, "cell 1 1, sgx");
       
        setTitle("Buttons");
        setSize(280, 180);
        setLocationRelativeTo(null);       
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

Je to externá knižnica. Korektný layout sa dá spraviť len pomocou týchto dvoch.

Otázne je, či ten NextStep spraví UI, ktoré je portabilné, t.j. UI bude rovnako dobre vyzerať na rôznych rozlíšeniach obrazoviek. Toto je kameň úrazu väčšiny layout manažérov GUI knižníc, vrátate Qt, GTK, Winforms, wxWidgets, či WPF.

Labrat

Re:Zaměstnavatelé a programovací jazyky
« Odpověď #93 kdy: 27. 02. 2018, 20:12:01 »
Citace

To je v Javě nejjednodušší řešení? Před +-30 lety to bývalo v Nextstepu od dva řády jednodušší.

No ide to aj jednoduchšie, pomocou MigLayout manažéra:

Kód: [Vybrat]
    private void initUI() {

        setLayout(new MigLayout("", "[grow][]", "[grow][]"));

        JButton okButton = new JButton("OK");
        JButton closeButton = new JButton("Close");

        add(okButton, "cell 0 1, right, sgx");
        add(closeButton, "cell 1 1, sgx");
       
        setTitle("Buttons");
        setSize(280, 180);
        setLocationRelativeTo(null);       
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

Je to externá knižnica. Korektný layout sa dá spraviť len pomocou týchto dvoch.

Otázne je, či ten NextStep spraví UI, ktoré je portabilné, t.j. UI bude rovnako dobre vyzerať na rôznych rozlíšeniach obrazoviek. Toto je kameň úrazu väčšiny layout manažérov GUI knižníc, vrátate Qt, GTK, Winforms, wxWidgets, či WPF.
Nextstep byl pravděpodobně prvním GUI prostředím s naprosto obecnými layouty, které šly navíc naklikat bez napsání řádky kódu. Java se ostatně v oblasti (nejen) GUI inspirovala právě Nextstepem díky tomu, že Sun koupil společnost vyvíjející pro Nextstep (tuším že se jmenovala nějak jako Lighthouse), jejíž vývojáři přenesli na tehdejší dobu velmi moderní myšlenky a postupy právě do (základní knihovny) Javy.

Lopaťuk

Re:Zaměstnavatelé a programovací jazyky
« Odpověď #94 kdy: 27. 02. 2018, 20:12:09 »
Zatiaľ dominuje Java, ale Javisti bežne využívajú aj iné jazyky.

To je hodně odvážné tvrzení. Já znám několik Java programátorů a to jsou mnohem větší konzervy než já, programující v C. Ti jsou tak tvrdě zaseklí na Javě (jazyku), že sotva ví o existencí jiných jazyků pro JVM, maximálně zaregistrovali Kotlin, jen protože kolem něj byl dost humbuk, když se stal ofiko jazykem pro droida.


balki

Re:Zaměstnavatelé a programovací jazyky
« Odpověď #95 kdy: 27. 02. 2018, 20:40:15 »
Java programátori môžu využívať viaceré jazyky: Java, Kotlin, Scala, Groovy, či Clojure.
tj. java programátor je programátor, který programuje pro JVM? to by byla hodně bizarní myšlenka

Zatiaľ dominuje Java, ale Javisti bežne využívajú aj iné jazyky. Ale podľa mojej mienky to tam smeruje.
Všetko sa dramaticky mení, aj také veci, ktoré boli uhľovými kameňmi vývoja, sa zrazu menia. Trebárs
Servlety, jedna z najdôležitejších sfér v Jave. A prišiel Play framework, ktorý je postavený mimo servlety
a tiež si zvolil Scalu ako dominantný jazyk.

Je veľmi pravdepodobné, že Kotlin za pár rokov nahradí Javu a z Javy v podstate zostane názov pre tento
rozsiahly ekosystém.

To je super, ze chvalite ezotericky jazyk, ktory uz je na ustupe (scala). Lebo aj tak sa vyvyja uplne inak. Vacsinou v browseri react a na serveri microservices pomocou spring boot.   Spring boot ide do kopy aj s kotlinom, takze si aj startupisti na 2 roky uziju, nez kotlin zakape, a nahradi ho dalsie frikulinstvo.

Labrat

Re:Zaměstnavatelé a programovací jazyky
« Odpověď #96 kdy: 27. 02. 2018, 20:45:55 »
Java programátori môžu využívať viaceré jazyky: Java, Kotlin, Scala, Groovy, či Clojure.
tj. java programátor je programátor, který programuje pro JVM? to by byla hodně bizarní myšlenka

Zatiaľ dominuje Java, ale Javisti bežne využívajú aj iné jazyky. Ale podľa mojej mienky to tam smeruje.
Všetko sa dramaticky mení, aj také veci, ktoré boli uhľovými kameňmi vývoja, sa zrazu menia. Trebárs
Servlety, jedna z najdôležitejších sfér v Jave. A prišiel Play framework, ktorý je postavený mimo servlety
a tiež si zvolil Scalu ako dominantný jazyk.

Je veľmi pravdepodobné, že Kotlin za pár rokov nahradí Javu a z Javy v podstate zostane názov pre tento
rozsiahly ekosystém.

To je super, ze chvalite ezotericky jazyk, ktory uz je na ustupe (scala). Lebo aj tak sa vyvyja uplne inak. Vacsinou v browseri react a na serveri microservices pomocou spring boot.   Spring boot ide do kopy aj s kotlinom, takze si aj startupisti na 2 roky uziju, nez kotlin zakape, a nahradi ho dalsie frikulinstvo.
Když už si umíš napsat v Javě úplně všechno, napiš si spell checker ;) Pochybuju, že v práci vyješ  :P

andy

Re:Zaměstnavatelé a programovací jazyky
« Odpověď #97 kdy: 27. 02. 2018, 20:47:43 »
To je uhol pohľadu, resp. ako si zadefinujeme pojmy. Pretože z môjho uhla pohľadu, je framework jednoducho súbor knižníc. Napríklad Spring Boot projekt si vytvorím tak, že zadefinujem potrebné závislosti a Maven mi stiahne potrebné knižnice (u nás JAR súbory). Framework obsahuje množstvo kódu, ktorý sa v projektoch opakuje. Kto koho volá; na to v Jave máme pojem dependency injection, ale primárne nerozlišujeme podľa toho pojmy framework a knižnica. Možno to tak máte zadefinované v Haskelli.
No, já jsem reagoval na to, jak někdo někdo prohlásil, že preferuje knihovny proti frameworkům. Samozřejmě, je to otázka, jak se to nadefinuje, ale když někdo něco takového prohlásí, tak tím typicky myslí to, že se se vyrobí kód toho typu, co jsem ukázal (používá knihovny) vs. to, že napíšu "new project" a vyrobí se mi projekt o 20 souborech s předdefinovaným kódem, který následně modifikuju. Někdo (ty?) na to reagoval ve smyslu, že používat knihovny dává smysl (to samozřejmě ano), ale princip konfliktu "library vs. framework" je to, co jsem psal.

Spring je v podstatě snaha dostat se z typického frameworku zpátky na úroveň knihovny, ale třeba ty anotace mají  pořád  nádech frameworku.

Citace
To som nepovedal. Bolo to na ilustráciu toho, že predstava, že si zoberieš knižnicu, pozrieš si API a začneš ju
používať je nereálna. Swing bol len príklad zložitejšej knižnice. Bez dlhodobého štúdia princípov UI a Swingu to nespraví začiatočník správne. Ako spravíš Tetris hru vo Swingu? Veď je to jednoduché, zvolíš si správne triedy zavoláš  tie správne metódy...
Jo, přesně tak. V čem je problém? Principy UI jsou všude stejné, liší se jenom implementace. Upřímně řečeno, poměrně dost knihoven, které používám (a dokonce i napíšu) poté promptně zapomenu. A když se vrátím k rozdílu mezi frameworkem a knihovnou, tak největší průšvih jsou právě věci typu anotace (v Haskellu je na podobně blbé úrovni makrojazyk), protože ty makra člověk musí "znát", zatímco to ostatní se dá odvodit.

Citace
Mal by to byť Haskellista. Ale odbáčaš od témy. Pointa toho, čo som povedal je, že mne sa zdá, že ty zužuješ (neviem prečo) všetko na Javu ako jazyk. Pritom Java je ekosystém s viacerými programovacími jazykmi. Tvrdíš niečo o Javistoch, hovoríš, že Java je taká a taká, pritom Java programátori môžu využívať viaceré jazyky: Java, Kotlin, Scala, Groovy, či Clojure.
Celá tahle diskuze začal tím, že OP se divil, že nemůže být brán jako C# senior programátor, když má velké zkušenosti z Javy. Na což tady někdo odpověděl, že by mohl klidně být senior programátorem v haskellu - přičemž na to jsem reagoval, že tímto směrem ne, ale opačně klidně. Dále jsme se dostali k tomu, že na to, aby někdo mohl být považován za seniora potřebuje poměrně hodně zkušeností, z nichž jen malá část je vázána na konkrétní jazyk a řešený problém.

A to "opačně klidně" je postavené na tom, že Haskell je prostě z hlediska možností jazyka někde úplně jinde než Java (i když v posledních verzích do Javy některé věci konečně začínají implementovat). Dobrý programátor je schopen programovat v jakémkoliv jazyce, akorát ten Haskell fakt zabere docela dlouho. A nikoliv proto, že by to byla spousta triviálních věcí (jako v Javě), ale protože to je fakt složité. (rozdíl ve stylu "naučit se telefonní seznam" vs. "dokázat fermatovu větu" (teda to je zase úplně jiný level, ale jen pro ilustraci)).

Citace
Na to si potrebuješ naštudovať GroupLayout manager, čo sú to sequenčné a paralelné grupy a musíš praxou zistiť, ako to všetko v praxi uplatniť. (Naučiť sa pravidlá šachu vs hrať úspešne šach.) Je to triviálny príklad, ale bez dlhšieho štúdia nespravíš dobrý layout. A to som výrazne pomohol tým, že som tam dal GroupLayout, pretože korektný layout vo Swingu sa dá spraviť len s ním alebo s MigLayout manažérom. Toto všetko som zistil až po mnohých mesiacoch štúdia. Napríklad, ak by sa na to niekto spýtal na stackoverflow, veľmi často dostane nesprávnu odpoveď. Ktorá síce funguje, ale nie je portabilná.
Já tě vůbec nechápu. Dal jsi otázku týkající se 2 knoflíků dole. Odpověděl jsem, že bych použil BorderLayout, knoflíky dát do toho PAGE_END. Zadání splněno.
To hraní s GroupLayoutem je normální řešní problému. Děláš z toho strašnou vědu. Taky znám spoustu temných zákoutí všeho možného SW, ale to prostě není podstatou toho být senior programátor. To je naopak být schopen rychle najít efektivní řešení a když na takovéhle problémy narazíš, tak je prostě vyřešit.

balki

Re:Zaměstnavatelé a programovací jazyky
« Odpověď #98 kdy: 27. 02. 2018, 20:56:50 »
....

Vy ste ako duro mokry, ked spovedal Zicha a Laufera. Ibaze ten mokry si robil zadek :)  https://www.youtube.com/watch?v=km4cF_dGAZg

Labrat

Re:Zaměstnavatelé a programovací jazyky
« Odpověď #99 kdy: 27. 02. 2018, 20:57:02 »
Haskell fakt zabere docela dlouho. A nikoliv proto, že by to byla spousta triviálních věcí (jako v Javě), ale protože to je fakt složité. (rozdíl ve stylu "naučit se telefonní seznam" vs. "dokázat fermatovu větu"
Doufám, že tu nepadne ono neblahé M-slovo, nebezpečně to jím tu začíná zavánět...  ???

v

Re:Zaměstnavatelé a programovací jazyky
« Odpověď #100 kdy: 27. 02. 2018, 21:02:27 »
fakt složité
přeháníte

Labrat

Re:Zaměstnavatelé a programovací jazyky
« Odpověď #101 kdy: 27. 02. 2018, 21:06:52 »
fakt složité
přeháníte
"Složité" je relativní pojem, ale pomůže analogie. Java vs. Haskell je něco jako Pythagorova věta vs. integrace per partes.

balki

Re:Zaměstnavatelé a programovací jazyky
« Odpověď #102 kdy: 27. 02. 2018, 21:08:55 »
fakt složité
přeháníte
"Složité" je relativní pojem, ale pomůže analogie. Java vs. Haskell je něco jako Pythagorova věta vs. integrace per partes.

Pricom integracia per partes je len tiez pouzitie vzorceka pre cvicene opice, tak isto ako pythagorova veta.

Labrat

Re:Zaměstnavatelé a programovací jazyky
« Odpověď #103 kdy: 27. 02. 2018, 21:15:15 »
fakt složité
přeháníte
"Složité" je relativní pojem, ale pomůže analogie. Java vs. Haskell je něco jako Pythagorova věta vs. integrace per partes.
Pricom integracia per partes je len tiez pouzitie vzorceka pre cvicene opice, tak isto ako pythagorova veta.
Chtěl bych tě vidět, jak si odvodíš Pythagorovu větu. Většina lidí to nedá. U per partes to je ještě o několik řádů složitější. Ale chápu, že cvičená opice, která "vyvýja" (abych citoval nejpovolanějšího, tedy tebe ;)) v tom asi rozdíl nevidí.

Labrat

Re:Zaměstnavatelé a programovací jazyky
« Odpověď #104 kdy: 27. 02. 2018, 21:17:28 »
To je super, ze chvalite ezotericky jazyk, ktory uz je na ustupe (scala).
Všechno, čemu nerozumíš nebo nemáš intelektuálně na to se naučit, je "esoterické"? Chápeš vůbec, co to slovo znamená? Asi ne...