-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathatom.xml
1105 lines (806 loc) · 194 KB
/
atom.xml
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
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title><![CDATA[Лошоть и байты]]></title>
<link href="http://digal.github.com/atom.xml" rel="self"/>
<link href="http://digal.github.com/"/>
<updated>2013-01-11T10:06:39+04:00</updated>
<id>http://digal.github.com/</id>
<author>
<name><![CDATA[Yuri Buyanov]]></name>
</author>
<generator uri="http://octopress.org/">Octopress</generator>
<entry>
<title type="html"><![CDATA[2012/2013]]></title>
<link href="http://digal.github.com/blog/2013/01/11/2012-2013/"/>
<updated>2013-01-11T09:52:00+04:00</updated>
<id>http://digal.github.com/blog/2013/01/11/2012-2013</id>
<content type="html"><![CDATA[<p>Итак, традиционное (в смысле, аж второй раз) подведение итогов года и построение несбыточных планов на следующий.</p>
<!--more-->
<h2>Личное</h2>
<p>Родили третьего ребёнка, и вроде бы на какое-то время решили квартирный вопрос (который, впрочем, сейчас ещё находится на стадии ремонта).</p>
<h2>Работа</h2>
<p>Весь год в офисе (а также, вечерами, на даче и дома) провёл, окунувшись головой в iOS-разработку. Краткое содержание:</p>
<ul>
<li>Отладка процесса мобильной разработки для всей компании. Это тема для отдельного поста, который я уже с полгода обещаю себе написать.</li>
<li>Постоянный перебор фреймворков, библиотек, инструментов и вообще подходов к разработке.</li>
<li>Постоянные собеседования кандидатов, и проверки их тестовых заданий. Лично мне кажется, что это, мягко говоря, не самая сильная моя сторона. По крайней мере, потенциала для роста здесь очень и очень много.</li>
<li>Отбор учеников для летней школы iOS-разработчиков (это где-то под сотню тестовых заданий), а затем и преподавание в ней. Сам узнал за этот месяц о Cocoa, пожалуй, примерно столько же, сколько за весь предыдущий год.</li>
<li>Множество наступленных граблей различной степени тяжести.</li>
<li>Ударная работа (в роли техлида) на <a href="https://itunes.apple.com/ru/app/rconnectsmart-application/id557857165?mt=8">проекте года</a>, который не представляет собой ничего супер-инновационного технически, но которым было безумно интересно заниматься. И первый из iOS-проектов, за который мне не было мучительно стыдно, пожалуй. Всем ребятам и девчатам, вместе со мной пахавшим на проекте — отдельное спасибо.</li>
</ul>
<p>Вообще, по моим ощущениям, компания смогла преодолеть какой-то болезненный, нервозный и немного унылый этап роста, после чего в работу опять вернулся какой-то драйв. Я даже поймал себя пару раз на сожалении о пропущенных корпоративах (к которым раньше был, в общем, равнодушен), а предновогодний выезд за город — так вообще был выше всяких похвал. Впрочем, это могут быть только мои личные ощущения, не имеющие никакого отношения к объективной реальности.</p>
<h2>Бложек</h2>
<p>Больше года на одном блогохостинге и движке — уже достижение. За счёт линкопостов, сабж удалось сделать относительно регулярным, однако кроме них почти ничего и не было: одна <a href="http://digal.github.com/blog/2012/06/06/cocoapods/">статья</a> про cocoapods и маленькая <a href="http://digal.github.com/blog/2012/09/09/russian-management/">заметочка</a> про прочитанную книжку. Надо сделать выводы и вернуться к написанию развёрнутых постов про что-нибудь.</p>
<h2>Scala</h2>
<p>Весной, как и планировалось, мы организовали вторую Scala-конференцию, на которую приехало несколько очень хороших докладчиков, а зал (за него, кстати, спасибо компании JetBrains) был опять забит до отказа. Осенью, к сожалению, не сложилось, но очень надеюсь, что этой весной, опять что-нибудь организуем.</p>
<p>Вообще, в этом году Objective-C целиком вытеснил Scala из рабочего графика. В начале года чуть-чуть удалось на ней пописать домашние задания к курсу по алгоритмам. К концу осени ситуацию немного исправил небольшой сайд-проект, в ходе которого удалось как следует поковыряться с Play 2 и вообще ощутить, что сейчас происходит в Scala-мире.</p>
<h2>Книги</h2>
<p>В этом году изо всех сил старался читать побольше книг, причём по возможности нетехнических. Получилось не то чтобы много, но сильно больше, нежели в предыдущие несколько лет: аж целых четыре штуки.</p>
<ul>
<li>“Стив Джобс” Уолтера Айзексона.</li>
<li>“Атлант Расправил Плечи” Айн Рэнд.</li>
<li>“Ружья, микробы и сталь” Джареда Даймонда.</li>
<li>“Русская модель управления” Александра Прохорова.</li>
</ul>
<h2>2013</h2>
<p>Учитывая степень выполнения <a href="http://digal.github.com/blog/2012/01/04/2011-2012/">планов на этот год</a>, понимаю что планы на следующий — не более чем примерный вишлист, нежели попытка серьёзного планирования. Однако, это лучше чем ничего. Итак, в 2013 году я планирую:</p>
<ul>
<li>Продолжить заниматься мобильной разработкой. В основном — iOS, однако не исключаю возможности работы с андроидом и разного рода мобильным вебом.</li>
<li>Вернуться к Scala, и, всё-таки, хоть какую-то долю времени заниматься сервер-сайдом.</li>
<li>API Management, developer experience, developer relations и всё что с этим связано. Об этом, надеюсь, смогу написать подробнее чуть позже.</li>
<li>Низкоуровневая фигня, схемотехника и эмбед, просто в качестве хобби. На данный момент жду доставки Raspberry Pi со стартовым набором юного схемотехника и уже думаю заказать на ДР какой-нибудь набор с Arduino. Очень жалею что совершенно прощёлкал всю эту тему в детском, подростковом и студенческом возрастах и пытаюсь навёрстать уже к тридцатнику. Если будет получаться — попробую силы в создании “Умного дома” на базе новой квартиры.</li>
<li>Учиться, учиться и учиться. В этом году так и не успел толком окунуться в Machine Learning, но в этом обязательно постараюсь. Ну и выучить новый язык программирования — куда без этого.</li>
</ul>
<p>В общем, (хоть и запоздало), всех читателей с новым годом. Если вдруг кто-то писал какие-то аналогичные итоговые вещи — кидайте в комментарии, будет интересно сравнить.</p>
<p>Пока.</p>
]]></content>
</entry>
<entry>
<title type="html"><![CDATA[Ссылкопост №14, новогодний.]]></title>
<link href="http://digal.github.com/blog/2013/01/04/links-14/"/>
<updated>2013-01-04T01:08:00+04:00</updated>
<id>http://digal.github.com/blog/2013/01/04/links-14</id>
<content type="html"><![CDATA[<p>Прошёл декабрь, который оказался также богат на ссылки и, пользуясь новогодними каникулами, оперативно выкладываю пост. В этот раз довольно много ссылок на всякие обучалки и курсы, и тут я, конечно, слажал: надо было сделать этот пост на недельку раньше, чтобы вы могли заполнить длинные новогодние каникулы чем-нибудь познавательным.</p>
<!--more-->
<h2>Обучалки</h2>
<ul>
<li><p><a href="http://xuanji.appspot.com/isicp/">Interactive SICP</a> — просто классический SICP, дополненный возможностью изменять и выполнять код прямо в тексте книги или в отдельном скретчпаде, а также проверкой упражнений. (via <a href="https://twitter.com/newsycombinator">@newsycombinator</a>)</p></li>
<li><p>Другой интерактивный <a href="http://tryr.codeschool.com/">курс</a>, по языку R. Задержал выход этого поста как минимум на день :) (via <a href="https://twitter.com/newsycombinator">@newsycombinator</a>)</p></li>
<li><p><a href="http://nixsrv.com/llthw">Learn Linux The Hard Way</a> — ещё один интерактивный гайд, на этот раз по линуксу. (via <a href="https://twitter.com/newsycombinator">@newsycombinator</a>)</p></li>
<li><p><a href="http://schoolofdata.org/">School of Data</a> — обучающий сайт, посвящённый, как следует из названия, работе с данными. (via <a href="https://twitter.com/newsycombinator">@newsycombinator</a>)</p></li>
</ul>
<h2>Mobile</h2>
<ul>
<li><p><a href="https://github.com/plamoni/SiriProxy">SiriProxy</a> — небольшой прокси для протокола Siri, позволяющий расширять её функциональность при помощи очень простых плагинов на Ruby. Работает только в локальной сети (либо через VPN), должен быть очень интересен, в частности, для Home Automation.</p></li>
<li><p><a href="https://github.com/stuartervine/OCTotallyLazy">OCTotallyLazy</a> — очередной функциональный улучшатель коллекций Cocoa. Содержит 35 полезных функций, ленивые коллекции (sequence), options и, вообще, явно родственен Scala Collections API и этим мне очень нравится. (via <a href="https://twitter.com/CocoaPods">@CocoaPods</a>)</p></li>
<li><p><a href="https://github.com/youknowone/sqlite3-objc">sqlite3-objc</a> — небольшой враппер вокруг sqlite3 для случаев когда Core Data — оверкилл, а городить страницы сишного кода для работы с БД не хочется. (via <a href="https://twitter.com/CocoaPods">@CocoaPods</a>)</p></li>
<li><p><a href="http://www.jonmsterling.com/posts/2012-02-05-typed-collections-with-self-types-in-objective-c.html">Взгляд</a> на то, как могут выглядеть будущие дженерики в Objective-C. Всё как обычно шиворот-навыворот (так, например, коллекция строк будет подклассом NSString, а вовсе не каким-нибудь NSArray), да и вообще не факт, что всё будет именно так, но почитать интересно. (via <a href="https://twitter.com/corristo">@corristo</a>)</p></li>
<li><p><a href="https://github.com/chrisdevereux/Slash">Slash</a> — библиотека для генерации NSAttributedString из HTML-подобного языка разметки. Стиль для каждого тега (можно использовать любые кастомные) удобно настраивается через NSDictionary. (via <a href="https://twitter.com/newsycombinator">@newsycombinator</a>)</p></li>
<li><p><a href="http://engineering.linkedin.com/testing/continuous-integration-mobile">Пост</a> на очень животрепещущую для меня в последний год тему: организация CI и автоматизированного тестирования для мобильных приложений в LinkedIn. (via <a href="https://twitter.com/yvasileuski">@yvasileuski</a>)</p></li>
<li><p>Интересный <a href="http://www.sesameworkshop.org/assets/1191/src/Best%20Practices%20Document%2011-26-12.pdf">документ</a> (pdf) от “Улицы Сезам” про юзабилити планшетных приложений для детей. Многие вещи также справедливы для взрослых. (via <a href="https://twitter.com/sesamestreet">@sesamestreet</a>)</p></li>
</ul>
<h2>Прочее</h2>
<ul>
<li><p>Интересная <a href="http://www.codinghorror.com/blog/2012/12/the-organism-will-do-what-it-damn-well-pleases.html">статья</a> от Джеффа Атвуда о том, как важно ориентироваться на поведение пользователей при развитии продукта. (via <a href="https://twitter.com/codinghorror">@codinghorror</a>)</p></li>
<li><p>Ссылка из предыдущей статьи, которую я решил вынести отдельно: <a href="http://www.fudco.com/chip/lessons.html">рассказ</a> о многопользовательской игре Habitat от LucasFilm Games. Это прадедушка всех современных MMORPG из аж 80-х. Очень познавательно, почитайте.</p></li>
<li><p>В ту же тему: подробнейшая <a href="http://www.mine-control.com/zack/uoecon/uoecon.html">статья</a> об игровой экономике Ultima Online. (via <a href="https://twitter.com/newsycombinator">@newsycombinator</a>)</p></li>
<li><p><a href="http://stackoverflow.com/questions/218123/what-was-the-strangest-coding-standard-rule-that-you-were-forced-to-follow">Тред</a> на Stackoverflow с самыми дурацкими правилами кодстайла. Местами просто эпично.</p></li>
<li><p><a href="http://tenxer.github.com/xcharts/">xCharts</a> — очередная библиотека для построения динамических графиков на базе d3. (via <a href="https://twitter.com/newsycombinator">@newsycombinator</a>)</p></li>
<li><p>Интересный <a href="http://www.quora.com/Stripe-company/Does-Stripe-have-product-managers-or-do-engineers-manage-the-products-themselves/answer/Patrick-Collison">пост</a>, точнее ответ на вопрос о том, почему компании Stripe не нужны отдельные продукт-менеджеры. (via <a href="https://twitter.com/patrickc">@patrickc</a>)</p></li>
<li><p>Интересное <a href="http://www.spinellis.gr/blog/20121205/">исследование</a> на устойчивость различных языков программирования к случайным ошбикам в коде. Результат немного предсказуем: система типов имеет первоочередное значение. (via <a href="https://twitter.com/mariofusco">@mariofusco</a>)</p></li>
<li><p>Занятный <a href="http://branchandbound.net/blog/scala/2012/12/scala-is-like-git/">пост</a>, автор которого сравнивает Scala с Git. Не напрямую, конечно, а описывая общие принципы дизайна, баланс между простотой и сложностью, и восприятие сообществом. (via <a href="https://twitter.com/odersky">@odersky</a>)</p></li>
<li><p><a href="http://kaikkonendesign.fi/typography/">Интерактивное руководство</a> по улучшению типографики блога. Всё очень просто и наглядно. (via <a href="https://twitter.com/newsycombinator">@newsycombinator</a>)</p></li>
<li><p>Только совсем недавно радовался томе, что за тот год, что я занимался исключительно телефончиками, в MongoDB добавили <a href="http://docs.mongodb.org/manual/tutorial/expire-data/">“протухание” записей</a>, как авторы выкатывают очередную полезную фичу: <a href="https://jira.mongodb.org/browse/SERVER-380?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=224020#comment-224020">полнотекстовый поиск</a>. Если будет работать как надо — минус ещё один компонент (например, elasticsearch) как минимум, в несложных проектах. (via <a href="https://twitter.com/newsycombinator">@newsycombinator</a>)</p></li>
<li><p>Небольшой <a href="http://tersesystems.com/2012/12/27/error-handling-in-scala">обзор</a> способов обработки ошибок в Scala. (via <a href="https://twitter.com/sourcedelica">@sourcedelica</a>)</p></li>
<li><p><a href="http://www.3scale.net/2012/12/api-economics-create-more-value-than-you-capture/">Статья</a> про экономику API, или, если проще, о том, как сделать API, приносящий пользу компании. (via <a href="https://twitter.com/njyx">@njyx</a>)</p></li>
<li><p><a href="http://gitrep.com/">Gitrep</a> — аналог делишеса для девелоперов: сервис закладок для репозиториев с тегами (как публичными, так и приватными). (via <a href="https://twitter.com/newsycombinator">@newsycombinator</a>)</p></li>
<li><p><a href="http://timeline.verite.co/">TimelineJS</a> — навороченная JS-библиотека для построения таймлайнов, умеющая тянуть данные из JSON и Google Docs.</p></li>
<li><p>Просто интересный <a href="http://www.reddit.com/r/programming/comments/9x15g/programming_thought_experiment_stuck_in_a_room/">пост</a> на реддите. Как написать ОС и набор игр, если вас заперли в комнате с компьютером без интернета и софта и одной дискетой. <a href="http://www.reddit.com/r/programming/comments/9x15g/programming_thought_experiment_stuck_in_a_room/c0ewj2c">Вот</a> один из интересных развёрнутых ответов.</p></li>
</ul>
<p>В ходе написания также стандартный пост “итоги-2012/планы-2013”, который, надеюсь, выложу в ближайшие пару дней.</p>
]]></content>
</entry>
<entry>
<title type="html"><![CDATA[Линкопост №13 (ноябрь)]]></title>
<link href="http://digal.github.com/blog/2012/12/20/links-13/"/>
<updated>2012-12-20T23:57:00+04:00</updated>
<id>http://digal.github.com/blog/2012/12/20/links-13</id>
<content type="html"><![CDATA[<p>Итак, я, кажется, почти догнал график выкладывания ссылок и добрался до ноября. Заодно я пришёл к идее сделать выпуски регулярными: один пост в месяц. Посмотрим, что получится.</p>
<p>Ссылок за ноябрь ну очень много, что, видимо, связано с небольшим отпуском. Попробую немного структурировать всю эту груду, дабы облегчить ориентирование в ней вам и себе (поскольку сам пользуюсь этими постами как закладками).</p>
<!--more-->
<h2>Scala</h2>
<ul>
<li><p><a href="https://github.com/non/spire">Spire</a> — продвинутая scala-библиотека для работы с числами и всем, что с ними связано. (via <a href="https://twitter.com/mslinn">@mslinn</a>)</p></li>
<li><p><a href="http://axel22.github.com/scalameter/">ScalaMeter</a> — Scala-фреймворк для написания микробенчмарков и перформанс-тестов. Призван решить ряд проблем, возникающих при написании как бенчмарков вообще, так и на JVM в частности. Особо стоит отметить статью с <a href="http://axel22.github.com/scalameter/home/gettingstarted/">введением в тему</a> в документации. (via <a href="https://twitter.com/__axel22">@__axel22</a>)</p></li>
</ul>
<h2>БД</h2>
<ul>
<li><p><a href="http://www.networkworld.com/cgi-bin/mailto/x.cgi?pagetosend=/news/tech/2012/102212-nosql-263595.html">Бенчмарк</a> популярных NoSQL-баз при разных сценариях использования. На беговой дорожке — MongoDB, Cassandra, Riak и HBase, плюс MySQL для сравнения. (via <a href="https://twitter.com/glorphindale">@glorphindale</a>)</p></li>
<li><p><a href="http://www.rethinkdb.com/">RethinkDB</a> — очередной NoSQL для JSON с прицелом на распределённость. Заявлена поддержка джойнов, адекватного мап-редьюса (в отличие от не будем говорить кого), вложенных запросов и агрегации.</p></li>
</ul>
<h2>Фронтенд</h2>
<ul>
<li><p>Довольно подробный <a href="http://html5sec.org/">список</a> уязвимостей в современных браузерах. Каждую уязвимость можно проверить на своей версии оного. (via <a href="https://twitter.com/newsycombinator">@newsycombinator</a>)</p></li>
<li><p><a href="http://amsul.github.com/pickadate.js/">pickadate.js</a> — просто симпатичный выпадающий календарик для выбора даты на jQuery. (via <a href="https://twitter.com/newsycombinator">@newsycombinator</a>)</p></li>
<li><p><a href="http://oskarkrawczyk.github.com/heyoffline.js/">Heyoffline.js</a> — небольшая библиотечка для предупреждения пользователя о том, что у него пропало интернет-соединение. Пригодится для веб-приложений, которым нужен постоянный коннект. (via <a href="https://twitter.com/newsycombinator">@newsycombinator</a>)</p></li>
<li><p><a href="http://code.hazzens.com/d3tut/">Введение</a> в <a href="http://d3js.org/">d3</a> — очень крутую библиотеку для интерактивной визуализации данных. (via <a href="https://twitter.com/newsycombinator">@newsycombinator</a>)</p></li>
<li><p><a href="http://vitalets.github.com/bootstrap-editable/">Editable for Bootstrap</a> — библиотека для добавления симпатичных редактируемых элементов на bootstrap-странички. (via <a href="https://twitter.com/newsycombinator">@newsycombinator</a>)</p></li>
<li><p>Большой <a href="http://www.bootstraphero.com/the-big-badass-list-of-twitter-bootstrap-resources">список</a> ресурсов, посвящённых bootstrap. Очень большой. (via <a href="https://twitter.com/newsycombinator">@newsycombinator</a>)</p></li>
</ul>
<h2>iOS, Cocoa, ObjC</h2>
<ul>
<li><p><a href="http://nshipster.com/">NSHipster</a> — очень познавательный сайт про малоизвестные и малоисследованные уголки Cocoa. Мастрид для всех iOS- и OSX-разработчиков. (via <a href="https://twitter.com/corristo">@corristo</a>)</p></li>
<li><p>Относительно свежая <a href="http://www.flickr.com/photos/89549358@N02/8147876571/lightbox/">табличка</a> с девайсами и версиями iOS. Распечатать, повесить на стенку. (via <a href="https://twitter.com/ksenks">@ksenks</a>)</p></li>
<li><p><a href="http://buildinternet.com/2012/02/yrdropdownview-a-polite-uialertview-alternative-for-ios/">YRDropdownView</a> — симпатичная и менее навязчивая замена UIAlertView в виде выезжающей сверху плашечки. (via <a href="https://twitter.com/CocoaPodsOrg">@CocoaPodsOrg</a>)</p></li>
<li><p><a href="https://github.com/ondalabs/OLImageView">OLImageView</a> — замена UIImage и UIImageView с поддержкой анимированных гифок. (via <a href="https://twitter.com/CocoaPodsOrg">@CocoaPodsOrg</a>)</p></li>
<li><p><a href="https://github.com/ronaldmannak/YBStatechart">YBStatechart</a> — фреймворк для разработки iOS-приложений с помощью statechart’ов (Lingvo предлагает перевести это как “диаграммы состояний”). Довольно интересный подход, который авторы противопостовляют MVC, подробнее об этом можно почитать, как обычно, по ссылкам в Readme, в частности в <a href="http://blog.sproutcore.com/statecharts-in-sproutcore/">бложике</a> авторов. (via <a href="https://twitter.com/CocoaPodsOrg">@CocoaPodsOrg</a>)</p></li>
<li><p><a href="https://github.com/luisobo/Nocilla">Nocilla</a> — библиотека для написания стабов HTTP-реквестов в iOS/OSX тестах. Также, внизу Readme есть ссылки на пару альтернатив. (via <a href="https://twitter.com/CocoaPodsOrg">@CocoaPodsOrg</a>)</p></li>
<li><p><a href="https://bitbucket.org/martijnthe/nsurlconnectionvcr">NSURLConnectionVCR</a> — вариация на ту же тему: библиотека, позволяющая записывать и прогонять запросы и ответы через NSURLConnection. (via <a href="https://twitter.com/CocoaPodsOrg">@CocoaPodsOrg</a>)</p></li>
<li><p><a href="http://objective-cloud.com/">Objective-Cloud</a> — сервис для запуска Obj-C кода в облаке. Симпатичный сайт, удобный деплой через git, REST-обёртка… но всё-таки мучает вопрос: зачем? (via <a href="https://twitter.com/olebegemann">@olebegemann</a>)</p></li>
<li><p><a href="https://parse.com/">Parse</a> — облачная платформа для создания серверной части мобильных приложений. Имеет удобные SDK под несколько платформ, поддерживает push и может при необходимости исполнять серверсайдный код (на JS). Есть бесплатный план. Вполне может пригодиться как при создании прототипа, так и в “боевом” проекте.</p></li>
<li><p>Для тех, кто хочет угореть по хардкору: совсем нетривиальная <a href="http://eli.thegreenplace.net/2012/11/24/life-of-an-instruction-in-llvm/">статья</a> о тайной жизни инструкций в LLVM. (via <a href="https://twitter.com/newsycombinator">@newsycombinator</a>)</p></li>
</ul>
<h2>Всё остальное</h2>
<ul>
<li><p><a href="https://github.com/geraldb/world.db">world.db</a> — база данных стран, городов, языков и попутных тегов (типа членства в организациях и расположения в частях света) в виде SQLite-файлика. Есть коммандлайн-тул для работы с этим всем хозяйством, веб-смотрелка и хороший список альтернатив в Readme. (via <a href="https://twitter.com/middlesizetit">@middlesizetit</a>)</p></li>
<li><p><a href="http://colin-scott.github.com/blog/2012/10/28/7-ways-to-deal-with-ordering-bugs-in-distributed-systems/">Статья</a> с обзором способов построения распределённых конкурентных (Или как это по-русски? “Параллельных”?) систем. (via <a href="https://twitter.com/mfiguiere">@mfiguiere</a>)</p></li>
<li><p><a href="http://apiary.io/">apiary.io</a> — симпатичный сервис для документирования REST API с довольно свежим подходом. На данный момент в стадии беты и бесплатен. (via <a href="https://twitter.com/ostronom">@ostronom</a>)</p></li>
<li><p><a href="http://windows95tips.tumblr.com/">Windows 95 Tips, Tricks, and Tweaks</a> — бложек со скриншотами творчески переосмысленных сообщений Windows 95. (via <a href="https://twitter.com/LidlBitchard">@LidlBitchard</a>)</p></li>
<li><p>Красивый интерактивный <a href="http://thecarpandtheseagull.thecreatorsproject.com/">фильм</a> на WebGL. Не поленитесь посмотреть, он довольно короткий. (via <a href="https://twitter.com/middlesizetit">@middlesizetit</a>)</p></li>
<li><p><a href="http://newyork.grubstreet.com/2012/11/smartphone-etiquette-at-restaurants.html">Правила этикета</a>, касающиеся использования смартфона за столом. Просто необходимая статья для многих из тех, кто читает этот блог, да и для меня тоже, чего уж тут. (via <a href="https://twitter.com/itolmach">@itolmach</a>)</p></li>
<li><p>Проникновенный <a href="http://www.richardrodger.com/2012/11/03/why-i-have-given-up-on-coding-standards/#.UNNYiNFmtOQ">пост</a> о том, что coding standards не нужны. (via <a href="https://twitter.com/tuony">@tuony</a>)</p></li>
<li><p>Чувак написал скрипт, покупающий рандомные вещи на амазоне, выделил ему $50 в месяц и ведёт <a href="http://randomshopper.tumblr.com/">блог</a> о вещах, которые он покупает. (via <a href="https://twitter.com/chrisimrie">@chrisimrie</a>)</p></li>
<li><p><a href="http://durdn.com/blog/2012/11/22/must-have-git-aliases-advanced-examples/">Пост</a> со множеством полезных алиасов для git. (via <a href="https://twitter.com/ethauvin">@ethauvin</a>)</p></li>
<li><p><a href="http://blog.cedarsoft.com/2010/01/top-10-why-subversion-is-better-than-git/">Почему SVN лучше чем Git: 10 причин</a>. Тру стори. (via <a href="https://twitter.com/glorphindale">@glorphindale</a>)</p></li>
<li><p><a href="http://play-dune.com/">Dune 2 в браузере</a>. <em>/me Пустил слезу.</em> (via <a href="https://twitter.com/middlesizetit">@middlesizetit</a>)</p></li>
</ul>
]]></content>
</entry>
<entry>
<title type="html"><![CDATA[Линкопост №12 (октябрь)]]></title>
<link href="http://digal.github.com/blog/2012/12/16/links-12/"/>
<updated>2012-12-16T21:59:00+04:00</updated>
<id>http://digal.github.com/blog/2012/12/16/links-12</id>
<content type="html"><![CDATA[<p>Итак, продолжаю по мере сил выкладывать накопившееся. Теперь на очереди октябрь.</p>
<!--more-->
<ul>
<li><p><a href="http://taligarsiel.com/Projects/howbrowserswork1.htm">How browsers work</a> — большая подробная статья о том, как устроены браузеры. (via <a href="https://twitter.com/middlesizetit">@middlesizetit</a>)</p></li>
<li><p><a href="http://www.sqlite.org/testing.html">How SQLite Is Tested</a> — хороший пример всеобъемлющего и параноидального подхода к автотестам. Отдельно понравился пассаж про опыт использования статического анализатора:</p></li>
</ul>
<blockquote><p>Static analysis has found a few bugs in SQLite, but those are the exceptions. More bugs have been introduced into SQLite while trying to get it to compile without warnings than have been found by static analysis.”</p></blockquote>
<p>(via <a href="https://twitter.com/ceesaxp">@ceesaxp</a>)</p>
<ul>
<li><p><a href="http://www.norvig.com/21-days.html">Teach Yourself Programming in Ten Years</a> — про книжки “Выучи С++ за три дня” и становление Программиста (с большой буквы “П”). (via <a href="https://twitter.com/kerzol">@kerzol</a>)</p></li>
<li><p><a href="http://vis.berkeley.edu/software/proton_multitouch_framework/proton/">Proton</a> — iOS-фреймворк для декларативного (в виде регекспов) описания мультитач-жестов. Не знаю зачем, но кому-то может пригодиться. (via <a href="https://twitter.com/CompSciFact">@CompSciFact</a>)</p></li>
<li><p><a href="https://tech.dropbox.com/2012/10/caching-in-theory-and-practice/">Caching in theory and practice</a> — статья в бложике дропбокса про базовые алгоритмы кеширования. (via <a href="https://twitter.com/newsycombinator">@newsycombinator</a>)</p></li>
<li><p><a href="http://stedolan.github.com/jq/">jq</a> — коммандлайновый JSON-процессор. “is like sed for JSON data”. (via <a href="https://twitter.com/newsycombinator">@newsycombinator</a>)</p></li>
<li><p><a href="https://github.com/blog/1299-mantle-a-model-framework-for-objective-c">Mantle</a> — Cocoa-фреймворк для построения много чего умеющего model layer от GitHub. Сериализация/десериализация, обновление объектов, версионирование и много ещё чего. (via <a href="https://twitter.com/github">@github</a>)</p></li>
<li><p><a href="http://fontello.com/">Fontello</a> — Генератор кастомных icon fonts на базе десятка существующих. На выходе выдаёт архив, содержащий шрифт в нескольких форматах, CSS, демонстрационную html-ку и ещё кое-чего по мелочи. (via <a href="https://twitter.com/guillaumebort">@guillaumebort</a>)</p></li>
<li><p><a href="https://github.com/apenwarr/sshuttle">sshuttle</a> — простой в использовании как-бы-VPN поверх обычного SSH. Если хочется быстро сделать себе секьюрный тоннель, а заморачиваться с настройкой настоящего VPN — совсем не хочется. (via <a href="https://twitter.com/umputun">@umputun</a>)</p></li>
</ul>
]]></content>
</entry>
<entry>
<title type="html"><![CDATA[Линкопост №11 (сентябрь)]]></title>
<link href="http://digal.github.com/blog/2012/11/25/links-11/"/>
<updated>2012-11-25T14:50:00+04:00</updated>
<id>http://digal.github.com/blog/2012/11/25/links-11</id>
<content type="html"><![CDATA[<p>Как и обещал, разгребаю накопившееся и пытаюсь выкладывать ссылки быстрее, чем их нахожу.</p>
<p>Меня почему-то немного мучает совесть, когда я представляю себе, как некоторые фолловеры постят интересную ссылку, а через месяц видят её в моём посте. В качестве эксперимента решил указывать источники ссылок.</p>
<!--more-->
<ul>
<li><p>Большая <a href="http://nathanbarry.com/25-free-ios-design-resources/">подборка</a> ресурсов для дизайнеров iOS-приложений: PSD-шаблоны, кнопочки, иконочки, текстуры и всё такое. (via <a href="https://twitter.com/middlesizetit">@middlesizetit</a>)</p></li>
<li><p><a href="http://www.mikedellanoce.com/2012/09/10-tips-for-getting-that-native-ios.html">10 советов</a> по разработке нормальных интерфейов на PhoneGap. “Нормальных”, в смысле “быстрых, отзывчивых и хоть как-то похожих на нативные”. (via <a href="https://twitter.com/newsycombinator">@newsycombinator</a>)</p></li>
<li><p><a href="http://zx2c4.com/projects/password-store/">Pass</a> — консольный и юниксвейный менеджер паролей. (via <a href="https://twitter.com/newsycombinator">@newsycombinator</a>)</p></li>
<li><p><a href="http://felipec.wordpress.com/2012/05/26/no-mercurial-branches-are-still-not-better-than-git-ones-response-to-jhws-more-on-mercurial-vs-git-with-graphs/">Статья</a> с хорошим иллюстрированным сравнением поведения веток в Mercurial и Git. Является хорошим развёрнутым ответом на другую статью (ссылки есть в начале), где утверждается что ветки в hg реализованы лучше, нежели в git. (via <a href="https://twitter.com/mtreskin">@mtreskin</a>)</p></li>
<li><p><a href="https://github.com/eaigner/CODialog">CODialog</a> — более функциональная замена стандартному UIAlertView. Выглядит (по утверждению автора) практически идентично, но умеет гораздо больше. (via <a href="https://twitter.com/CocoaPodsOrg">@CocoaPodsOrg</a>)</p></li>
<li><p><a href="http://blog.hirelite.com/what-developers-think-when-you-say-rock-star">What developers think when you say “Rock Star”</a> — аргументированный наезд на HR-ов, любящих громкие формулировки в заголовках вакансий. Внутри очень хорошо всё объясняющие чарты. (via <a href="https://twitter.com/d1ffuz0r">@d1ffuz0r</a>)</p></li>
<li><p><a href="http://www.becomekodiak.com/">Kodiak</a> — пехапе-IDE для iPad, полезная тем, что её авторы выложили на гитхаб аж четыре полезных компонента: <a href="https://github.com/adamhoracek/KOKeyboard">расширение для клавиатуры</a>, <a href="https://github.com/adamhoracek/KOTabs">симпатичные табы</a>, <a href="https://github.com/adamhoracek/KOTree">древовидный список</a> и <a href="https://github.com/adamhoracek/KOFiles">табличку для браузера файлов</a> (via <a href="https://twitter.com/CocoaPodsOrg">@CocoaPodsOrg</a>)</p></li>
<li><p>Небольшой <a href="http://www.ownedcore.com/forums/world-of-warcraft/world-of-warcraft-general/375573-looking-inside-your-screenshots.html">скандал</a>, связанный с Blizzard, которая, как оказалось, добавляет к скриншотам в World of Warcraft невидимые глазу вотермарки (судя по всему, использует для этого младшие биты пикселей). (via <a href="https://twitter.com/newsycombinator">@newsycombinator</a>)</p></li>
<li><p><a href="https://github.com/kgn/KGNoise">KGNoise</a> — небольшая библиотека для добавления шума к контролам в iOS- и OSX-приложениях. (via <a href="https://twitter.com/TheChangelog">@TheChangelog</a>)</p></li>
<li><p><a href="http://xiki.org/">Xiki</a> — занятный комбайн из шелла и википодобного энвайронмента. (via <a href="https://twitter.com/stilkov">@stilkov</a>)</p></li>
<li><p><a href="https://github.com/bmatzelle/gow">Gow</a> — для тех несчатных, кому всё ещё приходится работать под Windows, лёгкая (18 MbB) замена Cygwin. (via <a href="https://twitter.com/middlesizetit">@middlesizetit</a>)</p></li>
<li><p><a href="http://losttype.com/browse/">Lost Type</a> — симпатичная коллекция шрифтов, распространяемая по принципу “дайте сколько не жалко”. (via <a href="https://twitter.com/jboner">@jboner</a>)</p></li>
<li><p><a href="http://www.netmagazine.com/features/top-20-data-visualisation-tools">Подборка</a> 20-ти инструментов для визуализации данных, начиная экселем и заканчивая языком R. Мне, после беглого просмотра списка, приглянулись <a href="Crossfilter">http://square.github.com/crossfilter/</a> и <a href="CartoDB">http://cartodb.com/</a>. (via <a href="https://twitter.com/remeniuk">@remeniuk</a>)</p></li>
<li><p><a href="https://github.com/jmikola/mongoqp">mongoqp</a> — симпатичный веб-фронтенд к профайлеру MongoDB. Много чего умеет (via <a href="https://twitter.com/jmikola">@jmikola</a>)</p></li>
<li><p><a href="https://github.com/TylerBrock/mongo-hacker">mongo-hacker</a> — улучшенный шелл для MongoDB, найденный в описании к предыдущему проекту. Добавляет цветной вывод, форматирование в виде таблицы и несколько прочих полезных вещей. Можно использовать в качестве основы для своего <code>~/.mongorc.js</code>.</p></li>
<li><p><a href="https://github.com/bobthecow/genghis">Genghis</a> — маленькая и совсем простая смотрелка MongoDB-баз. Устанавливается локально как рубигем, работает в браузере. Найдено там же.</p></li>
<li><p><a href="http://www.linusakesson.net/programming/tty/">The TTY demystified</a> — большая и хорошая статья про юниксовый терминал aka TTY. (via <a href="https://twitter.com/stevelosh">@stevelosh</a>)</p></li>
<li><p>Подробное <a href="http://security.stackexchange.com/questions/20803/how-does-ssl-work/20833">описание работы SSL</a> на StackExchange. (via <a href="https://twitter.com/middlesizetit">@middlesizetit</a>)</p></li>
<li><p><a href="http://prog21.dadgum.com/116.html">Список вещей</a>, которые больше дистрибутива турбопаскаля (39731 байт). Или, если дословно, “Вещи, которых турбопаскаль меньше”. Например, картинка с айфоном на сайте apple (190157), или минифицированная версия jquery (90518). (via <a href="https://twitter.com/rickasaurus">@rickasaurus</a>)</p></li>
</ul>
]]></content>
</entry>
<entry>
<title type="html"><![CDATA[Линкопост номер 10 (июль-август)]]></title>
<link href="http://digal.github.com/blog/2012/11/09/links-10/"/>
<updated>2012-11-09T23:07:00+04:00</updated>
<id>http://digal.github.com/blog/2012/11/09/links-10</id>
<content type="html"><![CDATA[<p>В Питер пришла сначала осень, а теперь уже и почти зима, <a href="http://www.e-legion.ru/portfolio/mobile/Raiffeisen/">проект года</a> на работе вышел в нервную и полную граблей фазу релиза, и у меня закончились все силы, требуемые для нормальной гиковской активности, читай: писать в бложек, вести сайд-проекты, организовывать эвенты, выступать на эвентах, да даже просто ездить на них. Так, к моему великому сожалению, я не поехал в этом году на YAC, который, по всем отзывам, получился просто отличным.</p>
<p>Впрочем, привычка отправлять в фейворитс интересные ссылки никуда не делась, так что материал для поста как обычно есть. Более того, ссылок накопилось очень много, так что в этом посте пока только то, что попало мне в тви за лето (конец июля-август). Ссылки не самой первой, естественно, свежести, но, надеюсь, каждый найдёт для себя что-то интересное.</p>
<!--more-->
<ul>
<li><p><a href="http://blog.alainmeier.com/post/27255145114/some-things-beginners-might-not-know-about-sublime-text">Очередная подборка</a> всяких штук, которые можно делать в Sublime Text 2. Правда, если вы, так же как и я, привязаны к дурацкой монструозной IDE, а ST используете максимум в качестве вспомогательного “блокнота”, запомнить и довести до автоматизма все эти вещи будет не очень просто (и не очень нужно).</p></li>
<li><p>Аналогичная <a href="http://blog.joocode.com/browsers/12-things-about-the-webkit-inspector-i-didnt-know/">подборка</a> для WebKit inspector. А по ссылке в начале статьи — более подробное <a href="http://jtaby.com/2012/04/23/modern-web-development-part-1.html">руководство</a> по оному.</p></li>
<li><p>Если вдруг кто-то интересуется альтернативными раскладками клавиатуры, то вот вам <a href="http://patorjk.com/keyboard-layout-analyzer/">анализатор</a> текста на предмет того, какую раскладку для его набора лучше использовать. Множество цифр, графиков и хитмэпов прилагается.</p></li>
<li><p>Хорошая статья (внезапно, по-русски и не на хабре) про найм программистов: <a href="http://softwaremaniacs.org/blog/2012/07/19/hiring-wrong/">“Найм программистов: вы всё делаете не так.”</a></p></li>
<li><p><a href="http://www.dadhacker.com/blog/?p=987">Donkey Kong and Me</a> — интересно о работе в геймдеве (конкретнее, в Atari) в ранние 80-е.</p></li>
<li><p>Ещё из ретро-геймдева: увлекательнейшее чтиво про историю создания Warcraft из первых рук. <a href="http://www.codeofhonor.com/blog/the-making-of-warcraft-part-1">Часть 1</a>, <a href="http://www.codeofhonor.com/blog/the-making-of-warcraft-part-2">часть 2</a>.</p></li>
<li><p><a href="http://rigaux.org/language-study/syntax-across-languages.html">Большое сравнение</a> того, как элементы синтаксиса выглядят в разных языках. По утверждению автора, может пригодиться как создателям новых языков, так и просто обычным разработчикам.</p></li>
<li><p><a href="http://boundary.com/blog/2012/05/02/know-a-delay-nagles-algorithm-and-you/">Немного</a> о тюнинге TCP и параметре NODELAY.</p></li>
<li><p>Интересная <a href="http://www.pcgamesn.com/article/steam-hardware-survey-suggests-average-gaming-pc-getting-slightly-slower">статистика</a> по геймерским машинам от Steam: они, как ни странно, в среднем становятся менее мощными.</p></li>
<li><p><a href="http://blog.mongodb.org/post/28053108398/edda-a-log-visualizer-for-mongodb">Edda</a>: тул для визуализации схемы серверов MongoDB из логов. Результат выглядит довольно симпатично.</p></li>
<li><p><a href="http://cpudb.stanford.edu/">Большая база данных по CPU</a> от Стэнфорда.</p></li>
<li><p><a href="http://iobound.com/pareidoloop/">Генератор</a> случайных лиц на JavaScript (face-detection + генетические алгоритмы). Занятно, но результат выглядит довольно странно.</p></li>
<li><p>Яндекс наконец-то (ещё в конце июля, вот что значит долго в блог не писать) выкатил в опецсорц свой <a href="https://github.com/yandex-load/yandex-tank">Танк</a>, многократно рекламировавшийся на конференциях инструмент для нагрузочного тестирования. Если кто-то пробовал, то интересно услышать отзыв.</p></li>
<li><p><a href="https://github.com/blog/530-how-we-made-github-fast">Как мы сделали Github Быстрым</a>: заметка в блоге Гитхаба о том, какие технологии и архитектурные решания были выбраны при строительстве оного, и почему.</p></li>
<li><p><a href="http://www.missionintegers.com/">Сервис</a>, выдающий целые числа ручной работы и высшей пробы. Есть API, усё как надо.</p></li>
<li><p><a href="http://gridster.net/">gridster.js</a> - библиотека для создания сеток из блоков с поддержкой драг-н-дропа. По-русски формулируется довольно запутанно, но по демо на главной странице всё должно стать ясно. Может пригодиться при создании настраиваемых пользователем интерфейсов.</p></li>
<li><p>Netflix <a href="http://techblog.netflix.com/2012/07/chaos-monkey-released-into-wild.html">открывает</a> код Chaos Monkey (точнее, целой <a href="http://techblog.netflix.com/2011/07/netflix-simian-army.html">армии “обезьян”</a> ) — набора инструментов для внесения рандомных неполадок в работающие сервисы с целью непрерывно тестировать их устойчивость к отказам. Вообще, очень крутая идея, правда.</p></li>
<li><p><a href="http://cortesi.github.com/pathod/">pathod</a> — демон для тестирования и всяческих издевательств над HTTP-клиентами. Может выдавать разные ответы, имитируя разное некорректное поведение сервера типа внезапного дисконнекта или подвисания.</p></li>
<li><p><a href="http://www.troyhunt.com/2012/07/lessons-in-website-security-anti.html">Подборка</a> антипаттернов в области безопасности в вебе.</p></li>
<li><p><a href="http://devmag.org.za/2012/07/29/how-to-choose-colours-procedurally-algorithms/">Статья</a> про программный подбор сочетаний цветов. Даны теоретические основы и несколько алгоритмов на разные случаи жизни.</p></li>
<li><p><a href="http://blog.echen.me/2012/07/31/edge-prediction-in-a-social-graph-my-solution-to-facebooks-user-recommendation-contest-on-kaggle/">Edge Prediction in a Social Graph</a> — подробное (с графами, картинками и кодом на scala) описание link prediction алгоритма (то что в соцсеточках называется “Who to follow” и “Similar to”). Интересно также взглянуть на приведённый в конце инструментарий: Scala, Python, Ruby, R, CoffeeScript+d3 — хороший аргумент в пользу polyglot programming. Прочитав статью, решил как следует углубиться в анализ данных (уже <a href="https://class.coursera.org/compdata-2012-001/">начал</a>) и macine learning (только планирую).</p></li>
<li><p><a href="https://github.com/redroot/holmes">Holmes</a>: просто валидатор HTML. Интересен тем, что реализован в виде обычного CSS-файла, который при подключении подсвечивает ошибки HTML-разметки (недостающие атрибуты, etc).</p></li>
<li><p><a href="http://www.noexcuselist.com/">No Excuse List</a>: просто подборка самых популярных ресурсов для самообучения самым разным вещам. Назван так понятно почему. Когда я такое вижу, мне начинает хотеться, чтобы в сутках было 48 часов (ну или хотя бы можно было обходиться без сна).</p></li>
<li><p>Маленькая полуюмористическая <a href="http://www.anekdot.ru/id/585131/">подборка</a> фейлов при разработке военного ПО. На anekdot.ru, да.</p></li>
<li><p><a href="http://mattgemmell.com/2012/08/05/managing-email-realistically/">Руководство</a> по управлению электронной почтой для ленивых и не склонных к GTD-сектантству людей. Впрочем, даже это для меня слишком сложно :(</p></li>
<li><p><a href="http://tos-dr.info/">Попытка</a> кратко описать и классифицировать TOS (условия использования) популярных сервисов. Помогает понять, что и как сервис может делать с вашими данными, не читая -дцать страниц текста.</p></li>
<li><p><a href="http://www.over-yonder.net/~fullermd/rants/bsd4linux/01">Большая</a> даже не статья, а почти книжка о коренных различиях Linux и BSD. Несмотря на то, что написано активным пользователем последней, сделано это взвешенно, глубоко, и читается с большим удовольствием.</p></li>
<li><p>5-минутный (на самом деле, больше) <a href="http://denniskubes.com/2012/08/16/the-5-minute-guide-to-c-pointers/">гайд</a> по сишным поинтерам. Может пригодиться некоторым Obj-C программистам, не учившим C.</p></li>
<li><p>Pure Java <a href="https://github.com/miniway/jeromq">реализация</a> библиотеки <a href="http://www.zeromq.org/">ØMQ</a>. Некоторые наверняка будут плеваться, но джавистам, которым приходится использовать враппер вокруг нативной либы (о боже, они нужны разные для разных платформ) должно понравиться.</p></li>
<li><p><a href="http://newartisans.com/2012/08/monads-in-pictures/">Монады в картинках</a>, ну то есть совсем-совсем на пальцах, даже я понял.</p></li>
<li><p><a href="http://programmers.blogoverflow.com/2012/08/20-controversial-programming-opinions/">20 противоречивых мнений</a> о программировании. По сути, набор выводов, к которым легко приходит почти любой разработчик после 5-10 лет разработки реальных продуктов с ограниченным бюджетом и сроками.</p></li>
<li><p><a href="http://stephane.godbillon.com/2012/08/30/reactivemongo-for-scala-unleashing-mongodb-streaming-capabilities-for-realtime-web">ReactiveMongo</a> — то, чего очень хотелось года два назад, когда мы писали Goozy: неблокирующая scala-библиотека для работы с монгой.</p></li>
</ul>
<h2>iOS</h2>
<ul>
<li><p><a href="https://github.com/fjolnir/tranquil">Tranquil</a> очередной странный язык поверх LLVM и ObjC Runtime.</p></li>
<li><p><a href="https://github.com/AFNetworking/AFIncrementalStore">AFIncrementalStore</a> — вроде бы как замена RestKit и инструмент для привязки доменных моделей к REST (и не очень) -сервисам поверх <a href="https://github.com/afnetworking/afnetworking">AFNetworking</a> и CoreData. Надо будет попробовать. OSX 10.6+, iOS 5.0+</p></li>
<li><p>Комплементарное дополнение для сервер-сайда: <a href="https://github.com/mattt/rack-core-data">Rack::CoreData</a> для герерации REST API из моделей Core Data. С архитектурной точки зрения, клиент в виде белого ящика и вообще, разработка API исходя из клиентской модели данных — это явный такой антипаттерн, но очень интересно всё-таки узнать, насколько оно применимо в реальности.</p></li>
<li><p>Очередной <a href="http://www.raywenderlich.com/14793/how-to-make-a-game-like-cut-the-rope-part-1">туториал</a> по игровому движку Cocos2D (на самом деле, ещё и по физическому Box2D), на примере игры типа Cut the Rope.</p></li>
<li><p>Просто большая (примерно 700 шт) <a href="http://www.cocoacontrols.com/">библиотека</a> Cocoa- и CocoaTouch-контролов.</p></li>
<li><p><a href="https://github.com/sebastienwindal/FRD3DBarChart">FRD3DBarChart</a> — iOS-библиотека для построения красивых трёхмерных OpenGL-чартов. <a href="http://windal.net/blog/?p=153">В блоге автора</a> - документация, демо и больше примеров.</p></li>
<li><p><a href="http://0xc0.de/LibComponentLogging">LibComponentLogging</a> — попытка унифицировать зоопарк логгинг-фреймворков в Cocoa. Судя по всему, собирается стать местным аналогом log4j.</p></li>
</ul>
<p>Это пока, наверное, всё. Если останутся силы, в ближайшее время попробую выкатить пост (или посты) с осенними ссылками. До встречи.</p>
]]></content>
</entry>
<entry>
<title type="html"><![CDATA[Книги: Александр Прохоров, «Русская модель управления»]]></title>
<link href="http://digal.github.com/blog/2012/09/09/russian-management/"/>
<updated>2012-09-09T21:28:00+04:00</updated>
<id>http://digal.github.com/blog/2012/09/09/russian-management</id>
<content type="html"><![CDATA[<p>Я читаю не очень много книг, а подавляющую часть из тех, что читаю — читаю летом. В остальное время книги проигрывают моё время семье, работе, и более технологичным развлечениям, а лето, с его частыми поездками на дачу (куда я езжу на электричках) каждый день даёт час-полтора времени на вдумчивое чтение. Этот читальный сезон я закончил книгой «Русская модель управления», о чём немедленно и необдуманно написал в твиттер, спросив, не начать ли, мол, мне писать в бложек небольшие рецензии на прочитанное. Результатом неожиданно большого количества положительных ответов и является этот пост.</p>
<!--more-->
<p>Я вообще с опасением отношусь ко всем утверждениям в роде “У России особый путь, никакие заимствованные практики здесь не работают” ну и так далее. Эта книга не стала исключением, и поскольку автор с самого начала (практически с названия) задаёт подобный тон, то читал я её, заранее запасшись изрядной долей скепсиса. Не могу сказать что по мере прочтения этот мой космополитичный настрой рассеялся, но и не согласиться с книгой по многим пунктам мне трудно.</p>
<p>Книга замечательна своей фактурой: читать о средневековых церковных разборках, реформах Петра, эвакуации промышленности в годы войны и становлении российского бизнеса в 90-е — безумно интересно. Интерпретация происходящего также свежа и местами остроумна. Мне, в частности, очень понравилось определение бюрократии как защитного механизма, выработанного населением против излишне надоедливой власти, а не наоборот.</p>
<p>Недостаток этой книги является, пожалуй, обратной стороной её достоинств. Выбор десятка ключевых событий из более чем тысячелетней истории России, и попытка построить на этом ограниченном наборе сколько-нибудь серьёзную теорию, описывающую происходящее, не кажется мне сколько-либо научным. Вполне возможно, впрочем, что это недостаток (с точки зрения человека с техническим бэкграундом) всех гуманитарных дисциплин. Здесь было бы интересно сравнить эту книгу с другой — «Ружья, микробы и сталь» Джареда Даймонда, прочитанной мной ранее. Однако это уже, наверное, дело отдельного поста.</p>
<p>В общем, несмотря на всё, очень рекомендую эту книгу тем, кому интересна история и поиск её закономерностей. Не пожалеете.</p>
]]></content>
</entry>
<entry>
<title type="html"><![CDATA[Линкопост номер 9]]></title>
<link href="http://digal.github.com/blog/2012/07/13/links-9/"/>
<updated>2012-07-13T00:13:00+04:00</updated>
<id>http://digal.github.com/blog/2012/07/13/links-9</id>
<content type="html"><![CDATA[<p>Привет всем.</p>
<p>Каюсь, опять надолго пропал: berserk mode (в хорошем смысле) по поводу старта нового интересного проекта съел целиком всё свободное время и начал отпускать только недели через три. Поэтому ссылок опять много, рассовывать их по разделам лень, разве что подборка iOS-related вещей удостоилась отдельной секции в подвале. Ну, погнали:</p>
<!--more-->
<ul>
<li><p><a href="https://www.gittip.com/">Gittip</a> — сайт для сбора регулярных “чаевых” разработчикам открытого софта. Идея хорошая, но цифры пока не впечатляют.</p></li>
<li><p>Хороший <a href="http://www.erlang.se/doc/programming_rules.shtml">сборник</a> правил и соглашений по написанию кода. Написано для Erlang, но применимо практически везде.</p></li>
<li><p><a href="http://infiniteundo.com/post/25326999628/falsehoods-programmers-believe-about-time">Список</a> заблуждений, касающихся свойств времени. Отдельным постом — <a href="http://infiniteundo.com/post/things-you-should-test">продолжение</a> из комментариев к первому. Особенно актуально в свете последних <a href="http://serverfault.com/questions/403732/anyone-else-experiencing-high-rates-of-linux-server-crashes-during-a-leap-second">проблем</a> с високосной секундой в некоторых ОС (нет, как ни странно, это не Windows).</p></li>
<li><p>Компенсирует ли написание юнит-тестов в динамических языках отсутствие нормальной системы типов? Ответ на этот вопрос оказался <a href="http://evanfarrer.blogspot.ca/2012/06/unit-testing-isnt-enough-you-need.html">немного предсказуем</a>.</p></li>
<li><p>Ставшие стандартными коммандлайновые аргументы юниксовых программ в виде <a href="http://www.johndcook.com/blog/2011/05/12/command-option-patterns/">краткого списка</a>. <a href="http://www.catb.org/~esr/writings/taoup/html/ch10s05.html#id2948149">Взято</a> из книжки Эрика Рэймонда <a href="http://www.catb.org/~esr/writings/taoup/html/index.html">“The Art of Unix Programming”</a>.</p></li>
<li><p><a href="http://www.geertvanderploeg.com/unicode-gen/">Генератор</a> юникодного текста. Because lorem ipsum is too ASCII. ٩(͡๏̯͡๏)۶</p></li>
<li><p><a href="http://warpech.github.com/jquery-handsontable/index.html">Handsontable</a> — Очередной WYSIWYG редактор на JS, на этот раз - для экселеподобных табличек</p></li>
<li><p><a href="http://www.reddit.com/r/AskReddit/comments/vomtn/update_my_friends_call_me_a_scumbag_because_i/">Замечательная история</a> со счастливым концом c Реддита.</p></li>
<li><p>Большой красивый <a href="http://www.evolutionoftheweb.com/">таймлайн</a> про эволюцию веба и браузеров.</p></li>
<li><p><a href="http://www.infoq.com/articles/java-8-vs-scala">Сравнение</a> фич Scala и Java 8. Про главную фичу Scala — она уже давно вышла, в отличие от Java 8 — почему-то умалчивается. Ну и правильная фраза из комментов: “Remeber even if its java 8, it still just java. Don’t expect too much.”</p></li>
<li><p><a href="https://github.com/liuliu/ccv">CCV</a> — современная и практичная (по заявлению авторов) сишная библиотека для всяческого распознавания образов. Примеры работы <a href="http://libccv.org/post/introducing-ccv-milestone/">выглядят</a> многообещающе.</p></li>
<li><p>Очередное <a href="http://marklodato.github.com/visual-git-guide/index-en.html">иллюстрированное руководство</a> по Git. Должно пригодиться, например, тем, чья контора до сих пор сидит на SVN и кто хочет донести до коллег основные принципы работы с Git.</p></li>
<li><p>Вот <a href="http://www.theverge.com/2012/7/9/3148368/whats-the-most-ancient-thing-you-can-tweet-from">тут</a> люди соревнуются, кто напишет твит с более старого девайса, типа старого Макинтоша, или <a href="http://tomsolari.id.au/post/26884513380/tweeting-from-a-cisco-7940">IP-телефона</a>.</p></li>
<li><p><a href="http://whenilearnedtocode.tumblr.com/">When I learned to code</a> — ещё один тумблр с гифками, на этот раз на тему программирования.</p></li>
<li><p><a href="http://getbarkeep.org/">Barkeep</a> — Дружелюбная система для кодревью. Выглядит, вроде, симпатично, попробую поюзать на каком-нибудь проекте. Есть <a href="http://demo.getbarkeep.org/commits">live demo</a>.</p></li>
<li><p>Совсем не в тему блога, но вот вам зачем-то <a href="http://twitpic.com/a0izm9/full">советская военная карта Сан-Франциско</a>.</p></li>
<li><p><a href="http://ansible.github.com/">Ansible</a> — очередной config management/deploy tool, полагающийся только на SSH и не требующий никаких демонов на клиентской машине. Если надо будет вернуться к сервер-сайду — обязательно попробую.</p></li>
<li><p><a href="http://www.risc.jku.at/people/ckoutsch/stuff/e_algorithms.html">Top-32</a> самых важных алгоритмов. Ну-ка, сколько из них вы напишете, не подглядывая в гугл?</p></li>
<li><p><a href="http://www.tldrlegal.com/">tl;drLegal</a> — Хороший справочник по софтверным лицензиям, кратко объясняющий что можно и чего нельзя делать с сорцами под GPL или MIT. Также есть обратный поиск, т.е. “какие лицензии разрешают коммерческое использование?”</p></li>
<li><p>Если вы до сих пор не освоили Scala, то сейчас самое время это сделать с помощью <a href="http://scalatron.github.com/">Scalatron</a>: игры с программируемыми на Scala ботами. Подробный туториал прилагается.</p></li>
<li><p><a href="http://www.kineticjs.com/">KineticJS</a> — JS-библиотека с кучей полезностей для работы с анимацией, canvas, и евентами. Есть довольно много наглядных примеров работы.</p></li>
<li><p>Если вам нравится <a href="http://twitter.github.com/bootstrap/">Bootstrap</a>, но уже навязла на зубах стандартная серо-голубая тема, то <a href="https://wrapbootstrap.com/">вот здесь</a> можно за небольшую денежку купить кастомную себе по душе. А если навыки и вкус позволяют — сделать и выставить на продажу свою собственную.</p></li>
<li><p><a href="http://blog.jgc.org/2012/07/some-things-ive-learnt-about.html">Some things I’ve learnt about programming</a> — блогпост, чьё название говорит само за себя: просто небольшой набор мыслей по поводу разработки ПО. Почти со всем соглашусь.</p></li>
<li><p>Довольно старая <a href="http://www.mahdiyusuf.com/post/9947002105/most-pressed-keys-and-programming-syntaxes-2">штука</a>, но недавно наткнулся на неё снова: heatmap’ы, показывающие частоту использования тех или иных клавиш при работе с разными языками прораммирования.</p></li>
<li><p>Тред <a href="http://stackoverflow.com/questions/11227809/why-is-processing-a-sorted-array-faster-than-an-unsorted-array">“почему сортированный массив обрабатывается быстрее чем несортированный”</a> на StackOveflow. Очень хороший пример и объяснение сути branch prediction.</p></li>
<li><p><a href="http://www.indooratlas.com/">Стартап</a>, создатели которого утверждают, что всё-таки решили проблему навигации внутри зданий при помощи замеров изменений магнитного поля. Интересная идея, лежавшая на поверхности. Посмотрим, что получится.</p></li>
<li><p><a href="http://prose.io/">prose.io</a> — редактор контента для Гитхаба, в смысле для тех, кто пишет много текста в маркдауне и хранит его в гитхабовских репозиториях (как, например, я). Немного попробовал пописать в нём этот выпуск и могу сказать что для octopress подходит почти идеально, но по удобству редактирования текста, всё-таки, не сравнится с Sublime. Впрочем, обязательно попробуйте, если вам актуально.</p></li>
</ul>
<h2>iOS</h2>
<ul>
<li><p><a href="https://github.com/vl4dimir/ObjectiveMixin">ObjectiveMixin</a> — реализация миксинов для Obj-C. Мне, кстати, после скаловских traits, миксинов в ObjC действительно очень сильно не хватает. Другое дело, хотелось бы иметь их на уровне языка а не в виде такой вот библиотеки.</p></li>
<li><p><a href="https://github.com/samvermette/SVHTTPRequest">SVHTTPRequest</a> — простая библиотека для работы с REST, должна быть адекватной легковесной заменой <a href="http://restkit.org/">RestKit</a> в простых кейсах. Например, когда нужно сделать один-два запроса к серверу и вытащить несколько полей из полученного JSON.</p></li>
<li><p><a href="https://github.com/mobiata/MBRequest">MBRequest</a> — ешё один блочный враппер вокруг NSURLConnection. Вдруг тоже кому пригодится.</p></li>
<li><p><a href="https://github.com/mugginsoft/Fragaria">Fragaria</a> — аналог NSTextView с поддержкой подсветки синтаксиса. Пригодится разве что тем, кто пишет какую-нибудь IDE для айпада, но вдруг тут есть такие.</p></li>
<li><p><a href="http://eerolanguage.org/">eero</a> - Диалект Objective-C с большим закосом в сторону питона: структурирование отступами, необязательные точки с запятыми, и всё такое прочее. Интересно посмотреть что получится, хотя мне больше по душе было бы введение дженериков и прочих радостей статической типизации.</p></li>
<li><p><a href="https://github.com/mattt/cupertino">cupertino</a> — коммандлайновый тул для работы с Apple Developer Portal и iTunes Connect. Возможностей пока немного: работа с девайсами, сертификатами, профилями и app id’s. И то, даже это ещё не сделано до конца. Впрочем, я очень сильно надеюсь, что в конце концов эта утилита достигнет такого уровня, который позволит автоматизировать и встроить в наш процесс выкладку в апстор.</p></li>
</ul>
<p>На этом всем пока и до следующего поста.</p>
]]></content>
</entry>
<entry>
<title type="html"><![CDATA[Линкопост номер 8]]></title>
<link href="http://digal.github.com/blog/2012/06/15/links-8/"/>
<updated>2012-06-15T00:27:00+04:00</updated>
<id>http://digal.github.com/blog/2012/06/15/links-8</id>
<content type="html"><![CDATA[<p>Какой-то совсем уже задержавшийся и вымученный выпуск, написаный телеграфным стилем. Даже лень по категориям раскладывать. Но, несмотря на обилие баянов недельной давности, должен порадовть кого-нибудь парой-другой интересных ссылок.</p>
<!--more-->
<ul>
<li><p>Занятная тулза <a href="https://github.com/jkbr/httpie">httpie</a> по наводке от Умпутуна. Просто очень удобный и приятный враппер вокруг curl.</p></li>
<li><p><a href="http://crna.cc/magenta.html">Project Magenta</a> — попытка создать <em>бинарно совместимую</em> с iOS ось на базе Linux. Ну… эээ… удачи, что ли.</p></li>
<li><p>Все федеральные агенства США должны обзавестись API, так <a href="http://blog.apievangelist.com/2012/06/01/barak-obama-directs-all-federal-agencies-to-have-an-api/">утверждает</a> Обама. Очень крутая инициатива.</p></li>
<li><p>Google взял MIT’овский <a href="http://scratch.mit.edu/">Scratch</a>, да и перенёс его в веб под названием <a href="http://blockly-demo.appspot.com/blockly/demos/maze/index.html">“Blockly”</a>. Есть экспорт в JS, Dart и Python.</p></li>
<li><p>Маленькое <a href="https://sites.google.com/site/0x7674/home/sqlite3injectioncheatsheet">руководство</a> по взлому SQLite3. Правда, по утвержению автора, в мобильных девайсах бОльшая часть инъекций не работает, а жаль.</p></li>
<li><p><a href="http://heydave.org/post/24286720323/gtd-sucks-for-creative-work-heres-an-alternative">Альтернатива</a> GTD для всякого рода творческих людей, которым GTD не очень подходит. Осталось только понять, сколько в вашей работе творчества.</p></li>
<li><p>Хотел дать линк на <a href="http://rdegges.com/heroku-isnt-for-idiots">статью</a> о том, чем же так хорош Heroku (являющуюся ответом на другую <a href="http://justcramer.com/2012/06/02/the-cloud-is-not-for-you/">статью</a> о вреде облаков). Однако нашёл внутри гораздо более полезную ссылку на <a href="http://www.12factor.net/">“12-factor”-методологию</a> построения веб- (или, моднее, SaaS-) приложений. Я не очень люблю всякие “методологии” из-за лёгкого духа сектантства, которое присутствует во всех методологиях по определению, но этот конкретный сайт является просто хорошей подборкой современных best practices с понятными объяснениями. В общем, почитайте.</p></li>
<li><p>Если кто-то серьёзно использует <a href="http://trello.com/">trello</a> в качестве инструмента для управления проектами, то вот тут есть <a href="http://bluelinegamestudios.com/blog/posts/free-app-trello-burndown/">burndown chart</a> для него.</p></li>
<li><p>Маленькое и полезное приложение для OSX - <a href="http://itunes.apple.com/app/cheatsheet/id529456740">CheatSheet</a>. Показывает список хоткеев текущего приложения при длинном нажатии meta-key. Поставил себе.</p></li>
<li><p>Для общего развития: <a href="http://www.javacodegeeks.com/2011/04/erlang-vs-java-memory-architecture.html">сравнение</a> устройства памяти в JVM и Erlang.</p></li>
<li><p><a href="http://programmers.stackexchange.com/questions/145669/what-software-programming-languages-were-used-by-the-soviet-unions-space-progra">Тред</a> на StackOverflow, посвящённый языкам программирования советской космической программы. Много ссылок на русскоязычные источники. В общем, кусочек истории, стоит почитать. Чего стоит только графический “ДРАКОН” (“Дружелюбный Русский Алгоритмический язык, Который Обеспечивает Наглядность”).</p></li>
<li><p><a href="http://www.mathics.org/">Mathics</a> — опенсорсный математический пакет, совместимый с Mathematica синтаксически. C веб-гуем и питоном. Должно пригодиться тем, кому приходится много работать со всякой там алгеброй, например школьникам и студентам.</p></li>
<li><p>В рамках пятиминутки бреда: <a href="http://ria.ru/technology/20120606/666744795.html">много паники</a> от Евгения Касперского.</p></li>
</ul>
<blockquote><p>В ответ на просьбу обрисовать возможную картину последствий глобальной кибератаки Касперский предложил вспомнить фильм “Крепкий орешек-4”, который он, по собственному признанию, смотрел со стаканом виски и сигаретой и постоянно кричал: “Зачем вы им подсказываете?”.</p></blockquote>
<ul>
<li><p><a href="http://www.yacoset.com/Home/signs-that-you-re-a-good-programmer">Признаки хорошего программиста</a>. Много признаков с примерами и описаниями. Есть спорные вещи, но всё равно, интересно читать и примерять на себя.</p></li>
<li><p>Небольшая <a href="http://opensoul.org/blog/archives/2012/06/05/whats-it-like-to-work-at-github/">заметка</a> о том, как работается в компании GitHub. Вообще, такая “анархическая” организация работы, похоже, становится уже мейнстримом. Правда применимо это только к небольшим продуктовым компаниям. В аутсорсинговых конторах, рубящих много денег на энтерпрайз-решениях, или клепающих сайтики на заказ по десять штук в день, такой подход навряд ли прокатит.</p></li>
<li><p>Ещё на тему менеджмента в GitHub, но в несколько другом, более практическом разрезе: <a href="http://tomayko.com/writings/management-style">“Show How, Don’t Tell What”</a> — мне кажется довольно удачным способом управления для тех, кто не умеет (или не любит) управлять в классическом стиле (ну, то есть, “пойди туда, сделай это, в конце дня жду отчёт на пяти листах”). “That’s just how you ship software product in 2012.” Очень круто.</p></li>
<li><p><a href="http://www.theatlantic.com/technology/archive/2012/05/the-mechanics-and-meaning-of-that-ol-dial-up-modem-sound/257816/">Ссылка для олдфагов</a>: разбор устройства того самого звука коннекта модема. Сам звук прилагается. Ещё больше старых звуков можно найти в <a href="http://savethesounds.info/">Музее Вымирающих Звуков</a>.</p></li>
<li><p>Большая <a href="http://addyosmani.com/resources/essentialjsdesignpatterns/book/">онлайн-книжка</a> про паттерны проектирования в JS.</p></li>
<li><p>Более 99% пойманных в Торонто <a href="http://www.huffingtonpost.com/ellen-ladowsky/pedophilia-and-star-trek_b_5857.html">педофилов</a> оказались фанатами Star Trek. Очень интересная корреляция, прямо скажем.</p></li>
<li><p>Немецкие учёные <a href="http://www.cs.washington.edu/education/courses/cse590n/10au/hanenberg-oopsla2010.pdf">утверждают</a>, что выбор системы типов (статическая или динамическая) никак не влияет на время разработки. Что интересно, эти результаты можно использовать в обычном static-vs-dynamic споре в качестве аргумента как с одной, так и с другой стороны.</p></li>
<li><p><a href="http://fabiensanglard.net/doom3/index.php">Ревью</a> исходников Doom 3. Очень интересное техническое чтиво на ночь.</p></li>
<li><p>Сводная <a href="http://www.ec2instances.info/">таблица</a> с характеристиками и ценой инстансов на EC2. Вообще удивительно, почему на самом сайте AWS это до сих пор находится на отдельных страницах и абсолютно неюзабельно.</p></li>
<li><p><a href="http://whiletruecode.com/post/7-handy-text-manipulation-tricks-sublime-text-2">Сборник</a> полезных приёмов при редактировании текста в Sublime Text 2. Я практически ни одного не знал.</p></li>
<li><p><a href="http://blog.sanctum.geek.nz/series/unix-as-ide/">Unix как IDE</a> — большое руководству по полезным для разработчика инструментам Unix. Тоже хорошее душеспасительное чтиво на ночь, а также хороший аргумент в пользу использования юниксоидных систем на работе.</p></li>
<li><p>Полезная для ПМов <a href="http://coding.abel.nu/2012/06/programmer-time-translation-table/">таблица</a>, помогающая понять, сколько в действительности времени разработчик потратит на задачу и почему.</p></li>
<li><p>Хорошая <a href="http://alexthunder.livejournal.com/290612.html">метафора</a> работы программиста. Должна очень хорошо помочь объяснить окружающим не-программистам, почему вас не стоит отвлекать во время работы.</p></li>
</ul>
<p>Пока всё. Честно признаюсь, что не уверен в скором выходе следующего линкопоста, но поживём-увидим.</p>
<p>Пока.</p>
]]></content>
</entry>
<entry>
<title type="html"><![CDATA[Cocoapods: управление зависимостями в iOS-проектах]]></title>
<link href="http://digal.github.com/blog/2012/06/06/cocoapods/"/>
<updated>2012-06-06T21:52:00+04:00</updated>
<id>http://digal.github.com/blog/2012/06/06/cocoapods</id>
<content type="html"><![CDATA[<p>Собрался завтра рассказать коллегам про управление зависимостями в iOS-проектах и решил, что написать пост — самый лучший способ подготовиться и привести мысли в порядок. Надеюсь, этот “побочный продукт” поможет и кому-то из читателей.</p>
<p><em>Upd:</em> Слайды с прошедшей презентации есть <a href="http://digal.github.com/slides/cocoapods/">тут</a>.</p>
<!--more-->
<h2>Проблемы?</h2>
<p>Наверное, каждый, кто добавлял в iOS- (или, если брать шире, Cocoa-) проект библиотеку-другую, знает, насколько бесчеловечно организована работа со сторонним кодом в XCode и всём эппловском тулчейне. Особенно очевидна проблема для тех, кто ранее разрабатывал под платформы, где есть развитые средства для управления зависимостями. В частности это Java (и всё разношёрстное JVM-based-племя) c монстрообразным Maven и инструментами на его основе (ivy, gradle, buildr, sbt) и Ruby (с общепринятыми gems и bundler). Собственно, так было и в моём случае. Попробую описать вкратце встречающиеся проблемы.</p>
<h3>Установка</h3>
<p>Начинается всё с установки. Инструкция по оной к более-менее развесистой библиотеке занимает обычно не один экран текста со скриншотами, да ещё и имеет неприятное свойство устаревать или быть несовместимой с какими-то версиями XCode. Хорошими примерами могут быть <a href="https://github.com/RestKit/RestKit/wiki/Installing-RestKit-in-Xcode-4.x">RestKit</a> или, например, <a href="http://sqlcipher.net/ios-tutorial">SQLCipher</a>. Да и если библиотека устанавливается просто добавлением исходников (или статической либы) в проект, процедура скачать-распаковать-перенести-добавить-в-проект начинает несколько доставать. И уж совершенно точно это всё отбивает охоту попробовать несколько библиотек, с тем, чтобы найти подходящую под нужды конкретного проекта.</p>
<h3>Хранение</h3>
<p>После установки, перед разработчиком встаёт выбор варианта хранения.</p>
<ul>
<li>Положить статически собранную библиотеку в проект и VCS.</li>
<li>Положить сорцы библиотеки в проект и VCS. Обычно в какую-нибудь отдельную папочку типа Vendors.</li>
<li>Положить сорцы в виде Git-сабмодуля.</li>
<li>Держать библиотеки вообще вне VCS.</li>
<li>Вытаскивать библиотеки откуда-либо шелл-скриптом при сборке.</li>
</ul>
<p>У каждого из этих способов есть куча разных достоинств и надостатков. Даже ставшие стандартом де-факто git submodules неидеальны. Библиотека-то может лежать и в SVN. А уж сколько плясок с бубном придётся выполнить, чтобы сменить репозиторий (например, на свой форк библиотеки). Впрочем, на первых порах проблемы вызывает даже процесс обновления исходников.</p>
<h3>Подзависимости</h3>
<p>Иногда наши библиотеки используют “ещё более другие”© библиотеки. Чаще всего, они лежат вместе с исходниками родительской библиотеки. Весёлости начинаются тогда, когда в вашем проекте, или в другой библиотеке эта дочерняя библиотека уже используется. А если она ещё и другой версии? В этом случае приходится выбирать, от какой от них избавиться.</p>
<h3>Обновление</h3>
<p>Вот где начинается главное веселье. Проблемы могут возникнуть уже при попытке определить, а какая, собственно, версия используется сейчас. Хорошо если это сабмодуль, или есть какой-ниубдь README. А если нет? Проблема вовсе не надумана: невозможность узнать текущую версию библиотеки мешает понять, например, исправлен ли в ней определённый баг.</p>
<p>Дальше — интереснее. Хорошим примером тут будет всё тот же RestKit. Обновление с версии 0.9.4 до 0.10.0 с непривычки может легко съесть рабочий день. Тут и пляски с сабмодулем, и обновление Header Search Paths (которые, кстати, теперь, оказываются в разных местах при сборке из XCode и на билд-сервере). По сути, обновление библиотеки, это просто ещё одна установка. Как-то спасают здесь (не всегда) только git submodules.</p>
<h2>Решение</h2>
<p>Итак, как мы выяснили, проблем при использовании библиотек в Cocoa-разработке возникает целая куча. При этом на других платформах она вполне себе решается использованием dependency management tools, таких как maven или bundler. Как оказалось, альтернатив для платформы от Apple, оказалось даже несколько, однако стандартом де-факто сегодня становится одна: <a href="http://cocoapods.org/">CocoaPods</a>. Этот инструмент создан бывшим Ruby-девелопером Eloy Durán, написан на Ruby, и очень напоминает bundler.</p>
<h3>Установка</h3>
<p>Cocoapods является рубёвым гемом, поэтому установка проста до безобразия:</p>
<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>$ [sudo] gem install cocoapods
</span><span class='line'>$ pod setup
</span></code></pre></td></tr></table></div></figure>
<p>Собственно всё, теперь cocoapods установлен на вашей машине.</p>
<h3>Podfile</h3>
<p>Все зависимости прописываются в специальном файле под названием <code>Podfile</code>. Синтаксис довольно простой. Предположим, мы хотим добавить в наш проект (<code>Example.xcodeproj</code>) библиотеку <code>AFNetworking</code>. Создаём в папке с проектом (рядом с .xcodeproj) оный подфайл и пишем туда:</p>
<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
</pre></td><td class='code'><pre><code class='ruby'><span class='line'><span class="n">platform</span> <span class="ss">:ios</span>
</span><span class='line'>
</span><span class='line'><span class="n">dependency</span> <span class="s1">'AFNetworking'</span><span class="p">,</span> <span class="s1">'>= 0.9.1'</span>
</span></code></pre></td></tr></table></div></figure>
<p>затем делаем:</p>
<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class='ruby'><span class='line'><span class="err">$</span> <span class="n">pod</span> <span class="n">install</span> <span class="no">Example</span><span class="o">.</span><span class="n">xcodeproj</span>
</span></code></pre></td></tr></table></div></figure>
<p>и вуаля:</p>
<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
</pre></td><td class='code'><pre><code class='ruby'><span class='line'><span class="no">Updating</span> <span class="n">spec</span> <span class="n">repo</span> <span class="sb">`master'</span>
</span><span class='line'><span class="sb">Installing AFNetworking (0.9.1)</span>
</span><span class='line'><span class="sb">Generating support files</span>
</span><span class='line'>
</span><span class='line'><span class="sb">[!] From now on use 'Example.xcworkspace' instead of 'Example.xcodeproj'.</span>
</span></code></pre></td></tr></table></div></figure>
<p>Последняя строчка говорит нам о том, что cocoapods создал workspace с таким же названием, как и наш проект, и теперь надо использовать именно его. Собственно, вот как выглядит папка с проектом после установки подов:</p>
<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
</pre></td><td class='code'><pre><code class='ruby'><span class='line'><span class="err">$</span> <span class="n">tree</span> <span class="o">-</span><span class="n">L</span> <span class="mi">1</span>
</span><span class='line'><span class="o">.</span>
</span><span class='line'><span class="err">├──</span> <span class="no">Default</span><span class="o">.</span><span class="n">png</span>
</span><span class='line'><span class="err">├──</span> <span class="no">Default</span><span class="err">@</span><span class="mi">2</span><span class="n">x</span><span class="o">.</span><span class="n">png</span>
</span><span class='line'><span class="err">├──</span> <span class="no">Example</span>
</span><span class='line'><span class="err">├──</span> <span class="no">Example</span><span class="o">.</span><span class="n">xcodeproj</span>
</span><span class='line'><span class="err">├──</span> <span class="no">Example</span><span class="o">.</span><span class="n">xcworkspace</span>
</span><span class='line'><span class="err">├──</span> <span class="no">Pods</span>
</span><span class='line'><span class="err">├──</span> <span class="no">Podfile</span>
</span><span class='line'><span class="err">└──</span> <span class="no">Podfile</span><span class="o">.</span><span class="n">lock</span>
</span></code></pre></td></tr></table></div></figure>
<p>Этот воркспейс состоит из нашего проекта и проекта Pods, содержащего все указанные в подфайле библиотеки с зависимостями и собирающегося в одну единственную библиотеку <code>libPods.a</code>. Собственно, это всё. Никаких копирований-распаковок, никаких ковыряний в build settings. Собcтвенно и хранить-то папочку с проектом Pods в VCS не нужно, достаточно добавить только Podfile и Example.xcworkspace (и то я не уверен, что второе обязательно).</p>
<h3>Specs</h3>
<p>Естественно, никакой магии в этом нет, вся информация о зависимостях (откуда тянуть файлы, какие есть подзависимости, нужен ли для сборки ARC, какие платформы поддерживаются) содержится в большом <a href="https://github.com/cocoapods/specs">репозитории</a> на гитхабе в виде файликов, называющихся Specs. Искать по нему библиотеки можно с помощью команды <code>pod search</code>, или на <a href="http://cocoapods.org">сайте проекта</a>, а присоединиться к команде мейнтейнеров может любой: достаточно написать свою спеку (это довольно просто) и сделать pull request, что собственно я и сделал.</p>
<p>Кстати, слежение за пулл-реквестами в specs-репозиторий, равно как и слежение за <a href="http://twitter.com/CocoaPodsOrg">твиттером проекта</a> — хороший способ находить полезные библиотеки, чем я и пользуюсь для своих линкопостов.</p>
<h3>Версии и обновление</h3>
<p>Cocoapods использует <a href="http://semver.org/">semantic versioning</a> для зависимостей, поэтому их версии можно указывать несколькими способами. Здесь, в принципе, почти всё понятно из синтаксиса.</p>
<ul>
<li><code>> 0.1</code></li>
<li><code>>= 0.1</code></li>
<li><code>< 0.1</code></li>
<li><code><= 0.1</code></li>
<li><code>~> 0.1.2</code> - использовать версии от 0.1.2 до 0.2 (не включая последнюю).</li>
</ul>
<p>Можно, кстати, и не указывать версию, в этом случае всегда будет использоваться самая последняя.</p>
<p>Чтобы обновить библиотеку (или добавить ещё одну), достаточно просто обновить Podfile и опять сделать <code>pod install</code></p>
<h3>Посторонние библиотеки</h3>
<p>Всё это прекрасно — скажете вы — но что делать, если нужной мне библиотеки нет в спеках, а заморачиваться с пулл-реквестом лень? Здесь есть несколько способов. Во-первых, можно использовать спеку, не лежащую в главном репозитории:</p>
<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class='ruby'><span class='line'><span class="n">dependency</span> <span class="s1">'JSONKit'</span><span class="p">,</span> <span class="ss">:podspec</span> <span class="o">=></span> <span class="s1">'https://raw.github.com/gist/1346394/1d26570f68ca27377a27430c65841a0880395d72/JSONKit.podspec'</span>
</span></code></pre></td></tr></table></div></figure>
<p>Во-вторых, можно даже включить спеку прямо в подфайл:</p>
<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
</pre></td><td class='code'><pre><code class='ruby'><span class='line'><span class="n">dependency</span> <span class="k">do</span> <span class="o">|</span><span class="n">spec</span><span class="o">|</span>
</span><span class='line'> <span class="n">spec</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="s1">'JSONKit'</span>
</span><span class='line'> <span class="n">spec</span><span class="o">.</span><span class="n">version</span> <span class="o">=</span> <span class="s1">'1.4'</span>
</span><span class='line'> <span class="n">spec</span><span class="o">.</span><span class="n">source</span> <span class="o">=</span> <span class="p">{</span> <span class="ss">:git</span> <span class="o">=></span> <span class="s1">'https://github.com/johnezang/JSONKit.git'</span><span class="p">,</span> <span class="ss">:tag</span> <span class="o">=></span> <span class="s1">'v1.4'</span> <span class="p">}</span>
</span><span class='line'> <span class="n">spec</span><span class="o">.</span><span class="n">source_files</span> <span class="o">=</span> <span class="s1">'JSONKit.*'</span>
</span><span class='line'><span class="k">end</span>
</span></code></pre></td></tr></table></div></figure>
<p>В-третьих, если спека на библиотеку уже есть, но вы хотите использовать другую (более новую, например, версию), можно указать репозиторий, откуда тащить код:</p>
<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
</pre></td><td class='code'><pre><code class='ruby'><span class='line'><span class="n">dependency</span> <span class="s1">'AFNetworking'</span><span class="p">,</span> <span class="ss">:git</span> <span class="o">=></span> <span class="s1">'https://github.com/gowalla/AFNetworking.git'</span>
</span><span class='line'><span class="n">dependency</span> <span class="s1">'AFNetworking'</span><span class="p">,</span> <span class="ss">:git</span> <span class="o">=></span> <span class="s1">'https://github.com/gowalla/AFNetworking.git'</span><span class="p">,</span> <span class="ss">:commit</span> <span class="o">=></span> <span class="s1">'082f8319af'</span>
</span></code></pre></td></tr></table></div></figure>
<h3>Точное управление зависимостями</h3>
<p>Часто, для разных таргетов в проекте необходимы разные зависимости. Классический случай: тестовый фреймворк нужен только для тестов. В этом случае, можно собрать несколько версий libPods:</p>
<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
</pre></td><td class='code'><pre><code class='ruby'><span class='line'><span class="n">target</span> <span class="ss">:debug</span> <span class="k">do</span>
</span><span class='line'> <span class="n">dependency</span> <span class="s1">'CocoaLumberjack'</span>
</span><span class='line'><span class="k">end</span>
</span><span class='line'>
</span><span class='line'><span class="n">target</span> <span class="ss">:test</span><span class="p">,</span> <span class="ss">:exclusive</span> <span class="o">=></span> <span class="kp">true</span> <span class="k">do</span>
</span><span class='line'> <span class="n">dependency</span> <span class="s1">'Kiwi'</span>
</span><span class='line'><span class="k">end</span>
</span></code></pre></td></tr></table></div></figure>
<p>Опция exclusive указывает на то, что в библиотеку включаются <em>только</em> указанные зависимости. Нужные библиотеки нужно будет прицепить куда надо ручками, но это не так уж и сложно.</p>
<h3>Грабли и бонусы</h3>
<p>Поскольку cocoapods — молодой проект, то, естественно, не обходится без каких-то проблем. Впрочем, пока всё что я встречал - довольно легко решалось. Одной такой граблей была проблема с тем же злополучным RestKit: как оказалось, необходимо было вместо добавления существующей большой спеки, добавить штук пять под-спек (вида <code>RestKit/CoreData</code>). Впрочем, возможно это уже починили.</p>
<p>Другая проблема — xcodebuild на билд-сервере не видит схем внутри воркспейса. Для починки нужно один раз открыть воркспейс в XCode на машине, где происходит сборка. Впрочем, эта потеря времени должна компенсироваться наличием кеша для библиотек: лично у меня добавление RestKit в проект запросто добавляет лишние пять минут к сборке на сервере именно за счёт долгого <code>git clone</code>.</p>
<h2>Заключение</h2>
<p>В общем, по опыту тех нескольких проектов, где я использовал CocoaPods — впечатления очень хорошие. Довольно много времени экономится на добавлении и обновлении библиотек, да и единый их список для проекта очень удобен. Я очень надеюсь, что нам удастся встроить этот инструмент в стандартный процесс iOS-разработки в <a href="http://www.e-legion.ru/">e-Legion</a>, для чего, собственно я и создал это введение. Спасибо за внимание и пишите фидбеки.</p>
<p>Пока.</p>
<h2>P.S.</h2>
<p>Решил сменить дефолтную тему на <a href="http://zespia.tw/Octopress-Theme-Slash/">slash</a>. Как вам?</p>
]]></content>
</entry>
<entry>
<title type="html"><![CDATA[Линкопост номер 7, дачный.]]></title>
<link href="http://digal.github.com/blog/2012/05/31/links-7/"/>
<updated>2012-05-31T21:39:00+04:00</updated>
<id>http://digal.github.com/blog/2012/05/31/links-7</id>
<content type="html"><![CDATA[<p>Очередной выпуск с аж десятидневной задержкой, вызванной поездкой на дачу и, как обычно, кучей работы. В этом году дачный сезон скрашивается практически нормальным 3G от Мегафона и айфоновским хотспотом, так что поток ссылок не иссякает.</p>
<!--more-->
<p>Накопилось их просто адовое количество, сейчас попробуем всё разобрать и разложить по разделам.</p>
<h2>Языки программирования</h2>
<ul>
<li><p><a href="http://looplang.org/">Loop</a> — очередной же функциональный язык для JVM. Уже в который раз все scala-девелоперы вздыхают и спрашивают: “зачем”. <em>троллейбусизбуханки.jpg</em></p></li>
<li><p><a href="http://jsx.github.com/">JSX</a> — очередная замена для JS со статически типизированным ООП. Очень похоже на Яву. ОСТАНОВИТЕСЬ УЖЕ!!</p></li>
<li><p><a href="http://quasimal.com/posts/2012-05-21-funsh.html">fun.sh</a> — функциональное программирование в sh (точнее, zsh). Месье, как говорится, знает толк.</p></li>
</ul>
<h2>Просто вебдев</h2>
<ul>
<li><p>Чуваки <a href="http://www.raywenderlich.com/12139/introduction-to-cocoapods">собирают</a> деньги на открытие домена верхнего уровня <code>.js</code>, предназначенного, как понятно, для всяких жаваскриптовых сайтов. Правда, пока сбор денег остановлен из-за небольшой проблемы: двухбуквенные домены зарезервированы для стран и не продаются. Лол.</p></li>
<li><p>Очередная бесполезная JS-библиотека: <a href="http://www.smore.com/clippy-js">clippy.js</a>. <em>Любимый</em> персонаж из продуктов MS снова с вами, теперь на любом сайте.</p></li>
<li><p>Пара WYSIWYG-редакторов на JS: <a href="http://redactorjs.com/">Redactor</a> — небольшой, шустрый и фичастый, на jQuery. <a href="http://xing.github.com/wysihtml5/">WYSIHTML5</a> — тоже небольшой и симпатичный, без зависимостей, с прицелом на секьюрность и чистый HTML5-маркап на выходе.</p></li>
<li><p>Полезная и познавательная <a href="http://zero.milosz.ca/">таблица</a> результатов контринтуитивных операций в JS. JavaScript-девелоперам — распечатать и повесить на стенку, остальным можно просто поржать.</p></li>
</ul>
<h2>Мобильный веб</h2>
<ul>
<li><p><a href="https://github.com/eightmedia/hammer.js">hammer.js</a> — JS-библиотека для распознавания мультитач-жестов. Тоже пригодится, если вам приходится заниматься мобильным вебом.</p></li>
<li><p><a href="http://maxogden.com/fast-webview-applications">Хорошая статья</a>, описывающая всякие подводные камни мобильных веб-приложений (и, в частности, PhoneGap aka Cordova) и методы борьбы с ними. Очень стоит почитать и тем, кто уже использует Cordova, так и тем, кто ещё обдумывает такую возможность. Предложение про “painful world of static typing” смешное, да.</p></li>
</ul>
<h2>iOS</h2>
<ul>
<li><p><a href="http://www.mobileinc.co.uk/2012/05/the-art-of-the-ios-icon/">Набор</a> крутых iOS-иконок. Обязательно покажите своему дизайнеру.</p></li>
<li><p><a href="https://github.com/mpospese/MPFoldTransition">MPFoldTransition</a> — переходы свёртки/развёртки (fold) и переворачивания страницы для iOS5. Судя по ридми, библиотека много чего умеет, положу в копилочку.</p></li>
<li><p><a href="https://github.com/gotosleep/JASidePanels">JASidePanels</a> — UIViewController со сдвижными панельками по типу приложений Path и Facebook (как заявлено авторами). Ну, мало ли, тоже кому-то пригодится.</p></li>
<li><p><a href="https://github.com/BradLarson/GPUImage">GPUImage</a> — ещё одна библиотека (точнее, целый фреймворк) для обработки изображений с помощью OpenGL ES. В отличие от предыдущей, включает в себя очень солидный набор готовых фильтров.</p></li>
<li><p><a href="https://github.com/fphilipe/PHFDelegateChain">PHFDelegateChain</a> — библиотека для построения, как следует из называния, цепочек делегирования. Может быть полезной, например, для “размазывания” делегата по нескольким классам.</p></li>
<li><p><a href="https://github.com/sobri909/MGBox">MGBox</a> — фичастая и симпатичная замена UITableView. Присмотрюсь к ней обязательно, поскольку реализует ряд вещей, которые часто приходится писать заново, например, ресайз ячеек под размер текста.</p></li>
</ul>
<h2>Полезное</h2>
<ul>
<li><p>Для тех, кто интересуется геймдевом: <a href="http://devmag.org.za/2011/02/02/video-game-user-interface-design-diegesis-theory/">большая статья</a>, посвящённая созданию UI в играх.</p></li>
<li><p><a href="https://www.shortcutfoo.com/">Тренажёр</a> для заучивания шорткатов. Если кому-то не жаль времени на такое занятие.</p></li>
<li><p><a href="https://github.com/foursquare/fongo">Fongo</a> - in-memory реализация MongoDB (для Java). Очень не хватало такого для тестов, в то время как для SQL всегда была куча решений. Теперь вот есть.</p></li>
<li><p><a href="http://blog.ninlabs.com/2012/05/crowd-documentation/">Попытка</a> создания коллективной (чуть не добавил: “бессознательной”) документации из тредов на StackOverflow. Выглядит довольно интересно, и есть занимательная статистика.</p></li>
<li><p><a href="https://gist.github.com/2841832">Список</a> типовых задержек, которые должен знать каждый программер. От обращения к кэшу 1-го уровня (0.5 нс), до отправки пакета из Калифорнии в Нидерланды и обратно (150 мс). Тем, кого хотя бы изредка беспокоит производительность и быстродействие, стоит выучить наизусть.</p></li>
<li><p>Полезный <a href="http://whiletruecode.com/post/stop-hand-coding-start-zen-coding">плагин</a> для кучи редакторов, в том числе и для Sublime Text 2. Пригодится тем, кто пишет руками много ХТМЛя.</p></li>
</ul>
<h2>Всё остальное</h2>
<ul>
<li><p>Забавная подборка гифок с git-related зверушками: <a href="http://git-animals.tumblr.com/">git-animals</a>.</p></li>
<li><p>Интересное <a href="http://osvita.mediasapiens.ua/material/6746">интервью</a> с создателями самого интересного русскоязычного новостного твитора - <a href="http://twitter.com/lentaruofficial">@lentaruofficial</a>. Рецепт, как всегда, прост — делать for fun и для себя, а не осваивать выбитый на SMM бюджет.</p></li>
<li><p>Вице-президент SAP <a href="http://moskalyuk.name/4130">арестован</a> за мошенничество с наборами Lego. Переклеивал ярлыки в магазине и перепродавал на ебее. Волшебный мир ентерпрайза…</p></li>
<li><p>Нужно ли идти или бежать под дождём, чтобы меньше промокнуть? Математическое <a href="http://www.johndcook.com/blog/2012/05/23/walk-or-run-in-the-rain/">решение</a>.</p></li>
<li><p><a href="http://www.thegoodness.com/matt-and-asias-minecraft-wedding/">Свадьба</a> фанатов Minecraft. Много фоточек, пикселей и кубиков.</p></li>
<li><p><a href="http://mashable.com/2012/05/26/gadget-storage-trucks/">Интересный бизнес</a>, порождённый запретом на гаджеты в школах. Просто платная камера хранения в фургончике.</p></li>
<li><p>Очередное революционное <a href="http://www.leapmotion.com/">устройство ввода</a>, распознающее жесты в воздухе. Видео впечатляет, уже есть предзаказ.</p></li>
<li><p><a href="http://habrahabr.ru/post/144612/">Аналоговый CRT-фильтр</a> для фотографий в айфоне. Всё по-честному: изображение отправляется в Швецию, где показывается на старом телевизоре, с экрана которого делается фотография, которая отсылается обратно пользователю. Чотко и лампово.</p></li>
</ul>
<p>Уф, вроде всё. Надеюсь, следующий выпуск выйдет не с такой большой задержкой. Пока.</p>
]]></content>
</entry>
<entry>
<title type="html"><![CDATA[Линкопост номер 6]]></title>
<link href="http://digal.github.com/blog/2012/05/21/links-6/"/>
<updated>2012-05-21T21:50:00+04:00</updated>
<id>http://digal.github.com/blog/2012/05/21/links-6</id>
<content type="html"><![CDATA[<p>Привет.</p>
<p>Последние дни был очень занят подготовкой и проведением <a href="http://scaladev.ru/">ScalaDev</a>, так что ссылок накопилось просто неимоверное количество. Приступим, не мешкая.</p>
<!--more-->
<ul>
<li><p>Симпатичный анимированный <a href="http://www.google.com/green/storyofsend/desktop/">сайт</a> от гугла, наглядно рассказывающий о путешествии обычного электронного письма. Могут же, когда захотят.</p></li>
<li><p>Просто очень симпатичный <a href="http://pretty-rfc.herokuapp.com/">сайт</a> на базе <a href="http://twitter.github.com/bootstrap/">Bootstrap</a>, для удобного и приятного глазу чтения RFC.</p></li>
<li><p><a href="http://blog.evernote.com/2011/03/24/evernote%E2%80%99s-three-laws-of-data-protection/">Политика</a> Evernote по отношению к пользовательским данным в трёх простых правилах. Очень понятный и хороший подход. Надеюсь, другие сервисы эти правила тоже позаимствуют.</p></li>
<li><p><a href="http://slon.ru/ipad/7_elementov_sistemy_obrazovaniya_xxi_veka-786760.xhtml">Статья</a> Павла Дурова о настоящем и будущем образования. Где-то, может, он утрирует, но в целом, со многими вещами я соглашусь.</p></li>
<li><p>Очень боянистая ссылка, которая повторно всплыла в моей ленте, и которой я не могу не поделиться. <a href="https://github.com/mroth/lolcommits">Lolcommit</a>: небольшая программка, которая снимает вас на вебкамеру всякий раз, когда вы делаете git commit, дополняя фотографию коммит мессаджем.</p></li>
<li><p>Большая <a href="http://www.rockettheme.com/magazine/1319-using-sublime-text-2-for-development">статья</a> о том, чего можно накрутить на <a href="http://www.sublimetext.com/2">Sublime Text 2</a> для нужд разработчика. Всем, кто использует этот замечательный редактор — читать. Всем кто не использует — читать, устанавливать, и тоже использовать.</p></li>
<li><p>Веб-сервер nginx <a href="http://forum.nginx.org/read.php?29,226562">собирается</a> обзавестись поддержкой <a href="http://ru.wikipedia.org/wiki/SPDY">SPDY</a>. Ну, будем надеяться, что другие не отстанут.</p></li>
<li><p><a href="http://underscorejs.org/">Undescore.js</a>, библиотека для добавления массы удобных ФП-фишечек в JS, внезапно <a href="https://github.com/robb/Underscore.m">перенесена</a> на Obj-C. Выглядит немного непривычно, но попробовать стоит обязательно. К слову, оригинальную либу я использовал в работе над <a href="http://digal.github.com/nerdometer/">“нердометром”</a>, для того чтобы добавить в JS хотя бы немного привычной скаловской функциональщины.</p></li>
<li><p><a href="https://github.com/xissburg/XBImageFilters">XBImageFilters</a> ios-библиотека для создания фильтров изображений в реальном времени, например для обработки изображения с камеры айфона. Работает на OpenGL ES 2, фильтры задаются шейдерами на GLSL. Выглядит довольно впечатляюще.</p></li>
<li><p>Большой <a href="http://www.codinghorror.com/blog/2012/05/the-eternal-lorem-ipsum.html">пост</a> от Джеффа Атвуда, посвящённый Lorem Ipsum, c подробным введением в историю вопроса и очень большой подборкой ипсум-генераторов на любой вкус и цвет. Мой любимый — <a href="http://hipsteripsum.me/">Hipster Ipsum</a>.</p></li>
<li><p>Большой эммм… спор о роли Николы Теслы и Томаса Эдисона в истории. Начинается <a href="http://theoatmeal.com/comics/tesla">эпичным</a> комиксом на the Oatmeal, продолжается <a href="http://www.forbes.com/sites/alexknapp/2012/05/18/nikola-tesla-wasnt-god-and-thomas-edison-wasnt-the-devil/">статьёй</a> с возражениями в Forbes, и заканчивается (заканчивается ли?), и подробным <a href="http://theoatmeal.com/blog/tesla_response">разбором полётов</a> от того же the Oatmeal. Ждём продолжения.</p></li>
<li><p>GitHub <a href="https://github.com/blog/1127-github-for-windows">выпустил</a> клиента для Windows. Я пока не очень понял, насколько он хорошо выступает в качестве просто Git-клиента, но если это действительно так, то мои поздравления пользователям Windows.</p></li>
<li><p>Ещё одна <a href="http://worqshop.com/">IDE для айпада</a>, на этот раз с поддержкой Git и Heroku. То есть, практически, полноценный инструмент разработки на iOS.</p></li>
<li><p>И на последок — вещь, которой мне, слоупоку, не хватало те последние несколько лет, которые я активно работал со всякими REST-сервисами. <a href="https://chrome.google.com/webstore/detail/chklaanhfefbnpoihckbnefhakgolnmc">Хромовский экстеншен</a> для удобного просмотра JSON в браузере. Наверняка он не единственный, и вообще существует очень давно, но догадался я найти и использовать такую штуку только сейчас. Очень рекомендую, если вам, как и мне, часто приходится работать с JSON.</p></li>
</ul>
<p>На этом всё, увидимся через несколько дней. Пока.</p>
]]></content>
</entry>
<entry>
<title type="html"><![CDATA[Линкопост номер 5]]></title>
<link href="http://digal.github.com/blog/2012/05/15/links-5/"/>
<updated>2012-05-15T22:43:00+04:00</updated>
<id>http://digal.github.com/blog/2012/05/15/links-5</id>
<content type="html"><![CDATA[<p>Хотел написать этот пост ещё пару дней назад, но всё никак не успевал, так что некоторые ссылки могли потерять первозданный блеск и свежесть. Ну да не страшно, поехали!</p>
<!--more-->
<ul>
<li><p>Линус Торвальдс <a href="https://github.com/torvalds/linux/pull/17#issuecomment-5654674">не любит</a> гитхабовские пуллреквесты. Странно, а мне они нравятся.</p></li>
<li><p>Тема не нова, но тем не менее: неплохой <a href="http://www.revision-zero.org/orm-haters-do-get-it">пост</a> о несоместимости объектного и реляционного миров и о том, что ORM неэффективны по определению.</p></li>
<li><p>В догонку к ссылке из предыдущего поста: ещё один, гораздо более сложный <a href="http://wtpl.heroku.com/">тест</a> на знание языков программирования. И даже не надейтесь набрать сколько-нибудь высокий балл, если вы не отличаете K от J, SNUSP от BrainFuck и ACL от Common Lisp.</p></li>
<li><p>Интересная <a href="http://rogerstringer.com/2012/04/16/using-dropbox-as-a-git-repository">идея</a> использовать DropBox в качестве стораджа для GitHub-репозитория. Должно быть действительно довольно удобно для тех, кто работает на разных машинах, но пока не очень ясно чем может грозить.</p></li>
<li><p>Неплохое <a href="http://docs.python.org/release/3.1.5/howto/functional.html">введение</a> в функциональное программирование вообще и на Python в частности. Прямо в питоновской документации.</p></li>
<li><p>А вот авторы <a href="http://fsharpnews.blogspot.co.uk/2012/05/parallel-programming-in-functional.html">другой статьи</a> — предостерегают от использования “чисто” функциональных языков в параллельных (хотя по сути, скорее, в сколько-нибудь нагруженных) системах, взяв за пример Haskell и указывая на ряд нерешённых в таких языках проблем, прямо влияющих на производительность. В качестве альтернативы они предлагают использовать F# (ну или другие гибридные языки, например, Scala — добавлю я от себя.)</p></li>
<li><p><a href="http://kapeli.com/dash/">Dash</a> — Очень милая смотрелка документации для сocoa- и web- девелоперов. Также, позволяет довольно удобно хранить и использовать снипеты. <a href="http://itunes.apple.com/us/app/dash-docs-snippets/id458034879?mt=12">Лежит бесплатно</a> в Mac App store. В общем, поставил себе, и всем советую.</p></li>
<li><p>Несколько полезных контролов для iOS девелоперов: Во-первых: сетка <a href="https://github.com/kolinkrewinkel/KKGridView">KKGridView</a> с замахом на самую лучшую реализацию этого контрола, скорость и похожесть на UITableView. Во-вторых: похожий, но более специализированный <a href="https://github.com/ultragtx/GSBookShelf">GSBookShelf</a> — по сути, имплементация “книжных полок” из iBooks. И в-третьих — всплывающее меню с иконочками: <a href="https://github.com/mattgemmell/MGTileMenu">MGTileMenu</a>. Может пригодиться, например, в качестве панели инструментов в каком-нибудь редакторе чего-нибудь.</p></li>
<li><p>Немецкие фрилансеры <a href="http://www.deskmag.com/en/new-350-euro-monthly-freelancer-tax-will-kill-innovation-in-germany-378">напуганы</a> очередным налогом, который грозит поставить данный вид под угрозу вымирания. Платить от 650 евро в месяц ещё вообще ничего не заработав — это, действительно, не очень приятно.</p></li>
<li><p><a href="http://be5invis.github.com/moescript/">Moe</a> — очередная замена JavaScript, в этот раз базирующаяся на идеях Haskell и Python.</p></li>
<li><p>Тоже диалект JS, но совсем в другую сторону. <a href="http://mbebenita.github.com/LLJS/">LLJS</a> — низкоуровневый типизированный жаваскрипт с ручным управлением памятью. С malloc и free, всё как у больших. Ну я не знаю даже…</p></li>
</ul>
<p>На этом на сегодня всё, пишите фидбеки и присылайте ссылки. Пока.</p>
]]></content>
</entry>
<entry>
<title type="html"><![CDATA[Линкопост номер 4]]></title>
<link href="http://digal.github.com/blog/2012/05/11/links-4/"/>
<updated>2012-05-11T21:53:00+04:00</updated>
<id>http://digal.github.com/blog/2012/05/11/links-4</id>
<content type="html"><![CDATA[<p>Привет. Внезапно набежало очень много всего за пару дней, будем разбирать. Пока кладу всё в перемешку, но думаю уже ввести какие-то разделы внутри одного поста, либо разделить посты по тематике. Надо?</p>
<!--more-->
<ul>
<li><p>Небезызвестная контора Atlassian отличилась, просто эпически прое… эм… <a href="http://www.theregister.co.uk/2012/05/09/atlassian_cloud_storage_outage/">потеряв армейским способом</a> данные клиентов своего облачного сервиса. Клиентов вроде не очень много, но, насколько я понимаю, среди них есть довольно крупные. В общем, ещё одна грустная история о криворуких админах, не озаботившихся сохранностью данных.</p></li>
<li><p><a href="http://www.hanselman.com/blog/TheFloppyDiskMeansSaveAnd14OtherOldPeopleIconsThatDontMakeSenseAnymore.aspx">15 иконок</a>, изображающих предметы, вышедшие из обихода. А правда, интересно, как воспринимает, например, иконку дискеты тот, кто никогда её в глаза не видел?</p></li>
<li><p>Локальная <a href="https://github.com/jubos/fake-s3">замена</a> Amazon S3. По идее, должно быть очень полезно для тестирования сервисов, использующих оный сторадж, особенно учитывая, скажем, скорость S3 на аплоад файлов снаружи, да и вообще его платность.</p></li>
<li><p><a href="http://blog.greweb.fr/2012/05/illuminated-js-2d-lights-and-shadows-rendering-engine-for-html5-applications/">Библиотека</a> динамического 2D-освещения для JS. Предназачается, в основном, для игрушек, однако было бы занятно посмотреть, как это можно применить в каком-нибудь прикладном интерфейсе.</p></li>
<li><p>Хорошая <a href="http://gojko.net/2012/05/08/redefining-software-quality/">статья</a> о <a href="http://ru.wikipedia.org/wiki/%D0%9F%D0%B8%D1%80%D0%B0%D0%BC%D0%B8%D0%B4%D0%B0_%D0%BF%D0%BE%D1%82%D1%80%D0%B5%D0%B1%D0%BD%D0%BE%D1%81%D1%82%D0%B5%D0%B9_%D0%BF%D0%BE_%D0%9C%D0%B0%D1%81%D0%BB%D0%BE%D1%83">пирамиде потребностей Маслоу</a> (ну или скорее её аналоге) в разработке ПО. Хорошо раскладывает приоритеты по полочкам. Подумалось, что, к сожалению, в отличие от оригинальной пирамиды, в разработке ПО есть очень много людей и проектов, не осиливших даже первую ступеньку.</p></li>
<li><p>Очень красивая демосценерская <a href="http://www.creativeapplications.net/windows/hartverdrahtet-infinite-complexity-in-4096-bytes/">работа</a> всего в 4х килобайтах. Обязательно зацените.</p></li>
<li><p>Ещё в ту же тему: большая <a href="http://www.displayhack.org/2012/the-great-demoscene-sourcecode-giveaway/">подборка</a> демосценерских инструметов и исходников демок от разных групп, включая нашумевший <a href="https://github.com/farbrausch/fr_public">сет</a> от Farbrausch. Там есть, например, небезызвестный Kkrieger — шутер от первого лица в 96 килобайтах.</p></li>
<li><p>Apple, <a href="http://9to5mac.com/2012/05/11/ios-6-apple-drops-google-maps-debuts-in-house-maps-with-incredible-3d-mode/">похоже</a>, собирается отказаться в iOS6 от гуглокарт в пользу собственной разработки. На видео и скринах можно заметить довольно впечатляющий 3D-режим. Естественно, это пока неофициальная информация, однако судя <a href="http://news.cnet.com/8301-13579_3-20010523-37.html">по</a> <a href="http://9to5mac.com/2011/10/29/apple-acquired-mind-blowing-3d-mapping-company-c3-technologies-looking-to-take-ios-maps-to-the-next-level/">некоторым</a> <a href="http://9to5mac.com/2009/09/30/apple-buys-a-mapping-company-called-placebase/">приобретениям</a>, всё к тому и идёт.</p></li>
<li><p><a href="http://www.infoworld.com/d/application-development/hello-world-programming-languages-quiz-188874">Квиз</a> на угадывание языков программирования по реализации Hello World. Я набрал 19 из 20 — не узнал Logo.</p></li>
<li><p><a href="http://blog.mongodb.org/post/21923016898">Анализатор</a> схемы данных для MongoDB, как ни парадоксально это звучит. Поддерживает разные типы для одного и того же поля, ведёт статистику наличия этих самых полей в документах и всё такое прочее. Должно быть полезно как для ковыряния в легаси-базах, так и, возможно, для какого-то ограниченного датамайнинга в своих.</p></li>
<li><p>Если вдруг кому-то интересно такое странное извращение — <a href="http://habrahabr.ru/post/142447/#habracut">статья</a> на хабре, рассказывающая о том, как собрать JVM с выключенным GC. Ну, вдруг кому-то память, например, девать некуда.</p></li>
<li><p>Разработчик <a href="http://www.zeromq.org/">ØMQ</a> <a href="http://www.250bpm.com/blog:4">рассказывает</a> о том, почему для разработки был выбран C++, и о том, что следовало выбрать C. Должно быть интересно даже для тех, кто далёк и от первого, и от второго, и от третьего. И, кстати, если вы ещё не читали <a href="http://zguide.zeromq.org/page:all">гайд</a> по ØMQ — обязательно почитайте. По сути, это очень хорошо написанная книжка по messaging patterns и распределённым архитектурам.</p></li>
<li><p>В этот раз почему-то совсем не набралось ссылок, посвящённых разработке под iOS. Вот вам хотя бы <a href="http://markpospesel.wordpress.com/2012/05/10/anatomy-of-a-folding-animation/">одна</a> — с детальным разбором folding animation и пачкой полезных ссылок в подвале.</p></li>
</ul>
<p>Особую благодарность сегодня хочу выразить Сергею <a href="https://twitter.com/#!/novakche">@novakche</a> за пуллреквесты к бложеку с исправлениями опечаток и пунктуации. Всем пока и до следующего выпуска.</p>
]]></content>
</entry>
<entry>
<title type="html"><![CDATA[Линкопост номер 3]]></title>
<link href="http://digal.github.com/blog/2012/05/09/weekend-links/"/>
<updated>2012-05-09T22:12:00+04:00</updated>
<id>http://digal.github.com/blog/2012/05/09/weekend-links</id>
<content type="html"><![CDATA[<p>И снова привет. Вопреки моим ожиданиям, в “избранное” твиттера за праздники набежало довольно-таки много всего, попробую накопать из этой кучи чего-нибудь интересное для сегодняшней подборки.</p>
<!--more-->
<ul>
<li><p>Компания Dell <a href="http://bartongeorge.net/2012/05/07/introducing-project-sputnik-developer-laptop/">готовится</a> выпустить Sputnik — ноутбук с Убунтой на борту, предназначенный специально разработчиков. Помимо железа (которое не сильно отличается от Dell XPS13) предполагается некая система управления разработческим софтом, однако, чем оно лучше MBP с обычным пакетным менеджером, я пока не очень понимаю.</p></li>
<li><p>GitHub опять порадовал, <a href="https://github.com/blog/1125-new-git-homepage">сделав</a> новую домашнюю страничку для <a href="http://git-scm.com/">Git</a>. Мне нравится.</p></li>
<li><p>Twitter не отстал, <a href="http://thechangelog.com/post/22607432623/twitter-text-objc-an-objective-c-implementation-of-twitt">выпустив</a> ObjC-<a href="https://github.com/twitter/twitter-text-objc">библиотеку</a> для обработки текста. Ну, правда, обработки не абы какой, а вполне понятной: вычленения #хештегов, @упоминаний, ссылок и подсчёта количества символов в тексте. Впрочем, должно оказаться полезным для тех, кому нужна какая-то функциональность твиттер-клиента. Также в природе существуют версии для <a href="https://github.com/twitter/twitter-text-rb">Ruby</a>, <a href="https://github.com/twitter/twitter-text-java">Java</a> и <a href="https://github.com/twitter/twitter-text-js">JavaScript</a>.</p></li>
<li><p>В репозиторий вебкита прилетел <a href="http://trac.webkit.org/changeset/116384">коммит</a>, добавляющий в движок функциональность <a href="http://webintents.org/">веб-интентов</a>. Для тех, кто занимался разработкой для Android: да, это те же самые Intents, только для веба. Для остальных, могу только пояснить что это способ, предназначенный для организации взаимодействия между совершенно незнакомыми веб-приложениями через некий стандартный механизм. Ну, то есть, например, имея картинку в каком-нибудь одном веб-приложении, пользователь может отредактировать её в другом, а затем расшарить с помощью третьего. Немного сумбурно объясняю, но, поверьте мне, это довольно круто. По крайней мере, именно механизма интентов мне не хватает больше всего в iOS как бывшему пользователю Android.</p></li>
<li><p><a href="http://blog.prettylittlestatemachine.com/blog/2011/07/05/hello-world-candy-5-fues-for-developers-to-love/">Подборка</a> пяти проектов, дающих разработчику самый лучший с точки зрения автора поста FUE — First User Experience. Также предлагается интересная метрика сложности инструментов разработки (или скорее качества Developer Experience) — TTFHW (Time To First Hello World). Вообще, тема <a href="http://developerexperience.org/">Developer Experience</a> очень интересная, положу её, пожалуй, тоже в стопочку “когда-нибудь написать большой пост”.</p></li>
<li><p>Просто очень милый <a href="http://zmoazeni.github.com/gitspective/">таймлайн</a> пользователя на Гитхабе. Пишут, что в стиле Фейсбука, хотя я фейсбучный таймлайн так и не заценил. Придётся поверить на слово.</p></li>
<li><p><a href="http://html9responsiveboilerstrapjs.com/">HTML9 Responsive Boilerstrap JS</a> — мне кажется, кто-то должен сделать из этого генератор текстов-заглушек по типу <a href="http://hipsteripsum.me/">Hipster Ipsum</a>.</p></li>
<li><p>HTML5-<a href="http://wolfenstein.bethsoft.com/">версия</a> Wolfenstein 3D, в честь 20-летия (всего-то?) выхода оригинала.</p></li>
</ul>
<p>Вот, пожалуй, и всё. Увидимся.</p>
]]></content>
</entry>
<entry>
<title type="html"><![CDATA[Линкоблог: iOS-выпуск]]></title>
<link href="http://digal.github.com/blog/2012/05/04/other-links/"/>
<updated>2012-05-04T22:22:00+04:00</updated>
<id>http://digal.github.com/blog/2012/05/04/other-links</id>
<content type="html"><![CDATA[<p>Оказалось, что если аккуратно складывать найденные интересные ссылки в файлик, то за день их легко набирается на нормальную подборку. Не такую как у некоторых, но всё же. Осталось только понять, где взять время на написание собственно поста.</p>
<p>Как-то так получилось, что сегодняшняя подборка посвящена в основном iOS и смежным темам. Впрочем, это наверное будет скорее правилом, нежели исключением, по крайней мере в ближайшее время.</p>
<!--more-->
<p>Впрочем, начнём мы с более общих тем:</p>
<ul>
<li><p>Две занимательные статьи о вреде процесса. <a href="http://www.codinghorror.com/blog/2008/03/is-eeyore-designing-your-software.html">Одна</a> — интересное сравнение роли процесса в открытых и коммерческих проектах от Джеффа Атвуда. <a href="http://teddziuba.com/2011/12/process.html">Вторая</a> — более радикальное предложение искоренить процесс как таковой от знатного тролля Теда Дзюбы.</p></li>
<li><p>Журналист Russell Brandom наткнулся на фейсбук шестилетней давности, да не где-нибудь, а в России. Очень занятная <a href="http://www.buzzfeed.com/h2/pulse/tommywilhelm/where-the-old-facebook-still-lives">статья</a> про ВКонтакте глазами американского журналиста-хипстора.</p></li>
<li><p>Наделавший вчера и сегодня много базза Ruby-тулчейн для iOS-разработки: <a href="http://www.rubymotion.com/">RubyMotion</a>. Сделан на Rake, поддержка TestFlight и CocoaPods из коробки и вообще всё очень вкусно на вид. Разработано, кстати, не абы кем, а автором MacRuby, ушедшим из Apple. Хороший перебор всех косточек и сравнения с ObjC (не в пользу последнего) — <a href="http://joshsymonds.com/blog/2012/05/04/why-rubymotion-is-better-than-objective-c/">вот тут</a>. А вообще, мне кажется, что Apple должна купить этот проект и придать ему официальный статус. Посмотрим, что будет.</p></li>
<li><p>GitHub выпустил <a href="https://github.com/github/ReactiveCocoa">ReactiveCocoa</a> — фреймворк для составления асинхронных операций над последовательностями значений. Звучит страшновато (трудности перевода?), но <a href="https://github.com/blog/1107-reactivecocoa-for-a-better-world">на деле</a> — очень круто и интересно. По сути, это реализация дотнетовских Reactive Extensions для ObjC, если это кому-то о чём-то говорит.</p></li>
<li><p>Zynga <a href="http://adage.com/article/digital/zynga-s-ad-pitch-draw-draw-brand/234515/">придумала</a> монетизировать игры не только с помощью прямых продаж и тупой рекламы, а встраивая эту самую рекламу в игровой контент. Речь идёт о популярной игре Draw Something, от купленной Zynga компании OMGPop, где игрокам теперь, помимо всего прочего, предложат рисовать и угадывать известные бренды. Небесплатно для этих самых брендов, конечно.</p></li>
<li><p>Apple устроил небольшую <a href="http://forums.dropbox.com/topic.php?id=59350&replies=15">драму</a>, не пропустив в AppStore приложение, использующее DropBox SDK. Всё дело в том, что на страничке авторизации пользователя, имелась ссылка на полный сайт, где ушлые пользователи могли заказать себе немного дополнительного места в дропбоксе, не откатив Эпплу положенных 30%. Надо отдать должное разработчикам SDK — они довольно оперативно выпустили апдейт, убирающий опасную ссылку.</p></li>
<li><p>Ну и напоследок — игра для iPad под названием <a href="http://twolivesleft.com/CargoBot/">Cargo Bot</a>. Примечательна двумя вещами. Во-первых, в игре нужно программировать роботов (грузящих ящики), а во-вторых, как утверждается, она целиком разработана на iPad с использованием IDE под названием <a href="http://twolivesleft.com/Codea/">Codea</a>.</p></li>
</ul>
<p>Пожалуй, на сегодня хватит. Следующий выпуск — как только так сразу. Пока.</p>
]]></content>
</entry>
<entry>
<title type="html"><![CDATA[Links]]></title>
<link href="http://digal.github.com/blog/2012/05/03/links/"/>
<updated>2012-05-03T12:43:00+04:00</updated>
<id>http://digal.github.com/blog/2012/05/03/links</id>
<content type="html"><![CDATA[<p>Итак, обещанные ссылки. Сразу предупреждаю, что практически всё - не такое уж и новое, но тем кто не видел — определённо стоит посмотреть.</p>
<!--more-->
<ul>
<li><p><a href="http://swagger.wordnik.com/">Swagger</a> — система документирования REST API, генерирующая красивые доки из аннотаций в коде. Сама спецификация не привязана ни к какому языку, но текущая реализация поддерживает только Scala, Java и вроде как node.js. Аннотировать придётся довольно много, но мне кажется, что <a href="http://petstore.swagger.wordnik.com/">такая</a> дока с возможностью делать API-запросы прямо из неё, того стоит. Генератор клиентских библиотек для Java, Scala, JS, AS3, PHP и Python <a href="https://github.com/wordnik/swagger-codegen">прилагается</a> (поддержку Android и Ruby обещают тоже сделать).</p></li>
<li><p><a href="https://github.com/n8han/giter8">giter8</a> - тулза для установки шаблонов scala-проектов. <a href="https://github.com/n8han/giter8/wiki/giter8-templates">Список</a> шаблонов пока небольшой, но, думаю, будет пополняться. Наткнулся на него просто потому что странички некоторых фреймворков предлагают giter8 как способ быстро поставить sample project и поиграться с ним.</p></li>
<li><p><a href="http://parsekit.com/">ParseKit</a> - фичастая либа (или даже фреймворк) для продвинутой токенизации строк и написания парсеров (в том числе на BNF-грамматиках). Как раз сейчас я пытаюсь сделать на ней реализацию простенького ассемблера. Ссылка на сорцы ведёт на устаревший репозиторий на googlecode, есть ещё один на GH (тоже устаревший), и, похоже-таки актуальная версия - тоже на гуглокоде <a href="http://code.google.com/p/parsekit/">вот тут</a>. Для тех, кто использует CocoaPods - есть podspec от вашего покорного слуги в официальном репозитории. О CocoaPods, кстати, тоже хочется рассказать поподробнее в отдельном посте.</p></li>
<li><p><a href="http://www.bogost.com/games/a_television_simulator.shtml">Интересная заметка</a> с детальным разбором эффектов старых CRT-мониторов, или даже скорее телевизоров. Пригодится вам, если вы вдруг захотите воспроизвести экспириенс (мне кажется, русское слово “опыт” тут не очень походит) игр 80-х, или, например, написать собственную вариацию на тему <a href="http://www.secretgeometry.com/apps/cathode/">Cathode</a>.</p></li>
<li><p><a href="http://textozor.com/zalgo-text/">Генератор</a> Unicode-мусора в текстах, поз́вол͢я̨е͘т пр̡и͢д̨ат͝ь̴ ̕ва҉ш͞ѐм̴у̛ соо҉б҉ще̶н̀ию̷ лёг̨к͡и̛й г̷раду͏с бе͠з̢у̀м̵ия̀. При умелом <a href="http://stackoverflow.com/a/1732454/270535">использовании</a> — очень впечатляет, только не переборщите.</p></li>
<li><p>В Питере <a href="http://www.restoclub.ru/articles/14666/">открывается</a> кафе-коворкинг-миниотель. Час работы (включая горячие напитки, снеки и зеркало для луков) обойдётся в 99 рублей и позволит получить скидку на обед. Интересный вариант на те самые дни, когда в офисе работать не хочется, а дома не получается. Надо будет попробовать.</p></li>
<li><p>На десерт: <a href="http://runningastartup.tumblr.com/">Running Startup</a> — по-моему, лучший блог о стартапах евар! Осторожно, трафик.</p></li>
</ul>
<p>Вот, наверное, и всё на этот раз. Следующая порция — как наберётся достаточно ссылок. Пока, и пишите фидбеки.</p>
]]></content>
</entry>
<entry>
<title type="html"><![CDATA[Апдейт]]></title>
<link href="http://digal.github.com/blog/2012/05/03/update/"/>
<updated>2012-05-03T12:08:00+04:00</updated>
<id>http://digal.github.com/blog/2012/05/03/update</id>
<content type="html"><![CDATA[<p>И снова здравствуйте.</p>
<p>Поскольку времени на написание развёрнутых постов “на тему” категорически не хватает, мне пришла в голову мысль решить одним махом сразу две проблемы: оживить бложек и начать складывать куда-то все ссылки, которые лежат мёртвым грузом в “избранном” твиттера, инстапапере, гуглоридере и даже в закладках браузера. То есть, попросту говоря, организовать небольшой линкоблог по типу Бобуковского <a href="http://addmeto.cc/">addmeto.cc</a>, на который если кто-то ещё не подписался, то очень зря. Сегодня вечером попробую выложить то что собралось за вчера/сегодня отдельным постом, ну и дальше буду выкладывать по мере накопления.</p>
<p>На самом деле, тем на один-два поста у меня уже накопилось, в частности про то, как у нас выстроился процесс разработки в мобильном отделе (да, я всё ещё пишу под айфончики), на какие грабли было наступлено и какие вещи ещё только планируется сделать.</p>
<p>Также, не могу не упомянуть про одну из причин нехватки времени: отличные онлайн-курсы от <a href="https://www.coursera.org/">Coursera</a>. Вот буквально неделю назад я сдал финальный экзамен по <a href="https://www.coursera.org/course/algo">Design and Analysis of Algorithms I</a> от Стэнфорда, не удержался и начал десятинедельный <a href="https://www.coursera.org/course/compilers">Compilers</a> от него же, хотя пока не уверен, что буду успевать всё делать.</p>
<p>Ну и на последок, прорекламирую очередной <a href="http://elegion.timepad.ru/event/manage/21310">ScalaSPB</a>, который пройдёт 19 Мая. Приходите, пообщаемся.</p>
]]></content>
</entry>
<entry>
<title type="html"><![CDATA[2011/2012]]></title>
<link href="http://digal.github.com/blog/2012/01/04/2011-2012/"/>
<updated>2012-01-04T22:33:00+04:00</updated>
<id>http://digal.github.com/blog/2012/01/04/2011-2012</id>
<content type="html"><![CDATA[<p>Наконец дозрел до стандартного поста в виде небольшого подбивания (профессиональных) итогов года и построения планов на следующий. Год назад я приблизительно сформулировал в голове вещи, которые мне бы хотелось сделать в 2011-м, и, оглядываясь назад, можно с хорошей долей уверенности сказать что бОльшая часть вещей так или иначе выполнена.</p>
<!--more-->
<h2>Scala</h2>
<p>Язык, с которым я познакомился летом/осенью 2010-го и который успешно был внедрён в разработку больших и взрослых проектов в <a href="http://e-legion.ru">e-Legion</a>. Помимо бэкенда <a href="http://goozy.com">Goozy</a> мы практически закончили ещё один заказной проект на <a href="http://www.tornadoweb.org/">Tornado</a>+Scala+<a href="http://www.zeromq.org/">ØMQ</a>. Наверное больше половины всего кода было написано именно на нём. И хотя Scala-проекты составляют совсем небольшую долю относительно всего остального в компании, я очень надеюсь что мы продолжим использовать этот замечательный язык.</p>
<p>Кроме того, удалось инициировать и принять самое непосредственное участие в организации евента, посвящённого Scala. И хотя мной было наступлено на неимоверное количество граблей, по-моему почти всем понравилось, а я получил просто огромное количество опыта, касающегося организации айтишных встреч. Всем кто пришёл ещё раз огромное большое спасибо, мы обязательно всё повторим где-нибудь в середине весны. Официальные объявления будут чуть попозже.</p>
<p>В общем, в 2012 я очень надеюсь вернуться к работе со Scala, поскольку этот язык вызывает просто массу положительных эмоций при работе с ним.</p>
<h2>Вебдев</h2>