vložil Radek Červinka
5. prosince 2018 21:58
Minulý týden jsem narazil na problém kdy testovací oddělení začalo hlásit problémy při běhu programu na kterém spolupracuji pod Ranorexem.
Odbočka: Ranorex nedávno získala IDERA, tj. vlastník Embarcadero. Tím rozšířila své portfolio pro vývoj aplikací o další zářez, kompletní seznam je na ideracorp.com a obsahuje kromě Embarcadero další akvizice z nedávné doby jako Sencha, Whole Tomato, Test Rail atd. přičemž některé produkty jsou nyní přibalovány k vyšším edicím Delphi. Mimochodem když se podíváte na ideracorp.com/news, uvidíte, že všechny akvizice jsou až po získání Delphi - celkem velké investice do rozšíření portfolia a celkem ve svižném tempu.
Ale zpět k našemu problému s Ranorexem.
Více...
5f14dfd7-9ce3-4ddb-9f0b-7eab88dfe98a|7|3.7
Tagy: praxe
Praxe
vložil Radek Červinka
2. června 2018 23:45
BCrypt je populární algoritmus pro hashování hesel. Mezi jeho výhody patří kvalitní dokumentace, standardizovaný, stejný napříč platformami a jazyky (třeba PHP).
Více...
vložil Radek Červinka
14. listopadu 2017 00:37
Ladění je jako vyšetřování vraždy, kdy je člověk sám vrahem. Některé věci užitečné pro ladění jsem naznačoval dříve, ale možná je vhodné je připomenout.
Jedna z nich je okno Evaluate/modify, kde můžete zadat nejen název proměnné, ale prakticky libovolný řádek kódu Delphi a ten bude spuštěn z kontextu laděného procesu. Tedy např.

Více...
5b912473-ed07-40d3-bf5d-ca07a1fd2312|12|5.0
Tagy: praxe, ladeni
vložil Radek Červinka
3. května 2017 00:09
Mám rád FastReport. Už jsem se mu zde několikrát věnoval, např. jak využít FastScript. Ale až nedávno jsem začal používat ve skriptech dialog.
K čemu je to dobré? Umožňuje mi to flexibilněji reagovat na specifické požadavky uživatelů bez úprav hlavního programu. Lehkou úpravou FastReportu mám zabezpečeno streamování reportů z a do databáze (pořád se držím teze, že na data jsou databáze a kromě ini tam patří v rámci možností vše). To mi umožňuje lehce přidat libovolný report a okamžitě ho uživatel může začít používat. Navíc dialog uložený v reportu rozšíří základní funkcionalitu.

