解决 Tailscale 上 Hysteria 和其他 QUIC 数据流传输问题
解决 Tailscale 上 Hysteria 和其他 QUIC 数据流传输问题
背景分析
解决方法
- 编辑
/etc/default/tailscaled
文件,新增以下行以将 MTU 设置为 1350:
- 重新启动 Tailscale 以应用新配置:
- 通过以下命令确认是否生效:
/etc/default/tailscaled
文件,新增以下行以将 MTU 设置为 1350:I have been working for the current company for half a year. I have a clear picture of the working pattern: We are a small design team, but each member has to be responsible for both the UI and UX design for many internal systems.
Some of the design requirements are not complex at all, but the stakeholders want to make the interface aesthetically beautiful and different from other internal systems. In contrast, other demand sides hope designers can provide a clear and understandable solution to tackle the complex interaction flow.
The previous one was much more difficult for me since I was interviewed for the senior UX designer position, and I had not expected to address these design requirements, which may have occurred considerable times.
So it is time-consuming to design a portal website or refine a running internal system since I have to try multiple design solutions to ensure it will be aesthetically beautiful and outstanding.
I wonder if 3D pictures could be a great approach to suit this type of design requirements. So I researched external products from large firms, trying to know how they use 3D pictures in their SaaS products.
After collecting and investing in multiple products, I found the patterns:
Based on the pattern above, real working conditions, and small-sized tries, I summarized the first conclusion:
Since I don’t have skills in 3D design, and my working strength is too high to spend much time learning, modeling, and rendering delicate 3D pictures, I just simply searched 3D visual elements on the Internet and then applied them to my deliverable.
Initially, this approach was workable and can help me complete my work quickly. However, drawbacks are uncovered after multiple uses:
Here, I draw the second conclusion:
Searching for 3D pictures on the Internet has limited effectiveness, so we can’t fully rely on this approach.
After drawing this conclusion, I feel horrible: does it mean that I should strive to learn skills in 3D design? My work strength doesn’t allow me to learn professional 3D software like Cinema 4D or Blender.
After thorough consideration, I think the core demand for me is not to learn 3D software, rather, I should have the ability to gain 3D pictures. Apart from that, the whole process should consist of these features that suit my workflow well:
By chance, I know there is a plugin on Figma called “Vector to 3D”. By learning outputs published in the community, it seems that this plugin could meet the features above well, improving my work effectiveness and quality. So I asked my team leader if I could spend some time discovering this plugin and sharing my experiences with team members, and she approved.
Therefore, this post is to record my internal sharing: My experience of how to build 3D modeling & rendering flow on Figma that improves our design effectiveness and quality.
This is a paid plugin, we can search for and install it in the Figma community.
The control panel is comprised of three parts: Global, Object, and Animation settings. Here I will simply introduce the interface of the first two parts, ensuring all readers learn what this plugin can make.
For the Global setting, we can adjust the cameras, and background on the “General” panel; apart from that, we can set the render quality and details on the following panel called “Render”; and then we can control lights on the next panel named “Light and Shadow”, this panel supports varies functions of lights, like the number, size, position, strength, color and so forth.
For the Object setting, we can make a 3D model by extruding, inflating, or revolving, and then increase the detail of the model by setting “Mesh Quality”. Moreover, this plugin also supports material settings, like roughness, metallic, transmission, and the like.
These features are more than sufficient to handle nearly all of my design tasks.
In this part, I will introduce two functions of this plugin: Save Preset and Template Preset.
Saving preset allows us to memorize the current view, modeling, and material settings of the frame. We can reload all the settings by the next open, even sharing with friends.
Templating Preset is not only the masterpiece of connecting the plugin with Figma but also a key factor in effectively generating 3D pictures.
Once we built a template, the plugin would memorize all the raw object preset, next step, we can replace the raw object with anything else, and succeed the raw object preset to it.
This approach is highly convenient for us when producing 3D elements. We just have to create a template, and then we replace various shapes, finally, we can produce endless 3D elements that fit our actual needs well.
How it works: First, we need to set the frame as a component and make the replaceable element that we want to replace with a new one a child component. (In the following example, I set the square bottom as a replaceable element.)
Second, we duplicate the whole component and tune settings in the plugin, then save it. (In the following example, I make a glass ball and a square bottom base with a metallic surface)
Third, we need to create a bunch of shapes that are to replace the replaceable element, making them an individual component and ensuring their layer number, order, and name are the same as the replaceable element.
Last, we can hold the keys “cmd” + “option”, drag a new shape component to replace the replaceable element, and then reload the model again. Now we can see the new shape is applied to the same presets.
Now we successfully made a template, we can produce endless 3D elements by creating and inserting new shapes.
Here, I will share a case that is already used multiple times in my daily workflow.
In this template, the shape of icons and background are replaceable, generating endless pictures and fitting nearly all of my design tasks. So it can be a resource library, empowering other team members.
Meanwhile, I created a color pattern, which not only can be used to represent states like success, fail, warning, and the like but also can be applied to the system with different color themes, ensuring our outputs are highly scalability.
In the post above, we learned the interface of Vector to 3D, how to make a template, and how I use this flow in actual workflow.
We are familiar with the 3D design workflow in Figma. To conclude this post, I’d like to summarize the key advantages of this process.
We can simply recognize that the plugin “Vector to 3D” is a lite version of 3D software, simplifying complex functions from traditional 3D software and keeping essential functions.
This workflow allows us to produce great 3D elements that don’t have to leave Figma. Apart from that, we can simply tune colors in Figma, which doesn’t like the traditional workflow that always switches from software to software.
One of the core features of Vector to 3D is that makes up models from vector shapes, by taking advantage of this, we can efficiently produce 3D pictures that effectively meet our needs and align well with business contexts.
The plugin Vector to 3D can coordinate with the components of Figma, not only remembering global presets like lights and cameras; but also allowing replacements to succeed presets like materials and position from previous elements. By templating these presets, we can endlessly produce 3D pictures with the same style.
This workflow is not only successfully used in my daily work but also influences my colleagues. After this sharing, 50% of my team members purchased and used this plugin in their design tasks.
If you or your team are not using Figma for work currently, or you are not a designer but just simply want to try the flow from SVG shapes to 3D models, you can visit the online version of Vector to 3D: https://www.meimu.design/vector-to-3d/
Sharing: 3D modeling & rendering flow on Figma was originally published in Bootcamp on Medium, where people are continuing the conversation by highlighting and responding to this story.
在新公司工作快半年了,我对这里的工作模式已经有清晰的了解了。这里的设计师不多,但每个人要负责多个内部系统的 UI 和交互设计。
有些需求方的系统本身业务不复杂,都是简单的增删查改,但希望自己的系统能够与众不同,让人产生眼前一亮的感觉;而有些系统里的功能交互逻辑比较复杂,不同状态、不同情况比较多,希望设计师出一个交互方案能够让功能简单易用。
按这几个月的工作情况来看,第一种情况对我来说比较棘手。因为我当时面试的岗位是交互设计师,所以心理上和能力上都没有预期是要接触这样的需求的,而现实是这种需求的占比还不少。
所以我在遇到这种要为某个系统进行门户网站的设计,或者将内部系统打造得光鲜亮丽的需求的时候,我会耗费比较多时间,以及进行很多的尝试。
于是我就在想:需求方们都希望自己的系统能在一众的高度规范化和模版化的系统中脱颖而出,那么使用 3D 素材会不会是一个比较好的解决方案?
有了这个想法之后,我调研了下网上其他大公司的对外产品,看看他们在 B 端产品中的 3D 素材使用情况。
看了一圈下来,我得出了这样的规律:
基于这个规律、现实工作中的情况以及小范围的尝试之后,我得出了这样的结论:
由于我没有 3D 设计的能力,同时公司的需求密集程度也似乎不允许我们专门花时间为一些日常需求来渲染 3D 视觉图,所以在最开始我是通过在素材网站上面搜寻 3D 素材,然后直接应用在工作当中。
这个方法最开始很好用,我可以快速地完成需求,但用久了之后发现短板也很明显。
所以我得出了一个结论:
仅靠找素材的方式对我们帮助有限,不能完全依靠这种方法。
如果不能仅依靠找素材的话,这意味着我需要有 3D 设计的能力?
当初我得出这个结论的时候,心里感到一丝的恐慌:现在的工作强度,还哪有时间学习复杂的 Cinema 4D 或者 Blender 之类的专业 3D 设计软件啊!
然后我再往深处想了想,其实我需要的不是 3D 设计的能力,而是需要有获得 3D 素材的能力!意思是我不一定得会用这种专业的 3D 软件,但我要有办法获得想要的 3D 视觉素材,并且这个过程必须具备以下特点才能满足我的实际工作情境:
在想到这些东西的时候,刚好我了解到有一个叫做 Vector to 3D 的插件,似乎能够满足到以上三点需求,来提升我的工作效率和质量。于是我向领导提出这个设想,她也支持我去探索这个新工具。
这篇文章是公司内部分享会的文稿,记录着我当时探索出来的经验:如何利用 Vector to 3D 插件在 Figma 建立 3D 设计流程来提升我们的设计效率和质量。
这是一款付费插件,可以在 Figma 社区搜索并安装。
这款插件的 3D 能力分为两部分,全局配置项和当前物体配置项。接下来我将通过介绍这个插件的界面来简单介绍下这款插件。
对于全局配置项,我们可以在 “常规” 面板里配置视角和背景等参数、“渲染” 面板可以配置渲染质量、“光影” 面板可以配置灯光相关参数,如灯光数量 / 大小 / 位置 / 强度和颜色等。
对于单个物体配置项,我们可以通过 “厚度” 或 “旋转” 等的方式建立模型,并使用 “细分品质” 提升模型的质量。值得注意的是,这个软件是通过将矢量图形挤压或旋转生成出 3D 模型的,不能像传统 3D 软件那样有多种建模方式(比如克隆、布尔运算或雕刻等)。
除此之外,该插件还支持配置材质参数,如粗糙度、金属度、折射率等。这些简单材质足以应对绝大部分的 B 端场景了。
这一小节会介绍两个该插件的功能,保存配置和模版化。
保存配置允许我们将当前画框内的视角参数、建模参数和材质参数等记录到该画框当中。下次打开编辑,或者分享给其他人打开的时候可以读取之前的配置,一键将矢量图形变成之前保存好参数的 3D 场景。
模版化则是该插件与 Figma 原生功能联动的完美范例,也是高效产出 3D 素材的关键因素。
先说效果:插件会将当前物体的配置项(如厚度、位置、材质等)记录,然后用户可以将任意元素与该物体替换,并继承该物体的配置项。
这个能力极大便利了模版化生产素材。我们只要做好一个模版,然后无限替换元素,就可以生产出适用于各种业务场景的素材了。
方法很也简单,我们需要将画框设为组件,想要替换的元素也要作为这个画框组件内的子组件。(下面的例子中,我将圆球的底座作为可替换元素)
将这个画框组件拖一个出来,在插件中设定好 3D 配置并保存。
然后做出其他可供替换的元素,确保图层的数量、排序、命名与画框内的替换元素一致
最后我们在左侧面板中按住 Cmd + Option 将其他替换元素与画框内的替换元素进行替换,然后在插件中重新加载一遍模型,我们能看到新的形状也应用上原有替换素材的参数。
这时,我们的模版已经制作成功了,后续只要无限制作替换素材,就可以获得无限的视觉素材。
这里分享一个我在工作中实际应用的例子。我制作了一个生成蓝色 3D 玻璃风格图标的模版。
这个模版中,图标和背景面板的形状均可以替换,由此可以生产出很多种变化,适应不同的业务场景。所以也可以积累成为素材库,供团队的其他成员使用。
同时,我也建立了一个色板,可以用于表达一些状态(成功、失败、警告等),或者用在不同颜色主题风格的系统内。这样我们的模版能产生更多的变化,适用到更多的场景中。
上文介绍了 Vector to 3D 的界面使用、如何制作模版以及分享了我在实际工作中应用的例子,我们现在已经掌握了在 Figma 中进行 3D 设计的流程。文章的最后总结一下做这件事的优点。
1.学习成本低
可以将 Vector to 3D 理解为是一个简化版的 3D 软件,移除了像传统 3D 软件比如 Cinema 4D、Blender 里面的很多复杂功能,仅保留基础能力。
2.Figma 内完成全流程
用这套工作流程可以使设计师不离开 Figma 工作环境就能生产出不错的 3D 素材,并且出图后也能在 Figma 内进行简单调色。不需要像传统 3D 工作流程那样在不同软件里的来回导出导入。
3.可定制程度高
Vector to 3D 的特点是基于矢量图形生成 3D 模型,所以我们能轻松生产出业务相关的元素,使得视觉素材能高度贴近业务场景。
4.风格高度统一
Vector to 3D 能够与 Figma 组件能力联动。可以将灯光、摄像机等全局参数记忆在组件中,替换子组件也能继承原本的材质、位置参数。同时能够将这些参数模版化,无限产出相同风格的视觉素材。
这套工作流除了在我自己的实际工作中有成功应用,也成功影响到了团队中的其他设计师。在这次分享会过后,团队中有50%成员已经用在需求中使用该插件来生成视觉素材了。
最后看到这里的朋友如果当前团队没有在用 Figma 作为工作软件,或者并非 UI/UX 设计师也想试试通过 SVG 图形制作 3D 模型的过程,这里我贴 Vector to 3D 的网页版连接:https://www.meimu.design/vector-to-3d/
When my workflow had fully transformed from Sketch to Figma, I found there was an option “Case-Sensitive Forms” placed in several typeface setting panels. The appearance of the font might change slightly and occasionally when I enable this setting.
I was interested in this setting option, then I tried to find out concepts and related knowledge about the term “Case-Sensitive Forms.”
In this post, I will explain what Case-Sensitive Forms are, when should we implement this feature to uplift our design with several practices, and how to use it in our workflow.
The “Case-Sensitive Forms” is a feature of OpenType features, which are like hidden compartments in fonts that allow us to change how fonts look and behave. When we use this feature, the font will:
In general, punctuation marks are vertically centered with lowercase characters, which is known as “x-height.”
However, when using the Case-Sensitive Forms feature, some punctuation marks are aligned with the height of uppercase characters, which we call “Cap height.”
Some fonts use oldstyle figures by default to add visual attraction. It is often used in traditional publications like books and newspapers since this font has a rhythmic beauty with varied heights.
When using the Case-Sensitive Forms feature, fonts will be directly changed to modern figures, also known as “lining figures.”
Inspiring by the feature 1, shifting some punctuation marks up to a higher position, it is well-suited for compositions that mix uppercase characters, figures, and CJK characters.
Here is a list of compositions that might be visually improved by using the Case-Sensitive Forms feature.
Because figure glyphs are as high as uppercase characters, the use of Case-Sensitive Forms is ideal for displaying phone numbers that include area codes.
Similarly, date and time is also well-suited for using the Case-Sensitive Forms feature since they are typically consisted of figures and marks.
To make titles or other important information visually prominent, we often capitalize the text, which is also ideal for using the Case-Sensitive Forms feature.
East Asian typography looks like a square, meaning the visual height of Chinese, Japanese, Korean, and Vietnamese characters is similar to the “X” letter’s cap height.
Therefore, the Case-Sensitive Forms feature are also fitting for the East Asian typography scenario, ensuring marks are vertically aligned with the characters.
When displaying sensitive information on digital interfaces, such as Social Security Number(SSNs), bank account numbers, and phone numbers, we often use asterisks (*) or dots (•) to partially obscure it. In that case, the Case-Sensitive Forms feature is highly suitable.
A rare scenario that may be ideal for using the Case-Sensitive Forms feature is text faces, such as “:D” and “:-)”
Only typefaces that support the OpenType feature of Case-Sensitive Forms can enable this feature.
It means that not ALL typefaces support this feature, even if we implement this setting in design tools or through coding. I’ve simply made a list to clarify which typefaces support it and which not.
Typefaces that support the Case-Sensitive Forms feature:
Typefaces that DO NOT support the Case-Sensitive Forms feature:
In other words, the Case-Sensitive Forms feature only works on Apple devices if we use the system default font on our website.
Follow these steps to implement the Case-Sensitive Forms feature in Figma. Select a text layer, then:
To use the Case-Sensitive Forms feature on the website, we just need to simply add font-feature-settings: ‘case’; to the element that we want to implement this feature.
The CSS Compatibility of this style is quite good. Again, we need to ensure the typefaces support the Case-Sensitive Forms feature; otherwise there will be no changes.
We’ve discussed many scenarios and advantages of using the Case-Sensitive Forms feature. So should we set it as the default style?
My answer is NO.
Although it can uplift visual details with numbers and capital text, it is quite awful when used with lowercase letters, which are more commonly used on our website.
However, we can safely implement the Case-Sensitive Forms feature in some components that always consist of numbers, marks, and capital letters. Here is the list of UI components:
For comparison, let’s see the most common solution in which the Case-Sensitive Forms feature is not implemented on digital interfaces.
Recently, my team has been redesigning our mobile component library. I’ve suggested using the Case-Sensitive Forms feature on the components listed above. Let’s see the outcomes in the future.
Uplifting your design details with the Case-Sensitive Forms feature was originally published in Bootcamp on Medium, where people are continuing the conversation by highlighting and responding to this story.
<machine name>.<tailnet name>.ts.net
域名,如果你想省略 <tailnet name>
可以继续往下读。Tailscale can automatically assign DNS names for devices in your network when you use the MagicDNS feature.
100.64.0.0/10
地址。你可以直接访问这个 IP 地址,但是正如直接使用 IP 网上冲浪是个坏主意,直接使用 IP 也不是个好主意。所以 Tailscale 会为每个 IP 也分配一个 ts.net
的地址。100.100.100.100
这个 DNS 服务器解析的。这一 DNS 服务名叫 MagicDNS。https://monitoring
就相当于访问 https://onitoring.yak-bebop.ts.net:443
。TENANT_ID
TAILNET_NAME
- 你可以在 这里 找到,填入包含 ts.net
的名称ACCESS_KEY
- 你可以在 这里 申请 API access tokens,有效期最长 90 天<machine name>.ts.net
来连接对应的主机实例。ts.net
。由于我不考虑多个 Tailnet 的情况,也不需要记住你 Tailnet 的名称。*.ts.net
只要域名解析未过期都会发起一次请求,通常这不是问题,如果你遇到了问题可以在评论中告诉我192.168.114.0/24
,Surge 的配置中有这样一段:192.168.114.0/24
,在外面时先隧道连接 PYCELLE 再去到目标的地址。Surge 提供 Rule 类型的脚本,能够很容易解决这个问题。192.168.114.1
作为网关192.168.114.0/24
String.prototype.includes
,假设你家的内网有多个网段可能需要下面的函数来判断子网。Recently, I heard that Coursera has a UX design course developed by Google’s design team. This course covers the entire design process and teaches us how to present our portfolio, prepare interviews, and the like.
It is necessary to enroll in this course even though it is designed primarily for beginners and fresh graduates. It would enhance my English skills on one hand, and deepen my understanding of Western design practices and culture on the other. Since the term “UX design” is called out by Western designers and I am eager to compare Western design cultures with those I’ve experienced in China.
So I enrolled in this online course, trying to spare my time on it. Such as during lunch and dinner breaks on weekdays, or parts of the weekend. I completed the whole certificate within two months. And now I’d like to write down what I learned from this course:
I have consistently tried to think about and expand design boundaries through different aspects, which requires a breadth of knowledge. Here, I will share several new concepts along with my personal understanding.
This is a method of synthesizing that organizes data into groups with common themes or relationships. It can be used in different stages of the design process, such as during brainstorming or after collecting users feedback. The example below focuses on the latter.
After collecting a batch of user feedback, the design team condense each piece of feedback into a single sentence and write it on sticky notes. Then we post them up on a whiteboard or digital tools like Figma. Then the design team look for sticky notes that reference similar ideas, issues, or functionality and collaboratively organizes them into clusters representing different themes.
When I first learned about this approach in the course, I realized that this approach is similar to another method called “Card sorting” that was included in an article I translated earlier named [English to Chinese Translation] How we rebuilt Shopify’s developer docs. Both methods involve clustering sticky notes, naming these groups and summarizing the themes or relationships.
However, card sorting is implemented by external participants and aims to uncover users’ mental models to improve information architecture; Whereas affinity diagramming organizes a large amount of raw data to show the team which problems users are most concerned about and consider high priority.
* This concept is mentioned in Module 3 of Course 4 (Conduct UX Research and Test Early Concepts — Module 3 — Gather, organize, and reflect on data)
This concept refers to an individual’s ability to gather, communicate, and create content using digital products and the internet. For example, senior adults or those living in areas with poor internet infrastructure may find it difficult to understand interfaces and functionalities, they are considered to have lower digital literacy.
In contrast, young people, especially those working in the information technology industries, are typically familiar with new software and concepts, and can quickly adapt to them.
This course does not dig deeply into this concept, rather, it emphasizes the importance of understanding our users. If our product targets a broad range of users, it is good to consider the needs of users with lower digital literacy. Moreover, this factor should also be considered when recruiting participants for usability tests.
* This concept is mentioned in Module 2 of Course 1 (Foundations of User Experience (UX) Design — Module 2 — Get to know the user)
This concept refers to a group of UX methods that trick users into doing or buying something they wouldn’t otherwise have done or bought.
In the course, instructors clearly point out that this is an unethical and not a good practice. Businesses may lose their clients’ respect and trust once clients realize that they have fallen into deceptive patterns. I will share a few interesting examples that the course provided.
It is really interesting that these deceptive patterns are so common in the Chinese e-commerce industry that it might seem unusual if those strategies were to disappear.
This seems to reflect cultural differences between China and the West. In China, core team members, such as designers, product managers, and operators, collaboratively discuss how to induce and prompt users to make a hasty decision. Also, we regularly hold reflections to discuss and share insights on how to deeply incite users’ motivation.
In 2018, I landed my first job as a UI designer at an e-commerce company. One of my main tasks is designing promotions, such as “claim your vouchers”, “flash sales ending in N hours”, and creating illustrations of red pockets and flying coins, and the like. I didn’t really like these approaches at that time, so I eventually turned to the B2B and SaaS industry, focusing more on UX design.
Although I am not fond of these types of designs, these seem to really help companies grow and generate income. We could stabilize our employment only if our company were earning profits. Perhaps that is an inextricable cycle: obviously, deceptive patterns are unethical and bad as they are inducing and annoying our users, but we must continuously implement these approaches and think about how to make them more effective.
* This concept is mentioned in Module 3 of Course 3 (Build Wireframes and Low-Fidelity Prototypes — Module 3 — Understand ethical and inclusive design)
The course thoroughly explains a concept called “implicit bias”. It refers to the collection of attitudes and stereotypes associated, influencing our understanding of and decisions for a specific group of people.
For example, imagine you’re designing an app to help parents buy childcare. To personalize your onboarding process, you start by displaying bold text saying, “Welcome, moms. We’re here to help you…”
This is an example of implicit bias, since it excludes every other type of caregiver, like grandparents, guardians, dads and others.
In addition, here are some interesting biases the course introduced:
I was shocked when I was learning this part. I strongly resonated with these biases which I had never perceived before. After all, the course lets us be aware of these biases and provides approaches to help us avoid falling into these pitfalls.
* This concept is mentioned in Module 3 of Course 3 (Build Wireframes and Low-Fidelity Prototypes — Module 3 — Understand ethical and inclusive design)
I listed some concepts above that I had barely encountered in my workspace. Becoming a UX designer appears to require a broad range of knowledge, such as design, the humanities, psychology, and sociology. I am now interested in psychology after completing this course.
There are plenty of listening and reading materials involved in the course. Typically, each video lesson is accompanied by an article. If there are additional knowledge points, a single video might be accompanied by two or three articles.
Most instructors in the course speak with American accents. They also speak slowly and clearly, which makes me comfortable and usually allows me to understand without opening closed caption. Sometimes, I need to rewind a few seconds when they are speaking long sentences with many clauses or introducing new concepts, and I will open closed captions if I am still confused.
It is worth pointing out that the course contains lots of industry jargon, and I resonated with this because I used similar approaches or processes in my workspace by using Chinese. As a learner, I created a spreadsheet to record expressions that might be useful, such as:
I think it is valuable to collect this industry jargon because it is authentically expressed, which can’t be translated by common translation tools. This will be helpful for me to read design articles and write blogs in English.
The course introduces several assistive technologies, such as color modification, voice control, switch devices, and screen readers, which can help people with different types of disabilities to use our products easily.
Instructors also point out that even people who don’t have disabilities, or who do not perceive themselves as having disabilities might benefit from these assistive technologies. The course suggests that we think these factors over throughout the entire design process. For instance:
Here is a website that demonstrates the color modification feature: HubSpot.com
On the top navigation of this website, it provides a switch for us to toggle a high-contrast mode. Moreover, it also supports reduced motion effects — if I enable the reduced motion setting on my device, this website will minimize motion effects as much as possible.
The course also introduces a concept called “equity-focused design.”
Instructors clearly define the difference between “equality” and “equity”:
The course also points out that equity-focused design means considering all races, genders, and abilities, especially focusing on groups that have been historically underrepresented or ignored when building products.
They use a survey question as an example: when gathering participants’ demographic information like gender, it is not enough to provide three options: “Male”, “Female” and “Other”. To make our design more inclusive and equitable, we should offer additional choices, including “Male”, “Female”, “Gender-nonconforming”, “nonbinary” and a blank field. The latter provides non-conventional gender options, uplifting those who might be marginalized in conventional surveys. This approach also aims to balance the opportunities for all groups to express themselves, ensuring their voices are treated fairly and heard.
In this lesson, I clearly faced a culture gap from the West. In fact, I don’t really like to dig into this concept deeply, mainly because I can’t determine whether this approach is right. Sometimes I think it is unnecessarily complicated, but at other times, I recognize that there are people with non-traditional genders around us who may truly be eager to be treated fairly.
When I was learning this lesson, I realized that there was an opportunity to incorporate accessibility features into the project I was recently working on. I will write a new post if this project lands successfully.
* This concept is mentioned in Module 2 of Course 1 (Foundations of User Experience (UX) Design — Module 2 — Get to know the user)
In the final course, instructors teach us how to lay out a portfolio and what content should be included. They also inform us the process of interviews and how to thoroughly prepare for interviews.
The guidance they mentioned is for the Western workplace, which may not seamlessly fit in the Chinese workplace. For example:
I was deeply impressed by how they elaborated on the preparation and important considerations during the interview process. For example:
I resonated with the approaches and tricks mentioned in the course that I had previously used, which gave me a strong feeling that I was on the right track.
Additionally, the course also provides detailed instructions on how to pursue freelance design work. For instance:
* This concept is mentioned in Module 3 of Course 7 (Design a User Experience for Social Good & Prepare for Jobs — Module 3)
Well, above are lessons I’ve learned from the Google UX Design Professional Certificate on Coursera over the past two months. I think that this is an interesting course, although not all content can be applied in my daily work, I’ve also learned the thinking processes and workplace cultures of designers in another part of the world.
I strongly recommend designers reading this post consider to enrolling in the Google UX Design Professional Certificate, by doing this, you might probably gain new insights. The course costs $49 monthly, which is not expensive. It is likely to complete the entire course over two or three months if you have a full-time job.
Things worked as I expected, and I will start my next project in the second half of the year.
Lessons I learned after completing the Google UX Design Professional Certificate was originally published in Bootcamp on Medium, where people are continuing the conversation by highlighting and responding to this story.
最近了解到 Coursera 这个平台里面有一个 Google 设计团队出品的的 UX 设计课程,课程里会介绍完整的 UX 设计过程,并且教我们怎么写作品集和准备面试之类的。
即便这是一门面向初学者或应届生的课程,我觉得也有必要参加这个课程看看。一方面能锻炼下自己刚闭关修炼出来的的英语能力,更重要的是还能了解下西方职场的设计流程和设计文化(毕竟 “UX 设计” 这个概念是西方人创造出来的),我一直想对比看看老外的设计文化和自己这几年在国内职场的感受有没有什么异同。
于是就报名参加了这个网课,都是抽时间来学习的。比如工作日吃午饭和吃晚饭那段时间,或者周末的部份时间等等。总共花了 2 个月完成了所有课程。写这篇文章的目的也是记录下结课之后的感受:
工作这几年,我一直会尝试从更多不同的维度来思考和扩展原有的设计边界,做到这点需要有比较宽广的知识面。这里分享下我在课程里了解到的一些新概念,以及我的理解。
这是一种组织数据的方法。从不同的反馈和数据中整理出他们的相似之处和关系。亲和图可以用在不同的设计阶段,比如在头脑风暴中,或者收集到用户反馈后,这里以后者为例子。
具体做法是在收集好一批用户反馈后,将每一个原始反馈浓缩成一句话,写在便利贴上并将它们都贴在白板上(当然,也可以用在线工具如 Figma 完成)。然后团队成员一起看这些内容,将提到相似概念/问题/需求的便利贴放在一起,并给这一堆便利贴起个名字概括他们的共同点。
根据分组结果,我们可以总结出一些趋势、痛点,了解到我们需要解决的问题也为后续的洞察报告提供了依据。
最开始在课程里了解到这个方法的时候,我突然想起来这与我两年前翻译的文章:【译文】我们如何重建 Shopify 的开发者文档 里提到的 “卡片分类法” 很像,都是将相似的卡片堆成一组,给该组命名,然后得出结论。
但卡片分类法里面 “分类” 的动作是由团队外部的人参与的,并且用于揭示用户的心智模型并为解决网站信息架构问题提供指引;而亲和图则是通过组织大量原始数据,告诉团队有哪些问题是用户关心的,亟待解决的问题。
*该概念在第四门课程的第三个模块中提及 (Conduct UX Research and Test Early Concepts — Module 3 — Gather, organize, and reflect on data)
这个概念大意是指人们对于数字产品、网络来获取信息、交流和创造内容的能力。比如一些年长的人、生活在网络没那么普及的环境中的人,他们对于使用电子设备和互联网就会有些障碍,理解功能和界面也会感到困难。而年轻人,特别是互联网行业的从业者则对这些就比较熟悉,各种新软件、新概念都能很快上手。
课程中对这个概念并没有展开太多,主要是提醒我们作为设计师,要了解到我们的用户是谁。如果是一个面向较宽广的用户群体,最好考虑也到对电子设备和互联网没那么熟悉的人。包括在做可用性测试时,招募的参与者最好也考虑到这个因素。
*该概念在第一门课程的第二个模块中提及 (Foundations of User Experience (UX) Design — Module 2 — Get to know the user)
指的是一种设计方法:通过设计去诱导用户去做一些本来不想做的事情,或购买本来不想买的东西。
在课程中,明确指出这是不道德的事情,不是好的做法。一旦用户认为自己陷入了欺诈性设计模式当中,公司将会失去用户的尊重和信任。课程中列举了一些例子,我可以拿几个有意思的的分享出来。
有意思的是这几种 “欺诈性设计模式” 在咱们国内电商环境中太常见了,以至于没有这些反而感觉不正常。
看起来这是国内外文化的差异的一种体现。在国内的环境中丝毫不会避讳这些东西,反而设计、产品、运营都会一起构思怎么做才能更好地 “诱导” 用户做某些事情。甚至还会在内部复盘、分享,看看过程中有哪些地方可以继续改进。
2018 年,我的第一份工作是在面向消费者的电商公司里做 UI 设计师,经常要在界面上做出 “领取优惠券”、“秒杀价剩余 N 小时” 和礼包、金币满天飞的插画等设计,正正是因为自己不喜欢做这种设计,之后才转向了更注重 UX设计的做 B 端、SaaS 行业。
虽然自己本身是一点都不喜欢这种设计方式,但这似乎能实打实地帮助到公司获取收入。公司有一份好的收入,大家的工作才能稳定。似乎陷入了一个无法走出的循环 —— 明知道这种设计方式是不对的,是有诱导性质且给用户带来烦扰的,但又不得不继续做,并想办法做得更好。
*该概念在第三门课程的第三个模块中提及 (Build Wireframes and Low-Fidelity Prototypes — Module 3 — Understand ethical and inclusive design)
课程里着重介绍了一个叫做 “隐性偏见 (implicit bias)” 的概念。“隐性偏见” 指的是我们潜意识里有一种态度或偏见,影响了我们对某一群体的理解或决定。
比如一个餐厅老板收到两份简历,求职者 A 是一个二十多岁的毕业生,没有餐饮行业经验;而求职者 B 则是一个 50 多岁的人,有 30 多年餐饮行业经验。但最终老板选择了求职者 A,因为他认为年轻人的体力更好,做事情会比 50 多岁的人要快。这就是一个 “隐性偏见” 的例子。
课程中还介绍了其他几种偏见,这里也分享一些我觉得有意思的:
学到这里的时候我似乎被当头一棒,我似乎对里面提到的不少偏见都有共鸣,并且自己从来没意识到有这么一回事。总的来说,课程希望我们认识这些偏见,然后提供方法教我们怎么避免这些偏见。
以上列举了几个我在课程里了解到在日常工作中不怎么接触到的概念。可以看出来做一名 UX 设计师似乎得有宽广的知识背景,比如设计、人文、心理、社会学等等。通过这门课程,我觉得我对心理学产生了一些兴趣。
* 该概念在第三门课程的第三个模块中提及 (Build Wireframes and Low-Fidelity Prototypes — Module 3 — Understand ethical and inclusive design)
课程里面的听力和阅读材料实在是太多了,基本上是一节视频课程,搭配一篇的阅读,如果有其他可以衍生出来的知识点,甚至会多篇阅读。
里面绝大多数老师都是美式口音,语速有刻意地减慢,我听着很舒适,绝大部分情况下不用看字幕。只是到了一些包含大量从句的长句子或新概念时可能会需要倒退一下多听几遍,再听不懂就会开字幕来看。
值得一提的是,里面有大量的行业术语,有很多我在国内日常工作中的用到的设计方法/流程等,这里都有出现到。作为学习者,我自己有做一个表格,把值得记录下来的表达方式都记下来,比如:
我觉得积累这种行业词汇有一个宝贵之处是,它的表达很地道,用通用的翻译软件是做不到的。这对我阅读设计经验文章,或者自己用英文写设计博客很有帮助。
课程中介绍了几种辅助技术 (Assistive Technology),如颜色模式、语音控制、Switch 设备和屏幕阅读器等帮助身体有障碍的人们更好地使用我们的产品。课程强调即便是健全人,或者认为自己是健全人的群体,也有可能会用到这些辅助技术。课程建议我们在设计的全流程都考虑这些因素。具体的做法,比如:
这里分享一个在这方面有所体现的网站:HubSpot.com
这个网站提供了强对比的色彩模式,在顶部导航栏里有开关可以切换。同时也支持减弱动画的效果,如果我的设备在系统设置里设置了减弱动画,这个网站的大部份动效都会被移除。
课程中介绍了一个概念叫做 “以公平为中心的设计” (equity-focused design),并厘清了 “平等” 和 “公平” 这两个概念:
课程中指明,面向 “公平” 的设计,需要考虑到所有种族、性别、能力,特别是一些曾经被忽视和排除的群体。
他们以一个问卷问题作为例子:在收集受试者的性别信息时,如果只提供三个选项:“男”、“女” 和 “其他” 是不够的。如果想要更包容和公平我们应该提供:“男”、“女”、“非常规性别”、“非二元性别” 和 “请填写”。后者通过提供非传统性别选项和自定义选项,关注到了那些可能在传统问卷调查中被边缘化的群体。试图平衡不同群体间的表达机会,确保他们的声音被平等对待和听见。
从这门课程里我正面感受到了来自西方文化差异。实际上我不是很想太深入学这里面的门道,主要是我没法判断他们这种做法到底是对还是错,我有时候会认为这是在闲着没事干,有时候又认为我们身边确实也会有这种非传统性别的人,他们或许真的需要被 “平等对待”。
学到这里时,刚好公司的工作中有机会可以让我在设计中加入对无障碍的考量,我便抓紧机会在公司实施了一番。如果我的计划落地成功,我也会在这里分享出来的。
*该概念在第一门课程的第二个模块中提及 (Foundations of User Experience (UX) Design — Module 2 — Get to know the user)
最后一课老师教授了我们怎么做作品集、一份作品集里要包含哪些东西、面试的流程、怎么准备面试等。
课程里讲述的都是西方世界的职场规则,有些未必在国内职场适用,比如:
印象比较深的是在课程里他提到了对于面试的准备,以及面试过程中的注意事项。课程里说得真的挺细的,比如:
有时候刚看看到课程里提到的方法和技巧,正好是我有用过的,我会感到有共鸣,觉得自己的方向是对的。
另外,课程里还有教我们如果想走自由职业,要遵循怎么样的步骤。写得还比较详细,我这里列举几点:
*该内容在第七门课程的第三个模块中提及 (Design a User Experience for Social Good & Prepare for Jobs — Module 3)
以上就是我这两个月以来在 Coursera 平台里学习 Google UX 课程的一些收获。我觉得还是挺有意思的一门课程,即便不是所有内容都能在日常工作中应用,但至少知道在地球里的另一个世界,那边的设计师他们的思考习惯、职场文化是怎样的。
我很推荐看到这里的设计师们去这门课程 Google UX Design Professional Certificate 里瞧瞧,相信大部份人都是有收获的。收费不是很贵,是按月来收费。每个月 49 美刀,工作党每天抽点时间来看,一般 2~3 个月都能完成了。
事情按照预期发展,五一假期结束了这门课程,下半年又可以开始捣鼓另一件事情了。
此文来自于我在公司内部 Wiki 上的文章,现将其整理并转载到我的博客。
Co-Authors:OD、wan92hen
GitHub 官方文档(
另一个值得注意的地方是 GitHub Issues 是一种异步沟通体系。所谓异步,即我提交了一个 Issue 以后,并不意味着立即就能够收到反馈。异步沟通虽然不像同步沟通那样来得直接,但并不代表它不高效。因为不期望能立即收到反馈来进行进一步地沟通,双方都需要尽可能地将信息一次性传达到位,在一定程度上反而可以提高沟通效率。
上文中提到了 Issue 所代表的含义,它可能是关于项目的一个新想法,也可能是对于某个特定功能的使用反馈,还有可能是使用过程中碰到的各种各样的 Bug。提交 Issue 的目的自然是让项目维护者知道有这样的一个 Issue 存在。这看起来是一句废话,但实际上不同的 Issue 内容,能够达成这个目的的效果可能千差万别。一个好的 Issue 能够清晰、准确地表达出自己希望传达的信息,项目维护者跟提交者之间不需要再次进行额外的沟通就能够顺利地处理掉这个 Issue。反之一个不好的 Issue 不仅起不到这样的效果,反而可能在你来我往的交互中逐渐跑偏甚至变得火药味十足。
提交一个 Issue 很简单,打开 GitHub 登录下自己的账号,点几下鼠标敲几下键盘就可以提交一个 Issue。但是要提交一个好的 Issue 还是需要一定技巧的。在此之前,建议先阅读下 提问的智慧 这篇文章,虽然是来自英文版的直白翻译,其文化背景、用词风格以及社会环境跟国内有所差异,描绘的场景跟 GitHub Issues 的使用场景也略有区别,但是其中关于提问相关的注意事项还是很值得参考的。这里也借鉴下这篇文章的格式,尝试总结下如何提交一个好的 GitHub Issue。
首先,提交一个 Issue 不仅仅是为了请求帮助或者报告问题,也有可能会帮助后续遇到此问题的使用者。从某种意义上来说,这也是对整个开源生态非常具有价值的贡献。所以,不要抱着把问题抛出去等待解决的心理,需要认真对待提交 Issue 这件事,因为你也是一个贡献者。在提交 Issue 前,建议先做以下几件事:
理清楚你遇到的问题,需要有一定的逻辑性。
查阅项目文档,搜索是否有相关功能、问题的说明。幸运的话在这个环节我们的问题就可以得到解决,也可能会发现某个功能是设计如此,当然这个情况下我们仍可以提出自己的想法,但相应的措辞就需要有所转变。
在该项目的 Issues 中搜索有没有类似问题。同样的,如果能够找到类似问题并且在回复列表中看到解决、规避方案,又可以省下我们好多等待时间。如果问题看起来类似,但又不完全一致,可以就在此 Issue 进行回复并说明你遇到的问题。
在 GitHub 项目之外进行搜索,包括但不限于搜索引擎、内部知识库、项目论坛、交流群等等任何你能想到的地方。如果该项目跟某个其他项目使用了同样的底层库或依赖,有可能类似的问题在其他项目相关资料中可以找到解决方案;如果该项目足够活跃,可能会有用户在其他论坛或博客中分享使用经验或某个问题的解决方案。
Double Check 一下问题确实存在。在项目维护过程中,包括我自己的软件使用经历中,出现过很多因为自己的各种失误而引起的问题,例如某个单词拼写错误、某个功能的前置操作没有完成等等等等。如果这样的 Issue 被提交上来,不仅会浪费双方的时间,还会降低自己在项目维护者心中的可信度,使得后续真正的问题不被重视(参考狼来了的故事)。
在新版本中尝试验证。
如果是同时遇到多个不相关的问题,不要提在同一个 Issue 里,可以提交多个 Issue,方便维护者跟踪。
当你真正准备好提交一个问题时,请再次回想下 GitHub Issues 是一个异步沟通系统,假设你只能够发一条消息给项目维护者,你要怎么做才能够让自己的问题得到解决。
尽可能使用一句话作为标题,但要求直截了当。千万不要直接把问题的详细内容直接写在标题。
给定一个范围标记,用于缩小这个问题的范围,方便维护者和后续使用者索引。
仅填写问题简述,不要添加无关内容。
Bad | Good | Why |
---|---|---|
表格渲染异常 | 编辑器:表格语法渲染异常,在编辑器可以正常渲染,发布后无法渲染 | 问题描述不够清晰 |
安装报错 | 安装站点异常,提示 Internal Server Error | 问题描述不够清晰 |
列表无法渲染 | 文章列表:后台文章列表渲染空白,可能是src/components/PostList.vue中的 xx 属性为空 | 问题描述不够清晰 |
数学公式问题 | 文章页面:数学公式原样输出,没有经过渲染 | 问题描述不够清晰 |
上传附件 bug 提交,请作者看看,谢谢 | 附件上传:在附件管理中上传附件提示失败,浏览器控制台提示 413 Request Entity Too Large | 问题描述不够清晰,包含无关内容 |
将一个带有 “”接口用例且接口用例里面有环境配置 “” 的接口 导出来,然后 导入另外一个项目,再创建接口用例,配置环境,有时候出现新接口用例使用的是旧的环境,根本原因是 接口导出的竟然把 对应用例的环境 ID给导出来。 | 接口定义导出再导入到另一个项目时,新导入接口下的用例使用了原项目中的环境 | 问题描述不够简洁,将详细内容直接写在了标题里 |
(没有标题) | 如果不是有责任维护项目,甚至都不想点进去看内容 |
建议参考以下几点:
避免使用大量啰嗦的文字来描述,保证干练和逻辑性即可。如果无法描述清楚,可以通过补充复现步骤来辅助。一个好的 Issue 能够恰到好处地给出所需的信息。所谓恰到好处,是指信息不多也不少,刚刚好能够支持项目维护者解决这个问题或者了解这个需求。
内容仅针对此问题,不要包含遇到的其他问题,其他问题可以另外提交 Issue。
不要包含与问题无关的话语。
没有明显的错别字,合理使用标点符号
一般来说,目前 GitHub 上的项目中都会包含 Issue 模板,会提示让你填写一些环境信息,按照具体要求填写即可。如果没有,也建议根据软件特性提供必要的信息,比如:浏览器类型及版本、服务器版本、使用的设备、使用的数据库版本等。这往往能帮助维护者快速定位某些在特定条件下才会出现的问题。
这一步主要告诉维护者出现这个问题的前因后果或者上下文,因为某些问题是必须在特定的操作下才可能复现的,甚至某些问题可能是某种意义上随机出现的,如果不提供复现步骤,维护者可能会非常难以复现。这也往往增加了来回询问的过程。另外,为了更加直观的描述问题,可以提供步骤截图,GIF 动图,甚至视频(目前 GitHub 已经支持视频)。
日志对于维护者排查问题也是至关重要的,提供日志建议参考以下几点:
对一些敏感信息脱敏处理,某些软件可能会在日志中打印一些敏感信息,建议提供之前检查一遍并手动脱敏。
仅截取相关的日志,如果不知道哪部分是相关的,建议手动复现一次这个问题并快速去查阅最新打印的日志。
不仅仅是软件内提供的日志,如果这个项目是基于浏览器运行的,也可以提供一下浏览器控制台打印的日志。
提供日志的时候请务必使用 Markdown 的代码块(```)语法包裹,否则日志会非常难以查阅。
如果有自己尝试过解决,建议补充一下。因为维护者可能在不知道的情况下也提供出你已经尝试过的解决方式,这无疑增加了来回交流的次数,一定程度地影响效率。
当你提交完成一个 Issue 之后,项目维护者可能并不会及时回复,这也是异步沟通的一个特点。但请耐心等待回复,不要在短时间内评论催促,有内容需要补充除外。
当你提交的 Issue 收到回复后,GitHub 会向你的邮箱中发送通知,也可以使用 GitHub 内置的通知功能进行跟进。
几个建议:
如果收到回复,你的邮箱可能会收到 GitHub 的提醒邮件,虽然 GitHub 支持通过邮件回复 Issue,但请千万不要使用邮件回复,因为各个邮件客户端的差异,很可能导致最终的评论混乱,如:https://github.com/halo-dev/halo/issues/1799#issuecomment-1084632899
与维护者交流的时候不要像使用 IM 即时交流工具一样交流,尽可能一次提供完整的信息。
如果问题已经解决,一定要及时在 Issue 中告知,必要的时候也可以提供后续的解决方式。
不要包含任何的抱怨、吐槽、隐晦等不舒适的话语。即便你说的都对,但可以换一种更加友好的表达方式,仅表述问题,不输出情绪。
不要要求项目或维护者做任何事。
详尽地描述提交 Issue 和 PR 的步骤和要求。
目前 GitHub 已经提供了基于 yaml 描述表单的功能,可以提供更加直观的 Issue 提交表单,并支持表单验证,这能更加规范所有 Issue 的内容。你可以针对项目的特点,列出提交 Issue 所需的信息,如:服务器环境、浏览器版本、所使用的设备等。
相关链接:
及时排查问题,给 Issue 打上对应的标签。
不建议将 issue 当做工单使用。
不要回复之后立马关闭 issue,可以等待提交 issue 的作者回复。
不要在解决这个 issue 之前就关闭 issue。
在任何时候,都不建议直接删除 issue 或者 issue 回复。除非十分有必要,比如留下了敏感信息。
在 Issue 中交流的时候不要像使用 IM 即时交流工具一样交流。
如果在后续的代码提交中已经修复了此问题,建议在 PR 中关联此 Issue( 可以使用 Fixes #xxx
),并在 Issue 中回复。