Pull to refresh
  • by relevance
  • by date
  • by rating

Взаимодействие bash-скриптов с пользователем. Часть 2

*nix *
Наша программа настолько сурова, что даже логин отображается звездочками (bash.org.ru)

Вашему вниманию представляется новая подборка средств общения скриптов с пользователем. Надеюсь, интересно будет всем, кто не боится работать с консолью.
Первую часть можно найти тут.
Читать дальше →
Total votes 48: ↑48 and ↓0 +48
Views 46K
Comments 17

Ограничения через реализацию интерфейса против свободы через рефлекшн

Java *
Sandbox
  В последнее время очень часто появляются фреймворки которые позволяют разработчику реализовывать функционал в свободном виде не прибегая к наследованию от интерфейсов. Примеры можно увидеть в таких как EJB 3, JUnit 4, JSF 2, Spring Framework 3 и т.д.
Под катом найдете обсуждение обоих подходов.
Читать дальше →
Total votes 13: ↑8 and ↓5 +3
Views 1.1K
Comments 10

Home Screen-хамелеон для Android

Development for Android *


Chameleon, альтернатива домашнему экрану для Android 3.2 / 4.0, изменяется в зависимости от текущего времени суток, wifi-сети поблизости и от текущего местоположения пользователя.
Читать дальше →
Total votes 61: ↑49 and ↓12 +37
Views 2.8K
Comments 36

Учебный курс «Интерфейсы для айфона» в августе

«Evil Martians» corporate blog
Таня Мисютина (@lazytanka), Юрий Подорожный (Inspire) и Антон Ловчиков (object) проведут курс «Интерфейсы для айфона» во второй раз 9 – 12 августа в Москве, в помещении Дизайн-бюро Артёма Горбунова!



Читать дальше →
Total votes 21: ↑15 and ↓6 +9
Views 5.4K
Comments 6

Модель человеческого процессора

Interfaces *Usability *
Sandbox
Разработка человеко-машинных интерфейсов должна строиться на научных знаниях. Необходимо знать количественные и качественные сравнительные оценки разных интерфейсов, поведение и рассуждения пользователей в конкретных ситуациях.

Наукой, которая дает ответы на эти вопросы, является когнитивная психология. Когнитивная психология изучает модели познавательных процессов человеческой психики и включает в себя такие разделы, как внимание, память, распознавание образов, способы представления информации, логическое мышление и определяет способности к принятию решений. Ключевой частью когнитивной психологии является разработка моделей человеческого поведения. И одним из наиболее полезных достижений в этом направлении является то, что называется «Модель Человеческого Процессора».

image
Читать дальше →
Total votes 20: ↑13 and ↓7 +6
Views 11K
Comments 7

Краш-курс по интерфейсам в Go

Programming *Go *
Tutorial
Интерфейсы в Go представляют собой одну из отличительных особенностей языка, формирующих способ решения задач. При схожести с интерфейсами в других языках, интерфейсы Go всё же имеют важные отличия и это поначалу приводит к избыточному переиспользованию интерфейсов и путанице в том, как и когда их использовать. Это нормально, но давайте попробуем разобраться, в чем же особенность интерфейсов в Go, как они устроены, почему так важны и что значит ортогональность интерфейсных типов и структурных типов в Go.

В этой статье вы узнаете:

  • в чем отличие от интерфейсов в Java
  • важные и неочевидные последствия этих отличий
  • как устроены интерфейсы под капотом
  • вспомним про пустой интерфейс (interface{})
  • затронем сакральную тему про дженерики
  • разберемся, кто и зачем должен создавать интерфейс
  • и постараемся научиться не абьюзить интерфейсы и начать жить

Header
(artwork by Svitlana Agudova)
Читать дальше →
Total votes 39: ↑32 and ↓7 +25
Views 70K
Comments 19

Волшебный интерфейс

Developer Soft corporate blog Web design *Interfaces *Usability *
Powered Interface

Как-то на днях у меня возникла необходимость распечатать более десяти чеков из моей истории платежей, используя банкомат одного из крупнейших банков. Я перешёл в платежи, выбрал “История”, прокрутив скроллер списка до нужного платежа, выбрал его, а затем нажал кнопку “Операции” и выбрал печать. И так повторялось для каждого чека: каждый раз происходил переход в главное меню и всё начиналось заново. Я задумался — неужели, несмотря на обилие источников информации по UX, до сих пор тратятся огромные бюджеты на подобные неудобные интерфейсы? Почему разработчики не хотят делать интерфейс, позволяющий пользователю почувствовать себя волшебником, а делают пользователей беспомощными в достижении своих целей? Возможно, причина в том, что, несмотря на обилие теории, эти источники предоставляют мало примеров из реальных проектов.

Так как мы буквально на прошлой неделе завершили большой Web-проект, в котором как раз стояла цель разработки удобного интерфейса, я решил осветить в статье, на какие основные моменты при проектировании интерфейса стоит обратить внимание, и привёл примеры нашего решения.
Читать дальше →
Total votes 35: ↑33 and ↓2 +31
Views 32K
Comments 27

Как не наступать на грабли в Go

Go *

Этот пост является версией моей же англоязычной статьи "How to avoid gotchas in Go", но слово gotcha не переводится на русский, поэтому я буду использовать это слово как без перевода, так и немного непрямой вариант — "наступать на грабли".


Gotcha — корректная конструкция системы, программы или языка программирования, которая работает, как описано, но, при этом, контринтуитивна и является причиной ошибок, поскольку её легко использовать неверно.

В языке Go есть несколько таких gotchas и есть немало хороших статей, которые их подробно описывают и разъясняют. Я считаю, что эти статьи очень важны, особенно для новичков в Go, поскольку регулярно вижу людей, попадающихся на те же грабли.


Но один вопрос меня мучал долгое время — почему я сам никогда не делал этих ошибок? Серьезно, самые популярные из них, вроде путаницы с nil-интерфейсом или непонятного результата при append()-е слайса — в моей практике никогда не были проблемой. Каким-то образом мне повезло обойти эти подводные камни с первых дней своей работы с Go. Что же мне помогло?


И ответ оказался довольно прост. Я просто очень вовремя прочёл несколько хороших статей о внутреннем устройстве структур данных в Go и прочих деталях реализации. И этого, вполне поверхностного на самом деле, знания было достаточно, чтобы выработать некоторую интуицию и избегать этих подводных камней.

Читать дальше →
Total votes 46: ↑38 and ↓8 +30
Views 57K
Comments 8

Selenium Manager: история одного интерфейса

Badoo corporate blog IT systems testing *PHP *JavaScript *Interfaces *
Привет, Хабр!

Меня зовут Виталий Котов и я работаю в компании Badoo. В одной из предыдущих статей я рассказывал, что у нас есть некий интерфейс, который помогает взаимодействовать с автотестами как тестировщикам, так и разработчикам.

Не раз и не два меня просили рассказать о нём подробнее.

Под катом я (наконец!) расскажу о том, как писал этот интерфейс и что он умеет. Расскажу о фичах, которые прижились, и о тех, которые оказались невостребованными по тем или иным причинам. Возможно, некоторые идеи вам покажутся интересными, и вы тоже задумаетесь о подобном «помощнике».


Читать дальше →
Total votes 46: ↑46 and ↓0 +46
Views 14K
Comments 4

Приватные методы без нижнего подчеркивания и интерфейсы в Python

Open source *Python *Programming *API *GitHub


Привет, Habr. Недавно угорел по дизайну — модификаторам доступа и интерфейсам, потом перенес это на язык программирования Python. Прошу под кат — делюсь результатами и как это работает. Для заинтересовавшихся в конце статьи есть ссылка на проект на Github.
Читать дальше →
Total votes 33: ↑26 and ↓7 +19
Views 38K
Comments 73

Через «пару десятилетий» мозг подключат к Интернету

Cloud4Y corporate blog IT Infrastructure *Interfaces *Health The future is here


Интерфейс «мозг / облако» соединит клетки человеческого мозга с обширной облачной сетью в Интернете.
Учёные уверяют, что развитие в будущем интерфейса могло бы открыть возможность подключить центральную нервную систему к облачной сети в реальном времени.


В удивительное время живём. Недавно сделали бионический протез, который позволил инвалиду управлять новой конечностью силой мысли, как и обычной рукой. В то время как государство подготавливает законодательные базы для обработки персональных данных в облаках и создаёт виртуальные профили граждан, то, что раньше можно было найти только в произведениях фантастов, через пару десятилетий может стать реальностью, а предпосылки к этому подтверждают уже сейчас в условиях ожесточённых споров с моралистами и оппозиционными учёными.
Читать дальше →
Total votes 13: ↑8 and ↓5 +3
Views 6.1K
Comments 33

Интерфейсы как абстрактные типы данных в Go

System Analysis and Design *Perfect code *ООP *Go *
Не так давно коллега ретвитнул отличный пост How to Use Go Interfaces. В нем рассматриваются некоторые ошибки при использовании интерфейсов в Go, а также даются некоторые рекомендации по поводу того, как их все-таки стоит использовать.

В статье, упомянутой выше, автор приводит интерфейс из пакета sort стандартной библиотеки, как пример абстрактного типа данных. Однако, мне кажется, что такой пример не особо хорошо раскрывает идею, когда речь заходит о реальных приложениях. Особенно о приложениях, реализующих логику какой-нибудь бизнес области или решающих проблемы реального мира.

Также при использовании интерфейсов в Go зачастую возникают споры об оверинжиниринге. А еще бывает так, что, после чтения подобного рода рекомендаций, люди мало того что прекращают злоупотреблять интерфейсами, они пытаются практически полностью от них отказаться, тем самым лишая себя использования одной из сильнейших концепций программирования в принципе (и одной из сильных сторон языка Go в частности). На тему типичных ошибок в Go кстати, есть неплохой доклад от Stive Francia из Docker. Там в частности несколько раз упоминаются интерфейсы.

В общем, я согласен с автором статьи. Тем не менее, мне показалось, что тема использования интерфейсов, как абстрактных типов данных в ней раскрыта довольно поверхностно, поэтому мне хотелось бы немного развить ее и поразмышлять на эту тему вместе с вами.
Читать дальше →
Total votes 13: ↑10 and ↓3 +7
Views 7.2K
Comments 17

