В общем надо было по учебе сделать видеоролик какой-нибудь. Поэтому было зашпилено вот это:
четверг, 23 февраля 2012 г.
понедельник, 2 января 2012 г.
Парсинг Ifolder.ru
Скинули мне недавно файлики через ifolder.ru. Вид ссылки примерно такой: "http://ifolder.ru/12345678" То есть номер файла задается через вот эти самые чиселки. Потыкав наугад пару ссылок, меняя это число, обнаружил, что возможны два случая:
1. Файл удален, т.к. его давно никто не скачивал.
2. Файл лежит на сервере.
Just for fun сделал скрипт на Python, который бегал по ifolder и ссылки писал в файл.
среда, 3 августа 2011 г.
Стрелки - формулы для координат.
Итак, дано:

Даны точки (x0 ; y0) и (x1 ; y1). Дан угол между отрезками (для удобства вычислений взят 45 градусов). Дана длина мелких отрезков. Нужно найти координаты (x3 ; y3) и (x4 ; y4).
Находим угловой коэффициент прямой, проходящий через точки (x0 ; y0) и (x1 ; y1):
Делаем выкладки, для угловых коэффициентов прямых (x1 ; y1)(x3 ; y3) и (x1 ; y1)(x4 ; y4) :
Обозначим длину отрезка (x1 ; y1)(x3 ; y3) как L. Зная это L и r, можем найти x:
Теперь легко найти y:
Как видно, получили для (x3 ; y3) (x4 ; y4) по две пары точек. Нам нужно взять из них ближайшие к точке (x0 ; y0). Т.е. оценить расстояния:
Алгоритм

Берем такие (x3 ; y3) и (x4 ; y4), при которых минимально
соответственно.
P.S. Все картинки кликабельны.
понедельник, 16 мая 2011 г.
Удаленное управление
Мда... Давно не писал. В-общем решил запостить небольшую программку, которую использую на работе. Итак, ситуация: есть компов 50, у каждого уникальное имя, все введены в один домен и соответственно находятся в одной подсети. Есть рутинные задачи - почистить мусор на жестких дисков, собрать информация о конфигурации и т.п. Есть батники, которые это делают.
Итак, как это работает.
1. Берем один комп из всех, монтируем общий для всех сетевой диск. В файлике comps.txt вбиваем имена компов, на которых нам нужно выполнить батник.
2. Редактируем батник BAT.BAT, который будет запускаться на каждом компе. Можем в нем вызвать другой.
3. Запускаем на этом компе батник START.BAT
Как это устроенно:
START.BAT
@echo off
psexec @comps.txt -u login -p password -C RUN.EXE
pause
Параметры
@comps.txt - отсюда psexec берет имена компов
-u login - логин пользователя, под которым логинимся.
-p password - его пароль
-с run.exe - копируем run.exe на удаленную машину.
RUN.EXE
Две строчки кода на AutoIt.
RunWait("cmd /c net use X: \\dc01\xchange")
;Монтируем сетевой диск
Run("X:\RBAT\bat.bat")
;Запускаем с сетевого диска батник
Пример BAT.BAT:
rem hostname >> X:\RBAT\IP.txt
rem dir c: /b >> X:\RBAT\IP.txt
rem shutdown /s
X:\test.bat
Думаю все понятно.
понедельник, 21 февраля 2011 г.
Конвертер vNote в Txt.
Решил вечерком скинуть заметки с телефона (LG KP-500) на компьютер, зело были нужны. Скинул по Bluetooth, глянул блокнотом, а там все кириллические символы хранятся в UTF-8, да еще и '=' понатыкано как разделителей. Ну UTF-8 зверь не экзотический, поэтому сходив на один полезный немецкий ресурс и выдернув нужные коды кириллицы, написал по-быстрому на AutoIt (работа со строками, передаваемые параметрами мне тут нравится как нигде) простой код, отладил и радовался жизни.
Пользоваться просто:
Для лентяев: перетаскиваем файлик .vnt на иконку программки, жамкаем ok, забираем результат из той же папки, что и .vnt.
Для любителей: в консоле передаем в качестве первого параметра имя .vnt файла, забираем из той же папки, где лежал .vnt.
четверг, 27 января 2011 г.
Класс для печати таблиц (С++)
Сначала создаем объект класса:
TablePRINT *tp = new TablePRINT(3,0,3,2);
воскресенье, 28 ноября 2010 г.
Подобие многопоточности в AutoIt
В начале был код. Хитрить не буду - код отрубания около 50 машин по сети, с использование программы из пакета pstools (вещь очень удобная и полезная). Вот для этой программы и была написана на AutoIt графическая оболочка, дабы облегчить её использование. В самой оболочке в цикле вызывалась программа psshutdown.exe с именем отключаемой машины в качестве параметра. Все бы хорошо, но следующая машина не выключалась, пока не проработает программа для предыдущей. И вот эти 50 машин выключались добрых полчаса, а то и больше. Вывод был очевиден - нужна было многопоточность. Но в AutoIt`е её нету. Вывод - пишем велосипед, её имитирующий.
Суть:
Весь пакет состоит из двух exe: первый выполняет работу, в зависимости от переданных ему параметров. Второй взвывает первый с нужными параметрами.
Простой пример: вычислить сумму от 1 до (1000000 + I), где I меняется от 1 до 10.
Runer.au3
;Прога, в которой создается "поток"
For $I = 1 To 10
ShellExecute("get.exe", $I)
Next
MsgBox(0, "Finish", "All call completed.")
Get.au3
;Тело "потока"
#NoTrayIcon
$RESULT = 1
For $I = 2 To $CmdLine[1]
$RESULT = $I + $RESULT
Next
MsgBox(0, $CmdLine[1], $RESULT)
Строем .exe для Get.au3 и запускаем Runer.au3





