Tag Archives: blogmotor

néha még nálam is

tud győzni a racionalitás. főleg ha kemény tények kényszerítik ki. egyszerűen nincsen most időm ezzel a blogmotorral foglalkozni, a munkahelyen jön egy nagy átállás, több projekt fut párhuzamosan, a magánéletem szabad óráit meg másra kell fordítanom.

úgyhogy egyelőre lesz itt egy wordpress-motor, a sajátra meg visszatérek úgy november-december környékén.

Tags:

mégegyszer, utoljára .NET és MySql

a MySQL ODBC-meghajtója egyszerűen nem jó. magyargyűlölő szoftver. a szolgáltatóm supportja azt mondta, hogy csak a kódolást kell rendesen beállítani az adatbázisban és a táblákon UTF-8-ra, azonban az összes lehetséges permutáció végigpróbálgatása után, de még mezőszinten is babrálva, letettem arról, hogy valaha ő és ű karaktereket lássak viszont az oldalon.

a .NET connector működik, viszont van egy komoly szépséghibája, púpos kizárólag full trust módban hajlandó futni. ha valakinek saját szervere van, annak esetleg jó lehet, a web hosting szolgáltatók viszont, a több alkalmazást futtató shared szervereikkel eleve fel sem telepítik. a full trust és a shared szerver sehogysem jön össze, vagy ha mégis, akkor az komoly biztonsági rés: bármelyik alkalmazás hozzáfér bármelyik másik alkalmazás adataihoz. (lásd pl. K. Scott Allen)

jó lenne

ha fenn lenne a .NET connector, akkor nagyjából négy lépésből állna egy primitív oldal elkészítése: 1. bedobni egy SqlDataSource controlt; 2. beállítani rajta, hogy a provider a MySql.Data.MySqlClient, mi a connection string és mi a select command (a képen); 3. bedobni egy data-aware controlt; 4. beállítani rajta, hogy az előbbi SqlDataSource az adatforrása és hogy melyik mezőt jelenítsemeg.

ez kódban körülbelül ennyi:

<asp:sqldatasource
    id="dsBlogEntries" runat="server"
    connectionstring="Database=yourDatabase;Data
    Source=yourServer;User Id=userID;Password=password"
    providername="MySql.Data.MySqlClient"
    selectcommand="SELECT * FROM `blog-entries` ORDER
    BY id DESC"></asp:sqldatasource>

az adatforrás és - a DataList controlt most ugorgyuk át - mellé egy szövegcímke, ami kiírja a blogpost címét:

<h1><asp:label id="titleLabel" runat="server" text='<%# Eval("title") %>'>
</asp:label></h1>

de ezt csak azért mondtam el,

amiért amszterdam is létezik - hogy lássuk, hogy ilyen is van, csak mi nem vagyunk méltóak rá. ezért élünk a budapesti állatkertben.

a manual workaround kalandos kicsit. a .NET lehetőséget nyújt arra, hogy az alkalmazás bin könyvtárában előre lefordított, bináris állományokat tároljunk és hívogassunk meg. szigorúan csak kódból. ha ide, a bin könyvtárba betesszük a mysql hivatalos connectorát és elkezdenénk használni, akkor jutunk el ahhoz a rémesen frusztráló hibaüzenethez, hogy “That assembly does not allow partially trusted callers”. a full és a medium trust, ugye.

de nincs minden veszve. jött pár álarcos hős és visszatolták a döglött lovat a szomszéd telkére. vagyis forrásban töltötték le a MySql AB connectorát, kijavították és elérhetővé tették úgy, hogy a bin medium trustban is fut. mit fut, szakít! ezt a mysql.data.dll-t kell betenni a bin könyvtárba.

