Pull to refresh
21
0

DevOps Engineer

Send message

Частые ошибки программирования на Bash

Reading time9 min
Views95K
Качество скриптов, используемых для автоматизации и оптимизации работы системы, является залогом ее стабильности и долголетия, а также сохраняет время и нервы администратора этой системы. Несмотря на кажущуюся примитивность bash как языка программирования, он полон подводных камней и хитрых течений, способных значительно подпортить настроение как разработчику, так и администратору.

Большинство имеющихся руководств посвящено тому, как надо писать. Я же расскажу о том, как писать НЕ надо :-)

Данный текст является вольным переводом вики-страницы «Bash pitfalls» по состоянию на 13 декабря 2008 года. В силу викиобразности исходника, этот перевод может отличаться от оригинала. Поскольку объем текста слишком велик для публикации целиком, он будет публиковаться частями.

Поехали!
Total votes 79: ↑76 and ↓3+73
Comments25

ejabberd с авторизацией через LDAP

Reading time6 min
Views29K
Я достаточно давно и без сожалений расстался с ICQ. Воспользовавшись возможностью, поднял свой собственный Jabber-сервер, которым с успехом и пользуюсь по сей день. Однако не у всех моих сотрудников есть Jabber-аккаунт (не все даже знают, что это такое :-), что несколько затрудняет общение по работе. Для общения с остальными, для организации безопасной и независимой системы обмена сообщениями, я решил поднять корпоративный jabber-сервер. А так как у нас активно используется LDAP, то логичным показалось задействовать его для аутентификации пользователей и управления учётными записями.
Читать дальше →
Total votes 47: ↑34 and ↓13+21
Comments44

ejabberd: внешние программы аутентификации

Reading time2 min
Views4.9K
В заметке ejabberd с авторизацией через LDAP я описал основные моменты по настройке сервера ejabberd и подключения его к LDAP. К сожалению возможностей стандартного модуля LDAP-аутентификации нам не хватило. Однако ejabberd позволяет использовать внешние, в том числе собственные, программы для этой цели.
Читать дальше →
Total votes 45: ↑30 and ↓15+15
Comments3

ejabberd: Поиск по визитным карточкам

Reading time2 min
Views6.3K
В заметке ejabberd с авторизацией через LDAP я описал основные моменты по настройке сервера ejabberd. В заметке внешние программы аутентификации показал как можно использовать внешнюю программу, если не хватает функционала встроенных модулей. Теперь добавим поиск по визитным карточкам пользователей.
Читать дальше →
Total votes 38: ↑25 and ↓13+12
Comments4

ejabberd: общие списки

Reading time2 min
Views16K
image
Предыдущие заметки про настройку ejabberd 1, 2 и 3.

ejabberd позволяет создать заранее подготовленные списки контактов, доступные определённым группам пользователей. Так как наш сервер настраивается под корпоративные нужды, это было бы кстати. Приходит новый человек, подключается к серверу, а у него в списке контактов уже есть все, кто ему может понадобиться, да ещё и по отделам сгруппированные.
Как сделать такие списки...
Total votes 45: ↑37 and ↓8+29
Comments19

Интервально-ассоциативный массив

Reading time2 min
Views4.7K
Замечательная вещь — ассоциативный массив. Самые разные задачи решаются с его помощью легко, приятно и быстро. А как быть когда значение должно принадлежать не одному ключу, а быть «размазанным» на некоторый интервал?
Представьте, что вам нужно сделать программу для составления расписания дежурства менеджеров интернет-магазина. Работа с ним должна была максимально простой, примерно так:
# легко назначить
>>> timetable['08:00' : '12:00'] = 'Иванов'
>>> timetable['12:00' : '16:00'] = 'Петров'

# как узнать кто дежурил в 13:51 ?
>>> print timetable['13:51']
Петров

# легко просмотреть поэлементо полный список
>>> for interval, person in timetable.items(): print interval, person
('08:00', '12:00') Иванов
('12:00', '16:00') Петров

# ...или одной строкой
>>> print timetable
{['08:00', '12:00'] => 'Иванов', ['12:00', '16:00'] => 'Петров'}


Дальше - больше!
Total votes 103: ↑96 and ↓7+89
Comments80

© В. И. Пупкин, 2008

Reading time4 min
Views82K
Ещё одна мелочь, на которую не вредно обращать внимание — оформление знака охраны авторского права (который часто неграмотно называют «копирайтом»). К сожалению, на сайтах этот элемент подвала страницы зачастую ставят «чтобы был», и оформляют кто во что горазд. Однако, на сей счёт есть не просто сложившиеся правила, а целый ГОСТ Р 7.0.1—2003 (PDF, 652 КБ).

Ничего сложного в оформлении знака охраны авторского права нет, нужно просто знать определённые правила.

Читать дальше →
Total votes 91: ↑85 and ↓6+79
Comments138

10 jQuery скриптов для улучшения интерфейса

Reading time3 min
Views11K
С рассветом WEB 2.0 получили развитие и javascript фрэймворки, позволяющие вебмастеру делать динамические элементы сайта гораздо быстрее и проще. Одним из таких фреймворков является jQuery, получивший огромную популярность за свою простоту и невероятно малый вес. Итак, представляю вашему вниманию 10 наиболее полезных скриптов jQuery для улучшения интерфейса вашего сайта.
Читать дальше →
Total votes 136: ↑125.5 and ↓10.5+115
Comments34

Организация постоянных редиректов с www.domain на domain и обратно.

Reading time1 min
Views21K
Так исторически сложилось, что домены сайтов называют с префиксом www или без.

Есть несколько взглядов как истинно должен называться домен, прогрессивное человечество считает, что без www — nowww.ru, многие западные эксперты считают обратное.

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

Читать дальше →
Total votes 42: ↑37.5 and ↓4.5+33
Comments59

Правила личной эффективности от ЭД

Reading time21 min
Views65K
Заранее предупреждаю и извиняюсь, но оно того стоит: букаф многа.

Введение

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

В конце седьмого класса у меня встал выбор — идти в ПТУ или учиться дальше в школе. Все учителя, настаивали на том, что мне бесполезно учиться не то что в институте, но и в старших классах, в виду моей бездарности. Естественно, это мне не очень понравилось, и я решил стать лучшим в школе.

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

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

Читать дальше →
Total votes 209: ↑161 and ↓48+113
Comments202

Подсчет количества найденных записей в PostgreSQL

Reading time3 min
Views42K
На работе в новом проекте используется СУБД PostgreSQL. Так как до сих пор я работал с MySQL, сейчас приходится изучать и открывать для себя Постгри. Первая проблема, которая меня заинтересовала — замена мускулевского SQL_CALC_FOUND_ROWS. При использовании этой константы в MySQL можно получить количество всех найденных по запросу записей, даже если запрос с limit'ом — это незаменимо при постраничном выводе поисковых результатов, когда используются «тяжелые» запросы.
Сходу готового решения найти не удалось. На форумах просто констатировали, что SQL_CALC_FOUND_ROWS в Постгри нет. Некоторые писали, что надо юзать count(*). И больше никакой информации. Но еще из MySQL мне было известно, что поиск с count()-запросом работает почти в 2 раза медленнее, чем с SQL_CALC_FOUND_ROWS. Я консультировался у тех, кто пользуется PostgreSQL, день мучал google и в результате получил 4 варианта замены SQL_CALC_FOUND_ROWS в PostgreSQL, один из которых вполне приемлимый по скорости.
Читать дальше: какие запросы и какая разница в скорости
Total votes 37: ↑35 and ↓2+33
Comments43

Супер-юзабильные формы

Reading time2 min
Views54K
super_form

Как-то на хабре разгорелся спор, как заставить пользователя вводить дату в правильном формате, было множество интересных решений, но заставлять пользователя совершенно не надо — пусть за пользователя основную работу делают машины :-).

На помощь приходит замечательный скрипт «Masked Input Plugin», который позволяет назначить для каждой формы маску, по которой данные будут заполнятся.

Возможно Вы не совсем поняли, но лучше один раз увидеть, чем сто раз услышать.
Читать дальше
Total votes 209: ↑164.5 and ↓44.5+120
Comments91

Персональный холивар

Reading time2 min
Views7.2K
Здравствуйте уважаемые хабралюди, хабрасообщество и сочувствующие, на вас одна надежда.
Сей порыв связан с моим отчаяньем, ибо уже как 2 месяца выбираю CMS для студии. И о ужас! Ничего не могу найти достойного.
Суть следующая. Я среднестатистической руководитель проектов, среднестатистической российской региональной веб студии. До поры до времени сидели на своей CMS и худо бедно справлялись. А в один прекрасный день я понял, что она абсолютно не годится по ряду причин, не буду в них углубляться, но суть в том что система собрана на коленках и на что-то серьезное пускать ее – смерти подобно.
И тут настало время Ч. Время выбора достойной CMS, коммерческой или некоммерческой не важно.
Читать дальше →
Total votes 66: ↑49 and ↓17+32
Comments217
12 ...
8

Information

Rating
Does not participate
Location
Севастополь, Республика Крым, Россия
Date of birth
Registered
Activity