Pull to refresh
3
0.1
Send message

Остановитесь!!! Вам не нужны микросервисы

Reading time7 min
Views85K

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

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

Как заработать на веб-скрапинге

Reading time5 min
Views34K
А вы знали о том, что то, что вы сейчас читаете, это — данные? Вы видите слова, но на серверах всё это хранится в виде данных. Эти данные можно куда-то скопировать, можно разобраться в их структуре, с ними можно сделать что-то ещё. Собственно говоря, только что мы привели упрощённое описание веб-скрапинга. Скраперы просматривают код, из которого созданы веб-сайты (HTML-код), или работают с базами данных, и вытаскивают отовсюду те данные, которые им нужны. Практически каждый веб-сайт можно подвергнуть скрапингу. На некоторых сайтах применяются особые меры, которые мешают работе веб-скраперов. Но тот, кто достаточно хорошо знает своё дело, способен успешно собрать данные с 99% существующих сайтов.



Если вы не знали о том, что такое веб-скрапер, то теперь вы, в общих чертах, об этом знаете. А это значит, что мы можем заняться тем, ради чего вы, вероятно, начали читать эту статью. Мы сможем приступить к разговору о заработке на скрапинге. Такой заработок, кстати, не так сложен, как может показаться на первый взгляд. На самом деле, все методы и примеры, которые я собираюсь вам показать, укладываются в менее чем 50 строк кода. А изучить всё это можно буквально за несколько часов. Собственно говоря, полагаю, что сейчас вы вполне готовы к тому, чтобы узнать о трёх способах заработка с помощью веб-скрапинга.
Читать дальше →

Используем Xtend для прикладной кодогенерации: сеанс чёрной магии с разоблачением

Reading time12 min
Views7.7K

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


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


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


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

Прекратите использовать оператор If-else

Reading time4 min
Views28K
image

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

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

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

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

Для тех, кто все еще находится в неведении, вот очень краткое введение.

Вы увеличите сложность с любым новым условным требованием, реализованным с помощью If-else.

Применяя шаблон состояния, вы просто изменяете поведение объектов, используя специализированные объекты состояния вместо операторов If-else.
Читать дальше →

Используем DI в Angular по максимуму — концепция частных провайдеров

Reading time7 min
Views37K
В Angular очень мощный механизм Dependency Injection. Он позволяет передавать по вашему приложению любые данные, преобразовывать и переопределять их в нужных частях.

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

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

В этой статье я хотел бы показать альтернативный вариант работы с полученными из DI данными. Цель: упростить компоненты, директивы и сервисы, которые эти данные используют.


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

Reading time2 min
Views3.5K
В сентябре 2019 года вышел новый алгоритм от Google E-A-T для борьбы с некачественным и не с экспертным контентом. Сильнее всего повлиял на сайты YMYL — Your Money or Your Life (кошелёк или жизнь).

image

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

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

Исследование производительности хостингов статических сайтов

Reading time8 min
Views7.7K
Статические веб-сайты — это, уже довольно давно, горячая тема. Они быстры, они чрезвычайно безопасны, так как в них нет CMS, которые можно взломать. Правда, после того, как некто создал статический сайт, перед ним встаёт один очень важный вопрос: «А где этот сайт хостить?».

Этот вопрос можно перефразировать так: «Какой хостинг статических сайтов является в 2020 году самым быстрым?». Давайте это выясним!



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

Шпаргалка по регулярным выражениям

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

Представляю Вашему вниманию перевод статьи «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'

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

Строители и архитекторы: два типа программистов

Reading time5 min
Views19K
Возможно, вам знакомо такое ощущение: программист из вашего окружения, или тот, с которым вы общаетесь в интернете, кажется, просто вас не понимает. Это происходит даже тогда, когда такой программист явно неправ. Подобное приводит к тому, что вы чувствуете себя непонятым, расстроенным и, что там говорить, это вас даже злит.

Я постоянно сталкиваюсь с такими программистами. Например, читаю твит, а сам думаю: «А он ведь совершенно не понимает того, о чём говорит». Меня это злит — ведь такие твиты вводят читателей в заблуждение. В них могут встретиться антипаттерны или некие выводы, испорченные недостаточно хорошим пониманием каких-то концепций.



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

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

Здесь я расскажу о ментальной модели, которая поможет программистам справляться с подобными конфликтами. Начнём разговор с упрощённого примера.
Читать дальше →

Как я использую AirDrop вместо Тиндера

Reading time10 min
Views174K


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

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

Под катом я расскажу за всю хурму.
Компания RUVDS.COM не несёт ответственности за повторение действий описанных в данном материале.
Читать дальше →

Обнаружение бездействующих пользователей с помощью API Idle Detection

Reading time7 min
Views11K
Статья, перевод которой мы сегодня публикуем, посвящена новому API Idle Detection. Этот API уведомляет разработчиков при бездействии пользователя, указывая на то, что пользователь не работает с клавиатурой, мышью, экраном. API сообщает об активации хранителя экрана, о блокировке экрана, о переходе пользователя на другой экран. Разработчик при этом может настроить пороговые уровни показателей активности пользователя, достижение которых вызывает срабатывание API.


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

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

Reading time4 min
Views31K
Это перевод статьи с ресурса dev.to. Ее автор Fayaz Ahmed делится списком своих любимых инструментов для разработчиков.



Я разрабатываю такие проекты, как Tvflix, GSON, Appy Dev, а также множество различных микропроектов, поэтому увлекаюсь поиском бесплатных инструментов для моей работы.

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

Текстовая игра на Blazor с нуля (+сорсы +демо)

Reading time6 min
Views6K
Идея о том, что можно писать веб приложение без JavaScript интересна многим, а особенно тем кто начинал свой путь в программирование с серверного языка. Внедрение Web Assembly может (наконец-то) позволить это полноценно реализовать. Писать всю логику приложения на одном языке — звучит довольно заманчиво. Тем более, если этот код компилируется в бинарник, а не в промежуточный язык.

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



Результат:

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

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

Reading time5 min
Views2.4K
Вчера об этом проекте не знал даже Google-поиск, а сегодня о нем заговорили топовые СМИ (Forbes, Cointelegraph, The Sun) с посещаемостью в сотни миллионов. Что для этого сделали? Рассказываем.



Клиент


В апреле 2019 года к нам обратились представители проекта Melaka Straits City — города на базе блокчейн, который начал строиться на Западном побережье Малайзии.
Читать дальше →

Аутентификация — CUSTOM SETUP / AWS Amplify + React Native

Reading time23 min
Views10K

cognito


Одна из самых запрашиваемых тем, среди подписчиков моего канала Димка Реактнативный — это аутентификация и авторизация в приложении React Native. Поэтому я решил посветить этому вопросу отдельный лонгрид и перед тем как мы начнем кодить, необходимо разобраться с определением Аутентификация/Авторизация.

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

Постепенно вводим TypeScript в ваш проект на React

Reading time7 min
Views13K
Привет, Хабр!

В последнее время в области front-end особую популярность приобретает комбинация React+TypeScript. Соответственно, возрастает актуальность грамотной миграции с JavaScript на TypeScript, желательно в сжатые сроки. Сегодня мы хотели бы обсудить с вами именно эту тему.


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

Кто есть кто в платежной экосистеме 2020. Часть 2

Reading time6 min
Views7.4K
Продолжаем разбираться в многослойной инфраструктуре платежного ландшафта. Первая часть была посвящена системам моментальных платежей, платежным платформам, онлайн-банкингу, сервисам по приему платежей и мобильной революции.

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

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

Vue.js компонент для справки/документации

Reading time4 min
Views4.1K

VB-preview


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

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

Первый взгляд на записи и кортежи в JavaScript

Reading time7 min
Views45K

UPD от переводчика из 2025 года:


This proposal has been withdrawn #394

В этом посте мы вкратце рассмотрим предложение в стандарт ECMAScript «Record & Tuple» от Робина Рикарда и Рика Баттона. Это предложение добавляет два вида составных примитивных значений в JavaScript:


  • записи (records) — неизменяемая и сравниваемая по значению версия простых объектов;
  • кортежи (tuples) — неизменяемая и сравниваемая по значению версия массивов.

image

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

Повышаем надёжность HttpClient’а в .NET Core или как ошибиться в 3 строках кода 4 раза

Reading time13 min
Views42K

За несколько недель до 14 февраля системе Dodo IS немного поплохело под нагрузкой. Одной из причин стало то, что в backend’ах мобильного приложения и сайта не совсем корректно работали политики поверх HttpClient’а (Retry, Circuit Breaker, Timeout). В этой статье я хочу поделиться с вами потенциальными проблемами, которые могут возникнуть при неправильном использовании таких политик.


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

Information

Rating
6,393-rd
Registered
Activity