Posts Tagged ‘devel’

Oracle adatbázis séma gyors törlése

Saturday, October 15th, 2016

Le akartam törölni pár nagyobb sémát Oracle alatt, aminek az lett az eredménye, hogy 20 órát futott a DROP USER… Kis olvasgatás után az körvonalazódott, hogy ezt a funkciót nem sikerült jól implementálni, ezért inkább töröljek kézzel mindent, és csak a végén töröljem a már üres sémákat… Nagy nehezen kiizzadtam magamból a lenti scriptet, ami működik is, de mivel az impdb implementációja sem sikerült teljesen ezért a végső megoldás az lett, hogy el kell dobni a teljes adatbázist, és újra kell gyártani nulláról… De ha már megírtam, akkor elmentem, hátha még jól jöhet a későbbiekben…

BEGIN
  FOR r1 IN ( SELECT 'DROP ' || object_type || ' ' || owner || '.' || object_name || DECODE ( object_type, 'TABLE', ' CASCADE CONSTRAINTS PURGE' ) AS v_sql
               FROM all_objects
               WHERE owner in ('SCHEMA1', 'SCHEMA2') AND 
                object_type IN ( 'TABLE', 'VIEW', 'PACKAGE', 'TYPE', 'PROCEDURE', 'FUNCTION', 'TRIGGER', 'SEQUENCE' ) 
                ORDER BY object_type, object_name ) LOOP 
    BEGIN 
     EXECUTE IMMEDIATE r1.v_sql; exception when others then null; 
    END; 
   END LOOP; 
  END; 
/ 

DROP USER CUSTOMER SCHEMA1 CASCADE;
DROP USER CUSTOMER SCHEMA2 CASCADE;

Indie game dev infograph

Saturday, July 30th, 2016

Ritkán adódik alkalom arra, hogy belelássunk egy-egy független játék készítésének költségeibe, és bevételeibe, pedig ezek elég jó támpontot nyújthatnak azoknak, akik ilyesmiben gondolkoznak. Nem is tudom mit tehetnék hozzá, beszéljenek helyettem a számok…

 

 

Svn pre-commit hook and conflict markers

Tuesday, October 20th, 2015

Előfordul néha, hogy a nagy lelkesedésben conflict makereket tartalmazó fájlt commitolnak a fejlesztők a repository-ba. Ez nem túl gyakori hiba, de azért tud kellemetlen lenni. Keresgettem egy kicsit, de nem találtam nekem tetsző script-et, ezért írtam egyet.

 

SVNLOOK=/usr/bin/svnlook
for x in `$SVNLOOK changed "$REPOS" -t "$TXN"`; do
 if [ "$updated_file" == true ]; then
    mimetype=`$SVNLOOK propget "$REPOS" svn:mime-type -t "$TXN" "${x}" 2>/dev/null`
    #ignore binary files
    if [ -z ${mimetype} ]; then
      if $SVNLOOK cat -t "$TXN" "$REPOS" "${x}" | grep -qE '^+?(<<<<<<<|>>>>>>>)'; then
        echo "Commited conflict marker detected, commit rejected!" 1>&2 && exit 1
      fi
    fi
    updated_file=false
    continue
 else
    if [ "$x" = "U" ]; then
      updated_file=true
    fi
 fi
done
set -e

Új mame, régi frontend

Tuesday, September 8th, 2015

A mame-t minden játéktermi gépen edződött fiatal ismeri (aki valamiért mégsem, gyorsan kezdjen ismerkedni vele :). Zseniális emulátor, de a fejlesztők a minél tökéletesebb emuláción kívül nem sok mindennel foglalkoznak (szerencsére), ezért sokan gyártottak hozzá különböző front-end-eket.

Ellenben az utóbbi időben az újabb mame verziókkal valahogy semmilyen front-end nem akart működni. Ennek az az oka, hogy a mame v.162 óta megváltozott a generált gamelist.xml fájl formátuma, aminek tartalmára a front-end-ek erősen támaszkodtak. A változás miatt az újabb mame verzió által generált xml fájlon már nem nagyon igazodnak ki.

Erre jelenthet megoldást az alábbi parancs:

</pre>
sed -e "s/machine+/game+/g" -e "s/<!ELEMENT machine/<!ELEMENT game/g" -e "s/<!ATTLIST machine/<!ATTLIST game/g" -e "s/<machine/<game/g" -e "s/<\/machine/<\/game/g" < gamelist.xml > gamelist_of.xml
<pre>

Ez az új formátumú mame gamelist.xml-t konvertálja át a régi formátumra.