Заголовок будет другой

Dodo Engineering corporate blog Development for iOS *Development of mobile applications *Interfaces *Accessibility *
Если вы разрабатываете продукт для масс-маркета, то вероятнее всего им пользуются люди с плохим зрением. Если вы стремитесь делать удобные интерфейсы, то надо сделать удобно для всех клиентов, в том числе для людей с плохим зрением. Думаю, мы часто забываем об этом. И это пора исправлять.


Читать дальше →
Total votes 34: ↑28 and ↓6 +22
Views 8.6K
Comments 19

Разбираемся с интерфейсами в Go

VK corporate blog Programming *System Analysis and Design *Perfect code *Go *
Translation
Tutorial

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

  1. Человеческим языком объяснить, что такое интерфейсы.
  2. Объяснить, чем они полезны и как вы можете использовать их в своём коде.
  3. Поговорить о том, что такое interface{} (пустой интерфейс).
  4. И пройтись по нескольким полезным типам интерфейсов, которые вы можете найти в стандартной библиотеке.
Читать дальше →
Total votes 52: ↑46 and ↓6 +40
Views 40K
Comments 18

iOS 13 под лупой

Dodo Engineering corporate blog Development for iOS *Development of mobile applications *Interfaces *Accessibility *
Dynamic Type – хорошо, но работает не всегда. Сейчас я расскажу, как увеличиваются маленькие контролы в iOS 13 бесплатно, без регистрации и смс.

Читать дальше →
Total votes 30: ↑28 and ↓2 +26
Views 11K
Comments 0

Мифы о доступности цветового контраста

Web design *Interfaces *Accessibility *Graphic design *Design
Translation
В сегодняшнее время растёт потребность дизайнеров в том, чтобы сделать интерфейсы доступными абсолютно для всех пользователей. Естественно, очень важно приспособить пользователей с ограниченными возможностями к пользованию такими интерфейсами, но в то же время рождается достаточно мифов касательно основ доступности цветового контраста и эти мифы увековечиваются дезинформированными людьми. Они часто повторяют и ретранслируют эти мифы, чтобы дискредитировать дизайн, не понимая, в каких ситуациях применяется тот или иной стандарт цветового контраста. Кроме того, они предполагают, что интерфейс является недоступным, когда для передачи информации используется цветовой контраст.

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


Читать дальше →
Total votes 31: ↑30 and ↓1 +29
Views 12K
Comments 7

Как спроектировать систему уведомлений. Пошаговая инструкция с примерами

Wrike corporate blog Web design *System Analysis and Design *Interfaces *Design
Sandbox
Сложно представить современный сервис без комплексной системы уведомлений. Нам заботливо сообщают, что кто-то из друзей оценил фотографию, курьер с долгожданной пиццей уже в пути, а такси приехало к дому.

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

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

image
Читать дальше →
Total votes 19: ↑19 and ↓0 +19
Views 11K
Comments 3

Разрабатывайте приложение для друзей

Interfaces *

Друг может растеряться, друг может не понимать программу. Друг не программист, не разработчик, он не работал долгие часы над программой и поэтому не знает все нюансы работы программы (Иногда и разработчики не знаю всех нюансов своей программы). В начальной стадии работы с приложением друг не знает как пользоваться приложением. Только с накоплением опыта работы с приложением пользователь повышает свой уровень владения приложением.

Позвольте другу быть уверенным в работе с вашим приложением, быть уверенным.

Друг может путаться в том, что сейчас происходит в программе. Это создает неуверенность друга в ходе его работы. Сделайте информацию о состоянии программы очевидной для друга, не программиста. Это даст уверенность в том, что сейчас делает приложение и тем самым позволит быть уверенным в своих действиях с приложением для вашего друга. Быть уверенным.

Создавайте сценарий логичного и очевидного общение друга с вашим приложением.

Друг выполняет некое действие, и приложение реагирует на действие. Предоставьте возможность обратной связи на действия друга с вашим приложением. Действительно ли действие выполнено или возникли некие ошибки, получил ли друг ожидаемый результат или только часть результата и от друга требуются иные действия? Какие действия? Знает ли друг об этих действиях? Не забыл ли друг об этих действиях?

Друг может нервничать, спешить или просто эта информация «выпала» на некий момент и не вспомнилась в данный момент другу.

Даёт ли приложение консистентные сообщения, чтобы друг ориентировался не только на сущность обратной связи, но и по внешним характеристикам обратной связи, мог многое понимать по внешним атрибутам? Не путают ли характеристики обратной связи друга в течении времени, в разных фрагментах приложения, при разных действиях?

Друг может быстро взглянуть на сообщение, на интерфейс, быть невнимательным, быть рассеянным.

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

У друга могут быть другие дела. Друг может спешить, друг может хотеть планировать свою работу. А, возможно, друг хочет отвлечься на звонок или выпить чашечку кофе.

Read more
Total votes 9: ↑7 and ↓2 +5
Views 2.2K
Comments 2
1