Check server response of

Server response
NS records
Whois domain
Response headers
Request headers
Raw HTML code
301 Moved Permanently - ikriv.com
HTTP Status: 301
User-Agent: Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; [email protected])
Date: Sun, 18 May 2025 16:47:53 GMT
Server: Apache/2.4.63 (Ubuntu)
Location: https://ikriv.com/blog/
Content-Length: 306
Content-Type: text/html; charset=iso-8859-1

HTTP Code 301 Moved Permanently

http status code 301 means that the requested resource has been permanently moved to a new URL. All future requests should use the new address.

When is Code 301 used?

  • When changing a website domain
  • When modifying URL structures
  • When setting up redirects for SEO

What does Code 301 mean for the user?

The browser will automatically redirect the user to the new address, and search engines will update their indexes.

200 OK - https://ikriv.com/blog/
HTTP Status: 200
User-Agent: Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; [email protected])
Date: Sun, 18 May 2025 16:47:54 GMT
Server: Apache/2.4.63 (Ubuntu)
Link: <https://ikriv.com/blog/index.php?rest_route=/>; rel="https://api.w.org/"
Vary: Accept-Encoding
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-8

HTTP Code 200 OK

http status code 200 is a standard successful HTTP server response. It means that the client’s request (e.g., from a browser) was successfully processed, and the server is delivering the requested data.

When is Code 200 used?

  • When loading a web page
  • When successfully receiving an API response
  • When processing a form or another HTTP request

What does Code 200 mean for the user?

The user receives content without errors, and the page or application functions properly. If Code 200 is accompanied by data, the browser or program processes and displays it to the user.

GET / HTTP/1.1
Host: ikriv.com
Accept: */*
User-Agent: Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; [email protected])
<!DOCTYPE html>
<html lang="en-US">

<head>
<meta charset="UTF-8" />
<title>Ivan Krivyakov &#8211; Premature optimization is the root of all evil</title>
<meta name='robots' content='max-image-preview:large' />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="generator" content="Stargazer 4.0.0" />
<link rel='dns-prefetch' href='//fonts.googleapis.com' />
<link rel="alternate" type="application/rss+xml" title="Ivan Krivyakov &raquo; Feed" href="https://ikriv.com/blog/?feed=rss2" />
<link rel="alternate" type="application/rss+xml" title="Ivan Krivyakov &raquo; Comments Feed" href="https://ikriv.com/blog/?feed=comments-rss2" />
<link rel="pingback" href="https://ikriv.com/blog/xmlrpc.php" />
<script type="text/javascript">
/* <![CDATA[ */
window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/14.0.0\/72x72\/","ext":".png","svgUrl":"https:\/\/s.w.org\/images\/core\/emoji\/14.0.0\/svg\/","svgExt":".svg","source":{"concatemoji":"https:\/\/ikriv.com\/blog\/wp-includes\/js\/wp-emoji-release.min.js?ver=6.4.5"}};
/*! This file is auto-generated */
!function(i,n){var o,s,e;function c(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(o,JSON.stringify(t))}catch(e){}}function p(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data),r=(e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0),new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data));return t.every(function(e,t){return e===r[t]})}function u(e,t,n){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\uddfa\ud83c\uddf3","\ud83c\uddfa\u200b\ud83c\uddf3")&&!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!n(e,"\ud83e\udef1\ud83c\udffb\u200d\ud83e\udef2\ud83c\udfff","\ud83e\udef1\ud83c\udffb\u200b\ud83e\udef2\ud83c\udfff")}return!1}function f(e,t,n){var r="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):i.createElement("canvas"),a=r.getContext("2d",{willReadFrequently:!0}),o=(a.textBaseline="top",a.font="600 32px Arial",{});return e.forEach(function(e){o[e]=t(a,e,n)}),o}function t(e){var t=i.createElement("script");t.src=e,t.defer=!0,i.head.appendChild(t)}"undefined"!=typeof Promise&&(o="wpEmojiSettingsSupports",s=["flag","emoji"],n.supports={everything:!0,everythingExceptFlag:!0},e=new Promise(function(e){i.addEventListener("DOMContentLoaded",e,{once:!0})}),new Promise(function(t){var n=function(){try{var e=JSON.parse(sessionStorage.getItem(o));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(s),u.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"}),a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=function(e){c(n=e.data),a.terminate(),t(n)})}catch(e){}c(n=f(s,u,p))}t(n)}).then(function(e){for(var t in e)n.supports[t]=e[t],n.supports.everything=n.supports.everything&&n.supports[t],"flag"!==t&&(n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&n.supports[t]);n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&!n.supports.flag,n.DOMReady=!1,n.readyCallback=function(){n.DOMReady=!0}}).then(function(){return e}).then(function(){var e;n.supports.everything||(n.readyCallback(),(e=n.source||{}).concatemoji?t(e.concatemoji):e.wpemoji&&e.twemoji&&(t(e.twemoji),t(e.wpemoji)))}))}((window,document),window._wpemojiSettings);
/* ]]> */
</script>
<link rel='stylesheet' id='wp-block-library-css' href='https://ikriv.com/blog/wp-includes/css/dist/block-library/style.min.css?ver=6.4.5' type='text/css' media='all' />
<style id='classic-theme-styles-inline-css' type='text/css'>
/*! This file is auto-generated */
.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}
</style>
<style id='global-styles-inline-css' type='text/css'>
body{--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,rgba(6,147,227,1) 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,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgba(255,105,0,1) 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 rgba(255, 255, 255, 1), 6px 6px rgba(0, 0, 0, 1);--wp--preset--shadow--crisp: 6px 6px 0px rgba(0, 0, 0, 1);}:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}.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;}.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;}
.wp-block-navigation a:where(:not(.wp-element-button)){color: inherit;}
:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}
:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}
.wp-block-pullquote{font-size: 1.5em;line-height: 1.6;}
</style>
<link rel='stylesheet' id='parent-style-css' href='https://ikriv.com/blog/wp-content/themes/stargazer/style.css?ver=6.4.5' type='text/css' media='all' />
<link rel='stylesheet' id='child-style-css' href='https://ikriv.com/blog/wp-content/themes/stargazer-child/style.css?ver=1.0.0' type='text/css' media='all' />
<link rel='stylesheet' id='stargazer-font-css' href='https://fonts.googleapis.com/css?family=Droid+Serif%3A400%2C700%2C400italic%2C700italic%7COpen+Sans%3A300%2C400%2C600%2C700&#038;ver=6.4.5#038;subset=latin,latin-ext' type='text/css' media='all' />
<link rel='stylesheet' id='hybrid-one-five-css' href='https://ikriv.com/blog/wp-content/themes/stargazer/library/css/one-five.min.css?ver=4.0.0' type='text/css' media='all' />
<link rel='stylesheet' id='hybrid-gallery-css' href='https://ikriv.com/blog/wp-content/themes/stargazer/library/css/gallery.min.css?ver=4.0.0' type='text/css' media='all' />
<link rel='stylesheet' id='stargazer-mediaelement-css' href='https://ikriv.com/blog/wp-content/themes/stargazer/css/mediaelement.min.css?ver=6.4.5' type='text/css' media='all' />
<link rel='stylesheet' id='stargazer-media-css' href='https://ikriv.com/blog/wp-content/themes/stargazer/css/media.min.css?ver=6.4.5' type='text/css' media='all' />
<link rel='stylesheet' id='hybrid-parent-css' href='https://ikriv.com/blog/wp-content/themes/stargazer/style.min.css?ver=6.4.5' type='text/css' media='all' />
<link rel='stylesheet' id='hybrid-style-css' href='https://ikriv.com/blog/wp-content/themes/stargazer-child/style.css?ver=6.4.5' type='text/css' media='all' />
<script type="text/javascript" src="https://ikriv.com/blog/wp-includes/js/jquery/jquery.min.js?ver=3.7.1" id="jquery-core-js"></script>
<script type="text/javascript" src="https://ikriv.com/blog/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1" id="jquery-migrate-js"></script>
<link rel="https://api.w.org/" href="https://ikriv.com/blog/index.php?rest_route=/" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://ikriv.com/blog/xmlrpc.php?rsd" />
<meta name="generator" content="WordPress 6.4.5" />

