• А нужен ли Redis или хватит PostgreSQL

    • Translation
    image

    Есть проверенная архитектура, которую я видел много раз для поддержки ваших веб-сервисов и приложений:

    • PostgreSQL для хранения данных
    • Redis для координации очередей фоновых заданий (и некоторых ограниченных атомарных операций)

    Redis — это фантастика, но что, если бы я сказал вам, что его наиболее распространенные варианты использования этого стека на самом деле могут быть достигнуты с использованием только PostgreSQL?

    Сценарий 1: очередь заданий


    Пожалуй, наиболее частое использование Redis, которое я видел, — это координация отправки заданий из вашего веб-сервиса в пул фоновых воркеров. Идея состоит в том, что вы хотите записать желание выполнить какое-то фоновое задание (возможно, с некоторыми входными данными) и гарантировать, что только один из многих ваших фоновых воркеров выполнит его. Redis помогает в этом, поскольку предоставляет богатый набор атомарных операций для своих структур данных.
    Читать дальше →
  • Чего «энтерпрайзу» в PostgreSQL не хватает

      В конце прошлого года Иван Панченко предложил мне рассказать на внутреннем семинаре Postgres Pro, чего, по нашему опыту использования PostgreSQL в "кровавом энтерпрайзе" "Тензора", не хватает в этой СУБД.

      С докладом пока так и не сложилось, зато появилась эта статья, в которой я постарался собрать наиболее показательные вещи, которые вызывают "напряги" при активном использовании PostgreSQL в реальном бизнесе.

      Читать далее
    • Мы Опубликовали Качественный, Простой, Доступный и Быстрый Синтез Речи

        fiona


        Вокруг темы синтеза речи сейчас много движения: на рынке есть огромное число тулкитов для синтеза, большое число закрытых коммерческих решений за АПИ (как на современных технологиях, так и на более старых, т.е. "говорилки") от условных GAFA компаний, большое количество американских стартапов, пытающихся сделать очередные аудио дипфейки (voice transfer).


        Но мы не видели открытых решений, которые бы удовлетворяли одновременно следующим критериям:


        • Приемлемый уровень естественности речи;
        • Большая библиотека готовых голосов на разных языках;
        • Поддержка синтеза как в 16kHz так и в 8kHz из коробки;
        • Наличие своих собственных голосов у авторов решения, не нарушающих чужие права и лицензии;
        • Высокая скорость работы на "слабом" железе. Достаточная скорость работы на 1 потоке / ядре процессора;
        • Не требует GPU, команды ML инженеров или какой-либо дополнительной тренировки или для использования;
        • Минимализм и отсутствие зависимостей / использование в 1 строчку / не надо ничего собирать или чинить;
        • Позиционируется именно как готовое решение, а не очередной фреймворк / компиляция чужих скриптов / тулкитов для сбора плюсиков;
        • Решение никак не связано и не аффилировано с закрытыми экосистемами и продуктами Гугла / Сбера / Яндекса / вставить нужное;

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

        Читать дальше →
      • Две недели с F#

          А вы когда-нибудь записывали свои впечатления от изучения нового языка? Записывали все, что вам не понравилось, чтобы через пару недель изучения понять, насколько недальновидными и тупыми они были? 



          На днях я понял F#, и попытаюсь описать словами мысль, стоящую за языком. 
          Читать дальше →
        • Реализация процессорной архитектуры из книги Чарльза Петцольда «Код. Тайный язык информатики»

          Наверное многие, из тех, кто увлекается изучением того, как работает компьютер на самом низком уровне читали такие книги как: Таненбаум "Архитектура компьютера" или Харрис, Харрис "Цифровая схемотехника и архитектура компьютера", которые безусловного являются объемлющими трудами и хорошими книгами для обучения. Но если вы не являетесь инженером, но всё равно хотите погрузиться в мир цифровых вычислений и более глубоко понять то, а как же работает компьютер. В этом вам сможет помочь книга Чальза Петцольда "Код. Тайный язык информатики", которая начинает свой рассказ от причин, по которым людям понадобился обмен информацией и её обработка , с какими проблемами при этом столкнулись и заканчивает рассказам об устройстве реальных операционных систем и процессоров и их архитектуру. При этом автором был отлично подобран уровень абстракции, которого он придерживался при написании. В каких-то моментах подробно описывая работу элементарных частей процессора, а в других рассказывая простыми словами о сложных вещах.

          Читать далее
          • +20
          • 6.1k
          • 1
        • Почему список в кортеже ведет себя странно в Python?

          В языках программирования меня всегда интересовало их внутреннее устройство. Как работает тот или иной оператор? Почему лучше писать так, а не иначе? Подобные вопросы не всегда помогают решить задачу «здесь и сейчас», но в долгосрочной перспективе формируют общую картину языка программирования. Сегодня я хочу поделиться результатом одного из таких погружений и ответить на вопрос, что происходит при модификации tuple'а в list'е.
          Читать дальше →
        • Монады как паттерн переиспользования кода


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


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


            Но ведь в интернете буквально сотни статей про ФП и монады, зачем писать еще одну?


            Дело в том, что все их (по крайней мере те что я читал) можно поделить условно на две категории: с одной стороны это статьи где вам объяснят что монада это моноид в категории эндофункторов, и что если монада T над неким топосом имеет правый сопряжённый, то категория T-алгебр над этой монадой — топос. На другой стороне располагаются статьи, где вам рассказывают, что монады — это коробки, в которых живут собачки, кошечки, и вот они из одних коробок перепрыгивают в другие, размножаются, исчезают… В итоге за горой аналогий понять что-то содержательное решительно невозможно.


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


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

            Читать дальше →
          • Нетоксичное лицемерие

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

              Я немного утомлен частотой ее появления в жизни. Трудно выразить мнение так, чтобы не вляпаться в очередную попытку выяснить, было ли грубым сказанное.
              Читать дальше →
            • Теория программирования: Вариантность

              Здравствуйте, меня зовут Дмитрий Карловский и я… хочу поведать вам о фундаментальной особенности систем типов, которую зачастую или вообще не понимают или понимают не правильно через призму реализации конкретного языка, который ввиду эволюционного развития имеет много атавизмов. Поэтому, даже если вы думаете, что знаете, что такое "вариантность", постарайтесь взглянуть на проблематику свежим взглядом. Начнём мы с самых основ, так что даже новичок всё поймёт. А продолжим без воды, чтобы даже профи было полезно для структурирования своих знаний. Примеры кода будут на псевдоязыке похожем на TypeScript. Потом будут разобраны подходы уже нескольких реальных языков. А если же вы разрабатываете свой язык, то данная статья поможет вам не наступить на чужие грабли.


              а вдруг там лис?

              Читать дальше →
            • Инженерный подход к разработке ПО. От теории к практике

                Как проверить идеи, архитектуру и алгоритмы без написания кода? Как сформулировать и проверить их свойства? Что такое model-checkers и model-finders? Что делать, когда возможностей тестов недостаточно?


                Привет. Меня зовут Васил Дядов, сейчас я работаю программистом в Яндекс.Почте, до этого работал в Intel, ещё раньше разрабатывал RTL-код (register transfer level) на Verilog/VHDL для ASIC/FPGA. Давно увлекаюсь темой надёжности софта и аппаратуры, математикой, инструментами и методами, применяемыми для разработки ПО и логики с гарантированными, заранее определёнными свойствами.


                Это вторая статья из цикла (первая статья тут), призванного привлечь внимание разработчиков и менеджеров к инженерному подходу к разработке ПО. В последнее время он незаслуженно обойдён вниманием, несмотря на революционные изменения в подходе и инструментах поддержки.

                Читать дальше →
              • Город без пробок


                  Глава вторая.
                  (ссылка на первую главу)

                  Искусство проектирования дорожных сетей


                  Транспортные проблемы города глазами человека из «Computer Science»


                  Если бы мне порекомендовали статью с названием «Искусство проектирования дорожных сетей», я бы тот час поинтересовался, как много дорожных сетей было построено с участием ее автора. Должен признаться, моя профессиональная деятельность лежала далеко от дорожного строительства и была последнее время связанна с проектированием микропроцессоров, где я, в том числе, занимался ресурсоемкостью коммутации данных. Так получилось, что мой стол тогда стоял как раз напротив панорамного окна, открывавшего прекрасный вид на длинный участок Волгоградского шоссе и части ТТК с их нескончаемыми пробками с утра до вечера, от горизонта до горизонта. И тут, в один из дней меня вдруг осенило:«Черт возьми, ведь сложности процесса коммутации данных, с которыми я борюсь на кристалле, точь в точь должны быть похожи на те трудности, с которыми сталкивается поток автомобилей внутри паутины уличных дорог».
                  Вероятно, именно взгляд со стороны и применение нетрадиционных для исследуемой области методов дали мне шанс разобраться в причине возникновения пробок и выработать рекомендации, как преодолеть их проблему на практике.
                  Читать дальше →
                • Must-have алгоритмы машинного обучения

                  • Translation
                  Хабр, привет.

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

                  Метод главных компонент (PCA)/SVD


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

                  image

                  SVD — это способ вычисления упорядоченных компонентов.

                  Полезные ссылки:


                  Вводный гайд:

                  Читать дальше →
                  • +24
                  • 24.5k
                  • 6
                • Интерпретируемая модель машинного обучения. Часть 2

                  • Translation
                  Всем привет. Считанные дни остаются до старта курса «Machine Learning». В преддверии начала занятий мы подготовили полезный перевод, который будет интересен как нашим студентам, так и всем читателям блога. И сегодня делимся с вами завершающей частью данного перевода.





                  Partial Dependence Plots


                  Partial Dependence Plots (графики частичной зависимости или же PDP, PD-графики) показывают незначительное влияние одного или двух признаков на прогнозируемый результат модели машинного обучения ( J. H. Friedman 2001 ). PDP может показать связь между целью и выбранными признаками с помощью 1D или 2D графиков.
                  Читать дальше →
                  • +11
                  • 6.1k
                  • 1
                • Манипуляция сознанием. Почему так просто?



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

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

                    Здесь приведено 14 распространенных манипуляций. Анализируя свою жизнь, я могу сказать, что ощущал в разное время воздействия каждой из них, а некоторые методы «промывки мозгов» по отношению ко мне были по-настоящему эффективны. Думаю, это всем хорошо знакомые атаки. Я упорядочил их в некий список и попытался описать механизмы и причины, почему они, несмотря на тривиальность, являются довольно эффективными.

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

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

                    Это не статья по психологии и не статья по философии, хотя бы потому, что в этой статье не будет приведено ни одной ссылки.
                    Читать дальше →
                  • Где учат преподавать (не только в пед. институте)

                      Кому будет полезна статья:

                      • студентам, которые решили подзоработать репетиторством
                      • аспирантам или специалистам, которым выдали семинарскую группу
                      • старшим братьям\сестрам, когда младшие просят научить программировать (вышивать крестиком, говорить на китайском, анализировать рынки, искать работу)

                      То есть всем тем, кому нужно учить, объяснять, и кто не знает за что хвататься, как планировать уроки, что рассказывать.

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


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


                        Результат научной пропаганды через неделю: миф о том, что прививки вызывают аутизм (А), о побочных эффектах прививок (B) и уровень колебаний относительно вакцинации (С). Практически все показатели увеличились после того, как люди познакомились с научными фактами о прививках с развенчанием мифов

                        Учёные безуспешно пытаются развенчать распространённые мифы о вреде вакцинации. Как показало последнее исследование специалистов из Университета Эдинбурга (Шотландия), ни одна из трёх стратегий по развенчанию мифов, с использованием научных фактов, не имела эффекта. Хуже того, во всех случаях наблюдался обратный эффект. Ознакомившись с фактами о безопасности вакцин, обычные люди в своей массе были склонны ещё активнее проявлять эффект колебаний относительно вакцинации (vaccine hesitancy) — феномен, когда люди затягивают с применением или вовсе отказываются использовать доступную вакцину.

                        По мнению учёных, стойкость заблуждений народных масс связана с распространёнными когнитивными искажениями, в том числе с эффектом иллюзии правды — тенденцией верить информации, которая многократно повторяется. Здесь имеют место и другие когнитивные искажения.
                        Читать дальше →
                      • Нейросети и глубокое обучение, глава 4: визуальное доказательство того, что нейросети способны вычислить любую функцию

                        • Translation
                        В данной главе я даю простое и по большей части визуальное объяснение теоремы универсальности. Чтобы следить за материалом этой главы, не обязательно читать предыдущие. Он структурирован в виде самостоятельного эссе. Если у вас есть самое базовое представление о НС, вы должны суметь понять объяснения.


                        Один из наиболее потрясающих фактов, связанных с нейросетями, заключается в том, что они могут вычислить вообще любую функцию. То есть, допустим, некто даёт вам какую-то сложную и извилистую функцию f(x):


                        Читать дальше →
                      • Хельсинки. Как найти работу в финской игровой индустрии, начать работать без разрешения и не нарушить российские законы

                          В декабре 2018 мы с женой переехали из Санкт-Петербурга в Хельсинки. Уже есть довольно много статей и (видео)блогов о том, как живется в Финляндии и стоит ли сюда переезжать. Вместо этого я бы хотел рассказать ту часть истории, которая связана с самим переездом. Нам пришлось решить кучу вопросов разной степени важности, многие из которых возникали внезапно и не всегда имели очевидное решение. Мы постарались подытожить наш опыт в этом, не побоюсь этого слова, лонгриде. Его нельзя назвать ультимативным гайдом, так как любой опыт всегда индивидуален, но я очень надеюсь, что нам удалось пополнить выдачу гугла новыми ключевыми словами, и хотя бы одному человеку станет проще найти ответы. Здесь вы можете узнать, как можно найти работу в финской игровой индустрии, как начать работать до получения разрешения на работу, как подготовить документы до переезда, что оформить после переезда и какую информацию нужно предоставить российским государственным органам, чтобы не нарушить закон.


                          Читать дальше →
                        • Физика и экономика. Гносеологическая разница и ее проявление в IT

                          В мир IT я пришел из теоретической физики. Занимался, в основном, экономическими задачами. Занимался – это: анализ, ТЗ, постановка, проектирование, программирование. Естественно, я все время сопоставлял физический и экономический подходы к познанию законов природы и экономики соответственно. По этой теме созрела некая точка зрения. О ней и будет речь.

                          Читать дальше →