Pull to refresh
0
0
Александр Червяков @wormix

IT всякое

Send message

Как я решил проблему плохого кода с помощью architecture guide

Reading time13 min
Views15K

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

Читать далее
Total votes 26: ↑20 and ↓6+17
Comments36

Golang пощупаем дженерики

Reading time2 min
Views18K

Скоро выйдет релиз 1.18 в котором появятся долгожданные дженерики. Они позволят сделать универсальные методы. Я написал пару примеров для себя. Может быть они будут интересны кому-нибудь ещё.

Давайте разберём что появилось.
Total votes 24: ↑19 and ↓5+16
Comments45

JavaScript редактор SVG диаграмм который весит в 6,5 раз меньше bootstrap (библиотека с открытым исходным кодом)

Reading time4 min
Views15K

Demo | GitHub

Эксперименты с созданием редактора диаграмм на Blazor Webassembly (Blazor WebAssembly: Drag and Drop в SVG, Blazor WebAssembly: соединительные линии в SVG) показали что технология не годится для интенсивных манипуляций с DOM.

То что будут проседания было известно заранее: WebAssembly не имеет доступа к DOM, любые изменения только через вызовы JavaScript. Задержки оказались такими большими, что перетаскивание на мобильном тормозило уже после добавления третьей фигуры.

Читать далее
Total votes 36: ↑34 and ↓2+37
Comments17

Автореконнекты к RabbitMQ в Go

Reading time9 min
Views14K

Брокер сообщений RabbitMQ уже давно активно используется в микросервисах. Он используется, когда требуется асинхронная обработка сообщений от клиентов или при аналогичном межсервисном взаимодействии.

Практически нет языка, под который не была бы сделана соответствующая клиентская библиотека. Для Go такой библиотекой является github.com/streadway/amqp (далее по тексту библиотека amqp). Она имеет широкий функционал, можно подключаться к RabbitMQ, создавать каналы, настраивать очереди и exchange. Не хватает только самой малости – реконектов. А именно автоматических реконнектов при потери связи.

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

Читать далее
Total votes 14: ↑11 and ↓3+11
Comments6

React: пример использования Auth0 для разработки сервиса аутентификации/авторизации

Reading time11 min
Views26K



Привет, друзья!


В этой статье я покажу вам, как создать полноценный сервис для аутентификации и авторизации (далее — просто сервис) с помощью Auth0.


Auth0 — это платформа, предоставляющая готовые решения для разработки сервисов любого уровня сложности. Auth0 поддерживается командой, стоящей за разработкой JWT (JSON Web Token/веб-токен в формате JSON). Это вселяет определенную уверенность в безопасности Auth0-сервисов.


Бесплатная версия Auth0 позволяет регистрировать до 7000 пользователей.


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


Знакомство с Auth0 можно начать отсюда.


Исходный код Auth0 SDK, который мы будем использовать для разработки приложения, можно найти здесь.


Исходный код проекта, который мы будем разрабатывать, находится здесь.


В статье я расскажу только о самых основных возможностях, предоставляемых Auth0.


В примерах и на скриншотах ниже вы увидите реальные чувствительные данные/sensitive data. Это не означает, что вы сможете их использовать. После публикации статьи сервис будет удален.

Читать дальше →
Total votes 4: ↑4 and ↓0+4
Comments0

Как найти удаленную работу в США с прицелом на релокацию: описания виз, списки ~1000 компаний, полезные инструменты

Reading time5 min
Views33K

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

В этой статье я собрал материалы для тех, кто задумывается о поиске сначала удаленной работы в США, а затем и о переезде. В тексте есть описания виз, списки компаний, нанимающих на remote, инструменты для подготовки к собеседованиям. Надеюсь, будет полезно!

Читать далее
Total votes 32: ↑18 and ↓14+14
Comments11

Как вести переговоры с террористами… партнерами, детьми и вообще с кем угодно

Reading time11 min
Views92K

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

Читать далее
Total votes 152: ↑149 and ↓3+185
Comments177

Загрузка, парсинг и визуализация данных без программирования

Reading time5 min
Views8.6K

Признаюсь честно, у меня как у программиста, хоть и не настоящего, есть недоверие к «no-code» решениям. То есть тем, которые не требуют программирования, где всё можно делать через drag-and-drop и клики мышкой. Но после полугода разработки собственного «no-code» ETL сервиса с визуализацией данных я изменил отношение к этому классу продуктов, начал ими пользоваться и даже получать пользу, экономя время на рутинных операциях по анализу данных из логов, баз данных и файлов.

В этой заметке я предложу несколько вариантов загрузки и парсинга данных из сервисов и по URL с «материализацией» в SQL базу, покажу как за пару минут собрать свой информер с отправкой в Telegram, Slack или на email. И всё это произойдет без единой строчки кода (потому что в сервисе TABLUM.IO этот код уже кто-то написал ;-). «Алхимия данных» начинается под катом.

Читать далее
Total votes 21: ↑21 and ↓0+21
Comments4

Пишем сервис на GO. Runtime контроллер и Graceful Shutdown

Reading time20 min
Views27K


Напишем вместе HTTP-сервис на golang с нуля? Я уверен, что это довольно несложно. Для тех, кто каждую неделю этим занимается, моя статья не будет особенно интересна, но я все равно рекомендую взглянуть и оценить, возможно, ваши комментарии спасут кому-то жизнь. А может кое-какие из моих рассуждений спасут вашу.


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


Это первая часть. Первые шаги в нашем нелегком пути. И в этой статье мы попробуем достичь следующих целей:


  • Выработаем понимание структуры и жизненного цикла приложения.
  • Формализуем наше представление жизненного цикла на языке go.
Читать дальше →
Total votes 15: ↑13 and ↓2+13
Comments19

Как проходят архитектурные секции собеседования в Яндексе: практика дизайна распределённых систем

Reading time25 min
Views145K
Привет, меня зовут Костя Кардаманов, я работаю в отделе технологий разработки Яндекса. Обычно такой же фразой я приветствую и кандидатов на собеседовании. А сегодня я хотел бы рассказать вам, как и зачем мы проводим интервью по дизайну систем с бэкенд-разработчиками. Сразу скажу: для фронтендеров, мобильных разработчиков и ML-инженеров подобный тип собеседований применим слабо, так что эти специальности мы здесь обсуждать не будем.

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

Что такое дизайн информационных систем


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

Опытный читатель может сказать — в мире полно платных и бесплатных решений, из которых я могу собрать систему как из деталей конструктора, зачем мне понимать устройство этих деталей?
Читать дальше →
Total votes 67: ↑65 and ↓2+90
Comments37

Идеальный пайплайн в вакууме

Reading time6 min
Views19K

На собеседованиях на позицию, предполагающую понимание DevOps, я люблю задавать кандидатам такой вопрос (а иногда его еще задают и мне):

Каким, по вашему мнению, должен быть идеальный пайплайн от коммита до продашкена?/Опишите идеальный CI/CD / etc?

Сегодня я хочу рассказать про своё видение идеального пайплайна. Материал ориентирован на людей, имеющих опыт в построении CI/CD или стремящихся его получить.

Так-так-так что тут у вас...
Total votes 18: ↑17 and ↓1+23
Comments25

Как я развивал аудирование с помощью интервального повторения. Мой опыт

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


Читать дальше →
Total votes 20: ↑20 and ↓0+20
Comments15

Я провёл более 600 технических интервью — и вот пять проблемных мест, которые я заметил у кандидатов

Reading time9 min
Views49K
Недавно я провёл 600-е собеседование на interviewing.io (IIO). Хотелось бы поделиться опытом, рассказать, как я подхожу к интервью, и пролить свет на типичные проблемы у кандидатов. Каждый интервьюер на IIO индивидуален, поэтому ваши результаты могут отличаться. У нас на платформе сформировалось замечательное сообщество, где каждый работает над улучшением своих знаний, навыков и результатов интервью.

Пробное интервью на interviewing.io


Мы оцениваем людей по трём четырёхбалльным шкалам. Оценка «один» означает плохой результат, а «четыре» — очень хороший. Я обычно вначале даю кандидату три балла, а затем прибавляю/отнимаю очки по мере интервью.

Каждый интервьюер отдаёт предпочтение какому-то одному аспекту. Лично я проявляю некоторую предвзятость в сторону скиллов «общение» («коммуникация») и «решение проблем», которые мы обсудим ниже.
Читать дальше →
Total votes 46: ↑41 and ↓5+52
Comments47

Теперь не заблокируешь: выложен первый выпуск децентрализованной коммуникационной платформы Jami

Reading time3 min
Views24K

Сегодня появился первый выпуск децентрализованной коммуникационной платформы Jami, он распространяется под кодовым именем Together. Ранее проект развивался под другим именем — Ring, а до этого — SFLPhone. В 2018 году децентрализованный мессенджер переименовали для того, чтобы избежать возможных конфликтов с торговыми марками.

Код мессенджера распространяется под лицензией GPLv3. Jami выпущен для GNU/Linux, Windows, MacOS, iOS, Android и Android TV. По желанию можно выбрать один из вариантов интерфейсов на базе Qt, GTK и Electron. Но главное здесь, конечно, не интерфейсы, а то, что Jami дает возможность обмениваться сообщениями без обращения к выделенным внешним серверам.
Читать дальше →
Total votes 30: ↑30 and ↓0+30
Comments26

