Обновить
1268.52

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

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

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

Как я "<" моноидом делал

Время на прочтение6 мин
Охват и читатели8.2K
image Некоторое время назад в одном уютном камерном собрании я делал доклад о своей разработке — скриптовом лиспоподобном языке Liscript. Начал с азов — семантики вычисления списков, префиксной нотации… Дошел до произвольной арности стандартных операций:

+ 1 2 3
=> 6

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

< 1 2
=> true

тоже все понятно. И тут вопрос из зала: «а если 3 аргумента передать, как будет вычисляться?» Я решаю, что это хороший повод выпендриться умными терминами, и отвечаю: «точно так же — как свертка по моноиду» :) И тут же поправляясь — «хотя операция сравнения не является моноидом», пишу пример:

< 1 2 3
=> true
< 1 2 3 4 1 2
=> false

Все так же интуитивно понятно, вопросов не возникает и продолжаем дальше (благоразумно оставляя без рассмотрения вычисления примитивных операций на одном аргументе и вообще при отсутствии оных, а также вычитание/деление и прочие немоноидальные операции :)). Успешно миновав в докладе подобных камней, через некоторое время я подумал — а можно ли как-то изловчиться, и все-таки сделать операцию сравнения моноидом (в каком-либо смысле)? И мне кажется, мне это удалось. Заинтересовавшихся темой прошу под кат.
Читать дальше →

Повесть о создании классической RTS в домашних условиях с нуля (часть 2: «Воскрешение») Окончание статьи: Сеть

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

Примерно год назад вышла моя статья, которую можно назвать "первой частью" данной статьи. В первой части я насколько смог подробно разобрал тернистый путь разработчика-энтузиаста, который мне удалось когда-то самостоятельно пройти от начала и до конца. Результатом этих усилий стала игра жанра RTS "Земля онимодов" созданная мною в домашних условиях без движков, конструкторов и прочих современных средств разработки. Для проекта использовались C++ и Ассемблер, ну, и в качестве основного инструмента моя собственная голова.

В этой статье я постараюсь рассказать о том, как я решил взять на себя роль «реаниматора» и попытаться «воскресить» этот проект. Много внимания будет уделено написанию собственного игрового сервера.

Это окончание статьи, начало тут.
Читать дальше →

Повесть о создании классической RTS в домашних условиях с нуля (часть 2: «Воскрешение») Продолжение статьи: GUI

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

Примерно год назад вышла моя статья, которую можно назвать "первой частью" данной статьи. В первой части я насколько смог подробно разобрал тернистый путь разработчика-энтузиаста, который мне удалось когда-то самостоятельно пройти от начала и до конца. Результатом этих усилий стала игра жанра RTS "Земля онимодов" созданная мною в домашних условиях без движков, конструкторов и прочих современных средств разработки. Для проекта использовались C++ и Ассемблер, ну, и в качестве основного инструмента моя собственная голова.

В этой статье я постараюсь рассказать о том, как я решил взять на себя роль «реаниматора» и попытаться «воскресить» этот проект. Много внимания будет уделено написанию собственного игрового сервера.

Это продолжение статьи, а начало тут.
Читать дальше →

Повесть о создании классической RTS в домашних условиях с нуля (часть 2: «Воскрешение»)

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

Примерно год назад вышла моя статья, которую можно назвать "первой частью" данной статьи. В первой части я насколько смог подробно разобрал тернистый путь разработчика-энтузиаста, который мне удалось когда-то самостоятельно пройти от начала и до конца. Результатом этих усилий стала игра жанра RTS "Земля онимодов" созданная мною в домашних условиях без движков, конструкторов и прочих современных средств разработки. Для проекта использовались C++ и Ассемблер, ну, и в качестве основного инструмента моя собственная голова.
В этой статье я постараюсь рассказать о том, как я решил взять на себя роль «реаниматора» и попытаться «воскресить» этот проект. Много внимания будет уделено написанию собственного игрового сервера.

Функциональное программирование: в Java и C# слишком много церемоний

Время на прочтение11 мин
Охват и читатели33K
Многие, наверняка, слышали о функциональном программировании, некоторые пробовали написать свой Hello World, а кто-то даже завел свой «функциональный» pet-проект. Но многие ли пользовались функциональными языками в продакшене? Какие у ФП преимущества и недостатки? Оправдывает ли парадигма функционального программирования ожидания разработчиков? На эти и многие другие вопросы нам смог ответить человек, открывший для себя преимущества функционального подхода после 20 лет ООП-разработки.


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

2038: остался всего 21 год

