-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
executable file
·812 lines (437 loc) · 26.8 KB
/
index.html
File metadata and controls
executable file
·812 lines (437 loc) · 26.8 KB
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
<!DOCTYPE html>
<!--[if IEMobile 7 ]><html class="no-js iem7"><![endif]-->
<!--[if lt IE 9]><html class="no-js lte-ie8"><![endif]-->
<!--[if (gt IE 8)|(gt IEMobile 7)|!(IEMobile)|!(IE)]><!--><html class="no-js" lang="en"><!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name='yandex-verification' content='5ea72ac393c6b7c7' />
<title>Dmitriy Savchenko</title>
<meta name="author" content="Dmitriy Savchenko">
<meta name="description" content="It’s been a while since I’ve started using virtualization. At first it was VirtualBox vms, then I discovered Vagrant and about half a …">
<!-- http://t.co/dKP3o1e -->
<meta name="HandheldFriendly" content="True">
<meta name="MobileOptimized" content="320">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="canonical" href="http://loginwashere.github.com">
<link href="/favicon.png" rel="icon">
<link href="/stylesheets/screen.css" media="screen, projection" rel="stylesheet" type="text/css">
<script src="/javascripts/modernizr-2.0.js"></script>
<script src="/javascripts/ender.js"></script>
<script src="/javascripts/octopress.js" type="text/javascript"></script>
<link href="/atom.xml" rel="alternate" title="Dmitriy Savchenko" type="application/atom+xml">
<!--Fonts from Google"s Web font directory at http://google.com/webfonts -->
<link href="http://fonts.googleapis.com/css?family=PT+Serif:regular,italic,bold,bolditalic" rel="stylesheet" type="text/css">
<link href="http://fonts.googleapis.com/css?family=PT+Sans:regular,italic,bold,bolditalic" rel="stylesheet" type="text/css">
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-10157693-11']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
</head>
<body >
<header role="banner"><hgroup>
<h1><a href="/">Dmitriy Savchenko</a></h1>
<h2>Don't panic</h2>
</hgroup>
</header>
<nav role="navigation"><ul class="subscription" data-subscription="rss">
<li><a href="/atom.xml" rel="subscribe-rss" title="subscribe via RSS">RSS</a></li>
</ul>
<form action="http://google.com/search" method="get">
<fieldset role="search">
<input type="hidden" name="q" value="site:loginwashere.github.com" />
<input class="search" type="text" name="q" results="0" placeholder="Search"/>
</fieldset>
</form>
<ul class="main-navigation">
<li><a href="/">Blog</a></li>
<li><a href="/blog/archives">Archives</a></li>
<li><a href="/about">About</a></li>
</ul>
</nav>
<div id="main">
<div id="content">
<div class="blog-index">
<article>
<header>
<h1 class="entry-title"><a href="/blog/2015/02/23/to-lxc-and-beyond/">To LXC and Beyond</a></h1>
<p class="meta">
<time datetime="2015-02-23T20:05:00+00:00" pubdate data-updated="true">Feb 23<span>rd</span>, 2015</time>
</p>
</header>
<div class="entry-content"><p><img src="http://i.imgur.com/g8wJ1ol.jpg" title="containers" ></p>
<p>It’s been a while since I’ve started using virtualization.</p>
<p>At first it was VirtualBox vms, then I discovered Vagrant and about half a year ago
I’ve noticed LXC and weirdly before that about Docker.</p>
<p>One may ask - why do you need such things and I try to answer.</p>
<p>When I found out about VirtualBox I used computer with Windows7 at work and at home.
Being PHP developer at that days meant that you mostly work with LAMP stack on server
and with some HTML + CSS + Javascript on client. As you can see I had Linux server and
development environment was set up on Windows machine.</p>
<p>It was ok most of the time, but this inconsistency had stub me in the back several times.
Then when I once again had fixed some weird bug I decided to start using Linux instead of Windows
on my development machine. And before installing Linux as second os I wanted to try some Linux distribution
without installing it and screwing all up, so I used VirtualBox for this.</p>
<p>Long term short I was using Ubuntu as my main os for development. Project after project tim goes by and
I started to notice some weird thing - after switching to new project some soft kept running in background
and number of processes in htop kept growing. Yeah, you may say - stop that process, remove it from upstart,
remove it from system or something else, but sometimes these projects may return to life and you would be
fixing bugs on them and you would need them kept in ready to go state pretty mach all the time.</p>
<p>This is when I returned to VirtualBox again. This time I installed Ubuntu Server on it and connected to the box
over ssh. I was able to install software I need without adding it to host machine, then I could stop and start the box
at any time - it was quite amazing. At that time I event wanted to buy bigger usb flash drive to bring my vm with me
from work to home and vise versa.</p>
<p>This approach worked fine for a while, but it had some flaws. You could stop and start vm but if you destroy it
you are screwed - you need to remember what you did to vm to make your soft work and you need to reapply these changes.
This can be some sort of a shell script with installation commands or something more complicated. This same script also
can be useful to your team members - they will setup theirs development environments just like you did. Also besides
software installations VirtualBox has many setting and options you need to setup every time by hand
or using not os friendly api. Having these problems I’ve started looking fo solution and after a while I’ve found one.
It was Vagrant.</p>
<p>Vagrant allows you to specify VirtualBox vm settings in Vagrantfile and also you can specify some provision for your box.
It can be simple shell script or maybe puppet manifetsts and modules or other provision tool. This way you need to setup
Vagrant and VirtualBox on you host machine and then all other soft will be installed inside vm using scripts stored
alongside your project files and therefore under version control. This way you won’t forget your dev setup and it won’t be lost.
Your team mates will be able to setup same development environment from scratch in minutes.</p>
<p>But as any super power this one comes with some downside. VirtualBox vm is resource consuming. You won’t be able to run
Vagrant vm box in production and you can run only several of them on your development environment. Another common problem
is files haring between host and guest machines or synced folders. If you have large project syncing process may slow you down
and ide will destroy your nerves by even slower reindex (yes, I’m talking about you Php or WebStorm).</p>
<p>And it was exactly the time I’ve heard about LXC - Linux Containers. They are less heavy than VirtualBox vms and in general
provide same functionality. You can create container from a template, connect to it and work inside like in vm.
One new feature that can be done with containers is running everything inside it. And by everything I mean everything.
App soft, git, ide. Yeah, right - ide. I know, I know it sounds weird, but it works. Also running everything
app related in one place means disk operations are much faster, for example your ide will reindex project faster,
changes to project will be applied fasted and in two ways.</p>
<p>Event If you feel sceptical about it you can try it out and then decide what to do next. Maybe you like it maybe not.</p>
<p>And some words about Docker. Docker can be compared to LXC but they decided to dot it other way. Docker container
is intended to run one app. For example if you have LAMP stack - all letters will be in separate containers. It is intended behavior.
You can run several apps in one container using something like supervisor. Also Docker provide way to specify your
container contents with Dockerfile and you can commit and push containers to repositories.</p>
<p>Thanks to <a href="https://github.com/Mak-Di">Mak-Di</a> and <a href="https://github.com/makarova">Vi</a> for pointing out to LXC and initial help.</p>
<p>Useful links:</p>
<ol>
<li><a href="https://www.virtualbox.org/">VirtualBox</a></li>
<li><a href="https://www.vagrantup.com/">Vagrant</a></li>
<li><a href="https://linuxcontainers.org/">Linux Containers</a></li>
<li><a href="https://linuxcontainers.org/lxc/articles/">Linux Containers introduction articles</a></li>
<li><a href="https://www.docker.com/">Docker</a></li>
<li><a href="https://blog.jessfraz.com/posts/docker-containers-on-the-desktop.html">Running desktop apps in docker container</a></li>
</ol>
</div>
</article>
<article>
<header>
<h1 class="entry-title"><a href="/blog/2014/12/15/zend-php-certification/">Zend PHP Certification</a></h1>
<p class="meta">
<time datetime="2014-12-15T20:04:00+00:00" pubdate data-updated="true">Dec 15<span>th</span>, 2014</time>
</p>
</header>
<div class="entry-content"><p><img src="http://i.imgur.com/djvX5U9.gif"></p>
<p>If you saw this film - <a href="http://www.imdb.com/title/tt0061722/">The Graduate</a>, you may remember something weird in that scene.</p>
<p>At last. Wow it was cool. Yay yeah. Wait, now what?</p>
<p>Happy pair enter the bus, they are laughing and shining with joy and then you notice something, as if they start to grasp
what happened. I can’t say that I felt exactly the same, but it was close. Maybe both cases can be connected with the
accomplishment of the goal, maybe something else, I’ll try to look closer and investigate this question, but not in this post.</p>
<p>So, “Zend PHP Certification” - basic facts:</p>
<ul>
<li>70 questions: various difficulty</li>
<li>90 minutes: you manage time, can skip questions, mark questions for future review</li>
<li>three question types: one answer, multiple answers (number of right answers is specified) and one where you need to type answer (nothing long)</li>
</ul>
<p>Sources that helped me to prepare for certification:</p>
<ul>
<li><a href="http://php.net/manual/en/">php.net/manual/en/</a> - this is obvious</li>
<li><a href="http://www.zend.com/en/services/certification/php-certification-study-guide">The Zend PHP Certification Study Guide</a> - this
guide covers fast forward all topics of the certification and has samples of questions.</li>
<li><a href="http://3v4l.org/">3v4l.org</a> - cool site which allow you to run php code against almost all versions of php</li>
<li><a href="http://zend-php.appspot.com/questions_list">zend-php.appspot.com/questions_list</a> - list of questions that you may or may
not see in test. Be cautious - check answers and read comments - not all questions solves in a right way. This may be confusing but also can be helpful.</li>
<li><a href="http://www.slideshare.net/carlosbuenosvinos/zend-php-53-demo-certification-test">http://www.slideshare.net/carlosbuenosvinos/zend-php-53-demo-certification-test</a> - this
presentation contains questions from if i’m not mistaken php 5.3 study guide and is quite old but also can be helpful.</li>
</ul>
</div>
</article>
<article>
<header>
<h1 class="entry-title"><a href="/blog/2014/12/15/tip-save-protected-document-openned-in-vim/">Tip: Save Document Opened in Vim Without Permissions</a></h1>
<p class="meta">
<time datetime="2014-12-15T19:47:00+00:00" pubdate data-updated="true">Dec 15<span>th</span>, 2014</time>
</p>
</header>
<div class="entry-content"><p>This one can save some time for you. How much? It depends on how often you use vim and what you do with it.</p>
<p>Imagine you opened a document im vim and started making changes. Time goes by and you decide to save the document.
And guess what - you do not have permissions to do this. You opened some config in /etc/something but you did this as regular user.</p>
<p>At this point you have several ways to overcome this problem, but I only use this one lately.</p>
<p>All you need is instead of typing</p>
<figure class='code'><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=''><span class='line'>:w</span></code></pre></td></tr></table></div></figure>
<p>to save document, type</p>
<figure class='code'><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=''><span class='line'>:w sudo tee %</span></code></pre></td></tr></table></div></figure>
<p>Well, I won’t pretend, at the moment I do not know what this command do exactly, but it helps.
This way you can save document (if you know user password or user do not need one and if user can run sudo command)</p>
</div>
</article>
<article>
<header>
<h1 class="entry-title"><a href="/blog/2014/10/21/symbol-grub-term-highlight-color-not-found/">Symbol ‘Grub_term_highlight_color’ Not Found</a></h1>
<p class="meta">
<time datetime="2014-10-21T22:42:00+00:00" pubdate data-updated="true">Oct 21<span>st</span>, 2014</time>
</p>
</header>
<div class="entry-content"><p>Those lines from title wasn’t exactly expected to appear after ubuntu 14.04 update.</p>
<p>It all started kinda from the wrong foot when I decided to finally update my home dual boot setup - ubuntu 13.04/win7.</p>
<p>During the update from 13.04 to 13.10 (it isn’t possible to update from 13.04 to 14.04 - you need to go through all steps)
Dropbox failed to update and I noticed this only when I got home from work in the evening. Day wasted.</p>
<p>But I decided that it wasn’t a big deal and I simply cancelled distro upgrade.
After reboot I noticed that I already have 13.10. That’s cool I thought andmoved to upgrade to 14.04 after removing Dropbox.
All went fine and in the end I clicked Reboot now in the modal window.</p>
<p>And that is when I faced black screen with error from title. To make colors darker - I even couldn’t get to bios when I pressed reboot like 10 times.
Strange behaviour. But then I switched computer off and on and was able to get to bios. Hooray.</p>
<p>Hopefully I have notebook and I was able to google solution for this inconvenience.
As it always happens first solution is to wipe all drives clean and reinstall everything.</p>
<p>No way I said and kept searching.
After some time I found this <a href="http://askubuntu.com/questions/449818/cant-find-boot-repair-package-for-the-newest-version-of-ubuntu">link</a> which helped me to solve my problem.</p>
<p>Basically all you need is:</p>
<ul>
<li>to create boot cd (wait what?) or flash stick</li>
<li>boot from it</li>
<li>select “Try ubuntu” option (I assume you created ubuntu boot cd/usb)</li>
<li>install boot-repair</li>
</ul>
<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>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>sudo add-apt-repository ppa:yannubuntu/boot-repair
</span><span class='line'>sudo sh -c "sed -i 's/trusty/saucy/g' /etc/apt/sources.list.d/yannubuntu-boot-repair-trusty.list"
</span><span class='line'>sudo apt-get update
</span><span class='line'>sudo apt-get install -y boot-repair && (boot-repair &)</span></code></pre></td></tr></table></div></figure>
<p>As you can see this helpful tool isn’t available for 14.04 and you need to switch it’s sources to previous ubuntu version.</p>
<ul>
<li>run</li>
</ul>
<figure class='code'><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=''><span class='line'>sudo boot-repair</span></code></pre></td></tr></table></div></figure>
<p>When tool starts it is quite easy to understand what to do (I selected recommended repair)
After some time it said that all done and I was able to load both new ubuntu and good old win7.</p>
</div>
</article>
<article>
<header>
<h1 class="entry-title"><a href="/blog/2014/09/30/tip-ssh-copy-id-alternative/">Tip: Ssh-copy-id Alternative</a></h1>
<p class="meta">
<time datetime="2014-09-30T00:32:00+00:00" pubdate data-updated="true">Sep 30<span>th</span>, 2014</time>
</p>
</header>
<div class="entry-content"><p>This one snippet also start to appear in my search results more often.</p>
<figure class='code'><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=''><span class='line'>cat ~/.ssh/id_rsa.pub | ssh -o PubkeyAuthentication=no user@192.168.33.10 "mkdir ~/.ssh; cat >> ~/.ssh/authorized_keys"
</span></code></pre></td></tr></table></div></figure>
<p>The key part of this one liner is:</p>
<figure class='code'><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=''><span class='line'>-o PubkeyAuthentication=no</span></code></pre></td></tr></table></div></figure>
<p> You can’t specify it for ssh-copy-id and without it you get this error</p>
<figure class='code'><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=''><span class='line'>$ Received disconnect from host: 2: Too many authentication failures for user</span></code></pre></td></tr></table></div></figure>
<p> Also other solutions can be found <a href="http://superuser.com/questions/187779/too-many-authentication-failures-for-username">here</a></p>
</div>
</article>
<article>
<header>
<h1 class="entry-title"><a href="/blog/2014/09/30/tip-delete-git-remote-tag/">Tip: Delete Git Remote Tag</a></h1>
<p class="meta">
<time datetime="2014-09-30T00:12:00+00:00" pubdate data-updated="true">Sep 30<span>th</span>, 2014</time>
</p>
</header>
<div class="entry-content"><p>For a quite long period of time I’ve been using this method to delete remote tag in git repository:</p>
<ul>
<li>Find myself in a situation when you totally need to remove that pushed tag</li>
<li>Feel frustrated, because even after doing this more than 10 times I still fail to remember the command</li>
<li>Google the command</li>
<li>Click on that purple link - first in search results for “git delete remote tag”</li>
<li>Look at the command and feel embarrassed again</li>
<li>Copy paste the command to the terminal window.</li>
</ul>
<p>Today must admit that I have the problem and the first step to overcome it - add link to solution to this blog:</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'>git tag -d 12345
</span><span class='line'>git push origin :refs/tags/12345</span></code></pre></td></tr></table></div></figure>
<p><a href="http://nathanhoad.net/how-to-delete-a-remote-git-tag">source</a></p>
</div>
</article>
<article>
<header>
<h1 class="entry-title"><a href="/blog/2012/01/07/virtualbox-guest-additions-reinstall/">VirtualBox Guest Additions Reinstall</a></h1>
<p class="meta">
<time datetime="2012-01-07T22:47:00+00:00" pubdate data-updated="true">Jan 7<span>th</span>, 2012</time>
</p>
</header>
<div class="entry-content"><p><img src="http://i.imgur.com/GubLdl.jpg"></p>
<p>Software development obviously needs some environment. After some time spent working as developer i’ve got strong filling,
that this envirement should be separated from my desktop. At least vitrually.</p>
</div>
<footer>
<a rel="full-article" href="/blog/2012/01/07/virtualbox-guest-additions-reinstall/">Read on →</a>
</footer>
</article>
<article>
<header>
<h1 class="entry-title"><a href="/blog/2011/12/31/start-playing-with-zend-framework-2/">Start Playing With Zend Framework 2</a></h1>
<p class="meta">
<time datetime="2011-12-31T05:08:00+00:00" pubdate data-updated="true">Dec 31<span>st</span>, 2011</time>
</p>
</header>
<div class="entry-content"><p><img src="http://i.imgur.com/Nlro8.png"></p>
<p>New version of framework comes with great deal of changes and still is in beta, but definetly worth looking at.</p>
</div>
<footer>
<a rel="full-article" href="/blog/2011/12/31/start-playing-with-zend-framework-2/">Read on →</a>
</footer>
</article>
<article>
<header>
<h1 class="entry-title"><a href="/blog/2011/11/24/simple-static-blog-using-octopress/">Simple Static Blog Using Octopress</a></h1>
<p class="meta">
<time datetime="2011-11-24T00:27:00+00:00" pubdate data-updated="true">Nov 24<span>th</span>, 2011</time>
</p>
</header>
<div class="entry-content"><p><img src="http://i.imgur.com/NGE2a.png" title="Image tag" ></p>
<p>Comes to end year of owning my first hosting. I win it in New Year contest from Logol on habrahabr.ru.
Nice hosting, but paying even small amount of money for the thing you use one or two times a month
(games twitter and work take almost all my time) is inpractical.</p>
</div>
<footer>
<a rel="full-article" href="/blog/2011/11/24/simple-static-blog-using-octopress/">Read on →</a>
</footer>
</article>
<div class="pagination">
<a href="/blog/archives">Blog Archives</a>
</div>
</div>
<aside class="sidebar">
<section>
<h1>About Me</h1>
<p><img src="http://i.imgur.com/OcrY2.jpg"></p>
<p>Dmitriy works in web development. Projects he worked on mostly rely on LAMP stack for backend and JavaScript on frontend.</p>
</section>
<section>
<p><a href="http://www.zend.com/en/yellow-pages/ZEND026591"
alt="Dmitriy Savchenko Zend Certified Engineer"><img src="http://www.zend.com/static-assets/img/zcedirectory/ZCPE-logo-XS.jpg"></a></p>
</section>
<section>
<h1>Recent Posts</h1>
<ul id="recent_posts">
<li class="post">
<a href="/blog/2015/02/23/to-lxc-and-beyond/">To LXC and beyond</a>
</li>
<li class="post">
<a href="/blog/2014/12/15/zend-php-certification/">Zend PHP Certification</a>
</li>
<li class="post">
<a href="/blog/2014/12/15/tip-save-protected-document-openned-in-vim/">Tip: Save document opened in vim without permissions</a>
</li>
<li class="post">
<a href="/blog/2014/10/21/symbol-grub-term-highlight-color-not-found/">symbol ‘grub_term_highlight_color’ not found</a>
</li>
<li class="post">
<a href="/blog/2014/09/30/tip-ssh-copy-id-alternative/">Tip: ssh-copy-id alternative</a>
</li>
</ul>
</section>
<section>
<h1>Github Repos</h1>
<ul id="gh_repos">
<li class="loading">Status updating…</li>
</ul>
<a href="https://github.com/loginwashere">@loginwashere</a> on Github
<script type="text/javascript">
$.domReady(function(){
if (!window.jXHR){
var jxhr = document.createElement('script');
jxhr.type = 'text/javascript';
jxhr.src = '/javascripts/libs/jXHR.js';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(jxhr, s);
}
github.showRepos({
user: 'loginwashere',
count: 0,
skip_forks: true,
target: '#gh_repos'
});
});
</script>
<script src="/javascripts/github.js" type="text/javascript"> </script>
</section>
<section>
<h1>Latest Tweets</h1>
<ul id="tweets">
<li class="loading">Status updating…</li>
</ul>
<script type="text/javascript">
$.domReady(function(){
getTwitterFeed("loginwashere", 4, false);
});
</script>
<script src="/javascripts/twitter.js" type="text/javascript"> </script>
<a href="http://twitter.com/loginwashere" class="twitter-follow-button" data-width="208px" data-show-count="false">Follow @loginwashere</a>
</section>
<section class="googleplus">
<h1>
<a href="https://plus.google.com/105401979618043032150?rel=author">
<img src="http://www.google.com/images/icons/ui/gprofile_button-32.png" width="32" height="32">
Google+
</a>
</h1>
</section>
</aside>
</div>
</div>
<footer role="contentinfo"><p>
Copyright © 2015 - Dmitriy Savchenko -
<span class="credit">Powered by <a href="http://octopress.org">Octopress</a></span>
</p>
</footer>
<script type="text/javascript">
var disqus_shortname = 'dontpanic42';
var disqus_script = 'count.js';
(function () {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
dsq.src = 'http://' + disqus_shortname + '.disqus.com/' + disqus_script;
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
}());
</script>
<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_US/all.js#appId=212934732101925&xfbml=1";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
<script type="text/javascript">
(function() {
var script = document.createElement('script'); script.type = 'text/javascript'; script.async = true;
script.src = 'https://apis.google.com/js/plusone.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(script, s);
})();
</script>
<script type="text/javascript">
(function(){
var twitterWidgets = document.createElement('script');
twitterWidgets.type = 'text/javascript';
twitterWidgets.async = true;
twitterWidgets.src = 'http://platform.twitter.com/widgets.js';
document.getElementsByTagName('head')[0].appendChild(twitterWidgets);
})();
</script>
</body>
</html>