Pull to refresh
5
@LeJayread⁠-⁠only

Инженер-программист

Send message

Как писать bash-скрипты надежно и безопасно: минимальный шаблон

Reading time8 min
Views66K

Скрипты на Bash. Как много в этом слове. Любому разработчику рано или поздно приходится их писать. Почти никто не скажет "да, я люблю писать bash-скрипты", и поэтому этой теме уделяют мало внимания.

Я не буду пытаться сделать из вас эксперта в Bash, а просто покажу минимальный шаблон, который поможет сделать ваши скрипты более надежными и безопасными.

Читать далее
Total votes 109: ↑109 and ↓0+109
Comments27

Фильтрация шума сигнала

Reading time7 min
Views40K

Фильтрация шума очень важная вещ, при работе с различными датчиками. Сигнал, получаемый от них всегда приходит с шумами, и важно уметь их грамотно отфильтровать. Качественная фильтрация шума способна уменьшить погрешность и увеличить качество измерения датчика. Этим мы сегодня и займемся.

Читать далее
Total votes 45: ↑40 and ↓5+35
Comments38

Разработка Tizen-приложений для Samsung Smart TV: полный гайд для Javascript-разработчиков

Reading time12 min
Views42K

Эта статья рассказывает про удивительные приключения JS-разработчиков в мире ОС Tizen. В ней будет и пошаговая настройка рабочего окружения, и подключение «умного» телевизора Samsung вместе с пультом, и, конечно, сам процесс разработки и публикации приложения для Tizen Store — с примерами и подводными камнями. 

Так что если вы разделяете наше мнение о том, что Javascript — лучший язык программирования, потому что он работает практически везде – от домашнего Smart TV до кораблей SpaceX, то добро пожаловать под кат.

Читать далее
Total votes 4: ↑4 and ↓0+4
Comments5

Embedded Linux в двух словах. Первое

Reading time9 min
Views55K

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

Платформой послужит плата BeagleBone Black с процессором производства Техасских Инструментов AM3358 и ядром Arm Cortex-A8, и, чтобы не плодить мигающие светодиодами мануалы, основной задачей устройства будет отправка смайлов в топовый чат, широко известного в узких кругах, сайта,  в соответствии с командами от смайл-пульта. Впрочем, без мигания светодиодами тоже не обошлось.

Читать далее
Total votes 47: ↑45 and ↓2+43
Comments15

Как проходит собеседование начинающего разработчика на С++: что нужно знать и как подготовиться

Reading time6 min
Views33K

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

В этом посте я собрал подборку понятий, которые у вас могут спросить на собеседовании на вакансию Junior С++ разработчика, и описал, к чему в принципе вам стоит готовиться. Предупрежден — значит вооружен. Вкратце о себе: меня зовут Турмец, я работаю в Яндексе, параллельно учусь в Школе Анализа Данных и занимаюсь ревью кода на курсе «Разработчик С++» в Практикуме. 

Мы опустим, как именно попасть на собеседование и предположим, что вы уже интересны компании как потенциальный работник и у вас уже назначена дата интервью. 

Поехали.

Читать далее
Total votes 46: ↑38 and ↓8+30
Comments39

Управление бесколлекторным двигателем по сигналам обратной ЭДС – понимание процесса

Reading time13 min
Views112K
Когда я начал разрабатывать блок управления бесколлекторным двигателем (мотор-колесом), было много вопросов о том, как сопоставить реальный двигатель с абстрактной схемой из трех обмоток и магнитов, на которой, как правило, все объясняют принцип управления бесколлекторными двигателями.

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

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

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


Читать дальше →
Total votes 21: ↑20 and ↓1+19
Comments18

STM32F3xx + FreeRTOS. Modbus RTU с аппаратным RS485 и CRC без таймеров и семафоров

Reading time9 min
Views26K
Всем привет! Относительно недавно, закончив ВУЗ, я попал в небольшую компанию, которая занималась разработкой электроники. Одна из первых задач с которой я столкнулся — необходимость в реализации Modbus RTU Slave протокола с использованием STM32. С грехом пополам я её тогда написал, однако этот протокол начал встречаться мне из проекта в проект и я решил зарефакторить и оптимизировать либу с использованием FreeRTOS.
Читать дальше →
Total votes 34: ↑33 and ↓1+32
Comments24

Указатели, ссылки и массивы в C и C++: точки над i

Reading time10 min
Views611K
В этом посте я постараюсь окончательно разобрать такие тонкие понятия в C и C++, как указатели, ссылки и массивы. В частности, я отвечу на вопрос, так являются массивы C указателями или нет.

Обозначения и предположения


  • Я буду предполагать, что читатель понимает, что, например, в 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; // Указатель можно разыменовать при помощи операции разыменовывания "*". Это операция возвращает тот объект, на который указывает указатель

Читать дальше →
Total votes 70: ↑48 and ↓22+26
Comments73

Коротко о nRF51822: Быстрый старт

Reading time10 min
Views59K

1. Вступление


Добрый день.

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

Однако есть нюанс — шаг вправо, шаг влево от стандартной подборки STM32/8, AVR и иже с ними или углубление в более сложные интерфейсы тех же самых STM32/8, и тишина. Лишь изредка на далеком-далеком форуме кто-то задает вопрос, который в итоге остается без ответа…

К чему я, собственно, веду. Не так давно возникла необходимость использования в проекте чипа nRF51822 компании Nordic Semiconductor с популярной ныне тематикой Bluetooth low energy (далее — BLE) на борту.

image

Чип оказался настолько популярным на информационную составляющую, что Google с горем пополам выдал 2-3 ссылки с описанием самого BLE стека и пару абстрактных статей касательно реализации стека у чипов Nordic и Texas instruments (CC2640). Матерые программисты скажут: «Берите примеры от компании Nordic (а их там к слову с избытком) и разбирайтесь». И это верный подход, если бы не одно но, касающееся, по большей части, начинающих программистов и желающих получить быстрый результат: обилие структур, многоуровневые библиотеки — все это прекрасно и логично, но избыточно для быстрого старта или маленького проекта. Все это увеличивает порог вхождения до неоправданных высот.
Читать дальше →
Total votes 24: ↑24 and ↓0+24
Comments19

Переключение контекста и простой вытесняющий планировщик для CortexM

Reading time19 min
Views18K

image

С каждым годом курсовые для моих студентов становятся все объемнее. Например, в этом году одним из заданий была разработка метеостанции, ведь только ленивый не делает метеостанции, а студенты они по определению не ленивые, поэтому должны её сделать. Её можно быстро накидать в Cube или собрать на Ардуино, но задача курсового не в этом. Основная задача — самостоятельно, с нуля разобраться с модулями микроконтроллера, продумать архитектуру ПО и, собственно, закодировать все на С++, начиная от регистров и заканчивая задачами РТОС. Кому интересно, здесь пример отчета по такому курсовому


Так вот, появилась небольшая проблема, а именно, бесплатный IAR позволяет делать ПО размером не более 30 кБайт. А это уже впритык к размеру курсового в неоптимизированном виде. Анализ кода студентов выявил, что примерно 1/4 часть их приложения занимает FreeRtos — около 6 кБайт, хотя для того, чтобы сделать вытесняющую переключалку и управлялку задачами хватило бы, наверное… да байт 500 причем вместе с 3 задачами (светодиодными моргунчиками).


Эта статья будет посвящена тому, как можно реализовать Очень Простой Планировщик(он же SST), описанный в статье аж 2006 года и сейчас поддерживаемый Quantum Leaps в продукте Qp framework.


С помощью этого ядра очень просто реализовать конечный автомат, и оно очень хорошо может использоваться в небольших проектах студентами (и не только), которые могут получить дополнительно 5 кБайт в свое распоряжение.


Я попробую показать как можно реализовать такой планировщик самому. Чтобы не сильно перегружать статью, рассмотрю переключение контекста на CortexM0 у которого нет аппаратного модуля с плавающей точкой.


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

Читать дальше →
Total votes 28: ↑26 and ↓2+24
Comments31

Простейшее профилирование памяти на STM32 и других микроконтроллерах

Reading time7 min
Views44K
«С опытом приходит стандартный, научный подход к вычислению правильного размера стека: взять случайное число и надеяться на лучшее»
— Jack Ganssle, «The Art of Designing Embedded Systems»


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

Как ни странно, но в абсолютном большинстве виденных мной «учебников для начинающих» по STM32 в частности и микроконтроллерам вообще нет, как правило, вообще ничего про такую вещь, как распределение памяти, размещение стека и, главное, недопущение переполнения памяти — в результате которого одна область перетирает другую и всё рушится, обычно с феерическими эффектами.

Отчасти это объясняется простотой учебных проектов, выполняемых при этом на отладочных платах с относительно жирными микроконтроллерами, на которых влететь в нехватку памяти, мигая светодиодом, довольно сложно — однако в последнее время даже у начинающих любителей мне всё чаще встречаются упоминания, например, контроллеров типа STM32F030F4P6, простых в монтаже, стоящих копейки, но и памяти имеющих единицы килобайт.

