BLOGas.lt
Sukurk savo BLOGą Kitas atsitiktinis BLOGas

Esybės redagavimo atšaukimas su BindingSource

Paskutiniu metu tenka nemažai krapštytis su Windows Forms ir bėda tokia, kad .NET kaip framework’as juda į priekį, Windows Forms nelabai :)

Didžioji problema yra ta, kad daugelis Windows Forms komponentų (taip pat ir trečios šalies komponentų) vis dar glaudžiai susiję su DataSet, nors realiai DataSet nebesinori niekur naudoti dėl vienokių ar kitokių priežasčių.

Scenarijus, susijęs su šiuo įrašu yra pakankamai įprastas: yra įrašų lentelė, individualus tos lentelės įrašas redaguojamas atskirame lange. Problema iškyla tada, kai tame atskirame lange vartotojas nusprendžia atsisakyti pakeitimų, BindingSource ne DataSet atveju leidžia atšaukti tik paskutinio redaguoto properčio pakeitimus.

Todėl pasirašiau pakankamai “dirty” sprendimą, kuris tenkina mano scenarijus:

   1:  public class BindingSourceWithUndo<T> : BindingSource
   2:      {
   3:          protected T CurrentEntityCopy { get; set; }
   4:  
   5:          public BindingSourceWithUndo(IContainer container):base(container)
   6:          {
   7:  
   8:          }
   9:  
  10:          public void BeginEditCurrentEntity()
  11:          {
  12:              var entity = (T) Current;
  13:              CurrentEntityCopy = entity.ClonePropertiesToNewInstance();
  14:          }
  15:  
  16:          public void CancelEditCurrentEntity()
  17:          {
  18:              var index = IndexOf(Current);
  19:              CurrentEntityCopy.CloneProperties(this[index]);
  20:              EndEdit();
  21:          }
  22:  
  23:          public void FinishEditCurrentEntity()
  24:          {
  25:              CurrentEntityCopy = default(T);
  26:          }
  27:      }

Manau idėja aiški, prieš pradedant redaguoti, nusikopijuojame esybės informacija, kai reikia atšaukti pakeitimus, tiesiog atstatome juos iš kopijos. Esybės kopijavimui kaip pagrindą naudojau Sergejaus kodą iš sbtoolkit kurį papildžiau vienu papildomu metodu:

   1:    public static T ClonePropertiesToNewInstance<T>(this T origin)
   2:          {
   3:              var t = typeof(T);
   4:  
   5:              var destination = (T)Activator.CreateInstance(t, null);
   6:              CloneProperties(origin, destination);
   7:  
   8:              return destination;
   9:          }

Rodyk draugams

Kur aš dingęs?

Paskutinis įrašas šiame bloge buvo daugiau kaip prieš tris mėnesius, nelabai ką rašau ir kitur, kame reikalas? Reikalas tame, kad įvyko daug dalykų:

- Visų pirma, tai pakeičiau darbą. Pasikeitimas buvo kardinalus, tai nebuvo persėdimas prie kito kompiuterio, kitame kabinete. Likau programuotoju, vis dar programuoju .NET, bet nauji žmonės, naujos technologijos, nauji uždaviniai ir naujas projektų valdymo būdas daro savo.

- Kiek leidžia laikas, aktyviai padedu įsukinėti naują projektą - nedaryk pats, išsikviesk meistrą į namus. Anksčiau daugiau dirbau su integracijomis ir web projektais, kuriems visai arba nelabai buvo įdomus google reitingas (tiesa buvo viena išimtis, bet ten SEO buvo ne mano reikalas), čia daug naujos patirties. Kol kas sekasi visai neblogai, užsakymų turim, klientai patenkinti, gimsta nauji planai. Kalbant apie užsakymus, kol kas gaunam labai daug nestandartinių, apie kuriuos kurdami puslapį net nepagalvojome. Seniai buvau čiupinėjęs PHP, buvo proga pačiupinėti vėl, pažiūrėti kiek paėjo į priekį.

- Kaip žinia - žiema yra konstravimo metas. Šiuo metu labai iš lėto gimsta mini šio gražuolio kopija:

Jeigu viskas eisis pagal planą, ši kopija dar turėtų ir skristi :)

O dėl blogo ateities - nežinau. Realiai yra mintis kraustytis į savo domeną ir atsidėti tik sausiems įrašams apie .NET, nes dabar kaip ir pamatau naujų dalykų ir norėtųsi tuos įspūdžius fiksuoti, na bet pažiūrėsim kaip čia iš tikrųjų viskas bus.

Rodyk draugams

Portugalija (2)

Praeitam įraše pakalbėjau apie nakvynes, šiam pakalbėsiu apie važiavimą.

