Google

1956 okt. 23,
A magyar forradalom (szabadságharc, ellenforradalom, stb...) napja.

Ennek a napnak a megemlékezése folyamán a google magyar keresőlapja az 56-os ok emlékére a következő nyitólapot jelenített meg:



Google, szeretnék gratulálni!

(En)
Well done!
But really I'm more than happy to see these kind of customizations on the google search interface.

1956-os srácok, veletek vagyunk!
És nem feledünk titeket!

Sörkollektor

Sörkollektor

Fűtés az átmeneti időszakban, ősszel illetve tavasszal.
Fűtésrásegítés a hideg téli hónapok alatt.


Már egy jó ideje rátaláltam a sörkollektorra, mint alternatív napenergia felhasználásra. Olcsó, és fenntartható, többlet költséget nem igénylő fűtés, fűtésrásegítő módszer. Megfelelő tájolással az éves fűtésszámla jelentős része megspórolható vele, szóval érdekes dolog hogy foglalkozzam vele.




Miért és hogyan Sörkollektor ez a kollektor?

  • Végy jónéhány kiürített alumínium sörösdobozt.
  • Helyezd be őket egy szigetelt dobozba.
  • Fesd le a dobozokat feketére
  • A lakás egy hidegebb pontjából vezesd ki a levegőt a dobozok aljába.
  • A lakás egy másik pontjába vezesd vissza a dobozok tetején felmelegített levegőt

Sörkollektor építésre fel!

Akit érdekel a sörkollektor a honlapon bővebb információt találhat.

David Ecclestone: a magyar korona Made In China

Kedves David Ecclestone,

  • A forma 1 atyja,
  • Aki körül még a  világ is forog
  • Az úristen

szerint a Magyar Korona Kínában készült!

