Как стать автором
Обновить
8
0

Пользователь

Отправить сообщение

3D-принтеры: еще бюджетнее, еще оригинальнее

Время на прочтение2 мин
Количество просмотров102K


3D-принтеров печатающих пластиком ABS и/или PLA все больше и больше. Хотя основных конструкций, по большому счету, всего 2-3. Поэтому создатели новых принтеров стараются реализовать в конструкции некоторую изюминку или просто сделать еще дешевле.
Читать дальше →
Всего голосов 73: ↑73 и ↓0+73
Комментарии78

Ближайшее будущее аккумуляторных батарей

Время на прочтение33 мин
Количество просмотров107K
В последние годы все острее встает вопрос усовершенствования мобильных источников энергии — вопрос как глобальный, так и повседневный. Глобальная сторона заключается в том, что человечество, остро нуждаясь в энергии в любой её форме, выбрало в качестве свободноконвертируемой электрическую. Причина – относительно низкие потери при обратном переводе из электрической в любую другую, а так же низкие потери при передаче от точки выработки (электростанция) до стационарной точки потребления (э/розетка). Основным источником электроэнергии на сегодняшний день является сжигание на ТЭС невозобновляемого углеводородного топлива, которого с каждым годом все меньше, а цена всё выше. Основной вред окружающей среде наносят тем не менее не ТЭС, а двигатели внутреннего сгорания автомобилей, в виду компактности не столь эффективные и оснащенные не столь же хорошими системами очистки.
Все говорит, что работай автомобили на электротяге, наш мир стал бы намного чище, а жизнь со временем даже дешевле

Но вряд ли многие из нас, не считая борцов за зеленый мир, и даже считая оных, думают об этом каждый день. Гораздо чаще мы вспоминаем недобрым словом какой-нибудь значок на дисплее нашего ноутбука или телефона, увидев что пользоваться им осталось минут 20. И вопрошаем:”Ну когда же они сделают нормальную батарейку, а?”.
Читать дальше →
Всего голосов 269: ↑249 и ↓20+229
Комментарии141

Расписание выхода статей на Хабре (на любую неделю)

Время на прочтение2 мин
Количество просмотров22K
Понедельник
  • Новости: ученые изобрели машину времени, вышел новый ноутбук толщиной 80 нанометров, Google покупает Microsoft, Facebook увольняет 1000 программистов.
  • Вылез стартап. Попиарился, лёг под хабраэффектом, встал, собрал замечания, поблагодарил, пропал навсегда.
  • Вышла новая версия третьего слева линукса. Качать срочно.
  • Я негодую — счет за телефон оператор округлил до кратности числу Пи.

Вторник
  • Опровержение новостей: ученые изобрели всего-лишь более точные часы, 80 нанометров — это техпроцесс, а не толщина ноутбука, Google покупает какой-то стартап, который отказался купить Microsoft, Facebook набирает 5000 программистов.
  • Начало холивара, модного на этой неделе (чай vs кофе, бинокль vs подзорная труба, черное vs белое)
  • Очень важный технический ресурс (ЖЖ, порнолаб, Sony Network) взломан (заДДОСен, конфискован УБОПом). Паника и отчаяние.

Читать дальше →
Всего голосов 432: ↑418 и ↓14+404
Комментарии57

Управление транспортным средством с помощью нейронной сети

Время на прочтение11 мин
Количество просмотров17K

Аннотация


Используя нейронную сеть, мы хотим, чтобы транспортное средство управляло собой само, избегая препятствий. Мы добиваемся этого путем выбора соответствующих входов/выходов и тщательного обучения нейронной сети. Мы скармливаем сети расстояния до ближайших препятствий вокруг автомобиля, имитируя зрение водителя-человека. На выходе получаем ускорение и поворот руля транспортного средства. Нам также необходимо обучить сеть на множестве стратегий ввода-вывода. Результат впечатляющий даже с использованием всего лишь нескольких нейронов! Автомобиль ездит, обходя препятствия, но возможно сделать некоторые модификации, чтобы это программное средство справлялось с более специфическими задачами.