<style type="text/css" id="custom-header-css">body.custom-header #site-title a { color: #252525; }</style>
<style type="text/css" id="custom-background-css">body.custom-background { background: #2d2d2d; }</style>
</head>

<body class="wordpress ltr en en-us child-theme y2025 m05 d18 h12 sunday logged-out custom-background custom-header wp-custom-logo display-header-text plural home blog layout-2c-l custom-colors" dir="ltr" itemscope="itemscope" itemtype="http://schema.org/Blog">

	<div id="container">

		<div class="skip-link">
			<a href="#content" class="screen-reader-text">Skip to content</a>
		</div><!-- .skip-link -->

		
		<div class="wrap">

			<header class="site-header" id="header" role="banner" itemscope="itemscope" itemtype="http://schema.org/WPHeader">

				
					<div id="branding">
						<a href="https://ikriv.com/blog/" class="custom-logo-link" rel="home" aria-current="page"><img width="84" height="80" src="https://ikriv.com/blog/wp-content/uploads/2016/11/logo2.png" class="custom-logo" alt="Ivan Krivyakov" decoding="async" /></a>
													<h1 class="site-title" id="site-title" itemprop="headline"><a href="https://ikriv.com/blog" rel="home">Ivan Krivyakov</a></h1>							<h2 class="site-description" id="site-description" itemprop="description">Premature optimization is the root of all evil</h2>											</div><!-- #branding -->

				
				
	<nav class="menu menu-secondary" role="navigation" id="menu-secondary" aria-label="Secondary Menu" itemscope="itemscope" itemtype="http://schema.org/SiteNavigationElement">

		<h3 id="menu-primary-title" class="menu-toggle">
			<button></button>
		</h3><!-- .menu-toggle -->

		<div class="wrap"><ul id="menu-secondary-items" class="menu-items"><li id="menu-item-2112" class="menu-item menu-item-type-custom menu-item-object-custom current-menu-item current_page_item menu-item-2112"><a href="/blog" aria-current="page">Blog</a></li>
<li id="menu-item-2106" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2106"><a href="/articles.php">Articles</a></li>
<li id="menu-item-2107" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2107"><a href="/projects.php">Projects</a></li>
<li id="menu-item-2108" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2108"><a href="/demos.php">Talks</a></li>
<li id="menu-item-2109" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2109"><a href="/resume.php">Resume</a></li>
<li id="menu-item-2111" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2111"><a href="/feedback.php">Contact</a></li>
</ul></div>
	</nav><!-- #menu-secondary -->


			</header><!-- #header -->

			
			<div id="main" class="main">

				
	

<main class="content" id="content" role="main">

	
	
		
			
			<article class="entry author-ikriv post-5250 post type-post status-publish format-standard category-python" id="post-5250" itemscope="itemscope" itemtype="http://schema.org/BlogPosting" itemprop="blogPost">

	
		<header class="entry-header">

			<h2 class="entry-title" itemprop="headline"><a href="https://ikriv.com/blog/?p=5250" rel="bookmark" itemprop="url">Python: assignment in lambdas, take 2. Use tuples and operator :=</a></h2>
			<div class="entry-byline">
				<span class="entry-author" itemprop="author" itemscope="itemscope" itemtype="http://schema.org/Person"><a href="https://ikriv.com/blog/?author=1" title="Posts by ikriv" rel="author" class="url fn n" itemprop="url"><span itemprop="name">ikriv</span></a></span>
				<time class="entry-published updated" datetime="2025-04-29T22:50:30-04:00" itemprop="datePublished" title="Tuesday, April 29, 2025, 10:50 pm">April 29, 2025</time>
				<a href="https://ikriv.com/blog/?p=5250#respond" class="comments-link" itemprop="discussionURL">0</a>							</div><!-- .entry-byline -->

		</header><!-- .entry-header -->
		
		
		<div class="entry-summary" itemprop="description">
			<p>This is a follow up on this post. Default parameters are not the only way to do complex calculations in Python lambdas. Another idea is to use tuples and the <a href="https://ikriv.com/blog/?p=5250" class="more-link">[&hellip;]</a></p>
		</div><!-- .entry-summary -->

	
</article><!-- .entry -->
			
		
			
			<article class="entry author-ikriv post-5240 post type-post status-publish format-standard category-webdev" id="post-5240" itemscope="itemscope" itemtype="http://schema.org/BlogPosting" itemprop="blogPost">

	
		<header class="entry-header">

			<h2 class="entry-title" itemprop="headline"><a href="https://ikriv.com/blog/?p=5240" rel="bookmark" itemprop="url">CORS, proxies, and the trailing slash issue</a></h2>
			<div class="entry-byline">
				<span class="entry-author" itemprop="author" itemscope="itemscope" itemtype="http://schema.org/Person"><a href="https://ikriv.com/blog/?author=1" title="Posts by ikriv" rel="author" class="url fn n" itemprop="url"><span itemprop="name">ikriv</span></a></span>
				<time class="entry-published updated" datetime="2025-04-10T10:33:10-04:00" itemprop="datePublished" title="Thursday, April 10, 2025, 10:33 am">April 10, 2025</time>
				<a href="https://ikriv.com/blog/?p=5240#respond" class="comments-link" itemprop="discussionURL">0</a>							</div><!-- .entry-byline -->

		</header><!-- .entry-header -->
		
		
		<div class="entry-summary" itemprop="description">
			<p>TL;DR On the client side, use trailing slash when requesting the &#8220;default&#8221; resource from a Flask app. Server: Client: Why it matters In Production If you make a request without <a href="https://ikriv.com/blog/?p=5240" class="more-link">[&hellip;]</a></p>
		</div><!-- .entry-summary -->

	
</article><!-- .entry -->
			
		
			
			<article class="entry author-ikriv post-5235 post type-post status-publish format-standard category-hack category-webdev" id="post-5235" itemscope="itemscope" itemtype="http://schema.org/BlogPosting" itemprop="blogPost">

	
		<header class="entry-header">

			<h2 class="entry-title" itemprop="headline"><a href="https://ikriv.com/blog/?p=5235" rel="bookmark" itemprop="url">Apache mod_wsgi: demystifying WSGIApplicationGroup</a></h2>
			<div class="entry-byline">
				<span class="entry-author" itemprop="author" itemscope="itemscope" itemtype="http://schema.org/Person"><a href="https://ikriv.com/blog/?author=1" title="Posts by ikriv" rel="author" class="url fn n" itemprop="url"><span itemprop="name">ikriv</span></a></span>
				<time class="entry-published updated" datetime="2025-04-08T12:50:41-04:00" itemprop="datePublished" title="Tuesday, April 8, 2025, 12:50 pm">April 8, 2025</time>
				<a href="https://ikriv.com/blog/?p=5235#respond" class="comments-link" itemprop="discussionURL">0</a>							</div><!-- .entry-byline -->

		</header><!-- .entry-header -->
		
		
		<div class="entry-summary" itemprop="description">
			<p>Summary WSGIApplicationGroup is a name of the Python sub-interpreter. You don&#8217;t need sub-interpreters if you run mod_wsgi in daemon mode (i.e. with dedicated processes). Always set WSGIApplicationGroup to %{GLOBAL}. If <a href="https://ikriv.com/blog/?p=5235" class="more-link">[&hellip;]</a></p>
		</div><!-- .entry-summary -->

	
</article><!-- .entry -->
			
		
			
			<article class="entry author-ikriv post-5228 post type-post status-publish format-standard category-hack" id="post-5228" itemscope="itemscope" itemtype="http://schema.org/BlogPosting" itemprop="blogPost">

	
		<header class="entry-header">

			<h2 class="entry-title" itemprop="headline"><a href="https://ikriv.com/blog/?p=5228" rel="bookmark" itemprop="url">Chrome: thisisunsafe!</a></h2>
			<div class="entry-byline">
				<span class="entry-author" itemprop="author" itemscope="itemscope" itemtype="http://schema.org/Person"><a href="https://ikriv.com/blog/?author=1" title="Posts by ikriv" rel="author" class="url fn n" itemprop="url"><span itemprop="name">ikriv</span></a></span>
				<time class="entry-published updated" datetime="2025-04-02T10:07:10-04:00" itemprop="datePublished" title="Wednesday, April 2, 2025, 10:07 am">April 2, 2025</time>
				<a href="https://ikriv.com/blog/?p=5228#respond" class="comments-link" itemprop="discussionURL">0</a>							</div><!-- .entry-byline -->

		</header><!-- .entry-header -->
		
		<a href="https://ikriv.com/blog/?p=5228"><img  class="portrait cw-greater thumbnail stargazer-full" width="489" height="500" alt="Chrome: thisisunsafe!" itemprop="image" src="https://ikriv.com/blog/wp-content/uploads/2025/04/hsts.png" /></a>
		<div class="entry-summary" itemprop="description">
			<p>TL;DR Under certain circumstances you won&#8217;t be able to access an HTTPS site with invalid certificate from Chrome, unless you type a magic cheat code &#8220;thisisunsave&#8220;. I was debugging a <a href="https://ikriv.com/blog/?p=5228" class="more-link">[&hellip;]</a></p>
		</div><!-- .entry-summary -->

	
</article><!-- .entry -->
			
		
			
			<article class="entry author-ikriv post-5219 post type-post status-publish format-standard category-cpp" id="post-5219" itemscope="itemscope" itemtype="http://schema.org/BlogPosting" itemprop="blogPost">

	
		<header class="entry-header">

			<h2 class="entry-title" itemprop="headline"><a href="https://ikriv.com/blog/?p=5219" rel="bookmark" itemprop="url">C++ regular_invocable and generative AI</a></h2>
			<div class="entry-byline">
				<span class="entry-author" itemprop="author" itemscope="itemscope" itemtype="http://schema.org/Person"><a href="https://ikriv.com/blog/?author=1" title="Posts by ikriv" rel="author" class="url fn n" itemprop="url"><span itemprop="name">ikriv</span></a></span>
				<time class="entry-published updated" datetime="2025-04-01T23:01:32-04:00" itemprop="datePublished" title="Tuesday, April 1, 2025, 11:01 pm">April 1, 2025</time>
				<a href="https://ikriv.com/blog/?p=5219#respond" class="comments-link" itemprop="discussionURL">0</a>							</div><!-- .entry-byline -->

		</header><!-- .entry-header -->
		
		
		<div class="entry-summary" itemprop="description">
			<p>I took interest in C++ random number generation because of the concept of regular_invocable. To my understanding, regular_invocable is C++&#8217;s notion of a &#8220;pure function&#8221;, or something really close to <a href="https://ikriv.com/blog/?p=5219" class="more-link">[&hellip;]</a></p>
		</div><!-- .entry-summary -->

	
</article><!-- .entry -->
			
		
			
			<article class="entry author-ikriv post-5213 post type-post status-publish format-standard category-cs category-cpp category-hack category-python" id="post-5213" itemscope="itemscope" itemtype="http://schema.org/BlogPosting" itemprop="blogPost">

	
		<header class="entry-header">

			<h2 class="entry-title" itemprop="headline"><a href="https://ikriv.com/blog/?p=5213" rel="bookmark" itemprop="url">C++ random number generation: mt19937 to ranlux24</a></h2>
			<div class="entry-byline">
				<span class="entry-author" itemprop="author" itemscope="itemscope" itemtype="http://schema.org/Person"><a href="https://ikriv.com/blog/?author=1" title="Posts by ikriv" rel="author" class="url fn n" itemprop="url"><span itemprop="name">ikriv</span></a></span>
				<time class="entry-published updated" datetime="2025-03-30T02:20:07-04:00" itemprop="datePublished" title="Sunday, March 30, 2025, 2:20 am">March 30, 2025</time>
				<a href="https://ikriv.com/blog/?p=5213#comments" class="comments-link" itemprop="discussionURL">1</a>							</div><!-- .entry-byline -->

		</header><!-- .entry-header -->
		
		
		<div class="entry-summary" itemprop="description">
			<p>It&#8217;s pretty old stuff, but still&#8230; Here&#8217;s how you typically generate a random number in C++: Let&#8217;s dissect it a little. On the one hand, &#8220;random_device&#8221; is a rather nebulous <a href="https://ikriv.com/blog/?p=5213" class="more-link">[&hellip;]</a></p>
		</div><!-- .entry-summary -->

	
</article><!-- .entry -->
			
		
			
			<article class="entry author-ikriv post-5200 post type-post status-publish format-standard category-hack category-python" id="post-5200" itemscope="itemscope" itemtype="http://schema.org/BlogPosting" itemprop="blogPost">

	
		<header class="entry-header">

			<h2 class="entry-title" itemprop="headline"><a href="https://ikriv.com/blog/?p=5200" rel="bookmark" itemprop="url">Python: the land of abstract static methods</a></h2>
			<div class="entry-byline">
				<span class="entry-author" itemprop="author" itemscope="itemscope" itemtype="http://schema.org/Person"><a href="https://ikriv.com/blog/?author=1" title="Posts by ikriv" rel="author" class="url fn n" itemprop="url"><span itemprop="name">ikriv</span></a></span>
				<time class="entry-published updated" datetime="2025-03-29T22:47:53-04:00" itemprop="datePublished" title="Saturday, March 29, 2025, 10:47 pm">March 29, 2025</time>
				<a href="https://ikriv.com/blog/?p=5200#respond" class="comments-link" itemprop="discussionURL">0</a>							</div><!-- .entry-byline -->

		</header><!-- .entry-header -->
		
		
		<div class="entry-summary" itemprop="description">
			<p>Summary Unlike many other languages, Python allows abstract static methods (see the reference). A class directly or indirectly deriving from abc.ABC cannot be instantiated, unless all its abstract methods are <a href="https://ikriv.com/blog/?p=5200" class="more-link">[&hellip;]</a></p>
		</div><!-- .entry-summary -->

	
</article><!-- .entry -->
			
		
			
			<article class="entry author-ikriv post-5193 post type-post status-publish format-standard category-hack" id="post-5193" itemscope="itemscope" itemtype="http://schema.org/BlogPosting" itemprop="blogPost">

	
		<header class="entry-header">

			<h2 class="entry-title" itemprop="headline"><a href="https://ikriv.com/blog/?p=5193" rel="bookmark" itemprop="url">Are Python strings UTF-8? What is the complexity of s[n]?</a></h2>
			<div class="entry-byline">
				<span class="entry-author" itemprop="author" itemscope="itemscope" itemtype="http://schema.org/Person"><a href="https://ikriv.com/blog/?author=1" title="Posts by ikriv" rel="author" class="url fn n" itemprop="url"><span itemprop="name">ikriv</span></a></span>
				<time class="entry-published updated" datetime="2025-03-11T19:00:46-04:00" itemprop="datePublished" title="Tuesday, March 11, 2025, 7:00 pm">March 11, 2025</time>
				<a href="https://ikriv.com/blog/?p=5193#respond" class="comments-link" itemprop="discussionURL">0</a>							</div><!-- .entry-byline -->

		</header><!-- .entry-header -->
		
		<a href="https://ikriv.com/blog/?p=5193"><img  class="landscape cw-equal thumbnail stargazer-full" width="1025" height="410" alt="Are Python strings UTF-8? What is the complexity of s[n]?" itemprop="image" src="https://ikriv.com/blog/wp-content/uploads/2025/03/string_encoding_comparison.png" /></a>
		<div class="entry-summary" itemprop="description">
			<p>TL;DR Internally CPython stores strings with fixed character size of 1, 2, or 4 bytes, depending on the string [PEP-393]. The indexing operator s[n] takes constant time. UTF-8 representation can <a href="https://ikriv.com/blog/?p=5193" class="more-link">[&hellip;]</a></p>
		</div><!-- .entry-summary -->

	
</article><!-- .entry -->
			
		
			
			<article class="entry author-ikriv post-5189 post type-post status-publish format-standard category-hack" id="post-5189" itemscope="itemscope" itemtype="http://schema.org/BlogPosting" itemprop="blogPost">

	
		<header class="entry-header">

			<h2 class="entry-title" itemprop="headline"><a href="https://ikriv.com/blog/?p=5189" rel="bookmark" itemprop="url">Online SQL Formatter</a></h2>
			<div class="entry-byline">
				<span class="entry-author" itemprop="author" itemscope="itemscope" itemtype="http://schema.org/Person"><a href="https://ikriv.com/blog/?author=1" title="Posts by ikriv" rel="author" class="url fn n" itemprop="url"><span itemprop="name">ikriv</span></a></span>
				<time class="entry-published updated" datetime="2025-02-11T12:05:31-05:00" itemprop="datePublished" title="Tuesday, February 11, 2025, 12:05 pm">February 11, 2025</time>
				<a href="https://ikriv.com/blog/?p=5189#respond" class="comments-link" itemprop="discussionURL">0</a>							</div><!-- .entry-byline -->

		</header><!-- .entry-header -->
		
		<a href="https://ikriv.com/blog/?p=5189"><img  class="landscape cw-equal thumbnail stargazer-full" width="1025" height="384" alt="Online SQL Formatter" itemprop="image" src="https://ikriv.com/blog/wp-content/uploads/2025/02/sql_screenshot.png" /></a>
		<div class="entry-summary" itemprop="description">
			<p>https://codebeautify.org/sqlformatter all the way. It is a 3rd of a 4th link on Google, but it provides the best formatting and the best experience. You paste your ugly formatted SQL <a href="https://ikriv.com/blog/?p=5189" class="more-link">[&hellip;]</a></p>
		</div><!-- .entry-summary -->

	
</article><!-- .entry -->
			
		
			
			<article class="entry author-ikriv post-5186 post type-post status-publish format-standard category-hack" id="post-5186" itemscope="itemscope" itemtype="http://schema.org/BlogPosting" itemprop="blogPost">

	
		<header class="entry-header">

			<h2 class="entry-title" itemprop="headline"><a href="https://ikriv.com/blog/?p=5186" rel="bookmark" itemprop="url">ARG in docker actually creates an environment variable, at build time</a></h2>
			<div class="entry-byline">
				<span class="entry-author" itemprop="author" itemscope="itemscope" itemtype="http://schema.org/Person"><a href="https://ikriv.com/blog/?author=1" title="Posts by ikriv" rel="author" class="url fn n" itemprop="url"><span itemprop="name">ikriv</span></a></span>
				<time class="entry-published updated" datetime="2025-01-19T15:44:50-05:00" itemprop="datePublished" title="Sunday, January 19, 2025, 3:44 pm">January 19, 2025</time>
				<a href="https://ikriv.com/blog/?p=5186#respond" class="comments-link" itemprop="discussionURL">0</a>							</div><!-- .entry-byline -->

		</header><!-- .entry-header -->
		
		
		<div class="entry-summary" itemprop="description">
			<p>A few days ago I discovered (with the help from my colleagues) that ARG instruction in Docker creates a true environment variable that is available inside the commands invoked at <a href="https://ikriv.com/blog/?p=5186" class="more-link">[&hellip;]</a></p>
		</div><!-- .entry-summary -->

	
</article><!-- .entry -->
			
		
		
	
	<nav class="navigation pagination" aria-label="Posts">
		<h2 class="screen-reader-text">Posts navigation</h2>
		<div class="nav-links"><span aria-current="page" class="page-numbers current">1</span>
<a class="page-numbers" href="https://ikriv.com/blog/?paged=2">2</a>
<span class="page-numbers dots">&hellip;</span>
<a class="page-numbers" href="https://ikriv.com/blog/?paged=44">44</a>
<a class="next page-numbers" href="https://ikriv.com/blog/?paged=2">Next &rarr;</a></div>
	</nav>

	
</main><!-- #content -->

				
	<aside class="sidebar sidebar-primary" role="complementary" id="sidebar-primary" aria-label="Primary Sidebar" itemscope="itemscope" itemtype="http://schema.org/WPSideBar">

		<h3 id="sidebar-primary-title" class="screen-reader-text">Primary Sidebar</h3>

		
			<section id="search-2" class="widget widget_search"><form role="search" method="get" class="search-form" action="https://ikriv.com/blog/">
				<label>
					<span class="screen-reader-text">Search for:</span>
					<input type="search" class="search-field" placeholder="Search &hellip;" value="" name="s" />
				</label>
				<input type="submit" class="search-submit" value="Search" />
			</form></section><section id="archives-2" class="widget widget_archive"><h3 class="widget-title">Archives</h3>		<label class="screen-reader-text" for="archives-dropdown-2">Archives</label>
		<select id="archives-dropdown-2" name="archive-dropdown">
			
			<option value="">Select Month</option>
				<option value='https://ikriv.com/blog/?m=202504'> April 2025 &nbsp;(5)</option>
	<option value='https://ikriv.com/blog/?m=202503'> March 2025 &nbsp;(3)</option>
	<option value='https://ikriv.com/blog/?m=202502'> February 2025 &nbsp;(1)</option>
	<option value='https://ikriv.com/blog/?m=202501'> January 2025 &nbsp;(1)</option>
	<option value='https://ikriv.com/blog/?m=202412'> December 2024 &nbsp;(2)</option>
	<option value='https://ikriv.com/blog/?m=202411'> November 2024 &nbsp;(2)</option>
	<option value='https://ikriv.com/blog/?m=202410'> October 2024 &nbsp;(4)</option>
	<option value='https://ikriv.com/blog/?m=202409'> September 2024 &nbsp;(4)</option>
	<option value='https://ikriv.com/blog/?m=202407'> July 2024 &nbsp;(5)</option>
	<option value='https://ikriv.com/blog/?m=202404'> April 2024 &nbsp;(1)</option>
	<option value='https://ikriv.com/blog/?m=202402'> February 2024 &nbsp;(4)</option>
	<option value='https://ikriv.com/blog/?m=202401'> January 2024 &nbsp;(2)</option>
	<option value='https://ikriv.com/blog/?m=202310'> October 2023 &nbsp;(1)</option>
	<option value='https://ikriv.com/blog/?m=202309'> September 2023 &nbsp;(3)</option>
	<option value='https://ikriv.com/blog/?m=202308'> August 2023 &nbsp;(2)</option>
	<option value='https://ikriv.com/blog/?m=202307'> July 2023 &nbsp;(3)</option>
	<option value='https://ikriv.com/blog/?m=202306'> June 2023 &nbsp;(2)</option>
	<option value='https://ikriv.com/blog/?m=202305'> May 2023 &nbsp;(1)</option>
	<option value='https://ikriv.com/blog/?m=202302'> February 2023 &nbsp;(2)</option>
	<option value='https://ikriv.com/blog/?m=202301'> January 2023 &nbsp;(2)</option>
	<option value='https://ikriv.com/blog/?m=202212'> December 2022 &nbsp;(3)</option>
	<option value='https://ikriv.com/blog/?m=202211'> November 2022 &nbsp;(1)</option>
	<option value='https://ikriv.com/blog/?m=202102'> February 2021 &nbsp;(1)</option>
	<option value='https://ikriv.com/blog/?m=202011'> November 2020 &nbsp;(1)</option>
	<option value='https://ikriv.com/blog/?m=202009'> September 2020 &nbsp;(3)</option>
	<option value='https://ikriv.com/blog/?m=202007'> July 2020 &nbsp;(1)</option>
	<option value='https://ikriv.com/blog/?m=202006'> June 2020 &nbsp;(2)</option>
	<option value='https://ikriv.com/blog/?m=202005'> May 2020 &nbsp;(2)</option>
	<option value='https://ikriv.com/blog/?m=202004'> April 2020 &nbsp;(4)</option>
	<option value='https://ikriv.com/blog/?m=202003'> March 2020 &nbsp;(5)</option>
	<option value='https://ikriv.com/blog/?m=202002'> February 2020 &nbsp;(2)</option>
	<option value='https://ikriv.com/blog/?m=202001'> January 2020 &nbsp;(2)</option>
	<option value='https://ikriv.com/blog/?m=201912'> December 2019 &nbsp;(2)</option>
	<option value='https://ikriv.com/blog/?m=201911'> November 2019 &nbsp;(3)</option>
	<option value='https://ikriv.com/blog/?m=201910'> October 2019 &nbsp;(1)</option>
	<option value='https://ikriv.com/blog/?m=201909'> September 2019 &nbsp;(1)</option>
	<option value='https://ikriv.com/blog/?m=201905'> May 2019 &nbsp;(1)</option>
	<option value='https://ikriv.com/blog/?m=201904'> April 2019 &nbsp;(4)</option>
	<option value='https://ikriv.com/blog/?m=201903'> March 2019 &nbsp;(4)</option>
	<option value='https://ikriv.com/blog/?m=201901'> January 2019 &nbsp;(1)</option>
	<option value='https://ikriv.com/blog/?m=201812'> December 2018 &nbsp;(5)</option>
	<option value='https://ikriv.com/blog/?m=201811'> November 2018 &nbsp;(2)</option>
	<option value='https://ikriv.com/blog/?m=201810'> October 2018 &nbsp;(2)</option>
	<option value='https://ikriv.com/blog/?m=201809'> September 2018 &nbsp;(2)</option>
	<option value='https://ikriv.com/blog/?m=201808'> August 2018 &nbsp;(1)</option>
	<option value='https://ikriv.com/blog/?m=201807'> July 2018 &nbsp;(1)</option>
	<option value='https://ikriv.com/blog/?m=201712'> December 2017 &nbsp;(2)</option>
	<option value='https://ikriv.com/blog/?m=201710'> October 2017 &nbsp;(2)</option>
	<option value='https://ikriv.com/blog/?m=201709'> September 2017 &nbsp;(3)</option>
	<option value='https://ikriv.com/blog/?m=201708'> August 2017 &nbsp;(1)</option>
	<option value='https://ikriv.com/blog/?m=201707'> July 2017 &nbsp;(1)</option>
	<option value='https://ikriv.com/blog/?m=201706'> June 2017 &nbsp;(5)</option>
	<option value='https://ikriv.com/blog/?m=201705'> May 2017 &nbsp;(3)</option>
	<option value='https://ikriv.com/blog/?m=201704'> April 2017 &nbsp;(4)</option>
	<option value='https://ikriv.com/blog/?m=201703'> March 2017 &nbsp;(6)</option>
	<option value='https://ikriv.com/blog/?m=201702'> February 2017 &nbsp;(6)</option>
	<option value='https://ikriv.com/blog/?m=201701'> January 2017 &nbsp;(5)</option>
	<option value='https://ikriv.com/blog/?m=201612'> December 2016 &nbsp;(9)</option>
	<option value='https://ikriv.com/blog/?m=201611'> November 2016 &nbsp;(3)</option>
	<option value='https://ikriv.com/blog/?m=201610'> October 2016 &nbsp;(3)</option>
	<option value='https://ikriv.com/blog/?m=201608'> August 2016 &nbsp;(3)</option>
	<option value='https://ikriv.com/blog/?m=201607'> July 2016 &nbsp;(6)</option>
	<option value='https://ikriv.com/blog/?m=201606'> June 2016 &nbsp;(2)</option>
	<option value='https://ikriv.com/blog/?m=201605'> May 2016 &nbsp;(2)</option>
	<option value='https://ikriv.com/blog/?m=201603'> March 2016 &nbsp;(1)</option>
	<option value='https://ikriv.com/blog/?m=201602'> February 2016 &nbsp;(1)</option>
	<option value='https://ikriv.com/blog/?m=201601'> January 2016 &nbsp;(5)</option>
	<option value='https://ikriv.com/blog/?m=201512'> December 2015 &nbsp;(3)</option>
	<option value='https://ikriv.com/blog/?m=201511'> November 2015 &nbsp;(2)</option>
	<option value='https://ikriv.com/blog/?m=201509'> September 2015 &nbsp;(2)</option>
	<option value='https://ikriv.com/blog/?m=201507'> July 2015 &nbsp;(2)</option>
	<option value='https://ikriv.com/blog/?m=201506'> June 2015 &nbsp;(1)</option>
	<option value='https://ikriv.com/blog/?m=201505'> May 2015 &nbsp;(2)</option>
	<option value='https://ikriv.com/blog/?m=201504'> April 2015 &nbsp;(3)</option>
	<option value='https://ikriv.com/blog/?m=201503'> March 2015 &nbsp;(1)</option>
	<option value='https://ikriv.com/blog/?m=201502'> February 2015 &nbsp;(2)</option>
	<option value='https://ikriv.com/blog/?m=201412'> December 2014 &nbsp;(1)</option>
	<option value='https://ikriv.com/blog/?m=201411'> November 2014 &nbsp;(2)</option>
	<option value='https://ikriv.com/blog/?m=201410'> October 2014 &nbsp;(2)</option>
	<option value='https://ikriv.com/blog/?m=201408'> August 2014 &nbsp;(2)</option>
	<option value='https://ikriv.com/blog/?m=201405'> May 2014 &nbsp;(2)</option>
	<option value='https://ikriv.com/blog/?m=201404'> April 2014 &nbsp;(1)</option>
	<option value='https://ikriv.com/blog/?m=201402'> February 2014 &nbsp;(1)</option>
	<option value='https://ikriv.com/blog/?m=201401'> January 2014 &nbsp;(2)</option>
	<option value='https://ikriv.com/blog/?m=201312'> December 2013 &nbsp;(2)</option>
	<option value='https://ikriv.com/blog/?m=201309'> September 2013 &nbsp;(2)</option>
	<option value='https://ikriv.com/blog/?m=201308'> August 2013 &nbsp;(1)</option>
	<option value='https://ikriv.com/blog/?m=201307'> July 2013 &nbsp;(4)</option>
	<option value='https://ikriv.com/blog/?m=201306'> June 2013 &nbsp;(3)</option>
	<option value='https://ikriv.com/blog/?m=201305'> May 2013 &nbsp;(6)</option>
	<option value='https://ikriv.com/blog/?m=201304'> April 2013 &nbsp;(2)</option>
	<option value='https://ikriv.com/blog/?m=201303'> March 2013 &nbsp;(1)</option>
	<option value='https://ikriv.com/blog/?m=201302'> February 2013 &nbsp;(1)</option>
	<option value='https://ikriv.com/blog/?m=201301'> January 2013 &nbsp;(6)</option>
	<option value='https://ikriv.com/blog/?m=201212'> December 2012 &nbsp;(4)</option>
	<option value='https://ikriv.com/blog/?m=201211'> November 2012 &nbsp;(5)</option>
	<option value='https://ikriv.com/blog/?m=201209'> September 2012 &nbsp;(4)</option>
	<option value='https://ikriv.com/blog/?m=201208'> August 2012 &nbsp;(6)</option>
	<option value='https://ikriv.com/blog/?m=201207'> July 2012 &nbsp;(1)</option>
	<option value='https://ikriv.com/blog/?m=201206'> June 2012 &nbsp;(2)</option>
	<option value='https://ikriv.com/blog/?m=201205'> May 2012 &nbsp;(13)</option>
	<option value='https://ikriv.com/blog/?m=201204'> April 2012 &nbsp;(2)</option>
	<option value='https://ikriv.com/blog/?m=201203'> March 2012 &nbsp;(1)</option>
	<option value='https://ikriv.com/blog/?m=201202'> February 2012 &nbsp;(4)</option>
	<option value='https://ikriv.com/blog/?m=201201'> January 2012 &nbsp;(3)</option>
	<option value='https://ikriv.com/blog/?m=201112'> December 2011 &nbsp;(3)</option>
	<option value='https://ikriv.com/blog/?m=201110'> October 2011 &nbsp;(1)</option>
	<option value='https://ikriv.com/blog/?m=201108'> August 2011 &nbsp;(4)</option>
	<option value='https://ikriv.com/blog/?m=201107'> July 2011 &nbsp;(1)</option>
	<option value='https://ikriv.com/blog/?m=201106'> June 2011 &nbsp;(2)</option>
	<option value='https://ikriv.com/blog/?m=201104'> April 2011 &nbsp;(2)</option>
	<option value='https://ikriv.com/blog/?m=201103'> March 2011 &nbsp;(1)</option>
	<option value='https://ikriv.com/blog/?m=201102'> February 2011 &nbsp;(3)</option>
	<option value='https://ikriv.com/blog/?m=201101'> January 2011 &nbsp;(2)</option>
	<option value='https://ikriv.com/blog/?m=201012'> December 2010 &nbsp;(6)</option>
	<option value='https://ikriv.com/blog/?m=201011'> November 2010 &nbsp;(5)</option>
	<option value='https://ikriv.com/blog/?m=201010'> October 2010 &nbsp;(4)</option>
	<option value='https://ikriv.com/blog/?m=201009'> September 2010 &nbsp;(5)</option>
	<option value='https://ikriv.com/blog/?m=201008'> August 2010 &nbsp;(5)</option>
	<option value='https://ikriv.com/blog/?m=201007'> July 2010 &nbsp;(2)</option>
	<option value='https://ikriv.com/blog/?m=201006'> June 2010 &nbsp;(2)</option>
	<option value='https://ikriv.com/blog/?m=201005'> May 2010 &nbsp;(7)</option>
	<option value='https://ikriv.com/blog/?m=201004'> April 2010 &nbsp;(5)</option>
	<option value='https://ikriv.com/blog/?m=201003'> March 2010 &nbsp;(3)</option>
	<option value='https://ikriv.com/blog/?m=201002'> February 2010 &nbsp;(1)</option>
	<option value='https://ikriv.com/blog/?m=201001'> January 2010 &nbsp;(1)</option>
	<option value='https://ikriv.com/blog/?m=200912'> December 2009 &nbsp;(11)</option>
	<option value='https://ikriv.com/blog/?m=200911'> November 2009 &nbsp;(4)</option>
	<option value='https://ikriv.com/blog/?m=200910'> October 2009 &nbsp;(3)</option>
	<option value='https://ikriv.com/blog/?m=200909'> September 2009 &nbsp;(9)</option>
	<option value='https://ikriv.com/blog/?m=200908'> August 2009 &nbsp;(12)</option>
	<option value='https://ikriv.com/blog/?m=200907'> July 2009 &nbsp;(1)</option>
	<option value='https://ikriv.com/blog/?m=200905'> May 2009 &nbsp;(1)</option>
	<option value='https://ikriv.com/blog/?m=200902'> February 2009 &nbsp;(4)</option>
	<option value='https://ikriv.com/blog/?m=200901'> January 2009 &nbsp;(3)</option>
	<option value='https://ikriv.com/blog/?m=200812'> December 2008 &nbsp;(4)</option>
	<option value='https://ikriv.com/blog/?m=200811'> November 2008 &nbsp;(1)</option>
	<option value='https://ikriv.com/blog/?m=200807'> July 2008 &nbsp;(8)</option>
	<option value='https://ikriv.com/blog/?m=200806'> June 2008 &nbsp;(7)</option>
	<option value='https://ikriv.com/blog/?m=200805'> May 2008 &nbsp;(1)</option>
	<option value='https://ikriv.com/blog/?m=200803'> March 2008 &nbsp;(4)</option>
	<option value='https://ikriv.com/blog/?m=200802'> February 2008 &nbsp;(4)</option>
	<option value='https://ikriv.com/blog/?m=200801'> January 2008 &nbsp;(2)</option>
	<option value='https://ikriv.com/blog/?m=200712'> December 2007 &nbsp;(5)</option>

		</select>

			<script type="text/javascript">
/* <![CDATA[ */

(function() {
	var dropdown = document.getElementById( "archives-dropdown-2" );
	function onSelectChange() {
		if ( dropdown.options[ dropdown.selectedIndex ].value !== '' ) {
			document.location.href = this.options[ this.selectedIndex ].value;
		}
	}
	dropdown.onchange = onSelectChange;
})();

/* ]]> */
</script>
</section><section id="categories-2" class="widget widget_categories"><h3 class="widget-title">Categories</h3>
			<ul>
					<li class="cat-item cat-item-3"><a href="https://ikriv.com/blog/?cat=3">.NET</a>
</li>
	<li class="cat-item cat-item-17"><a href="https://ikriv.com/blog/?cat=17">Apache</a>
</li>
	<li class="cat-item cat-item-23"><a href="https://ikriv.com/blog/?cat=23">Azure</a>
</li>
	<li class="cat-item cat-item-6"><a href="https://ikriv.com/blog/?cat=6">Books</a>
</li>
	<li class="cat-item cat-item-8"><a href="https://ikriv.com/blog/?cat=8">C#</a>
</li>
	<li class="cat-item cat-item-7"><a href="https://ikriv.com/blog/?cat=7">C++</a>
</li>
	<li class="cat-item cat-item-14"><a href="https://ikriv.com/blog/?cat=14">Databases</a>
</li>
	<li class="cat-item cat-item-16"><a href="https://ikriv.com/blog/?cat=16">Demos</a>
</li>
	<li class="cat-item cat-item-10"><a href="https://ikriv.com/blog/?cat=10">F#</a>
</li>
	<li class="cat-item cat-item-21"><a href="https://ikriv.com/blog/?cat=21">Git</a>
</li>
	<li class="cat-item cat-item-4"><a href="https://ikriv.com/blog/?cat=4">Hacker&#039;s diary</a>
</li>
	<li class="cat-item cat-item-13"><a href="https://ikriv.com/blog/?cat=13">Java</a>
</li>
	<li class="cat-item cat-item-2"><a href="https://ikriv.com/blog/?cat=2">Miscellaneous</a>
</li>
	<li class="cat-item cat-item-20"><a href="https://ikriv.com/blog/?cat=20">Mobile</a>
</li>
	<li class="cat-item cat-item-22"><a href="https://ikriv.com/blog/?cat=22">My Tools</a>
</li>
	<li class="cat-item cat-item-26"><a href="https://ikriv.com/blog/?cat=26">Python</a>
</li>
	<li class="cat-item cat-item-24"><a href="https://ikriv.com/blog/?cat=24">SAML</a>
</li>
	<li class="cat-item cat-item-19"><a href="https://ikriv.com/blog/?cat=19">Silverlight</a>
</li>
	<li class="cat-item cat-item-5"><a href="https://ikriv.com/blog/?cat=5">Software Development</a>
</li>
	<li class="cat-item cat-item-1"><a href="https://ikriv.com/blog/?cat=1">Uncategorized</a>
</li>
	<li class="cat-item cat-item-15"><a href="https://ikriv.com/blog/?cat=15">Web Development</a>
</li>
	<li class="cat-item cat-item-18"><a href="https://ikriv.com/blog/?cat=18">Win32</a>
</li>
	<li class="cat-item cat-item-12"><a href="https://ikriv.com/blog/?cat=12">WPF</a>
</li>
			</ul>

			</section><section id="meta-2" class="widget widget_meta"><h3 class="widget-title">Meta</h3>
		<ul>
						<li><a href="https://ikriv.com/blog/wp-login.php">Log in</a></li>
			<li><a href="https://ikriv.com/blog/?feed=rss2">Entries feed</a></li>
			<li><a href="https://ikriv.com/blog/?feed=comments-rss2">Comments feed</a></li>

			<li><a href="https://wordpress.org/">WordPress.org</a></li>
		</ul>

		</section>
		
	</aside><!-- #sidebar-primary -->


			</div><!-- #main -->

			
		</div><!-- .wrap -->

		<footer class="site-footer" id="footer" role="contentinfo" itemscope="itemscope" itemtype="http://schema.org/WPFooter">

			<div class="wrap">

				
				<p class="credit">
					Copyright &#169; 2025 <a class="site-link" href="https://ikriv.com/blog" rel="home">Ivan Krivyakov</a>. Powered by <a class="wp-link" href="https://wordpress.org">WordPress</a> and <a class="theme-link" href="https://themehybrid.com/themes/stargazer">Stargazer</a>.				</p><!-- .credit -->

			</div><!-- .wrap -->

		</footer><!-- #footer -->

	</div><!-- #container -->

	<script src="https://www.google-analytics.com/urchin.js" type="text/javascript"></script>
<script type="text/javascript">
_uacct = "UA-973397-1";
urchinTracker();
</script>
<script type="text/javascript" id="stargazer-js-extra">
/* <![CDATA[ */
var stargazer_i18n = {"search_toggle":"Expand Search Form"};
/* ]]> */
</script>
<script type="text/javascript" src="https://ikriv.com/blog/wp-content/themes/stargazer/js/stargazer.min.js" id="stargazer-js"></script>

</body>
</html>                               

Whois info of domain

Domain Name: IKRIV.COM
Registry Domain ID: 84153325_DOMAIN_COM-VRSN
Registrar WHOIS Server: whois.porkbun.com
Registrar URL: http://porkbun.com
Updated Date: 2024-10-18T19:54:54Z
Creation Date: 2002-03-04T03:50:03Z
Registry Expiry Date: 2026-03-04T03:50:03Z
Registrar: Porkbun LLC
Registrar IANA ID: 1861
Registrar Abuse Contact Email: [email protected]
Registrar Abuse Contact Phone: 5038508351
Domain Status: clientDeleteProhibited https://icann.org/epp#clientDeleteProhibited
Domain Status: clientTransferProhibited https://icann.org/epp#clientTransferProhibited
Name Server: CURITIBA.NS.PORKBUN.COM
Name Server: FORTALEZA.NS.PORKBUN.COM
Name Server: MACEIO.NS.PORKBUN.COM
Name Server: SALVADOR.NS.PORKBUN.COM
DNSSEC: unsigned
URL of the ICANN Whois Inaccuracy Complaint Form: https://www.icann.org/wicf/
>>> Last update of whois database: 2025-05-18T16:47:37Z <<<
For more information on Whois status codes, please visit https://icann.org/epp
NOTICE: The expiration date displayed in this record is the date the
TERMS OF USE: You are not authorized to access or query our Whois
by the following terms of use: You agree that you may use this Data only
to: (1) allow, enable, or otherwise support the transmission of mass