Такие контроллеры позволяют делать вполне себе серьёзные штуки (ну вот у нас, например, такая вполне себе годная измериловка сделана на STM32F042K6T6 с 6 КБ ОЗУ, от которых свободными остаются чуть больше 100 байт), но при обращении с памятью при работе с ними нужна определённая аккуратность.

Об этой аккуратности и хочу поговорить. Статья будет короткая, профессионалы ничего нового не узнают — но начинающим эти знания очень рекомендуется иметь.

Читать дальше →
Total votes 58: ↑57 and ↓1+56
Comments230

Сети для самых маленьких. Часть вторая. Коммутация

Reading time18 min
Views759K


После скучного рассказа о подключении к кошкам переходим к настройке сети. В этот раз темы будут для новичков сложные, для старичков избитые. Впрочем сетевым аксакалам едва ли удастся почерпнуть что-то новое из этого цикла. Итак, сегодня:
а) аккуратно впитываем теорию о коммутаторах, уровнях сетевой модели, понятии инкапсуляции и заголовков (не пугайтесь — еще не время),
б) собираем спланированную в нулевой части цикла сеть,
в) настраиваем VLAN'ы, разбираемся с access и trunk-портами и тегированными Ethernet-фреймами,
г) соотносим текущие знания со стеком протоколов TCP/IP и моделью OSI (да, наконец-то мы ее коснёмся).



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

Читать дальше →
Total votes 92: ↑88 and ↓4+84
Comments45

40 механик для социальных игр

Reading time4 min
Views29K
Разработчик игр Раф Костер (Raph Koster) составил всеобъемлющий список базовых правил, на которых основаны социальные отношения в играх (мультиплеер, параллельная игра и т.д.). Эти правила для разработчиков игры заменяют азбуку. Во многом они пересекаются с принципами игровой механики, которые уже обсуждались на Хабре.

Раф Костер приобрёл известность как создатель дизайна Ultima Online и креативный директор проекта Star Wars Galaxies, после чего основал собственную студию.
Читать дальше →
Total votes 102: ↑92 and ↓10+82
Comments33

Ступени инженера. Когда встаёт вопрос «Что дальше?»

Reading time6 min
Views14K
На хабре с завидным постоянством мелькают публикации о стадиях развития программистов. Порою серьёзные, порою юмористические.
Осмысливая их с оглядкой на картину в целом, я пришёл к выводу, что это весьма частный случай, и любой хороший (или не хороший — зависит от его способности к самокритике) специалист поднимается на несколько ступеней.
Число этих ступеней и их высота определяются многими параметрами: местом работы, отношением к этому месту и к профессии в целом, от личных качеств, от города и много ещё чего.
image
Для меня лично качественными прыжками становилась смена места работы. А начальство — наиболее важный фактор.

Под катом я расскажу об этом на примере моей собственной истории
Total votes 91: ↑79 and ↓12+67
Comments50

Культурные различия. Общение с американскими коллегами

Reading time2 min
Views11K
Я работаю в израильском отделении большой американской компании. Приходится много работать с индусами и американцами, даже есть группы, в которых часть людей сидит в другой стране.
Поэтому раз в год нам проводят семинары о культурных различиях. Как надо общаться с коллегами из других стран.

Мой первый рассказ — об американцах.

Вообще, они от нас (израильтян) в шоке. На семинаре показывали интервью с американкой, которая полгода работала в израильском офисе американской компании. Первое время ей казалось, что все агрессивны и грубы. Потом поняла, что это такая манера общения — люди повышают голос и перебивают друг друга во время дискуссий, люди могут сказать коллеге (и даже начальнику!), что он не прав и т.д.

С большим стыдом вспоминал, как я повторял «I disagree!» на последнем Face2face.

Американцы жаловались на израильтян так же, что те постоянно импровизируют, а израильтяне на американцев, что те постоянно тупо следуют инструкциям.

Кстати, сказать, как у нас «Та уборщица… какая? Ну, эфиопка ...» или «В соседнем отделе есть такой мужик умный, индус низенький такой» — тоже нельзя.
Надо объяснять о ком идет речь, не используя национальность, религию и сексуальные предпочтения.

Итак, правила для общения с американцами:
Читать дальше →
Total votes 320: ↑308 and ↓12+296
Comments338

47 принципов игровой механики

Reading time1 min
Views7.7K
Не секрет, что многие социальные сервисы внедряют у себя принципы игровой механики, хотя бы в виде статусов, рейтингов, голосований, виртуальных подарков. Аналогичные принципы применяются в офлайновом мире, где на игровой механике основаны маркетинговые акции, дисконтные программы. Игры вызывают эмоции, что делает отношения с пользователями более крепкими и эффективными. Среди экспертов существует мнение, что любой бизнес в будущем должен взять элементы игры.