Введение


Идея в том, чтобы иметь транспортное средство, которое управляет собой само и избегает препятствий в виртуальном мире. Каждое мгновение оно само решает, как изменить свою скорость и направление в зависимости от окружающей среды. Для того чтобы сделать это более реальным, ИИ должен видеть только то, что видел бы человек, если бы находился за рулем, так что ИИ будет принимать решения только на основе препятствий, которые находятся спереди транспортного средства. Имея реалистичный ввод, ИИ мог бы быть использован в реальном автомобиле и работать так же хорошо.
Когда я слышу фразу: "Управление транспортным средством с помощью ИИ", я сразу же задумываюсь о компьютерных играх. Многие из гоночных игр могут использовать эту технику для контроля транспортных средств, но есть целый ряд других приложений, которые ищут средство управления транспортом в виртуальном или же реальном мире.
Так как же мы это будем делать? Существует множество способов реализации ИИ, но ведь если нам нужен "мозг" для управления транспортным средством, то нейронные сети подойдут как нельзя лучше. Нейронные сети работают так же, как и наш мозг. Они, наверное, и будут правильным выбором. Мы должны определить, что будет входом, а что выходом нашей нейронной сети.
Читать дальше →
Всего голосов 66: ↑61 и ↓5+56
Комментарии23

Реклама Почты России

Время на прочтение1 мин
Количество просмотров3.1K
Я нарисовал «рекламу» для Почты России — в связи с событиями последних месяцев. Думаю, вам будет интересно заценить.

russian post

Под катом еще 6 штук.

UPD. По мотивам комментариев сделал еще 4 постера.

UPD2. Ещё 2.

UPD3. Добавил шаблоны.

Обращаю ваше внимание: кликнув на картинку, вы перейдете на Flickr, где сможете получить hi-res версию постера — для вашего личного блога, к примеру. Или чтобы распечатать и на стенку повесить. Если вдруг кому понадобиться, могу pdf прислать, обращайтесь в личку.

Читать дальше →
Всего голосов 265: ↑239 и ↓26+213
Комментарии89

Реализация механизма исключений средствами языка C

Время на прочтение1 мин
Количество просмотров1.4K
Программисты C++, Java, C#… при написании кода на «чистом» C часто сталкиваются с проблемой отсутствия механизма исключений. Классический способ обработки ошибок в C — проверка кодов возврата. В сложных алгоритмах при глубокой вложенности это весьма неудобно. Приведенный ниже способ не нов, но, к сожалению, многие с ним не знакомы.

Итак, в POSIX есть пара полезных функций: setjmp и longjmp

#include <setjmp.h>

int setjmp(jmp_buf env);
void longjmp(jmp_buf evn, int val);


Рассмотрим пример:


#include <setjmp.h>
jmp_buf jbuf;

/* ...... */

/* Ставим обработчик */
int result = setjmp(jbuf);
switch(result) {
   case 0: /* это блок try */
   case 1: /* Один из блоков catch */
   case 2: /* Еще один catch */
};

/* .... */

/* Здесь мы хотим кинуть исключение */
longjmp(jbuf, КОД_ИСКЛЮЧЕНИЯ);


Вызов setjmp сохраняет состояние стека в переменную. При сохранении setjmp возвращает 0. Эту переменную необходимо сделать доступной для кода, который будет инициировать переход. После вывода longjmp всё будет выглядеть так, как будто setjmp вернул отличное от 0 значение.

Что стоит отметить:
1) longjmp никогда не возвращает управление. Либо будет откат к setjmp, либо, если jmp_buf битый — segmentation fault.
2) Второй параметр longjmp — то значение, которое вернет setjmp по восстановлении стека. 0 передать не получится (в этом случае вернется 1).
3) Описанный выше механизм ломает «нормальную логику» работы программы на C. При этом в некоторых случая может сделать программу более читаемой. К этому стоит относиться как к goto.

