Darkleo’s Blog
Ein Schatz, der seinen Besitzer überallhin begleitet.

Guid to Int, Int32, Int64, Int128, BigInteger

April 28th, 2016 by darkleo

LinqPad5

void Main()
{
var guid=Guid.NewGuid();
("GUID:  "+guid).Dump();
var bigint=GuidToBigInteger(guid);
var int64=GuidToInt64(guid);
var int32=GuidToInt32(guid);
("HEX:    "+bigint.ToString("X")).Dump();
("BIGINT:"+bigint).Dump();
("INT64: "+int64).Dump();
("INT32: "+int32).Dump();

var idFix=Guid.Parse("00000000000000000000000000000000");
idFix.Dump();
GuidToBigInteger(idFix).Dump();
("int.MaxValue: " + int.MaxValue).Dump();

idFix=Guid.Parse("0000000000000000000000FF00FF00FF");
idFix.Dump();
var bi=GuidToBigInteger(idFix);
("BigInt:  "+bi).Dump();
var i=GuidToInt32(idFix);
("Int Mod: "+i).Dump();

Int64.MaxValue.Dump();
int.MaxValue.Dump();
Int32.MaxValue.Dump();
}

public static System.Numerics.BigInteger GuidToBigInteger(Guid id)
{
var str=id.ToString("N");
var result=System.Numerics.BigInteger.Parse(str, System.Globalization.NumberStyles.AllowHexSpecifier);
result=result>0?result:-result;
if(result<int.MaxValue)
{
result=result+int.MaxValue;
}
return result;
}

public static Int64 GuidToInt64(Guid id)
{
var result=GuidToBigInteger(id);
result=result%Int64.MaxValue;
if(result<int.MaxValue)
{
result=result+int.MaxValue;
}
return (Int64)result;
}
public static Int32 GuidToInt32(Guid id)
{
var result=GuidToBigInteger(id);
result=result%Int32.MaxValue;
if(result<(Int32.MaxValue/2))
{
result=result+(Int32.MaxValue/2);
}
return (Int32)result;
}

Posted in .NET, C# | No Comments »

Implementing a timeout in c# with Session/httpContext access

March 8th, 2015 by darkleo

Eine Erweiterung der Task um Drittsystemen die nötigste Zeit zu geben, falls die Systeme nicht Antworten,

geht die Ausführung der Seite weiter, der Kunde bekommt in einer SLA -  Zeit die Webapplication zu sehen.

public static class TaskExtensions
{
    public static async Task TimeoutAfter(this Task task, int millisecondsTimeout)
    {
        if (task == await Task.WhenAny(task, Task.Delay(millisecondsTimeout)))
            await task;
        else
            throw new TimeoutException();
    }
}

 

public class HomeController : Controller

{

    public class IndexViewModel

    {

        public DateTime Date { getset; }

    }    public async Task<ActionResult> Index()

    {

        Session["date"] = DateTime.Now;

        IndexViewModel model = null;

        try

        {

            var task=Task.Run<IndexViewModel>(() =>

            {

                var result=new IndexViewModel();

                System.Threading.Thread.Sleep(1000);

                result.Date = (DateTime)Session["date"];

                return result;

            });

            await task.TimeoutAfter(500);

            model=task.Result;

        }

        catch (TimeoutException ex)

        {

            //Log.Warning("Timeout");

        }

        return View(model);

    }

Posted in .NET, ASP.NET, C# | No Comments »

JQuery data-attribute als Default Vorbelegung verarbeiten

November 10th, 2014 by darkleo
Wir haben eine Auswahlbox:
<select class="form-control" id="ThemeSelector">
<option>Keine Auswahl</option>
<option data-basecolor="#47A447"
             data-basefontcolor="#ffffff"
             data-billablecolor="#47A447"
             data-currentdaybackground="#E7F5E7"
             data-holidaybackgroundcolor="#F5E7E7">
         Default
     </option>

und ein generisches JS-Snippet für die Vorbelegung von Eingabefldern.

$("select#ThemeSelector").on("change"function (e) {
     var attr=$(this.options[this.options.selectedIndex]).data();
     $.each(attr, function (key, value) {
         var input=$('input.minicolors').filter(function () {
             return $(this).attr('name').toLowerCase() == key;
         });         if (input != undefined) {
             input.minicolors("value",value);
         }     });

});

ASP.NET MVC

@Html.TextBoxFor(model => model.BaseColor, new { @class = "form-control minicolors" })

Posted in .NET, C#, JQuery | No Comments »

404 .woff konnte nicht geladen werden

September 4th, 2014 by darkleo

manchmal macht getbootstrap.com probleme, hier ist ein kleines Snippet welches Abhilfe schafft.

<system.webServer>
<staticContent> 
 <remove fileExtension=".woff" />
 <mimeMap fileExtension=".woff" mimeType="application/octet-stream" />
</staticContent> 

Posted in .NET, ASP.NET, C# | No Comments »

Build-Version damit wir bei den vielen Versionen den Überblick nicht verlieren

September 2nd, 2014 by darkleo

Oft muss ich Projektentwicklungen nur begleiten auch mal als Tester und für mich ist es wichtig zu wissen ob ich auf der neusten Version teste.

Hier ist ein Snippet für einen Footer-Text für ASP.NET MVC.

public static HtmlString _BuildVersion(this HtmlHelper helper)

{

var type = typeof(BiProClient.Controllers.HomeController);

var version = System.Reflection.Assembly.GetAssembly(type).GetName().Version.ToString();

var buildTime = new FileInfo(System.Reflection.Assembly.GetAssembly(type).Location).LastWriteTime.ToString("dd.MM.yyyy HH:mm");

return new HtmlString(buildTime + " (" + version + ")");

}

Posted in .NET, ASP.NET, C# | No Comments »

Konami-Code für ASP.NET JQuery - on and off

August 30th, 2014 by darkleo

Ein kleines Snippet mit dem es möglich ist, kleine Funktionen in Web-Apps zu aktivieren oder deaktivieren.

var kkeys = [], konami = "38,38,40,40,37,39,37,39,66,65";

$(document).keydown(function(e) {

  kkeys.push( e.keyCode );

  if ( kkeys.toString().indexOf( konami ) >= 0 ) {

    $(document).unbind('keydown',arguments.callee);    $("body").toggleClass("konami");

    if($("body").hasClass("konami")) {

    // do something awesome

    }

    else {

    // remove something awesome

    }

  }

});

Posted in .NET, ASP.NET | No Comments »

async await und parallel - eine einfache Messung

August 23rd, 2014 by darkleo

Es ist nicht immer sinnvoll async und await zu verwenden, auch in einem Parallel-Szenario, für wenige Operationen hat es sogar Nachteile.

Nachmessen hilft.

class Program{

static void Main(string[] args)

{

int runs = 10000;

using (Monitor.Create("Task: "))

{

for (int i = 0; i < runs; i++)

{

Task task = new Task(ProcessDataAsync);

task.Start();

task.Wait();

}

}

using (Monitor.Create("Normal: "))

{

for (int i = 0; i < runs; i++)

{

ProcessData();

}

}

using (Monitor.Create("Parallel Task: "))

{

Parallel.For(0, runs, i =>

{

Task task = new Task(ProcessDataAsync);

task.Start();

task.Wait();

});

}

using (Monitor.Create("Parallel Normal: "))

{

Parallel.For(0, runs, i =>

{

ProcessData();

});

}

Console.ReadKey();    }

static async void ProcessDataAsync()

{

Task<int> task = Task.FromResult(5);

System.Threading.Thread.Sleep(1);

int x = await task;

}

static void ProcessData()

{

System.Threading.Thread.Sleep(1);

}

}

public class Monitor : IDisposable

{

System.Diagnostics.Stopwatch sw;

string prefix;

public Monitor(string prefix)

{

this.prefix = prefix;

sw = System.Diagnostics.Stopwatch.StartNew();

}

public static Monitor Create(string prefix)

{ return new Monitor(prefix); }

public void Dispose()

{ Console.WriteLine(prefix + sw.ElapsedMilliseconds + " ms"); }

}

Posted in .NET, C#, Klasse, Performance | No Comments »

Wie lösche ich Projekte oder Collections auf dem VisualStudio Online TFS?

April 19th, 2014 by darkleo

Hab mich letztens bei einem Projekt vertippt und hatte einige Testprojekte im TFS, wollte aufräumen, hab in der Oberfläche nichts gefunden...nach etwas Suche hab ich hier die Lösung gefunden.

C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE>

tfsdeleteproject.exe /force /collection:https://{Benutzer}.visualstudio.com/DefaultCollection "ProjektName"

Posted in TFS, VisualStudio | No Comments »

Wie lösche ich alle Kommentare mit Hilfe von Visual Studio 2013 Commands?

March 13th, 2014 by darkleo

Da leider die Makros in den neusten Versionen von Visual Studio entfernt wurden habe ich versucht alternative Wege zu finden meinen Code zu bereinigen.*)

Als erster Ansatz wurde Edit.Delete, Edit.LineDelete untersucht, dies dann evt. über Conditions und Iteration zu realisieren scheiterte.

Dann das suchen und ersetzen.

Edit.Find, Edit.Replace

http://msdn.microsoft.com/en-us/library/wd49z860.aspx
http://msdn.microsoft.com/en-us/library/c785s0kz.aspx

Die Lösung heisst:

Edit.Replace "(\/\*(\s*|.*?)*\*\/)|(\/\/.*)" "" /all /regex

Für weitere Anwendungsfälle können weitere Regex ausdrücke auf regexlib.com gefunden werden.

Posted in .NET, C#, Macro | No Comments »

deaktivierte Links umstylen… Möglichkeiten mit JQuery

November 13th, 2013 by darkleo

kennt Ihr das, es gibt Links die Ihr vom System deaktiviert bekommt und diese müssen aber ein bestimmtes Design haben. Vielleicht liegt es an den Controls, dass die :disabled setzen und ihr müsst damit klar kommen.

Hier ist ein kleiner JQuery Snippet:

$("div.Grid a:disabled").after(function(){return this.innerText;}).hide()

Hiermit ist es möglich den Text aus dem Link herraus zuziehen und diesen nach dem Link zu platzieren, den eigentlichen Link machen wir unsichtbar.

Tada...Die Möglichkeiten stehen offen class tags zu versehen und über CSS sich auszutoben.

Posted in .NET, ASP.NET, JQuery | No Comments »

« Previous Entries