Több mysql szerver egy gépen
Több Mysql szervert futtatni például akkor előnyös,ha például kapunk egy adatbázis-dumpot, amiből majd importálnunk kell, és nem akarunk kockáztatni. Akkor is hasznos, ha az adatbázis szinkronizációt akarjuk gyakorolni, ami a mentéseknél is jól jön. Esetleg, ha valamelyik adatbázisnál más beállításokat akarunk.
Az egész nagyon egyszerű, de mire sweetchuck-al rájöttünk a cégnél, az eltartott legalább egy napig. Úgyhogy most mindenkinek spórolok egy napot. Ezt a plusz egy napot, mindenki eltöltheti a családjával, meditációval, ivással esetleg bugok kijavításával.
Nos. Véssük a következő kódot a /etc/mysql.my.cnf file végére:
[mysqld_multi] mysqld = /usr/bin/mysqld_safe mysqladmin = /usr/bin/mysqladmin log = /var/log/mysqld_multi.log [mysqld1] port = 3306 datadir = /var/lib/mysql pid-file = /var/lib/mysql/mysqld.pid socket = /var/lib/mysql/mysql.sock user = mysql [mysqld2] port = 3307 datadir = /var/lib/szartrapaltak/partraszaltak1 pid-file = /var/lib/szartrapaltak/partraszaltak1/mysql.pid socket = /var/lib/szartrapaltak/partraszaltak1/mysql.sock user = mysql
A [mysqld1] szekció az eredeti mysql-t jelöli, ami jelenleg is fut a gépen. Ez azért van itt, mert alapvetően csak egy fajta mysqld futhat, ami most valószínűleg a mysqld_safe. Ehelyett majd a mysqld_multi-t fogjuk futtatni. Ez azt is jelenti, hogy a jelenleg futó démont meg kell állítanunk. Ehhez nem kell átülni a játékkonzol elé. Elég, ha beírjuk a konzolba hogy:
sudo service mysql stopEz a /etc/init.d/mysql stop kisebbik fia. A papa is elbánik a démonnal.
A [mysqld2] -ben vannak az új szerverhez tartozó beállítások. A legfontosabb a datadir. Ebbe a könyvtárba kerülnek az adott szerverhez tartozó adatbázisok. Ezt a könyvtárat létre kell hozni, majd installálni az alap mysql adatbázist:
mkdir /var/lib/szartrapaltak/partraszaltak1 sudo mysql_install_db --user=mysql --datadir=/var/lib/szartrapaltak/partraszaltak1
A létrehozás könnyű, mint a pipa füstje, viszont az adatbázis installálása ellen kemény páncél véd, ezt az Ubuntu nem hagyja. Nem liszenszelési, hanem biztonsági okokból. Ezt a biztonságot az Apparmor jelenti. (Én ennek a problémának a megoldását kerestem sokáig.) Nem a legszebb megoldás, és valószínűleg biztonságtechnikailag is kifogásolható, de én a /etc/apparmor.d/usr.sbin.mysqld file-t átraktam máshová (sudo mv /etc/apparmor.d/usr.sbin.mysqld ~/), és újraindítottam apparmort. (sudo service apparmor restart). Ezek után a sudo mysql_install_db --user=mysql --datadir=/var/lib/szartrapaltak/partraszaltak1 is működött.
Ezután (persze, ha már leállítottuk az eredeti démont) már indíthatjuk a
sudo mysqld_multi start 1,2parancsot, ami elindítja a két szervert. Ugyanígy (stoppal) le is állithatjuk őket. További paraméterek a mysqld_multi oldalán.
Természetesen így szinte akármennyi mysql szervert indíthatunk. Érdemes a portokat sorban adni, .pid és a .sock file-okat ugyanabba a könyvtárba tenni, ahol a data-dir van. Kész is vagyunk, futnak a szerverek.
Viszont nagyon keveset érünk vele, ha nem tudunk hozzájuk kapcsolódni. Bár úgy néz ki, hogy a localhost és a 127.0.0.1 egy és ugyanaz, de mégsem. Ha a mysql-nek kapcsolódási pontként localhost-ot adunk meg, akkor a socketen keresztül akar csatlakozni. Ha 127.0.0.1-et, akkor viszont a porton keresztül. Ezt régebben szintén egy nap volt megfejtenem, úgyhogy ez már két nap. Szerintem vidd el a csajt a Pastramiba.
Tehát a:
mysql --host localhost -u root -p -P 3307(itt a -u a felhasználót, a -p azt jelenti, hogy bekérje a jelszót, ha akarjuk közvetlenül space nélkül beírhatjuk a jelszót is, a -P elvileg a portot jelenti). Beírásakor az eredeti szervert érjük el. Ilyenkor nem veszi figyelembe a -P kapcsolót, mindenképpen a socket-en keresztül kapcsolódik. Próbáljuk ki, a -P után nyugodtan írjuk be a feleségünk és a barátnőink életkorának számtani közepét, (ha ez 3306, akkor menjünk orvoshoz) akkor is ugyanoda fog csatlakozni. Tehát a megfelelő megoldás a:
mysql --host 127.0.0.1 -u root -p -P 3307
Viszont mit sem ér az egész, ha Drupallal nem tudunk csatlakozni az új adatbázishoz, hoszen alapvetően az egészet azért csináljuk, hogy valami elmaradott register_globals-t használó (Te is csináltál ilyen site-ot!!! Ne röhögj!!!) weboldal adatait szeretnénk importálni, az új, csillogó-villogó (nem flash), bár egy kicsit tartalom nélkül való drupal weboldalunkba. Ehhez az kell, hogy a drupal két adatbázist is tudjon használni. Ehhez a következőt kell írni a settings.php-ba (aki nem tudja hol van, ne is írjon bele, ezt a file-t installáláskor létre kell hozni):
$db_url['default'] = 'Ide jön az, ami a $db_url-ben van'; $db_url['ahonnanimportalunk'] = 'mysql://root:@127.0.0.1:3307/partraszaltak';
Ezek után a db_set_active() függvénnyel tudunk váltogatni a két adatbázis között.
A leírás Ubuntura (és gondolom Debianra) vonatkozik. El kell ismernem, hogy OpenSuSe-n az egész sokkal egyszerűbb, de ez legyen egy másik blog témája.
Névnapi küzdelem a CVS-el
- Egy programot nem lehet befejezni, csak abbahagyni.
- Egy adott projektet egy adott időpontban, - ami akár a projekt közben is lehet - az ember részben vagy egészben teljesen újraírna.
- A programozók olyanok mint az autószerelők. Mindegyik a másik munkáját szidja, főleg, ha azzal neki is dolgoznia kell.
Igaz ez a modulfejlesztésre, sminkkészítésre illetve weboldal-építésre is.
Elég gyakran előfordul, hogy a kedves megrendelő szeretné valahová kitenni az épen aktuális névnapot. Gondoltam, milyen jó is lenne, ha lenne egy erre használható modul, amit bárki bármikor letölthetne a drupal.org-ról. Neki is láttam a modulnak, ami alapból egy blokkot jelenít meg, az aktuális névnappal. Persze, hogy ne csak mi magyarok járjunk jól, úgy csináltam meg, hogy bármely nyelvterületen használható legyen. (Mondjuk ezzel akadtak problémák, mert a drupal nem nagyon támogatja az l10n-t, de ez most mellékes.) Szóval megvolt a modul, és ezzel igényeltem is egy CVS account-ot, amit azóta sem kaptam meg, ha jól értem azért, mert kellene valami hosszú motivációs üzenet vagy mi.
Gondoltam, így két hónap után írok valami hosszabb leírást screenshot-al (bár az csak sminkhez kell elvileg), mindennel.
Viszont közben elkövettem egy hibát. Letöltöttem a modult, és megnéztem a kódot. Azóta kétszer átírtam. Csináltam neki egy beállító oldalt is, amiben be lehet állítani, hogy kiírja-e, és ha igen milyen formátumban a dátumot, ha ünnepnap van azt kiírja-e. Közben írtam egy függvényt, ami visszaadja az aktuális névnapot. Ezt utána kitöröltem, mert van benne egy smink, amit ugyanolyan jól lehet használni, csak jobban konfigurálható. Viszont nem biztos, hogy mindenütt ugyanúgy akarjuk ezt felhasználni, ezért tettem bele Token támogatást is. Így pld. Pathautoba az aktuális napi dátumba mellé be lehet tenni az aktuális névnapot, de mindenütt lehet használni, ahol token támogatás van. Szerintem ezt a lehetőséget még én sem fogom soha használni, de jól mutat. Talán Simplenews-nál van értelme. Közben eszembe jutott, hogy ezt a token dolgot kicsit finomítani kell, hiszen nem biztos, hogy az, aki az adott node-ot elküldi, ugyanazon a nyelven használja a drupal-t, mint ami a cikk nyelve lesz. Ráadásul olyan nyelveknél, ahol nincs meg a névnap támogatás nem is kellene a blokkot megjeleníteni. mondjuk ezt már rá lehet bízni a site-builderre.
Ha most nem hagyom abba, - persze tesztelni kell -, akkor soha nem lesz készen.
Viszont, ha valaki megmondaná, hogy miért nem kapok CVS-accountot, annak nagyon örülnék.
A mellékletben megtaláljátok a modul aktuális változatát. Ezt még nem töltöm fel, mert a leírás még nem az igazi
Hogyan jutunk 6-ról a 7-re
Modulok konvertálása 6-ról 7-re
Sminkek konvertálása 6-ról 7-re
Bónusz1: Mire kell figyelni Drupal 7 smink frissítésnél
Bónusz2: Drupal 7 újdonságok sminkfejlesztői szemmel
Bónusz3: Drupal 7 újdonságok programozói szemmel
Úgy nézem, több lett a bónusz.
Fejlődés
Szóval itt a modern design. Helló! Van rajta mit módosítani, de egyre jobban tetszik, bár eddig csak firefox-ban néztem. (Chrome-ban is hasonló, így gondolom Safariban is, az IE-t és az Operát felejtsétek el.)
Háttérképek
Nagyon szép háttérképeket találtam egyik kedvenc designer blogomban. Ugye milyen szép?
Propeller - egy betörés margójára
Kihallgatták S. Istvánt a Propeller feltörése kapcsán. Hírbehozó írt egy postot a Propeller feltörése kapcsán, Propeller-ügy: na ezt ne! címmel.
Persze egyetértek velük, nem szép dolog feltörni mások weboldalát, szerverét (én is voltam szenvedő alanya ilyeneknek, mindkétszer megtaláltam az elkövetőt). De azért van itt pár biztonsági kérdés, ami felmerült bennem. Hírbehozó a következőket írja:
"A történet valamikor március elején kezdődik, amikor a Propeller nevű hírgyűjtő szájt felesztője arra lett figyelmes, hogy a Google nem indexeli oldalaikat."
Mint kiderült, valaki a robots.txt file-t (ez az a file, amiben kb. leírhatjuk, hogy miket indexeljen egy kereső vagy inkább miket ne) módosította, oly módon, hogy a kereső semmit se indexeljen. (Ja, hogy az indexelés mit jelent, most nem írom le, egy kicsit bonyolult folyamat, nagyjából annyi, hogy az oldalon lévő szavakat összekapcsolják az oldal url-jével. Aztán meg rankolják...)
Szóval nem jó dolog az, ha Google-ból értesülünk arról, hogy az oldalunk forráskódja megváltozott. Másrészt ne küldözgessünk jelszavakat e-mailben. Harmadrészt, ne adjuk meg a gmail-es fiókunk adatait sehol. Még a facebookon sem. A Gmail elég biztonságos, mindaddig, amíg csak mi tudunk hozzáférni. Ha kiderülne, hogy én ilyen hibákat elkövettem, nem biztos, hogy örülnék, ha ez az index-en és a Webisztánon megjelenne. Lapítanék, mint szürke szamár a fűben.
Viszont. Bármikor előfordulhat, hogy valahogy megszerezzük valakinek a jelszavát teljesen véletlenül. Ezzel nem szabad visszaélni. Senki sem szeretne egy hirtelen format c:-ot.
Változások + rendszer
Lassan ez a weboldal is új szerverre költözik, és ez alkalomból, új sminket is tervezek megvalósítani az oldalnak. A designt innen, vagy innen fogom kiválasztani és a végeredmény letölthető lesz egy smink file formájában, talán a drupal.org-ról is, ha addig megkapom a CVS accountomat. Ja, van ez a névnap modul is. Addig is nyugodtan ajánljatok a fenti szájtok valamelyikéről.
A többi blogomat valószínűleg be fogom fejezni, és ezentúl minden itt fog csoportosulni. Valószínűleg lesz egy mit használok c. rész, aminek a formátumát nem tudom, de lesz egy drupalos alrésze is.
Szóval szeretnék, nem lyukas cipőjű cipész lenni.
Szabadon!!!
Egy nagyszerű kezdeményezésnek lehettek haszonélvezői, ha regisztráltok a hunlace.com oldalon. Ez egy olyan site, ami összehozza a szabadúszó fejlesztőket a megrendelőkkel (Tudod, azokkal, akik a legtöbb problémát jelentik egy projectben).
Persze csak akkor regisztrálj, ha igényes vagy a munkádra, mert ezen a site-on értékelik is a munkáidat!
Melyik agyféltekédet használod?
Ha a hölgyet az óra járásával megegyező irányba látod forogni, akkor a jobb agyféltekédet használod, egyébként pedig a balt.
A két agyfélteke gondolkodásbeli különbségei:
Bal agyfélteke:
Logikus, Következetes, Racionális, Analitikus, Objektív, Részletekre koncentráló.
Jobb agyfélteke:
Véletlenszerű, Intuitív, Holisztikus, Összefoglaló gondolkodásmód, Szubjektív, Egészre koncentráló
Comment spam
A spamelők egyre kifinomultabb technikákat alkalmaznak. A mai nap került be egy új hozzászólás egy több mint egy éves cikkhez. Ami érdekes benne, hogy ez pontos mása egy másik cikknek. Kivéve egy darab linket. Ráadásul a spammelő a bonyolult captcha-n is átrágta magát, úgyhogy gondolom élő ember lehetett, ahogy az ip címet elnézem, Pakisztánból.
Hogyan törjük fel a drupalt?
Itt van egy érdekes leírás:
http://buhera.blog.hu/2009/09/26/ingyenmenet_nem_dodzsem
Drush
Hiába találták fel az egeret, azért a parancssor sokkal jobban használható. Nézzük meg például, hogy hány gomb van az egeren.
Nem véletlen, hogy nem hallottam a drush-ról, mivel magyarul még nem írt róla senki. Szerencsére a multkori DUG-on részese lehettem Várady Zoltán előadásának.
Nos, a drush egy drupal shell, amivel parancssorból lehet sok drupal adminisztrációs dolgot megcsinálni. Fontos tudni, hogy a drush nem egy modul, ezért teljesen máshogy is kell telepíteni. Én így telepítettem:
Microblogging
Twitter, Tumblr. Már akit érdekel. Itt jobb oldalt meg megjelentek mindenféle halszemoptikás gombok, amikkel meg lehet osztani az itt megjelenő tartalmat. Az Ajánló blokkban pedig a Google Reader-ben megosztott tartalmaim láthatóak. Eggyel lejjebb pedig mindenki lehet a barátom. This is the beginning a beautifull friendship!
Drupal - vége
A mai napon megkezdem az oldal átmigrálását Joomla!-ra, ezért leállások lehetnek. Az utolsó csepp a pohárban itt volt..
Ezenkívűl a szerver operációs-rendszert is lecseréljük a sokkal biztonságosabb Win95 Server Edition-re.
Viszlát!
Változások
A másik dolog, hogy csatlakoztam a no-www.org mozgalomhoz. (Ez a cikk adta az utolsó lökést.) A legjobb az egészben, hogy drupal alatt már amúgy is van .htaccess file, amibe beírva a mágikus kódot, máris működik a dolog:
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
Ezt az utolsó </IfModule> elé érdemes írni. Persze elsősorban nem vallási kérdés ez, hanem például amiatt is jó, hogy a google maps-hoz elég lesz egy kód is, így emiatt nem kell külön telepíteni a keys modult.
(Azt hiszem ezt az FCKeditort még configolni kell, hogy jól működjön...)
Drupal teljesítmény
Annak idején nagyon örültem, hogy egy bizonyos portál (direkt nem írom le a nevét) amely nagy reklámkampánnyal indult, drupal-t használt. Aztán nagyon nem örültem, hogy átváltottak egy másik rendszerre. A miértekre azóta sem kaptunk választ, de gondolom, hogy a teljesítmény lehetett a gond, mert ez szokott a drupal legnagyobb baja lenni. Persze erre is van megoldás.
Mostanában egy kicsit belemásztam a témába, és két teljesítményjavító cuccot próbáltam ki. Az egyik az APC (Alternative Php Cache) a másik pedig a Memcache (php függvények hozzá). Ezen kívűl van egy Cachrouter nevű drupal modul, ami elsősorban a memcache-hez hasznos.
Noba.hu - vélemény
A noba.hu egy közösségi kölcsön oldal. (Szerintem ezt a wikipédia cikket is ők fordították le, ez is mutatja, hogy mennyire profik.) A közösségi kölcsön röviden annyi, hogy embereknek a többiek összedobják a pénzt. Bővebben pedig a Wikipédián, és a Noba oldalán.
Az oldalt Java nyelven írták OpenSymphony keretrendszerrel és TomCat alkalmazásszerveren fut, javascript könyvtárnak pedig yui-t használnak. Jelenleg még fejlesztés alatt van. (Ezt abból gondolom, hogy bejelentkezés után kaptam egy hibaüzenetet, az előző információkat is onnan szedtem ki.)
napiLOL
A vicc (régi, dehát a csecsemőknek):
Parasztbácsi nagyon kérleli a TSZ-nél a műtrágya szóró repülőst, hogy egyszer már vigye fel a géppel őt is. Na a pilóta rá is áll egy kis apanázs (féldisznó) ellenében. Elindul a repülés. Jön egy cikk-cakk kanyar.
- Erre számítottam, - mondja a bácsi,
Ezután jön egy flikk-flakk.
- Erre is számítottam, - mondja a bácsi. (csak, hogy legyen benne ritmus, mert az kell)
Na, akkor egy dugóhúzó...
- Na, erre nem számítottam... (na, ezt ki mondta?)
Leszállnak, (mármint a repülő, aztán a repülőről, ők is.)
A pilótát nagyon furdalja a kiváncsiság:
- Mi volt az, hogy erre számítottam, meg erre is számítottam, de erre nem számítottam:
- Nos arra számítottam, hogy behugyozok, arra is hogy beszarok, de arra, hogy az egész a fejemre ömlik, nos arra nem számítottam.
Nos így vagyok én is ezzel a bloggal. Tudtam, hogy Konrád egy nagyon internetes személyiség, de erre nem számítottam.
2008 Legfontosabb eseményei
- Október 3.-án megszületett Ámon Ajna Márta
- Sikerült felvételt nyernem az 5Net-hez, ami Magyarország egyik legjobb cége, az egyik legjobb főnökkel.
- Új lakásba költöztünk.
- Életem első hitelfelvétele. Svájci frank alapon.
- Ez után rögtön gazdasági világválság.
- Abigél első szava: Apa és ezt azóta többször is mondja.
- Minél kisebbek a gyerekek, a karácsonyfa annál nehezebb.
- A húst azelőtt kell felvágni, mielőtt a mélyhűtőbe raknánk nem azután, hogy kivettük.
- Mert érdekes dolog karácsonykor a traumatológián, de azért jobb otthon.
- Úgyis mi vagyunk az okozói a változásoknak, és minden csak jelzés, hogy most már máshogy kellene csinálni.
- Mindenkinek boldog és őszinte újévet!
Ámon Tamás, egy fiú és két lány gyermek apja.
Java megint
Így karácsony és újév között megint belefogtam a Java-ba, miként ez tavaly is történt.
Könyvajánló: Ne törd a fejem!
Bizony, van egy ilyen könyv is, amit sikerült megvennem még karácsony előtt. Nagyon érdekes és gyors könyv, ami mostanában jól is jön. Nekem a legérdekesebb része a felhasználói tesztelés volt. Egyik ügyfelünk dokumentációt kért a weboldal használatáról.
Karácsony
Ahogy egy nagyon jó barátom mondta, kellemes shoppingolást! Ezen már ugye mind túl vagyunk. Az egyik legszebb dolog a világon egy három hónapos gyerek első karácsonya. Felejthetetlen élmény a kis csodálkozó embert nézni, csillogó szemekkel. (Ezt csak azért írom, hogyha valaki ilyet szeretne látni, ahhoz január elején kell egy kicsit rádolgozni.)
Na, de. Mostanában történt velem pár fontos dolog. (Bár az életben minden dolog fontos, csak éppen azt hisszük, hogy nem.)
Index.hu hiba
Ha jól tudom, még mindig az index a legnagyobb látogatottságú oldal, amiket meg mostanában kitaláltak, még inkább. Ezért is érdekes, hogy az indexen mit és hogyan csinálnak meg, mert azt gonolja az ember, hogy az aztán valóban profi.
Na, én pont ezért nem értem, hogy miért van az, hogy a legfrissebb sport-hír jelenleg május 28-ai. Persze nem Gézáéknal, hanem a 24-órás híreknél az ajánlóban. Például itt. Lapozzunk az aljára és nézzük meg a sport-szekciót.
Form hibák a form-ba
Elég rég óta idegesített már, hogy a drupal a hibaüzeneteket mindig az oldal elején jeleníti meg, nem pedig ott, ahol a hiba keletkezett, vagyis a form elem előtt. Most egy kicsit utánanéztem, és chx kolléga segítségével sikerült is megtalálni a megoldást. Ez pedig nem más, mint a theme_form_element felülírása.
Ugyebár, a template.php file-ban kell csinalni egy függvényt, themeneve_form_element($element, $value) néven, ebbe kell bemásolni ugyanazt a kódot, mint amit a leírásban is látunk. Én ebbe szúrtam bele a
$output .= ">\n";után a következő kódot:
if ($error = form_get_error($element)) {
$output .= '<div class="form-error">'.$error.'</div>';
$eid = array_search($error, $_SESSION['messages']['error']);
unset($_SESSION['messages']['error'][$eid]);
if (empty( $_SESSION['messages']['error'])) {
unset($_SESSION['messages']['error']);
}
}
A form_get_error függvény egy stringet ad vissza, a hibaüzenettel. Ha ebben van valami, (tehát hiba volt) akkor beteszük a kimenetbe. Én ezt itt egy div-el és a form-error osztállyal oldottam meg, így egyszerűen tudunk stílust is rendelni hozzá.
Ezután kikeressük a $_SESSION['messages']['error'] tömbböl ezt a hibát és kitöröljük, ugyanis az ebben a tömbben tárolt elemek fognak megjelenni a felső részben. Utána megnézzük, hogy ez a tömb üres-e, és ha igen, akkor az egészet kitöröljük, mert ha a tömb létezik, akkor a divet mindenképpen kiírja a drupal
Felmerülhet a kérdés, hogy miért nem töröljük valahol az egész tömböt? Azért, mert nemcsak a formok adhatnak vissza hibaüzenetet, és a tömb törlésével ezek a hibaüzenetek is elszállnának.
Drupalos smink hiba
Breaking news! Csak, hogy más ne szívjon vele egy napig. Amikor az ember modult fejleszt, elég gyakran használja a hook_theme hook-ot.
Blog Aid
Talán először fordul elő, hogy egy modult úgy próbálok ki, hogy igazából nem is tudom mire való. Ez a modul pedig nem más, mint PP Blog Segítő modulja.
Tartalom
Hozzászólások