UPDATE-замечание от mraleph:
Строго говоря setjmp не сохраняет «состояние стека». Он сохраняет лишь значения регистров, поэтому в частности jmp_buf'ом нельзя пользоваться, если функция, в которой он был создан завершилась…
Всего голосов 12: ↑7 и ↓5+2
Комментарии8

Профессиональная эмиграция — Часть 1 — Проблема курицы и яйца и как с ней бороться, а также развенчание мифов

Время на прочтение4 мин
Количество просмотров59K
Здравствуйте, Хабраюзеры.

Этим постом я хотел бы начать цикл (если позволит время и будет интересно аудитории) про профессиональную эмиграцию, особенно без привязки к работодателю.
Читать дальше →
Всего голосов 228: ↑208 и ↓20+188
Комментарии337

Я делаю свой квадрокоптер. Часть 1. Уравнения динамики

Время на прочтение2 мин
Количество просмотров178K

Оглавление


1. Уравнения динамики

Введение




Давным-давно я написал следующий комментарий: Всё.
После такой новости сажусь делать свой квадрокоптер. А то вон все делают, а я нет.
Не, ну а что.
Всегда хотел, чтобы у меня была какая-нибудь летающая штука. Были 2 вертолета радиоуправляемых. Но кончилось это плохо.
Я решил делать свой квадрокоптер. Как это кончится — посмотрим. Я не буду использовать какие-либо готовые полетные контроллеры, все запрограммирую самостоятельно. И постараюсь этот процесс описать в цикле статей. Сейчас представляю вашему вниманию первую часть. В ней будет бегло показано то, какие уравнения динамики скрываются внутри квадрокоптера.
Итак, поехали.

Немного уравнений и еще меньше текста
Всего голосов 121: ↑110 и ↓11+99
Комментарии133

Алгоритм сортировки Timsort

Время на прочтение6 мин
Количество просмотров150K
Timsort, в отличии от всяких там «пузырьков» и «вставок», штука относительно новая — изобретен был в 2002 году Тимом Петерсом (в честь него и назван). С тех пор он уже стал стандартным алгоритмом сортировки в Python, OpenJDK 7 и Android JDK 1.5. А чтобы понять почему — достаточно взглянуть на вот эту табличку из Википедии.



Среди, на первый взгляд, огромного выбора в таблице есть всего 7 адекватных алгоритмов (со сложностью O(n logn) в среднем и худшем случае), среди которых только 2 могут похвастаться стабильностью и сложностью O(n) в лучшем случае. Один из этих двух — это давно и хорошо всем известная «Сортировка с помощью двоичного дерева». А вот второй как-раз таки Timsort.

Алгоритм построен на той идее, что в реальном мире сортируемый массив данных часто содержат в себе упорядоченные (не важно, по возрастанию или по убыванию) подмассивы. Это и вправду часто так. На таких данных Timsort рвёт в клочья все остальные алгоритмы.
Читать дальше →
Всего голосов 293: ↑286 и ↓7+279
Комментарии63

Portable Components, кроссплатформенная библиотека для C++

Время на прочтение13 мин
Количество просмотров27K
«Система должна быть спроектирована так,
чтобы оставаться как можно проще
после серии внесенных в нее изменений»

Бьярне Строуструп – программист, автор языка C++

Преамбула


В данной статье мне бы хотелось бы рассказать о довольно популярной, но так редко освещаемой на Хабре библиотеке Portable Components (сокр. POCO). Она будет полезна как разработчикам бизнес-логики программного продукта, так и в решении большинства прикладных задач. При всем изобилии кроссплатформенных библиотек для C++ всё больше людей сталкиваются с POCO лицом к лицу и не знают с чего начать. В данной статье я постараюсь описать технологии, заложенные в библиотеке и дать простейшие примеры решения некоторых задач. Также хотелось бы отметить, что за плечами библиотеки множество успешных как Open Source, так и коммерческих проектов.
Читать дальше →
Всего голосов 80: ↑80 и ↓0+80
Комментарии40

Трикоптер на Crius MultiWii контроллере

Время на прочтение5 мин
Количество просмотров29K
ВНИМАНИЕ, статья устарела, но её всё еще можно использовать в ознакомительных целях

