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 - Standa Blábol

Stran: 1 2 [3] 4 5 ... 11
31
Distribuce / Proxy přístup na internetové repozitáře
« kdy: 03. 12. 2020, 19:18:30 »
Mam u zakaznika nekolik Centos8 serveru bez pristupu k internetu a potreboval bych na nich mit pristup na internetove repozitare, klasika Centos, EPEL, Postgres apod.

Na jednom ze stroju muzu dostat internet, potrebuju nejake reseni, aby na repa mohly i ostatni stroje.

Zkousel jsem nasadit squid v noncaching modu, na http se curlem proxovane dostanu, https aniprt.

Resil jste nekdo podobny problem?
Jak rozjet https na sqid explicit https proxy, popr jestli neexistuje nejake uplne jine reseni, jak se dostat na repa.

32
Vývoj / Re:Rekurze v Javě (i jinde)
« kdy: 19. 11. 2020, 09:27:54 »
1. Když píšeš že "to ale funguje v podstatě přesně tak jak bych chtěl. ", tak se mi zdá, že už máš nějaký funkční kód. V takovém případě je asi lepší postnout sem ten, ať neřešíme něco co je třeba jinak.

2. Když už máš funkční kód, doporučuju ti prokrokovat si ho v debuggeru, to ti v tom udělá jasno.

Jinak v postnutém kódu se skutečně vždy spustí buď pouze doSomething(x,y); metoda1(x+1,y), nebo vůbec nic.

Nesmysl, na stejne urovni rekurze se spusti se vsechny metody, nebo zadna.

Presneji, spusti se vsechny metody, ale ty dalsi neudelaji nic, protoze jejich vykonny kod je uvnitr podminky

Kód: [Vybrat]
package testy;

public class Recur {

private boolean podminka = true;

public static void main(String[] args) {
new Recur().go();
}

private void go() {
metoda1(0, 0);
}

public void metoda1(int x, int y) {
System.out.println("metoda1(" + x + "," + y + ")");
if (podminka) {
doSomething(x, y);
metoda1(x + 1, y);
metoda1(x - 1, y);
metoda1(x, y + 1);
metoda1(x, y - 1);
}
}

private void doSomething(int x, int y) {
System.out.println("doSomething(" + x + "," + y + ")");
this.podminka = false;
}

}

Vysledej je podle ocekavani


Kód: [Vybrat]
metoda1(0,0)
doSomething(0,0)
metoda1(1,0)
metoda1(-1,0)
metoda1(0,1)
metoda1(0,-1)



33
Vývoj / Re:Rekurze v Javě (i jinde)
« kdy: 19. 11. 2020, 09:17:07 »
1. Když píšeš že "to ale funguje v podstatě přesně tak jak bych chtěl. ", tak se mi zdá, že už máš nějaký funkční kód. V takovém případě je asi lepší postnout sem ten, ať neřešíme něco co je třeba jinak.

2. Když už máš funkční kód, doporučuju ti prokrokovat si ho v debuggeru, to ti v tom udělá jasno.

Jinak v postnutém kódu se skutečně vždy spustí buď pouze doSomething(x,y); metoda1(x+1,y), nebo vůbec nic.

Nesmysl, na stejne urovni rekurze se spusti se vsechny metody, nebo zadna.

34
Software / Re:Nástroj pro psaní poznámek pro programátora
« kdy: 31. 10. 2020, 22:50:31 »
Pouzivam GUI nadstavbu Gitu "Gitea" a poznamky k projektu cpu primo tam v MD formatu. Edituje se to normalne MD editorem, treba v eclipse
Neztrati se to, proctou si i jini, je to zalohovane a po vymene NTB nactu s prvnim pullem.

35

Jedna vynimka moze generovat dalsiu, a ta dalsia potom dalsiu. Z toho je potom poriadne kosaty kod,
ktory ma daleko k dobrej citatelnosti. Ta poznamka "We don't trust the driver" pochadza zo Springu;
to pridava kodu dalsiu uroven komplexnosti a zamotanosti. Je z toho potom uplny binec.  Mne Java
naopak vynimky poriadne znechutila.


