Začínám se čím dál tím více vracet ke svým starým programům

⚠️ Pozor: obrázky z tohoto příspěvku se ztratily při výpadku v roce 2016. Chybějící obrázky nahradí automaticky vtipným placeholderem plugin Broken Image Placeholder.

Sice to jde hodně pomalu, protože se věnuji spíše jiným aktivitám ale nějaký progress to má. Nejdřív než vám začnu popisovat co teď dělám vás musím trochu zasvětit proč to dělám. Programování se věnuji už skoro 5 roků(24.12. tomu bude tak).

Nicméně asi před 1,5 rokem jsem byl totálně na dně protože jsem ztratil 99% svých zdrojových souborů – tedy co co jsem 3,5 roky dělal dnem i nocí. Podařilo se mi to jednoduše – psal jsem nějaký program na odstraňování souborů a byl jsem si tak jistý že mi to nesmaže nic co by nemělo, že jsem to pustil a nekontroloval si co ten program dělá.

Žel to dopadlo tak, že se mi smazala celá složka Projects Visual Studia a jen 3 programy byly mimo tuto složku, takže ty zůstaly nedotčené, ale stovky ostatních programů byly v setině sekundy v čudu. Ihned jak jsem to zjistil jsem začal s obnovou pomocí GetDataBack(který jsem speciálně pro tuto příležitost kupoval), ale nedopadl jsem dobře.

Větší polovina souborů byla poškozených s nesmyslným obsahem. Tak jsem rychle psal program, který mi měl získat správné soubory z jiných projektů a ten zbytek budu muset holt naprogramovat znovu nebo zahodit jsem si říkal.
V posledních pár dnech se znovu zabývám těmito starickými svými programy.

Někdy to je zajímavé pozorovat, jak jsem vyspěl a umím nahradit svůj vlastní kód lepším. Objevil jsem v té záloze složku Hotovo, takže tu jsem hned přesunul do složky Projects Visual Studia 2013, protože tyto programy už jsou hotové a tak budu mít nejméně práce s jejich konvertem na WPF a angličtinu.

Samozřejmě jen tehdy, pokud se mi všechno podařilo obnovit správně. Ostatní programy jsem přesunul do složky Projects Visual Studia 2005. Naposledy jsem konvertoval program Horoscopes, který je, jak už název napovídá, zaměřen na horoskopy. Finální WPF verze vypadá nějak takto:



Poté jsem převedl program na vyhledávání projektů, který jsem pojmenoval “AllProjectSearch”, více se o něm můžete dočíst na http://sunamoblog.blogspot.com/2013/12/allprojectsearch-1000-hotov.html .

Pak jsem si dělal pořádek ve složce Project VS2005 protože jsem tam měl spoustu duplicitních projektů. Byla to pěkná otrava protože jsem ve Total Commanderu musel si tyto duplicitní projekty najít, pak je srovnat podle obsahu, pokud byl obsah jiný(což většinou byl) tak zjistit která verze je lepší, nepoškozenější a propracovanější a takhle vytvářet z dvou až několika verzí tu nejlepší.

Do toho jsem musel si napsat program na odstranění diakritiky z obsahu a/nebo názvu souboru, protože spousta projektů se liší jen v tomhle. Ještě jsem úplně neskončil se složkou Projects VS2005 a doufám že ostatní složky Projects VS budou na tom líp. Naposledy jsem si napsal program na odstranění duplicitních souborů. Vidíte ho na tomto obrázku:



Jak vidíte, na obrázku jsem odstranil celkem 1467 souborů. Toto číslo ale není kompletní(ve skutečnosti bude asi 3x vyšší), protože mi 2x program skočil do výjimky, neboť jsem zapomněl, že v šabloně mohu mít více stejných souborů a když tomu tak bylo tak program havaroval s tím že není soubor který by se dalo načíst, neboť ho už předchozí iterace odstranila.

