Архив за 28 октября 2014 - 5

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

Лично я стал почти его фанатом ещё студентом, когда в начале 2000-х читал статьи Скотта, лежащие в основе его книг (сами книги на тот момент в России ещё не были переведены, а на английские с Амазона у меня, как бедного студента, денег не было).

Поэтому, когда он некоторое время назад приехал в Яндекс, чтобы провести тренинг для наших разработчиков, я не мог не воспользоваться этим шансом, чтобы поговорить с ним. Разговор получился о том, каким он видит будущее C++ и программирования вообще, как отличаются разработчики в разных странах и в разных индустриях, и о нём самом.

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

Наша электроника: топ 10 разработок компании Promwad
На фото: проекты из портфолио инновационной компании Promwad

Сегодня мы публикуем на Хабре свой 30-й пост про разработку электроники для серийного производства. За полтора года мы написали обо всех этапах проектирования новых устройств: от идеи до послепродажного обслуживания.

Пришло время показать реальные примеры наших собственных разработок, которые мы делаем для клиентов из России, ЕС, США и Канады. Итак, под катом вас ждет обзор 10 прорывных проектов Promwad, одного из крупнейших дизайн-центров в Восточной Европе с полным циклом разработки электроники на заказ. По мнению основателей нашей компании, эти разработки были инновационными для своего времени, как с точки зрения технологий, так и бизнес-решений.
Читать полностью »

Всего за несколько месяцев учёным удалось дважды обновить рекорд скорости передачи данных по одному волокну. В июле в Датском техническом университете смогли передать 43 терабита в секунду, а 26 октября совместная команда Технического университета Эйндховена и Университета центральной Флориды опубликовала статью с описанием эксперимента, в ходе которого скорость удалось довести до 255 терабит/сек. Эта цифра сравнима с пиковым трафиком всего интернета в целом.

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

Новый рекорд скорости передачи данных по одному волокну — 255 терабит в секунду
Многосердцевинное волокно в разрезе
Читать полностью »

Короткометражный фильм «Амбиции»

«Амбиции» — совместная работа студии Platige Image и Европейского Космического Агентства (ESA). Режиссером выступил Томек Багински, роли исполнили Эйдан Гиллен и Эйслинг Франсиози. Фильм был снят в Исландии и показан 24 Октября 2014 в рамках фестиваля «Научная фантастика: Дни изумления и страха» (Sci-Fi: Days of Fear and Wonder), проводимого Британским Институтом Кинематографии, Саут Бэнк, Лондон.

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

Xbox One геймпад для игр на PCМногим любителям компьютерных игр хорошо знаком контролер Xbox 360. Это заслуженный «ветеран», который имеет значительную армию поклонников. Его можно подключить к компьютеру с помощью шнура или беспроводного адаптера, и многие игроки предпочитают играть с помощью него в игры на PC. Обновленная версия для Xbox Оne тоже может быть подключена к PC через микро-USB разъём, а также имеет ряд улучшений, которые придутся по вкусу игрокам. Для этого контроллера уже выпущены драйвера для Windows 8 и Windows 7 и они совместимы с API XInput. Приложения, которые рассчитаны на работу с геймпадами будут сразу способны работать с новым контроллером.
Читать полностью »

var t: [number, string] = [1, "hello"];
t = [];                 // Error
t = [1];                // Error
t = [2, "test"];        // Ok
t = ["test", 2];        // Error
t = [2, "test", true];  // Ok

Когда мы выпустили TypeScript 1.0 ранее в этом году, мы были сфокусированы на том, чтобы создать язык, который поможет разработчикам действительно масштабировать из проекты на JavaScript. Было довольно увлекательно наблюдать, что люди делали с ним, включая 170000 строчек кода в Mozilla Shumway, Walmart stationery и наш богатый опыт с Microsoft Azure, в котором мы перепрыгнули за миллион строчек кода.

Наша цель в работе над TypeScript – продолжать поддерживать проекты подобного размаха и сделать его лучшим языком для масштабирования JavaScript. С версией 1.1 мы выпустили быстрый и легковесный компилятор, способный выдавать результат в четыре раза быстрее, чем предыдущий. Новый компилятор также более гибок в отношении добавления новой функциональности, чем мы непременно воспользуемся, двигаясь к версии 2.0.

Сегодня мы хотим рассказать о наших планах к второй версии. Мы приглашаем вас присоединиться к нашей странице TypeScript на GitHub и помочь нам сделать TypeScript еще лучше.
Читать полностью »

