среда, 13 мая 2009 г.

Создание символической ссылки на папку или файл

Собственно, вещь полезная :) Кто не знает - в Far Manager'е это можно сделать нажав Alt+F6. А на C#-пе вот так:




using System;
using System.Runtime.InteropServices;
using System.IO;

namespace mklink
{
   class Program
   {
      [DllImport("kernel32.dll")]
      static extern bool CreateSymbolicLink(string lpSymlinkFileName, string lpTargetFileName, int dwFlags);

      static int SYMLINK_FLAG_DIRECTORY = 1;

      static void Main(string[] args)
      {
         //
         // Symbolic file link bar.txt <<===>> foo.txt
         //
         string symF = "bar.txt";
         string targetF = "foo.txt";

         Console.WriteLine(">echo \"Hello World\" > {0}", targetF);
         StreamWriter sw = File.CreateText(targetF);
         sw.WriteLine("Hello World");
         sw.Close();
         Console.WriteLine();

         Console.WriteLine(">mklink {0} {1}", symF, targetF);
         if(CreateSymbolicLink(symF, targetF, 0))
            Console.WriteLine("symbolic link created for {0} <<===>> {1}", symF, targetF);
         Console.WriteLine();

         Console.WriteLine(">type {0}", targetF);
         Console.WriteLine(File.ReadAllText(targetF));
         Console.WriteLine();

         //
         // Symbolic directory link bar <<===>> foo
         //
         string symD = "bar";
         string targetD = "foo";

         Console.WriteLine(">mkdir {0}", targetD);
         Directory.CreateDirectory(targetD);
         Console.WriteLine();

         Console.WriteLine(">echo \"Hello World\" > {0}\\demo.txt", targetD);
         StreamWriter sw2 = File.CreateText(targetD + \\demo.txt);
         sw2.WriteLine("Hello World");
         sw2.Close();
         Console.WriteLine();

         Console.WriteLine(">mklink /d {0} {1}", symD, targetD);
         if (CreateSymbolicLink(symD, targetD, SYMLINK_FLAG_DIRECTORY))
            Console.WriteLine("symbolic link created for {0} <<===>> {1}", symD, targetD);
         Console.WriteLine();

         Console.WriteLine(">dir {0}", targetD);
         foreach (string f in Directory.GetFiles(targetD))
            Console.WriteLine(f);
      }
   }
}


(код взят здесь)

Результатом работы программы будет файл bar.txt ссылающийся на файл foo.txt и папка bar ссылающаяся на папку foo.

:)

Читать, плакать и смеяться :)

http://community.livejournal.com/fantasy_proda/73999.html
http://community.livejournal.com/fantasy_proda/74432.html

понедельник, 11 мая 2009 г.

Информация к размышлению

Несмотря на то, что я пишу преимущественно о C#, .Net Framwork и все что с ними связано - иногда попадаются вещи мимо которых просто нельзя пройти. Вот одна из таких вещей - перевод поста работника Google:
...
Это хорошая сторона масштаба: способность анализировать огромные объёмы данных — очень полезный инструмент в научных исследованиях. Но есть и другая сторона: вещи которые легко сделать с обычным набором данных становятся невыполнимыми в большом масштабе.

Граница между вычислимым — и вычислимым, но за неприемлемое время, обычно проводится по вычислительной сложности алгоритмов. В традиционной теории алгоритмов вычислимыми считаются алгоритмы с полиномиальной сложностью и ниже, невычислимыми — с экспоненциальной сложностью и выше. Но масштаб это меняет. На больших объёмах данных алгоритм с полиномиальной сложностью тоже оказывается непригоден. Даже если вы делаете что нибудь тривиальное — вроде сортировки.
...

воскресенье, 10 мая 2009 г.

Data Mining

Оказывается на codepelex'е есть проект посвященный алгоритмам Data Mining'а. Выглядит интересным...

четверг, 7 мая 2009 г.

Windows 7 Libraries

В новой версии операционной системы от Microsoft появилась новая фича - называется "Библиотеки". По сути - это набор ссылок на папки с пользовательскими данными, которые собраны в одном месте. Попутно - папки добавленные в библиотеки автоматически индексируются для более быстрого поиска.

В связи с этими нововведениями, разработчикам придется учитывать то, что файл может быть сохранен в библиотеку и корректно обрабатывать данную ситуацию. Подробнее об этом можно почитать и посмотреть по следующим ссылкам:

На русском, статьи:
Библиотека Windows 7 Libraries .NET Sample Library (ч.1)
Библиотека Windows 7 Libraries .NET Sample Library (ч.2)
Библиотека Windows 7 Libraries .NET Sample Library (ч.3)
Библиотека Windows 7 Libraries .NET Sample Library (ч.4)
Библиотека Windows 7 Libraries .NET Sample Library (ч.5)

На английском, видео:

Windows 7: Find and Organize Part 1 - The User Experience
Windows 7: Find and Organize Part 2 - Building Federated Search applications
Libraries Feature in Windows Explorer

Ну и как бонус - просто много видео про Windows 7 .