Pull to refresh
4
0
Samuel @Pab10

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

Send message

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

Level of difficultyMedium
Reading time11 min
Views3K

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

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

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

Как устроен Domain-Driven Design

Reading time13 min
Views50K

Многие проекты на Django начинаются просто: есть база данных и к приложению, которое крутится на сервере, идут обращения. Например, так начиналась Dodo IS (информационная система компании Додо Пицца, где работал автор сегодняшней статьи). Но если использовать Django из коробки, можно натворить много бед и встретить пачку антипаттернов. Возможно, вы встречали такое на старых legacy-проектах.

Евгений Пешков развивает сообщество DDD-практиков, рассказывая, какие проблемы решает Domain-Driven Design (предметно-ориентированное проектирование) в современном мире. На конференции Russian Python Week 2020 он выступил с рассказом об этом. Кстати, 19 августа пройдет встреча DDDevotion-сообщества, присоединяйтесь, будем о чем поговорить.

В сегодняшней статье будет его рассказ про то, как устроен Domain-Driven Design и какие инструменты использует, чтобы наиболее точно описать требования бизнеса и сам бизнес.

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

Как я повысил производительность flutter приложения с помощью FragmentShader. Часть 2

Level of difficultyMedium
Reading time11 min
Views2.8K

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

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

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

Как я повысил производительность flutter приложения с помощью FragmentShader. Часть 1

Level of difficultyMedium
Reading time5 min
Views2.2K

Статья о том, как я добавил фичу с рисованием пальцем на экране с помощью CustomPaint во flutter приложении и далее пошагово занимался оптимизацией

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

Как дообучить LLaMA бесплатно и без программирования: как создать тупого друга

Level of difficultyMedium
Reading time5 min
Views49K

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

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

Интеграция видеоплеера YouTube во Flutter

Level of difficultyMedium
Reading time4 min
Views3K

Hola, Amigos! Меня зовут Вова Зевеке, я Flutter-разработчик в Amiga. В одном из проектов передо мной стояла задача — интегрировать видеоплеер во Flutter- приложение, с которого можно было бы смотреть видео с YouTube. Казалось бы, подключаем  пакет youtube_player_flutter и всё готово. Но не тут-то было, я столкнулся с рядом проблем, о решении которых рассказываю в статье.

Читать далее
Total votes 6: ↑5 and ↓1+5
Comments1

Сказ о том, как я за год решил более 600 leetcode задач

Level of difficultyEasy
Reading time7 min
Views103K

Всем салют!

Хочу рассказать вам историю о том, как я начинал с уровня — «не могу решить даже 1 easy задачу из 10» до уровня — «могу решить каждую вторую medium задачу» и прошел несколько coding сессий в таких компаниях как Meta, Booking, Careem, Avito...

Читать далее
Total votes 121: ↑112 and ↓9+129
Comments407

Пишем 2D игру на JavaScript и Canvas. Часть 2. Графика

Level of difficultyEasy
Reading time18 min
Views7.6K

Привет!

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

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

Waterfall, Agile, Scrumban — плюсы и минусы, или Что не так с эталонными подходами к разработке

Reading time12 min
Views17K

Сегодня в методах разработки ПО исключения не подтверждают, а скорее заменяют правила. Чистокровный Аgile днем с огнем не сыщешь ни в одной компании. Зато плодятся разные гибридные методологии. Некоторые проджекты задаются совсем уж крамольным вопросом: зачем нужны эталонные системы, если на практике все работают по-разному?

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

Спойлер: многие затронутые вопросы спорные, и готовых решений у нашей команды нет (как, наверное, у большинства PM). Так что заранее приглашаю всех желающих к диалогу и обмену опытом в комментариях.

Читать далее
Total votes 32: ↑30 and ↓2+34
Comments38

Любимая задачка на знание React

Level of difficultyEasy
Reading time3 min
Views24K

Всем привет! Меня зовут Олег и я fullstack-программист в компании Тензор. Опыт в разработке, без малого, 20 лет (как-то раз батя спаял на кухне ZX Spectrum и все заверте..., сам не понял как так вышло). В данный момент являюсь тимлидом собственной команды разработчиков, которая периодически нуждается в пополнении толковыми программистами.

Как и многие руководители, я активно принимаю участие в подборе сотрудников для себя и помогаю на собесах коллегам соседних отделов.

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

Если вы тоже в вечном поиске классных фронтендеров или сами часто проходите собесы - велком в эту статью :)

Итак, задачка...
Total votes 23: ↑23 and ↓0+23
Comments56

«Вредные советы»: тимлид-токсик — как распознать в себе и перейти на сторону добра

Reading time11 min
Views10K

Привет, Хабр! Я Надежда Костякова, тимлид направления Data Science в Первой грузовой компании. Сегодня в режиме вредных советов расскажу о том, как тимлиду не стать «токсиком», обеспечивать ненасильственное выполнение KPI и какие подходы используем мы в ПГК, чтобы организовать здоровую корпоративную культуру и продуктивное взаимодействие в командах разработки.

Читать далее
Total votes 19: ↑16 and ↓3+16
Comments15

Курс «PostgreSQL для начинающих»: #3 — Сложные SELECT

Level of difficultyMedium
Reading time12 min
Views41K

Продолжаю публикацию расширенных транскриптов лекционного курса "PostgreSQL для начинающих", подготовленного мной в рамках "Школы backend-разработчика" в "Тензоре".

В этой лекции углубимся в расширенные возможности команды SELECT : как можно "сложить" и "вычесть" выборки (UNION/INTERSECT/EXCEPT), или запомнить и использовать в рекурсивных запросах (CTE), что дают оконные функции (WINDOW) и соединения (JOIN).

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

