Title Required
RSS Channel: Tutorial // Egy egyetemista srác pereket provokál maga ellen. .
Saját készítésű oktatóanyagok főként informatikai témában.
Generator:freeblog.hu
Docs:http://www.rssboard.org/rss-specification

Opt-in trükk

Elnézést kérek mindenkitől, aki tegnap úgy látogatott el ide, hogy nem talált semmilyen friss tartalmat. Úgy esett, hogy egy reggeltől estig tartó online marketing konferencián vettem részt, így amikor hazaértem, már annyira kimerültem, hogy nem maradt erőm blogolni.

Rögtön meg is osztok veletek egy ott tanult apró trükköt.

Mint tudjátok, június 1-étől a 'gazdasági reklámtevékenység alapvető feltételeiről és egyes korlátairól' szóló 2008. évi XLVIII. törvény alapján csak olyan embernek lehet hírlevelet küldeni, aki az e-mail címe mellé megadta a lakcímét is.

Ez a jogszabály értelemszerűen igen erősen lerontaná a feliratkozási (opt-in) arányokat az erre épített marketingakcióknál. Szerencsére ezt az apró kellemetlenséget egy kis ügyességgel meg lehet kerülni.

Ugyebár a törvény így szól (kiemelések tőlem):

6. § (1) Ha külön törvény eltérően nem rendelkezik, reklám természetes személynek ... kizárólag akkor közölhető, ha ahhoz a reklám címzettje előzetesen egyértelműen és kifejezetten hozzájárult.

(2) Hozzájáruló nyilatkozat bármely olyan módon tehető, amely tartalmazza a nyilatkozó nevét és lakcímét ...

Nos, mint látható, a törvény kifejezetten a természetes személyek feliratkozását szabályozza, vagyis jogi személyek esetén a továbbiakban is elegendő a feliratkozó ember részéről valamilyen becenév és e-mail cím megadása.

A megoldás a könnyebb kezelhetőség érdekében annyi, hogy alapértelmezetten a feliratkozási űrlap továbbra is csak a név és e-mail cím mezőket tartalmazza. A lakcímre vonatkozó résszel felesleges terhelni a jobb sorsra érdemes látogatók lelkét. ;)

Az egyetlen szükséges változtatás egy extra rádiógomb, ahol választani kell aközött, hogy az illető úgymond cégként, vagy magánemberként kíván-e feliratkozni. Alapból természetesen a céges feliratkozásnak kell bejelölve lennie, mert csak úgy törvényes a lakcím-bekérés mellőzése. Ha az illető itt a magánemberként történő feliratkozásra kattint, akkor jelenik csak meg egy újabb mező az űrlaphoz, annak a tömör magyarázatával, hogy erre a törvény miatt van szükség, ezért, ha nem akarja megadni, iratkozzon fel inkább céges módban. Amikor a céges opcióra kattint vissza, a lakcím mező ismét eltűnik.

Ennyi a titok.

Egy apró trükkel hatástalanítva van a törvény alkotta korlát, és szevasz, minden megy tovább régiben. :D

By SoDI


http://sodi.freeblog.hu/archives/2009/06/12/Opt-in_trukk/
Author: sodika
Háttér bevilágítása

Néhány napja már el kezdtem gondolkodni azon, hogy vajon miként tudok házi körülmények között olyan felvételt készíteni, ahol a háttér kikulcsolható mögülem. Akkor arra jutottam, hogy egy félhomályba borult szobában az emberi bőr színéhez hasonló, gyűrött lepedő a lehető legrosszabb választás, mert legfeljebb Star Wars-szerű hologram-effektet tudnék összehozni vele.

A kommentek között hamar született egy vázlatos megoldás egy linkelt oldal formájában, ahol a szerző világosan leírja: a titok a háttér és a beszélő ember különálló megvilágítása, valamint az, hogy azonos tónusú halogén lámpákat használjunk ehhez, mert csak így lesz egységes a háttér. Emellett Gery Greyhound is ajánlott egy jópofa oktatóvideót arról, miként lehet fehér hátteret varázsolni, bár otthoni körülményekhez képest még ez is túl sok befektetést követelne meg.

Végül rátaláltam a tökéletes megoldásra, melyet Schlingloff Sándor készített el. Szerencsére éppen ez az egyetlen olyan videó, melyet Schlingloff úr bár eredetileg belső anyagnak szánt, ám utólag - nyilván promóciós céllal - mégsem csak a Profitképző program zárt felületén tett elérhetővé, hanem mindenki számára a Viddleren, vagyis pont ez az, amelynél semmi akadálya nincs annak, hogy most megmutassam nektek.

 

 

By SoDI


http://sodi.freeblog.hu/archives/2009/05/09/Hatter_bevilagitasa/
Author: sodika
Ha nem jó a nagy felbontás YouTube-nál

Na, a YouTube-nál ez a nagyfelbontású videó dolog látszólag még egy picit fejlesztésre szorul, ugyanis a 25 videóból álló Tomcat-féle bombagyáros per anyagánál jön elő igazán, hogy ennyi cucc közül legalább egynél (és mindig másiknál) gond van a zökkenőmentes megjelenítéssel, nem indul el a lejátszás.

Nos, erre megtaláltam a megoldást. Az alábbi négy lehetőséget érdemes végig játszani tetszőleges sorrendben. Természetesen nem csak ennél, hanem bármelyik másik YouTube videónál, ahol hasonló probléma merül fel.

Úgy nézem, hogy az alábbi négy módszer valamelyikével kivétel nélkül elindítható mindegyik videó high quality beállítással (sőt, már az első három közül is biztosan működik legalább az egyik).

  1. YouTube-on belül kattintsunk a videó alatt a watch in high quality linkre!

  2. Nyissuk meg úgy a videót a YouTube oldalán, hogy a webcíme mögé odaírjuk, hogy &fmt=18
    A konkrét Tomcat-féle bombaperes tárgyalásnál valahogy így:
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

  3. Állítsuk be YouTube-on belül, hogy mindegyik cucc, amit megnézünk, rögtön nagy felbontásban jelenjen meg, amikor van hozzá ilyen, majd pedig csak ezt követően nyissuk meg a kívánt videót. Ehhez természetesen először regisztrálnunk kell egy saját YouTube hozzáférést.

    Ha ezzel megvolnánk, és van YouTube felhasználói nevünk, a beállítás menete a következő: Account (felül), lenyíló menűből More, így a My Account / Overview oldalra jutunk. Itt baloldald válasszuk ki azt, hogy Playback Setup. A jobboldalon megjelenő három lehetőség közül válasszuk azt, hogy I have a fast connection. Always play higher-quality video when it's available.” Végül mentsük el a beállításokat a Save Changes gombbal! 

  4. Nyissuk meg az adott videót egy saját weblapon úgy, hogy oda nagyfelbontásúként van beillesztve, azaz az embed kódrészen belül mindegyik URL-t (webcímet) egészítsük ki annyival, hogy &ap=%2526fmt%3D18 (erről bővebben itt írok)

