Повість про неможливе ба: big.LITTLE і кешування

Коли хтось вимовляє слово багатоядерний, то ми несвідомо маємо на увазі SMP. Це успішно спрацьовувало для нас до недавнього часу, поки ARM не оголосила про big.LITTLE. Архітектура ARM big.LITTLE є першим масово виробленим прикладом архітектури AMP, і як ми побачимо далі, вона піднімає планку складності багатоядерного програмування ще вище.

Читати далі →

Перші кроки в оптимізації і поліровці гри на Unity3d

imageПісля того як я закінчив мій перший проект, прийшла думка про портуванні його на мобільні пристрої або хоча б запуску на вбудованому GPU. У всіх гайдах по оптимізації, в одному з перших рад вам повідомлять, що не варто переживати про продуктивності заздалегідь, починайте оптимізувати, після того як всі закінчите, і ви поступово наведе порядок. Так і я, випустивши спочатку гру на десктоп, вирішив, що ніколи не буде пізно оптимізувати її під мобільні пристрої. На жаль, мені не вдалося повною мірою досягти поставленої мети, бо, схоже, що мобільні ігри слід з самого початку розробляти з прицілом на слабке залізо. На даний момент, для подальшої оптимізації під мобільні платформи я бачу тільки необхідність серйозно переробити геймплей і дизайн ігрового світу. Однак і в поточному варіанті здобуто цінний досвід оптимізації під Unity3d і результуючий приріст продуктивності більш ніж у 300% на інтегрованому GPU.
Читати далі →

Шукаємо помилки в Mono: сотні їх


Великі проекти перевіряти цікаво. Як правило, у них вдається знайти різні цікаві помилки і розповісти про них людям. Також це хороший спосіб тестування нашого аналізатора і поліпшення різних його аспектів. Я давно хотів перевірити 'Mono', і врешті така нагода з'явилася. І, варто сказати, перевірка себе виправдала, оскільки вдалося знайти багато цікавого. Про те, що ж знайшлося, які нюанси виникли при перевірці, і буде ця стаття.

Читати далі →

Microsoft відкрила вихідні коди Xamarin.Forms. Ми не могли упустити шанс перевірити їх за допомогою PVS-Studio


Не так давно, як ви напевно знаєте, корпорація Microsoft придбала компанію Xamarin. Навіть незважаючи на те, що останнім часом Microsoft почала поступово відкривати вихідні коди своїх продуктів, відкриття коду Xamarin.Forms стало великим сюрпризом. Я не зміг пройти повз такої події, і вирішив перевірити вихідний код цього проекту з допомогою статичного аналізатора коду.


Читати далі →

Кастомізація ручного сортування UITableView на Xamarin

У даній статті буде розглянуто спосіб модифікації UITableView для перенесення комірок таблиці. Згадаймо, що Apple нам пропонує тягати осередку за строго відведене місце:

image

Не знаю з чим це пов'язано, але мені це не сподобалося, тому було вирішено витратити деякий час на вирішення даної проблеми, прошу під кат.

Читати далі →

Уразливість в Xamarin для Android: підміняємо dll і їмо безкоштовно

ВведенняЦя історія почалася ще минулого літа: ми з друзями вночі зайшли в заклад швидкого харчування, яке тільки-тільки впровадило мобільний знижкову додаток. Додаток було встановлено, безкоштовна їжа отримана, трафік збережено .pcap-файл, і, природно, було бажання поперебирати, дізнатися, як воно працює. Програма виявилася написана на C# з використанням мультиплатформного фреймворку для розробки мобільних додатків Xamarin; в той час apktool не міг правильно зібрати змінений апк і завершувався з помилкою. Довгий час я користувався цим додатком, накопичував бали, витрачав їх, іноді натикаючись на пости про накрутки на форумах, однак, акаунти накрутчиків досить швидко банили.

Азарт і бажання щось досліджувати, як це зазвичай у мене трапляється, не з'являється з нізвідки. На цей раз спонсором виступив злодій, який упер у мене гаманець зі всіма банківськими картками, і у мене не було іншого виходу, крім як купити собі обід в цьому закладі, попередньо накрутивши бали. Так і каву я, на відміну від Chikey, не люблю. Однак, стаття зовсім не про це.

image
Змінену назву надзвичайно схоже на даний назва закладу

Читати далі →

PVS-Studio: 25 підозрілих фрагментів коду з CoreCLR


Корпорація Microsoft виклала у відкритий доступ вихідний код движка CoreCLR, який є ключовим елементом .NET Core. Ця новина, звичайно ж, не могла не привернути нашу увагу. Адже чим більше аудиторія проекту, тим тривожніше будуть виглядати знайдені підозрілі місця. Незважаючи на авторство Microsoft, як в будь-якому великому проекті, тут є на що подивитися і над чим замислитися.

Введення
CoreCLR є середовищем виконання .NET Core, виконуючи такі функції як збірку сміття або компіляції в кінцевий машинний код. .Net Core — це модульна реалізація .Net, яка може бути використана як база для величезної кількості сценаріїв.

Вихідний код з недавнього часу доступний на GitHub і перевірявся за допомогою PVS-Studio 5.23. Як і я, бажаючі можуть отримати повний лог перевірки за допомогою Microsoft Visual Studio Community Edition, вихід якої теж був недавній новини від Microsoft.

Читати далі →

Авторизація і використання VK.com API в Xamarin.Android

Xamarin — дуже багатообіцяючою продукт, який допомагає вести кроссплатформенную розробку на Android і iOS на мові C#. На мій погляд, незаслужено упускається з виду співтовариством мобільних розробників. Мова C# можна легко замінити на F#, а в якості платформ взяти ще й OSX і Windows Phone. Загалом, можливостей і перспектив маса, найцікавіших.



Це вже третя моя стаття на хабре, присвячена Xamarin-у, в ній ми розробимо просте, але наочне додаток (у жанрі Hello Word), з використанням VK.com API. Як правило, вихідні матеріали викладені на GitHub і наведені в кінці статті.

Отже, в чому, власне, принципова різниця для завдань, з якими доведеться зіткнутися розробнику, створює native-додаток Android, що підтримує VK.com і розробнику, що вирішує ту ж саму задачу з Xamarin?

Читати далі →

Що Mono 4.0.0 нам готує



Останнім часом багато обговорюють недавні відкриття CoreCLR і CoreFX від Microsoft. Нагадаю, що ядро CLR і реалізація базових класів .NET у нас тепер відкриті, кросплатформені і поширюються під MIT. Таким чином, ви можете зібрати свою власну версію рантайма, яка буде працювати під Windows, Linux і Mac. І багатьох мучило питання: а що ж тепер буде з Mono? Нещодавно з'явилися чернетки Mono 4.0.0 Release Notes, з яких ми можемо дізнатися про майбутні плани компанії Xamarin. Отже, сьогодні в номері:
  • Adoption of microsoft's open source code
  • Floating point optimizations
  • We dropped support for the 2.0, 3.5 and 4.0 assemblies
  • Updated IKVM
Обговоримо прийдешні зміни трохи детальніше.
Читати далі →

Перші кроки до онлайн-офісу на Linux або як ми портувати під Mono (про складнощі та їх рішеннях)



Вчора ми випустили ONLYOFFICE під Linux і поспішаємо поділитися не тільки новинами, але і корисною інформацією для тих, хто, як і ми, 5 років тому опинився у власній пастці під назвою «ASP.Net»

Спроби перенести на додаток Unix з використанням проекту Mono ми почали робити ще 4 роки тому, однак, довгий час у нас нічого не виходило, оскільки на той момент Mono сильно відставав по функціоналу при портуванні с .Net під Windows. Зокрема, в Mono була сильно урізана підтримка wcf, а також погано працював asp.net mvc. Втім, на щастя розробників всі ці роки проект Mono активно розвивався — додалася підтримка .Net 4.0 .Net 4.5, так що навесні 2013 ми вирішили відновити роботу.

Тут ми розповімо про те, з якими проблемами зіткнулися в процесі портування хмарного офісу під Mono, як їх вирішили, що маємо в підсумку, і як один ініціативний користувач вже через пару годин після релізу обернув все Dockerfile.
Читати далі →