Как стать автором
Обновить
21
0
Виктор Брыксин @bobermaniac

Руководитель разработки Яндекс Телемоста

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

Полезные штуки для iOS-разработчика #1

Время на прочтение4 мин
Количество просмотров83K
На Хабре в свое время было несколько статей «Очень много полезных штук для AS3». Автор попытался собрать ссылки на самые полезные и интересные библиотеки. И т.к. в последнее время я разрабатываю под iOS, решил последовать его примеру и сделать то же самое, но для своей платформы. Описания почти прикладывать не буду, все есть на страничках проектов.
Читать дальше →
Всего голосов 114: ↑109 и ↓5+104
Комментарии80

Как правильно сортировать контент на основе оценок пользователей

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


В оригинале название звучит как «How Not To Sort By Average Rating». Я подумал, что дословный перевод «Как не сортировать по усреднённому рейтингу» будет малопонятен и хуже отражает содержание статьи.

Постановка проблемы


Вы занимаетесь веб программированием. У вас есть пользователи, которые оценивают контент на вашем сайте. Вы хотите разместить высоко оцененный контент наверху, а низко оцененный — внизу. Для этого на основе пользовательских оценок вам нужно вычислить некий «рейтинг».

Неправильное решение №1

Рейтинг= (Число положительных оценок) - (Число отрицательных оценок)

Читать дальше →
Всего голосов 458: ↑423 и ↓35+388
Комментарии134

Давайте сделаем паузу. Способ улучшения синхронизации потоков

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

Пауза — временное молчание, перерыв в звучании музыкального произведения в целом или какой-либо его части или отдельного голоса.
[Википедия]

Удивительно, но иногда так бывает, чтобы что-то сделать в целом быстрее, надо это делать медленнее или вообще с паузами. Например, при имплементации активного ожидания spin-wait в многопотоковом коде рекомендуется использовать инструкцию pause, которая, как утверждает Intel Instruction Set Reference, делает это ожидание наиболее эффективным. «Какая чушь!» — скажете вы. Как может быть ожидание эффективным? Разработчики микропроцессоров утверждают, что при активном ожидании с инструкцией pause чип потребляет намного меньше энегии еще со времен Pentium 4. В чем еще может быть эффективность ожидания? Поговорим об этом ниже.
Читать дальше →
Всего голосов 53: ↑51 и ↓2+49
Комментарии5

Реализация exceptions на plain C

Время на прочтение4 мин
Количество просмотров6.9K
Продолжение вот этой статьи habrahabr.ru/post/131212, где я собирался показать, как «и ошибки удобно обрабатывать и exceptions при этом не использовать», да всё руки не доходили.

Итак, будем считать, что у нас ситуация, что «настоящие C++ exceptions» использовать нельзя — например, языком разработки является C или компилятор С++ для нашей платформы не поддерживает exceptions (или формально поддерживает, а реально этим пользоваться нельзя). Это, конечно, нетипично для desktop приложений, но вполне обычно для embedded разработки.
Читать дальше →
Всего голосов 47: ↑39 и ↓8+31
Комментарии50

Пользовательские литералы в C++11

Время на прочтение5 мин
Количество просмотров40K
Более полугода прошло с момента принятия стандарта C++11. В сети можно найти много материалов посвященных новому стандарту, однако большинство из них касаются самых простых возможностей, самых сладких. Я говорю о лямбда-функциях, системе автоматического выведения типов, новых спецификаторах, умных указателях и т.д. Да, это действительно интересные вещи и, можно смело сказать, они одни из самых полезных и часто используемых. Но на них свет клином не сошелся, и новенький C++11 предлагает нам не только их.

Ниже я хочу рассказать о пользовательских литералах — весьма полезном средстве, хоть и не в повседневных целях.
Читать дальше →
Всего голосов 96: ↑94 и ↓2+92
Комментарии18

Разработка русскоговорящего «аналога» Siri за 7 дней

Время на прочтение6 мин
Количество просмотров18K
После выхода iPhone 4S с Siri «на борту», владельцы остальных гаджетов Apple, чувствовали себя немного обделенными. Даже в свой новый iPad Apple не включила Siri. Разработчиками по всему миру были предприняты попытки портировать Siri на другие устройства или написать похожие аналоги. И только русскоязычный App Store хранил молчание. Наверно все разработчики очень заняты, подумал я, и решил исправить это досадное недоразумение…
Читать дальше →
Всего голосов 152: ↑125 и ↓27+98
Комментарии67

