Как стать автором
Обновить
0
0

Пользователь

Отправить сообщение

Среда разработки PHP на базе Docker

Время на прочтение12 мин
Количество просмотров59K

Решение на базе Docker, которое позволит создать на локальном компьютере универсальную среду разработки на PHP за 30 - 40 минут. Несколько версий PHP — 7.3 и 7.1 с набором наиболее востребованных расширений. Готовый к работе монитор процессов Supervisor. Предварительно сконфигурированный веб-сервер Nginx. Базы данных: MySQL 5.7MySQL 8PostgreSQLMongoDB 4.2Redis. Настройка основных параметров окружения через файл .env. Возможность модификации сервисов через docker-compose.yml.

Читать далее
Всего голосов 18: ↑16 и ↓2+19
Комментарии38

Законы программирования

Время на прочтение20 мин
Количество просмотров58K

Законы, теории, принципы и закономерности, полезные для разработчиков


Введение


Перевод репозитория github.com/dwmkerr/hacker-laws

При обсуждениях, связанных с разработкой ПО, люди часто говорят о различных законах. В данном репозитории хранятся ссылки и описания некоторых из наиболее известных из них.

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

Законы


Закон Амдала


Закон Амдала — это формула, демонстрирующая потенциал ускорения вычислительной задачи, которого можно достичь при увеличении количества ресурсов системы. Обычно он используется в параллельных вычислениях, и может предсказать наличие реальных преимуществ от увеличения количества процессоров с учётом ограничений параллелизуемости программы.
Читать дальше →
Всего голосов 67: ↑65 и ↓2+80
Комментарии21

10 отличных Github репозиториев, которые должен знать каждый веб-разработчик

Время на прочтение3 мин
Количество просмотров98K

Кроме огромных репозиториев с источниками для подготовки к интервью, здесь много чего интересного


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


image


А я его перевел, т.к. показалось, что пост многим будет интересен. Перевод очень вольный: я опустил нерелевантные промо-ссылки и гипер эмоциональные похвалы автора оригинала, чтобы оставить только суть. Еще, обновил цифры, чтобы информация была более актуальной к моменту публикации этого перевода. Итак, перейдем к списку.
Читать дальше →
Всего голосов 63: ↑56 и ↓7+62
Комментарии8

PHP-Дайджест № 161 (15 – 29 июля 2019)

Время на прочтение4 мин
Количество просмотров16K

Свежая подборка со ссылками на новости и материалы. В выпуске: PHP 7.4.0 beta 1, PhpStorm 2019.2, PSR-12, обзор RFC предложений из PHP Internals, новости с Laracon US, подкасты, порция полезных инструментов, и многое другое.

Приятного чтения!


Читать дальше →
Всего голосов 50: ↑50 и ↓0+50
Комментарии6

Как сделать код-ревью быстрее и эффективнее

Время на прочтение6 мин
Количество просмотров21K
image

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

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

Получается, что чем объемнее пул-реквест, тем меньше пользы будет от его проверки.
Читать дальше →
Всего голосов 44: ↑40 и ↓4+36
Комментарии24

RoadRunner: PHP не создан, чтобы умирать, или Golang спешит на помощь

Время на прочтение8 мин
Количество просмотров52K


Привет, Хабр! Мы в Badoo активно работаем над производительностью PHP, поскольку у нас достаточно большая система на этом языке и вопрос производительности — это вопрос экономии денег. Более десяти лет назад мы создали для этого PHP-FPM, который сначала представлял собой набор патчей для PHP, а позже вошёл в официальную поставку.

За последние годы PHP сильно продвинулся вперёд: улучшился сборщик мусора, повысился уровень стабильности — сегодня на PHP можно без особых проблем писать демоны и долгоживущие скрипты. Это позволило Spiral Scout пойти дальше: RoadRunner, в отличие от PHP-FPM, не очищает память между запросами, что даёт дополнительный выигрыш в производительности (хотя этот подход и  усложняет процесс разработки). Мы сейчас экспериментируем с этим инструментом, но у нас пока нет результатов, которыми можно было бы поделиться. Чтобы ждать их было веселее, публикуем перевод анонса RoadRunner от Spiral Scout.

Подход из статьи нам близок: при решении своих задач мы тоже чаще всего используем связку PHP и Go, получая преимущества от обоих языков и не отказываясь от одного в пользу другого.

Enjoy!
Читать дальше →
Всего голосов 75: ↑74 и ↓1+73
Комментарии53

Статический анализ PHP-кода на примере PHPStan, Phan и Psalm

Время на прочтение20 мин
Количество просмотров65K


Компания Badoo существует уже более 12 лет. У нас очень много PHP-кода (миллионы строк) и наверняка даже сохранились строки, написанные 12 лет назад. У нас есть код, написанный ещё во времена PHP 4 и PHP 5. Мы выкладываем код два раза в день, и каждая выкладка содержит примерно 10—20 задач. Помимо этого, программисты могут выкладывать срочные патчи — небольшие изменения. И в день таких патчей у нас набирается пара десятков. В общем, наш код меняется очень активно.

