<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet href='http://feed.feedsky.com/styles/temp01.xsl' type='text/xsl' ?><!--这是一个由Feedsy提供技术支持的Feed，为了提高读者阅读的体验，以及满足用户美化自己Feed的需要，我们设计了多种精美的Feed模板，提供给大家选择，所有最终呈现出来的样式，皆由用户自愿选择使用，未经许可，任何团体和个人，请不要擅自修改样式或者盗用，这是对于用户选择权的尊重。--><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:fs="http://www.feedsky.com/namespace/feed" version="2.0"><channel><atom:link href="http://feed.feedsky.com/hydra" type="application/rss+xml" rel="self"></atom:link><fs:self_link href="http://feed.feedsky.com/hydra" type="application/rss+xml"></fs:self_link><lastBuildDate>Wed, 13 Oct 2010 16:40:29 GMT</lastBuildDate><title>Edison's Blog</title><description>Programming &amp; Life</description><link>http://www.hydra1983.com</link><language>en</language><pubDate>Wed, 13 Oct 2010 16:44:25 GMT</pubDate><item><title>满地丁香</title><link>http://item.feedsky.com/~feedsky/hydra/~7947934/423274252/6057805/1/item.html</link><description>我
站在窗口
望着风
远去
只留下
满地丁香&lt;img src=&quot;http://www1.feedsky.com/t1/423274252/hydra/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/hydra/~7947934/423274252/6057805/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/hydra/423274252/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/hydra/423274252/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Thu, 14 Oct 2010 00:40:29 +0800</pubDate><guid>http://www.hydra1983.com/?p=1884</guid><fs:srclink>http://www.hydra1983.com/?p=1884</fs:srclink><fs:srcfeed>http://www.hydra1983.com/?feed=rss</fs:srcfeed><fs:itemid>feedsky/hydra/~7947934/423274252/6057805</fs:itemid></item><item><title>相信未来</title><link>http://item.feedsky.com/~feedsky/hydra/~7947934/422942044/6057805/1/item.html</link><description>食指
当蜘蛛网无情地查封了我的炉台
当灰烬的余烟叹息着贫困的悲哀
我依然固执地铺平失望的灰烬
用美丽的雪花写下：相信未来
当我的紫葡萄化为深秋的露水
当我的鲜花依偎在别人的情怀
我依然固执地用凝霜的枯藤
在凄凉的大地上写下：相信未来
我要用手指那涌向天边的排浪
我要用手掌那托住太阳的大海
摇曳着曙光那枝温暖漂亮的笔杆
用孩子的笔体写下：相信未来
我之所以坚定地相信未来
是我相信未来人们的眼睛
她有拨开历史风尘的睫毛
她有看透岁月篇章的瞳孔
不管人们对于我们腐烂的皮肉
那些迷途的惆怅、失败的苦痛
是寄予感动的热泪、深切的同情
还是给以轻蔑的微笑、辛辣的嘲讽
我坚信人们对于我们的脊骨
那无数次的探索、迷途、失败和成功
一定会给予热情、客观、公正的评定
是的，我焦急地等待着他们的评定
朋友，坚定地相信未来吧
相信不屈不挠的努力
相信战胜死亡的年轻
相信未来、热爱生命&lt;img src=&quot;http://www1.feedsky.com/t1/422942044/hydra/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/hydra/~7947934/422942044/6057805/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/hydra/422942044/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/hydra/422942044/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Thu, 14 Oct 2010 00:40:29 +0800</pubDate><guid>http://www.hydra1983.com/?p=1880</guid><fs:srclink>http://www.hydra1983.com/?p=1880</fs:srclink><fs:srcfeed>http://www.hydra1983.com/?feed=rss</fs:srcfeed><fs:itemid>feedsky/hydra/~7947934/422942044/6057805</fs:itemid></item><item><title>Recreate archiva admin account when its password is missing</title><link>http://item.feedsky.com/~feedsky/hydra/~7947934/422942045/6057805/1/item.html</link><description>I have no idea why I cannot login the archiva system with my admin account. No username/password incorrect warnings. I googled a lot to reset the password of the admin account, finally I found it&amp;#8217;s not a good idea to strugle with il which is an utility tool used to operate derby databases. So what [...]&lt;img src=&quot;http://www1.feedsky.com/t1/422942045/hydra/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/hydra/~7947934/422942045/6057805/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/hydra/422942045/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/hydra/422942045/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Thu, 14 Oct 2010 00:40:29 +0800</pubDate><guid>http://www.hydra1983.com/?p=1875</guid><fs:srclink>http://www.hydra1983.com/?p=1875</fs:srclink><fs:srcfeed>http://www.hydra1983.com/?feed=rss</fs:srcfeed><fs:itemid>feedsky/hydra/~7947934/422942045/6057805</fs:itemid></item><item><title>Support CSS state selector with ID selector for Spark SkinnableContainer</title><link>http://item.feedsky.com/~feedsky/hydra/~7947934/422942046/6057805/1/item.html</link><description>Main.mxml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
&amp;#60; ?xml version=&amp;#34;1.0&amp;#34; encoding=&amp;#34;utf-8&amp;#34;?&amp;#62;
&amp;#60;s :WindowedApplication xmlns:fx=&amp;#34;http://ns.adobe.com/mxml/2009&amp;#34; 
					   xmlns:s=&amp;#34;library://ns.adobe.com/flex/spark&amp;#34; 
					   xmlns:mx=&amp;#34;library://ns.adobe.com/flex/mx&amp;#34; 
					   xmlns:local=&amp;#34;*&amp;#34;
					   creationComplete=&amp;#34;creationCompleteHandler(event)&amp;#34;&amp;#62;
	&amp;#60;fx :Style&amp;#62;
		@namespace s &amp;#34;library://ns.adobe.com/flex/spark&amp;#34;;
		@namespace mx &amp;#34;library://ns.adobe.com/flex/mx&amp;#34;;
		@namespace local &amp;#34;*&amp;#34;;
