Search
Write a publication
Pull to refresh
31
0
Артур @Ar2r

PHP/Go Developer

Send message

Apache vs Nginx: практический взгляд

Reading time12 min
Views385K
Apache vs Nginx

Введение


Apache и Nginx — 2 самых широко распространенных веб-сервера с открытым исходным кодом в мире. Вместе они обслуживают более 50% трафика во всем интернете. Оба решения способны работать с разнообразными рабочими нагрузками и взаимодействовать с другими приложениями для реализации полного веб-стека.

Несмотря на то, что у Apache и Nginx много схожих качеств, их нельзя рассматривать как полностью взаимозаменямые решения. Каждый из них имеет собственные преимущества и важно понимать какой веб-сервер выбрать в какой ситуации. В этой статье описано то, как каждый из этих веб-серверов ведет себя при различных условиях.
Читать дальше →

Badoo PHP Code Formatter. Теперь в open source!

Reading time13 min
Views28K
Несколько лет назад компания Badoo начала значительно расти по числу сотрудников, с 20 до 100 и более. Это потребовало серьезной перестройки многих процессов, касающихся разработки. Одна из проблем, с которой мы столкнулись, — как заставить всех разработчиков следовать единому стандарту кодирования, чтобы весь наш код выглядел единообразно и был легко поддерживаемым?

Для решения этой задачи мы решили внедрить инструмент для форматирования кода, который умел бы следующее:

  1. выводить сообщения о несоответствии стандарту форматирования в виде списка, не трогая сам файл;
  2. автоматически исправлять все найденные проблемы с форматированием;
  3. уметь форматировать только часть файла (нам не нужно переформатировать репозиторий сразу целиком, чтобы не потерять историю).

Мы рассматривали два проекта, которые можно было бы взять за основу для написания такого инструмента — PHP Beautifier и PHP Code Sniffer. Первый умел форматировать код, но не умел печатать диагностику, а второй — наоборот, умел печатать диагностику, но не умел форматировать файлы. К сожалению, оба этих проекта, по нашей оценке, были не слишком пригодны для того, чтобы добавить в них недостающую нам функциональность, поэтому была написана новая утилита — phpcf (PHP Code Formatter). Уже в течение двух лет она работает как git pre-receive hook, настроенный на отклонение (!) изменений, которые не оформлены по нашему стандарту кодирования.

Наконец настало время открыть исходные тексты нашей утилиты для широкой публики: github.com/badoo/phpcf
Читать дальше →

MySQL On air. Мониторим SQL запросы

Reading time4 min
Views40K
image
Разбираясь как работает та или иная CMS приходится использовать различные инструменты, облегчающие работу.
Наиболее интересная тема — это работа с баз(ой|ами) данных. Естественно для изучения запросов и результатов запросов нужно использовать что-то универсальное. Что-то, что будет работать стабильно как с известным движком, так и с самописной системой.
Предположим у вас оказалась система управления контентом и вам необходимо посмотреть как реализовано добавление новых пользователей или смена паролей.

Большинство инструментов позволяющих мониторить работу с БД являются платными [раз, два]. Я хотел что-то более легкое и удобное, поэтому выбрал mysql-proxy. Хотя возможности утилиты гораздо шире чем мне требуется, я опишу лишь основное. Работает как под Windows, так и под Unix системами.
Как я это использую?

Набор Yii2 Behavior для хранения деревьев в БД и их совместного использования

Reading time7 min
Views25K

Привет, Хабр!

В одном своём проекте на Yii2 мне захотелось совместить Adjacency List и Nested Sets. Причём так, чтобы в случае отключения поведения Nested Sets, функционал оставался полностью работоспособен. Затем я понял, что Nested Sets мне не нужен, т. к. в базе всё равно приходилось хранить полный путь, поэтому на замену я решил применить Materialized Path. Имеющийся на GitHub Behavior (matperez/yii2-materialized-path) был недостаточно функционален, поэтому пришлось написать свой, а так как я недавно уже писал свои поведения для Adjacency List и Nested Intervals, я решил, почему бы не сделать набор таких поведений с единым API, и возможностью произвольно подключать их к модели одновременно, используя преимущество каждого.

Читать дальше →

Создаём свой сайт для управления Ардуиной

Reading time3 min
Views67K
Как-то раз, мне на почту пришло письмо, человек интересовался возможностью реализации собственного сайта для работы с ардуиной. Что ж, подумал я, а ведь в самом деле, неплохо бы автоматизировать процесс создания подобных сайтов. Сказал-сделал, хорошо ли плохо, судите сами.
Читать дальше →

Прогресс выполнения тяжелой задачи в PHP

Reading time6 min
Views52K
Случилось мне как-то иметь дело с тяжелым PHP-скриптом. Нужно было каким-то образом в браузере отображать прогресс выполнения задачи в то время, пока в достаточно длительном цикле на стороне PHP проводились расчёты. В таких случаях обычно прибегают к периодичному выводу строки вроде этой:

<script>document.getElementById('progress').style.width = '1%';</script>

Этот вариант меня не устраивал по нескольким причинам, к тому же мне в принципе не нравится такой подход.
Читать дальше →

cut и grep или awk?

Reading time2 min
Views79K
Часто в скриптах можно встретить что-то вроде foobar|awk '{print $1}' («часто» — это действительно часто).

Такой вызов awk всего лишь вывходит первую (n-ную) колонку из вывода предыдущей команды. Но это явный оверкилл! awk — довольно мощный язык потоковой обработки данных, и применение его как простого field-separator не есть хорошо.

Для вырезания из строки указанного поля лучше использовать команду cut. Она умеет меньше, а потому проще в использовании и быстрее.

В современном линуксе обработка вызова awk куда более сложна, чем вызов cut. В дебиане, например, awk — линк на /etc/alternatives/awk, который ведёт (чаще всего) на gawk. Который почти в 10 раз больше по размеру, чем cut. Разумееся, cut загружаеся быстрее.

cut умеет вырезать не только байты, но и нужные поля (опция -f). Поле — это текст между разделителями. По-умолчанию разделитель пробел/табуляция, но он легко меняется опцией -d.

Второй подход — использовать опцию -o у grep. Эта опция выводит не всю строку, а только совпадающее с критерием поиска grep. Очевидно бесполезно при поиске точной подстроки, но очень полезно при использовании регулярных выражений.

Например,
grep -v "#" /etc/inittab |cut -f 4 -d : -s
выведет список программ, запускающихся init'ом (четвёртое поле, поля разделяются двоеточием).

Или
grep http://\\S\\+ -o /var/log/apache2/error.log
выдаст список URL'ов из файла с ошибками (первый урл в строке).

… и никакого awk.

UPD: В комментариях подсказывают ещё более интересную конструкцию без запуска внешнего файла (команда read реализуеся средствами bash'а):
foobar | (read p1 p2; echo p1)

P.S. Речь не о единичном вызове (тут нет разницы awk, grep или даже python/perl). Речь о множестве вызовов в цикле в скрипте. Все примеры сравнивайте в цикле с сотнями (лучше тысячами) вызовов.

Запускаем PHPUnit тесты для проекта на 1С-Битрикс

Reading time3 min
Views17K
Здравствуйте коллеги,

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

Тамагочи в качестве ключа для домофона и проездного в метро

Reading time2 min
Views48K


В видео показан способ превращения тамагочи в домофонный ключ и проездной для общественного транспорта.В итоге мы получаем двухдиапазонный ключ на 125 кГц и 13 МГц.
В качестве низкочастотного чипа используется перезаписываемый Atmel T5577.
Вместо проездного можно использовать любой высокочастотный чип, например mifare zero для записи на него студенческой карты.

Читать дальше →

Как отобразить количество оповещений в названии вкладки браузера

Reading time3 min
Views33K


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

Существует пара наиболее распространенных способов оповещения пользователя. С одной стороны, социальные сети Facebook, Twitter и LinkedIn указывают определенное число, которое соответствует количеству обновлений. С другой стороны, Trello отображает небольшой красный кружок поверх favicon.

Trello Facebook and Twitter notifications
Оповещения Trello, Facebook и Twitter

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

Посмотреть на GitHub
Демо (рус.)
Читать дальше →

Простой PHP генератор сложных HTML таблиц

Reading time5 min
Views51K
Всем привет. Хочу поделиться свеженаписанным генератором HTML таблиц.

Участились случаи сбора различной статистики и компоновки ее в сложные таблицы с различными групировками.

image

Заметив такую тенденцию решил автоматизировать рисование таблиц.

Как итог:
  • Избавил себя от составления слоеных циклов для вывода массива;
  • Получил стандартизацию структуры массивов;
Читать дальше →

Kodak Zx5 — обновленное железо в обновленном корпусе

Reading time4 min
Views9.8K
Продолжу серию обзоров карманных камкодеров от Kodak. На этот раз речь пойдет об обновленном Kodak Playsport, а именно Kodak Playsport Zx5. Обзор будет разбавлен впечатлениями о старой модели Kodak Zi8.

Улучшения в новой версии Playsport по отношению к предыдущим:
— Автофокус
— Улучшенное фокусное расстояние 37 мм против 40 и 42 мм у Zx3 и Zi8 соответственно (при разрешении 720p)
— Более чувствительная матрица, хоть и меньших размеров
— Меню прошивки Zx5 полностью переработано и отличается от Zx3 или Zi8
— В Zx5 после Zx3 вернули макро съемку
— Битрейт выше, чем у Zi8.
— Средняя цена в начале продаж 6000 руб вместо 7000 руб за Zi8.

Количество режимов съемки не изменилось, их всё еще 5:
WVGA — 848 x 480, 30 кадров/с (iPad compatible)
720p — 1280 x 720, 30 кадров/с
720p — 1280 x 720, 60 кадров/с
1080p — 1920 x 1080, 30 кадров/с
фото — 5,3 МП

Внешний вид и комплектация

Выглядит новое чудо техники вот так:


Читать дальше →

Реклама на Youtube. Один из методов борьбы

Reading time1 min
Views42K
Привет, Хабр.
В свете изменений работы Youtube c рекламой (см. пост), думаю, что для многих людей будет востребованным клиент для просмотра роликов отдельно от браузера.

Я остановился на последней версии плеера Minitube 1.4.3 распространяемого под Windows, Linux, Mac и в виде исходных кодов.

Из достоинств такого рода приложений стоит отметить:
— блокировку дурацкой всплывающей рекламы пылесосов (думаю, что заблокирует и видео рекламу);
— не нужно грузить машину флешем (актуально для владельцев нетбуков и слабых ноутбуков);
— довольно грамотно реализованный механизм поиска;
— в большинстве клиентов реализован механизм скачивания понравившегося ролика, в minitube можно скачивать в нужном качестве.
Каждый сможет поискать альтернативный клиент, я рассказываю на примере minitube, потому что активно использую его.
Читать дальше →

Возвращаем прошитый HTC Desire S к стоковому состоянию

Reading time3 min
Views58K
В прошлый раз я рассказывал, как можно установить на HTC Desire S альтернативную прошивку от Cyanogen, теперь давайте разберемся, как же вернуть телефон к фабричному виду.
Читать дальше →

Заботливое компьютерное кресло

Reading time8 min
Views256K
   Выбор нового компьютерного кресла у меня начался с того, что неприятность случилась с предыдущим – в крестовине ножки появилась большая трещина, из-за которой пневмопатрон с хрустом ушел в пол и заклинил, прилично исцарапав весь ламинат.

image

   Насчет ламината меня быстро успокоили – оказывается, были случаи, когда пневмопатрон выходил через верх, делая больно беспечному владельцу вплоть до летального исхода )
Читать дальше →

«Мм… Стационарный, это как?» — или без лоха и жизнь плоха

Reading time1 min
Views736
Прошел год, а ничего не изменилось — фирмы по ремонту компьютерной техники как плодились так и плодятся. Обман, развод на ровном месте, дискредитация в лицах.

Ролик снимался год назад для информационного сайта. В роли «жертвы» — мой друг, имеющий дело с компьютерным железом каждый день и знающий реальные расценки на подобные услуги.

Ошибка в Windows 7

Reading time1 min
Views463
Рассмотрим следующий сценарий: у вас — компьютер под управлением Windows 7 или Windows Server 2008 R2. Вы добавляете в систему жёсткий диск объёмом более 2 Терабайт. Вы конфигурируете систему на сохранение dump-файлов на определённый том этого жёсткого диска.

И здесь вас может поджидать неприятный «баг», документированный корпорацией Microsoft. Из-за проблем с адресацией dump-файл пытается разместиться за пределами адресного пространства жёсткого диска. Происходит сбой в работе операционной системы, она сохраняет dump-файл, и в результате один или несколько томов указанного жёсткого диска оказываются логически повреждёнными, а вся информация на них становится недоступной.

Примерно такая же ситуация из-за проблем адресации с дальнейшим повреждением логической структуры диска возникает в случае сохранения файла Hiberfile.sys (в процессе включения режима «спячки»). Естественно, если у вас повреждённым оказывается том, на котором установлена операционная система, компьютер перестанет загружаться.

Ошибка очень серьёзная, что и говорить. Подробности о ней вы можете узнать на этой странице. Заплатки в открытом доступе нет, но если она вам требуется, вы можете заказать её скачивание в службе поддержки корпорации Microsoft.

p.s.Оригинал статьи

SkypeIN в России

Reading time1 min
Views556
Пользователи, следящие за появлением SkypeIN в России, не могли пропустить в феврале пост о появлении подобной услуги.

Теперь уже американская компания Telphin USA выходит на российский рынок услуг предоставления прямых номеров для пользователей Skype:
Читать дальше →

Ба! Знакомые все лица! (Lightroom 3 и распознавание лиц)

Reading time2 min
Views6.6K
image
Сравнительно недавно, «по совету друзей», открыл для себя программу Google Picasa. Больше всего понравилась мне возможность распознавания лиц и автоматической простанавки тегов на их основе. Несколько дней я провел над подписыванием лиц в своей немаленькой фотоколлекции… Когда же работа была завершена, то встал вопрос — что же делать дальше? Ибо в качестве каталогизатора и редактора Picasa серьезно уступает специализированным инструментам. Постепенно вопрос трансформировался в такой: как перенести (а лучше регулярно синхронизировать) информацию о контактах из Picasa в предпочитаемый мною Lightroom?
Что же в итоге получилось?

Вывод средств из webmoney c помощью «мгновенных» переводов

Reading time4 min
Views1.2K
image
Доброго времени суток, хабрасообщество.

Хочу поделиться опытом попытки вывода денежных средств из платежной системы Webmoney. «Мгновенные» переводы не оправдали своего названия, но обо всём по порядку.

Предыстория


Наверное многие участники системы Webmoney хотя бы раз пользовались денежными переводами ( perevod.webmoney.ru ) для осуществления вывода средств наличными из системы, хотя перевод по банковской карте гораздо удобнее и безопаснее. Но всё же, не всегда есть возможность вывода по карте, потому иногда приходится пользоваться переводами, особенно, когда деньги нужны как можно быстрее. Так вот, я привык пользоваться переводами, больше всего радует система «Анелик», но с недавних пор на сайте perevod.webmoney.ru появилась новая система денежных переводов под названием «Золотая корона», которой я решил на этот раз воспользоваться, так как один из «пунктов выдачи денежных средств» был прямо перед моим домом, через дорогу. К моему удивлению, таким пунктом оказался один из магазинов известной российской сети салонов мобильной связи «Связной» ( www.svyaznoy.ru ). Но так как деньги нужны были срочно, я не долго думая подтвердил перевод и после часа ожидания побежал в Связной за желанными деньгами. Но не тут-то было, подробности под катом.
Читать дальше →

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Works in
Date of birth
Registered
Activity