Как стать автором
Обновить
15
0
Алексей Воробьев @avvor

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

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

EntityFramework: (анти)паттерн Repository

Время на прочтение15 мин
Количество просмотров114K
Repository Pattern
Репозиторий является посредником между слоем доступа к данным и доменным слоем,
работая как in-memory коллекция доменных обектов. Клиенты создают декларативные
описания запросов и передают их в репозиторий для выполнения.
  — свободный перевод Мартина Фаулера

EntityFraemwork предоставляет нам готовую реализацию паттернов Repository: DbSet<T> и UnitOfWork: DbContext. Но мне часто приходится видеть, как коллеги используют в своих проектах собственную реализацию репозиториев поверх существующих в EntityFraemwork.


Чаще всего используется один из двух подходов:


  1. Generic Repository как попытка абстрагироваться от конкретного ORM.
  2. Repository как набор запросов к выбранной таблице БД (паттерн DAO).

И каждый из этих подходов содержит недостатки.

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

Telegram бот для доставки torrent контента с телефона до телевизора

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

Всем привет! Этой мой первый пост на Habr (да и вообще где либо, за исключением GitHub). Хочу поделиться работой, на реализацию который у меня ушло около месяца, но тем не менее сейчас используя ежедневно и планирую развивать в дальнейшем. Задумка была таковой, что бы донести любой (бесплатный) контент до телевизора используя под рукой только телефон, например, если я еду в метро или нет желания (вставать с дивана) и возможности подойти к компьютеру. На самом деле причина реализации сей творения чуть глубже и проще, под управление я передал дело подбора контента на повседневный вечер супруге. За источник контента отвечает трекер Кинозал, который, к слову, я использую уже 4 года и меня он устраивает во всем.

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

Книга «Roblox: играй, программируй и создавай свои миры. 2-е изд»

Время на прочтение1 мин
Количество просмотров3.6K
image Что такое Roblox? Это красочная компьютерная платформа для создания и публикации своих игр. Мир Roblox изо дня в день становится все популярней, и ты можешь стать его частью! Если ты мечтаешь стать геймдизайнером и создать свою игру, но не знаешь, с чего начать, эта книга поможет тебе!
— Не требуется предварительных знаний — ты можешь начать делать игру сразу!
— Мир Roblox интуитивно понятен и очень нравится детям и взрослым.
— В книге даны очень подробные пошаговые инструкции по установке и работе с Roblox.
— Есть введение в программирование и язык Lua.
— Наглядные инструкции по созданию игровых объектов (каждое действие иллюстрируется скриншотом).
— Интересные задания для самостоятельной работы.
Читать дальше →
Всего голосов 14: ↑14 и ↓0+14
Комментарии4

Как на самом деле Async/Await работают в C#. Часть 1. Проблемы модели асинхронного программирования (APM)

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

Это перевод первой главы из поста How Async/Await Really Works in C#

Этот пост .Net блога является продолжением исходного поста, глубоко погружающим в историю, приведшую к созданию конструкций async/await и стоящие за этим дизайнерские решения и детали реализации async/await в C# и .NET.

Исходный пост What is .NET, and why should you choose it? предоставляет обзор платформы на высоком-уровне, перечисляя различные компоненты и решения на уровне дизайна, и предваряя последующие посты в глубину обозначенных тем.

Ссылки в развитие темы:

1. Часть 2 Артефакты от EAP шаблона, SynchronizationContext

2. Уроки по асинхронному программированию из первой половины работы

3. Параллельные вычисления — Все дело в контексте-синхронизации (SynchronizationContext)

4. Async/Await из C#. Головоломка для разработчиков компилятора и для нас

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

Почему биткоин-транзакция зависла?

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

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

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

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

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

Чтение на выходные: «Искусственный интеллект на практике. 50 кейсов успешных компаний» Бернарда Марра и Мэтта Уорда

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

Тема искусственного интеллекта нас не отпускает: технологии набирают обороты прямо на глазах пользователей, да и вообще, они давно перестали быть «кабинетными».

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

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

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

Разворачиваем и заворачиваем в docker проект ASP.NET core на Ubuntu в связке с PostgreSQL

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

На просторах интернета заметил, что довольно мало статьей про ASP.NET под Linux. К сожалению, новички вроде меня копаются часами в поисках нужной информации, поэтому в этой статье мы вместе развернём минимальное приложение ASP.NET core под Linux в среде Ubuntu и в связке с PostgreSQL и с котиками на сервере nginx, а также упакуем всё в docker контейнеры. В ходе этой статьи мы разберём некоторые консольные команды для ежедневного пользования.

Приступить к чтению
Всего голосов 8: ↑5 и ↓3+4
Комментарии20

ChatALL — chatGPT, Bard и другие нейронки в одном месте для решения SEO задач

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

С каждым днем количество нейросетей и сервисов с ИИ увеличивается. Наиболее популярным в настоящее время является ChatGPT, однако конкуренты не отстают. Каждая нейросеть обладает своими уникальными преимуществами в решении определенных задач. Но есть одно универсальное решение — ChatALL.

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

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

Как быстро выбирать языковые модели (LLM) под свои задачи

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

Последние полгода я активно занимаюсь разработкой сервисов на базе больших языковых моделей, они же «LLM». Для каждого проекта мне приходится подбирать модель по определенным критериям: языковая поддержка, требования к памяти, типу (instruction-based или completion), скорости генерации и т.п. Первое время я использовал платформу HuggingFace, где ежедневно публикуются около сотни новых моделей. Но кто им пользовался, знает, насколько там неудобный и слабый поиск: даже точные совпадения по названию он иногда не выдаёт. Плюс к этому, приходится тратить достаточно времени, чтобы найти и сравнить модели по нескольким критериям. В этой статье я расскажу, как решил проблему выбора языковых моделей.

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

Локальные GPT нейронный сети — устанавливаем на домашнем ПК, запускаем и проверяем на адекватность аналоги ChatGPT

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

Есть много LLM нейронных сетей, создатели которых говорят, что они аналогичны, а может даже лучше ChatGPT версий 3.5 и 4.0. Давайте попробуем протестировать их, установив их на локальный компьютер, чтобы понять, действительно ли они так хороши.

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

Dedoc: как автоматически извлечь из текстового документа всё и даже немного больше

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

Привет, Хабр! 

Мы команда разработчиков Института Системного Программирования РАН, занимаемся Computer Vision в обработке электронных документов. Мы разработали open-source библиотеку dedoc, которая помогает разработчикам и дата-сайентистам в пару строк кода читать различные форматы текстовых документов и изображений с текстом, и далее приводить информацию к единой аккуратной структуре.

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

Вдыхайте DIY: Создаем собственную умную вентиляцию для дома

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


Зачем всё это?


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

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

На стадии ремонта я понимал, что хочу автоматизировано контролировать качество воздуха в квартире, также знал о вероятных проблемах с запотеванием окон. Понимания по производителю будущей приточной вентиляции не было, поэтому заранее в стене было проделано отверстие диаметром 160 мм с запасом под воздуховод диаметром 150 мм, и проведены провода электропитания в предполагаемое место установки приточной вентиляции.
Читать дальше →
Всего голосов 86: ↑86 и ↓0+86
Комментарии136

Low-code MVP для получения плана застройки участка по кадастровому номеру на базе Notion, Airtable и Telegram

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

Суть задачи: по кадастровому номеру участка необходимо получить несколько вариантов проектов застройки участка в формате .DWG (Autocad) со всеми расчетными показателями застройки.

Low-code подход реализуется через использование Airtable в качестве базы данных и системы управления очередями заданий. Frontend реализуется на базе публичной страницы в Notion и чат-бота Telegram.

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

«Дюна» – от Герберта до Вильнёва

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

Всё началось с экологического эксперимента. В конце 1950-х Министерство сельского хозяйства США искало способы остановить распространение песчаных дюн в штате Орегон. Для этого необходимо было отыскать растение, способное выжить на песках и постепенно скреплять почву, делая её пригодной для других растений. Ну то есть задача буквально состояла в том, чтобы озеленить пустыню.

Писатель-фантаст Фрэнк Герберт ранее уже интересовался темой экологии и влияния человека на природу нашей планеты, поэтому он решил написать статью об этом эксперименте. Увы, но текст так и не был опубликован – редакция сочла его недостаточно конкретным, ему недоставало четкости, а Герберт не стал его дорабатывать.

Позднее, в 2005-ом году статья «Они остановили движение песков» всё-таки увидела свет. Она вошла в книгу «Путь к Дюне» наравне с другими наработками к роману.

Но мы забежали вперёд…
Читать дальше →
Всего голосов 26: ↑24 и ↓2+31
Комментарии60

В каких аспектах улучшилась производительность в ASP NET Core 8

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

ASP.NET Core 8 и .NET 8 обогатились многочисленными потрясающими нововведениями, благодаря которым повышается производительность. В этом посте мы подчеркнём некоторые улучшения, сделанные в ASP.NET Core, и покажем, как с их помощью можно нарастить скорость и эффективность работы веб-приложения. Этот пост можно считать продолжением Performance improvements in ASP.NET Core 7, выходившего в прошлом году. Естественно, при его подготовке я также вдохновлялся постом Performance Improvements in .NET 8. Многие из перечисленных улучшений также прямо или косвенно способствуют повышению производительности ASP.NET Core.

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

Геймдев в России: Реальность и Перспективы

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

Индустрия видеоигр в России была динамично развивающейся сферой, но события 2022 года не прошли бесследно. Мы решили узнать о текущем состоянии и перспективах развития геймдева в нашей стране из первых рук и побеседовали со специалистами разного профиля. На наши вопросы отвечали: Александр, C/C++ разработчик, 6 лет опыта; Александр, контент-художник, 7 лет опыта; Тимофей, гейм-дизайнер, 4 года опыта; Мария, 2D-аниматор и FX-дизайнер, 5 лет опыта; Кирилл, HR, 10 лет опыта; Анна, lead-аниматор, 7 лет опыта; Анастасия, менеджер продукта, 8 лет опыта; Артём, data engineer, 4 года опыта.

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

