Programování

Kafemlejnek.TV 17 – Algoritmické obchodování na burze

Po delší přestávce jsme zavítali do kanceláří RSJ poblíž pražského Florence. Společnost se zabývá algoritmickým obchodováním na světových burzách a bylo o ní slyšet v souvislosti s osobností Karla Janečka. My jsme se setkali s technologickými lídry společnosti – Michalem Šaňákem a Petrem Altmanem rozhodnuti z nich vytáhnout co nejvíce o vývojářském pozadí firmy a problémech, které musí v této oblasti řešit. Jestli Vás zajímá, jak fungují dnešní burzy, jaké technologie se tam používají a jak vypadá high level architektura automatizovaných systémů, které tam obchodují, nenechte si ujít tento díl.

Click through errors to IntelliJ Idea editor with Remote Call plugin

Every improvement of your development process that is performed on daily basis is worth considering and implementing. Even little things can save days in budgets if you multiply them by the count of team members and the number of operation occurrences in the year. How do you look up for classes or JSP/FreeMarker/whatever templates when you run at error in them during development or testing? In development mode you might have your logging output open in IntelliJ Idea and click through exception stacktraces if any happens to be printed there.

Prolomení šifrovaného protokolu HTTPS

Vyděsil vás titulek článku? Vlastně to bylo tak trochu cílem. Mnoho z nás totiž žije v klamné představě, že nasazení důvěryhodného SSL certifikátu a správná konfigurace webového serveru postačuje k zajištění důvěryhodného a nečitelného přenosu dat mezi serverem a klientem. Naše přesvědčení potvrzuje fakt, že na tomto předpokladu staví celý svět online byznysu. Jak by řekli matematici – použití HTTPS protokolu je pro zajištění takové komunikace nutná, nikoliv však postačující podmínka.

Kafemlejnek.TV Akademie 5 - Základní techniky hackování – Roman Kümmel

Tento díl obsahuje praktické ukázky základních hackovacích technik jako je SQL injection, cross site scripting a nezabezpečený upload. Jedná se jen o ilustrativní výsek z desítek dalších zranitelností, které můžete na webu potkat. Cílem bylo především ilustrovat, že útoky nejsou nikterak složité - tím spíš, že již existují automatizované nástroje, které všechno radikálně zrychlí a zdokonalí. Jednoduchost a nebezpečnost těchto útoků by měla nás, tvůrce webových aplikací, motivovat k tomu se v této oblasti vzdělávat a nenechávat vrátka pro hackery otevřená.

How to make Apache HttpClient trust Let's Encrypt Certificate Authority

Apache HttpClient is a popular library that many other frameworks build upon. Naming one for all - you can find it in Spring Framework RestTemplate. It's quite suprising that its not easy to find compherensible walkthroughs how to make it trust server certificates that are not validable by certificate chains baked in standard Java installation. Spending a few hours searching and tweaking the code I've decided to document easy - step by step solution how to do this for emerging Let's Encrypt certificate authority (but it's applicable to any other CA too).

Nepíšete javadoc komentáře? Díky Java 8 vězte, že dobře děláte!

O autorovi: LinkedIn Tomáš za dobu svého působení v oboru soudí, že programátor jest živoucím důkazem platnosti Paretova pravidla 80/20 - 20 % času programuje a 80 % času bádá, proč to nefunguje. Empiricky mezitím ověřil, že je to nezávislé na tom, zda programuje v korporaci nebo malé firmě, i na použité technologii. Javu 8 na rozdíl od Javadoc komentářů (to jsou ty mezi /** a */;) nepoužívá úplně každý javista, ale jak se říká, jednou tam musíme všichni.

Serializujte optimálně skrze Kryo