Hogy mi az oka annak, hogy néha ezen módszerek egyike működik csak, holott mind a négynek működnie kellene, ne engem kérdezzetek. Nem én üzemeltetem a YouTube-ot. :-))) 

By SoDI


http://sodi.freeblog.hu/archives/2008/11/09/Ha_nem_jo_a_nagy_felbontas_YouTube-nal/
Author: sodika
IIS7: Tanúsítványok

Na, mivel ma egy holnapi analízis ZH-ra gyakorlok, ezért most kis pihi van.  Addig is kaptok egy friss képeskönyvet, amit egy 10 perces ELTÉ-s kiselőadásomhoz készítettem. Amúgy is rég került már fel anyag a dolgozat címke alá. :)

Különben arról szól a cucc, hogyan lehet IIS7 webszervert aktiválni Vista alatt, majd beizzasztani alá az SSL-t.

 SoDI: Tanúsítványok kezelése IIS7 alatt

Legalább a Tutorial rovat is gyarapszik.

By SoDI


http://sodi.freeblog.hu/archives/2008/10/14/IIS7_Tanusitvanyok/
Author: sodika
Nagyfelbontású YouTube videók beillesztése

Mint tudjátok, egy ideje néhány YouTube videó betölthető a korábbinál sokkal jobb minőségben is. Ha az éppen megnyitott videónál elérhető ez a lehetőség, akkor ezt a videóablak alján megjelenő „watch in high quality” link jelzi számunkra.

Youtube: watch is high quality link

Az is igen széles körben elterjedt információ, hogy lehetőségünk van kívülről akár közvetlenül is belinkelni ezeket a nagyfelbontású verziókat. Ehhez elegendő egy fmt nevű, GET típusú paraméterrel kiegészíteni az adott videó elérési útvonalát (URL-jét), és a 18-as értéket adni neki.

Egyszerűbben fogalmazva: oda kell írni a videó címének végére azt a szöveget, hogy &fmt=18.

Valahogy így:

Azt, hogy egy konkrét Freeblog bejegyzésbe miként lehet YouTube videót beilleszteni, már leírtam korábban.

Ebből megtudhattuk, hogy simán a YouTube oldalon található, embed nevű szövegmező tartalmát kell bemásolnunk a HTML kódunkba, igény szerint tetszőleges méretbeli változtatásokkal. A turulos videómnál ez a következőképpen néz ki:

Nos, ha viszont a nagyfelbontású verziót akarjuk megjeleníteni az oldalunkon, akkor ezt át kell alakítanunk úgy, hogy a videó címe mögé mindkét helyen a &ap=%2526fmt%3D18 szöveget illesztjük. Valahogy így:

És voala: máris a nagyfelbontású verzió jelenik meg az oldalunkon!

By SoDI


http://sodi.freeblog.hu/archives/2008/08/01/Nagyfelbontasu_YouTube_videok_beillesztese/
Author: sodika
MySQL DateTime W3C dátum-idő formátumba

Tudom, hogy ez pofonegyszerű feladatnak számít, azonban, miután a Google Sitemaps protokoll így követeli meg, és éppen egy ilyen webhelytérképet dobtam össze ma este, azt hiszem, érdemes egy rövid leírást adni ahhoz, hogy miként lehet a MySQL DateTime formátumát a W3C által meghatározott dátum-idő formátumúvá alakítani PHP 4-5 alatt.

Hátha valaki éppen erre az infóra keres rá, és jól jön neki. :)

Meg amúgy is tök rég bövítettem már a Tutorial rovatot, ugye.

Nézzük hát...

function w3cDatum($datetime) {
$datumresz = substr($datetime, 0, 10);
$idoresz = substr($datetime, 11, 8);
return $datumresz."T".$idoresz."+01:00";
};

Ennyi volna.

Gondolom túl sokat nem kell magyarázni rajta, ezért csak néhány szóban:

Van mondjuk a következő, MySQL DateTime formátumú dátumunk: 2008-06-24 21:27:15. Ezt kéne nekünk 2008-06-24T21:27:15+01:00 formátumba varázsolnunk. Nosza, egy datumresz változóba lecsípjük az első 10 karaktert, egy idoresz nevű változóba pedig az utolsó 8 karaktert.

PHP substr magyarázat

Ezeket egymás mellé írjuk, közéjük rakunk egy T betüt, legvégül pedig hozzábiggyesztjük, hogy milyen időzónában is vagyunk mi Greenwich-hez képest (+1 óra).

A cucc meghívása végül értelemszerűen így történik:

w3cDatum("2008-06-24 21:27:15");

Oszt ennyi.

By SoDI

Kapcsolódó:


http://sodi.freeblog.hu/archives/2008/07/21/MySQL_DateTime_W3C_datum-ido_formatumba/
Author: sodika
RSS csatorna a blogunkon

Tegnap valaki megkérdezte tőlem, hogy miként lehet RSS hírcsatornát megjeleníteni egy blogon, úgy, ahogyan nálam az SF blogja, illetve a SoDI egyéb blogjai doboz is működik.

Nos, mi sem egyszerűbb ennél. Használhatunk ehhez ingyenesen elérhető PHP-s RSS értelmezőket, (ilyen például a MagpieRSS, vagy a Last RSS), de dönthetünk úgy is, hogy saját magunk írjuk meg a megjelenítő kódot.

Szerencsére, ha ezt az utat választjuk, akkor sem kell bonyolult reguláris kifejezésekkel (egyfajta szövegszűrő maszkokkal, vagyis olyan kódokkal, melyekkel megadható, hogy egy bizonyos szövegből milyen speciális részeket akarunk kinyerni) szarakodnunk, ugyanis már a PHP 4 is tartalmazza azokat az XML értelmező függvényeket, amiket így szimplán meg kell hívnunk a munkához.  Ezeket a beépített függvényeket onnan ismerjük meg, hogy mindegyik úgy kezdődik, hogy xml_ (ikszemelaláhúzás :))

És hogy miért pont XML elemző kell nekünk? Hát azért, mert az RSS fájlok egyben XML fájlok is (jéééééé :DDD)

Na akkor kezdjük is. Egyben megírjuk SF blogjának a hírdobozát. :) 

Annyit érdemes tudni, hogy PHP-ban a változókat $ jellel kezdjük.

$xml_elemzo = xml_parser_create();

Akármilyen meglepő, a fenti sorban annyi történik, hogy létrehoztunk egy XML elemzőt, melynek fantáziadúsan az xml_elemzo nevet adtuk.

Ez egy beépített PHP objektum. Úgy kell elképzelni, mint egy intelligens „virtuális lényt”, aki nem tud semmit, csak XML-t olvasni, de azt nagyon. Be van „idomítva” néhány ehhez kapcsolódó képességre (ezeket a dolgokat hívjuk metódusnak), és nekünk csak az ezekhez tartozó „parancsszavakat” kell ismernünk ahhoz, hogy megmondhassuk, „pontosan hova üljön a kutya”. :)

Na de menjünk is tovább...

xml_set_element_handler($xml_elemzo, "elemEleje", "elemVege");

Most megmondtuk a PHP-nek, hogy milyen függvényekkel akarjuk kezelni az XML elemzőnk által feldolgozni kívánt XML fájl kezdő- illetve záró címkéit (tag-jeit). Azt mondtuk neki, hogy az adott XML tag-ek kezdő címkéit az elemEleje, a végüket pedig a elemVege nevű függvényünk kezelje.

Az imént említett függvényeket majd később megírjuk.

xml_set_character_data_handler($xml_elemzo, "karakterAdat");

Most megadtuk, hogy az XML elemzőnk a feldolgozni kívánt XML fájlunk szöveges adatainak elemzését melyik függvénnyel végezze el. A karakterAdat nevű függvényt választottuk ki ehhez. Ezt majd szintén később írjuk meg.

$fajl = fopen("http://reakcio.blogspot.com/feeds/posts/default?alt=rss","r")
   ...

Ehun ni most megnyitottuk SF blogjának az RSS feed-jét, olvasásra (a végén ezt jelöli az r, mint read). A megnyitott fájlt fajl néven nyitjuk meg. :)

...
or die
("Hiba az RSS olvasása közben.");

Ha viszont valamiért nem tudtuk megnyitni, akkor sírjunk be. ;)

while ($adat = fread($fajl, 4096))
   ...

Amíg a fájl végére nem érünk (vagyis amíg kerül onnan adat az adat nevű változóba), olvassuk be a megnyitott RSS fájl újabb és újabb 4 Kb-os darabjait.

Az itteni ciklusmagon belül történik maga az XML elemzés.

xml_parse($xml_elemzo, $adat, feof($fajl))
   ...

Itt azt mondjuk, hogy elemezze ki a korábban létrehozott elemzőnk (xml_elemzo) segítségével az imént beolvasott adatot, ha pedig a fájl végére értünk (feof - eof - End Of File), akkor belőle a végéig még hátralévő darabot.

or die(sprintf("XML hiba: %s ebben a sorban: %d"
   ...

Ha viszont hibát találtunk, akkor haljunk meg :-)), vagyis írjuk ki, hogy milyen hiba ez, és hogy hányadik sorban akadtunk rá. Ebben segít nekünk a speciális kiírásokat végző sprintf nevű kiíró függvény. Ez első paraméterként egy idézőjelek között lévő szöveget vár, melyet tetszőleges helyen %s illetve %d szövegekkel tarkíthatunk. A %s szöveges információt, míg a %d tetszőleges számot jelöl. Ezeknek a jelöléseknek a helyére a sprintf függvénynek a legelső után következő paramétereit helyettesíti be a PHP.

Nézzük csak, mi kerül az RSS-olvasó programunkban a % jelek helyére...

...
xml_error_string
(xml_get_error_code($xml_elemzo)),

Lekérjük a keletkezett hiba kódját (error code), majd pedig az annak megfelelő szöveges hibaüzenetet (error string). Mivel ez a sprintf függvény második (az első utániak között a legelső) paramétere, így a visszakapott hibaüzenet az eredeti szövegben az elsőként szereplő %s jelölés helyére kerül.

xml_get_current_line_number($xml_elemzo)));

Mivel a mostani kódrész végrehajtására akkor kerül sor, ha hibát találtunk, ez a hiba nyilván azon a helyen van, ahol aktuálisan állunk. Ezt a helyet lekérjük egy számként. Mivel az sprintf függvény utolsó paramétere, így az eredmény az utolsó helyettesítő jelölés, vagyis a %d helyére kerül be.

fclose($fajl);

Miután végeztünk az RSS csatorna feldolgozásával, zárjuk be a fájlt.

xml_parser_free($xml_elemzo);

Legvégül megszüntetjük az eddig használt XML elemzőnket, ugyanis a továbbiakban már nincs szükségünk rá.

Ez mind nagyon szép, mind nagyon jó, mindennel nagyon meg vagyunk elégedve, akárcsak Ferencjóska, úgyhogy már csak azokat a függvényeket kell megírnunk, amiket az imént hozzárendeltünk az XML elemzőnkhöz. Ugye három ilyen függvény van elemEleje, elemVege, és karakterAdat névvel.

Haladjunk sorban.

function elemEleje($elemzo, $nev, $attributumok) {

... 

}

Az elemEleje függvény három paramétert vár. (Ezeket az xml_set_element_handler kezelő küldi neki, mivel ott határoztuk meg ezt a függvényt).

A három paraméter:

  1. Hivatkozás egy XML elemzőre (itt elemzo néven)
  2. Az aktuális XML elem (tag) nevét (itt nev néven)
  3. És egy asszociatív tömböt, ahol az attribútumok vannak. (Itt attributumok néven. Ebben a kulcsok az egyes XML attribútumok nevei lesznek, míg az értékek az attribútomok értékeivel egyeznek meg.)

Vegyük például az alábbi XML tag-et:

<kutya szin="piros" />

Az asszociatív tömb kulcsmezője itt a szin lesz, az aktuális elem értéke pedig az, hogy "piros".

Ezt az attributumok paramétert különben élesben nem fogjuk használni, ugyanis kizárólag a xml_set_element_handler megkötései miatt voltunk kénytelenek berakni a függvényünk paraméterlistájába.

Menjünk tovább... :)

global $elemenBelul, $tag, $cim, $leiras, $hivatkozas;

Meghatározunk néhány globális változót. Ezek attól globálisak, hogy a PHP fájlunk minden részében tetszés szerint használhatjuk őket; függvényeken belül és kívül egyaránt.

Hogy pontosan megérthessük, melyik változóra miért van szükség, elemezzük egy kicsit, hogyan néz ki az RSS kódben egy átlagos elem (hír) leírása.

 <item>
   <title>A hír címe</title>
  
<link>A hír URL-je (Internetes webcíme)</link>
   <punDate>
A hír URL készítésének időpontja</PubDate>  
   <description>A leírása (szövege)</description> 
 </item>

Egy konkrét Index hírnél például ez így néz ki:

<item>
   <title><![CDATA[Lőfegyvereket találtak Tolnában]]></title>
   <link>http://index.hu/politika/bulvar/bulvarhirek/343294</link>
   <pubDate>Tue, 19 Feb 2008 21:54:00 +0100</pubDate>
   <description><![CDATA[Autóban és lakásban is találtak lőszert és fegyvert a rendőrök.]]></description>
</item>

Itt a <![CDATA[szöveg]]> jelölés egy szöveges tartalmat azonosít. Enélkül nem lesz szabványos (másnéven valid) a kód, vagyis a legtöbb RSS olvasó nem tudná helyesen értelmezni.

Nos, visszatérve a globális változóinkra...

Na folytassuk az elemEleje függvényünk megírását...

 if ($elemenBelul) {
      $tag = $nev;
 } elseif ($nev == "ITEM") {
      $elemenBelul = true;
 }

Ha egy elemen belül (vagyis ITEM tag-en belül) járunk, akkor a tag változó legyen egyenlő az aktuális XML tag nevével (vagyis azzal, ahol éppen állunk, más szóval, amit éppen olvasunk). Ha viszont nem ilyen ITEM tag-en belül járunk, de az aktuális nyitó tag éppen egy ITEM, akkor az elemenBelul globális változónk igazra állításával jegyezzük fel ezt a tényt.

Egyszerűbben: ha feldolgozás közben éppen most lépünk az RSS feed egy hírének leírásába (ITEM tag-jába), akkor ezt jelezzük az elemenBelul változó igazra állításával, egyébként pedig, ha már egy ilyen híren belül járunk, akkor a tag nevű változó jelölje azt, hogy a hír leírásának melyik részét olvassuk éppen (a linkjét, az időpontját, vagy esetleg valami mást?).

Na, ezzel az elemEleje függvényt ki is veséztük.

Következzen a elemVege függvény, ami a záró XML elemek (tag-ek) feldolgozását végzi.

function elemVege($elemzo, $nev) {
   ...
}

Mint láthatjuk, ez a függvény két paramétert vár. Egyrészt kéri az XML elemzőnket, másrészt pedig annak a XML elemnek (tag-nek) a nevét, melyből éppen kilépünk.

if ($nev == "ITEM") {
   ...
}

Az előző sor jelentése: Ha éppen egy ITEM elemből, vagy egy önálló hír leírásából léptünk ki... ...

...
printf
("<b><a href='%s' target='_blank'>%s</a></b>",
   trim($hivatkozas),htmlspecialchars(trim($cim)));

A printf függvény ugyaúgy működik, mint a korábban már ismertetett sprintf függvény, annyi különbséggel, hogy míg az előbbi a képernyőre, addig az utóbbi egy szöveges változóba tölti az eredményét. Vagyis, mint ahogy már láttuk a sprintf függvény ismertetésénél, az idézőjelek között lévő két %s karakter behelyettesítésre kerül az első paraméter után következő két paraméterrel (itt: szöveges információval).

Az első %s helyére az éppen olvasott (feldolgozott) hír URL-je (linkje, hivatkozása) kerül, míg a második %s helyére annak címe.

A trim PHP függvényről azt érdemes tudni, hogy kiszedi a szöveg elejéről és végéről a felesleges szóközöket. Mint láthatjuk, a href HTML tag-ba beírandó hivatkozással (linkkel), és az aktuálisan feldolgozandó cikk (éppen olvasott RSS hír) címével is elvégezzük ezt a műveletet.

A htmlspecialchars függvény pedig egyes speciális karaktereket alakít át olyan módon, hogy ne zavarják meg a HTML kódot. Így a & jelet arra alakítja át, hogy, &amp;, a " jelet pedig arra, hogy &quot;, satöbbi. Ezek csak a lap forráskódjában (HTML kódjában) változnak meg, a felhasználó számára már eredeti alakjukban látszanak.

Ha ez a két karakterkezelő függvény egymásba van ágyazva (htmlspecialchars(trim(szöveg))), akkor egyszerre mindkét művelet, vagyis az üres helyek, és a speciális HTML karakterek kiszűrése is megtörténik. 

  ...
   $cim = "";
   $leiras = "";
   $hivatkozas = "";
   $elemenBelul = false;
}

Mivel az elemVege függvényünk, amiben vagyunk (pontosabban az ahhoz tartozó, if-fel kezdődő, feltételfüggő kódrészünk) azt az esetet kezeli, ha éppen kiléptünk egy ITEM tag (RSS hír) vizsgálatából, annak feldolgozása (vagyis kiírása) után érdemes lenullázni a rá vonatkozó adatokat, és így azt is jelezni, hogy már nem elemen belül (adott hír RSS-leírásán belül) járunk.

Egyszerűbben: Ha már elolvastunk egy hírt, és ki is írtuk, akkor tök mindegy, milyen adatok vonatkoztak rá, ezeket nyugodtan törölhetjük.

No már csak a karakterAdat függvényünk van hátra.

function karakterAdat($elemzo, $adat) {
   global $elemenBelul, $tag, $cim, $leiras, $hivatkozas;
   ...
}

Ez a függvény, mint már írtam, az XML feldolgozás közben a karakteres adatok kezelését végzi. Ehhez előszöris meg kell kapnia paraméterként az XML elemzőnket, valamint azt a szöveges adatot, amit az elemzőnk éppen olvas.

Egyben jeleznünk kell, hogy használni kívánjuk azokat a globális változókat, melyekben az XML (RSS) feldogozása közben a köztes adatokat jegyeztük fel (global ... rész).

Most pedig nézzük a függvény belső részét... 

if ($elemenBelul) {
   switch ($tag) {
      case "TITLE":
         $cim .= $adat;
      break;
      case "DESCRIPTION":
         $leiras .= $adat;
      break;
      case "LINK":
         $hivatkozas .= $adat;
      break;
   }
}

Mint látjuk, az egész kódrész csak akkor hajtódik végre, ha éppen egy elemen belül (egy adott RSS hírleíráson belül) vagyunk. ( if (feltétel) { utasítások} )

A switch ($tag) résszel fejezzük ki azt, hogy attól függően, éppen melyik XML tag-et olvassuk, más és más kódot szeretnénk végrehajtani (esetszétválasztás).

A .= operátor pedig egy szöveges változó végéhez fűz hozzá egy másik szöveget.

Például
$kutya .= "Buksi
";
$kutya .= "ka
";
echo $kutya;

Utasítássor azt írja ki, hogy Buksika.

De nézzük csak meg, konkrétan milyen eseteket vizsgálunk itt:

Azt, amit itt feljegyeztünk címként, leírásként, és hivatkozásként, értelemszerűen majd az elemVege függvényben fogjuk felhasználni, amint az RSS feldolgozás közben egy adott ITEM tag végére, vagyis adott RSS hírleírás végére értünk.

Ezzel készen is volnánk.

<html>
<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>PHP alapú RSS értelmező</title>
</head>
<body>
<?php
$elemenBelul = false;
$tag = "";
$cim = "";
$leiras = "";
$hivatkozas = "";
function elemEleje($elemzo, $nev, $attributumok) { 
   global $elemenBelul, $tag, $cim, $leiras, $hivatkozas;
    if ($elemenBelul) {
       $tag = $nev;
    } elseif ($nev == "ITEM") {
       $elemenBelul = true;
   }
}
function elemVege($elemzo, $nev) {
   global $elemenBelul, $tag, $cim, $leiras, $hivatkozas;
   if ($nev == "ITEM") {
      printf("<b><a href='%s' target='_blank'>%s</a></b>",
      trim($hivatkozas),htmlspecialchars(trim($cim))); 
      $cim = "";
      $leiras = "";
      $hivatkozas = "";
      $elemenBelul = false;
   }
}
function karakterAdat($elemzo, $adat) {
   global $elemenBelul, $tag, $cim, $leiras, $hivatkozas;
   if ($elemenBelul) {
      switch ($tag) {
         case "TITLE":
            $cim .= $adat;
         break;
         case "DESCRIPTION":
            $leiras .= $adat;
         break;
         case "LINK":
            $hivatkozas .= $adat;
         break;
      }
   }
}