Коллеги, вы меня огорчаете

Reading time12 min
Views183K
В июле и августе 2020 года я, с подачи Григория Петрова, проводил для компании Evrone технические интервью на позицию Senior Golang Backend developer. И, видимо, буду вынужден продолжать проводить, о чём ниже.

Задача формулировалась как «найти человека, который сможет задать и поддерживать высокий уровень профессионализма в применении языка Go». То есть, сформулирована она была по-человечески, перевод на канцелярит — мой. Под эту задачу я сформировал новый опросник вместо того, которым пользовался несколько лет — старый был с жестким закосом под DevOps. Методику, которой я пользуюсь для создания опросников и количественной оценки соответствия кандидатов, я излагал в своем докладе «Техническое интервью как инженерная задача» на конференции Saint TeamLead 2019.

И вот что я хочу сказать вам, коллеги: вы меня огорчаете.


Читать дальше →
Total votes 145: ↑101 and ↓44+93
Comments1153

Как свозить свой продукт на международную IT-выставку, зачем и почём

Reading time16 min
Views4.3K
image

Дальше будут размышления, проверенные рецепты и подводные камни. За последние годы мы съездили штук на 15 или больше таких крупных мероприятий как ISE, CeBIT, InfoComm, GITEX, Enterprise Connect. Хочу в это смутное время поделиться с вами накопленным опытом, рано или поздно он пригодится многим отечественным IT-компаниям, заинтересованным в экспорте своих решений.
Читать дальше →
Total votes 18: ↑18 and ↓0+18
Comments8

Как работать с платёжной системой чтобы не закрыли счет?

Reading time7 min
Views11K
Платёжные системы стали активным участником рынка личных и корпоративных счетов. Они предлагают аналогичный банковскому сервис. В некоторых случаях качество обслуживания выше, процессы идут быстрее и стоят дешевле.

Но всё равно счета иногда закрывают. Почему это происходит и как этого избежать?

В этом материале будет:

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



Как и за что закрывают счета в платёжных системах


Рассмотрим три кейса из нашей практики, которые покажут с какой лёгкостью могут закрыть счета некоторые платёжные системы. Для безопасности мы не станем писать названия этих платёжных систем, но скорее всего вы догадаетесь, о каких из них идёт речь – чаще всего на слуху именно популярные платёжные системы.
Читать дальше →
Total votes 11: ↑4 and ↓7+2
Comments1

Вернуть пропавший скутер, или история одного IoT мониторинга

Reading time21 min
Views16K

Год назад мы запустили пилотную версию промо проекта по децентрализованному прокату электроскутеров.


Изначально проект назывался Road-To-Barcelona, позже стал Road-To-Berlin (отсюда встречающиеся на скриншотах R2B), а в итоге и вовсе был назван xRide.


Основная идея проекта была в следующем: вместо того чтобы иметь централизованный сервис проката автомобилей или скутеров (речь пойдет о скутерах aka электро-мотоциклах, а не kickscooter/самокатах) мы хотели сделать платформу для децентрализованной аренды. О сложностях с которыми мы столкнулись уже писали ранее.


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


Пользователь устанавливал iOS или Android приложение на телефон, подходил к понравившемуся ему скутеру, после чего телефон и скутер устанавливали peer-to-peer соединение, происходил обмен ETH и пользователь мог начать поездку включив скутер через телефон. По завершении поездки так же можно было провести оплату поездки за счет Ethereum из кошелька пользователя на телефоне.


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


Так в целом и выглядел наш пилот, запущенный в сентябре прошлого года в двух городах Германии: Бонн и Берлин.



И вот, однажды, в Бонне, ранним утром наша команда поддержки (находящаяся в локации для поддержания скутеров в работоспособном состоянии) была поднята по тревоге: один из скутеров бесследно исчез.


Как его найти и вернуть?


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

Читать дальше →
Total votes 23: ↑20 and ↓3+24
Comments74

Удалёнка за доллары: а меня возьмут?

Reading time6 min
Views69K

Удалёнка за доллары: а меня возьмут?


Удалёнка в хорошей зарубежной компании — крутая штука. Сидя даже где-то далеко в провинции, можно зарабатывать большие деньги: от $3,000 в месяц на средненькой позиции в неизвестной компании до $186,000 в год на позиции senior programmer в Basecamp.


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


У меня получилось так же: спустя почти два года тимлидерства в американской компании, я уехал в другую страну — но по-прежнему считаю удалёнку «за доллары» очень крутым вариантом занятости, по многим пунктам даже существенно лучше переезда за границу.


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

Читать дальше →
Total votes 41: ↑35 and ↓6+40
Comments80
1
23 ...

Information

Rating
Does not participate
Location
Челябинск, Челябинская обл., Россия
Date of birth
Registered
Activity