Priklad s JDBC driverem je presne ten pripad stareho marasu v Jave, ktery nikdo soudny nepouziva.
Dneska pouzivat primo JDBC a a manualne mapovat hodnoty z resultsetu do beanu je prace pro masochisty.
Dneska proste reknu Springovi at mi pribali JPA, tam ale volam native queries (JSQL neumi vyuzit moznosti DB a casto to vede k divokym dotazum), Hibernate vespod mi rovnou vraci Listy naplnenejch beanu, neresim zadne konektovani ci spravu DB poolu. Prakticky jedine, co si musim hlidat, je korektni @Id v JPA beanu.

Takze nekde uvnitr Springu je schovana tvoje konstrukce s vyjimkama na vyjimky, lec who cares?
Zkratka mam v package "persitence" interface a tridu, co provolava moje nativni SQL queries a vraci List<Bean> a normalne vyhazuje SQLException.

36
Funkce typicky vrací dvojici hodnot - výsledek a chybu (result, err). Takto jsou napsané interní funkce a většinou se tak píšou i všechny ostatní. Obojí člověk musí do nějaké proměnné přiřadit  (result, err := func() ). A když už  něco do proměnné přiřadí, musí ji v kódu použít (jinak chyba, hlídá to kompilátor). Existuje ale placeholder "_" kdy můžu explicitně říct, že chybu ignoruju (result, _  := func() ). Takto explicitně kompilátoru řeknu, že chybový výstup funkce mě nezajímá a nechci ho ošetřit vůbec. Další možnost je  chybu ošetřít v kódu v místě vzniku nebo "poslat dál" v návratovém kódu funkce. Vždyť je to v jádru podobný mechanismus jako checked exceptions v javě (akorát s primitivnější konstrukcí).

Reseni GO je jenom znpouzectnost a vynucovani pouziti Err je rovnak na ohybak.
V Jave taky muzes vracet errory primo z metody (tedy ne primo dve hodnoty ale bean s dvema atributy valu,err)
A mas to samy co v GO. Nikdo to nepouziva protoze je to k nicemu.

