Pull to refresh

Comments 35

DISCLAIMER:
— Сразу же извиняюсь перед людьми, которые у меня спрашивали о том, когда же я продолжу перевод, а я называл неверные сроки. Спланировать появление лишнего свободного времени, оказалось несколько сложнее, чем планировать время рабочее. =( Спасибо за ваше терпение и ожидание.

— После небольшого перерыва я вновь продолжаю стабильно переводить по кускам самоучитель с funtoo.org;

— Остальные материалы с funtoo.org также запланированы к переводу;

— Есть планы, по завершение перевода второй части, провести ревизию и согласование всего перевода обоих частей в целом, и выложить части у себя на сайте целиком, улучшив при этом форматирование.
По поводу регулярных выражений.
На мой, программистский взгляд, данное введение не претендует ни на полноту, ни на особую ясность в изложении темы регулярных выражений. Впрочем, видимо для «повседневных» нужд и общего ознакомления этого вполне достаточно. Но если вы все же планируете более полноценное знакомство со всей мощью регулярных выражений, или у вас более нетривиальные задачи, и планируете написать что-нибудь вроде этого:
(?:(?:\r\n)?[ \t])*(?:(?:(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t]
)+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:
\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(
?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ 
\t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\0
31]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\
](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+
(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:
(?:\r\n)?[ \t])*))*|(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z
|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)
?[ \t])*)*\<(?:(?:\r\n)?[ \t])*(?:@(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\
r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[
 \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)
?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t]
)*))*(?:,@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[
 \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*
)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t]
)+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*)
*:(?:(?:\r\n)?[ \t])*)?(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+
|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r
\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:
\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t
]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031
]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](
?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?
:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?
:\r\n)?[ \t])*))*\>(?:(?:\r\n)?[ \t])*)|(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?
:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?
[ \t]))*"(?:(?:\r\n)?[ \t])*)*:(?:(?:\r\n)?[ \t])*(?:(?:(?:[^()<>@,;:\\".\[\] 
\000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|
\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>
@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"
(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t]
)*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\
".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?
:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[
\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*|(?:[^()<>@,;:\\".\[\] \000-
\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(
?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)*\<(?:(?:\r\n)?[ \t])*(?:@(?:[^()<>@,;
:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([
^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\"
.\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\
]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*(?:,@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\
[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\
r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] 
\000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]
|\\.)*\](?:(?:\r\n)?[ \t])*))*)*:(?:(?:\r\n)?[ \t])*)?(?:[^()<>@,;:\\".\[\] \0
00-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\
.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,
;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?
:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*
(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".
\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[
^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]
]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*\>(?:(?:\r\n)?[ \t])*)(?:,\s*(
?:(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\
".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(
?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[
\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t
])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t
])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?
:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|
\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*|(?:
[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\
]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)*\<(?:(?:\r\n)
?[ \t])*(?:@(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["
()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)
?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>
@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*(?:,@(?:(?:\r\n)?[
 \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,
;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t]
)*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\
".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*)*:(?:(?:\r\n)?[ \t])*)?
(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".
\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:
\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\[
"()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])
*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])
+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\
.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z
|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*\>(?:(
?:\r\n)?[ \t])*))*)?;\s*)

То прочитайте любое другое руководство именно по регулярным выражениям. В сети, и на хабре в том числе, их полно,
just google it.
этой регулярке скорее место в разделе Ненормальное программирование %) какой смысл писать такие небоскребы? да и пост вроде не про это ) про регулярки фридл отлично написал все
Хотел привести пример, что регулярки это не только ab*c =) И первое, что пришло в голову, проверка email адреса на валидность строго согласно RFC 822… просто юмор, не воспринимайте серьезно. Разумеется, есть куда более практичные регулярки для этой цели.
UFO just landed and posted this here
Не дай боже с таким кодом в работе столкнуться.
Вообще-то эту задачу можно решить проще и быстрее, если большую часть проверок сделать не через регулярные выражения, а по-старинке. Чрезмерное же у влечение регулярными выражениями до добра не доводит. Найти ошибку в таком весьма не тривиально. А ведь могла бы быть простая и понятная процедура с комментариями на страницу текста. И любой школьник мог бы в ней разобраться и поправить, если нужно.
UFO just landed and posted this here
Сей цикл статей вообще не про Gentoo. =) Просто от разработчика генту.

