...

суббота, 11 октября 2014 г.

[Из песочницы] Простая реализация шифрования и расшифровывания файлов в Qt

Приветствую, почтенное хабрасообщество.

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



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


Тот, кто уже знаком с Qt, и в частности с QIODevice, знает, какой это мощный инструмент для работы с устройствами ввода-вывода. Поэтому, практически сразу было принято решение взять этот класс за основу и отнаследоваться от него. Не буду подробно останавливаться на этом моменте, только отмечу, что основная «магия» заключается в переопределении методов



qint64 QIODevice::writeData(const char *data, qint64 len)


и

qint64 QIODevice::readData(char *data, qint64 len)


соответственно для записи данных и их чтения.

Чтобы указать, с каким файлом работать, у пользователя класса есть несколько способов:

1) Передать путь к файлу

2) Передать указатель на объект QFileDevice.


Если вам интересно, почему QFileDevice, а не QFile, то ответ прост. Чтобы можно было передавать такой полезный класс как QSaveFile.


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


Поэтому при выборе алгоритма шифрования было решено использовать симметричный алгоритм, т.к. он позволяет быстро шифровать данные блоками. Важным требованием к реализуемому классу было возможность писать в файл с любого места. В этой связи пришлось иметь в виду, чтобы зашифрованные данные не зависели от предыдущих или последующих данных. В свете всех ограничений, было решено выбрать алгоритм AES с режимом ECB. Такой режим позволяет получить независимость конкретного блока данных от остальных, однако, уровень защищенности конечно падает. Пришлось смириться с этим. Стоит отметить, что сейчас пользователь может выбрать битность ключа 128, 192 или 256 бит (чем меньше битность, тем быстрее работает алгоритм, но становится при этом менее защищенным). Для шифрования с помощью OpenSSL использовались высокоуровневые EVP методы шифрования.


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


Из интересных моментов еще стоит отметить то, что класс может работать и с обычными файлами. Если не указать пароль, то с файлом будем работать также, как будто работаем с обычным QFile.


Для понимания работы с классом, я сделал два тестовых проекта.

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

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


Использовать класс очень просто – копируете 2 файла (cryptfiledevice.cpp и cryptfiledevice.h) в ваш проект и можете уже работать с ним.


Зависимости на данный момент:

1) Qt >= 5.1.0 (так как для хеша пароля и соли используется SHA3)

2) Компилятор, поддерживающий c++11


Класс и тестовые проекты тестировались на Windows 7 (x86, x64), Ubuntu (x64) и MacOS X Mavericks.


Есть еще некоторые мысли, которые хотелось бы реализовать в будущем. Это реализация методов remove, rename, exists по аналогии с QFile, чтобы не подключать QFile, если нет в нем необходимости. Также, хотелось бы добавить метод, который позволит пользователю определить, является этот файл зашифрованным или нет. Надеюсь, что в скором будущем руки дойдут, и я добавлю этот функционал.

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


Исходники выложил в открытом доступе на GitHub под лицензией MIT. Берите, пользуйтесь, совершенствуйте на здоровье. Все предложения и пожелания можете отправлять на email или писать в issue tracker (вся информация есть в README на GitHub).


Ссылка на GitHub: CryptFileDevice


This entry passed through the Full-Text RSS service - if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.


[Из песочницы] Советы и рецепты начинающему Android программисту

[Перевод] Вчера CSS исполнилось 20 лет. Интервью с Хоконом Виумом Ли (Часть 2)

Продолжение. Первая часть была опубликована вчера.


Почему вы предпочли блочную модель, в которой отступы, границы и поля добавляются к заданной ширине, а не модель box-sizing: border-box из IE5?


Есть подходящие случаи использования для обеих моделей. Если вы хотите, чтобы изображение растягивалось, чтобы заполнить блок — оригинальная модель CSS подходит лучше. А если надо, чтобы поля и границы не выходили за пределы определённой области, лучше модель IE5. Лично я думаю, что случаев, для которых лучше подходит стандартная модель CSS, больше, но некоторые люди, которых я очень уважаю, считают иначе. Этот конфликт был изящно разрешён добавлением свойства box-sizing, которое сейчас поддерживают все браузеры.


Я никогда не любил абсолютное позиционирование. Я не прав? Как оно появилось в спецификации?


Ваш вопрос возвращает меня в 1996 год, когда по этому поводу шли жаркие дебаты. В двух словах: Microsoft предлагала ввести абсолютное позиционирование в черновике CSS Regions: Absolute Positioning and Z-Ordering (к сожалению, обсуждение проходило в закрытом списке рассылки W3C, вот ближайший по смыслу общедоступный документ). У некоторых членов сформированной недавно рабочей группы по CSS возникли сомнения, и Берт и я написали упрощенное встречное предложение. В нём мы предлагали избавиться от свойства position (и использовать вместо него display) и описали только относительно позиционирование (что давало нам время хорошенько продумать позиционирование абсолютное). Тем не менее, Microsoft уже реализовала собственное предложение и не хотела убирать эту функцию. В конце концов единственными существенными изменениями были добавление свойств right и bottom в дополнение к left и top и position: fixed. В таком виде спецификация стала частью стандарта CSS2.


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



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


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


Если бы у вас была волшебная палочка, какую часть CSS вы бы удалили бесследно, и что бы вы наоборот, добавили повсеместно?


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


