Pull to refresh
42
0
Send message

20 заповедей дизайна пользовательского интерфейса

Reading time9 min
Views44K
Это перевод оригинальной статьи Principles of User Interface Design

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

— Пол Рэнд (Paul Rand)

1. Обязанность интерфейса — обеспечение взаимодействия


Интерфейсы служат для обеспечения взаимодействия между людьми и окружающим миром. Они помогают нам прояснять, освещать, реализовывать и наблюдать взаимосвязи; они могут объединять и разъединять нас, влиять на наши ожидания; а кроме того, они дают нам доступ к различным услугам. Не стоит принимать процесс разработки интерфейса за искусство в чистом виде, а сам интерфейс — за некий арт-объект. Интерфейсы призваны выполнять определенные функции, и эффективность их работы можно измерить. Но и к одним только утилитарным вопросам роль интерфейсов не сводится. Действительно хорошие интерфейсы способны вдохновлять, пробуждать, окутывать тайной и укреплять наши отношения с окружающим миром.
Читать дальше →

Изучить Github за 15 минут

Reading time1 min
Views127K
TryGit — интерактивный обучающий курс по Github в стиле Codecademy. Курс состоит из 25 мини-уроков, которые знакомят пользователя с базовыми понятиями и основными командами git, при этом ученик своими руками вводит команды в консоль, смотрит результат и читает сопровождающие надписи с объяснением происходящего.



Вот таким в будущем должно стать обучение в школах!

Конечно, 15-минутное введение не заменит полноценного учебника. Для обучения можно рекомендовать бесплатную книгу Pro Git и видеокурс Getting Git.

Я не могу написать бинарный поиск

Reading time11 min
Views208K
Недавно (буквально два года назад) тут пробегала статья Только 10% программистов способны написать двоичный поиск. Двоичный поиск — это классический алгоритм поиска. Мало того, это еще чрезвычайно простой алгоритм, который можно очень легко описать: берем отсортированный массив, смотрим в середину, если не нашли там число, в зависимости от того, что в середине — ищем это число этим же методом либо в левой части, либо в правой, откидывая средний элемент. Для функций также, просто берем не массив, а функцию. Все очень и очень просто, алгоритм описан почти везде, все баги словлены и описаны.

Так вот, я не могу реализовать двоичный поиск. Для меня он ни капельки не тривиален. Наверное, я ненастоящий программист. А ведь так и есть, я всего-лишь студент, но ведь это не оправдание? Если точнее, я не могу реализовать хороший корректный красивый двоичный поиск. Все время у меня вылезает проблема либо с корректностью, либо с красивостью, либо и с тем, и с другим. Так что, да, заголовок немного желтоват.
Прежде чем читать этот топик, напишите свою версию бинарного поиска — для отсортированного массива. Причем, в зависимости от параметра, поиск должен выдавать или первый элемент, или любой из дублирующих. Еще для сравнения, напишите бинарный поиск для функций

А в чем, собственно, проблема?

Обновления на лету (zero-downtime deployment) вообще и в Ruby on Rails

Reading time4 min
Views10K
Сначала разберемся с определениями. Под обновлением на лету мы подразумеваем такое обновление системы, при котором не нарушается штатная ее работа: клиенты работают, посетители ходят и никто не наблюдает ошибок, увеличившегося времени отклика или таблички “УЧЁТ”.

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

Как это делается? Сложно. Почему? Главных причин две:
— вы не можете обновить систему мгновенно и атомарно (то есть ровно между двумя HTTP запросами). При наивном подходе пользователи заметят как минимум долгое время отклика, а то и ошибку, если, к примеру, БД обновлена, а код еще нет;
— состояние и конфигурация системы существуют и на клиенте и на сервере. Примеры: данные в сессии, имена полей формы, адреса в ссылках, состояние в javascript на открытой у пользователя странице.
Читать дальше →

Опубликовано досье ФБР на Ричарда Фейнмана