&amp;#160;
		local&amp;#124;MyTestContainer #textDisplay
		{
			color:#0099FF;
		}
&amp;#160;
		local&amp;#124;MyTestContainer:green #textDisplay
		{
			color:#00FF99;
		}
&amp;#160;
		local&amp;#124;MyTestContainer:red #textDisplay
		{
			color:#FF9900;
		}				
	&amp;#60;/fx&amp;#62;
&amp;#160;
	&amp;#60;fx :Script&amp;#62;
		&amp;#60; !&amp;#91;CDATA&amp;#91;
			import mx.collections.ArrayCollection;
			import mx.collections.IList;
			import mx.events.FlexEvent;
&amp;#160;
			import spark.events.IndexChangeEvent;
&amp;#160;
			&amp;#91;Bindable&amp;#93;
			private var stateSelectorDataProvider:IList;
&amp;#160;
			protected function stateSelector_changeHandler&amp;#40;event:IndexChangeEvent&amp;#41;:void
			&amp;#123;
				myTestContainer.currentState = event.currentTarget.selectedItem.name;
			&amp;#125;
&amp;#160;
&amp;#160;
			protected function creationCompleteHandler&amp;#40;event:FlexEvent&amp;#41;:void
			&amp;#123;
				stateSelectorDataProvider = new ArrayCollection&amp;#40;myTestContainer.states&amp;#41;;
			&amp;#125;
&amp;#160;
		&amp;#93;&amp;#93;&amp;#62;
	&amp;#60;/fx&amp;#62;
	&amp;#60;fx :Declarations&amp;#62;
		&amp;#60;!-- Place non-visual elements (e.g., services, value [...]&lt;img src=&quot;http://www1.feedsky.com/t1/422942046/hydra/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/hydra/~7947934/422942046/6057805/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/hydra/422942046/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/hydra/422942046/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Thu, 14 Oct 2010 00:40:29 +0800</pubDate><guid>http://www.hydra1983.com/?p=1863</guid><fs:srclink>http://www.hydra1983.com/?p=1863</fs:srclink><fs:srcfeed>http://www.hydra1983.com/?feed=rss</fs:srcfeed><fs:itemid>feedsky/hydra/~7947934/422942046/6057805</fs:itemid></item><item><title>Disable a Tab in Spark TabBar</title><link>http://item.feedsky.com/~feedsky/hydra/~7947934/422942047/6057805/1/item.html</link><description>Use the class below as the itemRenderer of the Spark TabBar

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import flash.events.Event;
&amp;#160;
import mx.core.INavigatorContent;
&amp;#160;
import spark.components.ButtonBarButton;
&amp;#160;
public class ButtonBarButton extends spark.components.ButtonBarButton
&amp;#123;
	public function ButtonBarButton&amp;#40;&amp;#41;
	&amp;#123;
		super&amp;#40;&amp;#41;;
	&amp;#125;
&amp;#160;
	override public function set data&amp;#40;value:Object&amp;#41;:void
	&amp;#123;
		if&amp;#40;data is INavigatorContent&amp;#41;
			INavigatorContent&amp;#40;data&amp;#41;.removeEventListener&amp;#40;&amp;#34;enabledChanged&amp;#34;,enabledChangedHandler&amp;#41;;
&amp;#160;
		super.data = value;
&amp;#160;
		if&amp;#40;data is INavigatorContent&amp;#41;
		&amp;#123;
			INavigatorContent&amp;#40;data&amp;#41;.addEventListener&amp;#40;&amp;#34;enabledChanged&amp;#34;,enabledChangedHandler&amp;#41;;
		&amp;#125;
	&amp;#125;
&amp;#160;
	private function enabledChangedHandler&amp;#40;event:Event&amp;#41;:void
	&amp;#123;
		enabled = INavigatorContent&amp;#40;data&amp;#41;.enabled;
	&amp;#125;
&amp;#125;&lt;img src=&quot;http://www1.feedsky.com/t1/422942047/hydra/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/hydra/~7947934/422942047/6057805/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/hydra/422942047/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/hydra/422942047/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Thu, 14 Oct 2010 00:40:29 +0800</pubDate><guid>http://www.hydra1983.com/?p=1858</guid><fs:srclink>http://www.hydra1983.com/?p=1858</fs:srclink><fs:srcfeed>http://www.hydra1983.com/?feed=rss</fs:srcfeed><fs:itemid>feedsky/hydra/~7947934/422942047/6057805</fs:itemid></item><item><title>山水</title><link>http://item.feedsky.com/~feedsky/hydra/~7947934/422942048/6057805/1/item.html</link><description>看山是山，看水是水——
知道的少，从这山到那水走这条道就可以了，只不过这道真难走
看山不是山，看水不是水——
知道的多了，道路数不胜数，不知道从这山到那水该走哪一条道
看山还是山，看水还是水，但是山更绿，水更清——
知道的非常多了，晓得从这山到那水这条道更好走一些&lt;img src=&quot;http://www1.feedsky.com/t1/422942048/hydra/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/hydra/~7947934/422942048/6057805/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/hydra/422942048/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/hydra/422942048/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Thu, 14 Oct 2010 00:40:29 +0800</pubDate><guid>http://www.hydra1983.com/?p=1849</guid><fs:srclink>http://www.hydra1983.com/?p=1849</fs:srclink><fs:srcfeed>http://www.hydra1983.com/?feed=rss</fs:srcfeed><fs:itemid>feedsky/hydra/~7947934/422942048/6057805</fs:itemid></item><item><title>“Type(var)” vs “var as Type”</title><link>http://item.feedsky.com/~feedsky/hydra/~7947934/422942049/6057805/1/item.html</link><description>Description:
I have done an experiment to test the performance of data type conversions in actionscript 3. Create a new flex 4 based application with the code below, then compile and run it:
CODE:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
&amp;#60;?xml version=&amp;#34;1.0&amp;#34; encoding=&amp;#34;utf-8&amp;#34;?&amp;#62;
&amp;#60;s:Application xmlns:fx=&amp;#34;http://ns.adobe.com/mxml/2009&amp;#34;
			   xmlns:s=&amp;#34;library://ns.adobe.com/flex/spark&amp;#34;
			   xmlns:mx=&amp;#34;library://ns.adobe.com/flex/mx&amp;#34;
			   minWidth=&amp;#34;955&amp;#34; minHeight=&amp;#34;600&amp;#34;
			   xmlns:controls=&amp;#34;com.wds.framework.controls.*&amp;#34;
			   initialize=&amp;#34;application1_initializeHandler(event)&amp;#34;&amp;#62;
	&amp;#60;fx:Script&amp;#62;
		&amp;#60;!&amp;#91;CDATA&amp;#91;
			import mx.containers.Canvas;
			import mx.core.Container;
			import mx.core.FlexSprite;
			import mx.core.IContainer;
			import [...]&lt;img src=&quot;http://www1.feedsky.com/t1/422942049/hydra/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/hydra/~7947934/422942049/6057805/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/hydra/422942049/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/hydra/422942049/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Thu, 14 Oct 2010 00:40:29 +0800</pubDate><guid>http://www.hydra1983.com/?p=1837</guid><fs:srclink>http://www.hydra1983.com/?p=1837</fs:srclink><fs:srcfeed>http://www.hydra1983.com/?feed=rss</fs:srcfeed><fs:itemid>feedsky/hydra/~7947934/422942049/6057805</fs:itemid></item><item><title>as3 DateParser</title><link>http://item.feedsky.com/~feedsky/hydra/~7947934/422942050/6057805/1/item.html</link><description>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
