Производительность считается одним из наиболее важных нефункциональных требований приложения. Если вы читаете эту статью, то, вероятно, используете приложение, например веб-браузер или программу для чтения документов, и понимаете, насколько велико значение производительности. В этой статье я расскажу о производительности приложений и о трех ошибках разработчиков, из-за которых не удается добиться высокой производительности приложений.
Андрей Кудрявцев @andybiiig
Специалист по информационной безопасности
Разработка HTML5 игры под Android с нуля и до релиза
8 мин
63KВместо вступления
Потратив несколько суток подряд (без перерыва на сон) на изучение поддержки HTML5 всеми любимыми Android-гаджетами, решил, что данной теме стоит уделить внимание. В статье постараюсь раскрыть по шагам все этапы (конечно же базовые/ключевые/основные) создания HTML5 Игрового приложения для Android от идеи до релиза самого APK файла. Возможно, ничего нового я и не открою маститым разработчикам, но для новичков постараюсь описать все как можно проще, со скриншотами и пояснениями.
Желающих узнать подробнее приглашаю под кат.
+11
Указатели, ссылки и массивы в C и C++: точки над i
10 мин
619KТуториал
В этом посте я постараюсь окончательно разобрать такие тонкие понятия в C и C++, как указатели, ссылки и массивы. В частности, я отвечу на вопрос, так являются массивы C указателями или нет.
Указатели. Что такое указатели, я рассказывать не буду. :) Будем считать, что вы это знаете. Напомню лишь следующие вещи (все примеры кода предполагаются находящимися внутри какой-нибудь функции, например, main):
Обозначения и предположения
- Я буду предполагать, что читатель понимает, что, например, в C++ есть ссылки, а в C — нет, поэтому я не буду постоянно напоминать, о каком именно языке (C/C++ или именно C++) я сейчас говорю, читатель поймёт это из контекста;
- Также, я предполагаю, что читатель уже знает C и C++ на базовом уровне и знает, к примеру, синтаксис объявления ссылки. В этом посте я буду заниматься именно дотошным разбором мелочей;
- Буду обозначать типы так, как выглядело бы объявление переменной TYPE соответствующего типа. Например, тип «массив длины 2 int'ов» я буду обозначать как
int TYPE[2]
; - Я буду предполагать, что мы в основном имеем дело с обычными типами данных, такими как
int TYPE
,int *TYPE
и т. д., для которых операции =, &, * и другие не переопределены и обозначают обычные вещи; - «Объект» всегда будет означать «всё, что не ссылка», а не «экземпляр класса»;
- Везде, за исключением специально оговоренных случаев, подразумеваются C89 и C++98.
Указатели и ссылки
Указатели. Что такое указатели, я рассказывать не буду. :) Будем считать, что вы это знаете. Напомню лишь следующие вещи (все примеры кода предполагаются находящимися внутри какой-нибудь функции, например, main):
int x;
int *y = &x; // От любой переменной можно взять адрес при помощи операции взятия адреса "&". Эта операция возвращает указатель
int z = *y; // Указатель можно разыменовать при помощи операции разыменовывания "*". Это операция возвращает тот объект, на который указывает указатель
+26
Еще один домашний стереолитографический принтер
6 мин
17KВ сентябре прошлого года закончился на кикстартере сбор средств на создание еще одного принтера – LittleRP. По сравнению с аналогами его выгодно отличала цена (без учета проектора принтер мог вам обойтись в 500$). Так как необходимые средства были собраны буквально за пару часов, я могу сказать, что мне посчастливилось попасть в первую группу бэкеров, и вот на прошлой неделе я его получил. Видя, что тема актуальна, решил поделиться с общественностью впечатлением от приобретения.
+13
STM32 и FreeRTOS. 1. Развлечение с потоками
7 мин
153KТуториал
Данный цикл из 5 статей рассчитан на тех, кому стало мало возможностей привычных «тинек» и ардуинок, но все попытки перейти на более мощные контроллеры оканчивались неудачей или не приносили столько удовольствия, сколько могли бы. Все ниженаписанное проговаривалось мной много раз на «ликбезе» программистов нашей студии (которые часто сознавались, что переход с «тинек» на «стмки» открывает столько возможностей, что попадаешь в ступор, не зная за что хвататься), поэтому смею надеяться, что польза будет всем. При прочтении подразумевается, что читающий — человек любопытный и сам смог найти и поставить Keil, STM32Cube и понажимать кнопки «ОК». Для практики я использую оценочную плату STM32F3DISCOVERY, ибо она дешевая, на ней стоит мощный процессор и есть куча светодиодиков.
Каждая статья рассчитана на «повторение» и «осмысление» где-то на один околовечерний час, ибо дом, семья или отдых…
Каждая статья рассчитана на «повторение» и «осмысление» где-то на один околовечерний час, ибо дом, семья или отдых…
+39
Как надо дружиться с STM32
3 мин
354KТуториал
Не, не, не, все не так!
Давайте дружиться с STM32 правильно!
Самая главная ошибка, сделанная автором — это неправильно выбранный инструментарий.
Давайте дружиться с STM32 правильно!
Самая главная ошибка, сделанная автором — это неправильно выбранный инструментарий.
+32
Arduino, модуль Nokia 5110 LCD и кириллица
3 мин
97KПонадобилось мне, для небольшого проекта на ардуино, выводить кое-какую информацию, естественно на экран, а не в консоль. Купил парочку LCD модулей а-ля Nokia 5110 с разрешением 84 х 48 пикселей. Библиотеку решил использовать от Adafruit, точнее две Adafruit-PCD8544-Nokia-5110-LCD-library и Adafruit-GFX-Library. Если кто с ними ещё не знаком – позволяют выводить не экран текст (шесть строк по 14 символов), отображать заранее подготовленные изображения, рисовать (линии, прямоугольники, круги и т.д.), ну и рисовать попиксельно. Скетч pcdtest отработал нормально, и я приступил к написанию своего
+31
Недорогие, маленькие, сетевые компьютеры — небольшой обзор
6 мин
96K«Чтоб ты жил в интересные времена!» — якобы старинное китайское проклятие.
Да, нам с вами повезло или «повезло» жить в действительно интересные времена (вариант — «в эпоху перемен»). Возможно, это на самом деле проклятие, особенно с точки зрения мифических древних китайцев. Однако факт остается фактом: то, что еще пара десятков лет назад казалось невозможным, сейчас доступно практически каждому. Особенно это заметно в нашей отрасли — информационные технологии и цифровая электроника развиваются просто какими-то совершенно фантастическими темпами. Функциональные возможности, быстродействие, миниатюрность и (относительная) дешевизна современных цифровых решений поражает воображение.
Еще совсем недавно сетевой компьютер размером меньше кредитки и стоимостью в несколько сотен рублей, пригодный для создания на его базе интересных самостоятельных проектов энтузиастами-одиночками с относительно невысоким уровнем знаний в области электроники и программирования, казался весьма отдаленной перспективой. И вот уже мы можем смело выбирать из десятка (как минимум) альтернатив! Давайте посмотрим, что сейчас можно приобрести буквально за несколько десятков долларов, чтобы построить вокруг этого нечто впечатляющее и даже, может быть, полезное.
Да, нам с вами повезло или «повезло» жить в действительно интересные времена (вариант — «в эпоху перемен»). Возможно, это на самом деле проклятие, особенно с точки зрения мифических древних китайцев. Однако факт остается фактом: то, что еще пара десятков лет назад казалось невозможным, сейчас доступно практически каждому. Особенно это заметно в нашей отрасли — информационные технологии и цифровая электроника развиваются просто какими-то совершенно фантастическими темпами. Функциональные возможности, быстродействие, миниатюрность и (относительная) дешевизна современных цифровых решений поражает воображение.
Еще совсем недавно сетевой компьютер размером меньше кредитки и стоимостью в несколько сотен рублей, пригодный для создания на его базе интересных самостоятельных проектов энтузиастами-одиночками с относительно невысоким уровнем знаний в области электроники и программирования, казался весьма отдаленной перспективой. И вот уже мы можем смело выбирать из десятка (как минимум) альтернатив! Давайте посмотрим, что сейчас можно приобрести буквально за несколько десятков долларов, чтобы построить вокруг этого нечто впечатляющее и даже, может быть, полезное.
+55
ИБ по-американски. Часть 4. Разбираемся с «подгонкой» и «перекрытиями» и завершаем этот обзор
11 мин
12KТуториал
*Оставьте свою работу на рабочем месте!*
Итак, нелёгкий путь по
Итак, в этой статье будет наконец-то поведано о выборе набора контролей безопасности, подгонке его под нужды конкретной организации и создании так называемых перекрытий «overlays», применимых вне масштабов отдельной организации.
Ссылки на предыдущие статьи:
ИБ по-американски. Часть 1. Что такое NIST 800-53 и как выглядят контроли безопасности?
ИБ по-американски. Часть 2. А можно поподробнее о NIST 800-53 и причём тут управление рисками?
ИБ по-американски. Часть 3. Что из себя представляет базовый набор контролей безопасности и как определять критичность информационных систем?
ИБ по-американски. Часть 4. Разбираемся с «подгонкой» и «перекрытиями» и завершаем этот обзор
+8
Для тех, кто выбрал красную пилюлю. Инструментарий Нео
9 мин
29KЗначимость любого массового явления измеряется резонансом и борьбой мнений. Так было всегда. Криптовалюта, которую в 2008-м придумал Сатоши Накамото, и ее флагман – биткоин, с каждым годом становится все популярнее. Первыми в биткоин, как в доллар цифрового века, уверовали шифропанки, криптоанархисты и бунтари всех мастей. Законы математики сильнее законов, придуманных людьми, решили они, и с энтузиазмом занялись строительством криптовалютной экосистемы. Затем потенциал перспективного платежного средства оценили IT-компании, сначала те, кому особо нечего было терять, а потом и гиганты. Dell, Expedia, Dish Networks, Overstock.com уже активно принимают платежи в биткоинах, Apple, Facebook, Pay Pal и такие социальные площадки как Reddit, им тоже симпатизируют, но пока занимают выжидательную позицию, подумывая при этом о введении собственной криптовалюты. Вместе с ростом популярности усиливалось беспокойство тех, кому развитие нового рынка могло сулить серьезные проблемы. Олдфаги же ярые противники, в роли которых выступают прежде всего государства и финансовые структуры, увидели в них угрозу финансовой стабильности, и в большинстве своем объявили новому и малопонятному явлению войну.
Словом, все крайне неоднозначно, и продолжать холивар на тему «За» или «Против» мы здесь не будем. Важно одно – рынок криптовалют существует и обрастает сопутствующими сервисами. Принимать его или нет – целиком выбор пользователя. Эта же статья для тех, ктовыбрал красную пилюлю свой выбор уже сделал и нуждается в утилите, которая не только поможет ориентироваться в мире криптовалют и следить за их курсом, но и играть на нем, оперативно обменивая одну криптовалюту на другую, или же выводить ее за вполне обычные, фиатные деньги.
Словом, все крайне неоднозначно, и продолжать холивар на тему «За» или «Против» мы здесь не будем. Важно одно – рынок криптовалют существует и обрастает сопутствующими сервисами. Принимать его или нет – целиком выбор пользователя. Эта же статья для тех, кто
+26
Обзор Mi Band от Xiaomi
7 мин
384KПохоже, я стал одним из первых русских обладателей трекера активности от Xiaomi [сяо ми] — Mi Band. Сегодня я сделаю анбоксинг браслета, расскажу о его функциях и личных впечатлениях. Он совместим с любым смартфоном на Android 4.3 и выше, и обладающим Bluetooth 4 LE.
Цена игрушки — 79 юаней, или приблизительно $15 USD. Девайс куплен в Китае с официального сайта производителя. Если вы еще не знаете, каких трудов стоит покупка, в конце обзора я дам ссылку. Я не занимаюсь продажей браслетов, не сотрудничаю с перекупщиками — вы и сами знаете, где можно заказать китайские девайсы.
Технические характеристики
Вот заявленные характеристики и возможности трекера и приложения для смартфона:
- Шагомер;
- Трекер сна;
- Умный будильник;
- Уведомление о поступающих звонках;
- Счётчик калорий;
- Работа в режиме ожидания до 30 дней;
- Разблокировка смартфона — для владельцев устройств с прошивкой MIUIv6 (и не только);
- Размер: 36х9х14 мм;
- Материал: пластик, алюминий;
- Влагозащита: IP67;
- Аккумулятор: 41mAh;
- Bluetooth-чипсет: Dialog BT4LE;
- А ещё некий «военный датчик»
+44
Дао программирования, часть 2
7 мин
21KПеревод
Часть 1
И сказал Великий Программист: «Хорошо написанная программа сама себе Рай. Плохо написанная программа сама себе Ад»
4.1
Программа должна быть лёгкой и гибкой, а подпрограммы её – словно нанизанные на нить жемчужины. Дух и цель программы должны быть сохранены на всём её протяжении. Кода не должно быть слишком много или слишком мало. Ни ненужных циклов, ни бесполезных переменных. Ни хаотичности, ни излишней структурированности.
Программа должна следовать правилу «наименьшего удивления». Это значит, что программа должна отвечать на действия пользователя способом, наименее удивительным для него.
Программа любой сложности должна работать как целое. Работа программы диктуется логикой, а не внешними признаками.
Если программа не удовлетворяет этим требованиям, это ведёт к беспорядку и путанице. Остаётся лишь переписать её заново.
Книга 4
Кодим
И сказал Великий Программист: «Хорошо написанная программа сама себе Рай. Плохо написанная программа сама себе Ад»
4.1
Программа должна быть лёгкой и гибкой, а подпрограммы её – словно нанизанные на нить жемчужины. Дух и цель программы должны быть сохранены на всём её протяжении. Кода не должно быть слишком много или слишком мало. Ни ненужных циклов, ни бесполезных переменных. Ни хаотичности, ни излишней структурированности.
Программа должна следовать правилу «наименьшего удивления». Это значит, что программа должна отвечать на действия пользователя способом, наименее удивительным для него.
Программа любой сложности должна работать как целое. Работа программы диктуется логикой, а не внешними признаками.
Если программа не удовлетворяет этим требованиям, это ведёт к беспорядку и путанице. Остаётся лишь переписать её заново.
+18
Прошивка и программирование ATtiny13 при помощи Arduino UPD 17.03.2016
3 мин
312KТуториал
+45
Удаленное управление VLC player’ом при помощи Arduino и Python
4 мин
15KДобрый день, уважаемые читатели.
Я давно интересовался Arduino, и вот однажды решился на покупку этой замечательной платформы. После недолгих поисков приобрел небольшой Arduino kit, в котором, помимо прочего, был ИК-датчик и пульт к нему. Изучив примеры из мануала, понял, что настало время придумать что-то свое. В итоге я решил сделать удаленное управление VLC player’ом, используя магию Arduino и Python3.
Я давно интересовался Arduino, и вот однажды решился на покупку этой замечательной платформы. После недолгих поисков приобрел небольшой Arduino kit, в котором, помимо прочего, был ИК-датчик и пульт к нему. Изучив примеры из мануала, понял, что настало время придумать что-то свое. В итоге я решил сделать удаленное управление VLC player’ом, используя магию Arduino и Python3.
+13
Педалируем Vim
5 мин
54KВ этом посте пойдёт речь о широко известной в узких кругах педали для переключения Vim из Normal mode в Insert mode и обратно. Вдохновившись примерами подобных поделок на просторах сети, я решил сделать свой вариант, с преферансом и поэтессами.
Сделать педаль, представляющую собой USB HID-устройство, при нажатии и удержании которой печатается
Заказать китайскую педаль PCsensor USB footswitch и запрограммировать её соответствующим образом.
Задача
Сделать педаль, представляющую собой USB HID-устройство, при нажатии и удержании которой печатается
i
, а при отпускании Esc
.Решение
Заказать китайскую педаль PCsensor USB footswitch и запрограммировать её соответствующим образом.
+70
Самодельный велокомпьютер, или как Arduino на улицу попал
10 мин
90KЗдравствуй, Хабр! Мне хотелось бы поделиться историей о создании велокопомпьютера своими руками. После покупки велосипеда я решил как-то фиксировать свой прогресс, но мобильные трекеры оказались не самым удобным решением, а из Китая ко мне уже летел заранее заказанный там BOGEER 823, что делало покупку на месте бессмысленной. Поэтому я решил попытаться сделать велокомп своими руками, заодно заложив в него основу для расширения: управление обвесом велосипеда (передний и задний свет, звонок).
+30
Hexapod-робот под управлением ROS
10 мин
139KРобот гексапод — это платформа, использующая для передвижения шесть ног. После просмотра множества видео в интернете, стало ясно, что очень интересно наблюдать за передвижением подобных роботов. И тут возникло желание сделать что-то похожее, но с одноплатным компьютером BeagleBone Black (далее BBB) на борту, потому что подобных проектов еще не было. Информацию о таких роботах было найти непросто, особенно, что касается программной составляющей. Некоторое время было непонятно с чего начинать, но вскоре было решено начать с изготовления конструктива робота — шасси и электронной составляющей, а затем заняться программированием того, что получилось.
+126
Phyode W/Me: спортивный браслет с «индикатором здоровья»
2 мин
18KРазного рода спортивных гаджетов и «умных» часов сейчас довольно много. Среди всего этого многообразия новые модели порой просто теряются. И разработчики делают все, чтобы их устройства выгодно отличались от остальных.
Кто-то цену снижает, кто-то добавляет разного рода «плюшки», которые могут пригодиться покупателю. Одним из таких, отличающихся от остальных, устройств является и Браслет W / Me от компании Phyode (кстати, название расшифровывается, как Phyode With Me, т.е. устройство, которое всегда с собой).
+3
Собираем лазерный проектор из доступных деталей
7 мин
88KUPD: Добавлены файлы платы с ЦАП на GitHub
Изначально я планировал сделать Лазерную арфу, но пока получился промежуточный результат — устройство, которое можно использовать как лазерный проектор — рисовать лазером различные фигуры, записанные в файлах формата ILDA. Я в курсе, что многие, кто берется за сборку лазерного проектора, в качестве устройства, управляющего гальванометрами (так и не понял как лучше перевести на русский сочетание “galvo scanner"), используют дешевые слегка модифицированные звуковые платы для компьютера. Я пошел иным путем, так как в конечном счете мне нужно будет полностью автономное устройство, которое может работать без компьютера.
Посмотрим из чего состоит мой лазерный проектор. Стоимость всех деталей составила около 8000 руб, из которых больше половины — это 70mW лазерный модуль.
Изначально я планировал сделать Лазерную арфу, но пока получился промежуточный результат — устройство, которое можно использовать как лазерный проектор — рисовать лазером различные фигуры, записанные в файлах формата ILDA. Я в курсе, что многие, кто берется за сборку лазерного проектора, в качестве устройства, управляющего гальванометрами (так и не понял как лучше перевести на русский сочетание “galvo scanner"), используют дешевые слегка модифицированные звуковые платы для компьютера. Я пошел иным путем, так как в конечном счете мне нужно будет полностью автономное устройство, которое может работать без компьютера.
Посмотрим из чего состоит мой лазерный проектор. Стоимость всех деталей составила около 8000 руб, из которых больше половины — это 70mW лазерный модуль.
- Гальванометры и драйверы к ним для отклонения луча лазера по осям X/Y
- 532нм 70mW лазерный модуль с питанием от 5В Dragon Lasers SGLM70
- Texas Instruments Stellaris Launchpad
- Самодельная плата с ЦАП AD7249BRZ
- Блок питания
+34
CARDIAC — компьютер из бумаги своими руками
4 мин
75KЕсли взять листок бумаги, ручку принтер, ножницы и клей…
+79
Информация
- В рейтинге
- Не участвует
- Откуда
- Россия
- Дата рождения
- Зарегистрирован
- Активность
Специализация
Security Engineer