• Вопрос к слабовидящим: как лучше уведомить о наличии специальной версии сайта?

    mhspace
    @mhspace
    Как уже было сказано, отдельная версия не нужна. Однако, как я заметил, многие пользователи не знают о том, что их браузер умеет зумить контент. Поэтому, где-нибудь вверху страницы можно оставить заметку вроде "чтобы увеличить шрифт, используйте ctrl + + или cmd + +". Точную надпись можно подбирать в зависимости от браузера/OS. С цветами сложнее (см. ниже).

    В тексте ниже я могу часто взаимозаменять понятия zoomlevel и размер экрана. Связано это с тем, что стандартный зум в браузерах реализуется примерно так: браузер рисует сайт для экрана поменьше, но отображает его на том же экране, растягивая его. В результате, сделав сайт, хорошо работающий на разных размерах экрана у вас автоматически получится сайт, хорошо работающий с разным zoomlevel.
    Собственно, рекоммендации:
    • Сайт должен нормально зумится стандартными средствами браузера. Для этого у сайта не должно быть вертикального скроллбара при любом zoomlevel/размере экрана (то есть он должен быть адаптивным и\или резиновым). Пара примеров того, как не надо делать:
      • Отдельная мобильная версия сайта, которая грузится для мобильных браузеров. Для сильного зума она не включится. ИМХО, плохо не только с точки зрения слабовидящих, но это отдельная история. Как пример, сайт интернет-банкинга банка, которым я пользуюсь: для того, чтобы попасть на мобильную версию, которой удобно пользоваться с большим зумом, я вынужден менять user-agent для этого сайта. Это катастрофа юзабилити.
      • Адаптивный сайт, мобильная версия которого включается слишком "поздно". Поясняю: есть сайт, есть большой экран, всё вмещается, всё красиво. Берём экран поменьше, сайт перестаёт вмещаться по горизонтали, появляется скроллбар. Берём экран ещё меньше, включается мобильная вёрстка, всё снова красиво. Вот "средней" ситуации быть не должно. Мобильная версия должна включаться как только большая версия сайта перестаёт вмещаться по горизонтали в экран. Пример: last.fm, откройте страницу любого исполнителя и понажимайте ctrl/cmd + +. Такого, опять же, быть не должно.

    • CSS должен использоваться только для дизайна, и никогда для смысловой нагрузки. В частности, не используйте background-image для вставки картинок, которые что-то обозначают, а не просто украшательства. Если нужно вставить картинку, которая что-то обозначает, используйте <img>, который, среди всего прочего, можно вставлять и внутрь <button>, имеет атрибут alt и т. д. Примеров очень много, это одна из самых серьёзных проблем для слабовидящих, которые предпочитают менять цвета, так как для смены цвета фона на тёмный приходится ещё и выпиливать background-image.
    • Избегать картинок вроде "чёрная фигура на прозрачном фоне". Опять же, если пользователь поменяет цвета, картинка может стать невидимой или плохо различимой. Универсальной альтернативы тут нет. Если это иконка, можно использовать иконки-шрифты - тогда она окрасится в цвет текста (хотя, если пользователь захочет поменять шрифты... чтобы избегать проблем и в таком случае, можно стараться использовать только иконки из стандартного unicode). Для формул есть MathML или MathJax. Если таки без чёрной картинки на прозрачном фоне никак не обойтись, можно добавить на неё белый outline, на белом фоне он будет невидим, а на чёрном картинка будет всё ещё различима. Полностью залитый белым фон выглядит не очень и для больших картинок может быть слишком ярким (для некоторых людей это проблема). Цветные png/svg иконки, как правило, не проблема. Но если иконка достаточно тёмная по краям или в целом, белый outline будет не лишним.


    Ещё пара слов про zoom. Есть такой аддон NoSquint, ныне discontinued, но есть продолжатели идеи, в частности NoSquint Plus. Суть такая: помимо стандартного браузерного зума (принцип которого описан выше), он ещё умеет маштабировать только текст, что является очень удобным в случае, если нужно увеличить шрифт, но при этом хотелось бы, чтобы остальной контент сайта оставался компактным. Так вот, было бы неплохо, чтобы вы тестировали свой сайт и с text-only зумом и чтобы сайт вёл себя так, как ожидается. В частности, чтобы текст всегда помещался в блоки по вертикали (частая проблема) и горизонтали (реже, но бывает), а так же не злоупотребляйте rem и em, так как если использовать их для указания длины всего на сайте, text-only zoom будет работать в точности как обычный, что нежелательно. Ещё у браузеров есть фича minimum font size. Тут рекоммендации те же, что и для Text-only zoom.

    Недавно меня посетила идея, что разумнее было бы сделать соответствующий media type в стандарте CSS, при помощи которого можно было бы прикручивать скорректированные стили, включающие контрастные схемы, безопасные цвета и крупные элементы интерфейса

    Не думаю, что это хорошая идея. По крайней мере, не до конца продуманная. При разных патологиях зрения (да и здоровые люди иногда могут предпочитать любое из далееперечисленных) людям подходят разные цвета: белый на чёрном, серый на чёрном, светло серый на тёмно-сером, чёрный на белом и т. д. Если с размером шрифтов всё более-менее просто, то с цветами сложнее, и универсальное решение, которое можно было бы включить в стандарт и которое все бы соблюдали, у меня не получается придумать. В идеале было бы, если бы в CSS можно было использовать семантические названия цветов и названия тонов с соответстующей ролью вроде foregroundColor, foregroundWarningColor, backgroundSuccessColor, foregroundGreen, backgroundRed и т. д., а уже их точные значения подставлялись бы браузером в зависимости от выбранной пользователем темы. Но я не знаю, что должно произойти, чтобы это приняли в стандарт и начали использовать везде. На данный момент наиболее рабочий вариант это или менять цвета браузером (насколько я знаю, умеет только Firefox) или использовать стороние дополнения. Можно добавить тёмную тему, переключаемую кнопками где-то возле надписи про то, как ползьоваться браузерным зумом, можно рекоммендовать какие-то сторонние дополнения для браузера, хотя в таком случае появляется пара других вопросов.
    Но, как минимум, как уже было сказано, не используйте "тёмно-серый текст на светло-сером фоне". Я не знаю людей, которым это нравилось бы, но знаю много, которым это создаёт трудности.
    Я являюсь разработчиком аддона для Firefox, который меняет цвета сайтов. Многое из вышеописанного основывается на тех костылях, которые мне приходится применять, чтобы сайтом всё ещё можно было пользоваться после смены цветов, а так же на отзывах пользователей, которые пишут о том, какие цвета они предпочитают и почему.
    Ну и напоследок, спасибо.
    Ответ написан
    3 комментария
  • Что делает программиста программистом?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    На мой взгляд программист это прежде всего организатор процессов. Умеющий понять суть любого процесса, не только вычислительного. Есть люди, которые сразу же бросятся выяснять все нюансы будущей программы и начнут программировать. А есть другие, которые досконально проанализируют ситуацию и процесс, который следует оптимизировать, возможно путем программы. Поймут, что да, надо писать программу и только тогда начнут писать. Но не редко они увидят для заказчика более выгодный вариант. На моей практике это выглядело так: "Вы знаете. Ваша операция происходит столько-то раз. Вот если Вы ее разложите на ежедневные операции на 5 мин. Назначите эту операцию действующему специалисту. То небольшая прибавка к зарплате будет выгоднее, быстрее для Вас". Практика показала, что таки-да, ошибок из-за человевечкой невнимательности было мало, были некритичны и да, софт писать не надо было! А если бы человек не сказал подобных слов, то организация заплатила бы за разработку достаточно большие деньги.

    Программист это прежде всего "Здравый смысл" и "Аналитический склад ума".
    Ответ написан
    Комментировать
  • Что делает программиста программистом?

    globuzer
    @globuzer
    gezgrouvingus progreszive ombusgrander greyderzux
    программиста делает программистом вектор его мышления и умения мыслить в нужном направлении!
    Ответ написан
    1 комментарий
  • Тест-кейсы, тест-планы и чек листы, которые непосредственно используются в работе?

    luantik125
    @luantik125
    qa engineer
    План проверки двери
    1. Функциональные проверки.

    1.1. Проверить, что дверь открывается.
    1.2. Проверить, что дверь закрывается.
    1.3. Попытаться закрыть уже закрытую дверь.
    1.4. Попытаться открыть уже открытую дверь.
    2. GUI (интерфейс пользователя)

    2.1. Проверить табличку на двери.
    2.2. Проверить покраску двери.
    2.3. Проверить наличие дверной ручки.
    3. Permissions

    3.1. Проверить, что правильным ключом дверь открывается.
    3.2. Проверить, что неправильным ключом дверь не открывается.
    3.3. Проверить, что закрытую на ключ дверь нельзя открыть.
    3.4. Проверить, что не закрытую на ключ дверь можно открыть без ключа.
    3.4. Позвонить в дверь. Если там никого нет, дверь не должна открыться сама.
    3.5. Постучать в дверь. Если там кто-то есть и он спросит “кто?”, ответить “Полиция”. Дверь должна открыться.
    4. Stress/Loading

    4.1. Открывайте и закрывайте дверь со скоростью 120 циклов в минуту
    4.2. Открывайте и закрывайте дверь со скоростью 6 раз в минуту на протяжении 48 часов.
    4.3. Стучите в дверь с частотой 1200 стуков в минуту.
    4.4. Стучите в дверь с частотой 10 раз в минуту на протяжении 24 часов.
    4.5. Открывайте и закрывайте дверь ключом на протяжении 12 часов.
    5. End to end

    5.1. Постучать в дверь. Позвонить в звонок. Открыть ключом. Открыть дверь. Закрыть дверь. Закрыть ключом. Прочитать табличку на двери. Ничего не отвалилось, не звякает, не взрывается?
    6. Usability

    6.1. Проверить, что ручка двери помещается в ладонь.
    6.2. Проверить, что ручка находится именно на двери, а не на соседней стене на высоте 20 см.
    6.3. Проверить, что высота двери больше человеческого роста
    6.4. Проверить, что усилие для поворота ключа в двери в пределах допустимого
    ……..

    * Проверить функциональность двери при температуре 38, 45 и -15 градусов Цельсия.
    * Проверить функциональность двери при различной относительной влажности, днем и ночью, в июле и с декабре.
    * Проверить, что пол и социальное происхождение открывающего никак не влияют на результаты.
    Ответ написан
    1 комментарий
  • Как выполнить Dependency Injection локальных переменных?

    делаем mock для класса Date и всё. пример можно глянуть тут
    Ответ написан
    1 комментарий
  • Как тестировать закрытые методы класса?

    mrRontgen
    @mrRontgen
    Scala lover.
    Коллеги, может быть кто знает другие более красивые способы?
    - через рефлекшен! Если же у Вас есть возможность изменить область видимости, то тогда не стоит его использовать. Если такой возможности нет, то вот Вам паттерн:
    Method method = PersonDate.class.getDeclaredMethod("getYear", Int.class);
            method.setAccessible(true);
            method.invoke(targetObject, argObjects);
    Ответ написан
    2 комментария