Вдохновившись статьей с rcexplorer о простой постройке коптера (вот тут мой перевод), сделал и себе небольшой летающий агрегат с 3мя моторами, но с другими мозгами и алюминиевой основой лучей вместо дерева.
Читать дальше →
Всего голосов 44: ↑42 и ↓2+40
Комментарии35

Пишем драйвер для самодельного USB устройства

Время на прочтение13 мин
Количество просмотров175K
Целью этой статьи является пошаговая демонстрация процесса разработки всего набора программного обеспечения необходимого для организации связи самодельного устройства с компьютером посредством USB.

На данный момент, большинство радиолюбителей реализуют такой тип подключения используя чипы переходники USB в RS232 таким образом организуя связь со своим устройством посредством драйвера виртуального COM порта поставляемого с чипом переходником. Минусы такого подхода думаю понятны. Это как минимум лишний чип на плате и ограничения накладываемые этим чипом и его драйвером.
Мне же хочется осветить весь процесс организации такого взаимодействия так как оно и должно быть сделано, и как делается во всех серьезных устройствах.
В конце концов, сейчас 21-й век, модуль USB есть почти во всех микроконтроллерах. Именно о том, как наиболее быстро воспользоваться этим модулем и будет эта статья.
Читать дальше →
Всего голосов 152: ↑149 и ↓3+146
Комментарии29

Еще один коптер: часть первая, описание и выбор деталей

Время на прочтение5 мин
Количество просмотров47K
Итак, наверное многие из вас хотели бы иметь летающую игрушку на радиоуправлении. Самой простой в управлении (на мой субъективный и неопытный взгляд) является квадракоптер. Кроме того квадракоптер открывает большие возможности для программирования — есть платы управления на основе ардуино, можно подключать датчики (GPS, барометр, сонар, цифровой компас, понятное дело гироскопы).

Множество постов призывает вас сделать это. Я расскажу как я собрал и облетал (буквально вчера) свой первый в жизни квадракоптер. С какими проблемами столкнулся и как их решил. Что важно я хотел бы написать данный рассказ именно с позиции новичка в радиоуправляемой авиации.

Статья является частью цикла:
1. Часть первая, описание и выбор деталей
2. Часть вторая, сбор рамы


коптер на картинке не мой
Читать дальше →
Всего голосов 54: ↑53 и ↓1+52
Комментарии62

Квадрокоптер за 1 день и $120

Время на прочтение8 мин
Количество просмотров350K
Создать квадрокоптер как платформу для летающего робота я планирую уже очень давно. Первые расчеты и заказ деталей я сделал год еще назад. Однако, делать «просто коптер» чтобы полетать, управляя с пультом или даже в FPV режиме конечной задачей не является. Поэтому коптер должен быть максимально гибким и как можно менее дорогим.
По отдельности все детали для коптера есть, но их сопряжение — дело простое только в теории. Нужно быть и программистом и инженером и моделистом — вертолетчиком. Поэтому процесс движется довольно небыстро. А летать хочется :) Ничто так не расхолаживает и не демотивирует как отсутствие видимых результатов, особенно когда прогресс-то вроде есть, но не наглядный. Да и экспериментировать сразу на большом квадракоптере дорого и опасно.
Поэтому я решил собрать для экспериментов миникоптер. Как всегда — задача сделать недорого, просто и гибко.
Мой результат — готовый коптер за 1 день (на сборку и запуск) и $120 (стоимость квадрокоптера включая доставку). А с аппаратурой — $145.
MiniQuadroCopter
«MiniQuadroCopter»
Под катом описание и видео.
Buddy-коды для заказа на HobbyKing
Строим недорогой квадрокоптер
Всего голосов 149: ↑147 и ↓2+145
Комментарии155

Дерево ван Эмде Боаса

Время на прочтение6 мин
Количество просмотров18K
Всем доброго времени суток!

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

