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 - Ondrej Nemecek

Stran: 1 ... 55 56 [57] 58 59 ... 90
841
/dev/null / Re:Proč ateisté nepoužívají logiku ?
« kdy: 28. 07. 2018, 19:43:51 »
Pozeram, ze mnohi z vas tu maju skresleny pohlad na pojem "viera". Ta ma byt chapana vo vyzname " by verny, zachovavat" a nie vo vyzname "byt presvedceny".

To jsou ale dvě slova víra a věrnost.

842
Vývoj / Re:Alternativa k Hibernate
« kdy: 28. 07. 2018, 18:21:51 »
To si nemyslím, že je problém, mám pro to úplně jasné řešení.

Kolikrát potřebujete mít 1:1 vztah Objekt-Tabulka? V naprosto zanedbatelném počtu přípádů. Vždy používáte složené dotazy, které jsou v podstatě kočkopes. Výstupem těch dotazů je ResultSet a k němu odpovídající ResultSetModel. Ten model nepředstavuje žádnou tabulku, představuje výstup z SQL dotazu, k němu je vztažen, a obsahuje mix informací z různých tabulek.

Ještě jednou, když máte trochu složitější databázi, tak vaše Objekty jsou SQL-orientované a né Tabulkově-orientované. Samostatné tabulky vás až tak nezajímají.

Tady mě právě sere ten Hibernate, já nikdy nejsem zvědavý na načítání celých tabulek, chci mít raději SQL-orientovaný ResultSetModel. Navíc tím dostanou krásnou svobodu čistého SQL.

Takže u Selectů je to jansé, tam mi přijde že jasně vede přístup přes JDBC.


Co se týče insertování nových záznamů, taaak....... tam opět moc nevidím problém, proč si myslíš, že se to zesložití? Vždyť ty nepotřebuješ komponovat Model třídy jako u Hibernate, to přece vůbec není nutné. Vždy sám v kódu víš, jestli k nově vkládanému řádku v tabulce A chceš přidat FID z již existujícího řádku v B, nebo chceš přidat i nový řádek do B a jeho id použít v A.

Taky co se týče updatu, tak tam taky snad nikdy nepořebuješ super-univerzální možnost updatovat kdykoliv cokoliv tak jak to umí Hibernate, v praxi vždycky potřebuješ z hlediska business logiky updatovat jen pár sloupečků v tabulce, na to si case-to-case uděláš nevou metodu do Daočka.

Problém je, že ty chceš, asi ze zvyku, nutně dělat ORM mapování, vč. reálných vazeb mezi Modely, tak jak to má hibernate. A TO JE PRÁVĚ to, co způsobuje ty problémy, u kterých skončíš tak, že hibernate použiješ rovnou. Ale proč to kompletní ORM chceš dělat, co ti to přinese? To přece vůbec není nutné, neumím si představit nějakou podstatnou výhodu.

Mě přijde SQL svět mnohem přehlednější a jasnější, a když dlám aplikaci, tak přece nad ním nechci dělat tlustou nadstavbu. Vždyť SQL to je asi ta nejsolidnější technologie co tu je, spolu třeba s REGEXem. Proč bych nad tím chtěl dělat nějakou tlustou nadstavbu je jedno v čem.

Mě přijde výhoda Hibernata-like frameworku, když děláš v nějaké totální žumpě s pomalým intranetem, kde přístup do soukromé databáze tvé komponenty je na s vysokou latencí a ty si tu svou databázi nemůžeš dát na stejný stroj kde ti ta tvá komponenta běží, ikdyž ji vlastně ta komponenta vlastní. To jsou ty typické Oracle sračky, kde je jedna obří databáze a ty v ní máš svého Usera. V ten moment ti nezbývá než si tu databázi kvůli latencím cachovat, protože by to jinak bylo pomalé jako prase. A tady může třeba ten Hibernate pomoct.

Pokud tomu dobře rozumím, složitosti skládání entit se vyhnete tím, že používáte anonymní ResultSetModel. A ostatním  problémům se vyhnete tím, že použijete jiný programátorský styl. Pro nějaké mikroprojekty to asi není problém, ale jinak se tím zbavujete jedné z možnosti jak dekomponovat aplikační doménu (problém, který má aplikace řešit). To je obecně spíš krok zpět. To už mi přijde lepší se objektově-relační impedanci (problému mapování objektů na sql) vyhnout použitím nějaké nativní objektové databáze.

843
/dev/null / Re:Proč ateisté nepoužívají logiku ?
« kdy: 28. 07. 2018, 16:46:20 »