azért a vizuális részét el lehet felejteni a dolognak, mivel a szerverre nincsen feltéve a natív kliens és a bin könyvtár dll-jei csak kódból hívhatóak, nincsen értelme SqlDataSource controlt bedobni az oldalba és két kattintással megmondani neki, hogy a MySqlClient a data provider, ezzel csak csak újabb application errorhoz jutunk el. helyette, vagyis a fenti pár soros kód helyett, ez van (primitív megközelítésben, minden cizellálás nélkül):

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
  Handles Me.Load
    Dim conn As MySqlConnection = _
    New MySqlConnection("Server=yourServer;User
      Id=userID;Password=password;Database=yourDatabase;
      Pooling=false;")    Dim strSQL As String = "SELECT * FROM `blog-entries` ORDER BY id DESC;"
    Dim blogDataA As MySqlDataAdapter = New MySqlDataAdapter(strSQL, conn)
    blogDataA.SelectCommand = New MySqlCommand(strSQL, conn)
    Dim ds As DataSet = New DataSet("dsBlog")
    blogDataA.Fill(ds)
    blogMain.DataSource = ds
    blogMain.DataBind()
End Sub

ahol is a blogMain egy DataList control, amiben van többek között a fenti címke is, ami a post címét jeleníti meg.

nem az a baj vele, hogy többet kell gépelni, nem számottevő. inkább az, hogyilyen nyakatekert módon, mondjuk a Page_Load eseményben, vagy a DataList init eseményébenkell ezt kezelni, dizájn helyett - teljesen feleslegesen - kódolni.

Tags: , ,

aaarrghh!

ami a blogot illeti, az elmúlt öt-hat napom, a fene se emlékszik már pontosan, teljesen pocsékba ment. kicsit tovább alakítottam, leginkább a dizájnt - térképet és szövegeket is elhelyezni egy oldalon úgy, hogy mindkettőnek jusson elég hely és ne kelljen túl sokat görgetni, nem éppen triviális - erre egyszercsak elkezdett nem működni a beillesztett google térkép.

szépen elkezdtem mindent visszacsinálni, előbb apránként, aztán már durván, a pár hete meghalt winchesterem backupjából visszatöltve. ez működött is megint. összevetettem a kódot, és egészen egyszerűen semmiben nem változtattam, ami a térképpel, a térképet megjelenítő javascript függvénnyel vagy bármelyik google maps api-hívással volt kapcsolatos.

szombaton éjjel, időtlennek tetsző, több napos taknyolás után, kigúvadt, véreres szemekkel, sajgó háttal (ne vegyetek karlanda kanapét az ikeában) rájöttem a megoldásra és eljutottam addig a következtetésig, hogy ez a világ megérett a pusztulásra.

ha az ember felrakja az asp.net 2.0 web alkalmazásához a css friendly control adapters nulla pont valahanyas verzióját, hogy ne legyen olyan ocsmány a kódja, akkor onnantól kezdve a body tag onload eventje nem működik. egészen egyszerűen bármit ír az ember az onload= mögé, az baszik lefutni.

világos, a nyomorultak úgy írták meg a szktipteket, hogy valahol felülnyomják egy

window.onload=valami();

sorral, magasról fütyülve arra, volt-e valami már ott vagy sem, pedig csak valami olyasmi kéne helyette, hogy mondjuk

var  oldonload = window.onload;
if (typeof window.onload !=  'function')
  {
  window.onload = valami;
  }
else
  {
  window.onload  = function()
    {
    oldonload();
    valami();
    }
  }

nyilván nem volt kedvem a kódjukban kurkászni, elmentem az egypontnullásért, hogy az majd biztosan jó lesz.

fogalmam sincs. mert ez a szar meg, ha kell, ha nem, mindenképpen akar csatlakozni egy MS SQL adatbázishoz a localhoston. adatbázisoktól mentes alkalmazás esetében is. vagy mysql adatbázis esetében is, mint itt, ugye. és akkor ne fakadjak sírva, vagy valami.

viszont ezentúl gyakrabban megyünk a libegőre, a két kölyöknek, akik egyébként az ébredéstől az elalvásig folyamatosan sikoltoznak, kiabálnak és ordítanak egyetlen pillanat szünet nélékül, egy szava nem volt végig az úton. a néma csönd zene volt a füleinknek, ha élhetek a képzavarral.

Tags: , ,