自由职业者:你网站上必须有的10个页面

自由职业者:你网站上必须有的10个页面

http://blog.jobbole.com/533/

编者按:本文标题中虽标明是“自由职业者”,但不仅适用于这一群体,同样适用于博主(比如IT和美术相关专业的学生)。如果你能在博客中展示你的作品(最终是展现能力),通过网络传播,理想的潜在雇主,或许就会主动联系你。

几天前,我在Twitter上看见一句很在理的话:“你的博客是一份新的简历。”

千真万确!如今,每个人都熟悉网络,我们只需要在网上搜索一个人的名字就能了解他的爱好。即使你的潜在客户没有网上业务,他们也明白通过互联网可以轻松获取关于你的更多信息。

他们最可能找到什么信息呢?Facebook 上的囧照?Twitter上的谄媚评论?还是你在博客中对客户的抱怨?

为什么你的博客(网站)如此重要

如果想让你的自由职业者网站或博客能有助你走向巅峰,有一个途径是:确保拥有以下所列必不可少的页面。这些页面会帮助你的潜在客户:

  • 了解你最擅长什么和能从你这获得什么帮助
  • 发现你有多出色
  • 判断是否有能力雇用你
  • 了解、欣赏、信任你
  • 联系你以发掘合作机会

优秀的自由职业网站只有一个目的:使来访者更多地了解你。他们直接联系你或者他们留下的联系方式,你便可以持续发给他们自己的更多信息。

这10个必备页面是:

1. 主页

这是来访者来到网站上最有可能先见到的页面。这可以是静态页面,也可以是博客索引页。无论哪种方式,都要让来访者在几秒钟之内就明白自己是否来到了想要的地方。

为此,主页应传达的信息应包括你做什么及为谁做。应该非常明显地表明自己是一个可雇用自由职业者。避免诙谐的标题,而应简洁明了。

2. “关于”页面

想要更多地了解你本人的来访者会寻找“关于”页面。一定要提供基本资料,例如你是谁,你在哪(尤其是当你目标是当地客户的时候)。让他们了解你的特别之处,知道你与其他同行的差别。这页面不是用来列出你的资格证书的(以后会越来越多),而是用来展示你的所长及你是如何获得这些成就的。

如果你有些与服务无关的怪癖和爱好,但却使你更风趣,你也可以在这里提及。谨记,人们雇用的是同伴,而不是机器人。

举例来说,我是如何得到第一份工作的。当时我应聘一家儿童电视制作机构的研究员。我有通讯专业的学位及一些电视制作行业的在职培训经历。然而,老板雇佣我的原因竟是我简历中提到的我喜欢唱歌并且曾在一些业余剧团里演出。

唱歌的确与该工作说明毫无关系,但却是我从其他求职者中胜出的原因。(多年以后,我在一场演出中当替唱演员。)

你不会知道什么使你应聘成功,所以,即使看似无关,也要列出你热衷的事情。

3. 你的服务

专门用一个页面来描述你所能提供的项目细节。如果过于复杂,你甚至可以每页介绍一个服务,但是一定要有一个列出所有服务的页面。

要不要公开报价?这没有严格规定。就我个人而言,我不喜欢让潜在客户去猜。如果他们无法请我,我宁愿他们离开,也不愿他们问我要份竞标书,然后跟我说他们根本付不起!

同时,对于不同的项目我的报价也不同,所以每项服务我都会发布一个最低价格。让客户知道哪个适合他及他最喜欢哪个。

有关这个页面,有一件很重要的事要记住,那就是要明白你的服务会如何使客户受益。记住,你不仅是写文章、设计网站或是写代码。你是在帮助客户节省时间,使他们不必纠结于不擅长的领域,并帮他们赚更多的钱。

4. 客户推荐信

选几个最好的客户评价,发表在客户评价页面上。

有了客户评价,评价中有关你的服务越详细越好。得到客户许可后,发布她们的全名、地址(提到城市便可)、照片和网站地址,这些是最起码的。

你的潜在客户想要知道雇用你不是在冒险,因为你已经有很多满意的客户了。

5. 简历

这是详细描述你的专业背景和资格证书的页面:你何时何地取得的学位;你在哪工作过,做过什么;你得过什么奖,和其他一些我们会放到纸面简历上的东西。

但是,毕竟这是网络,你可以在语气和措辞上稍加修饰。不必非常正式(取决于目标人群),也不必与纸质简历相似。

6. 案例

让来访者知道一下你擅长什么。做一个展示你代表作的页面,理想上,每项服务要有至少一个工作样本。

在将为他们完成的作品展示到网站上之前,首先要经过客户的同意,或在你的网站上提供他们的链接。大多数客户都会很高兴被列在你的案例页面中,但是还有一些案例需要保密。

如果是那样的话,问问客户,你是否可以通过邮件发案例给潜在客户看,而不是放在网站上。额外的私下交流也许足以让你的客户同意。

7. 联系方式

一些自由职业者说最好是网站的每个页面都有你的联系方式。至少,留出一个他们可以给自己发邮件的地方,或找到如何联系自己的地方。

可以将此页面链接到网站的所有页面上,那样,不论来访者在哪,一旦他们需要你,只需点击一下就能与你取得联系了。

8. 常见问题页面(FAQ)

常见问题页面可以帮你减少所需回复的邮件数量。把经常问到的问题列出来。可以有关你的服务价格,付款方式或工作流程。(编注:FAQ相关详细信息,请参阅伯乐在线职场博客的《自由职业者:添加FAQ页面有助于获得更多客户并节省时间》一文。)

如果你之前回复过这些,你只需要将答案复制粘贴,就能制作一个FAQ页面了。

9. 隐私条款和其他法律措辞

许多网站所有者都疏忽了这个策略!随着越来越多的人对垃圾信息的了解与烦恼,在适当的位置附一个隐私策略是一个好主意。

其他容易疏忽的政策包括网站的内容著作权。若要促销与你有关联的产品和服务,你将需要在网站上披露。

我不是律师,所以我为自己的网站购买了定制的隐私条款。你也可以多多打听,然后找到自己所需。

10. 准顾客收集页面或登记表

准顾客收集页面(Squeeze Page)可以用来保存访问者的联系方式,通常是一个名字和一个邮箱。另一种方法,你可以在网站每个网页的角落附上一个登记表。

考虑到并不是每个来访者都会联系你。附上一个准顾客收集页面或登记表可以让你留住他们的联系方式,这样你便可以通过邮箱与他们再次沟通。

提供一些免费的东西是个好主意,通常是一个专题报告或者甚至一个软件、插件或图表,以此来交换他们的联系方式。

一旦他们留下了联系方式,你便可以定期与他们沟通,让你在他们的心目中留下深刻印象,当你需要新客户时,你可以给他们优惠。

以上这些就是我总结的自由职业网站上的10个必备页面。这些页面可以展示提供的服务,将你置身到行业专家的行列中,并且你与潜在客户建立联系。

 

原文作者:Lexi Rodrigo  编译:伯乐在线 敏捷翻译组 – 高志翔

转载请注明原文/译文出处、译文超链接和译者等信息,否则视为侵权,谢谢合作

UICollectionView Custom Layout

http://skeuo.com/uicollectionview-custom-layout-tutorial

 

 

UICollectionView custom layout tutorial

For a recent project I needed to refactor a primary view within our iPad app, so I decided to learn the ins and outs of UICollectionView (introduced in iOS 6) and I thought it would make for a good tutorial to share. My project ended up needing a custom UICollectionViewLayout which meant I needed to handle more of the layout logic than if I’d used the UICollectionViewFlowLayout that Apple provides. However, creating a custom layout allows far more design flexibility, so thats what I’ll be taking you through here.

We’ll go through the process step-by-step, covering the major concepts of custom layout design:

At the end we’ll have a fully functioning photo stack layout as seen here. Even if you’re interested in implementing a layout which is considerably different than the one presented here, the fundamental concepts will be quite similar. So kick back with your favorite beverage and in an evening or two you’ll have a full understanding of custom layouts.

The final project is available on github.

Ordered TreeMap

http://hcil.cs.umd.edu/trs/2001-06/2001-06.html

 

 

 

Ordered Treemap Layouts

 

Ben ShneidermanDepartment of Computer Science,

Human-Computer Interaction Lab,

Insitute for Advanced Computer Studies &

Institute for Systems Research

University of Maryland

ben@cs.umd.edu

Martin WattenbergDow Jones / SmartMoney.com

and

Digital Media Center,

Columbia University

mmw111@columbia.edu

 

 

 

 

 

Abstract

 

Treemaps, a space-filling method of visualizing large hierarchical data sets, are receiving increasing attention. Several algorithms have been proposed to create more useful displays by controlling the aspect ratios of the rectangles that make up a treemap. While these algorithms do improve visibility of small items in a single layout, they introduce instability over time in the display of dynamically changing data, and fail to preserve an ordering of the underlying data. This paper introduces the ordered treemap, which addresses these two shortcomings. The ordered treemap algorithm ensures that items near each other in the given order will be near each other in the treemap layout. Using experimental evidence from Monte Carlo trials, we show that compared to other layout algorithms ordered treemaps are more stable while maintaining relatively low aspect ratios of the constituent rectangles.� A second test set uses stock market data.

 

Keywords: treemaps, ordered treemaps, trees, hierarchies, information visualization

 

  1. Introduction

 

Treemaps are a space-filling visualization method capable of representing large hierarchical collections of quantitative data [S92]. A treemap (Figure 1) works by dividing the display area into a nested sequence of rectangles whose areas correspond to an attribute of the data set, effectively combining aspects of a Venn diagram and a pie chart. Originally designed to visualize files on a hard drive, treemaps have been applied to a wide variety of domains ranging from financial analysis [JT92, W98] to sports reporting [JB97].

A key ingredient of a treemap is the algorithm used to create the nested rectangles that make up the map. (We refer to this set of rectangles as the layout of the treemap.) The slice and dice algorithm of the original treemap paper [S92] uses parallel lines to divide a rectangle representing an item into smaller rectangles representing its children. At each level of hierarchy the orientation of the lines – vertical or horizontal – is switched. Though simple to implement, the slice-and-dice layout often creates layouts that contain many rectangles with a high aspect ratio. Such long skinny rectangles can be hard to see, select, compare in size, and label. [TJ92, BHW00]

 

Figure 1. A slice-and-dice layout. Shading indicates order, which is preserved.

Several alternative layout algorithms have recently been proposed to address these concerns. The SmartMoney Map of the Market [W98] is an example of the cluster treemap method described in [W99] which uses a simple recursive algorithm that reduces overall aspect ratios. Bruls, Huizing, and van Wijk [BHW00] introduced the squarified treemap, which uses a different algorithm to achieve the same goal. Figure 2 shows examples of these two layouts.

 

Figure 2. Low aspect ratio layouts. Shading indicates order, which is not preserved.

The new methods suffer from two drawbacks. First, changes in the data set can cause dramatic discontinuous changes in the layouts produced by both cluster treemaps and squarified treemaps. (By contrast, the output of the slice and dice algorithm varies continuously with the input data.) These abrupt layout changes are readily apparent to the eye; below we also describe quantitative measurements of the phenomenon. Large layout changes are undesirable for several reasons. If the treemap data is updated on a second-by-second basis-e.g., in a stock portfolio monitor-then frequent layout changes make it hard to track or select an individual item. Rapid layout changes also cause an unattractive flickering that draws attention away from other aspects of the visualization. Moreover, even occasional abrupt changes mean that it is hard to find items on the treemap by memory, decreasing efficacy for long-term users.

The second shortcoming of cluster and squarified treemap layouts is that many data sets contain ordering information that is helpful for seeing patterns or for locating particular objects in the map. For instance, the bond data described in [J94] is naturally ordered by date of maturity and interest rate. In many other cases the given order is alphabetical. The original slice-and-dice layout preserves the given ordering of the data, but cluster treemaps and squarified treemaps do not.� Another recent algorithm [VN00] enables control over the aspect ratios but does not guarantee order.

This paper introduces ordered treemaps, which use layout algorithms that change relatively smoothly under dynamic updates and roughly preserve order, but also produce rectangles with low aspect ratios. We discuss two different algorithms to create ordered treemaps, each with slightly different properties. (Dynamic demonstrations of these algorithms have been posted on the Web, at http://www.columbia.edu/~mmw111/treemap.)

We then report the results of Monte Carlo experiments comparing the two ordered treemap algorithms to squarified treemaps, cluster treemaps, and the slice-and-dice algorithm, using natural metrics for smoothness of updates and overall aspect ratio. The results suggest that ordered treemaps steer a middle ground, producing layouts with aspect ratios that are far lower than slice-and-dice layouts, though not as quite as low as cluster or squarified treemaps; they update significantly more smoothly than clustered or squarified treemaps, though not as smoothly as slice-and-dice layouts. Thus ordered treemaps may be a good choice in situations where legibility, usability and smooth updating all are important concerns.

 

  1. Algorithms for ordered treemaps

 

The key insight that leads to algorithms for ordered treemaps is that it is possible to create a layout in which items that are next to each other in the given order are adjacent in the treemap. Although such a layout does not follow the simple linear order of the slice-and-dice layout, it provides useful cues for locating objects and turns out to provide constraints on the layout that discourage large discontinuous changes with dynamic data.

 

We discuss two closely related algorithms for creating layouts that approximately preserve order. Both follow a similar recursive process, starting with a rectangle R to be subdivided.� The input is a list of items that are ordered by an index and have varied areas.� A particular item (the pivot) is chosen and placed at the side R as a square (aspect ratio = 1). The remaining items in the list are placed in three large rectangles that make up the rest of the display area. The algorithm is then applied recursively to each of these rectangles.

 

In the first algorithm, pivot-by-size, the pivot is taken to be the item with the largest area. The motivation for this choice is that the largest item will be the most difficult to place, so it should be done first. The algorithm, as illustrated in Fig. 3, can be described as follows:

 

Figure 3. The pivot configuration.

 

  1. Let P, the pivot, be the item with the largest area in the list of items.
  2. If the width of R is greater than or equal to the height, divide R into four rectangles, R1, RP, R2, and R3 as shown in Fig. 2. (If the height is greater than the width, use the same basic arrangement but flipped along the line y=x.)
  3. Place P in the rectangle RP, whose exact dimensions will be determined in Step 4.
  4. Divide the items in the list, other than P, into three lists, L1, L2, and L3, to be laid out in R1, R2, and R3. L1 and L3 all may be empty lists. (Note that the contents of these three lists completely determine the placement of the rectangles in Figure 3.) Let L1 consist of all items whose index is less than P in the ordering. Let L2 and L3 be such that all items in L2 have an index less than those in L3, and the aspect ratio of P is as close to 1 as possible. We add the proviso, to avoid degenerate layouts, that L3 cannot contain exactly one item.
  5. Recursively lay out L1, L2, and L3 (if any are non-empty) in R1, R2, and R3 according to this algorithm.

 

The second ordered treemap algorithm, pivot-by-middle, is almost identical except that the pivot is taken to be the middle item of the list – that is, if the list has n items, the pivot is item number n/2, rounded down. The motivation behind this choice is that it is likely to create a balanced layout. In addition, because the choice of pivot does not depend on the size of the items, the layouts created by this algorithm may not be as sensitive to changes in the data as pivot by size. Figure 4 shows examples of the layouts created by the two algorithms.

 

Figure 4. Pivot layouts. Shading indicates order, which is roughly preserved.

 

Both algorithms have the property that they create layouts that roughly preserve the ordering of the index of the items, which will fall in a left-to-right and top-to-bottom direction in the layout. The two algorithms are also reasonably efficient: pivot-by-size has performance characteristics similar to QuickSort (order n log n average case and n2 worst case) while pivot-by-middle has order� nlog n performance in the worst case.

 

Although the two algorithms produce layouts with relatively low aspect ratios (as described in the following sections) they are not optimal in this regard. The stipulations in step 4 of the algorithm avoid some but not all degenerate layouts with high aspect ratios, so we experimented with post-processing strategies designed to improve the layout aspect ratio. For example we tried adding a last step to the algorithm in which any rectangle that is divided by a segment parallel to its longest side is changed so that it is divided by a segment parallel to its shortest side. Because this step gave only a small improvement in layout aspect ratio while dramatically decreasing layout stability, we did not include it in the final algorithm.

 

  1. Metrics for treemap layouts: aspect ratio & change

 

In order to compare treemap algorithms we define two measures: the average aspect ratio of a treemap layout, and the layout distance change function, which quantify the visual problems created by poor layouts.� The goal is to have a low average aspect ratio and a low distance change as data is updated.

We define the average aspect ratio of a treemap layout as the unweighted arithmetic average of the aspect ratios of all leaf-node rectangles. This is a natural measure, although certainly not the only possibility. One alternative would be a weighted average that places greater emphasis on larger items, since they contribute more to the overall visual impression. We choose an unweighted average since the chief problems with high aspect ratio rectangles�poor visibility and awkward labeling�are at least as acute for small rectangles as large ones.

The layout distance change function is a metric on the space of treemap layouts that allows us to measure how much two layouts differ, and thus how quickly or slowly the layout produced by a given algorithm changes in response to changes in the data. To define the distance� change function, we begin by defining a simple metric on the space of rectangles. Let a rectangle R be defined by a 4-tuple (x,y,w,h) where x and y are the coordinates of the upper left corner and w and h are its width and height. We use the Euclidean metric on this space, i.e. if rectangles R1 and R2 are given by (x1, y1, w1, h1) and (x2, y2, w2, h2) respectively, then the distance between R1 and R2 is given by

d(R1, R2)=((x1-x2)2+(y1-y2)2+(w1-w2)2+(h1-h2)2)1/2.

 

There are several plausible alternatives to this definition, such as the Hausdorff metric for compact sets in the plane or a Euclidean metric based on the coordinates of the lower right corner instead of height and width. These metrics differ from the one we chose by a small bounded factor, and hence would not lead to significantly different results.

We then define the layout distance change function as the average distance between each pair of corresponding rectangles in the layouts. We use an unweighted average for the same reasons as we use an unweighted average for aspect ratios.

 

  1. Experimental design and results

 

To compare the performance of ordered treemap layout algorithms to squarified, cluster and slice-and-dice layouts, we ran two sets of experiments. The first consisted of a sequence of Monte Carlo trials to simulate continuously updating data. Our goal was to measure the average aspect ratio and average layout distance change produced by each of five algorithms. In the second experiment we measured the average aspect ratio produced by each of the algorithms for a static set of stock market data.

 

4a. Monte Carlo trials

To simulate the performance of the five layout algorithms under a variety of conditions, we performed experiments on two types of hierarchies with two different statistical distributions of item sizes. The first hierarchy (�20×1�) was a collection of 20 items with one level of hierarchy. The second (�8×3�) was a collection with three levels of hierarchy and eight items at each level for a total of 512 items.

For each experiment we ran 100 trials of 100 steps each. In one experiment we began with data drawn from a log-normal distribution created by exponentiating a normal distribution with mean 0 and variance 1. In a second version, we used data drawn from a Zipf distribution with power parameter equal to 1. Both distributions are representative of naturally occurring positive-valued data [R97]. In each step of a trial the data was modified by multiplying each data item by a random variable ex, where x was drawn from a normal distribution with variance 0.05 and mean 0. All layouts were created for a square with side 100.

The results are shown in tables 1 through 4.

 

Table 1: 20×1, Log-normal initial distribution.

Algorithm Aspect Ratio Change
Slice-and-dice 56.54 � 0.52
Pivot-by-middle � 3.47 � 3.06
Pivot-by-size � 3.15 � 7.17
Cluster � 1.72 11.00
Squarified � 1.75 10.10

 

Table 2: 8×3, Log-normal initial distribution.

Algorithm Aspect Ratio Change
Slice-and-dice 26.10 0.46
Pivot-by-middle � 3.97 1.08
Pivot-by-size � 3.14 4.07
Cluster � 1.79 7.67
Squarified � 1.74 8.27

 

 

Table 3: 20×1, Zipf initial distribution.

Algorithm Aspect Ratio Change
Slice-and-dice 36.85 � 0.51
Pivot-by-middle � 2.70 � 2.91
Pivot-by-size � 2.58 � 6.86
Cluster � 1.75 12.57
Squarified � 1.38 11.71

 

Table 4: 8×3, Zipf initial distribution.

Algorithm Aspect Ratio Change
Slice-and-dice 44.58 0.61
Pivot-by-middle � 4.54 1.57
Pivot-by-size � 3.85 4.10
Cluster � 1.78 6.19
Squarified � 1.67 7.18

 

The results strongly suggest a tradeoff between low aspect ratios and smooth updates. As expected, the slice-and-dice method produces layouts with high aspect ratios, but which change very little as the data changes. The squarified and cluster treemaps are at the opposite end of the spectrum, with low aspect ratios and large changes in layouts. The two ordered treemaps fall in the middle of the spectrum. Neither produces the lowest aspect ratios, but they are a clear improvement over the slice-and-dice method, with the pivot-by-largest algorithm producing slightly better aspect ratios. At the same time, they update more smoothly than cluster or squarified treemaps, with the pivot-by-middle algorithm having a slight advantage over pivot-by-largest.

 

4b. Static stock market data

 

Our second set of experiments consisted of applying each of the five algorithms to a set of 535 publicly traded companies used in the SmartMoney Map of the Market [W98] with market capitalization as the size attribute. For each algorithm we measured the aspect ratio of the layout it produced. The results are shown in the first column of Table 5, and the layout produced are shown in Figures 5-9 at the end of this paper. Note that although aspect ratios are higher than in the statistical trials-partly due to outliers in the data set-the broad pattern of results is similar.

 

Table 5: Stock market data for 535 companies.

Algorithm Aspect Ratio
Slice-and-dice 369.83
Pivot-by-middle � 19.30
Pivot-by-size � 22.04
Cluster ��� 3.74
Squarified ��� 3.21

 

 

  1. Conclusion and future directions

 

Treemaps are a popular visualization method for large hierarchical data sets. Although researchers have recently created several algorithms that produce create clear, legible treemap layouts with low aspect ratios, these new algorithms have two drawbacks: they are unstable under updates to the data, and they scramble any natural order on the items being mapped.

We introduced ordered treemaps, which alleviate these problems by creating layouts that preserve order and that update cleanly for dynamically changing data. Experimental results show that they offer a useful compromise between the smooth updates of the slice-and-dice method and the low aspect ratios of cluster treemaps and squarified treemaps.

There are several directions for future research. First, there is doubtless room to optimize the ordered treemap algorithms discussed in this paper, especially to improve the overall aspect ratios they produce. It would also be useful to optimize the algorithms used by cluster treemaps and squarified treemaps to improve stability under dynamic updates. Another practical area to explore would be matching layout algorithms to particular statistical distributions of data and changes in the data, since different algorithms may be appropriate in different situations.

More speculatively, since experimental results suggest a tradeoff between aspect ratios and smoothness of layout changes, it would be worthwhile to look for a mathematical theorem that makes this tradeoff precise. It might also be fruitful to explore variants of treemap layouts that can update smoothly by using past layouts as a guide to current ones, or by using tiles that can have nonrectangular shapes.

 

 

 

Figure 5. Stock portfolio with slice-and-dice layout.

 

 

Figure 6. Stock portfolio with pivot-by-middle layout.

 

Figure 7. Stock portfolio with pivot-by-largest layout.

 

 

 

 

 

Figure 8. Stock portfolio with cluster layout.

 

 

Figure 9. Stock portfolio with squarified layout.

 

 

 

 

Acknowledgement: Thanks to Ben Bederson for thoughtful suggestions on the draft.�

 

 

  1. References

 

[BHW00] Bruls, D.M., C. Huizing, J.J. van Wijk.
�Squarified Treemaps�. In: W. de Leeuw, R. van Liere (eds.), Data Visualization 2000, Proceedings of the joint Eurographics and IEEE TCVG Symposium on Visualization, 2000, pp. 33-42.

 

[JB97] Jin, L. and Banks, D.C. �TennisViewer: A Browser for Competition Trees.� IEEE Computer Graphics and Applications, July/August, pp. 63-65, 1997.

 

[JS91] Johnson, B. and and� Shneiderman, B. �Tree-maps: A Space-filling Approach to the Visualization of Hierarchical Information Structures.� Proceedings of the IEEE Visualization �91, pp. 284-291, October 1991.

 

[J94]� Johnson, B. �Treemaps: Visualizing Hierarchical and Categorical Data� Unpublished PhD dissertation, Dept. of Computer Science, University of Maryland, College Park, MD (UMI-94-25057), 1994.

 

[JT92] Jungmeister, W-A. and Turo, D. �Adapting Treemaps to Stock Portfolio Visualization,� University of Maryland Technical Report CS-TR-2996, 1992. Available at http://www.cs.umd.edu/hcil/pubs/tech-reports.shtml

 

[R97]� Sheldon, R. A First Course in Probability, Prentice Hall 1997.

 

[S92] Shneiderman, B. �Tree Visualization with Tree-Maps: 2-d Space-filling Approach.� ACM Transactions on Graphics, 11(1), pp. 92-99, 1992.

 

[TJ92] Turo, D. and Johnson. B. �Improving the Visualization of Hierarchies with Treemaps: Design Issues and Experimentation.� Proceedings of the IEEE Visualization 92, pp. 124-131, October 1992.

 

[VN00] Vernier, F. and Nigay, L. �Modifiable Treemaps Containing Variable-Shaped Units�, Extended Abstracts of the IEEE Information Visualization 2000.� Available at

http://iihm.imag.fr/publs/2000/Visu2K_Vernier.pdf

 

[W98] Wattenberg, M. �Map of the Market. �SmartMoney.com, http://smartmoney.com/marketmap, 1998.

 

[W99] Wattenberg, M. �Visualizing the Stock Market,� Proceedings of ACM CHI 99, Extended Abstracts, pp.188-189, 1999.

 

 

 

 

加盐密码哈希:如何正确使用

http://blog.jobbole.com/61872/

如果你是Web开发者,你很可能需要开发一个用户账户系统。这个系统最重要的方面,就是怎样保护用户的密码。存放帐号的数据库经常成为入侵的目标,所以你必须做点什么来保护密码,以防网站被攻破时发生危险。最好的办法就是对密码进行加盐哈希,这篇文章将介绍它是如何做到这点。

在对密码进行哈希加密的问题上,人们有许多争论和误解,这大概是由于网络上广泛的误传吧。密码哈希是一件非常简单的事情,但是依然有很多人理解错误了。本文阐述的并不是进行密码哈希唯一正确的方法,但是会告诉你为什么这样是正确的。

郑重警告:如果你在试图编写自己的密码哈希代码,赶紧停下来!那太容易搞砸了。即使你受过密码学的高等教育,也应该听从这个警告。这是对所有人说的:不要自己写加密函数!安全存储密码的难题现在已经被解决了,请使用phpass或者本文给出的一些源代码。

如果因为某些原因你忽视了上面那个红色警告,请翻回去好好读一遍,我是认真的。这篇文章的目的不是教你研究出自己的安全算法,而是讲解为什么密码应该被这样储存。

下面一些链接可以用来快速跳转到本文的各章节