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

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

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

Подкрепляем полезные привычки

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров3.8K

Этот текст (не осмелюсь назвать «статьей») стал побочным продуктом моего «грандиозного» замысла — попытки пересказать понятным языком содержание одного из эпизодов The Huberman Lab podcast, который «Как ставить цели и достигать их». И, как все прочие эпизоды, он начинается со слов «Welcome to the Huberman Lab podcast where we discuss science and science‑based tools for everyday life. »

Мне захотелось провести на себе эксперимент, проверить, сработают ли советы и «science‑based tools» от Andrew Huberman в моей повседневной жизни, жизни простого и заурядного человека. Была выбрана цель — «Написать статью "Как ставить цели и достигать их"» и дан старт.

К сожалению (или к счастью), кавалерийским наскоком взять крепость не удалось: любопытство и занудство, умудряющиеся много лет во мне уживаться, не позволили просто «взять и пересказать эпизод». Я пытался (и до сих пор пытаюсь) разобраться в непонятных мне терминах, концепциях и взаимосвязанных процессах. Их, непонятных, оказалось очень много. Так много, что через две недели ежедневного труда я решил: для начала хватит и статьи о роли в процессе достижения цели концепта «Random Intermittent Reinforcement». Потом появились мысли, что и здесь стоит умерить пыл и ужаться до описания роли Reward Prediction Error в Random Intermittent Reinforcement. С чем я себя и поздравляю. И периодически задаю вопрос: интересно, будет ли момент, когда попробую «сделать отдельную статью» из одного абзаца? Из одного предложения? Слова? Ответов нет. Двигаюсь вперед, а там — как получится.

Читать далее
Всего голосов 7: ↑6 и ↓1+5
Комментарии8

Причины «имитации работы» в Big Tech

Уровень сложностиПростой
Время на прочтение11 мин
Количество просмотров19K

Когда Грэма приняли в Amazon, ему казалось, что это работа его мечты. Его привлекли как учёного-исследователя в помощь для разработки функций голосового помощника Alexa. Грэм (имя изменено) предполагал, что вскоре начнёт использовать свой опыт машинного обучения для создания новых потрясающих функций, делающих Alexa более индивидуальной для каждого пользователя. Но спустя четыре месяца после найма стало очевидно: Amazon понятия не имеет, что с ним делать.

Следующие два года он провёл в броуновском движении — менял команды, наблюдал за тем, как руководителей проектов повышали, несмотря на то, что, по его мнению, они не создавали ничего существенного, и в целом занимался бегом в своём колесе. Грэму платили больше $300 тысяч в год, но результатов его работы практически не существовало. Оказавшись в тупике, он постепенно потерял интерес к своей работе и попал под проверку рабочих показателей Amazon.

Столкнувшись с угрозой увольнения, Грэг, наконец, пришёл в проект по применению машинного обучения для улучшения рекомендаций музыки Amazon, который, по его мнению стал «первой по-настоящему интересной задачей, над которой мне довелось работать». Он был счастлив ощущать себя ценным членом команды, но его менеджер сообщил ему нечто поразительное: готовый проект, над которым Грэм работал больше месяца, никогда не будет выпущен. Ему сказали, что это было просто занятие, чтобы соответствовать условиям его плана контроля производительности и продления срока его найма. Вскоре после этого Грэм уволился из Amazon.
Читать дальше →
Всего голосов 66: ↑63 и ↓3+60
Комментарии48

OpenID, OAuth и другие плюшки

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

Зачем нужен OpenID



Вот бывает так, заходишь на сайт любимый, а там ссылка на другой сайт, а там статья ну очень интересная и главное – полезная – и хочется добавить комментарий, типа «Молодцы!» и чтобы добавить комментарий, нужно зарегистрироваться, а чтобы зарегистрироваться нужно ввести «Имя», «Фамилия», «Логин», «Email», «Email еще раз», «Пароль», «Снова Пароль», «Прочитал правила и согласен со всем что тут будет происходить» и «Капчу». И жмакаешь «Зарегистрироваться», а тут бац – «Логин» — занят, и поля «Пароль», «Снова Пароль», «Капча» — стерты. Ну вот так. Вводишь другой свой логин (который второй, и не главный и не любимый) и снова пароль, снова снова пароль (постите) и капчу, и бац – всё ок, только забыл снова поставить галку «Прочитал правила...». Ну ладно, прошел еще раз круги ада, на мыло вышло письмо, активировал аккаунт, так, а где там была статья, да и ну их, не молодцы они, ну т.е. молодцы ну и хрен с этим, знают и так.
Проведите эксперимент, в вашей любимой почте сделайте поиск по слову «activate» — вот примерно столько вы регистрировались на сайтах.
А с другой стороны думаешь, а давайте упростим, и делаешь простое добавление комментария: «Имя», «Email», «Сообщение» — причем «Email» можно не вводить. Через 3 месяца заходишь, а там – СПАМ! Ладно, почистил – и ноль эффекта, спам продолжает, добавил капчу – ну вроде ок, но потом снова как-то они ее обходят. И внимание(!) – вводим регистрацию… Ой!
Но есть (УРА!) – OpenID.
Читать дальше →
Всего голосов 79: ↑67 и ↓12+55
Комментарии21

OAuth: описание протокола простым и понятным языком

Время на прочтение16 мин
Количество просмотров190K
OAuth — популярный протокол, который позволяет социальным сервисам интегрироваться между собой и дает безопасный способ обмена персональной информацией. OAuth может связать между собой 2 сервиса, каждый из которых имеет свою пользовательскую базу — именно их я в данном случае называю «социальными». Когда начинаешь работать с OAuth, первое ощущение — что протокол весьма сложен и избыточен. В этой статье я попытаюсь объяснить основы OAuth человеческим языком.

Пример кросс-авторизации


Вернемся в 2005-й год и представим, что мы пишем социальную сеть. В ней имеется форма импорта контактов из адресной книги GMail. Что нужно для доступа к контактам GMail? Конечно, логин и пароль от ящика. Но если мы попросим ввести их на нашем сайте, пользователь заподозрит неладное. Где гарантия, что мы не сохраняем на сервере введенные пароли? Поэтому нам хочется, чтобы пароль вводился только на сайте GMail, и после этого доступ к контактам через API GMail предоставлялся нашей социальной сети (возможно, на время).
Под катом - повествование с примерами
Всего голосов 134: ↑124 и ↓10+114
Комментарии34

Понимание (всех) «модульных» форматов и инструментов JavaScript

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


Доброго времени суток, друзья!

Представляю вашему вниманию перевод статьи «Understanding (all) JavaScript module formats and tools» автора Dixin.

При создании приложения часто возникает желание разделить код на части, логические или функциональные блоки (модули). Однако JavaScript изначально не имел поддержки модулей. Это привело к появлению различных модульных технологий. В настоящей статье обсуждаются все основные понятия, шаблоны, библиотеки, синтаксис и инструменты для работы с модулями в JavaScript.

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

По следам highloadcup: php vs node.js vs go, swoole vs workerman, splfixedarray vs array и многое другое

Время на прочтение8 мин
Количество просмотров27K
Рассказ о том как я участвовал в highloadcup (чемпионат для backend-разработчиков) от Mail.Ru, написал на php сервер обслуживающий 10000 RPS, но всё равно не получил победную футболку.


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

Comparing PHP-FPM, NGINX Unit, and Laravel Octane

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

Comparing PHP-FPM, NGINX Unit, and Laravel Octane - what to choose for developing microservices.

Read more
Всего голосов 10: ↑10 и ↓0+10
Комментарии0

NGINX изнутри: рожден для производительности и масштабирования

Время на прочтение8 мин
Количество просмотров145K
NGINX вполне заслуженно является одним из лучших по производительности серверов, и всё это благодаря его внутреннему устройству. В то время, как многие веб-серверы и серверы приложений используют простую многопоточную модель, NGINX выделяется из общей массы своей нетривиальной событийной архитектурой, которая позволяет ему с легкостью масштабироваться до сотен тысяч параллельных соединений.

Инфографика Inside NGINX сверху вниз проведет вас по азам устройства процессов к иллюстрации того, как NGINX обрабатывает множество соединений в одном процессе. Данная статья рассмотрит всё это чуть более детально.
Поехали!
Всего голосов 93: ↑93 и ↓0+93
Комментарии32

Пулы потоков: ускоряем NGINX в 9 и более раз

Время на прочтение15 мин
Количество просмотров87K
Как известно, для обработки соединений NGINX использует асинхронный событийный подход. Вместо того, чтобы выделять на каждый запрос отдельный поток или процесс (как это делают серверы с традиционной архитектурой), NGINX мультиплексирует обработку множества соединений и запросов в одном рабочем процессе. Для этого применяются сокеты в неблокирующем режиме и такие эффективные методы работы с событиями, как epoll и kqueue.

За счет малого и постоянного количества полновесных потоков обработки (обычно по одному на ядро) достигается экономия памяти, а также ресурсов процессора на переключении контекстов. Все преимущества данного подхода вы можете хорошо наблюдать на примере самого NGINX, который способен обрабатывать миллионы запросов одновременно и хорошо масштабироваться.

Каждый процесс расходует память и каждое переключение между ними требует дополнительных циклов процессора, а также приводит к вымыванию L-кэшей

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

Но даже в текущей реализации NGINX не всегда возможно избежать блокировок. И для решения данной проблемы в NGINX версии 1.7.11 был представлен новый механизм «пулов потоков». Что это такое и как его применять разберем далее, а для начала познакомимся с нашим врагом в лицо.
Читать дальше →
Всего голосов 72: ↑71 и ↓1+70
Комментарии58

Сравнение php-fpm, nginx-unit и laravel-octane

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

Сравнение производительности php-fpm, nginx-unit и laravel-octane - что выбрать для разработки микросервисов.

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

Асинхронный PHP и история одного велосипеда

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

После выхода PHP7 появилась возможность сравнительно небольшой ценой писать долгоживущие приложения. Для программистов стали доступны такие проекты, как prooph, broadway, tactician, messenger, авторы которых берут на себя решение наиболее частых проблем. Но что если сделать небольшой шаг вперёд, углубившись в вопрос?


Попробуем разобрать судьбу ещё одного велосипеда, который позволяет реализовать Publish/Subscribe приложение.

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

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

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


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

Анализ и приоритизация задач в тикетной системе: реализуем красиво на PHP

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров3.4K

Привет! Меня зовут Олег Мифле. Одной из команд, где удалось поработать за 7 лет с PHP, стала Customer Support. Мы автоматизировали анализ тысяч задач в день и оператору больше не нужно думать и включать голову для того, чтобы понять, какая задача прямо сейчас важна. О том, как работает приоритизация и что такое дерево игры, расскажу в статье.

На старте погружу в предметную область. Она непростая, но постараюсь быстро. Эта статья по моему докладу с PHP Russia 2022. Вот запись.

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

Микросервисы: от CRUD до Native Image. Часть вторая

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

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

Эта половина статьи сосредоточится на опыте нашей команды BellSoft. Поговорим о том, каким образом мы взаимодействуем с миром микросервисов: здесь будет и про универсальный Java-рантайм, и про крошечные контейнеры, и про Spring. Я разложу микросервис на слои, соберу в образ, запущу и покажу, что влияет на его скорость.

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

Микросервисы: от CRUD до Native Image. Часть первая

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

Слово «микросервисы» на слуху последние несколько лет. Технология активно развивается, на онлайн-конференциях о ней говорят, да и сами мы пишем их каждый день. Когда-то новый подход уже стал рутиной. Но мне как Java-архитектору интересно то, каким код был раньше, как он менялся, какие способы исполнения популярны сейчас и будут использоваться в 2021 году: асинхронность, контейнеры, FaaS. 

Так родился этот пост в двух частях, который я подготовил для Хабра на основе своих статей в блоге компании BellSoft и круглого стола Joker 2020, где мы обсуждали будущее джавы. Актуальное сегодня улучшение экосистемы для бэкендов не может существовать без понимания того, как создавать микросервисы: писать с нуля или вырезать скальпелем из монолитов? Предлагаю в первой части поговорить об их сущности, а во второй — разложить микросервисный контейнер на слои и посмотреть на вклад каждого слоя.

Читать далее
Всего голосов 4: ↑4 и ↓0+4
Комментарии7

Большой гайд. Пишем микросервисы на Java и Spring Boot, заворачиваем в Docker, запускаем на EKS, мониторим на Grafana

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

Туториалы делятся на две больших категории: либо "как нарисовать сову", либо подробно расписанные тысячи шагов в формате "напиши туториал для дурака - и только дурак захочет его читать".

Как какой из двух категорий относится эта статья — решать вам.

В этой статье вы увидите пошаговое создание cloud-native микросервиса на Amazon AWS, пригодное для "чтения с листа". Чтобы понять, что здесь происходит, не нужно разворачивать проект - достаточно обладать живым воображением и прочитать текст по диагонали. Если же вы всё-таки захотите повторить шаги, вам будут жизненно нужны знания вида, как создавать классы в IDE и что такое Spring.

Вначале мы напишем пару простых микросервисов на Spring Boot, докеризуем их, зальём в AWS, настроим красивые доменные имена и HTTPS, прикрутим логирование и мониторинг, Prometheus и Grafana. Это небольшое путешествие по всем кругам ада, из которого вы не вернетесь прежним.

Текст написан на основе текстов и демо-проекта microservice-customer за авторством @kamaruzzaman. Если вы потеряли нить повествования, всегда можно зайти на GitHub и найти весь код в пригодном для запуска виде. Если захочется закопаться в тему, то бро Дима Чуйко (@Teapot) написал вам ещё две части статьи "Микросервисы: от CRUD до Native Image" (раз, два).

Последняя важная оговорка. В этом гайде будут использоваться технологии Amazon и обычные дистрибутивы OpenJDK. Автор осознает, что мы живём в России, и возможно, вместо Amazon куда лучше подойдет что-то вроде SberCloud или MTS Cloud, а вместо обычного OpenJDK - Axiom JDK с сертификацией по ФСТЭК. Особенности российских технологий - тема для отдельной статьи. Если вы захотите таковую после чтения этого гайда - отметьтесь в комментариях.

Читать далее
Всего голосов 88: ↑87 и ↓1+86
Комментарии27

Хождение по граблям PDO: что скрывают за собой современные PHP ORM

Уровень сложностиПростой
Время на прочтение21 мин
Количество просмотров9.7K

Привет, Хабр! В статье расскажу о том, с какими трудностями можно столкнуться при разработке ORM на PHP и поделюсь опытом по их преодолению.

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

Читать далее
Всего голосов 41: ↑41 и ↓0+41
Комментарии24

6. Устойчивость систем автоматического управления. 6.6 Понятие об областях устойчивости

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров7.7K

Продолжаем публикацию лекций Олега Степановича Козлова по предмету "Управление в Технических Системах".

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

1. Введение в теорию автоматического управления.2. Математическое описание систем автоматического управления 2.1 — 2.32.3 — 2.82.9 — 2.13

3. ЧАСТОТНЫЕ ХАРАКТЕРИСТИКИ ЗВЕНЬЕВ И СИСТЕМ АВТОМАТИЧЕСКОГО УПРАВЛЕНИЯ РЕГУЛИРОВАНИЯ. 3.1. Амплитудно-фазовая частотная характеристика: годограф, АФЧХ, ЛАХ, ФЧХ3.2. Типовые звенья систем автоматического управления регулирования. Классификация типовых звеньев. Простейшие типовые звенья3.3. Апериодическое звено 1–го порядка инерционное звено. На примере входной камеры ядерного реактора3.4. Апериодическое звено 2-го порядка3.5. Колебательное звено3.6. Инерционно-дифференцирующее звено3.7. Форсирующее звено.  3.8. Инерционно-интегрирующее звено (интегрирующее звено с замедлением)3.9. Изодромное звено (изодром)3.10 Минимально-фазовые и не минимально-фазовые звенья3.11 Математическая модель кинетики нейтронов в «точечном» реакторе «нулевой» мощности

4. Структурные преобразования систем автоматического регулирования.

5. Передаточные функции и уравнения динамики замкнутых систем автоматического регулирования (САР).

6. Устойчивость систем автоматического регулирования. 6.1 Понятие об устойчивости САР. Теорема Ляпунова. 6.2 Необходимые условия устойчивости линейных и линеаризованных САР. 6.3 Алгебраический критерий устойчивости Гурвица. 6.4 Частотный критерий устойчивости Михайлова. 6.5 Критерий Найквиста.

После этой лекции, даже не имея компьютера, а только милиметровую бумагу вы сможете рассчитать устойчивость любых САР.

Читать далее
Всего голосов 10: ↑9 и ↓1+8
Комментарии0

Конечные автоматы на практике: Symfony Workflow

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

В университетские времена я столкнулся с такой математической абстракцией, как конечный автомат (КА). Эта модель была полезна для понимания и создания комбинированной логики. Спустя 15 лет КА вернулся в мою жизнь в виде компонента Symfony Workflow. В этой статье я расскажу, как наша команда при помощи Symfony Workflow улучшила код продукта Links.Sape, переводя его с legacy.

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

Игровой сетап на linux

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

Хотел я написать о багах и разработчиках но подумал, что это никому не надо и напишу о том как я настроил себе удобное место для поиграть на linux.

Читать далее
Всего голосов 19: ↑19 и ↓0+19
Комментарии17
1
23 ...

Информация

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