PageSourceSearch

https://beerpla.net/about/

html beerpla.net collected 2026-10-02 03:03:59 UTC 63,017 bytes, 602 lines download raw bytes

1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3
4<head profile="http://gmpg.org/xfn/11">
5
6<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
7
8<title>About &laquo;  Artem Russakovskii&#039;s programming and technology blog</title>
9
10<style type="text/css" media="screen">
11  @import url( https://beerpla.net/wp-content/themes/emire/style.css?cachebust=3 );
12</style>
13
14<script src='/js/prettydigg/diggbutton.js' type="473e178a9b6bec6447cc218e-text/javascript"></script>
14
15<link rel="pingback" href="https://beerpla.net/xmlrpc.php" />
16
17<meta name='robots' content='max-image-preview:large' />
18<link rel="alternate" type="application/rss+xml" title="Artem Russakovskii&#039;s programming and technology blog &raquo; Feed" href="https://beerpla.net/feed/" />
19<link rel="alternate" type="application/rss+xml" title="Artem Russakovskii&#039;s programming and technology blog &raquo; Comments Feed" href="https://beerpla.net/comments/feed/" />
20<link rel="alternate" type="application/rss+xml" title="Artem Russakovskii&#039;s programming and technology blog &raquo; About Comments Feed" href="https://beerpla.net/about/feed/" />
21<link rel="alternate" title="oEmbed (JSON)" type="application/json+oembed" href="https://beerpla.net/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fbeerpla.net%2Fabout%2F" />
22<link rel="alternate" title="oEmbed (XML)" type="text/xml+oembed" href="https://beerpla.net/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fbeerpla.net%2Fabout%2F&#038;format=xml" />
23<style id="wp-img-auto-sizes-contain-inline-css">
24img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px}
25/*# sourceURL=wp-img-auto-sizes-contain-inline-css */
26</style>
27<style id="wp-emoji-styles-inline-css">
28
29	img.wp-smiley, img.emoji {
30		display: inline !important;
31		border: none !important;
32		box-shadow: none !important;
33		height: 1em !important;
34		width: 1em !important;
35		margin: 0 0.07em !important;
36		vertical-align: -0.1em !important;
37		background: none !important;
38		padding: 0 !important;
39	}
40/*# sourceURL=wp-emoji-styles-inline-css */
41</style>
42<style id="wp-block-library-inline-css">
43:root{--wp-block-synced-color:#7a00df;--wp-block-synced-color--rgb:122,0,223;--wp-bound-block-color:var(--wp-block-synced-color);--wp-editor-canvas-background:#ddd;--wp-admin-theme-color:#007cba;--wp-admin-theme-color--rgb:0,124,186;--wp-admin-theme-color-darker-10:#006ba1;--wp-admin-theme-color-darker-10--rgb:0,107,160.5;--wp-admin-theme-color-darker-20:#005a87;--wp-admin-theme-color-darker-20--rgb:0,90,135;--wp-admin-border-width-focus:2px}@media (min-resolution:192dpi){:root{--wp-admin-border-width-focus:1.5px}}.wp-element-button{cursor:pointer}:root .has-very-light-gray-background-color{background-color:#eee}:root .has-very-dark-gray-background-color{background-color:#313131}:root .has-very-light-gray-color{color:#eee}:root .has-very-dark-gray-color{color:#313131}:root .has-vivid-green-cyan-to-vivid-cyan-blue-gradient-background{background:linear-gradient(135deg,#00d084,#0693e3)}:root .has-purple-crush-gradient-background{background:linear-gradient(135deg,#34e2e4,#4721fb 50%,#ab1dfe)}:root .has-hazy-dawn-gradient-background{background:linear-gradient(135deg,#faaca8,#dad0ec)}:root .has-subdued-olive-gradient-background{background:linear-gradient(135deg,#fafae1,#67a671)}:root .has-atomic-cream-gradient-background{background:linear-gradient(135deg,#fdd79a,#004a59)}:root .has-nightshade-gradient-background{background:linear-gradient(135deg,#330968,#31cdcf)}:root .has-midnight-gradient-background{background:linear-gradient(135deg,#020381,#2874fc)}:root{--wp--preset--font-size--normal:16px;
43--wp--preset--font-size--huge:42px}.has-regular-font-size{font-size:1em}.has-larger-font-size{font-size:2.625em}.has-normal-font-size{font-size:var(--wp--preset--font-size--normal)}.has-huge-font-size{font-size:var(--wp--preset--font-size--huge)}:root .has-text-align-center{text-align:center}:root .has-text-align-left{text-align:left}:root .has-text-align-right{text-align:right}.has-fit-text{white-space:nowrap!important}#end-resizable-editor-section{display:none}.aligncenter{clear:both}.items-justified-left{justify-content:flex-start}.items-justified-center{justify-content:center}.items-justified-right{justify-content:flex-end}.items-justified-space-between{justify-content:space-between}.screen-reader-text{word-wrap:normal!important;border:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-break:normal!important}.screen-reader-text:focus{background-color:#ddd;clip-path:none;color:#444;display:block;font-size:1em;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}html :where(.has-border-color){border-style:solid}html :where([style^=border-color],[style*=";border-color"],[style*="; border-color"]){border-style:solid}html :where([style^=border-top-color],[style*=";border-top-color"],[style*="; border-top-color"]){border-top-style:solid}html :where([style^=border-right-color],[style*=";border-right-color"],[style*="; border-right-color"]){border-right-style:solid}html :where([style^=border-bottom-color],[style*=";border-bottom-color"],[style*="; border-bottom-color"]){border-bottom-style:solid}html :where([style^=border-left-color],[style*=";border-left-color"],[style*="; border-left-color"]){border-left-style:solid}html :where([style^=border-width],[style*=";border-width"],[style*="; border-width"]){border-style:solid}html :where([style^=border-top-width],[style*=";border-top-width"],[style*="; border-top-width"]){border-top-style:solid}html :where([style^=border-right-width],[style*=";border-right-width"],[style*="; border-right-width"]){border-right-style:solid}html :where([style^=border-bottom-width],[style*=";border-bottom-width"],[style*="; border-bottom-width"]){border-bottom-style:solid}html :where([style^=border-left-width],[style*=";border-left-width"],[style*="; border-left-width"]){border-left-style:solid}html :where(img[class*=wp-image-]){height:auto;max-width:100%}:where(figure){margin:0 0 1em}html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:var(--wp-admin--admin-bar--height,0px)}@media screen and (max-width:600px){html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:0px}}
44
45/*# sourceURL=/wp-includes/css/dist/block-library/common.min.css */
46</style>
47<style id="classic-theme-styles-inline-css">
48/*! This file is auto-generated */
49.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none}
50/*# sourceURL=/wp-includes/css/classic-themes.min.css */
51</style>
52
53<style id="global-styles-inline-css">
54:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgb(6,147,227) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgb(252,185,
540) 0%,rgb(255,105,0) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgb(255,105,0) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgb(255, 255, 255), 6px 6px rgb(0, 0, 0);--wp--preset--shadow--crisp: 6px 6px 0px rgb(0, 0, 0);}.wp-block-button{--wp--preset--dimension--25: 25%;--wp--preset--dimension--50: 50%;--wp--preset--dimension--75: 75%;--wp--preset--dimension--100: 100%;}:where(body) { margin: 0; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}body{padding-top: 0px;padding-right: 0px;padding-bottom: 0px;padding-left: 0px;}:root :where(.wp-element-button, .wp-block-button__link){background-color: #32373c;border-width: 0;color: #fff;font-family: inherit;font-size: inherit;font-style: inherit;font-weight: inherit;letter-spacing: inherit;line-height: inherit;padding-top: calc(0.667em + 2px);padding-right: calc(1.333em + 2px);padding-bottom: calc(0.667em + 2px);padding-left: calc(1.333em + 2px);text-decoration: none;text-transform: inherit;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}
54.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}
55/*# sourceURL=global-styles-inline-css */
56</style>
57
58<link rel='stylesheet' id='contact-form-7-css' href='https://beerpla.net/wp-content/plugins/contact-form-7/includes/css/styles.css?ver=6.1.7' media='all' />
59<link rel='stylesheet' id='fancybox-for-wp-css' href='https://beerpla.net/wp-content/plugins/fancybox-for-wordpress/assets/css/fancybox.min.css?ver=3.4.2' media='all' />
60<link rel='stylesheet' id='wp-pagenavi-css' href='https://beerpla.net/wp-content/plugins/wp-pagenavi/css/wp-pagenavi.css?ver=3.0.1' media='all' />
61<link rel='stylesheet' id='wp-syntax-css-css' href='https://beerpla.net/wp-content/plugins/wp-syntax/css/wp-syntax.css?ver=1.1' media='all' />
62<script id="jquery-core-js" src="https://beerpla.net/wp-includes/js/jquery/jquery.min.js?ver=3.7.1" type="473e178a9b6bec6447cc218e-text/javascript"></script>
vendor: 1 bytes, line 62
62
63<script id="jquery-migrate-js" src="https://beerpla.net/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1" type="473e178a9b6bec6447cc218e-text/javascript"></script>
vendor: 1 bytes, line 63
63
64<script id="fbfw-purify-js" src="https://beerpla.net/wp-content/plugins/fancybox-for-wordpress/assets/js/purify.min.js?ver=3.4.2" type="473e178a9b6bec6447cc218e-text/javascript"></script>
vendor: 1 bytes, line 64
64
65<script id="fancybox-for-wp-js" src="https://beerpla.net/wp-content/plugins/fancybox-for-wordpress/assets/js/jquery.fancybox.min.js?ver=3.4.2" type="473e178a9b6bec6447cc218e-text/javascript"></script>
vendor: 1 bytes, line 65
65
66<script id="save_pre_from_js-js" src="https://beerpla.net/wp-content/plugins/save-my-pre/save-pre.js?ver=7.1.2" type="473e178a9b6bec6447cc218e-text/javascript"></script>
66
67<link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://beerpla.net/xmlrpc.php?rsd" />
68<meta name="generator" content="WordPress 7.1.2" />
69<link rel="canonical" href="https://beerpla.net/about/" />
70<link rel='shortlink' href='https://beerpla.net/?p=926' />
71<!-- Fancybox for WordPress v3.4.2 -->
72<style type="text/css">
73	.fancybox-slide--image .fancybox-content{background-color:#FFFFFF}
74	div.fancybox-caption{display:none !important;}
75	img.fancybox-image{border-width:10px;border-color:#FFFFFF;border-style:solid;}
76	div.fancybox-bg{background-color:rgba(102,102,102,0.3);opacity:1 !important;}
77	div.fancybox-content{border-color:#FFFFFF}
78	div#fancybox-title{background-color:#FFFFFF}
79	div#fancybox-title-inside{color:#333333}
80	div.fancybox-content{background-color:#FFFFFF}
81	div.fancybox-caption p.caption-title{display:inline-block}
82	div.fancybox-caption p.caption-title,div.fancybox-content p.caption-title{font-size:14px}
83	div.fancybox-caption p.caption-title{color:#333333}
84	div.fancybox-caption{color:#333333}
85	div.fancybox-caption p.caption-title{background:#fff;width:auto;padding:10px 30px;}div.fancybox-content p.caption-title{color:#333333;margin:0;padding:5px 0;}
86	body.fancybox-active .fancybox-container .fancybox-stage .fancybox-content .fancybox-close-small{display:block;}
87</style>
88<script type="473e178a9b6bec6447cc218e-text/javascript">
89	(function () {
90		if (typeof window.jQuery === 'undefined') { return; }
91		jQuery(function () {
92			var fbfwIsSingular = true;
93
94			// Copy the title of every IMG tag onto its parent A so FancyBox can show it.
95			jQuery.fn.getTitle = function () {
96				jQuery("a[data-fancybox]").each(function () {
97	var $link = jQuery(this);
98	if ($link.attr("data-fbfw-title") !== undefined) { return; }
99	var title = $link.children("img").attr("title") || '';
100	var figCaptionHtml = $link.next("figcaption").html() || '';
101	var processedCaption = figCaptionHtml;
102	if (figCaptionHtml.length && typeof DOMPurify === 'function') {
103		processedCaption = DOMPurify.sanitize(figCaptionHtml, {USE_PROFILES: {html: true}});
104	} else if (figCaptionHtml.length) {
105		processedCaption = jQuery("<div>").text(figCaptionHtml).html();
106	}
107	var newTitle = title;
108	if (processedCaption.length) {
109		newTitle = title.length ? title + " " + processedCaption : processedCaption;
110	}
111	if (newTitle.length) { $link.attr("data-fbfw-title", newTitle); }
112});
113				return this;
114			};
115
116			var fbfwOptions = {"loop":false,"smallBtn":true,"zoomOpacity":"auto","animationEffect":"fade","animationDuration":500,"transitionEffect":"fade","transitionDuration":300,"overlayShow":true,"overlayOpacity":0.3,"titleShow":true,"titlePosition":"inside","keyboard":true,"showCloseButton":true,"arrows":true,"clickContent":false,"clickSlide":"close","wheel":false,"toolbar":true,"preventCaptionOverlap":true};
117		fbfwOptions.mobile = { clickContent: function (current) { return current.type === "image" ? "toggleControls" : false; }, clickSlide: function (current) { return current.type === "image" ? "close" : "close"; } };
118		fbfwOptions.onInit = function () {};
119		fbfwOptions.onDeactivate = function () {};
120		fbfwOptions.beforeClose = function () {};
121		fbfwOptions.afterShow = function () {};
122		fbfwOptions.afterClose = function () {};
123		fbfwOptions.caption = function (instance, item) {
124	var $link = jQuery(this);
125	// data-fbfw-title is what getTitle() collects; a hand-written title attribute
126	// still works as a fallback for anyone relying on the old behaviour.
127	var title = $link.attr("data-fbfw-title");
128	if (title === undefined) { title = $link.attr("title"); }
129	if (title === undefined && $link.context) { title = $link.context.title; }
130	title = title || '';
131	var caption = $link.data('caption') || '';
132	if (item.type === 'image' && title.length) {
133		caption = (caption.length ? caption + '<br />' : '') + '<p class="caption-title">' + jQuery("<div>").text(title).html() + '</p>';
134	}
135	if (typeof DOMPurify === "function" && caption.length) {
136		return DOMPurify.sanitize(caption, {USE_PROFILES: {html: true}});
137	}
138	return jQuery("<div>").text(caption).html();
139};
140		fbfwOptions.afterLoad = function (instance, current) {
141	var captionContent = current.opts.caption || '';
142	var sanitized = '';
143	if (typeof DOMPurify === 'function' && captionContent.length) {
144		sanitized = DOMPurify.sanitize(captionContent, {USE_PROFILES: {html: true}});
145	} else if (captionContent.length) {
146		sanitized = jQuery("<div>").text(captionContent).html();
147	}
148	if (sanitized.length) {
149		current.$content.append(jQuery('<div class="fancybox-custom-caption inside-caption" style="position:absolute;left:0;right:0;color:#000;margin:0 auto;bottom:0;text-align:center;background-color:#FFFFFF;"></div>').html(sanitized));
150	}
151};
152			// A dialog needs an accessible name; FancyBox 3 ships role="dialog" with
153			// none, which fails WCAG 4.1.2 for screen reader users. See issue #104.
154			jQuery(document).on('onInit.fb', function (e, instance) {
155				if (instance && instance.$refs && instance.$refs.container) {
156					instance.$refs.container.attr({
157						'aria-modal': 'true',
158						'aria-label': "Image lightbox"					});
159				}
160			});
161
162			function fbfwBind() {
163				var thumbnails = jQuery("a:has(img)").not(".nolightbox").not(".envira-gallery-link").not(".ngg-simplelightbox").filter(function () { return /\.(jpe?g|png|gif|mp4|webp|bmp|pdf)(\?[^/]*)*$/i.test(jQuery(this).attr("href")); });
164
165				// Anything that is not an image, video or PDF opens in an iframe.
166				var iframeLinks = jQuery('.fancyboxforwp').filter(function () {
167					return !/\.(jpe?g|png|gif|mp4|webp|bmp|pdf)(\?[^/]*)*$/i.test(jQuery(this).attr('href'));
168				}).filter(function () {
169					return !/vimeo|youtube/i.test(jQuery(this).attr('href'));
170				});
171				iframeLinks.attr({"data-type": "iframe"}).getTitle();
172
173	if (fbfwIsSingular) {
174		thumbnails.addClass("fancyboxforwp").attr("data-fancybox", "gallery").getTitle();
175		iframeLinks.attr({"data-fancybox": "gallery"}).getTitle();
176	} else {
177		var posts = jQuery(".post");
178		posts.each(function () {
179			var idx = posts.index(this);
180			jQuery(this).find(thumbnails).addClass("fancyboxforwp").attr("data-fancybox", "gallery" + idx).attr("rel", "fancybox" + idx).getTitle();
181			jQuery(this).find(iframeLinks).attr({"data-fancybox": "gallery" + idx}).attr("rel", "fancybox" + idx).getTitle();
182		});
183	}
184				// Re-applied rather than delegated: FancyBox's global [data-fancybox]
185				// handler would open new links with default options, ignoring every
186				// setting on this page.
187				jQuery("a.fancyboxforwp").fancyboxforwp(fbfwOptions);
188			}
189
190			fbfwBind();
191
192			/*
193			 * Infinite scroll, lazy loading and AJAX filters insert thumbnails after
194			 * this script has run, and those links were never bound. Re-scan when the
195			 * document gains nodes, skipping FancyBox's own DOM so opening the lightbox
196			 * cannot retrigger us. See issues #25 and #69.
197			 */
198			if (window.MutationObserver && document.body) {
199				var fbfwPending = null;
200				new MutationObserver(function (mutations) {
201					for (var i = 0; i < mutations.length; i++) {
202						var added = mutations[i].addedNodes;
203						for (var j = 0; j < added.length; j++) {
204							var n = added[j];
205							if (n.nodeType !== 1) { continue; }
206							if (n.closest && n.closest('.fancybox-container')) { continue; }
207							var isLink = n.tagName === 'A' && n.querySelector && n.querySelector('img');
208							var hasLink = n.querySelector && n.querySelector('a img');
209							if (isLink || hasLink) {
210								clearTimeout(fbfwPending);
211								fbfwPending = setTimeout(fbfwBind, 200);
212								return;
213							}
214						}
215					}
216				}).observe(document.body, {childList: true, subtree: true});
217			}
218		});
219	})();
220</script>
220
221<!-- END Fancybox for WordPress -->
222	<link rel="stylesheet" href="https://beerpla.net/wp-content/plugins/wp-note/style.css" type="text/css" media="screen" />
223<!-- Google tag (gtag.js) -->
vendor: 65 bytes, lines 223-224
223
224<script async src="https://www.googletagmanager.com/gtag/js?id=
224G-ZP14G1QEQ7
vendor: 61 bytes, line 224
224" type="473e178a9b6bec6447cc218e-text/javascript"></script>
225<script type="473e178a9b6bec6447cc218e-text/javascript">
226  
vendor: 138 bytes, lines 226-230
226window.dataLayer = window.dataLayer || [];
227  function gtag(){dataLayer.push(arguments);}
228  gtag('js', new Date());
229
230  gtag('config', '
230G-ZP14G1QEQ7
vendor: 5 bytes, line 230
230');
231</script>
231
232
233<div id="fb-root"></div>
234<script type="473e178a9b6bec6447cc218e-text/javascript">(function(d, s, id) {
235  var js, fjs = d.getElementsByTagName(s)[0];
236  if (d.getElementById(id)) return;
237  js = d.createElement(s); js.id = id;
238  js.src = "//connect.facebook.net/en_US/sdk.js#xfbml=1&appId=181899531241&version=v2.0";
239  fjs.parentNode.insertBefore(js, fjs);
240}(document, 'script', 'facebook-jssdk'));</script>
240
241
242</head>
243<body >
244<div id="header">
245	<div id="header_inner">
246		<h1><a href="https://beerpla.net/">Artem Russakovskii&#039;s programming and technology blog</a></h1>
247		<div class="description">where things have nothing to do with beer &#8211; tutorials, tips, how-tos, thoughts, hacks, and other techy nonsense</div>
248		<div id="search">
249			<form id="searchform" method="get" action="https://beerpla.net">
250				<input id="s" type="text" name="s" value="" />
251				<input id="searchsubmit" class="button_press" type="button" value="Search" />
252			</form>
253		</div><!-- end #search -->
254	</div>
255</div>
256<div id="nav">
257	<div id="navwrap">
258		<ul>
259			<li><a href="https://beerpla.net/">Home</a></li>
260							<li class="cat-item cat-item-819"><a href="https://beerpla.net/category/tips/">Tips</a>
261</li>
262	<li class="cat-item cat-item-676"><a href="https://beerpla.net/category/tutorials/">Tutorials</a>
263</li>
264				<li class="cat-item cat-item-297"><a href="https://beerpla.net/category/android/">Android</a>
265</li>
266	<li class="cat-item cat-item-344"><a href="https://beerpla.net/category/wordpress/">Wordpress</a>
267</li>
268				<li class="cat-item cat-item-18"><a href="https://beerpla.net/category/programming/">Programming</a>
269</li>
270				<li class="cat-item cat-item-145"><a href="https://beerpla.net/category/databases/">Databases</a>
271</li>
272	<li class="cat-item cat-item-13"><a href="https://beerpla.net/category/technology/">Technology</a>
273</li>
274				<li class="cat-item cat-item-25"><a href="https://beerpla.net/category/wtf/">WTF?</a>
275</li>
276			<li class="page_item page-item-926 current_page_item"><a href="https://beerpla.net/about/" aria-current="page">About</a></li>
277		</ul>
278	</div>
279</div>
280
281<div id="wrap">
282<div id="content">
283											<div class="entry entry-1" id="post-926">
284				<div class="entrytitle">
285					<div class='entrytitle-right'>
286						<div class='commentbox'>
287							<a href="https://beerpla.net/about/#comments" class="commentslink" ><span class="dsq-postid" data-dsqidentifier="926 http://beerpla.net/?page_id=926">4</span></a>						</div>
288						<div class="commentbox-tail"></div>
289					</div>
290					<div class='entrytitle-left'>
291						<h2><a href="https://beerpla.net/about/" rel="bookmark" title="Permanent Link to About">About</a></h2><br>
292											</div>
293					<div class="clear"></div>
294				</div>
295								<div class="clear"></div>
296
297				<div class="entrybody">
298					<p>
299											</p>
300					<div id="toc-926-1-box" class="toc toc-right" style="max-width:200px"><a class="toc-header" href="javascript:;" title="Table Of Contents (click to expand/collapse)" onclick="if (!window.__cfRLUnblockHandlers) return false; tocToggle('#toc-926-1', '#toc-926-1-box')" data-cf-modified-473e178a9b6bec6447cc218e-="">Table Of Contents</a><ul id="toc-926-1"><li class="toc-level-2 active"><a rel="bookmark nofollow" href="#welcome" title="Welcome">Welcome</a></li><li class="toc-level-2 active"><a rel="bookmark nofollow" href="#bio" title="Bio">Bio</a></li><li class="toc-level-2 active"><a rel="bookmark nofollow" href="#contact" title="Contact">Contact</a></li><li class="toc-level-2"><a rel="bookmark nofollow" href="#comments" title="Comments">Comments (4)</a></li></ul></div><a class="toc-anchor" name="welcome"></a><h2>Welcome</h2>
301<p>beer planet is Artem Russakovskii&#039;s personal homepage and an outlet for his useful and not so useful ramblings about life, programming, databases, humor, and other nonsense.</p>
302<p>Beer? Planet? Awesome idea, isn&#039;t it? Now that we&#039;re clear about how awesome it is, feel free to look around the site.</p>
303<p>Oh, and in case you were wondering, you won&#039;t find anything related to beer or astronomy here. I just thought <em>beer planet </em>was a cool name. Don&#039;t you?</p>
304<a class="toc-anchor" name="bio"></a><h2>Bio</h2>
305<p><em>Last updated: 2011.</em></p>
306<p>Artem grew up in Ukraine and moved to the US in April 1999. He settled in San Francisco and in 2001 started attending University of California Davis with a declared Computer Science major. In 2006, Artem received his Computer Science BS degree along with the BA in Russian.</p>
307<p>Currently, Artem lives in San Francisco with his beautiful wife Milla and works at a social network and online address book company <a href="http://www.plaxo.com">Plaxo</a>. His current passion is <a href="http://www.androidpolice.com">AndroidPolice.com</a> which he founded in March of 2010. Previously, Artem spent 3 years at a video search engine company called <a href="http://www.blinkx.com">Blinkx</a>.</p>
308<p>Most of the time you will find Artem tinkering with one of his 10 PCs, writing new blog posts, programming, reading <a href="http://reddit.com/user/archon810">reddit</a>, <a href="https://www.twitter.com/ArtemR">tweeting</a>, or preparing for world domination.</p>
309<p>
309Artem values organization, thinking ahead, careful research, low bureaucracy, and good communication.</p>
310<a class="toc-anchor" name="contact"></a><h2>Contact</h2>
311<p>Feel free to contact Artem with any comments or suggestions by filling out the form below or emailing admin [at] beerpla [dot] net.</p>
312
313<div class="wpcf7 no-js" id="wpcf7-f1623-p926-o1" lang="" dir="ltr" data-wpcf7-id="1623">
314<div class="screen-reader-response"><p role="status" aria-live="polite" aria-atomic="true"></p> <ul></ul></div>
315<form action="/about/#wpcf7-f1623-p926-o1" method="post" class="wpcf7-form init" aria-label="Contact form" novalidate="novalidate" data-status="init">
316<fieldset class="hidden-fields-container"><input type="hidden" name="_wpcf7" value="1623" /><input type="hidden" name="_wpcf7_version" value="6.1.7" /><input type="hidden" name="_wpcf7_locale" value="" /><input type="hidden" name="_wpcf7_unit_tag" value="wpcf7-f1623-p926-o1" /><input type="hidden" name="_wpcf7_container_post" value="926" /><input type="hidden" name="_wpcf7_posted_data_hash" value="" />
317</fieldset>
318<p>Your Name (required)
319</p>
320<p><span class="wpcf7-form-control-wrap" data-name="your-name"><input size="40" maxlength="400" class="wpcf7-form-control wpcf7-text wpcf7-validates-as-required" aria-required="true" aria-invalid="false" value="" type="text" name="your-name" /></span>
321</p>
322<p>Your Email (required)
323</p>
324<p><span class="wpcf7-form-control-wrap" data-name="your-email"><input size="40" maxlength="400" class="wpcf7-form-control wpcf7-email wpcf7-validates-as-required wpcf7-text wpcf7-validates-as-email" aria-required="true" aria-invalid="false" value="" type="email" name="your-email" /></span>
325</p>
326<p>Subject
327</p>
328<p><span class="wpcf7-form-control-wrap" data-name="your-subject"><input size="40" maxlength="400" class="wpcf7-form-control wpcf7-text" aria-invalid="false" value="" type="text" name="your-subject" /></span>
329</p>
330<p>Your Message
331</p>
332<p><span class="wpcf7-form-control-wrap" data-name="your-message"><textarea cols="40" rows="10" maxlength="2000" class="wpcf7-form-control wpcf7-textarea" aria-invalid="false" name="your-message"></textarea></span>
333</p>
334<p><span class="wpcf7-form-control-wrap" data-name="quiz-51"><label><span class="wpcf7-quiz-label">Are you a human? Fill in the blank: ____pla.net</span> <input size="40" class="wpcf7-form-control wpcf7-quiz" autocomplete="off" aria-required="true" aria-invalid="false" type="text" name="quiz-51" /></label><input type="hidden" name="_wpcf7_quiz_answer_quiz-51" value="3097e1a815736b3a59edb8670e7e840c" /></span>
335</p>
336<p><input class="wpcf7-form-control wpcf7-submit has-spinner" type="submit" value="Send" />
337</p><p style="display: none !important;" class="akismet-fields-container" data-prefix="_wpcf7_ak_"><label>&#916;<textarea name="_wpcf7_ak_hp_textarea" cols="45" rows="8" maxlength="100"></textarea></label><input type="hidden" id="ak_js_1" name="_wpcf7_ak_js" value="47"/>
337<script type="473e178a9b6bec6447cc218e-text/javascript">
338document.getElementById( "ak_js_1" ).setAttribute( "value", ( new Date() ).getTime() );
339</script>
339
340</p><div class="wpcf7-response-output" aria-hidden="true"></div>
341</form>
342</div>
343
344				</div>
345
346        
347				<div class="entrymeta">
348					<div class="postinfo">
349					<div class="clear"></div>
350											</div>
351				</div>
352
353			</div>
354			<div class="commentsblock">
355				
356<div id="disqus_thread"></div>
357			</div>
358				<div class="navigation">
359					</div>
360
361	</div>
362
363	<div id="sidebar">
364		<ul>
365<li id="custom_html-2" class="widget_text widget widget_custom_html"><h2 class="widgettitle">About Me</h2>
366<div class="textwidget custom-html-widget"><b>Update:</b> As you can see, this site is no longer being updated as of 2012.
367<hr>
368<img style="float: left; margin-right: 15px; margin-bottom:5px; border: none; display:inline;" src="http://www.gravatar.com/avatar/c37b8da72a7863e599c8ed11fbb3983a?rating=X&amp;default=http://beerpla.net/no_avatar.gif" width="50" height="50"/> beer planet is a blog about technology, programming, computers, and geek life. It is run by Artem Russakovskii - a local San Francisco geek who is currently pursuing his own projects and regularly enjoys hacking Android, PHP, CSS, Javascript, AJAX, Perl, and regular expressions, working on Wordpress plugins and tools, tweaking MySQL queries and server settings, administering Linux machines, blogging, learning new things, and other geeky stuff.
369<p>Artem loves commenting on other people's blogs and reading comments on his own, so go ahead and leave one.
370</p>
371
372<div style="text-align: center;">
373
374<a href="http://feeds.feedburner.com/BeerPlanet" style=" background:none;"><img src="http://feeds.feedburner.com/~fc/BeerPlanet?bg=006600&amp;fg=FFFFFF&amp;anim=1" height="26" width="88" style="border:0;" alt="" /></a>
375
376<p><a href="https://twitter.com/ArtemR" style="text-decoration:none;background:none" rel="nofollow"><img src="https://beerpla.net/images/favicon_twitter.png" alt="View Artem Russakovskii's Twitter profile" style="vertical-align: middle;border:0px" border="0" height="16" width="16"></a>
377<a href="http://www.linkedin.com/in/artemrussakovskii" style="text-decoration:none;background:none" rel="nofollow"><img src="https://beerpla.net/images/favicon_linkedin.png" alt="View Artem Russakovskii's LinkedIn profile" style="vertical-align: middle;border:0px" border="0" height="16" width="16"></a>
378	<a href="https://www.facebook.com/artem.russakovskii" style="text-decoration:none;background:none" rel="nofollow"><img src="https://beerpla.net/images/favicon_facebook.gif" alt="View Artem Russakovskii's Facebook profile" style="vertical-align: middle;border:0px" border="0"></a>
379 <a href="http://stackoverflow.com/users/47680/artem-russakovskii" style="text-decoration:none;background:none" rel="nofollow"><img src="https://beerpla.net/images/favicon_stackoverflow.ico" alt="View Artem Russakovskii's Stack Overflow profile" style="vertical-align: middle;border:0px" border="0" height="16" width="16"></a>
380<a href="http://serverfault.com/users/2491/artem-russakovskii" style="text-decoration:none;background:none" rel="nofollow"><img src="https://beerpla.net/images/favicon_serverfault.ico" alt="View Artem Russakovskii's Server Fault profile" style="vertical-align: middle;border:0px" border="0" height="16" width="16"></a>
381	</p>
382</div>
383<div style="margin: 10px auto; width:208px"><a href="http://stackexchange.com/users/20106/artem-russakovskii"><img src="http://stackexchange.com/users/flair/20106.png?theme=dark" /></a></div></div></li>
384<li id="pages-2" class="widget widget_pages"><h2 class="widgettitle">Pages</h2>
385
386			<ul>
387				<li class="page_item page-item-926 current_page_item"><a href="https://beerpla.net/about/" aria-current="page">About</a></li>
388<li class="page_item page-item-920 page_item_has_children"><a href="https://beerpla.net/projects/">Projects</a>
389<ul class='children'>
390	<li class="page_item page-item-1480"><a href="https://beerpla.net/projects/smartdomdocument-a-smarter-php-domdocument-class/">SmartDOMDocument &#8211; A Smarter PHP DOMDocument Class</a></li>
391</ul>
392</li>
393			</ul>
394
395			</li>
396<li id="categories-1" class="widget widget_categories"><h2 class="widgettitle">Categories</h2>
397
398			<ul>
399					<li class="cat-item cat-item-297"><a href="https://beerpla.net/category/android/">Android</a> (8)
400</li>
401	<li class="cat-item cat-item-15"><a href="https://beerpla.net/category/awesomeness/">Awesomeness</a> (59)
402</li>
403	<li class="cat-item cat-item-1"><a href="https://beerpla.net/category/beerplanet/">Beer Planet</a> (12)
404</li>
405	<li class="cat-item cat-item-494"><a href="https://beerpla.net/category/c/">C</a> (1)
406</li>
407	<li class="cat-item cat-item-683"><a href="https://beerpla.net/category/csharp/">C Sharp</a> (1)
408</li>
409	<li class="cat-item cat-item-682"><a href="https://beerpla.net/category/cpp/">C++</a> (1)
410</li>
411	<li class="cat-item cat-item-655"><a href="https://beerpla.net/category/css/">CSS</a> (4)
412</li>
413	<li class="cat-item cat-item-145"><a href="https://beerpla.net/category/databases/">Databases</a> (35)
414</li>
415	<li class="cat-item cat-item-694"><a href="https://beerpla.net/category/eclipse/">Eclipse</a> (2)
416</li>
417	<li class="cat-item cat-item-23"><a href="https://beerpla.net/category/entertainment/">Entertainment</a> (12)
418</li>
419	<li class="cat-item cat-item-421"><a href="https://beerpla.net/category/firefox/">Firefox</a> (4)
420</li>
421	<li class="cat-item cat-item-589"><a href="https://beerpla.net/category/gaming-stuff/">Gaming</a> (1)
422</li>
423	<li class="cat-item cat-item-259"><a href="https://beerpla.net/category/google/">Google</a> (3)
424</li>
425	<li class="cat-item cat-item-22"><a href="https://beerpla.net/category/humor/">Humor</a> (38)
426</li>
427	<li class="cat-item cat-item-961"><a href="https://beerpla.net/category/inspiration/">Inspiration</a> (1)
428</li>
429	<li class="cat-item cat-item-651"><a href="https://beerpla.net/category/java/">Java</a> (4)
430</li>
431	<li class="cat-item cat-item-654"><a href="https://beerpla.net/category/javascript/">JavaScript</a> (5)
432</li>
433	<li class="cat-item cat-item-17"><a href="https://beerpla.net/category/linux/">Linux</a> (38)
434</li>
435	<li class="cat-item cat-item-11"><a href="https://beerpla.net/category/my_favorites/">My Favorites</a> (27)
436</li>
437	<li class="cat-item cat-item-29"><a href="https://beerpla.net/category/mysql/">MySQL</a> (5)
438</li>
439	<li class="cat-item cat-item-205"><a href="https://beerpla.net/category/performance/">Performance</a> (2)
440</li>
441	<li class="cat-item cat-item-35"><a href="https://beerpla.net/category/perl/">Perl</a> (4)
442</li>
443	<li class="cat-item cat-item-20"><a href="https://beerpla.net/category/personal/">Personal</a> (18)
444</li>
445	<li class="cat-item cat-item-681"><a href="https://beerpla.net/category/php/">PHP</a> (6)
446</li>
447	<li class="cat-item cat-item-429"><a href="https://beerpla.net/category/politics/">Politics</a> (1)
448</li>
449	<li class="cat-item cat-item-18"><a href="https://beerpla.net/category/programming/">Programming</a> (65)
450</li>
451	<li class="cat-item cat-item-437"><a href="https://beerpla.net/category/python/">Python</a> (2)
452</li>
453	<li class="cat-item cat-item-1042"><a href="https://beerpla.net/category/reviews/">Reviews</a> (1)
454</li>
455	<li class="cat-item cat-item-684"><a href="https://beerpla.net/category/ruby/">Ruby</a> (1)
456</li>
457	<li class="cat-item cat-item-21"><a href="https://beerpla.net/category/security/">Security</a> (6)
458</li>
459	<li class="cat-item cat-item-747"><a href="https://beerpla.net/category/solr/">Solr</a> (2)
460</li>
461	<li class="cat-item cat-item-19"><a href="https://beerpla.net/category/sports/">Sports</a> (4)
462</li>
463	<li class="cat-item cat-item-16"><a href="https://beerpla.net/category/stuff/">Stuff</a> (24)
464</li>
465	<li class="cat-item cat-item-345"><a href="https://beerpla.net/category/svn/">SVN</a> (2)
466</li>
467	<li class="cat-item cat-item-13"><a href="https://beerpla.net/category/technology/">Technology</a> (42)
468</li>
469	<li class="cat-item cat-item-819"><a href="https://beerpla.net/category/tips/">Tips</a> (24)
470</li>
471	<li class="cat-item cat-item-676"><a href="https://beerpla.net/category/tutorials/">Tutorials</a> (13)
472</li>
473	<li class="cat-item cat-item-602"><a href="https://beerpla.net/category/twitter-stuff/">Twitter</a> (8)
474</li>
475	<li class="cat-item cat-item-960"><a href="https://beerpla.net/category/web-design/">Web Design</a> (1)
476</li>
477	<li class="cat-item cat-item-344"><a href="https://beerpla.net/category/wordpress/">Wordpress</a> (15)
478</li>
479	<li class="cat-item cat-item-25"><a href="https://beerpla.net/category/wtf/">WTF?</a> (9)
480</li>
481			</ul>
482
483			</li>
484<li id="tag_cloud-2" class="widget widget_tag_cloud"><h2 class="widgettitle">Tag Cloud</h2>
485<div class="tagcloud"><a href="https://beerpla.net/tag/android/" class="tag-cloud-link tag-link-1142 tag-link-position-1" style="font-size: 13.6pt;" aria-label="Android (11 items)">Android</a>
486<a href="https://beerpla.net/tag/application/" class="tag-cloud-link tag-link-255 tag-link-position-2" style="font-size: 8pt;" aria-label="application (4 items)">application</a>
487<a href="https://beerpla.net/tag/chrome/" class="tag-cloud-link tag-link-418 tag-link-position-3" style="font-size: 8pt;" aria-label="chrome (4 items)">chrome</a>
488<a href="https://beerpla.net/tag/conference/" class="tag-cloud-link tag-link-160 tag-link-position-4" style="font-size: 16.252631578947pt;" aria-label="conference (17 items)">conference</a>
489<a href="https://beerpla.net/tag/email/" class="tag-cloud-link tag-link-340 tag-link-position-5" style="font-size: 8pt;" aria-label="email (4 items)">email</a>
490<a href="https://beerpla.net/tag/error/" class="tag-cloud-link tag-link-387 tag-link-position-6" style="font-size: 9.1789473684211pt;" aria-label="error (5 items)">error</a>
491<a href="https://beerpla.net/tag/extension/" class="tag-cloud-link tag-link-151 tag-link-position-7" style="font-size: 8pt;" aria-label="extension (4 items)">extension</a>
492<a href="https://beerpla.net/tag/fast/" class="tag-cloud-link tag-link-352 tag-link-position-8" style="font-size: 8pt;" aria-label="fast (4 items)">fast</a>
493<a href="https://beerpla.net/tag/featured/" class="tag-cloud-link tag-link-514 tag-link-position-9" style="font-size: 10.210526315789pt;" aria-label="featured (6 items)">featured</a>
494<a href="https://beerpla.net/tag/file/" class="tag-cloud-link tag-link-153 tag-link-position-10" style="font-size: 8pt;" aria-label="file (4 items)">file</a>
495<a href="https://beerpla.net/tag/firefox/" class="tag-cloud-link tag-link-1145 tag-link-position-11" style="font-size: 14.631578947368pt;" aria-label="Firefox (13 items)">Firefox</a>
496<a href="https://beerpla.net/tag/google/" class="tag-cloud-link tag-link-1141 tag-link-position-12" style="font-size: 14.631578947368pt;" aria-label="Google (13 items)">Google</a>
497<a href="https://beerpla.net/tag/greasemonkey/" class="tag-cloud-link tag-link-552 tag-link-position-13" style="font-size: 9.1789473684211pt;" aria-label="greasemonkey (5 items)">greasemonkey</a>
498<a href="https://beerpla.net/tag/guide/" class="tag-cloud-link tag-link-77 tag-link-position-14" style="font-size: 8pt;" aria-label="guide (4 items)">guide</a>
499<a href="https://beerpla.net/tag/install/" class="tag-cloud-link tag-link-289 tag-link-position-15" style="font-size: 8pt;" aria-label="install (4 items)">install</a>
500<a href="https://beerpla.net/tag/installation/" class="tag-cloud-link tag-link-67 tag-link-position-16" style="font-size: 8pt;" aria-label="installation (4 items)">installation</a>
501<a href="https://beerpla.net/tag/internet-explorer/" class="tag-cloud-link tag-link-540 tag-link-position-17" style="font-size: 9.1789473684211pt;" aria-label="internet explorer (5 items)">internet explorer</a>
502<a href="https://beerpla.net/tag/iphone/" class="tag-cloud-link tag-link-38 tag-link-position-18" style="font-size: 9.1789473684211pt;" aria-label="iphone (5 items)">iphone</a>
503<a href="https://beerpla.net/tag/java/" class="tag-cloud-link tag-link-1148 tag-link-position-19" style="font-size: 9.1789473684211pt;" aria-label="Java (5 items)">Java</a>
504<a href="https://beerpla.net/tag/javascript/" class="tag-cloud-link tag-link-1149 tag-link-position-20" style="font-size: 10.210526315789pt;" aria-label="JavaScript (6 items)">JavaScript</a>
505<a href="https://beerpla.net/tag/linux/" class="tag-cloud-link tag-link-1133 tag-link-position-21" style="font-size: 14.042105263158pt;" aria-label="Linux (12 items)">Linux</a>
506<a href="https://beerpla.net/tag/mobile/" class="tag-cloud-link tag-link-258 tag-link-position-22" style="font-size: 8pt;" aria-label="mobile (4 items)">mobile</a>
507<a href="https://beerpla.net/tag/mysql/" class="tag-cloud-link tag-link-1138 tag-link-position-23" style="font-size: 22pt;" aria-label="MySQL (44 items)">MySQL</a>
508<a href="https://beerpla.net/tag/new/" class="tag-cloud-link tag-link-331 tag-link-position-24" style="font-size: 8pt;" aria-label="new (4 items)">new</a>
509<a href="https://beerpla.net/tag/performance/" class="tag-cloud-link tag-link-1140 tag-link-position-25" style="font-size: 10.210526315789pt;" aria-label="Performance (6 items)">Performance</a>
510<a href="https://beerpla.net/tag/perl/" class="tag-cloud-link tag-link-1139 tag-link-position-26" style="font-size: 14.042105263158pt;" aria-label="Perl (12 items)">Perl</a>
511<a href="https://beerpla.net/tag/phone/" class="tag-cloud-link tag-link-257 tag-link-position-27" style="font-size: 8pt;" aria-label="phone (4 items)">phone</a>
512<a href="https://beerpla.net/tag/plugin/" class="tag-cloud-link tag-link-346 tag-link-position-28" style="font-size: 10.947368421053pt;" aria-label="plugin (7 items)">plugin</a>
513<a href="https://beerpla.net/tag/problem/" class="tag-cloud-link tag-link-278 tag-link-position-29" style="font-size: 13.010526315789pt;
513" aria-label="problem (10 items)">problem</a>
514<a href="https://beerpla.net/tag/screen/" class="tag-cloud-link tag-link-54 tag-link-position-30" style="font-size: 9.1789473684211pt;" aria-label="screen (5 items)">screen</a>
515<a href="https://beerpla.net/tag/script/" class="tag-cloud-link tag-link-46 tag-link-position-31" style="font-size: 10.210526315789pt;" aria-label="script (6 items)">script</a>
516<a href="https://beerpla.net/tag/search/" class="tag-cloud-link tag-link-606 tag-link-position-32" style="font-size: 9.1789473684211pt;" aria-label="search (5 items)">search</a>
517<a href="https://beerpla.net/tag/server/" class="tag-cloud-link tag-link-140 tag-link-position-33" style="font-size: 8pt;" aria-label="server (4 items)">server</a>
518<a href="https://beerpla.net/tag/solution/" class="tag-cloud-link tag-link-427 tag-link-position-34" style="font-size: 9.1789473684211pt;" aria-label="solution (5 items)">solution</a>
519<a href="https://beerpla.net/tag/sun/" class="tag-cloud-link tag-link-108 tag-link-position-35" style="font-size: 8pt;" aria-label="sun (4 items)">sun</a>
520<a href="https://beerpla.net/tag/suse/" class="tag-cloud-link tag-link-50 tag-link-position-36" style="font-size: 9.1789473684211pt;" aria-label="suse (5 items)">suse</a>
521<a href="https://beerpla.net/tag/svn/" class="tag-cloud-link tag-link-1144 tag-link-position-37" style="font-size: 9.1789473684211pt;" aria-label="SVN (5 items)">SVN</a>
522<a href="https://beerpla.net/tag/tip/" class="tag-cloud-link tag-link-172 tag-link-position-38" style="font-size: 10.210526315789pt;" aria-label="tip (6 items)">tip</a>
523<a href="https://beerpla.net/tag/twitter/" class="tag-cloud-link tag-link-336 tag-link-position-39" style="font-size: 12.421052631579pt;" aria-label="twitter (9 items)">twitter</a>
524<a href="https://beerpla.net/tag/update/" class="tag-cloud-link tag-link-347 tag-link-position-40" style="font-size: 11.684210526316pt;" aria-label="update (8 items)">update</a>
525<a href="https://beerpla.net/tag/video/" class="tag-cloud-link tag-link-363 tag-link-position-41" style="font-size: 9.1789473684211pt;" aria-label="video (5 items)">video</a>
526<a href="https://beerpla.net/tag/windows/" class="tag-cloud-link tag-link-785 tag-link-position-42" style="font-size: 10.210526315789pt;" aria-label="windows (6 items)">windows</a>
527<a href="https://beerpla.net/tag/wordpress/" class="tag-cloud-link tag-link-1143 tag-link-position-43" style="font-size: 15.073684210526pt;" aria-label="Wordpress (14 items)">Wordpress</a>
528<a href="https://beerpla.net/tag/xml/" class="tag-cloud-link tag-link-185 tag-link-position-44" style="font-size: 8pt;" aria-label="xml (4 items)">xml</a>
529<a href="https://beerpla.net/tag/youtube/" class="tag-cloud-link tag-link-230 tag-link-position-45" style="font-size: 9.1789473684211pt;" aria-label="youtube (5 items)">youtube</a></div>
530</li>
531<li id="linkcat-1080" class="widget widget_links"><h2 class="widgettitle">My Sites</h2>
532
533	<ul class='xoxo blogroll'>
534<li><a href="http://www.androidpolice.com" rel="me" target="_blank">AndroidPolice.com</a></li>
535<li><a href="https://www.apkmirror.com" rel="me" title="#apkplz" target="_blank">APKMirror.com</a></li>
536
537	</ul>
538</li>
539
540<li id="recent-comments-2" class="widget widget_recent_comments"><h2 class="widgettitle">Recent Comments</h2>
541<ul id="recentcomments"><li class="recentcomments"><span class="comment-author-link">Sadiq Hassan</span> on <a href="https://beerpla.net/2006/06/06/amazing-flash-animator-vs-animation/#comment-78015">Amazing Flash: Animator vs Animation</a></li><li class="recentcomments"><span class="comment-author-link">Roobear</span> on <a href="https://beerpla.net/2008/12/16/the-ultimate-programming-language-lolcode/#comment-78014">The Ultimate Programming Language &#8211; LOLCODE</a></li><li class="recentcomments"><span class="comment-author-link"><a href="https://devdiscus.com/wordpress/65566/wordpress-qa-may-23-2021-458-pm-186/" class="url" rel="ugc external nofollow">WordPress Q&amp;A - May 23, 2021, 4:58 pm - 186 - Dev Discus</a></span> on <a href="https://beerpla.net/2010/01/13/wordpress-plugin-development-how-to-include-css-and-javascript-conditionally-and-only-when-needed-by-the-posts/#comment-77930">[WordPress Plugin Development] How To Include CSS and JavaScript Conditionally And Only When Needed By The Posts</a></li><li class="recentcomments"><span class="comment-author-link"><a href="https://devdiscus.com/wordpress/64557/wordpress-qa-may-15-2021-813-pm-507/" class="url" rel="ugc external nofollow">WordPress Q&amp;A - May 15, 2021, 8:13 pm - 507 - Dev Discus</a></span> on <a href="https://beerpla.net/2010/01/13/wordpress-plugin-development-how-to-include-css-and-javascript-conditionally-and-only-when-needed-by-the-posts/#comment-77928">[WordPress Plugin Development] How To Include CSS and JavaScript Conditionally And Only When Needed By The Posts</a></li><li class="recentcomments"><span class="comment-author-link"><a href="https://devdiscus.com/wordpress/81/what-is-the-preferred-way-to-add-custom-javascript-files-to-the-site/" class="url" rel="ugc external nofollow">What is the preferred way to add custom javascript files to the site? - Dev Discus</a></span> on <a href="https://beerpla.net/2010/01/13/wordpress-plugin-development-how-to-include-css-and-javascript-conditionally-and-only-when-needed-by-the-posts/#comment-77927">[WordPress Plugin Development] How To Include CSS and JavaScript Conditionally And Only When Needed By The Posts</a></li><li class="recentcomments"><span class="comment-author-link"><a href="https://devdiscus.com/wordpress/178/conditionally-loading-javascript-css-for-shortcodes/" class="url" rel="ugc external nofollow">Conditionally Loading JavaScript/CSS for Shortcodes - Dev Discus</a></span> on <a href="https://beerpla.net/2010/01/13/wordpress-plugin-development-how-to-include-css-and-javascript-conditionally-and-only-when-needed-by-the-posts/#comment-77926">[WordPress Plugin Development] How To Include CSS and JavaScript Conditionally And Only When Needed By The Posts</a></li><li class="recentcomments"><span class="comment-author-link"><a href="https://sarversystems.com/android-news-page-5078-of-5078-android-police/" class="url" rel="ugc external nofollow">Android News - Page 5078 of 5078 - Android Police - SarverSystems</a></span> on <a href="https://beerpla.net/2009/11/21/meet-firefox-for-mobile-video-feature-highlights-more-info/#comment-77924">Meet Firefox For Mobile [Video + Feature Highlights + More Info]</a></li><li class="recentcomments"><span class="comment-author-link"><a href="https://informata.info/programare/este-posibil-sa-legati-fisierele-din-depozitele-svn-astfel-o/" class="url" rel="ugc external nofollow">Este posibil să legați fișierele din depozitele SVN astfel încât un fișier să fie de fapt o referință la un alt fișier din alt depozit?</a></span> on <a href="https://beerpla.net/2009/06/20/how-to-properly-set-svn-svnexternals-property-in-svn-command-line/#comment-77923">How To Properly Set SVN svn:externals Property In SVN Command Line</a></li><li class="recentcomments"><span class="comment-author-link"><a href="https://all-android.com/android-news-page-5059-of-5059-android-police" class="url" rel="ugc external nofollow">Android News - Page 5059 of 5059 - Android Police - All-Android</a></span> on <a href="https://beerpla.net/2009/11/21/meet-firefox-for-mobile-video-feature-highlights-more-info/#comment-77922">Meet Firefox For Mobile [Video + Feature Highlights + More Info]</a></li><li class="recentcomments"><span class="comment-author-link"><a href="https://sarversystems.com/android-news-page-5058-of-5058-android-police/" class="url" rel="ugc external nofollow">Android News - Page 5058 of 5058 - Android Police - SarverSystems</a></span> on <a href="https://beerpla.net/2009/11/21/meet-firefox-for-mobile-video-feature-highlights-more-info/#comment-77921">Meet Firefox For Mobile [Video + Feature Highlights + More Info]</a></li></ul></li>
542		</ul>
543	</div>
544
545</div>
546<div id="footer">
547
548<br>.: 84 queries :.: 0.137s :.: nexus2 :.
549
550<script type="speculationrules">
551{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/emire/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]}
552</script>
vendor: 1 bytes, line 552
552
553<script type="473e178a9b6bec6447cc218e-text/javascript">
554function tocToggle(toc, box) {
555	var q = jQuery(toc);
556	if (!q) return;
557	q.slideToggle('fast', function() {
558		jQuery(box).toggleClass('toc-collapsed', q.css('display') == 'none');
559	});
560}
561</script>
vendor: 2 bytes, line 561
561
562<script id="wp-hooks-js" src="https://beerpla.net/wp-includes/js/dist/hooks.min.js?ver=f0f188028580e8dc1255" type="473e178a9b6bec6447cc218e-text/javascript"></script>
vendor: 1 bytes, line 562
562
563<script id="wp-i18n-js" src="https://beerpla.net/wp-includes/js/dist/i18n.min.js?ver=1dfe7db3940c23ea9216" type="473e178a9b6bec6447cc218e-text/javascript"></script>
vendor: 1 bytes, line 563
563
564<script id="wp-i18n-js-after" type="473e178a9b6bec6447cc218e-text/javascript">
565wp.i18n.setLocaleData( { 'text direction\u0004ltr': [ 'ltr' ] } );
566//# sourceURL=wp-i18n-js-after
567</script>
vendor: 1 bytes, line 567
567
568<script id="swv-js" src="https://beerpla.net/wp-content/plugins/contact-form-7/includes/swv/js/index.js?ver=6.1.7" type="473e178a9b6bec6447cc218e-text/javascript"></script>
vendor: 1 bytes, line 568
568
569<script id="contact-form-7-js-before" type="473e178a9b6bec6447cc218e-text/javascript">
570var wpcf7 = {
571    "api": {
572        "root": "https:\/\/beerpla.net\/wp-json\/",
573        "namespace": "contact-form-7\/v1"
574    }
575};
576//# sourceURL=contact-form-7-js-before
577</script>
vendor: 1 bytes, line 577
577
578<script id="contact-form-7-js" src="https://beerpla.net/wp-content/plugins/contact-form-7/includes/js/index.js?ver=6.1.7" type="473e178a9b6bec6447cc218e-text/javascript"></script>
vendor: 1 bytes, line 578
578
579<script id="disqus_count-js-extra" type="473e178a9b6bec6447cc218e-text/javascript">
580var countVars = {"disqusShortname":"beerplanet"};
581//# sourceURL=disqus_count-js-extra
582</script>
vendor: 1 bytes, line 582
582
583<script id="disqus_count-js" src="https://beerpla.net/wp-content/plugins/disqus-comment-system/public/js/comment_count.js?ver=3.1.4" type="473e178a9b6bec6447cc218e-text/javascript"></script>
vendor: 1 bytes, line 583
583
584<script id="disqus_embed-js-extra" type="473e178a9b6bec6447cc218e-text/javascript">
585var embedVars = {"disqusConfig":{"integration":"wordpress 3.1.4 7.1.2"},"disqusIdentifier":"926 http://beerpla.net/?page_id=926","disqusShortname":"beerplanet","disqusTitle":"About","disqusUrl":"https://beerpla.net/about/","postId":"926"};
586//# sourceURL=disqus_embed-js-extra
587</script>
vendor: 1 bytes, line 587
587
588<script id="disqus_embed-js" src="https://beerpla.net/wp-content/plugins/disqus-comment-system/public/js/comment_embed.js?ver=3.1.4" type="473e178a9b6bec6447cc218e-text/javascript"></script>
vendor: 1 bytes, line 588
588
589<script id="wp-syntax-js-js" src="https://beerpla.net/wp-content/plugins/wp-syntax/js/wp-syntax.js?ver=1.1" type="473e178a9b6bec6447cc218e-text/javascript"></script>
vendor: 1 bytes, line 589
589
590<script defer id="akismet-frontend-js" src="https://beerpla.net/wp-content/plugins/akismet/_inc/akismet-frontend.js?ver=1785900793" type="473e178a9b6bec6447cc218e-text/javascript"></script>
vendor: 1 bytes, line 590
590
591<script id="wp-emoji-settings" type="application/json">
592{"baseUrl":"https://s.w.org/images/core/emoji/17.0.2/72x72/","ext":".png","svgUrl":"https://s.w.org/images/core/emoji/17.0.2/svg/","svgExt":".svg","source":{"concatemoji":"https://beerpla.net/wp-includes/js/wp-emoji-release.min.js?ver=7.1.2"}}
593</script>
vendor: 1 bytes, line 593
593
594<script type="473e178a9b6bec6447cc218e-module">
595/*! This file is auto-generated */
596var e="script#wp-emoji-settings",t=document.querySelector(e);if(!(t instanceof HTMLScriptElement))throw new Error("Element missing: "+e);const r=JSON.parse(t.text),s=(window._wpemojiSettings=r,"wpEmojiSettingsSupports"),o=["flag","emoji"];function i(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(s,JSON.stringify(t))}catch(e){}}function c(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0);const r=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);return t.every((e,t)=>e===r[t])}function p(e,t){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var n=e.getImageData(16,16,1,1);for(let e=0;e<n.data.length;e++)if(0!==n.data[e])return!1;return!0}function u(e,t,n,r){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\udde8\ud83c\uddf6","\ud83c\udde8\u200b\ud83c\uddf6")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!r(e,"\ud83e\u1fac8")}return!1}function f(e,t,n,r){let a;const s=(a="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):document.createElement("canvas")).getContext("2d",{willReadFrequently:!0}),o=(s.textBaseline="top",s.font="600 32px Arial",{});return e.forEach(e=>{o[e]=t(s,e,n,r)}),o}function a(e){var t=document.createElement("script");t.src=e,t.defer=!0,document.head.appendChild(t)}r.supports={everything:!0,everythingExceptFlag:!0},new Promise(t=>{let n=function(){try{var e=JSON.parse(sessionStorage.getItem(s));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(o),u.toString(),c.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"});const a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=e=>{i(n=e.data),a.terminate(),t(n)})}catch(e){}i(n=f(o,u,c,p))}t(n)}).then(e=>{for(const n in e)r.supports[n]=e[n],r.supports.everything=r.supports.everything&&r.supports[n],"flag"!==n&&(r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&r.supports[n]);var t;r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&!r.supports.flag,r.supports.everything||((t=r.source||{}).concatemoji?a(t.concatemoji):t.wpemoji&&t.twemoji&&(a(t.twemoji),a(t.wpemoji)))});
597//# sourceURL=https://beerpla.net/wp-includes/js/wp-emoji-loader.min.js
598</script>
598
599</div>
vendor: 143 bytes, lines 599-600
599
600<script src="/cdn-cgi/scripts/7d0fa10a/cloudflare-static/rocket-loader.min.js" data-cf-settings="473e178a9b6bec6447cc218e-|49" defer></script>
600<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"7e0e2ac259004e848533eb8c251406b8","r":1,"spa":2}' crossorigin="anonymous"></script>
600
601</body>
602</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.