Berkeley DB error: PANIC: fatal region error detected; run recovery

Ezt a csodás hibaüzenetet olvastam, amikor ma reggel belenéztem a levelező szerver levelezési naplójába. Először kicsit megijedtem, majd jobban megijedtem, mert ez nem jelent semmi jót.

Végül megnyugodtam, mert a javítása sokkal egyszerűbb, mint az ember gondolná. Két lehetősége van a rendszergazdának:

  1. Tökölni a Berkeley DB recovery funkciójával: db_recovery /xxx/retry
  2. Törölni a fájlt, majd újra indítani az Exim -et! Ugyanis az Exim induláskor saját maga létrehozza a fájlt, hogyha nem találja meg! 🙂

CruiseControl.NET a gyakorlatban: Telepítés

Előző bejegyzésemben méltattam egy kicsit a CC.NET -et, de ideje, hogy a gyakorlati hasznát is megmutassam.

Kezdjük tehát a telepítéssel!

A telepítő csomagot a SourceForge oldalról lehet letölteni, az aktuális verzió 1.8.3.0.

http://sourceforge.net/projects/ccnet/files/

A forráskóda is letölthető innen:

https://github.com/ccnet/CruiseControl.NET

A letöltést követően a telepítő készletet elindítva elolvashatjuk a bevezető szöveget, majd el kell fogadnunk a CC.NET licencét.

Ha elfogadtuk, három komponenst tudunk telepíteni (mind a hármat érdemes!):

  1. CrusieControl.NET szerver alkalmazás: Ez a konkrét működést végző program
  2. Web Dashboard: Böngészőn keresztül is lehetőség van a build folyamatok menedzselésére, ehhez ad segítséget ez az alkalmazás
  3. Minták: Néhány minta a használathoz

A következő lapon két beállítást konfigurálhatunk:

  1. Telepítse a CC.NET szervert szervizként?  Ha igen, akkor a Windows szerviz alkalmazásai között meg fog jelenni, és felhasználói beavatkozás nélkül fog futni. Javasolt a beállítása!
  2. Hozzon létre virtuális könyvtárat az IIS -en belül a DashBoard -nak? Ha telepítve van IIS, akkor javasolt! Én Apache Web szervert használok, így nekem erre nem volt szükségem!

A következő lapon kiválaszthatjuk a telepítési könyvtárat, majd a program csoportot. Ha mindent jól csináltunk, akkor fél perc múlva már egy majdnem működő CC.NET lesz a gépünkön.

De mégsem!

Ugyanis ahhoz, hogy működjön, még szükséges a CC.NET konfigurációs állományainak szerkesztése!

A konfigurációs fájlt a következő könyvtárak egyikében találjuk meg:

“C:\Program Files (x86)\CruiseControl.NET\server\” 

vagy

“C:\Program Files\CruiseControl.NET\server\” 

A helyes működéshez három fájlt kell szerkesztenünk:

  • ccnet.config: Ez a build folyamatokért felelős állomány!
  • ccnet.exe.config: Ezzel tudjuk a parancssori CC.NET paramétereit beállítani.
  • ccservice.exe.config: Ezzel tudjuk a szerviz alkalmazásként futó CC.NET paramétereit beállítani.

Én a ccnet.exe.config beállításaival kezdtem. Ahhoz, hogy a teljes build folyamatot tesztelni tudjuk, érdemes először a parancssorból futtatni, és figyelni az üzeneteket. Ha már minden rendben van, és az elvárt működés szerint megy a build, át lehet váltani a szerviz alkalmazásra! 🙂

A beállítások főbb szekciói:

  1. Séma fájlok és helyük
  2. Naplózási beállítások
  3. Szerver működésének beállításai
  4. Általános beállítások
  5. Remoting beállítások

A séma fájlokat akkor érdemes módosítani, hogyha egyedi, céges riportokat szeretnénk kapni a build folyamatokról. Én személy szerint megelégedtem az általuk készített verzióval! 🙂

A naplózási beállítások már érdekesebbek, de mivel mi szeretnénk mindent látni, ezért a szintet (log4net/level/name=”TRACE”) nem bántottam. Ha kevesebbet szeretnénk látni, akkor a DEBUG vagy az INFO -t érdemes bekapcsolni.