$xml_elemzo = xml_parser_create();
xml_set_element_handler($xml_elemzo, "elemEleje", "elemVege");
xml_set_character_data_handler($xml_elemzo, "karakterAdat");
$fajl = fopen("http://reakcio.blogspot.com/feeds/posts/default?alt=rss","r")
   or die("Hiba az RSS olvasása közben.");
while ($adat = fread($fajl, 4096))
     xml_parse($xml_elemzo, $adat, feof($fajl))
        or die(sprintf("XML hiba: %s ebben a sorban: %d"
             xml_error_string(xml_get_error_code($xml_elemzo)),
             xml_get_current_line_number($xml_elemzo)));
fclose($fajl);
xml_parser_free($xml_elemzo);
?>

</body>
</html>

A fenti kódot bárhol tudjuk használni, ahol van PHP 4-5 támogatás, és engedélyezve van a külső fájlok megnyitása (több helyen, például az extra.hu oldalain ez sajnos le van tiltva).

Ha pedig arra vagyunk kíváncsiak, hogy ezt a végeredményt hogyan tudjuk olyan módon berakni a blogunkba, mint ahogy én is megjelenítem az egyes RSS dobozokat ezen a blogon, akkor kattintsunk ide, mert nem is olyan régen ehhez is készítettem egy hasonlóan részletes tutorialt. 

By SoDI


Kapcsolódó anyagok:


http://sodi.freeblog.hu/archives/2008/02/20/RSS_csatorna_a_blogunkon/
Author: sodika
SoDI telepíteni próbál :)

Na és akkor most megmutatom, hogy mivel szerencsétlenkedtem át a tegnapi délutánt.

Röviden: az lett volna mára az egyik egyetemi feladatom, hogy egy tantárgy keretében kiselőadást tartsak a jövő februárban megjelenő, de próbaverzióban már most elérhető Windows Server 2008 Core (főként parancssorról vezérelhető) verziójának telepítéséről, és bekonfigurálásáról. Mindezt a Virtual PC 2007 nevű program segítségével, mely alatt elvileg bármilyen operációs rendszer futtatható.

Nos, ennek az eredménye az volt, hogy rájöttem: szarul töltöttem le a Microsoft-tól a DVD-ket (többször meghalt közben a gépem), így nem is volt esélyem rendesen felnyomni a cuccot.

SoDI telepíteni próbál - Kattints!

Mivel azonban elfogyott az időm, jobb híjján ma a fenti, 5 perces PowerPoint prezivel készültem az órára, mondván, hogy "érdekes tanulságokkal szolgál a Virtual PC és a Virtual Server közötti kompatibilitási különbségek vonatkozásában Vista alatt", bla-bla-bla, de egyébként jövő héten rendesen letöltött cuccal jövök. :-)

Mert ha egyszer pont erre volt időm előző este, akkor erre volt időm, és kész. :)

By SoDI


http://sodi.freeblog.hu/archives/2007/12/03/SoDI_telepiteni_probal/
Author: sodika
Lebegődoboz beillesztése Freeblog sablonba

Hogyan lehet Freeblog sablonba olyan lebegő dobozt illeszteni, mint amilyen nálam az oldalsó "SoDI blogjai" doboz? Mi sem egyszerűbb!

Sablonok a Freeblog adminisztrációbanA megoldás az, hogy a megfelelő helyen belenyúlunk a Freeblog sablonjába. Ezt értelemszerűen az adminisztrációs felület Sablon > Sablonok menüpontja alatt tudjuk megtenni.

Itt fel van sorolva az összes weblapelem (főoldal, egyedi bejegyzés, stb...), melyekhez egyenként tudunk különböző megjelenítést beállítani. Ez értelemszerűen azt jelenti, hogy ha azt akarjuk, hogy a változtatásunk a weblap minden részén látszódjon, akkor az összes sablont át kell írnunk, méghozzá ugyanolyan módon.

A lényeg, hogy amire nekünk szükségünk van, az egy beágyazott keret, úgynevezett IFRAME. Ez nálam a következő módon néz ki:

<iframe
width="100%"
height="100%"

src="http://www.pestplaza.hu/blogkeret/"
frameborder="0"
scrolling="no">
</iframe>

Ezt részletesebben felesleges elmagyarázni, számunkra most csak annyi a lényeg, hogy az src részt kell a saját igényünk szerint átírnunk. Ami itt nálam http://www.pestplaza.hu/blogkeret/, azt be kell helyettesíteni annak a weblapnak a címére, amelyik weblapot meg akarjuk jeleníteni a dobozunkban.

Felmerülhet még a kérdés, hogy ezt mégis hol kellene beillesztenünk a sablon kódjába.

Nos, ehhez tudnunk kell, hogy egy modern weblap HTML kódjának a törzse egymásba ágyazott DIV elemekből, vagyis névvel ellátott részekből áll. Egy ilyen DIV elem a következő módon néz ki:

<div id="lebego">
a "lebego" nevű DIV elem belső része
</div>

Értelemszerűen nekünk is egy ilyen DIV elembe kell elhelyeznünk a beágyazott keretünket. Ez nálam a következő módon néz ki:

<div id="lebego">
<iframe width="100%" height="100%" src="
http://www.pestplaza.hu/blogkeret/
" frameborder="0" scrolling="no"></iframe>
</div>

Ezt a DIV tag-et legegyszerűbb a weblap legelső DIV tag-jén belül elhelyezni. Ezt közvetlenül a <BODY> nyitó HTML tag alatt találjuk. Nálam ennek "shadow" a neve.

Ennek megfelelően közvetlenül a <body> tag alatti rész nálam így néz ki:

 <body>

<div id="shadow">


<div id="lebego">
<iframe width="100%" height="100%" src="
http://www.pestplaza.hu/blogkeret/
" frameborder="0" scrolling="no"></iframe>
</div>

...

Tehát van egy id azonosítóval (névvel) ellátott div tag-ünk, és egy ebbe beleillesztett IFRAME típusú beágyazott keretünk. Ezt a Freeblog adminisztrációs felületén keresztül minden egyes sablonunkba belerakjuk, és félig már végeztünk is.

SablondarabokMost már csak azt kell beállítanunk, hogy pontosan mekkora legyen, és hol helyezkedjen el a keretünk (dobozunk). Ezt a CSS (stíluslap) átszerkesztésével tudjuk megtenni. Ehhez a Sablon > Sablondarabok menüpont alatt férhetünk hozzá.