За время работы разработчиком Access набралась куча полезностей, которую считаю своим долгом выложить на Хабр. Многие из этих сниппетов находятся в сети, а некоторые находятся с трудом или безнадежно затеряны.

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

imageПривет!

Мы (ali_aliev и avenat) с удовольствием представляем вашему вниманию перевод интерактивного учебника «Problem Solving with Algorithms and Data Structures» от Брэда Миллера (Brad Miller) и Дэвида Ранума (David Ranum) из Luther College, что в Айове, США.

О чём?

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

Авторы рассказывают о таких структурах данных, как стеки, очереди (в том числе с приоритетом), деки, хэш-таблицы, списки, деревья и графы. Последним двум вообще посвящены весьма не маленькие главы. Изложение не просто описательное: для каждой структуры предлагается вариант (а иногда и не один) её реализации на Python. Упор, естественно, делается на объектно-ориентированное программирование: создаётся класс, к нему пишутся методы, некоторые из которых авторы оставляют читателям для самостоятельной доработки. Затем идут примеры использования рассмотренной структуры и описание алгоритмов с её участием.

Одна из глав учебника посвящена рекурсии, в том числе её графическому представлению (фракталы). Разбирается несколько известных рекурсивных задач, а в конце наглядно демонстрируется, что эта методика, несмотря на её элегантность, отнюдь не «серебряная пуля».

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

Комбинаторные (монадические) парсеры достаточно хорошо известны (wikibooks). Они представляют из себя библиотеку маленьких парсеров, которые распознают простые элементы грамматики, и способы объединять несколько парсеров в один (комбинировать — от сюда и название). Монадические они потому что один из способов комбинирования, порождения парсера остатка текста на основе результата разбора начала, удовлетворяет условиям, накладываемым на математический объект «монада». В языке Haskell это позволяет воспользоваться мощным сервисом, предоставляемым языком и библиотеками. В других языках название «монадические» можно смело игнорировать — это не будет мешать их реализации и использованию, включая упомянутую выше операцию «bind».

Проще всего комбинаторные парсеры реализуются в языках с поддержкой замыканий, но можно воспользоваться и классическим ООП (пример описан Rebecca Parsons в книге Мартина Фаулера «Предметно-ориентированные языки»).
К преимуществам комбинаторных парсеров относится простота использования (запись на языке программирования практически не отличается от обычного описания грамматики), независимость от препроцессора (как yacc/bison, happy или ocamlyacc), возможность реализовать некоторые элементы, плохо укладывающиеся в контекстно-свободную грамматику, прямо на языке программирования общего назначения.

К недостаткам — сложность составления сообщений об ошибке, неспособность работать с леворекурсивной грамматикой (приводит к зацикливанию), а так же то, что очень легко сделать этот парсер не эффективным по быстродействию и памяти. (Одна из причин — компилятор не может произвести оптимизацию в терминах грамматики, так как работает на уровне языка программирования. Но есть и другие тонкости, требующие внимания, если требуется эффективность.)
Как альтернативу можно рассмотреть реализации в виде макросов (например OCaml streams parsers). В Perl6 поддержка грамматик встроена в язык.

Наследование

Персер конкретного языка состоит из множества более специализированных парсеров, ссылающихся друг на друга. В этом отношении парсеры напоминают методы некого объекта. Возникает желание порождать парсеры новых версий языков, подменяя отдельные подпарсеры (как это делается в паттерне проектирования «шаблонный метод» из ООП). Для экспериментов с этим подходом (а так же в порядке изучения очередного языка) я выбрал язык Julia — динамически-типизированном с особым подходом к наследованию (подобному CLOS из Common Lisp и R).
В отличие от обычных комбинаторных парсеров, подход с наследованием является экспериментальным (хотя в некотором виде поддерживается библиотекой макросов OCaml и языком Perl6). Пока он порождает не очень читабельный код. Исходный код доступен на Github.
Читать полностью »

Новые возможности Veeam Backup & Replication 8.0: усовершенствованная репликация
Как можно догадаться из названия продукта, столпами реализуемой в Veeam Backup & Replication стратегии защиты данных являются «2-в-1»: резервное копирование и репликация, реализованные в рамках одного продукта.

Достоинством механизма резервных копий является возможность отката на различные точки восстановления в прошлом, механизм же репликации позволяет получить минимальный показатель времени восстановления системы после сбоя — этим она особенно ценна для современных ЦОД. Сегодня я расскажу о новых возможностях репликации, которые увидят свет с выходом (уже в ноябре!) новой версии Veeam Backup & Replication 8.0.
Читать полностью »


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