На Хабре в свое время было несколько статей «Очень много полезных штук для AS3». Автор попытался собрать ссылки на самые полезные и интересные библиотеки. И т.к. в последнее время я разрабатываю под iOS, решил последовать его примеру и сделать то же самое, но для своей платформы. Описания почти прикладывать не буду, все есть на страничках проектов.
Виктор Брыксин @bobermaniac
Руководитель разработки Яндекс Телемоста
Как правильно сортировать контент на основе оценок пользователей
5 мин
92KПеревод
В оригинале название звучит как «How Not To Sort By Average Rating». Я подумал, что дословный перевод «Как не сортировать по усреднённому рейтингу» будет малопонятен и хуже отражает содержание статьи.
Постановка проблемы
Вы занимаетесь веб программированием. У вас есть пользователи, которые оценивают контент на вашем сайте. Вы хотите разместить высоко оцененный контент наверху, а низко оцененный — внизу. Для этого на основе пользовательских оценок вам нужно вычислить некий «рейтинг».
Неправильное решение №1
Рейтинг= (Число положительных оценок) - (Число отрицательных оценок)
+388
Давайте сделаем паузу. Способ улучшения синхронизации потоков
6 мин
14KПауза — временное молчание, перерыв в звучании музыкального произведения в целом или какой-либо его части или отдельного голоса.
[Википедия]
Удивительно, но иногда так бывает, чтобы что-то сделать в целом быстрее, надо это делать медленнее или вообще с паузами. Например, при имплементации активного ожидания spin-wait в многопотоковом коде рекомендуется использовать инструкцию pause, которая, как утверждает Intel Instruction Set Reference, делает это ожидание наиболее эффективным. «Какая чушь!» — скажете вы. Как может быть ожидание эффективным? Разработчики микропроцессоров утверждают, что при активном ожидании с инструкцией pause чип потребляет намного меньше энегии еще со времен Pentium 4. В чем еще может быть эффективность ожидания? Поговорим об этом ниже.
+49
Реализация exceptions на plain C
4 мин
6.9KПродолжение вот этой статьи habrahabr.ru/post/131212, где я собирался показать, как «и ошибки удобно обрабатывать и exceptions при этом не использовать», да всё руки не доходили.
Итак, будем считать, что у нас ситуация, что «настоящие C++ exceptions» использовать нельзя — например, языком разработки является C или компилятор С++ для нашей платформы не поддерживает exceptions (или формально поддерживает, а реально этим пользоваться нельзя). Это, конечно, нетипично для desktop приложений, но вполне обычно для embedded разработки.
Итак, будем считать, что у нас ситуация, что «настоящие C++ exceptions» использовать нельзя — например, языком разработки является C или компилятор С++ для нашей платформы не поддерживает exceptions (или формально поддерживает, а реально этим пользоваться нельзя). Это, конечно, нетипично для desktop приложений, но вполне обычно для embedded разработки.
+31
Пользовательские литералы в C++11
5 мин
40KТуториал
Более полугода прошло с момента принятия стандарта C++11. В сети можно найти много материалов посвященных новому стандарту, однако большинство из них касаются самых простых возможностей, самых сладких. Я говорю о лямбда-функциях, системе автоматического выведения типов, новых спецификаторах, умных указателях и т.д. Да, это действительно интересные вещи и, можно смело сказать, они одни из самых полезных и часто используемых. Но на них свет клином не сошелся, и новенький C++11 предлагает нам не только их.
Ниже я хочу рассказать о пользовательских литералах — весьма полезном средстве, хоть и не в повседневных целях.
Ниже я хочу рассказать о пользовательских литералах — весьма полезном средстве, хоть и не в повседневных целях.
+92
Разработка русскоговорящего «аналога» Siri за 7 дней
6 мин
18KПосле выхода iPhone 4S с Siri «на борту», владельцы остальных гаджетов Apple, чувствовали себя немного обделенными. Даже в свой новый iPad Apple не включила Siri. Разработчиками по всему миру были предприняты попытки портировать Siri на другие устройства или написать похожие аналоги. И только русскоязычный App Store хранил молчание. Наверно все разработчики очень заняты, подумал я, и решил исправить это досадное недоразумение…
+98
Маленькие чудеса C#/.NET – структура DateTimeOffset
4 мин
40KРассмотрим некоторые части .Net Framework'a, выглядящие тривиальными, но вполне способными сделать ваш код более простым как в написании, так и в сопровождении.
Пишущие на .NET (а если вы этого не делаете, то зря читаете этот пост) наверняка время от времени используют для своих нужд структуру DateTime. Эта структура удобна для хранения дат, времени или даты/времени, относящихся к локальной временной зоне (или же к UTC).
Однако, бывают случаи, когда вам необходимо сохранить время в виде смещения, а не конвертировать его в локальное время. И вот здесь вам на помощь придёт структура, впервые появившаяся в .NET 3.5 — DateTimeOffset.
Пишущие на .NET (а если вы этого не делаете, то зря читаете этот пост) наверняка время от времени используют для своих нужд структуру DateTime. Эта структура удобна для хранения дат, времени или даты/времени, относящихся к локальной временной зоне (или же к UTC).
Однако, бывают случаи, когда вам необходимо сохранить время в виде смещения, а не конвертировать его в локальное время. И вот здесь вам на помощь придёт структура, впервые появившаяся в .NET 3.5 — DateTimeOffset.
+51
Пишем драйвер для самодельного USB устройства
13 мин
176KЦелью этой статьи является пошаговая демонстрация процесса разработки всего набора программного обеспечения необходимого для организации связи самодельного устройства с компьютером посредством USB.
На данный момент, большинство радиолюбителей реализуют такой тип подключения используя чипы переходники USB в RS232 таким образом организуя связь со своим устройством посредством драйвера виртуального COM порта поставляемого с чипом переходником. Минусы такого подхода думаю понятны. Это как минимум лишний чип на плате и ограничения накладываемые этим чипом и его драйвером.
Мне же хочется осветить весь процесс организации такого взаимодействия так как оно и должно быть сделано, и как делается во всех серьезных устройствах.
В конце концов, сейчас 21-й век, модуль USB есть почти во всех микроконтроллерах. Именно о том, как наиболее быстро воспользоваться этим модулем и будет эта статья.
На данный момент, большинство радиолюбителей реализуют такой тип подключения используя чипы переходники USB в RS232 таким образом организуя связь со своим устройством посредством драйвера виртуального COM порта поставляемого с чипом переходником. Минусы такого подхода думаю понятны. Это как минимум лишний чип на плате и ограничения накладываемые этим чипом и его драйвером.
Мне же хочется осветить весь процесс организации такого взаимодействия так как оно и должно быть сделано, и как делается во всех серьезных устройствах.
В конце концов, сейчас 21-й век, модуль USB есть почти во всех микроконтроллерах. Именно о том, как наиболее быстро воспользоваться этим модулем и будет эта статья.
+146
Как формат PDF перестал ассоциироваться с бревном
3 мин
2.4KПролог
На работу привезли в рамках акции новые программы для документооборота — корпоративные профессиональные версии. Они нам программы — мы им свое частное и публичное мнение. Ставить их, к слову, вместо не совсем лицензионных версий этих же программ от Adobe. Соответственно, задачи, которые возлагаются на программы — работать с PDF (конвертировать их по-всякому, и т.п.), сканировать документы и распознавать символы. Меня посадили с этим ПО разбираться — вдруг там все на китайском, и вообще.
Действие первое, второе и третье
Привык к тому, что PDF — это как область с наименьшей энтропией, только для документов. С ним самим кроме конвертации ничего особенно сделать нельзя, и это, например, позволяет передавать в PDF любую информацию, в неизменности которой можно быть более-менее уверенным. Так вот, в пух и прах мои представления.
Итак, сделал для себя ряд интересных выводов:
На работу привезли в рамках акции новые программы для документооборота — корпоративные профессиональные версии. Они нам программы — мы им свое частное и публичное мнение. Ставить их, к слову, вместо не совсем лицензионных версий этих же программ от Adobe. Соответственно, задачи, которые возлагаются на программы — работать с PDF (конвертировать их по-всякому, и т.п.), сканировать документы и распознавать символы. Меня посадили с этим ПО разбираться — вдруг там все на китайском, и вообще.
Действие первое, второе и третье
Привык к тому, что PDF — это как область с наименьшей энтропией, только для документов. С ним самим кроме конвертации ничего особенно сделать нельзя, и это, например, позволяет передавать в PDF любую информацию, в неизменности которой можно быть более-менее уверенным. Так вот, в пух и прах мои представления.
Итак, сделал для себя ряд интересных выводов:
-11
Строим гусеничного Bluetooth-робота с камерой. Часть 3
11 мин
46KВ предыдущих сериях:
Часть 1
Часть 2
Ну что, все уже заказали запчасти и собрали роботов? Пора робота оживить.
Сегодня мы разберем программную начинку.
Вариант, который я предлагаю максимально прост. Не стоит ждать от него уникальных способностей. Его задача — простоехать работать. Отказоустойчивость, плавность управления и дополнительные функции — это простор для творчества, который я оставляю каждому, чтобы не лишать этого удовольствия. Код весьма простой и оттого далеко не оптимальный и не защищенный и вообще не красивый. Если есть предложения по его улучшению — предлагайте свои варианты, прямо куски кода с пояснением зачем и почему так будет лучше.
Неконструктивная критика того, что сделано плохо — не особо нужна :) Я и так знаю про недостатки. А вот если что-то непонятно- спрашивайте, поясню.
Итак, поехали!
Часть 1
Часть 2
Ну что, все уже заказали запчасти и собрали роботов? Пора робота оживить.
Сегодня мы разберем программную начинку.
Вариант, который я предлагаю максимально прост. Не стоит ждать от него уникальных способностей. Его задача — просто
Неконструктивная критика того, что сделано плохо — не особо нужна :) Я и так знаю про недостатки. А вот если что-то непонятно- спрашивайте, поясню.
Итак, поехали!
+71
Делаем робота ВаллИ
5 мин
48KПеревод
Примечание переводчика: робот офигенно умный! Обязательно посмотрите видео под катом!
Первое небольшое введение смотрите тут — http://www.youtube.com/watch?v=OJiMUzJHYFk
Я начал с игрушки «Интерактивный ВаллИ». Текущая цена на toys'r'us составляет $34.99.
Я увлекаюсь роботами и у меня есть большой опыт в программировании и дизайне, чтобы дать роботам эмоции и жизнь. Первый совет, который я могу дать вам, — вы должны быть уверены. Второй совет — будьте креативным. Используйте их вместе, а всё остальное ваш ум сделает за вас :)
В магазинах есть много доступных запчастей. Моя мастерская не представляет из себя ничего особенного. Я стараюсь закупать те детали, которые подешевле. Иногда я разбираю другие игрушки, потому что сервоприводы, к сожалению, самые дорогие из всех запчастей :)
Для крепежа я использую кабельные стяжки, а также маленькие винтики, болтики и гаечки. Все они доступны в дешёвых наборах для сборки в местном магазине.
Чтобы изменять корпуса, я использую инструменты Dremel, а иногда и свой паяльник, чтобы расплавить пластмассу. При шлифовке, пожалуйста, имейте пылесос поблизости. Внимание: При плавке, держите открытым окно с вентилятором!
+89
Подключение электромотора к Arduino
2 мин
49KЗдравствуйте. Я, как новичок в электронике, хочу поделиться своим небольшим практическим опытом с другими начинающими любителями. Некоторое время назад заказал себе Arduino, получил его, монтажную плату для тестирования и несколько радиодеталей. Попробовал различные примеры со светодиодами и т.п. эксперименты. Захотелось подключить электромотор, который также был в комплекте. Попробовал его подключить напрямую к ножкам контроллера, да не тут-то было. Оказывается, ардуино выдает недостаточный ток для того, чтобы прокрутить электромотор. Оказывается, в таком случае, когда нужно управлять большим током, используется усилитель на транзисторах, а для усиления тока нужна схема с общим коллектором (Эмитеррный повторитель).
+10
Строим гусеничного Bluetooth-робота с камерой. Часть 2
4 мин
35KЧасть 1
Часть 3
Продолжаем строить гусеничного робота.
В первой части мы с вами подобрали и, надеюсь, заказали все необходимые детали. Кстати, недавно проверял, все детали Tamiya (гусеницы, площадки, мотор-редукторная коробка) были в наличии в Terraelectronica. Подороже, конечно, чем из Китая, но зато рядом.
Те, кто уже получил детали, наверняка уже собрали шасси.
Теперь займемся бортовой электроникой, видеоподсистемой и питанием.
Часть 3
Продолжаем строить гусеничного робота.
В первой части мы с вами подобрали и, надеюсь, заказали все необходимые детали. Кстати, недавно проверял, все детали Tamiya (гусеницы, площадки, мотор-редукторная коробка) были в наличии в Terraelectronica. Подороже, конечно, чем из Китая, но зато рядом.
Те, кто уже получил детали, наверняка уже собрали шасси.
Теперь займемся бортовой электроникой, видеоподсистемой и питанием.
+33
Javascript в PDF
6 мин
60KНедалек тот час, когда PDF документы можно будет полноценно отображать средствами Javascript. При этом обратная возможность, а именно использование Javascript в PDF документах, существует уже очень давно. Об этом и пойдет речь в данной статье.
+41
OpenGL iBooks-like анимация перелистывания
6 мин
9.5KПомню, когда я в первый раз взял в руки iPad, более всего меня поразило приложение iBooks c его натуралистичным перелистыванием страниц. Все остальные «фишки» как-то не особо впечатляли, но это… это показалось воплощением полной интерактивности. По сравнению с обычными графическими интерфейсами, использующими стандартные элементы GUI, интерфейсы с использованием анимации OpenGL это новый шаг в развитии пользовательских интерфейсов.
+41
Push уведомления в приложениях для iOS
3 мин
13KДобрый день, Хабражитель.
Все наверное в курсе, что в iOS существует такой полезный сервис как Push уведомления. Я тоже был в курсе, но пока не столкнулся с его реальным использованием, даже не знал, что с ним есть так много нюансов. В этом топике вы узнаете два аспекта об этом сервисе: что нужно делать в xCode, и как отсылать сами пуш сообщения через php сервер.
Под катом описано то, как все это работает.
Все наверное в курсе, что в iOS существует такой полезный сервис как Push уведомления. Я тоже был в курсе, но пока не столкнулся с его реальным использованием, даже не знал, что с ним есть так много нюансов. В этом топике вы узнаете два аспекта об этом сервисе: что нужно делать в xCode, и как отсылать сами пуш сообщения через php сервер.
Под катом описано то, как все это работает.
+23
Disruptor — новая парадигма многопоточного программирования
4 мин
34KНа прошлой неделе компания LMAX, где я работаю, получила приз Java Duke's Choice Award 2011 за фреймворк Disruptor. Ранее об этой технологии писал Martin Fowler, известный многим читателям публикациями об объектном программировании.
В этой статье я хотела бы вкратце рассказать об этой технологии, а так же о конкретной проблеме, которую эта технология решает в компании LMAX.
В этой статье я хотела бы вкратце рассказать об этой технологии, а так же о конкретной проблеме, которую эта технология решает в компании LMAX.
+19
Вышла новая версия Apache POI 3.8beta4
2 мин
3.3KВ новой версии библиотеки, кроме обычных исправлений ошибок, содержится большое количество изменений, связанных с парсингом и обработкой файлов MS Word.
+22
Пьеса «Разработка многопользовательской сетевой игры.» Часть 2: Это страшное слово «протокол»
7 мин
19KRecovery Mode
Часть 1: Архитектура
Часть 3: Клиент-серверное взаимодействие
Часть 4: Переходим в 3D
Итак, продолжим создание многопользовательской игры.
Сегодня мы рассмотрим создание протокола передачи данных.
А также создадим заготовки TCP сервера и соответственно клиента.
+66
Демонстрация Debugger Canvas — нового подхода к отладке от Microsoft Research и Brown University
1 мин
1.6KKael 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 функционал.
Видео ниже отлично демонстрирует предложенный исследователями подход:
Страница проекта Debugger Canvas доступна на сайте Microsoft Research по этому адресу. Там можно найти дополнительную информацию о проекте. Анонс проекта был сделан в этом блоге.
Авторы сообщают о том, что Debugger Canvas будет доступен широкой публике уже в течении июня 2011 года на сайте Microsoft DevLabs. Оценить его работу смогут только обладатели Visual Studio 2010 Ultimate, так как только эта редакция содержит необходимый для работы Debugger Canvas функционал.
+5
Информация
- В рейтинге
- Не участвует
- Откуда
- Москва, Москва и Московская обл., Россия
- Работает в
- Дата рождения
- Зарегистрирован
- Активность