Itt a weblapunk minden egyes részéhez tartoznak már beállítások, de mi a meglévő tartalommal ne törődjünk. Helyette a CSS kód legelejére illesszük be az alábbi kódot:

#lebego{
        position:absolute;  
        width:205px;  
        margin-left:+290px;   
        height:580px;  
        top:15px;

        left:50%;  
        overflow:no;
        border:1px solid #000000;
        z-index:1; 
}

Ehhez viszont már érdemes részletes magyarázatot adni. :)

Ami tehát minket különösen érdekel:

Röviden ennyi lenne.

Ha van még kérdés, szívesen válaszolok.

By SoDI


http://sodi.freeblog.hu/archives/2007/09/25/Lebegodoboz_beillesztese_Freeblog_sablonba/
Author: sodika
Hangfelvétel Vista alól

Hogyan tudunk hangot rögzíteni Windows Vista alatt?

Mint talán emlékeztek, néhány hete elátkoztam az nVidia-t, amiért nem tudtam Vista alól hangot rögzíteni. Mivel az nVidia lapján valóban nem érhető el hivatalos audio driver nForce 1-es lapok alá, valószínűleg igazam is volt, amikor ezt gondoltam, azonban ma rájöttem, hogy az esetek többségében nem ilyen egyszerű a megoldás.

Tegnap ugyanis egy olyan alaplapra cseréltem ki az ősrégi NF7-esemet, amelyik dobozán hatalmas logó hirdeti, hogy "Vista Premium Logo Ready", és hogy külön ehhez az oprendszerhez ajánlott, beépített 7.1-es hangrendszerrel kínálják. Ehhez képest meglepettem vettem tudomásul, hogy amikor hangot akartam rögzíteni, ismét  csak azt a hibaüzenetet kaptam, hogy nincs a rendszerhez hangrögzítő eszköz csatlakoztatva.

Idegesen ellenőriztem a drivert, de azzal semmi gond nem volt, elvégre pont ezt megelőzően telepítettem fel a legfrissebbet. Aztán rövid Google keresés után meg is lett a megoldás.

Nem fogjátok kitalálni.

Be kell dugni a mikrofont!

Ennyi. Vazz.

Érzékeli, Windows tálcán feldob egy buborékot, hogy "egy jack dugó csatlakoztatva lett", és már lehet is hangot rögzíteni (vagyis próba kedvéért a nagy semmit nem engedi).

ÁÁÁÁÁ! Én elhiszem, hogy ez sokkal logikusabb működés, mint a korábbiak, de aki megszokta, hogy a hangcsiholó vas nem ennyire "intelligens" a gépben (mint például én), azt piszkosul össze tudja zavarni az ilyesmi. :)

By SoDI


http://sodi.freeblog.hu/archives/2007/08/23/Hangfelvetel_Vista_alol/
Author: sodika
RSS olvasók aktiválása

Hogyan kell szabályosan hozzácsatolni egy oldalhoz az RSS feed-eket?

Innen láthatjuk IE7 alatt, hogy van-e RSS feed az aktuális oldalonAz Internet Explorer 7 beépített RSS olvasója automatikusan kijelzi, ha az éppen böngészett oldalhoz tartozik RSS feed. A jobb felső sarokban található eszköztáron rögtön látható. Ha nincs, akkor az RSS ikon sötétszürke marad, ha van, akkor pedig szép narancssárgává válik.

Ahhoz, hogy ezt érzékelje az RSS olvasó, nem elég simán kilinkelni az RSS csatornánkat, hanem a HTML fejlécben (a HEAD tag-ben) is jelezni kell őket, a következő kódon:

<link rel="alternate" type="application/rss+xml"
title="
{az RSS feed neve}" href="{RSS feed helye}
" />


Vagyis a konkrét példa kedvéért ez a Tüntetés Nyilvántartásomnál így néz ki:


<link rel="alternate" type="application/rss+xml"
title="
Tüntetés Fejlesztői Blog" href="rss.php" />

Na, mára is megvolt a tutorial rovat. :) 

By SoDI


http://sodi.freeblog.hu/archives/2007/08/19/RSS_olvasok_aktivalasa/
Author: sodika
MySQL DateTime RSS formátumba alakítása

Hogyan alakítsuk át PHP-ban az MySQL datatime adatokat RSS 2.0-ához szükséges RFC 822 formátumúvá?

Azt hiszem, hasznos lehet, ha szerepel erre itt egy használható megoldás, mert sehol sincs normálisan leírva, pedig gyakori feladat, hogy valaki RSS kimenetet szeretne kódolni. (Én most konkrétan az Országos Tüntetés Nyilvántartás fejlesztői blogjánál ütköztem bele ebbe a problémába).

Ugye a MySQL datatime formátumban tárolva így néz ki egy dátum:

2007-08-07 22:03:44

Az RSS 2.0-ához viszont RFC 822 formátum kell, ami így néz ki:

Tue, 07 Aug 2007 22:03:44 +0200

Nos, ennek a nagyobbik részét könnyűszerrel előállíthatjuk a MySQL formátum megfelelő szövegrészeinek pakolgatásával, azonban ott van az elején az a hülye hárombetűs jelzés, ami azt mutatja, hogy ez éppen a hét melyik napjára esik. Ilyet viszont az eredeti adatban nem találunk.

Nos, tudnunk kell, hogy a PHP az 1970 január 1. éjfél óta eltelt másodpercekben kezeli a dátumadatokat (ez a fenti példánál egészen pontosan 1186517024). Ezt hívjuk időbélyegnek, és az éppen aktuális időpontra vonatkozóan a time() paraméter nélküli PHP függvénnyel kérdezhetjük le.

Ezt az időbélyeget aztán könnyűszerrel alakíthatjuk RSS-hez szükséges formátumúvá (vagyis a hét napját is tartalmazó alakúvá) a date() beépített PHP függvény segítségével.

date (r, time() );

Ahol az r betű jelenti azt, hogy a választ RCF 822 (RSS) formátumban kérjük.

Igen ám, csakhogy mi most nem a pontos időnek, hanem egy adatbázisból kiolvasott dátumnak az időbélyegére vagyunk kíváncsiak. Szerencsére erre is van a kezünkben beépített PHP függvény mktime() néven, amelyik 6 különböző paramétert vár, ebben a sorrendben:

  1. óra
  2. perc
  3. másodperc
  4. hónap
  5. hónap napja
  6. év

Ha megfigyeljük, ezek közül már mindegyik adatot ki tudjuk hámozni a MySQL datatime formátumából. Erre szolgál a szövegrészletek kinyerését végző substr() nevű függvény. Ez első paraméterként az eredeti szöveget várja, második paraméterként azt, hogy melyik indexű karaktertől szeretnénk elvágni a szöveget, a harmadik, opcionális paraméterként pedig azt, hogy hány karakter hosszú szövegrészt kérünk.

