Чому я не люблю синтетичні тести

Why I Dislike Synthetic Tests
Мені не подобається, коли хтось намагається використовувати створені вручну приклади коду для оцінки можливостей статичного аналізатора коду. Зараз на конкретному прикладі я покажу, чому негативно ставлюся до синтетичних тестів.

Не так давно Bill Torpey написав у своєму блозі замітку "Even Mo' Static", де розповів, як, на його погляд, показали себе інструменти Cppcheck і PVS-Studio при аналізі проекту itc-benchmarks. Проект itc-benchmarks — це static analysis benchmarks from Toyota ITC.

Мені не сподобалося, що після прочитання статті створюється враження, що аналізатори Cppcheck і PVS-Studio приблизно рівні у своїх можливостях. Зі статті випливає, що один аналізатор показує себе краще в одному, другий-в іншому, але в цілому їх діагностичні можливості схожі.

Я думаю, що це не так. Моя думка — наш аналізатор PVS-Studio в кілька разів могутніше, ніж Cppcheck. І взагалі, це не «думка», я знаю це!

Читати далі →

Замітка про спосіб налагодження блокувань в ядрі Linux

Всім привіт,
Дана замітка стосується одного практичного прийому, який я використовував при вирішенні задачі визначення місця в ядрі ОС Linux, де утримується певна спін-блокування (спін-лок). Дана проблема виникла досить спонтанно і, враховуючи складність ядра, могла б вимагати велику кількість часу для вирішення. Якщо Вам це цікаво, прошу читати далі...
Читати далі →

Виключення в UEFI додатку

Будь-якому програмісту, який знайомий з UEFI, відомо, що вбудованого механізму обробки виключень там немає. Мова йде про try/except блоках, які є розширенням Microsoft C/C + + компіляторів. Буває дуже корисно мати такий механізм і в повному обсязі користуватися тими перевагами, які він дає. Тому у даній статті мова піде саме про вирішення цієї проблеми. Також до статті додається повна реалізація механізму з його демонстрацією на базі UEFI програми. Порушені тільки 64х бітні процесори фірми Intel, і в обговоренні маються на увазі тільки вони. Реалізація механізму знаходиться в папці exceptions сховища git за адресою: https://github.com/anatolymik/machineries.git.

Читати далі →

Створення і тестування Firewall в Linux, Частина 2.3. Завершуємо Firewall. Обробляємо трафік в userspace

Ламаємо Android. Як глибока кроляча нора?

image
Мій перший Android телефон Galaxy Note N7000 був придбаний відразу після анонсу в жовтні 2011 року. Завдяки одному німецькому умільцю під ніком bauner, у мене була можливість використовувати останню версію CyanogenMod (нині LineageOS). До тих пір, поки півтора року тому телефон не помер від китайської автомобільної зарядки.
Заміну шукав довго і зупинився на Kyocera (так, вони і телефони випускають) KC-S701. Він відрізняється брутальним зовнішнім виглядом і відсутністю сенсорних кнопок. Про root доступ до телефону я тоді навіть і не замислювався, вважаючи, що нині кожен телефон тим або іншим чином має можливість отримання root. І знайдеться умілець, який зможе під нього портувати CyanogenMod. Я помилявся.
За півтора року було випущено всього одне оновлення — фікс падіння ядра від спеціально сформованого ping пакета. А Android KitKat вже рік тому був не першої свіжості. Root доступ на цей телефон так ніхто і не отримав, і ніякої інформації про нього не було. Зазначу, що теж саме залізо використовується в американській версії телефону Kyocera Brigadier E6782, в якому за замовчуванням активовано режим fastboot і немає обмеження на запуск " непідписаних ядер (саме запуск, а не прошивку, і тільки при використанні непропатченного bootloader'а, CVE-2014-4325) і є можливість завантажуватися в ці режими шляхом затиснення кнопок телефону. Стараннями Verizon (а може Kyocera?) версія Android на Brigadier була оновлена до Lollipop.
Отже, я вирішив розібратися з процесом отримання root на Android самостійно.
Читати далі →

Visual C++ for IoT Development: Прорив чи розчарування?

enter image description here
Як відомо світ не стоїть на місці і активно розвивається. Особливо в сфері IT і конкретно розробки ПО. Найважче в цій справі це встежити за всіма новинками і вихопити найбільш цінні і корисні з них. Ось і я тільки недавно натрапив на додаток до Visual Studio під назвою Visual C++ for IoT Development, яке існує вже майже рік. Потенційно — дуже корисна штука, але поки це більше яскраву назву, ніж даний Visual C++ для IoT. Давайте розберемося чому.
Читати далі →

Створення нативного watchface для Gear S3/S2


Що таке tizen і з чим його їдять найкраще напевно зможе розповісти гугл або будь-який інший бінг. А ми розглянемо як зробити native додаток написавши якомога менше нативного коду.

Читати далі →

Установка OpenCV в Windows для чайників та підключення бібліотеки Code Blocks

image
Дана стаття буде корисна чайникам новачкам у програмуванні, які хочуть почати вивчати технічне зір за допомогою бібліотеки OpenCV з повного нуля. Якщо Ви користувач Windows і не знаєте, що таке «командний рядок», або що означає «прилинковать бібліотеку», і при цьому Ви мрієте глибше вивчити роботу OpenCV та програмування «під залізо», перейти на багатоплатформовий, піти по шляху тру фахівця, то Вам сюди. У статті будуть наведені докладні інструкції з картинками, так що не зрозуміти, що до чого, буде просто неможливо!

Читати далі →

Приклад відновлення PostgreSQL таблиць за допомогою нової мега фічі pg_filedump



Дозвольте я розповім вам про одну класної фиче, яку ми з колегами з Postgres Pro нещодавно запилили в утиліті pg_filedump. Ця фіча дозволяє частково відновлювати дані з бази, навіть у разі, якщо база була сильно пошкоджена і інстанси PostgreSQL з такою базою вже не запустиш. Звичайно, хочеться вірити, що потреба в такому функціоналі виникає вкрай рідко. Але на всякий випадок щось подібне хотілося б мати під рукою. Читайте далі, і ви дізнаєтеся, як ця фіча виглядає у дії.
Читати далі →