Від проектування до розробки: 10 інструментів, без яких я не можу обійтися

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

Читати далі →

Розробка взаємодії з користувачем мобільних пристроїв — ключові принципи



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

Хороша розробка користувальницького інтерфейсу вирішує обидві ці проблеми проектування:

  • Щоб бути корисним, мобільний додаток має бути повністю орієнтоване на користувача. Той встановлює ваш додаток тому, що йому треба вирішити нагальну для нього проблему. Таким чином, програма має чітко певне «розуміння мети». Думайте про те, що саме ваші користувачі будуть намагатися виконати, зосереджуйтеся на їх ключових цілях, і видаляйте всі перешкоди з ведучого до них шляху.
  • Користувальницький інтерфейс зобов'язаний бути гранично ясним. Щоб ефективно використовувати розроблений вами інтерфейс, повинна бути забезпечена можливість легко розуміти, для чого він і як його використовувати. В ньому просто не повинно бути ні найменшого місця для будь-якої плутанини.
Нижче викладені 9 принципів розробки, які є, на мою думку, ключовими при забезпеченні, дійсно, високоякісного взаємодії з користувачем.

Читати далі →

Кінцеві автомати в середовищі динамічного моделювання SimInTech. Частина 2

першої частини ми показали як створити алгоритм роботи на основі «кінцевих автоматів» в SimInTech і використовувати його спільно з «класичними» алгоритмів у вигляді функціонально блочних діаграм.

У другій частині ми покажемо як створити вкладені і паралельно працюють кінцеві автомати і здійснювати обмін даними між ними.

Читати далі →

Кінцеві автомати в середовищі динамічного моделювання SimInTech

Введення

SimInTech є середовищем для створення математичних моделей будь-яких систем, рівняння динаміки яких можна представити у вигляді входо-вихідних співвідношень (подання DataFlow). Для реалізації підходу кінцевих автоматів в середовищі SimInTech існував блок умовного виконання субмоделі, який забезпечував зупинку і запуск моделювання за умовою, що приходить ззовні. Такий підхід забезпечує можливість розділити загальну модель на стану і в кожний момент часу розраховувати тільки ті субмоделі, умови виконання яких встановлено в true. Однак, така реалізація автоматного підходу не дуже зручна, з точки зору наочності, і вимагала додаткової настройки параметрів системи.

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

У цій статті показаний приклад використання елементів бібліотеки «Кінцеві автомати» для створення системи управління.

Читати далі →

Обмеження у використанні розумних світлодіодів WS2812, WS2801 та подібних у сучасних проектах декоративної світлотехніки

Вже кілька років на ринку світлотехніки можна зустріти такі назви, як: «smart led strip», «smart led pixel» і подібні. Як правило, «розумний піксель» — це збірка з мініатюрного 3-х канального світлодіодного драйвера (з інтегрованим стабілізатором струму, PWM модулятором і зсувними регістром), підключена до RGB світлодіоду. На базі таких пікселів багато виробників випускають «розумні» гнучкі світлодіодні стрічки, LED «цвяхи» і LED кластера. Також можна зустріти такі моделі чіпів, як WS2812, WS2813, з інтегрованим LED драйвером безпосередньо в корпус 5050 RGB світлодіоди. Малі габарити, велика кількість послідовно включених пікселів (більше 1000 шт.), простота управління за 1(2) проводу і порівняно низька вартість рішення — більш ніж виправдовують їх застосування.

Читати далі →

Вивчаємо OpenGL ES2 для Android

Урок №1
Дана стаття написана для новачків, які (як і я) хочуть навчитися писати програми для Андроїд з використанням OpenGL. Основні думки та код взяті з чудової книги Кевіна Бразалера «OpenGL ES 2 for Android. A Quick-Start Guide by Kevin Brothaler» (1).
Навіщо ж переказувати, запитаєте ви? Справа в тому, що перед цією книгою я прочитав ще десяток статей на цю тему і код Кевіна у мене відразу не пішов (у книзі середовище розробки Eclipse, а у мене Android Studio). Тому, вирішив написати цю статтю так, щоб було зрозуміло, передусім, самому собі.
Для початку давайте з'ясуємо, що таке OpenGL. Якщо почитати Вікіпедію (2), то побачимо наступне:
«OpenGL (Open Graphics Library) — специфікація, що визначає незалежний від мови програмування платформонезависимый програмний інтерфейс для написання застосунків, що використовують двовимірну і тривимірну комп'ютерну графіку.
Включає більше 300 функцій для малювання складних тривимірних сцен з простих примітивів. Використовується при створенні комп'ютерних ігор, САПР, віртуальної реальності, візуалізації в наукових дослідженнях. На платформі Windows конкурує з Direct3D.»
Ми будемо вивчати укорочену версію OpenGL ES 2 (надалі OpenGL). Вкоротили її зі зрозумілих причин, у Андроїд мала операційна пам'ять у порівнянні з настільними ПК, наявність віртуальної машини Java також накладає певні обмеження. Напевно є ще багато причин, чому це зробили, але нас це не повинно хвилювати. Простий треба знати, що є прекрасний інструмент OpenGL і треба навчитися ним користуватися!

Читати далі →

Користуйтеся підсвічуванням коду

Це огляд і частковий переклад статті Advait Sarkar з Computer Laboratory, University of Cambridge «The impact of syntax colouring on program comprehension».

Короткий зміст

Взяли 10 випадкових «computer science» студентів-магістрів з University of Cambridge (насправді 7, так як 3 очкарика виявилися частково сумісні з обладнанням Tobii2 X120 eye tracker). Запропонували розбиратися з короткими обчислювальними задачами на Python (треба було назвати коректний результат виконання коду). Заміряли час виконання завдань. Не давали нічого записувати на папірці (тільки думати, можна вголос). Стежили очима за допомогою згаданої окулографической системи.

В кінці попросили оцінити свій досвід в програмуванні (так, з урахуванням можливого ефект Даннинга — Крюгера).

Висновки

  • Підсвічування допомагає швидше розуміти код. На прикладі 6 завдань з загальним часом рішення 13 — 20 хвилин:
    • 8.4 секунди різниці між медианами часу виконання завдання (з гіпотезою, що для великих завдань ефект стає помітнішою)
    • значне (на 23 штуки) зменшення кількості перемикань уваги (переказів і фіксації взгяда з місця читання на помітне іншу область завдання)

  • ефективність допомоги обратнопропорциональна кваліфікації (але нелінійно, тобто не встановлено, що коли-то підсвічування перестане допомагати)
  • працює тільки в тому випадку, якщо ви знаєте що яким кольором підсвічується
  • мозок може ігнорувати підказки підсвічування якщо ви шукаєте вільним пошуком» (тобто підсвічування не заважає міркувати)
Наочний приклад того, як підсвічування дозволяє зосереджуватися на змісті коду, менше уваги приділяючи знайомим ключовими словами:



Загалом, все добре, всім квітів!

Графіки, цифри і більш докладні висновки зі статті:

Читати далі →

Інтерв'ю з координатором проекту Code Club за навчання дітей 9-11 років основам програмування

Добрий день, Іван
Здрастуйте

Розкажіть, будь ласка, що таке проект Code Club, з чого він починався, хто його придумав?
Code Club — це британська ініціатива щодо навчання дітей 9-11 років основам програмування. Вона виникла близько трьох років тому і з тих пір бурхливо розвивається — на початку в самій Великобританії, а через деякий час і по всьому світу. У Великобританії зараз вже більше 2000 локацій, там це все підтримується на державному рівні: є база волонтерів, є база локацій — все дуже серйозно організовано. Після переходу кордону в 1000 локацій проект почав виходити на міжнародний рівень. Приблизно з літа 2013 року запрацював сайт codeclubworld.org — займаються їм ті ж британці, але завдання у них вже більш глобальна: координувати навчання дітей програмуванню по всьому світу, дати можливість кожній дитині отримати знання про основи інформатики.

Тоді ж, влітку 2013-го року було оголошено про старт восени проекту Code Club в Україні. Були названі перші міста, в яких планувалося відкриття перших локацій і були контакти координатора. Так все починалося.

Що входить в програму навчання?
Перші семестри проекту Code Club розповідають про розробку програм з допомогою візуального програмування. Ми вчимо дітей роботі в середовищі Scratch — це розробка MIT, яка створювалася саме під вік 9-11 років. У наступних семестрах Code Club вивчається HTML, CSS і Python.

Читати далі →

Оберон помер, хай живе Оберон! Робоче оточення ETH Oberon

Перед тим, як почати розповідь про операційній системі A2, необхідно згадати і про її попередниці ETH Oberon, що є подальшим розвитком первісної Oberon System.

В контексті статей (Частина 1, Частина 2), присвячених мові програмування Активний Оберон і операційній системі A2, ETH Oberon цікава з точки зору розвитку користувальницького інтерфейсу в Оберон-системах і впливу на ІТ-індустрію. На відміну від первісної Oberon System, інтерфейс ETH Oberon являє собою набір візуальних графічних об'єктів ( гаджетів ). При портуванні на нову графічну систему ще раз було підтверджено, що ОС Оберон спроектована дуже добре і при портуванні потрібні мінімальні зміни.

Класичний робочий стіл ОС Оберон являє собою браузерну середу, керовану тайловым віконним менеджером, і заснований на концепції «Текст Як Інтерфейс»(ТКИ) — всі є текст ( вірніше гіпертекст ), будь-який текст може бути командою, для виконання якої потрібно або клікнути по ній середньою кнопкою миші, або виділити потрібну ділянку тексту ( в будь-якому місці ), який буде интепретирован як параметри команди і також клікнути по команді. Команди та й взагалі весь інтерфейс можна писати в панелях, вставляти гаджети, зберігати і відкривати в потрібний час.
Налаштування ОС зберігаються і обробляються як звичайні документи, і не відрізняються від них (привіт, вікі).

image
На скріншоті робочого столу ETH Oberon ми бачимо внизу приховану панель, праворуч відкриті інструментальні панелі графічних редакторів Rembrandt та Leonardo, зліва два документа з графічним вмістом і html-сторінка сайту ETHZ.

Читати далі →

HiDPI в Linux

HiDPI

ВведенняПісля багаторічного домінування дисплеїв з високою щільністю пікселів на мобільних пристроях, дана тенденція нарешті дійшла і до лаптопов з десктопами. На мою думку, виробники не ставили HiDPI-матриці в основному з-за слабкої підтримки DPI, відмінних від 96, в Windows. На щастя, ситуація помітно покращилася з виходом Windows 8 з Modern UI, хоча в десктопному режимі все ще далеко не ідеальна — люди досі скаржаться на 3200×1800 при 13.3" в лаптоп і сумніваються про купівлю 4K UHD 23.8"-монітора.

DPI і LinuxМожливість встановлення довільного значення DPI з'явилася ще в часи Xfree86, але слід розуміти, що це просто значення, яке нічого не робить сам по собі. Його читають і використовують програми та компоненти, які і приймають рішення, яким чином відобразити зміни DPI на екрані. Якщо текст слід встановленому значенню DPI в 95% випадків (спасибі xft!), розмір елементів залежить від використовуваного оточення робочого столу і тулкитов, на яких написані програми.

GTK+ 3-програми підтримують як цілочисельний скейлінг елементів і дробовий скейлінг шрифтів, так і зміна DPI на льоту, без перезапуску додатків. Скейлінгом елементів керує змінна оточення
GDK_SCALE
, а скейлінгом шрифтів —
GDK_DPI_SCALE
.
За замовчуванням, шрифти скейлятся разом з елементами. Таким чином, при DPI 96
GDK_SCALE=2
, ви отримаєте шрифт, немов він з DPI 192. Щоб скасувати скейлінг шрифтів, досить встановити змінну оточення
GDK_DPI_SCALE
в 0.5 (для
GDK_SCALE=2
).
Qt4 не вміє скейлить елементи. Для застосування нового значення DPI потрібен перезапуск програми.
Qt5, починаючи з версії 5.4, підтримує цілочисельний скейлінг елементів через змінну оточення
QT_DEVICE_PIXEL_RATIO
. DPI міняти на льоту не можна, як і в Qt4, але роботи в цьому напрямку ведуться і будуть доступні з релізом Qt 5.6, як і скейлінг на кожен монітор окремо.
WxWidgets-додатки ведуть себе так само, як GTK+ 3, тільки не підтримують скейлінг елементів.

Я спробував з'ясувати, які DE можна комфортно використовувати з HiDPI-моніторами. Тестування проводилося на лаптопе з 12.5" 1366×768 (125 DPI) з підключеним зовнішнім 23.8"-монітором з роздільною здатністю 3840×2160 (185 DPI).
Читати далі →