Рубрика «Программирование» - 1025

Easy программирование танка шпиона
Хочу рассказать Вам, как можно управлять айГаджетами с PC, да еще и программировать их. Все, что описано в статье применимо как к Brookstone Rover Spy Tank, так и к AR Drone Parrot. На «Хабре» уже ни раз были статьи о серии высокотехнологичных гаджетов AR Drone Parrot. Как-то мало интереса проявляется Brokstone Rover Spy Tank, хотя, как ни странно, эта игрушка хоть и не такая эффектная, в силу того, что не летает, зато более практичная. Во первых заряда 6 элементов пиатния серии АА хватает на несколько часов непрерывной работы. Во вторых, его можно использовать как гиковскую веб-камеру, с помощью которой можно следить за тем, что происходит дома с любого другого компьютера, ну и, как бонус, гонять своих домашних животных. Настроив доступ по RDP к домашнему компьютеру, можно управлять этим изделием, как мобильной веб-камерой, которая не просто показывает картинку, но еще и передвигается по помещению.
Читать полностью »

      Недавно прошли три тура конкурса Вконтакте по созданию фотоприложения для платформы iOS. Ссылка на конкурс: http://vk.com/photo_contest. В процессе разработки приложения первого тура я нашел несколько интересных решений некоторых проблем. Этими решениями я и хотел поделиться с общественностью. Матерым разработчикам под iOS я врядли открою что-то новое, не думаю что статья подойдет также новичкам. Предполагаю, что статья будет интересна разработчикам под iOS со стажем 2-5 приложений.

Приемы разработки под iOS, использованные мной в конкурсе Pictograph
Читать полностью »

Об этом методе я слышал давно и многократно, в первую очередь от аналитика нашей конторы, рассказывавшем о большом количестве специальной литературы, проработанной таким образом. Я же, честно говоря, страдаю тем, что техническую литературу читаю, как художественную, то есть, после первого прочтения в памяти остается очень далеко не все, да и раскладывание по полочкам не всегда проходит как надо. Такая же проблема возникла и при попытке прослушивания лекций coursera.org — писать от руки быстро я уже не могу, а печатать форматированный текст на лету, ИМХО, сложно.

Переломным оказался момент прочтения одной статьи: http://habrahabr.ru/post/155891/ — уж больно хорошо у автора получалось то, к чему я так стремился. Что ж, подумалось мне — с головой, да в омут, а как иначе?
Читать полностью »

Лечу Crash'и NSLog'ами. Недорого. Многолетний опыт. 100% гарантия.

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

Все началось с того, что на одном из относительно больших проектов начало стабильно вываливаться исключение при авторизации пользователя. «Ну и что тут такого? У всех бывает. Проверку на nil забыли поставить или где-то накосячили. „Тоже, мне, большое событие — crash на проекте“, — подумает большая часть программистов. В принципе — абсолютно согласен. Crash — не такое уж и редкое явление в программировании под iPhone, и с ним сталкиваешься по десять раз на день. Но этот был особенным. От него уже начало попахивать „магией“, когда мне сказали про его некоторые параметры и особенности:

  • Воспроизводимость на симуляторе: 100%
  • Воспроизводимость на устройстве: 0%
  • Путь к крэшу (после локализации крэша): ~ 40 секунд
  • Настройки оптимизации при компиляции (-O1,-O2...) не влияют на воспроизводимость
  • XIB'ы в проекте не используются

Да выглядел он довольно безобидно:

// Code
UITextView * textView = [ [UITextView alloc] initWithFrame:CGRectMake(0, 150, _width, _height)];

// Exception
*** Terminating app due to uncaught exception 'CALayerInvalidGeometry', 
    reason: 'CALayer bounds contains NaN: [0 0; nan 200]'

»Ну тут же и ежу понятно, что width — после вычисления — NaN!", — подумал я. Бегло поглядев где и как вычисляется ширина вьюхи, и не найдя ничего особого опасного, я, для утверждения своей догадки, поставил перед созданием вьюхи NSLog. А вдобавок, и точку останова на строке с созданием элемента.

// Source:
NSLog(@"width = %f", _width);

//Output:
width = 200

«Гм», — подумал про себя я, и продолжил выполнение программы после точки останова. И крэша не произошло…

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

1. Особенности работы с переменными и литералами в Perl6
2. Perl6 — Операции над переменными, анонимные блоки
3. Perl6 — Условные операторы, циклы
4. Perl6 — Работа с функциями
5. Perl6 — Классы

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

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

Всем доброго {daytime}!

Сегодня пришла пора рассказать вам о фундаментальной проблеме перекодировки при взаимодействии проекта собранного на MS Visual C++ на платформе Windows и наиболее приятной скриптовой обвязки для языка C++, благодаря библиотеке Boost.Python, собственно написанной для языка Python.

