VKSpider: получаем пару id-имя пользователей ВКонтакте

a_2fb391c3

Специально для поисковых систем сайт ВКонтакте создал каталог пользователей, доступный по адресу http://vkontakte.ru/catalog.php (или http://vk.com/catalog.php). В нем в трех уровнях вложенности находятся пары id-имя пользователя, а также ссылки на профили.

Пользуясь случаем, я решил написать веб-паука на C#, собирающего список пользователей ВКонтакте. Такая база имен и айдтшников – мертвый груз, но может оказаться полезной как наполнитель тестовой базы данных, например, при создании систем индексации БД. Для меня же это было интересной задачей, не более.

Прочитать остальную часть записи »

jste 0.11 – эмулятор терминала на JavaScript

jste-logo

jste – написанный мной на JavaScript эмулятор терминала.

jste позволяет превратить textarea в Unix-подобную консоль, которая может выполнять запрограммированные вами команды.

Как использовать
В header‘е страницы необходимо подключить библиотеку jste:

Перед закрывающим тегом нужно вставить код вида:

Здесь mytextarea – id элемента textarea;
user и host образуют «user@host:~$»
arr – массив, содержащий команды и описание действий, ассоциированных с этими командами. Вот пример массива arr:

var arr = [
[‘time’,
function(params)
{
var now = new Date();
Console.WriteLine(now.getTime());
}],
[‘useragent’,
function(params)
{
Console.WriteLine(navigator.userAgent);
}]
];

Каждая задаваемая функция должна принимать 1 параметр – это та часть введенной пользователем строки, которая идет после имени вызываемой команды и пробела.

Методы для работы с консолью из этих функций:

Console.WriteLine(str) – выводит текстовую строку в консоли. Для простого переноса каретки на следующую строку стоит передавать в качестве параметра пустую строку.
Console.Clear() – удаляет весь текст из консоли.

Возможности
Нет какого-то определенного набора команд. Все необходимые команды вы можете задать сами.

Неограниченная память команд. По истории команд можно перемещаться с помощью клавиш «вверх» и «вниз».

Небольшая «защита от дураков».

Известные проблемы
«Защита от дураков» несовершенна. То есть пользователь может, например, удалить часть содержимого textarea. Эта же самая защита в IE работает не совсем так, как в других браузерах. Но работает.

При превышении содержимым textarea размеров textarea не происходит автоматической прокрутки к концу содержимого.

Демо
Посмотреть рабочее демо можно здесь. Список всех доступных команд можно получить по команде help.

Скачать
Скачать jste-0.11-min.js.

Скачать набор команд из примера.

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

Развития jste в планах нет. Разве что если будет необходимость, настроение или вдохновение.

Всё это писалось в новогодние праздники под воздействием большого количества мандаринов.

C#: список установленных программ

csharp (1)

Иногда существует необходимость получения в вашу программу списка установленных на данном компьютере программ. Цели могут быть разными – от попытки избежать конфликта ПО до шпионажа.

Так как в Windows у пользователя есть возможность выбора установки программы в любое место, то единственный способ получить список всех установленных программ – копание системного реестра.

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

SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall. Он включает в себя множество подключей, каждый из которых содержит в себе информацию о какой-либо программе. Какие значения оттуда могут быть нам интересны? Во-первых, DisplayName – имя программы. Во-вторых, InstallLocation – место хранения файлов программы. В-третьих, все остальное: InstallDate (дата установки), InstallSource (путь к установочному файлу), DisplayVersion и другие.

Получение этих данных я покажу на примере C#-кода.

Для копания в системном реестре нам понадобятся несколько объектов пространства имен Microsoft.Win32.

Прошу обратить внимание, что некоторые перечисленные выше значения для определенных программ могут отсутствовать, поэтому стоит активно использовать обработчик исключений – инструкцию try-catch.

RegistryKey key = Registry.LocalMachine.OpenSubKey(«SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall»);
string[] skeys = key.GetSubKeyNames(); // Все подключи из key
int length = skeys.Length;
// Проход по всем подключам
for (int i = 0; i < length; i++) { // Получаем очередной подключ RegistryKey appKey = key.OpenSubKey(skeys[i]); string name; try // Пробуем получить значение DisplayName { name = appKey.GetValue("DisplayName").ToString(); } catch (Exception) { // Если не указано имя, то пропускаем ключ continue; } Console.WriteLine(name); appKey.Close(); } key.Close();

Данный код выведет список имен установленных программ. Аналогично можно получить другие значение.

Последние публикации