Blog bejegyzések

Vámosi Gergely,
Szakinformatikus

gvamosi _at_ yahoo _dot_ com

2019-ben készült könyvem, a rövid című “Keress pénzt Linux-szal – Vámosi Gergely TechBlog – Alkoss Linux alatt :)” az alábbi címen érhető el https://gvamosi.wordpress.com/.

Az összes forrás elérhetősége

GitHub-on elérhető az egész könyv összes forrása, DB.dump-jai, illetve minden Apache config az alábbi címen. https://github.com/gergelyvamosi/wlammpp/tree/master illetve https://github.com/gergelyvamosi/wlammpp/tree/main – az otp_simplepay-woocommerce-payment-gateway, 0.0.2 javított.

Selenium teszt a böngészőből

Először is letöltjük a Selenium IDE-t a https://www.selenium.dev/ webcímről. Ez egy ipari standard a webalkalmazások automatizált teszteléséhez. Van robusztus megoldása is, a Selenium WebDriver, illetve elosztott teszteléshez a Selenium Grid. Nekünk bőven megfelel egy Chrome plugin a fejlesztő Debian 10.7 Linux gépemre – ahol Chrome-ot használok. Ez a plugin Selenium IDE része. Segítségével elég egyszerűen…

A “like” gomb működése és a cookie-k

Nézzük a két részletet, amelyek az előző részből kimaradtak. Az első rész a számláló növeléséért felelős. Ezt egy sima adatbázis UPDATE végzi a DBI interfészen keresztül. Fontos, hogy a finish() metódussal felszabadítsuk az utasítást, különben “lógna” a levegőben azaz a memóriában. A cookie-zás (sütizés) az egy kliensből történő többszöri like-olás megakadályozását szolgálja és az üzenetfejlécben…

A like-számlálójának működése, a REFERER a HTTP fejlécből

Minden további leírás helyett ideollózom a mylike-dbi.cgi azon részeit, amelyek a like-ok számának megjelenítéséért felelősek, illetve amelyek az első bejegyzés létrehozására alkalmasak. A kód magyarázata. Kivesszük a fejlécből a HTTP_REFERER-t. Ha ez definiált, akkor “éles” működés, ha nem akkor tesztüzemmód. Tesztüzemben az alábbi kimenetet kapjuk. Látható, hogy két REFERER szerepel az adatbázisunkban. Ezeket sorolja fel…

A Hello World! mod_perl DBI alkalmazás

A /etc/apache2/conf-enabled/mod_perl.conf file-t az alábbiak szerint módosítottuk. Lehet saját handler-t is írni, de most enm tértünk ki erre a lehetőségre. 🙂 Nézzük a hello-world-dbi.cgi programocskánkat majd a beágyazását az apartman “Képek” oldalába. Használjuk a DBI és az új Apache2-es Request modulokat, majd lekérdezzük a HTTP_REFERER-t illetve egy select-tel belefetchelünk az adatbázisba. 🙂 Figyelem! Nagyon fontos…

MySQL adatbázis és a Perl DBI és DBD::mysql modulok

Az adatbázis egyszerűen egyetlen egy táblából áll. Nézzük az SQL DDL kódot! Pár különleges megjelölést használunk a séma létrehozásakor. Alapértékeket állítunk be a DEFAULT kódszóval, illetve AUTO_INCREMENT-tet használunk, tehát automatikus id generálást, sőt: UPDATE esetén az updated mező értéke az aktuális időpőponttal automatikusan frissül! Parancssorból a mysql paranccsal “játszhatjuk be” az új adatbázisba új felhasználóval…

A “like” alkalmazás előtt

Mit is kell tudjon egy tetszőleges oldalba beágyazható like alkalmazás? Tulajdonképpen esetünkben arról van szó, hogy egy tetszőleges oldalon a weblapról egy tetszésnyilvánítást rögzíthessünk illetve kijelezzük a tetszésnyilvánítások számát. Nyilvánvalóan adatbázisra lesz szükségünk a dinamikus működés biztosításához. I. Először is két részre kell bontsuk a megvalósítást. Van egy számláló-kijelzés funkciónk, azaz hogy hány like volt…

Mérés – CGI (bash/perl/C), FastCGI vagy mod_perl? Melyik a gyorsabb? 🙂

És akkor jöjjön az igazság órája! Nézzük meg, hogy az előző két fejezet kis webalkalmazásai közül melyek a leggyorsabbak. Természetesen egy komplex webalkalmazás mérése beszédesebb volna, de reményeim szerint 1000 mérésből a curl programcsomag segítségével egy egyszerű script segítségével is ki tudjuk deríteni, hogy mi a helyzet. Kiindulás. A rendszer load-ja (leterheltsége) az utolsó 5…

Egyszerű számláló FastCGI perl és mod_perl implementációban

A FastCGI abban különbözik a CGI-től, hogy amíg a CGI egy kérésre egy folyamatot hoz létre a szerveren, a FastCGI újbóli futásra képes, újbóli betöltődés nélkül, ezáltal több kérést tud kiszolgálni egységnyi idő alatt, tehát nagyobb teljesítményt lehet vele elérni. Részletek itt https://en.wikipedia.org/wiki/FastCGI. Ha ilyet szeretnénk fejleszteni, először is installánunk kell az alapból nem telepített…

Egyszerű CGI számláló bash, perl és C nyelveken

Először is engedélyezzük a cgi modul-t az Apache webszerverünkben. Ez pár sor Debian 10.5 alatt root-ként (rendszergazdaként). Nézzük a serve-cgi-bin.conf konfigurációs file tartalmát! Látható, hogy a /usr/lib/cgi-bin könyvtárban kell létrehozzuk a számlálóinkat bash, perl és C nyelveken. Nézzük az elsőt bash shell script nyelven! És akkor teszteljük le parancssorból, majd web-en! Látható, hogy 1-et ír…

Apache config – a webszerver beállításának (konfigurációjának) alapjai, hasznos modulok

Ebben a fejezetben megnézzük, hogy mik a főbb konfigurációs direktívái az Apache webszerverünknek, és hogy milyen főbb beépülő modulokkal rendelkezik, és ezek hogyan konfigurálhatóak, ti. moduláris a felépítése. Van egy kisebb bemutató szócikk a magyar wikipédián, ez a https://hu.wikipedia.org/wiki/Apache_HTTP_Server cím alatt érhető el. Amit kiemelnék ez alapján az angol nyelvű szócikkből az, hogy a világ…

III. rész – Perl-ben írt “like” webalkalmazás – a HTTP protokoll és az Apache webszerver

Az Apache(2) webszerverünk a 80-as http porton “csücsül” alapból a rendszerünkben. Nézzünk picit bele a start-stop script-ek segítségével! Látható, hogy van pár opciónk. Megjegyzem, ez a Debian vagy Ubuntu struktúra. Root-ként az apache webszerverünket elindíthatjuk, leállíthatjk, újraindíthatjuk vagy a konfigurációt “menet közben” újratölthetjük. 🙂 Nézzük a processz (folyamat) listát! Látható, hogy az apache2 folyamataink www-data…

Kapcsolat oldal, levélküldés levélszerveren át

Először is telepítsük a sendmail levélszervert és a mail levelező programot, hogy legalább localhost-on le tudjuk tesztelni a levélküldést. Nagyon nem lesz nehéz dolgunk a CodeIgniter-t illetőleg, mivel támogatja a sendmail levelező csomagot. Ezután teszteljük le a levélküldést. Tegyük fel, hogy fut a sendmail felépítmény (szerver, leírás https://en.wikipedia.org/wiki/Sendmail). Láthatjuk, hogy a levelünk “Teszt levél” tárggyal…

Jelszóvédelem az admin oldalra, avagy az authentikáció egyszerű megoldása

Az adminisztrátori vagyis foglalás-menedzsment funkcionalitás eleve rejtve van a kíváncsi tekintetek elől, hiszen ha kint is van az Interneten, vagyis a “webtérben” az oldal, link nincs az admin oldalunkra a honlapon. Azonban ennél azért nagyobb biztonságra lesz szükségünk, ezért az egész admin funkcionalitást el kell rejtsük egy jelszóval védett területre. A jelszavas védelmet a CodeIgniter…

Admin funkció, foglalás jóváhagyása, AJAX JSON 🙂

Most már, hogy egy űrlapon keresztül foglalásokat lehet elküldeni, szükségünk lesz egy admin oldalra, ahol az apartman ügyintézője meg tudja tekinteni, illetve jóvá tudja hagyni a foglalásokat. Hogy mit jelent itt az hogy AJAX JSON? Elég érdekes öszvér elnevezés. 🙂 AJAX-szal normál esetben egy XML adatstruktúrát vinnénk át az aszinkron javascript üzenetben, ami valahogy így…

jQuery UI datepicker – a checkin és checkout mezők ellátása dátumválasztóval

Szeretnénk elérni, hogy a dátum mezőket ki lehessen választani a népszerű módon úgy, hogy “feljön” egy kis naptár egy ún. popup ablakban, ahol rákattintunk a kívánt napra, és a kivlasztott dátum bemásolódik a beviteli mezőnkbe a megadott formátumban. Ehhez le kell tölenünk a jQuery UI-t a https://jqueryui.com/download/all/ webcímről, majd az assets könyvtárunk megfelelő js, css…

jQuery AJAX – form elküldése a “háttérben” – foglalás oldal újratöltve

Az AJAX, azaz Asynchronous JavaScript and XML arra szolgál, hogy ne kelljen az egész weblapot újratölteni a form elküldésekor, hanem csak az adatokat, mintegy csendben a “háttérben” elküldeni, majd valami <div> tag-ben megjeleníteni a kívánt felhasználói üzeneteket. Részletesebb leírás az alábbi címen található https://hu.wikipedia.org/wiki/Ajax_(programoz%C3%A1s). Nem nagyobb feladatra vállalkozunk, minthogy az előbbi foglalás-űrlap elküldésünket aszinkron JavaScript…

Egy egyszerű form elküldése, a HTTP POST metódus, DB INSERT, foglalás oldal

Bár a dolgok “belseje”, mégis nézzük csak meg, hogy a model rétegnek mit kell tudnia. A models/Reservations_model.php file tartalmazza az adatbázis beszúrást, azt a bizonyos DB INSERT-et a címből. Az insert során vesszük a HTTP POST asszociatív tömbből a megfelelő értékeket, néhányat pedig “generálunk”, illetve “kiszámítunk”. Ilyen az apartment_id, a created_at, az updated_at és a…

Egyszerű oldal létrehozása – képek oldal

Egy egyszerű oldalt az apartmanunkat bemutató képekkel három egyszerű lépésben hozhatunk létre. A demo képeket letöltöttük ingyenesen a https://www.pexels.com/ oldalról és előzőleg már előkészítettük. Először is a controller-ünket kell megbűvölni. A controllers/Apartments.php file-hoz az alábbi sorokat fűzzük hozzá. Másodjára létrehozzuk a views/layouts/menu_layout.php sablon-t, ami alapvetően annyival tud többet a default_layout.php file-unknál, hogy a menüt is…

Többnyelvűség implementálása: Magyar, English, Deutsch

Szeretnénk, ha az oldalunk több nyelven is tudna, mivel lehetnek az apartmannak külföldi vendégei is. A CodeIgniter ezt alapból jól megtámogatja úgynevezett nyelvi file-okkal, illetve a hook funkcióval, nézzünk a megvalósításra egy egyszerű utat. Az alábbi webhelyen elég jó útmutatást kapunk, csupán egy picit változtatunk az implementáción. http://programmerblog.net/multilingual-website-in-codeigniter/ Először hozzunk létre nyelvi könyvtárakat. Nálunk az…

Refactoring (a kód újra rendszerezése), templating (sablonok használata) és menü

A legutóbbi fejezetben megírtuk a Hello, Világ! oldalunkat. Most ezt egy kicsit újra rendszerezzük. Bár kétségkívűl jól mutat, most mégis eltávolítjuk a controller-ből a _controller utótagot. 🙂 Ezt néhány file-átnevezéssel, illetve pár sornyi kódmódosítással megtehetjük. A hivatkozások miatt (referenciák) ezt a műveletet nyilván körültekintéssel kell elvégeznünk. Így az oldalunkat az alábbi címen is elérhetjük. http://localhost/apartman/index.php/apartments/index…

CodeIgniter modell réteg az adatbázissal és a Hello, World!

Programozóknak ugyan nem kell bemutatni Hello, World! fogalmát, de most kell hogy beszéljünk róla. A mai fejezetben szeretnénk létrehozni az adatbázist MySQL-ben, legyártani a modell réteget, majd adattal feltölteni, és a weben megjelentíteni. Mindezt mind saját kézzel írt kóddal, lehetőleg kevés kódsorban megvalósítva! Ez a Hello, World! – Helló, Világ! példánkban. https://en.wikipedia.org/wiki/%22Hello,_World!%22_program Hozzunk létre egy…

II. rész – Airbnb apartman foglalás – esettenulmány – PHP CodeIgniter keretrendszerben

Amint megígértem, ebben az évben folytatom, és remélhetőleg be is fejezem a webprogramozásról szóló online könyvemet. 🙂 Hogy jobban megértsük a webprogramozást, egy kis architektúrális ismertetőt kell tartsak. Általánosságban már szóltam a kliens-szerver felépítésről (https://wlammpp.wordpress.com/2019/10/03/mit-ertunk-webprogramozas-webfejlesztes-alatt). Egy webes alkalmazás a felhasználóval a böngészőn (browser) keresztül “lép interaktív kapcsolatba”. Ez azt jelenti, hogy a felhsználó egy böngésző…

Hasznos bővítmények (plugin-ok)

Rengeteg hasznos bővítményt találunk az alábbi webhelyen https://hu.wordpress.org/plugins/. Én most egyet emelnék ki, ez a woocommerce bővítmény https://hu.wordpress.org/plugins/woocommerce/ – online kereskedelemhez. Magyar kiegészítések a https://hu.wordpress.org/plugins/surbma-magyar-woocommerce/ webcím alatt találhatóak. A woocommerce a webbolt vagy webshop vagy online-shop magyarul, illetve WordPress-ül. 🙂 Ehhez volt szerencsém 2019-ben egy online bankkártyaelfogadást fejleszteni. Az alábbi honlapion lehet elérni: http://www.rcs.hu/webshop/. Licensz…

Oldalsáv, eseménynaptár widget (My Calendar bővítmény)

Az oldalsávba kerülhet pl. naptár widget. Ezt az alábbi webhelyről tölthetjük le és telepíthetjük: https://hu.wordpress.org/plugins/my-calendar/. Amennyiben egy tárhelyszolgáltatónál vagyunk vagy vesszük a fáradságot beállítani a dolgokat, úgy pár kattintással is telepíthetjük a widget-et. A kettes adminisztrátori képernyőn a Bővítmények / Új hozzáadása menüpont alól indul a telepítés. Keresősztringnek a calendar-t adom meg. Innen a “Telepítés…

Oldalsáv (sidebar) alapok

A Coality sablonunkban ugyan nem a címlapon, de van lehetőség aloldalakon oldalsáv megjelenítésére. Ezt úgy is nevezik a WordPress terminológiában, hogy Widget-ek. A kettes képernyőn a Megjelenés / Widgetek menüpont alatt vagy a hármas képernyőn wysiwyg szerkeszthetjük. A Testreszabás / General Settings / Page Options alatt jelölhetjük ki, hogy right vagy left vagy hogy egyáltalán…

A blog tartalom

A blog tartalom a voltaképpeni weblap tartalommal megegyezik. Blog bejegyzések különböző kategóriák alá – ezel különböző menüpontok alá – tartozó halmaza a tulajdonképpeni “hálózatos” honlaptartalom. Új blogbejegyzést legegyszerűbben – miután beléptünk adminisztrátorként a http://localhost/hegypasztor/wp-admin/ webcímen – a https://wlammpp.wordpress.com/2019/10/07/wordpress-honlap-szerkesztese-szerkesztesi-utak/ írásomban az egyes képernyőn a felső menüsorban vehetünk fel. Ezután a megjelenő wysiwyg – what you see…

Nyitólap – “sima” oldalak – kapcsolat, Hero szekció, szolgáltatások, CallToAction szekció

A sablon több helyütt is “nevesített” oldalakra – nem blogbejegyzésekre – támaszkodik. Ezeket az oldalkat az 1-es képernyő “Új” menüje alatt az “Oldal” almenü kiválasztásával, illetve a 2-es képernyőn az “Oldalak” menüpont alatt az “Új hozzáadása” gomb megnyomásával hozhatjuk létre. A kapcsolat oldalt vegyük csak fel új oldalként! 🙂 Felhívnám a figyelmet egy apróságra. Nem…

Menü(k), kategóriák (taxonómia) és tag-ek vagy címkék (terms)

Blogbejegyzések, menük, kategóriák – de mindezt hogyan? A kategóriákat megfeleltethetjük menüpontoknak! Egyébként a kategóriák az október 5-ei post-ban is szereplő wp_terms és wp_term_taxonomy táblában vannak letárolva. 🙂 Először is hozzuk létre a kategóriákat. Ezt a 2-es, adminisztrátori képernyő Bejegyzés / Kategóriák menüpont alatt tehetjük meg. Ahogy ezzel megvagyunk, hozzunk létre egy új menüt a 3-as…

Sablonok (template-ek), a webszerkesztés alapjai, mobilbarát WordPress

Mostanában, hogy WordPress-szel kezdtem honlapokat gyártani, több ingyenes sablont is kipróbáltam, és használok is a mai napig. Emlékszem, hogy 20 éve is már külön “generáltuk” a fejlécet és a láblécet. Ma még részletesebb lett a kép, de a lényeg aligha változott. Az általánosan használt aloldali “layout”, azaz elrendezés az alábbi ábrán látható. A fejléc általában…

WordPress honlap szerkesztése, szerkesztési “utak”

Új honlapunkat összesen három különböző felületen lehet szerkeszteni. 1. Egyes képernyő, maga a honlap, szerkesztési lehetőségekkel az oldalon, illetve a felső menüsorban – http://localhost/hegypasztor/. az 1-es képernyő elérhető a 2-es képernyőről: Vezérlőpult menüpont, Tekintsük meg a honlapot link, illetve bal felül Hegypásztor Kör Oszkó 2. Kettes képernyő, az adminisztrátori felület, innen minden módosítható, és itt…

Webcím: URL-képzés, Apache document root, keresőbarát URL, HTTP GET és POST metódusok

Az URL (Uniform Resource Locator), mint URI (Uniform Resource Identifier, egységes erőforrás-azonosító) többnyire szinonímája a webcímnek, holott valójában nem csak webcímet jelöl. Tény azonban az, hogy webcímként az ún. namespace-ben (névtér) egyedileg azonosít az egész világhálón egy helyet. 🙂 https://hu.wikipedia.org/wiki/URL https://hu.wikipedia.org/wiki/URI URL-ek, a teljesség igénye nélkül: http://dummy.restapiexample.com/ – ez már kacsintás a REST (Representational State…

A WordPress – és ami mögötte van: adatbázis és DbVisualizer

Tehát már van egy honlap-vázunk WordPress-ben. De mi köze ennek az adatbázishoz? Ennek járunk ma utána. 🙂 A DbVisualizer egy JAVA-ban írt adatbázis-feltérképező szoftver. Van Debian “.deb” csomagban is, az alábbi linkről telepíthetjük. https://www.dbvis.com/download Installálni igen egyszerű. root@gergo1:~# dpkg -i dbvis_linux_10_0_22.deb Ezután jöhet a konfiguráció – új kapcsolat varázsló – pár lépésben. A DbVisualizer ún.…

I. rész – WordPress webfejlesztés – A WordPress telepítése

Hogy miért választottam a WordPress-t? Mivel itt gyakorlatilag nem is kell programozni; ezt a rendszert elég testreszabni és feltölteni tartalommal. A beállítások nagy része programozási ismeretek nélkül is elvégezhető. 🙂 A telepítés előtt győződjünk meg róla, hogy a szerveren rendelkezésre áll-e adatbázis szerver (MySQL vagy MariaDB), Apache vagy nginx webszerver és telepítve van-e a PHP…

Mit értünk webprogramozás, webfejlesztés alatt

A 21. századra rárobbant az információs kor. A World Wide Web, azaz a WWW kora, az Internet multimédia-tartalommal bíró kommunikációs csatornája, a kiszolgáló oldali (web)szerverek – ez volna az Apache vagy az nginx -, és a kliens oldali böngészők – Chrome, Firefox, Edge – kommunikációjaként előálló interakció. Az egész Internet lényegében tekinthető egy online adatfeldolgozó,…