Vyjimky oddeluji business kod od error handlingu, kdyz potrebuju resit chybu inplace, vyresim ji inplace.
Nechat probublavat exception neni zadna lenost ale obri vyhoda.
Zrovna ted jsem psal jeden loader, ktery dostal na vstupu obri JSON s e seznamem itemu s atributy, ten v cyklu zoracovaval a behem kazdeho cyklu provadel obri hromadu checku, tahani tad z externiho API a cteni  z DB.
A LIBOVOLNA chyba v tom slozitem procezu znamenala proste ukonceni procesu a zalogovani log.error("Item XXX loading failed: " + e.getMessage()
V mym kodu nebyl ZADNY error handling, krome finalniho catch bloku v ramci for cyklu pro vsechny itemy.
Tohle samy v GO nebetycny oser s preposilanim chyby manulane vejs a vejs a s totalne zamaglajzovanym a necitelym kodem

V jave je oddelen business kod od error handlingu a to je velice dobre.
Kdyz chci resit business kod, rezim try blok, kdyz resim error handling, resim catch blok. Jednoduche, ucelne.

Java example:

Kód: [Vybrat]
try {
  a1 = action1();
  a2 = action2();
  a3 = action3();
  a4 = action4();
  a5 = action5();
} catch (Exception e) {
  log.error("Je to rozbity")
  System.exist();
}

To samy v GO je necitelny maglajz a kdyz se k tomu pridaji deferred, je bordel dokonaly:

Kód: [Vybrat]
a1,err := action1()
if (err != nil) {
 log.error("Je to rozbity");
 exit();
}
a2,err := action2()
if (err != nil) {
 log.error("Je to rozbity");
 exit();
}
a3,err := action3()
if (err != nil) {
 log.error("Je to rozbity");
 exit();
}
a4,err := action4()
if (err != nil) {
 log.error("Je to rozbity");
 exit();
}
a5,err := action5()
if (err != nil) {
 log.error("Je to rozbity");
 exit();
}


 

37
Kdo vi... ale ja bych se dneska treba nehrnul ani do gwt. Ani jsp a jsf bych dneska nevolil jako prvni.

Přesně tak. V GWT jsem sice nedělal, nicméně JSP(F) je hrozný sh*t. Pokud už bych chtěl dělat webový FE v Javě, tak jedině Wicket.

No to je presne jak jsem psal nahore, v jave je za leta hromada bordelu a je potreba vedet, jak to pouzivat.

Puvodni JSP se scriptlety je peklo.
Udelat ale web postaveny ja bootstrap+jQuery, kde v Jave servlet pripravi data, strci je jako Java objekty do response, v e vlastni JSP strance jenom predam tyto data jQuery a jinym javascript widgetum - elegantni a ciste reseni.
Nedavno jsem delal jednoduchy CRUD postaveny kolem https://datatables.net/

Puvodni JSF arcipeklo, JSF2 peklo. Kdyz ale to JSF nekdo umravni ve stylu https://www.primefaces.org/showcase/ , da se s tim velice pekne pracovat. Backend na Java SpringBoot. A porad se jedna o klasickou servlet/JSP aplikaci se session na serveru, coz ma hromadu vyhod, treba citlive data jsou neviditelne pro browser.

No a dneska bych se pro nove veci snazil udelat v Angularu, Java jenom na REST API backend

38
...

 Vzdycky me berou mory, kdyz vidim idioty nadsene z Kotlin syntaktickeho cukru (ne ze by byl Kotlin spatny, ma par peknych ficur), ze je java ukecana. OMG, javi ukecanost za me napise IDE vcetne generovani getteru a toString(), boilerplate zafolduje a vysledek je krasne lidsky citelny kod.

...

Kdyz ctes cizi kod tak taky nechas gettery a toString zafoldovany?
Kde mas jistotu, ze nekdo jiny se nerozhodl, ze treba ten getter bude sahat do databaze?

IDE za me kod sice napise, ale udrzovat uz ho musi clovek. A to napsani je celkem levny a dela se to jednou. Problem je to cteni a upravy. To se dela mockrat a IDE to za me neudela.

Ne, osobne to zafoldovany nemam, gettery jsou zkratka odsunuty dole.
A pokud ctu cizi kod, staci proscrollovat blok getteru, oko jenom proskenuje behem sekundy tvar toho bloku, hned jde poznat, ze to jsou normalni gettery a ze to neni zadna dobytcina s logikou v getterech. Naopak, pokud je tvar jiny nez ocekavany, okamzita reakce "ou jeee", mame co do cineni s prasaty.
A pokud ma nekdo s gettery trauma, nalinkuje si z mavenu Lombok. Tim samozrejme ale prije o vyhody explicitniho getteru jako je moznost strceni debug hooku do nej.

Ukecanost javy je naopak velka vyhoda, kod je samopopisny, v jave v IDE se rozhodne necte cely text. Oko jenom skace po barvickach, bold, italic syntax highlightingu a po tvaru bloku kodu -  nacteni informace je velice efektivni. Ctenar se pouze sosustredi na pro nej zajimavou cast. Kdyz reim business logiku, vsecko je v try bloku, kdyz resim error handling, vsecko je v catch bloku, ne zmatlany maglajz na jedny hromade jak v Go.

Problem je, ze java se da efektivne pouzivat jedine s podporou IDE a jejiho ekosystemu typu maven. Je tam o dost vetsi prah pro nauceni.
A tutorialy to nijak nezduraznuji.

Chapu, ze kdyz kluk po skole dostane zadani, udelej to a to, jak chces, vcera bylo pozde, mas na to 2 dny, tak zakonite skonci u nejakeho quick and dirty copypaste ze StackOverflow, kde nekdo ukazuje popis parcialniho reseni a okoli resi jenom nejnutnejsim praseckym zpusobem. A spousta lidi se tohoto marasu nikdy nevymani, pak vznikaj veci jako pristu do databaze v getteru.

39
GO 1.x je nepouzitelny zprasek, do 2.0 uz se aspon snazi pridat generika. Je to domenove soecificky jazyk googlu pro stateless kontejnery s velice snadnou paralelizaci pres kanaly a korutiny, jinak to nic neprinasi. Naopak to zpatky vraci davno vyreseny  bordel z osmdesatych let jako je error handling tupym ifem nad retvaly.
Vsade je spousta verozvestu, jak je GO zachrana lictva, realita je prostsi. GO je tak tupej jazyk, ze se to nauci gibbon za odpoledne a pak zacne hrde hejtovat javu, ktere nerozumi.

Nejsem Go fanatik, rád dělám v Rustu, ale ten jazyk má své využití. Jazyk má slušnou konkurenci (ve smyslu ne ekonomickém, ale počítačovém) a standardní knihovnu. Syntakticky ten jazyk není nejlepší, jazykové konstrukce if err != nil jsou děsivé věci ale má specifické využití (ten jazyk).

Souhlas, Go ma pekne niche pouziti pro stateless kubernetes containery. Nezere moc resources, start binarky srovnatelny s C, oproti C toho nabizi vic. Korutiny pekne navrzene a snadno uchopitelne.
Pro container s jednoduchou mikroservicou skvele. Na cokoliv jinyho zadna slava

40
Z pohledu uceni je vicemene jedno, jaky jazyk pouzijes, budes to stejne v budoucnu menit.

Osobne doporucuju javu,C# pro pochopeni mainstream OOP, Python na skriptovani, Rust pro lowlevel veci. Na webu Javascript, posledni verze uz nejsou uplne zoufalstvi.
Tohle jsou jazyky s potencialem, zbytek je na niche oblasti nebo vicemene  k nicemu.
Stare C je nyni pouzitelne jenom pro mikrokontrolery.

GO 1.x je nepouzitelny zprasek, do 2.0 uz se aspon snazi pridat generika. Je to domenove soecificky jazyk googlu pro stateless kontejnery s velice snadnou paralelizaci pres kanaly a korutiny, jinak to nic neprinasi. Naopak to zpatky vraci davno vyreseny  bordel z osmdesatych let jako je error handling tupym ifem nad retvaly.
Vsade je spousta verozvestu, jak je GO zachrana lictva, realita je prostsi. GO je tak tupej jazyk, ze se to nauci gibbon za odpoledne a pak zacne hrde hejtovat javu, ktere nerozumi.

Jazyk je stejne jenom mala cast potrebne problematiky. Dulezite je taky nastudovat ekosystem jako je maven,pip,nuget, a hlavne IDE. Vzdycky me berou mory, kdyz vidim idioty nadsene z Kotlin syntaktickeho cukru (ne ze by byl Kotlin spatny, ma par peknych ficur), ze je java ukecana. OMG, javi ukecanost za me napise IDE vcetne generovani getteru a toString(), boilerplate zafolduje a vysledek je krasne lidsky citelny kod.
Sveho casu byli propagatori "usporneho zapisu" perl verozvesti. Kod vypadal jak chyba na lince telexu, prase se v tom nevyznalo a kdo napsal kratsi zapis ve vimu byl king.
Ti uz ale vymreli.

Akorat java je nebezpecna v tom, ze za leta jsou v ni nanosy bordelu, ktery uz nikdo nepouziva a je tam z compatibility duvodu. Javu je nutno ucit se z tutorialu minimalne pro verzi 8, starsi ucebni materialy budou zavadejici.

41
Studium a uplatnění / Re:Start Java programování
« kdy: 15. 10. 2020, 11:43:53 »
Me osobne tehdy pred davnymi lety hodne dalo udelat si zakladni certifikaci SCJP (Sun certified jawa programmer), i ted IMHO existuje oracle obdoba.

Byly k tomu slusne materialy na pripravu a kdo timhle prolezl, mel o jawe slusne povedomi

42
Jaký je názor na tuhle problematiku místních expertů i "expertů"?
Úplně se mi nechce učit TeX nebo LaTeX, ale konec světa by to nebyl. Na ně má ČVUT šablony, o kterých jsem slyšel hezké věci.
Má cenu se obtěžovat s LibreOffice, případně jinými wysiwyg editory na bakalářku? Spolužáci i učitelé se tváří, že tex a MS Word jsou jediné dvě možnosti.

Svoji diplomku na FEL CVUT jsem psal v LyXu (https://www.lyx.org/), coz je kvazi WYSIWYG editor s TeX vystupem.
Normalne se v tom pise jako v MS Word, vysledne to vygeneruje LaTeX a z toho klasicky luxusni TeX vystup.

Diplomku jsme psal pred 20 lety a sam jsem prekvapeny. ze se LyX stale vyviji.

43
Hardware / Re:Macbook na prácu - stále je to problém?
« kdy: 08. 09. 2020, 20:18:12 »
proc chce nekdo na praci macbook, pokud mu nejde o programovani na apple platforme?!?!
ja bych si vzdycky vybral radsi vykonejsi normalni notas nez apple, nota bene na programovani a kompilaci.

PROC????

Protože je ten systém víceméně unixový a funguje. Což vám píši jako vývojář na Linuxu. Výkon už dávno moc zajímavý není, na to stačí (tedy alespoň pro linuxové prostředí) skoro cokoliv za patnáct tisíc pokud dá člověk pozor, co je uvnitř za CPU a RAM si doplní do 16 GB.

Jako chapu, ze kazdy to ma jinak. Presto: dase rict, ze v podstate neni rozumne kazdodenne vyvijet na necem co uz z definice je kompromis (notebook na vyvoj je kompromis pohodli mobility a rychlosti). Low-end fakt ne.

Stroj na vyvoj nemusi stat raketu. Ale priority jsou, aby kompilace/sestaveni netrvalo vecnost a dobre se v tom prostredi psalo (ergonomie displeje a klavesnice). Svizny IDE - aby hinty a (napr) clangd serviroval vysledky rychle.  Aby se system nezakuckal ani pri par spustenych testovacich VMkach, spolecne s s tim java IDEckem a nejakym browserem, co dneska klidne sezere z RAM mnoho GB.

Pokud muzu pridat muj use case:
Ja na notebooku typicky nevyvijim. Delam v CLionu a PyCharmu a proste Delli notas s i7 a 16GB + SSD ztraci dech.
Jo, da se to, ale jen jako nouzovka na cesty. Jenze intenzivni prace dava notasu zabrat, hreje se to a odchazi baterka.

Na seriozni vyvoj mam PC - Ryzen7 a 32GB RAM, ktery jsou v podstate akorat a 32" monitor. Linux a KDE. Projekt na kterym pracuju se sestavi na Dellu za 3 minuty, na PC je to pod 20 vterin. Kdyz neco ladim a intenzivne predelavam, je to strasne znat. PC stalo do 25k.

Kdybych mel mit pouze jeden system na vyvoj, urcite to bude notebook co parametry spis pripomina PC a ne plecka za 15 tisic co se za rok roztece.

-K-

Pouzivam NTB Lenovo P50 se 64GB RAM, na tom spoustim tak 2-3 hyper-v stroje, Pycharm a STS (eclipse)
A neskube se naprosto nic, zrovna pycharm neni ninak extremne narocny, ono v pythonu ani zazraky delat nejde.

Rano to cele zapichnu do docking station, pripoji se ethernet, externi monitory a muzu vysivat.
Menit stroje by pro me byl opruz. Stolni PC jsem mel naposledy pred 18 lety

44
Hardware / Re:Macbook na prácu - stále je to problém?
« kdy: 07. 09. 2020, 16:22:54 »
Doporucuju slusny NTB s W10 a na tom zprovoznit Hyper-V a WSL2.

Wokna znamenaji nejlepsi podporu aplikaci, vse systemove na Linuxu.
Ostatne i wokenni HW treba od Lenovo, Dellu, vychazi lip, nez Apple

45
Software / Re:minilinux na Win 10
« kdy: 24. 08. 2020, 17:50:20 »
Ahoj, po asi 10r budem musiet prejst na windows a hladam sposob ako si nechat bezat mini linux z ktoreho sa budem pohodlne pripajat na ssh, pisat si one-linery v basi a awk a nebude to zrat 1/2 systemovych prostriedkov -> tzn nie klasicka virtualizacia aka Virtualbox a pod. A prosim nie Cygwin. Nejake napady?

Diky moc.

Doporucuju WSL1, pokud nepostacu, pak WSL2 - ale to uz spousti virtualizaci na host OS a je to vetsi zasah do systemu.
A stahnout si free verzi MobaXTerm, odtud se do WSL pripojovat.

Osobne mam ve WSL1 Ubuntu18 je to nejakych 600MB na disku. Ubuntu 20 funguje az pod WSL2

Stran: 1 2 [3] 4 5 ... 11