1 2 3 4 5 6 7 8 9<!DOCTYPE html> 10<html lang="en"> 11<head> 12 13 14 15 16 17 18 19 20 21 22<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 23 24<meta name="viewport" content="width=device-width, initial-scale=0.75, user-scalable=yes"> 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41<title>⤠ð» Login - Dirask</title> 42 43<meta name="description" content="Dirask is a friendly IT community for learners, professionals and hobbyists to share their knowledge and help each other in extraordinary easy way."> 44<meta name="keywords" content=""> 45 46<link rel="canonical" href="" /> 47 48 49 50<link rel="icon" href="https://dirask.com/resources/gfx/logo/favicon/da_logo_v6-48x48.png?v=22" type="image/png" sizes="48x48" /> 51<link rel="icon" href="https://dirask.com/resources/gfx/logo/favicon/da_logo_v6-72x72.png?v=22" type="image/png" sizes="72x72" /> 52<link rel="icon" href="https://dirask.com/resources/gfx/logo/favicon/da_logo_v6-96x96.png?v=22" type="image/png" sizes="96x96" /> 53<link rel="icon" href="https://dirask.com/resources/gfx/logo/favicon/da_logo_v6-144x144.png?v=22" type="image/png" sizes="144x144" /> 54<link rel="icon" href="https://dirask.com/resources/gfx/logo/favicon/da_logo_v6-192x192.png?v=22" type="image/png" sizes="192x192" /> 55<link rel="icon" href="https://dirask.com/resources/gfx/logo/favicon/da_logo_v6-256x256.png?v=22" type="image/png" sizes="256x256" /> 56<link rel="icon" href="https://dirask.com/resources/gfx/logo/favicon/da_logo_v6-384x384.png?v=22" type="image/png" sizes="384x384" /> 57<link rel="icon" href="https://dirask.com/resources/gfx/logo/favicon/da_logo_v6-512x512.png?v=22" type="image/png" sizes="512x512" /> 58 59 60<link rel="icon" 61 href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAAtQAAALUBOdDOnwAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAANDSURBVGiB7ZpLTBNRFIa/e1soZSwDCEgVRSAoDxPxEY2GSHShElYa3bDUuNKdOzCaGElMfIS4JO5cGXdqNG6U+Iqa0BCJLJD4KIoIjUgphRZKXWCIpMO0M7UMTfotz+3c8//T03PvnakA2H7lQ6MQogPYBSisbqaAHoRs622reSX+iu8GbBYLM0oEIZvk3zufbuIBbETnb0gWyiZd2SFZ/TWvR7a0WkGyZAxYTdobsK9UIsUhKXDGduvQXJSxwJzpeVfMQHOdSntzaUzcMxTk9J2vpudN+xLKGLCajAGryRiwmrQ38F8Wsn0VCkfrVXaX51Kk2LFJ+BWM4PEGuecZp8cb/B9pNEnKQInLzqUWN/sr18SMFa+xc6Quj8N1edx+6WN00vx2QQ/TBtxqFl2tmygryNb9nADONBbx7suU2VS6mPoN2KTg+vGyuOL/Zc/m1Bz8TH0Dp/avpc6ds+z4t/Ew3vFZVKekttSJFKb1xcWwgWy7oHV3oeZYMDxP+/1hugcmF2MVRQ6uHdtAVbHDvEodDJfQwS0u8nO1n8JcfvRjiXiAz74Q5+4OMRWaN6cwDoYN7NqUqxkfHAvxpN+vOTbin+VB34TRVAlh2EC926kZf/4xoHvd+++pWQsMGyhUtMvnky+ke51/ZpWUkMuhbSCQohqPh2EDkWhUM55l0++VSoqeoRmedXKZUlivZuleV7428UXPCIYNjPhnNeP7KvVX2kNbXUZTJYRhA33D05rxvRUKOzdqt9iWbSo165ZfuZPBsIEXg9rtUgA3T5TRVO1a3DrYpeB4Qz4XW9zJaNTF8FbC4w3ycTREdUns1kB12ug8WcbvYISxwByleXZcOal9d2KqNVx9MsK8djMCID/XRnWJY4l4/0zETKq4mDLgGQrS+fQnOh6W0P9jhq6XPjOp4mK6Od95+4uLD4aZmNa/s90Dk5y96yU0m6hdYyR1pHzYN8GLwQDN9SqNVQrr1SwUhw1fYI6B0Rkef/AvnsT6hqe59Ww0Zo6fSR41RUNHf2puzQqR9o9VMgasRrLw34N0JSyBHqtVmCUKHomQbUBqlsnUEhFRcV72ttW8Qsgm4C0QtlpVAoSj8IaoONB7ofb1H8jS23b840a0AAAAAElFTkSuQmCC" 62 type="image/png" sizes="48x48" /> 63 64 65 66 67 68 69 70 71 72
73<script> 74 75 window.DEFAULT_PAGE_TITLE = '⤠ð» Login - Dirask'; 76 77</script>
77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109<!-- bing.com --> 110<meta name="msvalidate.01" content="07B7398825A91D17BC7870C81562C8F4" /> 111<!-- yandex.com --> 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165<link rel="stylesheet" href="/resources/libs_merged/compress_css_common/dirask_merged_css_libs__common.min.css?v=22" />
166<script src="/resources/libs_merged/compress_js_common/common_out.gen.min.js?v=22"></script>
166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182<style> 183 184 .navbar { 185 min-width: 450px; 186 } 187 188 .custom-nav-bar-1597872958 { 189 z-index: 10000000; 190 padding: 5px 20px; 191 max-width: 1920px; 192 } 193 194 @media (max-width: 600px) { 195 .custom-nav-bar-1597872958 { 196 padding-left: 10px; 197 padding-right: 3px; 198 } 199 } 200 201 .nav-bar-main-logo { 202 font-size: 18px; 203 font-weight: 500; 204 } 205 206 @media (max-width: 600px) { 207 .nav-bar-main-logo { 208 font-size: 16px; 209 } 210 } 211 212 a.left-menu-button-1597872958 213 { 214 margin: -10px 10px -10px -6px; 215 border-right: 1px solid #c5c0c0; 216 width: 45px; height: 45px; 217 display: flex; 218 } 219 220 .nav-bar-custom-icon-1597872958 { 221 width: 1em; height: 1em; 222 font-size: 19px; 223 } 224 225 span.site-languages-used-language 226 { 227 padding: 0px 4px; 228 border-radius: 2px; 229 font-size: 16px; 230 color: white; 231 } 232 233 .nav-bar-username-1597872958 { 234 display: inline-block; 235 max-width: 100px; 236 white-space: nowrap; 237 overflow: hidden !important; 238 text-overflow: ellipsis; 239 color: black; 240 } 241 242 .nav-bar-log-in-button-1597872958 { 243 margin-right: 6px; 244 color: #0579d0 !important; /* !important because bootstrap will try to override with color: #000000e6; */ 245 background: white; 246 } 247 248 span.site-languages-used-count-1597872958 249 { 250 margin: -5px 0 11px 4px; 251 padding: 2px 5px; 252 border-radius: 50%; 253 line-height: 12px; 254 font-size: 12px; 255 } 256 257</style> 258 259 260 261 262 263<style> 264 265 266 267 .custom-nav-bar-light-1597872958 { 268 background-color: #2f4155 !important; 269 } 270 271 .nav-bar-main-logo-light-1597872958 { 272 color: white; 273 } 274 275 a.left-menu-button-light-1597872958 { 276 277 278 } 279 280 .nav-bar-custom-icon-light-1597872958 { 281 color: #a1a4a7; 282 } 283 284 span.site-languages-used-language-light { 285 background: #707d8a; 286 } 287 288 .nav-bar-username-light-1597872958 { 289 color: #cecece; 290 font-weight: 400; 291 } 292 293 .nav-bar-link-light-1597872958 { 294 color: #cecece !important; 295 } 296 297 .nav-bar-log-in-button-light-1597872958 { 298 border: 1px solid #f7f7f7; 299 } 300 301 span.site-languages-used-count-light-1597872958 { 302 border: 1px solid #707d8a; 303 background: #707d8a; 304 color: #fff; 305 } 306 307 .search_loupe_btn_border { 308 border: none; 309 } 310 311 .search_input_nav_bar_border { 312 border: none; 313 } 314 315 .nav_bar_search_input_dropdown_arrow_border { 316 border: none; 317 } 318 319 320</style> 321 322 323 324 325<meta name="google-signin-client_id" content="1025873588304-hcg8t7btlbbnm6lv2tv7uoaul9fctn21.apps.googleusercontent.com"> 326 327 328
329<script type="text/javascript"> 330 window.RELEASE_VERSON = '22'; 331 window.RELEASE_DATETIME = 'null'; 332 console.log("Dirask js init"); 333 console.log("release.version: " + window.RELEASE_VERSON); 334 console.log("release.datetime: " + window.RELEASE_DATETIME); 335 // analitics on / off? 336 337 window.adBlock = true; 338</script>
338 339 340 341 342<svg xmlns="http://www.w3.org/2000/svg" style="display: none"> 343 <symbol viewBox="0 0 576 512" id="fas.fa-home"> 344 <path fill="currentColor" d="M280.37 148.26L96 300.11V464a16 16 0 0 0 16 16l112.06-.29a16 16 0 0 0 15.92-16V368a16 16 0 0 1 16-16h64a16 16 0 0 1 16 16v95.64a16 16 0 0 0 16 16.05L464 480a16 16 0 0 0 16-16V300L295.67 148.26a12.19 12.19 0 0 0-15.3 0zM571.6 251.47L488 182.56V44.05a12 12 0 0 0-12-12h-56a12 12 0 0 0-12 12v72.61L318.47 43a48 48 0 0 0-61 0L4.34 251.47a12 12 0 0 0-1.6 16.9l25.5 31A12 12 0 0 0 45.15 301l235.22-193.74a12.19 12.19 0 0 1 15.3 0L530.9 301a12 12 0 0 0 16.9-1.6l25.5-31a12 12 0 0 0-1.7-16.93z"/> 345 </symbol> 346 <symbol viewBox="0 0 352 512" id="far.fa-lightbulb"> 347 <path fill="currentColor" d="M176 80c-52.94 0-96 43.06-96 96 0 8.84 7.16 16 16 16s16-7.16 16-16c0-35.3 28.72-64 64-64 8.84 0 16-7.16 16-16s-7.16-16-16-16zM96.06 459.17c0 3.15.93 6.22 2.68 8.84l24.51 36.84c2.97 4.46 7.97 7.14 13.32 7.14h78.85c5.36 0 10.36-2.68 13.32-7.14l24.51-36.84c1.74-2.62 2.67-5.7 2.68-8.84l.05-43.18H96.02l.04 43.18zM176 0C73.72 0 0 82.97 0 176c0 44.37 16.45 84.85 43.56 115.78 16.64 18.99 42.74 58.8 52.42 92.16v.06h48v-.12c-.01-4.77-.72-9.51-2.15-14.07-5.59-17.81-22.82-64.77-62.17-109.67-20.54-23.43-31.52-53.15-31.61-84.14-.2-73.64 59.67-128 127.95-128 70.58 0 128 57.42 128 128 0 30.97-11.24 60.85-31.65 84.14-39.11 44.61-56.42 91.47-62.1 109.46a47.507 47.507 0 0 0-2.22 14.3v.1h48v-.05c9.68-33.37 35.78-73.18 52.42-92.16C335.55 260.85 352 220.37 352 176 352 78.8 273.2 0 176 0z"/> 348 </symbol> 349 <symbol viewBox="0 0 576 512" id="far.fa-comments"> 350 <path fill="currentColor" d="M532 386.2c27.5-27.1 44-61.1 44-98.2 0-80-76.5-146.1-176.2-157.9C368.3 72.5 294.3 32 208 32 93.1 32 0 103.6 0 192c0 37 16.5 71 44 98.2-15.3 30.7-37.3 54.5-37.7 54.9-6.3 6.7-8.1 16.5-4.4 25 3.6 8.5 12 14 21.2 14 53.5 0 96.7-20.2 125.2-38.8 9.2 2.1 18.7 3.7 28.4 4.9C208.1 407.6 281.8 448 368 448c20.8 0 40.8-2.4 59.8-6.8C456.3 459.7 499.4 480 553 480c9.2 0 17.5-5.5 21.2-14 3.6-8.5 1.9-18.3-4.4-25-.4-.3-22.5-24.1-37.8-54.8zm-392.8-92.3L122.1 305c-14.1 9.1-28.5 16.3-43.1 21.4 2.7-4.7 5.4-9.7 8-14.8l15.5-31.1L77.7 256C64.2 242.6 48 220.7 48 192c0-60.7 73.3-112 160-112s160 51.3 160 112-73.3 112-160 112c-16.5 0-33-1.9-49-5.6l-19.8-4.5zM498.3 352l-24.7 24.4 15.5 31.1c2.6 5.1 5.3 10.1 8 14.8-14.6-5.1-29-12.3-43.1-21.4l-17.1-11.1-19.9 4.6c-16 3.7-32.5 5.6-49 5.6-54 0-102.2-20.1-131.3-49.7C338 339.5 416 272.9 416 192c0-3.4-.4-6.7-.7-10C479.7 196.5 528 238.8 528 288c0 28.7-16.2 50.6-29.7 64z"/> 351 </symbol> 352 <symbol viewBox="0 0 640 512" id="fas.fa-users"> 353 <path fill="currentColor" d="M96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm448 0c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm32 32h-64c-17.6 0-33.5 7.1-45.1 18.6 40.3 22.1 68.9 62 75.1 109.4h66c17.7 0 32-14.3 32-32v-32c0-35.3-28.7-64-64-64zm-256 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zm-223.7-13.4C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z"/> 354 </symbol> 355 <symbol viewBox="0 0 512 512" id="fas.fa-briefcase"> 356 <path fill="currentColor" d="M320 336c0 8.84-7.16 16-16 16h-96c-8.84 0-16-7.16-16-16v-48H0v144c0 25.6 22.4 48 48 48h416c25.6 0 48-22.4 48-48V288H320v48zm144-208h-80V80c0-25.6-22.4-48-48-48H176c-25.6 0-48 22.4-48 48v48H48c-25.6 0-48 22.4-48 48v80h512v-80c0-25.6-22.4-48-48-48zm-144 0H192V96h128v32z"/> 357 </symbol> 358 <symbol viewBox="0 0 576 512" id="fas.fa-edit"> 359 <path fill="currentColor" d="M402.6 83.2l90.2 90.2c3.8 3.8 3.8 10 0 13.8L274.4 405.6l-92.8 10.3c-12.4 1.4-22.9-9.1-21.5-21.5l10.3-92.8L388.8 83.2c3.8-3.8 10-3.8 13.8 0zm162-22.9l-48.8-48.8c-15.2-15.2-39.9-15.2-55.2 0l-35.4 35.4c-3.8 3.8-3.8 10 0 13.8l90.2 90.2c3.8 3.8 10 3.8 13.8 0l35.4-35.4c15.2-15.3 15.2-40 0-55.2zM384 346.2V448H64V128h229.8c3.2 0 6.2-1.3 8.5-3.5l40-40c7.6-7.6 2.2-20.5-8.5-20.5H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V306.2c0-10.7-12.9-16-20.5-8.5l-40 40c-2.2 2.3-3.5 5.3-3.5 8.5z"/> 360 </symbol> 361 <symbol viewBox="0 0 448 512" id="fas.fa-rss">
362 <path fill="currentColor" d="M128.081 415.959c0 35.369-28.672 64.041-64.041 64.041S0 451.328 0 415.959s28.672-64.041 64.041-64.041 64.04 28.673 64.04 64.041zm175.66 47.25c-8.354-154.6-132.185-278.587-286.95-286.95C7.656 175.765 0 183.105 0 192.253v48.069c0 8.415 6.49 15.472 14.887 16.018 111.832 7.284 201.473 96.702 208.772 208.772.547 8.397 7.604 14.887 16.018 14.887h48.069c9.149.001 16.489-7.655 15.995-16.79zm144.249.288C439.596 229.677 251.465 40.445 16.503 32.01 7.473 31.686 0 38.981 0 48.016v48.068c0 8.625 6.835 15.645 15.453 15.999 191.179 7.839 344.627 161.316 352.465 352.465.353 8.618 7.373 15.453 15.999 15.453h48.068c9.034-.001 16.329-7.474 16.005-16.504z"></path> 363 </symbol> 364 <symbol viewBox="0 0 576 512" id="far.fa-object-ungroup"> 365 <path fill="currentColor" d="M564 224c6.627 0 12-5.373 12-12v-72c0-6.627-5.373-12-12-12h-72c-6.627 0-12 5.373-12 12v12h-88v-24h12c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12h-72c-6.627 0-12 5.373-12 12v12H96V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v72c0 6.627 5.373 12 12 12h12v160H12c-6.627 0-12 5.373-12 12v72c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-12h88v24h-12c-6.627 0-12 5.373-12 12v72c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-12h224v12c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-72c0-6.627-5.373-12-12-12h-12V224h12zM352 64h32v32h-32V64zm0 256h32v32h-32v-32zM64 352H32v-32h32v32zm0-256H32V64h32v32zm32 216v-12c0-6.627-5.373-12-12-12H72V128h12c6.627 0 12-5.373 12-12v-12h224v12c0 6.627 5.373 12 12 12h12v160h-12c-6.627 0-12 5.373-12 12v12H96zm128 136h-32v-32h32v32zm280-64h-12c-6.627 0-12 5.373-12 12v12H256v-12c0-6.627-5.373-12-12-12h-12v-24h88v12c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-72c0-6.627-5.373-12-12-12h-12v-88h88v12c0 6.627 5.373 12 12 12h12v160zm40 64h-32v-32h32v32zm0-256h-32v-32h32v32z"></path> 366 </symbol> 367 <symbol viewBox="0 0 512 512" id="far.fa-paper-plane"> 368 <path fill="currentColor" d="M440 6.5L24 246.4c-34.4 19.9-31.1 70.8 5.7 85.9L144 379.6V464c0 46.4 59.2 65.5 86.6 28.6l43.8-59.1 111.9 46.2c5.9 2.4 12.1 3.6 18.3 3.6 8.2 0 16.3-2.1 23.6-6.2 12.8-7.2 21.6-20 23.9-34.5l59.4-387.2c6.1-40.1-36.9-68.8-71.5-48.9zM192 464v-64.6l36.6 15.1L192 464zm212.6-28.7l-153.8-63.5L391 169.5c10.7-15.5-9.5-33.5-23.7-21.2L155.8 332.6 48 288 464 48l-59.4 387.3z"/> 369 </symbol> 370 <symbol viewBox="0 0 512 512" id="fas.fa-random"> 371 <path fill="currentColor" d="M504.971 359.029c9.373 9.373 9.373 24.569 0 33.941l-80 79.984c-15.01 15.01-40.971 4.49-40.971-16.971V416h-58.785a12.004 12.004 0 0 1-8.773-3.812l-70.556-75.596 53.333-57.143L352 336h32v-39.981c0-21.438 25.943-31.998 40.971-16.971l80 79.981zM12 176h84l52.781 56.551 53.333-57.143-70.556-75.596A11.999 11.999 0 0 0 122.785 96H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12zm372 0v39.984c0 21.46 25.961 31.98 40.971 16.971l80-79.984c9.373-9.373 9.373-24.569 0-33.941l-80-79.981C409.943 24.021 384 34.582 384 56.019V96h-58.785a12.004 12.004 0 0 0-8.773 3.812L96 336H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12h110.785c3.326 0 6.503-1.381 8.773-3.812L352 176h32z"/> 372 </symbol> 373 <symbol viewBox="0 0 512 512" id="far.fa-envelope"> 374 <path fill="currentColor" d="M464 64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm0 48v40.805c-22.422 18.259-58.168 46.651-134.587 106.49-16.841 13.247-50.201 45.072-73.413 44.701-23.208.375-56.579-31.459-73.413-44.701C106.18 199.465 70.425 171.067 48 152.805V112h416zM48 400V214.398c22.914 18.251 55.409 43.862 104.938 82.646 21.857 17.205 60.134 55.186 103.062 54.955 42.717.231 80.509-37.199 103.053-54.947 49.528-38.783 82.032-64.401 104.947-82.653V400H48z"/> 375 </symbol> 376 <symbol viewBox="0 0 448 512" id="far.fa-bell"> 377 <path fill="currentColor" d="M439.39 362.29c-19.32-20.76-55.47-51.99-55.47-154.29 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84C118.56 68.1 64.08 130.3 64.08 208c0 102.3-36.15 133.53-55.47 154.29-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h383.8c19.12 0 32-15.6 32.1-32 .05-7.55-2.61-15.27-8.61-21.71zM67.53 368c21.22-27.97 44.42-74.33 44.53-159.42 0-.2-.06-.38-.06-.58 0-61.86 50.14-112 112-112s112 50.14 112 112c0 .2-.06.38-.06.58.11 85.1 23.31 131.46 44.53 159.42H67.53zM224 512c35.32 0 63.97-28.65 63.97-64H160.03c0 35.35 28.65 64 63.97 64z"/> 378 </symbol> 379 <symbol viewBox="0 0 320 512" id="fas.fa-chevron-right">
380 <path fill="currentColor" d="M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z"/> 381 </symbol> 382 <symbol viewBox="0 0 384 512" id="fas.fa-map-marker-alt"> 383 <path fill="currentColor" d="M172.268 501.67C26.97 291.031 0 269.413 0 192 0 85.961 85.961 0 192 0s192 85.961 192 192c0 77.413-26.97 99.031-172.268 309.67-9.535 13.774-29.93 13.773-39.464 0zM192 272c44.183 0 80-35.817 80-80s-35.817-80-80-80-80 35.817-80 80 35.817 80 80 80z"/> 384 </symbol> 385 <symbol viewBox="0 0 576 512" id="far.fa-star"> 386 <path fill="currentColor" d="M528.1 171.5L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6zM388.6 312.3l23.7 138.4L288 385.4l-124.3 65.3 23.7-138.4-100.6-98 139-20.2 62.2-126 62.2 126 139 20.2-100.6 98z"/> 387 </symbol> 388 <symbol viewBox="0 0 512 512" id="fas.fa-highlighter"> 389 <path d="M0 481.907L93.908 512l33.317-33.317-63.006-63.006zm117.112-225.57a34.39 34.39 0 0 0-10.14 35.808l12.264 40.253-47.865 47.875 90.44 90.44 47.8-47.8 40.168 12.293a34.39 34.39 0 0 0 35.854-10.13l33.411-39.135-162.91-162.91zm379.043-151.03L436.758 45.91c-19.257-19.257-50.168-20.225-70.6-2.209L179.085 203.435 338.64 362.999l159.724-187.082c18.026-20.432 17.058-51.343-2.209-70.61z" fill="currentColor"/> 390 </symbol> 391 <symbol viewBox="0 0 512 512" id="far.fa-comment"> 392 <path fill="currentColor" d="M256 32C114.6 32 0 125.1 0 240c0 47.6 19.9 91.2 52.9 126.3C38 405.7 7 439.1 6.5 439.5c-6.6 7-8.4 17.2-4.6 26S14.4 480 24 480c61.5 0 110-25.7 139.1-46.3C192 442.8 223.2 448 256 448c141.4 0 256-93.1 256-208S397.4 32 256 32zm0 368c-26.7 0-53.1-4.1-78.4-12.1l-22.7-7.2-19.5 13.8c-14.3 10.1-33.9 21.4-57.5 29 7.3-12.1 14.4-25.7 19.9-40.2l10.6-28.1-20.6-21.8C69.7 314.1 48 282.2 48 240c0-88.2 93.3-160 208-160s208 71.8 208 160-93.3 160-208 160z"/> 393 </symbol> 394 <symbol viewBox="0 0 576 512" id="far.fa-star"> 395 <path fill="currentColor" d="M528.1 171.5L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6zM388.6 312.3l23.7 138.4L288 385.4l-124.3 65.3 23.7-138.4-100.6-98 139-20.2 62.2-126 62.2 126 139 20.2-100.6 98z"/> 396 </symbol> 397 <symbol viewBox="0 0 512 512" id="far.fa-thumbs-up"> 398 <path fill="currentColor" d="M466.27 286.69C475.04 271.84 480 256 480 236.85c0-44.015-37.218-85.58-85.82-85.58H357.7c4.92-12.81 8.85-28.13 8.85-46.54C366.55 31.936 328.86 0 271.28 0c-61.607 0-58.093 94.933-71.76 108.6-22.747 22.747-49.615 66.447-68.76 83.4H32c-17.673 0-32 14.327-32 32v240c0 17.673 14.327 32 32 32h64c14.893 0 27.408-10.174 30.978-23.95 44.509 1.001 75.06 39.94 177.802 39.94 7.22 0 15.22.01 22.22.01 77.117 0 111.986-39.423 112.94-95.33 13.319-18.425 20.299-43.122 17.34-66.99 9.854-18.452 13.664-40.343 8.99-62.99zm-61.75 53.83c12.56 21.13 1.26 49.41-13.94 57.57 7.7 48.78-17.608 65.9-53.12 65.9h-37.82c-71.639 0-118.029-37.82-171.64-37.82V240h10.92c28.36 0 67.98-70.89 94.54-97.46 28.36-28.36 18.91-75.63 37.82-94.54 47.27 0 47.27 32.98 47.27 56.73 0 39.17-28.36 56.72-28.36 94.54h103.99c21.11 0 37.73 18.91 37.82 37.82.09 18.9-12.82 37.81-22.27 37.81 13.489 14.555 16.371 45.236-5.21 65.62zM88 432c0 13.255-10.745 24-24 24s-24-10.745-24-24 10.745-24 24-24 24 10.745 24 24z"/> 399 </symbol> 400 <symbol viewBox="0 0 512 512" id="far.fa-heart"> 401 <path fill="currentColor" d="M458.4 64.3C400.6 15.7 311.3 23 256 79.3 200.7 23 111.4 15.6 53.6 64.3-21.6 127.6-10.6 230.8 43 285.5l175.4 178.7c10 10.2 23.4 15.9 37.6 15.9 14.3 0 27.6-5.6 37.6-15.8L469 285.6c53.5-54.7 64.7-157.9-10.6-221.3zm-23.6 187.5L259.4 430.5c-2.4 2.4
401-4.4 2.4-6.8 0L77.2 251.8c-36.5-37.2-43.9-107.6 7.3-150.7 38.9-32.7 98.9-27.8 136.5 10.5l35 35.7 35-35.7c37.8-38.5 97.8-43.2 136.5-10.6 51.1 43.1 43.5 113.9 7.3 150.8z"/> 402 </symbol> 403 <symbol viewBox="0 0 512 512" id="fas.fa-share"> 404 <path fill="currentColor" d="M503.691 189.836L327.687 37.851C312.281 24.546 288 35.347 288 56.015v80.053C127.371 137.907 0 170.1 0 322.326c0 61.441 39.581 122.309 83.333 154.132 13.653 9.931 33.111-2.533 28.077-18.631C66.066 312.814 132.917 274.316 288 272.085V360c0 20.7 24.3 31.453 39.687 18.164l176.004-152c11.071-9.562 11.086-26.753 0-36.328z"/> 405 </symbol> 406 <symbol viewBox="0 0 512 512" id="far.fa-bookmark"> 407 <path d="M400 0H112C85.49 0 64 21.49 64 48v464l192-112 192 112V48c0-26.51-21.49-48-48-48zm0 428.43l-144-84-144 84V54a6 6 0 0 1 6-6h276c3.314 0 6 2.683 6 5.996z" fill="currentColor"/> 408 </symbol> 409 <symbol viewBox="0 0 512 512" id="fas.fa-map-marker-alt"> 410 <path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/> 411 </symbol> 412 <symbol viewBox="0 0 512 512" id="fas.fa-search"> 413 <path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/> 414 </symbol> 415 <symbol viewBox="0 0 320 512" id="fas.fa-angle-down"> 416 <path fill="currentColor" d="M143 352.3L7 216.3c-9.4-9.4-9.4-24.6 0-33.9l22.6-22.6c9.4-9.4 24.6-9.4 33.9 0l96.4 96.4 96.4-96.4c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9l-136 136c-9.2 9.4-24.4 9.4-33.8 0z"/> 417 </symbol> 418 <symbol viewBox="0 0 576 512" id="fas.fa-star"> 419 <path fill="currentColor" d="M259.3 17.8L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0z"/> 420 </symbol> 421</svg> 422</head> 423<body> 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453<nav id="web_page_main_header" class="navbar navbar-expand-lg navbar-light bg-light fixed-top custom-nav-bar-1597872958 custom-nav-bar-light-1597872958"> 454 455 456 <div class="container" style=""> 457 458 <a id="left-menu-button-1597872958" class="left-menu-button-1597872958 left-menu-button-light-1597872958" href="javascript: void(0)" onclick="window.daToggleLeftMenu();" title="Left menu."> 459 <svg style="margin: auto; width: 30px; height: 30px;" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 271 271"><rect ry="10.093" y="62.626" x="47.216" height="20.186" width="176.997" fill="#fff" fill-opacity=".988" fill-rule="evenodd"/><rect width="176.997" height="20.186" x="47.216" y="125.622" ry="10.093" fill="#fff" fill-opacity=".988" fill-rule="evenodd"/><rect ry="10.093" y="188.617" x="47.216" height="20.186" width="176.997" fill="#fff" fill-opacity=".988" fill-rule="evenodd"/></svg> 460 </a> 461 <a href="/" class="navbar-brand"> 462 463 464 465 466<svg 467 xmlns:dc="http://purl.org/dc/elements/1.1/" 468 xmlns:cc="http://creativecommons.org/ns#" 469 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 470 xmlns:svg="http://www.w3.org/2000/svg" 471 xmlns="http://www.w3.org/2000/svg" 472 xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" 473 xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" 474 width="26" 475 height="26"
476 viewBox="0 0 6.8791663 6.8791662" 477 version="1.1" 478 id="svg959" 479 sodipodi:docname="da_logo_v6_export_26px.svg" 480 inkscape:version="0.92.4 (5da689c313, 2019-01-14)"> 481 <defs 482 id="defs953" /> 483 <sodipodi:namedview 484 id="base" 485 pagecolor="#ffffff" 486 bordercolor="#666666" 487 borderopacity="1.0" 488 inkscape:pageopacity="0.0" 489 inkscape:pageshadow="2" 490 inkscape:zoom="15.839192" 491 inkscape:cx="24.083929" 492 inkscape:cy="11.431012" 493 inkscape:document-units="mm" 494 inkscape:current-layer="layer1" 495 showgrid="false" 496 fit-margin-top="0" 497 fit-margin-left="0" 498 fit-margin-right="0" 499 fit-margin-bottom="0" 500 inkscape:window-width="1858" 501 inkscape:window-height="1057" 502 inkscape:window-x="54" 503 inkscape:window-y="-8" 504 inkscape:window-maximized="1" 505 units="px" /> 506 <metadata 507 id="metadata956"> 508 <rdf:RDF> 509 <cc:Work 510 rdf:about=""> 511 <dc:format>image/svg+xml</dc:format> 512 <dc:type 513 rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> 514 <dc:title></dc:title> 515 </cc:Work> 516 </rdf:RDF> 517 </metadata> 518 <g 519 inkscape:label="Layer 1" 520 inkscape:groupmode="layer" 521 id="layer1" 522 transform="translate(-0.39595711,-286.94232)"> 523 <rect 524 style="opacity:1;fill:#3085d6;fill-opacity:1;stroke:none;stroke-width:0.97401077;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 525 id="rect819-0" 526 width="6.8791666" 527 height="6.8791666" 528 x="0.39595711" 529 y="286.94232" 530 ry="0.52396488" /> 531 <text 532 xml:space="preserve" 533 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.72542858px;line-height:1.25;font-family:'Segoe UI';-inkscape-font-specification:'Segoe UI';letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.1431357" 534 x="1.918119" 535 y="292.59387" 536 id="text823-0"><tspan 537 sodipodi:role="line" 538 id="tspan821-4" 539 x="1.918119" 540 y="292.59387" 541 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Segoe UI';-inkscape-font-specification:'Segoe UI Bold';fill:#ffffff;stroke-width:0.1431357">d</tspan></text> 542 </g> 543</svg> 544 545 546 547 548 <span style="" id="nav-bar-main-logo-1597872958" class="nav-bar-main-logo nav-bar-main-logo-light-1597872958">dirask</span> 549 </a> 550 551 <div class="d-flex flex-row order-2 order-lg-3" style="margin-left: auto;"> 552 <ul class="navbar-nav flex-row"> 553 554 555 556 <style> 557 558 559 </style> 560 561 562 563 564 565 566 567 568 569 570 <li> 571 572 <a href="/wiki/random-post" 573 class="navbar-brand ek_nav_bar_a_custom da_navbar_random_btn" 574 style="margin-left: 10px" 575 role="button" aria-haspopup="true" aria-expanded="false" title="Find random knowledge post."> 576 577 <svg class="nav-bar-custom-icon-1597872958 nav-bar-custom-icon-light-1597872958 fas fa-random"> 578 <use handle="item-icon" href="#fas.fa-random" /> 579 </svg> 580 </a> 581 </li> 582 583 584 585 <li> 586 587 <a href="javascript: window.fireComingSoonInfo()" 588 class="navbar-brand ek_nav_bar_a_custom da_navbar_search" 589 role="button" aria-haspopup="true" aria-expanded="false"> 590 591 <svg class="nav-bar-custom-icon-1597872958 nav-bar-custom-icon-light-1597872958 fas fa-search"> 592 <use handle="item-icon" href="#fas.fa-search" /> 593 </svg> 594 </a> 595 </li> 596 597 <li> 598 599 <a href="javascript: window.fireComingSoonInfo()" 600 class="navbar-brand ek_nav_bar_a_custom da_navbar_envelope" 601 role="button" aria-haspopup="true" aria-expanded="false" title="Show received messages."> 602 603 <svg class="nav-bar-custom-icon-1597872958 nav-bar-custom-icon-light-1597872958 far fa-envelope"> 604 <use handle="item-icon" href="#far.fa-envelope" /> 605 </svg> 606 </a> 607 </li> 608 609 <li> 610 611 <a href="javascript: window.fireComingSoonInfo()" 612 class="navbar-brand ek_nav_bar_a_custom da_navbar_notifications" 613 role="button" aria-haspopup="true" aria-expanded="false" title="Show received notifications."> 614 615 <svg class="nav-bar-custom-icon-1597872958 nav-bar-custom-icon-light-1597872958 far fa-bell"> 616 <use handle="item-icon" href="#far.fa-bell" /> 617 </svg> 618 </a> 619 </li> 620 621 <li style="margin-top: 4px;"> 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636
637<script> 638 639 function applyLanguages() 640 { 641 var selectedLanguages = []; 642 643 var hInputs = document.querySelectorAll('input.site-languages-label-1597181398'); 644 645 for (var i = 0; i < hInputs.length; ++i) 646 { 647 var hInput = hInputs[i]; 648 649 if (hInput.checked) 650 selectedLanguages.push(hInput.value); 651 } 652 653 var selectedLanguagesText = selectedLanguages.join(","); 654 655 var jsonRequestData = { 656 contentLanguages: selectedLanguagesText 657 }; 658 659 $.ajax({ 660 type: "POST", 661 contentType: 'application/json; charset=utf-8', 662 dataType: 'json', 663 data: JSON.stringify(jsonRequestData), 664 url: '/languages/set-content-language/submit', 665 success: function (response) { 666 console.log('Submission was successful.'); 667 console.log(response); 668 if (response.success) { 669 location.reload(); 670 // window.location.href = response.redirectUrl; 671 } else { 672 Swal.fire({ 673 type: 'info', 674 title: 'Info', 675 text: JSON.stringify(response.errorMessage) 676 }); 677 } 678 }, 679 error: function (response) { 680 console.error('An error occurred.'); 681 console.error(response); 682 Swal.fire({ 683 type: 'info', 684 title: 'Info', 685 text: 'Something went wrong.' 686 }); 687 } 688 }); 689 } 690 691</script>
691 692 693<style> 694 695 /* --- button with selected languages --- */ 696 697 div.site-languages-selection-activator 698 { 699 margin: 0; 700 padding: 3px 0 0 0; 701 display: flex; 702 cursor: pointer; 703 } 704 705 706 span.site-languages-used-language + span.site-languages-used-language 707 { 708 margin: 0 0 0 3px; 709 } 710 711 /* --- menu with languages to select --- */ 712 713 div.site-languages-options-1597181398 714 { 715 padding: 10px 10px 0 10px; 716 font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"; 717 display: flex; 718 } 719 720 div.site-languages-separator-1597181398 721 { 722 margin: 40px 25px 0 25px; 723 border-left: #eaeaea 1px solid; 724 } 725 726 div.site-languages-block-1597181398 727 { 728 width: 160px; 729 } 730 731 div.site-languages-header-1597181398 732 { 733 color: #1978b3; 734 } 735 736 div.site-languages-content-1597181398 737 { 738 margin: 13px 0 0 0; 739 } 740 741 label.site-languages-label-1597181398 742 { 743 padding: 3px 23px; 744 display: block; 745 cursor: pointer; 746 } 747 748 span.site-languages-text-1597181398 749 { 750 margin: 0 0 0 5px; 751 } 752 753 div.site-languages-navigator-1597181398 754 { 755 margin: 30px 0 0 0; 756 display: flex; 757 } 758 759 div.site-languages-spacer-1597181398 760 { 761 flex: 1; 762 } 763 764 div.site-languages-action-1597181398 765 { 766 flex: 0; 767 } 768 769 button.apply-site-languages 770 { 771 padding: 7px 20px; 772 border: 1px solid #b4bac0; 773 border-radius: 4px; 774 background: white; 775 text-decoration: none; 776 line-height: 22px; 777 letter-spacing: 1px; 778 white-space: nowrap; 779 font-weight: 500; 780 font-size: 14px; 781 color: #495057; 782 cursor: pointer; 783 } 784 785 @media (max-width: 750px) 786 { 787 div.site-languages-options-1597181398 788 { 789 display: block; 790 } 791 } 792 793</style> 794 795 796<div id="da_navbar_languages" style="" class="da_navbar_languages"> 797 798 <div id="site-languages-selection-activator" class="site-languages-selection-activator"> 799 800 <span class="site-languages-used-language site-languages-used-language-light"> 801 EN 802 </span> 803 804 </div> 805</div> 806 807<!-- absolute positioning with negative position is used only to avid UI jumping --> 808<div id="site-languages-selection-popper" class="popper-1596984865" style="position: absolute; left: -5000px; top: -5000px; visibility: hidden"> 809 <div class="popper-arrow-border-1596984865"> 810 <div class="popper-arrow-background-1596984865"></div> 811 </div> 812 <div class="popper-content-1596984865"> 813 <div class="site-languages-options-1597181398"> 814 <div class="site-languages-block-1597181398"> 815 <div class="site-languages-header-1597181398"> 816 Site Language 817 </div> 818 <div class="site-languages-content-1597181398"> 819 <label class="site-languages-label-1597181398 form-check-label"> 820 <input type="radio" class="site-languages-label-1597181398 form-check-input" checked /> 821 <span class="site-languages-text-1597181398">English</span> 822 </label> 823 </div> 824 825 826 827 </div> 828 <div class="site-languages-separator-1597181398"></div> 829 <div class="site-languages-block-1597181398"> 830 <div class="site-languages-header-1597181398"> 831 Content Language 832 </div> 833 <div class="site-languages-content-1597181398"> 834 835 <label class="site-languages-label-1597181398 form-check-label"> 836 <input type="checkbox" class="site-languages-label-1597181398 form-check-input" value="en" checked />
837 <span class="site-languages-text-1597181398">English</span> 838 </label> 839 840 <label class="site-languages-label-1597181398 form-check-label"> 841 <input type="checkbox" class="site-languages-label-1597181398 form-check-input" value="pl" /> 842 <span class="site-languages-text-1597181398">Polski</span> 843 </label> 844 845 <label class="site-languages-label-1597181398 form-check-label"> 846 <input type="checkbox" class="site-languages-label-1597181398 form-check-input" value="de" /> 847 <span class="site-languages-text-1597181398">Deutsch</span> 848 </label> 849 850 <label class="site-languages-label-1597181398 form-check-label"> 851 <input type="checkbox" class="site-languages-label-1597181398 form-check-input" value="pt" /> 852 <span class="site-languages-text-1597181398">Português</span> 853 </label> 854 855 </div> 856 </div> 857 </div> 858 <div class="site-languages-navigator-1597181398"> 859 860 861 862 863 864 865 866 867 868
869<script> 870 871 function darkNavBarOnChange(element) { 872 873 var navBarDark = element.checked; 874 875 if (navBarDark) { 876 changeNavBarColor(true); 877 } else { 878 changeNavBarColor(false); 879 } 880 881 //console.log('Agreement changed to ' + element.checked + ' by onchange event.'); 882 } 883 884 function changeNavBarColor(isNavBarDark) 885 { 886 var jsonRequestData = { 887 navBarDark: isNavBarDark 888 }; 889 890 $.ajax({ 891 type: "POST", 892 contentType: 'application/json; charset=utf-8', 893 dataType: 'json', 894 data: JSON.stringify(jsonRequestData), 895 url: '/nav-bar-color-change/submit', 896 success: function (response) { 897 console.log('Submission was successful.'); 898 console.log(response); 899 if (response.success) { 900 location.reload(); 901 // window.location.href = response.redirectUrl; 902 } else { 903 Swal.fire({ 904 type: 'info', 905 title: 'Info', 906 text: JSON.stringify(response.errorMessage) 907 }); 908 } 909 }, 910 error: function (response) { 911 console.error('An error occurred.'); 912 console.error(response); 913 Swal.fire({ 914 type: 'info', 915 title: 'Info', 916 text: 'Something went wrong.' 917 }); 918 } 919 }); 920 } 921 922</script>
922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 <div class="site-languages-spacer-1597181398"></div> 958 959 <div class="site-languages-action-1597181398"> 960 <button class="apply-site-languages" onclick="applyLanguages()">Apply</button> 961 </div> 962 </div> 963 </div> 964</div> 965
966<script> 967 968 window.SITE_LANGUAGES_SELECTION = new Popper2({ 969 popperVisible: false, 970 hContainer: document.querySelector('#da_navbar_languages'), 971 hActivator: document.querySelector('#site-languages-selection-activator'), 972 hPopper: document.querySelector('#site-languages-selection-popper'), 973 calculateOffset: function(hContainer, hActivator, hPopper) 974 { 975 var offset = ElementUtils.calculateOffset(hActivator); 976 977 var result = { 978 left: Math.round(offset.x + 0.5 * hActivator.offsetWidth - hPopper.offsetWidth + 43), 979 top: Math.round(offset.y + hActivator.offsetHeight + 16) 980 }; 981 982 return result; 983 } 984 }); 985 986</script>
986 987 988 989 </li> 990 991 992 993 994 995 996 997 998 999 1000 1001 <style> 1002 1003 .nav-bar-account-button-1597872958 { 1004 padding-left: 10px; 1005 padding-right: 10px; 1006 padding-top: 3px; 1007 padding-bottom: 3px; 1008 border-radius: 4px; 1009 font-size: 12px; 1010 font-weight: 700; 1011 line-height: 24px; 1012 letter-spacing: 1px; 1013 } 1014 1015 .nav-bar-sign-up-button-1597872958 { 1016 background: #3085d6; 1017 border: 1px solid #0579d0; 1018 margin-right: 5px; 1019 padding-left: 18px; 1020 padding-right: 18px; 1021 } 1022 1023 </style> 1024 1025 <li class="nav-item" style="margin-top: 3px;"> 1026 <a href="/users/login" 1027 id="nav-bar-log-in-button-1597872958" 1028 class="navbar-brand nav-bar-account-button-1597872958 nav-bar-log-in-button-1597872958 nav-bar-log-in-button-light-1597872958" role="button" 1029 aria-haspopup="true" aria-expanded="false" style=" ">Log in</a> 1030 1031 </li> 1032 1033 <li class="nav-item main_page_menu_sign_up_nav_item_expanded" style="margin-top: 3px;"> 1034 <a href="/users/sign-up" class="navbar-brand nav-bar-account-button-1597872958 nav-bar-sign-up-button-1597872958" role="button" 1035 aria-haspopup="true" aria-expanded="false" style="color: white">Join</a> 1036 </li> 1037 1038 1039 </ul> 1040 1041 </div> 1042 1043 <div class="collapse navbar-collapse order-3 order-lg-2" id="navbarNavDropdown"> 1044 1045 1046 </div> 1047 </div> 1048</nav> 1049 1050 1051 1052<main role="main" class="page_main_area" style=""> 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064<div class="qa_main_box"> 1065 1066 1067 1068 1069 1070 1071<div id="left-menu-cover" class="left-menu-cover" onclick="hideLeftMenu();"></div> 1072<div id="left-menu-content" class="left-menu-content"> 1073 1074 <div class="da_main_page_left_column" style=""> 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085
1086<script> 1087 1088 window.fireComingSoonInfo = function() { 1089 Swal.fire({ 1090 type: 'info', 1091 title: 'Info', 1092 text: "Available only for beta testers." 1093 }); 1094 } 1095 1096</script>
1096 1097 1098 1099 1100 1101<div style="margin: 33px 20px 25px 20px" class="left_menu_column_item"> 1102 1103 1104 1105 1106 1107 <style> 1108 1109 #left-menu-items-container 1110 { 1111 1112 } 1113 1114 div.left-menu-group 1115 { 1116 margin: 25px 0 0 0; 1117 } 1118 1119 div.left-menu-title 1120 { 1121 margin: 0 0 0 -10px; 1122 font-size: 12px; 1123 color: #1978b3; 1124 } 1125 1126 div.left-menu-items 1127 { 1128 margin: 10px 0 0 0; 1129 } 1130 1131 a.left-menu-item 1132 { 1133 margin: -4px -20px; 1134 padding: 4px 20px; 1135 max-height: 30px; 1136 text-decoration: none; 1137 white-space: nowrap; 1138 display: flex; 1139 } 1140 1141 a.left-menu-item + a.left-menu-item 1142 { 1143 margin-top: 10px; 1144 } 1145 1146 svg.left-menu-item-icon 1147 { 1148 margin: auto; 1149 flex: 0 0 20px; 1150 height: 1em; 1151 font-size: 18px; 1152 color: #3085d6; 1153 display: flex; 1154 } 1155 1156 a.left-menu-item > svg.fas.fa-home 1157 { 1158 font-size: 16px; 1159 } 1160 1161 a.left-menu-item > svg.far.fa-lightbulb 1162 { 1163 font-size: 20px; 1164 } 1165 1166 a.left-menu-item > svg.far.fa-comments 1167 { 1168 font-size: 16px; 1169 } 1170 1171 a.left-menu-item > svg.fas.fa-briefcase 1172 { 1173 font-size: 16px; 1174 } 1175 1176 1177 a.left-menu-item > svg.fas.fa-edit 1178 { 1179 font-size: 16px; 1180 } 1181 1182 a.left-menu-item > svg.far.fa-object-ungroup 1183 { 1184 font-size: 16px; 1185 } 1186 1187 a.left-menu-item > svg.far.fa-paper-plane 1188 { 1189 font-size: 16px; 1190 } 1191 1192 a.left-menu-item > svg.fas.fa-rss 1193 { 1194 font-size: 16px; 1195 } 1196 1197 span.left-menu-item-name 1198 { 1199 margin-left: 18px; 1200 flex: 1; 1201 align-items: center; 1202 line-height: 22px; 1203 display: flex; 1204 font-size: 15px; 1205 } 1206 1207 span.left-menu-item-text 1208 { 1209 /* nothing here ... */ 1210 } 1211 1212 span.left-menu-item-stamp 1213 { 1214 margin: 0 10px; 1215 padding: 0 5px; 1216 border-radius: 6px; 1217 background: #a7cfe8; 1218 line-height: 15px; 1219 font-size: 12px; 1220 color: white; 1221 } 1222 1223 a.left-menu-item-default 1224 { 1225 /* nothing here ... */ 1226 } 1227 1228 a.left-menu-item-default span.left-menu-item-text 1229 { 1230 font-weight: 400; 1231 font-size: 15px; 1232 } 1233 1234 a.left-menu-item-selected 1235 { 1236 background: #dcf0fd; 1237 } 1238 1239 a.left-menu-item-selected span.left-menu-item-name 1240 { 1241 font-weight: 600; 1242 font-size: 16px; 1243 color: #3085d6; 1244 } 1245 1246 </style> 1247 1248 1249 <div id="left-menu-items-container"> 1250 <a class="left-menu-item left-menu-item-default" href="/home" title="Home"> 1251 <svg handle="item-icon" class="left-menu-item-icon fas fa-home"> 1252 <use href="#fas.fa-home" /> 1253 </svg> 1254
1255 <span handle="item-name" class="left-menu-item-name">Home</span> 1256 </a> 1257 <a class="left-menu-item left-menu-item-default" style="filter: grayscale(0.4) opacity(0.4);" href="javascript: window.fireComingSoonInfo()" title="Communities"> 1258 <svg handle="item-icon" class="left-menu-item-icon fas fa-users"> 1259 <use href="#fas.fa-users" /> 1260 </svg> 1261 1262 <span handle="item-name" class="left-menu-item-name">Communities</span> 1263 </a> 1264 <div class="left-menu-group"> 1265 <div handle="group-name" class="left-menu-title">IT Knowledge</div> 1266 <div handle="group-items" class="left-menu-items"> 1267 <a class="left-menu-item left-menu-item-default" href="/snippets" title="Snippets"> 1268 <svg handle="item-icon" class="left-menu-item-icon far fa-object-ungroup"> 1269 <use href="#far.fa-object-ungroup" /> 1270 </svg> 1271 <span handle="item-name" class="left-menu-item-name">Snippets</span> 1272 </a> 1273 <a class="left-menu-item left-menu-item-default" href="/posts" title="Wiki for Code"> 1274 <svg handle="item-icon" class="left-menu-item-icon far fa-lightbulb"> 1275 <use href="#far.fa-lightbulb" /> 1276 </svg> 1277 1278 <span handle="item-name" class="left-menu-item-name"><span class="left-menu-item-text">Wiki </span><span class="left-menu-item-stamp">for Code</span></span> 1279 </a> 1280 <a class="left-menu-item left-menu-item-default" href="/questions" title="Questions"> 1281 <svg handle="item-icon" class="left-menu-item-icon far fa-comments"> 1282 <use href="#far.fa-comments" /> 1283 </svg> 1284 1285 <span handle="item-name" class="left-menu-item-name">Questions</span> 1286 </a> 1287 </div> 1288 </div> 1289 1290 <div class="left-menu-group"> 1291 1292 <div handle="group-name" class="left-menu-title">Inspiration</div> 1293 <div handle="group-items" class="left-menu-items"> 1294 <a class="left-menu-item left-menu-item-default" style="filter: grayscale(0.4) opacity(0.4);" href="javascript: window.fireComingSoonInfo()" title="News"> 1295 <svg class="left-menu-item-icon fas fa-rss"> 1296 <use handle="item-icon" href="#fas.fa-rss" /> 1297 </svg> 1298 1299 <span handle="item-name" class="left-menu-item-name">News</span> 1300 </a> 1301 <a class="left-menu-item left-menu-item-default" href="/findings" title="Findings & News"> 1302 <svg handle="item-icon" class="left-menu-item-icon far fa-paper-plane"> 1303 <use href="#far.fa-paper-plane" /> 1304 </svg> 1305 1306 1307 <span handle="item-name" class="left-menu-item-name">Findings</span> 1308 </a> 1309 </div> 1310 </div> 1311 </div> 1312 1313
1313<script> 1314 1315 1316 1317 createScope(function() 1318 { 1319 var counter = 0; 1320 1321 window.PageKey = { 1322 HOME: ++counter, 1323 BLOGS: ++counter, 1324 SNIPPETS: ++counter, 1325 WIKI: ++counter, 1326 QUESTIONS: ++counter, 1327 COMMUNITIES: ++counter, 1328 JOB_OFFERS: ++counter, 1329 POST_JOB: ++counter, 1330 //RECRUITMENT_TOOLS: ++counter, 1331 FINDINGS: ++counter, 1332 NEWS: ++counter, 1333 MEETUPS: ++counter 1334 }; 1335 1336 window.PageName = { 1337 HOME: 'Home', 1338 BLOGS: 'Blog Posts', 1339 SNIPPETS: 'Snippets', 1340 WIKI: 'Wiki **for Code**', 1341 //QUESTIONS: 'Q & A', 1342 QUESTIONS: 'Questions', 1343 COMMUNITIES: 'Communities', 1344 YOUR_NETWORK: 'Your Network', 1345 JOB_OFFERS: 'Job Offers', 1346 POST_JOB: 'Post a Job **for Free**', 1347 //RECRUITMENT_TOOLS: 'Recruitment tools', 1348 //FINDINGS: 'Sharing', 1349 FINDINGS: 'Findings', 1350 NEWS: 'News', 1351 // FINDINGS: 'Findings', 1352 MEETUPS: 'Meetups & Events' 1353 // MEETUPS: 'Meetups' 1354 }; 1355 1356 window.PageLink = { 1357 HOME: '/home', 1358 BLOGS: '/blogs', 1359 SNIPPETS: '/snippets', 1360 WIKI: '/posts', 1361 QUESTIONS: '/questions', 1362 COMMUNITIES: '/communities', 1363 //JOB_OFFERS: '/jobs', 1364 JOB_OFFERS: 'https://dev-task.com/', 1365 //POST_JOB: '/business-account/jobs#section=post-job', 1366 POST_JOB: 'https://dev-task.com/business-account/jobs#section=post-offer', 1367 //RECRUITMENT_TOOLS: '/business-account/jobs#section=published-offers', 1368 FINDINGS: '/findings', 1369 NEWS: '/news', 1370 MEETUPS: '/meetups' 1371 }; 1372 1373 var pages = [ 1374 { 1375 name: '', 1376 items: [ 1377 { key: PageKey.HOME, icon: 'fas.fa-home', name: PageName.HOME, link: PageLink.HOME, expressions: [ /^\/home(\/|\?|#|$)/, /^(\/?$|[?#])/ ] }, 1378 { key: PageKey.COMMUNITIES, icon: 'fas.fa-users', name: PageName.COMMUNITIES, link: PageLink.COMMUNITIES, expressions: [ /^\/communities(\/|\?|#|$)/, /^\/c(\/|\?|#|$)/ ] } 1379 //{ key: PageKey.COMMUNITIES, icon: 'fas.fa-users', name: PageName.COMMUNITIES, link: PageLink.COMMUNITIES, expressions: [ /^\/communities(\/|\?|#|$)/, /^\/c(\/|\?|#|$)/ ] }, 1380 //{ key: PageKey.YOUR_NETWORK, icon: 'fas.fa-share-alt', name: PageName.YOUR_NETWORK, link: PageLink.YOUR_NETWORK, expressions: [ /^\/communities(\/|\?|#|$)/, /^\/c(\/|\?|#|$)/ ] }, 1381 ] 1382 }, 1383 { 1384 name: 'IT Knowledge', 1385 items: [ 1386 { key: PageKey.SNIPPETS, icon: 'far.fa-object-ungroup', name: PageName.SNIPPETS, link: PageLink.SNIPPETS, expressions: [ /^\/snippets(\/|\?|#|$)/, /^\/s(\/|\?|#|$)/ ] }, 1387 { key: PageKey.WIKI, icon: 'far.fa-lightbulb', name: PageName.WIKI, link: PageLink.WIKI, expressions: [ /^\/posts(\/|\?|#|$)/, /^\/p(\/|\?|#|$)/, /^\/q(\/|\?|#|$)/ ] }, 1388 { key: PageKey.QUESTIONS, icon: 'far.fa-comments', name: PageName.QUESTIONS, link: PageLink.QUESTIONS, expressions: [ /^\/questions(\/|\?|#|$)/ ] }, // /^\/q(\/|\?|#|$)/ 1389// { key: PageKey.BLOGS, icon: 'fas.fa-blog', name: PageName.BLOGS, link: PageLink.BLOGS, expressions: [ /^\/blogs(\/|\?|#|$)/ ] }, // /^\/q(\/|\?|#|$)/ 1390 // far fa-question-circle 1391 ] 1392 }, 1393 // { 1394 // name: 'IT Career', 1395 // items: [ 1396 // { key: PageKey.JOB_OFFERS, icon: 'fas.fa-briefcase', name: PageName.JOB_OFFERS, link: PageLink.JOB_OFFERS, expressions: [ /^\/jobs(\/|\?|#|$)/, /^\/j(\/|\?|#|$)/ ] }, 1397 // { key: PageKey.POST_JOB, icon: 'fas.fa-edit', name: PageName.POST_JOB, link: PageLink.POST_JOB, expressions: [ /^\/business-account\/jobs[^#]*#(.*&)?section=post-job/ ] }, 1398 // // { key: PageKey.RECRUITMENT_TOOLS, icon: 'fas.fa-tasks', name: PageName.RECRUITMENT_TOOLS, link: PageLink.RECRUITMENT_TOOLS, expressions: [ /^\/business-account\/jobs(\/|\?|#|$)/ ] } // this one is marked when POST_JOB is not detected 1399 // ] 1400 // }, 1401 { 1402 // name: 'Meantime', 1403 name: 'Inspiration', 1404 items: [ 1405 { key: PageKey.NEWS, icon: 'fas.fa-rss', name: PageName.NEWS, link: PageLink.NEWS, expressions: [ /^\/news(\/|\?|#|$)/, /^\/n(\/|\?|#|$)/ ] }, 1406 { key: PageKey.FINDINGS, icon: 'far.fa-paper-plane', name: PageName.FINDINGS, link: PageLink.FINDINGS, expressions: [ /^\/findings(\/|\?|#|$)/, /^\/f(\/|\?|#|$)/ ] }, 1407 // { key: PageKey.MEETUPS, icon: 'fas.fa-calendar-day', name: PageName.MEETUPS, link: PageLink.MEETUPS, expressions: [ /^\/meetups(\/|\?|#|$)/, /^\/m(\/|\?|#|$)/ ] } 1408 ] 1409 } 1410 // { 1411 // name: 'Comming soon', 1412 // items: [ 1413 // { key: PageKey.BLOGS, icon: 'fas.fa-blog', name: PageName.BLOGS, link: PageLink.BLOGS, expressions: [ /^\/blogs(\/|\?|#|$)/ ] }, // /^\/q(\/|\?|#|$)/ 1414 // { key: PageKey.COMMUNITIES, icon: 'fas.fa-users', name: PageName.COMMUNITIES, link: PageLink.COMMUNITIES, expressions: [ /^\/communities(\/|\?|#|$)/, /^\/c(\/|\?|#|$)/ ] }, 1415 // { key: PageKey.MEETUPS, icon: 'fas.fa-calendar-day', name: PageName.MEETUPS, link: PageLink.MEETUPS, expressions: [ /^\/meetups(\/|\?|#|$)/, /^\/m(\/|\?|#|$)/ ] } 1416 // ] 1417 // } 1418 ]; 1419 1420 function checkExpressions(expressions, path) 1421 { 1422 for (var i = 0; i < expressions.length; ++i) 1423 { 1424 var expression = expressions[i]; 1425 1426 if (expression.test(path)) 1427 return true; 1428 } 1429 1430 return false; 1431 } 1432 1433 function detectPage(pages, path) 1434 { 1435 for (var i = 0; i < pages.length; ++i) 1436 { 1437 var page = pages[i]; 1438 var items = page.items; 1439 1440 for (var j = 0; j < items.length; ++j) 1441 { 1442 var item = items[j];
1443 1444 if (path == item.link || checkExpressions(item.expressions, path)) 1445 return item; 1446 } 1447 } 1448 1449 return null; 1450 } 1451 1452 window.PageDetector = new function() 1453 { 1454 // logic 1455 1456 var path = location.pathname + location.hash; 1457 var page = detectPage(pages, path); 1458 1459 window.addEventListener('locationchange', onChange); // this event uses custom event trigger 1460 window.addEventListener('hashchange', onChange); 1461 1462 // private methods 1463 1464 function onChange() 1465 { 1466 path = location.pathname + location.hash; 1467 page = detectPage(pages, path); 1468 } 1469 1470 // public methods 1471 1472 this.checkPageKey = function(key) 1473 { 1474 return page && page.key == key; 1475 }; 1476 1477 this.checkPageName = function(name) 1478 { 1479 return page && page.name == name; 1480 }; 1481 1482 this.checkPageLink = function(link) 1483 { 1484 return page && page.link == link; 1485 }; 1486 1487 this.checkPagePath = function(path) 1488 { 1489 return page && checkExpressions(page.expressions, path); 1490 }; 1491 }; 1492 1493 var hContainer = document.querySelector('#left-menu-items-container'); 1494 1495 function createClass(name) 1496 { 1497 if (PageDetector.checkPageName(name)) 1498 return 'left-menu-item-selected'; 1499 1500 return 'left-menu-item-default'; 1501 } 1502 1503 function prepareIcon(hIcon, icon) 1504 { 1505 var parts = icon.split('.'); 1506 1507 var hParent = hIcon.parentNode; 1508 1509 for (var i = 0; i < parts.length; ++i) 1510 hParent.classList.add(parts[i]); 1511 1512 hIcon.setAttribute('href', '#' + icon); 1513 } 1514 1515 function prepareName(hItem, hName, name) 1516 { 1517 var parts = name.split('**'); 1518 1519 if (parts.length > 1) 1520 { 1521 hItem.title = parts.join(''); 1522 1523 for (var i = 0; i < parts.length; ++i) 1524 { 1525 var part = parts[i]; 1526 1527 if (part) 1528 { 1529 var hPart = document.createElement('span'); 1530 1531 hPart.className = i % 2 == 0 ? 'left-menu-item-text' : 'left-menu-item-stamp'; 1532 hPart.innerText = part; 1533 1534 hName.appendChild(hPart); 1535 } 1536 } 1537 } 1538 else 1539 { 1540 hItem.title = name; 1541 hName.innerText = name; 1542 } 1543 } 1544 1545 function appendItem(hContainer, data) 1546 { 1547 var hItem = document.createElement('a'); 1548 1549 hItem.className = 'left-menu-item ' + createClass(data.name); 1550 hItem.innerHTML = '' + 1551 // '<i handle="item-icon" class="left-menu-item-icon"></i>' + 1552 '<svg class="left-menu-item-icon"><use handle="item-icon" href="#" /></svg>' + 1553 '<span handle="item-name" class="left-menu-item-name"></span>'; 1554 1555 var hItemIcon = hItem.querySelector('[handle="item-icon"]'); 1556 var hItemName = hItem.querySelector('[handle="item-name"]'); 1557 1558 hItem.href = data.link; 1559 1560 prepareIcon(hItemIcon, data.icon); 1561 prepareName(hItem, hItemName, data.name); 1562 1563 hContainer.appendChild(hItem); 1564 } 1565 1566 function appendGroup(hContainer, data) 1567 { 1568 var name = data.name; 1569 var items = data.items; 1570 1571 if (name) 1572 { 1573 var hGroup = document.createElement('div'); 1574 1575 hGroup.className = 'left-menu-group'; 1576 hGroup.innerHTML += '' + 1577 '<div handle="group-name" class="left-menu-title"></div>' + 1578 '<div handle="group-items" class="left-menu-items"></div>'; 1579 1580 var hGroupName = hGroup.querySelector('[handle="group-name"]'); 1581 var hGroupItems = hGroup.querySelector('[handle="group-items"]'); 1582 1583 hGroupName.innerText = name; 1584 1585 for (var i = 0; i < items.length; ++i) 1586 appendItem(hGroupItems, items[i]); 1587 1588 hContainer.appendChild(hGroup); 1589 } 1590 else 1591 { 1592 for (var i = 0; i < items.length; ++i) 1593 appendItem(hContainer, items[i]); 1594 } 1595 } 1596 1597 function appendGroups(hContainer, data) 1598 { 1599 for (var i = 0; i < data.length; ++i) 1600 appendGroup(hContainer, data[i]); 1601 } 1602 1603 function bindGroups(hContainer, data) 1604 { 1605 emptyElement(hContainer); 1606 appendGroups(hContainer, data); 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 //TODO: remove it later 1619 1620 var comingSoonSelectors = [ 1621 'a[title="Blogs"]', 1622 'a[title="Communities"]', 1623 'a[title="News"]', 1624 'a[title="Meetups & Events"]' 1625 ]; 1626 1627 1628 for (var i = 0; i < comingSoonSelectors.length; i++) { 1629 var element = document.querySelector(comingSoonSelectors[i]); 1630 if (element) 1631 { 1632 element.href = 'javascript: window.fireComingSoonInfo()'; 1633 // element.querySelector('i').style.color = '#bfbbbb'; 1634 // element.querySelector('span').style.color = '#bfbbbb'; 1635 } 1636 } 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 } 1651 1652 function onChange() 1653 { 1654 bindGroups(hContainer, pages); 1655 } 1656 1657 window.addEventListener('locationchange', onChange); // this event uses custom event trigger 1658 window.addEventListener('hashchange', onChange); 1659 1660 bindGroups(hContainer, pages); 1661 }); 1662 1663 1664 1665 </script>
1665 1666 1667 1668 1669 1670 <style> 1671 1672 [title="Communities"], [title="News"] 1673 { 1674 filter: grayscale(0.4) opacity(0.4); 1675 } 1676 1677 </style> 1678 1679 1680 1681 1682 1683 1684 1685 1686</div> 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703<style> 1704 1705 a.current-post { 1706 font-weight: 600; 1707 font-size: 16px; 1708 color: #3085d6; 1709 } 1710 1711 a.post-translated { 1712 font-size: 15px; 1713 } 1714 1715 a.post-not-translated { 1716 color: #c50400; 1717 font-size: 15px; 1718 } 1719 1720 div.languages-header 1721 { 1722 font-weight: 400; 1723 color: #22262a; 1724 font-size: 16px; 1725 } 1726 1727</style> 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 </div> 1739 1740 1741 1742 1743 1744</div> 1745
1746<script> 1747 1748 var leftMenuCover = document.getElementById('left-menu-cover'); 1749 var leftMenuContent = document.getElementById('left-menu-content'); 1750 1751 var menuContentStyle = getDisplayStyle(leftMenuContent); 1752 1753 leftMenuContent.addEventListener("animationend", function() 1754 { 1755 var hidden = leftMenuContent.classList.contains('left-menu-content-animated-hidden'); 1756 1757 if(hidden) 1758 { 1759 leftMenuContent.classList.remove('left-menu-content-animated-hidden'); 1760 leftMenuContent.classList.add('left-menu-content-hidden'); 1761 } 1762 else 1763 { 1764 leftMenuContent.classList.remove('left-menu-content-animated-visible'); 1765 leftMenuContent.classList.add('left-menu-content-visible'); 1766 } 1767 }); 1768 1769 function showLeftMenu() 1770 { 1771 leftMenuCover.classList.remove('left-menu-cover-hidden'); 1772 leftMenuCover.classList.add('left-menu-cover-visible'); 1773 1774 leftMenuContent.classList.remove('left-menu-content-hidden'); 1775 leftMenuContent.classList.add('left-menu-content-animated-visible'); 1776 } 1777 1778 function hideLeftMenu() 1779 { 1780 leftMenuCover.classList.remove('left-menu-cover-visible'); 1781 leftMenuCover.classList.add('left-menu-cover-hidden'); 1782 1783 leftMenuContent.classList.remove('left-menu-content-visible'); 1784 leftMenuContent.classList.add('left-menu-content-animated-hidden'); 1785 } 1786 1787 function getDisplayStyle(element) 1788 { 1789 var style = element.currentStyle || window.getComputedStyle(element); 1790 1791 return { 1792 isHidden: function() 1793 { 1794 return style.display == 'none'; 1795 } 1796 }; 1797 } 1798 1799 window.daToggleLeftMenu = function() 1800 { 1801 if(menuContentStyle.isHidden()) 1802 showLeftMenu(); 1803 1804 else 1805 hideLeftMenu(); 1806 } 1807 1808</script>
1808 1809 1810 <div class="main-layout-left-column-spacer" style="width: 350px;"></div> 1811 1812 <div class="question_list_cls" style=""> 1813 1814 1815 1816 1817 1818 1819
1820<script> 1821 1822 // when user click Join, we sent activation link and show success message 1823 function showSuccessMessage() { 1824 var url = new URL(window.location.href); 1825 var successMessage = url.searchParams.get("successMessage"); 1826 if (successMessage) { 1827 Swal.fire({ 1828 type: 'info', 1829 title: 'Info', 1830 html: successMessage 1831 }); 1832 } 1833 } 1834 1835 showSuccessMessage(); 1836 1837</script>
1837 1838 1839
1840<script> 1841 1842 var loginIsRequiredParam = window.SearchLocation.getParameter('login-is-required'); 1843 1844 if (loginIsRequiredParam === 'true') { 1845 Swal.fire({ 1846 type: 'info', 1847 title: 'Login is required.' 1848 }); 1849 } 1850 1851</script>
1851 1852 1853 1854 1855<div class="da_login_form_outer_box" style="margin-top: 15px;"> 1856 1857 1858 1859
1859<script src="https://apis.google.com/js/platform.js?onload=renderButton" async defer></script>
1859 1860 1861
1861<script> 1862 1863 // var clicked = false; 1864 // 1865 // function clickLogin() { 1866 // clicked = true; 1867 // } 1868 // 1869 // function gp_signOut() { 1870 // var auth2 = gapi.auth2.getAuthInstance(); 1871 // auth2.signOut().then(function () { 1872 // console.log('User signed out.'); 1873 // }); 1874 // } 1875 1876 function onSignIn(googleUser) { 1877 1878 // if (!clicked) { 1879 // gp_signOut(); 1880 // return; 1881 // } 1882 1883 // method callback after user clicks on Login with google 1884 1885 //alert('onSignIn invoked'); 1886 1887 console.log('onSignIn invoked'); 1888 console.log(googleUser); 1889 1890 // var profile = googleUser.getBasicProfile(); 1891 // console.log('ID: ' + profile.getId()); // Do not send to your backend! Use an ID token instead. 1892 // console.log('Name: ' + profile.getName()); 1893 // console.log('Image URL: ' + profile.getImageUrl()); 1894 // console.log('Email: ' + profile.getEmail()); // This is null if the 'email' scope is not present. 1895 1896 var id_token = googleUser.getAuthResponse().id_token; 1897 console.log('id_token: ' + id_token); 1898 1899 // register user 1900 1901 // call normal login 1902 1903 // 1904 var jsonRequestData = { 1905 idToken: id_token 1906 }; 1907 var url = "/users/login/google-oauth/submit"; 1908 $.ajax({
1909 type: "POST", 1910 contentType: 'application/json; charset=utf-8', 1911 dataType: 'json', 1912 data: JSON.stringify(jsonRequestData), 1913 url: url, 1914 success: function (response) { 1915 console.log('Submission was successful.'); 1916 console.log(response); 1917 if (response.success) { 1918 window.location.href = response.redirectUrl; 1919 } else { 1920 1921 var auth2 = gapi.auth2.getAuthInstance(); 1922 auth2.signOut().then(function () { 1923 //alert("gp_signOut_main_menu"); 1924 console.log('User signed out.'); 1925 }); 1926 1927 // alert(JSON.stringify(response.errorMessage)); 1928 Swal.fire({ 1929 type: 'info', 1930 title: 'Info', 1931 text: JSON.stringify(response.errorMessage) 1932 }); 1933 } 1934 }, 1935 error: function (response) { 1936 console.log('An error occurred.'); 1937 console.log(response); 1938 alert("Something went wrong."); 1939 } 1940 }); 1941 } 1942 1943 function onFailure(error) { 1944 console.log(error); 1945 } 1946 1947 // IMPL NOTE: required for google oauth - do not remove or change it, unless you know what it is. 1948 function renderButton() { 1949 gapi.signin2.render('my-signin2', { 1950 'scope': 'profile email', 1951 'width': 320, 1952 'height': 40, 1953 'longtitle': true, 1954 'theme': 'light', 1955 'onsuccess': onSignIn, 1956 'onfailure': onFailure, 1957 'ux_mode': "redirect" 1958 }); 1959 } 1960 1961 </script>
1961 1962 1963 <div class="da_login_box" style=""> 1964 1965 <style> 1966 1967 .create_account_box { 1968 display: flex; 1969 margin-left: 30px; 1970 margin-top: 30px; 1971 } 1972 1973 @media (max-width: 710px) { 1974 .create_account_box { 1975 display: block; 1976 margin-left: 5px; 1977 } 1978 } 1979 1980 .create_account_header_font { 1981 color: #0579d0; 1982 font-size: 24px; 1983 font-weight: 600; 1984 font-family: Monospace, serif; 1985 } 1986 1987 .auth_button_text { 1988 color: #757575; 1989 font-family: Roboto,arial,sans-serif; 1990 font-size: 14px; 1991 font-weight: 500; 1992 letter-spacing: .21px; 1993 line-height: 38px; 1994 } 1995 1996 .auth_button_box { 1997 border-radius: 2px; 1998 height: 40px; 1999 width: 420px; 2000 box-shadow: 0 0px 2px 0 #938a8a; 2001 cursor: pointer; 2002 } 2003 2004 /* 2005 IMPL NOTE: required for google oauth - do not remove or change it, unless you know what it is. 2006 IMPL NOTE: 2020-05-16 - override 2007 sign up with google oauth - override 320 px button default width 2008 */ 2009 .abcRioButtonLightBlue { 2010 width: 420px !important; 2011 } 2012 2013 .form-control:disabled, .form-control[readonly] { 2014 background-color: #f9f9f9; 2015 opacity: 1; 2016 } 2017 2018 /* IMPL NOTE: required for google oauth - do not remove or change it, unless you know what it is. */ 2019 .abcRioButton { 2020 border-radius: 2px; 2021 box-shadow: 0 0px 2px 0 #7f7777; 2022 } 2023 2024 .login-button-submit { 2025 box-shadow: none; 2026 width: 100%; 2027 background: #3085d6; 2028 font-weight: 600; 2029 color: #fff; 2030 border-radius: 3px; 2031 border: 1px solid #3085d6; 2032 } 2033 2034 </style> 2035 2036
2036<script> 2037 2038 function accessOnlyForBetaTesters() { 2039 Swal.fire({ 2040 type: 'info', 2041 title: 'Available soon', 2042 text: 'New Log in options will be available soon.' 2043 }); 2044 } 2045 2046 </script>
2046 2047 2048 <div class="create_account_box"> 2049 2050 <div style=""> 2051 <div class=""> 2052 <h5> 2053 <span class="create_account_header_font">Log in to your account</span> 2054 <span style="margin-left: 15px;">⤠ð»</span> 2055 </h5> 2056 </div> 2057 2058 2059 <div style="margin-top: 50px;"> 2060 2061 <div id="my-signin2"></div> 2062 </div> 2063 2064 2065 <div style="margin-top: 60px; box-shadow: 0 0px 3px 0px rgb(172 172 172); padding: 20px; width: 420px; border-radius: 2px;"> 2066 2067 <form id="login_form_id"> 2068 <div class="form-group"> 2069 <label>Email</label> 2070 <input class="form-control" id="login_email_id" type="email" /> 2071 </div> 2072 <div class="form-group"> 2073 <label>Password</label> 2074 <input class="form-control" id="login_password_id" type="password" /> 2075 </div> 2076 <div class="form-check"> 2077 <input type="checkbox" class="form-check-input" id="sign_up_checkbox_show_password"> 2078 <label class="form-check-label" for="sign_up_checkbox_show_password">Show Password</label> 2079 </div> 2080 <div class="form-group"> 2081 <div class="form-check"> 2082 <label class="form-check-label"> 2083 <input class="form-check-input" type="checkbox"> Remember Password</label> 2084 </div> 2085 </div> 2086 <input class="auth_button_box login-button-submit" type="submit" value="Login" id="da_login_submit_btn" /> 2087 </form> 2088 2089 <div class="text-center"> 2090 <a class="d-block small mt-3" href="https://dirask.com/users/sign-up">Join</a> 2091 <a class="d-block small" href="https://dirask.com/users/reset-password">Forgot Password?</a> 2092 </div> 2093 </div> 2094 2095 2096 2097 </div> 2098 2099 2100 2101 </div> 2102 2103 2104 <div style="margin-left: 10px; margin-right: 10px; margin-top: 20px;"> 2105 2106 2107 <div id="my-signin2"></div> 2108 </div> 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 </div> 2120 2121
2121<script> 2122 $(document).ready(function() { 2123 2124 $('#sign_up_checkbox_show_password').click(function() { 2125 var passwordSelector = $('#login_password_id'); 2126 if (passwordSelector.prop('type') === "password") { 2127 passwordSelector.prop("type", "text"); 2128 } else { 2129 passwordSelector.prop("type", "password"); 2130 } 2131 }); 2132 2133 $('#login_form_id').submit(function (e) { 2134 e.preventDefault(); 2135 2136 var email = $("#login_email_id").val(); 2137 var password = $("#login_password_id").val(); 2138 2139 var requestData = { 2140 email: email, 2141 password: password 2142 }; 2143 2144 $.ajax({ 2145 type: "POST", 2146 contentType : 'application/json; charset=utf-8', 2147 dataType : 'json', 2148 data: JSON.stringify(requestData), 2149 url: '/users/login/submit', 2150 success: function (response) { 2151 console.log('Submission was successful.'); 2152 console.log(response); 2153 if (response.success) { 2154 window.location.href = response.redirectUrl; 2155 } else { 2156 Swal.fire({ 2157 type: 'info', 2158 title: 'Info', 2159 text: JSON.stringify(response.errorMessage) 2160 }); 2161 } 2162 }, 2163 error: function (response) { 2164 console.log('An error occurred.'); 2165 console.log(response); 2166 Swal.fire({ 2167 type: 'info', 2168 title: 'Info', 2169 text: JSON.stringify(response.errorMessage) 2170 }); 2171 } 2172 }); 2173 }); 2174 }); 2175 2176 </script>
2176 2177 2178</div> 2179 2180 2181 </div> 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195<style> 2196 .main-layout-right-column-spacer { 2197 width: 130px; 2198 } 2199 2200 2201 2202 .qa_list_recommendations_container 2203 { 2204 display: flex; 2205 flex-direction: column; 2206 } 2207 2208 .qa_list_recommendations_spacer 2209 { 2210 flex: 1; 2211 } 2212 2213 .qa_list_recommendations_internal 2214 { 2215 position: -webkit-sticky; 2216 position: sticky; 2217 bottom: 0; 2218 flex: none; 2219 min-height: 100vh; 2220 padding-bottom: 25px; 2221 } 2222 2223 @media (max-width: 1500px) 2224 { 2225 .main-layout-right-column-spacer { 2226 width: 70px; 2227 } 2228 } 2229 2230 @media (max-width: 1380px) 2231 { 2232 .main-layout-right-column-spacer { 2233 width: 30px; 2234 } 2235 } 2236 2237</style> 2238 2239<div class="main-layout-right-column-spacer" style=""></div> 2240 2241<!-- data-nosnippet for google search engine --> 2242<div class="qa_list_recommendations qa_list_recommendations_container" style="overflow-wrap: break-word;" data-nosnippet> 2243 <div class="qa_list_recommendations_spacer"></div> 2244 <div class="qa_list_recommendations_internal"> 2245 2246 2247 2248 <style> 2249 2250 div.button__13MeP 2251 { 2252 margin: 0 auto; 2253 max-width: 300px; 2254 min-height: 295px; 2255 } 2256 2257 svg.buttonIcon__2J4pn 2258 { 2259 margin: 0 auto; 2260 width: 70px; 2261 height: 70px; 2262 display: block; 2263 } 2264 2265 div.buttonTitle__2VTxr 2266 { 2267 margin: 15px 0 0 0; 2268 text-align: center; 2269 font-weight: 500; 2270 } 2271 2272 div.buttonDescription__1aweH 2273 { 2274 margin: 10px 0 0 0; 2275 text-align: center; 2276 } 2277 2278 div.buttonAction__3pKpE 2279 { 2280 margin: 20px 0 0 0; 2281 text-align: center; 2282 } 2283 2284 div.buttonOptions__1Z2-Y 2285 { 2286 margin: 20px 0 0 0; 2287 text-align: right; 2288 } 2289 2290 a.buttonLink__3Rc_9 2291 { 2292 text-decoration: none; 2293 font-size: 14px; 2294 color: #7e817e; 2295 } 2296 2297 a.buttonLink__3Rc_9:hover 2298 { 2299 text-decoration: underline; 2300 } 2301 2302 </style> 2303 2304 <div class="button__13MeP"> 2305 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 6.879 6.879" class="buttonIcon__2J4pn"><g transform="translate(-.396 -286.942)"><rect width="6.879" height="6.879" x=".396" y="286.942" ry=".524" style="fill: rgb(48, 133, 214); stroke: none;"></rect><path d="M5.091 292.594h-.883v-.394h-.012q-.301.464-.886.464-.537 0-.864-.378-.327-.38-.327-1.06 0-.71.36-1.137.362-.428.946-.428.553 0 .771.397h.012v-1.702h.883zm-.867-1.392v-.215q0-.28-.162-.465-.162-.184-.422-.184-.293 0-.458.232-.165.23-.165.632 0 .377.159.581.16.204.442.204.268 0 .436-.215.17-.215.17-.57z" style="fill: rgb(255, 255, 255); stroke: none;"></path></g></svg> 2306 <div class="buttonTitle__2VTxr">Donate to Dirask</div> 2307 <div class="buttonDescription__1aweH">Our content is created by volunteers - like Wikipedia. If you think, the things we do are good, donate us. Thanks!</div> 2308 <div class="buttonAction__3pKpE" id="ID-2-1640621591623-65144937851997840"></div> 2309 <div class="buttonOptions__1Z2-Y"> 2310 <a class="link__J1kMp buttonLink__3Rc_9" rel="noopener noreferrer" href="https://www.paypal.com/donate/?hosted_button_id=SBHR5Z2N5PLWL" target="_blank">Direct link</a> 2311 </div> 2312 </div> 2313 2314
2314<script src="https://www.paypalobjects.com/donate/sdk/donate-sdk.js" charset="UTF-8"></script>
2314 2315
2315<script> 2316 2317 const button = window.PayPal.Donation.Button({ 2318 env:'production', 2319 hosted_button_id:'SBHR5Z2N5PLWL', 2320 image: { 2321 src:'/assets/imgs/btn_donateCC_LG.gif', 2322 alt:'Donate with PayPal button', 2323 title:'PayPal - The safer, easier way to pay online!', 2324 } 2325 }); 2326 2327 button.render(`#ID-2-1640621591623-65144937851997840`); 2328 2329 </script>
2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 <style> 2340 2341 div.message__XIeON 2342 { 2343 margin: 60px auto 0 auto; 2344 max-width: 300px; 2345 } 2346 2347 div.message__XIeON svg.messageIcon__3ntuD 2348 { 2349 margin: 0 auto; 2350 height: 100px; 2351 display: block; 2352 } 2353 2354 div.message__XIeON div.messageDescription__3sWud 2355 { 2356 margin: 20px 0 0 0; 2357 text-align: center; 2358 font-size: 15px; 2359 } 2360 2361 div.message__XIeON div.messageAction__2AZhj 2362 { 2363 margin: 20px 0 0 0; 2364 display: flex; 2365 } 2366 2367 div.message__XIeON div.messageAction__2AZhj div.messageEmail__X68CV 2368 { 2369 width: 100%; 2370 } 2371 2372 div.message__XIeON div.messageAction__2AZhj > * + * 2373 { 2374 margin: 0 0 0 5px; 2375 } 2376 2377 div.input__3Mtgi input.inputValue__IHVw4 2378 { 2379 padding: 6px 12px; 2380 outline: 0; 2381 border: 1px solid #e4e4e4; 2382 border-radius: 3px; 2383 background: white; 2384 width: 100%; 2385 height: 38px; 2386 color: #495057; 2387 } 2388 2389 2390 button.button__27oEx.buttonBlue__14yr6 2391 { 2392 border: none; 2393 background: #3085d6; 2394 color: #fff; 2395 } 2396 2397 button.button__27oEx.buttonTiny__1OAFr 2398 { 2399 padding: 7px 12px; 2400 letter-spacing: 0.4px; 2401 font-weight: 300; 2402 font-size: 14px; 2403 } 2404 2405 button.button__27oEx 2406 { 2407 outline: none; 2408 border-radius: 3px; 2409 text-align: center; 2410 text-decoration: none; 2411 white-space: nowrap; 2412 cursor: pointer; 2413 -webkit-touch-callout: none; 2414 -webkit-user-select: none; 2415 -ms-user-select: none; 2416 user-select: none; 2417 } 2418 2419 </style> 2420 2421 <div class="message__XIeON"> 2422 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 71.715 84.842" class="messageIcon__3ntuD"> 2423 <path d="m24.388 40.992 26.776-15.85c1.64-.947 3.198-.932 4.676-.001l26.83 15.803c2.33 1.235 3.291 3.35 3.47 5.967v28.621c-.054 1.883-.925 2.95-2.938 2.874h-59.33c-2.517-.104-2.673-1.496-2.856-2.874V46.334c.146-2.307 1.225-4.112 3.372-5.342z" transform="translate(-17.72 -21.18)" style="fill: white; stroke: rgb(48, 133, 214); stroke-width: 2.6; stroke-linecap: round;"></path> 2424 <path d="m33.516 47.598-2.555 2.925c7.543 6.587 11.99 10.712 15.103 13.278 3.114 2.565 5.215 3.777 7.592 3.75 2.341-.027 4.414-1.213 7.5-3.762 3.087-2.549 7.505-6.654 15.04-13.268L73.63 47.6c-7.566 6.642-12.042 10.792-14.95 13.193-2.906 2.4-3.924 2.858-5.068 2.871-1.107.013-2.144-.446-5.078-2.863-2.933-2.417-7.442-6.587-15.02-13.203z" transform="translate(-17.72 -21.18)" style="fill: rgb(48, 133, 214);"></path> 2425 <path d="M23.274 104.022q-.67 0-1.27-.128t-1.124-.383q-.517-.256-.97-.639l.555-.727q.58.51 1.283.766.702.255 1.526.255 1.194 0 1.845-.472.657-.473.657-1.328v-.006q0-.53-.287-.85-.28-.318-.734-.478-.447-.16-1.156-.294-.019-.006-.044-.006-.02-.007-.045-.013l-.185-.038q-.977-.186-1.564-.384-.587-.204-1.002-.683-.409-.485-.409-1.34v-.007q0-.861.383-1.468.39-.613 1.13-.932.74-.32 1.781-.32.492 0 .97.11.486.108.952.325.472.21.932.536l-.543.722q-.6-.422-1.175-.626-.574-.21-1.136-.21-1.136 0-1.762.478-.625.479-.625 1.347v.006q0 .524.312.83.313.3.773.447.466.147 1.27.307l.051.012.064.013q.038.007.07.02l.077.012q.875.179 1.455.409.581.23.964.721.39.485.39 1.315v.013q0 .849-.402 1.455-.402.6-1.169.92-.76.313-1.838.313zM31.407 104.022q-1.092 0-1.813-.377-.721-.377-1.085-1.124-.358-.753-.358-1.89v-5.987h.92v6.032q0 1.22.58 1.833.581.606 1.756.606t1.762-.606q.587-.613.587-1.833v-6.032h.92v5.988q0 1.136-.364 1.89-.358.746-1.086 1.123-.727.377-1.819.377zM37.484 103.07h2.548q1.18 0 1.717-.44.542-.447.542-1.251v-.02q0-.549-.204-.944-.198-.396-.
2425632-.607-.428-.217-1.104-.217h-2.867v-.855h2.867q.906 0 1.36-.402.46-.403.46-1.194 0-.824-.499-1.232-.498-.409-1.5-.409h-2.688v-.855h2.892q.9 0 1.507.306.606.306.906.868.3.562.3 1.34 0 .473-.185.895-.185.415-.568.715-.376.3-.938.402.562.083.97.402.409.313.626.785.217.473.217 1.022v.019q0 .753-.332 1.328-.332.574-.951.887-.62.313-1.443.313h-3zm-.766-8.426h.92v9.282h-.92zM47.756 104.022q-.67 0-1.27-.128t-1.124-.383q-.517-.256-.97-.639l.555-.727q.581.51 1.283.766.703.255 1.526.255 1.194 0 1.845-.472.658-.473.658-1.328v-.006q0-.53-.288-.85-.28-.318-.734-.478-.447-.16-1.155-.294-.02-.006-.045-.006-.02-.007-.045-.013l-.185-.038q-.977-.185-1.564-.383-.587-.204-1.002-.683-.409-.485-.409-1.34v-.007q0-.862.383-1.469.39-.612 1.13-.932.74-.319 1.781-.319.492 0 .97.109.486.108.952.325.472.21.932.537l-.543.72q-.6-.42-1.174-.625-.575-.21-1.137-.21-1.136 0-1.762.478-.625.48-.625 1.347v.007q0 .523.313.83.312.3.772.447.466.146 1.27.306l.051.013.064.013q.039.006.07.019l.077.012q.875.18 1.456.409.58.23.964.721.39.486.39 1.315v.013q0 .85-.403 1.456-.402.6-1.168.92-.76.312-1.839.312zM55.8 104.022q-.964 0-1.698-.428-.728-.428-1.13-1.213-.402-.785-.402-1.82v-2.547q0-1.034.402-1.82.402-.784 1.13-1.212.734-.434 1.698-.434.798 0 1.468.325.67.326 1.117.926.454.594.613 1.379h-.92q-.152-.524-.503-.926-.345-.402-.811-.625-.466-.224-.964-.224-.69 0-1.213.326-.524.325-.81.92-.288.586-.288 1.365v2.547q0 .78.287 1.373.287.587.81.913.524.32 1.214.32.498 0 .964-.212.466-.21.81-.612.352-.403.505-.952h.92q-.16.786-.614 1.386-.453.593-1.123.919-.67.326-1.462.326zM61.29 99.144h3.166q.517 0 .907-.223.396-.23.606-.645.217-.415.224-.958 0-.542-.217-.957-.211-.415-.607-.639-.39-.23-.913-.23H61.29v-.855h3.115q.805 0 1.411.332.613.332.945.945.338.606.338 1.404 0 .798-.338 1.411-.332.607-.945.939-.613.332-1.41.332H61.29zm-.568-4.507h.919v9.289h-.92zm3.543 5.075.849-.293 2.375 4.507H66.39zM70.355 103.926h-.92v-9.282h.92zM73.61 103.07h2.548q1.181 0 1.717-.44.543-.447.543-1.251v-.02q0-.549-.204-.944-.198-.396-.632-.607-.428-.217-1.105-.217h-2.866v-.855h2.866q.907 0 1.36-.402.46-.403.46-1.194 0-.824-.498-1.232-.498-.409-1.5-.409H73.61v-.855h2.892q.9 0 1.506.306.607.306.907.868.3.562.3 1.34 0 .473-.185.895-.185.415-.568.715-.377.3-.939.402.562.083.97.402.41.313.626.785.217.473.217 1.022v.019q0 .753-.332 1.328-.332.574-.951.887-.62.313-1.443.313h-3zm-.765-8.426h.919v9.282h-.92zM81.284 94.644h.92v9.282h-.92zm.632 8.426h5.33v.856h-5.33zm0-4.181h4.629v.855h-4.629zm0-4.245h5.33v.855h-5.33z" transform="translate(-17.72 -21.18)" style="fill: rgb(0, 0, 0);"></path> 2426 </svg> 2427 <div class="messageDescription__3sWud">Join to our subscribers to be up to date with content, news and offers.</div> 2428 <div class="messageAction__2AZhj"> 2429 <div class="input__3Mtgi messageEmail__X68CV"> 2430 <input id="email-213823694972346" class="inputValue__IHVw4" type="text" placeholder="Enter your e-mail" /> 2431 </div> 2432 <button id="button-213823694972346" class="button__27oEx buttonTiny__1OAFr buttonBlue__14yr6">Subscribe</button> 2433 </div> 2434 </div> 2435 2436
2436<script> 2437 2438 var hEmail213823694972346 = document.querySelector('#email-213823694972346'); 2439 var hButton213823694972346 = document.querySelector('#button-213823694972346'); 2440 2441 hButton213823694972346.addEventListener('click', function() 2442 { 2443 var data1 = { 2444 email: hEmail213823694972346.value 2445 }; 2446 2447 Swal.showLoading(); 2448 2449 $.ajax({ 2450 type: 'POST', 2451 url: '/api/subscription/create', 2452 data: JSON.stringify(data1), 2453 contentType : 'application/json; charset=utf-8', 2454 dataType : 'json', 2455 success: function(data2) 2456 { 2457 if (Swal.isVisible()) 2458 Swal.hideLoading(); 2459 2460 if (data2.result) 2461 { 2462 Swal.fire({ 2463 type: 'success', 2464 title: 'Subscription success', 2465 text: 'Now, You are subscribed to Dirask.' 2466 }); 2467 } 2468 else 2469 { 2470 Swal.fire({ 2471 type: 'error', 2472 title: 'Subscription error', 2473 text: data2.message ?? 'Some error occurred. Try again later.' 2474 }); 2475 } 2476 }, 2477 error: function(error) 2478 { 2479 if (Swal.isVisible()) 2480 Swal.close(); 2481 2482 Swal.fire({ 2483 type: 'error', 2484 title: 'Subscription error', 2485 text: 'Some error occurred. Try again later.' 2486 }); 2487 } 2488 }); 2489 }); 2490 2491 </script>
2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519<style> 2520 2521 .posts_list_header { 2522 padding: 10px; 2523 margin-bottom: 0px; 2524 font-size: 16px; 2525 } 2526 2527 .posts_list_header_underline { 2528 border-top: 2px solid #3f7bc3; 2529 width: 200px; 2530 margin-left: 8px; 2531 } 2532 2533 .posts_list_container { 2534 font-size: 14px; 2535 } 2536 2537 .posts_list_entity { 2538 padding-top: 9px; 2539 padding-bottom: 6px; 2540 border-bottom: 1px solid #e6e6e6; 2541 } 2542 2543 a.posts_list_link { 2544 color: #2e2e2f; 2545 font-size: 16px; 2546 display: flex; 2547 padding-right: 6px; 2548 } 2549 2550 .post-list-entity-icon { 2551 font-size: 6px; 2552 padding-top: 10px; 2553 margin-left: 4px; 2554 } 2555 2556 .post-list-entity-name { 2557 margin-left: 7px; 2558 font-size: 15px; 2559 } 2560 2561 div.post-list-entity-marked { 2562 background: #dcf0fd; 2563 } 2564 2565 div.post-list-entity-marked span { 2566 font-weight: 500; 2567 font-size: 15px; 2568 color: #3085d6; 2569 } 2570 2571</style> 2572 2573 2574 2575 2576 <style> 2577 2578 div.recommended_jobs_outer 2579 { 2580 margin: 60px 0 0 0; 2581 } 2582 2583 </style> 2584 2585 2586 2587 2588 2589 2590<style> 2591 2592 a.da_main_page_right_column_job_item 2593 { 2594 text-decoration: none; 2595 } 2596 2597 div.da_main_page_right_column_job_item 2598 { 2599 margin: 18px 0 0 0; 2600 display: flex; 2601 } 2602 2603 div.da_main_page_right_column_company_logo 2604 { 2605 flex: 0 35px; 2606 flex-direction: column; 2607 justify-content: center; 2608 display: flex; 2609 } 2610 2611 img.da_main_page_right_column_company_logo 2612 { 2613 flex: 0; 2614 width: 35px; 2615 display: block; 2616 } 2617 2618 div.da_main_page_right_column_offer_details 2619 { 2620 flex: 1; 2621 min-width: 0; 2622 } 2623 2624 div.da_main_page_right_column_offer_title 2625 { 2626 text-overflow: ellipsis; 2627 white-space: nowrap; 2628 overflow: hidden; 2629 height: 19px; 2630 padding: 0 0 0 15px; 2631 max-height: 40px; 2632 font-size: 12.5px; 2633 font-weight: 500; 2634 color: #0579d0; 2635 } 2636 2637 div.da_main_page_right_column_offer_details_row { 2638 display: flex; 2639 justify-content: space-between; 2640 padding-top: 1px; 2641 padding-bottom: 1px; 2642 height: 20px; 2643 } 2644 2645 a.da_main_page_right_column_job_item:hover div.da_main_page_right_column_offer_title 2646 { 2647 text-decoration: underline; 2648 } 2649 2650 div.da_main_page_right_column_company_name 2651 { 2652 padding: 0 0 0 15px; 2653 text-overflow: ellipsis; 2654 white-space: nowrap; 2655 font-size: 12px; 2656 color: #838683; 2657 overflow: hidden; 2658 } 2659 2660 div.da_main_page_right_column_offer_salary 2661 { 2662 padding: 0 0 0 15px; 2663 text-overflow: ellipsis; 2664 white-space: nowrap; 2665 font-weight: 500; 2666 font-size: 12px; 2667 color: #5d5d5d; 2668 overflow: hidden; 2669 } 2670 2671 div.da_main_page_right_column_line 2672 { 2673 text-overflow: ellipsis; 2674 white-space: nowrap; 2675 font-size: 11px; 2676 color: #838683; 2677 overflow: hidden; 2678 display: flex; 2679 height: 20px; 2680 } 2681 2682 div.da_main_page_right_column_office_city 2683 { 2684 padding: 0 0 0 15px; 2685 vertical-align: center; 2686 font-size: 12px; 2687 display: inline; 2688 } 2689 2690 .recommended_jobs_icon 2691 { 2692 margin: auto; 2693 height: 1em; 2694 max-width: 1em; 2695 vertical-align: center; 2696 font-size: 11px; 2697 color: #cecece; 2698 margin-bottom: 3px; 2699 } 2700 2701 .recommended_jobs_outer { 2702 margin-bottom: 20px; 2703 margin-right: 5px; 2704 margin-top: 30px; 2705 padding: 20px 20px 26px 20px; 2706 border-radius: 7px; 2707 border: 1px solid #e0dede; 2708 } 2709 2710 div.da_main_page_right_column_employment_type 2711 { 2712 padding: 0 0 0 15px; 2713 display: inline; 2714 } 2715 2716</style> 2717
2718<script> 2719 2720 function handleResourcesReady(callback) { 2721 if (document.readyState === 'complete') { 2722 setTimeout(callback); 2723 } else { 2724 var proxy = callback.$$__PROXY__$$ = function(e) { 2725 if (document.readyState === 'complete') { 2726 cancelResourcesReady(callback); 2727 callback(); 2728 } 2729 }; 2730 document.addEventListener('readystatechange', proxy); 2731 } 2732 } 2733 2734 function cancelResourcesReady(callback) { 2735 var proxy = callback.$$__PROXY__$$; 2736 if (proxy && delete callback.$$__PROXY__$$) { 2737 document.removeEventListener('readystatechange', proxy); 2738 } 2739 } 2740 2741 (function() 2742 { 2743 var hPlaceholder = document.currentScript; 2744 var hParent = hPlaceholder.parentNode; 2745 2746 var SALARY_WORTHS = { 2747 'net': 'net', 2748 'gross': 'gross' 2749 }; 2750 2751 var SALARY_CURRENCIES_SHORTCUTS = { 2752 'pln': 'PLN', 2753 'eur': 'EUR', 2754 'usd': '$', 2755 'gbp': 'GBP', 2756 'chf': 'CHF' 2757 }; 2758 2759 var SALARY_RATES_UNITS_2 = { 2760 'hourly': 'hour', 2761 'daily': 'day', 2762 'weekly': 'week', 2763 'monthly': 'month', 2764 'annually': 'year' 2765 }; 2766 2767 var EMPLOYMENT_TYPES = { 2768 '1': 'Permanent', 2769 // '2': 'Contract', 2770 '3': 'B2B' 2771 }; 2772 2773 var EMPLOYMENT_TYPES_LOOKUP = { 2774 'permanent': 'Permanent', 2775 // '2': 'Contract', 2776 'b2b': 'B2B' 2777 }; 2778 2779 var S_LOOKUP = { 2780 'permanent': 'Permanent', 2781 // '2': 'Contract', 2782 'b2b': 'B2B' 2783 }; 2784
2785 function renderSalaryRange(job) { 2786 2787 var salaryInformation = job.salaryInformation; 2788 2789 if (salaryInformation === 'negotiable') { 2790 return 'Negotiable salary'; 2791 } else if (salaryInformation === 'undisclosed') { 2792 return 'Undisclosed salary'; 2793 } else if (salaryInformation === 'range') { 2794 if (job.salaryCurrency) { 2795 var result = ''; 2796 2797 if (job.salaryMax) { 2798 if (job.salaryMin) { 2799 result += job.salaryMin + ' - '; 2800 } 2801 else { 2802 result += ' up to '; 2803 } 2804 2805 result += job.salaryMax + ' '; 2806 } 2807 else { 2808 if (job.salaryMin) 2809 result += 'from ' + job.salaryMin + ' '; 2810 } 2811 2812 result += SALARY_CURRENCIES_SHORTCUTS[job.salaryCurrency] 2813 + ' ' + SALARY_WORTHS[job.salaryWorth] + ' / ' + SALARY_RATES_UNITS_2[job.salaryRate]; 2814 2815 return result; 2816 } 2817 } else { 2818 console.error('ERROR with salary range.'); 2819 return ''; 2820 } 2821 } 2822 2823 function randomizeInteger(min, max) { 2824 if(max == null) { 2825 max = (min == null ? Number.MAX_SAFE_INTEGER : min); 2826 min = 0; 2827 } 2828 2829 min = Math.ceil(min); // inclusive min 2830 max = Math.floor(max); // exclusive max 2831 2832 if(min > max - 1) { 2833 throw new Error("Incorrect arguments."); 2834 } 2835 2836 return min + Math.floor((max - min + 1) * Math.random()); 2837 } 2838 2839 function prepareRecommendedJobs(data) 2840 { 2841 if(data.length) 2842 { 2843 var limit = Math.min(4, data.length); 2844 2845 var hElement = document.createElement('div'); 2846 2847 hElement.className = 'da_main_page_right_column_border recommended_jobs_outer'; 2848 hElement.style.cssText = ''; 2849 hElement.innerHTML = '' + 2850 '<div style="font-weight: 500; margin-bottom: 8px; font-size: 14px;">' + 2851 //' <span style="">Recommended Jobs</span>' + 2852 ' <span style="">Jobs you may like</span>' + 2853 '</div>' + 2854 '<div handle="items"></div>' + 2855 '<div style="margin-top: 7px; text-align: right;"><a style="color: #0579d0; font-size: 15px;" href="https://dev-task.com/">More job offers</a></div>'; 2856 2857 var hItems = hElement.querySelector('[handle="items"]'); 2858 2859 2860 function appendItem(item) 2861 { 2862 var hItem = document.createElement('a'); 2863 2864 hItem.className = 'da_main_page_right_column_job_item'; 2865 2866 // https://dev-task.com/?offer=AY4dY7 2867 hItem.setAttribute('href', 'https://dev-task.com/?offer=' + item.offerHashId); 2868 hItem.setAttribute('title', item.offerTitle); 2869 2870 hItem.innerHTML = '' + 2871 '<div class="da_main_page_right_column_job_item">' + 2872 ' <div class="da_main_page_right_column_company_logo">' + 2873 ' <img handle="company-logo" class="da_main_page_right_column_company_logo" src="" />' + 2874 ' </div>' + 2875 ' <div class="da_main_page_right_column_offer_details">' + 2876 ' <div handle="offer-title" class="da_main_page_right_column_offer_title"></div>' + 2877 ' <div handle="offer-salary" class="da_main_page_right_column_offer_salary"></div>' + 2878 ' <div class="da_main_page_right_column_line">' + 2879 ' <div handle="company-name" class="da_main_page_right_column_company_name"></div>' + 2880 ' <div handle="office-info" class="da_main_page_right_column_office_city">' + 2881 ' <svg class="da_main_page_right_column_office_city recommended_jobs_icon fas fa-map-marker-alt">' + 2882 ' <use href="#fas.fa-map-marker-alt" />' + 2883 ' </svg>' +
2884 ' <span handle="office-city" class="da_main_page_right_column_office_city" title=""></span>' + 2885 ' </div>' + 2886 ' </div>' + 2887 ' </div>' + 2888 '</div>'; 2889 2890 var hCompanyLogo = hItem.querySelector('[handle="company-logo"]'); 2891 var hOfferTitle = hItem.querySelector('[handle="offer-title"]'); 2892 var hCompanyName = hItem.querySelector('[handle="company-name"]'); 2893 var hOfferSalary = hItem.querySelector('[handle="offer-salary"]'); 2894 var hOfficeInfo = hItem.querySelector('[handle="office-info"]'); 2895 var hOfficeCity = hItem.querySelector('[handle="office-city"]'); 2896 2897 2898 handleResourcesReady(function() 2899 { 2900 hCompanyLogo.src = 'https://dev-task.com/static/bucket/jobs/' + item.companyThumbnailLogoFilename + '?v=' + window.RELEASE_VERSON; 2901 hCompanyLogo.alt = item.companyName + ' logo.'; 2902 }); 2903 2904 2905 2906 hOfferTitle.innerText = item.offerTitle; 2907 2908 var salaryRange = renderSalaryRange(item); 2909 hOfferSalary.innerText = salaryRange; 2910 2911 var country = ", " + item.officeCountryCode.toUpperCase(); 2912 2913 2914 if (item.remotePart === 'full') { 2915 hOfficeCity.innerText = "Remote"; 2916 } else { 2917 hOfficeCity.innerText = item.officeCity + country; 2918 } 2919 2920 hCompanyName.innerText = item.companyName; 2921 2922 hOfferTitle.setAttribute('title', item.offerTitle); 2923 hCompanyName.setAttribute('title', item.companyName); 2924 hOfferSalary.setAttribute('title', salaryRange); 2925 hOfficeCity.setAttribute('title', item.officeCity); 2926 2927 hItems.appendChild(hItem); 2928 } 2929 2930 for(var i = 0; i < limit; ++i) 2931 { 2932 var item = data[ i ]; 2933 2934 appendItem(item); 2935 } 2936 2937 hParent.insertBefore(hElement, hPlaceholder); 2938 } 2939 } 2940/* 2941 AjaxUtils.request({ 2942 method: 'GET', 2943 url: 'https://dev-task.com/api/recommended-jobs?amount=4', 2944 onsuccess: function(responseText) 2945 { 2946 var responseData = JSON.parse(responseText); 2947 2948 if (responseData.result) 2949 prepareRecommendedJobs(responseData.offers); 2950 } 2951 }); 2952*/ 2953 })(); 2954 2955</script>
2955 2956 2957 2958 2959 2960 2961<style> 2962 2963 .recommendation_box_native { 2964 background: white; 2965 color: #030913; 2966 border: 1px solid #e0dede; 2967 height: auto; 2968 text-align: center; 2969 line-height: 24px; 2970 z-index: 100000; 2971 font-size: 16px; 2972 padding: 25px 24px 23px; 2973 border-radius: 7px; 2974 margin-top: 60px; 2975 margin-right: 5px; 2976 } 2977 2978 .recommendation_box_native h5 { 2979 font-size: 22px; 2980 color: #0579d0 2981 } 2982 2983 .recommendation_box_native_div { 2984 padding-top: 9px; 2985 font-size: 14px; 2986 text-align: center; 2987 line-height: 19px; 2988 } 2989 2990 .recommendation_box_native_join { 2991 margin: 15px; 2992 padding: 7px 34px; 2993 border-radius: 3px; 2994 background: #02b148; 2995 text-decoration: none; 2996 color: #fff; 2997 display: inline-block; 2998 font-size: 18px; 2999 font-weight: 500; 3000 } 3001 3002</style> 3003 3004<div class="recommendation_box_native"> 3005 <h5 style="">Native Advertising</h5> 3006 3007 <h5 style="">ð</h5> 3008 <div class="recommendation_box_native_div">Get your tech brand or product in front of software developers.</div> 3009 <div class="recommendation_box_native_div">For more information <a href="/about">Contact us</a></div> 3010</div> 3011 3012 3013 3014 3015 3016 3017<style> 3018 3019 div.recommended-posts-component-1621966216 3020 { 3021 padding: 10px; 3022 } 3023 3024 a.recommended-posts-link-1621966216 3025 { 3026 text-decoration: none; 3027 } 3028 3029 a.recommended-posts-link-1621966216:hover 3030 { 3031 text-decoration: underline; 3032 } 3033 3034 div.recommended-posts-title-1621966216 3035 { 3036 font-size: 14px; 3037 font-weight: 500; 3038 } 3039 3040 ul.recommended-posts-content-1621966216 3041 { 3042 margin: 18px 0 0 0; 3043 padding: 0 0 0 20px; 3044 } 3045 3046 li.recommended-posts-item-1621966216 3047 { 3048 margin: 5px 0 0 0; 3049 font-size: 14px; 3050 } 3051 3052 li.recommended-posts-item-1621966216 a.recommended-posts-link-1621966216 3053 { 3054 color: #2e2e2f; 3055 } 3056 3057 div.recommended-posts-footer-1621966216 3058 { 3059 margin: 15px 0 0 0; 3060 text-align: right; 3061 font-size: 15px; 3062 } 3063 3064 div.recommended-posts-footer-1621966216 a.recommended-posts-link-1621966216 3065 { 3066 color: #0579d0; 3067 } 3068 3069</style> 3070 3071<div id="recommended-posts" style="font-size: 14px; margin-top: 70px;"></div>
3072<script> 3073 3074 function appendRecommendedPost(hParent, data) 3075 { 3076 var hPost = document.createElement('li'); 3077 3078 hPost.className = 'recommended-posts-item-1621966216'; 3079 hPost.innerHTML = '<a handle="link" class="recommended-posts-link-1621966216"></a>'; 3080 3081 hPost.addEventListener('[COMPONENT]', appendRecommendedPost); 3082 3083 var hLink = hPost.querySelector('[handle="link"]'); 3084 3085 hLink.innerText = data.postTitle; 3086 hLink.href = '/posts/' + encodeURIComponent(data.postHashId); 3087 3088 hParent.appendChild(hPost); 3089 } 3090 3091 function appendRecommendedPosts(hParent, data) 3092 { 3093 if (data.length == 0) 3094 return; 3095 3096 var hPosts = document.createElement('div'); 3097 3098 hPosts.className = 'recommended-posts-component-1621966216'; 3099 hPosts.innerHTML = '' + 3100 '<div class="recommended-posts-title-1621966216">Posts you may like</div>' + 3101 '<ul handle="content" class="recommended-posts-content-1621966216"></ul>' + 3102 '<div class="recommended-posts-footer-1621966216"></ul>' + 3103 ' <a class="recommended-posts-link-1621966216" href="/posts">Show more</a>' + 3104 '</div>'; 3105 3106 hPosts.addEventListener('[COMPONENT]', appendRecommendedPosts); 3107 3108 var hContent = hPosts.querySelector('[handle="content"]'); 3109 3110 for (var i = 0; i < data.length; ++i) 3111 appendRecommendedPost(hContent, data[i]); 3112 3113 hParent.appendChild(hPosts); 3114 } 3115 3116 var recommendedPostsCount = 6; 3117 3118 AjaxUtils.request({ 3119 method: 'GET', 3120 url: '/api/posts?pageSize=' + recommendedPostsCount + '&postsOrder=random', 3121 onsuccess: function(responseText) 3122 { 3123 var responseData = JSON.parse(responseText); 3124 3125 if (responseData.result) 3126 { 3127 var hRecommendedPosts = document.querySelector('#recommended-posts'); 3128 3129 appendRecommendedPosts(hRecommendedPosts, responseData.posts); 3130 } 3131 } 3132 }); 3133 3134</script>
3134 3135 3136 3137 3138 3139 3140 3141 3142 3143 3144<style> 3145 3146 .recommendation_box 3147 { 3148 background: white; 3149 color: #0579d0; 3150 3151 border: 1px solid #e0dede; 3152 3153 height: auto; 3154 text-align: center; 3155 line-height: 24px; 3156 z-index: 100000; 3157 font-size: 16px; 3158 padding: 25px 13px 18px; 3159 border-radius: 7px; 3160 margin-top: 60px; 3161 margin-right: 5px; 3162 } 3163 3164 .recommendation_box h5 { 3165 font-size: 19px; 3166 } 3167 3168 .recommendation_box_join { 3169 margin: 15px; 3170 padding: 5px 34px; 3171 border-radius: 3px; 3172 background: #02b148; 3173 text-decoration: none; 3174 color: #fff; 3175 display: inline-block; 3176 font-size: 18px; 3177 font-weight: 500; 3178 } 3179 3180 .recommendation_box_join:hover { 3181 text-decoration: none; 3182 color: #fff; 3183 background: #02b148; 3184 cursor: pointer; 3185 } 3186 3187</style> 3188 3189<div class="recommendation_box"> 3190 3191 <h5>Dirask - we help you to</h5> 3192 <h5>solve coding problems.</h5> 3193 <a href="/questions"> 3194 <h5>Ask question.</h5> 3195 </a> 3196 <h4 style="padding-top: 8px;">â¤ï¸ð» ð</h4> 3197 <a href="/users/sign-up" class="recommendation_box_join">Join</a> 3198</div> 3199 3200 3201 3202 3203 3204 3205 3206 3207 3208 3209 3210 3211 3212 </div> 3213</div> 3214 3215 3216</div> 3217 3218 3219 3220 3221 3222 3223 3224 3225 3226 3227<style> 3228 @media (max-width: 1580px) { 3229 div.main-footer-mobile-media { 3230 margin-left: 130px; 3231 } 3232 } 3233 @media (max-width: 900px) { 3234 div.main-footer-mobile-media { 3235 margin-left: unset; 3236 } 3237 } 3238</style> 3239 3240<footer class="main-footer-outer" style=";"> 3241 3242 <div class="main-footer-mobile-media"> 3243 <div class="main-footer"> 3244 <div class="main-footer-column"> 3245 <div class="main-footer-column-header">Features</div> 3246 <div class="main-footer-item"><a href="/">Home</a></div> 3247 <div class="main-footer-item"><a href="/snippets">Snippets</a></div> 3248 <div class="main-footer-item"><a href="/posts">Wiki</a></div> 3249 <div class="main-footer-item"><a href="/questions">Questions</a></div> 3250 <div class="main-footer-item"><a href="/findings">Findings</a></div> 3251 3252 3253 3254 3255 3256 3257 </div> 3258 3259 <div class="main-footer-column"> 3260 <div class="main-footer-column-header">About</div> 3261 <div class="main-footer-item"><a href="/about">About & Contact</a></div> 3262 <div class="main-footer-item"><a href="/legal/service-terms">Service Terms</a></div> 3263 <div class="main-footer-item"><a href="/legal/cookies-policy">Cookie Policy</a></div> 3264 <div class="main-footer-item"><a href="/legal/privacy-policy">Privacy Privacy</a></div> 3265 <div class="main-footer-item"><a href="/legal/gdpr-privacy-policy">GDPR Privacy Policy</a></div> 3266 <div class="main-footer-item"><a href="/legal">Policies</a></div> 3267 </div> 3268 3269 <div class="main-footer-column"> 3270 <div class="main-footer-column-header">Other</div> 3271 <div class="main-footer-item"><a href="https://dirask.com/f/all-formatters-8GZNgL">Code Formatters</a></div> 3272 <div class="main-footer-item"><a href="https://dirask.com/f/all-funny-generators-6N2vr6">Funny Generators</a></div> 3273 <div class="main-footer-item"><a href="/posts-lists">Post Lists</a></div> 3274 <div class="main-footer-item"><a href="/about/social-links">Social Links</a></div> 3275 3276 3277 3278 </div> 3279 3280 </div> 3281 3282 <div style="" class="main-footer-copyright-info-outer"> 3283 3284 <div class="main-footer-column"> 3285 <div class="main-footer-item main-footer-copyright-info">© 2026 dirask - created with passion</div> 3286 3287 3288 3289 3290 3291 </div> 3292 <div class="main-footer-column"></div> 3293 <div class="main-footer-column"></div> 3294 3295 </div> 3296 </div> 3297 3298</footer> 3299 3300 3301 3302 3303</main> 3304 3305 3306 3307 3308 3309<div id="main_page_cookie_bar" class="main_page_cookie_bar" style="display: none;"> 3310 Welcome. By using dirask, you confirm that you have read and understood 3311 <a href="/legal" class="main_page_cookie_bar_link">Terms, Privacy & Cookie policy</a> 3312 <a id="main_page_cookie_bar_agreement" class="main_page_cookie_bar_agreement">Ok, I understand</a> 3313</div> 3314
3315<script type="text/javascript"> 3316 3317 $(document).ready(function () { 3318 var cookieAndPolicyAccepted = Cookies.get("cookie_and_policy_accepted"); 3319 console.log("cookieAndPolicyAccepted: " + cookieAndPolicyAccepted); 3320 if (cookieAndPolicyAccepted) { 3321 return; 3322 } 3323 3324 $('#main_page_cookie_bar_agreement').on('click', function () { 3325 Cookies.set("cookie_and_policy_accepted", 'true', {expires: 365}); 3326 $('#main_page_cookie_bar').hide(); 3327 }); 3328 3329 $('#main_page_cookie_bar').show(); 3330 }); 3331 3332</script>
3332 3333 3334 3335 3336 3337<!-- Google Analytics -->
3338<script> 3339 window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date; 3340 //ga('create', 'UA-143789764-1', 'auto'); 3341 ga('create', 'UA-143789764-1', {'siteSpeedSampleRate': 100}); 3342 ga('send', 'pageview'); 3343</script>
vendor: 2 bytes, line 3343
3343
3344<script async src='https://www.google-analytics.com/analytics.js'></script>
3344 3345<!-- End Google Analytics --> 3346 3347<!-- Google tag (gtag.js) -->
vendor: 65 bytes, lines 3347-3348
3347 3348<script async src="https://www.googletagmanager.com/gtag/js?id=
3348G-H8SQPNG1XJ
vendor: 13 bytes, line 3348
3348"></script>
3349<script> 3350 if (location.origin === 'https://dirask.com') { 3351
vendor: 154 bytes, lines 3351-3354
3351window.dataLayer = window.dataLayer || []; 3352 function gtag(){dataLayer.push(arguments);} 3353 gtag('js', new Date()); 3354 gtag('config', '
3354G-H8SQPNG1XJ
vendor: 5 bytes, line 3354
3354');
3355console.log('done') 3356 } 3357</script>
3357 3358<!-- End: Google tag (gtag.js) --> 3359 3360 3361 3362
3363<script> 3364 3365 var sendTimings = function() 3366 { 3367 if (!window.performance.getEntries) { 3368 return; 3369 } 3370 3371 var entries = window.performance.getEntries(); 3372 3373 if (entries.length === 0) { 3374 return; 3375 } 3376 3377 var entry = entries[0]; 3378 3379 var connectingDuration = entry.connectEnd - entry.connectStart; 3380 var redirectionDuration = entry.redirectEnd - entry.redirectStart; 3381 var requestDuration = entry.responseStart - entry.requestStart; 3382 var responseDuration = entry.responseEnd - entry.responseStart; 3383 3384 // request + time to first byte + response time (downloading) 3385 var fetchingDuration = entry.responseEnd - entry.requestStart; 3386 3387 // red line in chrome, example: Load: 1.19 s 3388 var totalDuration = entry.responseEnd - (entry.redirectStart || entry.connectStart); 3389 3390 // blue line in chrome, example: DOMContentLoaded: 1.02 s 3391 var browserBlueLine__domInteractive = entry.domInteractive; 3392 3393 // Load - chrome - red line 3394 var browserRedLineLoad__domComplete = entry.domComplete; 3395 var browser__duration = entry.duration; 3396 var browser__redirectCount = entry.redirectCount; 3397 3398 console.log( 3399 'connectingDuration=' + connectingDuration + 'ms\n' + 3400 'redirectionDuration=' + redirectionDuration + 'ms\n' + 3401 'requestDuration=' + requestDuration + 'ms\n' + 3402 'responseDuration=' + responseDuration + 'ms\n' + 3403 'fetchingDuration=' + fetchingDuration + 'ms\n' + 3404 'totalDuration=' + totalDuration + 'ms\n' + 3405 'browserBlueLine__domInteractive=' + browserBlueLine__domInteractive + 'ms\n' + 3406 'browserRedLineLoad__domComplete=' + browserRedLineLoad__domComplete + 'ms\n' + 3407 'browser__duration=' + browser__duration + 'ms\n' + 3408 'browser__redirectCount=' + browser__redirectCount 3409 ); 3410 3411 // var requestData = { 3412 // relativeUrl: location.pathname + location.search + location.hash, 3413 // connectingDuration: connectingDuration, 3414 // redirectionDuration: redirectionDuration, 3415 // requestDuration: requestDuration, 3416 // responseDuration: responseDuration, 3417 // fetchingDuration: fetchingDuration, 3418 // totalDuration: totalDuration, 3419 // browserBlueLine__domInteractive: browserBlueLine__domInteractive, 3420 // browserRedLineLoad__domComplete: browserRedLineLoad__domComplete, 3421 // browser__duration: browser__duration, 3422 // browser__redirectCount: browser__redirectCount, 3423 // }; 3424 // var requestJson = JSON.stringify(requestData); 3425 // 3426 // $.ajax({ 3427 // type: "POST", 3428 // contentType: 'application/json; charset=utf-8', 3429 // dataType: 'json', 3430 // data: requestJson, 3431 // url: '/s/t', 3432 // success: function (response) { 3433 // //console.log(response); 3434 // }, 3435 // error: function (response) { 3436 // console.error(response); 3437 // } 3438 // }); 3439 }; 3440 3441 window.addEventListener('load', sendTimings); 3442 3443 3444 3445 3446 3447 3448 3449 3450 3451 3452// storage logic 3453 3454function readArray(name) { 3455 var json = localStorage.getItem(name); 3456 if (json) { 3457 return JSON.parse(json); 3458 } 3459 return null; 3460} 3461 3462function saveArray(name, array) { 3463 var json = JSON.stringify(array); 3464 localStorage.setItem(name, json); 3465} 3466 3467// performance logic 3468 3469function checkPerformance() { 3470 if (performance.getEntries) { 3471 var entries = performance.getEntries(); 3472 if (entries.length > 0) { 3473 return entries[0]; 3474 } 3475 } 3476 return null; 3477} 3478 3479function getTimes() { 3480 var performance = checkPerformance(); 3481 if (performance) { 3482 return { 3483 connectingDuration: performance.connectEnd - performance.connectStart, 3484 redirectionDuration: performance.redirectEnd - performance.redirectStart, 3485 requestDuration: performance.responseStart - performance.requestStart, 3486 responseDuration: performance.responseEnd - performance.responseStart, 3487 fetchingDuration: performance.responseEnd - performance.requestStart, // request time + TTFB + response time (downloading) 3488 totalDuration: performance.responseEnd - (performance.redirectStart || performance.connectStart) 3489 }; 3490 } 3491 return null; 3492} 3493 3494// arrays logic 3495 3496function createArray(count) { 3497 var array = Array(count); 3498 for (var i = 0; i < count; ++i) { 3499 array[i] = 0; 3500 } 3501 return array; 3502} 3503 3504function resizeArray(array, size) { 3505 var changeSize = size - array.length; 3506 if (changeSize > 0) { 3507 return array.concat(createArray(changeSize)); 3508 } else { 3509 return array.slice(0, size); 3510 } 3511} 3512 3513// math logic 3514 3515function isLesser(result, value) { 3516 return result < value; 3517} 3518 3519function isBigger(result, value) { 3520 return result > value; 3521} 3522 3523function roundNumber(value, precision) { 3524 var power = Math.pow(10, precision); 3525 return Math.round(value * power) / power; 3526} 3527 3528function calculateSum(array) { 3529 var sum = 0; 3530 for (var i = 0; i < array.length; ++i) { 3531 sum += array[i]; 3532 } 3533 return sum; 3534} 3535 3536function calculateMean(array) { 3537 var sum = calculateSum(array); 3538 return sum / array.length; 3539} 3540 3541function findValue(array, compare) { 3542 if (array.length > 0) { 3543 var result = array[0]; 3544 for (var i = 1; i < array.length; ++i) { 3545 var value = array[i]; 3546 if (compare(value, result)) { 3547 result = value; 3548 } 3549 } 3550 return result; 3551 } 3552 return NaN; 3553} 3554 3555// processing logic 3556 3557function updateValues(historySize, parameterName, parameterValue) { 3558 var storedValues = readArray(parameterName + 's'); 3559 3560 if (storedValues == null) { 3561 storedValues = createArray(historySize); 3562 } else { 3563 if (storedValues.length != historySize) { 3564 storedValues = resizeArray(storedValues, historySize); 3565 } 3566 } 3567 3568 storedValues.shift(); 3569 storedValues.push(parameterValue); 3570 3571 saveArray(parameterName + 's', storedValues); 3572 3573 return storedValues; 3574} 3575 3576// Usage example: 3577 3578var historySize = 10; 3579 3580window.addEventListener('load', function() { 3581 var currentTimes = getTimes(); 3582 if (currentTimes) { 3583 var gatheredTimes = {}; 3584 3585 for (var parameterName in currentTimes) { 3586 var storedValues = updateValues(historySize, parameterName, currentTimes[parameterName]) 3587 3588 var minTime = findValue(storedValues, isLesser); 3589 var maxTime = findValue(storedValues, isBigger); 3590 var meanTime = calculateMean(storedValues); 3591 3592 var parameterTimes = { 3593 'min time [ms]': roundNumber(minTime, 3), 3594 'max time [ms]': roundNumber(maxTime, 3), 3595 'mean time [ms]': roundNumber(meanTime, 3), 3596 '': '' // used as separator 3597 }; 3598 3599 for (var i = 0; i < historySize; ++i) { 3600 parameterTimes['last ' + (i + 1) + ' [ms]'] = roundNumber(storedValues[historySize - i - 1], 3); 3601 } 3602 3603 gatheredTimes[parameterName.substring(0, parameterName.length - 8)] = parameterTimes; 3604 } 3605 3606 console.table(gatheredTimes); 3607 console.log('https://dirask.com/posts/JavaScript-track-last-10-site-loading-times-and-print-statistics-pOra5D'); 3608 console.log('https://dirask.com/posts/JavaScript-measure-page-loading-times-connection-redirection-fetching-request-response-total-j8gyyp'); 3609 } 3610}); 3611 3612 3613 3614 3615 3616 3617</script>
3617 3618 3619 3620 3621 3622 3623 3624 3625
3626<script> 3627 3628 // function AsyncImage(url, style) 3629 // { 3630 // var hContainer = document.createElement('div'); 3631 // var hImage = document.createElement('img'); 3632 // 3633 // hContainer.className = 'async-' + style + '-image-component'; 3634 // hImage.className = 'async-' + style + '-image-canvas'; 3635 // 3636 // function onImageLoad() 3637 // { 3638 // hImage.removeEventListener('load', onImageLoad); 3639 // 3640 // hContainer.appendChild(hImage); 3641 // } 3642 // 3643 // function onWindowLoad() 3644 // { 3645 // window.removeEventListener('load', onWindowLoad); 3646 // hImage.addEventListener('load', onImageLoad); 3647 // 3648 // hImage.src = url; 3649 // } 3650 // 3651 // window.addEventListener('load', onWindowLoad); 3652 // 3653 // this.mount = function(hParent, hPlaceholder) 3654 // { 3655 // mountElement(hParent, hPlaceholder, hContainer); 3656 // }; 3657 // } 3658 // 3659 // var image = new AsyncImage('https://dirask.com/static/bucket/1607261556273-BZOQx9GY3p--image.png', 'test'); 3660 // image.mount(document.body); 3661 3662</script>
3662 3663 3664 3665 3666 3667 3668 3669</body> 3670</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.