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

Engineering Manager

Send message

Биполярные транзисторы. For dummies

Reading time10 min
Views944K

Предисловие


Поскольку тема транзисторов весьма и весьма обширна, то посвященных им статей будет две: отдельно о биполярных и отдельно о полевых транзисторах.

Транзистор, как и диод, основан на явлении p-n перехода. Желающие могут освежить в памяти физику протекающих в нем процессов здесь или здесь.

Необходимые пояснения даны, переходим к сути.
Читать дальше →
Total votes 76: ↑73 and ↓3+70
Comments26

Диоды. For dummies

Reading time8 min
Views167K

Введение


Диод — двухэлектродный электронный прибор, обладает различной проводимостью в зависимости от направления электрического тока. Электрод диода, подключённый к положительному полюсу источника тока, когда диод открыт (то есть имеет маленькое сопротивление), называют анодом, подключённый к отрицательному полюсу — катодом. (wikipedia)

Все диоды можно разделить на две большие группы: полупроводниковые и неполупроводниковые. Здесь я буду рассматривать только первую из них.

В основе полупроводникового диода лежит такая известная штука, как p-n переход. Думаю, что большинству читателей о нем рассказывали на уроках физики в школе, а кому-то более подробно еще и в институте. Однако, на всякий случай приведу общий принцип его работы.
Читать дальше →
Total votes 124: ↑122 and ↓2+120
Comments42

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

Reading time3 min
Views69K

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

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

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

Reading time8 min
Views79K

Здравствуйте. В данной статье я постараюсь описать метод межпроцессного обмена данными и синхронизацию с эвентами.
Ссылки на остальные части:
FreeRTOS: введение.
FreeRTOS: мьютексы и критические секции.
Читать дальше →
Total votes 29: ↑27 and ↓2+25
Comments4

FreeRTOS: введение

Reading time5 min
Views199K

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

Git Wizardry

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


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

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

Читать дальше →
Total votes 89: ↑66 and ↓23+43
Comments76

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

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

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

Как объяснялось во внутренней переписке компании, Dart позиционируется в качестве замены/альтернативы Javascript, страдающего от «фундаментальных» изъянов, которые невозможно исправить путём эволюционного развития.
Читать дальше →
Total votes 101: ↑86 and ↓15+71
Comments55

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

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

Читать дальше →
Total votes 65: ↑55 and ↓10+45
Comments73

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

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

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

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

Портрет Нуба

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


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

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

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

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


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

Читать далее
Total votes 235: ↑163 and ↓72+91
Comments171

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

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

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

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

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

Накопление знаний и опыта есть линейный процесс, а потому не самый эффективный. У специалиста всегда есть четкий потолок зарплаты, который практически не возможно преодолеть (здесь не выйдет даже постоянного линейного роста).
Читать дальше →
Total votes 359: ↑260 and ↓99+161
Comments197

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

Reading time3 min
Views77K
В комментариях поста про создание трех-степенной платформы на базе аппаратной платформы Arduino поднимался вопрос управления не только с компьютера, поэтому было решено разобраться с работой акселерометра MMA7260, который можно свободно приобрести в Гонконге на Ebay.
image
Читать дальше →
Total votes 58: ↑57 and ↓1+56
Comments72

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

Reading time10 min
Views43K

Symfony 2.0


Недавно вышедшая версия фреймворка Symfony 2 включает в себя много интересных фич. В данной статье хочу рассказать про создание CRUD приложений — очень часто встречающейся задачи создания веб-интерфейса для создания, чтения, обновления и удаления записей в БД.
Далее
Total votes 30: ↑29 and ↓1+28
Comments30

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

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

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

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

Reading time7 min
Views101K
Выход Symfony 2 показался мне достаточно веской причиной чтобы наконец-то найти время и посмотреть что же из себя представляет один из самых популярных PHP-фреймворков в мире. Своё знакомство с ним я и описал в данной заметке. Так как это мой первый опыт работы с Symfony буду рад если заметите какие-то ляпы или недочёты и сообщите мне о них.
Читать дальше →
Total votes 50: ↑40 and ↓10+30
Comments28

FPV

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


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

Читать дальше →
Total votes 258: ↑255 and ↓3+252
Comments165

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

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

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

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

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

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

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

Читать дальше →
Total votes 111: ↑95 and ↓16+79
Comments53

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

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

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

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

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

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

Читать дальше →
Total votes 93: ↑61 and ↓32+29
Comments224

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

Reading time2 min
Views14K
image

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

Буквы, картинки, мультики...
Total votes 120: ↑107 and ↓13+94
Comments73

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