Чтобы использовать игровой арсенал в полном объёме, нужно знать все имеющиеся методы и сочетать их друг с другом. Существующие термины, концепции и научные теории в данной области можно хотя бы напечатать в виде колоды карт и вытягивать их в случайной последовательности.

Компания SCVNGR занимается разработкой мобильных игр и создала именно такую колоду карт, которую можно позаимствовать и использовать в своих целях. Вот здесь приводится объяснение каждого из 47-ми терминов и примеры их использования: достижения, фиксированный интервал, поведенческий кураж, информационная теория фрагментарной информации (то есть что любую информацию для пользователей нужно выделять минимально возможными порциями — так она лучше усваивается), динамика достижений, совместная игра, кросс-ситуационные хит-парады, бесконечный геймплей, мысль о великой цели, бесплатный завтрак, лотерея, собственность и т.д.
Total votes 82: ↑64 and ↓18+46
Comments17

Будут ли айтишники править миром?

Reading time4 min
Views3.1K
Однажды у меня глюкнула мышь. Забавное электронное животное стало вести себя словно сильнопьяное: курсор на экране отзывался на руководящие движения вяло, замедленно и невпопад, словно я пытаюсь размешать застывающий бетон пластиковой трубочкой для сока.

Такое бывает, я знаю, – но природа этого глюка мне, тем не менее, непонятна. Несколько резких движений мышью не помогли — я чуть не вырвал её хвост из USB-разъёма, но курсор продолжал оставаться ватным.

Не зная, что ещё предпринять, я вынул провод из разъёма и вставил обратно. Не помогло. Тогда я снова вынул его оттуда, перевернул мыша, подул ему в отверстие оптического глаза и даже стёр прилипшую к его коротким пластиковым ножкам пыль. Затем вставил провод обратно в USB – и заработало. Даже чуть лучше, чем было – мыша стала бегать совсем как новая, только после покупки.

Читать дальше →
Total votes 22: ↑18 and ↓4+14
Comments34

Интернет магазин — 15000 евро за первый месяц

Reading time6 min
Views90K
В народе есть известная поговорка „Первый Блин Комом“, чего не могу сказать о своём свежем опыте интернет торговли. Скорее всего, это просто исключение подтверждающее правило, но, тем не менее, хочется рассказать о тех небольших выводах, что я сделал за последний месяц.

Итак, небольшая история о том, как можно довольно легко заработать за один месяц минимум 15 000 евро.

Мой профессиональный род деятельности — веб-разработка. Занимаюсь R&D в одной небольшой IT компании, пишу «навороченные» приложения для корпоративных интранетов и, в принципе, на жизнь не жалуюсь. Конечно, при таком раскладе хочется параллельно вести какой-нибудь интересный проект, чем неоднократно занимался в мире Open Source. Со временем, правда, захотелось на побочных проектах так же как-то зарабатывать, что с Open Source оказалось не так просто, как может показаться из статей на Хабре :) Потому и решил попробовать для себя что-то принципиально новое — открыть интернет магазин.

Читать дальше →
Total votes 517: ↑493 and ↓24+469
Comments389

Русский Наебизнес

Reading time2 min
Views14K
Десять дней назад я написал на Хабр небольшую статью, в которой поделился опытом создания и раскрутки небольшого интернет магазина. Написал, в первую очередь, в надежде найти единомышленников и коллег, а так же получить полезную критику для того, чтобы следующий проект был ещё успешнее и ещё лучше!

Несомненно, контакт был найден — завязалась личная переписка с многими умными людьми, поступали интересные предложения сотрудничества. Это очень круто, но всё равно, в будущем прежде чем я буду делиться с обществом опытом и идеями на Хабре — трижды это обдумаю.
Читать дальше →
Total votes 386: ↑355 and ↓31+324
Comments176

Микроэлектроника для космоса и военных

Reading time13 min
Views304K
Возможное, многие из вас думали после ситуации с Фобос-Грунтом — что такого особенного в микросхемах для космоса и почему они столько стоят? Почему нельзя поставить защиту от космического излучения? Что там за история с арестом людей, которые микросхемы экспортировали из США в Россию? Где все полимеры?

На эти вопросы я и попробую ответить в этой статье.

Disclaimer: Сведения получены из открытых источников и могут быть не вполне точными. Я лично с военной электроникой не работаю, а кто работает — те статьи писать не могут. Буду рад дополнить и исправить статью.
Читать дальше →
Total votes 477: ↑469 and ↓8+461
Comments265
1

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Registered
Activity