Как стать автором
Обновить
3
0
Олег @Invision70

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

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

Подбираем пароль к индийскому ИНН за две секунды, или зачем брутфорсу математика

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

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


Четыре заглавные буквы и четыре цифры. Из них можно составить 2 821 109 907 456 комбинаций. Если проверять тысячу комбинаций в секунду, на один пароль уйдёт лет девяносто.


Долговато. Может ускоримся в пару (миллиардов) раз?

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

Запуск кластера RabbitMQ в Kubernetes

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

В наших решениях мы используем интеграцию и с помощью Kafka, и с помощью gRPC, и с помощью RabbitMQ.

В этой статье мы поделимся нашим опытом кластеризации RabbitMQ, ноды которого размещены в Kubernetes.

image

До RabbitMQ версии 3.7 его кластеризация в K8S была не очень тривиальной задачей, со множеством хаков и не очень красивых решений. В версии 3.6 использовался autocluster плагин из RabbitMQ Community. А в 3.7 появился Kubernetes Peer Discovery Backend. Он встроен плагином в базовую поставку RabbitMQ и не требует отдельной сборки и установки.

Мы опишем итоговую конфигурацию целиком, попутно комментируя происходящее.
Читать дальше →
Всего голосов 29: ↑28 и ↓1+27
Комментарии13

Git happens! 6 типичных ошибок Git и как их исправить

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


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

Все мы делаем ошибки, особенно при работе с такими сложными системами, как Git. Но помните: Git happens!
Читать дальше →
Всего голосов 63: ↑62 и ↓1+61
Комментарии62

Выбираемся из кроличей норы SPA при помощи современного Rails

Время на прочтение15 мин
Количество просмотров11K
TL;DR: Тропа SPA темна и полна ужасов. Ты можешь бесстрашно сражаться с ними… или выбрать другой путь, который приведёт тебя к нужному месту: современный Rails.



Я вспоминаю, как думал, что Rails фокусируется на неправильной цели, когда DHH анонсировали Turbolinks в 2012 году. Тогда я был убеждён в том, что мгновенное время ответа во время взаимодействия с пользователем — это ключ к превосходному UX. Из-за возникающих задержек сети, такая интерактивность возможна, только если вы минимизируете зависимость от сети и вместо сетевых обращений поддерживаете большую часть состояния на клиенте.

Я думал, что это необходимо для приложений, над которыми я работал. И с таким мнением я перепробовал множество подходов и фреймворков для реализации одного и того же шаблона: Single-page applications (SPA). Я верил, что SPA — это будущее. Несколько лет спустя, я не уверен в том, каково же будущее, но я точно хочу найти альтернативу.
Читать дальше →
Всего голосов 30: ↑26 и ↓4+22
Комментарии45

4 библиотеки, упрощающие жизнь React-разработчика

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

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

1) Nanoid


Ссылка на github
Это маленькая библиотека, которая имеет всего одну функцию — генерация уникального id. Она может быть полезна в массе случаев, как любой другой генератор случайных последовательностей символов. Неоспоримые плюсы: простота и крошечный размер — 143 байта.
Читать дальше →
Всего голосов 24: ↑18 и ↓6+12
Комментарии25

Сравнение React и Vue на практическом примере

Время на прочтение11 мин
Количество просмотров63K
Автор материала, перевод которого мы публикуем сегодня, говорит, что на работе ему приходится использовать Vue и он хорошо изучил этот фреймворк. Однако, ему всегда было любопытно узнать, как обстоят дела в других мирах, а именно, во вселенной React.

Он почитал документацию, посмотрел несколько учебных видео, и, хотя всё это показалось ему весьма полезным, ему хотелось по-настоящему понять, в чём заключается разница между React и Vue. Для него поиск различий между фреймворками заключался не в выяснении того, поддерживают ли они виртуальную объектную модель документа, или того, как именно они рендерят страницы. Ему хотелось, чтобы кто-нибудь объяснил бы ему особенности кода, показал бы, что в нём происходит. Он надеялся найти статью, которая посвящена раскрытию именно таких различий, прочтя которую тот, кто знал раньше лишь Vue или React (или совершенно новый в веб-разработке человек), мог бы лучше понять различия между этими фреймворками.



Однако такой статьи ему найти не удалось. Этот факт привёл его к пониманию того, что ему самому надо взять и такую статью написать, попутно разобравшись в сходствах и отличиях React и Vue. Собственно говоря, перед вами описание его эксперимента по сравнению этих двух фреймворков.
Читать дальше →
Всего голосов 34: ↑29 и ↓5+24
Комментарии62

Как Tinder (слегка) прячет ваше местоположение

Время на прочтение7 мин
Количество просмотров83K
В этом году вы со своим приятелем Стивом Стивингтоном основали стартап по отслеживанию пользователей. Бизнес основан на утечке метаданных WhatsApp, которую вы обнаружили. Вам обоим стоило бы ещё поучиться менеджменту, но всё же фирма выросла в мощную, хотя неустойчивую компанию из 65 разномастных стажёров и студентов, фрилансеров и неоплачиваемых работников на испытательном сроке. Вы недавно переехали в щегольской новый офис в отделе литературы 19-го века Общественной библиотеки Сан-Франциско, и у вас завидная репутация в сфере интернет-маркетинга.

Но под этой глянцевой и сомнительной внешностью скрывается гниль. Вы подозреваете, что ваш хороший друг, соучредитель и со-исполнительный директор Стив Стивингтон строит козни против вас. Он всё время выбегает из библиотеки в странное время и где-то пропадает часами напролёт. Когда вы спрашиваете, куда он идет, он строит странную гримасу, которую вероятно считает злорадной ухмылкой — и говорит не беспокоиться. Вы несколько раз поручали библиотекаршам проследить за ним, но все они ужасны в полевой работе.
Читать дальше →
Всего голосов 136: ↑133 и ↓3+130
Комментарии22

Outline: Делаем свой личный VPN от Google за 5$ в месяц (и за 1€ для продвинутых)

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

В последнее время использовать VPN стало популярно с чего бы это?, но все инструкции которые мне попадались — могут «осилить» только пользователи хотя бы чуть-чуть знакомые с тем что такое Linux. Компания Google всех порадовала, выпустив прекрасное приложение, которое позволяет вам установить VPN в два клика (правда в два!) на своем личном сервере без каких либо знаний.
(Если у вас нет сервера — не беда, появится)
Читать дальше →
Всего голосов 49: ↑46 и ↓3+43
Комментарии124

Менеджеру нужно уметь думать, а не программировать

Время на прочтение9 мин
Количество просмотров38K
Вчера на Хабре вышла интересная статья о том, должен ли менеджер уметь программировать. Одна из наших менеджеров прошла огонь, воду, программирование, тестирование и проектную работу, поэтому решила написать ответ. По традиции таким сотрудникам мы даём свободный микрофон. Спойлер статьи: менеджер должен соображать, а не изображать. В общем, слово коллеге.

Читать дальше →
Всего голосов 54: ↑49 и ↓5+44
Комментарии110

4 совета по работе с Vue.js

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

Вот несколько советов по работе с Vue.js которые я выработал за последний год.


Используйте стрелочные функции в компонентах


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


Например:

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

Многоэтапные (multi-stage builds) сборки в Docker

Время на прочтение2 мин
Количество просмотров87K
Docker начиная с версии 17.05 и выше стал поддерживать многоэтапные сборки (multi-stage builds). С удивлением обнаружил, что никто еще не написал об этом на хабре. Поэтому давайте исправим этот пробел.
Читать дальше →
Всего голосов 29: ↑27 и ↓2+25
Комментарии11

Управление зависимостями в PHP

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

При создании PHP-приложения или библиотеки обычно у вас есть три вида зависимостей:


  • Жёсткие зависимости: необходимые для запуска вашего приложения/библиотеки.
  • Опциональные зависимости: например, PHP-библиотека может предоставлять мост для разных фреймворков.
  • Зависимости, связанные с разработкой: инструменты отладки, фреймворки для тестов...

Как управлять этими зависимостями?

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

Полное руководство по написанию утилиты для Go

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


Некоторое время назад я начал делать утилиту, которая упростила бы мне жизнь. Она называется gomodifytags. Утилита автоматически заполняет поля структурных тегов (struct tag) с помощью имён полей. Пример:


Пример использования gomodifytags в vim-go


Эта утилита облегчает управление многочисленными полями структуры. Она умеет добавлять и удалять теги, управлять их опциями (например, omitempty), определять правила трансформации (snake_case, camelCase и пр.) и многое другое. Как эта утилита работает? Какие Go-пакеты она использует? Наверное, у вас есть много вопросов.


В этой очень длинной статье я подробно расскажу о том, как написать и собрать такую утилиту. Здесь вы найдёте много советов и хитростей, а также кода на Go.


Налейте кофе и начинайте читать!

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

Встречайте GoLand 2017.3 — новая Go IDE от JetBrains

