Приветствую, Хабр. В данной статье хочу рассмотреть процесс добавления слов в языковую модель vosk'а (vosk - библиотека для распознавания речи, в основе которой kaldi).
.net — разработчик
C# как замена VBA в Excel
Думаю, одним из таких приложений, в которых хорошо приживётся C#, был бы Excel, этим языком можно было бы заменить VBA. Язык VBA уже немного отстаёт от времени, а Microsoft не планирует его апгрейдить. Вместо него — компания предлагает среду-песочницу для JavaScript под названием Office Scripts.
Я понимаю привлекательность JavaScript для веб-версии Excel, но не в качестве хорошей замены VBA.
Так как этим не собирается заниматься Microsoft, я решил, что могу попробовать сам. В конце концов, если Microsoft так увлечена JavaScript, маловероятно, что она выдавит меня с обширного рынка использования C# в Excel.
Итак, вот что я создал:
QueryStorm IDE, выполняющая запрос LINQ для таблицы Excel
«Это что, IDE языка C#, выполняющая запросы LINQ для таблиц Excel?» Именно. Всё так и есть.
Я назвал это QueryStorm. Моя работа над этим проектом началась ещё в 2014 году. Изначально у него имелась только поддержка SQL, и с тех пор я продолжал над ним работать, постепенно добавляя поддержку скриптинга на C#, пользовательских функций C#/Excel, поддержку NuGet, отладчик и даже магазин приложений!
Девять способов выстрелить себе в ногу с PostgreSQL
Большинство этих проблем связано с масштабируемостью. Это то, что не повлияет на вас, пока база данных мала. Но если когда-нибудь вам захочется, чтобы база данных перестала быть маленькой, о таких вещах стоит подумать заранее. В противном случае они нанесут вам удар исподтишка, возможно, в самый неудобный момент. Плюс во многих случаях работы потребуется меньше, если делать всё правильно с самого начала, чем менять уже работающую систему.
Полное понимание асинхронности в браузере
- Цикл событий
Задачи, тики и Web API
Очередь задач
16,6 миллисекунды на задачу
Обработка больших задач
Микрозадачи
requestAnimationFrame
requestIdleCallback
Сравнение очередей
Цикл событий в Node.js - Функции обратного вызова
Ад обратных вызовов
Не выпускайте Залго
Жёсткая сцепленность
Проблема доверия - Обещания
Цепочки обещаний и проброс отказа
Неявное поведение
Возвращение нового обещания
Спрятанный try/catch
Thenable-объекты
Статические методы
Promise.all
Promise.race
Promise.any
Promise.allSettled
Промисификация
Обещания или функции обратного вызова?
Корутины - Async/await
Верхнеуровневый await и асинхронные модули
Обработка ошибок
Не все await одинаково полезны - Заключение
В небо на велосипеде: летательные аппараты с мускульным приводом
Может ли человек летать, как птица? Без моторов, именно что своими силами? Может. Но есть ряд нюансов. Сегодня мы поговорим о тех, кто попытался — сразу проспойлерю, что у многих из них даже получилось.
Но как именно? Если поддаться соблазну и провести простую аналогию, мы получим, что раз крылья у птиц структурно размещены там же, где руки у человека, то для полёта человек должен махать руками. Логично это, однако, только на первый взгляд. Если исследовать строение организмов человека и птицы внимательнее, мы увидим, что мышцы у них распределены очень по-разному. У летающих птиц (страусов, киви и пингвинов по понятным причинам в расчёт мы не берём) грудная мускулатура, та самая, которая приводит крылья в движение, составляет в среднем около 17% от общей массы тела. У человека же, даже самого раскачанного, грудная мускулатура редко превышает 1% от массы тела. Разница в семнадцать раз! А ведь к массе человека в этих вычислениях надо будет добавить ещё и массу искусственных крыльев – это у птиц они «входят в комплект», человеку же требуется дополнительное снаряжение. В итоге соотношение получается ещё хуже.
Рейкастинг в игровых 2D-движках
Введение
На мой взгляд, рейкастинг — великолепная концепция, понять которую не так сложно, но качественных ресурсов по ней очень мало. Я расскажу о математике, лежащей в её основе, чтобы вы при желании с лёгкостью могли реализовать её в своих будущих проектах. Постараюсь сделать объяснение как можно более понятным, рассказать о всех тонкостях и проблемах, с которыми вы можете столкнуться. Также мы поговорим об оптимизации и о том, как сильно вам могут помочь пространственные хэш-карты. Ещё я напишу простые интерактивные примеры, с которыми вы сможете поэкспериментировать. Учтите, что демо написаны максимально простым образом, не ожидайте увидеть в них код уровня энтерпрайза — мы изучаем саму концепцию, а не реализацию.
Сделай себе книгу для изучения языка с нейросетевыми иллюстрациями
Upd. 04.12.2021. Наш телеграм канал
Upd 10.09.2021. Добавил ещё одну подборку Colab'ов для генерации картинок
Upd 21.09.2021. Добавил пару иллюстраций к Дюне для примера
Статья будет интересна всем любителям программирования, иностранных языков и красивых книг. Сначала мы сделаем параллельную книгу, имея на руках два обычных текста. Затем мы проиллюстрируем ее картинками в стиле pixel art на основе лишь текстовых подсказок.
Книгу можно сделать более чем на сотне языков с восстановлением и подсветкой связей между предложениями:
А теперь давайте сделаем такую книгу сами.
Ускоряем цикл foreach до for
Привет!
В этой небольшой заметке о быстром енумераторе для foreach на C#:
foreach (var i in 1..10)
Можно ли сделать его таким же быстрым, как аналогичный for, и какую магию можно попробовать, добиваясь лучшего решения.
Будет много бенчмарков и шарплаба. Прошу под кат!
Монады как паттерн переиспользования кода
В предыдущей статье мы обсуждали, почему функциональное программирование это совсем не то, что распиарено, и что оно совершенно не противоречит ООП, так, что даже сам "Дядя Боб" пишет про хороший ФП дизайн порождающий хороший ООП дизайн программы (и наоборот).
Сейчас же я хочу рассказать, что такое монады на самом деле, чем они полезны для обычного практикующего разработчика, и приведу примеры, почему недостаточная поддержка их в распространенных языках приводит к копипасте и ненадежным решениям.
Но ведь в интернете буквально сотни статей про ФП и монады, зачем писать еще одну?
Дело в том, что все их (по крайней мере те что я читал) можно поделить условно на две категории: с одной стороны это статьи где вам объяснят что монада это моноид в категории эндофункторов, и что если монада T над неким топосом имеет правый сопряжённый, то категория T-алгебр над этой монадой — топос. На другой стороне располагаются статьи, где вам рассказывают, что монады — это коробки, в которых живут собачки, кошечки, и вот они из одних коробок перепрыгивают в другие, размножаются, исчезают… В итоге за горой аналогий понять что-то содержательное решительно невозможно.
Получается, что первые обычно полезны тем, кто и так знает обсуждаемую тему, а вторые даже не знаю на кого рассчитаны: сколько я их не прочитал, ничего полезного понять из них мне не удалось.
Я же хотел бы занять промежуточную позицию, и рассказать про монады без заумных терминов, но и без котиков, используя понятные ООП разработчикам термины: интерфейсы, паттерны, копипаста, инкапсуляция сложности, бойлерплейт, и так далее. В процессе работы над статьёй ни один термин теории категории использован не был.
Взрывающие мозг истории из книги «Атомные привычки»
Самым клевым в книге оказались истории из жизни. Фишки из этих историй уже безо всякой теории на 150 страниц можно брать и применять на себе / детях / сотрудниках.
Под катом 15 полезных историй из книги «Атомные привычки».
Фрактальный state-менеджер на генераторах*
По некоторым источникам еще в IV до нашей эры Аристотель задался одним простым вопросом — Что было раньше? Курица или яйцо? Сам он в итоге пришел к выводу, что и то, и другое появилось одновременно — вот это поворот! Не правда ли?
Ладно, шутки в сторону, тут есть кое-что интересное. Данная простая дилемма хорошо описывает ситуацию, в которой не ясно, какое из двух явлений считать причиной, а какое — следствием, но в то же время позволяет сделать вывод о том, что причина может являться следствием и наоборот — следствие может являться причиной, смотря с какой стороны посмотреть (относительность, позиция наблюдателя и т.д.).
Прошло полгода с момента первой публикации моих шизоидных фантазий. Я всё также продолжаю пытаться понять непонятное и аппроксимировать это в код. Принцип причинности пополнил список моих интересов. Я перелопатил всё, что сделал ранее, но сохранил и преумножил идею.
Сегодня я не буду терзать ваш разум водопадом отборного бреда. Выпуск будет чуть суровее — ибо лирики меньше, а кода больше. Тем не менее местами он будет вкуснее — ибо вишенки я вам приготовил отменные. Поехали?
Глубже в дебри ФП
Прежде чем начать, зацените эту красоту! Это — игра "жизнь" на языке APL:
В прошлой статье о функциональном программировании мы обсудили некоторые концепции ФП (впрочем, довольно вольно). В этой статье я бы хотел продолжить раскрывать суть других понятий, не затронутых в первой статье. Все же ФП не ограничивается одними монадами, хотя о них сегодня тоже поговорим.
Впереди вас ждут скандалы, интриги, расследования, моноиды, трансформеры, линзы и прочие полугруппы с комонадами. Заодно попытаемся разобраться, откуда происходят эти странные названия.
Information
- Rating
- Does not participate
- Location
- Санкт-Петербург, Санкт-Петербург и область, Россия
- Date of birth
- Registered
- Activity