Így például ennek, hogy

substr ('Szálasi Ferenc jó ember volt.', 8,7);

az a kimenete, hogy Ferenc.

Készen is vagyunk, ezek alapján meg is írhatjuk a függvényünket.

Megkapjuk a MySQL datatime értéket, előállítjuk belőle az időbélyeget, végül pedig ebből az RSS-nek megfelelő formátumot.

function rssDatum ($datetime)
{
     $ev = substr($datetime,0,4);
     $honap = substr($datetime,5,2);
     $nap = substr($datetime,8,2);
     $ora = substr($datetime,11,2);
     $perc = substr($datetime,14,2);
     $masodperc = substr($datetime,17,2);
     $idoBelyeg = mktime( $ora, $perc, $masodperc, $honap, $nap, $ev);
     $rssIdo = date(r, $idoBelyeg);
     return $rssIdo;
};

Ha ezt meghívjuk kiírásra:

echo rssDatum('2007-08-07 22:03:44');

Megkapjuk válaszként az RSS-kompatibilis kimenetet:

Tue, 07 Aug 2007 22:03:44 +0200

Ennyi.

By SoDI 


http://sodi.freeblog.hu/archives/2007/08/08/MySQL_DateTime_RSS_formatumba_alakitasa/
Author: sodika
Fireworks megoldás

Mi a teendő akkor, ha Windows Vista Aero felület alatt egyes programok nem akarnak megfelelően működni?

"Megoldás", "fórum", "állítsd be" - csak hogy könnyebben találja meg Google-val, aki éppen erre a problémára keres gyógyírt. :)

Fireworks CS3 - Csak nem akarják kijavítaniNos, néhány napja szentségeltem már itt egy sort azon, hogy miért nem képes az Adobe a Fireworks-höz kiadni egy normális patch-et, és miért kell minden egyes alkalommal visszaváltani az egész Windows Vista-t a klasszikus megjelenítésre, ahányszor csak használatba akarjuk venni a programot, és közben mondjuk az egérkurzort is az irányításunk alatt akarjuk tudni.

Ez akkor lett még inkább kérdéses, amikor a 3D Studio Max 9 próbaverziójánál is megtapasztaltam, hogy nem igazán készítették fel a Vista alatti futtatásra. Amint elindítod, rögtön elszáll a nagyon sokat mondó "ismeretlen hiba" nevű ablak kíséretében.