[Из песочницы] Децентрализованная система обмена сообщениями

Мир IT-разработок идет по спирали. Основатели UNIX считали, что пусть программ будет много, но каждая из них выполняет свою задачу на «отлично». В начале 2000х основным трендом были программы-комбайны, выполняющие все, что только можно и даже больше. Сейчас вектор направления разработок начал движение в обратную сторону. И если раньше форматом обмена данными был в основном стандартный поток ввода/вывода, то теперь из-за того, что системы делают все более распределенными, передачей данными между узлами занимаются специализированные интеграционные комплексы (англ. Message Bus или Message broker).

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


Пример реализации я хотел бы представить.



Немного терминологии: шина сообщений (message bus), брокер сообщений (message broker) — все это сходные (но далеко не одинаковые) понятия, обозначающие программный комплекс, осуществляющий прием, обработку и передачу данных от одного узла к другому.

Абонент – приложение, отправляющее или/и принимающее сообщение по согласованному протоколу.


Для начала кратко о системах с центральным узлом (включая системы с резервированием вида master-slave, master-master).

Типичные корпоративные системы: TibcoEMS, IBM MQ, JBoss и другие. Из системы с открытым исходным кодом: RabbitMQ, Apache ActiveMQ, Apollo, Redis. Есть даже облачные сервисы: IronMQ. Наиболее часто используемые протоколы: AMQP, STOMP.

Основная идея – абоненты подключаются к общему серверу (кластеру серверов), который маршрутизирует сообщения между подключенными клиентами.


Преимущества:



  • Централизованная настройка;

  • Легкость обеспечения шаблона «гарантированная доставка»;

  • Наличие библиотек практически на всех языках программирования;

  • Широкий выбор конкретной реализации;




Тем не менее присутствуют ряд недостатков:

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

  • Отказ центрального узла приводит к отказу к обслуживанию всех абонентов;

  • При наличии системы резервирования (таких как master-slave), могут возникать различные проблемы синхронизации данных;

  • Для некоторых систем, например встраиваемые, это является избыточным.




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

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


Другим подходом является обмен данными без брокера (англ. broker-less). Обычно такая архитектура требует специализированную библиотеку и/или дополнительного программного обеспечения на узле абонента.

Из корпоративного сегмента, насколько мне известно, есть только один продукт: TIBCO Rendezvous (если кто посоветует альтернативы, буду очень признателен).

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

Основная идея децентрализованной архитектуры сходна с идеей P2P: абонент передает данные другим абонентам, не используя общего координирующего сервера. (DHCP, DNS и прочее я не считаю, так как они находятся на другом слое OSI).


Можно выделить следующие преимущества такого подхода:



  • Распределение нагрузки на множество узлов;

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

  • Потенциально более высокая скорость работы.




Из недостатков можно отметить:

  • Отсутствие централизованного управления;

  • Практически невозможно обеспечить гарантированную доставку;

  • Низкая распространенность подобных систем в бизнес ИТ и отсутствие каких-либо стандартов.




Для реализации часто используется протокол UDP, как не требующий установления соединения. Также, используя UDP multicast (далее просто multicast) возможно очень просто реализовать шаблон PUB/SUB, т.е. когда узел-издатель (PUB) публикует/рассылает данные по указанному топику (теме) узлам-подписчикам (SUB). По такой технологии работает ММВБ при рассылке биржевых данных (FIX FAST) и множество других систем.

Рассмотрим реализацию такой системы. Требования следующие:



  • Реализация шаблона PUB/SUB;

  • Основное назначение — системы оповещения с небольшими (до 1КБ) сообщениями;

  • Система должна работать без центрального сервера и независимо от получателей;

  • Основная ОС — Linux 2.6 или выше.


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


Определим содержание UDP пакета:



  • Имя топика;

  • Данные.




Алгоритм подписчика можно описать следующим образом:

  1. Подключится к multicast группе:

    struct ip_mreq mreq;
    struct sockaddr_in sin;
    sin.sin_family = AF_INET;
    sin.sin_port = htons(PORT);
    sin.sin_addr.s_addr = ADDR;
    mreq.imr_multiaddr = addr;
    mreq.imr_interface.s_addr = htonl(INADDR_ANY);
    setsockopt(fd, SOL_SOCKET, SO_REUSEPORT, &optval, sizeof (optval));
    if (bind(fd, (struct sockaddr *) &sin, sizeof (struct sockaddr_in)) < 0) {
    perror("Bind");
    return -1;
    }
    if (setsockopt(fd, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mreq, sizeof (mreq)) < 0) {
    perror("Join");
    return -2;;
    }




  2. Получить сообщение;

  3. Если топик сообщения не в списке интересующих, перейти на пункт 2;

  4. Обработать сообщение;

  5. Вернуться на пункт 2.




Работа издателя еще проще:

  1. Добавить к сообщению имя топика;

  2. Отправить на multicast адрес сообщение.




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

Снизим нагрузку на получателей, назначив разные multicast адреса для топиков. Для вычисления группы используем любое хэш преобразование, например CRC-32, и получим необходимый IP адрес.


Алгоритм подписчика:



  1. Рассчитать хэш значения от интересующих топиков:

    unsigned int addr_value = 4009754625 + (crc32_hash(subject) % 16777215);




  2. Подключится к полученным multicast адресам. Особенности работы с ними хорошо описаны в этой теме;

  3. Получить сообщение;

  4. Если топик сообщения не в списке интересующих нас, перейти на пункт 3;

  5. Обработать сообщение;

  6. Вернуться на пункт 3.




Издатель:

  1. Добавить к сообщению имя топика;

  2. Рассчитать хэш топика;

  3. Отправить на полученный multicast адрес сообщение.


Так как диапазон доступных multicast групп составляет 16777214 адресов, то если хэш-функция хорошо подобрана, на 33 миллиона разных топиков будет около двух совпадений.

Так как в Linux возможно использовать корректно только один сокет на одну multicast группу, то для получения данных рекомендуется использовать epoll.


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


Реализацию и исходный код можно посмотреть здесь.


P.S.


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


This entry passed through the Full-Text RSS service - if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.


Подключаем Arduino к счетчику электроэнергии

Нет, эта статья не об очередном способе обмануть этот злосчастный прибор. Здесь пойдет речь о том, как с помощью Arduino и среды LabView превратить свой счетчик электроэнергии в средство мониторинга потребляемой мощности или даже в амперметр!





Самый первый счетчик электроэнергии был индукционным. Принцип его работы до смешного прост — по сути это электродвигатель, ротором которого является алюминиевый диск, вращающий циферблат. Чем больше потребляемый ток- тем быстрее крутится диск. Устройство чисто аналоговое.



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



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

Кроме того, на лицевой панели любого устройства есть передаточное соотношение счетчика А — число импульсов на 1 кВт*ч. Как видно из фото, у подопытного А=12800. Из этой информации можно сделать следующие выводы:


— С каждым импульсом счетчик фиксирует потребление, равное 1/12800 части от 1 кВт*ч. Если включить к счетчику нагрузку и начать просто считать импульсы, то потом легко получить потребленное ею количество электроэнергии (кВт*ч), разделив количество импульсов на передаточное соотношение.


— Так как индикатор изменяет скорость своего моргания, то можно вывести зависимость между мощностью (кВт) и временем одного импульса счетчика, что позволит получить данные о мощности/токе.

Не будем загружать статью расчетами, но если нужно то


вот они
Воистину, передаточное число счетчика — великая вещь, так как зная ее можно выразить как мощность так и ток:

Составим пропорцию из нашего передаточного соотношения (А=12800 имп/кВт*ч) и неизвестного передаточного соотношения, которое будет при нагрузке X и за время одного единственного импульса (моргания лампочки):


Здесь X — неизвестная мощность, а t — время одного импульса. Выражаем отсюда неизвестную мощность и вот оно:



Ток считается с применением следующей пропорции передаточных соотношений и токов известных и неизвестных при нагрузке X.:




Что в общем-то приводит к идентичной формуле, но для тока (ток измеряется в Амперах а индексы означают нагрузку, при которой будет данный ток):



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






Таким образом, все упирается в измерение времени одного импульса (моргания индикатора). В своих изысканиях я опирался на этот отличный проект. Некий итальянец сделал в среде Labview интерфейс для мониторинга мощности и придумал схему для измерения импульсов. Но в его проекте красовалась огромная недоработка — он подходил только лишь для счетчиков с передаточным соотношением 1000 имп/кВт*ч.


Верхний график — средняя мощность за 5 минут, нижний — в реальном времени. Интерфейс довольно гибкий и легко модифицируется под свои нужды. Если Вы еще не имели дела со средой LabView — рекомендую познакомиться.


Чтобы все заработало, оказалось достаточно внести один единственный блок в алгоритм программы, в соответствии с формулой выше.


Выглядит это следующим образом


Казалось бы просто, но до этого надо еще додуматься!


Итак, если Вы все-таки решите реализовать мониторинг мощности, то есть два варианта:


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

Схема будет выглядеть следующим образом:


Схема для бесконтактного снятия импульсов




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

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


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




В моем случае — доступ полный, поэтому заморачиваться я особо не стал. Устанавливаем LabView и вперед измерять! Все графики представляют собой мощность (Вт) в реальном времени.

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


Совсем другое дело клеевой пистолет — заявленная мощность 20 Вт.Он ведет себя в соответствии с законами физики — при нагреве сопротивление нагревателя увеличивается, а ток соответственно уменьшается. Проверял мультиметром — все так и есть.



Старый радиоприемник «Весна». Здесь график ушел вверх в начале из-за того, что я запустил измерение во время импульса, соответственно это повлияло на данные. Горки на графике показывают, как я крутил ручку громкости. Чем громче — тем больше радио кушает.



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



А теперь самое интересное. Я провел небольшой эксперимент со своим стареньким ноутбуком, результат которого приведен на картинке:



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

(Трепещите параноики!)


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


Исходники скетча для Arduino и файл LabView можно скачать на странице автора. После установки доработать напильником добавить блок в соответствии с описанием выше.


This entry passed through the Full-Text RSS service - if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.


[Из песочницы] RAR Print — самодельный 3D принтер из CD rom'ов


В начале декабря 2013 попался в руки фотополимерный 3D-принтер Muve3D. Принтер пришел кит набором, напрямую из США. Проект этот был запущен на краудфандинговой платформе в апреле 2013 и успешно реализован. Однако конструкция потребовала достаточно трудоемкой сборки и настройки. Ко всему прочему были различного рода недоработки. Тем не менее получилось собрать и запустить принтер. Получил первый опыт.





На фото тот самый Muve3D.


Параллельно с танцами у принтера начал глубже изучать тему фотополимерной 3D печати. В России существует институт ИПЛИТ РАН, который занимается вопросами лазерной стереолитографии (фотополимерная печать) еще со времен СССР. Они печатают разные штуки:




Блок фары автомобиля ВАЗ.




Макет модуля — «Квант» космической станции «Мир».


Некоторое время спустя попался мне на глаза разобранный CD rom, сразу вспомнилась толщина дорожек, которые выжигает лазер (порядка единиц микрометров). И тут понеслось копание интернета на существующие разработки. В сети попалась интересная статья про создание лазерного резака из CD Приводов:



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



3D модель прототипа механики 3D принтера.



И его первое физическое воплощения при помощи 3D печати.


Принцип работы 3D-принтера RAR Print схож с большинством существующих. Цифровая 3D-модель объекта, которую мы будем печатать – загружается в программное обеспечение. Я использовал открытое программное обеспечение (Repetier Host) и открытую программно-аппаратную платформу Arduino, благодаря этому обеспечивается управление всеми компонентами 3D принтера. Оптическая система от CD привода перемещается по двум горизонтальным осям: X ось и Y ось. Что пришлось сделать далее, так это заменить лазерный диод оптической системы привода на ультрафиолетовый светодиод за 20 рублей. Эта замена обусловлена условиями для отверждения фотополимерной жидкости. Емкость наполнена жидким фотополимером, который твердеет под воздействием ультрафиолетового излучения. Когда оптическая головка засветила один слой жидкого фотополимера и он прилип, съемная площадка поднимается на один слой вверх (порядка 10 -100 микрометров). Весь процесс повторяется до тех пор пока не отвердеют все слои, которые составляют нашу 3D модель.



Распотрошенные CD и DVD приводы.



Размещение электроники (плата Arduino Mega 2560 — мозг принтера).



Внешний вид корпуса принтера.




Первая печать из фотополимера.



Заключение




Создание 3D принтера от идеи – до реализации заняло порядка 3 месяцев. Проект был начат в декабре 2013 года и готовый прототип увидел свет в начале февраля 2014 года. Стоимость его создания порядка 10 000 рублей. Спасибо за участие моим Томским коллегам и Роману Богданову.

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


Для самостоятельного изготовления проект доступен для скачивания бесплатно на сайте Thingiverse.


This entry passed through the Full-Text RSS service - if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.


[unable to retrieve full-text content]


Windows 10 поставляется с кейлоггером

Если вы решили скачать Windows 10 Developer Preview, то будьте осторожны. Компания Microsoft официально признала, что операционная система поставляется вместе с кейлоггером. Все нажатия клавиш записываются и отправляются в Microsoft. Право на слежку прописано в условиях участия в Insider Program. Скачивая Windows 10 Developer Preview, каждый пользователь автоматически соглашается на эти условия.

image


Windows 10 Developer Preview также осуществляет аудиозапись. Более подробно о методике сбора данных сказано в документе, который описывает обработку конфиденциальных данных пользователя в Windows 10 Developer Preview. В соответствии с ним, запись звука осуществляется только во время введения голосовых команд пользователем и в процессе работы голосовых функций ОС, таких как распознавание речи.


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


В официальных документах также упоминается, что Microsoft имеет право делиться собранной информацией с неназываемыми «партнёрами».


This entry passed through the Full-Text RSS service - if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.


пятница, 10 октября 2014 г.

Прочитали Хабр по почте. Результаты

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

Сегодня я службу остановил. Всех активных подписчиков отключил.

По катом делюсь информацией в цифрах и результах работы службы.



Честно сказать результатами работы службы не доволен.

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

Во-вторых, не дождался хабраэффекта, хотя надеялся.
Ошибки



Просто перечислю перечень ошибок, которые были и которые либо были исправлены, либо не исправлены до сих пор:

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

2. Новые статьи как рассылка списком приходили на почту. Проходило время, статью неожиданно закрывали на Хабре. Если в браузере я заходил по ссылке и видел страницу «Доступ к публикации закрыт», то вот в моей службе почему-то такая страница не скачивалась и вываливалась ошибка. Не исправил до сих пор.
Наблюдения



1. Служба, работая с тестовой почтой и получая запросы, сохраняла от писем-запросов только «тему» и «отправителя». Как только письмо сохранилось в БД, оно тут же удалялось из почтового ящика. Т.е. тело письма я нигде не хранил. Поэтому приношу извинения за то, что возможно пользователи что-то писали в теле, может быть задавали вопросы, я это не видел.

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



9 дней (круглосуточно) работала служба.

56 хабов использовалось для получения новых статей.

465 новых названий постов было сохранено в БД (для рассылки).

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

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

357 запросов получено от пользователей.

265 запросов были корректны, остальные содержали неправильные команды в теме письма.

12 запросов — самое большее кол-во запросов от одного пользователя.

37 пользователей сделали только один запрос и всё.

4 пользователя удивили оригинальностью своих почтовых ящиков (anonim0101@, ya.terminator48@, cloaca@, idontwannatellyoumyemail@)

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

А по результатам посмотрим.


This entry passed through the Full-Text RSS service - if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.


Визуализация алгоритмов для сборки мусора