Дерево ван Эмде Боаса (van Emde Boas tree) — ассоциативный массив, который позволяет хранить целые числа в диапазоне [0; U), где U = 2k, проще говоря, числа, состоящие не более чем из k бит. Казалось бы, зачем нужно еще какое-то дерево, да еще позволяющее хранить только целые числа, когда существует множество различных сбалансриованных двоичных деревьев поиска, позволяющих выполнять операции вставки, удаления и прочие за O(log n), где n — количество элементов в дереве?

Главная особенность этой структуры — выполнение всех операций за время O(log(log(U))) независимо от количества хранящихся в ней элементов.

Что же там еще есть такого вкусного?
Всего голосов 192: ↑190 и ↓2+188
Комментарии39

Фильтр Калмана — Введение

Время на прочтение5 мин
Количество просмотров259K
Фильтр Калмана — это, наверное, самый популярный алгоритм фильтрации, используемый во многих областях науки и техники. Благодаря своей простоте и эффективности его можно встретить в GPS-приемниках, обработчиках показаний датчиков, при реализации систем управления и т.д.

Про фильтр Калмана в интернете есть очень много статей и книг (в основном на английском), но у этих статей довольно большой порог вхождения, остается много туманных мест, хотя на самом деле это очень ясный и прозрачный алгоритм. Я попробую рассказать о нем простым языком, с постепенным нарастанием сложности.
Читать дальше →
Всего голосов 157: ↑151 и ↓6+145
Комментарии50

Трикоптер (Квадрокоптер своими руками: Часть II.2)

Время на прочтение6 мин
Количество просмотров107K
Я конечно помню что обещал написать третью часть про полеты по GPS и прочие плюшки, но так случилось что всё лето провел с сыном, паяльником и Arduino IDE, а не в поле с коптером, поэтому сейчас мой вольный перевод статьи шведа Девида Виндэстоля (David Windestål, надеюсь правильно написал) о постройке трикоптера — пепелаца с тремя моторами и поворотным механизмом для компенсации вращения и управления поворотом. (большая просьба не ходить без особой надобности на сайт оригинала, так как он и без хабра часто падает, а так же под катом очень много картинок)
Читать дальше →
Всего голосов 133: ↑130 и ↓3+127
Комментарии133

Улучшенный Android NDK (Native Development Kit)

Время на прочтение5 мин
Количество просмотров34K
Долгое время занимаясь разработкой под Android, я постепенно пришел к выводу, что многих вещей мне, как разработчику, сильно не хватает. Тогда, в начале 2010-го, не хватало только C++ exceptions и RTTI. Без них любой нетривиальный C++ код просто не мог быть портирован на Android и требовал практически полного переписывания. Это было очень существенное ограничение, которое никак не давало мне покоя. К счастью, Android — это open source, поэтому, вооружившись максимой «если тебе что-то нужно, сделай это сам», я засел за работу. К моему удивлению, сделать поддержку полноценного C++ с исключениями и RTTI оказалось довольно несложно. Потребовалось всего около недели работы. Далее был сделан сайт, на который и были выложены получившиеся пакеты для Windows, Linux и Mac OS X, а также патч и инструкция по сборке.

Читать дальше →
Всего голосов 182: ↑177 и ↓5+172
Комментарии58

Жаргон программистов

Время на прочтение4 мин
Количество просмотров64K
Наткнулся на Stackoverflow.com на интересный топик с вопросом о новом в программистском жаргоне. Предлагаю здесь подборку наиболее интересных выражений.

Египетские операторные скобки

if (a == b) {<br>  printf("hello");<br>}<br><br>
Читать дальше →
Всего голосов 314: ↑284 и ↓30+254
Комментарии282

Новый программерский жаргон

Время на прочтение7 мин
Количество просмотров50K
Посетителям сайта stackoverflow.com был задан вопрос: «Какие программерские термины вы придумали, так чтобы они стали популярны в ваших кругах (то есть вы слышали, что кто-то их повторяет)?

Ниже — вольный перевод самых популярных ответов.

Читать дальше →
Всего голосов 411: ↑373 и ↓38+335
Комментарии193

Информация

В рейтинге
Не участвует
Откуда
Москва и Московская обл., Украина
Дата рождения
Зарегистрирован
Активность