Архив за 26 декабря 2013 - 5

Привет!

Настало время подвести итоги двух месяцев напряженной работы конкурса Samsung: «Мессенджер ВКонтакте для Tizen». Жюри оценило все созданные приложения и определило победителей.

Поздравляем победителей конкурса «Мессенджер Вконтакте для Tizen»!
Читать полностью »

Недавно в нашей фирме устроили лекцию «Engineering Practices» и это оказалось введением в TDD.
О нет, только не это! «Иногда они возвращаются» (с) Стивен Кинг
Опыт работы с TDD и размышления о том, как надо тестировать код

На прошлой работе мы потратили 3 года на попытку внедрить эту методику. Это было мучительно. Менеджмент искренне верил в то, что TDD решит проблемы фирмы. Реальность разительно несоответствовала этому. Все это будило затертые воспоминания о Советской эпохе. Вспоминались висящие на стенах плакаты «Вперед к победе коммунизма» и фразы вроде «Учение Маркса всесильно потому, что оно верно».
Опыт работы с TDD и размышления о том, как надо тестировать код

Так что же не так в консерватории c TDD?Читать полностью »

Сравнение производительности языков программирования
Привет тебе, дорогой %UserName%.
Многие из нас задумывались, какой язык более производительный. Услышав очередной разговор о том, что Java медленная, мне стало интересно посмотреть сравнение производительности Java, C++ и С#. Очевидно, что С++ будет самым производительным, но мне интереснее узнать, какова разница в производительности у С# и Java, и сколько они проигрывают С++. Всем, кому интересно прошу под кат.
Читать полностью »

Простой интерпретатор с нуля на Python #2

Содержание

Простой интерпретатор с нуля на Python #1
Простой интерпретатор с нуля на Python #2
Простой интерпретатор с нуля на Python #3
Простой интерпретатор с нуля на Python #4

В предыдущей статье мы рассматривали сам язык IMP и основную структуру интерпретатора. Также, мы тщательно рассмотрели лексер. В этой статье мы будем писать небольшой парсер для нашего языка. Он будет извлекать AST (abstract syntax tree) из списка токенов, сгенерированных лексером. Библиотека комбинатора будет независимая, то есть с помощью нее можно будет написать парсер для любого языка.

Что такое комбинаторы парсеров?

Есть очень много способов написать парсер. Самым простым и быстрым способом сделать это являются комбинаторы.

Вы можете считать парсер функцией, которая принимает поток токенов. Если успешно, то парсер будет «съедать» немного токенов из потока. Функция вернет часть финального AST вместе с остальными токенами. Комбинатор — это функция, которая производит парсер, как его результат, обычно после приема одного или нескольких анализаторов (парсеров) в качестве входных данных, отсюда и название — «комбинатор». Вы можете использовать комбинаторы для создания законченного парсера для языка, как IMP, путем создания множества маленьких парсеров для каждой части языка.
Читать полностью »

image

О переводе

Это перевод 18 главы книги The Passionate Programmer: Creating a Remarkable Career in Software Development. Её автор — Chad Fowler — талантливый Ruby-разработчик, известный докладчик на конференциях, посвящённых Ruby и IT в целом. Бывший саксофонист, а сейчас — CTO 6Wunderkinder.

Краудсорсинговый перевод книги ведётся на github, присоединяйтесь.
Читать полностью »

Преамбула

Памятуя вопросы читательов к одному их предыдущих постов, в двух словах напомню, о чем речь. Мы команда virt2real, технари-энтузиасты, обожающие создавать всякие штуки с удаленным управлением и видеонаблюдением через интернет. Управляемая веб-камера, гонки через интернет, затем разработка собственного микроконтроллера, сбор предзаказов, сбор заказов и выпуск тиража, тачка Бонда.

image

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

Последнее в этом году видео в рамках e-Lectures от ведущего Windows Phone разработчика Тимура garifzyanov Гарифзянова. Тимур расскажет о том, как просто и безболезненно разрабатывать и поддерживать версии для двух платформ WP7 и WP 8, не затрагивая сложных тем, типа Portable Libraries.

В следующем году ждите новых лекций, а мы ждем от вас фидбека и предложений о следующих темах.
Читать полностью »

Компания Asus работает над новым устройством, которое, скорее всего, является гибридным, объединяющим в себе функции планшета и ноутбука.

Гибридное устройство Asus TD300LA получит четырёхпоточный процессор Intel Core i3-4020Y или Intel Core i7-4610Y (Haswell)

Устройство под названием Asus TD300LA получит две модификации, с четырёхпоточным процессором Intel Core i3-4020Y или Intel Core i7-4610Y (Haswell).

Другими словами, гибридное устройство Asus TD300LA будет производительнее и дороже представленного ранее Читать полностью »

В области разработки различных платежных шлюзов и при решении других интеграционных задач (не думаю, что этим ограничивается область применения данной технологии, но я столкнулся именно в этой области) может встретиться аутентификация в системе согласно спецификации Ws-security (подробное описание в docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0.pdf). В этой статье будет рассмотрен случай доступа к веб-сервисам, аутентификация клиента в которых производится по данной спецификации.
Читать полностью »

Бенчмарк HTTP серверов (С/C++) в FreeBSD

Проведено сравнение производительности ядер HTTP-серверов, построенных с использованием семи C/C++ библиотек, а также (в познавательных целях) — других готовых решений в этой области (nginx и node.js).

HTTP-сервер — это сложный и интересный механизм. Есть мнение, что плох программист, не написавший свой компилятор, я бы заменил «компилятор» на «HTTP-сервер»: это и парсер, и работа с сетью, и асинхронность с многопоточностью и много чего еще....

Тесты по всем возможным параметрам (отдача статики, динамики, всевозможные модули шифрования, прокси и т.п.) — задача не одного месяца кропотливой работы, поэтому задача упрощена: будем сравнивать производительность ядер. Ядро HTTP-сервера (как и любого сетевого приложения) — это диспетчер событий сокетов и некий первичный механизм их обработки (реализованный в виде пула потоков, процессов и т.п.). Сюда же можно отнести парсер HTTP-пакетов и генератор ответов. На первый взгляд, все должно свестись к тестированию возможностей того или иного системного механизма обработки асинхронных событий (select, epoll и т.п.), их мета-обёрток (libev, boost.asio и др.) и ядра ОС, однако конкретная реализация в виде готового решения дает существенную разницу в производительности.

Был реализован свой вариант HTTP-сервера на libev. Конечно, реализована поддержка небольшого подмножества требований пресловутого rfc2616 (вряд ли ее полностью реализует хоть один HTTP-сервер), лишь необходимый минимум для соответствия требованиям, предъявляемым к участникам данного тестирования,
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js