{"@attributes":{"version":"2.0"},"channel":{"title":"DEV Community: Kananek T.","description":"The latest articles on DEV Community by Kananek T. (@dvgamerr).","link":"https:\/\/dev.to\/dvgamerr","image":{"url":"https:\/\/media2.dev.to\/dynamic\/image\/width=90,height=90,fit=cover,gravity=auto,format=auto\/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F988287%2F51fb2a87-ea8c-42d3-a97f-c45d03c15bb1.png","title":"DEV Community: Kananek T.","link":"https:\/\/dev.to\/dvgamerr"},"language":"en","item":[{"title":"\u0e40\u0e23\u0e35\u0e22\u0e19\u0e20\u0e32\u0e29\u0e32\u0e43\u0e2b\u0e21\u0e48\u0e01\u0e47\u0e2a\u0e19\u0e38\u0e01\u0e14\u0e35 \u0e19\u0e30 \u0e40\u0e2b\u0e21\u0e37\u0e2d\u0e19 bash+powershell","pubDate":"Fri, 31 Jan 2025 03:36:15 +0000","link":"https:\/\/dev.to\/dvgamerr\/eriiynphaasaaaihmksnukdii-na-ehmuuen-bashpowershell-5b2k","guid":"https:\/\/dev.to\/dvgamerr\/eriiynphaasaaaihmksnukdii-na-ehmuuen-bashpowershell-5b2k","description":"<p>fnm for Nushell<br>\n\u0e01\u0e32\u0e23\u0e40\u0e23\u0e35\u0e22\u0e19\u0e20\u0e32\u0e29\u0e32\u0e43\u0e2b\u0e21\u0e48\u0e01\u0e47\u0e2a\u0e19\u0e38\u0e01\u0e14\u0e35\u0e19\u0e30 \u0e42\u0e14\u0e22\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e40\u0e1b\u0e23\u0e35\u0e22\u0e1a\u0e40\u0e17\u0e35\u0e22\u0e1a\u0e01\u0e31\u0e1a Bash \u0e41\u0e25\u0e30 Powershell \u0e17\u0e35\u0e48\u0e40\u0e23\u0e32\u0e40\u0e04\u0e22\u0e43\u0e0a\u0e49\u0e01\u0e31\u0e19\u0e2d\u0e22\u0e39\u0e48 \u0e27\u0e31\u0e19\u0e19\u0e35\u0e49\u0e40\u0e23\u0e32\u0e08\u0e30\u0e21\u0e32\u0e1e\u0e39\u0e14\u0e16\u0e36\u0e07 Nushell \u0e41\u0e25\u0e30\u0e27\u0e34\u0e18\u0e35\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23\u0e01\u0e31\u0e1a environment variables \u0e14\u0e49\u0e27\u0e22 fnm (Fast Node Manager) \u0e0b\u0e36\u0e48\u0e07\u0e40\u0e1b\u0e47\u0e19\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e21\u0e37\u0e2d\u0e17\u0e35\u0e48\u0e0a\u0e48\u0e27\u0e22\u0e43\u0e19\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23 Node.js \u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e0a\u0e31\u0e19\u0e15\u0e48\u0e32\u0e07\u0e46 \u0e44\u0e14\u0e49\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e2a\u0e30\u0e14\u0e27\u0e01<\/p>\n\n<p>\u0e01\u0e32\u0e23\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32 environment variables \u0e43\u0e19 Nushell \u0e19\u0e31\u0e49\u0e19\u0e44\u0e21\u0e48\u0e22\u0e32\u0e01\u0e40\u0e25\u0e22 \u0e40\u0e23\u0e32\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e43\u0e0a\u0e49\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e15\u0e48\u0e2d\u0e44\u0e1b\u0e19\u0e35\u0e49:<br>\n<\/p>\n\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>load-env (fnm env --shell bash | lines | str replace 'export ' '' | str replace -a '\"' '' | split column \"=\" | rename name value | where name != \"FNM_ARCH\" and name != \"PATH\" | reduce -f {} {|it, acc| $acc | upsert $it.name $it.value })\n$env.PATH = ($env.PATH | prepend $\"($env.FNM_MULTISHELL_PATH)\")\n<\/code><\/pre>\n\n<\/div>\n\n\n\n<p>\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e19\u0e35\u0e49\u0e08\u0e30\u0e0a\u0e48\u0e27\u0e22\u0e40\u0e23\u0e32\u0e14\u0e36\u0e07\u0e04\u0e48\u0e32\u0e15\u0e48\u0e32\u0e07\u0e46 \u0e08\u0e32\u0e01 environment \u0e02\u0e2d\u0e07 fnm \u0e21\u0e32\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e40\u0e1b\u0e47\u0e19 environment variables \u0e43\u0e2b\u0e21\u0e48\u0e43\u0e19 Nushell \u0e0b\u0e36\u0e48\u0e07\u0e17\u0e33\u0e43\u0e2b\u0e49\u0e40\u0e23\u0e32\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19 Node.js \u0e44\u0e14\u0e49\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e23\u0e32\u0e1a\u0e23\u0e37\u0e48\u0e19<\/p>\n\n<p>\u0e01\u0e32\u0e23\u0e40\u0e23\u0e35\u0e22\u0e19\u0e23\u0e39\u0e49\u0e20\u0e32\u0e29\u0e32\u0e43\u0e2b\u0e21\u0e48\u0e46 \u0e0a\u0e48\u0e27\u0e22\u0e43\u0e2b\u0e49\u0e40\u0e23\u0e32\u0e40\u0e1b\u0e34\u0e14\u0e21\u0e38\u0e21\u0e21\u0e2d\u0e07\u0e41\u0e25\u0e30\u0e40\u0e23\u0e35\u0e22\u0e19\u0e23\u0e39\u0e49\u0e27\u0e34\u0e18\u0e35\u0e01\u0e32\u0e23\u0e17\u0e33\u0e07\u0e32\u0e19\u0e17\u0e35\u0e48\u0e41\u0e15\u0e01\u0e15\u0e48\u0e32\u0e07\u0e01\u0e31\u0e19\u0e44\u0e1b \u0e25\u0e2d\u0e07\u0e40\u0e1b\u0e34\u0e14\u0e43\u0e08\u0e41\u0e25\u0e30\u0e2a\u0e33\u0e23\u0e27\u0e08 Nushell \u0e14\u0e39\u0e2a\u0e34 \u0e41\u0e25\u0e49\u0e27\u0e04\u0e38\u0e13\u0e08\u0e30\u0e1e\u0e1a\u0e27\u0e48\u0e32\u0e21\u0e31\u0e19\u0e2a\u0e19\u0e38\u0e01\u0e41\u0e25\u0e30\u0e21\u0e35\u0e1b\u0e23\u0e30\u0e42\u0e22\u0e0a\u0e19\u0e4c\u0e21\u0e32\u0e01\u0e17\u0e35\u0e40\u0e14\u0e35\u0e22\u0e27!<\/p>\n\n","category":["nushell","bash","powershell","programming"]},{"title":"Docker Server Certificate with SSL","pubDate":"Fri, 11 Oct 2024 09:20:49 +0000","link":"https:\/\/dev.to\/dvgamerr\/docker-server-certificate-with-ssl-h4l","guid":"https:\/\/dev.to\/dvgamerr\/docker-server-certificate-with-ssl-h4l","description":"<h3>\n  \n  \n  Step 1: Create the Certificate Authority (CA)\n<\/h3>\n\n\n\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code><span class=\"nv\">HOST<\/span><span class=\"o\">=<\/span>10.203.1.61\nopenssl genrsa <span class=\"nt\">-aes256<\/span> <span class=\"nt\">-out<\/span> ca-key.pem 4096\nopenssl req <span class=\"nt\">-new<\/span> <span class=\"nt\">-x509<\/span> <span class=\"nt\">-days<\/span> 365 <span class=\"nt\">-key<\/span> ca-key.pem <span class=\"nt\">-sha256<\/span> <span class=\"nt\">-out<\/span> ca.pem <span class=\"se\">\\<\/span>\n  <span class=\"nt\">-subj<\/span> <span class=\"s2\">\"\/C=TH\/ST=Bangkok\/L=Sathon\/O=dvgamerr\/OU=DevOps\/CN=<\/span><span class=\"nv\">$HOST<\/span><span class=\"s2\">\/emailAddress=kananek@dvgamerr.app\"<\/span>\n<\/code><\/pre>\n\n<\/div>\n\n\n\n<h3>\n  \n  \n  Step 2: Generate the Server Certificate\n<\/h3>\n\n\n\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code><span class=\"nb\">cat<\/span> <span class=\"o\">&gt;<\/span> san.cnf <span class=\"o\">&lt;&lt;<\/span><span class=\"no\">EOF<\/span><span class=\"sh\">\n[req]\ndistinguished_name = req_distinguished_name\nreq_extensions = v3_req\nprompt = no\n\n[req_distinguished_name]\nCN = <\/span><span class=\"nv\">$HOST<\/span><span class=\"sh\">   # Server IP or hostname\n\n[v3_req]\nkeyUsage = keyEncipherment, dataEncipherment\nextendedKeyUsage = serverAuth\nsubjectAltName = @alt_names\n\n[alt_names]\nIP.1 = <\/span><span class=\"nv\">$HOST<\/span><span class=\"sh\">   # Docker host IP address\n<\/span><span class=\"no\">\nEOF\n<\/span><\/code><\/pre>\n\n<\/div>\n\n\n\n\n\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>openssl genrsa <span class=\"nt\">-out<\/span> server-key.pem 4096\nopenssl req <span class=\"nt\">-subj<\/span> <span class=\"s2\">\"\/CN=<\/span><span class=\"nv\">$HOST<\/span><span class=\"s2\">\"<\/span> <span class=\"nt\">-sha256<\/span> <span class=\"nt\">-new<\/span> <span class=\"nt\">-key<\/span> server-key.pem <span class=\"nt\">-out<\/span> server.csr\nopenssl req <span class=\"nt\">-new<\/span> <span class=\"nt\">-key<\/span> server-key.pem <span class=\"nt\">-out<\/span> server.csr <span class=\"nt\">-config<\/span> san.cnf\nopenssl x509 <span class=\"nt\">-req<\/span> <span class=\"nt\">-in<\/span> server.csr <span class=\"nt\">-CA<\/span> ca.pem <span class=\"nt\">-CAkey<\/span> ca-key.pem <span class=\"nt\">-CAcreateserial<\/span> <span class=\"nt\">-out<\/span> server-cert.pem <span class=\"nt\">-days<\/span> 365 <span class=\"nt\">-extfile<\/span> san.cnf <span class=\"nt\">-extensions<\/span> v3_req\n<\/code><\/pre>\n\n<\/div>\n\n\n\n<h3>\n  \n  \n  Step 3: Generate the Client Certificate\n<\/h3>\n\n\n\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>openssl genrsa <span class=\"nt\">-out<\/span> key.pem 4096\nopenssl req <span class=\"nt\">-subj<\/span> <span class=\"s1\">'\/CN=aorus'<\/span> <span class=\"nt\">-new<\/span> <span class=\"nt\">-key<\/span> key.pem <span class=\"nt\">-out<\/span> client.csr\n<span class=\"nb\">sudo <\/span>openssl x509 <span class=\"nt\">-req<\/span> <span class=\"nt\">-in<\/span> client.csr <span class=\"nt\">-CA<\/span> \/root\/.docker\/ca.pem <span class=\"nt\">-CAkey<\/span> \/root\/.docker\/ca-key.pem <span class=\"nt\">-CAcreateserial<\/span> <span class=\"nt\">-out<\/span> cert.pem <span class=\"nt\">-days<\/span> 365 <span class=\"nt\">-extfile<\/span> extfile.cnf\n<span class=\"nb\">sudo chown<\/span> <span class=\"nt\">-R<\/span> dvgamerr:dvgamerr cert.pem\n<span class=\"nb\">cp<\/span> <span class=\"nt\">-v<\/span> \/root\/.docker\/ca.pem \/home\/dvgamerr\/.docker\n<\/code><\/pre>\n\n<\/div>\n\n\n\n<p>copy cert cleint to windows<br>\n<\/p>\n\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>scp aide-pi-61:\/home\/dvgamerr\/.docker\/key.pem <span class=\"nb\">.<\/span>\nscp aide-pi-61:\/home\/dvgamerr\/.docker\/ca.pem <span class=\"nb\">.<\/span>\nscp aide-pi-61:\/home\/dvgamerr\/.docker\/cert.pem <span class=\"nb\">.<\/span>\n<\/code><\/pre>\n\n<\/div>\n\n\n\n\n\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code><span class=\"nv\">HOST<\/span><span class=\"o\">=<\/span>10.203.1.61\ndocker context create aide-pi-61 <span class=\"nt\">--description<\/span> <span class=\"s2\">\"Docker context for aide-pi-61\"<\/span> <span class=\"nt\">--docker<\/span> <span class=\"s2\">\"host=tcp:\/\/<\/span><span class=\"nv\">$HOST<\/span><span class=\"s2\">:2376,ca=C:\/Users\/dvgamerr\/.docker\/ca.pem,cert=C:\/Users\/dvgamerr\/.docker\/cert.pem,key=C:\/Users\/dvgamerr\/.docker\/key.pem\"<\/span>\ndocker context use aide-pi-61\n<\/code><\/pre>\n\n<\/div>\n\n\n\n","category":["docker","ssl","tcp","certificate"]},{"title":"\u0e40\u0e1c\u0e37\u0e48\u0e2d\u0e43\u0e04\u0e23\u0e2d\u0e22\u0e32\u0e01\u0e17\u0e33 mp4 to gif \u0e41\u0e1a\u0e1a\u0e04\u0e21\u0e46","pubDate":"Sun, 07 Jul 2024 04:55:58 +0000","link":"https:\/\/dev.to\/dvgamerr\/ephuueaikhryaaktham-mp4-to-gif-aebbkhm-569","guid":"https:\/\/dev.to\/dvgamerr\/ephuueaikhryaaktham-mp4-to-gif-aebbkhm-569","description":"<p>\u0e40\u0e1c\u0e37\u0e48\u0e2d\u0e43\u0e04\u0e23\u0e2d\u0e22\u0e32\u0e01\u0e17\u0e33 mp4 to gif \u0e41\u0e1a\u0e1a\u0e04\u0e21\u0e46<br>\n<\/p>\n\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>ffmpeg -i example.mp4 -vf scale=720:-1 .\/gif\/frame%04d.png\ngifski --fps 14 -o example.gif .\/gif\/frame*.png\n<\/code><\/pre>\n\n<\/div>\n\n\n\n<p>extra gif to mp4<br>\n<\/p>\n\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>ffmpeg -i example.gif -pix_fmt yuv420p example.mp4\n<\/code><\/pre>\n\n<\/div>\n\n\n\n","category":"ffmpeg"},{"title":"New Theme GithubPages go-hoyolab","pubDate":"Wed, 08 Nov 2023 08:46:00 +0000","link":"https:\/\/dev.to\/dvgamerr\/new-theme-githubpages-go-hoyolab-2d7m","guid":"https:\/\/dev.to\/dvgamerr\/new-theme-githubpages-go-hoyolab-2d7m","description":"<p>go-hoyolab New Theme GithubPages<br>\n<a href=\"https:\/\/dvgamerr.github.io\/go-hoyolab\/\">https:\/\/dvgamerr.github.io\/go-hoyolab\/<\/a><\/p>\n\n<p><a href=\"https:\/\/media.dev.to\/cdn-cgi\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2e858h8ojike4uk0txv7.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/cdn-cgi\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2e858h8ojike4uk0txv7.png\" alt=\"screenshot website\" width=\"800\" height=\"496\"><\/a><\/p>\n\n","category":["github","go","bot","hoyoverse"]},{"title":"New Theme Jekyll minima-lite","pubDate":"Wed, 08 Nov 2023 08:44:00 +0000","link":"https:\/\/dev.to\/dvgamerr\/new-theme-jekyll-minima-lite-3dn","guid":"https:\/\/dev.to\/dvgamerr\/new-theme-jekyll-minima-lite-3dn","description":"<p>I use Jekyll as a template, forked from someone else's work and modified it to create my design. It was a bit confusing at first, figuring out how to start and override things. But once I started writing it, it became similar to using Astro.js, just with more HTMLx.<\/p>\n\n<p>The advantage is that when I want to turn any repo into a GitHub Pages site, I just need to create a _config.yml file. GitHub automatically detects it, making it super easy.<\/p>\n\n<p>Here's an example: <a href=\"https:\/\/dvgamerr.github.io\/go-hoyolab\/\">https:\/\/dvgamerr.github.io\/go-hoyolab\/<\/a><\/p>\n\n<p>And the theme: <a href=\"https:\/\/github.com\/dvgamerr\/minima-lite\">https:\/\/github.com\/dvgamerr\/minima-lite<\/a><\/p>\n\n<p><a href=\"https:\/\/media.dev.to\/cdn-cgi\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frdetvshkytete191b09w.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media.dev.to\/cdn-cgi\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frdetvshkytete191b09w.png\" alt=\"screenshot\" width=\"800\" height=\"496\"><\/a><\/p>\n\n","category":["jekyll","theme","github","ghpages"]}]}}