Поки у всьому світі обговорюють 89-ту церемонію вручення нагород премії «Оскар» і складають різні рейтинги акторів і їх костюмів, ми вирішили підготувати оглядову статтю в IT-сфері. Мова піде про найбільш цікавих помилках, допущених у проектах з відкритим вихідним кодом в 2016 році. Цей рік був примітний тим, що наш аналізатор PVS-Studio став доступний і в операційних системах, заснованих на Linux. Представлені помилки напевно вже виправлені, і кожен читач може переконатися в серйозності помилок, які допускають розробники.

Читати далі →

Для оцінки якості роботи нашого аналізатора, а також з метою популяризації методології статичного аналізу, ми регулярно перевіряємо на наявність помилок проекти з відкритим вихідним кодом і пишемо про це статті. Не став винятком і минулий 2016 рік, який примітний ще й тим, що це був час своєрідного «дорослішання» C# аналізатора. PVS-Studio отримав значну кількість нових C# діагностик, покращений механізм роботи з віртуальними значеннями (symbolic execution) і багато іншого. За результатами проведеної нашою командою роботи, я склав своєрідний хіт-парад найбільш цікавих помилок, виявлених у проектах З# в 2016 році.

Читати далі →

Вітаю всіх. У сьогоднішній статті мова піде про те, як можна реалізувати власний високорівневий API в керованому коді для роботи з пристроями друку, від встановлення нового монітора друку в системі і до отримання обробленого драйвером пристрою друку документа з порту принтера.

Як і в минулий раз, стаття буде корисна для ознайомлення розробникам молодшого та середнього ланки. В процесі вивчення матеріалу, Ви дізнаєтеся як можна звертатися до низькорівневим DLL WinAPI в C# з допомогою P/Invoke, як встановити, налаштувати і видалити з системи монітори друку, драйвер принтера, сам пристрій друку, відкрити і зв'язати порт для перенаправлення вхідних даних з пристрою друку на монітор, познайомитеся з ключовими моментами застосування маршалирования. Так само ми на практичному прикладі розберемося, як за допомогою нашого API можна зручно маніпулювати пристроями друку в системі, дізнаємося, як можна перехопити оброблені дані після друку принтера і, наприклад, відправити їх на сервер.

Читати далі →

останнім часом на Хабре з'являється досить багато статей про Tarantool — базу даних та сервер додатків, який використовується в Mail.Ru Group, Avito, Yota на різних високонавантажених проектах. І ось, коли в маленькому стартапі, який я іноді консультую, виникла необхідність поділу прекрасного, але, на жаль, монолітного програми на микросервисы, я подумав: а чим ми гірше за інших компаній? — і вирішив подивитися в бік Tarantool. Однак, на відміну від більшості компаній, де використовується Tarantool, в нашому випадку розробка проекту ведеться в Visual Studio на Windows. Передбачається, що навіть з переходом на микросервисную архітектуру більшість микросервисов буде написано на мові C#. А Tarantool… Варто зайти на офіційний сайт і відразу розумієш: Tarantool навіть встановити на Windows проблематично, так як на цю операційну систему він не портований. Як я боровся з такими складнощами, для якого саме микросервиса вибрав Tarantool і як ви можете використовувати Tarantool у своїх .NET-проектах, я розповім в цій статті. А поки спойлер — практично всі труднощі переборні, і мій досвід можна без сумнівів назвати позитивним. Наприклад, на те, щоб завантажити і запустити Tarantool, а потім зробити до нього запит з коду на мові C#, у мене пішло менше десяти хвилин. І я покажу вам, як це зробити!
image
Дана стаття являє собою туторіал, що описує роботу з Tarantool як таку. Тут немає опису проекту, побудованого на Tarantool, або порівняння Tarantool з іншими продуктами (статей на цю тему і так вже написано досить багато). Матеріал народився як спроба відповісти на запитання: а що б я хотів прочитати, коли тільки починав працювати з Tarantool. Але спочатку трохи розповім, для чого ми, власне, Tarantool застосовуємо в реальному житті.
Читати далі →

Інкрементальний аналіз в PVS-Studio: тепер і на складальному сервері


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

Читати далі →

Агресивна економія енергії при роботі від батареї на Windows


Як володар старого ноутбука з напівживий батареєю я сильно стурбований продовженням часу його використання без харчування. Знаючи про те, що в Windows є потужний інструмент для збереження енергії, я зайнявся тим, щоб максимально зручно його використовувати. Результатами я і хочу з вами поділитися.
Читати далі →

Mahou — чарівний перемикач розкладок

Як я створив першу функцію
Все почалося з того що я захотів програмувати на C#(до створення цієї програми у мене було майже ніяких знань про C#), і була одна програма, яка не працювала так, як я хотів (Punto Switcher) довго-довго я шукав до неї альтернативи і ненадовго зупинився на dotSwitcher подобалася вона мені… Але через деякий час я вирішив що їй не вистачає функціоналу і вирішив подивитися вихідний код, подекуди дещо як я розібрався як все працює, але більше всього не розумів одну річ — WinAPI, і почав z шукати інформацію по функціях використовуються в dotSwitcher і потроху я починав запам'ятовувати й розуміти сенс всього цього чарівництва (так мені тоді здавалося).
Читати далі →

Повторна перевірка SharpDevelop: що нового?

Інструмент PVS-Studio постійно вдосконалюється. При цьому найбільш динамічно в даний час розвивається аналізатор C# код: у 2016 році в нього було додано дев'яносто нових діагностичних правил. Ну а найкращим показником якості роботи аналізатора є виявлені ним помилки. Завжди цікаво, а також досить корисно, проводити повторні перевірки великих відкритих проектів, порівнюючи результати. Сьогодні я зупинюся на повторній перевірці проекту SharpDevelop.

Читати далі →

Windows Performance Station або як я вчив комп працювати ефективно

image

Здрастуйте, шановні читачі! Ось я і дістався до Хабра і хочу повідати історію свого проекту. Багато аспектів власного досвіду і роботи доводиться описувати досить загальними термінами, щоб не зачепити комерційну таємницю тих організацій, про яких йде мова.

Суть цієї розповіді в тому, щоб поділитися знайденим методом вирішення проблеми продуктивності комп'ютерів на Windows і розповісти про підхід, який дозволив зробити дане рішення повністю універсальним і індивідуальним для кожного користувача. На написання коду та підбір найбільш ефективних механізмів знадобилося близько 2х років щоденної роботи, а також консультації і допомогу від великої кількості моїх товаришів з різних IT областей, за що їм величезне спасибі.

Читати далі →

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

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

Читати далі →