Как стать автором
Обновить

Комментарии 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… просто юмор, не воспринимайте серьезно. Разумеется, есть куда более практичные регулярки для этой цели.
НЛО прилетело и опубликовало эту надпись здесь
Не дай боже с таким кодом в работе столкнуться.
Вообще-то эту задачу можно решить проще и быстрее, если большую часть проверок сделать не через регулярные выражения, а по-старинке. Чрезмерное же у влечение регулярными выражениями до добра не доводит. Найти ошибку в таком весьма не тривиально. А ведь могла бы быть простая и понятная процедура с комментариями на страницу текста. И любой школьник мог бы в ней разобраться и поправить, если нужно.
НЛО прилетело и опубликовало эту надпись здесь
Сей цикл статей вообще не про 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».

Спасибо :)
Только что хотел спросить тоже самое, теперь, хотя бы, чувствую себя не самым невнимательным.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории