Пользователь
Исповедь Битрикс хейтера
В комментариях к статьям писали, что не хватает конкретики, примеров, более глубокого обзора.
Данная статья — попытка этот обзор написать. Хотя нет, это скорее пост ненависти и боли (может даже немного нытья). Это такой расширенный вариант поста про минусы от pistol. Я постараюсь описать большинство тех вещей, которые раздражают именно меня и моих коллег в Битриксе. Постараюсь собрать в одном посте все те минусы, которые доставляют ежедневно очень много боли. Под конец я постараюсь сделать выводы.
Кто я такой? Да в общем-то, обычный разработчик. Работаю с битриксом с ноября 2010 года (5.5 лет). Работаю только с битриксом, не сделал ни одного коммерческого проекта на других CMS, не использовал фреймворки в создании сайтов. По роду деятельности я занимаюсь в основном интернет-магазинами, их созданием, поддержкой и развитием.
Сравниваем PHP FPM, PHP PPM, Nginx Unit, React PHP и RoadRunner
Тестирование производилось с помощью Yandex Tank.
В качестве приложения использовались Symfony 4 и PHP 7.2.
Целью являлось сравнение характеристик сервисов при разных нагрузках и нахождение оптимального варианта.
Для удобства все собрано в docker-контейнеры и поднимается с помощью docker-compose.
Под катом много таблиц и графиков.
RoadRunner: PHP не создан, чтобы умирать, или Golang спешит на помощь
Привет, Хабр! Мы в Badoo активно работаем над производительностью PHP, поскольку у нас достаточно большая система на этом языке и вопрос производительности — это вопрос экономии денег. Более десяти лет назад мы создали для этого PHP-FPM, который сначала представлял собой набор патчей для PHP, а позже вошёл в официальную поставку.
За последние годы PHP сильно продвинулся вперёд: улучшился сборщик мусора, повысился уровень стабильности — сегодня на PHP можно без особых проблем писать демоны и долгоживущие скрипты. Это позволило Spiral Scout пойти дальше: RoadRunner, в отличие от PHP-FPM, не очищает память между запросами, что даёт дополнительный выигрыш в производительности (хотя этот подход и усложняет процесс разработки). Мы сейчас экспериментируем с этим инструментом, но у нас пока нет результатов, которыми можно было бы поделиться. Чтобы ждать их было веселее, публикуем перевод анонса RoadRunner от Spiral Scout.
Подход из статьи нам близок: при решении своих задач мы тоже чаще всего используем связку PHP и Go, получая преимущества от обоих языков и не отказываясь от одного в пользу другого.
Enjoy!
Yandex «Почта для домена» как почтовый шлюз для ваших серверов
Каждый раз поднимая новый сервер в облаках, вы получаете случайный IP-адрес. Не все понимают, что IP-адрес может попасть к вам с "историей". Часто приходится тратить время на удаление IP из публичных черных списков. В моём случае в последний раз это была очень неторопливая переписка с mail.ru, которая ни к чему не привела. После этого, создав новый сервер, я задумался: как же сделать так, чтобы не огребать проблем с такими IP-адресами?
Пишем CLI модуль для Zend Framework 2
Приветствую!
Недавно начал работать с Zend Framework 2, и возникла потребность написать cli модуль работающий с миграциями базы данных.
В этой статье я опишу как создать модуль для Zend 2 для работы с ним из командной строки на примере модуля миграций, как написать тесты, как опубликовать модуль в packagist.org
Что такое миграции: Миграции базы данных — это система классов описывающая действия над базой данных и позволяющая выполнять эти действия.
Установка фрэймворка
Начнем с установки фрэймворка, в качестве каркаса возьмем ZendSkeletonApplication
Пример разработки блога на Zend Framework 2. Часть 1. ZendSkeletonApplication
В процессе ознакомления с Zend Framework 2 я изучил туториал с официального сайта (http://framework.zend.com/manual/2.2/en/user-guide/overview.html), просмотрел документацию фреймворка (http://framework.zend.com/manual/2.2/en/index.html), прочитал книгу Michael Romer “Web development with Zend Framework 2” и собрал собственное тестовое приложение.
Переварив всю эту информацию, я пришел к мысли, что официальный туториал к фреймворку суховат:
- в нем не рассказывается о работе с пользователями, сессиями и правами доступа,
- лишь вскользь рассматривается такая основополагающая часть фреймворка как ServiceManager,
- в качестве интерфейса с базой данных безальтернативно используется паттерн Table Gateway (и соответствующая его реализация в фреймворке),
- используется встроенный в фреймворк шаблонизатор, который после питоновского Jinja 2 кажется совершенно неудобным и примитивным,
- и т.д.
В итоге, более-менее удовлетворительное по функционалу приложение я смог создать после прочтения книги.
В этой статье я хочу привести пример разработки простого блога, в ней будет несколько отличий от официального туториала. В первую очередь я постараюсь заострить внимание на тех вопросах, которые во время изучения показались мне недостаточно раскрытыми в официальном туториале. Кроме того я буду использовать некоторые технологии, альтернативные тем, что используются в Zend фреймворке по умолчанию:
- в качестве шаблонизатора будет использоваться Twig,
- для работы с БД — Doctrine ORM,
- для авторизации/аутентификации и распределения прав доступа я буду использовать существующие модули ZfcUser и BjyAuthorize,
- также я рассмотрю вопросы разработки собственных валидаторов форм, View плагинов и другие.
Пример разработки блога на Zend Framework 2. Часть 2. Модуль MyBlog
Установка и настройка дополнительных модулей
Первым делом хочу отметить, что установка стороннего модуля в Zend Framework обычно состоит из примерно таких четырех шагов:
- добавляем соответствующую строчку в composer.json, чтобы сообщить Композеру о новом модуле,
- выполняем команду php composer.phar update, чтобы Композер загрузил новый модуль и при необходимости перегенерировал автолоад файлы,
- добавляем новый модуль в список modules в файле config/application.config.php,
- при необходимости, размещаем конфигурационный файл модуля (обычно пример такого файла находится в папке config модуля) в config/autoload и делаем в нем необходимые правки.
Также, хочу подчеркнуть, что для всех модулей, перечисленных далее я задаю минимально необходимые для их работы настройки, более подробно о настройках и возможностях каждого из модулей можно узнать на их страницах документации.
Давайте начнем с установки простого, но полезного модуля Zend Developer Tools.
Миграция базы данных в Zend Framework: Akrabat_Db_Schema_Manager
Flow — статический анализ типов в JS от Facebook
Flow умеет вычислять тип переменной, без внесения изменений в код (в отличии от TypeScript) что позволяет начать использовать его уже сейчас в любом проекте. Также есть возможность самостоятельно указывать типы в стиле TypeScript.
Есть 3 режима:
- Не проверять ничего, по умолчанию
- Проверка без использования аннотаций (с коментарием-аннотацией, как в React)
- Строгое указание типа переменной (с внесением изменения непосредственно в код)
Овощи для астронавтов: как растят свежую зелень в лабораториях НАСА
Астронавт Скотт Келли на фоне системы Veggie с выросшим на МКС салатом
Человеку для того, чтобы хорошо себя чувствовать, нужно не так уж и много: здоровый сон, физические упражнения, качественное питание и еще пара вещей. Питание здесь один из критических факторов. И этот фактор становится еще более важным, если речь идет о самочувствии человека на орбите. Отправляясь на орбиту на несколько месяцев, астронавты должны получать качественное питание со сбалансированным содержанием полезных веществ, включая витамины. Ну, а лучший способ получить витамины — включить в рацион свежие овощи и фрукты.
С фруктами дело обстоит не слишком хорошо (хотя время от времени они попадают на МКС), а вот овощи астронавты сейчас получают регулярно. Кроме того, специалисты НАСА разрабатывают программу выращивания растений прямо на МКС (часть программы уже реализована) или на борту космического корабля, который летит, к примеру, на Марс. Путешествие к Красной планете займет несколько месяцев, а доставлять на борт корабля продукты с Земли, как это делается для астронавтов на борту МКС, не получится. Поэтому ученые пришли к выводу, что следует научиться выращивать часть продуктов прямо на корабле.
Откуда берутся вода и кислород на МКС?
Гимн 13 отдела.
Не космонавты мы, не летчики,
Не инженеры, не врачи.
А мы водо-водопроводчики:
Мы гоним воду из мочи!
И не факиры, братцы, вроде мы,
Но, не бахвалясь, говорим:
Круговорот воды в природе мы
В системе нашей повторим!
Наука наша очень точная.
Вы только дайте мысли ход.
Мы перегоним воды сточные
На запеканки и компот!
Проехав все дороги Млечные,
Не похудеешь вместе с тем
При полном самообеспеченьи
Наших космических систем.
Ведь даже торты превосходные,
Люля кебаб и калачи
В конечном счете — из исходного
Материала и мочи!
Не откажите ж, по возможности,
Когда мы просим по утрам
Наполнить колбу в общей сложности
Хотя бы каждый по сто грамм!
Должны по-дружески признаться мы,
Что с нами выгодно дружить:
Ведь без утили-тилизации
На белом свете не прожить!!!
Как правильно качать в p2p сетях или магнит с битрейтом
br=192000
В магнет-ссылке он выглядит так.
magnet:?dn=pop_music.mp3...&br=192000
Этот параметр позволяет совместить преимущества последовательного и случайного выбора частей для загрузки. Назовем это «смешанный способ выбора частей». Тем самым давая возможность «онлайн» просмотра/прослушивания без ущерба для скорости загрузки.
Мне 14, и я совмещаю школу с работой в ИТ
Когда мне было семь, папа купил наш первый Ардуино и мы сделали игрушку для котов. Лазерная указка подвешивалась на два сервомотора и пускала луч — а животные носились за красной точкой по комнате. Я стал копатьcя в программе, что написал отец, пытаясь понять, как все работает… и так попробовал C++.
Быстро поняв, что “плюсы” для первоклассника как-то не очень, а вот программировать мне интересно, я засел за Scratch — учить его как раз посоветовал папа. Когда перерос его, отец показал пару приёмов на Python. Потом был классический путь: захотелось смастерить веб-страничку, засел за jQuery, JS-фреймворки и Node.js. И вот он я)
Создаем чат на Node.js и Socket.IO
В моем случае сервер работает под Ubuntu, поэтому все примеры будут для неё (и ссылки в примерах — на него же).
Установка компонентов
Первым делом нам потребуются собственно Node.js (инструкция по инсталляции и ссылки на скачивание здесь) и Socket.IO. Модули для Node.js проще всего устанавливать, используя менеджер npm —
curl http://npmjs.org/install.sh | sh
npm install socket.io
Серверная часть
Структура серверной части такова: сервер принимает сообщение, если это команда — выполняет определенные действия, если просто сообщение — рассылает всем остальным участникам.
Использование map и reduce в функциональном JavaScript
За всеми этими разговорами о новых стандартах легко забыть о том, что именно ECMAScript 5 подарил нам ряд инструментов, благодаря которым мы сегодня можем использовать функциональное программирование в JavaScript. Например, нативные методы map() и reduce() на базе JS-объекта
Array
. Если вы до сих пор не пользуетесь map()
и reduce()
, то сейчас самое время начать. Наиболее современные JS-платформы нативно поддерживают ECMAScript 5. Использование этих методов позволит сделать ваш код гораздо чище, читабельнее и удобнее в обслуживании. map()
и reduce()
помогут вам встать на путь более элегантной функциональной разработки. Встречаем сервис от Cloudflare на адресах 1.1.1.1 и 1.0.0.1, или «полку публичных DNS прибыло!»
Компания Cloudflare представила публичные ДНС на адресах:
- 1.1.1.1
- 1.0.0.1
- 2606:4700:4700::1111
- 2606:4700:4700::1001
Утверждается, что используется политика "Privacy first", так что пользователи могут быть спокойны за содержание своих запросов.
Сервис интересен тем, что кроме обычного DNS предоставляет возможность использовать технологий DNS-over-TLS и DNS-over-HTTPS, что здорово помешает провайдерам по пути запросов подслушивать ваши запросы — и собирать статистику, следить, управлять рекламой. Cloudflare утверждает, что дата анонса (1 апреля 2018, или 04/01 в американской нотации) была выбрана не случайно: в какой еще день года представить "четыре единицы"?
15 лучших JavaScript-библиотек для построения диаграмм и сводных таблиц
В этой статье я покажу вам некоторые из лучших JavaScript библиотек для построения диаграмм/схем (и сводных таблиц). Эти библиотеки помогут вам в создании красивых и настраиваемых графиков для ваших будущих проектов.
Хотя большинство библиотек являются бесплатными и свободно распространяемыми, для некоторых из них есть платные версии с дополнительным функционалом.
Pixi.js — 2D движок с прозрачной поддержкой WebGL
Что такое стек MERN, и как с ним работать?
Давным-давно мы выпускали пилотный проект о стеке MEAN (Mongo, Express, Angular, Node), который нас в целом не разочаровал, однако, допечаток и обновлений мы в свое время решили не делать — в отличие от издательства Manning, которое эту книгу обновило. Тем не менее, мы продолжаем поиски в данном направлении и сегодня хотели бы поговорить с вами о родственном стеке MERN, где на клиенте располагается не Angular, а React. Слово предоставляется Тиму Смиту.
Information
- Rating
- Does not participate
- Location
- Гродно, Гродненская обл., Беларусь
- Date of birth
- Registered
- Activity