Reading time1 min
Views6.8K
Федеральное бюро расследований опубликовало досье, собранное на Ричарда Фейнмана — известного физика и математика, одного из создателей квантовой электродинамики и первой атомной бомбы, лауреата Нобелевской премии по физике (1965 г., совместно с С. Томонагой и Дж. Швингером). Оказывается, долгие годы за ним осуществлялось скрытое наблюдение, а близкие друзья Фейнмана работали информаторами.
Читать дальше →

Простая замена phpMyAdmin для гиков

Reading time2 min
Views14K
Довольно часто возникает ситуация, когда надо быстренько запустить пару запросов к MySQL базе у клиента на сервере. При этом есть только FTP и параметры соединения с СУБД. Самый простой выход — загрузить туда phpMyAdmin, ну а дальше дело техники. Обычно все это проиcходит на фоне того, что у клиента уже установлена какая-то CMS — WordPress, Drupal, Joomla…

Я люблю простые, красивые и удобные вещи. Я тепло отношусь к phpMyAdmin но в 90% моих Use Cases мне он не нужен. Нужно что-то простое. В идеале такое, что можно просто залить на сервер и открыть в браузере — не настраивая.

Пара вечеров и пакет готов.
Читать дальше →

Вскрытие трех смартфонов от Sony: Xperia P, S и U

Reading time1 min
Views38K
image

К нам в руки попали одни из трех последних смартфонов от Sony: Xperia P, S и U. Как всегда предлагаем посмотреть на их вскрытия.

Под катом три видео от канала GTV.
Читать дальше →

Электрический переключатель скоростей для велосипеда

Reading time1 min
Views14K



На сайте instructables.com опубликован DIY-проект создания электрического переключателя скоростей для велосипеда. На английском языке, зато с кучей картинок. Вещь, на мой взгляд, совершенно прекрасная :)

Joosy: альтернативный подход к браузерным фреймворкам

Reading time2 min
Views16K

Если коротко


Мы разработали новый JS-фреймворк, не похожий на существующие. Он использует новый подход. Мы зовём его Joosy.

Официальный сайт
Руководство для новичков
На гитхабе


Читать дальше →

Laravel — PHP Framework для ремесленников

Reading time2 min
Views108K
Laravel PHP Framework
Laravel — это чистая и стильная основа для разработки. Он избавит вас от спагетти кода. Поможет вам создавать прекрасные веб-приложения используя простой и выразительный синтаксис. Разработка должна доставлять удовольствие. Наслаждайтесь глотком свежего воздуха.
Читать дальше →

Есть ли польза от кастомных ядер

Reading time4 min
Views43K
Многие слышали о различных оптимизированных и улучшенных ядрах, это — Zen Kernel и pf-kernel из известных мне. Кроме того, что они добавляют новые возможности (TuxOnIce, поддержка aufs), они могут улучшить производительность, благодаря улучшенному менеджеру задач (BFS) и планировщику (BFQ). В этом топике я хочу сравнить производительность pf-kernel со стандартными ядрами в Ubuntu и Arch Linux, а также описать процесс сборки и установки pf-kernel для Ubuntu. Тестировать Zen Kernel я не вижу особого смысла, т.к. во-первых, проект выглядит заброшенным, а во-вторых, набор патчей и там и там очень похожий.
Читать дальше →

Нейросети для чайников. Часть 2 — Перцептрон

Reading time5 min
Views260K
image

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

Язык программирования, на этот раз — C#.
Заинтересовавшихся прошу под кат.
Читать дальше →

Нейросети для чайников. Начало

Reading time5 min
Views809K


Так получилось, что в университете тема нейросетей успешно прошла мимо моей специальности, несмотря на огромный интерес с моей стороны. Попытки самообразования несколько раз разбивались невежественным челом о несокрушимые стены цитадели науки в облике непонятных «с наскока» терминов и путанных объяснений сухим языком вузовских учебников.

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

Заинтересовавшихся прошу под кат.
Читать дальше →

Три полезных совета по Rails консоли

Reading time3 min
Views4.2K
Топик является вольным переводом статьи на 37signals.