////////////////////////////////////////////////////////////////////////////////
// DateParser.as
//
// An as3 implementation of the java SimpleDateFormat like class based on Flex 
// SDK which can be used to parse a String with specified format to as3 Date 
// object.
//
// This code is a modification version of Daniel Wabyick's as2 
// SimpleDateFormatter(http://osflash.org/simpledateformatter) which 
// is directly adapted from Matt Kruse's Javascript class implementation.
//
// [...]&lt;img src=&quot;http://www1.feedsky.com/t1/422942050/hydra/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/hydra/~7947934/422942050/6057805/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/hydra/422942050/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/hydra/422942050/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Thu, 14 Oct 2010 00:40:29 +0800</pubDate><guid>http://www.hydra1983.com/?p=1832</guid><fs:srclink>http://www.hydra1983.com/?p=1832</fs:srclink><fs:srcfeed>http://www.hydra1983.com/?feed=rss</fs:srcfeed><fs:itemid>feedsky/hydra/~7947934/422942050/6057805</fs:itemid></item><item><title>你是个软件架构师吗？</title><link>http://item.feedsky.com/~feedsky/hydra/~7947934/422942051/6057805/1/item.html</link><description>The original copy comes from InfoQ

开发和架构的界限难以捉摸。有些人告诉你它根本不存在，架构只是开发者们所做的设计过程的简单扩展。 另外一些人认为这是一个鸿沟，它只能由那些做到高度抽象，而且不会陷入实现细节的开发者才能跨越。通常，在这两个极端的观点中间某处有个可操作的平衡点；不论如何，怎么从开发转换为架构师都是个有趣的问题。
经常被用来区分软件架构和软件设计开发的关键几点包括 伸缩性和抽象程度的增加以及作出正确设计决策意义的增强。软件架构是通过一个全局的观点，宏观的视角来理解软件系统作为一个整体如何工作。
即使这能够帮助区分软件开发和架构，它并不能帮助理解某人如何从开发提升到架构。 并且，它也不能帮助识别谁能够成为一个好的软件架构师，如果你想雇人的话你如何去寻找他们以及你是否是一个软件架构师。
经验可以判定但你需要更深入地了解
要成为一个软件架构师并不是一夜之间或者一个职位的提升就能简单达到的。 这是个职责，而不是头衔。这是个进化的过程，你将会逐步得到担当这个职责所需的经验和信心。
当你寻找架构师时，需要考虑各方面的素质，他们过去的经验往往是他们有能力担当这个职责很好的判断。由于软件架构师的职责是多种多样的，所以你需要再深入了解他们在不同领域的参与度，影响力，领导力和责任感。一般来说，在大多数项目中软件架构可分为两个阶段，架构的定义，然后是它的交付。
软件架构的定义
架构的定义过程看起来非常简单明了。 你需要做的是理解需求并设计一个系统来满足需求。 但实际上并没有那么简单，根据你不同的做法，软件架构的职责之间差距很大，以及如何认真看待自己的职责而定。如下图所示，这个职责的架构定义部分，可以进一步细分成不同的元素。


管理非功能性需求：软件项目经常陷入问用户要求是什么，什么是他们想要的功能，但很少问他们需要什么非功能性需求（或系统质量）有时候，干系人会告诉我们，“这个系统必须很快”，但是这太主观了。非功能性需求如果要满足的话需要明确，可度量，可获得以及可测试。大多数非功能性需求本质上是技术层面的而且经常对软件架构有很大的影响。理解非功能性要求是架构师职责非常重要的一个部分，但假设这些需求是什么并不一定是对他们的挑战。你见过多少系统真正需要24&amp;#215;7的运行呢？