A problémáról az alábbi linken írnak a Mala front-end kapcsán, de ugyanúgy érinti a Maximus Arcade felhasználókat is:

http://forum.arcadecontrols.com/index.php/topic,145865.0.html

 

 

Intel INDE

Thursday, September 3rd, 2015

A mobil alkalmazásfejlesztés terén sokan próbálkoztak már mindenféle cross platform fordítóval, most úgy tűnik, hogy egy igazán nagy név is beszáll a játékba:

https://software.intel.com/en-us/blogs/2015/07/30/multi-os-engine-of-intel-inde-technical-overview

XML fájlok szerkesztése parancssorból

Tuesday, August 18th, 2015

Egyre több program tárolja az adatokat XML formátumban, ami kezelése nem egyszerű a hagyományos parancssori eszközökkel (grep, sed, és társai). Az XML formátum kezelésére viszont léteznek már újabb eszközök, mint például az XmlStarlet. Ez gyakorlatilag egy parancssori XML szerkesztő tool, melynek segítségével könnyedén nyerhetünk ki, vagy adhatunk, módosíthatunk adatokat az XML formátumú fájlokban.

A használata során nem árt képben lenni az XPATH fogalmával, és formátumával. Ehhez jó kiindulási alap lehet az W3Schools leírása. A munka során jó szolgálatot tehetnek még az online XPATH teszterek, generátorok.

Egy sok xml-t módosító (alap) script valahogy így néz ki a gyakorlatban:

#!/bin/sh
WORKSPACE=/cygdrive/t/work/

for x in `ls -d ${WORKSPACE}/*/`;
do
  PROJ_FILE=${x}build.xml
  if [ -f ${PROJ_FILE} ]
    then
    echo Processing build file: ${PROJ_FILE}
    xmlstarlet ed -O -P -a "/project" -t attr -n default -v "rebuild_release" ${PROJ_FILE}
  fi
done

A futtatás során a megadott könyvtár alkönyvtáraiban található build.xml fájlok tartalma az alábbi képpen módosul:

Eredeti tartalom:

<?xml version="1.0" encoding="UTF-8"?>
<project name="ac">
	<import file="../build/common.xml"/>

Tartalom a módosítás után:

<?xml version="1.0" encoding="UTF-8"?>
<project name="ac" default="rebuild_release">
	<import file="../build/common.xml"/>

A példa nem vizsgálja, hogy az XML tartalmaz e már default attribútumot, de ezt igény esetén egy újabb xmlstarlet query-vel és egy if-el könnyedén ellenőrizhetnénk. Jelen működés alapján, ha kétszer futtatnák le a fenti kódot, akkor az xml-ekben 2x kerülne beszúrásra a default tag.

 

HTML alapú pdf riporting engine

Wednesday, September 10th, 2014

Úgy látszik mások is gondolkoztak már azon amin én mostanában, hogy milyen jó lenne NodeJS-el szerver oldalon generált html-ekből PDF riportokat generálni (először grafikonok rajzolásán gondolkoztam, csak utána tovább gondoltam).

Az alábbi cikk elég jó a témában: http://www.feedhenry.com/server-side-pdf-generation-node-js/

Sajnos a sejtésem beigazolódni látszik, bár technológiailag egy működő, jó megoldás, erőforrás kell egy ilyen rendszer alá, és elsőre úgy tűnik nem is kicsi…

Selenium headless test

Tuesday, August 19th, 2014

A selenium egy zseniális eszköz, én személy szerint nem csak tesztelésre, hanem folyamat automatizálásra is egyre többet használom. Néha egyszerűen x nélkül szeretném használni, hogy csinálja meg amit szeretnék, a többi dolog nem is érdekel.

Ehhez az alábbi dolgok szükségesek:

  • firefox (apt-get install firefox)
  • java (apt-get install default-jre)
  • selenium, és selenium RC (lásd később)
  • egy két csomag, hogy fusson a firefox x nélkül (apt-get -y install xvfb x11-xkb-utils xfonts-100dpi xfonts-75dpi xfonts-scalable xfonts-cyrillic libstdc++5 xserver-xorg-core xauth dbus-x11)

Első lépésként bármilyen gépen el kell készíteni magát a teszt esetet. Ehhez a firefox alá fel kell telepíteni a selenium plugint, amiben a record-al felvehetjük amit csinálunk, majd menthetjük. Fontos, hogy nekünk nem csak egy teszt esetre (test case), hanem egy test suite-ra is szükségünk lesz. Tehát először mentsük a tesztesetet (File – Save Test Case) majd a hozzá tartozó Test Sutie-ot is (File – Save Test Suite).