Вчера я копался в документации к Rails API и заметил несколько полезных функций rails консоли, которых не видел ранее. До этого было множество публикаций об irb и Rails, но я надеюсь, что из этой вы почерпнете для себя что-то новое. Приведенные примеры сделаны с использованием Basecamp Next on Rails версии 3.2.3.
Читать дальше →

IPO for dummies. Часть VIII: о мотивации

Reading time10 min
Views3.8K
Начало и оглавление см. в первой части.

Акции у основателей компании и первых инвесторов — это очевидно. А как акции попадают к сотрудникам?

Ещё в самом начале развития стартапа основатель (особенно если он не имеет готовой команды) ищет первых сотрудников/коллег/соучастников, которые зачастую могут стать сооснователями. Станут или нет — зависит от многих факторов: сможет ли основатель обеспечить им зарплату «на уровне», от их commitment-а (помните байку про курицу и свинью, затеявших стартап в виде ресторанчика “Ham and eggs” и заспоривших, кто из них будет involved, а кто committed?), от их требований, наконец… Логично ожидать, что первые коллеги основателя, которые делят с ним в какой-то степени риск (а не просто ходят в офис отрабатывать зарплату), становятся, явно или неявно, сооснователями проекта. И в качестве компенсации за риск, в награду за приверженность делу, или как хороший стимул для красноглазенья без выходных, основатель делится с ними своей долей.
Читать дальше →

Извините, магазин на переучете

Reading time3 min
Views16K
При продаже материальных товаров необходимость делать инвентаризацию, пожалуй, самая неприятная часть работы. Все уже привыкли иметь дело с виртуальными материями.

А зачем вообще что-то городить с учетом товаров в ИМ? Почему не ограничиться фразами: «много, мало, уточните перед заказом?». Потому, что когда мы сами покупаем в ИМ – нам не нравиться звонить и спрашивать реальное количество доступное для покупки. Раз уж на сайте есть механизм онлайн заказа, хочется иметь возможность им полноценно пользоваться. Итак, если вам приходиться делать инвентаризацию вам придется разобраться в штрих-кодах (ШК) и сканерах.
Читать дальше →

Расширяем Ruby с помощью Ruby: заимствуем у Python декораторы функции

Reading time8 min
Views5.1K
От переводчика: предлагаю вам перевод начала презентации Michael Fairley — Extending Ruby with Ruby. Я перевел только первую часть из трех, потому что она имеет максимальные практические ценность и пользу, на мой взгляд. Тем не менее, настоятельно рекомендую ознакомиться с полной презентацией, в которой помимо Python приводятся примеры заимствования фишек из Haskell и Scala.

Декораторы функции


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

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

Возьмем Ruby и притворимся, что нам нужно перевести деньги с одного банковского аккаунта на другой. Вроде все просто, так?

def send_money(from, to, amount)
  from.balance -= amount
  to.balance += amount
  from.save!
  to.save!
end
Читать дальше →

Раскрытие IP-адреса пользователя Skype

Reading time1 min
Views88K


Деанонимизация скайп-пользователя по его skypename через нахождение его реального IP-адреса

1. Качаем отсюда пропатченный скайп версии 5.5:
http://skype-open-source.blogspot.com/2012/03/skype55-deobfuscated-released.html

2. Включаем создание файла с дешифрованным debug логом. Для этого добавляем нескольких ключей в реестр.
https://github.com/skypeopensource/skypeopensource/wiki/skype-3.x-4.x-5.x-enable-logging

3. Выбираем функцию добавить скайп контакт, но не добавляем, а только кликаем на него, чтобы посмотреть vcard. Этого будет достаточно.
Читать дальше →

Функциональное программирование для всех

Reading time33 min
Views354K

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

Мнение переводчика может иногда не совпадать с мнением автора, но переводить статью было крайне занимательно.

UPD: альтернативный вариант перевода вы можете найти на rsdn (спасибо flamingo за ссылку).
Читать дальше →

Information

Rating
Does not participate
Location
Минск, Минская обл., Беларусь
Registered
Activity