Архив

Записи, помеченные «программирование»

Просто резервное копирование средствами .bat файла.

Задача:
Есть набор фалов, хранящихся на определенном компьютере, где эти файлы периодически редактируются специально обученным человеком в специальной программе.
И есть шара на файлообменном сервере, куда эти файлы должны копироваться после редактирования. Чтоб все остальные могли смотреть на результаты редактирования. Шара доступна для записи только тому, кто обновляет файлы, отсальные могут только читать. Т.е. каждый раз после того, как файлы менялись/обновлялись, нужно было вручную копировать их на сервер.
Необходимо было автоматизировать процесс заливания файлов после редактирования на доступную всем шару на сервере.
Решение:
Решение очень простое: Был создан .bat-файл, который нужно запускать после окончания редактирования. Данный скрипт подключает шару, как локальный диск “B:”, после чего на этот диск копируется вся необходимая информация и диск отключается. Также предусмотрена проверка на уже подключенный ранее диск. И на обработку исключенией при копировании(т.е. командой xcopy копируются только те файлы и директории которых нет в исключениях). Об успешной или не очень работе скрипта, запускающий его пользователь может судить по цвету фона в окне терминала: в случае каких-либо ошибок или их отсутствия, в окне терминала фон будет меняться на красный или зеленый соответственно.
Читать далее…

Traffpro Administration Tool. Оптимизация интерфейса.

Со времени предыдущей версии программы, текущая альфа претерпела некоторые изменения (как визуальные так и в юзабилити).
Вот небольшой скриншот-отчет о том, как сейчас выглядит пре-релизная development-версия 0.1.6.

Читать далее…

Саморазархивирующиеся архивы для UNIX

Когда ты поставляешь софт под UNIX, редко бывает ситуация, когда на стороне заказчика в группе сопровождения вообще нет людей, знакомых с UNIXом. Так или иначе, стиль этой операционной системы заставляет работать с командной строкой и знать хотя бы базовые команды. Тут порой недостаточно просто “кликнуть на файл с дистрибутивом”. Не буду говорить, как это хорошо или плохо для заказчика — это его выбор, но для нас, поставщиков, это удобно. Удобно, когда “с той стороны” есть люди, которым достаточно сказать типа возьмите tar-архив, разверните в такой то директории, проверьте права и замените такие-то бинарники.

Но порой нужно таки сделать “а-ля” коробочную установку в стиле “взял один файл-архив, запустил и получил результат”. Ситуация усугубляется, когда все это надо делать под разными сортами UNIXа. Конечно, есть вариант написать этого зверя на Java. На ней можно сделать установщик еще и графическим. Нужно только, чтобы эта Java была у заказчика, то есть опять тема простоты уходит. Нужно что-то простое и легковесное.

Небольшой анализ привел меня к makeself. В двух словах — это саморазархивирующиеся shell-скрипты. То есть вы готовите процедуру установки, сводите все к наличию каталога со всеми необходимыми файлами, и, если нужно, скриптом, которые надо запустить после разархивации. Все как у так называемых SFX (self extract) модулей для WinRAR, например. Прелесть в том, что в итоге вы получаете одиночный файл, который является абсолютно стандартным shell-скриптом, работающим в большом количестве типов UNIX, и который также содержит внутри себя архив с вашими файлами. Все, что нужно сделать на стороне клиента, это запустить этот файл.

Допустим, вы подготовили ваш дистрибутив в каталоге /home/sandbox/intallation. Также у вас есть скрипт ./setup, который необходимо запустить после разархивации для локальной настройки, например. Все что вы делаете:

makeself.sh /home/sandbox/installation megasoft-0.0.1.sh “Mega Software 0.0.1″ ./setup

Данная команда создаст файл magesoft-0.0.1.sh, в который упакуется содержимое каталога /home/sandbox/intallation и скрипт ./setup. Теперь все, что надо сделать на стороне клиента, это запустить это файл командой:

. ./megasoft-0.0.1.sh

Скрипт разархивирует собственное содержимое и запустит ваш скрипт setup, который сможет окончательно настроить установку.

makeself позволяет использовать для компрессии стандартные средства UNIX на выбор — compress, gzip, bzip2. Также содержимое архива дополнительно защищается контрольными суммами: MD5 или CRC. Это может быть полезно, если вы не используете компрессию, а целостность данных проверять все же хотите.

Список же поддерживаемых типов UNIX для текущей версии 2.1 весьма внушителен:

* Linux (all distributions)
* Sun Solaris (8 tested)
* HP-UX (tested on 11.0 and 11i on HPPA RISC)
* SCO OpenUnix and OpenServer
* IBM AIX 5.1L
* MacOS X (Darwin)
* SGI IRIX 6.5
* FreeBSD
* UnicOS / Cray

Напомню ссылку на makeself еще раз — http://megastep.org/makeself/



Источник: easy-coding

Рекурсивное удаление директории в Qt4

int removeFolder(QDir &dir)
{

int res = 0;
//Получаем список каталогов
QStringList lstDirs = dir.entryList(QDir::Dirs |

QDir::AllDirs |
QDir::NoDotAndDotDot);
//Получаем список файлов
QStringList lstFiles = dir.entryList(QDir::Files);

//Удаляем файлы
foreach (QString entry, lstFiles)
{
QString entryAbsPath = dir.absolutePath() + “/” + entry;

QFile::remove(entryAbsPath);
}

//Для папок делаем рекурсивный вызов
foreach (QString entry, lstDirs)
{

QString entryAbsPath = dir.absolutePath() + “/” + entry;

removeFolder(QDir(entryAbsPath));
}

//Удаляем обрабатываемую папку
if (!QDir().rmdir(dir.absolutePath()))
{

res = 1;
}
return res;
}

Follow

Get every new post delivered to your Inbox.

Join 28 other followers