Apie nuomuojamus automobilius. Neprisimenu, ar kalbėjau praeitam įraše apie tai, kad automobilius reikia rezervuotis maždaug tuo pačiu metu kaip ir lėktuvo bilietus, nes paskui gali būti arba sunku, arba tikrai brangu.

Pirmasis mūsų automobilis Portugalijoje buvo mažylis Renault:

Tvarkingas, mažas, iš esmės jeigu keliaujat su mažai lagaminų, tai vienas geresnių variantų tokioje šalyje kaip portugalija, nes lengva rasti vietą prisiparkavimui, lengva manevruoti siaurose senamiesčių gatvelėse. Variklis 1,2l - tikrai nėra labai ekonomiškas, ypač autostradoje.

Kai reikėdavo lakstyti tokiais kalnų žvyrkeliais, stabdant varikliu, supranti kaip gerai yra nuomuotas automobilis - širdies neskauda laužyt :) Kadangi šitą automobiliuką pridavinėjau pats atgal, tai galiu pasakyti, kad iš esmės grąžinant nelabai žiūrėjo ką grąžinu, neieškojo naujų įbrėžimų, tik patikrino benzino lygį.

Antrasis automobilis buvo ištaigingesnis:

Pagal bagažinės tūrį, netgi sakyčiau limuzinas, aišku markė nelabai limuziniška (kas nenusimano mašinose, kaip kad ir aš nenusimanau - čia fiat). Šioje vietoje - norėčiau po ilgo laiko paminėti Microsoft.

Nes šis automobilis turėjo Windows mygtuką ant vairo!

Esmė ta, kad jame sumontuota Blue&Me sistema, apie kurią nelabai buvau ką girdėjęs (apie ford kažką panašaus buvo kalbama daugiau), instrukcijos kaip ja naudotis automobilyje nepaliko. Paspaudėm ką matėm, kažkokia moteriškė pakalbėjo portugališkai ir viskas tuo baigėsi. Grįžęs pasiskaičiau, kad tai pakankamai protinga sistema, pvz yra usb lizdas:

į kurį kiši usb atmintinę arba mp3 grotuvą ir gali portugališkai kalbančios moteriškės paprašyti, kad uždėtų tavo mėgstamą muziką. Arba gali į tą pačia atmintinę įrašinėti savo važiavimo parametrus, beveik kaip formulėje. Greičiausiai yra daugiau ką galima daryti, bet šiaip ar taip fiato nesirinkčiau, net jeigu jis ir su Windowsais :)

Kalbant apie fiat’ą - buvo gera patirtis: pasiimant iš nuomos, matėm, kad jis pabraižytas nemažai, tai įkyriai prašėm sužymėti kiekvieną įbrėžimą. Pradėjom važiuoti ir kažkaip keistai “kalė” vairas, traukė į vieną pusę. Pavažiavom keliasdešimt kilometrų, tada užvažiavom į kalną ir palikdami įkalnėje, susukom vairą (čia tipo taip reikia, jeigu netyčia pradėtų riedėti, kad į šalikelę, o ne kelio vidurį). Ir tada supratom, kodėl taip keistai važiavosi - priekinės padangos buvo sudrožtos taip, kad matėsi vielos. Natūraliai jau buvo po darbo, rytoj sekmadienis, taip pravažinėjom kurį laiką lėčiau nei galėjom, kažkaip nesinorėjo patikrinti, kas būna kai sprogsta priekinė padanga važiuojant autostrada. Na bet baigėsi viskas laimingai, atėjo darbo diena ir nuomoje pakeitė automobilį be atsikalbinėjimų (to automobilio nuotraukos nebus, nes su juo liko mūsų draugai, mes traukėm namo).

Kalbant apie vairuotojų kultūrą - tikėjausi kad bus daug blogiau nei Lietuvoje, o pasirodo atvirkščiai - nors Portugalija gerokai piečiau nei Lietuva, važinėja ten tvarkingiau, bent man taip pasirodė. Ypač pietinėje dalyje, kur daug žioplinėjančių turistų - tai tikrai lengva vairuoti, vietiniai supranta nevietinius, niekas nepypsi, netgi nelabai ir lenkia, nors tu velkiesi ant 55, kai galima važiuoti 70, kantriai seka iš paskos ir tiek. Kiek teko skaityti vietiniam laikraštyje, portugalai paskutinius 20 metų aktyviai dirbo prieš karą keliuose ir šiai dienai turi rezultatus, skaičius jau užmiršau, bet pasirodė, kad rezultatas ryškus. Karo keliuose problemą sprendė daugiausiai išbandytais būdais - daug sankryžų pakeitė žiedais, netgi ir nelabai senuose GPS mapuose rodomos sankryžos, nors realybėje tai jau žiedai. Daug dirbo su socialine reklama, jos likučiai atsispindi kelių ženklinime, pvz. yra kelio ženklinimo sistema, kurios pagalba tu gali pasitikrinti, ar važiuoji pakankamu atstumu nuo priekyje esančio automobilio ir panašiai.

