Как стать автором
Обновить
52
0.1
Alex Gusev @flancer

flancer32.com

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

Парочка open source решений по доставке уведомлений

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

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

Читать далее
Всего голосов 10: ↑9 и ↓1+8
Комментарии0

Изучаем WebRTC на практике: Лучшие инструменты и демо

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров4.9K

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

Читать далее
Всего голосов 9: ↑9 и ↓0+9
Комментарии8

Оптическое распознавание символов и разбор чеков Rimi

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров2.3K

Некоторое время назад в нашей стране крупные сети магазинов стали вводить электронные чеки. В частности, магазины сети Rimi. Эти чеки покупатель получает по почте в виде PDF документа. У меня скопилось много таких чеков, и мне стало интересно посмотреть на разного рода статистику: например, на цены на различные товары в разное время, сколько чего было приобретено и т. п.

К сожалению, PDF документы, которые покупатели получают – это картинка. Получить интересующую меня информацию из них без оптического распознавания символов (OCR) невозможно. Однако, OCR, как оказалось, не на столько хорош, чтоб идеально справиться и точно всё распознать с первого раза. И это несмотря на то, что чеки достаточно хорошего качества: строки ровные, нет никаких артефактов в виде тёмных пятен, буквы достаточно одинаковые (правда присутствуют несколько разных шрифтов).

Читать далее
Всего голосов 13: ↑13 и ↓0+13
Комментарии20

Почему люди не пользуются вашим продуктом (даже если он может спасти тысячи жизней)

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров12K
«Красный дракон», судно Ланкастера

Когда Васко да Гама в 1497 году обогнул мыс Доброй надежды, больше половины его экипажа из 160 человек погибли от цинги. Этот показатель был довольно привычным: по статистике, от цинги умерло больше моряков, чем от войн, несчастных случаев и всего остального.

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

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

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

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

Возможно, вы подумаете, что британский флот сразу одобрил или, по крайней мере, проверил эту инновацию, которая была простой, дешёвой и практически на 100% эффективной.

Но лишь в 1795 году, почти двести лет спустя после успешного эксперимента Ланкастера и три сотни лет после времени Васко да Гамы флот наконец-то предписал всем своим морякам употреблять цитрусовые (из-за добавления лаймового сока в еду британцев и прозвали «лайми»). До коммерческого флота это нововведение добиралось ещё дольше.

Нам может показаться непостижимым, почему для принятия такой простой инновации, позволявшей избавиться от цинги и сохранить тысячи жизней, потребовалось так много времени. Кто-то может сказать, что её принятию помешали медленные коммуникации и распространение информации. Но ведь не на три сотни лет?
Читать дальше →
Всего голосов 61: ↑57 и ↓4+53
Комментарии44

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

Уровень сложностиСредний
Время на прочтение14 мин
Количество просмотров5.9K

Как настроить общее рабочее пространство для команды без запуска сборки в watch-режиме и ожидания старта dev-сервера, чтобы подхватить изменения? Для этого нужно удобным для всех образом настроить переиспользование кода внутри монорепы.

Нам поможет Андрей Кочеров, старший разработчик интерфейсов в Яндекс Такси и техлид фронтэнд команды партнёрских продуктов. Он расскажет как сделать готовый к работе репозиторий сразу после чекаута, на основе методологии Trunk Based Development.

Читать далее
Всего голосов 13: ↑10 и ↓3+7
Комментарии1

P2P-форум с нуля | от NAT hole punching до автономной и полностью децентрализованной сети

Уровень сложностиСредний
Время на прочтение32 мин
Количество просмотров15K

Многие, кто работают с интернет-сокетами в любой сфере IT, задаются вопросом о пробросе портов. Связано это с тем, что практически во всех домашних/общественных/корпоративных роутерах реализован механизм NAT, который перекрывает прямой доступ к устройствам в этих подсетях извне, общаясь с внешним интернетом от их имени.

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

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

Разнообразные сервисы работают на серверах, т. е. имеют некую ноду, которая имеет белый адрес в интернете (находится не за NAT). Все пользователи же подключаются к этому единому серверу. В таком случае проблема «невидимости» пользователей отпадает. Однако чисто серверное взаимодействие ограничивает скорость участников, так ещё и не отказоустойчиво. Если сервер упадёт, то все клиенты отправятся за ним (считаем, что это одноклеточный сервис не на всяких там kubernetes).

Как вы уже могли были догадаться, даже в реалиях, когда практически все устройства находятся за NATами, P2P реален. Когда вы являетесь участником bittorrent-раздачи, трансфер больших данных осуществляется напрямую. Как это работает? Поиск ответа на этот вопрос завёл меня в глубокие дебри, разгребая которые я написал оверлейную p2p-сеть, где трекерами являются сами её участники. Интересно? Тогда добро пожаловать под кат.
Читать дальше →
Всего голосов 76: ↑76 и ↓0+76
Комментарии25

Методы хэширования паролей. Долгий путь после bcrypt

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

Шифровальная машина M-209, на основе которой создана первая в истории функция хэширования crypt в Unix

Прошло 25 лет с момента изобретения алгоритма хэширования bcrypt (1997), но он до сих пор считается одним из самых стойких к брутфорсу хэшей.

Вот уже несколько десятилетий некоторые специалисты прогнозируют, что аутентификация будет производиться ключами/сертификатами. Но этого до сих пор не случилось. Пароли остаются неотъемлемой частью систем информационной безопасности. Вообще, они широко использовались ещё до изобретения компьютеров, так что в таком долгожительстве нет ничего удивительного.
Читать дальше →
Всего голосов 12: ↑11 и ↓1+10
Комментарии6

Event Loop в деталях

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров47K

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

JS был спроектирован как однопоточный язык программирования. Это значит, что он может выполнять только одну операцию одновременно. Тем не менее у JavaScript есть такой механизм как Event Loop, который как раз и позволяет выполнять "асинхронные" операции. Почему "асинхронные" в кавычках? Да просто потому что JavaScript тоже выполняет их синхронно, асинхронности в самом JavaScript как таковой нет. Вперед под кат, будем разбираться)

Promise.then()
Всего голосов 25: ↑22 и ↓3+19
Комментарии13

Пишем plugin для IDEA, используя External System API, на примере простой build системы

Уровень сложностиСредний
Время на прочтение20 мин
Количество просмотров1.1K

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

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

Всем этим условиям удовлетворяют популярные билд-системы: Gradle, Maven, Sbt и не только, например Docker-compose. IDEA плагины для них построены на External System API. Поэтому для написания своего плагина, я также использовал данное API и хочу рассказать о нем более подробно.

Читать далее
Всего голосов 8: ↑8 и ↓0+8
Комментарии4

Почему WebAssembly плохо годится для Java

Уровень сложностиСложный
Время на прочтение15 мин
Количество просмотров13K

Как разработчик TeaVM, компилятора байт-кода JVM в JavaScript и WebAssembly, я часто рекомендую пользователям, почему-то жаждущим сгенерировать WebAssembly, начать с JavaScript. Если честно, бэкэнд WebAssembly я очень давно не развиваю, не реализую в нём недостающих фич и не фикшу баги. Меня спрашивают: а почему так? Обычно, я просто игнорирую подобные вопросы, потому что в двух предложениях ответить на них невозможно, а для того, чтобы писать больше предложений, у меня нет времени. Обычно если я встречаю чьи‑то попытки объяснить, чем WebAssembly плох для реализации JVM (а так же, CLR, JavaScript и прочих динамических сред), то они сводятся к следующему: «Java (.NET, JavaScript, ваш вариант) — это управляемый язык со сборкой мусора и исключениями, так что приходится тащить с собой гигантский рантайм». Что же, на самом деле, ситуация несколько сложнее, а размер рантайма вовсе не такой страшный и не является основным источником бед.

Читать далее
Всего голосов 65: ↑65 и ↓0+65
Комментарии46

Переводчик ChatGPT против моего: кто кого?

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров4.5K

Я видел много статей и восхищенных отзывов, в которых переводчик ChatGPT не уступает по качеству DeepL и Google, а иногда их даже превосходит. Как основателю компании Lingvanex, которая уже 6 лет занимается разработкой собственных решений по переводу, мне стало интересно насколько все это правда, а также насколько наше решение сопоставимо с ChatGPT. Нужно ли мне бояться такого сильного конкурента?

Для сравнения качества перевода мы подготовили тестовые датасеты на семи языковых парах:

Читать далее
Всего голосов 5: ↑5 и ↓0+5
Комментарии19

Разбираем HTTP/2 по байтам

Уровень сложностиСредний
Время на прочтение24 мин
Количество просмотров27K

image


Откройте любую статью с обзором HTTP/1.1. Скорее всего, там найдётся хотя бы один пример запроса и ответа, допустим, такие:


GET / HTTP/1.1
Host: localhost

HTTP/1.1 200 OK
Date: Sat, 09 Oct 2010 14:28:02 GMT
Server: Apache
Content-Length: 38
Content-Type: text/html; charset=utf-8

<!DOCTYPE html>
<h1>Привет!</h1>

Теперь откройте статью с обзором HTTP/2 или HTTP/3. Вы узнаете о мультиплексировании запросов, о сжатии заголовков, о поддержке push-технологий, но вряд ли увидите хоть одно конкретное сообщение. Ясно, почему так: HTTP/1.1 — текстовый протокол, тогда как сиквелы к нему бинарные. Это очевидное изменение открывает дорогу ко множеству оптимизаций, но упраздняет возможность просто и доступно записать сообщения.


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

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

ESM. Выходим за рамки

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

Итак, работая над... ну не знаю... каким-нибудь замечательным генератором статики, вы, возможно, захотите импортировать в свой код зависимости напрямую из текстовых файлов, таких как: HTML, MD, CSS, SVG или JSON. Конечно, можно использовать бандлер с соответствующим лоадером. Но, допустим, ваш кодекс самурая велит вам - никаких лишних npm install xxx и промежуточных билдов! Только хардкор! Что делать? Выход есть.

Читать далее
Всего голосов 10: ↑10 и ↓0+10
Комментарии0

Локальные нейросети (генерация картинок, локальный chatGPT). Запуск Stable Diffusion на AMD видеокартах

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров50K

Многие слышали про Midjourney, но про то, что есть локальная Stable Diffusion, которая может даже больше, знает уже куда меньше людей, или они не знают, что она локальная. И если они пробовали её онлайн, то быстро приходили к выводу, что она сильно хуже чем Midjourney и не стоит обращать на неё более внимания. И да, SD появился раньше Midjourney. Для запуска хватит и cpu или 4гб видеопамяти.

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

Читать далее
Всего голосов 57: ↑57 и ↓0+57
Комментарии22

Большие данные мертвы. Это нужно принять

Уровень сложностиСредний
Время на прочтение17 мин
Количество просмотров72K

Уже более десяти лет тот факт, что люди с трудом извлекают из своих данных полезную информацию, сбрасывают на чересчур большой размер этих данных. «Объем собираемой информации слишком велик для ваших хилых систем», — такой нам ставили диагноз. А лекарство, соответственно, заключалось в том, чтобы купить какую‑нибудь новую причудливую технологию, которая сможет работать в больших масштабах. Конечно, после того, как целевая группа по Big Data покупала новые инструменты и мигрировала с устаревших систем, компании снова обнаруживали, что у них по‑прежнему возникают проблемы с пониманием своих данных.

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

Мир в 2023 году выглядит иначе, чем когда зазвенели первые тревожные звоночки по поводу Big Data. Катаклизм обработки информации, который все предсказывали, не состоялся. Объемы данных, возможно, немного возросли, но возможности аппаратного обеспечения росли еще быстрее. Поставщики услуг все еще продвигают свои возможности масштабирования, но люди, которые сталкиваются с ними на практике, начинают задаваться вопросом, как они вообще связаны с их реальными проблемами.

А дальше будет и того интереснее.

Читать далее
Всего голосов 150: ↑145 и ↓5+140
Комментарии76

10 инструментов ИИ с бесплатным тестовым доступом, которые пригодятся в работе

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

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

Всем привет! Меня зовут Маруся, я аналитик данных, веду блог в телеграме Аналитика и growth mind-set.

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

Первую часть с инструментами можно почитать тут.

Читать далее
Всего голосов 10: ↑8 и ↓2+6
Комментарии2

Микросервисы — отчуждение от результатов труда

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

Поветрия

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

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

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

Увы, новые вещи (коих не так чтобы вообще есть) всё чаще приносят с собой и очевидно деструктивные, будто навязываемые извне, паттерны.

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

В этой статье я хотел бы поговорить о причинах происходящего.

Если кому-то интересно - под кат
Всего голосов 294: ↑226 и ↓68+158
Комментарии1018

Взлет и падение Vuetify. Некролог

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

Vuetify - один из самых популярных Material Design фреймворков для Vue, которому недавно исполнилось 6 лет. И 6 января 2023 года его основатель заявил, что проект Vuetify перестал окупаться и он ищет работу. Отсюда - некролог в названии статьи.

Статья состоит из шести небольших частей, в которых мы пробежимся от первой версии до третьей, посередине разобрав, как фреймворк обновлялся до Vue 3, будем вместе смотреть за поведением основателя движка, а также тем, как можно справиться с переходом на Vue 3, пожалуй, хуже, чем кто-либо еще, включая команду Nuxt.

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

Погнали!
Всего голосов 28: ↑26 и ↓2+24
Комментарии47

IT для неайтишников: Куда исчезают программисты после 40 лет?

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

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

Читать далее
Всего голосов 141: ↑122 и ↓19+103
Комментарии281

Есть ли жизнь после FAANG компании или мой опыт собеседований в Северной Америке, 20+ компаний за 3 недели

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

Я хотел бы поделиться недавним опытом собеседований на рынках Канады и США на позицию инженера данных. У меня был больше научный интерес, чем необходимость. За 3 недели я побщался более чем с 20 компаниями в Канада и США, чтобы оценить возможности рынка и тренды индустрии аналитики.

Узнать результаты
Всего голосов 39: ↑38 и ↓1+37
Комментарии97
1
23 ...

Информация

В рейтинге
2 728-й
Откуда
Рига, Латвия, Латвия
Дата рождения
Зарегистрирован
Активность

Специализация

Fullstack Developer
Lead
От 3 000 €
JavaScript
HTML
CSS
Node.js
Vue.js
Web development
Progressive Web Apps
PostgreSQL
MySQL
GitHub