Большинство разработчиков воспринимают сборку мусора (garbage collection) как нечто само собой разумеющееся. Это стандартный процесс, который периодически освобождает память, удаляя ненужные объекты. А вот американский программист Кен Фокс (Ken Fox) захотел досконально разобраться и заглянуть «под капот» современных сборщиков мусора.

Кен «поигрался» с пятью разными алгоритмами сборки мусора и опубликовал маленькие анимации, которые наглядно демонстрируют их работу.


Анимации большего размера выложены на http://ift.tt/1t0J7BY.



Краткое пояснение по инфографике. Каждая картинка целиком — это память, выделенная для программы. Сначала она чёрная, то есть неиспользуемая, но постепенно начинается подсвечиваться ярко-жёлтым (операции записи) и ярко-зелёным (операции чтения). Со временем записанные фрагменты темнеют, чтобы показать развитие процесса во времени.


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


На первой анимации показано, как работает программа без сборщика мусора, то есть по методу очистки в конце. Самый простой способ: нужно дождаться окончания процесса, а потом очистить всё сразу. Это на удивление эффективная техника, пишет автор, если у вас есть способ разбить процесс на отдельные задачи. Так поступает, например, веб-сервер Apache.


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


Подсчёт ссылок — единственный алгоритм, хорошо совместимый с разными менеджерами ресурсов.


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


В блоге автора и на его странице Github можно изучить также алгоритмы сборщиков типа Mark-Sweep, который решает проблему с обработкой циклических структур в памяти (анимация справа), Mark-Compact с перемещением объектов в памяти (анимация) и копирующего сборщика, который тоже перемещает объекты в памяти, но делает это более простым способом (анимация).


По теме:

Garbage Collection наглядно


This entry passed through the Full-Text RSS service - if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.


[Перевод] Сегодня CSS исполнилось 20 лет. Интервью с Хоконом Виумом Ли (Часть 1)

В этот день двадцать лет назад нынешний CTO Opera Хоком Виум Ли опубликовал предложение по каскадным таблицам стилей для HTML. Если бы Пол Маккартни был веб-разработчиком, и писал сегодня песню «Оркестр клуба одиноких сердец сержанта Пеппера», то наверное у него получилось бы что-то вроде:

It was twenty years ago today

That Håkon wrote a doc to say

That if the Web’s gonna last a while

Then we need a way to define style.

So may I introduce to you

a way to add visual treats:

It’s Sergeant Håkon’s Cascading Style Sheets!


Но, когда мы пришли к Полу домой и попросили его спеть для нас эту песню, он отказался и спустил на нас собак по имени FontTag и Bgcolor. Поэтому, чтобы отметить такую круглую дату, мы пошли к Хокону и задали ему несколько вопросов о прошлом, настоящем и будущем CSS.



Вы придумали CSS 20 лет назад. Вы довольны тем, каким выросло ваше детище?


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


Люди часто цитируют ваши слова о том, что вы предложили CSS, чтобы спасти HTML. Поясните эту мысль, пожалуйста.


HTML был бы совсем другим, если бы не CSS. Верстальщики с опытом работы в десктопной среде, в том числе и я, придя в веб, были совершенно сбиты с толку из-за отсутствия тэгов &ltcolor> и &ltfont&gt. Когда в 1993 году я впервые опубликовал документ в паутине, мне пришлось преобразовывать текст в картинки — вот как это выглядело. Если бы дела пошли так и дальше, веб мог бы превратиться в гигантский факсимильный аппарат, где весь текст передавался бы в виде картинок. Это был бы кошмар для слепых пользователей или поисковых роботов. Я предложил CSS для того, чтобы предотвратить это, дав авторам возможность создавать выразительный дизайн, не засоряя HTML.


В первоначальном варианте спецификации был предложен механизм задания «влияния», который выглядел вот так: h1.font.size = 24pt 100%. Предполагалась такая логика работы:



Значение в процентах в в конце строки задаёт требуемый уровень влияния (здесь — 100%). Если это таблица стилей верхнего уровня (то есть она под полным контролем пользователя), запрос уровня влияния может быть удовлетворён полностью, например, все заголовки будут отображаться шрифтом Helvetica. Если же уровень влияния запрашивается в нижестоящих стилях, он удовлетворяется в тех пределах, которые позволяют вышестоящие.





Почему от этого механизма отказались?

Он был предложен, чтобы найти компромисс между предпочтениями автора документа и читателей. Источником вдохновения служила идея из MIT Media Lab — в будущем телевизоры должны иметь регуляторы, управляющие не только яркостью и цветом, но и уровнями секса и насилия или, скажем, левых и правых политических взглядов. Механизм влияния предполагал создание подобного «слайдера» на одном конце которого отображение документа полностью контролировал автор, а на другом — читатель. А браузер должен был смешивать их предпочтения в заданной пропорции, чтобы все были довольны. Это хорошо работало для некоторых свойств (например, font-size), но создаваля проблемы для других (например, font-family). В первом же ответе на предложение CSS Берт Бос раскритиковал эту идею:



Мысль о том, что два варианта дизайна можно смешать, приведя к некому среднему стилю, кажется мне абсолютно неправильной. Что будет, если мой синий текст на жёлтом фоне смешать с чьим-то любимым жёлтым на синем? Зелёный на зелёном? Или представь себе страницу с заголовками, набранными авангардными декоративными шрифтами, и абзацами текста, набранными Гельветикой.





