Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #90, ИЮНЬ 2006 г.

FAQ

Степан Ильин aka Step

Хакер, номер #090, стр. 090-132-4


eMule LSD — этот мод осла славится тем, что ворует очереди.

Emule Mod no upload — позволяет полностью отменить отдачу (upload) файлов.

hebMule — с помощью изощренной кредитной системы позволяет быстро перемещаться по очереди и быстрее стартовать закачки.

Официальные сайты MOD’ов давно закрыты, поэтому клиенты придется искать в закромах у других пользователей пиринговых сетей. Но злоупотреблять ими не советую: многие серверы быстро палят личерские клиенты и банят пользователя, в том числе по IP-адресу.

Q: Каким образом можно уменьшить размер приложения, написанного на C++? Компилирую пустой проект — 30 Кб получается. Не порядок.

A: По умолчанию программа на C++ активно использует С Run-Time Library — библиотека времени исполнения языка C. Она же CRT или RTL (Run-Time Library). Таким образом, даже в миниатюрной программе, содержащей вызов функции для вывода текста на экран или попытку выделения динамической памяти, будет содержаться недетский код инициализации CRT — свыше 30 килобайт. Для того чтобы отключить CRT, нужно переназначить точку входа. Делается это следующим образом:

#pragma comment(linker, "/ENTRY:aWinMain"),

где aWinMain – это та функция, на которую будет установлена точка входа.

Правда, после отключения CRT обломится работа с числами, с плавающей точкой, динамической памятью, а также рядом стандартных функций. Но опытные программисты предлагают различные ухищрения, чтобы все это дело обойти. Подробнее ты сможешь прочитать в специализированной статье «Как сделать программу немного меньшего размера» (www.rsdn.ru/article/cpp/crt.xml).

Еще один верный способ сократить размер бинарника — уменьшить величину выравнивания. В Visual Studio 6.0 она по умолчанию равна 4 Кб, хотя в более ранних версиях ее значение было 512 байт. Такой ход со стороны Microsoft легко объяснить: это незначительно увеличивает размер бинарника, но зато увеличивает время загрузки кода в память. При помощи специальной опции можно вернуть прежнюю величину выравнивания: /opt:nowin98:

#pragma comment(linker, "/opt:nowin98")

Размер EXE-файла в результате составит менее 3-х килобайт!

Q: Мой интернет-магазин использует текстовую БД для хранения информации о товарах. База довольно большая, и мне периодически приходится делать ее бэкап. Долгое время просто копировал ее в отдельное место, но сейчас уперся в квоту по дисковому пространству. Места не хватает — базу необходимо паковать. Подскажи, как это делать автоматически?

A: Первый способ возможен, если у тебя есть SSH-доступ к серверу. В этом случае достаточно написать простой скрипт, который будет упаковывать файл и копировать архив в нужный каталог. Чтобы запускать его автоматически, достаточно составить правило для планировщика cron.

Второй способ позволяет обойтись без шелла и сделать все Perl-скрипты. Код предельно прост:

#!/usr/bin/perl

use Archive::Tar;

my $tar = Archive::Tar->new();

$tar->add_files("file1.ext", "file2.ext ", "file3.ext ");

Назад на стр. 090-132-3  Содержание  Вперед на стр. 090-132-5
Hosted by uCoz