Az Adatbázisok

Ebben a témában: Adatbazis

Az adatbázis az egyik legfontosabb adattárolási forma, amit ma az iparban használnak. Adatbázisban tárolja a felhasználói adatokat a Facebook, a Google, de ha a napi szintű informatikai fejlesztésekre gondolunk, akkor a jobb verziókövető rendszerek, weboldalak, a modellező rendszerek is mind-mind adatbázis alapúak.

 

De mitől ilyen elterjedtek az adatbázisok, hogyan épülnek fel és hogyan tudok kezelni egy adatbázist egyszerű Java-ból?

Az adatbázisok legfontosabb tulajdonsága, hogy a meghatározott adatokat, a meghatározott sorrendben tárolnak. Vannak oszlopok, minden tárolandó tulajdonságnak egy, valamint vannak sorok, amik a példánya egy-egy tárolandó adatnak. Például:

 

ID

Vezeteknev

Keresztnev

1 Minta Béla
2 Teszt József
3 Minta Sándor

 

Az adattárolást persze meg lehetne oldani egy sima szöveges fájlban is, de ahogy azt majd mindjárt látni fogjuk az adatbázisok kezelése jóval egyszerűbb, mint egy saját kiterjesztésű fájl kezelése. Illetve biztonsági okok is az adatbázis mellett szólnak, mert akár fizikailag is távol lehet egymástól az adatbázis és a webszerver.

További előnye az adatbázisoknak, hogy szabványosítottak. Elegendő azt tudnom, hogy pontosan milyen oszlopokból épül fel a tábláim és máris tudom szerkeszteni és olvasni őket. Ez a módszer egy szöveges alapú fájl esetében már jóval komplikáltabb. (hány tulajdonság van, milyen sorrendben, …)

 

A lényeg a szabványosított forma. Ennek köszönhetően az adatbázisoknak egy külön programozási nyelve van, ez az úgynevezett SQL. Az SQL segítségével adatokat lehet lekérni, illetve adatokat lehet felvinni egy meglévő táblába, de módosítani vagy akár törölni is lehet az egész táblát vagy csak egy bizonyos részét.

Az SQL egy viszonylag egyszerűbb programozási nyelv, nincs olyan sok nyelvi eleme, de az elképzelhető összes műveletet meg lehet vele fogalmazni, amit egy adatbázis esetében érdemes használni. Ajánlott megismerkedni a legalapvetőbb utasításaival, ezekről később még én is részletesebben fogok írni:

  • SELECT
  • INSERT
  • UPDATE
  • DELETE

 

Kérjük le a fenti példa adatbázisból SQL segítségével az összes olyan sort, ahol a vezetéknév := „Minta”

// Kérjük le az összes oszlopot
SELECT *

// A „Pelda” táblából
FROM Pelda

// Azokból a sorokból, ahol a Vezeteknev = „Minta”
WHERE Vezeteknev = „Minta”;

 

Tehát azt már említettem, hogy az adatbázisok oszlopokból és sorokból épülnek fel. Ekkor még azonban csak egy sima Excel tábláról beszélnénk. Akkor beszélhetünk adatbázisról, hogyha az információk rendezett formában, különböző szabályok mentén épülnek fel és kerülnek be az adatbázisba. Az adatbázisok minőségének is vannak fokozatai azonban ez gyakorlatilag egy külön tudományág (Egyetemen is külön kurzus formájában oktatják), illetve még rengeteg olyan aspektusa van, ami túllóg ennek a bejegyzésnek a méretén.

Jelenleg a cél azonban csak a koncepció megértése. Melyek a legismertebb adatbázis kezelő rendszerek, amiket kipróbálva te is létre tudsz otthon hozni egy kis teszt rendszert? Íme:

  • MySQL
  • PostgreSQL
  • Oracle Database
  • Microsoft SQL Server
  • SQLite

(Egy példa adatbázis felállítása a fentiek valamelyikével, egy későbbi blogbejegyzés témája lesz)

 

(more…)

Megtanulni Programozni

Ebben a témában: Onfejlesztes

Sokan nem tudják 19 évesen, hogy mivel szeretnének majd foglalkozni, ezért már csak az egyetem vége felé vagy később jönnek rá, hogy nem akarják tovább csinálni azt amit eddig és váltani szeretnének.

 

Amikor az ember erre rájön, akkor lehet, hogy már nincs abban az életszakaszban amikor 4-5 évre be tudna ülni egy egyetemre. Ha mégis tudjuk már egészen fiatalon, hogy a programozással, az informatikával szeretnénk foglalkozni, akkor szerencsés helyzetben vagyunk. Ellenkező esetben is van azonban számos lehetőség a tanulásra, az önfejlesztéstől kezdve, egészen az egyetemi levelező szakig.

Én mindig azt tanácsolom, hogy először járjuk körbe a témát, ne az legyen a cél, hogy megtanuljunk egy programozási nyelvet csak azért mert az ismerősöm azt olvasta, hogy az a legjobb nyelv, és azzal jól lehet elhelyezkedni. Először nézzük meg, hogy mivel szeretnénk foglalkozni körülbelül, játékot akarunk fejleszteni, telefonos applikációt, weboldalt vagy valamilyen beágyazott rendszert? Csak ezután mélyedjünk el bizonyos programozási nyelvekbe. A jó hír az, hogy ma már a legtöbb informatikai területen óriási szakember hiány van, így gyakorlatilag bármit is választunk, ha jól megtanuljuk az alapokat akkor már jó eséllyel tudunk pályázni egy Junior pozícióra. Ha pedig már bekerültünk akkor onnantól kezdve sínen vagyunk.

 

Megtanulni programozni nem lehetetlen feladat, de nem is 1-2 heti munka. Olvasgattam mostanában, hogy milyen fizetős képzéseket kínálnak és elég hajmeresztő feltételek mellett tud az ember jelentkezni egy ilyen helyre. Az ár egy dolog, bár az is gyakran vetekszik 1-2 egyetemi félév árával, de sokszor szerződésben rögzítik, hogy a képzés után csak magán az „iskolán” keresztül találhat állást a jelölt vagy mehet el interjúzni. Illetve egy már meglévő állás mellett, csak nehezen tud az ember eljutni egy ilyen képzésre, hiszen az órák általában hétköznap reggeltől délutánig tartanak.

 

(more…)

Egy feladat erre a hétre

Ebben a témában: Java Programozas

Már javában zajlik a honlap átalakítása, ezért sajnos kicsit akadoznak a blog bejegyzések. Várhatóan majd csak június utolsó hetében érkezik a következő Post.

De addigis, hogy senki se unatkozzon, hoztam nektek egy rövid feladatot Java nyelvből. Egy tipikus teszt feladattal készültem nektek az öröklés és az interface-ek világából.

 

A kérdés, mi lesz a program kimenete?

interface Animal { }
class Dog implements Animal { }
class Spaniel extends Dog { }
class Human { }

public class TestProgram
{
    public static void main(String[] args)
    {
        Animal a = new Spaniel();
        Spaniel s = new Spaniel();
        Human h = new Human();
        
        if(a instanceof Dog) System.out.println(“a-d”);
        if(s instanceof Animal) System.out.println(“s-a”);
        if(h instanceof Animal) System.out.println(“h-a”);
    }
}

 

Nem baj, ha nem tudjátok elsőre a választ! Járjatok utána, fordítsátok le és nézzétek meg! A lényeg, hogy a végére meglegyen a magyarázat.

Ha szeretnétek, hagyjátok meg a válaszokat kommentben vagy küldjétek el nekem privátban. Sok sikert!

Hogyan csináljunk weboldalt?

Ebben a témában: Onfejlesztes

Egyetemista koromban sokszor gondoltam rá, hogy el kellene menni weboldal fejlesztőnek. Aránylag elég sokat lehetett volna vele keresni egyetemistaként, lehetett otthonról csinálni és volt sok nyitott pozíció. De valahogy sosem jutottam el odáig, hogy ténylegesen el is kezdjek ezzel foglalkozni.

 

  • Az első problémám rögtön a Script nyelvekkel volt, ugyanis nekem túlságosan kaotikusak: Sok olyan szabályt mellőznek, amit a „normális” nyelveknél már megszoktam (C, C++, Java, …). Nincsenek klasszikus értelemben vett változók, tömbcímzés, típusok, …
  • A második problémám pedig magával a projektekkel volt: Mivel több évfolyamtársam is foglalkozott ezzel, ezért ez gyakran volt beszédtéma is, a vevő folyamatosan változtatja, hogy mit szeretne látni, nincsenek klasszikus értelemben vett követelmények, csak legyen jó.
  • A technológia: Rengeteg mindent kell hozzá ismerni, rengeteg kiegészítő eszköz létezik, nem elég mondjuk megtanulni a PHP-t, hanem tudni kell a HTML-től kezdve az adatbázisokig bezárólag mindent és a különböző magasabb szintű rendszereket is. (AJAX, Node.js, JSON, …)
  • A másik visszatartó erő az újrafelhasználtóság volt, létezik egy csomó féle böngésző, egy csomó féle képernyő méret és a sok technológia miatt úgysem lesznek igazán újrafelhasználhatóak az egyes program egységek. Ha valahol megcsináltál egy regisztrációs – bejelentkezős részt, akkor azt a másik honlapon majd gyakorlatilag a nulláról írhatod meg megint.

 

Azóta eltelt pár év, nem is igazán követtem a technológiai változásokat ezen a területen. Majd szépen lassan kialakult bennem egy kép, hogy szeretnék indítani egy programozással kapcsolatos weboldalt. Feltörtek bennem a régi emlékek, de tudtam, hogy valamit ki kellene találni. A legkézenfekvőbb megoldás, ha kiadod valakinek a honlap készítését. Persze senki nem akar sokat fizetni érte, így én sem akartam, valamint a minőséggel kapcsolatban is voltak aggodalmaim. De ha legalább olcsó lenne… Ismerősök ajánlották, hogy keressek külföldi irodákat, ők esetleg olcsóbban megcsinálják, hátha. Ez egy járható út, viszont a késés és a gyenge minőség garantált, ezt pedig mindenképpen el akartam kerülni. Ekkor találtam rá a WordPress-re…

 

Egy dobozos megoldás, ahol különböző sablonok segítségével össze tudod kattintgatni a weboldalad. Rögtön tudtam, hogy ez kell nekem! Kiderült, hogy a WordPress, nem csak, hogy kattintgatós megoldást kínál, de open-source is, tehát forráskód szinten látom az egész weblapot és ha valami nem tetszik akkor csak egész egyszerűen belenyúlok a forráskódba és átírom. Mivel az egész PHP-ban van implementálva, ezért néhány specifikus rész átírása nem jelent problémát.

 

Gondolom nem árulok el nagy titkot, hogy ez, amit most láttok, ez egy WordPress motoron futó sablon kicsit átdolgozva, személyre szabva. A sablon ingyenes volt és körülbelül 2 heti munkám van benne, hogy így nézzen ki, ahogy most. Illetve maga a WordPress motor is ingyenes. Így jön ki a végösszeg, ami egészen pontosan 0 Ft + az én 2 heti munkám, amit valószínűleg akkor is bele kellett volna tenni, ha kiadom valakinek a munkát. Bár tisztában vagyok vele, hogy valószínűleg a Programozz Te Is! weboldal eddigi kinézetétől senki sem esik le a székről, de ahhoz képest, hogy egy webfejlesztéssel foglalkozó cég elkér akár több százezer forintot is egy hasonló minőségű weboldalért, ahhoz képest elég jó szerintem. És nem kellett szívni a megjelenítéssel, animációkkal, adatbázisokkal.
(Egyébként épp most dolgozok egy nagyobb átalakításon, ami miatt már rettenetesen izgulok, szerintem szuper lesz és már alig várom, hogy nektek is megmutathassam. Terveim szerint olyan július vége felé fogok vele elkészülni.)

A WordPress legnagyobb előnye, hogy központilag van fejlesztve, ennek köszönhetően jól definiált interface-ei vannak. Ezzel pedig hatékonyan támogatja a kiegészítőket, Plugin-okat. Ma már pedig gyakorlatilag minden extra funkcióra létezik egy Plugin, amivel kattingatós módon meg lehet valósítani az adott funkciót. Például szükséged van egy „ragadós” honlap elemre, ami görgetés hatására együtt mozog a weblappal? Semmi gond, van rá egy Plugin. Mivel a WordPress-t rengetegen használják (értsd több millióan), ezért hatalmas fóruma van.

 

