-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
443 lines (277 loc) · 41.8 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta content='text/html; charset=utf-8' http-equiv='Content-Type'>
<meta http-equiv='X-UA-Compatible' content='IE=edge'>
<meta name='viewport' content='width=device-width, initial-scale=1.0, maximum-scale=1.0'>
<title>Alexey Vakhov – Блог, милый блог.</title>
<meta name="author" content="Alexey Vakhov" />
<meta name="description" content="Блог, милый блог.">
<!--[if lt IE 9]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link rel="stylesheet" type="text/css" href="/style.css" />
<link rel="stylesheet" type="text/css" href="/font-awesome-4.2.0/css/font-awesome.min.css" />
<link rel="alternate" type="application/rss+xml" title="Alexey Vakhov - Блог, милый блог." href="/atom.xml" />
<!-- Created with Jekyll Now - http://github.com/barryclark/jekyll-now -->
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-47889589-1', 'vakhov.me');
ga('send', 'pageview');
</script>
</head>
<body onorientationchange="if(DISQUS) DISQUS.reset({reload: true});">
<div id="fb-root"></div>
<script>(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_GB/sdk.js#xfbml=1&version=v2.8";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
<div class="wrapper-masthead">
<div class="container">
<header class="masthead clearfix">
<a href="/" class="site-avatar"><img src="https://secure.gravatar.com/avatar/54e74983d81fa2fbe4c28e8392532f18" /></a>
<div class="site-info">
<h1 class="site-name"><a href="/">Alexey Vakhov</a></h1>
<p class="site-description">Блог, милый блог.</p>
</div>
<nav>
<a href="/about.html">ABOUT</a>
<a href="https://www.google.com/search?q=site%3Aavakhov.github.io">SEARCH</a>
</nav>
</header>
</div>
</div>
<div id="main" role="main" class="container">
<div class="posts">
<article class="post">
<h1 class="main"><a href="/blog/2018/09/24/gold-era/index.html">Мой Восторг от IT</a></h1>
<div class="date">September 24, 2018</div>
<div class="entry">
<p>Недавно прочитал статью на Харбе <a href="https://habr.com/post/423889">Моё разочарование в софте</a> и
захотелось написат мини-ответ, про свой восторг от софта. Автор приводит примеры из
веба, ноды, электрона, а по мне, все что как раз происходит в этих направлениях, нужно
называть золотым веком программирования, так как с каждым днем там все лучше и интереснее.
По крайней мере если выбирать эпоху, скажем 70-е, 80-е, 90-е, 0-е, или сейчас, я бы хотел
заниматься программированием именно сейчас :-)</p>
<p>Конечно, есть перегибы, есть <code>node_modules</code> тяжелые как само бытие, докер под маком с
тремя слоями виртуализации, руби мой любимый, который на JSON в пару мегов жрет памяти мегов 300,
и прочее. Но именно эти
перигибы подчеркивают, как хороши технологии, которые лежат в основе. Например, возьмем замечательный
язык SQL, с тысячей диалектов. Так на нем пишут такие запросищи на десятки экранов,
огроменную бизнес логику, тетрисы всякие и прочие шахматы, что авторам, думаю, в страшном
сне не снилось, что такое будут делать. Или божественный эксель, на котором вообще можно сделать все,
но некоторые люди умеют на нем даже больше, чем все. Вот была статья про
<a href="https://habr.com/post/348704/">3D игра на эксель формулах</a>, просто отвал башки, меня сильно впечатлила.</p>
<p>Как раз технология, которая настолько оказалось прочной, что не падает под сотней слоев прикладного кода,
часто совершенно безумного и совсем из нехарактерной области, во-первых прекрасна, во-вторых
дает возможность оптимизировать на масштабе. То есть те же оркестраторы, вывели в принципе
относительно старую и банальную изоляцию, на совершенно другой смысловой уровень. Но сначала
нужно было все залить толстым слоем микросервисов, наносервисов и пикосервисов, чтобы создать
фактуру. Если первое время
мне докер нравился за то, что можно туда затолкать все эти руби, имаджмейджики и прочий
мусор, оставляя систему чистой, то сейчас контейнеры - это, конечно,
прежде всего доставка кода в кластер,
где есть шедулинг, дискавери, сервис мэши, а еще бы, в идеале, и автоскейлинг, трейсинг и все остальное.</p>
<p>Я люблю ноду, люблю руби, реакт-нетив, изумительную идею прометея, бинарники на го без зависимостей,
архитектуру кафки, JSONB в постгресе, консул-темплейты и многое, многое другое. Сейчас воистину
волшебное время для программирования, и этим нужно вовсю пользоваться, пока роботы не заменили нас.</p>
<small><div style="float:right;font-size:85%;"><a href="/blog/2018/09/24/gold-era/index.html#disqus_thread">0 Comments</a></div></small>
<div class="fb-share-button" data-href="/blog/2018/09/24/gold-era/index.html" data-layout="button_count" data-size="small" data-mobile-iframe="true"><a class="fb-xfbml-parse-ignore" target="_blank" href="https://www.facebook.com/sharer/sharer.php">Поделиться</a></div><a href="https://twitter.com/intent/tweet?text=%D0%9C%D0%BE%D0%B9+%D0%92%D0%BE%D1%81%D1%82%D0%BE%D1%80%D0%B3+%D0%BE%D1%82+IT&url=avakhov.github.io%2Fblog%2F2018%2F09%2F24%2Fgold-era%2Findex.html" class="twitter-share-button">Tweet</a><style>.twitter-share-button{position:relative !important;left:10px;top:6px}</style>
</div>
</article>
<article class="post">
<h1 class="main"><a href="/blog/2018/09/21/inbox-gmail/index.html">Inbox Всё</a></h1>
<div class="date">September 21, 2018</div>
<div class="entry">
<p>Недавно прошла новость, что Гугл закрывает Инбокс, альтернативный клиент для почты. Выглядит очень странно, так как, казалось, что они наоборот
когда-нибудь выпилят гмейл, инбокс был явно прогрессивнее. Я решил нанести алчной корпорации превентивный удар и перейти на гмейл сам.</p>
<p>Ну что-ж, жить можно, самая главная фича с откладыванием писем есть, без нее очень муторно дережать инбокс пустым.
Я бы ждал 2019 года, однако инбоксом все равно не мог пользоваться на 100%. На телефоне приложение падает на письмах из джиры, а в дескопе
не удобно посылать письма с картинками. Приходилось держать все приложения и все ссылки для личной и рабочей почт.
Теперь вроде как полегче, будем наблюдать.</p>
<small><div style="float:right;font-size:85%;"><a href="/blog/2018/09/21/inbox-gmail/index.html#disqus_thread">0 Comments</a></div></small>
<div class="fb-share-button" data-href="/blog/2018/09/21/inbox-gmail/index.html" data-layout="button_count" data-size="small" data-mobile-iframe="true"><a class="fb-xfbml-parse-ignore" target="_blank" href="https://www.facebook.com/sharer/sharer.php">Поделиться</a></div><a href="https://twitter.com/intent/tweet?text=Inbox+%D0%92%D1%81%D1%91&url=avakhov.github.io%2Fblog%2F2018%2F09%2F21%2Finbox-gmail%2Findex.html" class="twitter-share-button">Tweet</a><style>.twitter-share-button{position:relative !important;left:10px;top:6px}</style>
</div>
</article>
<article class="post">
<h1 class="main"><a href="/blog/2018/09/16/mc-kazan/index.html">Мастер Класс в Казани</a></h1>
<div class="date">September 16, 2018</div>
<div class="entry">
<p>14 сентября провел <a href="https://devopsdays.com.ru">мастер-класс в Казани</a> по настройке докер-кластера,
полное название "Настройка докер кластера с использованием инструментов HashiCorp". Для меня формат
новый, но очень понравился. Вроде бы участники тоже остались довольны.</p>
<p>Мне хотелось провести интерактивную сессию только на чистой практике, чтобы каждый выполнил все
задания 100% и при этом уложиться в отведенный час. И это получилось! Я собрал тестовый стенд
на 16 человек, то есть это большой сервер, в котором крутятся 16 докер контейнеров с
нужными улититами, консоль пробрасывается прямо в браузер с
помощью <a href="https://github.com/yudai/gotty">gotty</a>, у каждого участника своя презентация, с командами
которые нужно выполнять</p>
<p>Вот так выглядела презентация участника:</p>
<p><a href="/assets/3/mc-kazan/2.png" target="_blank"><img style="width:350px" src="/assets/3/mc-kazan/2.png" /></a>
<a href="/assets/3/mc-kazan/1.png" target="_blank"><img style="width:350px" src="/assets/3/mc-kazan/1.png" /></a></p>
<p>Консоль:</p>
<p><a href="/assets/3/mc-kazan/3.png" target="_blank"><img style="width:350px" src="/assets/3/mc-kazan/3.png" /></a></p>
<p>Основная сложность мастер-классов, в том что их тяжело вести одному,
нужен ассистент, который помогает участникам, у кого что-то не получается. И вторая
сложность состоит в том, что уровень группы разный, кто-то выполняет задания быстрее, кто-то медленнее.
Быстрому всегда будет скучновато, а медленному тяжеловато.</p>
<p>Эти проблемы я попробовал нивелировать с помощью общего дешборда, на котором видны рабочие сессии всех
участников:</p>
<p><a href="/assets/3/mc-kazan/4.png" target="_blank"><img src="/assets/3/mc-kazan/4.png" /></a></p>
<p>Те кто, сделал шаг раньше, может наблюдать за прогрессом других, а также на дешборде легко оценить,
кто не справляется и целево подойти к нужному человеку. Это сработало и помогло удержать фокус
группы на занятии.</p>
<p>"Speed run" полного сценария занимает около 7 минут, состоит из 10-15 шагов. Но так-как вся группа ждала
выполнения каждого шага всеми участниками, то полный мастер класс занял 55 минут.</p>
<p>Избранные отзывы:</p>
<ul>
<li>Хороший формат для проведения презентаций, спасибо за workshop:)</li>
<li>Отличный интерактив! 10 динозавров из 10</li>
<li>Очень понравился интерактивный формат. Видно, что проделана работа по подготовке к занятию, что очень радует. Не хватило введения в используемые инструменты - многие использовали их первый раз.</li>
<li>Всё прикольно! Спасибо автору. Но конечно хочется не голой практики, а ещё и погружения одновременного в теорию</li>
</ul>
<p>Я очень рад таким отзывам, так как именно планировал максимально идеально провести практику
с нулем теории. Большое спасибо участникам, что пришли и прошли все задания, было 10 активных
пользователя и еще примерно столько же наблюдателей.</p>
<p>2 октября буду проводить еще одну сессию мастер-класса на
<a href="https://devopsconf.io/moscow/2018">DevOps Conf</a>, организаторы выделили времени в два раза больше,
поэтому планирую добавить теории и может быть еще практических заданий. Но цель будет такая же -
каждый участник поднимет настоящий докер кластер с мониторингом и сделает несколько выкаток тестовых
приложений. Ну и конечно напоследок почистит всю созданную инфраструктуру, так как есть время
создавать сервера и есть время удалять сервера, чтобы они не тратили деньги.</p>
<p>До встречи и хорошего настроения <img class='emoji' title=':cat:' alt=':cat:' src='https://assets.github.com/images/icons/emoji/unicode/1f431.png' height='20' width='20' align='absmiddle' /></p>
<small><div style="float:right;font-size:85%;"><a href="/blog/2018/09/16/mc-kazan/index.html#disqus_thread">0 Comments</a></div></small>
<div class="fb-share-button" data-href="/blog/2018/09/16/mc-kazan/index.html" data-layout="button_count" data-size="small" data-mobile-iframe="true"><a class="fb-xfbml-parse-ignore" target="_blank" href="https://www.facebook.com/sharer/sharer.php">Поделиться</a></div><a href="https://twitter.com/intent/tweet?text=%D0%9C%D0%B0%D1%81%D1%82%D0%B5%D1%80+%D0%9A%D0%BB%D0%B0%D1%81%D1%81+%D0%B2+%D0%9A%D0%B0%D0%B7%D0%B0%D0%BD%D0%B8&url=avakhov.github.io%2Fblog%2F2018%2F09%2F16%2Fmc-kazan%2Findex.html" class="twitter-share-button">Tweet</a><style>.twitter-share-button{position:relative !important;left:10px;top:6px}</style>
</div>
</article>
<article class="post">
<h1 class="main"><a href="/blog/2017/08/10/done/index.html">1 Year</a></h1>
<div class="date">August 10, 2017</div>
<div class="entry">
<p><a href="/blog/2016/08/10/reborn/index.html">/blog/2016/08/10/reborn</a> - done <img class='emoji' title=':smiley_cat:' alt=':smiley_cat:' src='https://assets.github.com/images/icons/emoji/unicode/1f63a.png' height='20' width='20' align='absmiddle' /> <img class='emoji' title=':heart_eyes_cat:' alt=':heart_eyes_cat:' src='https://assets.github.com/images/icons/emoji/unicode/1f63b.png' height='20' width='20' align='absmiddle' /> <img class='emoji' title=':scream_cat:' alt=':scream_cat:' src='https://assets.github.com/images/icons/emoji/unicode/1f640.png' height='20' width='20' align='absmiddle' />.
yo</p>
<small><div style="float:right;font-size:85%;"><a href="/blog/2017/08/10/done/index.html#disqus_thread">0 Comments</a></div></small>
<div class="fb-share-button" data-href="/blog/2017/08/10/done/index.html" data-layout="button_count" data-size="small" data-mobile-iframe="true"><a class="fb-xfbml-parse-ignore" target="_blank" href="https://www.facebook.com/sharer/sharer.php">Поделиться</a></div><a href="https://twitter.com/intent/tweet?text=1+Year&url=avakhov.github.io%2Fblog%2F2017%2F08%2F10%2Fdone%2Findex.html" class="twitter-share-button">Tweet</a><style>.twitter-share-button{position:relative !important;left:10px;top:6px}</style>
</div>
</article>
<article class="post">
<h1 class="main"><a href="/blog/2017/08/09/july/index.html">Форк несуществующего кода</a></h1>
<div class="date">August 9, 2017</div>
<div class="entry">
<p>В любом долгоиграющем проекте случается такая вещь. Одна команда проводит модернизацию какого-то старого решения, а у другой команды есть конкретная задача из этой же области. Например команда Superstars пилит новую крутую универсальную SSO-авторизацию, взамен в хвост и гриву захаченной, но рабочей старой. В тоже время команда SadAngryDudes в рамках срочного проекта BigMoney пробрасывает очередной костыль в текущую систему. (Господи, какую американизированную дичь я пишу, но мне очень хочется конкретный пример, пусть будет такой, вроде смысл получается передать).</p>
<p>У Джули, технического лидера команды SadAngryDudes, возникает желание делать код, базируясь на новой SSO, а не ковырятся в историческом <s>говне</s> коде. И я понимаю Джули, и вы понимаете Джули. Я много раз делал как Джули, но это к сожалению ошибка.
Правильно делать любой проект базируясь только на тех технологиях которые есть прямо сейчас. Да - это дороже, да это дублирование кода, да мир боль, а люди сволочи. На самом деле нет. Управленческий риск, что Superstars сорвут сроки, их решение окажется не таким радужным, а BigMoney не запустится в срок, не то что высок, а ровно 100%.</p>
<p>Наилучшая аналогия которую я придумал, это делая проект - вы как будто форкаете мастер, берете картину сегодняшнего мира. Где-то в параллельных форках работают ваши коллеги из других команд. Вы можете подмерживать мастер - добавлять себе уже стабилизированные технологии, которые появились после вашего форка. Вы даже можете смержиться с веткой другой команды - взять у них бета-версию какой-нибудь перспективной библиотеки, но вы не можете сделать форк от несуществующего кода. Делать проект базируясь на ещё не написанном коде команды, которая работает над другим проектом, гарантия срыва сроков и результата. </p>
<small><div style="float:right;font-size:85%;"><a href="/blog/2017/08/09/july/index.html#disqus_thread">0 Comments</a></div></small>
<div class="fb-share-button" data-href="/blog/2017/08/09/july/index.html" data-layout="button_count" data-size="small" data-mobile-iframe="true"><a class="fb-xfbml-parse-ignore" target="_blank" href="https://www.facebook.com/sharer/sharer.php">Поделиться</a></div><a href="https://twitter.com/intent/tweet?text=%D0%A4%D0%BE%D1%80%D0%BA+%D0%BD%D0%B5%D1%81%D1%83%D1%89%D0%B5%D1%81%D1%82%D0%B2%D1%83%D1%8E%D1%89%D0%B5%D0%B3%D0%BE+%D0%BA%D0%BE%D0%B4%D0%B0&url=avakhov.github.io%2Fblog%2F2017%2F08%2F09%2Fjuly%2Findex.html" class="twitter-share-button">Tweet</a><style>.twitter-share-button{position:relative !important;left:10px;top:6px}</style>
</div>
</article>
<article class="post">
<h1 class="main"><a href="/blog/2017/08/08/react/index.html">React App</a></h1>
<div class="date">August 8, 2017</div>
<div class="entry">
<p>Написал первое приложение на реакте для внутреннего использования. Ну прикольно получилось. Обратил внимание, что если делаешь crud на рейлс, то получается такой стандартный рейлс-crud. В реакте же получается in-place. Если приноровится, то на cra + react-router экспириенс из коробки получается лучше. </p>
<small><div style="float:right;font-size:85%;"><a href="/blog/2017/08/08/react/index.html#disqus_thread">0 Comments</a></div></small>
<div class="fb-share-button" data-href="/blog/2017/08/08/react/index.html" data-layout="button_count" data-size="small" data-mobile-iframe="true"><a class="fb-xfbml-parse-ignore" target="_blank" href="https://www.facebook.com/sharer/sharer.php">Поделиться</a></div><a href="https://twitter.com/intent/tweet?text=React+App&url=avakhov.github.io%2Fblog%2F2017%2F08%2F08%2Freact%2Findex.html" class="twitter-share-button">Tweet</a><style>.twitter-share-button{position:relative !important;left:10px;top:6px}</style>
</div>
</article>
<article class="post">
<h1 class="main"><a href="/blog/2017/08/07/sport/index.html">Спортивное программирование</a></h1>
<div class="date">August 7, 2017</div>
<div class="entry">
<p>Я много лет назад решил пару десятков задач с сайта <a href="http://www.spoj.com">http://www.spoj.com</a>.
Если к ним относится как к разминке мозга - очень клевые. Помню как писал там простую сортировку
на брейнфаке в одной из первых задач. Но решение контестов слабо связано с основной деятельностью, увы.</p>
<p>Если бы у меня было 10 параллельных жизней, то в половине из них я бы не заводил семью и стал
бы пьяницей, спортсменом, дауншифтером, контрибьютором опен-сорс и спортивным программистом соответственно
(правда в большинстве ипостасей еще бы пришлось бы жить с мамой, но ничего страшного, если жизней 10). Так
как параллельные жизни в этой реализации мира похоже не поддерживаются, приходится что-то совмещать, а
от чего-то отказываться.</p>
<small><div style="float:right;font-size:85%;"><a href="/blog/2017/08/07/sport/index.html#disqus_thread">0 Comments</a></div></small>
<div class="fb-share-button" data-href="/blog/2017/08/07/sport/index.html" data-layout="button_count" data-size="small" data-mobile-iframe="true"><a class="fb-xfbml-parse-ignore" target="_blank" href="https://www.facebook.com/sharer/sharer.php">Поделиться</a></div><a href="https://twitter.com/intent/tweet?text=%D0%A1%D0%BF%D0%BE%D1%80%D1%82%D0%B8%D0%B2%D0%BD%D0%BE%D0%B5+%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5&url=avakhov.github.io%2Fblog%2F2017%2F08%2F07%2Fsport%2Findex.html" class="twitter-share-button">Tweet</a><style>.twitter-share-button{position:relative !important;left:10px;top:6px}</style>
</div>
</article>
<article class="post">
<h1 class="main"><a href="/blog/2017/08/04/office/index.html">Офис</a></h1>
<div class="date">August 4, 2017</div>
<div class="entry">
<p>Ради настоящего Пауэрпойнта покупал на месяц Микрософт Офис. Я очень уважаю Микрософт, особенно как
они агрессивно вкладываются в облака, опенсорс, но при этом прилежно отдают дань традициям.
Офис все также располагается на компьютере довольно кучеряво. Очень рад, что недавно переставлял
комп с нуля и его ставить уже не стал.</p>
<p>У меня есть чеклист, что нужно настроить, чтобы начать комфотно работать.
Каждый раз этот чеклист уменьшается,
сейчас в нем 34 пункта, включая "скрывать док" и
"показывать экран при помещении мышки в правый нижний угол".</p>
<p>PS. Скитч ставить не стал, попробую прожить с яндекс диском, который все равно ставлю.</p>
<small><div style="float:right;font-size:85%;"><a href="/blog/2017/08/04/office/index.html#disqus_thread">0 Comments</a></div></small>
<div class="fb-share-button" data-href="/blog/2017/08/04/office/index.html" data-layout="button_count" data-size="small" data-mobile-iframe="true"><a class="fb-xfbml-parse-ignore" target="_blank" href="https://www.facebook.com/sharer/sharer.php">Поделиться</a></div><a href="https://twitter.com/intent/tweet?text=%D0%9E%D1%84%D0%B8%D1%81&url=avakhov.github.io%2Fblog%2F2017%2F08%2F04%2Foffice%2Findex.html" class="twitter-share-button">Tweet</a><style>.twitter-share-button{position:relative !important;left:10px;top:6px}</style>
</div>
</article>
<article class="post">
<h1 class="main"><a href="/blog/2017/08/03/shachid/index.html">Шахиджанян</a></h1>
<div class="date">August 3, 2017</div>
<div class="entry">
<p>В очередной раз встретил Владимира Владимировича в парке Сокольники. Я его традиционно узнал, он меня традиционно не узнал и как обычно поинтересовался где работаю и почему мы ещё не купили 100500 лицензий Соло на Клавиатуре. </p>
<p>Шахиджанян и не должен меня запомнить, представляю с каким количеством людей он общается. Однако я его безмерно уважаю. Соло на Клавиатуре я прошел много-много лет назад и с тех пор печатаю как волшебник. </p>
<small><div style="float:right;font-size:85%;"><a href="/blog/2017/08/03/shachid/index.html#disqus_thread">0 Comments</a></div></small>
<div class="fb-share-button" data-href="/blog/2017/08/03/shachid/index.html" data-layout="button_count" data-size="small" data-mobile-iframe="true"><a class="fb-xfbml-parse-ignore" target="_blank" href="https://www.facebook.com/sharer/sharer.php">Поделиться</a></div><a href="https://twitter.com/intent/tweet?text=%D0%A8%D0%B0%D1%85%D0%B8%D0%B4%D0%B6%D0%B0%D0%BD%D1%8F%D0%BD&url=avakhov.github.io%2Fblog%2F2017%2F08%2F03%2Fshachid%2Findex.html" class="twitter-share-button">Tweet</a><style>.twitter-share-button{position:relative !important;left:10px;top:6px}</style>
</div>
</article>
<article class="post">
<h1 class="main"><a href="/blog/2017/08/02/regexp/index.html">Регэкспы и кавычки</a></h1>
<div class="date">August 2, 2017</div>
<div class="entry">
<p>Проблема, которую будет решить нашим потомкам, это регэкспы, кавычки и их экранирование.
Пока людям приходится быть
черным поясам по слешам, чтобы вызывать sed по ssh из руби скрипта, жизнь - боль.</p>
<small><div style="float:right;font-size:85%;"><a href="/blog/2017/08/02/regexp/index.html#disqus_thread">0 Comments</a></div></small>
<div class="fb-share-button" data-href="/blog/2017/08/02/regexp/index.html" data-layout="button_count" data-size="small" data-mobile-iframe="true"><a class="fb-xfbml-parse-ignore" target="_blank" href="https://www.facebook.com/sharer/sharer.php">Поделиться</a></div><a href="https://twitter.com/intent/tweet?text=%D0%A0%D0%B5%D0%B3%D1%8D%D0%BA%D1%81%D0%BF%D1%8B+%D0%B8+%D0%BA%D0%B0%D0%B2%D1%8B%D1%87%D0%BA%D0%B8&url=avakhov.github.io%2Fblog%2F2017%2F08%2F02%2Fregexp%2Findex.html" class="twitter-share-button">Tweet</a><style>.twitter-share-button{position:relative !important;left:10px;top:6px}</style>
</div>
</article>
</div>
<!-- Pagination links -->
<div class="pagination">
<span class="previous">Previous</span>
<span class="page_number ">Page: 1 of 31</span>
<a href="/page2" class="next">Next</a>
</div>
<script id="dsq-count-scr" src="//vakhov-me.disqus.com/count.js" async></script>
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>
</div>
<div class="wrapper-footer">
<div class="container">
<footer class="footer">
<a href="http://github.com/avakhov"><svg width="40px" height="40px" viewBox="0 0 60 60" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns">
<path d="M0.336871032,30 C0.336871032,13.4314567 13.5672313,0 29.8877097,0 C46.208188,0 59.4385483,13.4314567 59.4385483,30 C59.4385483,46.5685433 46.208188,60 29.8877097,60 C13.5672313,60 0.336871032,46.5685433 0.336871032,30 Z M0.336871032,30" id="Github" fill="#333333" sketch:type="MSShapeGroup"></path>
<path d="M18.2184245,31.9355566 C19.6068506,34.4507902 22.2845295,36.0156764 26.8007287,36.4485173 C26.1561023,36.9365335 25.3817877,37.8630984 25.2749857,38.9342607 C24.4644348,39.4574749 22.8347506,39.62966 21.5674303,39.2310659 C19.7918469,38.6717023 19.1119377,35.1642642 16.4533306,35.6636959 C15.8773626,35.772144 15.9917933,36.1507609 16.489567,36.4722998 C17.3001179,36.9955141 18.0629894,37.6500075 18.6513541,39.04366 C19.1033554,40.113871 20.0531304,42.0259813 23.0569369,42.0259813 C24.2489236,42.0259813 25.0842679,41.8832865 25.0842679,41.8832865 C25.0842679,41.8832865 25.107154,44.6144649 25.107154,45.6761142 C25.107154,46.9004355 23.4507693,47.2457569 23.4507693,47.8346108 C23.4507693,48.067679 23.9990832,48.0895588 24.4396415,48.0895588 C25.3102685,48.0895588 27.1220883,47.3646693 27.1220883,46.0918317 C27.1220883,45.0806012 27.1382993,41.6806599 27.1382993,41.0860982 C27.1382993,39.785673 27.8372803,39.3737607 27.8372803,39.3737607 C27.8372803,39.3737607 27.924057,46.3153869 27.6704022,47.2457569 C27.3728823,48.3397504 26.8360115,48.1846887 26.8360115,48.6727049 C26.8360115,49.3985458 29.0168704,48.8505978 29.7396911,47.2571725 C30.2984945,46.0166791 30.0543756,39.2072834 30.0543756,39.2072834 L30.650369,39.1949165 C30.650369,39.1949165 30.6837446,42.3123222 30.6637192,43.7373675 C30.6427402,45.2128317 30.5426134,47.0792797 31.4208692,47.9592309 C31.9977907,48.5376205 33.868733,49.5526562 33.868733,48.62514 C33.868733,48.0857536 32.8436245,47.6424485 32.8436245,46.1831564 L32.8436245,39.4688905 C33.6618042,39.4688905 33.5387911,41.6768547 33.5387911,41.6768547 L33.5988673,45.7788544 C33.5988673,45.7788544 33.4186389,47.2733446 35.2190156,47.8992991 C35.8541061,48.1209517 37.2139245,48.1808835 37.277815,47.8089257 C37.3417055,47.4360167 35.6405021,46.8814096 35.6252446,45.7236791 C35.6157088,45.0178155 35.6567131,44.6059032 35.6567131,41.5379651 C35.6567131,38.470027 35.2438089,37.336079 33.8048426,36.4323453 C38.2457082,35.9766732 40.9939527,34.880682 42.3337458,31.9450695 C42.4383619,31.9484966 42.8791491,30.5737742 42.8219835,30.5742482 C43.1223642,29.4659853 43.2844744,28.1550957 43.3168964,26.6025764 C43.3092677,22.3930799 41.2895654,20.9042975 40.9014546,20.205093 C41.4736082,17.0182425 40.8060956,15.5675121 40.4961791,15.0699829 C39.3518719,14.6637784 36.5149435,16.1145088 34.9653608,17.1371548 C32.438349,16.3998984 27.0982486,16.4712458 25.0957109,17.3274146 C21.4005522,14.6875608 19.445694,15.0918628 19.445694,15.0918628 C19.445694,15.0918628 18.1821881,17.351197 19.1119377,20.6569598 C17.8961113,22.2028201 16.9902014,23.2968136 16.9902014,26.1963718 C16.9902014,27.8297516 17.1828264,29.2918976 17.6176632,30.5685404 C17.5643577,30.5684093 18.2008493,31.9359777 18.2184245,31.9355566 Z M18.2184245,31.9355566" id="Path" fill="#FFFFFF" sketch:type="MSShapeGroup"></path>
</svg>
</a>
<a href="http://instagram.com/avakhov"><svg width="40px" height="40px" viewBox="0 0 60 60" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns">
<path d="M0.786032408,30 C0.786032408,13.4314567 14.0163927,0 30.336871,0 C46.6573494,0 59.8877097,13.4314567 59.8877097,30 C59.8877097,46.5685433 46.6573494,60 30.336871,60 C14.0163927,60 0.786032408,46.5685433 0.786032408,30 Z M0.786032408,30" fill="#517FA4" sketch:type="MSShapeGroup"></path>
<path d="M42.8269231,45.1717917 C44.0541093,44.9073777 45.0568834,43.8680169 45.2967426,42.6147727 C45.3224877,42.4792986 45.3413675,42.3416464 45.3632509,42.2057367 L45.3632509,17.7942633 C45.3422257,17.6605316 45.3242041,17.5263643 45.2984589,17.3930683 C45.0354291,16.0256947 43.9245253,14.9645536 42.5604606,14.7750641 C42.5038213,14.7676588 42.4484692,14.7550261 42.392688,14.7450071 L18.2810541,14.7450071 C18.1355939,14.7715792 17.9892755,14.7916172 17.8459608,14.8247234 C16.5145067,15.1326983 15.5293251,16.2212827 15.339669,17.5908343 C15.3319455,17.647899 15.3203601,17.704528 15.3104912,17.7615927 L15.3104912,42.2397141 C15.3379527,42.3947906 15.3598361,42.5511739 15.394163,42.7053791 C15.688516,44.0270139 16.7998489,45.0515639 18.1218631,45.2240647 C18.185797,45.2319056 18.2501599,45.2445383 18.3140937,45.2549929 L42.3596484,45.2549929 C42.5158357,45.2279852 42.6724521,45.2057692 42.8269231,45.1717917 Z M18.5616764,27.1981692 C18.5616764,31.7132463 18.5612473,36.2283235 18.5621055,40.7434006 C18.5621055,41.3928922 19.1160556,41.9513416 19.7558229,41.9513416 C26.8082817,41.9517772 33.8603114,41.9517772 40.9127701,41.9513416 C41.5585447,41.9513416 42.1094912,41.3937634 42.1094912,40.7394801 C42.1099203,36.2296303 42.1094912,31.7202161 42.1094912,27.2108018 L42.1094912,27.1171461 L39.2406217,27.1171461 C39.6456789,28.4313755 39.7701139,29.7682565 39.611352,31.1308384 C39.451732,32.4938559 39.0192133,33.7623465 38.3146539,34.9336964 C37.6096655,36.1063532 36.6957121,37.0777591 35.5766557,37.8509633 C32.6760338,39.8565027 28.8571677,40.0329239 25.7793333,38.279166 C24.2234672,37.3935749 23.0018591,36.1586262 22.1501232,34.5673501 C20.8795994,32.1928508 20.6766416,29.7007373 21.4219642,27.1149681 C20.4702512,27.1158393 19.5224001,27.1158393 18.5616764,27.1158393 L18.5616764,27.1981692 Z M24.247496,29.9063443 C24.1994383,33.3655076 26.9271385,36.10766 30.1972035,36.1790998 C33.5998561,36.2531531 36.3520142,33.4931407 36.4236716,30.1363453 C36.4970453,26.6745684 33.7466035,23.8152373 30.3370856,23.8174154 C27.0039449,23.8152373 24.2942664,26.5377875 24.247496,29.9063443 Z M40.9543915,22.569834 C41.5907261,22.5537165 42.1090621,22.0000587 42.1090621,21.3531808 C42.1094912,20.3900515 42.1094912,19.4264865 42.1090621,18.4633572 C42.1090621,17.7724829 41.5705591,17.2227456 40.8908867,17.2223099 C39.9447519,17.2218743 38.9986171,17.2214387 38.0520532,17.2223099 C37.3740972,17.2231812 36.8338779,17.7742253 36.8334488,18.4650996 C36.8330197,19.4199524 36.8304452,20.3748052 36.8368815,21.3300936 C36.8377396,21.4725374 36.864343,21.6206441 36.9089679,21.7556826 C37.078886,22.2640372 37.537579,22.5759325 38.0992527,22.5785462 C38.5558003,22.5794174 39.0123479,22.5781106 39.4693245,22.5781106 C39.9636317,22.5724477 40.4596552,22.582031 40.9543915,22.569834 Z M40.9543915,22.569834" id="Path" fill="#FFFFFF" sketch:type="MSShapeGroup"></path>
</svg>
</a>
<!-- -->
<a href="http://twitter.com/avakhov"><svg width="40px" height="40px" viewBox="0 0 60 60" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns">
<path d="M0,30 C0,13.4314567 13.4508663,0 30.0433526,0 C46.6358389,0 60.0867052,13.4314567 60.0867052,30 C60.0867052,46.5685433 46.6358389,60 30.0433526,60 C13.4508663,60 0,46.5685433 0,30 Z M0,30" fill="#4099FF" sketch:type="MSShapeGroup"></path>
<path d="M29.2997675,23.8879776 L29.3627206,24.9260453 L28.3135016,24.798935 C24.4943445,24.3116787 21.1578281,22.6592444 18.3249368,19.8840023 L16.9399677,18.5069737 L16.5832333,19.5238563 C15.8277956,21.7906572 16.3104363,24.1845684 17.8842648,25.7946325 C18.72364,26.6844048 18.5347806,26.8115152 17.0868584,26.2818888 C16.5832333,26.1124083 16.1425613,25.985298 16.1005925,26.0488532 C15.9537019,26.1971486 16.457327,28.1249885 16.8560302,28.8876505 C17.4016241,29.9469033 18.5137962,30.9849709 19.7308902,31.5993375 L20.7591248,32.0865938 L19.5420308,32.1077788 C18.3669055,32.1077788 18.3249368,32.1289639 18.4508431,32.57385 C18.8705307,33.9508786 20.5282967,35.4126474 22.3749221,36.048199 L23.6759536,36.4930852 L22.5427971,37.1710069 C20.8640467,38.1455194 18.891515,38.6963309 16.9189833,38.738701 C15.9746862,38.759886 15.1982642,38.8446262 15.1982642,38.9081814 C15.1982642,39.1200319 17.7583585,40.306395 19.2482495,40.7724662 C23.7179224,42.1494948 29.0269705,41.5563132 33.0140027,39.2047722 C35.846894,37.5311528 38.6797853,34.2050993 40.0018012,30.9849709 C40.7152701,29.2689815 41.428739,26.1335934 41.428739,24.6294545 C41.428739,23.654942 41.4916922,23.5278317 42.6668174,22.3626537 C43.359302,21.6847319 44.0098178,20.943255 44.135724,20.7314044 C44.3455678,20.3288884 44.3245835,20.3288884 43.2543801,20.6890343 C41.4707078,21.324586 41.2188952,21.2398458 42.1002392,20.2865183 C42.750755,19.6085965 43.527177,18.3798634 43.527177,18.0197174 C43.527177,17.9561623 43.2124113,18.0620876 42.8556769,18.252753 C42.477958,18.4646036 41.6385828,18.7823794 41.0090514,18.9730449 L39.8758949,19.3331908 L38.8476603,18.634084 C38.281082,18.252753 37.4836756,17.829052 37.063988,17.7019416 C35.9937846,17.4053509 34.357003,17.447721 33.3917215,17.7866818 C30.768674,18.7400093 29.110908,21.1974757 29.2997675,23.8879776 Z M29.2997675,23.8879776" id="Path" fill="#FFFFFF" sketch:type="MSShapeGroup"></path>
</svg>
</a>
</footer>
</div>
</div>
<script>
(function (w,i,d,g,e,t,s) {w[d] = w[d]||[];t= i.createElement(g);
t.async=1;t.src=e;s=i.getElementsByTagName(g)[0];s.parentNode.insertBefore(t, s);
})(window, document, '_gscq','script','//widgets.getsitecontrol.com/74908/script.js');
</script>
</body>
</html>