Site in english

Technológia

Platform és nyelv

Többnyire Microsoft technológiákat és platformot használunk, illetve mást, ha az nem optimális a feladatra.

Internetes webalkalmazások

Ha nincs speciális kényszer, akkor ASP.NET MVC a jelenlegi kedvencünk szerver oldalon, illetve CSS és JavaScript a böngészőben. Alapvetően támogatjuk a mindenkori legújabb böngészőket és az elmúlt két évben kiadott verzióikat: Google Chrome, Mozzila Firefox, Internet Explorer, Opera, Safari és a mobil verzióik.

Intranet

Webalkalmazások vagy Silverlight a bonyolultabb felülettel üzleti alkalmazásokhoz. Néha WPF is szóba jöhet automatikus frissítéssel.

Asztali alkalmazások

Windows Presentation Foundation (WPF) a kliensekre és Windows Communication Foundation (WCF) a szerverhez kapcsolódáshoz. Bizonyos esetekben használunk egyéb hálózati megoldásokat, ha például nagy mennyiségű adatot kell küldeni (1 MB/s feletti), vagy speciális biztonsági/tömörítési megoldásra szükség, esetleg a kliens és szerver nem kompatibilis egymással. Erre egy jó példa a CryEngine összekötése .NET szerverrel, ahol Google Protocol Buffers alkalmaztunk.

Szerver oldal

Service-t készítünk Windows szerverre. Az adatbázis választásunk Microsoft SQL Server, de Oracle-lel is gyakran dolgozunk. Felhő szolgáltatónk a Windows Azure.

3D és vizualizáció

Többféle 3D technológiát használunk játékokhoz és multimédiás alkalmazásokhoz. DirectX (C++), CryEngine (C++), SharpDX (C#), XNA és Monogame (C#, Xamarin for iOS and Android). 3D vizualizációt CryEngine Sandbox szerkesztővel, Flash UI-val és Lua szkripttel csinálunk.

Szakértés

100 milliárd rekord adatbázisban

Bizonyos rendszerekben egyszerű, de nagy mennyiségű (100 milliárd rekord) adat gyűlik össze, amelyekből kimutatásokat kell készíteni, vagy akár lekérdezni nagyobb részket megjelenítéshez. Például egy folyamatirányító rendszerben másodpercenként 100-1000 esemény történik, amelyeket tárolni kell és vissza kell tudni adni a kliensnek. Ez éves szinten 10 milliárdnál is több esemény lehet, aminek a megfelelő tárolása nem triviális. Ez még fürtözött adatbázisok esetén is gondot jelent.

Mi tervezünk és implementálunk ilyen rendszereket, ami képes kezelni ezt a mennyiséget. A megoldás alkalmaz megfelelő tömörítést és hierarchikus gyorsítótárazást, amely így képes pár 10 ezredmásodperc alatt visszaadni milliós mennyiségű adatokat.

Milliós mennyiségű adat kirajzolása

A piacon kapható diagram rajzolók nem tudnak milliós adatot megfelelően kezelni. A legtöbb egyszerűen csak lassú, de van pár fél megoldás is. Az egyik ilyen megoldás az adatok eldobásában rejlik. Például lehet átlagolni, azonban a rövid ideig tartó kilengések így elveszhetnek, ha nagyon kinagyítunk. De szerencsére van korrekt megoldás is, bővebben a trükkök részben mutatjuk be.

Aszinkron és párhuzamos programozás

Kliens szerver architektúra esetén mindig aszinkron hívásokat alkalmazunk. Többnyire a hálózati technológia támogatja ezt, sőt van pár, ami csak ezt tudja. A szerver oldalon figyelni kell az adatok védelmére, ami kritikus szakaszok bevezetésével jár.

Párhuzamos programozási technológiát használunk GPU-n Microsoft AMP C++ segítségével. Bár csak speciális algoritmusokat lehet így implemenálni, ezekben az esetekben mindig alkalmazzuk.

Biztonság

A biztonság mindenek előtt! Weboldalakon és webszolgáltatásoknál SSL-t használunk (https), ami kényelmes és széles körben alkalmazott. Asztali alkalmazásoknál vagy SSL-t használunk HTTP-vel (WCF tudja ezt alapban), vagy saját megoldást implementálunk RSA+AES segítségével.

Jelszavak tárolására hash algoritmust (pl. SHA256) használunk sózással.

Sok más helyen is kell biztonsági megfontolásokal tenni, de már csak egyet emelünk ki: SQL beszúrási támadás. Mivel azonban vagy Entity Frameworköt haználunk, vagy paraméteres SQL parancsokat adunk ki, a rendszer automatikusan immunis az ilyen támadásokra.

Kód minőség

A kód minősége fontos a későbbi karbantarthatóság és bővíthetőség szempontjából. Sok módszer van erre, néhányak kiemelünk: mennyiség, egyszerűség és tervezési minták. A sok kód általában rossz, ahogy a bonyolult kód sem optimális. Persze vannak bonyolult feladatok, amihez nem lehetséges egyszerű és rövid (frappáns) kódot írni, de mégis mindig törekedni kell rá. Ez általában rövidíti a fejlesztési időt is, és a hibák számát is csökkenti. A másik lehetőség a bevett minták használata, ami segíti a megértést. Ezt is lehet túlzásba vinni, de az alapvető mintákat érdemes követni. És végül a legjobb a megfelelő technológia használata, ami a legtöbbet tudja segíteni a fejlesztésben.