Обновить
1380.21

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

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

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

Текстонезависимая идентификация по голосу

Время на прочтение18 мин
Охват и читатели18K

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


Однако, я не умею строить летающие тарелки или синтезировать вирусы, а потому речь пойдет про терминаторов, а точнее о том как этим трудягам помочь отыскать Джона Коннора.


image


Мой рукодельный терминатор будет несколько упрощён — он не сможет ходить, стрелять, говорить "I'll be back". Единственное на что он будет способен — распознать голос Коннора, ежели он его услышит (ну или, например, Черчилля, если его тоже надо будет найти).

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

Pygest #16. Релизы, статьи, интересные проекты из мира Python [15 августа 2017 — 28 августа 2017]

Время на прочтение2 мин
Охват и читатели9.6K
image Всем привет! Это уже шестнадцатый выпуск дайджеста на Хабрахабр о новостях из мира Python.

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

А теперь к делу!
Перейти к дайджесту

Язык Terra — низкоуровневый партнёр Lua

Время на прочтение12 мин
Охват и читатели18K
Terra — низкоуровневый язык системного программмирования, встраиваемый и имеющий возможность метапрограммирования с помощью языка Lua.

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

Знай свой инструмент: Event Loop в libuv

Время на прочтение6 мин
Охват и читатели70K
image
Юдель Пэн. Часовщик. 1924

«Компьютер — это конечный автомат. Потоковое программирование нужно тем, кто не умеет программировать конечные автоматы» 
Алан Кокс, прим. Википедия


“Знай свой инструмент” — твердят все вокруг и все равно доверяют. Доверяют модулю, доверяют фреймворку, доверяют чужому примеру.

Излюбленный вопрос на собеседованиях по Node.js — это устройство Event Loop. И при всем том, очевидном факте, что прикладному разработчику эти знания будут полезны, мало кто пытается самостоятельно погрузиться в устройство событийного цикла. В основном, всех устраивает картинка сверху. Хоть это и похоже на пересказ фильма, который ты не смотрел, а о котором тебе рассказал друг.
Читать дальше →

Точим себе инструмент на PyQt

Время на прочтение7 мин
Охват и читатели79K
Мне нужен был инструмент. Острый, практичный, универсальный. Отвечающий всем моим требованиям и расширяемый по моему желанию.

image

Но простой и удобный. Тут надо отметить, что на основной работе я не разработчик, поэтому постоянной среды программирования на рабочем компе не имею и, когда это требуется, пишу на чем придется — bat, JScript, VBA в MSOffice (да, это Windows, корпоративные системы, тут нет bash и perl «из коробки»), макросы в разном ПО и т.д. Все это помогает решить текущую задачу, но уровень и возможности маленько не те, что хотелось бы иметь.

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

Вы скажете, что сейчас есть инструменты на любой вкус и цвет, только выбирай. Лягушка aka TOAD под Oracle, SoapUI для шины и продукты GNU и Apache для всего остального.
Но проблема в том, что все они они специализированы под одну какую-то деятельность, а с другой стороны слишком универсальны — можно сделать многое, но многими действиями. А если возможность в продукте отсутствует, то добавить ее нельзя. Либо продукт закрытый, либо нужно разрабатывать/покупать плагин, либо качать исходники и в них разбираться. А мне нужен был инструмент, в котором простые действия делаются просто, а на сложные сначала тратится немного времени и дальше опять все просто.
Читать дальше →

Идеи о новых возможностях обычного/параллельного программирования (расширение C++)

Время на прочтение6 мин
Охват и читатели13K
Здравствуйте, уважаемые читатели.

Предлагаю всем, кто заинтересуется, обсудить некоторые основные идеи классического и параллельного программирования в расширении C++, основанном на процедурах/функциях с планированием повторного входа (ПППВ/ФППВ). В минимальном варианте — это процедура или функция, у которой есть статический или динамический план исполнения.
Читать дальше →

Продвинутый Jekyll

Время на прочтение10 мин
Охват и читатели55K

