×

Як ми реалізували крос­платформенну розробку мобільного додатку на Xamarin

Якщо вам дістався класний проект на довготривалий термін, ви хочете його грамотно реалізувати з застосуванням шаблонів проектування, сучасними методологіями та відповідно до всіх канонів, що описані в SWEBOK та ISO 12207, або ж хочете розробляти крос­платформені мобільні додатки — тоді вам точно сюди. Представляємо наш «case study» aka «real­life story» — розробка крутого проекту зі встановленням та впровадженням Scrum в команді нашої компанії WebKate.

Отже, я розповім про технологічну сторону й частково торкнуся команди, проінформую про наші три помилки, яких можна було б уникнути та зберегти дорогоцінний час. З цього приводу пригадується цитата: «Як можна збільшити продуктивність в два рази? Треба збільшити кількість помилок удвічі!».

Проект: соціальна мережа для спортсменів, тренерів, вболівальників з усіма витікаючими можливостями значення соціальної мережі.

Платформа використання додатку: iOS та Android.

Головні питання, які ми ставили на етапі збору вимог та початковій стадії проектування:
— Аналіз мокапів та розбивка їх до реальних екранів;
— Прототипування (Axure
— Technical Specification, API Documentation;
— Підтримка двох широко використовуваних мобільних платформ;
— Amazon EC2 — платформа серверу (Как задеплоить на Symfony2
— Шифрування даних.

Перша помилка — застосування Corona SDK

Для початку шукаємо, які технології може нам запропонувати сучасний світ. Маю на увазі такі:
— Corona — Lua;
— QT (Widget, QML) — С++;
— Xamarin — С#.

Оскільки в команди був досвід розробки ігор (Corona SDK), в основному на iOS (Objective­C), то не виникало й питання, що інше можна застосувати. В цьому і була перша помилка.

Corona SDK — засіб крос­платформенної розробки, призначений насамперед для розробки ігор, але у ньому можна писати й бізнес­додатки. В нашому випадку все почалося з Corona. Скажу відразу — це було не досить вдале рішення для побудови UI­елементів. Це двигун для розробки ігор, і цим все сказано!

Дві основні проблеми, з якими ми зіткнулися, що призвели до зміни технології:
— проблеми з багатопоточністю, асинхронними запитами на сервер;
— «пластмасовий» інтерфейс, відсутність UI­редактора. В більшості випадків елементи будувалися за допомогою коду й встановленням навмання за принципом «Скомпілював — о, норм! Кнопка стоїть. А не треба на 1 піксель здвинути?». Такі елементарні функції, як обрізання тексту в текст інпуті чи дроп­листи ставали дійсно проблемними. Елементи інтерфейсу не здавалися нативними, а були начебто пластмасовими. Не було відчуття, що це дійсно гарний додаток, і коли взаємодієш з UI, то боїшся, щоб він не зламався і не «поплив».

Це ще не кажучи про забагованість окремих елементів UI, що призводило до пошуку сторонніх рішень та їх подальшого доопрацювання. Детальніше про технологію можна почитати тут.

Друга помилка — вибір методу розробки додатку

Спочатку будуємо всі екрани (повірте, їх було чимало, перевалило за півсотні), а потім думаємо про інше. Це рішення було обране не випадково, не через нашу некваліфікованість, а через те, що ще не було реалізовано API сервер, про котрий поговоримо дещо згодом. Можна сказати, що це був прототип, який можна було запустити на кінцевій платформі, з частковими працюючими UI­функціями (перехід по екранах, вибір фото, локалізація та інше). З точки зору розробки це правильно, але на це пішло багато часу, щоб далі усвідомити, що не підходить під конкретну задачу. Даний метод можна використати після прорахунку можливого функціоналу та побудови нормальної архітектури додатку та реалізації мінімального функціоналу. Утім, я все ж переконаний, що краще будувати більш­менш закінчений функціонал і далі його нарощувати.

Qt — крос­платформенний інструментарій розробки ПЗ мовою програмування C++. Дозволяє запускати написане за його допомогою ПЗ на більшості сучасних ОС, шляхом простої компіляції тексту програми для кожної ОС без зміни сирцевого коду.

Включає всі основні класи, які можуть бути потрібні при розробці прикладного ПЗ, починаючи з елементів графічного інтерфейсу й закінчуючи класами для роботи з мережею, базами даних, OpenGL, SVG і XML. Бібліотека дозволяє керувати нитями, працювати з мережею, і забезпечує крос­платформенний доступ до файлів.

Qt також може бути використаний у багатьох інших мовах програмування: Ada (QtAda), C# (Qyoto/Kimono), Java (Qt Jambi), Qt Jambi, Pascal, Perl, PHP (PHP­Qt), Ruby (QtRuby) та Python (PyQt, PySide).

Знаю, що це дійсно класна технологія, хоча я особисто «не подружився» з нею ще зі студентських років. Найголовніше, що мені в ній не подобається — це їх Qt Creator IDE, котра надто незручна в порівнянні зі стандартними VS, Eclipse та IDE компанії JetBrains. Другим фактором було те, що не досить комфортні деякі елементи С++, мені зручніше писати на C# і Java. О, якби так сталося, щоб вони покращили свою IDE і розширили якимось магічним способом підтримку технології в мові C#! ;)

Чого варта лише їх декларативна мова QML?!

Приклад:

import QtQuick 1.0

Rectangle { 
    id: canvas
    width: 200
    height: 200
    color: "blue"

    Image {
        id: logo
        source: "pics/logo.png"
        anchors.centerIn: parent
        x: canvas.height / 5
    }
}

Нарешті, я зустрів великого Xamarin’a, що використовує мою улюблену мову програмування С#.

Xamarin — це фреймворк для крос­платформенної розробки мобільних додатків (iOS, Android, Windows Phone). Ідея дуже проста: ви пишете код із застосуванням всіх звичних для вас мовних фіч (LINQ, лямбда­виразів, Generic, async тощо) і при цьому маєте повний доступ до всіх можливостей SDK платформи й рідного механізму створення UI, отримуючи на виході додаток. В цілому це нічим не відрізняється від нативних і не поступається їм у продуктивності.

Наведу декілька посилань на інші джерела, що допомогли в освоєнні даної технології:
— developer.xamarin.com
— xamarin.com/faq
— xamarin.com/university
— blog.xamarin.com
— blog.pluralsight.com/xamarin­
— habrahabr.ru/post/188130/

Розпочавши в повній мірі етап проектування й обравши технології, на яких будемо розробляти — починаємо шукати, в якій же є плюшки. Насамперед це:

Всі ці штуки дуже допомагають при роботі. Я не буду розповідати про кожну з них (в інтернеті інформації вдосталь), детальніше зупинюся на Xamarin.Forms.

Xamarin.Forms — крос­платформенний інструментарій, який дозволяє розробникам легко створювати користувацькі інтерфейси, які можуть бути розділені таким чином: Android, iOS і Windows Phone. Інтерфейси відображаються за допомогою вбудованих елементів керування на цільовій платформі, що дозволяє зберегти відповідний зовнішній вигляд для кожної платформи (guides).

Цей інструмент в перспективі є настільки могутнім, що його можна порівняти з WPF. Інтерфейс описується в XAML. На даному етапі розвитку немає графічної побудови в creator та звичних можливостей елементів керування. До того ж, їх кількість обмежена. На нашому проекті ми не застосовували даний інструмент, тому що він є досить сирим. Якщо вам не дуже важливий інтерфейс і не вимагається точного співпадіння екранів з дизайном (pixel perfect), то можете його використовувати.

Для побудови UІ ми використали стандартні засоби розробки інтерфейсу для iOS — storyboard, xib; а для Android — axml. Якщо ви переходите розробляти на дану платформу зі стандартних засобів розробки мобільних додатків, то для вас не буде ніякої складності в розумінні, оскільки засоби майже аналогічні.

Найбільш незручним для мене при розробці під iOS було те, що кожного разу коли щось змінював в storyboard­і, XCode закривався після синхронізації. Це виникло після чергового оновлення SDK, яке в них досить часте, і далі доводилося спочатку відкривати storyboard в xCode через Xamarin Studio.

Також не треба забувати про могутність .NET та його ком’юніті. Наприклад, про такі гіганти, як Telerik та DevExpress, що також підтримують дану технологію.

Архітектурні рішення та CASE засоби

Тепер прийшов час поговорити про самий смак — наші архітектурні рішення, CASE засоби та команду.

Засоби розробки та штуки, які ми використали:
— PM Methodology: Waterfall з переходом на Scrum;
— PM Tool: Atlassian JIRA з переходом на Pivotal Tracker. Не знаю, чим Pivotal кращий за JIRA, і наскільки це було потрібно — однак це було резонним рішенням при переході на Scrum.
— Prototype: Axure;
— OS: OS X Mavericks;
— IDE: Xamarin Studio, XCode. Дехто з нас ще на віртуалці юзав Visual Studio + resharper, бо ця зв’язка надає більше функціональності для кодування. (Коли вже Microsoft почне підтримувати всі платформи технології .NET і JetBrains напише нам нормальну IDE? Ех...);
— SCM: Git — SourceTree (у жодному разі не радив би використовувате SVN, порівняно з гітом — це «дрова»!) Під час розробки була ситуація з конкретно різними гілками, починаючи зі зміни назви проекту (папки) до перебудови структури. Після мерджу приблизно в двохсот файлах були примітивні конфлікти з namespace, які швидко потім вирішили. Git сам визначив, що файли були переміщені, перейменовані та ін. зі збереженям історії комітів файлів (тобто не вийшло так, що я став творцем всіх файлів), SVN у цьому випадку би подумав, що файли видалилися і створилися нові. Можна ще було використати TFS, але оскільки ми на маках всі сиділи й досвіду у використані не було, то цей варіант не розглядався;
— Simulator: iOS Simulator, Genymotion.

Як я згадував раніше, у нас був сервер, реалізований за допомогою фреймворка Symfony2. Зв’язок відбувається на основі REST. Формат даних — JSON, також може буде досить швидко сконфігурований для передачі XML-­даних. API aвтентифікація виконана на основі WSSE. Детальніше про це розписано в окремій статті.

Додаток побудований за архітектурним шаблоном MVC. Дехто тут, можливо, скаже, що можна було використати MVVC, це б дало... бла­бла­бла. Але оскільки ми не використовуємо Xamarin.Forms, то для команди це було не досить зручно, тому що більша її частина прийшла з розробки iOS на Objective C, і ще — бо так історично склалося :)

Проектне рішення було розділено на три основні проекти + декілька проектів для різних додаткових компонентів, наприклад, SlidingMenu та ін. Також проекти для тестування під кожну з платформ.

В основному, ми дотримувалися такої схеми:

Core був створений на основі Shared Projects. Альтернативою є PCL, але вона не дозволяє використовувати директиви компілятора (наприклад #if __ANDROID__) та ін. Детальніше ви можете ознайомитися в документі. Також тут розмістилися бізнес моделі, що заповнювалися за допомогою RestSharp відповідями від сервера, різні менеджери для роботи з сервером, даними, сервіси, елементи валідації (constraints), івенти, локалізація (застосований Extension для класу string) та ін.

Інші основні два проекти — це вже реалізації під конкретну платформу (Android, iOS).

Третя помилка — порушення темпу розробки

Відтак, ми впритул підійшли до команди, а саме нашого становлення та переходу на Scrum (це тема для окремої статті) в процесі етапу конструювання.

І тут якраз і сталася наша третя помилка: початковий темп, в якому починалася розробка на другому етапі, зміни, що вносились без погляду наперед, щоденні мітинги, на яких треба було показати результати роботи (це тримало нас в якомусь незрозумілому стані), а також нові й нові правки клієнта. Це призвело до недосконалої перевірки якості коду кожного із розробників, виснаження команди та нестачі часу для тестування.

Але не дивлячись на це, усвідомивши все, ми виправили становище і увійшли в нормальне русло розробки. Як?

Для початку ввели pull request і сode review (це покращило якість коду, кожен міг написати свій коментар, а також підвищити свої знання в Xamarin, оскільки ця технологія була нова для нас), перейшли на методологію ведення проекту Scrum (змінилося деяке уявлення — наше та клієнта, зменшилося навантаження на команду), провели рефакторинг та ввели деяку ієрархію у веденні гілок в гіту (перший рівень — master, dev; другий рівень по підпапках застосування: feature/..., fix/... та ін., під конкретну платформу). Написали декілька інструкцій для входження нових людей в команду, наприклад, для деплою на AWS EC2.

Далі ми перейшли на інший етап ЖЦ ПЗ, але це вже інша історія.

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

Я вважаю, що ми повністю це довели! Команда, що зовсім не мала досвіду в даній технології, змогла за кілька місяців реалізувати досить складний крос­платформенний додаток.

Все про українське ІТ в телеграмі — підписуйтеся на канал DOU

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn

Схожі статті




Найкращі коментарі пропустити

Хочу дещо внести ясності, з мого досвіду:
1) Фреймворки на HTML + JS.
Треба знати в яких випадках їх доцільно використовувати.
Те, що читав в кометарях, що інші вдало використовують і без проблем — це мабуть не так, або їх застосунки не досить великі.
Був досвід розробки застосунку на даному типу фрейморкі (не буду називати, по суті вони всі майже однакові).
Коли ти завертаєш JS MVC фреймворк в app і надієшся, що все запрацює у WebView як у браузері, хех... і буде все однаково на всіх платформах...
Наприклад такі штуки, як завантаження фото, редіректи (# - доставляли цей символ, щоб працювало, причому деякі посилання та ін. працювали на платформах по-різному, були різні гілки під кожну з платформ, через зміни...), реєстрація через соціалки (їх було багатенько...), так що той метод, який працював у браузері — на девайсі не робив, відкриття дочірніх сторінок (target _blank) та ін.
Також думки «Як би оце мені зредіректить з сервака на localhost?» + трабли з куками, і тут розумієш, що це ще й апп для моб? %)
Багато що довелося змінювати на сервері конкретно для апа (в логіці).
Також до деяких функцій телефону немає доступу. Не кажу, що це неможливо, але присутні добрі костилі.
Повторюся, під конкретну задачу треба застосовувати доцільний метод, а не пихати одне і теж під все (те, що знаєш).

2) На рахунок швидкості розробки, то тут можна довго дискутувати. Але для розборки на iOS і на Android треба знати дві мови, які досить несхожі між собою. Далі доведеться писати аналогічні штуки, наприклад, для взаємодії з сервером та ін., по-різному, але схоже.
Те, що в нашому проекті відрізнялося — це View (яке так само треба робити у випадку розрізненої розробки) та контролери/актівіті та деякі специфічні штуки (локалізація, тощо) але це ще можна спростити, розробивши гарну архітектуру й змінюючи лише імплементацію. А от якщо замовник захоче ще й Windows Phone, то це плюс ще одна мова та специфічні штуки...
Тому тут краще самі вирішуйте щодо оптимальних рішень. А ще краще — пробуйте :)

P.S: Хочу звернутися до модератора, що редагував мою статтю.
Я не буду з’ясовувати лінгвістику та все таке інше але додам чому Ви після першого коментаря

«мобільного застосунку»... застосунку, серьезно? я сломал глаза читая заголовок
вирішили змінити назву? Так зручно, так інші пишуть/вживають?... А якщо хтось інший напише, що йому ще щось не подобається, Ви також зміните одразу?
Тут — dou.ua/add-post я чомусь не побачив ніяких вимог до статей, що вони можуть бути відредаговані, і навіть не вказано, в якому форматі вам їх надсилати.
Мені цікаво, якщо Ви не фахівець з тієї чи іншої сфери, як Ви може судити про термінологію? А раптом Ваші правки змінять суть написаного?... Мені, як автору, захотілося використати саме це слово, а те що воно ріже очі людям, що спілкуються й пишуть російською — то ОК, це їх право сказати своє «фе», але для мене (і тим паче для Вас) це не мало б бути вагомою підставою редагувати тексти в угоду невдоволеним.

До речі, при редагуванні Ви припустилися помилки (перевірив — у моєму варіанті, що я Вам надсилав, по-іншому написано): «Как задеплоить на Symphony2» — правильно було Symfony2 (дякую Олександру, що помітив). Symfony — це фреймворк, тоді як Symphony — це CMS (www.getsymphony.com)

Я зараз спеціально зайшов пересвідчитися на один цікавий сервіс, широко відомий у вузьких колах:
s2.postimg.org/...5p52h/image.jpg — як не дивно, однак жоден з варіантів перекладу не відповідає тому смислу, який нам треба.
s8.postimg.org/...7uv5x/image.jpg
s12.postimg.org/...8kgt9/image.jpg

Я гадав, що DOU (на відміну від Хабру конкуруючих ресурсів) був створений якраз для розвитку українського ІТ-ком’юніті, зі своїми особливостями (включаючи й мовні). Чи я помилявся?...

157 коментарів

Підписатись на коментаріВідписатись від коментарів Коментарі можуть залишати тільки користувачі з підтвердженими акаунтами.

Для тих. хто цікавиться Xamarin можу запропонувати свій блог. Сподіваюсь ви там знайдете для себе щось цікаве:
vsavchenkoblog.wordpress.com

Суть статьи: автор попытался подогнать обоснования под выбор, который он сделал по собственной прихоти.
Кстати, ссылку на застосунок можно?

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

П.С я звичайно не пишу що шарп це динозавр, а xamarin. Хоча це й не найгірший вибір але всерівно це в угоду прихотям. Не існує хорошого кросплатформу для прикладної програми.

З усього написаного не зрозумів до чого там SWEBOOK і ISOxxxx, ще бракує посилання на Agile Manifesto.

Для того щоб було справжнім кейсом бракує інформації про бізнес: «Використовуючи Xamarin удої молока на Хмельниччині збільшились втричі, а кількість WTF від команди розробників не перевищила 3 штук в хвилину. CEO клієнта зміг втулити наш додаток 200-там спортзалам які відзначили високу якість додатку і зручність використання.» або «ми за рахунок клієнта набили гуль, навчилися нового фреймворку і визначили що в принципі продукт ніби можна використовувати, якщо знати де чекати розтяжку.»

Судячи з ваших метань: то Corona SDK, то процес розробки не пішов. Не факт що нейтивна розробка не обійшлася б дешевше і швидше. Крім того як безкоштовний плюс маємо в навантаження SDK на Objective-C і Java для роботи з вашою соціалочкою для використання сторонніми розробниками.

І ще власного субєктивного досвіду. Пересісти з Jira на Pivotal це як з мерседеса пересісти в запорожець.

Докину іще кілька кросплатформових технологій до загального кошика:
www.embarcadero.com/...ucts/rad-studio — у них власний фреймворк на зразок Qt, який називається FireMonkey Framework, і підтримує дві мови — C++ та Delphi

Ой, обіцяв же кілька технологій. Виправляюся:
www.elementscompiler.com/elements — цілий набір компіляторів під різні платформи, підтримуються три мови: Oxygen (діалект Pascal), C#, Java. Причому на усіх цих мовах можна писати під усі підтримувані платформи. Наприклад у них можна писати під iOS на C# без використання Xamarin чи інших фреймворків. Щоправда інтерфейс всюди доведеться робити заново.

Лично я считаю, что это дело автора то, как он назвал статью, и какие слова синонимы употребил.
А то, что администрация поменяла слова только из-за одного комментария не профессионально и нарушает авторские права.
Спор о том какое слово правильное, а какое нет, изначально бесполезный. Все остались при своих мнениях. И 100%, что ни один оппонент не стал считать по другому. Лучше бы вы спорили о сути, а не о словах. :)

Лично я считаю, что это дело автора то, как он назвал статью, и какие слова синонимы употребил.
Лучше бы вы спорили о сути, а не о словах. :)
Якщо ви така поцінувальник суть, тоді до чого ваш повідомлянок?
UPD. таки корректнее “поцінувальниця”.

Мое сообщение вполне в тему, а если вам скучно и хочется поостроумить, посетите какой-то форум, а не критикуйте «воздух».

Мое сообщение вполне в тему
В тему чего? Оно уж явно не про Ксамарин и не про мобильную разработку.
.
Давайте таки вернемся к статье:
Лучше бы вы спорили о сути, а не о словах.
Таки прочитал статью. О какой сути там можно спорить: человек просто “пою что вижу”. Выводов нет. Доказательной базы нет, только голые утверждения вроде:
Xamarin — це вже досить розвинена технологія щоб використовувати його і створювати гарні продукти.
В чем развитость технологии? В том что можно написать “Иф Андроид”? Доказательств того что его можно использовать для “хороших продуктов” (я не говорю что продукт автора плох, я его вообще не увидел) так же не было.
.
И еще прикольного (но тут больше про слова, у которых есть суть):
Також не треба забувати про могутність .NET та його ком’юніті.
“могутність” — это “могущество”, “потужнисть” — это “мощность/мощь”. Так вот фраза “могущественный дотНет” звучит странно и необоснованно.
.
P.S. Несмотря на все выше написанное, я очень благодарен автору за хоть сколько технический контент на ДОУ.

Могутність — це могутність. Що у вас за дивна звичка все перекладати на російську, а потім лише намагатися зрозуміти суть? Через це й ваше несприйняття «застосунку» та інших термінів, бо в голові в першу чергу сидить перекладач укр-рос, а не аналізатор суті. І якщо щось перекласти не можете, то відразу Fatal Error і срач в коментах з приводу «поломанньіх глазов украинофобских товарисчей» %)
Знову ж таки, якщо вже так не розумієте українську, то спробуйте перекладати англійською:
translate.google.com.ua/...k/en/могутність — як бачите, «могутність» найкоректніше перекладається як «power, strength». Тепер зрозуміліше? Powerful .NET норм звучить? )
Вам аби ото до слів доколупатися, чес слово... Носитеся зі своєю російською як з писаною торбою, і більше нічого не хочете знати.

Могутність — це могутність. Що у вас за дивна звичка все перекладати на російську, а потім лише намагатися зрозуміти суть?
Проблема в том что я ничего не перевожу. И мне как человеку воспитанному в украиноговорящем окружении фраза “могутність .NET” звучит дико, именно потому что “могутність” и “потужність” для меня это принципиально разные слова по своей сути, кстати как и их русские аналоги.
translate.google.com.ua/...k/en/могутність — як бачите, “могутність” найкоректніше перекладається як “power, strength”. Тепер зрозуміліше?
Странно translate.google.com.ua/...k/en/потужність
“потужність” — это так же “power”, от дикие укры понапридумывали тут слов панемаешли. :)
.
Powerful .NET норм звучить? )
Кстати, ваш же пример translate.google.com.ua/...#en/uk/powerful ( translate.google.com.ua/...powerful engine ) переводится как “потужний”,
а вот “могущественный” (“могутність”) он будет если применить его во фразе “powerful king” ( translate.google.com.ua/...k/powerful king ) Так что переводчик, а не пониматьтель сути, не вам уж и говорить :)
.
Через це й ваше несприйняття “застосунку”
Неприятие слова “застосунок” у меня потому что оно звучит странно, я его ни разу не слышал от украиноговорящих людей, более того у всех моих знакомых первой реакцией была улыбка.
А вот слова “додадок” и “застосування” воспринимались нормально.
.
P.S. Некоторые украинские слова могут быть исковерканы в “похожие” российские, тут все вопросы к яблочной компании :)

а бинг на application переводит как застосування www.bing.com/translator
а вот если mobile application — Мобільний додаток

Даже прикольнее:
application for windows — додаток для windows
the windows application — застосунок windows
the windows app — застосунку windows" (тут важно чтобы ДОУ не сдавало последнюю кавычку)
Что лично меня наводит на мысль что слова «застосунок» находится, в основном, в переводе ихней же доки :)

поломанньіх глазов украинофобских товарисчей
Я люблю Украину и украинский язык. Но тот, на котором писали Шевченко и Франко. А от новомодных неологизмов на самом деле коробит.

Класики позаминулого століття — це, звісно, завжди безпрограшний аргумент. Особливо для тих, хто хоче бачити українську мову архаїчною й відсталою, що застрягла б на рівні шароварщини й коломийок.
Однак, як би Вас не коробило від неологізмів — це невід’ємна частина будь-якої немертвої мови. У котрого з класиків (будь-якої мови) були в лексиконі слова «інтернет», «мікрохвильовка», «браузер»?... Питання риторичне. Розвивається наука, змінюється життя — з’являються нові слова, це природно. Я ж гадаю, Андріє, Ви б не заявляли так само, що якщо в мові Пушкіна й Лєрмонтова не було слова «рунет», то його не треба зараз використовувати, ібо «коробит»?...
Найцікавіше те, що найзатятіше повчають і виправляють українські терміни тут саме ті, хто українською не може до пуття навіть комент написати. Може хай краще носії мови самі визначаться, як їм краще писати своєю мовою? І байдуже, як у когось різатиме очі чи пучитиме живіт...

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

І? Що нам тепер робити, якщо у Вас проблеми з цим переліком слів!!! В нас тут стаття про орфоепію? Прочитайте, ще раз назву! Вам і не тільки Вам, нема про що побазікати, а як тільки глибше приводити дискусію до маразму. Ведіть суперечку про контекст, якщо він на Ваш погляд є, і, якщо Вам цікаво. Ви не зрозуміли сенсу слова(пошукова система в допомогу)? Вам приводять наукові докази, а Ваша думку на чому засновується? На тому, що Ви такого ніколи не чули і дико звучить в такому контексті. Скільки мов, людей, країн на планеті? Чим Ви збагачуєте свій словниковий запас? — тим як спілкуються інші з Вами, а все незнайоме Ви відкидаєте!
Заспокойтесь, все рівно вже стаття пройшла цензуру, модератор нічого не буде змінювати, бо вслуховується в коментарі пересічних людей, а те як хотів автор — це не важливо!
Мені вже набридло читати коментарі «знавців мови», як приємно, коли дають посилання на інші цікаві технології та «штуки», що можна використати, та ставлять доречні запитання. А те, що Ви тут розвели ..*

Вот поймал себя на мысли: если в каждой статье, в которой автор будет использовать слова, которые он считает уместными, не учитывая мнения аудитории, тактично намекать, что некоторые слова можно заменить более вкусными синонимами, авторы задумаются?

А вообще, мне показалось что вы и ваши коллеги довольно агресивно отстаиваете свою позицю и проявляете открытую неприязнь к русскоговорящей аудитории. Надеюсь, показалось.

В любом случае я постараюсь к этой теме больше не возвращаться. Если используя подобные слова вы чувствуете, что делаете вклад в развитие украинской культуры — это прекрасно.

А по поводу статьи вам уже написали мнения, которые я разделяю и добавить мне нечего. За статью спасибо. Если будете пиши исчо — больше тонкостей и конктретики приветствуется.

Дякую за конструктив, можливо в деяких висловлюваннях був різкий.
Але обурює той факт, що модератор вже з першого коментаря / однієї точки зору, змінює назву, не погодивши з автором, забуваючи про авторське право. Я приймаю до уваги критику, коментарі, поради, коли вони — адекватні і по суті, а не те як зараз тут це відбувається. Балаган через орфоепію, ....

Що у вас за дивна звичка все перекладати на російську, а потім лише намагатися зрозуміти суть?
Сейчас понял почему мне кажется странным слово “застосунок” :)
Томущо не зрозуміло як оно __стосується__ застосування, не очевидно який __стосунок__ оно має до программного забезпечення.
.
UPD. Хотя все-таки “стосунок” хоть и слышал в употреблении, но его чаще используют в понятии “отношения между людьми” в множественном числе “стосунки”, но (в основном в западных регионах) слово “стосунок” так же слышал в смысле “касается”, ну или типа того, объяснить сложно, но думаю вы как поборник (то же не знаю как перевести) украинского языка поняли в чем суть.

Богдане, я вже не хочу вступати далі в таку полеміку, оскільки з Вашого боку це, мабуть, флейм чистої води.
Витягати зі слова «застосунок» морфему «стосунок» — це те ж саме, що витягати з «додатку» слово «дата», і розмірковувати, чому «дата» тут недоречна.
Не придумуйте зайвого. Слово «застосунок» від «застосовувати», тоді як «додаток» від «додавати». І в першому випадку є смисл, тоді як в другому втрачений остаточно і безповоротно. Обговорювали вже тут сто разів.

Витягати зі слова “застосунок” морфему “стосунок”
Я, ваапшэта, просто озвучил свои ощещения, как носителя языка. Мне слово “застосунок” кажется странным/неестественным, это именно ощущение, а не морфемы.
Другой вопрос:
Почему “застосунок”, а не “застосування”? Второе мне звучит более естественно.
.
І в першому випадку є смисл
А от слово “смисл” я от украиноговорящих не слышал. Посему вопрос: вы из украиноговорящего среды, какой регион и тд? (Тут не троллинг, я и правду хочу понять с кем говорю)
А от слово “смисл” я от украиноговорящих не слышал.
uk.wikipedia.org/wiki/Смисл

Не знаю де ви там росли і якою мовою спілкувалися, але Роман абсолютно правий. “Смисл” — від “мислити”, тобто, “про що тут мислиться”.

Не знаю де ви там росли і яков мовою спілкувалися, але Роман абсолютно правил.
Первое же предложение по вашей ссылке
Зміст — значення чогось
.
Проблема с этим словом такая же как и с “застосунок” или “могутність .NET”: украиноговорящий человек (тот кто вырос в этой среде) так не будет говорить (по крайней мере в том контексте как их использовали тут) в отличии от людей которые учили язык по академическим трудам и стихах Кобзаря.

Чим глибше в ліс — тим більші білки.

украиноговорящий человек
(тот кто вырос в этой среде) так не будет говорить
Я виріс в Україні і Я так розмовляю! Думаю, так як я — ще багато людей висловлює свої думки.
Вот говорят: «На вкус и цвет товарищей нет».
Я виріс в Україні і Я так розмовляю!
И вы не знаете отличий слов “могутність” и “потужність”? Тогда это вам dou.ua/...-comment#624940
в отличии от людей которые учили язык по академическим трудам и стихах Кобзаря

Ви розумієте в чому проблема... Біда в тім, що недостатньо вживати слова, які ви знайшли в словнику української мови.Деякі речі треба елементарно розуміти. Наприклад, середньостатистичний мешканець райцентру ніколи не зрозуміє чому в англійській мові turn on — ввімкнути, а turn out — виявитися. Чому у нас невістка, кум, теща і т.д., а у них «relative in law». Але коли вони починають вчити мову і їм кажуть, що так треба, то куди дітися — вчать. Як чуже, то все — треба підкорятися. А як своя, то можна і хуй покласти. А шо? Я ж так привик.

А от слово «смисл» я от украиноговорящих не слышал
Є таке слово в українській мові, але «украиноговорящие» в першому поколінні, на кшталт мене, їм практично не користуються, щоб не звинуватили в тому, що розмовляють русизмами. Ось як ви зараз. Пропоную вам скористатись корпусом української мови та самому подивитись.
Взагалі, в українській мові багато слів, які втратили популярність, бо їх почали плутати з москальщиною. Наприклад: руська людина, руська мова, мужчина — це все, насправді, наше.
руська людина, руська мова, мужчина — це все, насправді, наше.
Тут я и не спорю, более того эти слова вполне широко используются в языке.
И слово “смысл” так же используют, просто с другим оттенком, когда надо подчеркнуть важность, целостность и возможно даже какую-то “возвышенность”, того о чем говорят. А вот повседневно это будет “зміст” или же как вы заметили с большой долей вероятности русизм (но не факт).
Взагалі, в українській мова богата слів, які втратили популярність, бо їх почали плутати з москальщиною.
А это уже не важно почему они утратили популярность, важно что утратили. Я не имею ничего против того чтобы развивать украинский язык, но это вряд ли получится, ибо язык развивается сам.
Вы — “украиноговорящий в первом поколении” (я так понял из русскоговорящий семьи), это замечательно, но важно учить __живой__ язык, а не погрязнуть в шароварщине (или более современный, и немного различающийся, термин вышеватничество).
.
Возвращаясь к “застосунок”, не важ как его называют “затосунок”, “застосування”, “додаток”, “аплікація”. Важно то как примут носители языка. У меня и у многих знакомых слово “застосунок” вызывает в лучшем случае улыбку (или скорее непонимание). Лично мне кажется что слово “аплікація” подошло бы лучше для обозначения ПО. Но вот массы приняли почему-то “додаток”, хотя он и “застосування” начали использоваться где-то в одно и то же время. Ну и пусть “додаток” — это признак “кафедры истории КПСС”, это не так важно если его приняли массы. Та же история и со словом “смисл” — если примут то так и будет, но вот в той же вики статья начинается с “Зміст — значення чогось”.

Живой язик це Вэрка Сердючка та тулітся тудой-сюдой. Я не буде це вчити.

Живой язык це Вэрка Сердючка та тулітся тубой-сюдой
Нет. Начните со средств массовой информации, например.

По-вашому там працюють якісь інші люди? Часи, коли ті, хто вчився на журналіста, працювали журналістами, пройшли.
Налаштували spell checker і думають, що на цьому все.

Засоби масової інформації в 90-ті як раз і створювали цей живий язик, а не лізли в «апорт» чи «рамблер» шукати там «додатки». Всі ці «маєш рацію» та «міліціянти» з яких східняки ржали в 90-ті, та які зараз стали нормою, заслуга декількох мовознавців, які співпрацювали з телебаченням тоді.

та як зараз стали нормой, заслуга декількох мовознавців, які співпрацювали з телебаченням тоді.
Перечитайте еще раз dou.ua/...project/#624941 там много текста, но все же.
Точно так же если бы все читали украинскую доку МСа, то, наверное, был бы и “застосунок”, но вот почему-то сейчас он “додаток” (“аппликация” было бы лучше, но все таки “додаток”)

Я не знаю жодної людини, що користується словом Додаток. Бо це тупа та ще й неправильна калька з російської. Їй може користуватись тільки той, для кого українська потрібна «наот’єбись» в дипломі.

Я не знаю жодної люднее, що користується словом Додаток.
В повседневном общении наиболее часто встречается таки слово “программа”. “Додаток” и “застосування” так же встречаются, хоть и звучат они как “міліціянт”, но вот “застосунок” — это вообще “міліційник”.
Бо це тупа та ще й неправильна калька з російської.
Нет. “Калька” это было бы какое-то “прикладення”. “Додаток” просто отражает тот факт что русский язык довольно сильно вплетен в украинское общество. К этому можно (а в некотором контексте даже нужно) относится негативно, но это факт.

Додаток це як раз і є дослівний переклад «приложения».
Мені це чесно кажучи вже набридло. Всі аргументи викладені в цій темі, це вже починається тупе бла-бла-бла.

Хех, мабуть, Ви хочете взнати координати GPS цієї людини?

Я, ваапшэта, просто озвучил свои ощещения, как носителя языка. Мне слово «застосунок» кажется странным/неестественным, это именно ощущение, а не морфемы.
Мені цікаво носій, якої мови? Мені здається, що в українській мові немає такого символу як «ы» ... Мабуть, Ви, маєте бажання розширити українську абетку?
Мабуть, ми чогось не знаємо, про Ваше таке цікаве середовище, де люди спілкуються виключно державною мовою, бо в нашому «горно-печерному» середовищі тільки недавно пройшло НТР, то ми перейшли з видовбування на стінах до виточування на глиняних дощечках?
Чому, Ви, переходите на особистості? Вам, в кайф докопатися до слів без наявності якось підґрунтя, а лише з свого відчуття? Дійсно цікаво? З Ваших коментарів видно, цікаво не те, що треба. Прочитайте, ще раз назву статті! Ведіть дискусію про контекст, якщо він на Ваш погляд є, і, якщо Вам цікаво.
Тут троллинг, ...
Так, я з Вами в цьому згоден.

P.S. ? — це були риторичні запитання, на всякий випадок напишу.

Вам, в кайф докопатися до слів без наявності якось підґрунтя, а лише з свого відчуття?
Я просто не люблю шараварщину и вышеватничество.
Прочитайте, ще раз назву статті! Ведать дискусію про контекст
Можете отвечать на этот коммент: dou.ua/...-comment#623221

Хочу дещо внести ясності, з мого досвіду:
1) Фреймворки на HTML + JS.
Треба знати в яких випадках їх доцільно використовувати.
Те, що читав в кометарях, що інші вдало використовують і без проблем — це мабуть не так, або їх застосунки не досить великі.
Був досвід розробки застосунку на даному типу фрейморкі (не буду називати, по суті вони всі майже однакові).
Коли ти завертаєш JS MVC фреймворк в app і надієшся, що все запрацює у WebView як у браузері, хех... і буде все однаково на всіх платформах...
Наприклад такі штуки, як завантаження фото, редіректи (# - доставляли цей символ, щоб працювало, причому деякі посилання та ін. працювали на платформах по-різному, були різні гілки під кожну з платформ, через зміни...), реєстрація через соціалки (їх було багатенько...), так що той метод, який працював у браузері — на девайсі не робив, відкриття дочірніх сторінок (target _blank) та ін.
Також думки «Як би оце мені зредіректить з сервака на localhost?» + трабли з куками, і тут розумієш, що це ще й апп для моб? %)
Багато що довелося змінювати на сервері конкретно для апа (в логіці).
Також до деяких функцій телефону немає доступу. Не кажу, що це неможливо, але присутні добрі костилі.
Повторюся, під конкретну задачу треба застосовувати доцільний метод, а не пихати одне і теж під все (те, що знаєш).

2) На рахунок швидкості розробки, то тут можна довго дискутувати. Але для розборки на iOS і на Android треба знати дві мови, які досить несхожі між собою. Далі доведеться писати аналогічні штуки, наприклад, для взаємодії з сервером та ін., по-різному, але схоже.
Те, що в нашому проекті відрізнялося — це View (яке так само треба робити у випадку розрізненої розробки) та контролери/актівіті та деякі специфічні штуки (локалізація, тощо) але це ще можна спростити, розробивши гарну архітектуру й змінюючи лише імплементацію. А от якщо замовник захоче ще й Windows Phone, то це плюс ще одна мова та специфічні штуки...
Тому тут краще самі вирішуйте щодо оптимальних рішень. А ще краще — пробуйте :)

P.S: Хочу звернутися до модератора, що редагував мою статтю.
Я не буду з’ясовувати лінгвістику та все таке інше але додам чому Ви після першого коментаря

«мобільного застосунку»... застосунку, серьезно? я сломал глаза читая заголовок
вирішили змінити назву? Так зручно, так інші пишуть/вживають?... А якщо хтось інший напише, що йому ще щось не подобається, Ви також зміните одразу?
Тут — dou.ua/add-post я чомусь не побачив ніяких вимог до статей, що вони можуть бути відредаговані, і навіть не вказано, в якому форматі вам їх надсилати.
Мені цікаво, якщо Ви не фахівець з тієї чи іншої сфери, як Ви може судити про термінологію? А раптом Ваші правки змінять суть написаного?... Мені, як автору, захотілося використати саме це слово, а те що воно ріже очі людям, що спілкуються й пишуть російською — то ОК, це їх право сказати своє «фе», але для мене (і тим паче для Вас) це не мало б бути вагомою підставою редагувати тексти в угоду невдоволеним.

До речі, при редагуванні Ви припустилися помилки (перевірив — у моєму варіанті, що я Вам надсилав, по-іншому написано): «Как задеплоить на Symphony2» — правильно було Symfony2 (дякую Олександру, що помітив). Symfony — це фреймворк, тоді як Symphony — це CMS (www.getsymphony.com)

Я зараз спеціально зайшов пересвідчитися на один цікавий сервіс, широко відомий у вузьких колах:
s2.postimg.org/...5p52h/image.jpg — як не дивно, однак жоден з варіантів перекладу не відповідає тому смислу, який нам треба.
s8.postimg.org/...7uv5x/image.jpg
s12.postimg.org/...8kgt9/image.jpg

Я гадав, що DOU (на відміну від Хабру конкуруючих ресурсів) був створений якраз для розвитку українського ІТ-ком’юніті, зі своїми особливостями (включаючи й мовні). Чи я помилявся?...

Почему изменила заголовок: посмотрела, как больше принято употреблять. Я ниже приводила в пример результаты по Ютубу, то же самое и в Гугле — по “мобільний додаток” выдает чуть более 1 млн результатов, по “мобільний застосунок” — всего 8,6 тыс. Так что дело не в недовольных (они всегда найдутся), а в том, что с заголовком “додаток” у заинтересованных читателей больше шансов найти эту статью.

На счет общих процессов публикации — статьи для Ленте всегда вычитываются и модерируются, потому что мы хотим их сделать максимально удобными для восприятия.
Все вопросы с авторами обычно решаем в частном порядке. Если автор хочет перед публикацией проверить поправленный редакцией текст — без проблем, просто нужно предупредить заранее, чтобы мы подождали аппрува и не публиковали.

В dou.ua/add-post этот момент надо дописать, согласна.

Symphony сейчас исправлю, прошу прощение за ошибку.

Отже, пані редактор взяла назад свої слова )

Если Юрию как автору статью принципиально именно «застосунок», то верну назад.
Отже, пан редактор взяла назад свои слова )
Вы забыли добавить «Крымнаш»

А ви на мій пост не відповили нище...Повторю тут:
Можете присоромити ще google play.
Низку Українських каналів(YOUTUBE):
Для айфонів з’явився мобільний додаток ТСН.ua
Українці створили мобільний додаток «НАТО — квест»
У Львові студент-програміст розробив ІТ-додаток для
А ще замалювати ці плакати:
Реклама Nokia з фразою winPhone з ДОДАТКАМИ Андроід.
P.S.Сотні інших реклам і пропозицій встановити додатки наводити не буду)))

Коментар порушує правила спільноти і видалений модераторами.

Коментар порушує правила спільноти і видалений модераторами.

Коментар порушує правила спільноти і видалений модераторами.

Очень грустно наблюдать как DOU превращается в прокремлевский рупор вслед за хабрахабром и рсдн :(

Ахаха))) Пєтросян))) Вище комєнт... Особливо радують прокремлевский гугл плей, тсн, 24(канал з львова), реклами на бігБордах)))

кто-то безграмотный перевел (не исключено, что и москаль, так как часто локализацией на украинский язык занимались в рф), остальные по глупости подхватили, можешь рожать дальше

Неужели так сложно просто признать свою ошибку и исправить взад? Вот обязательно надо упираться.

В чому «ошибка»? Що десь на горі в полонині кажуть вивірка бігає бамбучі гризе? Так і я маю читати про ті бамбучі???
Да всі пишуть «додаток». Воно розповсюджене!!! Вийдіть на вулицю спитайте звичайних юзерів, що таке застосунок)))
Я вважаю дії редакції на 100% коректні)))

Похоже, примерно такой же логикой оправдывались ушлепки, переименовавшие «Киевскую русь» в «Древнерусское государство» на википедии

Через таких мудаків мені доводиться всім, кого пустили в різноманітні канцелярії, по кілька разів нагадувати, що імені Євгеній — не існує. Є Євген. І транслітом воно пишеться як Yevhen, а не YEVGEN.

І що, що всі так говорять? Теж мені, приклад знайшов.

а меня бесит транслитерация моего имени. решил проблему кардинально (:

Ви хоч спробували пошукати де воно використовується? uk.wikipedia.org/wiki/Застосунок
А за більшість того, що пишуть «звичайні юзери» в школі двійки ставили і будуть ставити.
І чого редакція нав’язує свою точку зору, ігноруючі авторський стиль? Ні граматичної, ні стилістичної помилки у автора нема. Дії редакції — перевищення і зневага.

дело не в недовольных (они всегда найдутся), а в том, что с заголовком «додаток» у заинтересованных читателей больше шансов найти эту статью.
Моя думка, що авторитетні видання мають задавати еталони, а не ставити SEO вище всього.
Так, наприклад, по слову «Kiev» Гугл видасть 144 млн співпадінь, тоді як по «Kyiv» — 24 млн. (сподіваюся, у вас же немає сумнівів щодо того, яка з цих двох транслітерацій є правильною й офіційною?)). З часом, звісно, статистика зміниться. То чи є сенс змінювати правильні форми на неправильні на догоду невігласам і пошуковим сервісам?...

<<Мені, як автору, захотілося використати саме це слово, а те що воно ріже очі людям, що спілкуються й пишуть російською — то ОК>>
Я бачу батєнька ви ще той русофоб)))
А чого їм саме ріже???

Я не знаю де ви викопали те слово) Буду вдячний якщо наведете мені реальні приклади серйозний видань. Можете вийти на вулицю і спитати людей що таке додаток, а що таке застосунок. Побачите результат)
Це всеодно що функція і метод. Ті ж яйця тільки в профіль)))

P.S. Тут ви не праві зовсім. Редакція повина доводити до читачів коректний текст, який «ЛЕГКО» читається, «ЗРОЗУМІЛИЙ» і має розповсюджену «ЗРОЗУМІЛУ» термінологію... Тому, на мою думку, редакція повністью права.

Я бачу, батєнька, ви ще той українофоб)))

Я не знаю де ви викопали те слово) Буду вдячний якщо наведете мені реальні приклади серйозний видань.
Вам уже давали купу прикладів видань та організацій, що послуговуються правильною термінологією: Wikipedia, Microsoft, Bitrix, Kyivstar, тощо. Для вас же всі ці приклади несуттєві, головне де більше співпадінь в YouTube — ось це серйозний аргумент, не підкопаєшся...

Зайдіть в будь-який магазин моб, планшетів і скажіть:"А які в цього телефона застосунки?«.
Я вже бачу як продавець перечислює не програми, а «можна дзвонити, фоткатися і тд» або швидше скаже «ШО?»)

Типа, если вы спросите додатки, вам не про наушники и зарядку расскажут.

Найбільш незручним для мене при розробці під iOS було те, що кожного разу коли щось змінював в storyboard­і, XCode закривався після синхронізації. Це виникло після чергового оновлення SDK, яке в них досить часте, і далі доводилося спочатку відкривати storyboard в xCode через Xamarin Studio.
А можно подробнее из-за чего данная проблема-то возникает?

Ми таки і не знайшли, як її вирішити. Проблема ця виникла після оновлення ксамаріну. Спочатку думали, що це був, якийсь прапорець в налаштуваннях, бо виникла вона в одного розробника; однак коли інші оновилися, то в них те саме з’явилося.
Та версія, котру ми використовували, мала цю проблему, але вона створювала лише незначні незручності для розробника при редагуванні storyboard і xib, та жодним чином не впливала на застосунок.
На даний момент, після оновлення/перевстановлення XCode все працює нормально.

В мене ця проблема зникла після того, як я перевстановив xCode, і в черговий раз оновив Xamarin.

Очень интересно, спасибо!

Заметил, что статья написана по всем канонам сочинений на ЗНО :)

Архітектурні рішення та CASE засоби

И, естественно, ни слова про Continuous Integration. Так типично для mobile community, увы...

Альтернативою є PCL, але вона не дозволяє використовувати директиви компілятора (наприклад #if __ANDROID__) та ін.

Если это для вас — проблема, то вы, должно быть, не то выносили в общую часть. И у вас некоторые проблемы с архитектурой. Либо это — экзотика, которую можно было бы решить точечно, а остальное — культурно оформить в PCL.

Shared Project — это, по сути, контейнер для множественного drag&drop исходников.

Для початку шукаємо, які технології може нам запропонувати сучасний світ. Маю на увазі такі:

RubyMotion забыли www.rubymotion.com
P.S. но xamarin — всё же, лучше.

Xamarin.Forms — крос­платформенний інструментарій, який дозволяє розробникам легко створювати користувацькі інтерфейси

Так говорят marketing материалы самого xamarin. На деле — тонны костылей и “if” statements с проверками платформы. Плюс, xamarin свои же принципы (одна логика и максимально customized GUI) попирает. Может, когда-нибудь... Но вряд ли, imho

на нем сейчас можно сделать практически тоже по UI что и на HTML5. Хотя сильно проще чем на html

Ну, я эти forms попробовал. Впечатления — «ну их на фиг».
Во-первых, они сырые.
Во-вторых, custom UI на них не сделаешь.
В-третьих, даже в простом UI нужно костылять «if iOS/if android»
=====

А marketing material, HTML5 и прочие bingo-buzzwords...
Короче, разочаровывают они.

Статья о Xamarin разработке, а половина комментов к статье о том как правильно написать «додаток» или все же «застосунок»... (facepalm.jpg).

Статья о Xamarin разработке, а половина комментов к статье о том как правильно написать
Это куда лучше чем статья «не про национализм» и половина комментариев о том что автор «умственно опережающий».

Тому що для не-мобільних розробників та для тих, хто мобайлщиків, хто не збирається тягнути C# на iOS це єдине, що є цікавого в статті.

хоч гілку й почав троль, а повелася «редакторка» без книжної традиції,
що виправдовується власним невіглаством (sic(k|!))
та надає перевагу youtube над експертною думкою,
все рівно гілка, як і цей коментар, є bikeshedding (закон Паркінсона про тривіальне).
була б числова репутація, зрізати флеймерам а особливо «редакторці».
думаю можна просто написати особисто.

У мене тільки одне питання: навіщо ви вбили iOS?... Якщо на андроїд пристроях проблему GC та його апетитів щодо RAM вирішують банально більшою кількістю пам’яті, то що робити бідним користувачам вашої програми під iOS? Ви притягнули туди .NET run-time, спростивши собі життя, проте зробивши з пристрою користувача цеглину )))
Я два роки працюю над крос платформеними проектами і можу закластися на шо завгодно, ствержуючи, що вивчити Swift та Java (при наявності нормального бекграунду в програмуванні) у якості, достатній для написання «соціалки» — це все-одно бистріше, ніж ліпити монстра, нашинкованого фіксами окремо для iOS і окремо для андроід!
PS Якщо вже так кортіло це зробити, то соціалка — це cordova + ionic + angular.

Я бы расстроился, если бы мне предложили бы написать тоже самое только еще и на Java. А потом еще больше расстроился, если бы предложили добавит новую фичу.

Уверяю, что лопатить stackoverflow, github issues и все остальные источники, собирать-пересобирать проект после очередного (стотысячного по счету) «а вдруг вот так заработает», доставляет намного меньше удовольствия -) Java — она, конечно, в нафталине, но в рамках «взял фреймворк и дергаешь методы» вполне съедобна. А еще я практически уверен, что ответов на вопросы в рамках «своих» технологий намного больше, чем ответов на вопросы «как заставить вот эту штуку работать вот там»..

що робити бідним користувачам вашої програми під iOS? Ви притягнули туди .NET run-time, спростивши собі життя, проте зробивши з пристрою користувача цеглину )))

Если не забывать оборачивать всякие UIImage/NSData и прочие толстые вещи в “using{}”, то утечек и проблем у пользователей не будет. Если писать “как привык на .NET под desktop”, то извините. Короче, проблема не в инструменте, если вы понимаете о чем я.

P.S. У меня тоже сперва “текло и крешилось”. После грамотного внедрения IDisposable — перестало.

поддерживаю. перестаешь писать как под десктоп и начинаешь думать — проблемы исчезают.

вот смысл Xamarin, если UI везде писать с нуля?

Приложения это ведь не только UI. А переиспользовать бизнес логику (до 80% кода) — довольно удобно.

Хорошо обобщается
1. Работа с сетью
2. Cache (если не использовать ГореДату и прочие “сильно platform specific” штуки)
3. Собственно, ваша логика.
Ради этого — стоит.

>> Unlike other cross-platform mobile frameworks that only offer lowest common denominator experiences through UI abstraction libraries, we make 100% of the iOS and Android APIs available through our native bindings. Xamarin developers deliver high performance, fully native experiences and also share between 60 and 100% of their source code across platforms.
xamarin.com/faq
ну и в faq заглянули бы...

вы замеряли выгоду? есть у нас разработка апа на iOS и Android нативные. Сколько едениц времени займет тоже самое на Xamarin?

FAQ — пишут создатели платформы, которые всячески промоутят свое детище. А мне интересен опыт разработчиков.

Сколько % времени в среднем апе у вас занимает логика, а сколько клевый UI?

Опыт разработчика. Выносить [1..3] пункты выше — работает.
Делать «GUI всевластья» один, красивый, на все платформы — не работает. получаем «работает везде одинаково уродливо».

Сколько % времени в среднем апе у вас занимает логика, а сколько клевый UI?
Какого ответа вы, собственно, ждете? Я пишу код, а не меряю.
В зависимости от общей архитектуры (толстый/тонкий клиент) может быть очень по-разному.
вы замеряли выгоду?
Для этого нужно сделать три прожекта параллельно. Вы бы такое сделали? Вот и у нас — выбрали инструмент и с его помощью пилим.

вы замеряли выгоду или еще нет? Кто-то ее замерял? или пилим потому что прикольно?

. Вы бы такое сделали?
да. делаем iOS/Android параллельно. очень успешно.

один партнер смотрел в сторону Xamarin, но понял, что с MDM интеграциями жизни ему на Xamarin не будет. отказался.

да. делаем iOS/Android параллельно. очень успешно.

Вы, похоже, не поняли моего вопроса. При «очень успешно» для native iOS/Android вы разрабатываете (разрабатывали бы) то же самое, но на xamarin? А как иначе «измерить выгоду»?

P.S. Под выгодой я понимаю «лучше ли xamarin, чем native 2шт. или нет?».

я не говорю что Xamarin хорошо. наоборот, опыт всех знакомых и некоторых больших компаний говорит о том, что кросс-платформенные решения (Titanium, Phonegap, etc) пока приносят больше головной боли, чем профита. Про Xamarin, у меня очень пока нет подтвержденной информации. Вот она меня и интересует :)

профит меряется легко при достаточной выборке. Если есть 3-5 «типичных» проектов на iOS + Android и затраченное на них время и есть похожий проект на Xamarin (развертываемый на те самые iOS + Android) — можно сравнить затраченное время.

внезапный вопрос. под «типичные проекты» на ios и ведроид, наверное, набирали разработчиков со знанием java и обжектив си?
а под ксамарин кого набрали? неужели мидлов и сеньоров по сишарпу?
зачастую (из моей практики и наблюдений), люди пришедшие из нейтив ведроид или айос в ксамарин начинают писать на java или обжективси используя лексемы сишарпа и библиотеки .Net.

или пилим потому что прикольно?

Ну, перед покупкой xanmarin были пляски с trial version, проверка «можно ли сделать то, что нужно» и прочие proof of concept.
Эксперимент «напедалить XYZ на xamarin, напедалить этот же XYZ на iOS/Android и сравнить время» — мы не проводили. Интересно, как бы вы замотивировали заказчика на такое...

я заказчика на такое не мотивировал бы. Это его деньги и ему их тратить. Другой вопрос, что если/когда проект выйдете за рамки неких велосипедов — крос-платформенная разработка может начать резко стоить в разы дороже чем нативная. Но это вы сможете подтвердить или опровергнуть позже :)

читаю FAQ.

How long does it take to add support for a new release from Apple or Google?
A few hours for iOS and very soon for Android. We have extensive tooling and sophisticated processes for binding new APIs from Apple and Google when they are released, as evidenced by our same-day support for iOS 5, iOS 6, iOS 6.1, and iOS 7.

т.е. iOS8 еще не поддерживают?

как нас счет профилирования? я могу использовать все XCode тулзы для профилирования памяти, CoreAnimation, etc?

Всякие Cocoa объекты, к которым приделаны bindings — естественно, Instruments.app покажет (dtrace-у всё равно чем собрано). Шарповые объекты — естественно, не покажет (ибо нет mapping на cocoa, NSObject итп.). Для этого xamarin свои tools сбацали. Плюс, можно под винды тесты на busyness logic запустить. А там этого добра — навалом.

А с чего такое неприятие студии? Я так себе помню,что студия умеет собирать Xamarin для всех платформ(по крайней мере опцию видел, собирать не под что, потому не пробовал).

Под Android студия собирает, для ios нужен мак

Так вроде вроде таргет такой есть для билда? xamarin.com/visual-studio
Мне просто интересно в чем проблема. Что бы знать, вдруг пригодиться.

Я имел в виду что можно под ios в VS разрабатывать. Но для того что бы дебажить или компилить нужен мак с запущенным на нем Build Host от Xamarin.
Когда вы нажимаете Run в студии, симулятор работает на маке а в windows пробрасывается что-то вроде RDP. Так же если вы хотите тестировать на реальном устройстве, девайс должен быть подключен к маку

Спасибо за детальное пояснение, буду знать. Статья интересная,за нее так же спасибо

Под iOS идет удаленная компиляция. То есть, в студии жмакаешь кнопку ==> mac собирает ==> артефакты копируются в папочку «bin/Release»

Спасибо за статью и интересный опыт.

Який тип котракту у вас був? Клієнт помітив затримку з релізом?

Time & Material. Клієнт тримав руку на пульсі через щоденні скайп-колли з менеджером, тож був в курсі темпу розробки.

«мобільного застосунку»... застосунку, серьезно? я сломал глаза читая заголовок

исправила на «додаток», так всё же будет корректней

Чим же, цікаво, «додаток» коректніший за «застосунок»? ) Певно, ви перекладаєте з російської «приложение», а не з англійської «application». Семантичний смисл полягає у тому, що цей софт «застосовується» (apply), в рос. варіанті «прикладьівается» (звідси й «приложение»). Тобто це не «приложение» в смислі «вложение» (тоді б резонно було перекладати як «додаток»), а саме як «приложение (усилий/знаний/whatever)». В українській мові еквівалентом є саме «застосування», а не «додавання». Тому й застосунок, а не додаток. Мені б на місці редактора було соромно. uk.wikipedia.org/...wiki/Застосунок

В українській мові еквівалентом є саме «застосування», а не «додавання».

Согласна, но
1) академически нет верного варианта перевода,
2) слово «додаток» в украинском есть, а «застосунок» — нет.
(ukrlit.org/..._v_11_tomakh/за)

Если Юрию как автору статью принципиально именно «застосунок», то верну назад.

Валентина, в якому з варіантів тлумачення на ukrlit.org/...slovnyk/додаток «додаток» означає програму? Я ж думаю, Ви, як редактор, чудово розумієте, що це слово є неологізмом, тому марно шукати його в старих словниках (де навіть про Інтернет не знають ukrlit.org/...lovnyk/інтернет :)). І, гадаю, погодитеся, що семантично «застосунок» несе правильний зміст, тоді як «додаток» є просто калькою з російської, що не несе жодного смислу (до чого додається цей софт? Ні до чого. Він застосовується).
Детальніше про цю проблему горе-перекладачів, що перекладають з російської, а не з англійської, там же у Вікіпедії розписано: uk.wikipedia.org/....BE.D0.B2.D1.96

«Застосунок» не несе ніякого змісту, оскільки саме по собі слово незрозуміле. Корінь проблеми в тому, що немає прямого перекладу «application» (або навіть «app», якщо ми говоримо в контексті мобайла). Найкращим рішенням було б придумати цілком нове слово для перекладу, але критики не дадуть йому прижитися :)

«Додаток» краще за «застосунок» хоча б тим, що нормально звучить.

Найкращим рішенням було б придумати цілком нове слово для перекладу, але критики не дадуть йому прижитися :)
Так «застосунок» і є цілком новим словом, що, до того ж, передає правильну семантику ) А що критики не дадуть прижитися — так да, це вже видно навіть у цих коментах. Все, що не так, як у російській — автоматично «неправильне», «незрозуміле» й «смішне»...
Мова, особливо в контексті стрімкого розвитку ІТ — це те, що створюємо ми самі. Зараз мені як аргумент дають посилання на старі словники Білодіда (1980 р.) і Грінченка (1909 р.), через кілька років, певне, даватимуть лінк на DOU: «Бачиш, навіть на авторитетному DOU пишуть додаток, значить так і є правильно». Замкнене коло %)
Мова, особливо в контексті стрімкого розвитку ІТ — це те, що створюємо ми самі.
— ви абсолютно праві :)

Конкретно щодо «застосунка» — слово морфологічно походить від «стосунок», тому така критика. Взагалі англійська мова досить зручна, щоб використовувати загальноприйняті слова в новому контексті, чого не скажеш про нашу рідну мову.

Так що моя суб’єктивна думка: треба придумати нове слово, навіть якщо це буде якась банальщина типу «аплікуха».

applied->application
прикладной/ая->приложение
прикладний->додаток?

Горжусь украинским языком, не стали как эти москали просто делать кальку с английского а выдумали что-то своё.

Тільки що спеціально подивився в гуглі як перекладають інші слов’яни. Умовно можна поділити:

Нормальні європейці:

польська - aplikacja
чеська — aplikace
словацька — aplikácie
хорватсьяка — aplikacija
сербська — апликација
македонська — апликација
боснійська — aplikativni softver (взяв з вікі)

«Болгарский слон — лучший друг российского слона»

російська — приложение
болгарська — приложение

Країни, де філологами працюють хохли — колишні викладачі Історії КПРС, тому вони використовують тупу та неправильну кальку з російської:

білоруська — дадатак
українська — додаток

Ще осторонь стоїть:

словенська — uporaba (дослівно: застосування)

Немає ні гуглі ані в вікі:
лужицька — ?

Висновок: давайте все ж таки не будемо тупими хохлами, та будемо використовувати загальнослов’янську практику.

А “програма” не подходит только потому что в английском применяется (устаревшее судя по этимологии) “application”? Давайте лучше делать кальки с английского, чем с русскава. Рашисты сегодня не в тренде.

Кстати, так и не понял почему “додадок до операційної системи” звучит некорректно.

А вообще мне нравилось делать аппликации в детстве. Уже тогда понимал что буду программистом.

Програма вона й в Африці програма: програма, прикладна програма — це все є в українській мові.

Що до додатку — тому що в оригіналі там мається на увазі не додавання до операційної системи, а програма, що має практичне застосування, на відміну від системних, що забезпечують роботу системи.

Наприклад, з оксфордського словнику:

Application (also application program) Computing A program or piece of software designed to fulfil a particular purpose.

Порівняйте з іншими значеннями цього ж слова (приклади звідти ж):

the application of general rules to particular cases
this principle has no application to the present case
the job takes a great deal of patience and application

прикладна програма
Вот на этом я бы и становился при поиске консенсуса.
Ну, или “прикладок”, если уже заниматься словотворчеством, как в случае с “застосунком”. Но тогда уже лучше “аплікуха”.
Кстати, так и не понял почему “додадок до операційної системи” звучит некорректно.
потому что вы путаете тёплое с мягким.

Приложение — это не потому что оно прикладывается к чему-то как некое дополнение (додаток). Всё с точностью наоборот — потому что оно имеет прикладное, практическое значение/применение(застосування).

Исторически сложилось разделение на системное ПО (необходимое для функционирования системы, вещь в себе, само по себе никому не нужное) и прикладное ПО — несущее собственно практический смысл.
Поэтому да, программа она и по-украински — “програма”, но если мы хотим сказать “приложение” — то это никак не “додаток”.

Глянув в Google Play — там “додаток”: i.imgur.com/7azMUc2.png

І в Android 5 теж «додаток»:
i.imgur.com/Aa8ZudT.png

А як це зараз виглядає/називається в айфонах?

В українській мові еквівалентом є саме “застосування”, а не “додавання”. Тому й застосунок, а не додаток. Мені б на місці редактора було соромно.
Так “застосування” или “застосунок”? Мне б на вашем месте было соромно (не помню как оно на русском будет). :)
.
А если меньше троллинга, то исходя из вашей же ссылки на вики: “застосунок” — это не столько термин, сколько демонстрация некомпетентности переводчиков которые работали для МСа.
Так «застосування» или «застосунок»?
Це називається «дериватив». Застосування — це процес, застосунок — результат, предмет. Те, що російська мова не має відповідних аналогів, ще не означає, що в українській їх також не може бути )

Аплікація, че уж там, будем как в садике, апликации делать.

Приложение (application) — древний термин. Он появился, чтобы отличать системное программирование от прикладного. Сначала писались операционные системы, а уж к ним стало возможно «прикладывать» приложения. Приложения используют функции операционных систем. Вот такая тут этимология.

Можете присоромити ще google play.

Низку Українських каналів(YOUTUBE):
Для айфонів з’явився мобільний додаток ТСН.ua
Українці створили мобільний додаток «НАТО — квест»
У Львові студент-програміст розробив ІТ-додаток для

А ще замалювати ці плакати:
Реклама Nokia з фразою winPhone з ДОДАТКАМИ Андроід.

P.S.Сотні інших реклам і пропозицій встановити додатки наводити не буду)))

Валентина, пожалуйста, не коверкайте украинский язык и исправьте обратно на «застосунок»

Що характерно, щоб виправити правильний термін автора, на власний неправильний — редактор дозволу не питала. А тепер же, щоб повернути назад як було, то автор має її про це просити :)

Если Юрию как автору статью принципиально именно «застосунок», то верну назад.

Тут ситуация такая, что официально правильного или неправильного нет. Я не лингвист, поэтому больше думаю о юзабильности, чем о языковых формальностях перевода.
Вариант “додаток” используется чаще. В ютубе по запросу “мобільний додаток” выдается около 15 000 результатов, по “мобільний застосунок” — всего лишь 24.
Так сложилось, что это слово уже прижилось, так что читатель вероятней будет гуглить именно “додаток”.
Согласна, что неправильные слова нужно менять на правильные, но с моей точки зрения здесь не тот случай.

А скажіть будь ласка чого це найвідоміші канали України коверкають?(YOUTUBE):
Для айфонів з’явився мобільний додаток ТСН.ua
Українці створили мобільний додаток «НАТО — квест»
У Львові студент-програміст розробив ІТ-додаток для

Чого по всьому Києву висіла реклама Nokia з фразою winPhone з ДОДАТКАМИ АНДРОІД?
P.S. Перший раз прочитав застосунок 2 хв думав що автор хоче сказати...

Смотрели ли вы в сторону MvvmCross фреймворка? Если да, то почему не решили его использовать?

Вирішили робити на MVC, оскільки частина команди прийшла з Objective-C і була незнайома з .NET. Тож ми вирішили зменшити ризики і робити на MVC. Згоден, що, можливо, був сенс застосувати MvvmCross

Кстати iOS разработчики не сопротивлялись против C# и Xamarin? И сколько времени ушло у них на изучение C# и .NET?

Проект був цікавий, всі «загорілися ідеєю», тож ніякого супротиву вивченню нових технологій не було. Спочатку, звісно, були деякі труднощі з семантикою мови, але по прикладам коду, який був написаний іншою частиною команди, швидко ввійшли в курс справи. Після введення code review всією командою (при pull request’ах), пробіли в знаннях швидко заповнилися.

Там не будет поддержки Roslyn, который со временем все равно прикрутят к Xamarin Studio

посмотрим
я бы занялся поддержкой Consulo, а не XS

в форке анализ кода идёт на Java-е, а Roslyn .Net-ный. Roslyn team всегда будет поддерживать корректный и актуальный пасинг\компиляцию кода. А дублировать анализ Net кода на Java — имхо глупо. Конечно, можно запускать отдельно парсер\анализатор с Roslyn, но он тратит много времени на первичную инициализацию(парсинг referenced либ\etc), и делать это каждый раз не выгодно. Либо иметь процесс с Roslyn-ом, который будет висеть и парсить код по запросу, но тогда мы приходим к OmniSharp-у, который это уже умеет делать (правда пока без Roslyn-а, на основе NRefactory (MonoDevelop), но миграция на Roslyn у них в планах есть).

ок, никто не говорил, что будет легко
имхо, прикрутить Roslyn к хорошей IDE(используя ее как базу) легче, чем превратить нестабильную IDE в хорошую(даже несмотря на обещанную интеграцию c Roslyn, которая тоже может оказаться «не фонтан»)
но это все имхо :)

мне кажется, это не совсем то. в Xamarin вы имеете возможность писать один код под все платформы, перерисовывая только UI. а «сердце» остается неизменным.
или я неправильно понял суть и плюшки Xamarin?

Xamarin Studio можно заменить на другую C# IDE при наличии нормальной интеграции

не совсем понял ваше замечание.

Xamarin Studio — это IDE, которая понимает C# и отлично интегрирует Xamarin SDK
т.е. можно взять более удобную/стабильную IDE(например Visual Studio или Consulo), прикрутить к ней поддержку Xamarin SDK и работать продуктивнее

особенно на маке, да :)
серьезно, лично я буду только рад портированию студии на мак — будет гораздо удобнее писать некоторые штуки
но пока не судьба

А можно кодить на Windows используя Visual Studio, а мак как билд хост для Xamarin ios

имхо, IDEA лучше чем VS как IDE(причем кросс-платформенная)
C# IDE от Jetbrains — вопрос времени(Consulo тому подтверждение)
пока все равно удобнее писать на связке Android Studio + Appcode, но я искренне пытаюсь привыкнуть к Xamarin
на винду перейти не могу в силу некоторых субъективных причин

Лучше VS + Resharper мне и придумать сложно для C#.

Consulo
Это вообще опенсорс который пилит один человек насколько я понял. И как заявлял автор что по окончанию у него уже идеи для какого-то другого языка на основе IDEA.
Android Studio + Appcode
Это все для нейтива, а тут речь идет о кросплатформенности и в частности Xamarin.
имхо, IDEA лучше чем VS как IDE(причем кросс-платформенная)
потому что как только она перестает быть кроссплатформенной — VS дрючит ее.
да, если тупо писать код — все IDE одинаковые. просто блокноты с своей подсветкой синтаксиса. но такой мощной IDE как VS я не встречал. с R# вообще моща. business intelligence, работа с бд, писать код, рисовать кучу разного UI как для веб так и для декстопа, интеграции с cvs (TFS жесть какая мощная штука, это ж не только свалка для кода). редко, очень редко когда ее используют на всю мощность.
потому что как только она перестает быть кроссплатформенной — VS дрючит ее.
с R# вообще моща.
А R# это что? Не ReSharper часом?

Ну туда логично ВС круче чем ИДЕА. А если из ВС сделать ИДЕА «вообще моща» :-D

то есть IDEA это всего лишь гуй для демонстрации возможностей решарпера? xD

я думаю что не стоит смешивать две разные вещи — утилиту для рефакторинга которая хоть и является частью IDE, но все таки не вся IDE и собственно саму IDE.

то есть IDEA это всего лишь гуй для демонстрации возможностей решарпера? xD
Вы хотели пошутить, но у вас не получилось. У решарпера есть свой ГУИ :)
утилиту для рефакторинга которая хоть и является частью IDE
В том то и проблема что не является, а ее надо покупать у стороннего производителя.
Как оказалось в ВС есть таки в принципе неплохие средства для рефакторинга и работы с кодом. Но вот утверждение что ВС лучше ИДЕА, при этом упоминать о привнесении большого куска функциональности ИДЕА в ВС — это звучит гл...странно.
В том то и проблема что не является, а ее надо покупать у стороннего производителя.
на сколько я помню, решарпер начался с IDE для Java. нет? и в IDEA ничего дополнительно покупать не надо.
в ВС есть таки в принципе неплохие средства для рефакторинга и работы с кодом.
есть, но решарпер все таки удобнее. особенно, когда привыкаешь к новым комбинациям клавиш
привнесении большого куска функциональности ИДЕА
большого? одна фича — рефакторинг кода. а в VS таких фич как минимум:
— блокнот с подсветкой синтаксиса
— плагины для работы с CVS
— работа с базой данных
— работа с разным гуем
— простенький редактор графики (как оказалось, для допила иконок вполне хватает)
— нюгет

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

какой вы резкий про однако...
ну ок, добавьте в VS поддержку scala или java; или поддержку чего-нибудь не из .net стека
и без решарпера попробуйте разработать какой-нибудь проект, чтобы оценить каким функционалом вы пользуетесь чаще: рефакторингом или чем-нибудь еще

без решарпера попробуйте разработать
да работал. решарпером начал пользоваться на полную может год или два назад (собсна как устроился на работу к «лидерам рынка»). до этого плевался и говорил «он фигня, жрет много памяти». да, голой студии не хватает возможностей «переименовать все упоминания этой функции за пару кликов», но и без решарпера можно обойтись, Ctrl+Shift+F никто не выпиливал из студии.
ну ок, добавьте в VS поддержку scala или java; или поддержку чего-нибудь не из .net стека
и получить еще один эклипс? только его перед использованием надо допилить напильником, а студию поставил и все: пиши код.

VS дает возможность провести полный стек разработки с применением технологий Microsoft. у Microsoft есть куча технологий которые позволяют решить огромную кучу задач (начиная от формошлепства сайта-визитки и заканчивая сложными системами для автоматизации бизнесс процессов). Если у клиента не хватает денег или у разработчиков не хватает знаний — это исключительно проблемы клиента и разработчика, а не VS и это уже совсем другой вопрос.

Підписатись на коментарі