Вы ведь хотите использовать для вашего приложения на C++ под ОС Windows хорошую скриптовую обвязку на последней версии Python 3.x, либо вы хотите использовать для вашего приложения на Python максимально ускоренный участок кода вашего модуля, переписанный на C++. В обоих случаях, если вы знаете оба языка как минимум хорошо, вам стоит это прочитать.
Читать полностью »

У моего давнего британского партнёра (именно для него два года назад писалось «Распознавание почтовых адресов») появилась новая идея по оптимизации бизнес-процессов: коробки по складу должны возить роботы, а грузчики — только перекладывать товары с робота на полку и обратно. Смысл, естественно, не в том, чтобы за каждым роботом по пятам шёл грузчик, и принимался за погрузку-разгрузку, как только робот остановится — а чтобы роботов было намного больше, чем грузчиков, и чтобы роботы большую часть времени стояли в конечной точке своего маршрута, ожидая погрузки. Тогда грузчик будет лишь переходить от одного робота к следующему, нагружая каждый, и не будет тратить рабочее время на переноску товаров.

Предыстория

Проект «робот грузчик»: определение собственного местоположенияВ прошлом году мы экспериментировали с платформой самоходного пылесоса Roomba. Новенький пылесос обошёлся нам около £300 (подержанный можно найти за £100 и даже дешевле), и в его состав входят два электропривода на колёса, два датчика касания спереди, инфракрасный датчик снизу (для обнаружения ступенек) и сверху (для поиска зарадной станции). Точный перечень датчиков зависит от модели: в протоколе предусмотрено до четырёх инфракрасных датчиков снизу, каждый из которых возвращает один бит («пол виден/не виден»). В любом случае, никаких дальномеров: все имеющиеся датчики однобитные. Кроме того, никаких «программируемых ардуин» в Roomba нет, и чтобы им управлять, нужно установить сверху лаптоп (или ардуину), общающуюся с роботом по RS-232. Поигравшись с пылесосом вдоволь, мы так и оставили его пылиться на одной из полок склада.

Проект «робот грузчик»: определение собственного местоположенияВ этом году мы решили попробовать Microsoft Robotics Development Studio (MRDS), для продвижения которого Microsoft сформулировала спецификацию «MRDS Reference Platform» — набор оборудования и протокол управления «стандартным» роботом. Эта спецификация позволила бы роботолюбам создавать совместимых роботов и переносить между ними программы. По сравнению с аппаратным оснащением пылесоса, Reference Platform намного сложнее и мощнее: в спецификацию включён Kinect, три ИК-дальномера и два ультразвуковых, а также датчики вращения колёс (encoders). Реализацию MRDS RP пока что предлагает только фирма Parallax под названием Eddie (порядка £1000, не включая Kinect). Необычайное сходство Eddie с фотографиями робота-прототипа в спецификации MRDS RP наводит на мысли, что спецификация создавалась в тесном сотрудничестве с Parallax, иначе говоря — Parallax удалось добиться, что Microsoft приняли их платформу за эталонную.

Кроме разнообразия датчиков, Eddie обладает механически впечатляющей платформой (заявленная грузоподъёмность 20кг, а мощности моторов достаточно, чтобы толкать впереди себя складской погрузчик) и программируемым контроллером Parallax Propeller, т.е. критические куски кода можно зашить непосредственно в робота, а не только командовать им с компа.
Читать полностью »

Dart + WebGL так ли вкусны печеньки на тёмной стороне
История развития веб-приложений очень сильно напоминает жизнь Энакена Скайуокера. Лет 15 назад они были слабыми и неуклюжими. Но вот прошло время, тестостерон бьёт в голову и наш “Энакен” падает в раскалённую лаву требований к качеству и функциональности браузерных программ. Своей единственной уцелевшей джаваскриптой он подгребает под себя землю. Здесь внимательный читатель заметит, что так мы далеко не уползём. Неожиданный, а на самом деле вполне закономерный сюжетный поворот и на сцене появляется два спасителя Dart и TypeScript. Давайте попробуем встать на сторону одного из трёх персонажей.
Читать полностью »

Привет!

Так как статей об ABAP'е на хабре совсем мало, а статьи вида «Hello, World!» совсем нету, решил немного написать об этом. Если вам интересно узнать про этот язык или же подумываете заниматься разработкой на ABAP'е, то добро пожаловать под кат. Читать полностью »

Хабрапривет!

В четверг, 13 декабря в 19:00 в московском офисе компании КРОК пройдет первая встреча московского сообщества Java-разработчиков с ведущими инженерами компании Oracle Сергеем Куксенко и Алексеем Шипилёвым, которые выступят со своим звездным докладом «Через тернии к лямбдам», а также ведущим инженером компании КРОК Геннадием Кругловым, который расскажет вам о Spring Data JPA и поделится собственным опытом. Встреча пройдет в формате семинара. На месте вас ждет: живое общение, обсуждение интересных тем, а также возможность пообщаться с новыми интересными людьми за чашечкой кофе с плюшками!
Читать полностью »


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