Pull to refresh
0
0
Send message

Приемы написания скриптов в Bash

Reading time7 min
Views173K
Администраторам Linux писать скрипты на Bash приходится регулярно. Ниже я привожу советы, как можно ускорить эту работу, а также повысить надежность скриптов.

Совет 1

Не пишите скриптов, которые выполняют действия ничего не спрашивая. Такие скрипты нужны довольно редко. А вот всевозможного «добра» для копирования, синхронизации, запуска чего-либо, хоть отбавляй. И если в любимом Midnight Commander Вы вдруг нажали не на тот скрипт, то с системой может произойти все что угодно. Это как правила дорожного движения — «написано кровью».

Совет 2

Отталкиваясь от предыдущего, в начало каждого скрипта неплохо помещать что-то вроде:
read -n 1 -p "Ты уверен, что хочешь запустить это (y/[a]): " AMSURE 
[ "$AMSURE" = "y" ] || exit
echo "" 1>&2
Команда echo, кстати, здесь нужна потому, что после нажатия кнопки <y> у вас не будет перевода строки, следовательно, следующий любой вывод пойдет в эту же строку.

Совет 3

Это ключевой совет из всех. Для того, чтобы не писать каждый раз одно и то же — пользуйтесь библиотеками функций. Прочитав много статей по Bash, я вынужден констатировать, что этой теме уделяется мало внимания. Возможно в силу очевидности. Однако я считаю необходимым напомнить об этом. Итак.
Заведите свою библиотеку функций, например myfunc.sh и положите ее, например в /usr/bin. При написании скриптов она не только поможет сократить ваш труд, но и позволит одним махом доработать множество скриптов, если Вы улучшите какую-либо функцию.
Например, в свете совета 2 можно написать такую функцию:
Читать дальше →
Total votes 121: ↑83 and ↓38+45
Comments46

Установка системы управления виртуализацией (openvz, kvm) proxmox 2.2 на сервер в Hetzner

Reading time3 min
Views81K

Proxmox для конечного потребителя веб интерфейсом для управления виртуальными машинами, позволяет создавать виртуальные машины linux в kvm и openvz контейнерах, windows в kvm. Резать ресурсы в видео количества ядер cpu, объема памяти, ограничения io в мегабайтах в секунду и iops (только kvm). Присутствуют автоматические бекапы, возможно делать их на удаленное хранилище, можно пометить некоторые диски в виртуалках галочкой “не для бекапа”.
Читать дальше →
Total votes 30: ↑23 and ↓7+16
Comments35

Fuel UX — элементы управления на Twitter Bootstrap

Reading time1 min
Views28K
Наткнулся недавно на один интересный проект в основе которого лежит Twitter Bootstrap, а так как сейчас делаю интерфейс и в основе именно Bootstrap, то некоторые элементы мне будут очень полезны, я решил поделиться находкой с хабросообществом.
Fuel UX представляет собой набор скриптов и стилей для легких современных интерфейсов. А именно для создания удобных элементов управления.
Fuel UX
Читать дальше →
Total votes 63: ↑54 and ↓9+45
Comments25

Базовые CSS-стили различных элементов

Reading time5 min
Views121K
В этом топике представлены лаконичные базовые стили для различных элементов: кнопок, ссылок, форм, теней, градиентов, которые можно использовать в своих проектах. Да и просто разобраться в принципах работы таких конструкций проще на несложных примерах.



Демонстрация стилей / Скачать исходники
Читать дальше →
Total votes 113: ↑92 and ↓21+71
Comments54

Константин Калинов, основатель Aviasales: мы пошли развиваться горизонтально

Reading time13 min
Views16K
16 октября в корпусе НИУ ВШЭ на Покровском бульваре в Москве, прошел мастер-класс Константина Калинова, основателя Aviasales.ru. Он ненадолго прилетел из Таиланда, где расположен головной офис проекта. Я побывал на этом мероприятии и предлагаю вам, как мне кажется, интересный репортаж. Это не обзорная статья, это вопросы из аудитории и ответы Константина на них.

Сразу несколько моментов. Первое – я постарался передать максимально точные вопросы из зала и ответы Константина. Второе – к нему все обращались на «ты», по его просьбе. Ну и присутствует небольшое кол-во лексики, но «из песни слов не выкинешь».



