Идет 2020 год. Если вам нужно пояснение, что такое микросервисы — лучше потратьте свое драгоценное время на что-то другое. Но если вы впечатлены историями успеха о микросервисах и хотите нырнуть в "панацею" с головой — продолжайте читать. Прошу прощения, будет немного длинновато (не очень, прим. переводчика).
User
Как заработать на веб-скрапинге

Если вы не знали о том, что такое веб-скрапер, то теперь вы, в общих чертах, об этом знаете. А это значит, что мы можем заняться тем, ради чего вы, вероятно, начали читать эту статью. Мы сможем приступить к разговору о заработке на скрапинге. Такой заработок, кстати, не так сложен, как может показаться на первый взгляд. На самом деле, все методы и примеры, которые я собираюсь вам показать, укладываются в менее чем 50 строк кода. А изучить всё это можно буквально за несколько часов. Собственно говоря, полагаю, что сейчас вы вполне готовы к тому, чтобы узнать о трёх способах заработка с помощью веб-скрапинга.
Используем Xtend для прикладной кодогенерации: сеанс чёрной магии с разоблачением
Привет Хабр! Меня зовут Когунь Андрей. В КРОК я руковожу группой разработчиков Java (у нас большая распределённая по всей стране команда). Ещё я провожу встречи московского сообщества Java разработчиков JUG.MSK. Делаю это исключительно в корыстных целях: фотографируюсь там со всеми докладчиками, и однажды открою галерею с самыми интересными людьми в мире Java-разработки. Также помогаю делать конференции для разработчиков: JPoint, Joker и DevOops — в качестве члена программного комитета. Ну и для души, так сказать, преподаю Java-технологии студентам.
В КРОК мы с коллегами в основном занимаемся заказной разработкой. Одно из наших направлений — так называемые учётные системы. Их надо делать по возможности быстро. Они типовые, различия обычно наблюдаются только в доменной модели. Поэтому мы постоянно боремся за то, чтобы писать меньше бойлерплейт-кода, будь то тривиальные геттеры-сеттеры, конструкторы и т.п. или CRUD-репозитории и контроллеры. Мы для этого активно пользуем кодогенерацию.
Про неё сейчас и расскажу: покажу как взять кодогенерацию под контроль, чтобы она стала реально полезным инструментом разработчика. Попутно расскажу про технологию Xtend и покажу практические приёмы как с ней можно работать. Покажу как создавать собственные активные аннотации, писать и отлаживать код процессора аннотаций.
Прекратите использовать оператор If-else

Вы просмотрели бесчисленные учебные пособия, использующие операторы If-else. Вы, вероятно, также читали книги по программированию, пропагандирующие использование If-else в качестве фактического метода ветвления.
Возможно, это даже ваш режим по умолчанию, чтобы использовать If-else. Но давайте покончим с этим прямо сейчас, заменив If-else объектами состояния.
Обратите внимание, что этот подход можно использовать, если вы пишете класс с методами, которые нуждаются в изменении его реализаций в зависимости от текущего состояния. Вы бы применили другой подход, если бы не имели дело с изменяющимся состоянием объекта.
Даже если вы слышали о шаблоне состояния, вы можете задаться вопросом, как он реализован в готовом к продакшену коде.
Для тех, кто все еще находится в неведении, вот очень краткое введение.
Вы увеличите сложность с любым новым условным требованием, реализованным с помощью If-else.
Применяя шаблон состояния, вы просто изменяете поведение объектов, используя специализированные объекты состояния вместо операторов If-else.
Используем DI в Angular по максимуму — концепция частных провайдеров
Поэтому мы можем делать архитектуру приложений более простой и гибкой: понятный поток данных, минимальная связанность кода, легкость при тестировании или замене зависимостей.
Тем не менее DI в приложениях используется достаточно скромно. Как правило, это внедрение сервисов или передача каких-то глобальных данных сверху вниз по дереву внедрения зависимостей.
В этой статье я хотел бы показать альтернативный вариант работы с полученными из DI данными. Цель: упростить компоненты, директивы и сервисы, которые эти данные используют.

Как заставить Google полюбить вашего автора?

Это сильно ударило по маленьким и средним сайтам, большие сайты только в плюсе оказались. Репутация сайта и автора оценивается отдельно, чтобы получить максимальный бал при оценке достаточно иметь одну высокую репутацию у автора или у сайта.
Экспертность автора — один из ключевых факторов ранжирования алгоритма E-A-T от Google. Создателем контента может быть компания или человек, Google об этом говорит в «Руководстве для асессоров», но создать и следить за репутацию отдельного человека легче, чем за целой компанией. Люди больше доверяют другим людям, чем организациям.
Исследование производительности хостингов статических сайтов
Этот вопрос можно перефразировать так: «Какой хостинг статических сайтов является в 2020 году самым быстрым?». Давайте это выясним!

В 2017 году я искал ответ на похожий вопрос, поэтому полагаю, что здесь интересно будет сравнить старые данные с новыми, и узнать о том, улучшились ли возможности хостинг-провайдеров за 3 года.
Шпаргалка по регулярным выражениям
Представляю Вашему вниманию перевод статьи «Regex Cheat Sheet» автора Emma Bostian.
Регулярные выражения или «regex» используются для поиска совпадений в строке.
Ищем совпадение по шаблону
Используем метод .test()
const testString = 'My test string'
const testRegex = /string/
testRegex.test(testString) // true
Ищем совпадение по нескольким шаблонам
Используем | — альтернацию
const regex = /yes|no|maybe/
Игнорируем регистр
Используем флаг i
const caseInsensitiveRegex = /ignore case/i
const testString = 'We use the i flag to iGnOrE CasE'
caseInsensitiveRegex.test(testString) // true
Извлекаем первое совпадение в переменную
Используем метод .match()
const match = 'Hello World!'.match(/hello/i) // 'Hello'
Строители и архитекторы: два типа программистов
Я постоянно сталкиваюсь с такими программистами. Например, читаю твит, а сам думаю: «А он ведь совершенно не понимает того, о чём говорит». Меня это злит — ведь такие твиты вводят читателей в заблуждение. В них могут встретиться антипаттерны или некие выводы, испорченные недостаточно хорошим пониманием каких-то концепций.

