LINUX.ORG.RU

Сообщения nartamonov

 

Посоветуйте учебник и задачник по программному окружению Unix/Linux

Изучать предмет можно только применяя совместно и теорию и практику. Поэтому хотелось бы иметь учебник + задачник (можно разными книгами) по командам, утилитам, шеллу Unix. Под задачником я разумею набор заданий вроде подсчета количества строк в файле, поиск по заданному шаблону в текущем каталоге, и т.д. Как пример - книжка Кернигана и Пайка "Программное окружение UNIX" (Kernighan, Pike "UNIX Programming Environment"), в ней и теория, и учебные задания после каждого раздела по изученным командам.

Язык книги - не важен. Формат - не важен. Книга/интернет-ресурс - не важно.

Заранее спасибо!

nartamonov
()

Соглашения по оформлению кода Perl.

В данный момент занимаюсь изучением Perl, всвязи с чем возник вопрос из области культорологии программирования.

Есть ли какие-нибудь известные соглашения по формлению кода Perl? Я имею ввиду правила именования переменных, правила создания отступов и т.д.

К примеру, для PHP есть стандарт PHP Coding Standard:

http://uic.rsu.ru/doc/web/php_coding_standard.html

А для C++ - известная венгерская нотация.

Буду рад любым ссылкам.

nartamonov
()

Perl: проблема повторного использования файлового дескриптора.

Заметил очень странное поведение нижеприведенной простейшей программы на Perl. По всем законам, программа должна вывести на стандартный вывод строку 'Hello!Hello2!Hello3!', затем после 5 секунд завершить выполнение. Однако все происходит с точности до наоборот: сначала программа ждет 5 секунд, потом выводит строку и завершает выполнение.

Замечено, что это связано с повторным использованием файлового дескриптора, хотя последний никак не связан с дескриптором STDOUT. Сами файлы в open() могут быть любыми, режим открытия тоже не влияет на результат. Если убрать строки с повторным использованием дескриптора FILE_D, то все начинает работать как надо.

Кто-нибудь может прокомментировать столь необычное поведение? Спасибо.

Собственно, исходник программы:

#!/usr/bin/perl -w

use strict; use locale;

open (FILE_D, '/etc/profile') or die("fail\n"); close (FILE_D);

open (FILE_D, '/etc/passwd') or die("fail\n");

tstprint();

close (FILE_D);

sub tstprint { print "Hello!"; print "Hello2!"; print "Hello3!"; sleep(5); }

nartamonov
()

Проблема ввода с терминала в Perl-скриптах

Даю команду войти в перловый режим отладки:

kolyan@kolyan:pl$ perl -d -e 0

На приглашение отладчика жму на клавиатуре клавишу Backspace. В ответ получаю не удаление последнего введенного символа, а вывод последовательности ^H.

Такая же проблема происходит, когда в скрипте запрашиваешь строку из стандартного ввода:

$str = <STDIN>;

Если при этом строка вводится с терминала, то редактировать вводимую строку практически невозможно. Вместо Backspace упомянутая ^H, вместо некоторых других управляющих функций похожие последовательности: Home = ^[OH, End = ^[OF.

Как вводить строку в полностью интерактивном режиме? С работающими функциями редактирования вроде Backspace, Home, Delete и т.д.

Подскажите, пожалуйста.

nartamonov
()

Конвертирование файлов *.db в текст

Есть файл /etc/login.conf и соответствующая ему бинарная база данных /etc/login.conf.db, сформированная, видимо cap_mkdb. При этом:

-bash-2.05b$ file /etc/login.conf.db /etc/login.conf.db: Berkeley DB 1.85 (Hash, version 2, native byte-order)

Вопрос: возможно ли минимальными усилиями (без написания собственной утилиты) конвертировать базу данных /etc/login.conf.db обратно в текстовый вид?

Спасибо.

nartamonov
()

Установка GRUB для связки Windows + FreeBSD

Имеется диск IDE, подключенный как primary master. Разбит на разделы следующим образом: 

+------------+----------+----------------------+ 
| Primary    | Extended | Primary              | 
| 10Gb, NTFS | 84 Gb    | 54 Gb, not formatted | 
+------------+----------+----------------------+ 

На 10-гигабайтовом разделе установлена Windows (Server 2003). Хочу в
последний раздел установить FreeBSD 5.4, а загрузкой ОС управлять
загрузчиком GRUB. Однако возникает вопрос, как при таком раскладе
установить GRUB?

Собственно, вопрос вот в чем. Насколько я понимаю, следует выполнить в
командном режиме GRUB что-то вроде: 

root (hd0) setup (не помню точно команды) 

Но эта последовательность не только установит stage1 в MBR, но и
перезапишет несколько последующих секторов для stage1_5. Это не может
попортить раздел, на котором стоит винда? 

Подскажите, пожалуйста.
nartamonov
()

Статические переменные в main()

Господа, подскажите, какой смысл определять локальные переменные внутри функции main() как статические?

Дело в том, что случайно наткнулся на следующий скриншот:

http://www.nedit.org/screenshots/Nedit-C.png

и увидел соответственно там строку:

static char* protectedKeywords[] = ...;

вот и возник соответствующий вопрос.

Спасибо.

nartamonov
()

RSS подписка на новые темы