Effective Modern C++ by Scott Meyers

“If you’re an experienced C++ programmer and are anything like me, you initially approached C++11 thinking, “Yes, yes, I get it. It’s C++, only more so.” But as you
learned more, you were surprised by the scope of the changes. auto declarations, range-based for loops, lambda expressions, and rvalue references change the face of C++, to say nothing of the new concurrency features. And then there are the idiomatic changes. 0 and typedefs are out, nullptr and alias declarations are in. Enums should now be scoped. Smart pointers are now preferable to built-in ones. Moving objects is normally better than copying them.
– Effective Modern C++ by Scott Meyers

Обнаружение дедлока из шелл-скрипта

Задача: Обнаружим дедлок bash-скриптом и отдадим на выход exitcode 1.

Вос/произведем простейший дедлок, запустим ./ily.bin deadlock_off 1000000

ily.cpp:

Дедлок вычислим силами GDB – для этого подготовим следующий скрипт (futex_gdb_py), так как gdb поддерживает питон (через import gdb находим pthread_mutex_lock прямо в gdb)

команда x/3d показывает что им владеет процесс 20861
команда x/3d показывает что им владеет процесс 20860
команда thread 4 показывает что процесс 20860 ждет mutex2
команда thread 5 показывает что процесс 20861 ждет mutex1:

И, собственно сам скрипт bash, для простоты берём pid запущенного процесса по имени ily.bin:

Cortex-M3/M4 [Olimex STM32-P152] GCC + OpenOCD с PN2

Olimex STM32-P152

Среда разработки – Eclipse + GCC (исходный код G ++ Lite) / Atollic TrueSTUDIO + ST-Link/V2

(с) kenjia

Microsoft UI Automation

Каким образом програмно получить значение поля Tag из программы Pilot-BIM? Т.к. программа написана на dotNet, её GUI “подчиняется” модели автоматизации пользовательского интерфейса Microsoft.

Соответственно, берём UISpy и ищем наше поле:

Программа для запоминания ключей 部首

Программа Chi[tai]na предназначена для запоминания 214-ти китайских ключей (упрощённое письмо – chinese simplified).

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

github/chitai_na

ST STM32L152VBT6A support in PlatformIO

OLIMEX STM32-P152 board

JRE as Eclipse plugin

eclipse.ini:

UPD:
org.eclipse.justj.openjdk.hotspot.jre.full-22.0.1-linux-x86_64.tar.gz
org.eclipse.justj.openjdk.hotspot.jre.full-22.0.1-win32-x86_64.tar.gz

Old links:
org.eclipse.justj.openjdk.hotspot.jre.full-19.0.2-linux-x86_64.tar.gz
org.eclipse.justj.openjdk.hotspot.jre.full-19.0.2-win32-x86_64.cab

Creating WDM and driver call

Let’s create a WDM driver and some application to call it (e.g. MFC)

WDM’s source.c

Boost.Log: v2s_mt_nt6 doesn’t match v2s_mt_nt62

При возникновении ошибки

скорее всего, две библиотеки используют одни и те же директивы (#define).
Решение: просто поместите #include файла Boost выше.

Күп агымлы TCP-сәрвәр

Гади консольле TCP-клиент hәм Linux-сокетларын куллана торган сәрвәр.
Сораучы ягы боерык юлыннан өч зурлык ала:

  1. Сораучының исеме
  2. Портның номеры (әйтик, 6669)
  3. Тоташу вакытының озынлыгы (секундаларда)

Сораучы ягы бирелгән вакыт озынлыгы белән сәрвәргә тоташа да, hәм менә мондый форматта сәрвәргә юл җибәрә:
[yyyy-mm-dd hh:mm:ss.ms] “сораучының исеме”

Сәрвәр боерык юлыннан бер генә зурлык ала:
1) Портның номеры

Эшләтеп җибәргәннән соң сәрвәр бирелгән портны тыңлый, сораучылардан белдерүләр ала hәм аларны беркетмәгә (log.txt) яза.