A szerver működését befolyásoló beállításoknál alapesetben nincs semmi, ezt majd a ccnet.config -ban fogjuk bővíteni!

Az általános beállításoknál (appSetting) érdemes a naplózó fájlok helyét beállítani (ServerLogfilePath),  illetve a beépülő modulok útvonalát (PluginLocation).

A Remoting beállításnál tudjuk azt a portot és protokollt beállítani, amivel a későbbiek során a DashBoard és a CCNET Tray alkalmazás kommunikálni fog egymással. Ezt a <channel> node ref és  port attribútumaival tehetjük meg.

alapesetben TCP kommunikációval és a 21234 -es porton keresztül küldi az üzeneteket. Érdemes ezt a beállítást úgy hagyni, ahogy van, mert a legtöbb kiegészítő program ezen a porton keresztül próbál kommunikálni vele.

Ha ezeket a beállításokat végig vittük, ki is próbálhatjuk a működést a ccnet.exe elindításával.

CC.NET futtatása parancssorból

Google Chrome és a 64 bites Java

Úgy tűnik, nem telik el nap anélkül, hogy a Java 64 bites verziójának furcsaságaiba ne botlanék bele.

Ma a Google Chrome intett be nekem, amikor egy Java applettel ellátott web oldalt látogattam meg. Megjelent a jól ismert üzenet, miszerint frissítenem kellene a Java plugin -t. Meglepődtem, hiszen a Java fel lett telepítve a gépemre. Pár perc nyomozás után kiderült, hogy a Java 64 bites verzióját nem tudja kezelni a Google Chrome, hiszen ő “csak” 32 bites. Ezért aztán a 64 bites rendszeren szeretnék Java -t futtatni a gépemen a böngészőből, akkor bizony két Java -t kell telepítenem, egy 32 bitest és egy 64 bitest!

Szomorú vagyok!

CruiseControl.NET az alapoktól

Az elmúlt időszakban sikerült elég mélyen beleásnom magam a CrusieControl.NET rejtelmeibe, ezért úgy gondoltam, hogy itt az ideje ezt megosztani másokkal is, magyar nyelven!

Mi is a CrusoeControl.NET (továbbiakban csak CC.NET)?

Ahhoz, hogy a szoftverfejlesztés folyamatos és megfelelő minőségben történjen, szükséges egy olyan belső szabályozási rendszer, amely mind a fejlesztést-, a fordítást-, tesztelést-, és publikálást is keretek közé foglalja.

Több ajánlás is létezik, ezek közül az egyik (és talán kevésbé ismert) az CI, azaz  Continous Integration magyarra lefordítva Automatizált Folyamatos Integráció.

Lényegében egy ajánlás arra vonatkozóan, hogy a fejlesztési területeket (gyakran több fejlesztői csoport közös munkája egy rendszer) összefogva automatizált műveletekre támaszkodva segítse az építés (build), tesztelés (testing), és kiajánlás (deploy) folyamatát.

A CCl.NET a CI folyamatokat automatizáló szoftver. Azaz a teljes folyamatos integrációt automatizáló keretrendszer.  A CC.NET egy keretrendszert ad a build műveleteket felparaméterező kezébe, amellyel le tudja képezni a teljes folyamatot a saját szájíze szerint. Azon kívül, hogy keretrendszert ad, lehetőség van saját kiegészítők készítésére is, ha a CC.NET -ben nincs megfelelő eszköz rá (erről a későbbiekben még fogok írni!).

Egy tipikus példával szeretném szemléltetni ezt a folyamatot.

FejlesztőCég Kft két vezető fejlesztővel, 1 ügyfélszolgálati vezetővel, 8 fejlesztővel, 1 adatbázis szakértővel, 2 tesztelővel, 4 ügyfélszolgálatossal készíti az ÜgyviteliSzoftver 3.0 -t.

Az ÜgyviteliSzoftver 3.0 egy alkalmazásból, és a hozzá tartozó ügyviteli modulokból épül fel. Az alkalmazást 2 fejlesztő készíti, a pénzügyi modulokat 4 fejlesztő, míg az egyéb modulokat 2 programozó fejleszti. Az alkalmazást- és egyéb modulokat az egyik vezető fejlesztő, míg a pénzügyi modulokat és az adatbázis szakértőt a másik vezető fejlesztő felügyeli. A tesztelők és ügyfélszolgálatosok munkáját az ügyfélszolgálati vezető látja el.

Céljuk az, hogy napi build -ek, illetve release build -ek készüljenek egy – egy nagyobb fejlesztés / javítást követően.

A cc.NET ebben nyújt igen nagy segítséget.

A folyamatoknak összehangoltnak kell lenniük, és egymásra épülőknek, hiszen egy hibás modul miatt a napi build elromolhat, és a tesztelésre se kerülhet sor emiatt.

A build -re épül az automatizált tesztelés, erre épül a kipublikálás.

Ahhoz, hogy ne legyen Integrációs Pokol, minden build egy központi forrástárolóból, példánkban a Microsoft TFS -ben (Team Foundation Server) tárolódik. A fejlesztés programnyelve a Visual Basic .NET, Microsoft SQL Server -t használnak, és a deploy Microsoft Installer -el készül.

A FejlesztőCég Kft naponta, kétszer, 12 és 16 órakor szeretne napi build -et készíteni, továbbá hetente egyszer hétfőn release build -et.

A folyamat a következő lépésekből áll:

  • Aktuális forráskódok letöltése
  • Aktuális DB verzió letöltése
  • Aktuális DB verzióra “húzása”
  • A fő alkalmazás lefordítása
  • A pénzügyi modulok lefordítása
  • A kiegészítő modulok lefordítása
  • A fő alkalmazás automatizált tesztelésének indítása
  • A modulok automatizált tesztelésének indítása
  • Publikálási folyamat indítása

A folyamat bárhol elakad, arról a megfelelő csoportnak vagy embernek tudnia kell. 
A CC.NET -ben lehetőség van csoportok és felhasználók definiálására, e-mail címek beállítására, továbbá a csoportokhoz és felhasználókhoz jogosultságok beállítására.

Példánkban a vezető fejlesztő lesz az egész rendszer adminisztrátora. Létre hoz hét csoportot:

  1. Alkalmazás készítők csoportja
  2. Pénzügyi modul készítők csoportja
  3. Kiegészítő modulok készítőinek a csoportja
  4. DB csoport
  5. Tesztelő csoport
  6. Adminisztrátorok csoportja
  7. Menedzserek csoport

Vezető fejlesztőnket a teljes folyamat végeredménye érdekli, ezért a vezető fejlesztők, illetve az ügyfélszolgálati vezető a Menedzser csoportba kerül. A többi csoport tagjai értelemszerűen a megfelelő fejlesztők, adatbázis szakember és tesztelők. Az Adminisztrátor csoportba a két vezető fejlesztő kerül, ennek a csoportnak van joga az egész folyamatot menedzselni.

A megfelelően beállított jogosultságok után be kell konfigurálni a TFS hozzáférést, a megfelelő könyvtárakat (ahova a build készül), továbbá a DB elérhetőségeket.

Ha ezzel is elkészült, jön a folyamat legfontosabb része, a megfelelő dependencia felállítása.

Ezt a következők szerint definiálta az adminisztrátor:

  • Az adatbázis változások átvezetése (hiba esetén a DB csoportnak levél, és a folyamat leállítása)
  • Fő alkalmazás fordítása (hiba esetén levél az Alkalmazás készítők csoportnak, és a folyamat leállítása)
  • Pénzügyi modulok fordítása (hiba esetén levél az Pénzügyi modul készítők csoportnak, és a folyamat leállítása)
  • Egyéb modulok fordítása (hiba esetén levél az Kiegészítő modulok készítők csoportnak, és a folyamat leállítása)
  • Automatikus tesztek futtatása (hiba esetén levél a Tesztelő csoportnak, továbbá levél a hibás eredménnyel visszatérő modul vagy alkalmazást fejlesztő csoportnak)
  • Publikálás (hiba esetén levél a Menedzsereknek, továbbá a publikálási script -ért felelős csoportnak)
  • Sikeres publikálás esetén levél a Menedzser és a Tesztelő csoportnak

A napi build -ek így naponta kétszer készülnek, a megfelelő embereket értesítve.

De mi van a heti egyszeri release build -el?

Fontos, hogy a hétfői build működőképes és tesztelt legyen. Ezért a hétfői heti release folyamat a péntek 16 órai tesztelt build folyamathoz kötött. Azaz, ha pénteken 16 órakor nem készült működő és tesztelt verzió, akkor a hétfői release build se készül el!

A CC.NET -ben lehetőség van arra is, hogy kézzel indítsunk el folyamatokat, azaz ha a pénteki verzió nem működött, és emiatt nem indult el a hétfői release build, de hétfőn a 12 órás build tökéletesen lefutott, akkor az adminsiztrátornak lehetősége van kierőszakolni (force) egy build -et.

 

Ebben a rövid bevezetőben még nem tértem ki sok más, és izgalmas funkciójára a CC.NET -nek, de ami késik, nem múlik!

ABEV ÁNYK és a Windows 7 64 bit

Ma délelőtt szükségem lett volna az ABEV ÁNYK alkalmazásra egy nyomtatvány ellenőrzése miatt, így az APEH (elnézést, most már a sokkal szimpatikusabb NAV) honlapjára felmásztam, és letöltöttem. Pár nappal korábban telepítettem a Windows 7 64 bites verziójához a Java hetes verzióját, ezért probléma nélkül elindult az online telepítő. Pár percen belül már a gépemen is volt a program, nosza, kattintsunk az ikonjára!

PAFF!! Egy fekete ablak ugrott fel, de el is tűnt azonnal! Még háromszor próbálkoztam, de semmi eredmény. Ellenőriztem a futtatható fájlt, a c:\User\Public\abevjava\abevjava_start.bat -ra mutatott. Parancssor indítás, batch fájl indítás, majd pár hibasor, de az ÁNYK nem akart elindulni! 

Ellenőriztem, és a következőt találtam:

@CALL .\setenv.bat

@%ABEV_JAVA_HOME%java %MEMORY_OPTS% -jar boot.jar

@%ABEV_JAVA_HOME%java %MEMORY_OPTS% %TUNING_OPTS% %RUN_OPTS% -DentityExpansionLimit=128000 -jar abevjava.jar cfg=cfg.enyk %1 %2 %3

Mint látszik, a java.exe -t futtaná az ABEV_JAVA_HOME környezeti változóban beállított útvonalon. De bíz olyan nincs, ugyanis azt elfelejtette beállítani.

Utánaolvasás a NAV honlapján, ott figyelmeztetnek, hogy a 64 bites Java -t töltsem le, csak az lehet a hiba! Ellenőrzöm, azt töltöttem le!

Létrehoztam a környezeti változót kézzel, de ez se segített, mert az útvonalban szóköz van (Program Files), ezért egyfolytában hibát dobott. Ha az útvonalat macskakörmök közé tettem, akkor a batch fájl lett hibás, hiszen a futtatandó program kívül esett az útvonalon.

Végül kilistáztam a dir /X -el a Program Files könyvtár rövid alakját, és ezt írtam be a környezeti változóba. És láss csodát, elindult az ÁNYK!

És akkor íme a lépések, ahogy meg kell oldani:

  1. Start menüre kattintás
  2. Számítógép -re jobb oldali gomb, majd Tulajdonságok
  3. Speciális rendszerbeállítások
  4. Környezeti változók
  5. Rendszer változóknál Új… gomb
  6. Változó neve: ABEV_JAVA_HOME, változó értéke: C:\PROGRA~1\Java\jre7\bin\
  7. Mentés
  8. Ablakok bezárása
  9. A számítógépet újra kell indítani, hogy a környezeti változó “életbe lépjen” (Köszönet Zs -nek az információért!)
  10. ÁNYK indítása

Nyelvtanból egyes!

Ezt a csodálatos képernyőt, és még csodálatosabb fordítást láttam ma délután! Már a fogalmazással is vannak problémák, de a nyelvhelyesség egyes alá! 🙂

Ennyi hülyeséget egy helyen!!!
Ennyi hülyeséget egy helyen!!!

Akció, akció, akció!

Én se vagyok különb azoknál a fiataloknál, akik órákon keresztül járkálnak egyik üzletből a másikban egy bevásárló központban, a minél nagyobb leértékelésekért! 🙁

Már van vagy fél éve, amikor a Google hatalmas akciót hirdetett: Egyes alkalmazások a Google Play áruházban rendkívül kedvező áron vásárolhatóak meg.

Nosza, nézzük meg. Ámultam és bámultam, mert 300 – 500 Ft ért komolynál komolyabbnak tűnő programokat lehetett megvenni.

Lecsaptam rögtön négy applikációra, amelyek megtetszettek:

  • Asphalt 5, autós szimulátor játék
  • Disney Puffle Lanuch: emberkével futkosós, ágyuból kilövős játék
  • Adobe Sketch: rajzolós alkalmazás
  • Egy GPS -es szoftver

Az első kettőt a gyerekeknen gondoltam, míg a másik kettőt a saját szórakoztatásomra.

Nem véletlenül voltak ezek a szoftverek leárazva. 

Az autós játékkal nagyjából háromszor játszotta, majd hagytam a fenébe, kb. 1 hónapja töröltem végleg a telefonomról. A Disney játékra egyszer se néztek rá a gyerkőcök, nem mellesleg azért, mert nualmas…

Az Adobe Sketch programmal nem is lett volna probléma, de soha az életben nem szoktam rajzolgatni, főleg nem telefonnal, így ez is ment a törlendő alkalmazások listájára.

A GPS szoftvert egy darabig használtam, majd rájöttem, hogy irdatlanul sok hiányossága van, amivel más, ingyenes programok rendelkeznek. Neki is kuka lett a vége!

~ 1.800 Ft -ot kidobtam a szemétbe! 🙁

Diplomairigység

Nem újkeletű azon tapasztalatom, hogy vannak emberek, akiknek diplomairigységük van. Lelki probléma a javából!

Jellemző szimprómái:

  • A diplomásokra lekicsinylő megjegyzéseket tesz: “Ezért tanultál 5 évet, hogy ezt se tudod?”, “Ezt nem tanították az egyetemen?”
  • A diplomát rendszerint egy felesleges és haszontalan dolognak állítja be: “És attól, hogy diplomád van, jobb ember vagy?”
  • Zavarja, ha az egyetemi évekkel-, tanulmányokkal-, meg úgy általában a diplomával kapcsolatos téma merül fel
  • Saját szakmai tudását fitoktatja, ha egy diplomás embernek problémája van
  • Szereti kioktatni a diplomásokat
  • Élvezettel vesézi ki a diplomások által készített dolgokat (legyen az egy program, tervdokumentáció, tervrajz), rámutatva minden kis hibára
  • A diplomások által elkövetett hibákat kiemelten súlyosnak tekinti, és ezt szívesen hangoztatja szélesebb plénum előtt

A munkatársaim 95% -a diplomás, így könnyű a maradék 5% áskálódásait észrevennem. Szörnyen szánalmas a hozzáállásuk, és a kapálózásuk. 

Számomra ez azért furcsa, mert ha én észrevennék egy hibát, amit egy professzor követett el, akkor nem fikáznám-, szitkozódnék, hanem jelezném neki és próbálnék segíteni.

http://frissdiplomas.hu/palyakezdo_abc/szakertoi_tanacsok/a,1

Es és üvő

Vannak olyan reklámok, amelyek annyira modernek és egyediek szeretnének lenni, hogy átbillennek a ló túloldalára. Ezen reklámok egyike az évente megrendezésre kerülő Esküvő Kiállítás és Vásár, ahol a logó dizájnere teljesen belelendült, és sikerült a K betű helyére becsempésznie az angol & jelet (és). Ezzel még nem is lenne gond, hogyha az & jelbe valahogy becsempészte volna a K betű konturját, de erre nem is törekedett. Jól néz ki, a sok paraszt meg úgyis tudja, miről van szó!

Azt hiszem, ezt nevezik öncélú művészkedésnek! 🙂

1 2 3 4 5 33