Я конечно могу рассказать о том, чем Gentoo отличается от freeBSD, ибо пользуюсь обоими, если кому-то это вообще интересно?
>чем Gentoo отличается от freeBSD
я бы послушал, несмотря на постоянно чтение материалов на данную тему
а зачем вы постоянно читаете на эту тему? =) Читай не читай, надо пробовать и исходить из решаемой задачи. Что вас конкретно интересует?, отвечу.
Кстати, а вы не владеете информацией о скорости выполнения Java-кода(64-bit) на обеих платформах?
Увы, джавой не занимаюсь совсем. Могу лишь предположить, что на gentoo будет быстрее, просто лишь на основании того, что из под gentoo многие вещи быстрее. Тут сказывается и медленная UFS и некоторая отсталость bsd ядра по сравнению с linux. Просто там, где нужно выжать максимум производительности на современном железе, я бы не стал брать bsd.
читаю по тому что интересно, генту изучаю уже года полтора, но взялся и за фряху, т.к. она имеет достаточно большое распространение, пока я не могу для себя ответить на вопрос — под какие задачи та или иная система подходит лучше, по этому и послушал бы тех, кто реально пользуется обеими системами и знает в этом толк
Лично мое мнение такое. У фряхи просто есть некоторое сообщество почитателей, и они просто предпочитают фряху не исходя из каких-то объективных причин, а потому что она им более знакома, более любима, более привычна. В конце-концов для многих задач она прекрасно подходит. И генту для этих задач так же прекрасно подходит. И тут просто дело вкуса, дело предпочтений. Но в некоторых случаях генту оказывается гораздо более предпочтительней. Тут и больше пакетов, и более развитая система их установки, и linux ядро в целом более продвинутое, чем bsd, лучше поддержка оборудования… что уж там говорить, это результат того, что сообщество linux пользователей, превосходит по размером сообщество bsd уже давно.
Я тоже выскажу свое имхо. БСД — образец простоты, понятности, четкости конфигов. Но сейчас не про это. Я лично думаю, что какая задача-такая OS. Просто под линукс некоторые задачи выполнить проще и быстрее и только именно для этих задач используется линукс.
Я бы согласился, но одно большое НО. Мало кто довольствуется базовой системой, которую предлагает freeBSD, а уже доустановленный сторонний софт, из портов, использует такие конфиги, какие решил использовать его разработчик. И как правило, конфигурирование стороннего софта, а не базовой системы, отнимает большую часть времени, а тут уж без разницы генту это или бсд.

Но в целом да, бсд как ос, проще и понятнее, наверное лучше подходит для начинающих админов. Я сам с нее начинал.
Да и частенько эта простота выходит боком.

Помнится нужно было мне прикрутить fpm к php 5.3.0, когда он только появился (ни самого php 5.3, ни fpm в портах при этом не было последний вообще брался из svn). Нагуглить можно было ebuild, были некоторые устаревшие инструкции по сборке, и устаревший образец самодельного порта, но фактически для freebsd ничего толкового не было. И пришлось самим делать свой порт. Ох и навозился я тогда, и я до сих пор недоумеваю, зачем создатель порта должен прикладывать отдельно список устанавливаемых портом файлов, который фактически нужен только для зачистки, почему система сама не может отследить какие файлы были в нее установлены? А когда набор файлов сильно зависит от установленных флагов компиляции, и у тебя нету в этом деле большого опыта, выливается в головную боль. И это было самой маленькой проблемой, из тех, что я столкнулся при создании порта.

