Почта. Основы настройки в Linux

Когда начинающие системные администраторы сталкиваются с необходимостью настройки почтового сервера, они могут испытывать затруднения связанные с пониманием основных принципов работы почтового механизма. Чтобы внести ясность, я подготовил эту статью, основанную на освещении тех моментов, которые были мне в свое время непонятны. Статья подойдет также разработчикам ПО, которым надо быстро поднять почтовый сервер и протестировать свое приложение.

Продолжить чтение

10 лучших инструментов для разработки и администрирования MySQL

Многие компании создают различные многофункциональные приложения для облегчения управления, разработки и администрирования баз данных.

Большинство реляционных баз данных, за исключением MS Access, состоят из двух отдельных компонентов: «back-end», где хранятся данные и «front-end» — пользовательский интерфейс для взаимодействия с данными. Этот тип конструкции достаточно умный, так как он распараллеливает двухуровневую модель программирования, которая отделяет слой данных от пользовательского интерфейса и позволяет сконцентрировать рынок ПО непосредственно на улучшении своих продуктов. Эта модель открывает двери для третьих сторон, которые создают свои приложения для взаимодействия с различными базами данных.

Продолжить чтение

Законно ли чтение корпоративной электронной почты?

По мотивам вопроса, который устроил небольшой холивар. Большая часть хаброжителей сошлась на том, что чтение руководителем организации (да и кем угодно) корпоративной переписки своих сотрудников незаконно и нарушает конституцию, гарантирующую нам тайну переписки. Посмотрим, как же обстоят дела в законодательстве на самом деле.

Продолжить чтение

Регулярные выражения, Часть II

Первая часть http://gnu.su/news.php?extend.1273
Использование позиционных проверок

Многим материал этой статьи покажется ненужным, так как большинство задач с использованием регулярных выражений решаются средствами, которые я описал в предыдущей.

Сначала немного отвлечемся. Как вы опишите что-то неприметное, либо что вообще трудно описать? Думаю, что надо описать что-то приметное, либо то, что легко описать, а потом указать, где находится искомое "что-то неприметное" относительно описанного "приметного".

Продолжить чтение

Регулярные выражения, Часть I

Глава 1. Шерлок Холмс спешит на помощь веб-программисту или регулярные выражения на пальцах.

Введение

Каждый веб-программист сталкивался с задачей, когда в произвольном тексте нужно найти какие-то данные по какому-то закону, проверить данные, которые поступили от пользователя, подвергнуть найденные данные сложной модификации. Можно изобретать велосипед, а можно использовать средства, которые используют программисты всего мира. Иной раз кажется, что профи пользуются какими-то инструментами, приемами, которые доступны только им. Разочарую читателя, что профи используют те же средства и инструменты, что и вы, только разница состоит в том, что они ими умеют пользоваться и умеют выбирать, какой инструмент стоит использовать в конкретном случае.

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

/^(?:http:\/\/)?[-0-9a-z._]*.\w{2,4}[:0-9]*$/ 


как баран на новые ворота.

Общая задача механизма регулярных выражений - находить или не находить совпадения строки или ее части с шаблоном. Проанализируем первое предложение этого абзаца на предмет непонятных или пугающих слов:

"Механизм регулярных выражений" и "шаблон" - вот два слова, которые меня повергли в уныние, когда я понял, что без использования регулярных выражений мне не обойтись. Имеем какой-то механизм, который что-то ищет и находит либо ищет и не находит, с этим "что-то" связаны такие понятия как строка и шаблон. Вот с них и будем разбираться и ими же и закончим, потому что после того, как мы разберемся, что делает этот механизм со строками и шаблонами, нам не надо будет лезть в учебники по математике и искать, что означают слова "регулярные выражения".

Часть 1.

Где мы видели шаблон? Пойдем к знакомой секретарше и спросим у нее. Правильно, ответ - шаблоны Microsoft Word! Чем отличается шаблон "Календарь" от шаблона "Изысканное резюме"? Данными и способом их подачи. Человек, который хотя бы раз видел и то и другое, без труда будет отличать календарь от резюме. Так почему тогда регулярные выражения пугают программиста? Ведь это почти то же самое! О чем думает человек, который видит календарь и знает что это такое, как он его узнает? Календарь - это документ, который разделен на блоки, каждый блок состоит из цифр, которые соответствуют дням месяца. Каждому месяцу соответствует только один блок, в месяце бывает не больше 31 дня, в феврале не бывает больше 28 (за исключением високосного года), дни, которым соответствует день недели воскресенье или государственный праздник выделены красным, можно продолжить систематизировать данные дальше, указав месяцы в которых ровно 30 и 31 день. Что мы сделали? Мы создали описание календаря, по-другому, мы описали данные, найдя которые в произвольном тексте, можно с определенной уверенностью сказать, что перед нами календарь. Подобное описание я называю шаблоном в контексте разговора о регулярных выражениях.

Грядет день, когда программист будет говорить компьютеру, какую он хочет написать программу, а компьютер будет ее писать, но пока что программисту приходится трудиться самому. Т.е. если я скажу, что ищу отрывок текста, который удовлетворяет описанию календаря, то в наше время компьютер меня не поймет. Садитесь поудобней, ибо если гора не идет к Магомету, то Магомету идет к горе. Как все программисты к горе пойдем сидя перед монитором. Наша задача - научиться описывать данные, которые мы хотим найти, в понятной компьютеру форме. А что вы еще не умеете? Стыдно! Это тоже умеет каждая секретарша. Надеюсь, что такое командная строка программисту объяснять не надо.
Start=>Run=>cmd
. Наберем в командной строке слово
dir
.

Вот, что я получил:

C:\Documents and Settings\Administrator>dir
Volume in drive C has no label.
Volume Serial Number is 3CC6-6445

Directory of C:\Documents and Settings\Administrator

13.10.2003 18:03  .
13.10.2003 18:03  ..
18.07.2003 21:55  .java
18.07.2003 21:54  .javaws
18.07.2003 21:55  .jpi_cache
15.10.2003 16:33 694 .plugin141.trace
05.10.2003 11:40  Desktop
16.10.2003 13:08  Favorites
08.10.2003 16:42  My Documents
18.08.2003 20:51  Start Menu
04.07.2003 21:24  WINDOWS
1 File(s) 694 bytes
10 Dir(s) 2 162 040 832 bytes free


Знакомо? Естественно! Считайте, что вы уже умеете пользоваться регулярными выражениями, осталось только совершенствовать свои навыки. Что вы сделаете, если файлов и директорий много, а вам нужно проверить только те, которые вас интересуют непосредственно? Вы попробуете уменьшить количество выводимых данных, указав условие поиска, описав данные, которые хотите получить. Обратите внимание, что нужно описывать данные, а значит, вы стоите на пороге создания шаблона. Допустим, нас интересуют все файлы и директории, которые имеют название, которое имеет в себе слово java. Уверен, что вы думаете так же, как и я и получаете вот такой результат:

C:\Documents and Settings\Administrator>dir *java*
Volume in drive C has no label.
Volume Serial Number is 3CC6-6445

Directory of C:\Documents and Settings\Administrator

18.07.2003 21:55  .java
18.07.2003 21:54  .javaws
0 File(s) 0 bytes
2 Dir(s) 2 161 618 944 bytes free


Попробуем перевести строку dir *java* на русский язык: Найти и показать все файлы и директории в текущей директории, в названии которых присутствует слово java.

Вроде правильно, а вот и нет! Понимание регулярных выражений заключается в первую очередь в правильном описании закона совпадения (либо несовпадения), а также знания средств, которыми это описание можно "рассказать" компьютеру. Большинство статей в Сети занимаются решением второго пункта, и полностью опускают первый, они рассказывают программисту при помощи каких средств можно "рассказать" компьютеру свое описание интересующих данных. Почему я сказал, что описание неправильное? Потому что dir java* отличается одним символом от dir *java*, но под описание русским языком тоже попадает, ведь слово "java" в названии присутствует?

Делаем вторую попытку описания строки
dir *java*


Найти и показать все файлы и директории в текущей директории (и до этого момента все идет правильно), название которых начинается на какой угодно символ, таких символов может быть сколь угодно (в том числе их может и не быть), но после них обязательно идут подряд символы "j", "a", "v", "a", после которых может идти какой угодно символ, этих символов может быть сколько угодно (а может вообще не быть).

Отличается? Еще как! Продолжаем учиться описывать данные, которые мы хотим найти. Ищем командой dir, работаем с командной строки. Но задание усложним. Теперь я дам описание данных, которые хочу найти, а вы попробуете это сделать, все инструменты вам знакомы.

Найти и показать все файлы и директории в текущей директории, название которых начинается на какой угодно символ, таких символов может быть сколько угодно (а может не быть вообще), но после них обязательно идет символ "j", после которого снова идет любое количество каких угодно символов, но в конце названия стоят подряд символы "w" и "s".

Продолжить чтение

Новые сообщения