Я ответил:

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





Конечно же, Берт был прав (он прав почти всегда) в том, что это предложение создаёт больше проблем, чем решает, и от него пришлось отказаться.

Тот же вопрос о написании имен свойств через точки, в стиле JavaScript. Почему от него отказались?


Интересно, что вы называете его «стилем JavaScript». Когда я писал своё предложение, JavaScript ещё не придумали, так что я не мог взять этот синтаксис оттуда. На самом деле источником вдохновения служили X-ресурсы из X Window System, ещё одного проекта от MIT.


Было две причины, по которым синтаксис CSS перешёл от font.size к font-size. Во-первых, дефис делал код более похожим на обычный текст на английском языке, то есть более читабельным. Во-вторых, в DSSSL и DSSSL-Lite имена свойств писались именно через дефис. Джеймс Кларк, который написал первый набросок DSSSL-Lite, участвовал в первой конференции W3C по таблицами стилей, и Берт и я позаимствовали дефис из DSSSL. Но у этого синтаксиса есть и недостаток — дефис используется в качестве знака «минус», что может сбить с толку парсер.


Как Берт Бос включился в работу над проектом, и как вам работалось вместе?


Берт Бос написал отзыв на моё первоначально предложение. Его опыт и интересы немного отличались от моих, но когда он опубликовал своё собственное предложение, мы быстро поняли, что оба варианта надо объединить. Как раз в это время ЦЕРН передал веб в общественное достояние и был сформирован консорциум W3C. Я занимался созданием филиала W3C в INRIA и сразу же нанял Берта. Большая часть стандарта CSS1 родилась на маркерной доске в технопарке София-Антиполис. До сих пор, сражаясь с очередной сложной технической проблемой, я мечтаю о том, чтобы Берт и эта доска были рядом.


Перечисляя людей, благодаря которым CSS стали реальностью, я должен упомянуть еще и Томаса Риардона и Криса Уилсона из Microsoft. Томас был руководителем программы Internet Explorer, и он с самого начала загорелся идеей сделать таблицы стилей частью веб. Крис Уилсон — программист, который занимался внедрением CSS в IE3. Реализация CSS в IE3 была довольно далека от стандарта, но нельзя забывать, что этот браузер вышел ещё до того, как была закончена спецификация CSS1. Саймон Дэниэлс (тоже из Microsoft) написал несколько впечатляющих демок для IE3, и в итоге они втроём убедили ведущую софтверную компанию поддержать молодой стандарт.


Были ли альтернативные предложения? Чем ваше было лучше?


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


Конечно, на второй вопрос я не могу ответить непредвзято. Я уверен, что в CSS есть несколько моментов, которые делают язык особенно подходящим для использования в вебе: каскадирование, псевдоклассы и псевдоэлементы, правила парсинга с прямой совместимостью, поддержка разных типов медиа, акцент на использование селекторов и, конечно, единица измерения em.


Какова была ваша (и Берта) самая большая ошибка?


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



Если Netscape 3 игнорировал правила CSS для элемента &ltbody> и добавлял произвольные поля структурным элементам страницы, а IE4, хоть и работал с &ltbody> правильно, но путался с padding, как нужно было писать код CSS? Некоторые разработчики предпочитали его вообще не писать. Другие писали один файл с учётом недостатков IE4, и другой с хаками для Netscape 4.





Конечно, часть вины лежит на Microsoft и Netscape, но и мы — я, Берт, W3C — могли бы избежать многих проблем, если бы с самого начала опубликовали не только спецификацию, но и набор тестов. Первый настоящий тест для CSS появился только в октябре 1998, когда Тодд Фарнер опубликовал Acid test. Тест был необычным и визуальным — разработчики могли сразу понять, проходит ли браузер тест, или нет. В начале ни один браузер его не мог пройти его. Но затем, под сильным давление сообщества CSS, ситуация начала улучшаться. Проект WaSP сыграл ключевую роль в улучшении поддержки стандартов. Свой вклад внёс и браузер Opera, показав, что вполне возможно реализовать CSS корректно. Когда я увидел, насколько хорошо Opera поддерживала CSS (намного лучше, чем Microsoft и Netscape), я присоединился к Opera.

До этого одной из фишек Opera было то, что их браузер помещался на одну дискету (1,44 Мб). В те времена фраза «помещается на дискету» была классным рекламным слоганом. С добавлением CSS одной дискеты стало не хватать. «Почти помещается на дискету» звучало уже совсем не так круто.


Оригинальный тест Acid стал образцом для Acid2 и Acid3, которые следовали тому же рецепту: веб-страница с хитрой вёрсткой, по которой сразу видно, насколько хорошо поддерживаются множество особенностей языка. Толчком к разработке Acid2 стало открытое письмо Билла Гейтса, где он горячо высказался в поддержку совместимости. Сделать IE7 совместимым со стандартами выглядело логичным следующим шагом, и Acid2 стал нашим вызовом Microsoft. Честно говоря, у других браузеров тоже были проблемы, и Acid2 находил ошибки во всех них. Microsoft проигнорировала Acid2 в IE7, но — иногда случаются чудеса — IE8 проходил его безупречно. Так же как и все современные браузеры.




Продолжение следует...