Je zajímavé, že tak základní věc, jako serializace objektů do binárního streamu je v Javě implementovaná neoptimálně - a to jak z hlediska velikosti výsledné binární podoby, tak i rychlosti s jakou je vytvořena. Míst, kde se serializace objektů hodí je celá řada, a proto je určitě v zájmu každého kvalitního vývojáře zamyslet se, jestli to nejde dělat líp. Ono totiž jde :) Pokusů o reimplementaci Java serializace je na webu mnoho, ale mezi ty nejlepší zcela jistě patří knihovna Kryo.

Recreate MySQL views without definer, one-liner solution (Linux)

Rather cryptic headline describes a pain many of us have to go through when restoring MySQL database backup from different machine. If you have ever done this on database with DB views - you'd probably run at this problem too. Source of the problem is that MySQL dump exports CREATE VIEW DLL with DEFINER attribute and there is no way how to instruct it to exclude this attribute (as far as I know).

MongoDb online kurzy

Systematické vzdělávání je pro programátory holou nutností a naše doba nám k tomu dává výjimečné příležitosti. Když jsem s programováním začínal, byl jsem rád, když mi otec sehnal od známého z PVT nějakou vysloužilou knížku o programování v Basicu - a to byl můj jediný zdroj informací. Knížka byla v angličtině a plno věcí jsem tehdy ani nepochopil. Informací bylo pomálu a řada z nich byla už tenkrát zastaralá (mluvím o roce 93).

Otevřena registrace na ne-konferenci jOpenSpace 2013

Po roční přestávce je letos opět organizována "ne-konference" jOpenSpace. Registrace jsou otevřeny všem, kteří mají zájem setkat se zajímavými lidmi z oboru a strávit s nimi víkend diskusí nad vývojářskými tématy. Termín je stanoven na 2. a 3. listopadu 2013 a bude se odehrávat v srdci Žďárských vrchů. Účast přislíbili mj. Roman Dagi Pichlík a Lukáš Křečan ze společnosti GoodData, Petr Ferschmann ze společnosti FlexiBee, Lukáš Hasík z Avastu, Jiří Filemon Fabián z Vendavo CZ a další známé osobnosti z dev komunity.

Stripes Framework on WebSphere 8.x application server fails with FileNotFoundException

If you are struggling with running Stripes framework based application on IBM WebSphere application server 8.x I may help you. You probably end up with getting HTTP 403 error pages on every request. If you persuade your app server to give you some reasonable logging data (which is not easy in the world of Java application servers :/ ) you probably see FileNotFoundException logged during the request. Here comes the explanation and a solution for you .

Zbystřete své smysly technickými doplňky

Nevím jak vám, ale nám se při vývoji často stává, že vývojáři některé věci přehlíží a to se nám negativně odráží na produktivitě a kvalitě výstupu. Člověk je tvor omylný, ale inteligentní a proto se snaží se vybavit takovými nástroji, které jeho nedokonalosti dokáží vyvážit. Na posledním hackathonu kolega Michal Kolesnáč přišel s nápadem a prototypem rozšíření našeho existujícího doplňku pro Google Chrome, které pomocí HTML 5 notifikací upozorní vývojáře na potenciální problémy na prohlížené web stránce.

Tak Forresti taky přešli na Git, paní Millerová