Ezek után irány a linux, ahol az alábbi script-el tudjuk elrúgni a tesztet:

#!/bin/sh
Xvfb -fp /usr/share/fonts/X11/misc/ :22 -screen 0 1024x768x16 2>&1 &
export DISPLAY=:22
java -jar selenium-server-standalone-2.42.2.jar -htmlSuite "*firefox" "http://192.168.2.1" "rrestart_suite.html" "results.html"

A fenti példában:

  • “http://192.168.2.1” – az oldal címe, amint a tesztesetet le fogja futtatni
  • “rrestart_suite.html” – a test suite neve
  • “results.html” – ebbe a fájlba kerülnek naplózásra futási eredmények

Egyébként a seleniumot meg lehet hajtani java programból is, ami egy sokkal érdekesebb téma(ez által lehet pl. excel adatforrás alapú tömeges tesztelést végezni). Ha lesz időm, talán arról is készül majd egy rövid cikk.

Mac UI guidelines

Wednesday, May 28th, 2014

Az OS X hakkolás közben ráakadtam egy olvasmányos anyagra, a felhasználói élményről, egyenesen az apple tollából. Érdemes elolvasni, vannak benne jó dolgok.

 

OSX telepítés virtualbox alá

Monday, May 26th, 2014

Ha az ember olyan programot ír, ami több platformon is működik, akkor jó eséllyel hibákat is fog kapni ezen platformokról. Kedvenc hobbi projektem miatt égetően szükségem lett egy osx-re, hogy egy két dolgot meg tudjak nézni. Már egy ideje virtualbox-ban használom a linuxot, gondoltam próbát teszek az OS X-el is, hátha.

Találtam egy cikket a lifehacker-en, ami alapján úgy tűnt, hogy van esély működésre bírni egy OS X-et a virtuális gépben… Ezen felbuzdulva le is töltöttem egy jónak tűnő OS X telepítőt, aminek a leírásában szerepelt a hacked, meg a virtualbox szó… 🙂

Első próbálkozásom hatalmas kernel pánikok, fagyások jellemezték… Itt kétségbeestem, és próbálkoztam mindenfélével, pl. az iBoot-al amivel el is indult a telepítő, hogy a végén jól szétfagyjon.

Aztán ráakadtam egy blog bejegyzésre, ami alapján úgy tűnt, hogy életre lehet kelteni a mac-at iBoot nélkül is, csak el kell hitetni az OS X-el, hogy amin fut, az egy mac. Ezt azért egy virtuális gépen nem is olyan nehéz megtenni, a 6. pont a lényeg.

<ExtraDataItem name="VBoxInternal2/SmcDeviceKey"
   value="ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc"/>
<ExtraDataItem name="VBoxInternal2/EfiGopMode" value="2"/>

Valamint még a <Firmware type=”EFI”/> átírtam  <Firmware type=”EFI64″/> -re.

Szerencsére a virtualbox konfigurációs fájl egy xml (csak a kiterjesztése .vbox), szóval nem is variáltam, beleírtam mindent, és láss csodát:

Screenshot 2014-05-26 13.53.41

 

 

Virtuális gépen picit lassúak az animációk, azokat érdemes kikapcsolni. Erre található ehhez egy jó leírás, ami alapján én az alábbi dolgokat kapcsoltam ki:

sudo defaults write NSGlobalDomain NSAutomaticWindowAnimationsEnabled -bool NO
sudo defaults write com.apple.dock expose-animation-duration -int 0
sudo defaults write com.apple.dock springboard-show-duration -int 0
sudo defaults write com.apple.dock springboard-hide-duration -int 0

És már csak a hálózati kapcsolat volt hátra… Ehhez a default gateway-t kellett megtudni:

route -n get default

ami a gazda gép ip címe a natolt hálózaton. Ehhez csatlakozva már elérhetőek a windows megosztások:

Finder -> Go -> Connect to server: smb://10.0.2.2

Öröm boldogság…

 

Ui: XCode 5-höz OS X 10.8.4 kell, nekem pedig 10.8.0 van, nem akartam szenvedni az upgrade-el, maradtam a 4.6.3 verziónál, de ez az apróság már csak a letöltés, és a telepítés után derül ki…

A a java fejlesztéshez szükséges eszközök terén is volt egy kis kavar, de ezen már meg se lepődök, viszont ennek kapcsán elég sokat futott az osx (böngészés, futtatás, konfigurálgatás), és eddig hibátlanul működik.