Pull to refresh
1
0
Алексей Ефремов @alekseyefremov

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

Send message

Создание пакета NuGet для библиотеки с платформозависимым API

Level of difficultyMedium
Reading time13 min
Views7.5K

Когда речь заходит о создании .NET библиотеки, части API которой являются платформозависимыми, приходится думать, как всё это оформить в NuGet пакет, да так, чтобы установленная из пакета библиотека работала в разных сценариях (.NET Framework, .NET Core, self-contained app и т.д.). К сожалению, в сети сложно найти инструкцию, которая бы шаг за шагом показывала, как выполнить эту задачу. Данная статья призвана быть такой инструкцией.

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

Создание .NET библиотеки от А до Я

Level of difficultyMedium
Reading time32 min
Views17K

Думаете о создании .NET библиотеки, но не знаете, в какую сторону двигаться? Уже разрабатываете нечто подобное, но хочется открыть для себя что-то новое? Ищете варианты расширить автоматизацию? Не знаете, что делать с пользователями?

Надеюсь, данная статья поможет ответить на эти и другие вопросы. На примере своей библиотеки с открытым исходным кодом – DryWetMIDI – рассмотрим различные аспекты создания подобных проектов. И хотя речь будет идти про .NET/C#, уверен, многое применимо и к другим популярным платформам и языкам программирования.

Читать далее
Total votes 42: ↑41 and ↓1+51
Comments13

Chrome Headless против cloudflare JS challenge

Level of difficultyMedium
Reading time41 min
Views22K

Автоматизация сбора информации с различных ресурсов - обычная задача для людей разных сфер деятельности. Жаль, что не всегда бывает достаточно сделать простой GET запрос и разобрать полученный html. Веб-сайты, с которых собираются данные, принимают защитные меры для предотвращения автоматизированных запросов. Одной из таких мер является использование cloudflare. Сегодня мы посмотрим, как cloudflare выявляет ботов через javascript и коснёмся темы деобфускации скриптов.

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

Осваиваем TypeScript: 21 лучшая практика при написании кода

Level of difficultyMedium
Reading time12 min
Views34K

TypeScript является популярным открытым языком программирования, идеально подходящим для современной разработки. За счёт своей продвинутой системы типов он позволяет писать более надёжный, обслуживаемый и масштабируемый код. Однако, чтобы задействовать весь потенциал этого языка и создавать высококачественные проекты, важно понимать лучшие практики и следовать им.

В этой статье мы углубимся в мир TypeScript и изучим 21 лучшую практику, с помощью которых вы сможете повысить свой навык работы с этим языком. Эти практики охватывают широкий спектр тем и сопровождаются конкретными вариантами применения в реальных проектах. Независимо от того, являетесь ли вы начинающим либо опытным разработчиком на TS, эта статья даст вам ценное понимание и рекомендации, которые помогут писать более чистый и эффективный код.
Читать дальше →
Total votes 53: ↑45 and ↓8+56
Comments24

Введение в библиотеку Transformers и платформу Hugging Face

Reading time17 min
Views54K

Библиотека Transformers предоставляет доступ к огромному кол-ву современных предобученных моделей глубокого обучения. В основном основаных на архитектуре трансформеров. Модели решают весьма разнообразный спектр задач: NLP, CV, Audio, Multimodal, Reinforcement Learning, Time Series.

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

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

Source Generators в действии

Reading time38 min
Views15K

C# 9 дал долгожданную возможность кодогенерации, интегрированную с компилятором. Тем, кто мечтал избавиться от тысяч строк шаблонного кода или попробовать метапрограммирование, стало проще это сделать.


Ранее Андрей Дятлов TessenR выступил на конференции DotNext с докладом «Source Generators в действии». А теперь, пока мы готовим следующий DotNext, сделали для Хабра текстовую расшифровку его доклада.



Что вообще такое эти Source Generators? Как их использовать? Как предоставить пользователю вашего генератора необходимую гибкость конфигурации и понятные сообщения о возникающих проблемах? Как разобраться, когда что-то пошло не так?


Ответы на все эти и другие вопросы — в тексте.

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