Šiam kartui tiek, dar liko daug nepapasakota ir neparodyta :)

Rodyk draugams

Portugalija

Senokai rašiau į savo bloga, greičiausiai todėl, kad greitus pastebėjimus facebook suryja, o lėtiems pastebėjimams sunkiai laiko randasi.

Bet kol dar neišsitrynė viskas iš galvos, reikėtų surašyti apie mūsų kelionę į Portugaliją.

Keliavom tradiciškai - naudodamiesi Ryanair paslaugomis, skridom iš Kauno į Bremeną, iš ten į Faro. Bilietai kainavo palyginus nedaug dviem žmonėms - 1190lt su vienu lagaminu  priduodamu į bagažą ir visais mokesčiais(kadangi lagaminas vienas, o žmonių du, tai vienetui kainą sunku pasakyti, na bet sakykim ne daugiau 600lt). Reikia pripažinti, kad Bremenas visai neblogas miestas persėdimui - oro uostas yra visai šalia miesto centro, pačiam oro uoste yra super apžvalgos aikštelė ant stogo, kurioje pora valandų dingsta kaip nieko, stebint oro milžinus iš arti, yra nebrangių ir gerų viešbučių pernakvojimui (irgi netoli oro uosto, pėstute su lagaminu pasiekiami).

Gal kiek neįprasta buvo tai, kad kelionei visiškai nesiruošėm, žinojom tik du dalykus: kuom pirmas keturias dienas važinėsim, kur nakvosim Faro ir kur nakvosim Lisabonoj, bei sukosi portugalų kalbos audio cd automobilyje.

Vėliau paaiškėjo, kad toks pasiruošimas yra būtinas minimumas, nes:

- sezono metu išsinuomuoti automobilį yra labai labai didelė problema
- kadangi nakvojom kur papuola, ne visur kur papuolė mokėjo angliškai (nes papuldavo ir pas paprastus žmonės, bobutes visokias)
- tuo momentu, kai mes turėjom būti Lisabonoje, buvo valstybinė šventė, jeigu būtumėm neužsakę viešbučio iš anksto, būtų buvę riesta su nakvyne.

Kalbant apie naktvynę - teko nakvoti 9 skirtingose vietose. Praktiškai visos vietos su savo bajeriais. Pavyzdžiui šita:

Kabarys atrodo pusėtinai, kvapas nelabai, bet kambariai iš esmės Portugalijoj nekvepėjo (ne tas žvaigždučių kiekis matyt). Šiaip ar taip, pasirinkimo neturėjom, todėl daug nesigilinom ką pasiimam.

O čia to paties kambario vonia:

Beje, kambarys buvo pristatytas kaip su langu, tą vaizdą pamatėm tik jau įsikraustę į kambarį ir atvėrę užuolaidas- vaizdas tiesiai į santechninį mazgą, deja nuotrauką padaryti užmiršom. Šiaip portugalai yra sąžiningi žmonės, šito kambario savininkas mano manymu buvo arabas, nors pats prisistatė kaip ispanijos emigrantas. Beje, kambarys buvo brangiausias (50eur).

Kitas kraštutinumas - kambarys pas bobutę. Lievas foto aparatas(arba greičiau lievas fotografas) iškraipo spalvas, bet esmė tokia: viskas rožinės spalvos: širdutės ant patalynės, kėdė, tualetinis popierius, stalčių įklotai, lempos, kilimai…. Bobutė ryškiai nuomavo kambarį pirmą kartą, todėl nemokėjo angliškai nei žodžio, labai jaudinosi kad nemoka paaiškinti kas ir kaip nekalbantiems portugališkai (btw, iš pradžių su ja bandėm tartis telefonu :) ir neramiai miegojo. Užtai kambarys buvo labai ramus, tvarkingas ir vienas pigiausių (~30eur).

Taip kaip ir su nakvyne didelių problemų nebuvo - nors buvom per patį sezono įkarštį. Paieškoti reikėdavo, bet paieškojus tikrai galima rasti nebrangių variantų ir pakankamai gerose vietose, sakysim pora kartų gyvenom pačiam pačiam centre, žinoma kai kur tai turi savų minusų, pvz. Lagos centre kai nakvojom, tai galvojom, kad nakvojam naktinio klubo salės viduryje, iki 6 ryto garsumo lygis mūsų kambaryje buvo ~95-105dB, vėliau ošiančios publikos garsus pakeitė plyteles pjaustantys statybininkai :) Esmė yra prieš sumokant pinigus paprašyti parodyti kambarį, nebijoti ieškoti užrašų ant langų apie nuomuojamus kambarius ir naudotis vietinių pažintimis - jeigu tas, pas kurį klausiate kambario, neturi laisvo, paklauskite ar nepažįsta to, kuris galėtų turėti - kartais matyti kaip veikia visas tas pažinčių tinklas tikrai buvo nuostabu, nes žmonės tikrai geranoriški ir noriai padeda, net jeigu jiems tai kainuoja nemažai pastangų.

