Compare commits
109 commits
Author | SHA1 | Date | |
---|---|---|---|
a7bbbe0b0d | |||
75c47fd309 | |||
0257c6076e | |||
995de80055 | |||
5719d7d646 | |||
e790887fd7 | |||
30af2348ed | |||
59d22baef0 | |||
22fa688c45 | |||
38a23deb92 | |||
ac247c2d5c | |||
70b5b034bf | |||
2244a00905 | |||
664e4edc0b | |||
d54b9c3f3b | |||
adde032459 | |||
ab8f9af0d5 | |||
7f206adde1 | |||
5f86bf43e9 | |||
56b5032264 | |||
876797d6de | |||
abfb694b97 | |||
dcd23040ff | |||
cf82d5f76b | |||
5c1323f883 | |||
0dd2a12a17 | |||
e2616cf7fe | |||
43ce49f6c7 | |||
8794398244 | |||
49da6c2992 | |||
6c6aa87823 | |||
7d61f728c0 | |||
c1356e7803 | |||
193a953d4f | |||
2ae4eba995 | |||
8f00cf77cb | |||
bc5ddd94ec | |||
f3ceefb79e | |||
d657ca6492 | |||
e76b2aa08e | |||
8d48a3f242 | |||
d2bb3fcef7 | |||
4e0a8b61f1 | |||
9c8f29949f | |||
f21c4d22ea | |||
2e0536b146 | |||
ccec53264a | |||
129dfd7e22 | |||
b2c2547061 | |||
5477acb209 | |||
892895f3db | |||
23e3c267de | |||
57340f4287 | |||
82dada939a | |||
8826cd3782 | |||
14a83214be | |||
81afa71119 | |||
b22fe42b54 | |||
0e38399d26 | |||
9b3889435e | |||
8e58697245 | |||
cbe9c1e8e8 | |||
9d294c7239 | |||
be225c2d8d | |||
4fb6ac9a1a | |||
80fb876b29 | |||
fbea1ee811 | |||
66284b36ca | |||
91bc2df524 | |||
3eec9b19dc | |||
5c78d1bad6 | |||
258bba2592 | |||
b3b3b5e4f9 | |||
66c6dd181c | |||
8e643ca14d | |||
7f0e6cbf66 | |||
478aadbb8c | |||
ab8fb2a661 | |||
0e33d70453 | |||
60ecd46cf2 | |||
234b4ff89b | |||
1ac86c1a08 | |||
ceb098995d | |||
b4d0eff44b | |||
34188201fc | |||
359f791782 | |||
9daa41754d | |||
066bfae255 | |||
e75f000ce2 | |||
f268b0066e | |||
5619606185 | |||
5e70c2863e | |||
253bcdb337 | |||
8467759fa8 | |||
013bf4756d | |||
653e26c966 | |||
fa600f7e42 | |||
008eacdb89 | |||
44f81c4d7d | |||
8cbca801db | |||
3cbc037020 | |||
7503ffa80f | |||
d7933c3857 | |||
155be22c66 | |||
37d9fc40a3 | |||
f069b9762e | |||
95d44e4939 | |||
48391fc789 | |||
8d86b00c24 |
26 changed files with 880 additions and 1329 deletions
61
.forgejo/workflows/build.yaml
Normal file
61
.forgejo/workflows/build.yaml
Normal file
|
@ -0,0 +1,61 @@
|
|||
name: Build
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
runs-on: docker
|
||||
permissions:
|
||||
contents: write
|
||||
steps:
|
||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
||||
with:
|
||||
ref: ${{ github.head_ref }}
|
||||
fetch-depth: 0
|
||||
|
||||
- uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4
|
||||
with:
|
||||
run_install: |
|
||||
- recursive: true
|
||||
args: [--frozen-lockfile, --strict-peer-dependencies]
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
pnpm build --dest DIST
|
||||
rm -rf .pnpm-store
|
||||
|
||||
- name: Commit build
|
||||
run: |
|
||||
current_version=v$(cat package.json | grep version | grep -o -E '([0-9]+\.){2}[0-9]+')
|
||||
|
||||
git switch build
|
||||
previous_version=$(git describe --tags --abbrev=0 2>/dev/null || echo '')
|
||||
tag_message=`git log --pretty='format:%s' $previous_version..`
|
||||
|
||||
shopt -s extglob
|
||||
shopt -s dotglob
|
||||
rm -rf !(DIST|.git|.|..)
|
||||
mv DIST/* .
|
||||
rm -rf DIST
|
||||
|
||||
git add -A
|
||||
git config --local user.email "forgejo-actions[bot]@noreply.pleshevski.ru"
|
||||
git config --local user.name "Forgejo actions[bot]"
|
||||
git commit -m "Deploy $(date +%Y-%m-%d)" --allow-empty
|
||||
|
||||
if [[ "$current_version" != "$previous_version" ]]; then
|
||||
git tag $current_version -m "$current_version
|
||||
|
||||
$tag_message"
|
||||
fi
|
||||
|
||||
- name: Push changes
|
||||
uses: ad-m/github-push-action@d91a481090679876dfc4178fef17f286781251df # v0.8.0
|
||||
with:
|
||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
branch: build
|
||||
tags: true
|
||||
|
|
@ -7,8 +7,8 @@ jobs:
|
|||
test-dependencies:
|
||||
runs-on: docker
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: pnpm/action-setup@v4
|
||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
||||
- uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4
|
||||
with:
|
||||
run_install: |
|
||||
- recursive: true
|
||||
|
|
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -15,3 +15,5 @@ node_modules/
|
|||
/docs/.vuepress/.cache
|
||||
/docs/.vuepress/.temp
|
||||
/docs/.vuepress/dist
|
||||
|
||||
/dist
|
||||
|
|
43
dist/404.html
vendored
43
dist/404.html
vendored
|
@ -1,43 +0,0 @@
|
|||
<!doctype html>
|
||||
<html lang="ru-RU">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1" />
|
||||
<meta name="generator" content="VuePress 2.0.0-rc.18" />
|
||||
<style>
|
||||
:root {
|
||||
--vp-c-bg: #fff;
|
||||
}
|
||||
|
||||
[data-theme='dark'] {
|
||||
--vp-c-bg: #1b1b1f;
|
||||
}
|
||||
|
||||
html,
|
||||
body {
|
||||
background-color: var(--vp-c-bg);
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
const userMode = localStorage.getItem('vuepress-color-scheme')
|
||||
const systemDarkMode =
|
||||
'matchMedia' in window
|
||||
? window.matchMedia('(prefers-color-scheme: dark)').matches
|
||||
: false
|
||||
|
||||
if (userMode === 'light') {
|
||||
document.documentElement.dataset.theme = 'light'
|
||||
} else if (userMode === 'dark' || systemDarkMode) {
|
||||
document.documentElement.dataset.theme = 'dark'
|
||||
}
|
||||
</script>
|
||||
<meta property="og:url" content="https://pleshevski.ru/404.html"><meta property="og:site_name" content="Дмитрий Плешевский"><meta property="og:type" content="website"><meta property="og:locale" content="ru-RU"><script type="application/ld+json">{"@context":"https://schema.org","@type":"WebPage","name":""}</script><title>Дмитрий Плешевский</title><meta name="description" content=" ">
|
||||
<link rel="preload" href="/assets/style-CyqMEKOR.css" as="style"><link rel="stylesheet" href="/assets/style-CyqMEKOR.css">
|
||||
<link rel="modulepreload" href="/assets/app-CvTe0YTg.js"><link rel="modulepreload" href="/assets/404.html-BGekuXRq.js">
|
||||
<link rel="prefetch" href="/assets/index.html-D7ve43IL.js" as="script"><link rel="prefetch" href="/assets/works.html-NBBFoiT7.js" as="script"><link rel="prefetch" href="/assets/index.html-B5LWGqHO.js" as="script"><link rel="prefetch" href="/assets/works.html-CihZ59B-.js" as="script">
|
||||
</head>
|
||||
<body>
|
||||
<div id="app"><!--[--><div class="vp-theme-container" vp-container data-v-9607bbd4><main class="page" data-v-9607bbd4><div class="theme-default-content" vp-content data-v-9607bbd4><h1 data-v-9607bbd4>404</h1><blockquote data-v-9607bbd4>Ошиблись в параллельной вселенной.</blockquote><a class="route-link" href="/" data-v-9607bbd4>Вернуться на главную</a></div></main></div><!--[--><!----><!--]--><!--]--></div>
|
||||
<script type="module" src="/assets/app-CvTe0YTg.js" defer></script>
|
||||
</body>
|
||||
</html>
|
1
dist/assets/404.html-BGekuXRq.js
vendored
1
dist/assets/404.html-BGekuXRq.js
vendored
|
@ -1 +0,0 @@
|
|||
import{_ as e,c as o,a,o as n}from"./app-CvTe0YTg.js";const r={};function l(p,t){return n(),o("div",null,t[0]||(t[0]=[a("p",null,"404 Not Found",-1)]))}const c=e(r,[["render",l],["__file","404.html.vue"]]),m=JSON.parse('{"path":"/404.html","title":"","lang":"ru-RU","frontmatter":{"layout":"NotFound","head":[["meta",{"property":"og:url","content":"https://pleshevski.ru/404.html"}],["meta",{"property":"og:site_name","content":"Дмитрий Плешевский"}],["meta",{"property":"og:type","content":"website"}],["meta",{"property":"og:locale","content":"ru-RU"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"WebPage\\",\\"name\\":\\"\\"}"]]},"headers":[],"git":{},"filePathRelative":null}');export{c as comp,m as data};
|
31
dist/assets/app-CvTe0YTg.js
vendored
31
dist/assets/app-CvTe0YTg.js
vendored
File diff suppressed because one or more lines are too long
1
dist/assets/index.html-B5LWGqHO.js
vendored
1
dist/assets/index.html-B5LWGqHO.js
vendored
File diff suppressed because one or more lines are too long
1
dist/assets/index.html-D7ve43IL.js
vendored
1
dist/assets/index.html-D7ve43IL.js
vendored
File diff suppressed because one or more lines are too long
1
dist/assets/style-CyqMEKOR.css
vendored
1
dist/assets/style-CyqMEKOR.css
vendored
File diff suppressed because one or more lines are too long
1
dist/assets/works.html-CihZ59B-.js
vendored
1
dist/assets/works.html-CihZ59B-.js
vendored
File diff suppressed because one or more lines are too long
1
dist/assets/works.html-NBBFoiT7.js
vendored
1
dist/assets/works.html-NBBFoiT7.js
vendored
File diff suppressed because one or more lines are too long
43
dist/eng/index.html
vendored
43
dist/eng/index.html
vendored
File diff suppressed because one or more lines are too long
43
dist/eng/works.html
vendored
43
dist/eng/works.html
vendored
File diff suppressed because one or more lines are too long
43
dist/index.html
vendored
43
dist/index.html
vendored
File diff suppressed because one or more lines are too long
5
dist/robots.txt
vendored
5
dist/robots.txt
vendored
|
@ -1,5 +0,0 @@
|
|||
|
||||
User-agent:*
|
||||
Disallow:
|
||||
|
||||
Sitemap: https://pleshevski.ru/sitemap.xml
|
17
dist/rus/index.html
vendored
17
dist/rus/index.html
vendored
|
@ -1,17 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="robots" content="noindex">
|
||||
<meta http-equiv="refresh" content="0; url=/index.html">
|
||||
<link rel="canonical" href="/index.html">
|
||||
<title>Redirecting...</title>
|
||||
<script>
|
||||
const anchor = window.location.hash.substring(1);
|
||||
location.href = `/index.html${anchor? `#${anchor}`: ""}`;
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<p>Redirecting...</p>
|
||||
</body>
|
||||
</html>
|
17
dist/rus/works.html
vendored
17
dist/rus/works.html
vendored
|
@ -1,17 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="robots" content="noindex">
|
||||
<meta http-equiv="refresh" content="0; url=/works.html">
|
||||
<link rel="canonical" href="/works.html">
|
||||
<title>Redirecting...</title>
|
||||
<script>
|
||||
const anchor = window.location.hash.substring(1);
|
||||
location.href = `/works.html${anchor? `#${anchor}`: ""}`;
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<p>Redirecting...</p>
|
||||
</body>
|
||||
</html>
|
3
dist/sitemap.xml
vendored
3
dist/sitemap.xml
vendored
|
@ -1,3 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?xml-stylesheet type="text/xsl" href="/sitemap.xsl"?>
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"><url><loc>https://pleshevski.ru/</loc><lastmod>2024-09-05T22:11:51.000Z</lastmod><changefreq>monthly</changefreq><xhtml:link rel="alternate" hreflang="ru-RU" href="https://pleshevski.ru/"/><xhtml:link rel="alternate" hreflang="en-US" href="https://pleshevski.ru/eng/"/></url><url><loc>https://pleshevski.ru/works.html</loc><lastmod>2024-08-07T08:48:54.000Z</lastmod><changefreq>monthly</changefreq><xhtml:link rel="alternate" hreflang="ru-RU" href="https://pleshevski.ru/works.html"/><xhtml:link rel="alternate" hreflang="en-US" href="https://pleshevski.ru/eng/works.html"/></url><url><loc>https://pleshevski.ru/eng/</loc><lastmod>2024-09-05T22:11:51.000Z</lastmod><changefreq>monthly</changefreq><xhtml:link rel="alternate" hreflang="ru-RU" href="https://pleshevski.ru/"/><xhtml:link rel="alternate" hreflang="en-US" href="https://pleshevski.ru/eng/"/></url><url><loc>https://pleshevski.ru/eng/works.html</loc><lastmod>2024-08-07T08:48:54.000Z</lastmod><changefreq>monthly</changefreq><xhtml:link rel="alternate" hreflang="ru-RU" href="https://pleshevski.ru/works.html"/><xhtml:link rel="alternate" hreflang="en-US" href="https://pleshevski.ru/eng/works.html"/></url></urlset>
|
207
dist/sitemap.xsl
vendored
207
dist/sitemap.xsl
vendored
|
@ -1,207 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xsl:stylesheet version="2.0"
|
||||
xmlns:html="http://www.w3.org/TR/REC-html40"
|
||||
xmlns:sitemap="http://www.sitemaps.org/schemas/sitemap/0.9"
|
||||
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
|
||||
<xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes" />
|
||||
<xsl:template match="/">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title>XML Sitemap</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0;" />
|
||||
<style>
|
||||
:root {
|
||||
--bg-color: #f8f8f8;
|
||||
--bg-color-secondary: #fff;
|
||||
--text-color: #2c3e50;
|
||||
--border-color: #eaecef;
|
||||
--brand-color: #3eaf7c;
|
||||
|
||||
color-scheme: light dark;
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
:root {
|
||||
--bg-color: #0d1117;
|
||||
--bg-color-secondary: #161b22;
|
||||
--text-color: #ccc;
|
||||
--border-color: #30363d;
|
||||
}
|
||||
}
|
||||
|
||||
html,
|
||||
body {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
background: var(--bg-color);
|
||||
}
|
||||
|
||||
html {
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
body {
|
||||
min-height: 100vh;
|
||||
color: var(--text-color);
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#content {
|
||||
max-width: 960px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
h1 {
|
||||
margin-top: 1rem;
|
||||
font-size: 2rem;
|
||||
}
|
||||
|
||||
@media (max-width: 419px) {
|
||||
h1 {
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
}
|
||||
|
||||
a {
|
||||
color: var(--text-color);
|
||||
font-weight: 500;
|
||||
overflow-wrap: break-word;
|
||||
}
|
||||
|
||||
table {
|
||||
width: 100%;
|
||||
border-radius: 8px;
|
||||
border-collapse: collapse;
|
||||
text-align: center;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
@media (max-width: 419px) {
|
||||
table {
|
||||
border-radius: 0;
|
||||
}
|
||||
}
|
||||
|
||||
th {
|
||||
min-width: 56px;
|
||||
padding: 0.6em 1em;
|
||||
|
||||
background-color: var(--brand-color);
|
||||
color: var(--bg-color);
|
||||
|
||||
font-weight: bold;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
@media (max-width: 719px) {
|
||||
th {
|
||||
font-size: 14px;
|
||||
}
|
||||
}
|
||||
|
||||
th:first-child {
|
||||
text-align: start;
|
||||
}
|
||||
|
||||
tr:nth-child(odd) {
|
||||
background: var(--bg-color-secondary);
|
||||
}
|
||||
|
||||
tr:hover {
|
||||
background-color: #e8e8e8;
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
tr:hover {
|
||||
background-color: #333;
|
||||
}
|
||||
}
|
||||
|
||||
td {
|
||||
padding: 0.6em 1em;
|
||||
}
|
||||
|
||||
@media (max-width: 719px) {
|
||||
td {
|
||||
font-size: 12px;
|
||||
}
|
||||
}
|
||||
|
||||
td:first-child {
|
||||
text-align: start;
|
||||
}
|
||||
|
||||
footer {
|
||||
margin-top: 10px;
|
||||
padding: 4px;
|
||||
|
||||
color: #888;
|
||||
|
||||
font-size: 12px;
|
||||
text-align: center;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="content">
|
||||
<h1>Sitemap</h1>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>
|
||||
<xsl:value-of select="concat('URL (', count(sitemap:urlset/sitemap:url), ')')" />
|
||||
</th>
|
||||
<th>Priority</th>
|
||||
<th>Change Frequency</th>
|
||||
<th>Last Updated Time</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<xsl:variable name="lower" select="'abcdefghijklmnopqrstuvwxyz'" />
|
||||
<xsl:variable name="upper" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'" />
|
||||
<xsl:for-each select="sitemap:urlset/sitemap:url">
|
||||
<tr>
|
||||
<td>
|
||||
<xsl:variable name="itemURL">
|
||||
<xsl:value-of select="sitemap:loc" />
|
||||
</xsl:variable>
|
||||
<a href="{$itemURL}" target="_blank">
|
||||
<xsl:value-of select="sitemap:loc" />
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<xsl:choose>
|
||||
<xsl:when test="sitemap:priority">
|
||||
<xsl:value-of select="concat(sitemap:priority*100,'%a')" />
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:text>0.5</xsl:text>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</td>
|
||||
<td>
|
||||
<xsl:choose>
|
||||
<xsl:when test="sitemap:changefreq">
|
||||
<xsl:value-of select="concat(translate(substring(sitemap:changefreq, 1, 1),concat($lower, $upper),concat($upper, $lower)),substring(sitemap:changefreq, 2))" />
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:text>-</xsl:text>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</td>
|
||||
<td>
|
||||
<xsl:value-of select="concat(substring(sitemap:lastmod,0,11),concat(' ', substring(sitemap:lastmod,12,5)))" />
|
||||
</td>
|
||||
</tr>
|
||||
</xsl:for-each>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<footer>
|
||||
Generatd by <a href="https://ecosystem.vuejs.press/plugins/sitemap/">@vuepress/plugin-sitemap</a>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
43
dist/works.html
vendored
43
dist/works.html
vendored
File diff suppressed because one or more lines are too long
|
@ -10,8 +10,18 @@ Always up-to-date link to [resume](/eng/).
|
|||
|
||||
My name is Dmitriy Pleshevskiy.
|
||||
|
||||
I'm an open source software enthusiast, a lead software developer, architect,
|
||||
team leader and also mentor.
|
||||
As an open-source development enthusiast, I am always ready to collaborate and
|
||||
participate in exciting projects. I am inspired by the opportunity to contribute
|
||||
to the community and share knowledge. The core technologies I work with include
|
||||
`TypeScript`, `Rust`, `Python`, `PostgreSQL`, `Minio`, `RabbitMQ`, `React`,
|
||||
`VueJS`, and `Docker`. I have a particular passion for functional programming,
|
||||
which enables writing clean and efficient code. As a NixOS evangelist, I not
|
||||
only actively use it in my projects but also promote its adoption among
|
||||
individuals and companies, highlighting its advantages and assisting in its
|
||||
implementation within their infrastructure. My extensive experience in backend
|
||||
and frontend development, as well as in DevOps, allows me to tackle complex
|
||||
challenges effectively. Additionally, I have expertise as an architect, team
|
||||
leader, and mentor.
|
||||
|
||||
## Skills
|
||||
|
||||
|
@ -34,7 +44,7 @@ team leader and also mentor.
|
|||
- Sqlite
|
||||
- MsSQL
|
||||
- MongoDB
|
||||
- Reddis
|
||||
- Redis
|
||||
- Minio (prefer, solid 5-year exp)
|
||||
|
||||
---
|
||||
|
|
|
@ -10,9 +10,17 @@ heroText: null
|
|||
|
||||
Меня зовут Дмитрий Плешевский.
|
||||
|
||||
Я энтузиаст программного обеспечения с открытым исходным кодом, ведущий
|
||||
разработчик програмного обеспечения, архитектор, руководитель команды, а так же
|
||||
ментор.
|
||||
Как энтузиаст open-source разработки, я всегда готов к сотрудничеству и участию
|
||||
в интересных проектах. Меня вдохновляет возможность вносить вклад в сообщество и
|
||||
делиться знаниями. Основные технологии, с которыми я работаю, включают
|
||||
`TypeScript`, `Rust`, `Python`, `PostgreSQL`, `Minio`, `RabbitMQ`, `React`,
|
||||
`VueJS`, `Docker`. Особенно люблю функциональное программирование, которое
|
||||
позволяет писать чистый и эффективный код. Как евангелист `NixOS`, я не только
|
||||
активно использую его в своих проектах, но и активно агитирую людей и компании
|
||||
переходить на эту систему, подчеркивая ее преимущества и помогая внедрять ее в
|
||||
их инфраструктуру. Большой опыт в разработке backend и frontend приложений, а
|
||||
также в DevOps, позволяет эффективно решать сложные задачи. Также имею опыт
|
||||
работы в качестве архитектора, руководителя команды и наставника.
|
||||
|
||||
## Умения
|
||||
|
||||
|
@ -35,7 +43,7 @@ heroText: null
|
|||
- Sqlite
|
||||
- MsSQL
|
||||
- MongoDB
|
||||
- Reddis
|
||||
- Redis
|
||||
- Minio (предпочитаю, твердый 5-летний опыт)
|
||||
|
||||
---
|
||||
|
@ -98,7 +106,7 @@ Open-source проекты - моя страсть! Разрабатываю, п
|
|||
|
||||
## Контакты
|
||||
|
||||
Simplex (Предпочтительно): [Dmitriy
|
||||
Simplex (Предпочтительно): [Dmitriy
|
||||
Pleshevskiy](https://simplex.chat/contact#/?v=2-7&smp=smp%3A%2F%2FZKe4uxF4Z_aLJJOEsC-Y6hSkXgQS5-oc442JQGkyP8M%3D%40smp17.simplex.im%2F8JE7lkP68DZG-1DP8U8_njTlIz9fzRzf%23%2F%3Fv%3D1-3%26dh%3DMCowBQYDK2VuAyEAxdWiN9so1FqPVTsKhS4Y2OK80zzUvsIZ1Yo77kYV6Co%253D%26srv%3Dogtwfxyi3h2h5weftjjpjmxclhb5ugufa5rcyrmg7j4xlch7qsr5nuqd.onion)
|
||||
|
||||
Telegram: [Dmitriy Pleshevskiy](https://telegram.me/da_pranaya)
|
||||
|
|
12
flake.lock
generated
12
flake.lock
generated
|
@ -5,11 +5,11 @@
|
|||
"systems": "systems"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1710146030,
|
||||
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
|
||||
"lastModified": 1731533236,
|
||||
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
|
||||
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -20,11 +20,11 @@
|
|||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1721562059,
|
||||
"narHash": "sha256-Tybxt65eyOARf285hMHIJ2uul8SULjFZbT9ZaEeUnP8=",
|
||||
"lastModified": 1741513245,
|
||||
"narHash": "sha256-7rTAMNTY1xoBwz0h7ZMtEcd8LELk9R5TzBPoHuhNSCk=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "68c9ed8bbed9dfce253cc91560bf9043297ef2fe",
|
||||
"rev": "e3e32b642a31e6714ec1b712de8c91a3352ce7e1",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
|
17
flake.nix
17
flake.nix
|
@ -10,26 +10,9 @@
|
|||
let
|
||||
out = system:
|
||||
let
|
||||
inherit (builtins) substring;
|
||||
|
||||
pkgs = import nixpkgs { inherit system; };
|
||||
version = "0.0.1+${substring 0 8 self.lastModifiedDate}_${self.shortRev or "dirty"}";
|
||||
in
|
||||
{
|
||||
packages.default = with pkgs; stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "pleshevski_site";
|
||||
inherit version;
|
||||
|
||||
src = ./.;
|
||||
|
||||
dontBuild = true;
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out
|
||||
cp -r dist/* $out
|
||||
'';
|
||||
});
|
||||
|
||||
devShells.default = pkgs.mkShell {
|
||||
buildInputs = with pkgs; [
|
||||
pre-commit
|
||||
|
|
42
package.json
42
package.json
|
@ -2,34 +2,34 @@
|
|||
"$schema": "https://json.schemastore.org/package.json",
|
||||
"name": "pleshevskiy",
|
||||
"description": "Dmitriy Pleshevskiy",
|
||||
"version": "0.0.1",
|
||||
"version": "1.0.2",
|
||||
"type": "module",
|
||||
"private": true,
|
||||
"packageManager": "pnpm@9.15.4",
|
||||
"packageManager": "pnpm@10.7.1",
|
||||
"scripts": {
|
||||
"build": "vuepress build docs",
|
||||
"dev": "vuepress dev docs"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@rushstack/eslint-patch": "^1.1.4",
|
||||
"@types/node": "^22.1.0",
|
||||
"@vitejs/plugin-vue": "^5.0.0",
|
||||
"@vue/eslint-config-prettier": "^10.0.0",
|
||||
"@vue/eslint-config-typescript": "^14.0.0",
|
||||
"@vue/language-server": "^2.0.19",
|
||||
"@vue/tsconfig": "^0.7.0",
|
||||
"@vue/typescript-plugin": "^2.0.19",
|
||||
"@vuepress/bundler-vite": "^2.0.0-rc.7",
|
||||
"@vuepress/plugin-blog": "^2.0.0-rc.11",
|
||||
"@rushstack/eslint-patch": "1.11.0",
|
||||
"@types/node": "22.14.0",
|
||||
"@vitejs/plugin-vue": "5.2.3",
|
||||
"@vue/eslint-config-prettier": "10.2.0",
|
||||
"@vue/eslint-config-typescript": "14.5.0",
|
||||
"@vue/language-server": "2.2.8",
|
||||
"@vue/tsconfig": "0.7.0",
|
||||
"@vue/typescript-plugin": "2.2.8",
|
||||
"@vuepress/bundler-vite": "2.0.0-rc.7",
|
||||
"@vuepress/plugin-blog": "2.0.0-rc.91",
|
||||
"@vuepress/plugin-redirect": "2.0.0-rc.8",
|
||||
"@vuepress/theme-default": "^2.0.0-rc.11",
|
||||
"eslint": "<10.0.0",
|
||||
"eslint-plugin-vue": "^9.14.1",
|
||||
"prettier": ">=3.0.0",
|
||||
"sass": "^1.79.5",
|
||||
"typescript": "~5.7.0",
|
||||
"vue": "^3.4.0",
|
||||
"vue-tsc": "^2.0.0",
|
||||
"vuepress": "^2.0.0-rc.7"
|
||||
"@vuepress/theme-default": "2.0.0-rc.91",
|
||||
"eslint": "9.24.0",
|
||||
"eslint-plugin-vue": "10.0.0",
|
||||
"prettier": "3.5.3",
|
||||
"sass": "1.86.3",
|
||||
"typescript": "5.8.3",
|
||||
"vue": "3.5.13",
|
||||
"vue-tsc": "2.2.8",
|
||||
"vuepress": "2.0.0-rc.20"
|
||||
}
|
||||
}
|
||||
|
|
1536
pnpm-lock.yaml
generated
1536
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load diff
Loading…
Add table
Reference in a new issue