Как сделать так, чтобы новый сайт быстро добавился в поисковые системы Яндекс и Google и начал индексироваться?

Reading time7 min
Views18K

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

Берем в учет то, что сайт уже разработан и просто лежит где-то на тесте.

Честно сказать, задачка не из простых.

Итак, поехали: выберете тематику вашего сайта и точно определитесь с тем, что хотите продвигать. Это нужно для того, чтобы у вашего сайта в последствии было максимально релевантное доменное имя к основному запросу. Затем выберете доменное имя, это можно сделать на таких площадках как: nic.ru, reg.ru, beget.com/ru и многих других.

Читать далее
Total votes 29: ↑8 and ↓21-8
Comments4

SVTR — state-of-the-art нейросеть для задачи OCR

Reading time8 min
Views5.7K

SVTR - state-of-the-art модель-трансформер для решения задачи OCR.

Авторами статьи была предложена архитектура с одним "зрительным" модулем для эффективного распознавания текста. Основная идея работы заключается в обработке признаков разного уровня, то есть локальных, которые представляют собой признаки отдельных частей символов, и глобальных, признаков целого изображения. Входное изображение с текстом сперва разбивается на компоненты, которым соответствуют определенные части изображения. Далее, применяя механизм self-attention между компонентами модель извлекает важную информацию, используя локальные и глобальные признаки. Также, уменьшая размерность и объединяя признаки после блоков self-attention, модель формирует многогранное представление о тексте на изображении. В результате, модель выдаёт последовательность признаков, в которой уже закодирован текст без использования рекуррентных сетей!

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

Экзибит, прокачай мой трансформер или Основные идеи по улучшению модели трансформера с 2018 по 2020 год (часть 1)

Reading time14 min
Views2.7K

В июне 2021 года вышла статья “A Survey of Transformers” - обзор различных нововведений, сделанных с применением архитектуры “трансформер” после ее появления в материале “Attention is all you need”.

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

Представляю в блоге ЛАНИТ обзор статьи “A Survey of Transformers”.

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

Token Pruning или «Первое слово съела корова»

Reading time11 min
Views1.9K

Начнем повествование с приевшейся, шаблонной, клишированной фразы, мотивирующей сжатие нейронных сетей:

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

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

И cегодня я бы хотел рассказать об одном методе, специфичном для популярной нынче архитектуры Transformer.

Поехали!
Total votes 5: ↑5 and ↓0+5
Comments0

Контекстные многорукие бандиты для рекомендации контента, или Не Бернулли единым

Reading time17 min
Views10K

Привет, Хабр! Меня зовут Александр Сухочев, я занимаюсь машинным обучением и руковожу командой рекомендаций и развития сервисов ВКонтакте. Сегодня хочу поделиться нашим опытом и результатами внедрения контекстуальных многоруких бандитов для рекомендации контента на примере игр и стикеров.

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

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

Основные алгоритмы решения задачи многорукого бандита: эпсилон-жадный подход, сэмплирование Томпсона, Upper Confidence Bound.

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

Заметки о практической реализации — о тонкостях внедрения, бизнес-требованиях и результатах на примере сервиса рекомендации игр и стикеров.

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

Чек-лист по проектированию регистрации

Reading time3 min
Views11K

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

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

Рейтинг русскоязычных энкодеров предложений

Reading time9 min
Views23K

Энкодер предложений (sentence encoder) – это модель, которая сопоставляет коротким текстам векторы в многомерном пространстве, причём так, что у текстов, похожих по смыслу, и векторы тоже похожи. Обычно для этой цели используются нейросети, а полученные векторы называются эмбеддингами. Они полезны для кучи задач, например, few-shot классификации текстов, семантического поиска, или оценки качества перефразирования.

Но некоторые из таких полезных моделей занимают очень много памяти или работают медленно, особенно на обычных CPU. Можно ли выбрать наилучший энкодер предложений с учётом качества, быстродействия, и памяти? Я сравнил 25 энкодеров на 10 задачах и составил их рейтинг. Самой качественной моделью оказался mUSE, самой быстрой из предобученных – FastText, а по балансу скорости и качества победил rubert-tiny2. Код бенчмарка выложен в репозитории encodechka, а подробности – под катом.

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

Самый полный чек-лист для защиты от мошенников

Reading time17 min
Views157K

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

Читать далее
Total votes 117: ↑115 and ↓2+144
Comments169

32 типичные ошибки в интернет-рекламе

Reading time6 min
Views3.6K

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

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

Итак, к ошибкам:

Посмотреть ошибки
Total votes 8: ↑4 and ↓40
Comments1

Подключаем к Экселю GPU и ускоряем Эксель в 300 раз

Reading time3 min
Views30K

Попалась мне задачка оптимизации, а так как я большой фанат Экселя, то и выбор инструмента был скорым. Единственная пакость: Эксель дико медленный. Так, на одну итерацию уходило как минимум 35 минут, а таких итераций планировалось сделать 1275 (как минимум)!

Цель этого небольшого проектика – ускорить исполнение VBA скриптов задействуя все доступные мне железяки: GPU и CPU. Ну и до кучи, так как библиотека моя, была реализована многозадачность.

О, да, я хочу на это посмотреть!
Total votes 35: ↑34 and ↓1+42
Comments26

«Как я придумала термин open source». 3 февраля 1998 года Кристин Питерсон предложила новое название для free software

Reading time8 min
Views1.9K
image3 февраля 1998 года был изобретён термин open source. Мало кто знает, что его предложила Кристин Питерсон (Christine Peterson), соосновательница Foresight Institute и химик по образованию. Сегодня в день очередной годовщины я решил опубликовать перевод воспоминаний Кристин о том самом легендарном совещании в феврале 1998 года, на котором пытались осуществить ребрендинг «свободного ПО» и сделать термин более понятным и в том числе заинтересовать бизнес. Конечно, там были и Эрик Реймонд, и Брюс Перенс, и другие, но само название ещё не было придумано. Не мне рассказывать какую популярность обрёл этот лаконичный термин, отражавший суть работы с такими свободными программами. Предлагаю вместе с Кристин вспомнить историю, произошедшую в 1998 году.

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

Я являюсь автором термина «программное обеспечение с открытым исходным кодом» и придумала его, когда работала исполнительным директором в Foresight Institute. Не будучи разработчиком программного обеспечения, как все остальные, я благодарна программисту Linux Тодду Андерсону за то, что он поддержал термин и предложил его группе.

Это рассказ с моей точки зрения о том, как я придумала этот термин, как он был предложен, и о том, как на него в последующем отреагировали. Конечно, существует множество рассказов о создании термина, например, от Эрика Реймонда и Ричарда Столлмана, но мой рассказ ещё ни разу не был опубликован до этого момента.

Введение термина «программное обеспечение с открытым исходным кодом» было сознательной попыткой сделать эту область деятельности более понятной для новичков и бизнеса, что считалось необходимым для его распространения среди более широкого сообщества пользователей.
Читать дальше →
Total votes 11: ↑7 and ↓4+4
Comments10

Таймер в .NET с интервалом 1 мс. Windows

Level of difficultyMedium
Reading time14 min
Views24K

Вы пишите код на платформе .NET под Windows и вам нужно выполнять некоторые действия каждую миллисекунду. Возможно ли это? Какие есть варианты и насколько они надёжны? Разберёмся, что можно использовать, и какие есть гарантии по точности срабатывания. Статья сконцентрирована на поиске такого решения, которое работало бы и под .NET Framework, и под .NET Core / .NET, и в разных версиях ОС, и являлось бы механизмом общего назначения (а не только для программ с GUI, например).

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

CRUD операции с Blazor, .Net 6.0 и Entity Framework Core

Reading time12 min
Views13K

В этой статье мы создадим веб-приложение, используя Blazor, .Net 6.0 и Entity Framework Core для выполнения CRUD операций на базе Asp.Net Core.

В этом руководстве мы будем использовать Visual Studio 2022 и SQL Server 2014.

Читать далее
Total votes 9: ↑6 and ↓3+3
Comments5

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity