Архив за 03 мая 2013 - 4

В Гарварде создали миниатюрного робота комара (+видео)

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

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

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

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

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

Формально, циклические ссылки нельзя назвать утечками: сборка мусора рано или поздно уничтожит такие объекты. Беда только в том, что Питон не может сам определить, когда еще рано, а когда уже поздно. В моем случае система просто прибивала процесс с Питоном, если сборка мусора не начиналась вовремя.Читать полностью »

В Принстоне напечатали бионическое ухо, способное «слышать» радиоволны

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

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

Доброго времени суток, уважаемые читатели!

Этим постом я продолжаю серию статей, направленных на борьбу за чистоту и безопасность разрабатываемых многопоточных программ.
Рецепты против взаимных блокировок на сигнальных переменных
Рисунок 1 – Взаимная блокировка 1-го рода с участием сигнальной переменной.

В рамках этого поста мы рассмотрим проблемы, которые возникают при использовании сигнальных переменных, и покажем, как их можно избежать.Читать полностью »

Специалисты Гарвардского университета, не первый год работающие над созданием миниатюрного летающего робота, сообщили об очередном успехе в своей работе. Робот-насекомое совершил первый управляемый полет.

Искусственная «пчела» взлетает вертикально, зависает в одной точке и движется горизонтально

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

Исследователи, работающие в компании IBM, создали мультфильм, манипулируя отдельными атомами. Анимационная лента «Мальчик и его атом» (A Boy and His Atom) занесена в книгу рекордов Гиннесса, как самый маленький мультфильм. Мультфильм дает представление о технических возможностях, которые находятся в распоряжении исследователей, разрабатывающих передовые технологии хранения информации.

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

Valve выпустила Portal под Linux

Культовая игра Portal от компании Valve сегодня выпущена для платформы Steam под Linux.
Читать полностью »

Как вы знаете, смартфон Nexus 4 имеет возможность заряжаться без проводов, подсоединенных к телефону. Причем эта функция работает из коробки: не нужно менять корпус. Но нужна беспроводная зарядка, которая не входит в комплект к девайсу. В одной из моделей беспроводных зарядок, а именно Nexus 4 Wireless Charger используется стандарт Qi — единственный глобально принятый интерфейс беспроводной зарядки устройств, стандарт, разработанный Консорциумом беспроводной электромагнитной энергии (Wireless Power Consortium, WPC).

Беспроводная зарядка WCP 400

Аппаратура Qi включает в себя пластину передатчика и совместимый приёмник в подключаемом устройстве. При использовании подключаемое устройство размещают на пластине передатчика. Зарядка происходит посредством индукционной передачи энергии как, например, в трансформаторах. Кстати, уже в нескольких кафе Москвы в рамках эксперимента появились беспроводные зарядки.

В ассортименте онлайн-магазина Google Play беспроводное зарядное устройство появилось совсем недавно. Да и продается оно только для жителей зарубежных стран. Я заказал себе такой гаджет и хочу поделиться впечатлениями о нём. Читать полностью »

По словам источника, 3D-карта GeForce GTX 780, будет стоить не 500-600 долларов, как предполагалось ранее, а дороже.

Изделие будет позиционироваться как «Nvidia GeForce GTX Titan для масс», так что по цене оно будет существенно дороже модели Nvidia GeForce GTX 680, которую можно купить по цене $460-500.

Назван новый ориентир цены 3D-карты Nvidia GeForce GTX 780

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

Компания Samsung Electronics начала этот месяц с сообщения о выпуске беззеркальной камеры Samsung NX2000, предварительные сведения о которой появились две недели назад.

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


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