3ds MaxÉrdekes módon az Autodesk mégis sokkal komolyabban veszi az ügyfél-orientáltságot, így kb. 10 másodperces keresés után rá is lehet bukkanni a 3dsMax 9 szervizcsomagjaira, melyek már rögtön orvosolják a problémát. (Hát igen, ha valaki igazán professzionális ügyfélkör kiszolgálására rendezkedik be, és nem pedig tucat termékeket fejleszt tucat webmunkásoknak, mint az Adobe, az nem engedheti meg magának, hogy akár csak egy pillanattal is tovább lógjon a levegőben a megvásárolt termékeinek gond nélküli használhatósága, mint feltétlenül muszáj.

Nos, az első dolog, ami a 3D Studio service pack után szembeötlik, hogy az indításakor kapunk egy informatív buborékocskát, ami arról tájékoztat, hogy most éppen olyan cuccot indítottunk el, ami nem szereti a sok csilivilit, így, amíg fut, ezek ki lesznek kapcsolva. Automatikusan, mindenféle idegesítő manuális állítgatás nélkül.

3D ablakváltás - Aero nélkül le kell mondani rólaRáadásul ennek nem csak a fárasztó Vezérlőpult > Megjelenítés kattintgatások teljes megspórolása miatt örültem igazán, hanem azért is, mert a Windows témák lassú oda-vissza váltogatása helyett ez egy sokkal gyorsabb megoldás, ugyanis az ablakok formáját, az egyes ikonok alakját, és színét tökéletesen érintetlenül hagyja, és így az egyetlen változás, amit tapasztalsz, annyi, hogy megszűnik az ablakok gyönyörűen kivilágított gombjainak egyéni csillogása, amikor föléjük mozgatod az egeret, a továbbiakban nem áttetszőek az ablakok felső sávjai, nem működik a 3D ablakváltás, és a tálca apró betekintő nézőkéjéről is le kell mondanod. De csak és kizárólag arra az időra, amíg fut a Max, a bezárása után ugyanis rögtön visszakapjuk mindezt.

Egyszerűbb színséma

No, itt kezdett nekem erősen gyanús lenni a dolog, mert ugye, ha ez ilyen egyszerű, akkor hogy a francba van az, hogy nincs egyetlen olyan opció sem a Vista vezérlőpultjában, ami az Aero funkcióit teljes témaváltás nélkül kikapcsolná. Merthogy tényleg nincs, mindent végigbogarásztam.

Kompatibilitás - Asztal-összeállítás letiltásaA következő lépés, hogy no, ha nincs ilyen beállítási lehetőség a vezérlőpulton, akkor nyilván a futtatandó programnál kell valamit buzerálni. WinXP-ből ismerős a kompatibilitási mód. Mondom, Xp alatt jól futtott, nosza állítsuk be a WinXP SP2 kompatibilitást. (Jobb klikk > Tulajdonságok > Kompatibilitás fül)

Semmi hatás. Viszont, nini, vannak itt olyan jelölőnégyzetek, amik XP alatt nem voltak jelen. No, akkor nyilván valamelyik lesz ezek közül, ami közli a Vistával, hogy szerintem akad az Aero-val a cucc.

Na, kitaláljátok, hogy hangzik az Microsoft-tul, hogy "kapcsold ki futtatáskor a sok csilivili szart"?

Egye fene, elárulom: "Asztal-összeállítás letiltása". Ááááá! Mi a gány ez, hogy asztal-összeállítás? Ki volt az a barom, aki ezt kitalálta?

Ráadásul mi ez a baromság, hogy ezt külön kell beállítani, és nem tartozik automatikusan a WinXP kompatibilitási módhoz? Egy hétköznapi ember nem csupán azt érti kompatibilitás alatt, hogy ugyanazokat a rendszerválaszokat szimulálja a mag, mint egy WinXP, hanem azt, hogy minden (értsd: minden) pontosan ugyanúgy fog működni, mint XP alatt.

Az, hogy az Aero ki-be kapcsolását külön is lehet menedzselni a tulajdonságok között, örvendetes, és megadja a az irányítás szabadságát, azonban szerintem mégis úgy lenne logikusabb a beállítások működése, ha a WinXP kompatibilitási mód automatikusan kikapcsolná az Aero-t, és az alsó jelölőnégyzet pedig a mostani működése helyett visszafele bírálná felül ezt.

Kompatibilis vele = ugyanúgy működik. Így lenne a normális.

Vista SUX!Persze lehet azt mondani, hogy mit rinyálok, egyszerűen hülye vagyok, "nem értek" a Vistához, azonban  én elég régóta azon a véleményen vagyok, hogy szakmai alkalmazások (fejlesztőeszközök, grafikai programok, ügyviteli szoftverek) kivételével úgy helyes, ha nem kell "érteni" semmihez, hanem minden egyértelmű, csak használatba kell venni a termékeket. Arról viszont, hogy "asztal-összeállítás" józan paraszti ésszel garantáltan nem fog beugrani senkinek, hogy mi a francot akar jelenteni.

Mondjuk mennyivel normálisabb lett volna "egyszerűsített ablaksémáknak" nevezni, vagy mondjuk "egyszerűbb asztalsémának"?

Vagy az már túl egyszerű lenne?

By SoDI


http://sodi.freeblog.hu/archives/2007/07/26/Fireworks_megoldas/
Author: sodika
HTML nyuszi

A japcsik pihentagyúságának tényleg nincs határa.

Alább megtudhatjuk, hogyan lehet egy HTML táblázatból nyuszifüles mangalányt rajzolni.

 

Beszarás. :D

By SoDI


http://sodi.freeblog.hu/archives/2007/06/30/HTML_nyuszi/
Author: sodika
Táblázat SDT szövegbe

Egyrészt tudom, hogy egy ilyen specifikus dolog, hogy miként kell Sulinet SDT tananyagba táblázatot illeszteni, nem sokakat érdekelhet, másrészt még ha érdekelne is valakit, egy eredetileg 1024 x 768-as felbontású képernyővideót őrültség videómegosztón mutogatni, de mivel alaposan megszenvedtem délután ezzel a szarral, mire beadtam, így elhatároztam, hogy akkor is szánok rá egy blogbejegyzést, ha amúgy teljesen értelmetlen.

Értelmetlen, úgyhogy tessék nyugodtan olvasatlanul átugrani. :D

Olyan szar lett, mint a ház, hadarok, kapkodok, a sietség miatt pöszén ugrok át hangok felett, túl sokat szarakodok HTML alapokkal, és így az egész koncepciótlan, de mindegy, fél óra alatt ennyit tudtam összehozni, majd máskor nem hagyom az utolsó pillanatra azt, amire egyébként több hónapom lenne.

Külön szenvedés volt a dologban, hogy egy olyan tárhelyre kellett felrakni, ami csak ELTÉ-n belülről érhető el. Külső FTP hozzáférésről ne is álmodjon a paraszt, így a mai napom abból állt, hogy reggel mentem órákra, délután hazajöttem, itthon elkészítettem a cuccot, felnyomtam egy szerverre, majd este nyolckor ismét mászhattam a suliba, hogy időben beadjam.

Úgy utálom, ha valami így van megszervezve.

Egyébként a tantárgy neve Távoktatás 2.

By SoDI


http://sodi.freeblog.hu/archives/2007/04/23/Tablazat_SDT_szovegbe/
Author: sodika
YouTube videó Freeblog bejegyzésbe

Azt hiszem, érdemes egy bejegyzést ennek a leírására is szentelni, mert talán akad valaki aki pont ez alapján fog a későbbiek során elboldogulni vele.

A videómegosztókról, mint amilyen például a YouTube, érdemes tudni, hogy kiemelt érdekük az anyagaik széles körű terjesztése, melyet leginkább úgy tudnak biztosítani, hogy a náluk megosztott videókat mindenki szabadon beillesztheti saját webes anyagaiba.

Ehhez a rendszerek fejlesztői segítséget is adnak, hiszen a hasonló szolgáltatásoknál általában megtalálható a megnyitott videó adatai között az embed (beágyazás) szövegdoboz a beillesztéshez szükséges adatokkal. Nem kell mást tenni, mint ezt szövegként kimásolni onnan, és a saját HTML-anyagunk forráskódjába beilleszteni.

Youtube beillesztéshez szükséges kód

A forráskód szerkesztését szerencsére a legtöbb blogszolgáltató, így a Freeblog rendszere is megengedi. Erre szolgál a bejegyzés-szerkesztő alsó ikonsorának végén található kék színű ikon.

A HTML szerkesztő ikonja a Freeblog bejegyzés szerkesztőjébenMiután elvégeztük a beillesztést, magát a videóanyagot a szerkesztőn belül nem fogjuk látni, csak azt, hogy mekkora méretet foglal el, de ez ne zavarjon minket, magán a blogon már rendben meg fog jelenni.

Természetesen könnyen előfordulhat, hogy olyan blogsablont használunk, mely mellett az eredeti videóméret túlnyúlna a szövegrész számára fenntartott területen. Ekkor érdemes átméretezni a videónkat, amit a beillesztett YouTube-kódrészleten belül tudunk megtenni. Nem kell mást tennünk, mint mind a két helyen átírni benne a width (szélesség) és a height (magasság) értékét az általunk megkívánt mérethez. Mivel egy videóanyagnál fontos az eredeti méretarányok megtartása, ennek kiszámításához segítségünkre lehet egy mezei számológép, de gondolom ennek a részleteibe már nem kell belemennünk. :)

Konkrétan az itteni szövegrészben megjelenített képanyagok optimálisan legnagyobb szélessége 395 pixel, így a YouTube alapértelmezett 425*350-es mérete helyett itt a 395*325-ös méret a legjobb.

Emellett még arra is érdemes ügyelni, hogy a videó megjelenítéséért felelős kód egy bekezdésen belülre essen, mert így lehet a legkönnyebben középre igazítani.

HTML-ben egy bekezdés alatt a forráskódon belül a <p> és a </p> tagek között lévő részt értjük. (tag: a HTML nyelvben szögletes zárójelek között lévő struktúraelem, ilyenek egymásba ágyazásából épül fel egy weblap.) P tehát bekezdést (paragraph) jelent. Ezt kell kiegészíteni a nyitó tagben a középre igazítást végző align="center" résszel.

Ennek megfelelően a fenti Hitleres videó a következőképpen kellene, hogy kinézzen a Freeblog HTML szerkesztőjében (sárgával emelem ki, amit nem a YouTube embed részből szedtünk ki, zölddel pedig azt, amit onnan, de utána átírtunk):

<p align="center">
<object width="395" height="325">
<PARAM NAME="movie" VALUE="http://www.youtube.com/v/vezr3dW4J5s">
<PARAM NAME="wmode" VALUE="transparent">
<embed src="http://www.youtube.com/v/vezr3dW4J5s" mce_src=http://www.youtube.com/v/vezr3dW4J5s type="application/x-shockwave-flash" wmode="transparent" width="395" height="325">
<param name="movie" value=http://www.youtube.com/v/vezr3dW4J5s>
</param>
<param name="wmode" value="transparent">
</param>
</object>
</p>

Remélem, minden érthető, de ha mégse, szívesen válaszolok minden felmerülő kérdésre.

By SoDI


http://sodi.freeblog.hu/archives/2007/04/01/Youtube_beillesztes_Freeblog_bejegyzesbe/
Author: sodika