架构定义：捕捉到了非功能性需求后，下一步是开始思考你打算如何去解决干系人提出的这些问题并定义它的架构。 公平的说每个软件系统都有一个架构，但并不是每个软件系统都有一个定义好的架构。这正是问题的关键。架构定义过程让你想清楚你打算怎么在兼顾需求和限制的情况下把问题解决好。架构定义是将结构，方针，原则和领导力引入软件项目的技术层面。定义架构是作为软件架构师的工作，但是从头开始设计一个软件系统和对已存在的系统扩展是相当不同的。


技术选型：技术选型通常是一个有趣的练习，但它也有公平的挑战,因为你需要综合考虑成本、许可、供应商关系、技术策略、兼容性、协作性、支持、部署、升级的政策以及最终用户环境等各方面。综合这些因素，通常会导致简单选择类似富客户端技术而进入了完全的噩梦。接下来的问题就是这些技术是否能真正有用。技术选型是彻头彻尾的风险管理；复杂性或不确定性太高的时候要减轻风险，当有机会或利益的时候要引入风险。技术决策需要考虑多种因素，而且所有的技术决策需要被检查和评估。这包含软件项目的主要组成部分乃至开发中引入的类库和框架。如果定义一个架构，你还需要有信心认为选择这项技术是正确的。同样在技术评估中也还是存在开发新系统和向现有的系统增加新技术的不同点。


架构评估：如果你设计软件，你需要问问自己你的架构是否有用。 对我来说，一个架构是成功的，如果它满足非功能性需求，而且为其他部分的代码提供必要的基础，并为解决和存在的业务问题提供足够的平台。软件的一个最大的问题就是它复杂而抽象，导致很难从UML图或代码本身去设想出运行时的特性。在软件开发周期中我们进行了很多不同类型的测试，这样我们能够有信心我们发布的系统在推出时能够正常运行。我们为什么不对架构也这样做呢？ 如果能够测试你的架构，那你就可以证明它是有效的。如果你能尽早做到这一点，你就能减少项目失败的风险，而不是简单地希望一切都好。


架构协作：任何一个软件都不是与世隔绝的，需要很多人理解它。 包括从需要理解和切入架构的直接开发团队到其他对安全性、数据库、运营、维护、支持等有兴趣的干系人。要想让一个软件项目成功，你需要和所有的系统干系人紧密协作来保证架构和所在的环境很好的集成。不幸的是，现状是与开发团队的架构协作很少发生，更不要说外部干系人了。



软件架构的发布
对于架构的发布也是同样，对于成功的软件项目参与程度的不同，也决定了软件架构职责的不同。


拥有全局的视角：为了把一个架构成功地实现，我们需要具有全局的视角并把贯穿软件开发生命周期的愿景加以宣传与推广，必要的话在整个项目中展开和完善，并对成功发布负责。如果如果你定义了一个架构，参与并保持不断发展的架构才是有意义的，而不是选择把它传递给一个“执行小组”。


领导力：拥有全局的视角是技术领导的一个方面，但是还有其他事情在软件项目发布阶段需要做。 这包括承担责任、提供技术指导、作出技术决策以及具有权力作出这些决定。作为架构师，你需要进行技术领导来确保每件事都被考虑到，而且团队在朝着正确的方向持续前进。软件架构师职位是需要内在领导力的，虽然这听起来很明显，但很多项目团队并没有获得他们所需要的技术领导，因为架构师认为一个成功的发布并不一定是他们所关注的问题。


教练和指导：在大多数软件开发项目中，教练和指导经常不被重视，团队成员得不到他们需要的支持。 虽然技术领导是引导整个项目，但个人也经常需要帮助。除此以外，教练和指导提供了一个强化技能的方式，并帮助提升职业生涯。这应该是软件架构师份内的事，而且指导团队架构和设计与帮他们解决代码问题是截然不同的。


质量保证：即使是世界上最好的架构和领导，很糟糕的交付也足以让一个具备其他成功条件的项目失败。质量保证在架构师职责中占很大一部分，但这并不只是简单做代码检查。 比如，你需要一个基线来确保，这意味着引入新的标准和工作实践。从一个软件开发的角度来说，这可能包括代码标准、设计原则和源码分析工具甚至于使用持续集成,自动化单元测试以及代码覆盖工具。可以说大多数项目质量保证做的并不够，所以你需要搞清楚什么是重要的并给予它足够的保证。对于我来说，一个项目的重要部分包括架构上的重点，关键、复杂或高度可见的业务。你要关注实效并认识到你并不能保证一切，要知道做总比不做好。


