Visual Code
2018-03-20 23:39

W odniesieniu do wpisu użytkownika @Aventus.
Jeśli chcemy automatycznie konwertować modele z C# do TypeScripta, pomocne może się okazać rozszerzenie Typewriter do VS.
W pliku template.tst możemy okreslić w jaki sposób ma konwertować modele. Możemy zmienić m.in. czy chcemy z domyślnym konstruktorem, które klasy będą brane po uwagę np. tylko z kończące się na Model, sposób formatowania kodu, czy konwersja identyfikatorów np. na małe litery. #angular #aspdotnetcore #csharp #dotnet

grzesiek51114

Zauważyłem, że mam jakąś awersję do programowania we wszystkim co ma script w nazwie. Może to już jakaś choroba...

AreQrm

@grzesiek51114: ja mam podobnie, ale tylko do tego co ma w nazwie "Java" ;-)

Visual Code
2018-03-14 23:01

O tym jak korzystać z HttpClient.
HttpClient implementuje IDisposable, czyli domyślnie chcielibyśmy stworzyć jego instancje z wykorzystaniem using, który zadba o to, by po opuszczeniu scope została wykonana metoda Dispose na tym obiekcie.
Problem w tym, że w ten sposób możemy bardzo szybko wyczerpać ilość dostępnych socketów, co może przyczynić się do powstania trudnych w rozpoznaniu bugów.
Samo pozbycie się obiektu httpClient nie zwalnia nam natychmiastowo socketa. Socket w implementacji TCP przejdzie w stan TIME_WAIT, trwający domyślnie 240 sekund, aby odebrać pakiety, które mogłyby jeszcze nie zdążyć dotrzeć.
Klasa HttpClient, mimo że, implementuje IDisposable jest klasą thread safe, która idealnie radzi sobie ze współbieżnymi zadaniami.
Z tego względu zaleca się wykonywanie wiele żądań na jednej instancji HttpClient.
Możesz stworzyć statyczną instancję, albo singleton z DI. #csharp #dotnet #aspdotnetcore

Aventus

Nawiazywalem do tego "Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe." Zrodlo: http://tnij.at/248639

Visual Code
2018-03-12 23:36

CodeRush to narzędzie, które nie tylko pomaga debugować kod, ale posiada dużo przydatnych funkcji przyspieszające pisanie kodu. Więcej Cena 50$ #csharp #visualstudio

tamtamtu

Nie przyspiesza (prace przyspiesza mi odciecie neta :)) - informacje ze szybciej sie programuje bo zna sie jakis skrot czy cos takiego traktuje jak wymyslanie hasel reklamowych na sile. Z obsluga vim'a w VS mi sie po prostu znacznie przyjemniej pracuje. Myszki praktycznie nie ruszam. Nawigacja bajka. Macra sa swietne (choc tu juz sama . mi wystarczyla). Tabulacja tez dziala. No i wiele innych rzeczy z czego pewnie wiekszosci nie znam :)

Afish

O, wreszcie pokazywanie wartości jak w IntelliJ.

Visual Code
2018-02-22 00:44

Wzorzec projektowy Dekorator #bardzozwięźle pozwala dodawać do klasy nowe funkcjonalności w pewien abstrakcyjny sposób dzięki czemu można to robić w trakcie wykonywania program.
Dekorator po prostu opakowuje obiekt, który dekorujemy i udostępnia funkcjonalności, które mogą być uzależnione od dekorowanego obiektu.
Skoro opakowuje to obiekt dekorowany będzie komponentem w dekoratorze, chcemy traktować udekorowany obiekt jak pierwotny dlatego dekorator będzie również dziedziczył po klasie bazowej. Dekorator również może być dekorowany.
Dekoratorów chcemy wiele dlatego stwórzmy interfejs, na którym będziemy mogli tworzyć nowe dekoratory, jednak chcemy narzucić implementacje dekoratora, aby zawsze istniało powiązanie między kolejnymi dekoracjami, dekorator nie zawsze musi implementować wszystkich funkcjonalności dlatego korzystamy z metod wirtualnych, które zapewnią domyślne działanie w przypadku ich braku.
http://rextester.com/QDP29360

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
 
namespace Rextester
{
    public class Program
    {
        public static void Main(string[] args)
        {
            Czekolada czekolada = new Czekolada();
            Czekolada czekoladaMleczna = new MlecznaDecorator(new Czekolada());
            Czekolada czekoldaMlecznaZToffi = new ToffiDecorator(new MlecznaDecorator(new Czekolada()));
 
            Console.WriteLine("Czekolada:");
            Console.WriteLine(" Opis " + czekolada.getDescription() + ", cost: " + czekolada.cost()); 
 
            Console.WriteLine("Czekolada Mleczna:");
            Console.WriteLine(" Opis " + czekoladaMleczna.getDescription() + ", cost: " + czekoladaMleczna.cost()); 
 
            Console.WriteLine("Czekolada Mleczna z Toffi:");
            Console.WriteLine(" Opis " + czekoldaMlecznaZToffi.getDescription() + ", cost: " + czekoldaMlecznaZToffi.cost()); 
 
            Console.WriteLine("\nJeszcze jedna wersja ta może być uważana za poprawniejszą, ale to kwestia tego co robimy.\n");
 
            Czekolada czekolada2 = new Czekolada();
            Czekolada czekoladaMleczna2 = new MlecznaDecorator2(new Czekolada());
            Czekolada czekoldaMlecznaZToffi2 = new ToffiDecorator2(new MlecznaDecorator2(new Czekolada()));
 
            Console.WriteLine("Czekolada:");
            Console.WriteLine(" Opis " + czekolada2.getDescription() + ", cost: " + czekolada2.cost()); 
 
            Console.WriteLine("Czekolada Mleczna:");
            Console.WriteLine(" Opis " + czekoladaMleczna2.getDescription() + ", cost: " + czekoladaMleczna2.cost()); 
 
            Console.WriteLine("Czekolada Mleczna z Toffi:");
            Console.WriteLine(" Opis " + czekoldaMlecznaZToffi2.getDescription() + ", cost: " + czekoldaMlecznaZToffi2.cost()); 
        }
        }
    }
 
public class Czekolada
{
    virtual public string getDescription(){
        return "Czekolada";
    }
 
    virtual public decimal cost(){
        return 5.0m;
    }
 
}
 
public abstract class CzekoladaDecorator : Czekolada
{
    public abstract string description {get;}
    public abstract decimal thisCost {get;}
 
    protected Czekolada czekolada;
    public CzekoladaDecorator( Czekolada _czekolada) { czekolada = _czekolada;}
 
    override public string getDescription(){
        return this.czekolada.getDescription() + " " + description;
    } 
    override public decimal cost(){
        return this.czekolada.cost() + thisCost;
    }
}
 
public class MlecznaDecorator : CzekoladaDecorator
{
    public MlecznaDecorator(Czekolada _czekolada) : base( _czekolada) {}
 
    override public string description  {get {return "Mleczna";}}
 
    override public decimal thisCost { get {return 2.0m; }}
 
}
 
public class ToffiDecorator : CzekoladaDecorator
{
    public ToffiDecorator(Czekolada _czekolada) : base( _czekolada)
    {
    }
 
    override public string description  {  get {return "Toffi";}}
    override public decimal thisCost {  get {return 3.0m;}}
}
 
// zwykła implementacja
 
public abstract class CzekoladaDecorator2 : Czekolada
{
    protected Czekolada czekolada;
    public CzekoladaDecorator2( Czekolada _czekolada) { czekolada = _czekolada;}
 
    override public string getDescription(){
        return this.czekolada.getDescription();
    } 
    override public decimal cost(){
        return this.czekolada.cost();
    }
}
 
public class MlecznaDecorator2 : CzekoladaDecorator2
{
    public MlecznaDecorator2(Czekolada _czekolada) : base( _czekolada) {}
 
    override public string getDescription(){
        return this.czekolada.getDescription() + " Mleczna";
    } 
    override public decimal cost(){
        return this.czekolada.cost() + 2.0m;
    }
 
}
 
public class ToffiDecorator2 : CzekoladaDecorator2
{
    public ToffiDecorator2(Czekolada _czekolada) : base( _czekolada) {}
 
    override public string getDescription(){
        return this.czekolada.getDescription() + " Toffi";
    } 
    override public decimal cost(){
        return this.czekolada.cost() + 3.0m;
    }
}

#csharp #wzorceprojektowe Jeśli coś się nie zgadza dajcie grzecznie znać by moglibyśmy dojść do wspólnego konsensusu. ;)

Visual Code
2018-02-01 12:55

C# to Javascript compiler. Zobaczcie sami jak wygląda poniższy kod w JavaScripcie ;)

using System;
using System.Threading.Tasks;
using System.Collections.Generic;
public class Program
{
    static Dictionary<int,string> dict = new Dictionary<int,string>();

    public async static void Main()
    {
        var msg = "Hello, 4P!";

        Console.WriteLine(msg);

        for(var i = 0; i < 5; i++){
            dict.Add(i, DateTime.UtcNow.ToString("ss.fff"));
            await Task.Delay(100);
        }

        foreach(var str in dict){
            Console.WriteLine($"4P {str.Key} : {str.Value}");
        }
    }   
}

#csharp #javascript

Azarien

JavaScript must die.

no_solution_found

ale takie kompilatory często robią sieczkę.... ktoś kto ogarnia JSa napisałby to dużo czytelniej

Visual Code
2017-12-30 15:42

Miałem problem z napisami do filmów. Zamiast polskich znaków wyświetlały się krzaczki. Próbowałem zmieniać ustawienia regionalne, języki klawiatury itd. Jednak najprostszym i najszybszym rozwiązaniem okazało się napasanie prostego programu do podmieniania znaków na polskie.
Tak to wcześniej wyglądało:

[2753][2772]by daæ mu kolejn¹ szansê.
[2778][2803]A jeœli mu siê powiedzie, wtedy, no wiecie,
[2804][2828]Nikt nie bêdzie bardziej dumny|ni¿ ja. Przygotowa³em go.

A tak wygląda teraz:

2753][2772]by dać mu kolejną szansę.
[2778][2803]A jeśli mu się powiedzie, wtedy, no wiecie,
[2804][2828]Nikt nie będzie bardziej dumny|niż ja. Przygotowałem go.

Kod:

using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
 
namespace replaceCharacters
{
    class Program
    {
        private static List<char[]> replaceTab = new List<char[]> 
        {
            new char[] {'¹', 'ą'},
            new char[] {'¿', 'ż'},
            new char[] {'³', 'ł'},
            new char[] {'ê', 'ę'},
            new char[] {'œ', 'ś'},
            new char[] {'æ', 'ć'},
            new char[] {'Ÿ', 'ź'}
        };
 
        static void Main(string[] args)
        {
            string subPath = "";
 
            StringBuilder list = new StringBuilder(
                "Available commands list:\n" +
                "-------\n" +
                "  file {path_To_File_In_Current_Directory}\n" +
                "-------\n" +
                "example: file subtitles.srt\n"
            );
 
            if (args.Length == 2)
            {
                switch (args[0])
                {
                    case "file":
                        subPath = Environment.CurrentDirectory.ToString() + @"\" + args[1];
                        if(!File.Exists(subPath))
                        {
                            System.Console.WriteLine("Make sure file exist.");
                            Environment.Exit(1);
                        }
                        System.Console.WriteLine("Path commited: " + subPath);
                        break;
                    default:
                        System.Console.WriteLine("Do not recognised command.");
                        System.Console.WriteLine(list);
                        Environment.Exit(1);
                        break;
                }
            }
            else
            {
                System.Console.WriteLine(list);
                Environment.Exit(1);
            }
 
            using (FileStream subFileStream = new FileStream(subPath, FileMode.Open, FileAccess.ReadWrite))
            {
                byte[] bytes;
 
                using (StreamReader reader = new StreamReader(subFileStream))
                {
                    string txt = reader.ReadToEnd();
 
                    foreach(var _char in replaceTab)
                    {
                        txt = txt.Replace(_char[0], _char[1]);
                    }
 
                    UTF8Encoding temp = new UTF8Encoding();
                    bytes = temp.GetBytes(txt);
 
                    subFileStream.SetLength(0);
                    subFileStream.Write(bytes, 0, bytes.Length);
                    System.Console.WriteLine("Replacing chars complete.");
                }
 
            }
        }
    }
}
 

#csharp

Spine

wystarczy korzystać z angielskich napisów, albo w ogóle zrezygnować z napisów ;)

fasadin

nie jest najprostsze rozwiazanie. A wystarczy zmienic kodowanie w windowsie i sprawa sama sie rozwiazuje (bo teraz, jak bedziesz ogladac filmy z tego komputera na innym urzadzeniu to nadal bedziesz miec krzaki)