产品设计101

The worlds can be one together
Cosmos without hatred
Stars like diamonds in your eyes
The ground can be space space space space space
With feet marching towards a peaceful sky
All the Moonmen want things their way
But we make sure they see the sun
Good bye Moonmen
You said good bye Moonmen
Good bye Moonmen
Good bye Moonmen

By a lake,  two hamsters lived there, mother and son. One day, the
little hamster said to his mother, ‘Mom, I’d like to travel around the
lake a week.’

产品设计101。In this kata you have to write a simple Morse code decoder. While the
Morse code is now mostly superceded by voice and digital data
communication channels, it still has its use in some applications around
the world.

HackDesign
是给设计师的一套完整的入门课,不过它的情节真是超多,从最初叶忍不住所有小说一篇篇地看下去,到末端只好粗略浏览下来。这一个小圈子实在太丰盛和有意思,作为产品设计小白,大概现在只是形成了有些高危的开端印象,更是时有发生了一大堆难点,所以不敢说已经形成了产品设计系列1.0(好惭愧啊好惭愧…)

—— a song about genocide of all carbon matter

‘great!’ The mother hamster said, ‘well, have a nice trip.’

The Morse code encodes every character as a sequence of “dots” and
“dashes”. For example, the letter A is coded as ·−, letter Q is coded as
−−·−, and digit 1 is coded as ·−−−. The Morse code is case-insensitive,
traditionally capital letters are used. When the message is written in
Morse code, a single space is used to separate the character codes and 3
spaces are used to separate words. For example, the message HEY JUDE in
Morse code is ···· · −·−− ·−−− ··− −·· ·.

所幸Hack
Design课程框架清晰,短长时间看下来自己似乎也能说:“哦,原来产品设计是如此一次事!”
。暂且记录一些零星的知识点,将来还必要下许多众多功力,继续回来逐渐hack。

‘See you, mum.’ The little hamster went off on a trip.

NOTE: Extra spaces before or after the code have no meaning and should
be ignored.

(注意:前方属于民用笔记,中国和英国参杂,可能无限影响阅读经验)

After walking  for a while he saw an old turtle.

In addition to letters, digits and some punctuation, there are some
special service codes, the most notorious of those is the international
distress signal SOS (that was first issued by Titanic), that is coded as
···−−−···. These special codes are treated as single special characters,
and usually are transmitted as separate words.

On good design

Dieter Rams’s 10 Principles for Good
Design

Good design is innovative
Good design makes a product useful
Good design is aesthetic
Good design makes a product understandable
Good design is unobtrusive
Good design is honest
Good design is long-lasting
Good design is thorough, down to the last detail
Good design is environmentally friendly
Good design is as little design as possible

Other favorite quotes from Objectified:

Consider wearing something in rather than wearing it out.
– Bill Moggridge, co-founder IDEO

Design needs to be plugged into human behavior. Design dissolves in
behavior.*
-Naoto Fukasawa

A lot of what we seem to be doing in a product like that is actually
getting design out of the way. And I think when forms develop with
that sort of reason and they’re not just arbitrary shapes, it feels
almost inevitable, it feels almost undesigned. It feels almost like
‘well of course it’s that way, why would it be any other way
?’
-Johnny Ive, Senior VP Industrial Design, Apple

‘Grandpa tortoise, where are you going?’ Asked the little hamster.

Your task is to implement a function decodeMorse(morseCode), that would
take the morse code as input and return a decoded human-readable string.

Typography

Quotes:

  1. Design is still about words.
  2. 95% of web design are words.

澳门新葡萄京娱乐 1

澳门新葡萄京娱乐 2

澳门新葡萄京娱乐 3

超好玩:Kerning & Letter Shaping Game!

The Kerning Game

澳门新葡萄京娱乐 4

score

Letter Shaping
Game

澳门新葡萄京娱乐 5

score

‘Oh, little hamster, I’m going to the river below the hill to see my
grandson.’ The old turtle said kindly, and he paused, then said, ‘but I
am too slow, I am afraid I could not arrive on time.’

For example:

