-
Notifications
You must be signed in to change notification settings - Fork 0
/
v3.html
520 lines (376 loc) · 89.1 KB
/
v3.html
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
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
<!DOCTYPE html>
<html>
<head>
<title>Выпуск с красивым названием - Вечерний Анахорет™</title>
<meta http-equiv="content-type" content="text/html;charset=UTF-8" />
<meta http-equiv="Content-Language" content="en" />
<meta http-equiv="imagetoolbar" content="no" />
<meta name="viewport" content="width = device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable = no" />
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
<link rel="apple-touch-startup-image" href="/startup.png" />
<meta name="HandheldFriendly" content="True" />
<meta http-equiv="cleartype" content="on" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<meta http-equiv="Page-Exit" content="progid:DXImageTransform.Microsoft.Fade(Duration=0.2)" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
<meta name="robots" content="all" />
<link rel="copyright" href="" />
<link rel="author" href="" />
<link rel="shortcut icon" href="/favicon.ico" />
<link rel="icon" type="image/png" href="/favicon.png" />
<link rel="icon" type="image/x-icon" href="/android-favicon.ico" />
<link rel="apple-touch-icon" href="/apple-touch-icon-iphone.png" />
<link rel="apple-touch-icon" sizes="72x72" href="/apple-touch-icon-ipad.png" />
<link rel="apple-touch-icon" sizes="114x114" href="/apple-touch-icon-iphone4.png" />
<!--[if IE]>
<script type="text/javascript">
//<![CDATA[
document.createElement('header');
document.createElement('nav');
document.createElement('section');
document.createElement('article');
document.createElement('author');
document.createElement('aside');
document.createElement('footer');
//]]>
</script>
<![endif]-->
<style type="text/css">
header, nav, section, article, aside, footer {
display: block;
}
</style>
<link href="/v3/application.css" media="screen" rel="stylesheet" type="text/css" />
<script src="/v3/application.js" type="text/javascript"></script>
<meta content="authenticity_token" name="csrf-param" />
<meta content="Rhhrt75GtShNptiwPbHeF15NyePuLp5Rsbg06tLRuFM=" name="csrf-token" />
<style media="screen" type="text/css">.introduction {
float: right;
width: 75%;
padding: 1%;
}
.cover {
max-width: 18%;
display: inline-block;
margin: 1%;
}
.left {
float: left;
width: 50%;
}
.right {
float: right;
width: 50%;
}
.thanks {
float: left;
width: 50%;
border: 1px solid transparent;
padding: .5%;
margin: .5%;
}
.item {
border: 1px solid #f5f5f5;
padding: 5%;
margin: 1%;
background: #ffffff;
box-shadow: 2px 2px 0 #eaeaea inset, -2px -2px 0 #eaeaea inset;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
-o-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;
}
.quotes img {
max-width: 20%;
float: left;
}
.quotes ul {
margin-left: 25%;
padding: 0;
}
.quotes ul li {
list-style: none;
padding: 1%;
border-top: 1px solid #eeeeee;
font-style: italic;
}
.quotes ul li:first-child {
border-top: 0;
}
.quotes ul li em {
display: block;
text-align: right;
color: #888888;
font-style: normal;
}
@media only screen and (max-width: 768px) {
.introduction {
float: right;
width: 70%;
padding: 1%;
}
.cover {
display: none;
}
.item {
padding: 1em;
margin: .1%;
}
.left, .right {
width: 100%;
float: none;
}
.thanks {
width: 100%;
float: none;
}
.warm-up img, .faye img {
max-width: 50%;
}
.faye img {
float: left;
margin-right: .5em;
}
.qa-community img {
max-width: 50%;
}
}
@media only screen and (max-width: 430px) {
.introduction {
float: none;
width: 100%;
}
.item {
padding: .5em;
}
}
.ruby-gnome img {
float: right;
border: 0;
}
.hackathon img {
float: left;
margin-right: 1%;
border: 0;
}
.faye img {
}
.warm-up img {
float: left;
margin-right: 1em;
max-width: 25%;
}
.faye img {
}
.qa-community img {
float: left;
max-width: 25%;
border: 0;
}</style>
</head>
<body>
<div id="container">
<header>
<div class="wrapper">
<a href="/"><img alt="Вечерний Анахорет™" src="/v3/logo.ru.png" title="Вечерний Анахорет™" /></a>
<small class="issue">Третий выпуск
<div>
<a href="https://twitter.com/share" class="twitter-share-button" data-text="Наконец-то новый выпуск Вечерки™" data-via="it_vecherka" data-count="none">Tweet</a>
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
</div>
</small>
</div>
</header>
<section id="main" role="main">
<div class="wrapper">
<a class="cover" href="http://vecherka.cssum.net/v3/cover.png"><img src="http://vecherka.cssum.net/v3/cover.png" alt="" /></a>
<div class="introduction"><h1>От редакции</h1>
<div>
<p>Соскучились? Мы за вами - очень.</p>
<p>В эфире третий выпуск <strong>Вечерки™</strong> в котором нам предстоит много чего обсудить. Но многое останется за кадром. Причину скудности информации нужно искать в древних временах, когда наша планета только формировалась. В то далекое время слепой случай распорядился хаотически расбросаными мириадами осколков, летающими по необъятной галактике, таким образом, что наша голубая планета была вынуждена вращаться вокруг себя с частотой заставляющей всех своих обитателей мириться с этим и подстраивать свои биоритмы под этот двадцати четырех часовой ритм. </p>
<p>Или причина может крыться в Кантовской теории, согласно которой время субъективно и есть "чистая форма чувственного созерцания". Что время есть лишь одним из чувств человека и время без наблюдателя - ничто. Ведь именно благодаря этой теории можно оправдать ту крупицу информации, представленную в выпуске, за ту вечность, прошедшую со <a href="http://vecherka.cssum.net/v2.html">второго выпуска</a>. </p>
<p>И простые американские рабочие девятнадцатого века, отдавшие свои жизни за восьми, а не восемнадцати часовой рабочий день, и не подозревали что они были причастны к текущему выпуску <strong>Вечерки™</strong>. </p>
<p>Можно придумать еще тысячу оправданий и сто причин из-за которых выпуск не состоялся или же был бы не таким какой он есть. Война Алой и Белой розы, Юстинианова пандемия и Великая депрессия стали лишь малыми элементами паззла, собрав который, мы увидели будущий выпуск стенгазеты который и представлен вашему вниманию. </p>
</div>
<a href="/v3/introduction.html" class="comment_link"><span>Comments</span></a>
</div>
<div class="clearfix"></div>
<div class="left">
<div class="item"><h1>Поиграй со мной</h1>
<div>
<p>Итак, собственно что такое <a href="http://scala.playframework.org/">Play!</a> - это современный веб-фреймворк на Java в его версии 1.x и Scala/Java в его грядущей второй версии. Одним из значительных отличий Play! от других фреймворков, основанных на Java (включая и Lift), является то, что он не базируется на Servlet API, но предоставляет свой полный стек для запуска приложений, и как написано в официальном FAQ - "Play is platform". Впрочем, если требуется, то приложение на Play! можно запустить с помощью Tomcat, Jetty или другого контейнера. Да, и ещё можно забыть об xml для конфигурации приложения.</p>
<p>Play! был выбран заказчиком, а нами опробован на этапе переговоров. Впечатления и тогда, и сейчас от Play!/Java целиком положительные. Простой и понятный роутинг, привычный по другим фреймворкам скелет приложения, хороший шаблонный движок, встроенная работа с тестами (включая Selenium), наличие документации, FAQ, ответов на StackOverflow, поддержка в IDE и редакторах - Eclipse, Idea, Netbeans, TextMate, Vim. Развёртывание предельно простое - распаковываем тарбол, прописываем каталог в PATH, "<code>$ play new MyApp</code>" - вот и все. С Play! быстрый старт действительно получается быстрым. И я считаю, что в таком виде фреймворк вполне годен для написания настоящих, "серьёзных" приложений.</p>
<p>Но заказчик захотел Scala. Предполагалась тесная интеграция с внешними сервисами, используя их XML API, а в таком случае на полную бы заработали встроенные средства языка, которые в Scala очень мощные. Да и согласитесь - Scala сама по себе интереснее. Можно сказать, что в Play! 1.x встроена поддержка Scala "из коробки" - в зависимости прописывается модуль, вместе с которым в проект приехали новый шаблонный движок и DSL для SQL-запросов Anorm взамен стандартного ORM. От последнего пришлось отказаться буквально в первый день: задумка хорошая, но отсутствие нормальной документации, отсутствие поддержки сообщества и общая сырость не позволили применить Anorm. На место был возвращён ORM на основе JPA. А дальше начали проявляться проблемы обратной совместимости Scala c Java: различия в работе с коллекциями, несоответствие типов (в Scala как таковых нет перечислений (enum), например), различия в объектной модели, доступ к API фрейморка в большинстве случаев через специальную прослойку, неработающие со Scala-кодом Java-модули. Шаблонизатор тоже отличился чувствительностью к переносу строки, пробелам, а иногда и к порядку следования аргументов. Пожалуй, единственное, что действительно понравилось, это библиотека для тестирования Scala Test.</p>
<p>Я для себя сделал следующие выводы: выбирать надо фреймворк, изначально написанный на том языке, который вы будете использовать. В случае Scala Lift гораздо привлекательнее Play!/Scala по всем статьям. Возможно, с выходом второй версии Play!, интеграция станет гораздо лучше, но пока она очень сырая. И ещё такой момент - изначальная Java-архитектура фреймворка все равно находит отражение в Scala-коде, а зачастую и не дает применять все возможности языка. Да, можно писать map вместо for, сократить общее количество кода, но, по большому счету, это мало что меняет - писать "по-другому" не очень-то получится.</p>
<p>Так или иначе, но пока что Play!/Scala - сырой стек, и использовать его я бы не рекомендовал.</p>
</div>
<a href="/v3/play.html" class="comment_link"><span>Comments</span></a>
</div>
<div class="item qa-community"><h1>Суровые донбасские тестеры </h1>
<div>
<p><img src="http://i.minus.com/ib1DXKXnj9i7P4.png" alt=""><br>
</p>
<p>Субботу 10 декабря 2011 года по праву можно обвести в красный кружочек в IT-календаре Донецка. Именно в этот день прошла первая встреча <a href="http://groups.google.com/group/qa-donetsk">Donetsk QA Community</a> Инициатором встречи выступил <a href="http://about.me/alder">Алексей Деркач</a>, который вдохновившись примером днепропетровских коллег и cnc.dn.ua, решил попытаться собрать донецких QA-специалистов.</p>
<p>"Избу-читальню" заслуженно стоит назвать самым IT-кафе из всех кафе города. К традиционному Кофе-и-коду теперь добавились собрания QA Community. Теплая уютная обстановка и вкусный чай/кофе определенно способствуют интересному общению на IT-темы. Стоит также отметить тот факт, что на встречу пришли не только тестировщики, но и заинтересованные программисты.</p>
<p>Основой первой встречи стал доклад Алексея Деркача "Особенности тестирование Web-приложений", в котором Алексей поделился наблюдениями из своего личного опыта. Автор рассказал о тех пунктах в тестировании Web-приложений, на которых стоит сделать акценты. Слушатели положительно оценили доклад. Единственной нераскрытой темой осталось нагрузочное тестирование - Алексей честно признался, что у него пока еще нет достаточного опыта в этой области.</p>
<p>После небольшого перерыва встреча была продолжена обсуждением вопроса "Место тестировщика в современных проектах". Все пришедшие поделились своим мнением, рассказами из личного опыта, обменялись полезными сведениями.</p>
<p>Резюмируя, можно сказать коротко - встреча удалась! Надеемся, что следующая встреча будет более богатой на доклады и число присутствующих будет увеличиваться. Тем, кто не смог посетить, эту встречу, будет интересно прочесть <a href="https://etherpad.mozilla.org/nZcmWsGT9H">общий блокнот встречи</a> и посмотреть <a href="https://docs.google.com/present/edit?id=0AUCRUQwB3SoEZGdjMjVjOWJfOTNnOHM3bXJjcA">слайды доклада Алексея</a></p>
</div>
<a href="/v3/qa-community.html" class="comment_link"><span>Comments</span></a>
</div>
<div class="item hackathon"><h1>Хакатон</h1>
<div>
<p><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAABpCAIAAADwevuCAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkExOUQ4QjNCNUNDNzExRTFBMTgzRTYxRTNFQzAwNDY5IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkExOUQ4QjNDNUNDNzExRTFBMTgzRTYxRTNFQzAwNDY5Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QTE5RDhCMzk1Q0M3MTFFMUExODNFNjFFM0VDMDA0NjkiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QTE5RDhCM0E1Q0M3MTFFMUExODNFNjFFM0VDMDA0NjkiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7nu9AEAAA++ElEQVR42uy9B3wU57U2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" alt=""><br>
“Вы даже себе не представляете на что способна группа программистов, у которых поджимают сроки”, говорят нам организаторы Хакатона. По своей сути - изнурительное мероприятие. Длится сутки, но доставляет массу удовольствия и приносит кучу положительных эмоций - <a href="http://dou.ua/lenta/events/otchet-o-dou-hakaton-v-dnepropetrovske/">днепропетровский отчет</a> это ярко демонстрирует. Что ж, настало время донецких программистов показать свои способности.<br>
Задаток у донбасских айтишников достаточно неплохой - подали заявку уже более семидесяти участников. К слову, на предыдущем днепропетровском хакатоне участников было около пятидесяти. А значит у Донецка есть все шансы стать самым крупным хакатоном. Не стоит сомневаться, айтишник! Присоединившись к участникам, <a href="http://dou.ua/calendar/1315/">оставив комментарий к новости</a>, ты увеличишь активное сообщество разработчиков Донецка и тем самым поднимешь IT-статус родного города.<br>
И не стоит переживать об отсутствии команды - много команд будут формироваться прямо на месте. <br>
Как известно, сборище программистов редко делает что-то эстетически красивое и глазу приятное. И опыт прошлых хакатонов показывает, что на мероприятии интересно будет не только матерым программистам и адским админам, но и людям с развитым чувством прекрасного. Дизайнеров, готовых помочь проектам, программисты любят и ценят.<br>
Всех сопереживающих, разработчики будут ждать на презентации своих проектов на финишной прямой мероприятия - 26 февраля в 13:45. Не пропусти!</p>
</div>
<a href="/v3/hackathon.html" class="comment_link"><span>Comments</span></a>
</div>
<div class="item"><h1>Посидим, поокаем</h1>
<div>
<p>Благодаря инициативе Анны Воловенко и при помощи <a href="http://www.itstep.org/">КА "Шаг"</a> появилась возможность провести в Донецке "<a href="http://automated-testing.info">AT.info</a> посиделки". Организаторы встреч <a href="http://poliarush.com/">Миша Поляруш</a> и <a href="http://www.adzynia.com/">Андрей Дзыня</a> выступили с докладами об автоматизации тестирования веб и мобильных приложений. Встреча получилась интересной и вызвала бурные дискуссии как непосредственно во время докладов, так и в кулуарах. Как и бывает на подобных посиделках, пользу получили обе стороны: интересные подходы показали как Михаил и Андрей, так и наши донецкие разработчики и тестеры. Надеемся, что мы еще не раз встретимся в этом формате.</p>
</div>
<a href="/v3/atinfo.html" class="comment_link"><span>Comments</span></a>
</div>
<div class="item ruby-gnome"><h1>Руби-гномик</h1>
<div>
<p><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAAB7CAYAAACCYiUaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjI5RjZERkU2NUNDNTExRTE5QjBDQzIwNkFBM0Q3NEE2IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjI5RjZERkU3NUNDNTExRTE5QjBDQzIwNkFBM0Q3NEE2Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MjlGNkRGRTQ1Q0M1MTFFMTlCMENDMjA2QUEzRDc0QTYiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MjlGNkRGRTU1Q0M1MTFFMTlCMENDMjA2QUEzRDc0QTYiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5550MFAABKQUlEQVR42uy9B5hkV3Ut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" alt=""><br>
</p>
<p><a href="http://andy128k.blogspot.com/">Андрей Кутейко</a> недавно стал одним из членов команды <a href="http://ruby-gnome2.sourceforge.jp/">ruby-gnome2</a> - проекта-мостика между миром ruby и gnome. По сути, этот проект является набором привязок (bindings) к целому стеку API. С одной стороны это позволяет использовать ruby для написания кросс-платформенных desktop-приложений. С другой - использовать качественные библиотеки в веб-проектах. Например:</p>
<ul>
<li><a href="http://developer.gnome.org/gio/">GIO</a> - инфраструктура доступа к файловой системе, прозрачное и унифицированное использование виртуальных файловых систем</li>
<li><a href="http://developer.gnome.org/pango/">Pango</a> - рендеринг текста с произвольными языками/шрифтами. Большинство программ в GNU/Linux (в их числе и браузеры) используют именно Pango, для превращение букв в пикселы на экране.</li>
<li><a href="http://developer.gnome.org/pango/">RSVG</a> - рендеринг SVG.</li>
<li><a href="http://poppler.freedesktop.org/">Poppler</a> - чтение PDF.</li>
</ul>
<p>Андрею потребовалось работать с PDF файлами и извлекать из них текст и прочую метаинформацию. Для этого ему пришлось исправить несколько ошибок в коде ruby/poppler и дописать недостающие функции (ruby/poppler немного отстаёт по версиям от poppler). Создатели ruby-gnome2 заметили активность пользователя <a href="https://github.com/andy128k">andy128k</a> и пригласили вступить в команду.<br>
В планах у Андрея реализовать в рамках репозитория ruby-gnome2 библиотеку <a href="http://ru.wikipedia.org/wiki/Cairo">cario</a>, библиотеки для работы с векторной графикой.</p>
<p>“Вообще я заметил, что на ruby очень мало десктоп-программ. И внимание к этому проекту невелико. Но несмотря на это, проект неплохо документирован. У меня, как у новичка, вообще не вызвало никаких трудностей разобраться с кодом.” - заметил Андрей.</p>
</div>
<a href="/v3/ruby-gnome.html" class="comment_link"><span>Comments</span></a>
</div>
</div>
<div class="right">
<div class="item"><h1>Драпируем клиентский код</h1>
<div>
<p>Команда разработчиков Redtape в ходе решения одной задачи на днях наткнулась на проблему - создать группу "радиокнопок" в Рельсах значительно сложнее, нежели, к примеру, элемент select. Аналогично, создать группу флажков намного сложнее, чем multiple select. В качестве значения им нужно было устанавливать поле, которое в ActiveRecord модели было представлено сериализованной переменной. В случае с группой флажков туда нужно было писать массив, сама форма была глубоко вложенной, и, начав писать erb код, мы почти мгновенно в нём утонули.</p>
<p>Через некоторое время прозвучало "Эврика!". Select и Radiogroup концептуально - одно и то же. Multiple select и Checkbox group - опять-таки одно и то же. Так почему бы не описать в erb простой "select" и не превратить его в Radiogroup с помощью клиентского кода?</p>
<p>Так родился <a href="http://aratak.github.com/jquery_drapper/">JQuery Drapper</a>. Его смысл в том, что проектируя html, вы стараетесь сделать максимально простой и семантичный html. Соответственно, select у вас - это именно select, а что там нарисовал дизайнер, группу радиокнопок или вылетающее окошко с набором ссылок - это лирика. Лирику и берёт на себя drapper. Он может спрятать исходный элемент управления и нарисовать вместо него нечто совершенно непохожее, вдобавок организовав связь между исходным элементом и его представлением (то, что принято называть binding). Примеры на странице плагина весьма говорящие: текстовые поля с порядковым номером элемента превращаются в список, сортируемый перетаскиванием, а текстовое поле превращается в элегантный слайдер.</p>
<p>Плагин написан достаточно модульно, чтобы написание собственных драпперов было удобным и приятным.</p>
<p>Если вы сталкиваетесь с задачей, которую можно решить простым и изящным html'ем, но дизайну это не соответствует и приходится городить огород, то возможно вам поможет JQuery Drapper.</p>
</div>
<a href="/v3/drapper.html" class="comment_link"><span>Comments</span></a>
</div>
<div class="item faye"><h1>Faye</h1>
<div>
<p><img src="http://i.minus.com/iRIAcN5zaDekW.jpeg" alt=""><br>
</p>
<p>Faye -- новая система обмена асинхронными сообщениями, основанная на WebSocket. Она доступна как для Rails, так и Node.js.</p>
<p>Faye была выбрана для чата и обновления историй без перезагрузки страницы планирования на Трекере. Изначально faye запускали как <a href="http://railscasts.com/episodes/151-rack-middleware">Rack middleware</a>. При этом варианте rails сервер вместе с faye запускаются одной командой: "<code>rails s thin</code>". Работало все хорошо, и даже шустро, поэтому запустили на продакшене. Однако, через некоторое время оперативной памяти на сервере стало не хватать. Как выяснилось, трекеровский https-прокси не работает корректно с сообщениями типа keep-alive, которые активно порождает faye во время работы, и это породило утечку памяти. Кстати, чат, который разрабатывался для изучения этой технологии, а затем был интегрирован в трекер, отлично работает как отдельное приложение. На трекере решили попробовать альтернативный способ запуска -- faye-сервер на <a href="http://rubyeventmachine.com/">EventMachine</a>. После этого на стейджинге снова столкнулись с проблемой пересылки SSL-трафика. Сообщения faye-серверу приходят, а вот обратно их не хотят получать некоторые браузеры (в частности, Firefox сообщает об ошибке "Security error"). </p>
<p>Команда разработчиков Трекера борется с данной проблемой и в ближайшее время собирается окончательно победить faye и сделать Трекер еще лучше :)</p>
</div>
<a href="/v3/tracker.html" class="comment_link"><span>Comments</span></a>
</div>
<div class="item warm-up"><h1>Разминки</h1>
<div>
<p><img src="http://i.minus.com/i41YXPk2XQ1g7.png" alt=""><br>
</p>
<p>Каждый день мы сталкиваемся с удивительным и прекрасным в мире программирования. Каждый раз мы изучаем что-то новое, неизведанное. И это вдвойне интересно, потому что мир программирования подчиняется строгим правилам, все его законы четко описаны. А все новое и непонятное становится логичным и последовательным вскоре после того, как процесс изучен досконально.</p>
<p>Репозиторий <a href="https://github.com/it-vecherka/warm-up">warm-up</a> призван помочь делиться с друг-другом интересными задачками и знаниями из удивительного мира программирования. Идея выросла из почтовой рассылки, в которой уже были заданы две джаваскриптовых и одна руби-задачка.</p>
<p>Процесс описан README.md и очень прост. Для того, чтобы задать задачку, необходимо сделать пулл-реквест в репозиторий с новым файлом, который содержит условие задачи. Достоинствами пулл-реквеста есть возможность коментировать строчки кода и сам пулл-реквест. Для тех, кто ни разу не делал пулл-реквесты <a href="http://help.github.com/send-pull-requests/">небольшой мануал в помощь</a></p>
<p>Подписывайтесь на обновление репозитория, присылайте пулл-реквесты и давайте решать интересные задачки вместе.</p>
</div>
<a href="/v3/warm-up.html" class="comment_link"><span>Comments</span></a>
</div>
<div class="item"><h1>Принцип неопределенности джаваскрипта</h1>
<div>
<p><code>undefined</code> -- это глобальная переменная со значением undefined. Она не является константой или ключевым словом и с легкостью может быть переопределена.</p>
<p>Естественно, защититься от этого поведения можно достаточно легко и не принужденно. Варианты:</p>
<ul>
<li>вместо слова <code>undefined</code> использовать любое выражение, возвращающее <code>undefined</code>. Допустим, <code>void(0)</code>.</li>
<li>объявить локальную переменную undefined со значением по-умолчанию <code>undefined</code>.</li>
<li>Добавить дополнительный формальный параметр в вызваемую функцию и не передавать фактический: <code>(function(undefined) { /* ... */ })()</code></li>
<li><code>'undefined' === typeof variable</code> не зависит от переопределенной переменной <code>undefined</code></li>
</ul>
<p>Вариант <code>if(something) {}</code> писать нельзя, ибо пустая строка, ноль при конвертировании в <code>boolean</code> тоже возвращают <code>false</code>. А задача стоит на проверку <code>undefined</code> значения.</p>
<p>При всех описанных вариантах необходимо помнить о таком поведении интерпретатора и постоянно заботиться о защите от переопределения.<br>
Начиная с ECMAScript 5 включена поддержка строгого режима (англ. strict mode) в котором помимо всего прочего есть поддержка read-only свойств объекта. Используя строгий режим, включим у <code>window.undefined</code> режим ‘только для чтения’:</p>
<pre><code>"use strict";
Object.defineProperty(window, "undefined", {
value: void(0),
writable: false
});
</code></pre>
<p>После выполнения этого кода любая попытка переопределить <code>undefined</code> свойство объекта <code>window</code> ни к чему не приведет. Интерпретатор проигнорирует переопределение.</p>
<p>Поддержка браузеров, кстати, обнадеживает. Игнорируя Internet Explorer восьмой версии, можно смело пользоваться! Что касается серверного джаваскрипта, то можете быть спокойны -- undefined не переопределяется.</p>
<p>Предупреждение: Будьте бдительны! Строгий режим на то и строгий, чтобы бить по рукам за каждую оплошность.</p>
<p>Ссылки по теме:</p>
<ul>
<li><a href="http://ecma262-5.com/ELS5_HTML.htm#Annex_C">The Strict Mode of ECMAScript (спецификация)</a></li>
<li><a href="http://javascriptweblog.wordpress.com/2011/05/03/javascript-strict-mode/">Статья "JavaScript Strict Mode" от Ангуса Кролла</a></li>
<li><a href="http://shamansir.github.com/JavaScript-Garden/#core.undefined">JavaScript Garden об undefined</a></li>
<li><a href="http://test262.ecmascript.org/">Официальный валидатор на совместимость с ECMAScript 5 стандартом</a></li>
<li><a href="http://kangax.github.com/es5-compat-table/">Сравнительная таблица поддержки strict-mode в браузерах</a></li>
</ul>
</div>
<a href="/v3/undefined.html" class="comment_link"><span>Comments</span></a>
</div>
<div class="item quotes"><h1>Вовремя записанное</h1>
<div>
<p><img src="http://i.minus.com/i98BDEv3ItGRZ.png" alt=""><br>
</p>
<ul>
<li>“Три достоинства программиста: лень, гордыня и третью не помню. Вероятно забывчивость.” <em>Дмитрий Кириенко</em></li>
<li>“Вауэффектизация rails началась с динамических скаффолдов” <em>Павел Митин</em></li>
<li>“JOPA не в сортирах и не в Java - JOPA в головах!” <em>Александр Михальчук</em></li>
<li>"Жаваскриптовое программирование пора уже давно определить в отдельный паттерн: жаваскрипт-ориентированное программирование. ЖОП получается. " <em>автор неизвестен</em></li>
</ul>
</div>
<a href="/v3/quotes.html" class="comment_link"><span>Comments</span></a>
</div>
</div>
<div class="clearfix"></div>
<div class="thanks"><h1>Спасибы</h1>
<div>
<p>Огромное спасибо редакция выражает контрибьюторам этого выпуска стенгазеты: <a href="http://about.me/alder">Алексею Деркачу</a>, <a href="https://github.com/JinnSky">Алексею Левжинскому</a>, <a href="https://github.com/dmitriy-kiriyenko">Дмитрию Кириенко</a>, <a href="http://novembermeeting.blogspot.com/">Павлу Митину</a>, <a href="http://andy128k.blogspot.com/">Андрею Кутейко</a> и <a href="https://twitter.com/#!/h8_self">Дмитрию Стропалову</a>. Без вас, ребята, этого выпуска бы не было.</p>
<p>Отдельное спасибо модели текущего выпуска <a href="http://petrovich.anahoret.com/">Сергею Петровичу</a> и дизайнеру обложки Максиму Довбенко.</p>
<p>Пользуясь случаем, приглашаем к сотрудничеству всех желающих поучаствовать в следующем выпуске.</p>
</div>
<a href="/v3/thanks.html" class="comment_link"><span>Comments</span></a>
</div>
<div class="clearfix"></div>
</div>
</section>
<span id="empty_footer"></span>
<footer>
<div class="wrapper">
<a href="https://twitter.com/it_vecherka" class="twitter-follow-button" data-show-count="false" data-lang="ru" data-show-screen-name="false">Читать @it_vecherka</a>
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
<div class="copyright"><div>© <strong>Вечерний Анахорет™</strong></div>
<div><small>Все права защищены кольчугой из чешуи дракона +3</small></div>
<div><small>Предложения и замечания <a href="mailto:vecherka@cssum.net">шлите редактору</a>.</small></div>
</div>
</div>
</footer>
</div>
<!-- Yandex.Metrika counter -->
<div style="display:none;"><script type="text/javascript">
(function(w, c) {
(w[c] = w[c] || []).push(function() {
try {
w.yaCounter10762477 = new Ya.Metrika({id:10762477, enableAll: true});
}
catch(e) { }
});
})(window, "yandex_metrika_callbacks");
</script></div>
<script src="//mc.yandex.ru/metrika/watch.js" type="text/javascript" defer="defer"></script>
<noscript><div><img src="//mc.yandex.ru/watch/10762477" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter -->
</body>
</html>