Полтора месяца назад мы выпустили новую версию нашего продукта – системы управления сайтами NetCat. Одним из наиболее заметных (хотя и не наиболее важных) новшеств продукта стал рестайлинг интерфейса в философии MetroUI. О том, почему мы выбрали именно Metro, с какими проблемами столкнулись и чему научил нас этот опыт, и пойдет речь в этой статье.
Антон П @roodzread-only
Веб-разработчик: PHP, Laravel, Vue.js
DNS сервер на локальном интерфейсе или простой путь к любви между программистами и администраторами
3 мин
12KУ меня в подчиненни гетерогенная сеть из порядка 40 линукс серверов и несколько живых PHP программистов. Долгое время я просил вынести в единый конфигурационный унифицированный файл подключения к базам данных, серверам memcached, redis и sphinx. Но сегодня осенила гениальная идея. Связано это было с невзможностью быстро включить-выключить сервер из работы и отдать техподдержке на апгрейд убой. Конечно подождать пару часов когда серверов мало, попить чай и пообщаться с любимой можно, но это очень затрудняет работу с большим количеством машинок.
Идея заключается в следующем: делегировать на каждую из локальных машин зону описывающую все внутренние ресурсы, с временем жизни записей всего в несколько секунд. В случае каких-либо изменений, добавлении в кластер новых железок, выключении старых, смене адресации в существующих кластерах и так далее — достаточно отредактировать файл зоны на dns-master сервере и разлить его на слейвы то есть наши рабочие машины. Лично мне идея до сих пор кажется гениальной в своей простоте.
Идея заключается в следующем: делегировать на каждую из локальных машин зону описывающую все внутренние ресурсы, с временем жизни записей всего в несколько секунд. В случае каких-либо изменений, добавлении в кластер новых железок, выключении старых, смене адресации в существующих кластерах и так далее — достаточно отредактировать файл зоны на dns-master сервере и разлить его на слейвы то есть наши рабочие машины. Лично мне идея до сих пор кажется гениальной в своей простоте.
+10
Креативное использование веб-шрифтов
14 мин
33KПеревод
![](https://habrastorage.org/storage2/f20/2b4/536/f202b453661bbda170a271603b0264d8.jpg)
С помощью CSS-магии мы можем создавать красивые типографические эффекты и забыть о использовании изображений, в большинстве случаев. В этой статье мы создадим ряд симпатичных примеров веб-типографики, используя плагин jQuery — lettering.js, а также различные приемы CSS. В некоторых примерах мы также добавим переходы при наведении курсора мыши, чтобы сделать их немного более интерактивным.
+88
Разукрашиваем вывод mysql-client в консоли
4 мин
31KЦвет и звук — это те небольшие радости, которые могут разукрасить и облегчить будние администратора при постоянной работе с консолью. Вывод цветовой информации регулируется так называемым escape-последовательностями, определяющими среди прочего цвет текста и цвет фона.
Общий вид:
В интернете не раз был встречен вопрос о разукрашивании консоли mysql, но нигде не нашлось рецепта. Только общие слова «может быть состряпать обертку» или «посмотрите в исходном коде». Такой вопрос на StackOverflow жил без ответа более 2 лет! «Жил» было специально употреблено в прошедшем времени, потому что ответ нашелся.
Поможет нам утилита grc. Она доступна в большинстве дистрибутивов и о ней многие знают. Но как обернуть в нее вывод mysql-client?
![](https://habrastorage.org/storage2/76d/801/388/76d801388446c00f89fc25e184801ed5.png)
Общий вид:
\033[Xm
, где X — это значение параметра (цифра). Например, echo -ne "\033[34mHELLO"
выведет синим цветом «HELLO». Таблицу цветов и других доступных параметров (подчеркивание, мигание и т.п.) можно получить в документации man console_codes
в разделе «ECMA-48 Set Graphics Rendition». Обычно поддержка цвета интегрирована в само приложение, но mysql-client не входит в число таких программ. В интернете не раз был встречен вопрос о разукрашивании консоли mysql, но нигде не нашлось рецепта. Только общие слова «может быть состряпать обертку» или «посмотрите в исходном коде». Такой вопрос на StackOverflow жил без ответа более 2 лет! «Жил» было специально употреблено в прошедшем времени, потому что ответ нашелся.
Поможет нам утилита grc. Она доступна в большинстве дистрибутивов и о ней многие знают. Но как обернуть в нее вывод mysql-client?
![](https://habrastorage.org/storage2/76d/801/388/76d801388446c00f89fc25e184801ed5.png)
+101
Способы отправки SMS эмулятору Android в Windows
2 мин
12KСуществует несколько довольно простых методов отправки сообщений эмулятору Android:
(к сожалению, ни в одном из них(?) не поддерживается кириллица)
(к сожалению, ни в одном из них(?) не поддерживается кириллица)
+7
Как сделать группу инпутов удобной
2 мин
47KКогда я работал над сервисом заметок jotsky.com, еще до работы в Островке, надо было сделать ввод телефонного номера из двух инпутов. Примерно такой:
![](https://habrastorage.org/storage2/fd3/f8c/20f/fd3f8c20fb54646cccd3b02b007eb7fe.png)
Я сделал навигацию с помощью стрелочек. Сделал, чтобы по мере заполнения фокус переключался к следующем инпуту. А вот сделать правильную вставку из буфера обмена у меня никак не получалось.
![](https://habrastorage.org/storage2/fd3/f8c/20f/fd3f8c20fb54646cccd3b02b007eb7fe.png)
Я сделал навигацию с помощью стрелочек. Сделал, чтобы по мере заполнения фокус переключался к следующем инпуту. А вот сделать правильную вставку из буфера обмена у меня никак не получалось.
+149
Жизненный цикл бизнеса: подготовка к пиковому сезону
9 мин
33KГоворят, если вы торгуете конфетами, то весь год медленно и печально теряете деньги, и только в две последние недели декабря отрываетесь и получаете сверхприбыль. Если вы торгуете цветами — ситуация похожа, только вы работаете примерно в ноль и отрываетесь на 8 марта.
![](https://habrastorage.org/storage2/729/1cb/752/7291cb752b346dd9f082cef44b15871f.jpg)
«Кардиограммы» бизнес-циклов
Почти каждый бизнес — от торговли водкой до IT-проектов — имеет сезонные колебания. Их нужно учитывать в циклах подготовки, разработки, в финансах и в технических моментах перед пиком (вроде резервирования каналов).
![](https://habrastorage.org/storage2/729/1cb/752/7291cb752b346dd9f082cef44b15871f.jpg)
«Кардиограммы» бизнес-циклов
Почти каждый бизнес — от торговли водкой до IT-проектов — имеет сезонные колебания. Их нужно учитывать в циклах подготовки, разработки, в финансах и в технических моментах перед пиком (вроде резервирования каналов).
+60
Оптимизация связки Nginx, Apache, PHP, MySql
9 мин
80KНеожиданно поступила задача разобраться почему определенный сайт не работает столь быстро сколь хочется. В основе его CakePHP, в связке с Apache и MySQL. В статье описание процесса поиска узких мест и приведение в порядок на столько, на сколько это возможно.
Название сайта светить не буду — думаю, программисты сами узнают. Скажу лишь, что это приложение для социальной сети нагрузкой 70-150 тысяч посетителей в обычное время. Все усложняется тем, что периодически производится рекламная рассылка, которая привлекает около 200-300 тысяч посетителей за пару часов.
Итак, под катом описание всей борьбы на протяжении 4 дней.
Название сайта светить не буду — думаю, программисты сами узнают. Скажу лишь, что это приложение для социальной сети нагрузкой 70-150 тысяч посетителей в обычное время. Все усложняется тем, что периодически производится рекламная рассылка, которая привлекает около 200-300 тысяч посетителей за пару часов.
Итак, под катом описание всей борьбы на протяжении 4 дней.
+63
Файервол для Linux с простым интерфейсом
4 мин
21KФайервол представляет из себя bash-скрипт, который интегрирует с помощью соответствующих пакетов следующие функции:
- Файервол внешний и внутренний (пакет iptables).
- Учёт трафика внешнего и внутреннего (пакет iptables).
- Прокси-сервер для локальных сетей (пакет Squid).
- Контент-фильтр для локальных сетей (пакет DansGuardian).
- DNS-сервер для локальных сетей (пакет BIND).
+40
OAuth на практике. Аутентификация и авторизация пользователей сайта через популярные социалки
14 мин
347KДумаю, не мне одному чрезвычайно надоели ресурсы, требующие регистрации по каждому поводу и без. С обязательной капчей, которая правильно введется только с пятого раза, с подтверждением по е-мейлу, которое обязательно свалится в спам и то — только через сутки. Придумывать каждый раз новую пару логин-пароль — забудется, вводить одно и то же на всех сайтах — небезопасно. Местами прокатывают пары вида «qwerty:qwerty» или «login:password», но, увы, далеко не везде. Надоело. Не счесть, сколько раз я, увидев надпись «только зарегистрированный пользователь может ****», просто кривился и закрывал вкладку, чтобы больше ни разу на этот сайт не заходить. Неужели администраторы ресурсов сами этого не понимают?
+106
AntiSMS — быстрое и эффективное лечение блокировщиков
4 мин
5.8K![](https://habrastorage.org/storage2/f3d/ea7/489/f3dea748938248d7dc57d0b6e29a7ea8.jpg)
Все мы наслышаны и троянах-блокировщиках, которые останавливают работу компьютера до получения денежного перевода своим создателям, как правило посредством SMS или оплатой через терминал. Более опытные пользователи никогда их не ловят, а вот их родственники, знакомые и клиенты — часто и регулярно.
Хочу представить вам маленькую программу, которая призвана решить проблему блокировщиков, и более того — делает это в полностью автоматическом режиме. По моему мнению диск или загрузочная флешка с такой программой должна быть абсолютно у каждого человека, ведь у жителей интернета вероятность подхватить баннер-блокировщик есть всегда, а опытные пользователи смогут помочь своим ближним вылечить компьютер всего за пять минут.
Особенно утилита поможет сисадминам и инженерам, занимающимся настройкой клиентских компьютеров. Когда заблокированные компьютеры приносят пачками, быстрое лечение будет экономить вам массу времени и сил. Следуя лёгкой инструкции вы сможете эффективно убрать любой блокировщик, параллельно исправив массу неисправностей в операционной системе.
+58
Семинар «Битрикс Хайлоад» — как это было, презентации, видео
4 мин
20K![](https://habrastorage.org/storage2/384/173/070/3841730702f7aa0156fbeb31aae64094.png)
![](https://habrastorage.org/storage2/b35/515/1d3/b355151d3ad219130a41fc7f2d93360e.jpg)
После этого, как нам кажется, жить ему стало немножко легче, а разработка и сопровождение больших «тяжелых» проектов стали понятнее.
* * *
Почти половина регистраций на семинар (и, видимо, и самих слушателей) была с Хабра. Мы очень рады тому, что тема оказалась востребованной.
Многие и лично, и в твиттере спрашивали, будут ли опубликованы презентации и видео…
Да, конечно!
+34
Наш процесс разработки: 50 месяцев эволюции
9 мин
44KНашей компании уже 6 лет. Она была основана на принципах agile и росла на них. Мы использовали Extreme Programming с самого первого дня, добавили немного Scrum позже и в конце концов переключились на Kanban. Хочется поделиться бесценным опытом и рассказать об изменениях нашего процесса разработки за последние 4 года.
![](https://habrastorage.org/storage2/cdf/309/efc/cdf309efc953a3aa1a3be106d7413724.png)
![](https://habrastorage.org/storage2/cdf/309/efc/cdf309efc953a3aa1a3be106d7413724.png)
+98
Что скрывает от нас директория .git
4 мин
25KВот и мне посчастливилось познакомиться с git. Каюсь, пользуясь Subversion, я знал, как в IDEA или TortoiseSVN сделать то, что мне надо, но даже не представлял, что происходит за сценой. В данном случае я решил подойти к git более ответственно и хорошенько изучить его перед использованием. Сейчас я знаю какие команды надо использовать для выполнения задуманного, но не знаю, как это сделать в IDEA или TortoiseSVN.
Но я решил пойти еще дальше и узнать, что происходит в самой директории .git. Там оказалось все настолько интересно и просто, что я решил поделиться этим с вами.
Но я решил пойти еще дальше и узнать, что происходит в самой директории .git. Там оказалось все настолько интересно и просто, что я решил поделиться этим с вами.
+159
Самый частый шаблон SQL инъекций в РНР — бесполезное экранирование символов
2 мин
35KПо роду своей деятельности, мне приходится выполнять аудиты безопасности исходного кода веб-приложений.
Много веб-приложений и много кода…
В этой статье я хотел бы поделиться одной простой (очень простой) истиной и статистикой, которые вывел и многократно проверил в течении трех последний лет просмотра тонн РНР кода.
Не секрет, что уязвимости внедрения операторов СУБД (SQL injections) являются самыми распространенными из всех серверных уязвимостей веб-приложений. Есть платформы и фреймворки, где такие вещи практически полностью исключены, например ORM'ом и прочим. Но статистика упорно говорит нам об абсолютном преобладании на просторах Интернета веб-приложений с простыми конкатенированными SQL запросами. Кроме того, есть случаи, где ORM вообще применим быть не может. Например, когда от пользовательских данных должны зависеть не только параметры выражений, но и сама логика запроса на уровне операторов.
Много веб-приложений и много кода…
В этой статье я хотел бы поделиться одной простой (очень простой) истиной и статистикой, которые вывел и многократно проверил в течении трех последний лет просмотра тонн РНР кода.
Не секрет, что уязвимости внедрения операторов СУБД (SQL injections) являются самыми распространенными из всех серверных уязвимостей веб-приложений. Есть платформы и фреймворки, где такие вещи практически полностью исключены, например ORM'ом и прочим. Но статистика упорно говорит нам об абсолютном преобладании на просторах Интернета веб-приложений с простыми конкатенированными SQL запросами. Кроме того, есть случаи, где ORM вообще применим быть не может. Например, когда от пользовательских данных должны зависеть не только параметры выражений, но и сама логика запроса на уровне операторов.
+66
N+2 полезные книги для бизнеса, которые обязательно стоит прочитать
5 мин
96KВ прошлом году я делал обзор книг, на которых реально растут люди и реально улучшаются процессы.
![](https://habrastorage.org/storage2/032/459/223/03245922347babb02bf299538e3b7e7d.jpg)
Тогда понадобился год, чтобы прочитать в десять раз больше бумаги и сделать выборку, которая оказалась неожиданно полезной многим. Вот результаты ещё одного года — ещё N+2 книги для бизнеса, которые реально помогают.
![](https://habrastorage.org/storage2/032/459/223/03245922347babb02bf299538e3b7e7d.jpg)
Тогда понадобился год, чтобы прочитать в десять раз больше бумаги и сделать выборку, которая оказалась неожиданно полезной многим. Вот результаты ещё одного года — ещё N+2 книги для бизнеса, которые реально помогают.
+94
Легкий способ начать тестировать
4 мин
50KЕсли вы PHP-разработчик, и по разным обстоятельствам тесты для своих приложений не пишете, то эта статья для вас. В ней я постараюсь вкратце показать с чего начать и что делать, чтобы написание тестов приносило вам радость, а вашему приложению стабильность.
Итак, первый совет. Забудьте всё что вы знаете о юнит-тестах. Швырните табуреткой в человека, который сказал вам, что без них не обойтись. Попробуем разобраться, в каких случаях нужно их использовать, а в каких — нецелесообразно.
Итак, первый совет. Забудьте всё что вы знаете о юнит-тестах. Швырните табуреткой в человека, который сказал вам, что без них не обойтись. Попробуем разобраться, в каких случаях нужно их использовать, а в каких — нецелесообразно.
+39
Инструменты командной строки для веб-разработчика
3 мин
40KПеревод
Жизнь веб-разработчика омрачена сложностями. Особенно неприятно, когда источник этих сложностей неизвестен. То ли это проблема с отправкой запроса, то ли с ответом, то ли со сторонней библиотекой, то ли внешний API глючит? Существует куча различных прилад, способных упростить нам жизнь. Вот некоторые инструменты командной строки, которые лично я считаю бесценными.
+207
Нечёткий поиск на клиенте и Soundex
7 мин
8.9K![](https://habrastorage.org/storage1/7c2d4a39/6e739979/f8343766/ba44a9a1.png)
Я давно интересовался применением этого алгоритма и нашёл ему место для фильтрации данных на клиенте, а точнее, для поиска отеля по названию в проекте Островок.ru.
Задача
На Островке все найденные отели передаются на клиент и вся фильтрация и сортировка выдачи происходит в браузере. Необходимо было добавить фильтр по названию отеля.+68
Онлайн генератор схем баз данных
1 мин
252KХочу представить онлайн генератор схем баз данных dbdsgnr. Сервис сделан на питоне и google app engine. Залогиниться в него можно имея аккаунт в гугле. Вкратце о сервисе: вы рисуете схему баз данных, а сервис создает вам код. На данный момент можно получить только для MySQL, но обещают поддержку PostgreSQL, SQLite, MySQL, MSSql, Oracle. Под катом пример работы с данным сервисом.
+51
Информация
- В рейтинге
- Не участвует
- Откуда
- Нижний Новгород, Нижегородская обл., Россия
- Дата рождения
- Зарегистрирован
- Активность