Время на прочтение2 мин
Количество просмотров20K
Отрасль разработки программного обеспечения развивается молниеносными темпами. На рынок постоянно выходят новые технологии, инструменты и “маст-хэв” продукты, заставляя программистов ежегодно обновлять свой арсенал. Каким бы эффективным ни был язык программирования или фреймворк, рано или поздно возникает что-то еще более быстрое и мощное. Создавая продукты для разработчиков, мы в JetBrains стараемся угнаться за этим разнообразием, не упуская из виду главное — насколько инструмент разработки удобен в использовании.

Прошлой зимой мы объявили, что работаем над новой средой программирования на основе платформы IntelliJ — для языка Go. До недавнего времени эта IDE была известна под кодовым названием Gogland (в честь острова Гогланд в Финском заливе, в 180 км к западу от Санкт-Петербурга), но в качестве окончательного названия был выбран GoLand.

Сегодня мы, наконец, выпустили официальную версию GoLand 2017.3. Предлагаем вам скачать ее, и если понравится, купить!

Если вы уже используете IntelliJ IDEA Ultimate, то все возможности GoLand можете пользоваться прямо в ней, просто установив этот плагин.

image

Читать дальше →
Всего голосов 30: ↑25 и ↓5+20
Комментарии33

Лекции Техносферы: Программирование на Go

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

image


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


Список лекций:


Всего голосов 73: ↑68 и ↓5+63
Комментарии52

Сервисы на Go: как мы их пишем и поддерживаем

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


Написать сетевой сервис на Go очень просто: в стандартной библиотеке есть куча инструментов, а если чего-то и не хватает, то на Github есть много модных библиотек для удовлетворения большинства нужд.


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


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


У нас в Badoo крутятся >30 самописных демонов, написанных на разных языках, и ~10 из них – на Go. Все эти демоны работают на порядка 300 серверах. Как мы к этому пришли, не получив в итоге «зоопарк», как админы с мониторингом умудряются спать спокойно, не ограничивая при этом никого в смузи, а девелоперы, QA и релизеры живут дружно и до сих пор не переругались – читайте под катом.

Читать дальше →
Всего голосов 90: ↑87 и ↓3+84
Комментарии23

Машинное обучение для страховой компании: Реалистичность идеи

Время на прочтение5 мин
Количество просмотров10K
Пятница — отличный день, чтобы что-то начать, например, новый цикл статей по машинному обучению. В первой части команда WaveAccess рассказывает для чего нужно машинное обучение в страховой компании и как они проверяли реалистичность идеи предсказания пиков затрат.


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

Liveedu.tv — стриминговый сервис для программистов и дизайнеров

Время на прочтение3 мин
Количество просмотров16K
LiveEdu.tv — это стриминговый сервис предназначенный, в первую очередь, для программистов, который вскоре станет доступен и для других специалистов, в том числе дизайнеров и инженеров.

LiveEdu.tv представляет собой интерактивную платформу, где вы можете наблюдать за работами профессионалов, уроками и конференциями в сфере программирования, а также дизайна в режиме реального времени.



Вдохновителем идеи стал Майкл Гарбейд в конце 2014 года, а сама идея пришла во время стримов игр на twitch и параллельной разработкой программного обеспечения в VirtualBox Linux.
Читать дальше →
Всего голосов 19: ↑15 и ↓4+11
Комментарии31

Рефакторинг — это не задача в Backlog

Время на прочтение4 мин
Количество просмотров23K
Некоторое время назад было достаточно много шума в Интернете и вопросов на конференциях по поводу того, являются ли задачи по рефакторингу кода такого же рода задачами, как и все остальные, с необходимостью описывать их, помещать в Backlog, а затем перемещать в новый спринт. Я считаю что это плохой идеей, даже в случае непомерно разросшегося «технического долга» проекта. И вот почему:
image
Когда начинается новый проект — его код чист и прекрасен. Самое время проектировать красивые абстракции, писать хорошие интерфейсы и профессиональные реализации. Жизнь прекрасна! Наш проект тоже.
Читать дальше →
Всего голосов 99: ↑79 и ↓20+59
Комментарии57

С маленькой или с Большой

Время на прочтение5 мин
Количество просмотров36K
Такая мелочь, как применения заглавных букв может быть весьма важной. Для английского языка. Статья будет особенно полезна тем, кто занимается разработкой продуктов на английском.
(Кстати, кто еще не знает, «вуз» пишется маленькими буковками.)

image

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

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

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

Всего голосов 37: ↑29 и ↓8+21
Комментарии80

Информация

В рейтинге
Не участвует
Откуда
Богатое, Самарская обл., Россия
Дата рождения
Зарегистрирован
Активность