Архив за 06 апреля 2014

в 23:23, , рубрики: Без рубрики

image

Недавно я завершил переработку графического пакета для моей D библиотеки. Вдохновленный модулями std.algorithm и std.range, я пытался достичь следующих целей:

  • Представить все в виде малых комбинируемых компонентов
  • Избежать неявного копирования и предпочтительно использовать ленивые вычисления
  • Использовать шаблоны для производительности

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

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

Читать полностью »

image

Работая с детьми, понимаешь что программирование, конструирование и прочий STEM можно спокойно начинать с 3 лет. Для этого не потребуется никакого оборудование — детское воображение заменит любой супер-гипер-интерактивный девайс. Главное, желание родителей работать с ребёнком.

Расскажу о том, как мы играли в программистов, что использовали и каких результатов достигли.
Читать полностью »

Наверное, все уже слышали о чудесной библиотеке asyncio?

Если нет, то коротко: эта либа стала стандартом на асинхронное сетевое программирование на Python. tornado и twisted или научатся с ней работать или постепенно уйдут в маргиналы.

asyncio прекрасна, но это просто библиотека для работы с TCP, UDP, UNIX сокетами, PIPES и асинхронным запуском subprocess.

Чтобы всем было здорово нужны сторонние библиотеки, умеющие работать с asyncio. Кое-что уже есть, но мало.

Вот я с коллегами и сделал пару: одну для ZeroMQ и другую для PostgreSQL

Если вы прочно сидите на Python 2 и не интересуетесь Python 3 — не ходите под кат во избежание глупых вопросов и прочих недоразумений.
Читать полностью »

Qt теперь и на Windows PhoneПоддержка разработки мобильных приложений — одно из главных направлений совершенствования Qt. Готовится к выпуску Qt 5.3 и QtCreator 3.1, которые благодаря поддержке WinRT позволят запускать Qt-приложения на новых платформах. Но не дожидаясь релиза уже сейчас можно скачать Qt 5.3 beta и собрать Ваши приложения для мобильных платформ Windows. Новые инструменты позволяют запускать приложения как в эмуляторе, так и непосредственно на подключенном устройстве. Благодаря этому сегодня автор статьи (незнакомый ранее с разработкой для мобильных устройств) собрал первое в своей жизни (пусть и из папки demos) мобильное приложение. Этот факт может служить доводом в пользу разработки приложений под Windows Phone с использованием инструментария Qt. Статья, по моему скромному мнению, будет интересна как опытным разработчикам Windows Phone приложений, так и программистам, которые ранее разрабатывали только Desktop приложения с использованием Qt.Читать полностью »

Вступление

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

К счастью, теперь в Chrome Canary DevTools вы можете отслеживать весь стек вызовов асинхронных функций в JavaScript!
Читать полностью »

Эффективность и конкурентоспособность современных летательных аппаратов (ЛА) во многом определяется совершенством гироскопических датчиков первичной информации, на базе которых строятся навигационные системы и системы управления ЛА.
В настоящее время существует большое многообразие различных типов гироскопических датчиков, правильное применение которых обеспечивает необходимые эксплуатационные качества ЛА.
Каждому типу гироскопических датчиков можно найти оптимальную нишу применения. При выборе гироскопического датчика учитываются следующие его основные характеристики: точность, надежность работы, энергопотребление, габаритные размеры и стоимость. В зависимости от требований, предъявляемых к системам управления и навигационным системам, выбирается соответствующий тип гироскопического датчика.
Тем не менее, из всего многообразия датчиков можно выделить наиболее перспективные по указанным выше характеристикам. Это лазерные гироскопы (ЛГ), волоконно-оптические (ВОГ), волновые твердотельные (ВТГ) и микромеханические гироскопы (ММГ).
Основным их преимуществом является повышенная надежность работы из-за отсутствия быстро вращающихся роторов и карданных подвесов, минимальное потребление электроэнергии за счет реализации основных функциональных узлов на базе сервисной микроэлектроники и возможность повышения точностных характеристик путем математической обработки первичных сигналов датчиков в микропроцессорах.
Читать полностью »

Воздушный шар Google Loon обогнул Землю за рекордные 22 дня

В июне 2013 года компания Google запустила интересный эксперимент Google Loon. Множество воздушных шаров на солнечных батареях должны курсировать в стратосферных ветрах на высоте 20 км. Ветры на такой высоте постоянные, устойчивые и часто дуют параллельно экватору, так что шары должны вращаться вокруг планеты на одной параллели со скоростью 8-30 км/ч. За счет большого количества шаров можно обеспечить сплошное покрытие интернетом земной территории на конкретной параллели. По крайней мере, в теории.

Эксперимент продолжается до сих пор, и недавно один из шаров сумел показать невероятный результат. Меняя высоту и прыгая в разные стратосферные потоки, шар Ibis-167 смог обогнать Землю всего за 22 дня!
Читать полностью »

Когда я изучал язык Go, мне очень понравилась идея с приведением к интерфейсам по сигнатурам методов (остальная часть системы типов мне не понравилась, слишком примитивная). Это ведь статическая утиная типизация! По научному: структурная типизация.

Если вдуматься, у такого подхода куча недостатков: начиная со сложности реализации и заканчивая нарушением принципа подстановки Лисков. Ведь если у класса есть метод с нужной сигнатурой (включая название), это совсем не значит, что этот метод делает то, что ожидается.
Поэтому в мейнстрим языках, в том числе в C#, структурная типизация не поддерживается. Казалось бы на этом и сказке конец. Но недавно я осознал что в проекте, которым я сейчас занимаюсь, структурная типизация применяется. Подробности под катом.
Читать полностью »

в 16:45, , рубрики: d&d, game development, rpg, метки:

Инструментарий

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

Математики нашли способ одновременного соприкосновения 7 цилиндров

Более 50 лет назад автор популярных статей о математике в журнале Scientific American Мартин Гарднер предложил читателям задачу: «Можете ли вы разместить семь сигарет таким образом, чтобы каждая из них соприкасалась со всеми остальными?».
Читать полностью »