Как стать автором
Обновить
876.03

Программирование *

Искусство создания компьютерных программ

Сначала показывать
Порог рейтинга
Уровень сложности

Сервис проверки пользовательских файлов «powered by pytest»: нужно повозиться, но оно того стоит

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

Возникла задача проверки нескольких типов пользовательских документов Excel. Проверка должна покрывать такие аспекты как корректность шаблона (наличие ожидаемых страниц, колонок таблиц) и корректность данных (присутствие обязательных значений, корректность значений точки зрения форматов, отсутствие дубликации, итд).

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

Эта задача - про качество данных и очень напоминает тестирование. Так почему не использовать фреймворк тестирования pytest, и не написать тесты на каждый проверяемый аспект и для каждого типа файлов? Однако, есть небольшое "но". проверка должна быть реализована в качестве сервиса, чтобы встраиваться в более широкий процесс обработки пользовательских документов.

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

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

Новости

Недооцененный паттерн «Спецификация» в связке с паттерном «Репозиторий»

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

Использование спецификации открыло для меня новый мир в создании приложений.

Репозитории предоставляют удобное решение для доступа к данным.

Однако за многолетний опыт разработки, побывав в нескольких компаниях, сменив кучу проектов я НЕ ВСТРЕЧАЛ паттерн "Спецификация" совместно с паттерном "Репозиторий".

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

Компоновка аннотаций в Spring

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

Привет Хабр! Совсем недавно, в процессе разработки на Spring я столкнулся с невероятным количеством бойлерплейт-кода в аннотациях. Решение сделать с этим что-то было принято мгновенно и вот что из этого вышло...

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

HappyX vs Karax: что проще?

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

Хотите узнать, как с помощью Nim создавать клиентские веб-приложения?

В этой статье я расскажу вам о веб-фреймворках в Nim и их возможностях, а также приведу примеры в сравнении друг с другом и другими фреймворками.

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

Истории

Будущее AI в разработке ПО – интервью с CPO GitHub

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

Два дня назад вышло интересное интервью с CPO GitHub Инбал Шани от Ленни Рачински. Так как GitHub со своим Copilot для разработчиков – один из лидеров внедрения инноваций в кодинг, захотелось законспектировать основные мысли.

Итак, вот они:
Всего голосов 6: ↑1 и ↓5 -4
Комментарии 20

Искусственный интеллект GPT и скрипты Микротик

Уровень сложности Средний
Время на прочтение 6 мин
Количество просмотров 3.6K
Я не профессиональный программист и не специалист IT, но увлекался программированием с юности, когда мы писали на Бейсике и Ассемблере для первого советского персонального компьютера ПЭВМ АГАТ и даже умудрились оставить определенный след в его истории.

С того времени утекло много воды, я получил другую профессию, но увлечение своё полностью не оставил (я стал врачом и работаю по специальности с 2000 г., но оно помогает мне в работе всю жизнь). В 2013 году возникла необходимость «провести интернет» в загородный дом. Тогда то, я и познакомился впервые с роутерами Микротик. В сетевых технологиях я, на то время не знающий что такое IP-адрес (условно), возможно, не сильно продвинулся выше начального уровня (да и не было необходимости в сложных настройках Микротик), а вот программирование на скриптовом, Lua-подобном, языке Роутер ОС почему-то захватило меня целиком, даже временно в ущерб основной работе в каких-то аспектах. Конечно, до профессионального уровня я, самоучка, не дошёл, но написал за это время немало полезных и достойных по сложности скриптов для Микротик (неполный список моих работ представлен здесь).
Читать дальше →
Всего голосов 6: ↑3 и ↓3 0
Комментарии 8

Новые проклятия: руководство по ncurses

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

HTOP, midnight commander... Как же они построили довольно красивый и удобный псевдографический интерфейс?

Все благодаря библиотеке для C/С++ под названием new curses ("новым проклятиям" дословно) или же NCURSES.

Но как ее установить и работать с ней?

Вперёд!
Всего голосов 14: ↑9 и ↓5 +4
Комментарии 7

«Самоидентификация» клавиатуры

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