От себя добавлю – мне понравилось то, о чем говорил Константин.

Приятного чтения.
Читать дальше →
Total votes 63: ↑50 and ↓13+37
Comments28

Рекомендации по интерфейсу форм

Reading time6 min
Views33K

Проектирование форм может оказаться настоящей проблемой. Чтобы получилось что-то стоящее и удобное для пользователей необходимо принять во внимание кучу разных рекомендаций и правил. В данной статье я постарался составить полезный список таких рекомендаций. Для его составления я использовал свой опыт и статьи экспертов.

Основные рекомендации и ввод данных


  • Стремитесь к краткости.
  • Убедитесь, что в форме используется один язык (обороты, термины).
  • Если на странице находится только форма и ничего кроме нее, то при загрузке страницы стоит ставить фокус на первое поле формы, это позволит сэкономить немного времени (страница поиска, входа, регистрации).
  • Поддерживайте ясный путь заполнения формы.
  • Избегайте вторичных действий, если это возможно.
  • В противном случае четко разделяйте основное и дополнительные действия.
  • Выравнивайте основное действие так же как и поля формы, это упрощает восприятие формы.
  • Цветная подложка у главной кнопки сделает её более видимой.
  • Отключайте кнопку «Отправить» после того как пользователь на нее нажал, это позволит избежать двойной отправки данных.
  • Еще лучше — показывайте индикатор отправки.

Читать дальше →
Total votes 29: ↑22 and ↓7+15
Comments14

Удобное встраивание RESTful API в проект

Reading time6 min
Views41K
Ни для кого не секрет, что наличие API идет на пользу любому проекту. Но часто, при ошибке в архитектуре системы или же добавлении его к готовому проекту, накладные расходы на поддержку и тестирование отнимают достаточно много времени.

Я хочу представить сообществу нашу реализацию RESTful архитектуры, без дублирования кода и с минимальными изменениями существующей бизнес-логики. Или Как добавить в проект API за пять минут?
Читать дальше →
Total votes 30: ↑29 and ↓1+28
Comments21

Настройка Asterisk 1.8 + FreePBX 2.10 с нуля

Reading time9 min
Views344K
Данная статья является продолжением статьи по установке системы.
Наконец тем или иным образом у нас появился установленный Asterisk и FreePBX.

Опишу ситуацию немного подробнее для сравнения подойдет ли Вам наша схема работы. Мы небольшой интернет провайдер, нам нужна запись разговоров, очереди звонков на городские и мобильные телефоны, голосовое меню рассказывающее про акции с выбором в какой отдел попасть, и возможность быстро поставить перед всем этим сообщение об авариях на определенных улицах города, чтобы люди не перенапрягали тех поддержку, причем желательно бесплатно. Чтобы не покупать дорогие шлюзы мы решили сменить городские телефонные номера и купить пару номеров + десяток каналов у провайдера ip-телефонии. Кто то скажет что это ненадёжно и т.д. Только скажите- какая разница интернет провайдеру на городские телефоны, если у него упал весь интернет? Зато это дешево. Подключение нам обошлось всего то в 38 $, каждый телефонный номер в 2$ и линия в 1,2$ в месяц. После чего мы получили настройки даже без авторизации и к нашему ip адресу привязали аккаунт. Сразу хотелось бы оговорить как будет построена эта статья, чтобы не перегружать её тоннами скринов я опишу создание каждого элемента по одному разу(что советую проделать т.к. они понадобятся для ваших же последующих экспериментов), а потом уже распишу схему что на что ссылается в нашей схеме работы. Наверняка схема у вас будет другая, но зато сможете понять смысл. Описывать буду только те элементы, которые непосредственно понадобились при настройке.
Читать дальше →
Total votes 30: ↑24 and ↓6+18
Comments33

OpenDKIM + Postfix = просто

Reading time4 min
Views127K


В конце 2011 года разработчики проекта dkim-milter прекратили его поддержку и разработку. К счастью, на замену проекта dkim-milter пришел OpenDKIM, с помощью которого добавить DKIM-подпись в письма так же просто.

tl;dr: в наше время без DKIM-подписей ну никак нельзя
DKIM-подпись — это цифровая подпись, которая добавляется к заголовкам письма сервером отправителя, по которой сервер получателя может удостовериться, что отправитель письма соответствует полю From в заголовках письма. Если сервер получателя проверяет эту подпись, то по результатам проверки сервер может принять решение о том, как поступать с письмом: принять, отправлять в папку «Спам», отправить на дополнительную проверку или вовсе отказаться от приёма. Подписи DKIM проверяют и используют сами все ведущие почтовые службы, включая Яндекс и Mail.ru. Последняя открыто требует чтобы письма были подписаны с помощью DKIM.


Инструкция по настройке связки Postfix и OpenDKIM
Total votes 46: ↑40 and ↓6+34
Comments28

Автоматическая генерация Dial Patterns для Asterisk из DEF-кодов сотовых операторов

Reading time4 min
Views13K
В конторе используем шлюзы GSM, для исходящих звонков на сотовые. Но была задача ограничить диапазон номеров в outboud routes asterisk, чтобы пользователи не звонили куда попало. А именно разрешить исходящую связь только на сотовые своего региона.

Далее можно прочитать как автоматизировать обновление Dial Patterns исходящих звонков в Asterisk, используя общедоступный список DEF-кодов сотовых операторов.
Читать дальше →
Total votes 12: ↑12 and ↓0+12
Comments3

CSS слайдер

Reading time7 min
Views153K
С развитием CSS3, возможности верстки растут экспоненциально. Всё больше функционала можно реализовать на «чистом» CSS. В этом посте показан процесс разработки интерактивного циклического слайдера без единой строчки JavaScript. Автоматическая ротация, выбор любого слайда с плавным переходом – на «чистом» CSS. Пример в действии



Под катом пошаговое описание реализации
Total votes 58: ↑48 and ↓10+38
Comments45

jQuery plugin для форм с динамической структурой

Reading time5 min
Views33K
Хочу поделиться с обществом собственным плагином, который упрощает работу с динамическими формами и называется jqDynaForm. Под динамическими формами я подразумеваю формы, в которые при заполнении пользователь может добавлять по необходимости дополнительные поля или блоки полей. Разумеется, в каждом месте разрешено добавлять только заранее разрешенные виды блоков. Вот примеры подобных простейших форм:

1. Контактная форма, в которой есть поле «телефон». Пользователь может добавить еще несколько дополнительных полей для телефонов, если возникнет желание.

2. Счет на оплату. Есть фиксированный набор полей, таких как «имя плательщика» и «номер счета». Кроме того, есть таблица с позициями. Каждая позиция состоит следующих полей: «наименование», «количество», «цена». Пользователь может добавлять произвольное количество дополнительных позиций.

Давайте рассмотрим работу с jqDynaForm на примере такого счета. Вот пример такой формы:



Читать дальше →
Total votes 45: ↑42 and ↓3+39
Comments29

Какой SIP-сервер выбрать: SER, OpenSER, Kamailio, OpenSIPS? Что в них общего и в чем разница?

Reading time8 min
Views53K
У многих администраторов voip-сетей, сталкивающихся с sip-серверами слова ser, openser, kamailio, opensips вызывают по меньшей мере головокружение. Почему их так много? Почему так похожи? Какие активно развиваются, а какие уже нет? Какой в конце-концов выбрать?

Читать дальше →
Total votes 29: ↑29 and ↓0+29
Comments18

Сетки без заморочек

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

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

В этой статье я расскажу вам, как я верстаю сеточный макет. Это не так уж и сложно. И даже сделать резиновые сетки не составит большого труда.
Читать дальше →
Total votes 57: ↑49 and ↓8+41
Comments66

HybridAuth — интеграция сайта с социальными сетями

Reading time7 min
Views38K

Введение


На своем сайте на php для авторизации пользователей я в последнее время пользовался сервисом Loginza. Все было очень круто и удобно, но в голове начала зарождаться идея отказа от этого замечательного сервиса и вот почему:

  1. Авторизация пользователей в случае закрытия Loginza или отказа от нее — в этом случае мы потеряем пользователей, в привязанных профилях которых не указан email;
  2. Дополнительная информация, например, ВКонтакте умеет отдавать фото пользователя в нескольких видах, в том числе квадратный аватар. С Логинзой получить эти данные не представляется возможным, сервис сам решает какие данные запрашивать и какие отдавать;
  3. С момента продажи Яндексу Логинза начала умирать: на запросы пользователей никто не отвечает, сервис не развивается, а находится в том виде, в котором был 1-2 года назад.

