четверг, 27 января 2011 г.

Класс для печати таблиц (С++)

Нашел вот в своих исходниках занимательный класс для печати таблиц в консоле. Имеются четыре способа отображения таблиц, автоматический перенос строки, если строка не помещается по ширине в строке. Как пользоваться:

Сначала создаем объект класса:
TablePRINT *tp = new TablePRINT(3,0,3,2);
Параметры (по порядку):
1 - количество столбцов
2 - вид (от 0 до 4)
3 - количество пробелов между значением и границей слева
4 - количество пробелов между значением и границей справа

Далее печатаем строки:
tp->TableROW("Allan", "Norton", "40");
После каждой строки, если нужно печатаем разделительную линию:
tp->TableLINE();

И в самом конце печатаем подвал:
tp->TableBOTTOM();

Вот парочка примеров:


В архиве лежит сам исходник класса и пример использования.

воскресенье, 28 ноября 2010 г.

Подобие многопоточности в AutoIt

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

суббота, 18 сентября 2010 г.

Использование AutoIt

Написал статью про использование AutoIt. Программка получилась забавной, по-моему. Строго не судить =)
ACalc.rar

пятница, 17 сентября 2010 г.

ASM или Что делать?

Нашел вот книжицу занятную: "Язык ассемблера: уроки программирования" П.И. Рудакова и К.Г. Финогенова. И призадумался: а нужен ли мне этот самый ассемблер? И что-то повода его изучать подробно не нашел. Текущих знаний для отладки программ вроде хватает. Со всем нуждами до сих пор справлялся на скриптовых и высокоуровневых языках. Драйвера писать не планирую, asm-вставки для критических областей тоже как-то не особо нужны. Отложил книжицу... и опять призадумался: а чем же время занять - пописать статьи про трейнеры, ковырянее игр и т.п. или кодить что-нибудь интересное и не однодневное (пока таких вариантов нет). Жду советов каких-нибудь =).

пятница, 27 августа 2010 г.

Hamachi

Нашел интересную программку. В первую очередь она будет интересна геймерам. Вот например захотели вы с друзьями поиграть в Diablo 2 по сети, а IP у вас динамический, и подключится к вам будет не возможно. Так эта программка создает виртуальную локальную сеть. Т.е. компьютеры на самом деле подключены только к интернету, а обращаться к ним можно как к локальным. Во общем программа для меня полезная. Вот ссылка:
Hamachi2

четверг, 12 августа 2010 г.

О паролях и лени

Человек существо ленивое. Очень. Вот и пришла мне мысля преинтересная - практически везде (ну или почти) человек вводит один и тот же пароль. Т.е. понятно, как этим можно воспользоваться злоумышленникам. Если на один из двух вопросов "Кто виноват? Что делать?" ответ уже дан, то на второй он понятен: не используйте один и тот же пароль. Если у вас взломали ICQ или почту, то получить доступ к другому не составить труда. Лень - это величайшее зло!

понедельник, 2 августа 2010 г.

О кодерах и кодинге

Навеял конец лета... Может эта записка покажется кому-то близкой. Начну сначала. Собрался, я значит написать вторую версию бота, что бы там всяких приятностей было побольше. Начал писать. За месяц реализовал процентов 70. Бросил.. Через 2 месяца за вечер написал ещё 10% процентов. Бросил.. Через недели 3 начал тестить, а-ля альфа-тестирование. Не работает. За неделю написал заплаток. Работает кое-как. Бета-тестирование... Ещё за неделю написал заплатки. Ядро работает, но не всё так красиво как задумывалось в начале. От альфа-версии осталось 80% процентов. Запустил. Работает. НО! GUI нету вообще, управлять можно только меняя исходный код и ручками писать настройки в INI файле. Итого, реализовано 85%. Теперь ещё прикручивать GUI, иначе управлять ботом одной клавишой старта (F9) (причем только старта, стопа нет - только вырубать и запускать заново) и ковырянием настроек - это какой-то ДZен..
Теперь, к чему это я все веду.
1. Кодеры существа ленивые и без надсмотра менеджера ничего толком не сделают
2. Кодеры существа странные. Они в первую очередь задумываются о ядре, а уже потом в самом конце прикручивают интерфейс, чаще всего убогий. Т.е. без менеджера опять же напишут всякую охинею.
3. Кодеры существа самодовольные. Если вы попросите их написать программу, под тип калькулятора, то как ей управлять будет известно только Избранным, таким как сами кодеры (обычно 2-3 человека, тоже кодера)
4. Кодеры существа эгоистичные, очень сложно двум кодерам вести проект: где первый обзовёт переменную "countINDEX", второй гордо напишет "AUI" или что-то в этом роде

Итак, вывод: Процесс написания проекта нифига не зависит от одного кодера. То, что он напишет - процентов 50%, максимум 60% от того, что нужно на самом деле. А если и напишет, то это ещё надо и заказчику спихнуть, при этом никаких: "Э.. А вы зачем сразу две кнопки нажали? У меня это и не предусмотрено!" или "Главное вот на этом процессе чуть-чуть подождать и ничего не нажимать - идет процесс анализ данных. Ну и что, что он идет 20 минут? Зато это самый красивый метод!" и т.п.