Маленькие чудеса C#/.NET – структура DateTimeOffset

Время на прочтение4 мин
Количество просмотров40K
Рассмотрим некоторые части .Net Framework'a, выглядящие тривиальными, но вполне способными сделать ваш код более простым как в написании, так и в сопровождении.


Пишущие на .NET (а если вы этого не делаете, то зря читаете этот пост) наверняка время от времени используют для своих нужд структуру DateTime. Эта структура удобна для хранения дат, времени или даты/времени, относящихся к локальной временной зоне (или же к UTC).


Однако, бывают случаи, когда вам необходимо сохранить время в виде смещения, а не конвертировать его в локальное время. И вот здесь вам на помощь придёт структура, впервые появившаяся в .NET 3.5 — DateTimeOffset.
Читать дальше →
Всего голосов 65: ↑58 и ↓7+51
Комментарии7

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

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

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

Как формат PDF перестал ассоциироваться с бревном

Время на прочтение3 мин
Количество просмотров2.4K
Пролог

На работу привезли в рамках акции новые программы для документооборота — корпоративные профессиональные версии. Они нам программы — мы им свое частное и публичное мнение. Ставить их, к слову, вместо не совсем лицензионных версий этих же программ от Adobe. Соответственно, задачи, которые возлагаются на программы — работать с PDF (конвертировать их по-всякому, и т.п.), сканировать документы и распознавать символы. Меня посадили с этим ПО разбираться — вдруг там все на китайском, и вообще.

Действие первое, второе и третье

Привык к тому, что PDF — это как область с наименьшей энтропией, только для документов. С ним самим кроме конвертации ничего особенно сделать нельзя, и это, например, позволяет передавать в PDF любую информацию, в неизменности которой можно быть более-менее уверенным. Так вот, в пух и прах мои представления.
Итак, сделал для себя ряд интересных выводов:
Читать дальше →
Всего голосов 63: ↑26 и ↓37-11
Комментарии22

Строим гусеничного Bluetooth-робота с камерой. Часть 3

Время на прочтение11 мин
Количество просмотров46K
В предыдущих сериях:
Часть 1
Часть 2
Ну что, все уже заказали запчасти и собрали роботов? Пора робота оживить.
Сегодня мы разберем программную начинку.
Вариант, который я предлагаю максимально прост. Не стоит ждать от него уникальных способностей. Его задача — просто ехать работать. Отказоустойчивость, плавность управления и дополнительные функции — это простор для творчества, который я оставляю каждому, чтобы не лишать этого удовольствия. Код весьма простой и оттого далеко не оптимальный и не защищенный и вообще не красивый. Если есть предложения по его улучшению — предлагайте свои варианты, прямо куски кода с пояснением зачем и почему так будет лучше.
Неконструктивная критика того, что сделано плохо — не особо нужна :) Я и так знаю про недостатки. А вот если что-то непонятно- спрашивайте, поясню.
Итак, поехали!

Наша задача - добиться аналогичного результата
Всего голосов 71: ↑71 и ↓0+71
Комментарии42

Делаем робота ВаллИ

Время на прочтение5 мин
Количество просмотров48K
image

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

Первое небольшое введение смотрите тут — http://www.youtube.com/watch?v=OJiMUzJHYFk

Я начал с игрушки «Интерактивный ВаллИ». Текущая цена на toys'r'us составляет $34.99.

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

В магазинах есть много доступных запчастей. Моя мастерская не представляет из себя ничего особенного. Я стараюсь закупать те детали, которые подешевле. Иногда я разбираю другие игрушки, потому что сервоприводы, к сожалению, самые дорогие из всех запчастей :)

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

Чтобы изменять корпуса, я использую инструменты Dremel, а иногда и свой паяльник, чтобы расплавить пластмассу. При шлифовке, пожалуйста, имейте пылесос поблизости. Внимание: При плавке, держите открытым окно с вентилятором!
Читать дальше →
Всего голосов 131: ↑110 и ↓21+89
Комментарии49

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

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

Читать дальше →
Всего голосов 24: ↑17 и ↓7+10
Комментарии22

Строим гусеничного Bluetooth-робота с камерой. Часть 2

Время на прочтение4 мин
Количество просмотров35K
Часть 1
Часть 3
Продолжаем строить гусеничного робота.
В первой части мы с вами подобрали и, надеюсь, заказали все необходимые детали. Кстати, недавно проверял, все детали Tamiya (гусеницы, площадки, мотор-редукторная коробка) были в наличии в Terraelectronica. Подороже, конечно, чем из Китая, но зато рядом.
Те, кто уже получил детали, наверняка уже собрали шасси.
Теперь займемся бортовой электроникой, видеоподсистемой и питанием.
Читать дальше →
Всего голосов 37: ↑35 и ↓2+33
Комментарии75