Сораучының hәр тоташуы аерым агымда эшкәртелә.
hәрбер белдерү аерым юлга языла.

Сәрвәр бер үк вакытта берничә сораучы белән эшли һәм log.txt беркетмәгә язу мөмкинлеген тәэмин итә.

Мәсәлән, сәрвәрне эшләтеп җибәрәбез:
tcp_th_srv 3000

Сораучыларны җибәрәбез:
clnt80 Name1 3000 1
clnt80 Name2 3000 2
clnt80 Name3 3000 3

Ул чагында log.txt беркетмәдә якынча шундый юлларны күрербез (сораучыларны эшләтеп җибәрү вакытына бәйле булачак)
[2018-09-19 13:50:01.000] Исем1
[2018-09-19 13:50:02.000] Исем1
[2018-09-19 13:50:02.010] Исем2
[2018-09-19 13:50:03.000] Исем1
[2018-09-19 13:50:03.010] Исем3
[2018-09-19 13:50:04.000] Исем1
[2018-09-19 13:50:04.010] Исем2
[2018-09-19 13:50:05.000] Исем1
[2018-09-19 13:50:06.000] Исем1
[2018-09-19 13:50:06.010] Исем2
[2018-09-19 13:50:06.020] Исем3

һәм башка шундыйлар (һ.б.ш.)

Определение точки выброски парашютистов

Одним из фундаментальных навыков обеспечивающих безопасность выполнения прыжков с парашютом является умение теоретического расчета парашютирования
Траектория перемещения парашютиста после отделения от самолета состоит из двух частей: свободного падения и снижения под куполом парашюта.
После раскрытия парашюта парашютист приобретает, кроме скорости парашютирования, также и скорость ветра, с которой его будет относить по горизонту. Расстояние на земле между проекцией точки раскрытия парашюта и точкой приземления нейтрального (круглого) купола называется относом парашютиста по ветру.
На практике при расчете точки выброски в парашютных видах деятельности применяются среднеарифметический способ и практический способ (пристрелка).

\[ t_{ch}(\text{Время снижения})\frac{H(\text{Высота открытия})}{V_{CH}(\text{Скорость снижения})}=\frac{1000}{5}=200с \]

Все они приводят к определению расчетной точки, в которой нужно покинуть летательный аппарат, чтобы прийти на нейтральном куполе в намеченный район цели, а также с учетом возможной отцепки основного купола (см. рисунок).
Нейтральный купол – круглый парашют, не имеющий собственной горизонтальной скорости и снижающийся со скоростью 5 м/с.
Траектория нейтрального купола (ТНК) – предполагаемая глиссада по которой нейтральный купол снизится от точки выброски до точки приземления
(см рисунок).
Для среднеарифметического метода расчета точки начала выброски необходимы следующие данные:

  • среднее направление и средняя скорость ветра, получаемые от метеослужбы;
  • скорость полета летательного аппарата на выброске парашютистов (обычно 140 км/ч).

Например: высота прыжка 4000 м, высота открытия основного парашюта Н=1000 м, средняя скорость ветра VCР=8 м/c, средняя скорость снижения парашюта VСН=5 м/c.
Зная высоту открытия парашюта и среднюю скорость снижения, определим время снижения:

\[ L(\text{Относ})=t_{CH}(\text{Время снижения}) \times V_{CP}(\text{Скорость ветра}) = 200 \times 8 = 1600м \]

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

  1. Применение методов определения точки выброски парашютистов позволяет увеличить безопасность выполнения прыжков с парашютом.
  2. Особое внимание необходимо уделить практическому выполнению теоретического расчета точки выброски при прыжках с парашютом.
  3. Отдельным вопросом стоит обучение, подготовка инструкторского состава с точки зрения методологии и практики преподносимых знаний и умений определения точки выброски для начинающих спортсменов парашютистов.
Insert math as
Block
Inline
Additional settings
Formula color
Text color
#333333
Type math using LaTeX
Preview
\({}\)
Nothing to preview
Insert