(forrás: http://f1.blog.hu/2010/07/30/bernie_ecclestone_kinjaban_viccelt_schmittel)

Tudd meg, kedves Ecclestone,

A Magyar Korona idősebb mint te vagy!
Hosszabb ideig volt a Magyarországi  jog alapja mint a te szaros F1-ed valaha is lesz.

Ezúton szeretnélek téged megkérni, sőt mi több követelem hogy a magyar korona nevét hacsak nem elismerően vagy történelmi okokból szádra ne vedd, mert a magyar korona az ami minden magyar ember számára legalább is nem vicc tárgya...

Csak egy dolgot szabadjon beiktatnom:

Forrás vikipédia: (http://hu.wikipedia.org/wiki/Szent_Korona)
"A magyar Szent Korona Európa egyik legrégebben használt és mai napig épségben megmaradt koronája. A magyar államiság egyik jelképe, mely végigkísérte a magyar történelmet legalább a 12. századtól napjainkig."


Ez úton követelem hogy kérjen bocsánatot!

Nem tőlem hanem minden magyartól, és legfőképpen a Szent Koronától!


(UI: kicsit felrántottam magamat ezen...)

Ügyfélszolgálat példa

Ügyfélszolgálat rulez.

Egy jól működő ügyfélszolgálat...

XY Customer Service
Bob: Hello I'm Bob, May I help you?
You: Sure, i want to ....
You: And .....
You: And .....
Bob: One Moment!
You: And .....
Bob: Checking.
You: Ok, go ahead! Is there anything I can give you to do ...?
Bob: So you want me to do .....?
You: That's right.
Bob: I need extra information only because of your safety.
Bob: Q1.
Bob: Q2.
Bob: Q3.
You: Sure, x---- y----- z-----
Bob: Done.
You: Thanks
Bob: Bye.
You: Bye

No és egy kevésbé jól működő ügyfélszolgálat:

XY Customer Service
[0:0:30] Bob: Hello I'm Bob, May I help you?
[0:0:35] You: Sure, i want to ....
[0:0:50] You: And .....
[0:0:55] You: And .....
[0:2:00] Bob: One Moment!
[0:2:15] You: And .....
[0:4:00] Bob: Checking.
[0:4:30] You: Ok, go ahead! Is there anything I can give you to do ...?
[0:6:00] Bob: So you want me to do .....?
[0:6:15] You: That's right.
[0:8:30] Bob: I need extra information only because of your safety.
[0:8:50] Bob: Q1.
[0:8:55] Bob: Q2.
[0:9:00] Bob: Q3.
[0:10:00] You: Sure, x---- y----- z-----
[0:11:00] Bob: Done.
[0:11:30] You: Thanks
[0:11:35] Bob: Bye.
[0:11:50] You: Bye

NC

Site Service Host

Site Service Host



Elkészült?

Elkészült!

Internetes szolgáltatás alapú rendszer.
Bővíthető, jogosultság kezelés, kiegészítők és még sok minden más...

A rendszer eladó, kiadó

További információk a www.siteservicehost.com oldalon találhatóak.
Érdeklődni az oldalon.

A munka, a munka

A munka dandárja után, de még a vége előtt egy kis bejegyzés.

Élek, még dolgozok.
Pedig már nem bánnám ha már minden a helyére kerülne...


Kis szösszenet mint összesítés:

  • Windows 2008 R2 telepítése Virtual Box alá
  • Domain regisztráció
  • Szerver Telepítés,
  • Konfigurálás,
  • Fejlesztés,
  • Tesztelés,
  • Hibajavítás,
  • Tesztelés,
  • Deployment,
  • Hibajavítás,
  • Végső simítás,
  • Hibajavítás
  • Tesztelés

(no most már jó lenne ha tényleg összejönne)

De talán már hamarosan...


És hogy mi is?

Remélem nemsokára ahogy összeállt örömmel megoszthatom azt is.

Visual Studio 2010

Megjelent a Visual Studio sorozat 2010-es verziója. (forrás: http://www.hanselman.com)


A "tartalomból"

  • .NET 4.0
  • Multi Framework Target
  • WPF alapú felület
  • ASP.NET 4.0 és MVC 2
  • PLINQ
  • és még további lehetőségek... az msdn.microsoft.com oldalon


Lássuk a medvét...


Happy Coding!

MSSQL - Delete all table

Mert hogy mindig elfelejtem és rá kell keresnem  (és esetleg másnak is hasznára válik):

Fejlesztés közben előfordulhat hogy az összes táblát törölni szeretnénk MSSQL adatbázis esetén:

exec sp_MSforeachtable "DROP TABLE ? PRINT '? dropped' "
futtassuk amíg az összes táblától meg nem szabadultunk.

Figyelem! ez nem kérdez, töröl! Csak saját felelősségre.

Happy Coding

WCF wsdl namespace

A tempuri.org-ról

Hogyan is szabaduljunk meg a tempuri.org namespace-től egy WCF szolgáltatás WSDL leírójában?



1.) In your ServiceContract attribute constructor define the Namespace property.

[ServiceContract(Namespace = "http://myservice.com")]

public interface IMyService

2.) For your ServiceClass create the ServiceBehavior attribute with Namespace property

[ServiceBehavior(Namespace = "http://myservice.com")]

class MyService : IMyService

3.) In all your bindings set the bindingNamespace property

<endpoint binding="basicHttpBinding" bindingNamespace="http://myservice.com"....



Forrás: http://my-tech-talk.blogspot.com/2009/01/how-to-get-rid-of-httptempuriorg-in-wcf.html 

Az egész olyan Microsoft-os...


3, azaz három különböző helyen kell beállítani és ami a legfontosabb beleforgatni a kódba a namespace-t.



Ha így teszünk akkor kapjuk meg a következő WSDL részletet:
<wsdl:definitions name="..." targetNamespace="http://myservice.com">
<wsdl:types>...


Jó tudni...

HornGet - Open Source .NET

HornGet

Egy hasznos eszköz a .NET fejlesztéshez a hornget.

Ha a fejlesztés során szükségünk lenne

  • IoC
  • Object Mapper
  • ORM
  • Log
eszközökre...

Telepítsük a gépünkre ezek bármelyikét közvetlenül a forrásból!


A HornGet segítségével a legújabb Nyílt forráskódú eszközök telepíthetőek közvetlenül az adott projekt forrásából.

A HornGet leírása itt érhető el: http://code.google.com/p/hornget/

Az eszköz által elérhető csomagok listája itt érhető el: http://www.hornget.net/packages/


Egy egyszerű példa az eszköz képességeire:
Futtatva ezeket a parancsokat:
horn -install:mvccontrib 
horn -install:automapper 
horn  -install:castle.components 
horn -install:castle.tools 
horn  -install:castle.facilities 
horn -install:castle.services 
horn  -install:castle.windsor 
horn -install:fluentnhibernate 
horn  -install:json.net 
horn -install:log4net -version:2.1 
horn  -install:nhibernate -version:2.1 
horn -install:nhibernate 
horn  -install:nhibernate.linq 
horn -install:nhibernate.linq  -version:2.1 
horn -install:rhino  

Már a gépünkön csücsül a legújabb
ASP.NET MVC
AutoMapper
Castle Komponensek
NHibernate valamint NHibernate Linq


De ez még nem minden!

Ha frissül valamelyik komponens forrása, egyszerűen frissíthetjük a saját verziónkat és már használhatjuk is ezeket a legújabb projektünkben...


Happy Coding!

Velence

Welcome to Venice!
A Karnevál helyszíne:



Nagyobb térképre váltás

Főbb adatok:
  • ~334.000 fő összlakosság
  • ~68.000 lakos Mestrében
  • ~1.500 lakos hagyja el Velencét évente a munkanélküliség a magas árak és a lakások
    hiánya miatt.
  • Az épületek talapzatának közel 60% korrodálódott már a víztől.
... és nem mellesleg Velencében kerül megrendezésre a Velencei Karnevál


De elég ebből a száraz ismertetésből,



Jöjjenek a képek:

Építészet:






Dózse(Doge) palota részlete...




Természet:










Öböl tájkép...








A felvonulók



 


 




... és végezetül:












Laguna éjjel

Szakmai önéletrajz

Hogyan is mutathatnánk be a legjobban a technikai kompetenciánkat?!


Egy szakmai önéletrajz C# Fluent API-val kifejtve.



public class ConsultancyService
{
    public void CompleteTask()
    {
        using (Microsoft.NET.Framework)
        {
            MySelf.OnPlatform(Windows.Any)
           .WithLanguage(Languages.CSharp)
            .WithTool(Tools.VisualStudio)
            .Utilizing
            (
                Utilization.Persistence
                    .With(SubSonic.Instance)
                    .Or(LinqToSql.Instance)
                    .Or(FluentNHibernate.Instance)
            )
            .Utilizing(Utilization.WCF)
            .Utilizing
            (
                Utilization.ESB
                    .With(NServiceBus.Instance)
            )
            .Utilizing
            (
                Utilization.IoC
                    .With(CastleWindsor.Instance)
            )
            .ToAbstract<YourDomain>(Model.YourDomainModel)
            .Provides
            (
                Solution<YourRequirement>.WithTesting.Implement().Deploy()
            )
            .Provides
            (
                Solution<YourRefactoringRequirement>.WithTesting.Refactor()
            );
        }
    }
}

Többet mond minden szónál...

Happy Coding!

ASP.NET Modular Composite Pattern, A facebook "pattern"

A facebook  "pattern"

A Modern Kiterjeszthető Webalkalmazásról, avagy az útkeresés...


Az előző postomban arról írtam hogy milyen problémákkal kell szembenézni amikor egy modern, moduláris alkalmazást szeretnénk létrehozni.




A megoldás kutatása közben bukkantam erre a blog-ra (angol nyelvű)

Kivonatolva a bejegyzés lényege:


A modul kisebb funkcionális egység amelyekből többet összerakva a kívánt rendszer felépíthető. A modul üzleti logikát, infrastruktúrát vagy akár felhasználói felületet is definiálhat.

A kompozíció határozza meg illetve definiálja az egyes modulok közti függőségeket valamint a kommunikációt.


A modulok, illetve függőségeinek leírására számtalan módszer áll a rendelkezésünkre, de mindegyik módszernek meg vannak a maga erősségei, illetve gyengeségei.

A Microsoft-os környezetben a Web Client Software Factory áll rendelkezésre

Annak ellenére hogy jó néhány problémára lehet megoldást adni a környezet használatával van egy nagy hiányossága.
Sajnálatos módon ezzel a környezettel sem lehetséges a felhasználói felület moduláris definiciója. (a környezethez adott minta alkalmazás is mindösszesen az üzleti logikára illetve az üzleti logika függőségeire ad választ, de pl az oldalak html (aspx) erőforrásai a runtime futtatási környezetben kerültek definiálásra)

Így sajnos nem lehetséges Valóban moduláris felépítést elérni vele.
(Vessük össze a modul definíciójával: üzleti logika, infrastruktúra, felhasználói felület)



A probléma boncolgatása közben egy lehetséges alternatíva merül fel:

Amennyiben webalkalmazásról beszélünk (márpedig igen) lehetséges a felhasználói felületet iframe struktúrán keresztül dinamikusan beágyazni bármely keretrendszerbe.


A facebook, valamint a facebook alkalmazások tipikus példái ennek a megközelítésnek


Nézzük meg az egyik népszerű facebook alkalmazást (játékot) a zynga által fejlesztett Maffia Wars alkalmazást.

  • iframe-be beágyazva Cross Domain kommunikációval beépül a facebook portálba biztosítva a facebook-os modult.
  • a facebook Single Sign On szolgáltatását felhasználva biztosítja a zökkenő mentes használatot.
  • a facebook szolgáltatás API-ját felhasználva biztosítja az integrációt. (a játékbeli maffián belüli illetve azon kívüli kommunikáció)


Rendszer szinten elemezve:
  • A facebook mint keretrendszer biztosítja az API-t (szolgáltatások) illetve az iframe-et amibe a modul beágyazásra kerül.
  • A modul a facebook-tól függetlenül egy html controller szolgáltatásként kiszolgálja a kéréseket.
  • a két rendszer közti interakciót az iframe-re épülő Cross Site kommunikáció biztosítja.
  • a két rendszer közti kommunikáció a publikált API-ra épülve megoldható.



A megoldás további előnyei:

  • A keretrendszer komplexitását, tesztelhetőségét új modulok hozzáadása nem befolyásolja.
  • A modulok a rendszertől csak annak publikált szolgáltatásain keresztül függnek.
  • Az így felépített portál jól skálázható mind modul, mind keretrendszer szinten.
    Pl: A megnövekedett forgalom új szerverek munkába állításával megoldható, az ehhez szükséges technológia a webkiszolgálók terén adott. (A kapcsolódási pontok a szolgáltatások URL címei mind a két oldalon...)


Lehetséges vitatkozni, tovább elmélkedni ezen a dolgon, de egy dolog bizton állítható:
A megoldás használható lehet lehet egy moduláris alkalmazás felépítéséhez.

A facebook bizonyította:
  • A facebook nem egy kis alkalmazás, 
  • Számtalan alkalmazás (modul) kapcsolódik már most is hozzá. 
  • Sok ember használja (terhelhetőség) nap mint nap



Happy Coding

ASP.NET WebForms vs. Modern Webalkalmazás?

Az ASP.NET WebForms, hogy kicsit szabadosan fogalmazzak szívás!


Tegyük fel hogy szeretném a világ legjobb Webes alkalmazását létrehozni .NET környezetben, ami:

  • könnyen kiterjeszthető
  • könnyen módosítható
  • a felhasználói számára könnyen kezelhető
  • könnyen testre szabható
  • nem utolsó sorban megfelel a mai kor technikai és felhasználói elvárásainak


Én azt állítom, hogy az ASP.NET WebForms erre nem alkalmas eszköz.
A ViewState, a Postback, a Modulok (Pluginok) összehangolt kezelése csak nagy nehézségek árán érhető el vele.


A gond a WebForms-sal hogy nem erre tervezték, bármennyire is igyekszik az ember szépíteni, nem lehet vele olyan moduláris webalkalmazást felépíteni ami megfelel a következő kritériumoknak:
  • Zárt Alkalmazás API,
  • Független Modulok
  • Dinamikusan Betöltött  Modulok (Plugin)
  • Központi Futtatási környezet

Zárt Alkalmazás API:

A legfontosabb megoldandó probléma az üzleti logika definiálása, a modulok interfészeinek definiálása.

Ez ideáig stimmel, sehol sincs ASP.NET a képben.

Független Modulok:

Kezd kissé problémássá válni a helyzet, de nem megoldhatatlan...
Elsőként mi is a modul, mit várunk el tőle?

A Modul olyan alkalmazás rész ami a Core.API-ra épülve annak erőforrásait felhasználva valami hasznos dologgal egészíti ki az alkalmazást.

No de, ha ASP-NET-ről beszélünk akkor elengedhetetlen hogy a kiegészítés mind Üzleti Logika mind pedig Felhasználó felületen megoldható legyen.

Ehhez vegyük hozzá az ASP.NET WebForms felépítését
(gyk: Control Fa -> ViewState -> Postback)
Hogy egy Nyomógombot helyezzünk el a Modul egyik űrlapján biztosítani kell hogy Postback esetében az adott Control a Postback feldolgozásakor is példányosítva legyen.

(Tehát pl. nem lehet a Modul control-t ASP.NET Cache-elt controlba beágyazni, csak akkor ha a beágyazáskor figyelembe vesszük a postback követelményeket is... Ugyanígy kell eljárni akkor is ha N mélységben ágyazunk be Controlokat egy Cache-elt Controlba)


Ha az adott Controlt dinamikusan hoztuk létre egy Másik Control értékére alapozva, a vonatkozott control inicializálása, és felépítése meg kell hogy előzze az adott Modul control felépítését.

Ez utóbbi a ViewState feladata. Mondhatnánk, hogy meg van a megoldás, de sajnos nem teljesen igaz:

Az ASP.NET control inicializálás, kiértékelés több mint nagy figyelmet igényel a Modul felhasználói felületének megtervezésekor.

Elméletben a Modul független. Modulon belül hegesztéssel megoldható a korrekt inicializálás, de a később kifejtett futtatási környezet erről semmit se tud.

Dinamikusan Betöltött Modul - Plugin:

Az adott modul ideális esetben teljesen független minden más modultól, és kizárólag az API-ra épül.
Egy adott modult ideális esetben az API-ra alapozva mások / máskor is létrehozhatnak.


Ezeket a modulokat amit nevezzünk plugin-nak Reflection-nel be lehet tölteni, feltéve hogy a modulok definíciója az API-ban megtörtént.

Így a Runtime az adott interfészeken keresztül tud kommunikálni a Plugin-nal.


De,
mivel ASP.NET-ről van szó biztosítani kell a felhasználói felületet.

Hogyan lehet elérni:
Definiáljunk a Modul ős Controljait a Core.API-ban és rendereljük adott Controlt az ősön keresztül amikor szükséges.

Hogy a kép árnyaltabb legyen, az ASP.NET compiler bizonyos esetekben eléggé szűkszavú tud lenni ami a hibaüzeneteket illeti.


Központi futtatási környezet:

Kell egy webalkalmazás ami az egész rendszer számára biztosítja a példányosítást minden esetben.
(Vizuális felületnél az oldallekérés és postback, üzleti logika esetében pedig az adott szolgáltatások hostolása)

Ezt végezze el mind az API, mind pedig a Modulok / Pluginok esetében


Biztosítsa a lehetőséget hogy a felhasználói felületet dinamikusan építsük fel (CMS)


És a legfontosabb, stabilan valamint skálázhatóan működjön.






Hogy mi is a probléma a fenti rendszerrel?

Működőképesség: megoldható

Átláthatóság: az üzleti logika mindenképpen átlátható, DE
ott van az a fránya ASP.NET WebForms
a Control-jainak az életcikusával, a ViewState-tel és a Postback-kel


Az ASP.NET oldala sajnos mindennek nevezhető csak átláthatónak nem.
Mert az adott modulok Felhasználói felületének működése
  • Függ attól hogy hogyan vannak beágyazva a szölő control-okban.
  • Függ attól hogy hogyan építettük fel a controlt a postbacket megelőzően.
  • Függ a Control ViewState-től (ami nem ér semmit ha nem építettük újra a control fát a posback feldolgozása közben).
  • Nem utolsó sorban függ a szülő Control postback/viewstate feldolgozási állapotától.


Emberi erőforrás igény: legyen egy csapat aki képes időben megoldani, illetve ledokumentálni a fentebb említett rendszert.



Hogy mi lehet a megoldás?!

Az üzleti logika eléréséhez
Rest WCF szolgáltatások a postback "szolgáltatások" helyett...
vagy
Soap WCF szolgáltatások a postback "szolgáltatások" helyett...

Bővebben itt MSDN - WCF


A felhasználói felület definiálására
ASP.NET MVC a WebForms helyett...
vagy
Castle Monorail (Spark View enginnel) a WebForms helyett...

Bővebben itt
ASP.NET MVC
Castle Monorail és Spark View Engine

vagy...


???


Ez egy nem egyszerű kérdés,



Véleményem szerint aki ezt most megoldja azé lesz a jövő generációs web programozása Windows .NET környezetben...



Akármi is lesz a megoldás időtálló megoldás kell!
Az elfogadhatatlan hogy az ember épp mire befejezte a "Nagy" projektet lehet is kezdeni az újraírást mert épp egy újabb technológia jön be és az MS. szépen csendben megszünteti a régebbi technológia támogatását... (épp ahogy történt az asmx webszervízzel napjainkban MSDN WebService (asmx))




Addig is "gyönyörködjük" az ASP.NET webforms lassú kínhalálában...



Happy Coding

Új év, 2010

Új év, új esztendő!

Általában az emberek fogadalmat tesznek, "kommersz" dolgokat ígérnek. Nem hinném hogy nagy baj lenne ez, sőt egy fogadalmat én is teszek az idei évre...

(Ha jobban meggondolom lehetne az bőven több is, de épp elég ha egy fogadalmat nem teljesít az ember)




Én azt fogadom meg hogy minden nap egyre jobban  leszek.
Minden nap.
Egyre jobban.




Persze nem, nem vagyok beteg, és még csak megoldhatatlan problémáim sincsenek.
Egyszerűen annyit ígérek, hogy a 2010-es esztendőben nem fogok az elrontott, elmulasztott dolgok miatt keseregni, sem pedig elégedetlenkedni.


Egy barátom szokta mindig azt mondani ha megkérdezték hogy "hogy van.",
"jobban mint tegnap, egyre jobban..." mondta


Ez több mint puszta udvariassági válasz,
Több mint egyszerű szavak.

Ez Életfelfogás.


Egy szó mint száz, ünnepélyesen ígérem hogy:

Nekem mától kezdve minden nap egy fokkal jobb lesz.

Megfogadom!

Boldog új évet, Boldog 2010-et!