Я, правда, извлёк из подобных ситуаций некоторые уроки, сделал для себя кое-какие выводы, которыми сегодня хочу поделиться с вами. Я не смогу сказать вам о том, кто прав, а кто нет (если об этом вообще можно говорить), а вам, кроме того, понадобиться приложить некоторые усилия для того чтобы применить на практике то, о чём я буду говорить.
Какая вам от этого польза? Это — лучшее понимание того, почему ваш коллега (или кто-то с Reddit) мыслит совсем не так, как вы. Это — более эффективное управление проблемными ситуациями. Те знания, которыми я с вами поделюсь, позволят вам быть выше конфликта и превратиться из того, кто создаёт проблемы, в того, кто их решает.
Здесь я расскажу о ментальной модели, которая поможет программистам справляться с подобными конфликтами. Начнём разговор с упрощённого примера.
Как я использую AirDrop вместо Тиндера

В устройствах Apple есть прекрасная функция Airdrop — она сделана для пересылки данных между устройствами. При этом никакой настройки и предварительного сопряжения устройств не требуется, все работает из коробки в два клика. Для передачи данных используется надстройка над Wi-Fi, и поэтому данные передаются с огромными скоростями. При этом используя некоторые трюки, можно не просто пересылать файлы, но и узнать телефонный номер человека, находящегося с тобой в одном вагоне метро.
Последний год я использую эту функцию для интересных знакомств по пути на работу, в общественном транспорте, в общепитах. В среднем за день у меня получается заводить несколько новых знакомств, и иногда я выхожу из метро в компании нового человека.
Под катом я расскажу за всю хурму.
Компания RUVDS.COM не несёт ответственности за повторение действий описанных в данном материале.
Обнаружение бездействующих пользователей с помощью API Idle Detection

Мой топ бесплатных инструментов для разработчиков

Я разрабатываю такие проекты, как Tvflix, GSON, Appy Dev, а также множество различных микропроектов, поэтому увлекаюсь поиском бесплатных инструментов для моей работы.
Это мой личный список, но вы можете его дополнить другими удачными инструментами. Здесь перечислены некоторые из моих любимых.
Текстовая игра на Blazor с нуля (+сорсы +демо)
Эту технологию хотелось бы увидеть в не типичных веб-приложениях. Например, как это — писать что-то более интерактивное на Web Assembly (Blazor). Предлагаю попробовать создать простую текстовую интерактивную игру. В игре есть возможность создать свой вопрос и отвечать на вопросы других игроков, набирая очки за правильные ответы. Всё на одной странице и с помощью Blazor.

Результат:
Github
Demo
Как за неделю сделать 70 бесплатных публикаций о неизвестном проекте

Клиент
В апреле 2019 года к нам обратились представители проекта Melaka Straits City — города на базе блокчейн, который начал строиться на Западном побережье Малайзии.
Аутентификация — CUSTOM SETUP / AWS Amplify + React Native
Одна из самых запрашиваемых тем, среди подписчиков моего канала Димка Реактнативный — это аутентификация и авторизация в приложении React Native. Поэтому я решил посветить этому вопросу отдельный лонгрид и перед тем как мы начнем кодить, необходимо разобраться с определением Аутентификация/Авторизация.
Постепенно вводим TypeScript в ваш проект на React
В последнее время в области front-end особую популярность приобретает комбинация React+TypeScript. Соответственно, возрастает актуальность грамотной миграции с JavaScript на TypeScript, желательно в сжатые сроки. Сегодня мы хотели бы обсудить с вами именно эту тему.

Кто есть кто в платежной экосистеме 2020. Часть 2
Сегодня в переводе — онлайн-платформы (Google, Apple, Facebook, Amazon + Baidu, Alibaba, Tencent), кошельки, криптовалюты и новые сервисы. Let's start!

Vue.js компонент для справки/документации
Пару раз понадобилось встроить в сайт справочную систему. Простенькую, с тремя колонками — общее меню, текущая статья и меню содержания статьи. Поиски готового компонента/библиотеки не привели к успеху совсем. Поэтому пришлось написать свой, который предлагается к использованию.
Первый взгляд на записи и кортежи в JavaScript
UPD от переводчика из 2025 года:
This proposal has been withdrawn #394
В этом посте мы вкратце рассмотрим предложение в стандарт ECMAScript «Record & Tuple» от Робина Рикарда и Рика Баттона. Это предложение добавляет два вида составных примитивных значений в JavaScript:
- записи (records) — неизменяемая и сравниваемая по значению версия простых объектов;
- кортежи (tuples) — неизменяемая и сравниваемая по значению версия массивов.
Повышаем надёжность HttpClient’а в .NET Core или как ошибиться в 3 строках кода 4 раза
За несколько недель до 14 февраля системе Dodo IS немного поплохело под нагрузкой. Одной из причин стало то, что в backend’ах мобильного приложения и сайта не совсем корректно работали политики поверх HttpClient’а (Retry, Circuit Breaker, Timeout). В этой статье я хочу поделиться с вами потенциальными проблемами, которые могут возникнуть при неправильном использовании таких политик.
Information
- Rating
- 6,393-rd
- Registered
- Activity