User Experience Design

The Design of Everyday Things, by Donald A. Norman

Designers are to blame if users fail to use products correctly.

How to make products easy to understand:

  1. Natural mapping
  2. Perceived affordances
  3. Feedbacks
  4. Constraints

User-Experience Research

  • Behavioral attitudinal
  • Qualitative vs. quantitative
  • Context of use

Rapid prototyping

Three step process: prototype, review, refine

Scoping a prototype: 20% of functionality that is used 80% of the time

Choosing appropriate fidelity:
Visual fidelity
Functional fidelity
Content fidelity

Interesting case study: The Aardvark Theory of Product: Fake It Till
You Make
It

Learning about your users

基于Startup类型决定怎么着机会须要优化用户体验:

澳门新葡萄京娱乐 6

  • Vitamin: UX is critical.
  • Addictive Drug: Users will be highly active without great
    initial UX. But eventually – should improve UX as other competitors
    enter.
  • Painkiller: It depends on what goal you are after.
  • Extinct: Lol

The little hamster had a brainwave and said, ‘you can retract your head
and feet inside your shell. I’ll push you, and you’ll be there soon.’

MorseCodeDecoder.decode(“…. . -.– .— ..- -.. .”)
//should return “HEY JUDE”

User Interface

率先次真正接触UI啊啊啊,好多不懂的technical details。重点浏览了UI
Design with
Purpose这一课。

UI design with purpose

Quote 1

The purpose of UI design, above all else, is to deliver content and
make visual sense of well planned out UX.

Quote 2

‘The best user interfaces allow the content to shout, while the UI
whispers’.

Main contents:

  1. Debating “invisible design”
  2. Flat design vs. skeuomorphism
  3. Balancing capability and style
  4. Balancing aesthetics and usability
  5. Importance of having unifying UX in a product

‘That would be great’ the old turtle said slowly. ‘Thank you, the young
man!’

The Morse code table is preloaded for you as a dictionary, feel free to
use it. In CoffeeScript, C++, Go, JavaScript, PHP, Python, Ruby and
TypeScript, the table can be accessed like this: MORSE_CODE[‘.–‘],
in Java it is MorseCode.get(‘.–‘), in C# it is MorseCode.Get(‘.–‘),
in Haskell the codes are in a Map String String and can be accessed like
this: morseCodes ! “.–“, in Elixir it is morse_codes variable.

Graphic Design

Be good with color:
Make color combinations harmonious and effective.

Employ white space where needed:
Actively ‘use’ blank space to create clean looks, express hierarchy and
relationships among contents.

Visual hierarchy in content organization:
Prioritize different parts of contents, guide users as to read and
understand contents in desired order/manner

Deciding what’s good:
It’s not enough to just know general principles what makes a design
good. Need to come up with your own criteria in order to decide what’s
good for your own product.

So the little hamster pushed it and the old turtle rolled down. ‘Good
bye.’

All the test strings would contain valid Morse code, so you may skip
checking for errors and exceptions. In C#, tests will fail if the
solution code throws an exception, please keep that in mind. This is
mostly because otherwise the engine would simply ignore the tests,
resulting in a “valid” solution.

Designing for Mobile

有的是不懂的technical details,基本只看了标题,就忽略吧。。。

‘Good bye.’ As soon as they waved goodbye, hamster suddenly slipped and
fell into the water.

Good luck!

Interaction Design

From
Wikipedia,
The Five Dimensions of Interaction Design:

The dimensions of interaction Design was first introduced in the
introduction of the book Designing Interactions. Gillian Crampton
Smith stated that there were four dimensions to an interaction design
language. A fifth dimension was added by Kevin Silver.

1D Words – This dimension defines the interactions. Words are the
interaction that users use to interact with.
2D Visual Representations – The visual representations are the
things that the user interacts with on the interface. These may
include but not limited to “typography, diagrams, icons, and other
graphics”
3D Physical objects or space – The space with which the user
interacts is the third dimension of interaction design. It defines the
space or objects “with which or within which users interact”
4D Time – The time with which the user interacts with the
interface. Some examples of this are “content that changes over time
such as sound, video, or animation”
5D Behavior – The behavior defines the users actions in reaction
to the interface and how they respond to it.

Human-Centered Design

澳门新葡萄京娱乐 7

澳门新葡萄京娱乐 8

Instead of making your product awesome, think about how to make users
using your product awesome. What users can become badass about around
your tool?

其他情节并未细看,mark下:
Content Strategy for
Interfaces
Creative problem solving and everyday
design
Effective Behavior
Design
Cultivating
Compassion

‘Help!……’ The little hamster only saw a shadow and was carried to
its back, then he passed out……

After you complete this kata, you may try yourself at Decode the Morse
code, advanced.In this kata you have to write a simple Morse
code澳门新葡萄京娱乐,
decoder. While the Morse code is now mostly superceded by voice and
digital data communication channels, it still has its use in some
applications around the world.

Front-End Design

Technical details. Skip again.

It was second days when he woke up, he suddenly found the goldfish
beside the lake. ‘did you save me?’ Said the little hamster.

The Morse code encodes every character as a sequence of “dots” and
“dashes”. For example, the letter A is coded as ·−, letter Q is
coded as −−·−, and digit 1 is coded as ·−−−. The Morse code is
case-insensitive, traditionally capital letters are used. When the
message is written in Morse code, a single space is used to separate the
character codes and 3 spaces are used to separate words. For example,
the message HEY JUDE in Morse code is ···· · −·−− ·−−− ··− −·· ·.

Product Design

(挖坑待续。。。)

“Yes,” answered the goldfish, ‘how did you fall into the lake?’

NOTE: Extra spaces before or after the code have no meaning and
should be ignored.

‘I slipped, and I plan to travel around the lake for a week,” said the
little hamster.

In addition to letters, digits and some punctuation, there are some
special service codes, the most notorious of those is the international
distress signal
SOS
(that was first issued by
Titanic),
that is coded as ···−−−···. These special codes are treated as single
special characters, and usually are transmitted as separate words.

The goldfish said, ’Really? I can carry you. Jump on my back.’

Your task is to implement a function decodeMorse(morseCode), that
would take the morse code as input and return a decoded human-readable
string.

‘It’s amazing! thanks!’ said the little hamster.

For example:

In this way, the little hamster continued its journey.

MorseCodeDecoder.decode(".... . -.--   .--- ..- -.. .")
//should return "HEY JUDE"

澳门新葡萄京娱乐 9

The Morse code table is preloaded for you as a dictionary, feel free to
use it. In CoffeeScript, C++, Go, JavaScript, PHP, Python, Ruby and
TypeScript, the table can be accessed like this: MORSE_CODE['.--'], in
Java it is MorseCode.get('.--'), in C# it is MorseCode.Get('.--'),
in Haskell the codes are in a Map String String and can be accessed
like this: morseCodes ! ".--", in Elixir it is morse_codes variable.

All the test strings would contain valid Morse code, so you may skip
checking for errors and exceptions. In C#, tests will fail if the
solution code throws an exception, please keep that in mind. This is
mostly because otherwise the engine would simply ignore the tests,
resulting in a “valid” solution.

Good luck!

After you complete this kata, you may try yourself at Decode the Morse
code,
advanced.

Good Solution 1:

public class MorseCodeDecoder {
    public static String decode(String morseCode) {
      String result = "";
      for(String word : morseCode.trim().split("   ")) {
        for(String letter : word.split("\\s+")) {
          result += MorseCode.get(letter);
        }
        result += ' ';
      }
      return result.trim();
    }
}

Good Solution 2:

import java.util.Arrays;
import java.util.stream.Collectors;

public class MorseCodeDecoder {

    public static String decode(String morseCode) {
        return Arrays.stream(morseCode.trim().split("   "))
                .map(MorseCodeDecoder::decodeWord)
                .collect(Collectors.joining(" "));
    }

    private static String decodeWord(String word) {
        return Arrays.stream(word.split(" ")).map(MorseCode::get).collect(Collectors.joining());
    }
}

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图