Ve Forrestu jsme jako verzovací systém používali po velmi dlouhou dobu prastaré CVS. Respektive v době, kdy se s tím ve firmě začínalo (pamětníků už je jen hrstka) to zase až taky zastaralý systém nebyl (mluvíme o roku 2000). Dlouhou dobu jsme zvažovali náhradu za nějaké modernější VCS, ale nikdo se toho nechtěl osobně ujmout a byla tady celá řada překážek, se kterými bychom se museli kvůli přechodu vypořádat. Kromě infrastruktury (háčky do issue trackeru, build a install skripty, zálohování atd.

Spring profiles a použití v testech

Po 3 letech dělám větší refaktoring na našem direct mailingovém modulu a jako první jsem se rozhodl povýšit verze knihoven a zrefaktorovat JUnit testy, které jsou tam ještě psané ve stylu JDK 1.4. V souvislosti s tím jsem samozřejmě přepracoval formu testů z dědičné hierarchie na anotace, které byly představeny poprvé ve Spring 3.X (pokud se nepletu). A tu jsem zjistil, že mám drobný problém - v původní verzi mého kódu jsem využíval dynamické kompozice Springového kontextu k tomu, abych stejné integrační testy pustil proti různým implementacím úložišť dat (paměť, MySQL databáze, Oracle databáze .

K čemu je nám užitečný komponentový web framework?

Nedávno jsem jedním svým twítem vyvolal menší diskusi ohledně toho, co nám dovoluje komponentový framework oproti tomu, čeho bychom byli schopni dosáhnout s jednoduchým MVC rámcem. Bohužel twitter mi nedává takovou možnost vyjádřit se a tak jsem chtěl důvody a výhody, které vidím v komponentách na frontendu, popsat trošku obšírněji v tomto článku. Komponentový model na webové vrstvě přináší oproti MVC se "standardním" šablonovým systémem možnost elegantní znovupoužitelnosti částí, které se znovu použít dají.

Nastartování samospádu

Tento článek bude krapet filozofického ražení a nese zvláštní ale snad výstižný název, jak se pokusím vysvětlit dále. Nelehko se popisuje, co myslím tím výrazem „spád“ – v češtině bych mohl použít i podobně zabarvená slova jako třeba bzukot, mravenčení nebo vzruch, z cizích jazyků bych si vypůjčil výrazy jako je trakce nebo momentum. Určitě pochopíte, co mám na mysli, když poukážu na živé a prosperující komunity, které známe z našeho okolí.

Bonusy do každé rodiny

O radosti z releasů jsem tady na blogu psal už dříve a teď budu psát znovu, ale z jiného úhlu pohledu. Téměř po roce od začátku analytických prací jde do produkce jeden z mých největších dosavadních projektů - Ok Bonus portál pro slovenskou společnost DOXX. Podstatou projektu je poskytnout technické řešení maloobchodům a jednotlivcům pro tvorbu věrnostních (bonusových) programů, které si dokáží ušít samy sobě na míru. Řešení je složeno z několika částí: desktopové aplikace postavené nad NetBeans RCP - tzv.

Máte jistotu, že do session ukládáte pouze serializovatelné objekty?

Jestli ano, tak by mne velmi zajímalo, jak to děláte. My jsme totiž ještě donedávna žádnou jistotu neměli - vše záleželo na poctivosti a důslednosti programátorů. Jenže v Javě není tahle záležitost vůbec jednoduchá a tak vám může díky nějaké referenci hluboko ve stromu objektů uniknout, že to, co ukládáte do session, má vazbu na objekt, který serializovatelný není. Výsledkem je ztráta session při restartech aplikačního serveru nebo zamezení možnosti session replikovat mezi nody clusteru.

Úvaha nad horizontálním škálováním databází a těžkostmi s tím spojenými

Škálování databází je velké téma a já rozhodně nejsem takový odborník, abych tady rozebíral kdovíjaké detaily. Zcela jistě znáte termíny jako je sharding, o kterém psal Dagi už před 5 lety, popřípadě znáte termín partitioning, který nám nabízejí některé DB stroje "zadarmo" a jiné "za peníze". Alternativním způsobem horizontálního škálování je škálování pomocí sady replik pro čtení, o kterém lze uvažovat v případě, že máte aplikaci, které řádově méně zapisuje do databáze než z ní čte.

Commons File Upload contains a severe memory leak

Do you use Commons File Upload library in your application? Do you use DiskFileItemFactory for storing big files to a temporary disk storage? Do you use FileCleaningTracker to get rid of unused temporary files as it is recommended in documentation? If so you probably have a memory leak in your application you don't know about. Stored files are meant to be cleared when there is no reference to the FileItem instance created by this library.