Jekyll — генератор статических сайтов. Это означает, что на вход ему даётся какая-либо информация, а на выходе получается набор HTML-страничек. Всё отлично когда сайт простой или даже одностраничный. Но что насчёт более сложных сайтов? Справится ли Jekyll? Будет ли удобно?


Данная публикация — попытка обобщить знания, полученные при создании нескольких веб-сайтов. Поэтому оставляю ссылки и на рабочие примеры, и на их полные исходники на GitHub. Уровень материала идёт от простого к сложному.

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

Поддержка системных ошибок в C++

Время на прочтение23 мин
Охват и читатели33K

Предисловие


Я долго думал, нужно ли делать перевод этого, уже известного, цикла статей под названием «System error support in C++0x», повествующего о <system_error> и обработке ошибок. С одной стороны он написан в 2010 году и меня попросту могут счесть некрофилом, а с другой стороны в рунете очень мало информации по этой теме и многие довольно свежие статьи ссылаются на этот цикл, что говорит о том, что он не теряет актуальности и по сей день.

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

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

Итак, приступим.
Читать дальше →

ColumnsGrid для WPF

Время на прочтение2 мин
Охват и читатели6.7K
Размещение элементов в контроле Grid может быть утомительным. Удобнее, когда они автоматом размещаются по ячейкам, как в UniformGrid.

ColumnsGrid добавляет к этому следующие возможности:

  1. Колонки задаются одной строкой Columns=«Auto,*,200,Shared1»
  2. Задается интервал между колонками Spacing=«4»
  3. Переход на следующую строку задается элементом <Separator Height=«4»/>
Читать дальше →

Лучше чем C

Время на прочтение3 мин
Охват и читатели22K
В настоящее время у системных программистов практически нет выбора какой язык использовать. По хорошему все варианты сводятся или к чистому Си или к Rust, хотя как показывает опыт далеко не всем нравится его синтаксис.

Благодаря усилиями команды разработчиков языка у D теперь появилось совместимое с чистым Си подмножество обладающее не только привычным для любого программиста Си синтаксисом, но и значительно расширяющее функционал языка. Новое подмножество называется «betterC». Это подмножество позволяет перевести написание Си приложение на новый уровень.
Читать дальше →

Погода и маршруты в MajorDoMo

Время на прочтение7 мин
Охват и читатели16K


Это вторая статья в которой я попытаюсь рассказать как настроить погоду и маршруты в системе умного дома MajorDoMo и сделаем для них отдельные сцены. А также настроим вывод данных о погоде на главной сцене.
Читать дальше →

Мьютексы и захват замыканиями в Swift

Время на прочтение11 мин
Охват и читатели19K


Перевод статьи Мэтта Галлагера.

В этой статье речь пойдёт об отсутствии потокового выполнения (threading) и инструментов синхронизации потоков в Swift. Мы обсудим предложение о внедрении «многопоточности» (concurrency) в Swift и то, как до появления этой возможности потоковое выполнение в Swift будет подразумевать использование традиционных мьютексов и общего изменяемого состояния (shared mutable state).

Использовать мьютекс в Swift не особенно сложно, но на этом фоне хотелось бы выделить тонкие нюансы производительности в Swift — динамическое выделение памяти во время захвата замыканиями. Мы хотим, чтобы наш мьютекс был быстрым, но передача замыкания для исполнения внутри мьютекса может снизить производительность в 10 раз из-за дополнительных расходов памяти. Давайте рассмотрим несколько способов решения данной проблемы.
Читать дальше →

Как создать расистский ИИ, даже не пытаясь. Часть 1

Время на прочтение9 мин
Охват и читатели28K
На днях, по мотивам очередной статьи, посвященной проблеме расизма в распознавании речи, я участвовала в большом споре о том, кто в этом виноват. Часть людей была уверена, что это заговор программистов. На самом деле, правда кроется в данных, которые ИИ использует для своего обучения. Я решила провести эксперимент, чтобы наглядно доказать это. Оказалось, что Роб Спир (Rob Speer) уже все сделал за меня.

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


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

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

Paraquire, или Перестаньте доверять библиотекам

Время на прочтение3 мин
Охват и читатели7.6K

TL; DR


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



Под катом описывается proof-of-concept библиотеки, реализующей механизм загрузки npm-модулей с возможностью установить права подобно тому, как на Android можно выдавать приложению конкретные разрешения.

Вместо

var lib = require('untrusted-lib');

предлагается писать где-нибудь

var paraquire = require('paraquire')(module);

и затем

var lib = paraquire('untrusted-lib');

или же

var lib = paraquire('untrusted-lib', {builtin:{https:true}});

Исходный код доступен на гитхабе под LGPLv3.

Кроме того я, не будучи достаточно опытным NodeJS-разработчиком, прошу у сообщества советов и обсуждения.
Читать дальше →

OCaml и RESTful JSON API с использованием Eliom

Время на прочтение9 мин
Охват и читатели4.1K
Привет, Хабр! Представляю вашему вниманию перевод руководства RESTful JSON API using Eliom.

В этом руководстве рассказывается, как создать простой, но полный REST API с использованием JSON в качестве формата сериализации.
Читать дальше →

Установка и настройка главной сцены в MajorDoMo

Время на прочтение8 мин
Охват и читатели39K
MajorDoMoСистема умного дома сейчас в моде. Каждый хочет у себя дома сделать какую-нибудь автоматизацию. Например, когда вы подходите к своему дому, чтоб камера стоящая на улице вас распознала и отключила систему безопасности. Либо если к вам пытается кто-то залезть, чтоб система приняла какие-то меры. Также систему умного дома можно настроить так, чтоб она поддерживала необходимую влажность, температуру и т.п. в доме, управление освещением с мобильных устройств, прогноз погоды, курс валют и многое другое. Естественно, чтоб всем этим можно было управлять голосовыми командами. Всё это (и не только это) можно настроить в системе умного дома MajorDoMo (Major Domestic Module или Главный Домашний Модуль).
Читать дальше →

Корутины в Kotlin (гайд)

Время на прочтение12 мин
Охват и читатели161K


Simon Wirtz в своем блоге публикует достаточно много интересных постов о Kotlin.
Представляю вашему вниманию перевод одного из них.
Читать дальше →

Случайный лес vs нейросети: кто лучше справится с задачей распознавания пола в речи (ч.2)

Время на прочтение10 мин
Охват и читатели14K
Первая часть нашего гайда была посвящена интересной задаче машинного обучения – распознаванию пола по голосу. Мы описали общий подход к большинству задач speech processing и с помощью случайного леса, обученного на статистиках акустических признаков, решили задачу с довольно большой точностью – 98,4% верно классифицированных аудиофрагментов.

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

В каком-то смысле эта ступень избыточна: пол человека не меняется во время разговора (по крайней мере, на текущем этапе развития и в заданных стандартных условиях), поэтому рассчитывать на увеличение точности не стоит. Но в академических целях мы попробуем.

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

Погружение в разработку на Ethereum. Часть 1

Время на прочтение11 мин
Охват и читатели100K
Технология блокчейна завладела умами. Покупаются фермы, ICO собирают миллионы долларов. Наша компания тоже захотела приобщиться. Решили начать с малого. В серии статей будет описан наш путь от новичков в сфере блокчейна до общепризнанных гуру. На момент написания этих слов мы все еще на этапе новичков, предлагаем следить за нашим развитием и развиваться с нами.

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

Академия Veeam — практические классы для начинающих C# разработчиков

Время на прочтение4 мин
Охват и читатели10K

Регистрация на курс открыта до 31 августа.

Осенью 2017 года Veeam Software запускает свой первый образовательный проект: курс для разработчиков C#.

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

Мы предлагаем не просто возможность бесплатно пройти обучение — после окончания курса у успешных участников будет реальный шанс устроиться в компанию и стать частью команды Veeam Research & Development.

А теперь ответим на главный вопрос: чем обучение в Академии Veeam может заинтересовать начинающих разработчиков?
Читать дальше →

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