Мы постоянно ищем возможности как для ускорения разработки, так и для повышения качества кода. И вот однажды мы решили внедрить статический анализ кода. Что из этого получилось, читайте под катом.
Читать дальше →
Всего голосов 77: ↑76 и ↓1+75
Комментарии51

Моё разочарование в софте

Время на прочтение11 мин
Количество просмотров390K

Суть разработки программного обеспечения
— Нужно проделать 500 отверстий в стене, так что я сконструировал автоматическую дрель. В ней используются элегантные точные шестерни для непрерывной регулировки скорости и крутящего момента по мере необходимости.
— Отлично, у неё идеальный вес. Загрузим 500 таких дрелей в пушку, которые мы сделали, и выстрелим в стену.


Я занимаюсь программированием уже 15 лет. Но в последнее время при разработке не принято думать об эффективности, простоте и совершенстве: вплоть до того, что мне становится грустно за свою карьеру и за IT-отрасль в целом.

Для примера, современные автомобили работают, скажем, на 98% от того, что физически позволяет нынешняя конструкция двигателя. Современная архитектура использует точно рассчитанное количество материала, чтобы выполнять свою функцию и оставаться в безопасности в данных условиях. Все самолёты сошлись к оптимальному размеру/форме/нагрузке и в основном выглядят одинаково.

Только в программном обеспечении считается нормальным, если программа работает на уровне 1% или даже 0,01% от возможной производительности. Ни у кого вроде нет возражений.
Всего голосов 505: ↑474 и ↓31+443
Комментарии2474

CORS, CSP, HTTPS, HSTS: о технологиях веб-безопасности

Время на прочтение8 мин
Количество просмотров39K
Автор материала, перевод которого мы публикуем сегодня, говорит, что существует множество причин изучать веб-безопасность. Например, вопросами безопасности интересуются пользователи веб-сайтов, которых беспокоит возможность кражи их персональных данных. Безопасность заботит веб-разработчиков, которые стремятся к повышению уровня защиты создаваемых ими проектов. То же самое можно сказать и о начинающих программистах, которые ищут работу и готовятся к собеседованиям. Цель этой статьи заключается в том, чтобы понятным языком рассказать о некоторых важных технологиях веб-безопасности. Прежде чем приступить к разговору об этих технологиях, при упоминании которых обычно оперируют сокращениями вроде CORS, CSP и HSTS, рассмотрим пару базовых концепций безопасности.

image
Читать дальше →
Всего голосов 22: ↑21 и ↓1+20
Комментарии2

Что записано в файле .ssh/known_hosts

Время на прочтение5 мин
Количество просмотров63K

Каждый раз, когда мы подключаемся по протоколу ssh к серверу, ssh клиент проверяет совпадает ли публичный ключ для этого сервера с тем, который был прошлый раз (по крайней мере так рекомендует делать стандарт ssh). В OpenSSH список известных ключей серверов хранится в файле known_hosts. Под катом коротко о том, что и как конкретно там хранится.

Читать дальше →
Всего голосов 47: ↑45 и ↓2+43
Комментарии15

Введение в систему модулей Go

Время на прочтение8 мин
Количество просмотров173K

Грядущий релиз версии 1.11 языка программирования Go принесет экспериментальную поддержку модулей — новую систему управления зависимостями для Go. (прим.перев.: релиз состоялся)


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


Итак, вот, что мы будем делать: создадим новый пакет и потом сделаем несколько релизов, чтобы посмотреть, как это работает.

Читать дальше →
Всего голосов 34: ↑32 и ↓2+30
Комментарии49

15 HTML-методов элементов, о которых вы, вероятно, никогда не слышали

Время на прочтение7 мин
Количество просмотров18K
От переводчика: Дэвид Гилбертсон (David Gilbertson) — известный автор, который пишет о веб- и криптовалютных технологиях. Он смог собрать большую аудиторию читателей, которым рассказывает о всяких хитростях и интересностях этих областей.



Небольшое вступление

Давайте обсудим разницу между HTML и DOM.

Например, возьмем элемент table из HTML. Вы можете использовать его в файле с расширением .html. В нем мы указываем набор атрибутов, которые определяют внешний вид и «поведение» страницы.
Читать дальше →
Всего голосов 53: ↑31 и ↓22+9
Комментарии18

Centrifugo v2 — будущее сервера real-time сообщений и библиотека для Go

Время на прочтение11 мин
Количество просмотров25K

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


Меня зовут Александр Емелин. Летом прошлого года я присоединился к команде Авито, где сейчас помогаю разрабатывать бэкенд мессенджера Авито. Новая работа, напрямую связанная с быстрой доставкой сообщений пользователям, и новые коллеги вдохновили меня продолжать работу над open-source проектом Centrifugo.


Читать дальше →
Всего голосов 73: ↑69 и ↓4+65
Комментарии40

25 ошибок начинающего программиста

Время на прочтение19 мин
Количество просмотров128K

Научитесь выявлять их. Выработайте привычки избегать их.


Цель этой статьи не загнобить новичков за типичные ошибки, а научить выявлять их и избегать. Порядок перечисления – случайный.

От переводчика


Иногда бывает трудно объяснить простыми словами казалось бы банальные вещи: зачем использовать гит, в чем фишка инкапсуляции, зачем писать тесты, как планировать свой код, рефакторить чужой и т.д. Мне показалось, что в этой статье компактно собраны важные «гуманитарные» аспекты программирования. Что-то вроде морального кодекса, ориентира и мотиватора в принятии решений, связанных с написанием кода.

Как бы это смешно не звучало, я работал над этим текстом с середины марта, стараясь подобрать подходящие формулировки и упростить для восприятия. Ещё пару дней воевал с хабра-редактором. Поэтому, если вы найдёте недочёты, прошу не винить меня в нерадении, а оповестить, я их сразу же исправлю. Я думал украсить статью картинками, но решил, что это только раздует её до совсем неприличных размеров. Приятного чтения.
Читать дальше →
Всего голосов 78: ↑69 и ↓9+60
Комментарии231

Видео с первого Badoo PHP Meetup 7.04.2018

Время на прочтение2 мин
Количество просмотров9.7K


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

7 апреля мы впервые собрали PHP-сообщество в офисе Badoo. Спасибо всем, кто пришел пообщаться, и тем, кто был с нами онлайн!

Похоже, пэхэпэшники изголодались по митапам. Встреча получилась ну очень душевной — разговоры за жизнь и PHP из afterpaty переместились в afterchat, который до сих пор активен (несмотря ни на что).

Но вернемся к нашим докладам. Под катом — записи выступлений, слайды, комментарии гостей и фотоотчет.
Всего голосов 54: ↑51 и ↓3+48
Комментарии3

Современный PHP без фреймворков

Время на прочтение13 мин
Количество просмотров91K


У меня есть для вас непростое задание. Когда в следующий раз начнёте новый проект, постарайтесь обойтись без PHP-фреймворка. Я не собираюсь перечислять недостатки фреймворков, и это не проявление синдрома неприятия чужой разработки: в этом руководстве мы будем использовать пакеты, написанные разработчиками нескольких фреймворков. Я всецело уважаю инновации в этой сфере.

Читать дальше →
Всего голосов 96: ↑78 и ↓18+60
Комментарии265

Малюсенький CI вашего Symfony проекта за 2 минуты

Время на прочтение2 мин
Количество просмотров11K
Без воды о том, как за 10 минут сделать:

  1. Проверяем ваш composer.json на серьезные и несерьезные ошибки, вроде неоптимального autoload
  2. Проверяем ваш composer.lock на security уязвимости в пакетах
  3. Проверяем вашу базу данных, что ничего не забыли
  4. Проверяем ваши YAML файлы
  5. Проверяем Coding Style по Symfony
Читать дальше →
Всего голосов 22: ↑21 и ↓1+20
Комментарии7

Как писать на ассемблере в 2018 году

Время на прочтение13 мин
Количество просмотров322K


Статья посвящена языку ассемблер с учетом актуальных реалий. Представлены преимущества и отличия от ЯВУ, произведено небольшое сравнение компиляторов, скрупулёзно собрано значительное количество лучшей тематической литературы.
Читать дальше →
Всего голосов 117: ↑102 и ↓15+87
Комментарии167

Defer: из Go в PHP

Время на прочтение3 мин
Количество просмотров11K

В языке Go есть полезная конструкция defer. Обычно она используется для освобождения ресурсов и работает следующим образом: в качестве аргумента defer передается функция, которая помещается в список функций. Этот список функций выполняется при выходе из объемлющей функции.


У defer есть несколько очевидных и не очень достоинств:


  • улучшает понимание кода — при создании ресурса сразу виден код, ответственный за его освобождение. Не нужно искать try {} finally {} или все точки выхода из функции
  • позволяет избежать частых ошибок, связанных с освобождением ресурсов, например, с необработанными исключениями, или в случае открытия нескольких ресурсов.
Читать дальше →
Всего голосов 28: ↑19 и ↓9+10
Комментарии26

Рассказ о том, как создать хранилище и понять Redux

Время на прочтение12 мин
Количество просмотров21K
Redux — это интересный шаблон, и, по своей сути, он очень прост. Но почему его сложно понять? В этом материале мы рассмотрим базовые концепции Redux и разберёмся с внутренними механизмами хранилищ. Поняв эти механизмы, вы сможете освоиться со всем тем, что происходит, что называется, «под капотом» Redux, а именно — с тем, как работают хранилища, редьюсеры и действия. Это поможет вам вывести на новый уровень отладку приложений, поможет писать более качественный код. Вы будете точно знать, какие именно функции выполняет та или иная строка вашей программы. Мы будем идти к пониманию Redux через практический пример, который заключается в создании собственного хранилища с использованием TypeScript.

image

Этот материал основан на исходном коде хранилища Redux, написанном на чистом TypeScript. Автор предлагает всем желающим взглянуть на этот код и разобраться с ним. Однако, он указывает на то, что этот проект предназначен для учебных целей.
Читать дальше →
Всего голосов 22: ↑16 и ↓6+10
Комментарии23

Информация

В рейтинге
Не участвует
Откуда
Россия
Дата рождения
Зарегистрирован
Активность