Встал вопрос замены и использовать альтернативные сервисы желания уже не возникало — никто не представлял возможности «общаться» с соц. сетью напрямую, а расширенные поля профиля обычно включались в платные услуги. Хотелось автономного решения с возможностью гибкой настройки запрашиваемых полей и в итоге я остановился на php библиотеке HybridAuth.
Подробнее о HybridAuth
Total votes 54: ↑52 and ↓2+50
Comments28

Настройка почтовых оповещений о различных системных событиях

Reading time4 min
Views27K
В этой заметке перечислены несколько простых способов заблаговременно узнать о различных проблемах на сервере, не замусоривая почтовый ящик и не настраивая сложных систем мониторинга. Из разряда «если вам лень что-то проверять и настраивать, то настройте и проверяйте хотя бы это».
Читать дальше →
Total votes 28: ↑26 and ↓2+24
Comments10

Вспомнить всё

Reading time5 min
Views3.9K
Это перевод оригинальной статьи Total (Memory) Recall

С вами когда-нибудь случалось такое, что вы входили в комнату и совершенно забывали зачем вошли? Если судить по моим друзьям, это достаточно распространённое явление. Недавно проведённое исследование позволяет объяснить этот феномен (его называют «Roomnesia») и предлагает способы борьбы с этой проблемой или ликвидации её последствий.

Читать дальше →
Total votes 32: ↑30 and ↓2+28
Comments36

Разработка — «Рабочее место кассира» под LINUX. GPL

Reading time5 min
Views26K

Последние новости


Система работает на 15 кассах. Дописывается. git здесь github.com/redeyser/IceCash. почта моя здесь redeyser@gmail.com Видео
www.youtube.com/watch?v=69AF7n6sxDY

Предыстория


Так сложилось, что работаю программистом/админом в розничной торговой сети. Работаю уже два года, до этого никогда не сталкивался с обслуживанием специализированных программ и техники, но разобрался со временем. Особенностью моей организации является то, что вкладываться в нормальную технику начальство не собирается категорически. То есть, модернизацией и близко не пахнет, а вот носиться на замену чего-то, вновь исдохшего приходится частенько. Кроме того, большинство торговых точек не обладают лицензией на установленную ОС Windows XP. На розничных точках стоит одна или две кассы на базе умирающих от старости компьютеров, таких же старых фискальных аппаратов Штрих-М ФРК, различных сканеров штрихкода (COM, USB,Keyboard) и весов METTLER TOLEDO. Из программного обеспечения изначально было только лицензионная (с ключом) 1С v7.7 «ШТРИХ-М Кассир».

Внедряем Linux где это возможно


Помимо обязанностей — следить за кассами, на моих плечах был и офис и удаленный филиал со всеми 1С ками, железом (тоже не новым), серверами. И чего-то я с трудом всё это успевал обслуживать на первых порах. Честно признаться — я юниксофил, потому поспешил с внедрением linux. Постепенно удалось перевести офисных клиентов на Linux, и сразу стало легче дышать, компы перестали зарастать вирусами, оставалось только следить за железом да подбирать и устанавливать нужные программы. Основная работа клиентов продолжалась в Windows, но это был уже терминал на сервере, с ним проще. По возможности сервера я перевел тоже на Linux, оставив только один с windows server 2003.

Читать дальше →
Total votes 82: ↑75 and ↓7+68
Comments68

Оптимизация связки Nginx, Apache, PHP, MySql

Reading time9 min
Views80K
Неожиданно поступила задача разобраться почему определенный сайт не работает столь быстро сколь хочется. В основе его CakePHP, в связке с Apache и MySQL. В статье описание процесса поиска узких мест и приведение в порядок на столько, на сколько это возможно.

Название сайта светить не буду — думаю, программисты сами узнают. Скажу лишь, что это приложение для социальной сети нагрузкой 70-150 тысяч посетителей в обычное время. Все усложняется тем, что периодически производится рекламная рассылка, которая привлекает около 200-300 тысяч посетителей за пару часов.

Итак, под катом описание всей борьбы на протяжении 4 дней.
Читать дальше →
Total votes 95: ↑79 and ↓16+63
Comments108

Information

Rating
Does not participate
Registered
Activity