Досить частий питання, яке виникає у тих хто пробує розробляти під UWP це «Як UWP додатком отримати дані з бази даних SQL Server?». Безпосередньо дані отримати неможливо. Робота з базами даних у UWP додатків вимагає налаштованого REST сервісу.
Розробники клієнтських додатків, як правило, далекі від створінь серверних бэкендов, але їм необхідно мати хоча б уявлення про сервісах.

Під катом опис того, як створити локальний WCF REST сервіс та отримати від нього дані додатком UWP. Сервіс зможе отримувати дані з бази даних SQL Server, створеної в Azure (але аналогічно можна отримати дані з будь-якої локальної бази). Додатково, щоб усе не виглядало дуже банально, буде розглянута можливість розміщення самого сервісу в Azure для роботи з ним з того ж клієнтського UWP програми.

Читати далі →

КДПВ
Вивчення віртуального адресного простору і алгоритму перетворення адрес помітно спроститься, якщо почати з нескладного практичного прикладу. Для цього напишемо просту програму, що виводить адресу локальної змінної:
int main()
{
unsigned i = 0xDEADBEEF;
std::cout << "address of i is " << std::hex << &i;
std::cin.get(); //Щоб процес не завершився
return 0;
}

Потім спробуємо знайти фізичну адресу і переглянути значення за цією адресою.

Читати далі →



З допомогою VSTS можна автоматизувати розгортання та тестування програмного забезпечення в різних середовищах. Суть Continuous Integration полягає у виконанні частих автоматизованих збірок проекту для якнайшвидшого виявлення і вирішення інтеграційних проблем. Зокрема CI дозволяє автоматизувати регрессионное тестування додатків.

В якості ознайомлення з можливостями VSTS пропоную опублікувати і налаштувати Continuous Integration c Unit тестами простого UWP програми.

Читати далі →

Telerik UI для UWP став Open Source

imageСьогодні Telerik оголосили, що відкривають в open source компоненти для створення UWP.

Це набір з більш ніж 20 компонентів для розробників UWP додатків, який включає в себе популярні Grid, Chart, DataForm and ListView.

Повний набір компонентів можна знайти на репозиторії GitHub.

Ніякого відношення до Telerik не маю. Хіба що купував у них компоненти, начебто відмінної якості.


Читати далі →

Продовження епопеї з USB-стеком

image
Нам все ж вдалося розбити лід, ми все ж знайшли кілька тестерів під час минулого етапу і готові рухатися далі.

Розробник Вадим Галянт залив у хмару експериментальний спосіб ReactOS з оновленими компонентами USB-стека. Нам знову потрібні ваші тести. Терміново! Тільки від вас залежить, чи потраплять напрацювання в загальну гілку до релізу 0.4.4. Часу залишилося зовсім мало, буквально пара днів.

drive.google.com/file/d/0B0uL4J-umfUBLXgwd25ZVnE1dzA/view

Читати далі →

One Core API щоб правити Windows

"Якщо Microsoft не забезпечує сумісність —
спільнота забезпечує сумісність".
Aceler



Вітаємо хабражителей з Різдвом! І у нас є святковий сюрприз для вас!

Представляємо вашій увазі проект One Core API — шар сумісності з відкритим вихідним кодом для Windows XP/2003, який дозволяє запускати на цих системах програми для більш пізніх ОС. По суті це врапперов функцій NT6. Шляхом додаткових хитрувань забезпечується підтримка DirectX 10. One Core API створений на основі початкового Wine і ReactOS, але його розробкою займається інша команда.
Всіх бажаючих запрошуємо приєднатися до розробки: github.com/Skulltrail192/One-Core-Api


Читати далі →

Пошук витоку GDI об'єктів: Як загнати мастодонта

Строго кажучи саме це оригінальний текст статті, а в блог вже переклад. Тут стаття публікується трохи пізніше і тільки тому отримує бирку переклад.

В 2016 році, коли більшість програм виконуються в пісочницях, з яких навіть самий некомпетентний розробник не зможе нашкодити системі, дивно стикатися з проблемою, про яку далі піде мова. Якщо чесно, я сподівався, що вона пішла в далеке минуле разом з Win32Api, але недавно я з нею зіткнувся. До цього я лише чув страшні байки старих більш досвідчених розробників, що таке може бути.

Проблема
Витік або використання занадто великої кількості GDI об'єктів.

Симптоми:
  • Task Manager на вкладці Details колонка GDI objects показує загрозливі 10000(Якщо цієї колонки немає, її можна додати, натиснувши на заголовку таблиці правою кнопкою миші і вибравши пункт Select Columns)
  • При розробці на C# або іншою мовою виконуваному CLR полетить виняток, далеко не нова конкретикою:
    Message: A generic error occurred in GDI+.
    Source: System.Drawing
    TargetSite: IntPtr GetHbitmap(System.Drawing.Color)
    Type:System.Runtime.InteropServices.ExternalException
    Також при певних налаштуваннях або версії системи виключення може і не бути, але Ваш додаток не зможе намалювати жодного об'єкта.
  • При розробці на З/З++ всі методи GDI начебто Create%SOME_GDI_OBJECT% стали повертати NULL

Читати далі →

Ми хочемо зробити вам новорічний подарунок, але нам потрібна ваша допомога



Ми хочемо зробити вам новорічний подарунок, але нам потрібна ваша допомога!

Так-так, саме так. Ми вже давно намагаємося поліпшити стек USB в ReactOS. І ми знаємо, як ви цього хочете! Однією з крайніх спроб був проект в рамках GSoC 2016. Цей проект був успішний, поставлена в його рамках задача була виконана, але в цілому виконаної роботи виявилося недостатньо. Перехопивши естафетну паличку, заповнити відсутні прогалини взявся інший розробник-волонтер, Вадим Галянт.
Читати далі →

віддавайте перевагу SRW-блокування критичним секціях

Ця стаття пояснює чому при розробці Win32-додатків механізм Slim Reader/Writer Lock (SRWL) часто більш кращий, ніж класичні критичні секції.

Легковагість
SRWL-об'єкт займає в пам'яті всього 8 байт на x64-архітектурі, в той час як критична секція — 40 байт. Критична секція вимагає ініціалізації і деинициализации через виклики функцій ядра ОС, в той час як SRWL ініціалізується простим присвоюванням йому константи SRWLOCK_INIT, а витрат на видалення немає взагалі ніяких. Використання SRWL генерує більш компактний код і використовує менше оперативної пам'яті при роботі.

Якщо у вас буде 100 000 об'єктів, що потребують деякої внутрішньої синхронізації, економія пам'яті буде вже суттєвою. Приріст продуктивності від уникнення зайвих промахів кешу буде ще більш відчутним. У сучасних процесорах (починаючи з Intel Nehalem, який вийшов у 2008-му) одна кеш-лінія займає 64 байта. Якщо ви використовуєте на об'єкт синхронізації 40 з них — це істотно вдарить по продуктивності доступу до невеликих об'єктів у вашому ПЗ.

Читати далі →

«interface» відрізняється від «междумордия»: наш підхід до документування та локалізації програмних продуктів


Одного разу в технічній документації до Parallels Desktop нам потрібно використовувати фразу «жорсткий диск віртуальної машини». Англійською мовою це звучить: virtual machine hard disk. Наш минулий технічний письменник помилився всього в одній букві в одному слові, але сенс вийшов діаметрально протилежний. Ми цього не помітили відразу і в якийсь момент наша технічна документація, локалізована на багатьох мовах світу, містила нетлінне: virtual machine hard dick. Був грандіозний скандал, після якого ми посилили перевірку текстів. Під катом — розповідь нашого технічного письменника Андрія Старовойтова про те, де мешкають технічні письменники, на що їх ловити і як Parallels документує і локалізує свої продукти.
Читати далі →