To proto, že spoustu souborů jsem měl duplicitních a teď když ten projekt otevřu a budu vědět že tam není ten soubor, tak budu vědět že v něm nic speciálního nebylo a že tam bylo pouze to co bylo v mých sdílených souborech. Ale hlavně už nebudu muset kontrolovat obě 2 strany porovnávání v TC když jeden nebo oba soubory vymažu.

Mám tolik duplikovaných souborů, protože mi za verze VS 2005 ani novější nešlo udělat sdílené sestavení, které bych mohl do každého projektu pouze přilinkovat tak jako to dělám teď. Kód programu na toto odstranění byl jednoduchý a vypadal takto:

C#
private static void DeleteTheSameFiles(string folderWithTemplates, string extensionsDelimitedSemicolon, bool rekA1, params string[] folderWhereSearch) {
    int pocetSmazanychSouboru = 0;
    //-V klíči je cesta k složce Visual Studia, v hodnotě pak všechny soubory v ní
    Dictionary < string,
    string[] = "" > df = new Dictionary < string,
    string[] = "" > ();
    foreach(var item in folderWhereSearch) {
        df.Add(item, Directory.GetFiles(item, "*.*", SearchOption.AllDirectories));
    }
    string[] pripony = SH.Split(extensionsDelimitedSemicolon, ';');
    foreach(var pripona in pripony) {
        SearchOption so = SearchOption.TopDirectoryOnly;
        if (rekA1) {
            so = SearchOption.AllDirectories;
        }
        string[] soubory = Directory.GetFiles(folderWithTemplates, "*" + pripona, so);
        foreach(var item in soubory) {
            //FileInfo fi = new FileInfo(item);
            foreach(string folderWithDuplicate in folderWhereSearch) {
                if (File.Exists(item)) {
                    SmazStejneSoubory(Path.GetFileName(item), item, folderWithDuplicate, File.ReadAllBytes(item), df[folderWithDuplicate], ref pocetSmazanychSouboru);
                }
            }
        }
    }
}
/// <summary>
/// A1 tu je proto abych nesmazal originální soubor.
/// </summary>
/// <param name="item">
/// <param name="p1">
/// <param name="p2">
/// <param name="p3">
/// <returns> </returns>
private static void SmazStejneSoubory(string fileName, string wholeFileName, string folderWhereSearch, byte[] bajty, string[] soubory, ref int pocetSmazanychSouboru) {
    wholeFileName = wholeFileName.ToLower();
    //string[] soubory = Directory.GetFiles(folderWhereSearch, fileName, SearchOption.AllDirectories);
    foreach(var item in soubory) {
        if (Path.GetFileName(item) == fileName) {
            string itemLower = item.ToLower();
            if (itemLower != wholeFileName) {
                if (File.Exists(item)) {
                    byte[] bajty2 = File.ReadAllBytes(item);
                    if (CA.AreTheSame(bajty, bajty2)) {
                        pocetSmazanychSouboru++;
                        Console.WriteLine("Mažu soubor číslo " + pocetSmazanychSouboru + ": " + item);
                        File.Delete(item);
                    }
                }
            }
        }
    }
}
private static string[] GetAllFoldersVS() {
    List < string > vr = new List < string > ();
    vr.Add(@"C:\Users\Radeksunamo\Documents\Visual Studio 2005");
    vr.Add(@"C:\Users\Radeksunamo\Documents\Visual Studio 2008");
    vr.Add(@"C:\Users\Radeksunamo\Documents\Visual Studio 2010");
    vr.Add(@"C:\Users\Radeksunamo\Documents\Visual Studio 2012");
    vr.Add(@"C:\Users\Radeksunamo\Documents\Visual Studio 2013");
    return vr.ToArray();
}
DeleteTheSameFiles(@"C:\Users\Radeksunamo\Documents\Visual Studio 2005\rbs", ".cs", true, GetAllFoldersVS()); < /string></string > </string,></string,
>

Leave a Reply

Your email address will not be published. Required fields are marked *