Nuo pamiegojimo, galim pereiti prie valgymo. Maistas Portugalijoje nuostabus. Net ir tokiems kaip aš, kurie nėra jūrų gėrybių mėgėjai. Kiaulieną ir jautieną ten pateikia natūraliai, neapkepa jokiuose miltuose/kiaušiniuose, neskandina riebiuose padažuose - tiesiog apkepa rimtą šmotą rimtos mėsos ir tiek. Maistas palyginus nebrangus, steikas kainuoja 8-12eur. Čia žinoma vietose, kur nėra baltų staltiesių ir padavėjų su prijuostėmis. Tarp mūsų kalbant, geriausias maistas buvo kažkiam užkampyje Lisabonoje, kur mes turbūt buvom pirmi turistai per visą baro gyvavimo laiką, kur stalai be staltiesių, sausakimša žmonių, bokalas alaus kainuoja 1.5eur, baro šeimininkas visus klientus pažįsta vardais (ir dar žino jų žmonų/vaikų/kaimynų telefonus/vardus), iš visu garsu paleisto televizoriaus plyšauja futbolo komentatorius. Eiliniame bare nepamatysit įpatingo interjero, stalai greičiausiai bus plasmasiniai, meniu surašytas ant nutrinto popieriaus ranka, jokios pompastikos - tiesiog skanus maistas ir jauki atmosfera.

Šiam kartui tiek, iš esmės tik smulkmenas paliečiau, kai užeis ūpas, daugiau parašysiu.

Rodyk draugams

Programuotojų legendos istorija

Britai po daugelio metų atsiprašė Alano Turingo, šiaip universitete kai apie jį pasakojo, šiuos faktus praleido:

“Turing, a father of computer science and WWII code-breaker, confessed to having sex with a man, was prosecuted by the British government for being gay, given experimental chemical castration as a “treatment” and then committed suicide in 1954. Ridiculous, is right.”

Rodyk draugams

Linkedin ir kompanijų aprašymai

Šiandien netikėtai užmačiau LinkedIn anksčiau nepastebėtą feature - kompanijų statistinius duomenis, pagal LinkedIn vartotojų suvestą informaciją. Tikrai įdomu panaršyti pažįstamų kompanijų duomenis, vienas patikęs pavyzdėlis:

Tipo Microsoft šustriau už IBM ir HP, bet išaugus MS, laikas į Google arba Amazon.com.

Rodyk draugams

code rush

Kas nematėt, pažiūrėkit, aš pats kažkaip buvau pražiopsojęs šitą dokumentinį filmą:
code rush

Rodyk draugams

Debesys ir saugumas

Šiandien žiūrinėdamas Microsoft debesies kainas (http://azureroi.cloudapp.net/), susimąsčiau, ar atsiras tokių, kurie nuomuosis debesis, kad brute force pagalba nulaužinėtų slaptažodžius? Milijonas serverių grubiai 3mln. $ parai (nors tikriausiai niekas neleis užsigrobti milijono serverių, iš kitos pusės imant tokiais kiekiais bus nuolaidos). Manau vienas kitas našumo testas ir būtų galima apytiksliai pasakyti 128 bitų SSL nulaužimo kainą.

Rodyk draugams

Kiaulės skraido, o Microsoft rašo kodą linuxui

ZDNet bene išsamiausiai pažvelgė į šį faktą. Reakcijos įvairios, vėlgi ZDNet pakankamai gerai apie tai rašo.

Rodyk draugams

Įdomi mintis apie projektų valdymą

“To understand control’s real role, you need to
distinguish between two drastically different kinds
of projects:

Project A will eventually cost about a million
dollars and produce value of around $1.1
million.

Project B will eventually cost about a million
dollars and produce value of more than $50
million.

What’ immediately apparent is that control is really
important for Project A but almost not at all
important for Project B. This leads us to the odd
conclusion that strict control is something that
matters a lot on relatively useless projects and
much less on useful projects. It suggests that the
more you focus on control, the more likely you’e
working on a project that’ striving to deliver
something of relatively minor value.”

Kas suprato apie ką čia, tiems pilnas straipsnis.

Rodyk draugams