Время на прочтение4 мин
Охват и читатели44K
Jonathan CorbetПорой кажется, что на фронте борьбы с проблемой 2038 года наступило относительное затишье. Однако время идет, и тот день, когда 32-битные значения типа time_t больше не смогут корректно отображать даты, наступит уже меньше чем через 21 год. Этот срок может показаться большим, однако сравнительно долгий жизненный цикл многих встраиваемых систем подразумевает, что некоторые из них, будучи введенными в строй в наше время, все еще будут работать, когда наступит критический момент. Арнд Бергманн — один из основных разработчиков, занимающихся этой проблемой. На конференции Linaro Connect 2017 он поделился новостями о текущем положении дел в этой области.
Читать дальше →
23-24 мая 2017 года в главном здании Академии наук в Москве пройдёт четвёртая конференция разработчиков российских операционных систем OS Day 2017. Мы встретились с участниками и спикерами и поговорили с ними о самой конференции, о российских OS, о кадровом голоде и перспективах отечественной разработки. Также нам удалось обсудить положение дел в нескольких российских компаниях, создающих свои операционные системы. Но обо всём по порядку.
Читать далее

Redux как сердце архитектуры фронтенда Единой фронтальной системы

Время на прочтение5 мин
Охват и читатели18K
В прошлой статье мы рассказали, как в целом устроен фронтенд программы, обсудили технологический стек. Данную статью посвятим обсуждению Redux  —  почему мы называем его сердцем архитектуры ЕФС.


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

Сегментация текстовых строк документов на символы с помощью сверточных и рекуррентных нейронных сетей

Время на прочтение11 мин
Охват и читатели24K
Сегментация строки на символы является одним из важнейших этапов в процессе оптического распознавания символов (OCR), в частности, при оптическом распознавании изображений документов. Сегментацией строки называется декомпозиция изображения, содержащего последовательность символов, на фрагменты, содержащие отдельные символы.

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

Поиск границ символов усложняется из-за артефактов печати и оцифровки (сканирования) документа, приводящим к “рассыпанию” и “склеиванию” символов. В случае использования стационарных или мобильных малоразмерных видеокамер спектр артефактов оцифровки существенно пополняется: возможны дефокусировка и смазывание, проективные искажения, деформирование и изгибы документа. При съемке камерой в естественных сценах на изображениях часто возникают паразитные перепады яркости (тени, отражения), а также цветовые искажения и цифровой шум в результате низкой освещенности. На рисунке ниже показаны примеры сложных случаев при сегментации полей паспорта РФ.





В этой статье мы расскажем о методе сегментации символов текстовых строк документов, разработанном нами в Smart Engines, основанный на обучении сверточных и рекуррентных нейронных сетей. Основным рассматриваемым в работе документом является паспорт РФ.
Читать дальше →

Бесплатные плагины, инструменты и сервисы для разработки игры на юнити

Время на прочтение3 мин
Охват и читатели32K
Всем привет. В своей статье я хочу рассказать про бесплатные юнити плагины, которые использовал для создания своих игр. Есть плагины для разработки, монетизации, аналитики, соцсетям и т.д. Вот ссылка на список в гитхабе.

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

Транслируем видеопоток с веб-страницы по WebRTC на Facebook и YouTube одновременно

Время на прочтение6 мин
Охват и читатели17K
Facebook и YouTube предоставляют сервисы трансляций, которые позволяют вещать Live-видеопотоки на широкую аудиторию зрителей. В этой статье мы расскажем, как захватить видеопоток с веб-страницы по технологии WebRTC и отправить этот видеопоток одновременно в Facebook и на YouTube для прямой трансляции — сразу в два сервиса.
Читать дальше →

ROS. Стек навигации

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

title


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


Также будут рассмотрены несколько специфичных для антропоморфных роботов пакетов. Любой робот (наверняка даже машинка со средне-мощным бортовым ПК под управлением Linux и парой веб камер) наверняка найдет здесь что — нибудь для себя.

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

Как автоматизировать подтверждение заказа, если ты не Юлмарт (спойлер: точно так же, как Юлмарт)

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

В чем главная проблема российских интернет-магазинов?

а) Работать приходится на очень конкурентном рынке, чуть зазевался — тебя обскакали ребята из соседнего подвала.
б) Цены приходится держать низкие, потому что рядом всегда есть ребята из соседнего подвала, которые торгуют «в серую» и платят зарплату в конвертах. А клиенту это не важно, он хочет купить хорошо и дешево, и это логично.
в) Цены приходится держать еще ниже, потому что есть китайские и прочие интернет-магазины, где часть товаров еще дешевле, плюс они не платят налоги. И т.д. и т.п.

К чему это приводит видно довольно хорошо: за последние два года закрылся «Белый Ветер», сменил собственника «Связной», ну а часть крупных игроков просто год от года публично отчитываются об убытках.

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

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

Ужасный import кракен — как использовать ES6-модули и не сойти с ума

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

Глобальная область видимости (aka namespace в TypeScript) — уже давно не круто. Можно долго перечислять преимущества модулей (ES6 модулей, в частности), но лично для меня решающим стала возможность использовать SystemJS для динамической загрузки исходников и Rollup, для сборки бандла.


Однако, первое, с чем пришлось столкнуться при внедрении ES6-модулей- безумное количество import выражений, с безумным количеством точек внутри:


import { FieldGroup } from "../../../Common/Components/FieldGroup/FieldGroup";

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

Разработка симулятора эволюции одноклеточных организмов «The strongest survives»

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

В данном посте я расскажу о своем опыте написания игры-симулятора эволюции одноклеточных организмов на прямоугольной плоскости. Кроме разработки алгоритмов симулятора, речь пойдет о проблемах с которыми я столкнулся при разработке данного проекта на C#, а также о его портировании для работы в браузере. В конце статьи будет ссылка на готовую к игре версию и на все исходники. Если я вас заинтересовал — прошу под кат.

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

Юбилейный PYCON RUSSIA пройдёт 16-17 июля

Время на прочтение4 мин
Охват и читатели2.6K
Пятый российский PyCon пройдёт 16-17 июля в отеле «Cronwell Яхонты Таруса» в 95 км. от Москвы. Если вы не знаете, что такое PyCon, посмотрите ролик ниже — в нём коротко про PyCon-2016 и историю конференции.


Чтобы оценить уровень спикеров, посмотрите видео и презентации прошлогодних докладов или почитайте отчёт на Хабре о PyConRu-2016.

Регистрация для участников открыта. Early Bird билеты стоят 14 500 рублей. Таких билетов будет 50, потом стоимость увеличится. Для студентов действует спец.цена.

Присоединяйтесь!
Читать дальше →

Построение гибких PHP приложений

Время на прочтение8 мин
Охват и читатели34K
Эра фулстэк фрэймворков в прошлом. Современные разработчики фрэймворков разделяют свои монолитные репозитории на компоненты с помощью ответвлений в Git, позволяя разработчику выбрать то, что действительно необходимо его проекту. Это означает, что вы можете построить свое приложение на топовых Zend Service Manager, Aura Router, Doctrine ORM, Laravel (Illuminate) Eloquent, Plates, Monolog, Symfony Cache или любых других компонентах, которые можно установить через Composer.

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

Как запускать на SAP Cloud Platform сервлеты из Eclipse

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

Это четвёртая публикация в рамках помощи участникам конкурса «SAP Кодер-2017».


Вы хотите попробовать SAP Cloud Platform, но вам привычнее работать в Eclipse. Нет проблем! Вы можете изучить новые возможности в максимально комфортных условиях. Но все по порядку.
Сегодня мы разберем, как разработать сервлет в Eclipse и запустить его в SAP Cloud Platform.
Читать дальше →

Книга «ECMAScript 6 для разработчиков»

Время на прочтение7 мин
Охват и читатели17K
image Познакомьтесь с радикальными изменениями в языке JavaScript, которые произошли благодаря новому стандарту ECMAScript 6. Николас Закас — автор бестселлеров и эксперт-разработчик — создал самое полное руководство по новым типам объектов, синтаксису и интересным функциям. Каждая глава содержит примеры программ, которые будут работать в любой среде JavaScript и познакомят вас с новыми возможностями языка. Прочитав эту книгу, вы узнаете о том, чем полезны итераторы и генераторы, чем ссылочные функции отличаются от обычных, какие дополнительные опции позволяют работать с данными, о наследовании типов, об асинхронном программировании, о том, как модули меняют способ организации кода, и многом другом.

Более того, Николас Закас заглядывает в изменения, которые появились в ECMAScript 7. Неважно, являетесь вы веб-разработчиком или работаете с node.js, в этой книге вы найдете самую необходимую информацию, позволяющую эффективно использовать все возможности ECMAScript 6.
Читать дальше →

Выпуск Rust 1.17

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

Команда Rust рада представить выпуск Rust 1.17.0. Rust — это системный язык программирования, нацеленный на безопасность, скорость и параллельное выполнение кода.


Если у вас установлена предыдущая версия Rust, то для обновления достаточно выполнить:


$ rustup update stable

Если у вас ещё не установлен Rust, то вы можете установить rustup c соответствующей страницы нашего веб-сайта и ознакомиться с подробным примечанием к выпуску 1.17.0 на GitHub.


Что вошло в стабильную версию 1.17.0


Выпуск Rust 1.17.0 в основном вносит небольшие улучшения, преимущественно касающиеся удобства использования. Например, время жизни 'static теперь автоматически подразумевается для констант или статических переменных. При создании константы или статической переменной:


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

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