Pokazywanie postów oznaczonych etykietą codeplex. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą codeplex. Pokaż wszystkie posty

niedziela, 31 marca 2013

Power Collections

Power Collectons jest biblioteką powstałą w 2005 roku na platformie .NET Framework 2.0 napisanej przez firmę Wintellect. Jest to zapomniana biblioteka. Była napisana, kiedy jeszcze nie było LINQa.
Za pomocą tej biblioteki możesz wykonać iloczyn kartezjański dla kart:
var kolory = new List<string> {"Trefl", "Karo", "Kier", "Pik"};
var figury = new List<string> {"As", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Walet", "Dama", "Król"};

var karty = Algorithms.CartesianProduct(figury,kolory)
    .Select(x=>x.First + " " + x.Second)
    .ToList();

foreach (var karta in karty)
{
    Console.WriteLine(karta);
}
I jeszcze potasować te karty i zagrać w pokera :)
var kartyNaFlopie = Algorithms.RandomSubset(potasowaneKarty, 3);
foreach (  var karta in kartyNaFlopie)
{
    Console.WriteLine(karta);
}
Oprócz tego za pomoca Power Collections możesz dokonać rotacji listy.
string word = "Arkadiusz Beer ";         
for (int i = 0; i < word.Length; i++)
{
    var builder = new StringBuilder();
    Algorithms.Rotate(word.ToList(), i)
        .ToList()
        .ForEach(c=> builder.Append(c));
    Console.WriteLine(builder);
}

Power Collections posiada typy, jakich może ci brakować w BCL (m.in. MultiDictionary<TKey, TValue> czy OrderedBag<T>). Zachęcam za do sprawdzenia tej biblioteki.

piątek, 17 czerwca 2011

Oldies

Wcześniej pisałem o moim pulpicie.Ale co robię jak mam za dużo starych plików w archiwum. No cóż... skoro nie są już potrzebne powinno się je usunąć. A skąd wiem, że nie będę ich używał. Z prostej zależności, – jeżeli przez pół roku nie używałem tych plików to prawdopodobnie w przyszłości też nie będę używał. Od tej reguły są wyjątki takie jak zdjęcia, muzyka czy specjalne dokumenty. Nie wiem ile to razy w folderze trzymało się pliku i zawsze się miało się nadzieję, że jeszcze się przydadzą.


Specjalnie do takiego dylematu napisałem małą aplikacje konsolową, która usuwa stare pliki. Aplikacje nazywa się Oldies i można pobrać z codeplex.. Wystarczy wpisać jak stare pliki ma znaleźć (np: pliki, które maja więcej niż 20 dni i 1 miesiąc) oraz jaką operację należy wykonać na nich. Możemy usunąć, wyświetlić w kolejności od najstarszego pliku lub przenieś do folderu Oldies. Aplikacja jest na szybko napisana i jest bardzo prosta w obsłudze.



Jeżeli tak jak ja masz folder o nazwie Download lub staff, w którym znajdują się przeróżne stare rzeczy, o których nie wiesz nawet, po co były Ci potrzebne, to Oldies pozwoli ci na 'oczyszczenie' problemu. Napisałem Oldies.exe, bo pozwoliło mi to mieć kontrole nad niepotrzebnymi rzeczami.

Oldies

środa, 30 marca 2011

Co z tymi pakietami (NuGet on Visual Studio)

Jedno z najpiękniejszych cech Visual Studio 2010 jest możliwość dodawania bibliotek do projektu za pomocą komend. Dlatego też bardzo spodobał mi się dodatek NuGet.

W poniedziałek (28.03.2011) miałem prezentacje o NuGet.
Do testów Nugeta wykorzystałem moje pakiety. Pierwszy z nich była biblioteka z metodami rozszerzającymi AroLibraries , gdzie można ją również znaleźć na codeplexie.
A druga paczka to PDFLittleSigner - mała paczka do podpisywania PDFów.

View more presentations from arekbee

Nie była to typowa prezentacja, gdyż starałem się wiele rzeczy napisać, a nie przedstawiać już gotowego kodu czy filmiku, gdzie bezbłędnie wszystko działa.

Na myśl przychodzą mi słowa Scott Hanselman który mówił że na prezentacji przy pisaniu kodu powinno się parę razy pomylić w oczywistych miejscach, bo dzięki temu wiem czy słuchacze śledzą to co robimy.

czwartek, 23 września 2010

AroLibraries

Pisząc kod bardzo często powtarzam tą samą sentencje kodu.
Wraz w c#3.0 pojawiły się extension methods, które ukrywają kod.
Standardowy przykład to zastosowanie konwersji z typu string na int.

string valueString="1";
int valueInt;
int.TryParse(valueString, out valueInt); // valueInt == 1


to zapisujemy w postaci:
string valueString="1";
valueString.ToInt(); // == 1

Kiedy nie podoba mi się zapis:
if(boolVariable == flase )

((details["Node"] as TreeNode).Parent as TreeNodeExt).Name

Przerabiam na bardziej czytelny:
if(boolVariable.IsFalse())

details["Node"] .As<TreeNode>()
.Parent .As<TreeNodeExt>() .Name

Ale to kwestia gustu :)

Extension methods mają duże zastosowanie w LINQ to Object
NP:
Aby mieć informacje o wszystkich plikach na dysku o podanym rozszerzeniu należy napisać troszkę kodu:

static void Main(string[] args)
{
string path = @"D:\";
DirectoryInfo dr = new DirectoryInfo(path);
FileCollection = new List<FileInfo>();
FillFilesInDirectories(dr);
}

private static List<FileInfo> FileCollection = null;
private static void FillFilesInDirectories(DirectoryInfo dir)
{
var dirs = dir.GetDirectories();
foreach (var vDir in dirs)
{
FileCollection.AddRange(vDir.GetFiles());
FillFilesInDirectories(vDir);
}
}



Lub za pomocą LINQ:

static void Main(string[] args)
{
string path = @"D:\";
var FileCollection = new DirectoryInfo(path)
.GetDirectories()
.SelectRecursive(x => x.GetDirectories()) //Rekurencja
.SelectMany(x => x.GetFiles()); //Pobieramy Pliki
}


Od razu widać, że kod w LINQu jest bardziej czytelny.

Projekt rozszerzający możliwości Extension Methods można pobrać ze strony AroLibraries