Кодинг под Линух


Всем привет. Почему под Винду больше юзверей, чем под Линух. Мне кажется, что по двум причинам. Первая - винды были раньше проще и с них начинали учить, а переходить на новую Ось влом. Вторая причина - это привязка к определенному софту. Однако, слава богу, последняя проблема становится все меньше и меньше. Сейчас, например, мне нужна только одна прога из винды - The Bat. Конечно Kmail хорош, но он не тот. The Lbat - глючный и использует все тот же Kmail. Sendmail - дырявый. Единственное, что мне более менее нравится, так это elm. Это действительно хороший редактор, но мне приходится читать и отвечать на более чем 15 писем в день, так что текстовый почтовик здесь не очень подходит. Вот пример конкретной привязке к ОС. Однако я эту проблему решил. Можно написать свой почтовик. Можно написать и другие проги под себя. К томуже почти ко всем виндовым прогам есть аналоги. PhotoShop-Gimp, Office-Star Office, ICQ-lisq, qisq, xisq misq и др., mIRC-x-chat и так далее. Однако если нужной софтины нет - это не значит, что надо использовать винду. Можно написать прогу самому. В этой статье я хочу показать, как не трудно написать свою прогу. Прежде всего нам нужны следующие языки: Perl, C++, Kylix(для графических прог). Желательны знания хоть последних двух. Начнем с Перла.
Перл хорош для не очень больших программ. На нем хорошо написать веб проги, для которых он родной. К тому же для этого есть куча библиотек. Например port-сканер в 12 строк.
#!/usr/bin/perl -w
use netmod;
$target='http://hacker.ru';
$port=1
netmconnect($target);
while($port<65555) {
$res=netmportcon($port);
if(res='OK') {
print "порт $port открыт";
netmportun($port);
$port=$port++
}
}
Для этого примера нужен модуль netmod, Но врядли кто-нибудь пишет мощные сетевые проги без него, хотя мне встречались такие люди.
На C++ я боюсь писать маленький сканер портов, однако, именно на нем я бы стал писать большие порт сканеры с хорошей выборкой, параллельным соединением и т. д. На kylix сканер портов писать легко. Пара кнопок и окошек на форме и код:
Procedure Tform1.Button1 Click(Sender: TObject);
Var
i:Integer;
ipadr:string;
begin
ipadr:=Edit3.Text;
for i:=str(Edit1.Text) to Str(Edit2.Text) do
begin
TcpClient1.RemotePort:=Str(i);
TcpClient1.Open;
If TcpClient1.Connected Then
Begin
MeMo1.Lines.Add('порт ' +  Str(i)+ ' открыт');
TcpClient1.Close;
MeMo1.Lines.Add('Система успешно продолжает работу');
End;
End;
End;
Восемнадцать строк и порт сканер готов. Однако давайте посмотрим вначале нужные сведения о выше указанных языках. Вначале поговорим о Перле.
Перл язык мультиплатформенный. Интерпритаторы для него есть почти подо все ОСи. Прежде всего о структуре кода. Первой строчкой идет путь к интерпритатору. Обычно это #!/usr/bin/perl. В Win версии это необязательно, но является правилом хорошего тона. Комментарий начинается символом #. Переменые объявлять не надо. Скалярные переменные должны начинаться на $. Так же есть спец. Переменная $_. Пока ее значение знать не обязательно. Но для познания стоит. Она служит основной переменной. Многие функции, вызванные без параметров, будут использовать ее. Математические операторы стандартные. Однако блоки выделяются {}. Оператор вывода print;. Кстати, все операторы оканчиваются ;. Различия двойных и одинарных кавычек: в одинарных значения переменных не интерпритируются. Пример:
Print '$_';
Напечатает $_
А вот этот пример выведет значение $_
Print "$_";
Для чтения данных применяется <STDIN>. Пример:
Print "Введите что-нибудь\n";
$i=<STDIN>;
print "Вы ввели $i";
Кстати, \n означает перевод строки. Операторы условия стандартные(паскаль, си). Только надо строить блоки.
Си вам надо знать, а компилятор Си++ понимает Си. Единственное, компиляция: Gcc - o <прога>, <исходник>
Рекомендую использовать этот компилятор. Для любителей визуальности есть MUster C++. Понимает, кстати, исходжники Visual C++.
Теперь о Kylix. Для незнающих это 99% копия дельфоф под линух. Учить я ему не буду. Для совсем тупых: Там есть форма(исходник окна если так можно выразиться) и панель инструментов, с которой можно таскать элементы интерфейса на форму. Так же есть окно кода, куда вводится код на object Pascal. Теперь о самих прогах. Прежде всего нам нужен текстовый редактор для rtf и doc форматов. Запускаем kylix или MUster C++ и запускаем мастер создания mdi прог. Ставим там нужные фичи и добовляем на панель элементов объект sodoc. Получить его можно из пакета Star Office или просто из инета отдельно. Далее в параметрах ставим TimeUpdate=1 и Target=имя текстового окна. Теперь наша баня умеет читать doc. Компилим.
Графический вьювер файлов типа 3dMax. Для этого надо юзать MUster C++. Запускаем и ищем компонент 3dfilescene. Это сырец компонента. Теперь открываем сырец 3dmaxshow(идет вместе с gimp'ом). И копируем процедуру showscene и заменяем ею процедуру showf в 3dfilescene. Компилим и добовляем в набор. Запускаем мастер создания графического редактора и удаляем окно pictureedit1. Вместо него ставим 3dfilescene и меняем ему имя на исходное. Графический вьювер готов, кстати это не просто вьювер. Там даже можно рисовать линии (проверено) если редактировать файло. Что еще нам нужно от виндовских прог под линух? Редактор баз данных под линух полно, асек, ирок еще больше. На самом деле написать прогу под линух легко. Надо только знать язык. А для графического интерфейса еще и уметь рисовать форму. Здесь я не показал, как писать проги под линух - так же как и под винду, а только-лишь попытался доказать вам, что различий почти нет. Надо читать книги и писать самому. Два самых больных примера я показал в несколько строчек (описания). Единственное я так и не показал способ создания мейлера, но в статье этого не выложешь. Хороший мейлер не создать с помощью стандартных компонентов, но если так охота, то для C++ это компонент mail(надо компилить из папки components/source), а для Kylix - это mail и smail. Дополнительно посоветую компонент sendmail. Однако ничего хорошего не получится, впрочем как и в моих двух примерах. Ну ладно, вроде я доказал, что под линух кодить легко, так что прощаюсь, пока.