This entry passed through the Full-Text RSS service - if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.


Что почитать на досуге. Дайджест новостей игровой индустрии за сентябрь


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



Создание игр


Тереза Муноз предупреждает: перед употреблением гейм-дизайн необходимо дистиллировать!

«Умение говорить и писать – навык, жизненно необходимый в геймдеве», утверждает Крис ДеЛеон.

Познавательная статья об игровой механике от портала acko.net.

Tanya X. Short (Creative Director в Kitfox Games) рассказала о процедурной генерации.

Владимир Толмачев опубликовал статью о машине состояний.

Креативный директор компании A-Steroids Илья Еремеев поделился с App2Top.ru опытом найма гейм-дизайнеров.

Топ-10 игровых движков. Собери их все!

Создаем игру, используя Blend4Web. Часть 4: Мобильные устройства. Часть 5: Опасный мир.

Математика для разработчиков: математический анализ (видео).

Создаем кроссплатформенную 3D-игру с открытым кодом, используя C++, OpenGL и GLSL.

Менеджер ресурсов игровых ассетов.

Как создать крутые световые 2D-эффекты в Unity: C# и JavaScript.

Как быстро сделать небольшую игру, используя MightyEditor.


Инструменты


Релиз конструктора игр Ren'Py 6.18.

INSTEAD 2.1.1.

Blend4Web 14.09.

Blend4Web SDK v14.08.


Мобильное направление


Вольфганг Грэбнер рассказал об уловках, которые используются в мобильных free-to-play играх.

Почему вашу игру могут отклонить в App Store?

Swrve: за 60 % выручки с мобильных игр отвечают 0,13 % игроков.

10 советов мобильному разработчику от Кэпа.

Маркетинговая компания Medialets подготовила масштабный обзор рынка мобильной рекламы.

Список лучших игр августа по версии Apple.

Эрик Сёферт (Eric Benjamin Seufert), ведущий маркетолог Wooga, поделился своими мыслями о том, почему растут цены на мобильный маркетинг.

Если вы планируете выпустить игру на японском рынке, делайте ее мобильной. В Японии мобильный рынок – доминирующий.


Графика


Симуляция одежды в реальном времени с использованием b-сплайновых поверхностей.


Нарративный дизайн


«Эмоциональный выбор и последствия в видеоиграх» – не очень информативная, но интересная статья на русском.

«Ты будешь вести себя хорошо» – более информативная статья о том, как игроки взаимодействуют с системой морального выбора.

Ветвление системы диалогов и работа сценариста. Часть первая: Введение.

Как придумать название для инди-игры? На эту тему размышлял Элиот Грант в статье на портале gamedev.net.

Интересная статья на electricphantasms.com: «Самосознание, интерактивность и три стены в Metal Gear».


Маркетинг


На gamedev.net можно прочесть небольшую заметку «Краудтфаундинг как маркетинг». Более подробно эту тему раскрыли Ice-Pick Lodge в статье «Свой проект на Кикстартере: практическое руководство».

«Комьюнити-менеджмент – это новый маркетинг», считает Дэвид Реид. А на портале gamedevelopment.tutsplus.com уже появилась статья «Как создать комьюнити для разработчика игр?».

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

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

На примере проекта Lapsum можно посмотреть, что происходит с кампаниями на Kickstarter без продуманного маркетинга.


Новости


Windows 10 будет выпущена в 2015 году.

Rovio ввели женского персонажа в Angry Birds и планируют в дальнейшем уравновесить гендерный баланс.

Warner Bros. разрабатывает свой собственный сервис цифрового распространения.

Первые три успешные краудфандинг-кампании на сайте Crowdfunder получат дополнительно £5,000. Условие участия: во главе проекта должна стоять женщина.

Компания Zappos решила first world problem: они выпустят штаны с карманами под размер iPhone 6 и других крупногабаритных смартфонов.

Square Enix заявила о создании «облачной» игровой компании. Проект называется Shinra Technologies.

Разработчики, имеющие дело с PlayStation, получат бесплатный доступ к Unity Pro.

Square Enix создала сервис для стриминга игрового процесса со смартфонов.

На Kickstarter обновили Terms of Use для успешно завершившихся, но нереализованных кампаний.

Конференция GaymerX собрала нужную сумму на Kickstarter и пройдет в следующем году под лозунгом «Игры для всех».

Будете проездом в Техасе – загляните в новый музей видеоигр.

Короткий отчет с конференции GameStop, прошедшей в Калифорнии.

В Steam представили новый сервис персонализации. Теперь саундтреки из игр можно покупать и прослушивать прямо в музыкальном плеере Steam. А еще можно рекомендовать интересующимся свои любимые игры.

В США открылась eSports-арена – MLG.tv Arena.

Blizzard отменила крупный проект Titan. Это стоило им 50 миллионов долларов или даже больше – аналитики так не определились.

Четырем хакерам предъявлено обвинение во взломе серверов Valve и Microsoft.

Сентябрь выдался богатым на конференции. Основные игровые новости и видеоролики с выставки Tokyo Game Show – на портале alistdaily.com.


Персоналии и компании


Сооснователь и СЕО PopCap Джон Вечи (John Vechey) покидает свой пост после 15 лет работы.

Штат Rovio будет сокращен на 16 %.

Компании Nintendo исполнилось 125 лет.