«Я — русский!»‑ спел недавно известный певец. Да и я, после 20 лет пользования клавиатурой, наконец‑то, устал вечно поправлять текст, набранный не в той раскладке клавиатуры (в голове держать всё невозможно!) и сделал индикацию текущей раскладки. Казалось бы, мелочь, а приятно.

А раньше как бывало? Оторвал взгляд от клавы, посмотрел на экран… «Фу, чёрт! Не та раскладка!» Стираешь то, что набрал непосильным трудом и заново набираешь тот же текст.

Вы скажете: «Не интересное решение! Есть же замечательная программа Punto Switcher! Она может автоматически исправлять набранный текст в нужную раскладку.» Но всегда оставалась проблема набрать специальные символы независимо от языка ввода. И вот тут‑то Punto Switcher начинал ошибаться.

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

Вот я так и пошёл по этому простому пути. И замутил банальную схему:

Читать далее
Всего голосов 32: ↑26 и ↓6 +20
Комментарии 72

std fs в Rust медленнее, чем Python? Нет, это аппаратный баг

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

В этой статье я поделюсь с вами долгой историей, которая начинается с op.read() opendal, а заканчивается неожиданным поворотом. Это путешествие оказалось для меня достаточно поучительным, надеюсь, и для вас оно будет таким же. Я постараюсь максимально точно воссоздать свой опыт и дополню его выводами, которые сделал в процессе.

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

Настройка алертингов из Opensearch в Telegram

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

В «Магните» только по 1С-системам суточный объем логов переваливает за 100 Гб. Их нужно обрабатывать, использовать, выделять ценные данные. Конечно, мы пользуемся Discover и различными дашбордами и визуализациями. Но иногда необходима оперативность. Тогда пригождается система алертингов: она позволяет создавать оповещения и уведомлять пользователей о различных событиях или изменениях в данных.

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

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

Почему я перестал использовать Vim

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

Говорят, однажды попробовав Vim, назад уже не вернешься.

Для разработчика Vim может быть опасен. Особенно если коллеги настаивают на его использовании или, как минимум, тонко намекают. Как если бы ты был Нео из «Матрицы», и вдруг в обычный, ничего не предвещающий день…

Опа! Сбой в матрице.

Выбор за тобой. Потом пути назад уже не будет. Примешь синюю таблетку — история закончится, ты проснёшься в своей постели и будешь верить, что GUI — это сила. Примешь красную — и останешься в Стране Чудес, а я покажу тебе, насколько глубока кроличья нора Vim. Помни — я предлагаю только правду, и ничего более.

Читать далее
Всего голосов 40: ↑23 и ↓17 +6
Комментарии 87

За 25 лет я выучил 30 языков программирования. Хочу поделиться своим опытом

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

Привет, Хабр! Перевели для вас статью программиста-самоучки, в арсенале которого — три десятка языков программирования. Надеемся, она вдохновит вас поделиться собственными историями становления в кодинге не меньше, чем нас в beeline cloud. Приятного чтения!

Всё началось в далёком 1997 году. С тех пор прошло более 25 лет. Свои первые программы я писал еще под ОС Windows 95 и Windows 98. На тот момент мне было около 12 лет – как раз тот возраст, в котором многие из моего поколения начинали знакомство с программированием. Первым моим языком был Logo, используемый в MicroWorlds от LCSI (Logo Computer Systems Inc). Я получил эту программу от родителей в подарок.

Исчерпав возможности Logo в ограниченной среде MicroWorlds, я перешел на Visual Basic. По очень простой причине — он был мне понятен и к тому же доступен прямо в Microsoft Office. Visual Basic 6 стал первым «настоящим» языком программирования, с которым я познакомился.

Читать далее
Всего голосов 52: ↑30 и ↓22 +8
Комментарии 104

Scala Digest. Выпуск 11

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

Привет, Хабр! Мы — Рома, Настя и Карина — бэкенд-разработчики Тинькофф, пишем код на Scala и горим желанием его популяризировать.

Мы собираем и агрегируем новости из разных источников, включая Scala Times, блог Petr Zapletal и канал Scala Nishtyaki, добавляем дополнительные новости и cвои комментарии. Мотивацию черпаем из желания развиваться и делиться полученными знаниями. Приветствуем любую обратную связь! (づ ◕‿◕ )づ

