Zacinam se cim dal tim vice vracet ke svym starym programum


Sice to jde hodne pomalu, protoze se venuji spise jinym aktivitam ale nejaky progress to ma. Nejdriv nez vam zacnu popisovat co ted delam vas musim trochu zasvetit proc to delam. Programovani se venuji jiz skoro 5 roku(24.12. tomu bude tak).

Nicmene asi pred 1,5 rokem jsem byl totalne na dne protoze jsem ztratil 99% svych zdrojovych souboru – tedy co co jsem 3,5 roky delal dnem i noci. Podarilo se mi to jednoduse – psal jsem nejaky program na odstranovani souboru a byl jsem si tak jisty ze me to nesmaze nic co by nemelo, ze jsem to pustil a nekontroloval si co ten program dela.

Zel to dopadlo tak, ze se mi smazala cela slozka Projects Visual Studia a jen 3 programy byly mimo tuto slozku, takze ty zustaly nedotcene, ale stovky ostatnich programu byl v setine sekundy v cudu. Ihned jak sjem to zjistil jsem zacal s obnovou pomoci GetDataBack(ktery jsem specialne pro tuto prilezitost kupoval), ale nedopadl jsem dobre.

Vetsi polovina souboru byla poskozenych s nesmyslnym obsahem. Tak jsem rychle psal program, ktery mi mel ziskat spravne soubory z jinych projektu a ten zbytek budu muset holt naprogramovat znovu nebo zahodit jsem si rikal.
V poslednich par dnech se znovu zabyvam temito starickymi svymi programy.

Nekdy to je zajimave pozorovat, jak jsem vyspel a umim nahradit svuj vlastni kod lepsim. Objevil jsem v te zaloze slozku Hotovo, takze tu jsem hned presunul do slozky Projects Visual Studia 2013, protoze tyto programy uz jsou hotove a tak budu mit nejmene prace s jejich konvertem na WPF a anglictinu.

Samozrejme jen tehdy, pokud se mi vsechno podarilo obnovit spravne. Ostatni programy jsem presunul do slozky Projects Visual Studia 2005. Naposledy jsem konvertoval program Horoscopes, ktery je, jak uz nazev napovida, zameren na horoskopy. Finalni WPF verze vypada nejak takto:



Pote jsem prevedl program na vyhledavani projektu, ktery jsem pojmenoval “AllProjectSearch”, vice se o nem muzete docist na http://sunamoblog.blogspot.com/2013/12/allprojectsearch-1000-hotov.html .

Pak jsem si delal poradek ve slozce Project VS2005 protoze jsem tam mel spoustu duplicitnich projektu. Byla to pekna otrava protoze jsem ve Total Commanderu musel si tyto duplicitni projekty najit, pak je srovnat podle obsahu, pokud byl obsah jiny(coz vetsinou byl) tak zjistit ktera verze je lepsi, neposkozenejsi a propracovanejsi a takhle vytvaret z dvou az nekolika verzi tu nejlepsi.

Do toho jsem musel si napsat program na odstraneni diakritiky z obsahu a/nebo nazvu souboru, protoze spousta projektu se lisi jen v tomhle. Jeste jsem uplne neskoncil se slozkou Projects VS2005 a doufam ze ostatni slozky Projects VS budou na tom lip. Naposledy jsem si napsal program na odstraneni duplicitnich souboru. Vidite ho na tomto obrazku:



Jak vidite, na obrazku jsem odstranil celkem 1467 souboru. Toto cislo ale neni kompletni(ve skutecnosti bude asi 3x vyssi), protoze mi 2x program skocil do vyjimky, nebot jsem zapomnel, ze v sablone mohu mit vice stejnych souboru a kdyz tomu tak bylo tak program havaroval s tim ze neni soubor ktery by se dalo nacist, nebot ho uz predchozi iterace odstranila.

To proto, ze spoustu souboru jsem mel duplicitnich a ted kdyz ten projekt otevru a budu vedet ze tam neni ten soubor, tak budu vedet ze v nem nic specialniho nebylo a ze tam bylo pouze to co bylo v mych sdilenych souborech. Ale hlavne uz nebudu muset kontrolovat obe 2 strany porovnavani v TC kdyz jeden nebo oba soubory vymazu.

Mam tolik duplikovanych souboru, protoze mi za verze VS 2005 ani novejsi neslo udelat sdilene sestaveni, ktere bych mohl do kazdeho projektu pouze prilinkovat tak jako to delam ted. Kod programu na toto odstraneni byl jednoduchy a vypadal takto:

private static void DeleteTheSameFiles(string folderWithTemplates, string extensionsDelimitedSemicolon, bool rekA1, params string[] folderWhereSearch) {
	int pocetSmazanychSouboru = 0;
	//-V klici je cesta k slozce Visual Studia, v hodnote pak vsechny soubory v ni
	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);
				}
			}
		}
	}
}
/// 
/// A1 tu je proto abych nesmazal originalni soubor.
/// 
///  
///  
///  
///  
///  
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("Mazu soubor cislo " + 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> 


Leave a Reply

Your email address will not be published.