Více...
vložil Radek Červinka
18. října 2016 21:58
Nemám moc rád technologii COM, hlavně protože jinak k prakticky samostatnému EXE vygenerovaného Delphi (případně s dalšími DLL v adresáři programu) zavádí závislosti na něčem, co musí být registrované v systému, což je z mého pohledu zásadní problém a moc se to neslučuje s mojí filozofií programů.
Více...
7488c9e9-20b2-4b19-a47e-3dcc3c7aa579|6|5.0
Tagy: praxe
Praxe
vložil djenne
11. října 2016 00:08
Zvažuje-li začínající programátor, kde by mohl uplatnit své schopnosti, má zpravidla o pozicích týkajících se větších IS, představu všední, nezajímavé a poklidné práce. Velmi často je však tato představa mylná a situace nezřídka připomíná vojenské operace, ať už z hlediska strategického, taktického nebo operačního. Kdo někdy řešil scénář „V pátek úředník vydá vyhlášku a v pondělí podle ní musí uživatelé odevzdat hlášení.“ ví, co mám na mysli.
Omlouvám se tedy všem pacifistům, ale marná sláva, armáda má v organizaci, použití různých zkratek, kódů a hlášeních letitou tradici a občas není špatné se u ní inspirovat. Snad vám tedy strohý vojenský výčet faktů poskytne přehledně základní informace:
Jednotka:
Vývoj informačního podnikového systému HELIOS Orange
Zařazení:
Asseco Solutions a.s
Historie:
Jednotka se může opřít o bohaté bojové zkušenosti. Déle sloužící veteráni jsou u jednotky i více než 20 let.
Úkoly:
Poskytovat krytí pro operace více než 6000 zákazníků v oblasti 4 500 000+ řádků zdrojového kódu a více než 1000 dialogových oken.
Provádět průzkumnou činnost na území legislativní džungle.
Reagovat na změny taktické situace ve všech zájmových oblastech.
Udržovat vysokou úroveň připravenosti na všechno.
Více...
vložil Radek Červinka
5. května 2016 23:44
Pokud jste šťastným uživatelem FastReportu, možná ani nevíte, že FastReport obsahuje i FastScript a že se dá použít nezávisle bez generování reportů. Co je to FastScript? Je to knihovna pro provádění skriptů v různých jazycích (Pascal, JS, C++, VB). Skripty mohou být celé programy, ale i obyčejný výraz. FastScript vám dává do ruky opravdu mocný nástroj.
Více...
vložil Radek Červinka
21. února 2016 22:10
Pokud používáte vkládání DB komponent přímo na formulář (třeba do DataModule), občas se může stát, že zapomenete nastaveno TDataSetxx.Active := True, což může velmi zpomalit start programu a mít další vedlejší efekty.
Když přejdu to, že si myslím, že je lepší vytvářet Db komponenty až za běhu (nebo aspoň mít vlastního následníka, v kterém úpravu provedeme) a ne v design modu, existuje možnost jak to vyřešit.
Více...
vložil Radek Červinka
25. listopadu 2015 01:04
Trošku méně známou součástí FireDAC je TFDMemTable alias memory table. TFDMemTable můžete používat jako jednoduchý dataset s čtením a zápisem do JSON, XML nebo binárních dat, nebo jako lokální dataset pro DBMS nebo navíc použít CachedUpdates, případně za pomocí LocalSQL provádět SQL příkazy nad skupinou TFDMemTables.
Více...
vložil Radek Červinka
9. dubna 2015 22:29
Integrovaný HTTP(s) klient
Podle mne těžce inspirovaný .NET, https bez OpenSSL.
implementation
uses
System.Net.httpclient,System.Net.URLClient;
{$R *.dfm}
procedure TForm7.Button1Click(Sender: TObject);
var
o: THTTPClient;
response: IHTTPResponse;
r: TNameValuePair;
begin
o := THTTPClient.Create;
try
response:=o.Get('https://www.google.com/');
for r in response.Headers do
memo1.Lines.Add(r.Name + '='+r.Value);
Memo1.Lines.Add(response.ContentAsString);
finally
o.Free;
end;
end;
No synapse to není, ale je to integrované v RTL a něco to umí. Více snad později.
Více...
vložil Radek Červinka
22. března 2015 22:16
Posledních pár měsíců jsem s přestávkami pracoval na modernizaci UI a UX našeho programu. Cílem bylo popotáhnout vzhled UI aplikace (doufám) do současnosti a z hlediska UX odstranit několik historických nešvarů jako např. většinu modálních dialogů.
Zkusím naznačit některé věci, které jsem použil a doufám, že to někomu pomůže, nebo aspoň pobaví.
Více...
vložil Radek Červinka
9. března 2015 22:29
Dneska to budou spíše takové triky.
Zmenšení velikosti zálohy instalačních souborů
Instalátor Delphi je napsán v Install Aware, který bohužel ještě z různých důvodů (asi politických) spolupracuje s Microsoftim MSI. Nejen, že MSI je totální neefektivní (např. při reinstalaci otevírá prý každý soubor 4x - proto taky Delphi dělají unistall a nový install), ale ještě se ukládají informace pro reinstalaci do c:\ProgramData (to jde nějak změnit parametrem).

Problémem je, že v době SSD disků a VMWare jsou disky C malé a takové XE7 tak napráská 10GB dat, které se už moc nepoužijí. Bohužel do doby než se vykopne MSI s tím moc neuděláme.
Více...
vložil Radek Červinka
4. listopadu 2014 23:01
Nedávno jsem řešil problém. U jednoho zákazníka, který spouští naše CRMplus přes vzdálenou plochu na (myslím) Windows Serveru 2008 se v určitém případě objevovala zvláštní výjimka.

Zajímavé bylo, že to obešlo můj exception handler, takže mi bylo jasné, že to není úplně normální situace.
Více...
1aa3f5bb-8e74-48d1-926f-d205577681a8|5|5.0
Tagy: praxe
Praxe
vložil Radek Červinka
19. září 2014 23:09
Jednoho krásného dne Váš program zjistí, že trpí nedostatkem paměti. Přirozeným krokem je přechod na 64bit aplikace, ale existuje i jiná možnost. U EXE (resp. PE souboru) se dá specifikovat flag IMAGE_FILE_LARGE_ADDRESS_AWARE. Tento flag byl původně určen pro speciální mód 32bit Windows, kdy místo normálních cca 2GB paměti pro 32bit proces nabízel celých úžasných 3GB volné paměti. Praktická využitelnost tedy nic moc, protože tento mód Windows se moc nepoužíval.
Situace se obrátila s příchodem 64bit Windows (jen aby nedošlo k nedorozumnění - dávejte pozor kdy mluvím o 32bit procesu, kdy o 32bit Windows a kdy o 64bit Windows).
Více...
vložil Radek Červinka
24. července 2014 00:15
Od verze XE je součástí instalace Beyond Compare Lite, najdete ho v adresáři Delphi/bin/BCompareLite.exe . Pokud ho ještě neznáte - dejte mu šanci. Plnou verzi znám jen z doslechu (slučování ze tří zdrojů, synchronizace adresářů…), ale i v lite verzi je pro mne významné plus např. to, že program umí rozeznávat důležité změny (tj. rozdíl mezi změnou v poznámce, příkazu nebo např. v řetězci).

Více...