diff --git a/assets/css/custom.css b/assets/css/custom.css index 6fd1bf4..ac7c5dd 100644 --- a/assets/css/custom.css +++ b/assets/css/custom.css @@ -3,3 +3,65 @@ body { font-family: 'Inter', sans-serif; } code, pre, kbd { font-family: 'JetBrains Mono', monospace; } h1, h2, h3 { letter-spacing: -0.02em; } + +.vcard { + position: relative; + min-height: calc(100vh - 10rem); + display: grid; + place-items: center; + padding: 2rem 0; +} +.vcard__bg { + position: fixed; inset: 0; z-index: -1; + background-size: cover; background-position: center; + filter: blur(6px) brightness(.45); + transform: scale(1.05); +} +.vcard__box { + width: min(100%, 420px); + padding: 2.5rem 2rem; + text-align: center; + border-radius: 1.25rem; + background: rgba(var(--color-neutral-800), .65); + border: 1px solid rgba(var(--color-primary-500), .25); + backdrop-filter: blur(12px); + box-shadow: 0 20px 60px rgba(0,0,0,.45); +} +.vcard__avatar { + width: 128px; height: 128px; margin: 0 auto 1.25rem; + border-radius: 50%; object-fit: cover; + border: 3px solid rgba(var(--color-primary-500), .8); +} +.vcard__name { font-size: 1.9rem; font-weight: 800; line-height: 1.15; margin: 0; color: #fff; } +.vcard__nick { margin: .2rem 0 0; font-family: 'JetBrains Mono', monospace; color: rgba(var(--color-primary-400), 1); } +.vcard__role { margin: .9rem 0 0; color: rgba(var(--color-neutral-300), 1); font-size: 1rem; line-height: 1.5; } + +.vcard__status { + display: inline-flex; align-items: center; gap: .5rem; + margin: 1.25rem 0 0; padding: .35rem .9rem; + border-radius: 999px; font-size: .9rem; + background: rgba(255,255,255,.06); + color: rgba(var(--color-neutral-200), 1); +} +.vcard__dot { width: .55rem; height: .55rem; border-radius: 50%; background: var(--dot); box-shadow: 0 0 0 0 var(--dot); animation: vcard-pulse 2s infinite; } +.is-open { --dot: #22c55e; } +.is-busy { --dot: #f59e0b; } +.is-away { --dot: #9ca3af; } +.is-away .vcard__dot { animation: none; } +@keyframes vcard-pulse { 0% { box-shadow: 0 0 0 0 var(--dot); } 70% { box-shadow: 0 0 0 .5rem transparent; } 100% { box-shadow: 0 0 0 0 transparent; } } + +.vcard__links { list-style: none; padding: 0; margin: 1.75rem 0 0; display: grid; gap: .6rem; } +.vcard__links a { + display: flex; align-items: center; justify-content: center; gap: .6rem; + padding: .7rem 1rem; border-radius: .75rem; + text-decoration: none; font-weight: 600; color: #fff; + background: rgba(var(--color-primary-600), .25); + border: 1px solid rgba(var(--color-primary-500), .35); + transition: background .15s, transform .15s; +} +.vcard__links a:hover { background: rgba(var(--color-primary-600), .5); transform: translateY(-1px); } +.vcard__icon { display: inline-flex; width: 1.1rem; height: 1.1rem; } +.vcard__icon svg { width: 100%; height: 100%; fill: currentColor; } + +.vcard__more { display: inline-block; margin-top: 1.5rem; font-size: .9rem; color: rgba(var(--color-primary-400), 1); text-decoration: none; } +.vcard__more:hover { text-decoration: underline; } diff --git a/assets/img/bg3.png b/assets/img/bg3.png index d93f76f..c82c3fc 100644 Binary files a/assets/img/bg3.png and b/assets/img/bg3.png differ diff --git a/assets/img/bg5.jpg b/assets/img/bg5.jpg index 606c5a3..b7fb147 100644 Binary files a/assets/img/bg5.jpg and b/assets/img/bg5.jpg differ diff --git a/config/_default/languages.ru.toml b/config/_default/languages.ru.toml index af5efa5..90b1114 100644 --- a/config/_default/languages.ru.toml +++ b/config/_default/languages.ru.toml @@ -13,8 +13,8 @@ title = "Sokolab" [params.author] name = "Alexander Sokolov aka s0k0l" image = "img/me.jpg" - headline = "Делаю софт и железо, которые упрощают жизнь и работу" - bio = "Пара предложений о себе" + headline = "Парсинг, боты и веб-сервисы под высокую нагрузку. Информационная безопасность." + bio = "Имитирую поведение пользователей, добываю данные и защищаю информацию. Довожу проекты от идеи до релиза." links = [ { email = "mailto:xalex.sokolov@yahoo.com" }, { telegram = "https://t.me/sokolex" }, diff --git a/config/_default/menus.ru.toml b/config/_default/menus.ru.toml index 871625c..abf099a 100644 --- a/config/_default/menus.ru.toml +++ b/config/_default/menus.ru.toml @@ -16,8 +16,9 @@ weight = 10 #[[main]] -# name = "Parent" -# weight = 20 +# name = "Обо мне" +# pageRef = "about" +# weight = 20 #[[main]] # name = "example sub-menu 1" diff --git a/config/_default/params.toml b/config/_default/params.toml index 778cb62..8572e35 100644 --- a/config/_default/params.toml +++ b/config/_default/params.toml @@ -65,10 +65,10 @@ forgejoDefaultServer = "https://v11.next.forgejo.org" showScrollToTop = true [homepage] - layout = "hero" # valid options: page, profile, hero, card, background, landing, custom + layout = "custom" # valid options: page, profile, hero, card, background, landing, custom # layoutSwitcher = false # opt-in interactive preview of the built-in layouts homepageImage = "img/bg5.jpg" # used in: hero, and card - showRecent = true # TODO: включишь, когда появится блог + showRecent = false # TODO: включишь, когда появится блог showRecentItems = 5 showMoreLink = true showMoreLinkDest = "/blog/" diff --git a/content/_index.md b/content/_index.md index 57e1afc..34acda7 100644 --- a/content/_index.md +++ b/content/_index.md @@ -1,51 +1,16 @@ --- -title: "Sokolab" +title: "Alexander Sokolov" +card: + name: "Alexander Sokolov" + nick: "s0k0l" + role: "Парсеры, боты, сайты и сервисы. Высокие нагрузки и инфобез." + avatar: "img/me.jpg" # assets/img/me.jpg + status: + state: open # open | busy | away + text: "Открыт к проектам и работе" + contacts: + - { label: "Telegram", url: "https://t.me/sokolex", icon: "telegram" } + - { label: "Email", url: "mailto:xalex.sokolov@yahoo.com", icon: "email" } + - { label: "Git", url: "https://git.sokolab.xyz/sokol", icon: "gitea" } + more: "/about/" --- - -## Кто я! - -Я высококвалифицированный IT специалист широкого профиля. Умею добывать данные с сайтов, писать под них боты и обходить анти-бот защиту. Умею создавать сайты и сетевые сервисы, а так же обеспечивать безопасность инфраструктуры и разработки. - -Предпочитаю работать согласно ТЗ и вести проект от идеи до MVP или релиза. Выработал и следую определенным стандартам и применяю лучшие практики программирования - [Стандарты Разработки ПО](Стандарты%20Разработки%20ПО.md). При разработке программ начинаю с выработки требований и архитектуры. Считаю что мой результат это решенная проблема, а написанный исходный код - доказательство что мое решение работает. - -## Что я делаю - -Создаю программные и аппаратные продукты для людей и бизнеса, -которые помогают жить лучше и работать удобнее. - -- **Софт** — боты, сервисы, автоматизация. - -Ознакомиться с моим послужным списком вы можете в [резюме](резюме/index.md), а тут я просто опишу какие задачи мне откликаются. Это задачи связанные с web и linux. Умею работать с криптой напрямую, так что пользователь может оплатить что-то на сайте on-chain переводом. Умею строить высоконагруженные системы на очередях и микросервисах. - -- **Железо** — устройства, электроника, прототипы - -Освоил программирование микроконтроллеров, потому что мечтаю строить роботов. А пока что построил аппаратный менеджер паролей - Протоключ. Планирую развиваться в этом направлении и дальше. У меня много идей для полезных проектов. - -## Ссылка - -[stackoverflow](https://ru.stackoverflow.com/users/362019/alex) - -Когда-то это был незаменимый сайт для всех ИТишников, где можно было задать вопрос и получить ответ от коллег. Но со временем вопросы больше стали похожи на "решите за меня мою домашку", а с появлением ИИ подобный формат и вовсе умер. Теперь я использую эту ссылку лишь как демонстрацию своего бекграунда. - -[medium](https://alexandrsokolov-41020.medium.com/) - -Наслушавшить Егора Бугаенко завел блог на этой платформе и питал надежды что буду писать там что-то регулярно. Но что-то мне не понравилось и теперь я перезапускаю свой блог уже на своем решении. - -[github](https://github.com/alexsok-bit/) - -Тут лежит код из статей на медиум и использовал аккаунт в работе. Это заброшенный аккаунт, он остается как бекграунд. - -[mozilla addons](https://addons.mozilla.org/ru/firefox/user/16605688/) - -Так как я делал когда-то серьезные инструменты для сбора данных мне нужно было модифицировать фаерфокс. Для этого я забабахал пару аддонов для него и выложил в общую библиотеку. Делал я это в общем-то для себя, но кому-то тоже зашло. Я крайне удивился что в комментах меня разыскивают. - -Все это было когда-то, а теперь есть этот ресурс где: - -- Лендинг - вы тут -- [/blog](https://sokolab.xyz/blog) - профессиональный блог -- [git.sokolab.xyz](https://git.sokolab.xyz) - примеры кода - -## Связаться - -- [Telegram](https://t.me/sokolex) -- [Почта](mailto:xalex.sokol@gmail.com). diff --git a/content/about/index.md b/content/about/index.md new file mode 100644 index 0000000..ede973c --- /dev/null +++ b/content/about/index.md @@ -0,0 +1,52 @@ +--- +title: "Sokolab" +date: 2026-10-08T19:18:00+04:00 +--- + +## Кто я! + +Я высококвалифицированный IT специалист широкого профиля. Умею добывать данные с сайтов, писать под них боты и обходить анти-бот защиту. Умею создавать сайты и сетевые сервисы, а так же обеспечивать безопасность инфраструктуры и разработки. + +Предпочитаю работать согласно ТЗ и вести проект от идеи до MVP или релиза. Выработал и следую определенным стандартам и применяю лучшие практики программирования - [Стандарты Разработки ПО](/code-style.md). При разработке программ начинаю с выработки требований и архитектуры. Считаю что мой результат это решенная проблема, а написанный исходный код - доказательство что мое решение работает. + +## Что я делаю + +Создаю программные и аппаратные продукты для людей и бизнеса, +которые помогают жить лучше и работать удобнее. + +- **Софт** — боты, сервисы, автоматизация. + +Ознакомиться с моим послужным списком вы можете в [резюме](/резюме/index.md), а тут я просто опишу какие задачи мне откликаются. Это задачи связанные с web и linux. Умею работать с криптой напрямую, так что пользователь может оплатить что-то на сайте on-chain переводом. Умею строить высоконагруженные системы на очередях и микросервисах. + +- **Железо** — устройства, электроника, прототипы + +Освоил программирование микроконтроллеров, потому что мечтаю строить роботов. А пока что построил аппаратный менеджер паролей - Протоключ. Планирую развиваться в этом направлении и дальше. У меня много идей для полезных проектов. + +## Ссылка + +[stackoverflow](https://ru.stackoverflow.com/users/362019/alex) + +Когда-то это был незаменимый сайт для всех ИТишников, где можно было задать вопрос и получить ответ от коллег. Но со временем вопросы больше стали похожи на "решите за меня мою домашку", а с появлением ИИ подобный формат и вовсе умер. Теперь я использую эту ссылку лишь как демонстрацию своего бекграунда. + +[medium](https://alexandrsokolov-41020.medium.com/) + +Наслушавшить Егора Бугаенко завел блог на этой платформе и питал надежды что буду писать там что-то регулярно. Но что-то мне не понравилось и теперь я перезапускаю свой блог уже на своем решении. + +[github](https://github.com/alexsok-bit/) + +Тут лежит код из статей на медиум и использовал аккаунт в работе. Это заброшенный аккаунт, он остается как бекграунд. + +[mozilla addons](https://addons.mozilla.org/ru/firefox/user/16605688/) + +Так как я делал когда-то серьезные инструменты для сбора данных мне нужно было модифицировать фаерфокс. Для этого я забабахал пару аддонов для него и выложил в общую библиотеку. Делал я это в общем-то для себя, но кому-то тоже зашло. Я крайне удивился что в комментах меня разыскивают. + +Все это было когда-то, а теперь есть этот ресурс где: + +- Лендинг - вы тут +- [/blog](https://sokolab.xyz/blog) - профессиональный блог +- [git.sokolab.xyz](https://git.sokolab.xyz) - примеры кода + +## Связаться + +- [Telegram](https://t.me/sokolex) +- [Почта](mailto:xalex.sokol@gmail.com). diff --git a/content/Стандарты Разработки ПО.md b/content/code-style.md similarity index 89% rename from content/Стандарты Разработки ПО.md rename to content/code-style.md index a364bb7..79f86e8 100644 --- a/content/Стандарты Разработки ПО.md +++ b/content/code-style.md @@ -1,5 +1,6 @@ --- title: "Стандарты разработки ПО" +date: 2026-10-08T19:18:00+04:00 --- 1. Следование PEP-8 2. Приложения Django именуются в CamelCase стиле diff --git a/content/резюме/index.md b/content/резюме/index.md index 1eb60c1..92e6fa2 100644 --- a/content/резюме/index.md +++ b/content/резюме/index.md @@ -1,5 +1,6 @@ --- title: "Резюме: Senior Python Developer & Web Scraping" +date: 2026-10-08T19:18:00+04:00 --- [CV EN](Alexander_Sokolov_CV_EN.pdf) diff --git a/layouts/partials/home/custom.html b/layouts/partials/home/custom.html new file mode 100644 index 0000000..c716922 --- /dev/null +++ b/layouts/partials/home/custom.html @@ -0,0 +1,37 @@ + +{{ $p := .Params.card }} +
+ {{ with site.Params.homepage.homepageImage }}{{ with resources.Get . }} +
+ {{ end }}{{ end }} + +
+ {{ with resources.Get $p.avatar }} + {{ $img := .Fill "256x256 webp q85" }} + {{ $p.name }} + {{ end }} + +

{{ $p.name }}

+ {{ with $p.nick }}

aka {{ . }}

{{ end }} +

{{ $p.role }}

+ + {{ with $p.status }} +

+ {{ .text }} +

+ {{ end }} + + + + {{ with $p.more }}Подробнее обо мне →{{ end }} +
+
\ No newline at end of file diff --git a/resources/_gen/images/img/me_hu_bef0d5032dcda980.webp b/resources/_gen/images/img/me_hu_bef0d5032dcda980.webp new file mode 100644 index 0000000..e27f16b Binary files /dev/null and b/resources/_gen/images/img/me_hu_bef0d5032dcda980.webp differ