Search
Write a publication
Pull to refresh
268
0
Виталий Игонин @persei

Engineering Manager

Send message

FreeRTOS: мьютексы и критические секции

Reading time3 min
Views74K

Здравствуйте. Это заключительная статья о многопоточном окружении FreeRTOS в которой я расскажу про мьютексы и критические секции.
Ссылки на предыдущие части:

Читать дальше →

FreeRTOS: межпроцессное взаимодействие

Reading time8 min
Views83K

Здравствуйте. В данной статье я постараюсь описать метод межпроцессного обмена данными и синхронизацию с эвентами.
Ссылки на остальные части:
FreeRTOS: введение.
FreeRTOS: мьютексы и критические секции.
Читать дальше →

FreeRTOS: введение

Reading time5 min
Views208K

Здравствуйте. В короткой серии постов я постараюсь описать возможности, и подходы работы с одной из наиболее популярной и развивающейся РТОС для микроконтроллеров – FreeRTOS. Я предпологаю базовое знакомство читателя с теорией многозадачности, о которой можно почитать в одном из соседних постов на Хабре или ещё где-то.
Ссылки на остальные части:
FreeRTOS: межпроцессное взаимодействие.
FreeRTOS: мьютексы и критические секции.
Читать дальше →

Git Wizardry

Reading time17 min
Views452K
1 Введение


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

Данный же топик задумывался как непосредственное введение в работу с git, нечто
среднее между tutorial и обобщенной справкой, до которого все же рекомендуется
прочитать упомянутое выше введение. Сознательно избегаются технические
подробности работы git, употребляются только общие для СКВ термины и
ограничивается список упоминаемых команд.

Читать дальше →

Официальная презентация языка Google Dart

Reading time3 min
Views6K
Сегодня компания Google официально представила новый язык структурного веб-программирования Dart, который позволит создавать быстрые и высокопроизводительные веб-приложения. При всей своей простоте для написания маленьких скриптов, с помощью Dart можно будет создавать и сложные модульные веб-приложения, использовать библиотеки, дебаггеры, редакторы кода и другой инструментарий.

На официальном сайте представлен технический обзор языка (перевод на русский от azproduction), спецификации (PDF), список библиотек.

Как объяснялось во внутренней переписке компании, Dart позиционируется в качестве замены/альтернативы Javascript, страдающего от «фундаментальных» изъянов, которые невозможно исправить путём эволюционного развития.
Читать дальше →

Внедрению LTE в России приподнят шлагбаум, однако при этом придавили WiMAX и оттёрли Tele2

Reading time4 min
Views2.3K
На прошлой неделе настало событие важное (и даже жизнеопределяющее, готовое возыметь эффект на годы вперёд): решение Государственной комиссии по радиочастотам (ГКРЧ), принятое на заседании в четверг 8 сентября 2011 года. Если прочесть краткий отчёт о заседании, выложенный на сайте Минсвязи на следующий день (9 сентября), то явствуют вот какие основные новости:
  • В России будет не более семи операторов LTE, для которых выделена полоса частот от 791 до 862 МГц.
     
  • Операторы LTE будут определены на конкурсной основе: четверо победителей конкурса получат право построить двухдиапазонные сети, а трое остальных — однодиапазонные в верхнем диапазоне.
     
  • Выделение частот обусловлено обязательством оператора совершить конверсию частоты (за свой счёт убрать из этого диапазона передатчики — например, военные), взамен оператору гарантируется право эксплуатировать диапазоны, которые он очистил.
     
  • О возможности употребления LTE в полосах радиочастот действующих операторов было принято решение завершить проведение исследований и представить в I квартале 2012 года в ГКРЧ предложения. То есть такого LTE не будет ещё, по меньшей мере, полгода.
Если на этом месте остановиться, то можно немного (и небезосновательно) порадоваться тому, что дело наконец подвинулося с мёртвой точки; однако достаточно подняться и двинуться дальше, читая сообщения в прессе и задаваясь даже самыми простыми вопросами («Кому выгодно?», «Как это будет?»), как наткнёшься на ряд неприятных новостей и немного противоречивых истолкований произошедшего.

Читать дальше →

Практика радиосвязи, как она есть — взгляд изнутри

Reading time5 min
Views16K
После прочтения «свежеопубликованной» практики радиосвязи, как она есть, возникли мысли по поводу того, что стоит поделиться своим опытом радиолюбительской связной практики.

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

УКВ связь (до 1 ГГц), без извращении (использование отражения радиоволн от метеорных потоков, луны и тд.), выглядит просто: дальность связи прямо зависит от мощности передатчика и высоты подвеса антенны.
КВ связь — более неординарное явление, поскольку радиоволна, в зависимости от условии, может несколько раз огибать землю, а может и «интермодулироваться» грозовыми разрядами, если на трассе между собеседниками идет гроза. А может, опять-таки в зависимости от условий (а в частности, от направления антенны), войти под критическим углом в ионосферу и уйти в бесконечно далекий космос…
Читать дальше →