Striktně materiálně založení lidé uvidí jen ten podvozek, tělo, a budou hledat mechanismus, jak se to tělo mohlo samo zkonstruovat. Popíšou nějaký mechanismus, kterým k tomu došlo..

Lidé používající rozum hlavně aplikují něco čemu se říká occamova břitva a o spoustě "duchovních" věcí zjistí že ve skutečnosti k ničemu nejsou potřeba...

Je to pořád dokolečka, occamova břitva je úplně nanic. Occamova břitva totiž nespecifikuje kritérium, kudy přesně řez vést - co vše z vytvářené teorie odstranit. Nepomůže mi rozhodnout, zda mohu nebo nemohu duchovno odstranit.

844
/dev/null / Re:Proč ateisté nepoužívají logiku ?
« kdy: 28. 07. 2018, 15:00:54 »
Citace
A te bytost vznikla z niceho?

Prečo by mala bytosť vzniknúť?

Otázka po vzniku je jen převlečená otázka po smyslu.

845
/dev/null / Re:Proč ateisté nepoužívají logiku ?
« kdy: 28. 07. 2018, 15:00:29 »
Ateisté dosud nenašli použitelnou definici, co je a co není živé. Pouze se opírají o víru, že tento rozdíl již našli.

Každý je veriaci, väčšina ateistov nevie sama dokázať nič, a verí vo svoj svetonázor. Podstatov ateizmu je viera vo svoje prestavy o živote a svete.

Platón hovorí, že javový (materiálny) svet nemožno spoznať pomocou zmyslov, lebo zmysly klamú (napr. ponorená palica do vody sa len javí, že je zlomená). Pravé bytie treba hľadať inou cestou, cestou cez iný svet, svet večných, nemenných, trvalých a len rozumom postihnuteľných entít – svet ideí, na ktorý sa naša nesmrteľná duša rozpamätáva a od týchto ideí, samy osebe existujúcich, sa odráža javový (zmyslový) svet.

Přesně tak. Viz můj příspěvek.

846
/dev/null / Re:Proč ateisté nepoužívají logiku ?
« kdy: 28. 07. 2018, 14:52:03 »
A ohledně logiky: Ano, mnoho vědců není schopno uvažovat logicky a dokonce ani dodržovat vědecké zásady. Do extrému jde v tomto ohledu spolek SISYFOS, který bere hon na alternativce jako zábavný sport - mnoho věcí si vůbec neověřuje, k věci přistupuje tendenčně, nestaví žádné hypotézy, které by následně chtěl ověřit nebo vyvrátit, prostě naprosto nepředvádí seriózní práci nehledě na značnou  myšlenkovou omezenost nebo rovnou nedostatek vzdělání a neschopnosti poznat rozsah vlastních kompetencí. Jsou to fachidioti. A to říkám jako člověk, který se rozhodně nenechá zblbnou od kdejakého šarlatána a který většinu případů, o kterých SISYFOS píše, považuje za skutečně dost problematické.

847
/dev/null / Re:Proč ateisté nepoužívají logiku ?
« kdy: 28. 07. 2018, 14:41:09 »
Jak vite, ze nejsme jenom jedna z mnohych simulaci na naky virtualni masine v nakym datacentru, kde si naky grad student dela semestralku z optimalizace virtualnich sim city, a az zpracuje statistiky, tak nam tady udela kill -9 armageddon?

Pokud je vesmír simulace, musí být někde jiná skutečnost, která není simulací a která je reálná. Pak otázku po vzniku života přesunete do jiné oblasti, ale jinak si moc nepomůžete. Stále budete mít místo s tajemstvím.

O něco lépe na tom asi budeme, pokud se podíváme, co kdo nazývá životem. Neznám duchovně založeného člověka, který by popíral hmotu, ale znám materialisty, kteří popírají ducha.

Duchovně založení lidé budou o životě uvažovat jako o duchu, který se otiskl do hmoty. Budou vidět život ve hmotě i život v duchu, uvidí, jak jsou propojené. Nebudou vidět, jak jedno tělo zplodilo druhé tělo, ale budou vidět, jak jedno tělo připravilo podmínky k tomu, aby se nějaká již existující individualita vtělila. Bez té RNA by to nešlo, ale RNA je jen implementační detail, homta tu slouží duchu. Duchovně založení lidé budou tedy řešit vznik ducha jako takového, otázku po vniku života položí kdesi na počátek všeho, někam do světa prapříčin a budou vyprávět příběhy o vzniku, čili o stvoření. Tím se sami  budou podílet na životě ducha, budou jeho vtělením. Získají tím mimo jiné schopnost léčit duši.

