torsdag den 27. november 2014
Porada - Giolo : Lækkert spejl til væggen (Vægspejl)
Fandt dette lækre spejl til væggen (vægspejl) som jeg virkeligt godt kunne tænke mig.
Det var et man godt kunne bruge ude i gangen, som et fedt anderledes spejl som ikke så mange lige har. De fleste har et kedeligt almindeligt et som ligner en billedramme med et spejl, eller noget ikea eller et som er meget ordinært. Dette er specielt og fedt så overvejer jeg kraftigt om det ikke skal op i gangen.
tirsdag den 25. november 2014
ASYNC med store filer - fil kopiering
Når man skal kopiere store filer (fx 1-2-3 gb data), så kan du ikke bruge File.Copy, men skal ud i at flytte dem selv. Her benyttes original filestream og den nye filestream.
Ulempen ved denne er at der skal læses lidt fra orignal filestream, put det i en buffer, kopier ind i den nye filestream. Det er der en kerne der gør, hvilket gør at sådan en kopiering kan tage op imod en time for 1,5 gb data.
Fordi den ikke kan udnytte at læse og skrive samtidigt, gør det processen langsom.
Hvis man derimod benytter ASYNC, så sker det asynkront, og vil sige den kan fortsætte med næste stykke arbejde når den har kopieret data imens den skriver.
Ved at det er asynkront kan der kopieres imens der skrives, så den hele tiden har en buffer klar.
Det gjorde at den kom fra en time ned til et par minutter.
INDSÆT KODE
tirsdag den 11. november 2014
F9 til opdatering af referencer i Word
Når man laver referencer i word er det utroligt lækkert at lave referencer (krydshenvisning) til andre afsnit med nummer og tekst og eventuelt sidenummer.
Problemet er så bare at når du kommer videre så ændrer tekster sig, numre ændrer sig, sidetal opdateres, MEN word opdaterer dem ikke automatisk for dig.
Derfor skal du selv opdatere dem for ellers står der de forkerte afsnitsnumre, tekster og sidetal i dine henvisninger, hvilket altid kan blive et problem.
Det man gør er:
at markere alt tekst med Ctrl + A.
at opdatere referencer med F9
at vælge "opdater alt" og trykke OK.
Nu er dit dokument opdateret til den virkelighed som du har i hele dokumentet.
Kabelrod er no-go! Cordlets hjælper
Cordlets er et dejligt produkt!
Synes altid mine kabler ligger og flyder og nu kan man få dejligt styr på dem.
Om du så har til dine høretelefoner, til dine ladere eller andet så er der plads til at kunne fastgøre dem, og hvis nødvendigt er der plads til oprulning på enhederne også.
søndag den 9. november 2014
CSS3 Animations - Gør simple ting mere spændende
Med introduktionen af HTML5, fulgte CSS3 heldigvis med som en stor del af pakken for en webudvikler til at gøre hverdagen med at gøre web og webudvikling for webudviklere mere spændende, uanset platform. Du er helt uafhængig af at have plugins, eller javascript biblioteker såsom jquery lagt ind på din side.
To af de spændende ting som CSS3 bragte med sig var; CSS3 animations, og CSS3 transitions.
CSS3 Transitions er overgange fra en state til den næste.
Det vil sige at hvis fx at du på en hover effekt flytter et element 50px til højre, så vil din transition bestemme overgangen fra state A (startposition) til state B (50px til højre for start position).
CSS3 Animations er at du har mulighed for at lave en animation der afspilles.
Du kan opbygge en animation i punkter og så automatisk laves der "ruter" imellem dem.
Så fx hvis du har en animation med 6 punkter (0%, 20%, 40%, 60%, 80%, 100%), så vil den automatisk finde ud af hvordan den laver transitions fra state A til state B til state C osv.
Så hvis fx du i 0% har sagt at et element har opacity: 0 og i 20% har opacity: 1 så på den tid dette tager så laves en overgang fra 0 til 1.0. Hvis du så bagefter ændrer farven fra sort til rød, laves igen en automatisk overgang fra sort til rød.
Så du kan få et element til at flytte sig lidt til højre (20%), så flytte sig lidt op imens teksten ændrer sig til rød (40%), så flytte sig til venstre imens tekststørrelsen vokser (60%), og til sidst få baggrundsfarven til at skifte til en grøn baggrundsfarve (80%), for at afslutte ved at gå tilbage til sin første state (100%).
Her kan man bestemme hvor lang tid denne overgang (0-100%) skal tage, og hvordan den skal afvikles (start langsomt og afslut hurtigt, eller modsat, og mange andre muligheder.
Så kan man også sætte forskellige animationer på forskellige states - så du kunne sætte ovenstående animation på når der gås fra normal til :hover-state, og når man så går tilbage til normal så afspilles det hele igen baglæns fra en anden animation. Det giver en så ufatteligt mange muligheder.
Det er noget der gør at du nemt med lidt fodarbejde kan lave simple ting meget mere interessante ved at der er aktivitet på dine sider.
Billeder kan fade frem, elementer kan vokse når du peger på dem, tekster kan forstørres når du peger på dem, ikoner kan bevæge sig når du ser dem, menu'er kan danse når du åbner dem.
Alt sammen ting der gør en side lidt mere sjov og spændende (hvis man beherske sig), men nu heldigvis er relativt nemt fordi du har så mange muligheder og variationer der kan gøre dine sider mere spændende.
Fordi du kan bestemme flere punkter der udføres så gør det at dine muligheder er ret mange, fordi du kan få lavet så mange forskellige fede overgange så du vil tro det er løgn.
Da jeg er en meget passioneret og nysgerrig systemudvikler, så har jeg igennem noget tid rodet med både CSS3 transitions, men også med CSS3 animations, og begge er gode til hver sine ting.
Men efter jeg nu er blevet relativt god til dem, så er jeg helt vild med at gøre små bitte ting mere interessante med de muligheder CSS3 har givet mig.
Det skal ikke ligne min side er opbygget i Flash med et hav af effekter, men vil gerne have at der er lidt spil og ting der sker når man ser på min side for gør den interaktiv og dermed spændende.
fredag den 24. oktober 2014
ConnectionString "SqlConnection" - Brug et sigende navn! Udvikleren kan se fordelen
Vi har et projekt som viser en masse takst data og efter en rettelse sidste år er der opbygget ufatteligt meget forretningslogik. Derfor er dette projekt ret essentielt og logikken begynder nu at smitte af på andre projekter.
Det i sig selv er godt, MEN i et andet projekt skal vi så præsentere noget af de samme data som er i det første. For ikke at skulle opbygge samme struktur som der er lavet ovre i det andet projekt, så nu vil vi bruge dll'erne fra det første projekt så vi kan genbruge strukturen og objekterne.
DESVÆRRE for os er det så at disse dll'er pudsigt nok bruger "SqlConnection" som default, som også er den som vores nye projekt bruger. Derfor skal du vi nu lave vores eksisterende løsning om til at bruge noget andet end sqlconnection, så vi kan bruge sqlconnection til vores andre dll'er.
Jeg har altid været stor fortaler for at dine connection strings altid hedder noget unikt og noget sigende, for så støder du aldrig (eller meget sjældnere) på sådanne fejl ved at du giver dine connections strings unikke navne.
fredag den 17. oktober 2014
CSS Selectors forskellige til Chrome og IE (Avancerede jQuery)
Man skal være opmærksom på at når man laver CSS selectors der er lidt avancerede så er der forskellig syntaks der virker til Chrome og Internet Explorer (IE).
Vi havde et problem med at en selector ikke blev udført i Chrome, og det viste sig at være noget så simpelt som et MELLEMRUM!
Oprindeligt så vores script ud som følger:
$('td[style*="top: 200px"]').css({ 'top': '0px', 'left': '410px' });
Det virkede bare ikke i Chrome, og da vi så tilføjede følgende linie virkede det som det skulle:
$('td[style*="top:200px"]').css({ 'top': '0px', 'left': '410px' });
Så koden endte med at være:
$('td[style*="top: 200px"]').css({ 'top': '0px', 'left': '410px' }); //Works for IE
$('td[style*="top:200px"]').css({ 'top': '0px', 'left': '410px' }); //Works for Chrome
Så i DOM'en i Chrome der er ikke mellemrum, men i IE er der. Hvis du laver den uden mellemrum så virker den ikke i IE, og med mellemrum virker den ikke i Chrome. Så derfor bliver man nødt til at have forskellig kode til Chrome og til IE, som er STORT set identisk!
Som udvikler, så løber det en koldt ned af ryggen at det er lavet sådan, og man behøver at lave noget så ÅNDSVAGT! Problemet er ikke JQuery som vi har brugt, for det mellemrum KUNNE jo være noget der faktisk skulle søges på, hvor den i dette tilfælde er lige meget. Derfor kan man ikke bare sige til jQuery at den skal ignorere det mellemrum i midten, fordi den ved ikke at det er nødvendigt.
Derimod er det åndsvagt at de to implementeringer af udviklere fra team Chrome, og udvikler fra team Internet Explorer (IE) ikke er blevet enige om samme udførsel. Det i sig selv kan man til dels også forstå, men at det ER NØDVENDIGT med sådan en gang lortekode med dublet i en sådan skala får det til at krible over hele kroppen på mig fordi jeg er udvikler, og derfor synes det er ineffektivt kode der er grim og forfærdelig.
onsdag den 15. oktober 2014
Fejl i dansk sortering (Danish Dropdown globalization culture)
Hvis man har listen:
Så vil en almindelig sortering gøre at listen kommer med 12 måneder, så År, og så almindelig sortering for resten. Det er fordi at oftest vil den ikke vide at "Å" skal til sidst, og derfor kommer det før de almindelige bogstaver fordi den tager det som specieltegn på samme måde som fx tal.
Så nu kan din dropdown håndtere ÆØÅ og stadig sortere korrekt. Det er altid et problem med sortering i dansk i ASP.NET eller dropdowns, eller i lister. Dette hjælper.
Det kan løses ved at fortælle hvilken culture din comparer skal sammenligne i:
- 12 måneder
- År
- Støvle
- Stativ
- Tå
- Tiger
Så vil en almindelig sortering gøre at listen kommer med 12 måneder, så År, og så almindelig sortering for resten. Det er fordi at oftest vil den ikke vide at "Å" skal til sidst, og derfor kommer det før de almindelige bogstaver fordi den tager det som specieltegn på samme måde som fx tal.
Så nu kan din dropdown håndtere ÆØÅ og stadig sortere korrekt. Det er altid et problem med sortering i dansk i ASP.NET eller dropdowns, eller i lister. Dette hjælper.
Det kan løses ved at fortælle hvilken culture din comparer skal sammenligne i:
Public Function Compare(ByVal o1 As Object, ByVal o2 As Object) As Integer Implements
System.Collections.IComparer.Compare
Dim cb1 As ListItem = CType(o1, ListItem)
Dim cb2 As ListItem = CType(o2, ListItem)
Dim sp As StringComparer = StringComparer.Create(New
Globalization.CultureInfo("da-DK"), True)
Return sp.Compare(cb1.Text,
cb2.Text) * _modifier
'Return
cb1.Text.CompareTo(cb2.Text) * _modifier
End Function
torsdag den 2. oktober 2014
Design til grundejer foreningen
Hvis man som udvikler vil lave en seriøs side kommer man ikke udenom at det gerne må se lidt godt ud, og desværre er der bare ret mange grundejer foreningers hjemmesider der ikke ser helt så godt ud.
Denne statistik vil vores grundejerforening ikke være med på, og vil levere en gennemarbejdet pæn grundejer forenings side. Dette skyldes nok mest at jeg som bestyrelsesmedlem er ASP.NET Webudvikler (C#), og derfor kan levere noget lidt større resultat fra en udvikler.
Da vi nuværende ikke har nogen hjemmeside, skal den starte webside (ASP.NET) vi får, have grundlæggende funktioner, såsom referater og andet information som kan være nyttigt for interesserede. Det kan være nye beboere eller ejendomsmæglere der har behov for informationen, som de derefter selv kan hente derinde.
Den skal opbygges pæn med rene linier så den fremstår tiltalende og ikke så "trist" som ret mange af de eksisterende eksempler der allerede er derude.
Første udkast er afgivet til bestyrelsen og var meget imponeret over mine udvikler kompetencer.
fredag den 26. september 2014
Windows 8 - Bruger din plads på log filer
Heldigvis for mig, så har min arbejdsplads FDC valgt at investere i at vi som udvikler skal have ny platform. Så alle udviklere har fået bærbare med SSD, eller stationære med almindelig disk.
Det gør så at når man som udvikler sidder med sin bærbar, så går det bragende stærkt, men pladsen er sparsom (200gb) og derfor skal man passe på med at have for mange databaser fordi de fylder godt.
Det med at bruge din plads skal Windows så nok hjælpe dig med! Den laver logfiler i bidder af 20mb, og dem får du et par af om dagen, specielt som udvikler.
Det betyder at på ca. 3 måneder har jeg fået brugt 8GB plads på logfiler som er ligegyldige. Det svarer ca til at den har brugt 6% af min plads på logfiler.
Det er lige noget man som udvikler skal være opmærksom på hvis du har begrænset plads eller mangler plads.
torsdag den 25. september 2014
Commando Promts rettigheder - Kør som admin eller dig?
Når vi skal lave en rettelse til produktion så optimerer vi vores kode så den bliver kompileret i en samlet fil, så man ikke kan få c# (cs) eller vb -filen, men alt er samlet i en .aspx (ASP.NET) -fil, og en kompileret fil i bin.
Dette har vi et script til, og i går oplevede jeg at når jeg kørte det ville den ikke forbinde til et netværksdrev og hente filer derfra.
Nu i dag viste det sig så at være fordi man kan køre kommando promt som dig selv ved at dobbeltklikke på den, eller trykke enter på den imens den er valgt.
Du kan også køre den som adminstrator, ved at højreklikke og sige "kør som adminstrator"/"run as administrator".
Jeg har altid kørt dem som administrator fordi ofte får man ikke helt adgang til ting hvis man ikke får kørt det som administrator.
I dette tilfælde viser det sig så at det skal køres som MIG, fordi ellers får den ikke samme mapning som jeg har.
Grunden til den ikke kunne finde k-drevet var at den ikke kørte som min bruger og derfor havde den IKKE den mapning min bruger har, og derfor kendte den ikke k-drevet.
Så IGNORER: http://csharpudvikler.blogspot.dk/2014/09/windows-explorer-snakker-ikke-sammen.html
onsdag den 24. september 2014
Windows Explorer snakker ikke sammen med Commando Promt (Netværksdrev)
DETTE ER LØST! Læs her: http://csharpudvikler.blogspot.dk/2014/09/commando-promts-rettigheder-kr-som.html
tirsdag den 23. september 2014
Mediecenter / Medieafspiller - en nødvendighed!
Førhen da vi ikke havde en medie afspiller så vi film engang imellem, og fik os aldrig rigtigt taget sammen til at få set vores film.
Nogle gange kunne vi endda finde på at købe et sæt film, men ikke få dem allesammen set så det rent faktisk var "spildt".
Efter vi har fået et mediecenter så ELSKER vi at se film! Det er fordi det er så nemt og så smart at det fungerer så godt. En lille boks sluttet til tv'et, som du skruer over på som viser information og data om din filmsamling, og som afspiller fra dit netværkslager.
Således slipper du helt for at gå hen til hylden og hente dine film og skulle læse om dem eller finde en og sætte i dvd-afspilleren.
Nu tænder vi for tv'et og slår over på vores mediecenter og læser den igennem, eller vi tager en telefon eller tablet og ser den komplette filmsamling (som opdaterer sig selv hvis der kommer nye film ind i samlingen), og kan så se trailere, beskrivelser, og alt interessant for filmen for at vi ved om vi har lyst til at se den.
Netop det at det er så nemt gør at vi bruger det langt mere, og fordelen er også at du skal ikke "lede" efter fx The Matrix, velvidende den er der et eller andet sted på hylderne. Nu kan du bare søge og den kan nemt finde den.
HVIS der så skulle komme en med en DVD så er der sat et drev til vores medieafspiller så den kan klare almindeligt input også, og vi slipper for at have en separat DVD-afspiller sat op.
Udstyr:
- Intel NUC
- USB DVD Drev
- NAS (Network Attatched Storage)
Du kan dermed rippe alle dine dvd-film og ligge ind på din NAS som så er på netværket.
Din Intel NUC vil så kunne gå på netværket og læse fra din NAS, og læse dine film.
Du installerer XBMC (To be; Kodi entertainment center) på din NUC og lader den have film fra din NAS som source.
Den vil herefter selv analysere dine film og finde coverbilleder, beskrivelser, og en masse gode data fra dine film til lækker præsentation, som du så kan afspille direkte fra NUC'en til dit TV.
Hvis du så vil have filmoversigten på andre steder end dit TV installerer du app'en Yatse, som giver dig et overblik over dine film på din android mobil eller android tablet, og gør du kan starte, stoppe, spole frem/tilbage, afspille trailers, se skuespillere, og meget meget mere.
Jeg har aldrig været så vild med film som jeg er nu fordi det er så nemt og så lækkert som jeg ønsker mig!
fredag den 19. september 2014
CSS selector der IKKE indholder noget specifikt
Hvis du gerne vil lave en generel selector der ramme alle <LI> tags, men IKKE dem der indholder attributten "sort" på sig.
Så kan du lave en meget effektiv og simpel css selector:
li:not([sort])
[sort] er det der fortæller den skal have attributten sort på sig,
:not( ) er det der fortæller at den IKKE må have sort attributten
li er den der fortæller det er et <LI> tag.
Så den rammer <LI> tags, der IKKE indholder attributten sort.
Se følgende eksempel
<ul>
<li>
<li sort="1">
<li>
<li sort="2">
<li>
</ul>
Hver anden vil blive ramt, men ikke dem der har sort attributten på sig.
Så kan du lave en meget effektiv og simpel css selector:
li:not([sort])
[sort] er det der fortæller den skal have attributten sort på sig,
:not( ) er det der fortæller at den IKKE må have sort attributten
li er den der fortæller det er et <LI> tag.
Så den rammer <LI> tags, der IKKE indholder attributten sort.
Se følgende eksempel
<ul>
<li>
<li sort="1">
<li>
<li sort="2">
<li>
</ul>
Hver anden vil blive ramt, men ikke dem der har sort attributten på sig.
Name Analyzer - Omdøb filer til noget sigende
Først for nyligt har jeg fået lavet et rigtigt medie center, som gør at vi nyder alle vores medier langt langt mere fordi det er så tæt på og så nemt.
Det vi har gjort er at digitalisere alle vores DVD'er og musiksamlinger (CD'er), og lagt på vores NAS og fået sorteret og grupperet dem korrekt.
Problemet er med at man har film tilbage fra man gik i gymnasiet er at navngivningen er på 14 forskellige måder som man nu har syntes var smart igennem tiden. Derfor kan den første disney du havde, have et navn, og to'eren til selv samme film nu ikke ligger lige under med "2" bagefter, men et helt andet sted som du ikke kan se.
Det har resulteret i jeg har selv lavet en name analyzer, der kan analysere navne og finde dele af et navn og forsøge at finde ud af hvad det er.
Indtil nu har den virket på over 90% af min filmsamling som er blevet pæn og organiseret med ensartede navne - fx er alle disney film blevet navngivet "Disney - {filmnavn}", og de film hvor der stod årstal i kan nu finde årstallet i navnet og navngive den med (2014) efter filmnavnet.
Måden den finder filmnavnet er at finde dele som er tekst, indtil den støder på en del som ikke længere er tekst (eller splitter).
Den gennemsøger hele teksten, og opdeler den i logiske dele den har analyseret sig frem til.
Så den søger efter:
Det vi har gjort er at digitalisere alle vores DVD'er og musiksamlinger (CD'er), og lagt på vores NAS og fået sorteret og grupperet dem korrekt.
Problemet er med at man har film tilbage fra man gik i gymnasiet er at navngivningen er på 14 forskellige måder som man nu har syntes var smart igennem tiden. Derfor kan den første disney du havde, have et navn, og to'eren til selv samme film nu ikke ligger lige under med "2" bagefter, men et helt andet sted som du ikke kan se.
Det har resulteret i jeg har selv lavet en name analyzer, der kan analysere navne og finde dele af et navn og forsøge at finde ud af hvad det er.
Indtil nu har den virket på over 90% af min filmsamling som er blevet pæn og organiseret med ensartede navne - fx er alle disney film blevet navngivet "Disney - {filmnavn}", og de film hvor der stod årstal i kan nu finde årstallet i navnet og navngive den med (2014) efter filmnavnet.
Måden den finder filmnavnet er at finde dele som er tekst, indtil den støder på en del som ikke længere er tekst (eller splitter).
Den gennemsøger hele teksten, og opdeler den i logiske dele den har analyseret sig frem til.
Så den søger efter:
- Tekst
- Quality (1080p)
- Splitter ("-", ":")
- Årstal (1955)
- Source (DVD)
Så hvis vi tager et eksempel
Lady and the Tramp 2 - Scamps Adventures.2001.DVD.720p
så bliver det til
[Lady, Text]
[and, Text]
[the, Text]
[Tramp, Text]
[2, Text]
[-, Splitter]
[Scamps, Text]
[Adventures, Text]
[2001, Year]
[DVD, Source]
[720p, Quality]
Så længe den finder tekst eller splitter, så forsætter den med at medtage den gamle information i det nye navn og derved kan du ofte nemmere få opbygget et mere retvisende navn der er mere ensartet.
Så det nye navn ville ende med:
Lady and the Tramp 2 - Scamps Adventures (2001)
Det har sparet mig for rigtigt mange timers retning fordi den gamle samling efterhånden er ved at være så stor.
Abonner på:
Opslag (Atom)