Читать 11 выпуск
Всего голосов 3: ↑3 и ↓0 +3
Комментарии 0

Ближайшие события

Создаём собственную систему поиска фильмов на основе проекта Андрея Карпати

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

В апреле 2023 года Андрей Карпати, один из основателей OpenAI и бывший директор по ИИ в Tesla, поделился своим занятным проектом выходного дня – системой поиска и рекомендации кино.

Её пользовательский интерфейс откровенно прост и предлагает две основных функции: блок поиска, в котором можно искать кино по названию, и вывод списка из 40 похожих фильмов при клике по интересующему.

Несмотря на популярность этого проекта, Карпати, к сожалению, пока не поделился с публикой его исходным кодом.

И вот почему
Источник

Chaturvedi: «Может, откроете исходный код проекта?»

Andrej Karpathy: «Даже не знаю. Он такой страшный, что мне стыдно».


Так что запасайтесь попкорном и будем воссоздавать его сами на основе OpenAI и векторной базы данных!
Читать дальше →
Всего голосов 27: ↑27 и ↓0 +27
Комментарии 1

Архитектура fast api приложений. Внедрение зависимостей

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

В этой статье разберем как заложить «чистую архитектуру» в fast api проект. Несмотря на то, что мы используем fast api, данный подход можно применять при использовании любого другого фреймворка.

Читать далее
Всего голосов 4: ↑1 и ↓3 -2
Комментарии 5

Мигрируем Java Spring Boot приложение на Kotlin

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

Доброе время!

Немного статистики по Kotlin: по недавней выборке на hh.ru в вакансиях "программист, разработчик" по слову Java и Kotlin почти треть вакансий (а в некоторых регионах больше) требуют владения Kotlin. А по последнему  отпросу от AZUL 2023 47% организаций используют Kotlin. Таким образом освоив Kotlin и добавив в резюме репозиторий с проектом на нем вы получите на 30% больше возможностей!

Как известно, лучший способ выучить новый язык программирования - это пройти курсы сделать на нем проект. Для Java программистов на мой взгляд самый простой и эффективный способ - взять собственный небольшой Spring Boot REST API проект и сделать его миграцию.

В рамках наших курсов "Из Middle в Senior" (см. предыдущий пост по курсу «Работа с документами в Java») я выпустил новый курс Spring Boot REST API приложение на Kotlin и хочу поделиться здесь особенностями миграции и полезными ссылками для тех, кто захочет это сделать самостоятельно. Статья в помощь тем, кто решил мигрировать на Кotlin свой Java проект, НЕ для изучения основ Kotlin.

Итак, приступим:
Всего голосов 6: ↑4 и ↓2 +2
Комментарии 8

Автоматизация тестирования ОС

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

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

Для реализации этой автоматизации мы используем несколько Jenkins Declarative Pipeline'ов и обширный набор инструментов, о которых рассказывается в статье.

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

На грани ИИ: пример поиска и обработки векторов в PostgreSQL + pgvector

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

На Хабре было много упоминаний pgvector в обзорах Postgresso. И каждый раз новость была про место которое где-то за границей и далеко. Многие коммерческие решения для хранения и поиска векторов в базе данных нынче не доступны, а pgvector доступен любому, тем более в самой популярной базе в России.

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

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

ИИ убивает программирование?

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

Приветствую, читатель. Недавно на youtube, я посмотрел видео в котором высказывалось мнение, что ИИ скоро заменит программистов и программирование в целом может исчезнуть. Аргументы из видео меня совершенно не убедили и мне захотелось написать статью с разбором аргументов с которыми я не согласен.

Читать далее
Всего голосов 16: ↑9 и ↓7 +2
Комментарии 28

О динамическом программировании на пальцах

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

Как динамическое программирование может упростить нашу жизнь? Как можно оптимизировать решение задач?

Сегодня мы разберем динамическое программирование на пальцах с примерами на Python!

Усаживайтесь поудобнее, леди и джентльмены!

Вперед!
Всего голосов 20: ↑15 и ↓5 +10
Комментарии 17

Вклад авторов