Пишем минимальный ActivityPub-сервер с нуля

Время на прочтение12 мин
Количество просмотров7.8K
В последнее время, на фоне покупки Twitter Илоном Маском, люди начали искать ему альтернативы — и многие нашли такую альтернативу в Mastodon.

Mastodon — это децентрализованная социальная сеть, работающая по модели федерации, как email. Протокол федерации называется ActivityPub и является стандартом W3C, а Mastodon — далеко не единственная его реализация, но самая популярная. Различные реализации протокола, как правило, совместимы друг с другом, настолько, насколько им позволяют их совпадения в функциональности. У меня есть и мой собственный проект ActivityPub-сервера — Smithereen, такой зелёный децентрализованный ВК, где я когда-нибудь таки верну стену.



В этой статье мы рассмотрим основы протокола ActivityPub и напишем минимально возможную реализацию сервера, позволяющую отправлять посты в сеть («fediverse»), подписываться на других пользователей и получать от них обновления.
Читать дальше →
Всего голосов 36: ↑36 и ↓0+36
Комментарии32

Как написать новостной Телеграм-канал если ты не программист. Часть первая

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

Всем привет! Попробую написать трилогию покорения основ Python, отражающую мой путь любителя с “паяльником”. Тут не будет основ, чистого кода, отсылок к требованиям PEP-8, практически не будет ООП.

Всех суровых Senior’ов, читающих данный материал, прошу понять и простить. Я не работаю и никогда не работал разработчиком (по крайней мере пока, но открыт к предложениям:)), не учил алгоритмов (кроме пузырька) и многого не знаю. Мне просто интересно, как мне кажется, “программировать”, а иногда даже хочется поделиться своим опытом.

Итак, что же мы будем делать. Это будет новостной ТГ-канал - новости в него будут попадать с новостного сайта с RSS-лентой. Администратор сможет модерировать новости, прежде чем они попадут в канал через ТГ-бот. Также возможна реализация автоматического рерайта/перевода новостей при помощи Chat-GPT или иной текстовой AI.

В процессе работы мы “пощупаем” работу с внешними библиотеками (их будет достаточно много) и виртуальным окружением venv, спарсим RSS-ленту и страницу новостей, заглянем в мир асинхронного Python, коснемся основ работы с SQLite и даже попробуем задеплоить нашего бота на VSD-сервер через Docker-контейнер.. если у меня хватит на описание всего этого времени и сил:)

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

Для хорошего старта всем начинающим и слабо ориентирующимся в синтаксисе Python рекомендую посмотреть вводный курс CS-50. Тут ссылка на свежую версию на-английском, на просторах YouTube есть более древняя, но переведенная на русский версия.

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

Актуальные способы пополнения счёта в Apple и iTunes

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

Многие привычные вещи в эпоху санкций стали довольно непривычными. Например, весной этого года США внезапно объявили, что в новый пакет санкций входит запрет на контактные линзы для России. Чем именно запрет на контактные линзы должен помочь и кому — в новости не было упомянуто, и остаётся за пределами тематики Хабра. Любопытно другое: в день анонса к вечеру цены на линзы на «Озоне» подскочили в 2-3 раза, с привычных ~2000 за упаковку 30 шт до 4500-6000₽. А потом, всего пару недель спустя, внезапно вернулись на досанкционный уровень. Параллельный импорт или ещё какие ухищрения продавцов, но оставить россиян без контактных линз во имя добра не удалось. Невидимая рука рынка оказалась на стороне зла (с точки зрения президента США, по крайней мере). 

Этот опыт заставил меня обратить внимание на другую область санкций, которая лишила многих привычных удобств: возможности оплачивать цифровые покупки в Apple и приложениях из App Store. Год назад, когда российские банковские карты от Apple отрубили, я решил эту проблему с помощью SIM-карты Beeline — тьфу-тьфу-тьфу, это до сих пор работает, и возможность смотреть YouTube и слушать подкасты без рекламы у меня сохранилась. И даже цена не выросла, что приятно. Но содержать отдельную SIM-карту не очень удобно, поэтому я снова решил посмотреть, что рынок сегодня предлагает для оплаты App Store & iTunes.

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

Какого провайдера VPS выбрать для собственного сервера в 2023 году. Платим за всё российской картой

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

Иметь свой VPS для VPN довольно выгодно. Нет ограничений по количеству клиентов, можно обеспечить VPN подключением всех своих родных, друзей и знакомых. При этом можно за это платить 160-300 рублей в месяц. И если общедоступные VPN вовсю банятся по DNS и IP, то личные VPN пока что избегают этой участи.

Минусы есть, это администрирование сервера и отсутствие разнообразия географии.

Для VPN нужен зарубежный сервер, а с зарубежными сервисами в России уже больше года есть проблемы с оплатой. Но есть российские компании, которые предоставляют зарубежные сервера и при этом им можно платить с помощью российской карточки.
Я зарегистрировался в дюжине провайдеров, до покупки VPS дошёл у пяти. А после тестов остались только трое.

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

Информация

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