') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); sergiobelya (Sergei Belyakov) · GitHub
Skip to content
View sergiobelya's full-sized avatar

Block or report sergiobelya

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
sergiobelya/README.md

Hi there 👋

My professional skills

Back-end: PHP, smaill experience with Python, Golang, nodejs;

Databases: MySQL, Redis, Memcache, RabbitMQ, DynamoDB, Vertica, BigQuery, Elasticsearch, Prometheus;

PHP frameworks: Laravel, Symfony, Yii2, Slim, Kohana 3, ZF1, as well as several small engines;

Code quality solutions: Codeception, PHPUnit, Psalm, SonarQube, phpcs, phpstan;

Principles & methodologies: OOP, MVC, DRY, SOLID, TDD, Hexagonal/Onion architecture;

Tools: Git, Composer, Docker, Vagrant, Ansible, Kibana, Graylog, Grafana, DataDog, Jaeger, Github Actions, GitLab, Jenkins, Zabbix.

My work experience

Since December of 2013 I work as a php developer.

I participated in the development of large e-commerce project (marketplace with services for entrepreneurs) first as a full-stack developer, then as PHP back-end developer.

I was engaged in support and development the popular website hochu.ua. During the work over it, I increased the speed of loading pages on the client side and the speed of dynamic pages generation, as well as the stability of the server as a whole.

Next projects is under the NDA. It is a big service and consists of several web applications and REST APIs powered by Yii2, Slim and vue.js frameworks. Also dating service on Symfony framework.

Next project is pdfFiller - solutions for online editing pdf, electronic document management, e-signature, etc.

Previous project is Sendios - email (but not only) marketing solutions for business, it is also high-load system.

I’m currently working for Canadian company Logix ITS - Solutions for safer streets and simplified parking.​

Popular repositories Loading

  1. test-hexa-imageloader test-hexa-imageloaderPublic

    PHP

  2. test-taskmanager test-taskmanagerPublic

    JavaScript

  3. checkmobi-php checkmobi-phpPublic

    Forked from HEXA-UA/checkmobi-php

    CheckMobi PHP Library

    PHP

  4. yii2-treegrid yii2-treegridPublic

    Forked from dkhlystov/yii2-treegrid

    TreeView widget for Yii 2 framework

    PHP

  5. validation validationPublic

    Forked from siriusphp/validation

    Framework agnostic validation library for PHP

    PHP 1

  6. laravel-apidoc-generator laravel-apidoc-generatorPublic

    Forked from mpociot/laravel-apidoc-generator

    Laravel API Documentation Generator

    PHP