Дано: достаточно объемное приложение на Django. Нужно: собрать имена всех контроллеров по файлам urls.py.
Решение:
get_viewname_list.py
В общем надо было по учебе сделать видеоролик какой-нибудь. Поэтому было зашпилено вот это:
Скинули мне недавно файлики через ifolder.ru. Вид ссылки примерно такой: "http://ifolder.ru/12345678" То есть номер файла задается через вот эти самые чиселки. Потыкав наугад пару ссылок, меняя это число, обнаружил, что возможны два случая:
1. Файл удален, т.к. его давно никто не скачивал.
2. Файл лежит на сервере.
Just for fun сделал скрипт на Python, который бегал по ifolder и ссылки писал в файл.
Итак, дано:

Даны точки (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. Все картинки кликабельны.
Мда... Давно не писал. В-общем решил запостить небольшую программку, которую использую на работе. Итак, ситуация: есть компов 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
Думаю все понятно.
Решил вечерком скинуть заметки с телефона (LG KP-500) на компьютер, зело были нужны. Скинул по Bluetooth, глянул блокнотом, а там все кириллические символы хранятся в UTF-8, да еще и '=' понатыкано как разделителей. Ну UTF-8 зверь не экзотический, поэтому сходив на один полезный немецкий ресурс и выдернув нужные коды кириллицы, написал по-быстрому на AutoIt (работа со строками, передаваемые параметрами мне тут нравится как нигде) простой код, отладил и радовался жизни.
Пользоваться просто:
Для лентяев: перетаскиваем файлик .vnt на иконку программки, жамкаем ok, забираем результат из той же папки, что и .vnt.
Для любителей: в консоле передаем в качестве первого параметра имя .vnt файла, забираем из той же папки, где лежал .vnt.
Все кто пишет на AutoIt`е жалуются на медленность кода. Ну я тоже не исключение=) Вот и решил провести маленькое исследование - какая из функций будет работать быстрее - так, которая вызывается из UDF, описанная в текущем файле или сразу код функции? До начала самого исследования думалось что по скорости они будут расположены так:
1. Сам код функции
2. Описанная в текущем файле
3. Вызываемая из UDF
Итак, для теста было создано два файла:
головной:
#include <TEST.au3>
;Немного подождём - что бы скрипт нормально загрузился и размялся перед боем
$SUM = 0
For $J = 1 To 1000
$SUM += TEST()
Next
;Здесь - для конкретного кода, а не вызывания функции
$time3 = TimerInit()
$SUM = 0
For $J = 1 To 1000
$RET = 0
For $I = 1 To 100
$RET *= $I
Next
$SUM += $RET
Next
$time3 = TimerDiff($time3)
;Здесь будем замерять время для функции вызванной из UDF
$time1 = TimerInit()
$SUM = 0
For $J = 1 To 1000
$SUM += TEST()
Next
$time1 = TimerDiff($time1)
;А здесь - для описанной ниже
$time2 = TimerInit()
$SUM = 0
For $J = 1 To 1000
$SUM += TEST2()
Next
$time2 = TimerDiff($time2)
MsgBox(0,"Результаты", "Из UDF: " & $time1 & Chr(13) & "Внутри: " & $time2 & Chr(13) & "Код: " & $time3)
Func TEST2()
$RET = 0
For $I = 1 To 100
$RET *= $I
Next
Return
EndFunc
TEST.au3 :
Итак, после 10 замеров получили вот такой результат:
1. Сам код функции, а не её вызов
2 и 3 Вызов из UDF и вызов их текущего файла
Причём, влияет порядок следования функций. Например если сначала замерять time1, а потом time2, то time1 будет больше. Если наоборот, т.е. сначала time2, потом time1, то time2 будет больше.
Итак, резюмирую:
Итак, менюшка уже описана, а вот и её применение. Простенький навигатор по диску с помощью меню. Может перемещаться по папкам, запускать любые файлы. Пока всё - это все лишь пример применения меню=) Но мне вещь показалась полезной при работе в консоле=)
Те кто хоть раз писал на BAT со мной согласятся - всегда чего-нибудь не хватает. Вот мне, например там не хватает менюшки - для более наглядного общения с пользователем. Ведь рядовому пользователю вряд ли понравится читать хелп и смотреть параметры - ему гораздо привычнее нажать пару кнопок и получить результат - например, выбрать нужный пункт меню. Ну и вот, собственно для этого и была написана менюшка на BAT. Итак, как пользоваться:
call menu.bat "1 string" "2 string" "3 string" "4 string" "5 string" "6 string" "7 string" etc.
После того как пользователь выбрал пункт меню - пакетный файл вернет результат. Обратится к нему можно через переменную errorlevel.
ПРИМЕР
Создадим BAT файл следующего содержания:
@echo off
call menu.bat "ADD" "DEL" "EDIT" "HELP" "EXIT"
echo You Select: %errorlevel%
Результат его работы (копировано с консоли):
Вообщем вот так =) Сделать более красивую менюшку с управлением клавишами стрелок встроенными средствами BAT - нельзя, т.к. нельзя считать нажатие клавиши.
Ну что же, попробуем обосноваться здесь. Вот это мы уберём, облако тегов надо будет добавить, здесь почистим.. Если кратко - идёт процесс обживания блога =)
Давно надоевший вопрос - для чего создан блог? Ну надо же куда-то выкладывать все мысли, идеи о тех проектах, которыми я занимаюсь. Ага, а вот и следующий вопрос - а чем же я занимаюсь? Ну первым делом я пытаюсь программировать (ну если не лень как всегда). В основном на C# и AutoIT. Но не брезгую и другими языками. Надеюсь, что в скорое время выложу, точнее напишу статейку про BAT. Ну и так как основной уклон сейчас у меня на написание второй версии бота для одной MMORPG (только тсссс.... =) ) то и про это что-нибудь тоже попробую написать.