Портрет Нуба

Reading time17 min
Views6.5K
Чем старше я становлюсь, тем менее важной становится запятая. Пусть читатель сам решает, где ему ставить паузы. — Elizabeth Clarkson Zwart


Примерно так я комментировал свой код двадцать лет назад (внимание, чуток драмы):

/*
 * Когда мы дойдем сюда, наша структура уже будет готова. 
 * К тому же, мы создали достаточно большой буфер, в который 
 * можно засунуть все входные данные, плюс есть немного места
 * про запас. Я не уверен, понадобится ли оно, но хуже не будет. 
 * Теперь нам надо обновить счетчик, предполагая, что клиент 
 * уже прочитал значение, но еще не использовал его. Сначала 
 * я хотел переложить обязанность инкремента на плечи вызывающего
 * кода. С другой стороны, это означает, что инкремент нужно делать всем, 
 * поэтому я решил, что будет лучше перенести его сюда. Но мы можем 
 * пересмотреть это решение позже, если вдруг кому-то из внешних функций 
 * захочется делать инкремент самому.
*/
counter++; // инкрементировать счетчик для потребляемого значения

/*
 * Теперь нужно просмотреть весь буфер с данными. Для этой 
 * операции нам понадобится еще один индекс, иначе перед 
 * выходом из функции мы потеряем начальное значение. 
 * Я хотел назвать эту переменную ‘ref’, потому что в некотором
 * смысле мы будем обращаться с ней как со ссылкой на данные. 
 * В конце концов я пришел к выводу, что самым лучшим  
 * названием для нее будет ‘pos’. Если что, я не против обсудить
 * это решение.
*/
char* pos = buffer; // начинаем наш обход данных

/*
Теперь, мы...
*/


Ну что, узнаете? А должны! Если быть предельно невежливым, весь код выше написал нуб. (Между прочим, если вы не знаете, кто такой нуб, значит вы — нуб).

Читать далее

Как студенту-фрилансеру стать руководителем

Reading time5 min
Views4.8K
Несколько лет назад я был студентом без денег, которому учеба в университете казалась скучной и бессмысленной (и с тех пор моё мнение не изменилось). Так что, учебу я бросил и стал фрилансить. Спустя 6 лет, пишу этот текст, чтобы определить самые важные идеи, которые сделали меня сначала хорошо оплачиваемым “кадром”, а затем руководителем небольшой команды разработки веб-сервисов.

Не будьте специалистом. Учитесь действовать

Главный ресурс для развивающегося человека вовсе не знания и опыт. И даже не деньги или связи.

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

Накопление знаний и опыта есть линейный процесс, а потому не самый эффективный. У специалиста всегда есть четкий потолок зарплаты, который практически не возможно преодолеть (здесь не выйдет даже постоянного линейного роста).
Читать дальше →

Ловим горизонт с Arduino

Reading time3 min
Views78K
В комментариях поста про создание трех-степенной платформы на базе аппаратной платформы Arduino поднимался вопрос управления не только с компьютера, поэтому было решено разобраться с работой акселерометра MMA7260, который можно свободно приобрести в Гонконге на Ebay.
image
Читать дальше →

Создание CRUD приложения на Symfony 2

Reading time10 min
Views43K

Symfony 2.0


Недавно вышедшая версия фреймворка Symfony 2 включает в себя много интересных фич. В данной статье хочу рассказать про создание CRUD приложений — очень часто встречающейся задачи создания веб-интерфейса для создания, чтения, обновления и удаления записей в БД.
Далее

Как MySQL оптимизирует ORDER BY, LIMIT и DISTINCT

Reading time16 min
Views15K
Есть задачи, которые в рамках реляционных СУБД не имеют универсальных решений и для того чтобы получить хоть какой-то приемлемый результат, приходится придумывать целый набор костылей, который ты потом гордо называешь “Архитектура”. Не так давно мне как раз встретилась именно такая.

Предположим, имеется некоторые сущности А и Б, связанные между собой по принципу One-to-Many. Количество экземпляров данных сущностей достаточно велико. При отображении сущностей для пользователя необходимо применить ряд независимых критериев, как для сущности А так и для сущности Б. Причем результатом применения критериев являются множества достаточно большой мощности — порядка нескольких миллионов записей. Критерии фильтрации и принцип сортировки задается пользователем. Как (я бы ещё спросил: Зачем им миллионы записей на одном экране? — но говорят надо) показать все это пользователю за время 0 секунд?
Решать такие задачи всегда интересно, но их решение сильно зависит от СУБД, под управлением которой крутится твоя база данных. Если у тебя в рукаве козырной туз в виде Oracle, то есть шанс, что эти костыли он подставит сам. Но спустимся на землю — у нас есть только MySQL, так что придется почитать теорию.
Далее ...