В генту у тебя просто вообще нету таких проблем. Куча сторонних ебилдов, оверлеи, можешь держать отдельные программы тестинг или даже девелопмент версий, оставляя остальную систему стейбл, и делается это все очень просто. У тебя есть emerge, eselect, equery, etc-update, и работать с набором софта, управлять зависимостями, use-флагами, просто одно удовольствие, есть такая штука как слоты. Никакие фрибсдшные portmaster-ы и portupgrade-ы тут даже близко не валялись. В целом генту взяла лучшие идеи из фрибсд и довела их до, если не совершенства, то нового уровня, с линукс-размахом.

Работая с фрибсд я себя чувствую в неких рамках этой самой простоты, и шаг влево, шаг вправо, может стать не тривиальным. Простая, как простые механизмы, но не редко нужно что-то более сложное, и тут наступает облом.
Ну я думаю фрибсд не для экспериментов, а для стабильности. А из линуксов да… Генту и Арч -меньшее из зол из-за их гибкости=)
Холиварить не хочу. Слишком много копий сломано. Я уважаю Ваше мнение но остаюсь при своем.
У меня и мысли не было Вас разубеждать. Обе системы хороши. Просто поделился своим опытом, который не всегда был приятным.
Вот если из приятного, то сразу первое, что приходит в глову — это периодика. Ежедневные, ежеденедельные и ежемесячные отчеты на мыло о состоянии системы во фре прямо из коробки, сразу после установки системы, это так приятно. ;-)
>админ сидит в Gentoo (проблемы с англ)

я один вижу в этом эм… противоречие?
Самая рулезная книжка для обучения администрированию лежит по адресу www.admin.com

Первое издание, если не ошибаюсь, было ажно в 1995 году, этим летом вышла свежая версия. Обязательно закажу на Амазоне.
Виктор Штонда, издатель:
Уникальная книга «Unix и Linux. Руководство системного администратора», 4-е издание, Эви Немет и др. будет издана зимой 2011 года.
Супер. Пока у меня дома второе издание, книга устаревшая, но там информация вечная фактически :-)
Кстати да. У меня есть обе вышедшие по UNIX и Linux. Они во многом дублируют друг друга, но все же действительно полезные. Только, если я не ошибаюсь, о регулярных выражениях там был самый минимум.
Всю первую часть с удовльствие прочитал, немного упорядочил свои знания :) Будем ждать перевод полного цикла.
Такими мелкими шажками нескоро экзамен получится сдать, мне так кажется.
Спасибо за перевод, хоть этого уже и навалом, но чем больше на русском документации по программированию, тем лучше.
Спасибо Вам за переводы.
У меня такой вопрос, в разделе с примерами немного не понял вот эту строку:

> b[cq]*e удовлетворяет «bbbeee» (но не в случае глоббинга)

Разве «bbbeee» удовлетворяет данному регулярному выражению? Ведь * стоит до перед символом 'e', да и, как я понимаю, * действует только на один предшествующий символ, а не на все, т.е. в данном случае любое количество раз могут появляться символы 'c' и 'q' после единственного символа 'b'.

Это просто ошибка в мануале или тонкости регулярных выражений и я что-то недопонял? :)
b[cq]*e$ бы не удовлетворяло bbbeee, как и ^b[cq]*e, а ^b[cq]*e$ и подавно
но вот b[cq]*e совпадает и с bbbeee и, например, с dfdfdfdfkopjojojhbeejsdfjoisdfjaesfojisefjisoafjesfj

Подумайте над этим ;-)
Точно! Как-то упустил из виду, что в строке «bbbeee» есть искомая подстрока «be».

Спасибо :)
Только что хотел спросить тоже самое, теперь, хотя бы, чувствую себя не самым невнимательным.
Sign up to leave a comment.

Articles