(more…)

Okos eszközök

Ebben a témában: Onfejlesztes

Okos otthon, okos óra, önvezető autó, ipari forradalom 4.0, robotok.

 

 

Ezek és ehhez hasonló kifejezések folynak ma már mindenhonnan ránk, TV, rádió, különböző hírportálok, minden okos lesz és nekünk nem kell majd mást csinálnunk csak hátradőlni és szürcsölgetni a koktélokat.
De vajon mi van ezek mögött a kifejezések mögött? Valóban nemsokára mindenhol robotok lesznek és minden munkát képesek lesznek elvégezni?

 

Úgy gondolom, hogy ettől még nagyon messze vagyunk. Egészen egyszerűen azért, mert az ember által végzett tevékenységek, bár sokszor csak rutin feladatnak tűnnek, igazából hihetetlenül komplexek. Gondoljunk csak bele egy olyan egyszerű feladatba, mint hogy kiöntök a konyhába egy pohár vizet és azt átviszem a nappaliba.

  • Milyen erősen fogja meg a poharat, hogy ne ejtse el, de ne is törjön rögtön össze?
  • Honnan vegye elő a poharat?
  • Mekkora a pohár?
  • Hol van a küszöb?

és még ezernyi kérdés, amire egy ember bármelyik pillanatban tudja a választ, mert már kiskorában megtanulta, de egy robotnak mindezt valamilyen matematikai nyelven le kell írni vagy képesnek kell lennie magától megtanulnia, felfedeznie. Ez egyrészt rengeteg idő, másrészről rengeteg adat, gyakorlatilag a kombinációk számával exponenciálisan nő az adatmennyiség, és minél komplexebb egy probléma annál több a lehetséges kombináció.

 

Ezért mára a célkitűzések is sokat finomodtak. Ma már nem sokan beszélnek általánosságban robotokról és a világot megváltó csoda találmányokról, ahol mindig minden helyzetet képesek megoldani ezek az új eszközök. Sokkal inkább abba az irányba mozdultak el a dolgok, hogy adott valamilyen szűkebb probléma, amire már ki lehet találni valamilyen specifikus megoldást és azt utána már le lehet programozni. Ezek általában az úgynevezett okos eszközök. Természetesen, ahogyan fejlődik a technika, úgy fér el ugyanazon helyen egyre okosabb és okosabb eszköz. Pontosan így alakultak ki a mai mobiltelefonok is. Először csak telefonálni akartunk bárhol. Rendben, az már simán ment, fejlődött a technika, akkor tudjunk üzenetet is küldeni. Rendben, már ez is ment, megint fejlődtek a processzorok, az akkumlátorok, akkor most legyen színes a kijelző, legyen rajta kamera, internet, és így tovább, és így tovább. Tehát látni kell a „fejlődést”. Először nem egy 5 colos, 8 magos mini számítógépet akartak alkotni, csak egy eszközt, amivel lehet telefonálni és nem vagyunk helyhez kötve. A többi pedig szépen fokozatosan jött. Érdemes szétnézni a világban, hogy vajon hány ilyen fejlődésnek az elejét láthatjuk éppen?

Mostanra pedig kialakult egy hatalmas felhajtás ezek körül az eszközök körül. Mert egyre több problémára alkotnak meg valamilyen okos eszközt és a mögöttes technológia pedig egyre gyorsabban fejlődik. És igen, elérkeztünk ahhoz a ponthoz, amikor a technológiai fejlődés már olyan mértékű, hogy esetleg 1-1 ember munkáját és ki tudják váltani ezek az eszközök, azáltal, hogy annyira monoton és annyira sablonos munkát végeznek, hogy az emberi mértékkel leprogramozható. Erre a legjobb példa a hatalmas gyártósorok automatizáltsága. Tudjátok, hogy mekkorák a legújabb automatizáltsági eredmények? Kínában sikerült elérni a 90%-t! (cikk itt)

(more…)