Читать далее
Total votes 32: ↑31 and ↓1+34
Comments7

Как я пытался писать функциональные компоненты без хуков на react

Level of difficultyEasy
Reading time6 min
Views9.1K

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

Читать далее
Total votes 10: ↑5 and ↓5+4
Comments37

Моя любимая задачка по программированию для кодинг-интервью

Reading time10 min
Views71K

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

С годами я выработал вопрос по кодингу, который мне самому очень нравится. Это до жути простой и в то же время заковыристый вопрос. Решение занимает не более 30 строк кода, но зато даёт мне все нужные сигналы для вынесения верной оценки кандидату. Кроме того, мой вопрос отлично масштабируется и подходит как стажёрам, так и опытным инженерам. Здесь я не стремлюсь доказать, что мой вопрос лучше какого-то другого. Я лишь хочу объяснить, как он помогает мне как интервьюеру и на что я обращаю внимание на собеседовании по программированию.

В этой статье будут вещи, с которыми вы можете не согласиться. Это нормально. Это просто моё мнение, а так как я уже вышел на пенсию, то больше не представляю опасности ни для интервьюеров, ни для инженеров Google при принятии решений о найме! ;-)

Читать далее
Total votes 64: ↑50 and ↓14+49
Comments345

Улучшаем возможности PM2 с помощью дополнительных модулей автоскейлинга и мониторинга

Level of difficultyEasy
Reading time6 min
Views4K

Всем привет. Сегодня я бы хотел рассказать о том, с какими трудностями пришлось столкнуться при работе с менеджером node.js процессов PM2, и как нам пришлось расширить его возможности для того, чтобы его было можно использовать эффективнее.

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

Червь-ботнет P2P Infect активно распространяется на серверах Redis, через уязвимости LUA

Reading time10 min
Views3.7K

Приветствую, читатели. И начну я сразу же с вопроса. Что вы знаете о червях? Нет, не тех, что обитают в земле, а о компьютерных паразитах. Скорее всего, большинство ответит, мол, их называют червями, потому что они, подобно этим существам, способны распространяться между устройствами без непосредственного участия злоумышленника. Некоторые люди припомнят эпидемию вируса Mydoom 2004 года или уже ставший культовым вредонос ILoveYou. 

Примерно с 2000 годов до 2010 была целая эра компьютерных червей. Их разнообразие в те годы было настолько огромным, что говорить об этом можно практически бесконечно. Но эта статья отнюдь не о былых временах. После 2010 года злоумышленники шагнули на новую ступеньку развития своего преступного дела, попросту забыв об уже пройденном этапе червей. Сколько современных вредоносов этого типа вы знаете? Я лишь несколько, да и те не смогли нанести большого вреда современному компьютерному сообществу. 

Все изменилось летом этого года, когда исследователями был обнаружен абсолютно новый и продвинутый червь, который распространяется через уязвимости нулевого дня. P2P Infect — это и есть предмет нашего сегодняшнего диалога. Обнаружен он был 11 июля 2023 года и нацелен на облачные серверы с установленным популярным приложением для работы с базами данных Redis. Но сперва выделю основную информацию о типе этого вредоноса. 

Читать далее
Total votes 6: ↑4 and ↓2+2
Comments15

Вероятно, вы неправильно используете метод __init__ в Python

Reading time8 min
Views37K

Автор статьи обращает внимание на проблему, которая заключается в использовании метода __init__ для сложной логики создания объектов, что приводит к разрастанию и усложнению кода. Статья предлагает использовать вспомогательные методы, чтобы разделить логику создания объектов на более мелкие и понятные части. Это упростит код и облегчит понимание того, как объекты создаются и инициализируются.

Читать далее
Total votes 19: ↑14 and ↓5+13
Comments22

Виза цифрового кочевника Испания 2024: как получить Digital Nomad Visa

Level of difficultyEasy
Reading time14 min
Views48K

Содержание

1. Кто такие цифровые кочевники?

2. Условия: кто может получить визу цифрового кочевника

3. Требования к претенденту на получение визы цифрового кочевника

4. Срок действия и продление

5. Документы для подачи на Digital Nomad Visa

6. Документы для подачи для членов семьи

7. Пошаговый гайд получения Номад Визы

8. Время рассмотрения заявки на испанскую визу цифрового кочевника

9. Какие налоги надо будет платить цифровым кочевникам в Испании

10. Как сейчас подать документы на получение Digital Nomad Visa в Испании

11. Еще немного про новый закон о стартапах в Испании

12. Ответы на распространенные вопросы о визе цифрового кочевника

13. Заключение

14. Ссылки на полезные ресурсы

Читать далее
Total votes 21: ↑8 and ↓13-2
Comments14

Проектирование экономики F2P игр на основе продуктовых метрик

Level of difficultyMedium
Reading time5 min
Views3.7K

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

Читать далее
Total votes 13: ↑9 and ↓4+5
Comments0

Моя любимая задача для собеседований по программированию

Level of difficultyMedium
Reading time9 min
Views101K

В сети есть уйма постов и видео, где разбираются ответы на вопросы LeetCode. Но обычно рассмотрение в них происходит с позиции соискателя, а не работодателя. В этой же статье я приведу разбор собственной задачи по программированию, которую использовал при приёме людей на работу в Amazon, Google и Microsoft.
Читать дальше →
Total votes 100: ↑95 and ↓5+121
Comments170

Information

Rating
Does not participate
Registered
Activity