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

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

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

Динамическая типизация — это не инструмент для разработки. Это чепуха (паршивая)

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


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

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

Большую часть жизни я просто махал на них рукой и проходил мимо. Эти глупцы не понимают очевидных вещей, и я не нанимался разъяснять каждому js-нику, почему его код — это не разработка, а игрушечное прототипирование. Но время идёт, а количество идиотов вокруг и не думает уменьшаться, вместо того, чтобы всей своей фронтенд индустрией переехать наконец на статический тайпскрипт, эти ослы начинают использовать всякие кложуры, писать тонны тестов, и идти на все мыслимые ухищрения — лишь бы не разбираться в типах.
Читать дальше →
Всего голосов 398: ↑273 и ↓125+212
Комментарии1975

Юлия → Iuliia. Всё о транслитерации

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

Транслитерация


Транслитерация — это запись кириллических слов латиницей (Анна → Anna, Самара → Samara). Её используют в загранпаспортах, водительских удостоверениях, трансграничной доставке, библиотечных каталогах и множестве других международных процессов.


Так вышло, что я недавно окунулся в эту тему, а в Википедии она раскрыта слабо. Поэтому расскажу, что к чему (спойлер — если вы думаете, что с транслитерацией всё плохо, то на самом деле всё ещё хуже).


И конечно, поскольку это Хабр — предложу open-source библиотеки для решения проблемы.

Читать дальше →
Всего голосов 146: ↑145 и ↓1+191
Комментарии545

Работа с JSON RPC в Symfony 4

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


Всем привет, сегодня поговорим о том, как подружить Symfony 4, JSON RPC и OpenAPI 3.


Данная статья рассчитана не на новичков, вы уже должны понимать как работать с Symfony, Depedency Injection и другими «страшными» вещами.


Сегодня рассмотрим одну конкретную реализацию JSON RPC.

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

Сравниваем PHP FPM, PHP PPM, Nginx Unit, React PHP и RoadRunner

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


Тестирование производилось с помощью Yandex Tank.
В качестве приложения использовались Symfony 4 и PHP 7.2.
Целью являлось сравнение характеристик сервисов при разных нагрузках и нахождение оптимального варианта.
Для удобства все собрано в docker-контейнеры и поднимается с помощью docker-compose.
Под катом много таблиц и графиков.
Читать дальше →
Всего голосов 72: ↑67 и ↓5+62
Комментарии46

PHP-Дайджест № 177 (23 марта – 6 апреля 2020)

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

Свежая подборка со ссылками на новости и материалы. В выпуске: расписание релиза PHP 8, анализ эргономики объектов в PHP и 5 свежих RFC из PHP Internals, немного полезных инструментов, видео, подкасты и многое другое.

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


Читать дальше →
Всего голосов 34: ↑33 и ↓1+46
Комментарии14

Деплой веб-приложений с помощью Ansistrano

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

ansistrano.deploy и ansistrano.rollback — роли Ansible, предназначенные для управления процессом развертывания приложений, созданных на скриптовых языках программирования (например, PHP, Python и Ruby). По сути это реализация Capistrano в Ansible.


Использование Ansistrano дает следующие преимущества:


  • откат за секунды (с ролью ansistrano.rollback);
  • настройка процедуры развертывания с использованием методов-обработчиков событий «до» и «после» критически важных шагов;
  • оптимизация использования дискового пространства за счет хранения ограниченного количества релизов;
  • выбор между SCP, RSYNC, GIT, SVN, HTTP Download или S3 GET-стратегиями развертывания (в дополнение возможно использование unarchive).
Читать дальше →
Всего голосов 20: ↑18 и ↓2+16
Комментарии1

Хранимые функции. За и против

Время на прочтение6 мин
Количество просмотров91K
Использование хранимых функций СУБД для реализации бизнес-логики или её части, всегда было камнем преткновения. С одной стороны баррикад DBA и программисты БД, с другой — разработчики backend.
Рискну навлечь на себя гнев из обоих лагерей, но всё же просуммирую плюсы и минусы и изложу свои соображения о том, когда стоит писать код в хранимых функциях, а когда следует выносить наружу.


Читать дальше →
Всего голосов 82: ↑68 и ↓14+54
Комментарии191

Как «зашить» сетчатку и нужно ли это делать?

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

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


И вам рекомендуют ее «пришить». А вы сомневаетесь – а это точно нужно? И насколько безопасно? А ведь ничего не беспокоит – тогда зачем? А может на мне хотят «заработать»? И первым делом начинаете читать посты в интернете, что скажет такой «независимый» эксперт как Google.


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


Или «забьёте» на все и продолжите жить как раньше – не беспокоит же ничего. В чем же риск?


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

Коронавирус COVID-19: только факты, без паники

Время на прочтение5 мин
Количество просмотров298K
Паника — худшее, что может случиться во время пандемии. Хабр всегда был и остается местом, где людям важны факты, а не домыслы. Факты такие: коронавирус оказался заразным и в некоторых случаях — смертельным. Государства избирательно закрывают границы, авиакомпании отменяют рейсы, массовые мероприятия переносятся. Лучшее, что можно сделать — как следует подготовиться. Ниже мы собираем самые внятные и полезные статьи, которые выходили на площадке в последнее время. Материал будет дополняться.
Читать дальше →
Всего голосов 72: ↑59 и ↓13+92
Комментарии220

Зачем ограничивать наследование с помощью final?

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

Вы наверняка слышали это знаменитое высказывание от GoF: «Предпочитайте композицию наследованию класса». И дальше, как правило, шли длинные размышления на тему того, как статически определяемое наследование не настолько гибко по сравнению с динамической композицией.


Гибкость – это конечно полезная черта дизайна. Однако при выборе архитектуры нас интересуют в первую очередь сопровождаемость, тестируемость, читабельность кода, повторное использование модулей. Так вот с этими критериями хорошего дизайна у наследования тоже проблемы. «И что же теперь, не использовать наследование вообще?» – спросите Вы.


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


Проблема хрупкого базового класса


Проблема хрупкого базового класса

Читать дальше →
Всего голосов 49: ↑42 и ↓7+48
Комментарии46

3 причины бросить учить английский на уровне Intermediate

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

За четыре года в стенах нашего офиса двадцать человек начинали учить английский, и только двое дошли до уровня advanced. За тысячу академических часов они перепробовали занятия в группе, индивидуальные консультации, оксфордские учебники, подкасты, статьи на Medium, даже смотрели «Кремниевую Долину» в оригинале. Стоило ли это таких усилий? Всё очень неоднозначно. Здесь я приведу мысли о том, какой уровень полезно освоить программисту, и когда стоит прекратить целенаправленное изучение.

Читать дальше →
Всего голосов 119: ↑79 и ↓40+63
Комментарии298

Веб-приложение на Kotlin + Spring Boot + Vue.js

Время на прочтение40 мин
Количество просмотров47K
Добрый день, дорогие обитатели Хабра!

Не так давно мне представилась возможность реализовать небольшой проект без особых требований по технической части. То есть, я был волен выбирать стек технологий на своё усмотрение. Потому не преминул возможностью как следует «пощупать» модные, молодёжные многообещающие, но малознакомые мне на практике Kotlin и Vue.js, добавив туда уже знакомый Spring Boot и примерив всё это на незамысловатое веб-приложение.
Посмотреть, что из этого вышло
Всего голосов 19: ↑18 и ↓1+17
Комментарии21

Настройка кластера Nomad с помощью Consul и интеграция с Gitlab

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

Введение



В последнее время стремительно растет популярность Kubernetes — все больше и больше проектов внедряют его у себя. Я же хотел коснуться такого оркестратора, как Nomad: он отлично подойдет проектам, где уже используются другие решения от компании HashiCorp, например, Vault и Consul, а сами проекты не являются сложными в плане инфраструктуры. В данном материале будет инструкция по установке Nomad, объединения двух нод в кластер, а также интеграции Nomad с Gitlab.



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

Использование Ansible, Terraform, Docker, Consul, Nomad в облаках (Алексей Вахов, Учи.ру)

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

Эта статья расшифровка видеодоклада Алексея Вахова из Учи.ру «Облака в облаках»


Учи.ру — онлайн-платформа для школьного образования, более 2 миллионов школьников, регулярно решают у нас интерактивные занятия. Все наши проекты хостятся полностью в публичных облаках, 100% приложений работают в контейнерах, начиная от самых маленьких, для внутреннего пользования, и заканчивая крупными продакшенами на 1k+ запросов в секунду. Так получилось, что у нас 15 изолированных докер-кластеров (не Kubernetes, sic!) в пяти облачных провайдерах. Полторы сотни пользовательских приложений, количество которых постоянно растет.


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


В процессе доклада мы обсудим:


  • Мотивацию выбора технологий и особенности бизнеса
  • Инструменты: Ansible, Terraform, Docker, Github Flow, Consul, Nomad, Prometheus, Shaman — web-интерфейс для Nomad.
  • Использовании федерации кластеров для управления распределенной инфраструктурой
  • NoOps выкатки, тестовые окружения, схемы приложения (практически все изменения девелоперы делают самостоятельно)
  • Занимательные истории из практики


Кому интересно, прошу под кат.

Всего голосов 18: ↑17 и ↓1+16
Комментарии3

Прямое сравнение методов лазерной коррекции миопии или за что вы платите при выборе ReLEx SMILE