Знакомство с Symfony 2

Reading time7 min
Views101K
Выход Symfony 2 показался мне достаточно веской причиной чтобы наконец-то найти время и посмотреть что же из себя представляет один из самых популярных PHP-фреймворков в мире. Своё знакомство с ним я и описал в данной заметке. Так как это мой первый опыт работы с Symfony буду рад если заметите какие-то ляпы или недочёты и сообщите мне о них.
Читать дальше →

FPV

Reading time4 min
Views136K
Эта статья для тех, кто с детства мечтает летать как птица. Сразу оговорюсь, в реале Вы не полетите, но чувства будут очень близки. Итак, речь идет о FPV (first person view)-полетах. FPV — это новое движение в авиамоделизме, его суть заключается в управление моделью самолета через установленную на борту камеру. Картинку с борта самолета Вы получаете в реальном времени и видите через очки “виртуальной реальности”. Также, на очках установлен датчик поворота головы и камера на самолете поворачивается вслед за поворотами Вашей головы. У вас появляется неподдельное ощущение реального присутствия. А самолетом Вы управляете по радио каналу. Со стороны это выглядит примерно так:


А вот как выглядит изнутри:

Читать дальше →

Освобождаемся от целей

Reading time3 min
Views2.5K
Продолжаю серию переводов статей о минимализме от Лео Бабауты.

«Когда мы не переживаем о происходящем, все встает на свои места. Мир принадлежит тем, кто не переживает. Если же напрягаться, то завоевать мир не удастся.» — Лао Цзы.

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

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

Я знаю это, потому что это то, во что я верил, чем жил и о чем писал долгое время.

До недавнего времени.

Читать дальше →

Visual Studio 2010 в таскбаре Windows 7

Reading time2 min
Views1.2K
Недавно вышел новый Eclipse Helios, среди нововведений которого есть поддержка таскбара Windows 7 и дока Mac OS X. В частности, Эклипс может отображать прогресс сборки, наличие ошибок и предупреждений. К хорошему быстро привыкаешь, и мне захотелось иметь нечто подобное в Visual Studio 2010. Подходящего расширения в сети не нашлось, так что пришлось делать его самому.
Что из этого вышло, читайте дальше...

Вирус на ровном месте

Reading time4 min
Views21K
Эта история произошла со мной прошедшей ночью.

Время близилось к полуночи, когда я лазал по просторам и глубинам интернета в поисках текста одной красивой украинской песни. Введя в Яндекс поисковый запрос, открыл несколько табов с результатами поиска. Винт немножко потрещал, а потом выскочило подряд несколько окошек «Антивируса Касперского», с уведомлением что некий «xBXJ.exe» и несколько подобных файлов перемещены в группу «Слабые ограничения». Вслед за этим мелькнуло на долю секунды черное окошко, какое обычно выскакивает при запуске консольных программ.

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

Читать дальше →

Vuurmuur — боевые коты на страже вашей сети

Reading time2 min
Views15K
image

Vuurmuur — за таким «кошачьим» именем скрывается довольно мощная GUI надстройка для iptables. Основным отличием от других iptables-надстроек является наличие консольного интерфейса написанного на Ncurses. Поэтому администрирование всё также легко возможно посредством SSH или консоли. Vuurmuur умеет работать с шейпингом, поддерживает функции мониторинга трафика, ведёт отдельные логи, прекрасно работает как на 2.4 так и на 2.6 ядрах и даже «говорит» на русском.

Буквы, картинки, мультики...

Объединение сетевых интерфейсов в linux

Reading time2 min
Views119K
Так уже получилось что писал статью для howtoforge. И естественно тут же все это оказалось в русском варианте на других сайтах. Только вот незадача: в статье были допущены неточности, и публицисты с других «сайтов» вставили as-is.
Хочу попробовать исправить это оплошность.
Для чего это надо?
Объясню на примере: был у меня фтп с 2мя сетевыми картами, но использовалась одна. Со временем весь 1Гб/с начал забиваться по вечерам — и людям плохо, и у меня iowait растет. Но есть вторая сетевая карта. Так вот такое объединение позволит использовать 2 (3, 4, 5...) как одну с 2Гб/с.
Читать дальше →

Information

Rating
Does not participate
Location
Ульяновск, Ульяновская обл., Россия
Works in
Date of birth
Registered
Activity

Specialization

Engineering Manager
Lead
JavaScript
Python
PostgreSQL
Docker
Git
OOP
SQL
Django
Celery
React