Striktně materiálně založení lidé uvidí jen ten podvozek, tělo, a budou hledat mechanismus, jak se to tělo mohlo samo zkonstruovat. Popíšou nějaký mechanismus, kterým k tomu došlo. Otázku po vzniku života budou řešit na pozemské úrovni. Bude jim asi unikat příčina, smysl, ale budou znát fyzické technikálie, čímž se budou podílet na materiálním životě. To jim přinese mimo jiné schopnost léčit tělo, ale občas to budou dělat dost nesmyslně (běžná nemocniční praxe - vidět pouze nemocný orgán, ale nevidět celé tělo neřkuli celého člověka).

Je chybou si myslet, že jeden pohled vyvrací druhý. Skutečnost je někde nad rovinou duality.

848
Vývoj / Re:Alternativa k Hibernate
« kdy: 28. 07. 2018, 13:33:24 »
Zkoušel jsem si jak by to vypadalo s JDBC a nepřijde mi to vůbec špatné:



Kód: [Vybrat]
public class DbUtil {

    public static <T extends ResultSetModel> List<T> resultSet(T model, ResultSet rs) throws SQLException, IllegalAccessException, InstantiationException {
        List<T> ret = new ArrayList<>();
        while(rs.next()) {
            Object[] rowArr = getRowAsArray(rs);
            model.setFromRow(rowArr);
            ret.add(model);
        }
        return ret;
    }

    public static Object[] getRowAsArray(ResultSet rs) throws SQLException {
        int colCnt = rs.getMetaData().getColumnCount();
        Object[] ret = new Object[colCnt];
        for(int i = 0; i < colCnt; i++) {
            ret[i] = rs.getObject(i+1);
        }
        return ret;
    }


    public static ResultSet executeQuery(String sql, ConnStm conn) throws InterruptedException, SQLException {
        PreparedStatement st = null;
        ResultSet rs = null;
        try {
            st = conn.getPrepStat(sql);
            rs = st.executeQuery();
        } catch (SQLException e) {
            throw e;
        }

        return rs;
    }

    public static <T extends ResultSetModel> List<T> executeQuery(String sql, T model, ConnStm conn) throws SQLException, InterruptedException, InstantiationException, IllegalAccessException {
        return resultSet(model, executeQuery(sql, conn) );
    }
}


Kód: [Vybrat]
public interface ResultSetModel {
    public void setFromRow(Object[] row);
}

@Data
@ToString
public class Timeline implements ResultSetModel {
    private Timestamp measured_timestamp;
    private String keyword_name_fid;
    private Integer amount;
    private String special;

    @Override
    public void setFromRow(Object[] row) {
        int i = 0;
        measured_timestamp = (Timestamp) row[i++];
        keyword_name_fid = (String) row[i++];
        amount = (Integer) row[i++];
        special = (String) row[i++];

    }
}



A staci mi pak udelat:

Kód: [Vybrat]

@AllArgsConstructor
public class TimelineDao {
    final static String findAll = "SELECT * FROM TIMELINE";

    public List<Timeline> findAll(ConnStm conn) throws Exception {
        return DbUtil.executeQuery(findAll, new Timeline(), conn);
    }
}



Akorat jeste nevim, jak dopravit do DAOcka Connection jinak, nez pres parametr metody. Takhle totiz muzu snadno zaridit, aby mi kazdy jeden request probehl v jedne transakci.

Takhle vypadá moje DI:

Kód: [Vybrat]

@Data
public class App {

    DatasourcePool datasourcePool;
    DataService dataService;
    LoginService loginService;
    RestApi restApi;
    TimelineDao timelineDao;


    public App() throws Exception {
        initProperties();

        datasourcePool = new DatasourcePool(
                "org.postgresql.Driver",
                System.getProperty("jdbc.connection"),
                System.getProperty("jdbc.user"),
                System.getProperty("jdbc.password")
        );
        timelineDao = new TimelineDao();
        dataService = new DataService(timelineDao);
        loginService = new LoginService();
        restApi = new RestApi(dataService, loginService, datasourcePool);
    }


Start na Tomcatovi je za 700ms.

Vypadá to hezky a na triviální úkoly typu select z jedné tabulky to taky tak používám.

Akorát, že se to celé neúměrně zesložití, jakmile začneme entity skládat (kde entita obsahuje kolekci jiných entit) a začneme ty entity ukládat do databáze, opětovně načítat, zjišťovat, zda se entita změnila, ověřovat kardinalitu... Skončíte na vlastním malém, ale nedokonalém ORM. To už je lepší použít něco hotového.

849
Hardware / Re:Kolik si říct za tuto PC sestavu?
« kdy: 27. 07. 2018, 01:00:17 »
Takze mili miestni experti na cenu pouzivaneho HW... Pocitac bol predaný vkuse a za cenu 490 eur (12 564 kaček). A dik za vaše názory okolo 3000 Kc (100 eur). Pekny vecer...

Gratuluji - u toho je vidět, že i v době internetu lze prodat za nadhodnocenou cenu. Místní by to za tu cenu ovšem nekoupili, jelikož si uvedený hardware prostě cení méně. A oboje je v pořádku :)

850
Sítě / Re:Divné chování internetu od Eurosignalu
« kdy: 25. 07. 2018, 14:39:01 »
Tohle je úkolem QoS, pokud to provider a použitá technologie podporují.

a pokud si ho zakaznik plati....

LOL, tak mne napadlo, jak moc is asi priplacim, aby mi doma z kohoutku netekla slana voda :-D

Navíc, v tomto konkrétním případě by zákazníkovi zcela rozhodně pomohlo, kdyby tam naopak žádné QoS ani nic podobného nebylo - páč nastavit to takhle dementně, to je skutečný unikát.

:-D Než špatné QOS tak to radši žádné (nebo rozumný ISP který zjistí, kde je chyba).

851
Sítě / Re:Divné chování internetu od Eurosignalu
« kdy: 24. 07. 2018, 23:48:18 »
ISP ma pravdu. Omezte si v routeru stahování na 20 Mbit a uvidíte že budete v pohodě. A navíc se přestanete zde ztrapnovat. Když si platíte 25 Mbit tak to pojede 25 Mbit.

Pojede to 25 Mbit, ale tohle pásmo se může spravedlivě rozdělit mezi jednotlivá spojení, takže jedno stahování nezabije úplně ostatní spojení. Případně se pásmo může rozdělit i nějak inteligentně (typicky se odliší spojení vyžadující minimální latenci od spojeních vyžadujících maximální propustnost, takže můžu telefonovat nebo hrát hry a současně stahovat skoro plnou rychlostí). Tohle je úkolem QoS, pokud to provider a použitá technologie podporují.

852
Software / Re:V čem otevřít, číst a editovat cookies
« kdy: 24. 07. 2018, 20:13:50 »
Ano, neni to to na co se ptam, tyto nastroje znam jsou tam jen obecne informace.

Ja se ptam na presny obsah souboru - co vsechno v nem je / co ve skutecnosti zjistuje, uklada a pak odesila na server stranka ktera cookie vytvori.
A ne, nezajima me co maji popsany v nejakych radoby podminkach - uz jen to ze si stranka vytvori persistent cookie s expiraci za mesic na mem zarizeni aniz bych to odsouhlasil na te liste/banneru naznacuje, ze jim nelze verit.

Ale tam nejsou žádné obecné informace! Tam je skutečný obsah cookies a je možné je tam i měnit. Na disku ani nikde jinde nic víc nenajdete.

Co se přesně posílá na server zjistíte sledováním tabu F12 - síť. V části headers uvidíte i http hlavičky sloužící k nastavení a předávání cookies.

A pokud byste nevěřil ani prohlížeči, můžete sniffovat http provoz jdoucí přes síťovku například pomocí tcpdump nebo wireshark. Provoz můžete i uložit a podrobit zpětné analýze nebo použít jako důkazní materiál.

853
Software / Re:V čem otevřít, číst a editovat cookies
« kdy: 24. 07. 2018, 15:29:57 »
Čtu je ve Firefoxu - dám F12 -> karta Úložiště -> v rozbalovacím menu vlevo Cookies. Není to přesně to, na co se tazatel ptá, ale na druhou stranu jsem třeba já neměl nikdy potřebu hledat soubory s cookies na disku. Takže to bude třeba stačit.

854
Vývoj / Re:Dvě stejné třídy různých verzí (Java)
« kdy: 19. 07. 2018, 23:38: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).

855
Vývoj / Re:Dvě stejné třídy různých verzí (Java)
« kdy: 19. 07. 2018, 23:36:27 »
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.

Ale XML může sloužit např. v tom příkladě povýšení verze - nastartuju proces se starou verzí třídy a uložím do xml, pak nastartuju s novou verzí třídy a načtu. Pokud dokážu vyřešit nové nebo chybějící fieldy (nebo obecně změnu struktury), mám hotovo.

Stran: 1 ... 55 56 [57] 58 59 ... 90