• Самолёт, HD FPV, линк 600 км по 4G

      В продолжение к вчерашнему топику про машинку.

      На машинке отлично покатались, но аппетит приходит во время езды — захотелось полетать. Само собой, над Питером, управляя из Москвы. Да простит меня Хабр, но самолёт — намного круче чем машинка, так что заслуживает отдельного топика.

      У realizator как раз имеется самолёт Bixler, специально для экспериментов. Самолётик уже бывалый, успешно пережил немало морковок. Для тех кто не в теме — морковка это такая фигура высшего пилотажа, когда самолёт втыкается носом в землю.



      Вот мы и подумали что ещё одна морковка погоды не сделает. Реализатор установил на Бикслер (который, кстати, имеет кличку «Кащей», ибо бессмертный) тот же самый комплект, который на машине стоял. Добавили один канал (для самолёта минимум три канала PWM требуется). Я у себя дома вместо курковой автомобильной аппы подключил самолётную аппаратуру управления (народную Турнигу — Turnigy 9x). Тот же самый сервер команд, та же рулилка виндовая — всё без изменений.

      Реализатор поехал на полянку на окраине Питера, поездил рядышком — телеметрия с борта показала что сигнал Йоты намного слабее чем на Дворцовой площади был, но он есть и видео более-менее идёт.
      Читать дальше →
    • Краткий курс компьютерной графики: пишем упрощённый OpenGL своими руками, статья 2 из 6

      • Tutorial

      Содержание курса



      Улучшение кода






      Official translation (with a bit of polishing) is available here.




      Update:


      Внимание, статья 4в даёт новую, более простую версию растеризатора.

      Давайте знакомиться, это я.



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

      В прошлый раз мы нарисовали проволочную сетку трёхмерной модели, в этот раз мы зальём полигоны. Точнее, треугольники, так как OpenGL практически любой полигон триангулирует, поэтому ни к чему разбирать сложный случай. Напоминаю, что этот цикл статей создан для самостоятельного программирования. Время, которое я здесь привожу — это не время чтения моего кода. Это время написания вашего кода с нуля. Мой код здесь только для того, чтобы сравнить ваш (рабочий) код с моим. Я совсем не являюсь хорошим программистом, поэтому ваш код может быть существенно лучше моего. Любая критика приветствуется, любым вопросам рад.

      Пожалуйста, если вы следуете этому туториалу и пишете свой код, выкладывайте его на github.com/code.google.com и им подобные и давайте ссылки в комментариях! Это может хорошо помочь как и вам (другие люди могут чего посоветовать), так и будущим читателям.
      Читать дальше →
    • Будни багхантинга: еще одна уязвимость в Facebook



        Декабрь для меня получился наиболее удачным за четыре года участия в разнообразных программах bug bounty, и я хотел бы поделиться информацией об одной из обнаруженных уязвимостей. Речь пойдет о небезопасной обработке Request-URI (Request Target). На этот раз красивой комбинацией уязвимостей порадовал Facebook.
        Читать дальше →
        • +98
        • 49,5k
        • 8
      • Уязвимости публичных терминалов: как взломать велопрокат и поликлинику

          В этом году Москву охватила настоящая велосипедная лихорадка. Количество станций велопроката было увеличено с 79 до 150, а услугами аренды воспользовались 90 тыс. человек. Пока двухколесные друзья отдыхают на зимних каникулах, расскажем об уязвимостях терминалов для оплаты аренды велосипедов, которые поставили под угрозу безопасность персональных данных и электронных кошельков пользователей, а также заставили задуматься о новой парадигме атак на корпоративные сети.

          image

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

          • Перевод
          Содержание:
          Глава 1: Схемы реальных значений
          Часть 1:
             Введение   
                Базовый сценарий: Простой логический элемент в схеме
                Цель
                   Стратегия №1: Произвольный локальный поиск
          

          Часть 2:
                   Стратегия №2: Числовой градиент
          

          Часть 3:
                   Стратегия №3: Аналитический градиент
          

          Часть 4:
                Схемы с несколькими логическими элементами
                   Обратное распространение ошибки
          

          Часть 5:
                   Шаблоны в «обратном» потоке 
                Пример "Один нейрон"
          

          Часть 6:
                Становимся мастером обратного распространения ошибки
          


          Глава 2: Машинное обучение
          Часть 7:
                Бинарная классификация
          

          Часть 8:
                Обучение сети на основе метода опорных векторов (SVM)
          

          Часть 9:
                Обобщаем SVM до нейронной сети
          

          Часть 10:
                Более традиционный подход: Функции потерь
          



          Со временем вы сможете намного эффективнее писать обратные проходы, даже для сложных схем и для всего сразу. Давайте немного попрактикуемся в создании обратного распространения ошибки на нескольких примерах. В дальнейшем мы просто будем использовать такие переменные, как a,b,c,x, а их градиенты назовем da,db,dc,dx соответственно. Опять же, мы представляем переменные в качестве «прямого потока», а их градиенты в качестве «обратного потока» вдоль каждой линии. Нашим первым примером был логический элемент *:
          Читать дальше →
        • Пример написания функциональных требований к Enterprise-системе

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

          Целью нашей разработки было создание с нуля учетной системы для одной из крупных российских компаний. Система была призвана заменить текущую, написанную в конце 90-х. В результате были реализованы платформа и один из бизнес-модулей. В реализованной части было порядка 120 объектов, 180 таблиц, около 30 печатных форм.

          Хочу оговориться, что подход, описанный ниже, не универсален для написания любого ПО. Он подходит для систем уровня предприятия, которые строятся на основе объектно-ориентированного подхода: учетных, CRM-, ERP-систем, систем документооборота и т.п.

          Вся документация на наш программный продукт состояла из следующих разделов:
          • Общая часть
            • Список терминов и определений
            • Описание бизнес-ролей
          • Требования
            • Бизнес-требования
            • Общие сценарии
            • Сценарии использования
            • Алгоритмы и проверки
            • Системные требования
            • Нефункциональные требования
            • Требования к интеграции
            • Требования к пользовательскому интерфейсу
          • Реализация
          • Тестирование
          • Руководства
          • Управление

          Читать дальше →
        • Как самостоятельно зарегистрировать ООО

            Всем привет! Сегодня мы расскажем о том, как самостоятельно зарегистрировать ООО.

            Вопрос о создании своей компании обычно возникает, когда у вас есть идея для стартапа и вы готовы приступить к разработке. Если над проектом вы работаете один, то вам вполне достаточно статуса ИП. Если у вас есть партнёры или вы планируете привлекать инвесторов, то лучше с самого начала зарегистрировать ООО. Это самая распространённая форма для ведения бизнеса и, несмотря на некоторые ограничения, она лучше всего подходит для создания стартапа.

            Мы расскажем о каждом этапе самостоятельной регистрации ООО, поделимся советами и ссылками, которые помогут вам справиться с ней максимально просто и быстро.



            Инструкция по самостоятельной регистрации ООО от «Я люблю ИП»

            Читать дальше →
          • Android AutoCompleteTextView с подсказками из веб-сервиса

            Для одного из своих Android-приложений Book Tracker я реализовал кастомный AutoCompleteTextView с подсказками для названий книг, которые динамически подгружаются с Google Books по мере ввода названия книги.

            Задача перед компонентом стояла следующая:
            • Загрузка данных должна осуществляться в отдельном потоке, чтобы не блокировать UI-поток;
            • Загрузка подсказок должна начинаться только, если пользователь приостанавливает набор (чтобы предотвратить отправку множества запросов к серверу после каждого введенного символа);
            • Подсказки должны загружаться, если пользователь ввел строку некоторой минимальной длины (нет смысла начинать загрузку данных для строки из двух или трех символов);
            • При запросе к серверу в правой части поля должен быть показан анимированный прогресс, чтобы информировать пользователя о загрузке.

            Финальный результат:



            Читать дальше →
            • +18
            • 27,7k
            • 9
          • [LibGDX] Создаем клон Flappy Bird — Zombie Bird

            • Перевод
            • Tutorial
            Доброго времени суток %username%. Не давно наткнулся на хороший туториал по созданию клона игры Flappy Bird используя LibGDX и этот туториал мне понравился своей простотой и детализацией.

            Я отдаю себе отчет, что тема создания клонов данной игрушки изъела себя, но возможно кому-то пригодится еще один хороший туториал.

            Туториал разбит на 12 дней, содержит множество картинок, полотен кода и исходный код разбит по дням. Кому интересно, добро пожаловать под кат.
            Подробнее
          • QML: анимированная иконка-«бутерброд» в стиле Material Design за 20 минут

            • Tutorial
            Привет, Хабр.

            Многие разработчики, интересующиеся разработкой пользовательских интерфейсов (да и просто пользователи Android) уже успели ознакомиться с новой концепцией интерфейса Material Design, активно продвигаемой Google в рамках выпуска Android 5.0. Знакомясь с руководством по оформлению приложений и внимательно разглядев недавно обновившийся Google Play, я обратил внимание на один очень симпатичный компонент — иконку меню (в народе известную как hamburger icon), анимированно превращающуюся в иконку «назад», и решил реализовать такой компонент на Qt с использованием декларативного языка описания интерфейса QML.



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

            Читать дальше →
          • Nvidia + Nexus 7 + две лупы + коробка = VR шлем

              Добрый день! В интернете уже накопилось достаточное количество статей по сборке DIY VR шлемов и хабр тому не исключение. Но в большинстве случаев при сборке используются смартфоны с относительно не большими дисплеями, что не позволяет получить широкий угол обзора. Сегодня же мы будем собирать шлем на основе Nexus 7, потратив всего 600 рублей в ближайшем гипермарките. Ну и т.к. главный лозунг этой статьи «Меньше теории, больше практики», хватит лишних слов, начинаем!



              Читать дальше →
            • Оптимизируем VPS за 5$ (512MB RAM / 1 CPU) так, что сайт на wordpress выдерживает нагрузку в 42,735,587 хитов в день

              Когда вы приобретаете сервер VPS с 256MB или 512MB оперативной памяти на борту и лишь часть мощности процессора, то использовать для таких сервисов как MySQL/PHP/Apache настройки по умолчанию является очень плохой идеей. В настоящее время у меня запущено 3 сайта на самом дешевом тарифном плане с 512MB RAM/1 CPU. Не уверен полностью, но посещаемость составляет порядка 5-10 тысяч посетителей в день. Далее я хочу поделиться инструкцией как оптимизировать LAMP используя всего лишь 512 MB и при этом не уходя в swap. Обычно при такой настройки используется 256 – 378Mb памяти и все работает довольно быстро.

              Определяем доступную память и активность swap.

              Перед началом оптимизации давайте взглянем на количество используемой памяти. Для этого необходимо выполнить следующую команду:

              $ free -m

              Для того. чтобы посмотреть список запущенных процессов и отсортировать их по использованию памяти, необходимо выполнить вот такую команду:

              $ ps -eo pmem,pcpu,rss,vsize,args | sort -k 1 -r | less


              Настраиваем LAMP сервер для потребления малого количества оперативной памяти. Останавливаем, отключаем ненужные сервисы

              Первый и очевидный вопрос, который необходимо задать — это «какие сервисы мне не нужны в использовании?». Недавно, я обнаружил очень удобную утилиту для управления сервисами. Она называется "sysv-rc-conf" и управляет сервисами при помощи псевдографики и флажками. Выгдялит вот так:



              Здесь представлен список сервисов, которые я изменил.

              • Postfix. Этот сервис позволяет отправлять и получать почтовые email сообщения для домена. Я использую для этих целей Google Apps для отправки почты и mailchimp для новостных подписчиков. Таким образом я остановил и отключил этот сервис.
              • Bind9. Он нужен для управления DNS записями Вашего домена. Его можно отключить, так как все DNS записи хранятся у хостера.
              • SSHD. Имеются и другие реализации, которые используют гораздо меньше памяти, но они не поддерживают sftp, поэтому данный сервис я оставил без изменений.


              Не запускайте X-сервер, выключите все ненужные сервисы и настройте Apache, MySQL, PHP только с базовой необходимой функциональностью.
              Читать дальше →
            • Делаем простое освещение в 2D игре. Подробные примеры на C# и XNA для новичков

              В этой публикации я постараюсь предельно просто рассказать, как можно легко и быстро сделать динамическое освещение в 2D игре на XNA; без шейдеров, карт нормалей и вообще, без дополнительных ресурсов. Целью у нас будет красивая игровая сцена с ночным небом, темным задним фоном, освещенным фонарями, передним фоном и игровым меню. Количество источников света не ограничено (в разумных пределах, конечно), форма произвольная. Освещается только передний фон. Читателю желательно иметь элементарные навыки работы с XNA, поскольку будет много кода.

              2d освещение
              Читать дальше →
              • +12
              • 27,3k
              • 8
            • Опыт продвижения в русском AppStore

                imageСделать хорошее приложение для iPhone или iPad могут многие. Но далеко не все на этом умудряются заработать денег. Не буду хвастаться – но у меня получается и то, и другое. Хотелось бы поделиться с сообществом хабрачиталей некоторыми тонкостями кухни.
                Под катом немного статистики и опыта размещения обзоров и баннерной рекламы рекламы с цифрами.
                Читать дальше →
              • Мой опыт размещения игры в App Store



                  Привет, Хабрахабр!

                  В этом топике я хотел бы рассказать о своем первом опыте размещения и продвижения игры в App Store. Не могу назвать его удачным, но, по крайней мере, само по себе наличие опыта, набитые шишки и сделанные выводы — это уже плюс. Я довольно давно занимаюсь разработкой Android-игр, поэтому это будет еще и взгляд со стороны Android-разработчика, который надеюсь, тоже будет кому-то интересен.
                  Читать дальше →
                • Orthogonal — модель мира с альтернативной теорией относительности

                    В 2011-2013 гг. австралийский писатель Грег Иган (Greg Egan) опубликовал трилогию Orthogonal (The Clockwork Rocket, The Ethernal Flame, The Arrows of Time). В книгах описан удивительный мир, в котором нет жидкостей и электрических зарядов, обитают четырёхглазые разумные существа, способные менять форму и размножающиеся делением, использующие воздух не для химических реакций, а для охлаждения своего тела, а свет — для передачи нервных импульсов. Скорость света в этом мире непостоянна: фиолетовые фотоны движутся заметно быстрее красных. Поэтому звёзды выглядят не как белые точки, а как радужные полоски
                    Читать дальше →
                  • Взрывы в Box2D

                      Мой телеграм канал: https://t.me/winc0de.
                      В этой статье мы рассмотрим несколько видов взрывов в физическом движке Box2D.
                      Симуляция взрыва сводится к нахождению тел, которые находятся в радиусе действия взрывной волны и применении силы к ним, чтобы отбросить их от центра взрыва.

                      Мы расмотрим три вида взрывов разной сложности:
                      • Нахождение тел в радиусе взрыва
                      • Raycast – нахождения тел в радиусе лучей
                      • Частицы – распространение многих маленьких тел от эпицентра взрыва

                      Читать дальше →
                    • Разработка трехмерных игр для Windows 8 с помощью C++ и Microsoft DirectX

                      • Перевод


                      Разработка игр — постоянно актуальная тема: всем нравится играть в игры, их охотно покупают, поэтому их выгодно продавать. Но при разработке хороших игр следует обращать немало внимания на производительность. Никому не понравится игра, «тормозящая» или работающая рывками даже на не самых мощных устройствах.
                      В этой статье я покажу, как разработать простую футбольную 3D игру с использованием Microsoft DirectX и C++, хотя главным образом я занимаюсь разработкой на C#. В прошлом я довольно много работал с C++, но теперь этот язык для меня уже не столь прост. Кроме того, DirectX для меня является новинкой, поэтому эту статью можно считать точкой зрения новичка на разработку игр. Прошу опытных разработчиков простить меня за возможные ошибки.
                      Читать дальше →
                      • +27
                      • 36,1k
                      • 4
                    • Моя небольшая история разработки и публикации мобильных игр

                      Отступление


                      Приблизительно полтора года назад, просматривая очередной выпуск «Видеомании», я услышал о движке Unity3D. До этого никогда глубоко не интересовался подобными вещами и считал процесс разработки для меня сложным. В тоже время детская мечта создавать игры, как и любовь к ним, ещё не угасла. Я нажал на паузу и загуглил «unity3d»… Установив Unity и поняв основные принципы работы движка, я очень обрадовался сразу нескольким вещам: простота в освоении, мульти-платформенность, подробная и понятная документация и живой форум (с английским благо всё в порядке), наличие магазина дополнений и free лицензии. В дальнейшем я пробовал и другие движки, но предпочтение моё всё же не поменялось. Выбирая платформы, я остановился на мобильных и, в частности, на Android. Ничего яблочного у меня не было. К тому моменту лицензия для Android стоила 400 долларов. Но, пока я спешно проходил видео курс по основам ООП программирования и Java (небольшой опыт в php был), ребята из Unity решили дать возможность разработчикам делать игры для Android и iOS совершенно бесплатно, за что им большое спасибо.

                      Радости не было предела, когда я впервые запустил тестовый проект на своем телефоне. Всё великолепно работало! А процесс компиляции, отправки и запуска приложения на устройстве занимал несколько секунд. Хлопая в ладоши, с улыбкой на лице я стал думать о том, что же мне теперь со всем этим делать…

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

                      Далее рассказ продолжается в хронологическом порядке выхода игр и разбит на одноимённые главы, с приведением статистики, методах продвижения и прочего.
                      Читать дальше →
                    • Технология от Яндекса, которая избавит нас от бумажных билетов в кино и очередей в кассу

                        Купить билеты в кино через интернет можно уже давно. Но до сих пор у этого в России есть один существенный недостаток: электронный билет приходится обменивать на бумажный в кинотеатре. Зачастую для этого нужно даже отстоять очередь.

                        Мы верим, что так быть не должно. Бумажные билеты — это атавизм прошлого, электронный билет должен быть пропуском в зал кинотеатра.

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

                        Сегодня такие сканеры появились в кинотеатре «Формула Кино Горизонт», а до конца года будут установлены ещё в 20 кинотеатрах этой сети. Теперь можно будет проходить в зал, используя прямо тот QR-код, который вам всегда присылают продавцы билетов в интернете. Мы придумали решение, которое позволит сделать такую возможность массовой.



                        Технология называется Smartpass — фактически, это просто приложение, которое работает на базе iPad mini, распознает QR-коды и отправляет данные в систему кинотеатра. Его главное достоинство — то, что кинотеатру установить такой сканер у входа в каждый зал в десятки раз дешевле существующих промышленных решений. И Яндекс даже помогает кинотеатрам всё настроить.
                        Читать дальше →