Javascript в PDF

Время на прочтение6 мин
Количество просмотров60K
Недалек тот час, когда PDF документы можно будет полноценно отображать средствами Javascript. При этом обратная возможность, а именно использование Javascript в PDF документах, существует уже очень давно. Об этом и пойдет речь в данной статье.
Читать дальше →
Всего голосов 47: ↑44 и ↓3+41
Комментарии21

OpenGL iBooks-like анимация перелистывания

Время на прочтение6 мин
Количество просмотров9.5K
Помню, когда я в первый раз взял в руки iPad, более всего меня поразило приложение iBooks c его натуралистичным перелистыванием страниц. Все остальные «фишки» как-то не особо впечатляли, но это… это показалось воплощением полной интерактивности. По сравнению с обычными графическими интерфейсами, использующими стандартные элементы GUI, интерфейсы с использованием анимации OpenGL это новый шаг в развитии пользовательских интерфейсов.
Читать дальше →
Всего голосов 47: ↑44 и ↓3+41
Комментарии24

Push уведомления в приложениях для iOS

Время на прочтение3 мин
Количество просмотров13K
Добрый день, Хабражитель.
Все наверное в курсе, что в iOS существует такой полезный сервис как Push уведомления. Я тоже был в курсе, но пока не столкнулся с его реальным использованием, даже не знал, что с ним есть так много нюансов. В этом топике вы узнаете два аспекта об этом сервисе: что нужно делать в xCode, и как отсылать сами пуш сообщения через php сервер.
Под катом описано то, как все это работает.
Читать дальше →
Всего голосов 39: ↑31 и ↓8+23
Комментарии44

Disruptor — новая парадигма многопоточного программирования

Время на прочтение4 мин
Количество просмотров34K
На прошлой неделе компания LMAX, где я работаю, получила приз Java Duke's Choice Award 2011 за фреймворк Disruptor. Ранее об этой технологии писал Martin Fowler, известный многим читателям публикациями об объектном программировании.

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

Читать дальше →
Всего голосов 33: ↑26 и ↓7+19
Комментарии25

Вышла новая версия Apache POI 3.8beta4

Время на прочтение2 мин
Количество просмотров3.3K
В новой версии библиотеки, кроме обычных исправлений ошибок, содержится большое количество изменений, связанных с парсингом и обработкой файлов MS Word.
Читать дальше →
Всего голосов 24: ↑23 и ↓1+22
Комментарии11

Пьеса «Разработка многопользовательской сетевой игры.» Часть 2: Это страшное слово «протокол»

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


Часть 1: Архитектура
Часть 3: Клиент-серверное взаимодействие
Часть 4: Переходим в 3D

Итак, продолжим создание многопользовательской игры.
Сегодня мы рассмотрим создание протокола передачи данных.
А также создадим заготовки TCP сервера и соответственно клиента.

Добро пожаловать в зрительный зал.
Всего голосов 88: ↑77 и ↓11+66
Комментарии69

Демонстрация Debugger Canvas — нового подхода к отладке от Microsoft Research и Brown University

Время на прочтение1 мин
Количество просмотров1.6K
Kael Rowan (из Microsoft Research) и Andrew Bragdon (Brown University) разработали новый инструмент отладки приложений на базе Visual Studio и отладчика IntelliTrace. Этот инструмент получил название Debugger Canvas. Он предлагает располагать на большом полотне всю историю прохождения отладчика для визуального представления, плюс предлагает многочисленные дополнительные функции работы с кодом, в том числе с историей IntelliTrace.

Видео ниже отлично демонстрирует предложенный исследователями подход:



Страница проекта Debugger Canvas доступна на сайте Microsoft Research по этому адресу. Там можно найти дополнительную информацию о проекте. Анонс проекта был сделан в этом блоге.

Авторы сообщают о том, что Debugger Canvas будет доступен широкой публике уже в течении июня 2011 года на сайте Microsoft DevLabs. Оценить его работу смогут только обладатели Visual Studio 2010 Ultimate, так как только эта редакция содержит необходимый для работы Debugger Canvas функционал.
Всего голосов 17: ↑11 и ↓6+5
Комментарии6

Информация

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