设计、开发和测试：软件架构师的职责范围的最后一件事是设计、开发和测试。作为一个实际动手的架构师并不是需要你每天都要写代码，但是它的确意味着你一直在参与项目，而且积极帮助打造和交付它。说了这么多，为什么每天写代码不应该成为一个架构师职责的一部分呢？大多数架构师都有写代码的经验，因此让这些技能保鲜是有意义的。而且，架构师能体会到团队里其他人的痛苦和感受，这样能让他们更好地理解他们的架构从开发角度看是什么样的。很多公司有政策阻止软件架构师从事写代码，因为架构师“去做那些廉价的工作太贵了” ，这显然是个错误的态度&amp;#8230;如果架构师已经花了那么多时间精力为项目做架构，何必从政策上不允许他们多走一步来帮助项目达到最终的成功呢？当然，有些情况下卷入代码级别并不现实。比如，一个大的项目通常意味有一个更大的“全局观” 来考虑它，而且可能有时候你就是没有时间。但一般来说，一个写代码的架构师比只在旁边观望要更高效和快乐。



你是一个软件架构师吗？
不管你认为软件开发和架构之间的界限只是一个幻觉还是个巨大的鸿沟，以上强调了人们对整个软件架构中的经验水平往往有很大的差别，而这取决于他们怎么样工作以及他们如何认真地看待他们的职责。大多数开发人员不是在某一个星期一的早晨醒来就宣布自己成为一个软件架构师的。我当然也不是，我成为软件架构师的路线是一个渐进的过程。话虽如此，但很可能同样那些开发者已经做了一部分架构的工作，不论他们的职位名称是什么。
为软件系统的架构作出贡献和自己负责定义它有很大的区别，拥有持续的、跨不同领域的技能、知识和经验构成了软件架构的职责。跨越软件开发者和架构师的界限取决于你自己，但是首先你要明白你的经验水平，才能开始架构师之旅的第一站。
关于作者
你可以认为Simon Brown是一个写代码的软件架构师或者理解架构的软件开发者。当他没有用.NET或Java开发软件的时候，Simon通常在做咨询，指导或者培训。 Simon还写过关于Java的书，在行业活动做过演讲，并且整合了一个叫Software Architecture for Developers的培训课程， 该课程基于他在Coding the Architecture描 述的软件架构。你可以通过e-mail 或 Twitter 找到他。
查看英文原文：Are You a Software Architect?&lt;img src=&quot;http://www1.feedsky.com/t1/422942051/hydra/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/hydra/~7947934/422942051/6057805/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/hydra/422942051/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/hydra/422942051/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Thu, 14 Oct 2010 00:40:29 +0800</pubDate><guid>http://www.hydra1983.com/?p=1830</guid><fs:srclink>http://www.hydra1983.com/?p=1830</fs:srclink><fs:srcfeed>http://www.hydra1983.com/?feed=rss</fs:srcfeed><fs:itemid>feedsky/hydra/~7947934/422942051/6057805</fs:itemid></item><item><title>ICONS AND LOGOS ARE NOT THE SAME</title><link>http://item.feedsky.com/~feedsky/hydra/~7947934/422942052/6057805/1/item.html</link><description>The original copy comes from Pixel Resort
I often stumple upon the confusion between icon and logo design. While logos may use the same visual vocabulary as icons, let there be no doubt; Icons and Logos are two completely separate design disciplines requiring different tools and different mindsets.
The gap between the designers vocabulary and the clients [...]&lt;img src=&quot;http://www1.feedsky.com/t1/422942052/hydra/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/hydra/~7947934/422942052/6057805/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/hydra/422942052/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/hydra/422942052/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Thu, 14 Oct 2010 00:40:29 +0800</pubDate><guid>http://www.hydra1983.com/?p=1811</guid><fs:srclink>http://www.hydra1983.com/?p=1811</fs:srclink><fs:srcfeed>http://www.hydra1983.com/?feed=rss</fs:srcfeed><fs:itemid>feedsky/hydra/~7947934/422942052/6057805</fs:itemid></item></channel></rss>
