Inlägg

Inlägg som CyberVillain har skrivit i forumet
Av CyberVillain

Operativsystem: Windows 7
Editor: VS2012
Wysiwyg: Nej
Wireframe: Nej
Bildeditor: Extremt sällan, kör då¨paint .NET
Övrigt: Git, nuget och resharper är verktyg jag gillar
Omfattning: Jobbar som Systemarkitekt på en konsultfirma, jobbar oftast med backends på medelstora till stora företag. Jobbar även en hel del med frontend i form av JS (Single page applications) och en del WPF, och ibland om jag måste, winforms.
Github: https://github.com/AndersMalmgren

Av CyberVillain

Ny version ute, nu kan man använda generiska events. Tyvärr kan jag inte avgör vilka generiska arguments som används när det dynamiska scriptet skapas så de generiska typargumenten måste deklareras som strängas såhär

signalR.eventAggregator.subscribe(MyApp.Events.MyGenericEvent.of("System.String"), this.onMyGenericEvent, this);

Detta mappar mot en .NET class som ser ut ungefär såhär

public class MyGenericEvent<T> : EventBase { public T Value { get; set; } }

Av CyberVillain

yield är ju bäst. Jag använder den ofta för att styra miniflöden. Ett litet exempel

https://github.com/AndersMalmgren/FreePIE/blob/master/FreePIE...

private IEnumerable<IResult> HandleScriptClosing(ScriptEditorViewModel script, Action cancelCallback) { if (script.IsDirty) { var message = Result.ShowMessageBox(script.Filename, string.Format("Do you want to save changes to {0}", script.Filename), MessageBoxButton.YesNoCancel); yield return message; if (message.Result == MessageBoxResult.Cancel) { yield return Result.Cancel(cancelCallback); } if (message.Result == MessageBoxResult.Yes) { foreach (var result in scriptDialogStrategy.SaveAs(script, true, path => fileSystem.WriteAllText(path, script.FileContent))) yield return result; } } }

edit: Vad yield return Result.Cancel(cancelCallback); ovan gör är i stortsätt yield break; Detta som gör det kraftfullt för mini flöden
edit2: En annan fördel med detta är att koden enkelt kan exekveras i en synkron ordning men asynkront, mao blockeras inte GUI trådar etc

Av CyberVillain

Man kan absolut ha dynamiska vyer i WPF, ContentControl ihop med Caliburn Micro är ett kraftfullt verktyg för dynamiska vyer.
Här är ett exempel på en vy som är dynamisk (Koden tagen från ett av mina open source projekt)

https://github.com/AndersMalmgren/FreePIE/blob/master/FreePIE...

<UserControl x:Class="FreePIE.GUI.Views.Plugin.PluginPropertyView" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" mc:Ignorable="d"> <Grid> <Border Padding="5" BorderThickness="0,0,0,1" BorderBrush="{DynamicResource ControlBackgroundBrush}"> <StackPanel Orientation="Horizontal"> <Label x:Name="Name" Width="100" ToolTip="{Binding HelpText}"></Label> <ContentControl x:Name="Value"></ContentControl> </StackPanel> </Border> </Grid> </UserControl>

Notera ContentControl som är bunden till en property Value

https://github.com/AndersMalmgren/FreePIE/blob/master/FreePIE...
Propertien på vymodellen är en basklass

public ValueViewModel Value { get; set; }

Caliburn.Micro kommer sedan resolva rätt typ av vy beroende på implementation av ValueViewModel

Av CyberVillain
Skrivet av Teknocide:

(detta går även att göra med readonly-modifikatorn men properties är flexiblare.)

För att förtydliga Teknocide svar
Den blir inte immutable förrens du gör

private readonly ICollection colRecord; public MyClass(ICollection colRecord) { this.colRecord = colRecord; } ColRecord { get { return colRecord; } }

Lite mer kod än i Teknocide exempel, men ovärderligt i större projekt när utvecklarna annars ofta förstör staten på objekt
ColRecord är inget bra namn btw

Av CyberVillain

Jag kör VS2012 då jag sysslar väldigt lite med ren html, oftast en UI designer som gör den biten.
I mindre projekt när jag tvingas göra htmldesignen själv så använder jag Twitter bootstrap, otroligt trevligt ramverk och den har inbyggd css reset etc.

http://twitter.github.io/bootstrap/

Av CyberVillain
Skrivet av Sir. Haxalot:

Fast, det är ju inte jag som försöker slänga min titel i ansiktet på folk. Jag har inte sagt "DÖ JÄVLA UTVECKLARE DÖ!!!!".

Jag har bara svarat efter dina extremt otydliga inlägg där du klagar över saker och ger oerhört luddiga exempel (2 minuter byggtid är fan inte någonting, där jag jobbar tar de stora byggena 1-2 timmar och det är med bra hårdvara).

Nej men nu var det ju inte så att det var hela bygget jag körde inklusive tester, utan det var ETT projekt i en lösning (Man bygger inte alla projekt samtidigt normalt då enbart de projekt som har ändrats byggs). Först på byggservern byggs hela lösning och automatiska enhets- och spectester körs, detta tar givetvis lång tid, 2 timmar har jag dock aldrig varit med. Ni kanske har problem med prestandan på era tester?

Av CyberVillain

finns det nått värre än kod på svenska, med eller utan åäö

Jag fick i uppgift att porta ett hyffsat nytt web.forms projekt till MVC4 / SPA
De hade inte Hungarian notation i C# koden men i vyerna var det det mao

<asp:TextBox id="tbName" />

Det gör ju att codebehindfilerna (Web.forms svar på modellen eller controllern i moderna apier) får en hårdare koppling till vyn rent semantiskt, mycket fult.

Av CyberVillain

Fan sjukt att de lär ut en sådan grej, vill de att ni skriver

strName och intCount också?

Av CyberVillain

Nej pixlarna är sjukt stora, och avståndet mellan varje är även den hög. Sedan pga optiken så utnyttjas inte ens alla pixlar. Detta är bara en testpryl för att utveckla appar mot. Jag skulle uppskatta att upplösningen måste jackas upp minst 4 ggr.

MEn det var sjukt coolt endå, coolast var Hell 2 demot. Man flyger en helikopter, det coola är själva cockpiten och sin virtuella kropp, den virtuella kroppen känns verkligen som sin egen, sjukt cool känsla.

Av CyberVillain

Hungarian notation hör till 1970, sluta med det!

Av CyberVillain

Jag har ju länkat till min profil på github så du får jättegärna göra en kodgranskning och återkomma med kritik. Lättirriterad? Du har ju noll koll på hur det är att jobba på det sätt jag tvingas. Tar du upp taskmangern så ligger CPU alltid på runt 15% även vid sådant som på en normal dator räknas som idle. Få upp ögonen och inse problemet istället.

Jag irriterar mig på din arrogans och att du inte kan sätta dig in i en annan människans problem, ett ganska vanligt problem hos en person utan empati. Översittaren är du, inte jag.

Av CyberVillain

Sambon ringde precis och undra vad Oculus Rift är, hon är mammaledig och vi fick precis paket från dem. Kan inte vänta tills jag kommer hem

Av CyberVillain

Jag säger både ja och nej på detta, corelogik ska inte behövs göra speciellt mycket validering alls då lager ovanför den ska ha validerat datat. Sedan blir jag galen när jag stöter på kod som denna

function fulKod(data) { if(värsta ifsatsen som blockar allt som den borde) { //kod } }

Om jag skickar in fel data i denna så händer absolut ingenting, inga exeptions ingenting. I de lägen är det faktiskt bättre att skippa ifsatsen helt och låta den crasha om fel data kommer in (Då lager högre upp fångar felet och loggar etc) eller så gör man

function bättreKod(data) { if(värsta ifsatsen som blockar allt som den borde) { ///kod } else { throw new MyException("Förklara felet"); } }

Skrivet av HurMycket:

En annan grej är att du i nuläget har en s k blacklist-approach. Det är inte lämpligt i det här fallet. Du bör använda en whitelist-approach. Skillnaden mellan dessa är enormt viktig i reella scenarion:

Blacklist innebär att du godkänner allt utom det som garanterat inte är OK.

Whitelist innebär att du vägrar godkänna allt utom det som garanterat är OK.

Av CyberVillain

Helhetsåtaganden har en fastsatt spec, de kan man sätta fastpris på, konsulting ute hos kund har ingen sådan fast spec. Förstår inte riktigt hur man skulle kunna sätta fast pris på det, men, men...

Av CyberVillain
Skrivet av Whippoorwill:

Om man bortser från att det kan kompliceras av ramavtal och interna eller externa krav på upphandling så är det oftast möjligt att även i fastprissammanhang förhandla om saker som uppenbart förändrar villkoren. Visst, man kan vara en jävel och hålla på varje bokstav i ett kontrakt så länge det gynnar en själv, men då blir det inte fler affärer med den partnern och en etablerad bra affärsrelation har ett värde som är relativt lätt att se att den även har ett ekonomiskt värde.

Det jag menade var att fasta priser förekommer inte när man sitter ute hos kund, du jobbar på löpande räkning. Fast pris förekommer när en kund beställer en helhetslösning tex ett affärssystem.

Av CyberVillain

Och ja, jag skriver dessa inlägg under tiden jag väntar på min *%&! maskin att svara

Av CyberVillain

ja, alla seriösa projekt kör automatiska byggen och tester, men det löser inte problemet att många verktyg kräver lokala adminrättigheter.

Att debugga IIS7+ utan admin går inte, det gick med tidigare versioner

Av CyberVillain

PC-admins är ju inte kända för att vara agila och förändringasbara

Av CyberVillain

@Henrico tyvärr är det så det ser ut, och det spelar ingen roll hur många bra business cases man lägger fram. Ett stort företag fungerar inte så.

edit: SAP är dock inte utveckling det är konfiguration