Разработчик онлайн-игр gamigo AG сообщил о покупке издателя казуальных игр Intenium.

Немецкий разработчик Wooga представил своего нового финансового директора.

Ubisoft объявила об открытии офиса в Москве.

Теперь Mail.ru – полноценный владелец «ВКонтакте».

Microsoft все-таки купила Mojang за 2,5 миллиарда долларов.

Марк Герхард покидает компанию Jagex по не совсем понятным причинам.

Сценарист Saints Row ушел в Valve.


Из Твиттера











Презентация Apple


Что может подсказать нам #AppleLive о новой социальной стратегии Apple?

Несколько забавных пародий на новости об iPhone 6. И еще немного стёба над гнущимся телефоном.

Короткие данные о новых продуктах Apple. Для тех, кто всё пропустил.

iPhone 6 поставил разработчикам новые, но уже очень знакомые задачи.


Новости консолей


14 октября будет запущена система PlayStation TV.

Microsoft в последний момент перенесла старт продаж Xbox One в Китае.

Стартовали продажи Xbox One в России. Портал ru.ign.com собрал всю информацию, которая может стать полезной перед покупкой этой консоли.

PlayStation Home – самая успешная ошибка Sony.

Управляющий директор Wedbush Securities Майкл Пачтер считает, что пришел конец эры консолей.


Новости VR


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

Джесси Шелл 20 лет работал с VR, и ему есть что сказать по этому поводу.

Morpheus от Sony может изменить направление развития VR. Кстати, Йошида утверждает, что Morpheus готов на 85 %.

На конференции Oculus Connect был представлен виртуальный магазин Oculus Platform Store для игр и приложений на Oculus Rift.


Новости игр


Ugly Americans стал интерактивным сериалом для мобильных платформ.

На разработку и маркетинг Destiny ушло около 500 миллионов долларов. Что из этого вышло – в этой статье.

Несколько неплохих видео: реклама Disney Infinity 2.0: Marvel Super Heroes, эпичная реклама Чемпионата мира по LoL от Riot Games.

8 крутых трейлеров с Tokyo Game Show.

Riot Games создала промо-сайт для презентации нового персонажа League of Legends.

По игре «Тетрис» снимут фильм. Вам не почудилось. Не о самой игре, а именно по ее мотивам.

F.E.A.R. Online появится в Steam 17 октября.

В NBA 2K15 для Xbox One и PlayStation 4 включена система сканирования лиц. Которая уже сейчас работает отвратительно.

Вышла игра Sherlock Holmes: Crimes and Punishments. Можно почитать рецензии англоязычных и русскоязычных СМИ.

Рецензия на The Vanishing of Ethan Carter. От портала eurogamer.net и портала ru.ign.com.

Рецензия на Wasteland 2.

Рецензия на Alen: Isolation. А здесь – на русском. Еще можно посмотреть видео, повествующее об истории всех игр по «Чужому».

Обзор Middle-earth: Shadow of Mordor. На русском языке об игре написал портал ru.ign.com.


Это интересно


Состоялся релиз The Angry Video Game Nerd Movie на Vimeo.

Уильям Адерсон в блоге на Gamasutra размышляет о том, что делать, когда разработка игр перестает быть веселым делом.

Дневники SCUMM: история одного из лучших игровых движков.

На портале Gamasutra разобрали по кусочкам игровой тизер Silent Hills – P.T.

На портале hobbygamedev.com попытались ответить на вопрос «Когда наступает время завершить проект и перейти к следующему?».

6 игр, которые стали успешными потому, что интересные, а не потому, что веселые.

Минутка полезных советов: как записать видео в высоком качестве на очень медленном компьютере.

«Хорошие игры, в которые стоит играть» – статья от бывшего сотрудника Nintendo Дэна Эдлмана.

«Всё обесценивается» – интересная статья о том, насколько важен для разработчиков порог вхождения в игровую индустрию.

Интервью с инди-разработчиками: «Что такое инди?».

Интервью с главой разработки Advanced Warfare Майклом Кондри.

Занимательная статья от журнала «Хакер» о 8 самых интересных глюках в играх.

Обзор документального фильма Pixel Poetry от eurogamer.net.

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

Интервью с СЕО EA Эндрю Уилсоном и СЕО Nexon Оуэном Махони на The GamesBeat.


Подкасты


Giant Bombcast: Выпуск от 2.09, Выпуск от 16.09, Выпуск от 23.09.

В блоге отвратительных мужиков можно послушать сразу несколько подкастов: а) Техника и артистизм – Выпуск 4, Выпуск 5, Выпуск 6, Выпуск 7, б) Отвратительные мужики – пилотный, Выпуск 1.

Сергей Галенкин и Михаил Кузьмин в свежем подкасте обсуждают iPhone 6, Xbox One, приобретение Microsoft Minecraft и другое. В сентябре они также говорили о локализации игр, QA в разработке игр, UGS и внутриигровой экономике.


Kickstarter


Vrvana собирает деньги на шлем виртуальной реальности Totem.

Охоться на монстров и вари из них еду в игре Battle Chef Brigade. Или просто стань бэйкером.

Также можно дать немного денег на очередную документалку об инди-разработчиках.

Почти собрала необходимую сумму игра Fortune's Tavern – пиксельный симулятор таверны в фэнтезийном сеттинге.


События


This entry passed through the Full-Text RSS service - if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.