Stay alive. Reborn

Még élek.

A post célja hogy csekély mértékben eggyel növelje a blog bejegyzéseinek számát.

Más, egyéb, magasabb rendű célja nincs. Jelenleg ennyi is elég.

 

Apró lépések amelyek fontosak a blog és jómagam kapcsolatának felmelegítésére.

Soo simple… Linq to Entity int32 mező StartsWith szűrés

 

Linq to Entity-ben a feltételek összerakásánál típus egyeztetés, illetve mappelt végrehajtás van.

Sajnálatos módon a .NET int.ToString() egy nem mappelt SQL függvény.

 

Mégis hogyan lehetséges Id (Int32) mezőre szűrni?

 

A megoldás:

Sql:

select * from SalesOrder where SalesOrderId like ‘123%’

 

Linq to Entity (condition):

c => SqlFunctions.StringConvert((double)c.SalesOrder.SalesOrderId).StartsWith(FilterSalesOrderId)



Ennyi.



 



Ps:



A megoldás nem működik – negatív számokra.

.NET felhasználói felület generálása

 

Dinamikus felület generálás, meglévő üzleti kód alapján.

Igen, lehetséges, amennyiben megfelelően közelítjük meg a problémát.

A WpfDynamicUI bizonyítja hogy a felhasználói felület generálása lehetséges és elérhető a jelenlegi technológiai szinten.

 

Mint minden megoldásnak van előnye és hátránya.

 

Előnyök:

  • A felületet bármilyen üzleti logikára képes létrehozni.
  • Bármikor – szabadon módosítható az üzleti logika, a generált felület mindig aktuális lesz.

 

Hátrányok:

  • A felület generálás összetett dolog, amit nehéz testre szabni.
  • A rendszer által nem kezelt problémák megoldása a teljes felület generálás ismeretét igényli.

 

Konklúzió:

Elegendően jó, általános megoldásra a felület generálás jó választás lehet.

Az egyediség feláldozásával az aktuális megoldás időigényét lehet csökkenteni.

WPF alkalmazás optimalizáció

 

Feladat: Wpf alkalmazás indítási idejének csökkentése.

  • Kiinduló állapot: 20-25 mp.
  • Végállapot: 4-5 mp.

Hogyan?

Indítási feladatok párhuzamosításával, illetve későbbi időpontra helyezésével.

Bővebben:

… BeginInvoke, ThreadPool.QueueUserWorkItem, illetve WaitHandle a barátaid tudnak lenni, ha szépen szólsz hozzájuk.

 

Csíny letudva.

Polcot a garázsba

A barkácsolás jó!

Egyszerű dolgot összerakni, ami

  • olcsó
  • hasznos
  • jól néz ki

Meg tudja dobogtatni minden valamirevaló férfi ember szívét!

Szóval a hétvégén kitört belőlem a barkács hajlam.

Már jó ideje dédelgettem a gondolatot hogy kicsit rendet kellene rakni a garázsban, illetve a fatárolóban. A gondolatot most tett is követte.


Csináljunk polcot a garázsba!



Vasárnap, délután, irány az egyik barkácsáruház.
Csiszolt fa lap, tartó konzol (vagy ahogy hívják...), fa csavar pár ezer forintér beszerez.
Garázsba bevonul,
5 perc előkészület (csavarhúzó, fúrógép, vízmérték előkeres)
Kisebb logisztikai teljesítménnyel a polc helyéről elpakolás :)
Tartó konzol rögzítés, polc helyre szerelése...

Jó mulatság, férfimunka volt....

De ennyivel most nem elégedtem meg, ha már van polc, fel, illetve el pakolás.


A közrend megzavarásának elkerülése érdekében a kiinduló állapotot inkább a képzelőerőre bíznám.


Egy szó mint száz,
praktikus,egyszerű, olcsó

A barkácsolás ha már nagyon nem tud az ember mit kezdeni magával így vasárnap délután.

Stay alive

 

Még mindig életben…

Csak a munka és a munka hegyek, ami elől el nem megyek. Mosolygó arc

Disconnected – Occasionally connected – Online rendszerek.

A kihívás adott.

Miért nem?!

B+Tree c#
Ha még a google se tudja a jó választ akkor mi a *-om?

btw: B-Tree: http://en.wikipedia.org/wiki/B-tree

------------------------------------

Mért olyan nagy dolog ha a saját ICollection -t szeretném '1Gb' méretben kezelni anélkül hogy a memóriában csücsülne az egész collection???


Mért nincs ilyen a c# .NET környezetben?

class PersistedItem
{
   public Item(int index)
  {
     Index = index;
  }
  public int Index { get;private set; }
  public string OtherVariables { get; set; }
}

void main(object[] args)
{
  var coll = new PersistedCollection();
  for (int i = 0; i< 100.000.000;i++)
  {
     coll.Add(new MyData(i) { OtherVariables = "Abcd"} );
  }
  coll.Persist("c:\temp\db.xyz.temp");
  ....
  coll = LoadCollection("c:\temp\db.xyz.temp");
  item = coll.First(item=>item.Index > 560.000);
}

Anélkül hogy akármilyen DB műveletet kellene végeznem? És közben az összes elem a  ne legyen a memóriában lefoglalva...


Tell me why?

-------------------------------------------------------

Miért kellene adatbázisba tenni a "PersitedItem" elemeit és utánna meg "visszatölteni" amikor nincs semmi SQL a fenti lekérdezésben...

Van benne Collection
Van benne épp mint 100.000.000 elem
-***
és épp egyet keresek ki belőle.

//////
GYK - usual way- a szokásos megoldás:

var rd = new SqlConnection.CreateCommand("select top 1 OtherVariables from [pub].PersitedCollection where Id > 560.000");

var result = rd.Read();
... Instanciate and populate Persistedtem
    var persistedItem = new PersistedItem()
    var pi = typeof(PersistedItem).GetType().GetProperty("OtherVariables");
    pi.SetValue(persistedItem, rd.ReadString("OtherVariables"));
....


/////   
Q2: miért érdekes:
mert ha nem akarom a q-va PersitedItem-et adatbázisban tárolni...
mert:
  nincs lehetőség telepíteni bármi runtime környezetet (aka: faszom fostalicska okostelefonok)
  nincs elég memória lokálisan a teljes collection kezelésére

Miért nem tudod Ó mondd meg..
 

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