Время на прочтение15 мин
Количество просмотров163K
Сравнение методов лазерной коррекции зрения

Мы тут «починили» лазером Boomburum, и в посте, где он рассказывал про свои новые глаза, разгорелась дискуссия на тему сравнения ФРК-методов, LASIK-методов и SMILE-методов. Мы (имею в виду немецкий холдинг SMILE EYES, куда входит наша российская клиника) делаем все три вида операций, но абсолютные сторонники того метода, который даст больше при потере меньшего. Таким образом, любой вид LASIK или ФРК рекомендуется только тогда, когда SMILE невозможен: во-первых, при дальнозоркости (это совсем другая история), во-вторых — в случаях больной или поврежденной роговицы (например, с рубцами). Но и, конечно, учитывается экономическая сторона.

Казалось бы, я в первых постах объяснила, почему так. Но в комментариях к посту видно, что этого было недостаточно. Поэтому давайте сделаем всё по правилам научной дискуссии. Разберём тезисы и приведём соответствующие исследования к ним.

Именно так поступают в научном и медицинском мире. Если есть мнение – его нужно обосновать. Желательно, на выборке от 20 и более пациентов с одинаковым распределением в двойном исследовании. Желательно – чтобы исследования подтверждались разными клиниками в разных странах, где проводятся такие виды операций.

Давайте начнём.
Читать дальше →
Всего голосов 67: ↑65 и ↓2+63
Комментарии95

TCP против UDP или будущее сетевых протоколов

Время на прочтение27 мин
Количество просмотров174K
Перед каждым сервисом, генерирующим хотя бы 1 Мбит/сек трафика в интернете возникает вопрос: «Как? по TCP или по UDP?» В прикладных областях, в том числе и платформах доставки уже сложились предпочтения и традиции принятия подобных решений.

По идее, если бы, к примеру, однажды один ленивый разработчик не попробовал развернуть свой ML на Python (потому что только его и знал), мир скорее всего никогда не проникся бы такой любовью к презренному «супер-джава-кодерами» языку. А сегодня слабости этого языка в прошлом контексте применения безоговорочно обеспечивают ему первенство в развертывании и запуске многочисленных майнерских А/Б.

Сравнивать можно многое: ARM с Intel, iOS и Android, а Mortal Kombat с Injustice. И нарваться на космический холивар, поэтому вернемся к теме доставки огромных объемов разноформатного контента.

Десять лет назад все были абсолютно уверены, UDP — это что-то про негарантированную доставку. Если нужен надежный протокол — это TCP. И вопреки традициям в этой статье мы будем сравнивать такие, кажущиеся несравнимыми вещи, как TCP и UDP.


Осторожно, под катом 99 иллюстраций и схем и все важные.
Всего голосов 162: ↑159 и ↓3+156
Комментарии75

Ликбез по типизации в языках программирования

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

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

В полной версии находится подробное описание всех видов типизации, приправленное примерами кода, ссылками на популярные языки программирования и показательными картинками.
Читать дальше →
Всего голосов 239: ↑232 и ↓7+225
Комментарии180

Мутационное тестирование: тестируем тесты

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

Написание тестов должно вселять в нас уверенность в корректной работе кода. Часто мы оперируем степенью покрытости кода, и когда достигаем 100 %, то можем сказать, что решение корректное. Уверены в этом? Быть может, есть инструмент, который даст более точную обратную связь?
Читать дальше →
Всего голосов 42: ↑37 и ↓5+32
Комментарии0

Один из сотни способов публикации нескольких production проектов на одном сервере

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

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

Читать дальше →
Всего голосов 17: ↑13 и ↓4+9
Комментарии17

Почему важна SRE документация. Ч. 1

Время на прочтение6 мин
Количество просмотров4.9K
Всем добрый вечер!

Интенсивность запусков у нас меняется от месяца к месяцу. Не успели сентябрьские студенты закончить второй месяц курса «Devops — практики и инструменты», как у нас открывается следующий поток. Так что мы снова готовы делиться с вами полезными материалами по теме и ждём на не менее полезных открытых уроках.

Сегодня мы рассмотрим первую часть статьи о том как документация позволяет SRE-командам управлять новыми и существующими сервисами.

SRE (site reliability engineering, примерно переводится как “обеспечение надежности информационных систем”, специалисты этой сферы носят ту же аббревиатуру) — особая дисциплина, мышление и набор технических подходов, направленных на обеспечение безотказной работы веб-продуктов и сервисов. SRE находятся на стыке разработки ПО и системной инженерии, решают эксплуатационные задачи и разрабатывают масштабируемые, надежные и эффективные решения для проектирования, создания и эксплуатации крупномасштабных распределенных систем.

Основные задачи SRE:

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

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность