Обновить
512K+

Веб-разработка *

Делаем веб лучше

358,79
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

История Учи.ру: от мини-монолитов до микросервисной архитектуры

Время на прочтение7 мин
Охват и читатели7.2K

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

В этом посте я попробовал собрать историю архитектуры Учи.ру. В нем нет фрагментов кода и исчерпывающих технических подробностей. О нашем опыте выделения микросервисов для решения некоторых задач образовательной платформы — в следующих публикациях.

Читать далее

Опыт разработки виджетов для сторонних сайтов

Время на прочтение6 мин
Охват и читатели12K

Если ваш продукт предоставляет услуги для бизнеса, рано или поздно появится задача создать встраиваемый виджет для сайтов клиентов. Это может быть виджет покупки билетов, прогноза погоды, курса валют, отзывов, комментариев и много чего другого.

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

Читать далее

Юнит-тестирование на PHP в примерах

Время на прочтение31 мин
Охват и читатели30K

Сегодня юнит-тесты невероятно полезны. Думаю, они есть в большинстве из недавно созданных проектов. Юнит-тесты являются важнейшими в enterprise-приложениях с обилием бизнес-логики, потому что они быстрые и могут сразу сказать нам, корректна ли наша реализация. Однако я часто сталкиваюсь с проблемами, которые связаны с хорошими тестами, хотя те и крайне полезны. Я дам вам несколько советов с примерами, как писать хорошие юнит-тесты.
Читать дальше →

100+ советов с HackerNews: самый дешевый и простой способ разместить статический сайт

Время на прочтение5 мин
Охват и читатели12K
image

«Есть множество способов сделать это (to host a static site), с кучей настроек и прыжков через обруч. Но можно ли сделать это при помощи одной команды? Проще чем Heroku?»

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

Надеемся, что и читатели Хабра тоже поделятся своим опытом.

image

1. NearlyFreeSpeech


Частный американский провайдер недорогого веб-хостинга и регистратор доменных имен, который начал свою деятельность в 2002 году. Был создан в ответ на опасения по поводу выхода крупных компаний на интернет-публикации и для продвижения свободы слова.

+ не бесплатно, но очень дешево
+ отлично подходит для небольших сайтов с поддержкой MySQL
+ простая настройка домена
+ прозрачное и предсказуемое ценообразование
+ отличная документация и поддержка
+ не требует специального инструментария, загрузка при помощи rsync
+ простой переход к новому провайдеру
+ хороший контроль над сайтом
+ использовал для размещения нескольких сайтов более 10 лет. Простой, безопасный и с быстрой службой поддержки
политизирован, некоторые пользователи уходят по этой причине
Читать дальше →

Создаем веб-приложение на Haskell с использованием Reflex. Часть 2

Время на прочтение9 мин
Охват и читатели2.9K

Часть 1.


Часть 3.


Всем привет! Продолжаем серию туториалов по разработке веб-приложения на Reflex.
В этой части мы добавим возможность выполнять различные манипуляции со списком задач.


intro

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

Что Microsoft известно о вас, и как эту информацию можно использовать для получения полезных знаний

Время на прочтение9 мин
Охват и читатели4.7K

Значительная часть моих ежедневных действий на компьютере и смартфоне выполняется с помощью приложений Microsoft. Отправить электронную почту, создать заметку в календаре, просмотреть файлы в облачном хранилище, обменяться сообщениям в рабочих группах — все эти операции так или иначе выполняются приложениями Microsoft. Нравится мне это или нет, все мои данные хранятся в Microsoft Cloud. У Microsoft имеется полезный инструмент — API-интерфейс, предоставляющий доступ к большей части таких данных и позволяющий управлять ими, так почему бы им не воспользоваться для получения полезной информации?

В этой статье представлено полное руководство по созданию собственного приложения Dashboard с использованием API Microsoft Graph и Django для анализа данных платформ OneDrive, Outlook и др.

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

PHP Дайджест № 201 (15 – 29 марта 2021)

Время на прочтение6 мин
Охват и читатели12K

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

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


Дайджест свежих материалов из мира фронтенда за последнюю неделю №460 (22 — 28 марта 2021)

Время на прочтение3 мин
Охват и читатели8.4K
Предлагаем вашему вниманию подборку с ссылками на новые материалы из области фронтенда и около него.

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

О завершении работы Node.js-процессов

Время на прочтение9 мин
Охват и читатели29K
Node.js-процессы завершают работу по разным причинам. При этом в некоторых случаях «смерть» процесса можно предотвратить. Например — в ситуации, когда причиной остановки процесса может стать необработанная ошибка. А вот иногда с остановкой процесса ничего поделать нельзя. Например — если её причина кроется в нехватке памяти. В Node.js существует глобальный объект process, являющийся экземпляром класса EventEmitter. Этот объект, при нормальном завершении процесса, генерирует событие exit. Код приложения может прослушивать это событие и, при его возникновении, выполнять, в синхронном режиме, некие операции по освобождению ресурсов.

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

Операция Пример
Ручной выход из процесса
process.exit(1)
Неперехваченная ошибка
throw new Error()
Необработанное отклонение промиса
Promise.reject()
Проигнорированное событие error
EventEmitter#emit('error')
Необработанный сигнал
$ kill <PROCESS_ID>

Многие из этих операций часто выполняются случайно, например — это касается неперехваченных ошибок и необработанных исключений. Но одна из них, с которой мы начнём разбор причин завершения Node.js-процессов, была создана с целью дать разработчику возможность вручную завершать процессы.
Читать дальше →

Где поместить свой сервер, чтобы обеспечить максимальную скорость? Насколько это важно?

Время на прочтение15 мин
Охват и читатели4.9K

Где поместить свой сервер, чтобы обеспечить максимальную скорость? Помимо времени, необходимого серверам для ответа на запросы, требуется время просто для доставки пакета из пункта А в пункт Б.

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

Читать далее

Семилетними шагами: миграция с JSP + Angular JS на Angular 2+

Время на прочтение6 мин
Охват и читатели3.2K

Что нужно для перехода от серверного рендеринга к пользовательскому? Чем хорош Angular 2+ и как на него перейти?  В этой статье попытаемся разобраться в данных вопросах и описать процесс миграции от серверных технологий рендеринга, таких, как JSP, к клиентским технологиям рендеринга представлений с использованием Angular.

Читать далее

Google удалил расширение ClearURLs из Chrome Web Store

Время на прочтение2 мин
Охват и читатели56K

Google по каким-то причинам удалил популярное расширение ClearURLs из Интернет-магазина Chrome.

Разработчик подал апелляцию в Google против блокировки расширения и получил ответ: в копии электронного письма, предоставленного разработчиком, Google утверждает, что описание расширения «слишком подробное» и нарушает правила интернет-магазина Chrome.

Читать далее

Как сделать и разместить статический сайт на Gatsby в Yandex.Cloud

Время на прочтение10 мин
Охват и читатели16K

Пошаговая инструкция по созданию и деплою статического сайта в облако, прикрутке к нему сертификата Let’s Encrypt, домена второго уровня и настройки API-шлюза.

Перейти к руководству

Ближайшие события

IETF официально прекратил поддержку протоколов TLS 1.0 и 1.1

Время на прочтение2 мин
Охват и читатели9.4K

CC-BY-CA Vadim Rybalko, на основе мема

Рабочая группа инженеров Интернета IETF признала устаревшими протоколы шифрования TLS 1.0 и 1.1. Соответствующие стандарты RFC официально получили «исторический» статус с пометкой deprecated.

Пометка deprecated означает, что IETF настоятельно не рекомендует использовать эти протоколы. В целях безопасности требуется отключить поддержку TLS 1.0 и 1.1 везде, где это возможно. Об этом говорится в опубликованном RFC 8996. Почему нельзя поддерживать протоколы TLS 1.0 и 1.1 — подробно объясняется в пунктах 3, 4 и 5 этого документа.
Читать дальше →

Оптимизация графики в Voximplant Kit

Время на прочтение5 мин
Охват и читатели1.6K

Что делать, если сценарий крутой и сложный, но из-за этого начинает тормозить? Данным вопросом задались наши разработчики Voximplant Kit и придумали функцию оптимизации. Продолжая серию обновлений Кита, расскажем, как оптимизация заставила большие сценарии летать и с какими проблемами мы столкнулись в процессе её создания.

Полетели!

Как создатель node.js сам разочаровался в нем

Время на прочтение8 мин
Охват и читатели54K

Несколько лет назад на JSConf 2018 выступил Райан Даль, создатель Node.js. Его доклад вызвал сенсацию, он затронул много актуальных проблем и поднял громкий хайп, не оставив равнодушным практически никого, кто связан с серверным программированием. В его обсуждении бэкэнд программисты разделились на два лагеря: одни отстаивали Node.js, другие прочили ему скорую смерть. 

С момента выступления Райана прошло немногим больше двух лет, а в IT это целая эпоха, за время которой может поменяться еще не все, то очень многое. Давайте вспомним этот доклад и попробуем посмотреть, что изменилось с тех пор, кто был прав.

Еще один подход к построению архитектуры на фронте

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

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

В рамках статьи я постараюсь просто рассмотреть и дать ответы на следующие темы:

что такое архитектура и почему она должна быть чистая;

как написать архитектуру, которая основана на сервисах;

пример построения архитектуры для приложения заметок;

интеграция архитектуры с реактом.

Читать далее

Зачем мы транспилируем Haskell в JavaScript

Время на прочтение6 мин
Охват и читатели7.7K

Привет, Хабр! Сегодня мы расскажем, почему мы пишем фронтенд на Haskell и компилируем его в JavaScript. Вообще говоря, подобный процесс называется транспиляцией:


Транспиляция — это процесс преобразования программы на языке X в эквивалентную программу на языке Y. В отличие от компиляции, языки X и Y находятся примерно на одном и том же уровне абстракции.

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

Нам точно нужен фреймворк?

Время на прочтение5 мин
Охват и читатели14K
К 2021 году появилось много статей о том, что фреймворки не нужны и не стоит делать из них культ. Отчасти это верно. Зависимость от фреймворка затрудняет процессы рефакторинга и тестирования, часто негативно влияет на выстраивание бизнес-логики приложения. Но во всём нужен разумный подход. И прежде чем встать на путь отрицания фреймворков, руководитель Программного комитета PHP Russia Александр Макаров советует прочитать статью Маттиаса Нобака (Matthias Noback) «Should we use a framework?»

В статье Маттиас рассказывает о том, какие вопросы должен задать себе разработчик, прежде чем выбрать фреймворк или отказаться от фреймворков вообще. Перевод статьи читайте под катом. В комментариях делитесь своим опытом выбора и использования фреймворков.



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

Рендеринг в веб

Время на прочтение12 мин
Охват и читатели20K

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

Читать далее