From f2b70a75ee77fc9889b4d76ec5a8757b7f43e7f7 Mon Sep 17 00:00:00 2001 From: rjbasitali Date: Tue, 20 Sep 2022 04:22:32 +0500 Subject: [PATCH] init --- .firebaserc | 5 + .gitignore | 66 + .hugo_build.lock | 0 archetypes/default.md | 6 + config.toml | 92 + content/about.md | 13 + content/contact.md | 9 + ...golang-middleware-for-your-http-handler.md | 160 + ...ing-your-own-reverse-proxy-using-golang.md | 140 + firebase.json | 16 + public/about/index.html | 130 + public/categories/index.html | 132 + public/categories/index.xml | 11 + public/contact/index.html | 126 + ...c140fd56eb4cd9c0853113ad08e66afdb08bdd.css | 3 + public/css/styles.css.map | 51 + public/images/favicon.ico | Bin 0 -> 15086 bytes public/images/logo.png | Bin 0 -> 224006 bytes public/index.html | 211 + public/index.xml | 53 + public/js/code-copy.js | 36 + public/js/feather.min.js | 13 + public/js/main.js | 113 + public/js/search.js | 154 + public/lib/JetBrainsMono/LICENSE | 201 + .../ttf/JetBrainsMono-Bold-Italic.ttf | Bin 0 -> 145004 bytes .../JetBrainsMono/ttf/JetBrainsMono-Bold.ttf | Bin 0 -> 138692 bytes .../ttf/JetBrainsMono-ExtraBold-Italic.ttf | Bin 0 -> 145672 bytes .../ttf/JetBrainsMono-ExtraBold.ttf | Bin 0 -> 139168 bytes .../ttf/JetBrainsMono-Italic.ttf | Bin 0 -> 141572 bytes .../ttf/JetBrainsMono-Medium-Italic.ttf | Bin 0 -> 144528 bytes .../ttf/JetBrainsMono-Medium.ttf | Bin 0 -> 138276 bytes .../ttf/JetBrainsMono-Regular.ttf | Bin 0 -> 136708 bytes .../web/eot/JetBrainsMono-Bold-Italic.eot | Bin 0 -> 145232 bytes .../web/eot/JetBrainsMono-Bold.eot | Bin 0 -> 138892 bytes .../eot/JetBrainsMono-ExtraBold-Italic.eot | Bin 0 -> 145920 bytes .../web/eot/JetBrainsMono-ExtraBold.eot | Bin 0 -> 139404 bytes .../web/eot/JetBrainsMono-Italic.eot | Bin 0 -> 141780 bytes .../web/eot/JetBrainsMono-Medium-Italic.eot | Bin 0 -> 144764 bytes .../web/eot/JetBrainsMono-Medium.eot | Bin 0 -> 138500 bytes .../web/eot/JetBrainsMono-Regular.eot | Bin 0 -> 136920 bytes .../web/woff/JetBrainsMono-Bold-Italic.woff | Bin 0 -> 66280 bytes .../web/woff/JetBrainsMono-Bold.woff | Bin 0 -> 61324 bytes .../woff/JetBrainsMono-ExtraBold-Italic.woff | Bin 0 -> 65232 bytes .../web/woff/JetBrainsMono-ExtraBold.woff | Bin 0 -> 60132 bytes .../web/woff/JetBrainsMono-Italic.woff | Bin 0 -> 63980 bytes .../web/woff/JetBrainsMono-Medium-Italic.woff | Bin 0 -> 66064 bytes .../web/woff/JetBrainsMono-Medium.woff | Bin 0 -> 61180 bytes .../web/woff/JetBrainsMono-Regular.woff | Bin 0 -> 59368 bytes .../web/woff2/JetBrainsMono-Bold-Italic.woff2 | Bin 0 -> 50108 bytes .../web/woff2/JetBrainsMono-Bold.woff2 | Bin 0 -> 46384 bytes .../JetBrainsMono-ExtraBold-Italic.woff2 | Bin 0 -> 49004 bytes .../web/woff2/JetBrainsMono-ExtraBold.woff2 | Bin 0 -> 45320 bytes .../web/woff2/JetBrainsMono-Italic.woff2 | Bin 0 -> 47888 bytes .../woff2/JetBrainsMono-Medium-Italic.woff2 | Bin 0 -> 49672 bytes .../web/woff2/JetBrainsMono-Medium.woff2 | Bin 0 -> 46244 bytes .../web/woff2/JetBrainsMono-Regular.woff2 | Bin 0 -> 44688 bytes public/lib/clipboard/clipboard.min.js | 7 + public/lib/font-awesome/css/all.min.css | 5 + .../font-awesome/webfonts/fa-brands-400.eot | Bin 0 -> 136882 bytes .../font-awesome/webfonts/fa-brands-400.svg | 3720 ++++++++++++ .../font-awesome/webfonts/fa-brands-400.ttf | Bin 0 -> 136576 bytes .../font-awesome/webfonts/fa-brands-400.woff | Bin 0 -> 92216 bytes .../font-awesome/webfonts/fa-brands-400.woff2 | Bin 0 -> 78632 bytes .../font-awesome/webfonts/fa-regular-400.eot | Bin 0 -> 34350 bytes .../font-awesome/webfonts/fa-regular-400.svg | 806 +++ .../font-awesome/webfonts/fa-regular-400.ttf | Bin 0 -> 34052 bytes .../font-awesome/webfonts/fa-regular-400.woff | Bin 0 -> 16776 bytes .../webfonts/fa-regular-400.woff2 | Bin 0 -> 13576 bytes .../font-awesome/webfonts/fa-solid-900.eot | Bin 0 -> 204814 bytes .../font-awesome/webfonts/fa-solid-900.svg | 5033 +++++++++++++++++ .../font-awesome/webfonts/fa-solid-900.ttf | Bin 0 -> 204528 bytes .../font-awesome/webfonts/fa-solid-900.woff | Bin 0 -> 104284 bytes .../font-awesome/webfonts/fa-solid-900.woff2 | Bin 0 -> 80240 bytes public/lib/jquery/jquery.min.js | 2 + .../css/justifiedGallery.min.css | 102 + .../js/jquery.justifiedGallery.min.js | 8 + public/posts/index.html | 153 + public/posts/index.xml | 32 + public/posts/page/1/index.html | 10 + .../index.html | 454 ++ .../index.html | 485 ++ public/sitemap.xml | 49 + public/tags/go/index.html | 142 + public/tags/go/index.xml | 23 + public/tags/go/page/1/index.html | 10 + public/tags/golang/index.html | 153 + public/tags/golang/index.xml | 32 + public/tags/golang/page/1/index.html | 10 + public/tags/handler/index.html | 142 + public/tags/handler/index.xml | 21 + public/tags/handler/page/1/index.html | 10 + public/tags/http/index.html | 142 + public/tags/http/index.xml | 21 + public/tags/http/page/1/index.html | 10 + public/tags/index.html | 141 + public/tags/index.xml | 75 + public/tags/middleware/index.html | 142 + public/tags/middleware/index.xml | 21 + public/tags/middleware/page/1/index.html | 10 + public/tags/proxy/index.html | 142 + public/tags/proxy/index.xml | 23 + public/tags/proxy/page/1/index.html | 10 + public/tags/reverse-proxy/index.html | 142 + public/tags/reverse-proxy/index.xml | 23 + public/tags/reverse-proxy/page/1/index.html | 10 + ...s_17a317b87063135b4df76ed814d78726.content | 3 + ...scss_17a317b87063135b4df76ed814d78726.json | 1 + themes/cactus | 1 + 109 files changed, 14067 insertions(+) create mode 100644 .firebaserc create mode 100644 .gitignore create mode 100644 .hugo_build.lock create mode 100644 archetypes/default.md create mode 100644 config.toml create mode 100644 content/about.md create mode 100644 content/contact.md create mode 100644 content/posts/writing-a-golang-middleware-for-your-http-handler.md create mode 100644 content/posts/writing-your-own-reverse-proxy-using-golang.md create mode 100644 firebase.json create mode 100644 public/about/index.html create mode 100644 public/categories/index.html create mode 100644 public/categories/index.xml create mode 100644 public/contact/index.html create mode 100644 public/css/styles.94f653e9e151e28067a7c5dbbc4600cbd5a3c721e79faaf971e523c40f3b249b8e4f20bb57810dfffa8d559ca5c140fd56eb4cd9c0853113ad08e66afdb08bdd.css create mode 100644 public/css/styles.css.map create mode 100644 public/images/favicon.ico create mode 100644 public/images/logo.png create mode 100644 public/index.html create mode 100644 public/index.xml create mode 100644 public/js/code-copy.js create mode 100644 public/js/feather.min.js create mode 100644 public/js/main.js create mode 100644 public/js/search.js create mode 100644 public/lib/JetBrainsMono/LICENSE create mode 100644 public/lib/JetBrainsMono/ttf/JetBrainsMono-Bold-Italic.ttf create mode 100644 public/lib/JetBrainsMono/ttf/JetBrainsMono-Bold.ttf create mode 100644 public/lib/JetBrainsMono/ttf/JetBrainsMono-ExtraBold-Italic.ttf create mode 100644 public/lib/JetBrainsMono/ttf/JetBrainsMono-ExtraBold.ttf create mode 100644 public/lib/JetBrainsMono/ttf/JetBrainsMono-Italic.ttf create mode 100644 public/lib/JetBrainsMono/ttf/JetBrainsMono-Medium-Italic.ttf create mode 100644 public/lib/JetBrainsMono/ttf/JetBrainsMono-Medium.ttf create mode 100644 public/lib/JetBrainsMono/ttf/JetBrainsMono-Regular.ttf create mode 100644 public/lib/JetBrainsMono/web/eot/JetBrainsMono-Bold-Italic.eot create mode 100644 public/lib/JetBrainsMono/web/eot/JetBrainsMono-Bold.eot create mode 100644 public/lib/JetBrainsMono/web/eot/JetBrainsMono-ExtraBold-Italic.eot create mode 100644 public/lib/JetBrainsMono/web/eot/JetBrainsMono-ExtraBold.eot create mode 100644 public/lib/JetBrainsMono/web/eot/JetBrainsMono-Italic.eot create mode 100644 public/lib/JetBrainsMono/web/eot/JetBrainsMono-Medium-Italic.eot create mode 100644 public/lib/JetBrainsMono/web/eot/JetBrainsMono-Medium.eot create mode 100644 public/lib/JetBrainsMono/web/eot/JetBrainsMono-Regular.eot create mode 100644 public/lib/JetBrainsMono/web/woff/JetBrainsMono-Bold-Italic.woff create mode 100644 public/lib/JetBrainsMono/web/woff/JetBrainsMono-Bold.woff create mode 100644 public/lib/JetBrainsMono/web/woff/JetBrainsMono-ExtraBold-Italic.woff create mode 100644 public/lib/JetBrainsMono/web/woff/JetBrainsMono-ExtraBold.woff create mode 100644 public/lib/JetBrainsMono/web/woff/JetBrainsMono-Italic.woff create mode 100644 public/lib/JetBrainsMono/web/woff/JetBrainsMono-Medium-Italic.woff create mode 100644 public/lib/JetBrainsMono/web/woff/JetBrainsMono-Medium.woff create mode 100644 public/lib/JetBrainsMono/web/woff/JetBrainsMono-Regular.woff create mode 100644 public/lib/JetBrainsMono/web/woff2/JetBrainsMono-Bold-Italic.woff2 create mode 100644 public/lib/JetBrainsMono/web/woff2/JetBrainsMono-Bold.woff2 create mode 100644 public/lib/JetBrainsMono/web/woff2/JetBrainsMono-ExtraBold-Italic.woff2 create mode 100644 public/lib/JetBrainsMono/web/woff2/JetBrainsMono-ExtraBold.woff2 create mode 100644 public/lib/JetBrainsMono/web/woff2/JetBrainsMono-Italic.woff2 create mode 100644 public/lib/JetBrainsMono/web/woff2/JetBrainsMono-Medium-Italic.woff2 create mode 100644 public/lib/JetBrainsMono/web/woff2/JetBrainsMono-Medium.woff2 create mode 100644 public/lib/JetBrainsMono/web/woff2/JetBrainsMono-Regular.woff2 create mode 100644 public/lib/clipboard/clipboard.min.js create mode 100644 public/lib/font-awesome/css/all.min.css create mode 100644 public/lib/font-awesome/webfonts/fa-brands-400.eot create mode 100644 public/lib/font-awesome/webfonts/fa-brands-400.svg create mode 100644 public/lib/font-awesome/webfonts/fa-brands-400.ttf create mode 100644 public/lib/font-awesome/webfonts/fa-brands-400.woff create mode 100644 public/lib/font-awesome/webfonts/fa-brands-400.woff2 create mode 100644 public/lib/font-awesome/webfonts/fa-regular-400.eot create mode 100644 public/lib/font-awesome/webfonts/fa-regular-400.svg create mode 100644 public/lib/font-awesome/webfonts/fa-regular-400.ttf create mode 100644 public/lib/font-awesome/webfonts/fa-regular-400.woff create mode 100644 public/lib/font-awesome/webfonts/fa-regular-400.woff2 create mode 100644 public/lib/font-awesome/webfonts/fa-solid-900.eot create mode 100644 public/lib/font-awesome/webfonts/fa-solid-900.svg create mode 100644 public/lib/font-awesome/webfonts/fa-solid-900.ttf create mode 100644 public/lib/font-awesome/webfonts/fa-solid-900.woff create mode 100644 public/lib/font-awesome/webfonts/fa-solid-900.woff2 create mode 100644 public/lib/jquery/jquery.min.js create mode 100644 public/lib/justified-gallery/css/justifiedGallery.min.css create mode 100644 public/lib/justified-gallery/js/jquery.justifiedGallery.min.js create mode 100644 public/posts/index.html create mode 100644 public/posts/index.xml create mode 100644 public/posts/page/1/index.html create mode 100644 public/posts/writing-a-golang-middleware-for-your-http-handler/index.html create mode 100644 public/posts/writing-your-own-reverse-proxy-using-golang/index.html create mode 100644 public/sitemap.xml create mode 100644 public/tags/go/index.html create mode 100644 public/tags/go/index.xml create mode 100644 public/tags/go/page/1/index.html create mode 100644 public/tags/golang/index.html create mode 100644 public/tags/golang/index.xml create mode 100644 public/tags/golang/page/1/index.html create mode 100644 public/tags/handler/index.html create mode 100644 public/tags/handler/index.xml create mode 100644 public/tags/handler/page/1/index.html create mode 100644 public/tags/http/index.html create mode 100644 public/tags/http/index.xml create mode 100644 public/tags/http/page/1/index.html create mode 100644 public/tags/index.html create mode 100644 public/tags/index.xml create mode 100644 public/tags/middleware/index.html create mode 100644 public/tags/middleware/index.xml create mode 100644 public/tags/middleware/page/1/index.html create mode 100644 public/tags/proxy/index.html create mode 100644 public/tags/proxy/index.xml create mode 100644 public/tags/proxy/page/1/index.html create mode 100644 public/tags/reverse-proxy/index.html create mode 100644 public/tags/reverse-proxy/index.xml create mode 100644 public/tags/reverse-proxy/page/1/index.html create mode 100644 resources/_gen/assets/scss/scss/style.scss_17a317b87063135b4df76ed814d78726.content create mode 100644 resources/_gen/assets/scss/scss/style.scss_17a317b87063135b4df76ed814d78726.json create mode 160000 themes/cactus diff --git a/.firebaserc b/.firebaserc new file mode 100644 index 0000000..7207f2c --- /dev/null +++ b/.firebaserc @@ -0,0 +1,5 @@ +{ + "projects": { + "default": "personal-blog-30389" + } +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..dbb58ff --- /dev/null +++ b/.gitignore @@ -0,0 +1,66 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +firebase-debug.log* +firebase-debug.*.log* + +# Firebase cache +.firebase/ + +# Firebase config + +# Uncomment this if you'd like others to create their own Firebase project. +# For a team working on the same Firebase project(s), it is recommended to leave +# it commented so all members can deploy to the same project(s) in .firebaserc. +# .firebaserc + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (http://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env diff --git a/.hugo_build.lock b/.hugo_build.lock new file mode 100644 index 0000000..e69de29 diff --git a/archetypes/default.md b/archetypes/default.md new file mode 100644 index 0000000..00e77bd --- /dev/null +++ b/archetypes/default.md @@ -0,0 +1,6 @@ +--- +title: "{{ replace .Name "-" " " | title }}" +date: {{ .Date }} +draft: true +--- + diff --git a/config.toml b/config.toml new file mode 100644 index 0000000..62cc780 --- /dev/null +++ b/config.toml @@ -0,0 +1,92 @@ +baseURL = "https://blog.rjbasitali.com" +languageCode = "en-us" +title = "Basit's Blog" +theme = "cactus" +copyright = "Basit Ali" # cactus will use title if copyright is not set +disqusShortname = "rjbasitali" # Used when comments is enabled. Cactus will use site title if not set +# googleAnalytics = "UA-1234-5" + + +# summaryLength = 2 + +# Main menu which appears below site header. +[[menu.main]] +name = "Home" +url = "/" +weight = 1 + +[[menu.main]] +name = "Tags" +url = "/tags" +weight = 3 + +[[menu.main]] +name = "About" +url = "/about" +weight = 4 + +[markup] + [markup.tableOfContents] + endLevel = 4 + ordered = false + startLevel = 2 + [markup.highlight] + codeFences = true + guessSyntax = false + hl_Lines = "" + lineNoStart = 1 + lineNos = true + lineNumbersInTable = false + noClasses = true + style = "dracula" + tabWidth = 4 + +[params] + + colortheme = "white" # dark, light, white, or classic + rss = true # generate rss feed. default value is false + googleAnalyticsAsync = true # use asynchronous tracking. Synchronous tracking by default + showAllPostsArchive = false # default + + # Home page settings + #description = "Hugo is a general-purpose website framework. Technically speaking, Hugo is a static site generator. Unlike systems that dynamically build a page with each visitor request, Hugo builds pages when you create or update your content. Since websites are viewed far more often than they are edited, Hugo is designed to provide an optimal viewing experience for your website’s end users and an ideal writing experience for website authors." + mainSection = "posts" # your main section + showAllPostsOnHomePage = false # default + postsOnHomePage = 5 # this option will be ignored if showAllPostsOnHomePage is set to true + tagsOverview = true # show tags overview by default. + showProjectsList = false # show projects list by default (if projects data file exists). + #projectsUrl = "https://github.com/gohugoio" # title link for projects list + + # https://gohugo.io/functions/format/#hugo-date-and-time-templating-reference + dateFormat = "2006-01-02" # default + + # Post page settings + show_updated = true # default + showReadTime = true # default + + [params.comments] + enabled = false # default + engine = "cactus_comments" # only disqus, utterances, and cactus_comments is supported + [params.comments.utterances] + repo = "/" + label = "hugo-site-name" # you can use however you want to label your name in your repo's issues + theme = "github-light" + [params.comments.cactuscomments] + siteName = "your_cactus_comments_sitename" # see https://cactus.chat/ on how to register your site name + #serverUrl = "" # Defaults to https://matrix.cactus.chat:8448 (Cactus Chat public server) + #serverName = "" # Defaults to cactus.chat + + # the value of name should be an valid font awesome icon name (brands type) + # https://fontawesome.com/icons?d=gallery&s=brands + [[params.social]] + name = "website" + link = "https://rjbasitali.com" + [[params.social]] + name = "github" + link = "https://github.com/rjbasitali" + [[params.social]] + name = "linkedin" + link = "https://www.linkedin.com/in/rjbasitali/" + [[params.social]] + name = "email" + link = "rjbasitali@gmail.com" # no need for "mailto:" in the head diff --git a/content/about.md b/content/about.md new file mode 100644 index 0000000..40b153c --- /dev/null +++ b/content/about.md @@ -0,0 +1,13 @@ +--- +title: "About" +date: 2021-07-31T22:39:25+05:00 +draft: false +--- + +**Hi, I'm Basit Ali. I'm a software developer specializing in Java, Go and Android.** + +Previously I've worked with many startups including telehealth, trivia games, logistics and more. Right now I'm working on providing video conferencing and other VoIP solutions using WebRTC, Golang and other cool technologies. + +I generally work with *Go* and *Java* for backend, *React*, *Android*, *Git*, *Postgres* and *Linux*, the technologies, especially databases can change depending on the needs of the project. + +You can contact me for any short-term consultancy projects. \ No newline at end of file diff --git a/content/contact.md b/content/contact.md new file mode 100644 index 0000000..f1e686d --- /dev/null +++ b/content/contact.md @@ -0,0 +1,9 @@ +--- +title: "Contact" +date: 2021-08-01T16:26:01+05:00 +draft: false +--- + +If you’ve got any questions, suggestions or would like to discuss a project then email me at [rjbasitali@gmail.com](mailto:rjbasitali@gmail.com). I’d be happy to hear from you. + +You can also find me on [LinkedIn](https://www.linkedin.com/in/rjbasitali/), [Github](https://github.com/rjbasitali/) and [Instagram](https://www.instagram.com/rjbasitali/). diff --git a/content/posts/writing-a-golang-middleware-for-your-http-handler.md b/content/posts/writing-a-golang-middleware-for-your-http-handler.md new file mode 100644 index 0000000..1875e55 --- /dev/null +++ b/content/posts/writing-a-golang-middleware-for-your-http-handler.md @@ -0,0 +1,160 @@ ++++ +draft = false +date = 2021-08-01T22:05:04+05:00 +title = "Writing a Middleware for your HTTP handler – Golang" +description = "" +slug = "" +authors = ["Basit Ali"] +tags = ["golang", "middleware", "http", "handler"] +categories = [] +externalLink = "" +series = [] ++++ + + +If you are a backend developer working daily with HTTP requests then you have most likely already encountered situations where you want a common functionality across all the incoming HTTP requests, which can be as simple as checking if the `Content-Type` header only has the value `application/json` if you only support json, or maybe you want to spoof your HTTP request to change the method type from `POST`,`GET` or `PUT` to something else based on the `X-HTTP-Method-Override` header, or of course authenticate before finally passing the request to the destination HTTP handler. + + +You can achieve the following behaviour by writing a `middleware`, also known as a `filter` in some other backend frameworks. You can have as many middlewares as you want, each with a separate responsibility, and can chain them together to funnel incoming HTTP requests. + + +Writing a `middleware` in Go is pretty simple, you just need to **wrap** your `middleware` around the base HTTP handler, which so to speak is a thin **wrapper** around your HTTP handler. + + +Lets start with `http` package's `ListenAndServe` method, which listens for incoming connections and serves with the handler to handle the requests, and lets write a handler for root `"/"` path which checks for the header `Content-Type` to see if it's `application/json`, because our API only accepts JSON, and respond with following json `{"msg":"Hello world!"}` to any incoming request: + + +```go + func main() { + mux := http.NewServeMux() + mux.HandleFunc("/", rootHandler) + http.ListenAndServe(":8080", mux) + } + + func rootHandler(w http.ResponseWriter, r *http.Request) { + if r.Header.Get("Content-Type") != "application/json" { + http.Error(w, "Only application/json content type supported", http.StatusUnsupportedMediaType) + return + } + w.Write([]byte(`{"msg":"Hello world!"}`)) + } +``` + + + +Of course in reality you could have a dozen of handlers each with a different endpoint, but lets keep it simple for this tutorial. + + +Now let's assume we have a dozen request handlers in our project and we want each handler to check for `Content-Type` header as we did in our `rootHandler`, we want our code to be DRY *(Don't Repeat Yourself)*. + + +Which brings us to writing a `middleware` to check the `Content-Type` header for each incoming request. Lets write a middleware and call it `wrap`: + +```go + func wrap(next http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + // middleware logic + next.ServeHTTP(w, r) + }) + } +``` + +The `wrap` function takes in a `Handler` and returns a `Handler`, this syntax allows it to be used where we would normally use a request handler, and also allow us to chain multiple middlewares together. Now we can do something like `wrap(handler)` instead of just using `handler`, this would call our `middleware` logic before calling `next.ServeHTTP(w, r)` which can be the next middleware in the chain or a final call to our request handler. + + +In the following example, we are wrapping our `wrap` middleware around `mux` so every incoming request will pass through our middleware first: + + +```go + func main() { + mux := http.NewServeMux() + mux.HandleFunc("/", rootHandler) + http.ListenAndServe(":8080", wrap(mux)) + } + + func rootHandler(w http.ResponseWriter, r *http.Request) { + w.Write([]byte(`{"msg":"Hello world!"}`)) + } + + func wrap(next http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + if r.Header.Get("Content-Type") != "application/json" { + http.Error(w, "Only application/json content type supported", http.StatusUnsupportedMediaType) + return + } + next.ServeHTTP(w, r) + }) + } +``` + + +So far we've been using a single middleware, lets see multiple middlewares chained together in action. We can define multiple middlewares with the same signature as of `wrap`, replacing the comment `// middleware logic` with our code. + +>```go +> func wrap(next http.Handler) http.Handler { +> return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { +> // middleware logic +> next.ServeHTTP(w, r) +> }) +> } +>``` + +Lets rename `wrap` to `enforceJSON`, and write another `middleware` which will log every incoming request's method and path, and chain them both together: + +```go + func main() { + mux := http.NewServeMux() + mux.HandleFunc("/", rootHandler) + http.ListenAndServe(":8080", logRequest(enforceJSON(mux))) + } + + func rootHandler(w ResponseWriter, r *Request) { + w.Write([]byte(`{"msg":"Hello world!"}`)) + } + + func logRequest(next http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + fmt.Println(r.Method, r.URL.Path) // logs: GET /v1/users/1234 + next.ServeHTTP(w, r) + }) + } + + func enforceJSON(next http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + if r.Header.Get("Content-Type") != "application/json" { + http.Error(w, "Only application/json content type supported", http.StatusUnsupportedMediaType) + return + } + next.ServeHTTP(w, r) + }) + } +``` + +See how we are using `logRequest(enforceJSON(mux))` instead of `wrap(mux)`? Now every incoming HTTP request will be logged and then checked for `Content-Type` before being passed onto the handler. + + +A cleaner way to chain multiple handlers is writing a single `wrap` middleware and chain all the middlewares inside `wrap`: + +```go + func wrap(handler http.Handler) http.Handler { + handler = enforceJSON(handler) + handler = logRequest(handler) + return handler + } +``` + +And then instead of: +```go + http.ListenAndServe(":8080", logRequest(enforceJSON(mux))) +``` + +We can use: +```go + http.ListenAndServe(":8080", wrap(mux)) +``` + + +----------- + + +That's all on middlewares in golang today. Hope it was useful with your understanding on middlewares or how to write them. \ No newline at end of file diff --git a/content/posts/writing-your-own-reverse-proxy-using-golang.md b/content/posts/writing-your-own-reverse-proxy-using-golang.md new file mode 100644 index 0000000..1648b74 --- /dev/null +++ b/content/posts/writing-your-own-reverse-proxy-using-golang.md @@ -0,0 +1,140 @@ ++++ +draft = false +date = 2021-10-12T22:05:04+05:00 +title = "Writing your own Reverse Proxy server using Golang" +description = "" +slug = "" +authors = ["Basit Ali"] +tags = ["golang", "reverse-proxy", "proxy", "go"] +categories = [] +externalLink = "" +series = [] ++++ + +Writing a Reverse Proxy server in Go is a matter of single digit lines of code due to its rock solid standard library and its low level network plumbing capabilities. Recently I came across some use cases where I needed to write my own Reverse Proxy server and of course Go was the pragmatic choice. + + +Let us first start with defining Reverse Proxy and its common uses. + + +## Reverse Proxy + + +A `Reverse Proxy` is an intermediary server that sits between multiple clients and servers, and directs client requests to appropriate backend server. It is commonly used for: + + +* **Load Balancing –** It can distribute the load across multiple available backend servers in such manner that maximizes speed and capacity utilization while ensuring no one server is overloaded, which can degrade performance. + +* **Security –** By intercepting requests headed for your backend servers, a reverse proxy server protects their identities and acts as an additional defense against security attacks. + +* **Caching –** It can cache content to serve, and you can deploy regional proxies to cache content related to specific regions. + +* **TLS Termination –** We can use the reverse proxy to terminate the SSL/TLS connection with the clients in cases where backend servers are being hosted on the same secure VPC network, and it's ok to let the `reverse proxy` <-> `backend server` connection insecure. + +* **More –** Literally, there are a lot more use cases that can take leverage of reverse proxies, that I leave for you to explore. + + +## Personal Use Cases + + +Some common use cases I personally use `reverse proxy` server for are: + +* **TLS Termination –** Lets say I have multiple servers running on the same VPC network, each has it's own copy of the `TLS certificate` issued to same domain name, it makes sense to let the `reverse proxy` handle the TLS handshake and terminate the secure connection and forward it insecurely to appropriate backend server on the same VPC isolated from public reach, now instead of having `TLS certs` on every backend server you can have them on proxy only. + +* **Single VPS Dev Environment –** I have multiple backend servers for a single project, each with separate responsibilities, that I need to deploy but the servers would sit ideal 99% of the time I don't want to spin up multiple VPS for each for a dev environment, which would cost me money, also I don't want to explicitly mention the `port numbers` on the client side to have the servers run on the same VPS. To solve this, I can run all the backend servers and `reverse proxy` on a single VPS, and have the requests proxied to servers running on different ports. + + +Also sometimes for `Authorization`, `Caching` or implementing a feature like `Request Limit` per client. + + +## Let's Code + + +Enough with the uses, lets jump over to implementation. You are probably already familiar with Go standard library's `net/http` package, there's also a utility package for it you might have or might not have used, that is `net/http/httputil`. We'll be using this utility package because it has the type `ReverseProxy` defined which makes writing a reverse proxy so simple using Go. + +### Conditions + +Let's define some condition based on which we'll be forwarding the requests to appropriate server. For this tutorial lets stick to those conditions being the domain name or host of the requests: + +1. If request came on host `sub1.xyz.com`, forward to `localhost:8080`. +2. If request came on host `sub2.xyz.com`, forward to `localhost:8181`. +2. If request came from an unknown host, forward to `localhost:8888`. + +### `main.go` + +Now lets create a `main.go` file, which will do the following: + +```go + package main + + import "net/http" + + func main() { + http.HandleFunc("/", proxy) + if err := http.ListenAndServe(":4433", nil); err != nil { + panic(err) + } + } + + func proxy(w http.ResponseWriter, r *http.Request) { + // We will get to this later ... + } +``` + + +Now that we have a basic server in place, let's write our conditions for `reverse proxy` and use it to forward requests inside our `proxy` handler. + +```go + package main + + import ( + "net/http" + "net/http/httputil" + "net/url" + "strings" + ) + + func main() { + http.HandleFunc("/", proxy) + if err := http.ListenAndServe(":4433", nil); err != nil { + panic(err) + } + } + + func proxy(w http.ResponseWriter, r *http.Request) { + if strings.HasSuffix(r.Host, "://sub1.xyz.com") { // forward requests from sub1.xyz.com to localhost:8080 + if url, err := url.Parse("http://localhost:8080"); err == nil { + proxy := httputil.NewSingleHostReverseProxy(url) + proxy.ServeHTTP(w, r) + } + } else if strings.HasSuffix(r.Host, "://sub2.xyz.com") { // forward requests from sub2.xyz.com to localhost:8181 + if url, err := url.Parse("http://localhost:8181"); err == nil { + proxy := httputil.NewSingleHostReverseProxy(url) + proxy.ServeHTTP(w, r) + } + } else { // forward requests from unknown host to localhost:8888 + if url, err := url.Parse("http://localhost:8888"); err == nil { + proxy := httputil.NewSingleHostReverseProxy(url) + proxy.ServeHTTP(w, r) + } + } + } +``` + +The `httputil`'s `NewSingleHostReverseProxy(url)` function returns a new `ReverseProxy` that routes requests to `url` provided. And that's all, or what minimal we need to run a reverse proxy based on conditions we defined. + + +But there are many ways we can refactor this code, starting from using predefined `proxy` objects instead of creating a new one on each request. Or I prefer a map `map[string]*httputil.ReverseProxy` which maps hosts to proxies, so we can use the map to check if a proxy exists for host then use it, else use the default one. I'll leave the refactoring to anyone following this tutorial to keep it short. + + +## Next Steps + +Though it is pretty simple to write a `reverse proxy` using Go's standard library, but it's missing a lot of good stuff that comes with `nginx` or other solutions available. So you can start by implementing some of them into your own `reverse proxy` that is if the available solutions aren't feasible and you are having to develop your own, like: + +* Caching +* Logging +* Protocol Support (HTTP, HTTPS, HTTP/1.1, HTTP/2, ...) +* Rate Limit +* TLS Support +* Load Balancing +* ... \ No newline at end of file diff --git a/firebase.json b/firebase.json new file mode 100644 index 0000000..93fb369 --- /dev/null +++ b/firebase.json @@ -0,0 +1,16 @@ +{ + "hosting": { + "public": "public", + "ignore": [ + "firebase.json", + "**/.*", + "**/node_modules/**" + ], + "rewrites": [ + { + "source": "**", + "destination": "/index.html" + } + ] + } +} diff --git a/public/about/index.html b/public/about/index.html new file mode 100644 index 0000000..d542bef --- /dev/null +++ b/public/about/index.html @@ -0,0 +1,130 @@ + + + + + + + + + + + + About | Basit's Blog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + +
+ +
+ +

Hi, I’m Basit Ali. I’m a software developer specializing in Java, Go and Android.

+

Previously I’ve worked with many startups including telehealth, trivia games, logistics and more. Right now I’m working on providing video conferencing and other VoIP solutions using WebRTC, Golang and other cool technologies.

+

I generally work with Go and Java for backend, React, Android, Git, Postgres and Linux, the technologies, especially databases can change depending on the needs of the project.

+

You can contact me for any short-term consultancy projects.

+ + +
+
+ + +
+ + +
+ + +
+ + + + + + diff --git a/public/categories/index.html b/public/categories/index.html new file mode 100644 index 0000000..3678a9d --- /dev/null +++ b/public/categories/index.html @@ -0,0 +1,132 @@ + + + + + + + + + + + + Basit's Blog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + +
+
+ +
+ +
+ No categories +
+ +
+
    + +
+
+
+ +
+
+ + +
+ + +
+ + +
+ + + + + + diff --git a/public/categories/index.xml b/public/categories/index.xml new file mode 100644 index 0000000..6039d4d --- /dev/null +++ b/public/categories/index.xml @@ -0,0 +1,11 @@ + + + + Categories on Basit's Blog + https://blog.rjbasitali.com/categories/ + Recent content in Categories on Basit's Blog + Hugo -- gohugo.io + en-us + Basit Ali + + diff --git a/public/contact/index.html b/public/contact/index.html new file mode 100644 index 0000000..9a76c09 --- /dev/null +++ b/public/contact/index.html @@ -0,0 +1,126 @@ + + + + + + + + + + + + Contact | Basit's Blog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + +
+ +
+ +

If you’ve got any questions, suggestions or would like to discuss a project then email me at rjbasitali@gmail.com. I’d be happy to hear from you.

+

You can also find me on LinkedIn, Github and Instagram.

+ + +
+
+ + +
+ + +
+ + +
+ + + + + + diff --git a/public/css/styles.94f653e9e151e28067a7c5dbbc4600cbd5a3c721e79faaf971e523c40f3b249b8e4f20bb57810dfffa8d559ca5c140fd56eb4cd9c0853113ad08e66afdb08bdd.css b/public/css/styles.94f653e9e151e28067a7c5dbbc4600cbd5a3c721e79faaf971e523c40f3b249b8e4f20bb57810dfffa8d559ca5c140fd56eb4cd9c0853113ad08e66afdb08bdd.css new file mode 100644 index 0000000..2324144 --- /dev/null +++ b/public/css/styles.94f653e9e151e28067a7c5dbbc4600cbd5a3c721e79faaf971e523c40f3b249b8e4f20bb57810dfffa8d559ca5c140fd56eb4cd9c0853113ad08e66afdb08bdd.css @@ -0,0 +1,3 @@ +.inline{display:inline}.block{display:block}.inline-block{display:inline-block}.table{display:table}.table-cell{display:table-cell}.overflow-hidden{overflow:hidden}.overflow-scroll{overflow:scroll}.overflow-auto{overflow:auto}.clearfix:before,.clearfix:after{display:table;content:" "}.clearfix:after{clear:both}.left{float:left}.right{float:right}.fit{max-width:100%}.truncate{display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.max-width-1{max-width:24rem}.max-width-2{max-width:32rem}.max-width-3{max-width:48rem}.max-width-4{max-width:64rem}.border-box{box-sizing:border-box}.m0{margin:0}.mt0{margin-top:0}.mr0{margin-right:0}.mb0{margin-bottom:0}.ml0{margin-left:0}.mx0{margin-right:0;margin-left:0}.my0{margin-top:0;margin-bottom:0}.m1{margin:.5rem}.mt1{margin-top:.5rem}.mr1{margin-right:.5rem}.mb1{margin-bottom:.5rem}.ml1{margin-left:.5rem}.mx1{margin-right:.5rem;margin-left:.5rem}.my1{margin-top:.5rem;margin-bottom:.5rem}.m2{margin:1rem}.mt2{margin-top:1rem}.mr2{margin-right:1rem}.mb2{margin-bottom:1rem}.ml2{margin-left:1rem}.mx2{margin-right:1rem;margin-left:1rem}.my2{margin-top:1rem;margin-bottom:1rem}.m3{margin:2rem}.mt3{margin-top:2rem}.mr3{margin-right:2rem}.mb3{margin-bottom:2rem}.ml3{margin-left:2rem}.mx3{margin-right:2rem;margin-left:2rem}.my3{margin-top:2rem;margin-bottom:2rem}.m4{margin:4rem}.mt4{margin-top:4rem}.mr4{margin-right:4rem}.mb4{margin-bottom:4rem}.ml4{margin-left:4rem}.mx4{margin-right:4rem;margin-left:4rem}.my4{margin-top:4rem;margin-bottom:4rem}.mxn1{margin-right:-.5rem;margin-left:-.5rem}.mxn2{margin-right:-1rem;margin-left:-1rem}.mxn3{margin-right:-2rem;margin-left:-2rem}.mxn4{margin-right:-4rem;margin-left:-4rem}.ml-auto{margin-left:auto}.mr-auto{margin-right:auto}.mx-auto{margin-right:auto;margin-left:auto}.p0{padding:0}.pt0{padding-top:0}.pr0{padding-right:0}.pb0{padding-bottom:0}.pl0{padding-left:0}.px0{padding-right:0;padding-left:0}.py0{padding-top:0;padding-bottom:0}.p1{padding:.5rem}.pt1{padding-top:.5rem}.pr1{padding-right:.5rem}.pb1{padding-bottom:.5rem}.pl1{padding-left:.5rem}.py1{padding-top:.5rem;padding-bottom:.5rem}.px1{padding-right:.5rem;padding-left:.5rem}.p2{padding:1rem}.pt2{padding-top:1rem}.pr2{padding-right:1rem}.pb2{padding-bottom:1rem}.pl2{padding-left:1rem}.py2{padding-top:1rem;padding-bottom:1rem}.px2{padding-right:1rem;padding-left:1rem}.p3{padding:2rem}.pt3{padding-top:2rem}.pr3{padding-right:2rem}.pb3{padding-bottom:2rem}.pl3{padding-left:2rem}.py3{padding-top:2rem;padding-bottom:2rem}.px3{padding-right:2rem;padding-left:2rem}.p4{padding:4rem}.pt4{padding-top:4rem}.pr4{padding-right:4rem}.pb4{padding-bottom:4rem}.pl4{padding-left:4rem}.py4{padding-top:4rem;padding-bottom:4rem}.px4{padding-right:4rem;padding-left:4rem}h1,.h1{display:block;margin-top:3rem;margin-bottom:1rem;color:#2bbc8a;letter-spacing:.01em;font-weight:700;font-style:normal;font-size:1.5em;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}h2,.h2{position:relative;display:block;margin-top:2rem;margin-bottom:.5rem;color:#383838;text-transform:none;letter-spacing:normal;font-weight:bold;font-size:1rem}h3{color:#383838;text-decoration:underline;font-weight:bold;font-size:.9rem}h4 h5 h6{display:inline;text-decoration:none;color:#8c8c8c;font-weight:bold;font-size:.9rem}h3 h4 h5 h6{margin-top:.9rem;margin-bottom:.5rem}hr{border:0.5px dashed #8c8c8c;opacity:.5;margin:0;margin-top:20px;margin-bottom:20px}strong{font-weight:bold}em cite{font-style:italic}sup sub{position:relative;vertical-align:baseline;font-size:.75em;line-height:0}sup{top:-.5em}sub{bottom:-.2em}small{font-size:.85em}acronym abbr{border-bottom:1px dotted}ul ol dl{line-height:1.725}ul ul,ol ul,ul ol,ol ol{margin-top:0;margin-bottom:0}ol{list-style:decimal}dt{font-weight:bold}table{width:100%;border-collapse:collapse;text-align:left;font-size:12px;overflow:auto;display:block}th{padding:8px;border-bottom:1px dashed #666;color:#383838;font-weight:bold;font-size:13px}td{padding:0 8px;border-bottom:none}@font-face{font-style:normal;font-family:"JetBrains Mono";font-display:swap;src:local("JetBrains Mono"),local("JetBrains-Mono"),url("../lib/JetBrainsMono/web/woff2/JetBrainsMono-Regular.woff2") format("woff2"),url("../lib/JetBrainsMono/web/woff/JetBrainsMono-Regular.woff") format("woff"),url("../lib/JetBrainsMono/web/eot/JetBrainsMono-Regular.eot") format("embedded-opentype"),url("../lib/JetBrainsMono/ttf/JetBrainsMono-Regular.ttf") format("truetype")}*,*:before,*:after{box-sizing:border-box}html{margin:0;padding:0;height:100%;border-top:2px solid #383838;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0;height:100%;background-color:#fff;color:#383838;font-display:swap;font-weight:400;font-size:14px;font-family:"JetBrains Mono",monospace;line-height:1.725;text-rendering:geometricPrecision;flex:1;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}.content{position:relative;display:flex;flex-direction:column;min-height:100%;overflow-wrap:break-word}.content p{hyphens:auto;-moz-hyphens:auto;-ms-hyphens:auto;-webkit-hyphens:auto}.content code{hyphens:manual;-moz-hyphens:manual;-ms-hyphens:manual;-webkit-hyphens:manual}.content a{color:#383838;text-decoration:none;background-image:linear-gradient(transparent, transparent 5px, #383838 5px, #383838);background-position:bottom;background-size:100% 6px;background-repeat:repeat-x}.content a:hover{background-image:linear-gradient(transparent, transparent 4px, #d480aa 4px, #d480aa)}.content a.icon{background:none}.content a.icon:hover{color:#d480aa}.content h1 a,.content .h1 a,.content h2 a,.content h3 a,.content h4 a,.content h5 a,.content h6 a{background:none;color:inherit;text-decoration:none}.content h1 a:hover,.content .h1 a:hover,.content h2 a:hover,.content h3 a:hover,.content h4 a:hover,.content h5 a:hover,.content h6 a:hover{background-image:linear-gradient(transparent, transparent 6px, #d480aa 6px, #d480aa);background-position:bottom;background-size:100% 6px;background-repeat:repeat-x}.content h6 a{background:none;color:inherit;text-decoration:none}.content h6 a:hover{background-image:linear-gradient(transparent, transparent 6px, #d480aa 6px, #d480aa);background-position:bottom;background-size:100% 6px;background-repeat:repeat-x}@media (min-width: 540px){.image-wrap{flex-direction:row;margin-bottom:2rem}.image-wrap .image-block{flex:1 0 35%;margin-right:2rem}.image-wrap p{flex:1 0 65%}}.max-width{max-width:48rem}@media (max-width: 480px){.px3{padding-right:1rem;padding-left:1rem}.my4{margin-top:2rem;margin-bottom:2rem}}@media (min-width: 480px){p{text-align:justify}}#header{margin:0 auto 2rem;width:100%}#header h1,#header .h1{margin-top:0;margin-bottom:0;color:#383838;letter-spacing:.01em;font-weight:700;font-style:normal;font-size:1.5rem;line-height:2rem;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}#header a{background:none;color:inherit;text-decoration:none}#header #logo{display:inline-block;float:left;margin-right:20px;width:50px;height:50px;border-radius:5px;background-size:50px 50px;background-repeat:no-repeat;filter:grayscale(100%);-webkit-filter:grayscale(100%)}#header #nav{color:#2bbc8a;letter-spacing:.01em;font-weight:200;font-style:normal;font-size:.8rem}#header #nav ul{margin:0;padding:0;list-style-type:none;line-height:15px}#header #nav ul a{margin-right:15px;color:#2bbc8a}#header #nav ul a:hover{background-image:linear-gradient(transparent, transparent 5px, #2bbc8a 5px, #2bbc8a);background-position:bottom;background-size:100% 6px;background-repeat:repeat-x}#header #nav ul li{display:inline-block;margin-right:15px;border-right:1px dotted;border-color:#2bbc8a;vertical-align:middle}#header #nav ul .icon{display:none}#header #nav ul li:last-child{margin-right:0;border-right:0}#header #nav ul li:last-child a{margin-right:0}#header:hover #logo{filter:none;-webkit-filter:none}@media screen and (max-width: 480px){#header #title{display:table;margin-right:5rem;min-height:50px}#header #title h1{display:table-cell;vertical-align:middle}#header #nav ul a:hover{background:none}#header #nav ul li{display:none;border-right:0}#header #nav ul li.icon{position:absolute;top:77px;right:1rem;display:inline-block}#header #nav ul.responsive li{display:block}#header #nav li:not(:first-child){padding-top:1rem;padding-left:70px;font-size:1rem}}#header-post{position:fixed;top:2rem;right:0;display:inline-block;float:right;z-index:100}#header-post a{background:none;color:inherit;text-decoration:none}#header-post a.icon{background:none}#header-post a.icon:hover{color:#d480aa}#header-post nav ul{display:block;list-style-image:none;list-style-position:outside;list-style-type:none;padding-inline-start:40px}#header-post nav ul li{display:list-item;margin-right:0px}#header-post nav>ul{margin-block-end:1em;margin-block-start:1em}#header-post ul{display:inline-block;margin:0;padding:0;list-style-type:none}#header-post ul li{display:inline-block;margin-right:15px;vertical-align:middle}#header-post ul li:last-child{margin-right:0}#header-post #menu-icon{float:right;margin-right:2rem;margin-left:15px}#header-post #menu-icon:hover{color:#2bbc8a}#header-post #menu-icon-tablet{float:right;margin-right:2rem;margin-left:15px}#header-post #menu-icon-tablet:hover{color:#2bbc8a}#header-post #top-icon-tablet{position:fixed;right:2rem;bottom:2rem;margin-right:2rem;margin-left:15px}#header-post #top-icon-tablet:hover{color:#2bbc8a}#header-post .active{color:#2bbc8a}#header-post #menu{visibility:hidden;margin-right:2rem}#header-post #nav{color:#2bbc8a;letter-spacing:.01em;font-weight:200;font-style:normal;font-size:.8rem}#header-post #nav ul{line-height:15px}#header-post #nav ul a{margin-right:15px;color:#2bbc8a}#header-post #nav ul a:hover{background-image:linear-gradient(transparent, transparent 5px, #2bbc8a 5px, #2bbc8a);background-position:bottom;background-size:100% 6px;background-repeat:repeat-x}#header-post #nav ul li{border-right:1px dotted #2bbc8a}#header-post #nav ul li:last-child{margin-right:0;border-right:0}#header-post #nav ul li:last-child a{margin-right:0}#header-post #actions{float:right;margin-top:2rem;margin-right:2rem;width:100%;text-align:right}#header-post #actions ul{display:block}#header-post #actions .info{display:block;font-style:italic}#header-post #share{clear:both;padding-top:1rem;padding-right:2rem;text-align:right}#header-post #share li{display:block;margin:0}#header-post #toc{float:right;clear:both;overflow:auto;margin-top:1rem;padding-right:2rem;max-width:20em;max-height:calc(95vh - 7rem);text-align:right}#header-post #toc a:hover{color:#d480aa}#header-post #toc nav>ul>li{color:#383838;font-size:.8rem}#header-post #toc nav>ul>li:before{color:#2bbc8a;content:"#";margin-right:8px}#header-post #toc nav>ul>li>ul>li{color:#666;font-size:.7rem}#header-post #toc nav>ul>li>ul>li:before{color:#2bbc8a;content:"·";font-weight:bold;margin-right:3px}#header-post #toc nav>ul>li>ul>li>ul>li{color:#333;font-size:.4rem}#header-post #toc .toc-level-5{display:none}#header-post #toc .toc-level-6{display:none}#header-post #toc .toc-number{display:none}@media screen and (max-width: 500px){#header-post{display:none}}@media screen and (max-width: 900px){#header-post #menu-icon{display:none}#header-post #actions{display:none}}@media screen and (max-width: 1199px){#header-post #toc{display:none}}@media screen and (min-width: 900px){#header-post #menu-icon-tablet{display:none !important}#header-post #top-icon-tablet{display:none !important}}@media screen and (min-width: 1199px){#header-post #actions{width:auto}#header-post #actions ul{display:inline-block;float:right}#header-post #actions .info{display:inline;float:left;margin-right:2rem;font-style:italic}}#footer-post{position:fixed;right:0;bottom:0;left:0;z-index:5000000;width:100%;border-top:1px solid #666;background:#fafafa;transition:opacity .2s}#footer-post a{background:none;color:inherit;text-decoration:none}#footer-post a.icon{background:none}#footer-post a.icon:hover{color:#d480aa}#footer-post #nav-footer{padding-right:1rem;padding-left:1rem;background:#e6e6e6;text-align:center}#footer-post #nav-footer a{color:#2bbc8a;font-size:1em}#footer-post #nav-footer a:hover{background-image:linear-gradient(transparent, transparent 5px, #2bbc8a 5px, #2bbc8a);background-position:bottom;background-size:100% 6px;background-repeat:repeat-x}#footer-post #nav-footer ul{display:table;margin:0;padding:0;width:100%;list-style-type:none}#footer-post #nav-footer ul li{display:inline-table;padding:10px;width:20%;vertical-align:middle}#footer-post #actions-footer{overflow:auto;margin-top:1rem;margin-bottom:1rem;padding-right:1rem;padding-left:1rem;width:100%;text-align:center;white-space:nowrap}#footer-post #actions-footer a{display:inline-block;padding-left:1rem;color:#2bbc8a}#footer-post #share-footer{padding-right:1rem;padding-left:1rem;background:#e6e6e6;text-align:center}#footer-post #share-footer ul{display:table;margin:0;padding:0;width:100%;list-style-type:none}#footer-post #share-footer ul li{display:inline-table;padding:10px;width:20%;vertical-align:middle}#footer-post #toc-footer{clear:both;padding-top:1rem;padding-bottom:1rem;background:#e6e6e6;text-align:left}#footer-post #toc-footer #TableOfContents ul{margin:0;padding-left:20px;list-style-type:none}#footer-post #toc-footer #TableOfContents ul li{line-height:30px}#footer-post #toc-footer a:hover{color:#d480aa}#footer-post #toc-footer #TableOfContents>ul>li{color:#383838;font-size:.8rem}#footer-post #toc-footer #TableOfContents>ul>li:before{color:#2bbc8a;content:"#";margin-right:8px}#footer-post #toc-footer #TableOfContents>ul>li>ul>li{color:#666;font-size:.7rem;line-height:15px}#footer-post #toc-footer #TableOfContents>ul>li>ul>li:before{color:#2bbc8a;content:"·";font-weight:bold;margin-right:3px}#footer-post #toc-footer #TableOfContents>ul>li>ul>li>ul>li{display:none}@media screen and (min-width: 500px){#footer-post-container{display:none}}.post-list{padding:0}.post-list .post-item{margin-bottom:1rem;margin-left:0;list-style-type:none}.post-list .post-item .meta{display:block;margin-right:16px;min-width:100px;color:#666;font-size:14px}@media (min-width: 480px){.post-list .post-item{display:flex;margin-bottom:5px}.post-list .post-item .meta{text-align:left}}.project-list{padding:0;list-style:none}.project-list .project-item{margin-bottom:5px}.project-list .project-item p{display:inline}article header .posttitle{margin-top:0;margin-bottom:0;text-transform:none;font-size:1.5em;line-height:1.25}article header .meta{margin-top:0;margin-bottom:1rem}article header .meta *{color:#8c8c8c;font-size:.85rem}article header .author{text-transform:uppercase;letter-spacing:.01em;font-weight:700}article header .postdate{display:inline}article .content h2:before{position:absolute;top:-4px;left:-1rem;color:#2bbc8a;content:"#";font-weight:bold;font-size:1.2rem}article .content img,article .content video{display:block;margin:auto;max-width:100%;height:auto}article .content img .video-container,article .content video .video-container{position:relative;overflow:hidden;padding-top:56.25% e;height:0}article .content img .video-container iframe,article .content img .video-container object,article .content img .video-container embed,article .content video .video-container iframe,article .content video .video-container object,article .content video .video-container embed{position:absolute;top:0;left:0;margin-top:0;width:100%;height:100%}article .content img blockquote,article .content video blockquote{margin:1rem 10px;padding:.5em 10px;background:inherit;color:#2bbc8a;quotes:"\201C" "\201D" "\2018" "\2019";font-weight:bold}article .content img blockquote p,article .content video blockquote p{margin:0}article .content img blockquote:before,article .content video blockquote:before{margin-right:.25em;color:#2bbc8a;content:"\201C";vertical-align:-.4em;font-size:2em;line-height:.1em}article .content img blockquote footer,article .content video blockquote footer{margin:line-height 0;color:#666;font-size:11px}article .content img blockquote footer a,article .content video blockquote footer a{background-image:linear-gradient(transparent, transparent 5px, #666 5px, #666);color:#666}article .content img blockquote footer a:hover,article .content video blockquote footer a:hover{background-image:linear-gradient(transparent, transparent 4px, #999 4px, #999);color:#999}article .content img blockquote footer cite:before,article .content video blockquote footer cite:before{padding:0 .5em;content:"—"}article .content img .pullquote,article .content video .pullquote{margin:0;width:45%;text-align:left}article .content img .pullquote.left,article .content video .pullquote.left{margin-right:1em;margin-left:.5em}article .content img .pullquote.right,article .content video .pullquote.right{margin-right:.5em;margin-left:1em}article .content img .caption,article .content video .caption{position:relative;display:block;margin-top:.5em;color:#666;text-align:center;font-size:.9em}.posttitle{text-transform:none;font-size:1.5em;line-height:1.25}.article-tag .tag-link:before{content:"#";background-image:linear-gradient(transparent, transparent 10px, #d480aa 10px, #d480aa);background-position:bottom;background-size:100% 6px;background-repeat:repeat-x}.article-category .category-link{background-image:linear-gradient(transparent, transparent 10px, #d480aa 10px, #d480aa);background-position:bottom;background-size:100% 6px;background-repeat:repeat-x}@media (min-width: 480px){.article-read-time,.article-tag,.article-category{display:inline}.article-read-time:before,.article-tag:before,.article-category:before{content:"|"}}#archive .post-list{padding:0}#archive .post-list .post-item{margin-bottom:1rem;margin-left:0;list-style-type:none}#archive .post-list .post-item .meta{display:block;margin-right:16px;min-width:100px;color:#666;font-size:14px}@media (min-width: 480px){#archive .post-list .post-item{display:flex;margin-bottom:5px;margin-left:1rem}#archive .post-list .post-item .meta{text-align:left}}.blog-post-comments{margin-top:4rem}#footer{position:absolute;bottom:0;margin-bottom:10px;width:100%;color:#666;vertical-align:top;text-align:center;font-size:11px}#footer ul{margin:0;padding:0;list-style:none}#footer li{display:inline-block;margin-right:15px;border-right:1px solid;border-color:#666;vertical-align:middle}#footer li a{margin-right:15px}#footer li:last-child{margin-right:0;border-right:0}#footer li:last-child a{margin-right:0}#footer a{color:#666;text-decoration:underline;background-image:none}#footer a:hover{color:#999}#footer .footer-left{height:20px;vertical-align:middle;line-height:20px}@media (min-width: 39rem){#footer{display:flex;flex-flow:row wrap;justify-content:space-between;align-items:center;align-content:center;margin-bottom:20px}#footer .footer-left{align-self:flex-start;margin-right:20px}#footer .footer-right{align-self:flex-end}}.pagination{display:inline-block;margin-top:2rem;width:100%;text-align:center}.pagination .page-number{color:#383838;font-size:.8rem}.pagination a{padding:4px 6px;border-radius:5px;background-image:none;color:#383838;text-decoration:none}.pagination a:hover{background-image:none}.pagination a:hover:not(.active){color:#383838}.search-input{padding:4px 7px;width:100%;outline:none;border:solid 1px #8c8c8c;border-radius:5px;background-color:#fff;color:#383838;font-size:1.2rem;-webkit-border-radius:5px;-moz-border-radius:5px}.search-input:focus{border:solid 1px #2bbc8a}#search-result ul.search-result-list{padding:0;list-style-type:none}#search-result li{margin:2em auto}#search-result a.search-result-title{background-image:none;color:#383838;text-transform:capitalize;font-weight:bold;line-height:1.2}#search-result p.search-result{overflow:hidden;margin:.4em auto;max-height:13em;text-align:justify;font-size:.8em}#search-result em.search-keyword{border-bottom:1px dashed #d480aa;color:#d480aa;font-weight:bold}.search-no-result{display:none;padding-bottom:.5em;color:#383838}#tag-cloud .tag-cloud-title{color:#666}#tag-cloud .tag-cloud-tags{clear:both;text-align:center}#tag-cloud .tag-cloud-tags a{display:inline-block;margin:10px}.tooltipped{position:relative}.tooltipped::after{position:absolute;z-index:1000000;display:none;padding:.2em .5em;-webkit-font-smoothing:subpixel-antialiased;color:#fff;font-display:swap;font-weight:400;font-size:11.2px;font-family:"JetBrains Mono",monospace;line-height:1.725;text-rendering:geometricPrecision;text-align:center;word-wrap:break-word;white-space:pre;content:attr(aria-label);background:#383838;border-radius:3px;opacity:0}.tooltipped::before{position:absolute;z-index:1000001;display:none;width:0;height:0;color:#383838;pointer-events:none;content:'';border:6px solid transparent;opacity:0}@keyframes tooltip-appear{from{opacity:0}to{opacity:1}}.tooltipped:hover::before,.tooltipped:hover::after,.tooltipped:active::before,.tooltipped:active::after,.tooltipped:focus::before,.tooltipped:focus::after{display:inline-block;text-decoration:none;animation-name:tooltip-appear;animation-duration:0.1s;animation-fill-mode:forwards;animation-timing-function:ease-in}.tooltipped-s::after,.tooltipped-sw::after{top:100%;right:50%;margin-top:6px}.tooltipped-s::before,.tooltipped-sw::before{top:auto;right:50%;bottom:-7px;margin-right:-6px;border-bottom-color:#383838}.tooltipped-sw::after{margin-right:-16px}.tooltipped-s::after{transform:translateX(50%)}#categories .category-list-title{color:#666}#categories .category-list .category-list-item .category-list-count{color:#666}#categories .category-list .category-list-item .category-list-count:before{content:" ("}#categories .category-list .category-list-item .category-list-count:after{content:")"}pre{overflow-x:auto;padding:15px 15px 10px 15px;border:1px dotted #666;border-radius:2px;-webkit-border-radius:2px;font-size:13px;font-family:"JetBrains Mono",monospace;line-height:22px;position:relative}pre .code-copy-btn{position:absolute;top:0;right:0;border:0;border-radius:0 2px;padding:0;font-family:"JetBrains Mono", monospace;font-weight:800;font-size:0.9em;line-height:1.7;color:#fff;background-color:#8c8c8c;min-width:60px;text-align:center;cursor:pointer;letter-spacing:0em}pre .code-copy-btn:hover{background-color:#666;color:#2bbc8a}pre code{display:block;padding:0;border:none}code{font-family:"JetBrains Mono",monospace;padding:0 5px;border:1px dotted #666;border-radius:2px;-webkit-border-radius:2px}.highlight>div{border-radius:2px;-webkit-border-radius:2px}.highlight pre{border:none;background:none}.highlight table pre{margin-top:0}.highlight table td:first-child pre{padding-right:0}.highlight table td:last-child pre{padding-left:0} + +/*# sourceMappingURL=styles.css.map */ \ No newline at end of file diff --git a/public/css/styles.css.map b/public/css/styles.css.map new file mode 100644 index 0000000..43b7e9c --- /dev/null +++ b/public/css/styles.css.map @@ -0,0 +1,51 @@ +{ + "version": 3, + "file": "styles.css", + "sourceRoot": "C:/Users/Basit/Desktop/Me/personal-blog", + "sources": [ + "themes/cactus/assets/scss/style.scss", + "themes/cactus/assets/scss/_variables.scss", + "themes/cactus/assets/scss/colors/white.scss", + "themes/cactus/assets/scss/_util.scss", + "themes/cactus/assets/scss/_mixins.scss", + "themes/cactus/assets/scss/_extend.scss", + "themes/cactus/assets/scss/_fonts.scss", + "themes/cactus/assets/scss/partial/header.scss", + "themes/cactus/assets/scss/partial/post/actions_desktop.scss", + "themes/cactus/assets/scss/partial/post/actions_mobile.scss", + "themes/cactus/assets/scss/partial/index.scss", + "themes/cactus/assets/scss/partial/article.scss", + "themes/cactus/assets/scss/partial/archive.scss", + "themes/cactus/assets/scss/partial/comments.scss", + "themes/cactus/assets/scss/partial/footer.scss", + "themes/cactus/assets/scss/partial/pagination.scss", + "themes/cactus/assets/scss/partial/search.scss", + "themes/cactus/assets/scss/partial/tags.scss", + "themes/cactus/assets/scss/partial/tooltip.scss", + "themes/cactus/assets/scss/partial/categories.scss" + ], + "sourcesContent": [ + "@import \"variables\";\r\n@import \"colors/white\";\r\n@import \"util\";\r\n@import \"mixins\";\r\n@import \"extend\";\r\n@import \"fonts\";\r\n\r\n// global-reset()\r\n\r\n*,\r\n*:before,\r\n*:after {\r\n box-sizing: border-box;\r\n}\r\nhtml {\r\n margin: 0;\r\n padding: 0;\r\n height: 100%;\r\n border-top: 2px solid $color-text;\r\n -webkit-text-size-adjust: 100%;\r\n -ms-text-size-adjust: 100%;\r\n}\r\nbody {\r\n margin: 0;\r\n height: 100%;\r\n background-color: $color-background;\r\n color: $color-text;\r\n font-display: swap;\r\n font-weight: 400;\r\n font-size: $font-size;\r\n font-family: $font-family-body;\r\n line-height: $line-height;\r\n text-rendering: geometricPrecision;\r\n flex: 1;\r\n\r\n @include antialias();\r\n\r\n @extend $base-style !optional;\r\n}\r\n.content {\r\n position: relative;\r\n display: flex;\r\n flex-direction: column;\r\n min-height: 100%;\r\n overflow-wrap: break-word;\r\n\r\n p {\r\n @include hyphens(auto);\r\n }\r\n code {\r\n @include hyphens(manual);\r\n }\r\n a {\r\n color: $color-text;\r\n text-decoration: none;\r\n\r\n @include underline(5px, $color-text);\r\n\r\n &:hover {\r\n background-image: linear-gradient(transparent, transparent 4px, $color-link 4px, $color-link);\r\n }\r\n }\r\n a.icon {\r\n background: none;\r\n\r\n &:hover {\r\n color: $color-link;\r\n }\r\n }\r\n h1 a,\r\n .h1 a,\r\n h2 a,\r\n h3 a,\r\n h4 a,\r\n h5 a,\r\n h6 a {\r\n background: none;\r\n color: inherit;\r\n text-decoration: none;\r\n }\r\n h1 a:hover,\r\n .h1 a:hover,\r\n h2 a:hover,\r\n h3 a:hover,\r\n h4 a:hover,\r\n h5 a:hover,\r\n h6 a:hover {\r\n @include underline(6px, $color-link);\r\n }\r\n h6 {\r\n a {\r\n background: none;\r\n color: inherit;\r\n text-decoration: none;\r\n }\r\n }\r\n h6 {\r\n a:hover {\r\n @include underline(6px, $color-link);\r\n }\r\n }\r\n}\r\n@media (min-width: 540px) {\r\n .image-wrap {\r\n flex-direction: row;\r\n margin-bottom: 2rem;\r\n\r\n .image-block {\r\n flex: 1 0 35%;\r\n margin-right: 2rem;\r\n }\r\n p {\r\n flex: 1 0 65%;\r\n }\r\n }\r\n}\r\n.max-width {\r\n max-width: $page-width;\r\n}\r\n@media (max-width: 480px) { // smaller margins at smaller screen widths\r\n .px3 {\r\n padding-right: 1rem;\r\n padding-left: 1rem;\r\n }\r\n .my4 {\r\n margin-top: 2rem;\r\n margin-bottom: 2rem;\r\n }\r\n}\r\n\r\n@media (min-width: 480px) {\r\n p {\r\n text-align: justify;\r\n }\r\n}\r\n\r\n@import \"partial/header\";\r\n@import \"partial/post/actions_desktop\";\r\n@import \"partial/post/actions_mobile\";\r\n@import \"partial/index\";\r\n@import \"partial/article\";\r\n@import \"partial/archive\";\r\n@import \"partial/comments\";\r\n@import \"partial/footer\";\r\n@import \"partial/pagination\";\r\n@import \"partial/search\";\r\n@import \"partial/tags\";\r\n@import \"partial/tooltip\";\r\n@import \"partial/categories\";\r\n\r\npre {\r\n overflow-x: auto;\r\n padding: 15px 15px 10px 15px;\r\n border: 1px dotted $color-border;\r\n border-radius: 2px;\r\n -webkit-border-radius: 2px;\r\n font-size: 13px;\r\n font-family: $font-family-mono;\r\n line-height: 22px;\r\n position: relative;\r\n\r\n .code-copy-btn {\r\n position: absolute;\r\n top: 0;\r\n right: 0;\r\n border: 0;\r\n border-radius: 0 2px;\r\n padding: 0;\r\n font-family: \"JetBrains Mono\", monospace;\r\n font-weight: 800;\r\n font-size: 0.9em;\r\n line-height: 1.7;\r\n color: #fff;\r\n background-color: #8c8c8c;\r\n min-width: 60px;\r\n text-align: center;\r\n cursor: pointer;\r\n letter-spacing: 0em;\r\n }\r\n\r\n .code-copy-btn:hover {\r\n background-color: #666;\r\n color: #2bbc8a;\r\n }\r\n\r\n code {\r\n display: block;\r\n padding: 0;\r\n border: none;\r\n }\r\n}\r\n\r\ncode {\r\n font-family: $font-family-mono;\r\n padding: 0 5px;\r\n border: 1px dotted $color-border;\r\n border-radius: 2px;\r\n -webkit-border-radius: 2px;\r\n}\r\n\r\n.highlight {\r\n\r\n & > div {\r\n border-radius: 2px;\r\n -webkit-border-radius: 2px;\r\n }\r\n\r\n pre {\r\n border: none;\r\n background: none;\r\n }\r\n\r\n table {\r\n\r\n pre {\r\n margin-top: 0;\r\n }\r\n\r\n td:first-child {\r\n pre {\r\n padding-right: 0;\r\n }\r\n }\r\n\r\n td:last-child {\r\n pre {\r\n padding-left: 0;\r\n }\r\n }\r\n }\r\n}", + "// Fonts\r\n$font-family-body: \"JetBrains Mono\", monospace;\r\n$font-family-mono: \"JetBrains Mono\", monospace;\r\n$font-family-tt: \"Inconsolata\", monospace;\r\n$font-size: 14px;\r\n$line-height: 1.725;\r\n$page-width: 48rem;\r\n// Logo\r\n$logo-width: 50px;\r\n$logo-height: 50px;\r\n$logo-grayout: true;\r\n// Colors\r\n$colors: \"dark\" // white dark light classic", + "// by @sergodeeva (https://github.com/sergodeeva)\r\n$color-background: #FFFFFF;\r\n$color-footer-mobile-1: darken($color-background, 2%);\r\n$color-footer-mobile-2: darken($color-background, 10%);\r\n$color-background-code: darken($color-background, 2%);\r\n$color-border: #666;\r\n$color-meta: #666;\r\n$color-meta-code: lighten($color-meta, 10%);\r\n$color-link: rgba(212, 128, 170, 1);\r\n$color-text: #383838;\r\n$color-accent-3: #8c8c8c;\r\n$color-accent-2: #383838;\r\n$color-accent-1: #2bbc8a;\r\n$color-quote: #2bbc8a;", + "/* Basscss */\r\n.inline {\r\n display: inline;\r\n}\r\n.block {\r\n display: block;\r\n}\r\n.inline-block {\r\n display: inline-block;\r\n}\r\n.table {\r\n display: table;\r\n}\r\n.table-cell {\r\n display: table-cell;\r\n}\r\n.overflow-hidden {\r\n overflow: hidden;\r\n}\r\n.overflow-scroll {\r\n overflow: scroll;\r\n}\r\n.overflow-auto {\r\n overflow: auto;\r\n}\r\n.clearfix:before,\r\n.clearfix:after {\r\n display: table;\r\n content: \" \";\r\n}\r\n.clearfix:after {\r\n clear: both;\r\n}\r\n.left {\r\n float: left;\r\n}\r\n.right {\r\n float: right;\r\n}\r\n.fit {\r\n max-width: 100%;\r\n}\r\n.truncate {\r\n display: inline-block;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n}\r\n.max-width-1 {\r\n max-width: 24rem;\r\n}\r\n.max-width-2 {\r\n max-width: 32rem;\r\n}\r\n.max-width-3 {\r\n max-width: 48rem;\r\n}\r\n.max-width-4 {\r\n max-width: 64rem;\r\n}\r\n.border-box {\r\n box-sizing: border-box;\r\n}\r\n.m0 {\r\n margin: 0;\r\n}\r\n.mt0 {\r\n margin-top: 0;\r\n}\r\n.mr0 {\r\n margin-right: 0;\r\n}\r\n.mb0 {\r\n margin-bottom: 0;\r\n}\r\n.ml0 {\r\n margin-left: 0;\r\n}\r\n.mx0 {\r\n margin-right: 0;\r\n margin-left: 0;\r\n}\r\n.my0 {\r\n margin-top: 0;\r\n margin-bottom: 0;\r\n}\r\n.m1 {\r\n margin: .5rem;\r\n}\r\n.mt1 {\r\n margin-top: .5rem;\r\n}\r\n.mr1 {\r\n margin-right: .5rem;\r\n}\r\n.mb1 {\r\n margin-bottom: .5rem;\r\n}\r\n.ml1 {\r\n margin-left: .5rem;\r\n}\r\n.mx1 {\r\n margin-right: .5rem;\r\n margin-left: .5rem;\r\n}\r\n.my1 {\r\n margin-top: .5rem;\r\n margin-bottom: .5rem;\r\n}\r\n.m2 {\r\n margin: 1rem;\r\n}\r\n.mt2 {\r\n margin-top: 1rem;\r\n}\r\n.mr2 {\r\n margin-right: 1rem;\r\n}\r\n.mb2 {\r\n margin-bottom: 1rem;\r\n}\r\n.ml2 {\r\n margin-left: 1rem;\r\n}\r\n.mx2 {\r\n margin-right: 1rem;\r\n margin-left: 1rem;\r\n}\r\n.my2 {\r\n margin-top: 1rem;\r\n margin-bottom: 1rem;\r\n}\r\n.m3 {\r\n margin: 2rem;\r\n}\r\n.mt3 {\r\n margin-top: 2rem;\r\n}\r\n.mr3 {\r\n margin-right: 2rem;\r\n}\r\n.mb3 {\r\n margin-bottom: 2rem;\r\n}\r\n.ml3 {\r\n margin-left: 2rem;\r\n}\r\n.mx3 {\r\n margin-right: 2rem;\r\n margin-left: 2rem;\r\n}\r\n.my3 {\r\n margin-top: 2rem;\r\n margin-bottom: 2rem;\r\n}\r\n.m4 {\r\n margin: 4rem;\r\n}\r\n.mt4 {\r\n margin-top: 4rem;\r\n}\r\n.mr4 {\r\n margin-right: 4rem;\r\n}\r\n.mb4 {\r\n margin-bottom: 4rem;\r\n}\r\n.ml4 {\r\n margin-left: 4rem;\r\n}\r\n.mx4 {\r\n margin-right: 4rem;\r\n margin-left: 4rem;\r\n}\r\n.my4 {\r\n margin-top: 4rem;\r\n margin-bottom: 4rem;\r\n}\r\n.mxn1 {\r\n margin-right: -.5rem;\r\n margin-left: -.5rem;\r\n}\r\n.mxn2 {\r\n margin-right: -1rem;\r\n margin-left: -1rem;\r\n}\r\n.mxn3 {\r\n margin-right: -2rem;\r\n margin-left: -2rem;\r\n}\r\n.mxn4 {\r\n margin-right: -4rem;\r\n margin-left: -4rem;\r\n}\r\n.ml-auto {\r\n margin-left: auto;\r\n}\r\n.mr-auto {\r\n margin-right: auto;\r\n}\r\n.mx-auto {\r\n margin-right: auto;\r\n margin-left: auto;\r\n}\r\n.p0 {\r\n padding: 0;\r\n}\r\n.pt0 {\r\n padding-top: 0;\r\n}\r\n.pr0 {\r\n padding-right: 0;\r\n}\r\n.pb0 {\r\n padding-bottom: 0;\r\n}\r\n.pl0 {\r\n padding-left: 0;\r\n}\r\n.px0 {\r\n padding-right: 0;\r\n padding-left: 0;\r\n}\r\n.py0 {\r\n padding-top: 0;\r\n padding-bottom: 0;\r\n}\r\n.p1 {\r\n padding: .5rem;\r\n}\r\n.pt1 {\r\n padding-top: .5rem;\r\n}\r\n.pr1 {\r\n padding-right: .5rem;\r\n}\r\n.pb1 {\r\n padding-bottom: .5rem;\r\n}\r\n.pl1 {\r\n padding-left: .5rem;\r\n}\r\n.py1 {\r\n padding-top: .5rem;\r\n padding-bottom: .5rem;\r\n}\r\n.px1 {\r\n padding-right: .5rem;\r\n padding-left: .5rem;\r\n}\r\n.p2 {\r\n padding: 1rem;\r\n}\r\n.pt2 {\r\n padding-top: 1rem;\r\n}\r\n.pr2 {\r\n padding-right: 1rem;\r\n}\r\n.pb2 {\r\n padding-bottom: 1rem;\r\n}\r\n.pl2 {\r\n padding-left: 1rem;\r\n}\r\n.py2 {\r\n padding-top: 1rem;\r\n padding-bottom: 1rem;\r\n}\r\n.px2 {\r\n padding-right: 1rem;\r\n padding-left: 1rem;\r\n}\r\n.p3 {\r\n padding: 2rem;\r\n}\r\n.pt3 {\r\n padding-top: 2rem;\r\n}\r\n.pr3 {\r\n padding-right: 2rem;\r\n}\r\n.pb3 {\r\n padding-bottom: 2rem;\r\n}\r\n.pl3 {\r\n padding-left: 2rem;\r\n}\r\n.py3 {\r\n padding-top: 2rem;\r\n padding-bottom: 2rem;\r\n}\r\n.px3 {\r\n padding-right: 2rem;\r\n padding-left: 2rem;\r\n}\r\n.p4 {\r\n padding: 4rem;\r\n}\r\n.pt4 {\r\n padding-top: 4rem;\r\n}\r\n.pr4 {\r\n padding-right: 4rem;\r\n}\r\n.pb4 {\r\n padding-bottom: 4rem;\r\n}\r\n.pl4 {\r\n padding-left: 4rem;\r\n}\r\n.py4 {\r\n padding-top: 4rem;\r\n padding-bottom: 4rem;\r\n}\r\n.px4 {\r\n padding-right: 4rem;\r\n padding-left: 4rem;\r\n}", + "@mixin antialias() {\r\n -moz-osx-font-smoothing: grayscale;\r\n -webkit-font-smoothing: antialiased;\r\n}\r\n@mixin hyphens($value) {\r\n hyphens: $value;\r\n -moz-hyphens: $value;\r\n -ms-hyphens: $value;\r\n -webkit-hyphens: $value;\r\n}\r\n@mixin underline($size, $color) {\r\n background-image: linear-gradient(transparent, transparent $size, $color $size, $color);\r\n background-position: bottom;\r\n background-size: 100% 6px;\r\n background-repeat: repeat-x;\r\n}\r\n@mixin no-select() {\r\n user-select: none;\r\n -khtml-user-select: none;\r\n}", + "// $base-style\r\nh1,\r\n.h1 {\r\n display: block;\r\n margin-top: 3rem;\r\n margin-bottom: 1rem;\r\n color: $color-accent-1;\r\n letter-spacing: .01em;\r\n font-weight: 700;\r\n font-style: normal;\r\n font-size: 1.5em;\r\n\r\n @include antialias();\r\n}\r\nh2,\r\n.h2 {\r\n position: relative;\r\n display: block;\r\n margin-top: 2rem;\r\n margin-bottom: .5rem;\r\n color: $color-accent-2;\r\n text-transform: none;\r\n letter-spacing: normal;\r\n font-weight: bold;\r\n font-size: 1rem;\r\n}\r\nh3 {\r\n color: $color-accent-2;\r\n text-decoration: underline;\r\n font-weight: bold;\r\n font-size: .9rem;\r\n}\r\nh4\r\nh5\r\nh6 {\r\n display: inline;\r\n text-decoration: none;\r\n color: $color-accent-3;\r\n font-weight: bold;\r\n font-size: .9rem;\r\n}\r\nh3\r\nh4\r\nh5\r\nh6 {\r\n margin-top: .9rem;\r\n margin-bottom: .5rem;\r\n}\r\nhr {\r\n border: .5px dashed $color-accent-3;\r\n opacity: .5;\r\n margin: 0;\r\n margin-top: 20px;\r\n margin-bottom: 20px;\r\n}\r\nstrong {\r\n font-weight: bold;\r\n}\r\nem\r\ncite {\r\n font-style: italic;\r\n}\r\nsup\r\nsub {\r\n position: relative;\r\n vertical-align: baseline;\r\n font-size: .75em;\r\n line-height: 0;\r\n}\r\nsup {\r\n top: -.5em;\r\n}\r\nsub {\r\n bottom: -.2em;\r\n}\r\nsmall {\r\n font-size: .85em;\r\n}\r\nacronym\r\nabbr {\r\n border-bottom: 1px dotted;\r\n}\r\nul\r\nol\r\ndl {\r\n line-height: $line-height;\r\n}\r\nul ul,\r\nol ul,\r\nul ol,\r\nol ol {\r\n margin-top: 0;\r\n margin-bottom: 0;\r\n}\r\nol {\r\n list-style: decimal;\r\n}\r\ndt {\r\n font-weight: bold;\r\n}\r\ntable {\r\n width: 100%;\r\n border-collapse: collapse;\r\n text-align: left;\r\n font-size: $font-size - 2px;\r\n overflow: auto;\r\n display: block;\r\n}\r\nth {\r\n padding: 8px;\r\n border-bottom: 1px dashed $color-border;\r\n color: $color-accent-2;\r\n font-weight: bold;\r\n font-size: $font-size - 1px;\r\n}\r\ntd {\r\n padding: 0 8px;\r\n border-bottom: none;\r\n}", + "@font-face {\r\n font-style: normal;\r\n font-family: \"JetBrains Mono\";\r\n font-display: swap;\r\n src: local(\"JetBrains Mono\"), local(\"JetBrains-Mono\"), url(\"../lib/JetBrainsMono/web/woff2/JetBrainsMono-Regular.woff2\") format(\"woff2\"), url(\"../lib/JetBrainsMono/web/woff/JetBrainsMono-Regular.woff\") format(\"woff\"), url(\"../lib/JetBrainsMono/web/eot/JetBrainsMono-Regular.eot\") format(\"embedded-opentype\"), url(\"../lib/JetBrainsMono/ttf/JetBrainsMono-Regular.ttf\") format(\"truetype\");\r\n};", + "#header {\r\n margin: 0 auto 2rem;\r\n width: 100%;\r\n\r\n h1,\r\n .h1 {\r\n margin-top: 0;\r\n margin-bottom: 0;\r\n color: $color-text;\r\n letter-spacing: .01em;\r\n font-weight: 700;\r\n font-style: normal;\r\n font-size: 1.5rem;\r\n line-height: 2rem;\r\n\r\n @include antialias();\r\n }\r\n a {\r\n background: none;\r\n color: inherit;\r\n text-decoration: none;\r\n }\r\n #logo {\r\n display: inline-block;\r\n float: left;\r\n margin-right: 20px;\r\n width: $logo-width;\r\n height: $logo-height;\r\n border-radius: 5px;\r\n background-size: $logo-width $logo-height;\r\n background-repeat: no-repeat;\r\n @if $logo-grayout {\r\n filter: grayscale(100%);\r\n -webkit-filter: grayscale(100%);\r\n }\r\n }\r\n #nav {\r\n color: $color-accent-1;\r\n letter-spacing: .01em;\r\n font-weight: 200;\r\n font-style: normal;\r\n font-size: .8rem;\r\n\r\n ul {\r\n margin: 0;\r\n padding: 0;\r\n list-style-type: none;\r\n line-height: 15px;\r\n\r\n a {\r\n margin-right: 15px;\r\n color: $color-accent-1;\r\n }\r\n a:hover {\r\n @include underline(5px, $color-accent-1);\r\n }\r\n li {\r\n display: inline-block;\r\n margin-right: 15px;\r\n border-right: 1px dotted;\r\n border-color: $color-accent-1;\r\n vertical-align: middle;\r\n }\r\n .icon {\r\n display: none;\r\n }\r\n li:last-child {\r\n margin-right: 0;\r\n border-right: 0;\r\n\r\n a {\r\n margin-right: 0;\r\n }\r\n }\r\n }\r\n }\r\n}\r\n@if $logo-grayout {\r\n #header:hover {\r\n #logo {\r\n filter: none;\r\n -webkit-filter: none;\r\n }\r\n }\r\n}\r\n@media screen and (max-width: 480px) {\r\n #header #title {\r\n display: table;\r\n margin-right: 5rem;\r\n min-height: $logo-height;\r\n h1 {\r\n display: table-cell;\r\n vertical-align: middle;\r\n }\r\n }\r\n #header #nav {\r\n ul {\r\n a:hover {\r\n background: none;\r\n }\r\n li {\r\n display: none;\r\n border-right: 0;\r\n }\r\n li.icon {\r\n position: absolute;\r\n top: 77px;\r\n right: 1rem;\r\n display: inline-block;\r\n }\r\n }\r\n ul.responsive {\r\n li {\r\n display: block;\r\n }\r\n }\r\n li:not(:first-child) {\r\n padding-top: 1rem;\r\n padding-left: $logo-width + 20px;\r\n font-size: 1rem;\r\n }\r\n }\r\n};", + "#header-post {\r\n position: fixed;\r\n top: 2rem;\r\n right: 0;\r\n display: inline-block;\r\n float: right;\r\n z-index: 100;\r\n\r\n a {\r\n background: none;\r\n color: inherit;\r\n text-decoration: none;\r\n }\r\n a.icon {\r\n background: none;\r\n\r\n &:hover {\r\n color: $color-link;\r\n }\r\n }\r\n nav {\r\n ul {\r\n display: block;\r\n\r\n list-style-image: none;\r\n\r\n list-style-position: outside;\r\n\r\n list-style-type: none;\r\n\r\n padding-inline-start: 40px;\r\n\r\n li {\r\n display: list-item;\r\n\r\n margin-right: 0px;\r\n }\r\n }\r\n }\r\n nav > ul {\r\n margin-block-end: 1em;\r\n\r\n margin-block-start: 1em;\r\n }\r\n\r\n ul {\r\n display: inline-block;\r\n margin: 0;\r\n padding: 0;\r\n list-style-type: none;\r\n\r\n li {\r\n display: inline-block;\r\n margin-right: 15px;\r\n vertical-align: middle;\r\n }\r\n li:last-child {\r\n margin-right: 0;\r\n }\r\n }\r\n #menu-icon {\r\n float: right;\r\n margin-right: 2rem;\r\n margin-left: 15px;\r\n\r\n &:hover {\r\n color: $color-accent-1;\r\n }\r\n }\r\n #menu-icon-tablet {\r\n float: right;\r\n margin-right: 2rem;\r\n margin-left: 15px;\r\n\r\n &:hover {\r\n color: $color-accent-1;\r\n }\r\n }\r\n #top-icon-tablet {\r\n position: fixed;\r\n right: 2rem;\r\n bottom: 2rem;\r\n margin-right: 2rem;\r\n margin-left: 15px;\r\n\r\n &:hover {\r\n color: $color-accent-1;\r\n }\r\n }\r\n .active {\r\n color: $color-accent-1;\r\n }\r\n #menu {\r\n visibility: hidden;\r\n margin-right: 2rem;\r\n }\r\n #nav {\r\n color: $color-accent-1;\r\n letter-spacing: .01em;\r\n font-weight: 200;\r\n font-style: normal;\r\n font-size: .8rem;\r\n\r\n ul {\r\n line-height: 15px;\r\n\r\n a {\r\n margin-right: 15px;\r\n color: $color-accent-1;\r\n }\r\n a:hover {\r\n @include underline(5px, $color-accent-1);\r\n }\r\n li {\r\n border-right: 1px dotted $color-accent-1;\r\n }\r\n li:last-child {\r\n margin-right: 0;\r\n border-right: 0;\r\n\r\n a {\r\n margin-right: 0;\r\n }\r\n }\r\n }\r\n }\r\n #actions {\r\n float: right;\r\n margin-top: 2rem;\r\n margin-right: 2rem;\r\n width: 100%;\r\n text-align: right;\r\n\r\n ul {\r\n display: block;\r\n }\r\n .info {\r\n display: block;\r\n font-style: italic;\r\n }\r\n }\r\n #share {\r\n clear: both;\r\n padding-top: 1rem;\r\n padding-right: 2rem;\r\n text-align: right;\r\n\r\n li {\r\n display: block;\r\n margin: 0;\r\n }\r\n }\r\n #toc {\r\n float: right;\r\n clear: both;\r\n overflow: auto;\r\n margin-top: 1rem;\r\n padding-right: 2rem;\r\n max-width: 20em;\r\n max-height: calc(95vh - 7rem);\r\n text-align: right;\r\n\r\n a:hover {\r\n color: $color-link;\r\n }\r\n // .toc-level-1 > .toc-link\r\n // display: none\r\n\r\n nav > ul > li {\r\n color: $color-text;\r\n font-size: .8rem;\r\n\r\n &:before {\r\n color: $color-accent-1;\r\n content: \"#\";\r\n margin-right: 8px;\r\n }\r\n }\r\n nav > ul > li > ul > li {\r\n color: $color-meta;\r\n font-size: .7rem;\r\n\r\n &:before {\r\n color: $color-accent-1;\r\n content: \"·\";\r\n font-weight: bold;\r\n margin-right: 3px;\r\n }\r\n }\r\n nav > ul > li > ul > li > ul > li {\r\n color: darken($color-meta, 20%);\r\n font-size: .4rem;\r\n }\r\n .toc-level-5 {\r\n display: none;\r\n }\r\n .toc-level-6 {\r\n display: none;\r\n }\r\n .toc-number {\r\n display: none;\r\n }\r\n// smartphone + phapblet\r\n }\r\n}\r\n@media screen and (max-width: 500px) {\r\n #header-post {\r\n display: none;\r\n }\r\n}\r\n\r\n@media screen and (max-width: 900px) {\r\n #header-post {\r\n #menu-icon {\r\n display: none;\r\n }\r\n #actions {\r\n display: none;\r\n }\r\n }\r\n}\r\n@media screen and (max-width: 1199px) {\r\n #header-post {\r\n #toc {\r\n display: none;\r\n }\r\n }\r\n}\r\n@media screen and (min-width: 900px) {\r\n #header-post {\r\n #menu-icon-tablet {\r\n display: none !important;\r\n }\r\n #top-icon-tablet {\r\n display: none !important;\r\n }\r\n }\r\n}\r\n@media screen and (min-width: 1199px) {\r\n #header-post {\r\n #actions {\r\n width: auto;\r\n\r\n ul {\r\n display: inline-block;\r\n float: right;\r\n }\r\n .info {\r\n display: inline;\r\n float: left;\r\n margin-right: 2rem;\r\n font-style: italic;\r\n }\r\n }\r\n }\r\n};", + "#footer-post {\r\n position: fixed;\r\n right: 0;\r\n bottom: 0;\r\n left: 0;\r\n z-index: 5000000;\r\n width: 100%;\r\n border-top: 1px solid $color-border;\r\n background: $color-footer-mobile-1;\r\n transition: opacity .2s;\r\n\r\n a {\r\n background: none;\r\n color: inherit;\r\n text-decoration: none;\r\n }\r\n a.icon {\r\n background: none;\r\n\r\n &:hover {\r\n color: $color-link;\r\n }\r\n }\r\n #nav-footer {\r\n padding-right: 1rem;\r\n padding-left: 1rem;\r\n background: $color-footer-mobile-2;\r\n text-align: center;\r\n\r\n a {\r\n color: $color-accent-1;\r\n font-size: 1em;\r\n }\r\n a:hover {\r\n @include underline(5px, $color-accent-1);\r\n }\r\n ul {\r\n display: table;\r\n margin: 0;\r\n padding: 0;\r\n width: 100%;\r\n list-style-type: none;\r\n\r\n li {\r\n display: inline-table;\r\n padding: 10px;\r\n width: 20%;\r\n vertical-align: middle;\r\n }\r\n }\r\n }\r\n #actions-footer {\r\n overflow: auto;\r\n margin-top: 1rem;\r\n margin-bottom: 1rem;\r\n padding-right: 1rem;\r\n padding-left: 1rem;\r\n width: 100%;\r\n text-align: center;\r\n white-space: nowrap;\r\n\r\n a {\r\n display: inline-block;\r\n padding-left: 1rem;\r\n color: $color-accent-1;\r\n }\r\n }\r\n #share-footer {\r\n padding-right: 1rem;\r\n padding-left: 1rem;\r\n background: $color-footer-mobile-2;\r\n text-align: center;\r\n\r\n ul {\r\n display: table;\r\n margin: 0;\r\n padding: 0;\r\n width: 100%;\r\n list-style-type: none;\r\n\r\n li {\r\n display: inline-table;\r\n padding: 10px;\r\n width: 20%;\r\n vertical-align: middle;\r\n }\r\n }\r\n }\r\n #toc-footer {\r\n clear: both;\r\n padding-top: 1rem;\r\n padding-bottom: 1rem;\r\n background: $color-footer-mobile-2;\r\n text-align: left;\r\n\r\n #TableOfContents {\r\n ul {\r\n margin: 0;\r\n padding-left: 20px;\r\n list-style-type: none;\r\n\r\n li {\r\n line-height: 30px;\r\n }\r\n }\r\n }\r\n a:hover {\r\n color: $color-link;\r\n }\r\n // .toc-level-1 > .toc-link\r\n // display: none\r\n\r\n #TableOfContents > ul > li {\r\n color: $color-text;\r\n font-size: .8rem;\r\n\r\n &:before {\r\n color: $color-accent-1;\r\n content: \"#\";\r\n margin-right: 8px;\r\n }\r\n }\r\n #TableOfContents > ul > li > ul > li {\r\n color: $color-meta;\r\n font-size: .7rem;\r\n line-height: 15px;\r\n\r\n &:before {\r\n color: $color-accent-1;\r\n content: \"·\";\r\n\r\n font-weight: bold;\r\n\r\n margin-right: 3px;\r\n }\r\n }\r\n #TableOfContents > ul > li > ul > li > ul > li {\r\n display: none;\r\n }\r\n // .toc-level-5\r\n // display: none\r\n\r\n // .toc-level-6\r\n // display: none\r\n\r\n // .toc-number\r\n // display: none\r\n }\r\n}\r\n@media screen and (min-width: 500px) {\r\n #footer-post-container {\r\n display: none;\r\n }\r\n};", + ".post-list {\r\n padding: 0;\r\n\r\n .post-item {\r\n margin-bottom: 1rem;\r\n margin-left: 0;\r\n list-style-type: none;\r\n\r\n .meta {\r\n display: block;\r\n margin-right: 16px;\r\n min-width: 100px;\r\n color: $color-meta;\r\n font-size: 14px;\r\n }\r\n }\r\n}\r\n@media (min-width: 480px) {\r\n .post-list {\r\n .post-item {\r\n display: flex;\r\n margin-bottom: 5px;\r\n\r\n .meta {\r\n text-align: left;\r\n }\r\n }\r\n }\r\n}\r\n.project-list {\r\n padding: 0;\r\n list-style: none;\r\n\r\n .project-item {\r\n margin-bottom: 5px;\r\n p {\r\n display: inline;\r\n }\r\n }\r\n}", + "article {\r\n header {\r\n .posttitle {\r\n margin-top: 0;\r\n margin-bottom: 0;\r\n text-transform: none;\r\n font-size: 1.5em;\r\n line-height: 1.25;\r\n }\r\n .meta {\r\n margin-top: 0;\r\n margin-bottom: 1rem;\r\n }\r\n .meta * {\r\n color: $color-accent-3;\r\n font-size: .85rem;\r\n }\r\n .author {\r\n text-transform: uppercase;\r\n letter-spacing: .01em;\r\n font-weight: 700;\r\n }\r\n .postdate {\r\n display: inline;\r\n }\r\n }\r\n .content {\r\n h2 {\r\n &:before {\r\n position: absolute;\r\n top: -4px;\r\n left: -1rem;\r\n color: $color-accent-1;\r\n content: \"#\";\r\n font-weight: bold;\r\n font-size: 1.2rem;\r\n }\r\n }\r\n }\r\n .content img,\r\n .content video {\r\n display: block;\r\n margin: auto;\r\n max-width: 100%;\r\n height: auto;\r\n\r\n /* http://webdesignerwall.com/tutorials/css-elastic-videos */\r\n .video-container {\r\n position: relative;\r\n overflow: hidden;\r\n padding-top: 56.25% e;\r\n // (9/16 * 100)% // 16:9 ratio\r\n height: 0;\r\n\r\n iframe,\r\n object,\r\n embed {\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n margin-top: 0;\r\n width: 100%;\r\n height: 100%;\r\n }\r\n }\r\n blockquote {\r\n margin: 1rem 10px;\r\n padding: .5em 10px;\r\n background: inherit;\r\n color: $color-quote;\r\n quotes: \"\\201C\" \"\\201D\" \"\\2018\" \"\\2019\";\r\n font-weight: bold;\r\n\r\n p {\r\n margin: 0;\r\n }\r\n &:before {\r\n margin-right: .25em;\r\n color: $color-quote;\r\n content: \"\\201C\";\r\n vertical-align: -.4em;\r\n font-size: 2em;\r\n line-height: .1em;\r\n }\r\n footer {\r\n margin: line-height 0;\r\n color: $color-meta;\r\n font-size: 11px;\r\n\r\n a {\r\n background-image: linear-gradient(transparent, transparent 5px, $color-meta 5px, $color-meta);\r\n color: $color-meta;\r\n }\r\n a:hover {\r\n background-image: linear-gradient(transparent, transparent 4px, lighten($color-meta, 20%) 4px, lighten($color-meta, 20%));\r\n color: lighten($color-meta, 20%);\r\n }\r\n cite {\r\n &:before {\r\n padding: 0 .5em;\r\n content: \"—\";\r\n }\r\n }\r\n }\r\n }\r\n .pullquote {\r\n margin: 0;\r\n width: 45%;\r\n text-align: left;\r\n\r\n &.left {\r\n margin-right: 1em;\r\n margin-left: .5em;\r\n }\r\n &.right {\r\n margin-right: .5em;\r\n margin-left: 1em;\r\n }\r\n }\r\n .caption {\r\n position: relative;\r\n display: block;\r\n margin-top: .5em;\r\n color: $color-meta;\r\n text-align: center;\r\n font-size: .9em;\r\n }\r\n }\r\n}\r\n.posttitle {\r\n text-transform: none;\r\n font-size: 1.5em;\r\n line-height: 1.25;\r\n}\r\n.article-tag {\r\n .tag-link {\r\n &:before {\r\n content: \"#\";\r\n @include underline(10px, $color-link);\r\n }\r\n }\r\n}\r\n.article-category {\r\n .category-link {\r\n @include underline(10px, $color-link);\r\n }\r\n}\r\n@media (min-width: 480px) {\r\n .article-read-time,\r\n .article-tag,\r\n .article-category {\r\n display: inline;\r\n\r\n &:before {\r\n content: \"|\";\r\n }\r\n }\r\n};", + "#archive {\r\n .post-list {\r\n padding: 0;\r\n\r\n .post-item {\r\n margin-bottom: 1rem;\r\n margin-left: 0;\r\n list-style-type: none;\r\n\r\n .meta {\r\n display: block;\r\n margin-right: 16px;\r\n min-width: 100px;\r\n color: $color-meta;\r\n font-size: 14px;\r\n }\r\n }\r\n }\r\n @media (min-width: 480px) {\r\n .post-list {\r\n .post-item {\r\n display: flex;\r\n margin-bottom: 5px;\r\n margin-left: 1rem;\r\n\r\n .meta {\r\n text-align: left;\r\n }\r\n }\r\n }\r\n }\r\n}", + ".blog-post-comments {\r\n margin-top: 4rem;\r\n}", + "#footer {\r\n position: absolute;\r\n bottom: 0;\r\n margin-bottom: 10px;\r\n width: 100%;\r\n color: $color-meta;\r\n vertical-align: top;\r\n text-align: center;\r\n font-size: 11px;\r\n\r\n ul {\r\n margin: 0;\r\n padding: 0;\r\n list-style: none;\r\n }\r\n li {\r\n display: inline-block;\r\n margin-right: 15px;\r\n border-right: 1px solid;\r\n border-color: $color-border;\r\n vertical-align: middle;\r\n\r\n a {\r\n margin-right: 15px;\r\n }\r\n }\r\n li:last-child {\r\n margin-right: 0;\r\n border-right: 0;\r\n\r\n a {\r\n margin-right: 0;\r\n }\r\n }\r\n a {\r\n color: $color-meta;\r\n text-decoration: underline;\r\n background-image: none;\r\n }\r\n a:hover {\r\n color: lighten($color-meta, 20%);\r\n }\r\n .footer-left {\r\n height: 20px;\r\n vertical-align: middle;\r\n line-height: 20px;\r\n }\r\n}\r\n@media (min-width: 39rem) {\r\n #footer {\r\n display: flex;\r\n flex-flow: row wrap;\r\n justify-content: space-between;\r\n align-items: center;\r\n align-content: center;\r\n margin-bottom: 20px;\r\n\r\n .footer-left {\r\n align-self: flex-start;\r\n margin-right: 20px;\r\n }\r\n .footer-right {\r\n align-self: flex-end;\r\n }\r\n }\r\n};", + ".pagination {\r\n display: inline-block;\r\n margin-top: 2rem;\r\n width: 100%;\r\n text-align: center;\r\n\r\n .page-number {\r\n color: $color-text;\r\n font-size: .8rem;\r\n }\r\n a {\r\n padding: 4px 6px;\r\n border-radius: 5px;\r\n // background-color: $color-accent-1\r\n background-image: none;\r\n color: $color-text;\r\n text-decoration: none;\r\n }\r\n a:hover {\r\n background-image: none;\r\n }\r\n a:hover:not(.active) {\r\n color: $color-accent-2;\r\n }\r\n}", + ".search-input {\r\n padding: 4px 7px;\r\n width: 100%;\r\n outline: none;\r\n border: solid 1px $color-accent-3;\r\n border-radius: 5px;\r\n background-color: $color-background;\r\n color: $color-text;\r\n font-size: 1.2rem;\r\n -webkit-border-radius: 5px;\r\n -moz-border-radius: 5px;\r\n\r\n &:focus {\r\n border: solid 1px $color-accent-1;\r\n }\r\n}\r\n#search-result {\r\n ul.search-result-list {\r\n padding: 0;\r\n list-style-type: none;\r\n }\r\n li {\r\n margin: 2em auto;\r\n }\r\n a.search-result-title {\r\n background-image: none;\r\n color: $color-text;\r\n text-transform: capitalize;\r\n font-weight: bold;\r\n line-height: 1.2;\r\n }\r\n p.search-result {\r\n overflow: hidden;\r\n margin: .4em auto;\r\n max-height: 13em;\r\n text-align: justify;\r\n font-size: .8em;\r\n }\r\n em.search-keyword {\r\n border-bottom: 1px dashed $color-link;\r\n color: $color-link;\r\n font-weight: bold;\r\n }\r\n}\r\n.search-no-result {\r\n display: none;\r\n padding-bottom: .5em;\r\n color: $color-text;\r\n}", + "#tag-cloud {\r\n .tag-cloud-title {\r\n color: $color-meta;\r\n }\r\n .tag-cloud-tags {\r\n clear: both;\r\n text-align: center;\r\n a {\r\n display: inline-block;\r\n margin: 10px;\r\n }\r\n }\r\n}", + "// ref: https://github.com/primer/primer/blob/master/modules/primer-tooltips/lib/tooltips.scss\r\n.tooltipped {\r\n position: relative;\r\n} \r\n// This is the tooltip bubble\r\n.tooltipped::after {\r\n position: absolute;\r\n z-index: 1000000;\r\n display: none;\r\n padding: .2em .5em;\r\n -webkit-font-smoothing: subpixel-antialiased;\r\n color: $color-background;\r\n font-display: swap;\r\n font-weight: 400;\r\n font-size: $font-size * 0.8;\r\n font-family: $font-family-body;\r\n line-height: $line-height;\r\n text-rendering: geometricPrecision;\r\n text-align: center;\r\n word-wrap: break-word;\r\n white-space: pre;\r\n content: attr(aria-label);\r\n background: $color-text;\r\n border-radius: 3px;\r\n opacity: 0;\r\n} \r\n// This is the tooltip arrow\r\n.tooltipped::before {\r\n position: absolute;\r\n z-index: 1000001;\r\n display: none;\r\n width: 0;\r\n height: 0;\r\n color: $color-text;\r\n pointer-events: none;\r\n content: '';\r\n border: 6px solid transparent;\r\n opacity: 0;\r\n} \r\n// delay animation for tooltip\r\n@keyframes tooltip-appear {\r\n from {\r\n opacity: 0;\r\n }\r\n to {\r\n opacity: 1;\r\n }\r\n};\r\n \r\n// This will indicate when we'll activate the tooltip\r\n.tooltipped:hover,\r\n.tooltipped:active,\r\n.tooltipped:focus {\r\n &::before,\r\n &::after {\r\n display: inline-block;\r\n text-decoration: none;\r\n animation-name: tooltip-appear;\r\n animation-duration: 0.1s;\r\n animation-fill-mode: forwards;\r\n animation-timing-function: ease-in;\r\n } \r\n// Tooltipped south\r\n}\r\n.tooltipped-s,\r\n.tooltipped-sw {\r\n &::after {\r\n top: 100%;\r\n right: 50%;\r\n margin-top: 6px;\r\n }\r\n &::before {\r\n top: auto;\r\n right: 50%;\r\n bottom: -7px;\r\n margin-right: -6px;\r\n border-bottom-color: $color-text;\r\n }\r\n}\r\n.tooltipped-sw::after {\r\n margin-right: -16px;\r\n} \r\n// Move the tooltip body to the center of the object.\r\n.tooltipped-s::after {\r\n transform: translateX(50%);\r\n}", + "#categories {\r\n .category-list-title {\r\n color: $color-meta;\r\n }\r\n .category-list {\r\n .category-list-item {\r\n .category-list-count {\r\n color: $color-meta;\r\n }\r\n .category-list-count:before {\r\n content: \" (\";\r\n }\r\n .category-list-count:after {\r\n content: \")\";\r\n }\r\n }\r\n }\r\n}" + ], + "names": [], + "mappings": "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" +} \ No newline at end of file diff --git a/public/images/favicon.ico b/public/images/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..84a85d3b35e32d99f7cbf31b8b1ae0d7877f7b93 GIT binary patch literal 15086 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 HcVN7~nUfmB;wt9}Hu; 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¬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

0$S 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

y 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 literal 0 HcmV?d00001 diff --git a/public/index.html b/public/index.html new file mode 100644 index 0000000..afacee4 --- /dev/null +++ b/public/index.html @@ -0,0 +1,211 @@ + + + + + + + + + + + + + Basit's Blog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+ + + + + + diff --git a/public/index.xml b/public/index.xml new file mode 100644 index 0000000..116f14d --- /dev/null +++ b/public/index.xml @@ -0,0 +1,53 @@ + + + + Basit's Blog + https://blog.rjbasitali.com/ + Recent content on Basit's Blog + Hugo -- gohugo.io + en-us + Basit Ali + Tue, 12 Oct 2021 22:05:04 +0500 + + Writing your own Reverse Proxy server using Golang + https://blog.rjbasitali.com/posts/writing-your-own-reverse-proxy-using-golang/ + Tue, 12 Oct 2021 22:05:04 +0500 + + https://blog.rjbasitali.com/posts/writing-your-own-reverse-proxy-using-golang/ + Writing a Reverse Proxy server in Go is a matter of single digit lines of code due to its rock solid standard library and its low level network plumbing capabilities. Recently I came across some use cases where I needed to write my own Reverse Proxy server and of course Go was the pragmatic choice. +Let us first start with defining Reverse Proxy and its common uses. +Reverse Proxy A Reverse Proxy is an intermediary server that sits between multiple clients and servers, and directs client requests to appropriate backend server. + + + + Writing a Middleware for your HTTP handler – Golang + https://blog.rjbasitali.com/posts/writing-a-golang-middleware-for-your-http-handler/ + Sun, 01 Aug 2021 22:05:04 +0500 + + https://blog.rjbasitali.com/posts/writing-a-golang-middleware-for-your-http-handler/ + If you are a backend developer working daily with HTTP requests then you have most likely already encountered situations where you want a common functionality across all the incoming HTTP requests, which can be as simple as checking if the Content-Type header only has the value application/json if you only support json, or maybe you want to spoof your HTTP request to change the method type from POST,GET or PUT to something else based on the X-HTTP-Method-Override header, or of course authenticate before finally passing the request to the destination HTTP handler. + + + + Contact + https://blog.rjbasitali.com/contact/ + Sun, 01 Aug 2021 16:26:01 +0500 + + https://blog.rjbasitali.com/contact/ + If you’ve got any questions, suggestions or would like to discuss a project then email me at rjbasitali@gmail.com. I’d be happy to hear from you. +You can also find me on LinkedIn, Github and Instagram. + + + + About + https://blog.rjbasitali.com/about/ + Sat, 31 Jul 2021 22:39:25 +0500 + + https://blog.rjbasitali.com/about/ + Hi, I&rsquo;m Basit Ali. I&rsquo;m a software developer specializing in Java, Go and Android. +Previously I&rsquo;ve worked with many startups including telehealth, trivia games, logistics and more. Right now I&rsquo;m working on providing video conferencing and other VoIP solutions using WebRTC, Golang and other cool technologies. +I generally work with Go and Java for backend, React, Android, Git, Postgres and Linux, the technologies, especially databases can change depending on the needs of the project. + + + + diff --git a/public/js/code-copy.js b/public/js/code-copy.js new file mode 100644 index 0000000..5a07bf8 --- /dev/null +++ b/public/js/code-copy.js @@ -0,0 +1,36 @@ +(() => { + + function createCopyButton(codeNode) { + const copyBtn = document.createElement('button') + copyBtn.className = 'code-copy-btn' + copyBtn.type = 'button' + copyBtn.innerText = 'copy' + + let resetTimer + copyBtn.addEventListener('click', () => { + navigator.clipboard.writeText(codeNode.innerText).then(() => { + copyBtn.innerText = 'copied!' + }).then(() => { + clearTimeout(resetTimer) + resetTimer = setTimeout(() => { + copyBtn.innerText = 'copy' + }, 1000) + }) + }) + + return copyBtn + } + + document.querySelectorAll('pre > code') + .forEach((codeNode) => { + const copyBtn = createCopyButton(codeNode); + const preNode = codeNode.parentNode + codeNode.parentNode.insertBefore(copyBtn, codeNode) + }) + + document.querySelectorAll('.highlight table > tbody > tr > td:first-child .code-copy-btn') + .forEach((btn) => { + btn.remove() + }) + +})() \ No newline at end of file diff --git a/public/js/feather.min.js b/public/js/feather.min.js new file mode 100644 index 0000000..156cd61 --- /dev/null +++ b/public/js/feather.min.js @@ -0,0 +1,13 @@ +!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n():"function"==typeof define&&define.amd?define([],n):"object"==typeof exports?exports.feather=n():e.feather=n()}("undefined"!=typeof self?self:this,function(){return function(e){var n={};function i(t){if(n[t])return n[t].exports;var l=n[t]={i:t,l:!1,exports:{}};return e[t].call(l.exports,l,l.exports,i),l.l=!0,l.exports}return i.m=e,i.c=n,i.d=function(e,n,t){i.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:t})},i.r=function(e){Object.defineProperty(e,"__esModule",{value:!0})},i.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(n,"a",n),n},i.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},i.p="",i(i.s=80)}([function(e,n,i){(function(n){var i="object",t=function(e){return e&&e.Math==Math&&e};e.exports=t(typeof globalThis==i&&globalThis)||t(typeof window==i&&window)||t(typeof self==i&&self)||t(typeof n==i&&n)||Function("return this")()}).call(this,i(75))},function(e,n){var i={}.hasOwnProperty;e.exports=function(e,n){return i.call(e,n)}},function(e,n,i){var t=i(0),l=i(11),r=i(33),o=i(62),a=t.Symbol,c=l("wks");e.exports=function(e){return c[e]||(c[e]=o&&a[e]||(o?a:r)("Symbol."+e))}},function(e,n,i){var t=i(6);e.exports=function(e){if(!t(e))throw TypeError(String(e)+" is not an object");return e}},function(e,n){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,n,i){var t=i(8),l=i(7),r=i(10);e.exports=t?function(e,n,i){return l.f(e,n,r(1,i))}:function(e,n,i){return e[n]=i,e}},function(e,n){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,n,i){var t=i(8),l=i(35),r=i(3),o=i(18),a=Object.defineProperty;n.f=t?a:function(e,n,i){if(r(e),n=o(n,!0),r(i),l)try{return a(e,n,i)}catch(e){}if("get"in i||"set"in i)throw TypeError("Accessors not supported");return"value"in i&&(e[n]=i.value),e}},function(e,n,i){var t=i(4);e.exports=!t(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(e,n){e.exports={}},function(e,n){e.exports=function(e,n){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:n}}},function(e,n,i){var t=i(0),l=i(19),r=i(17),o=t["__core-js_shared__"]||l("__core-js_shared__",{});(e.exports=function(e,n){return o[e]||(o[e]=void 0!==n?n:{})})("versions",[]).push({version:"3.1.3",mode:r?"pure":"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})},function(e,n,i){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var t=o(i(43)),l=o(i(41)),r=o(i(40));function o(e){return e&&e.__esModule?e:{default:e}}n.default=Object.keys(l.default).map(function(e){return new t.default(e,l.default[e],r.default[e])}).reduce(function(e,n){return e[n.name]=n,e},{})},function(e,n){e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},function(e,n,i){var t=i(72),l=i(20);e.exports=function(e){return t(l(e))}},function(e,n){e.exports={}},function(e,n,i){var t=i(11),l=i(33),r=t("keys");e.exports=function(e){return r[e]||(r[e]=l(e))}},function(e,n){e.exports=!1},function(e,n,i){var t=i(6);e.exports=function(e,n){if(!t(e))return e;var i,l;if(n&&"function"==typeof(i=e.toString)&&!t(l=i.call(e)))return l;if("function"==typeof(i=e.valueOf)&&!t(l=i.call(e)))return l;if(!n&&"function"==typeof(i=e.toString)&&!t(l=i.call(e)))return l;throw TypeError("Can't convert object to primitive value")}},function(e,n,i){var t=i(0),l=i(5);e.exports=function(e,n){try{l(t,e,n)}catch(i){t[e]=n}return n}},function(e,n){e.exports=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}},function(e,n){var i=Math.ceil,t=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?t:i)(e)}},function(e,n,i){var t; +/*! + Copyright (c) 2016 Jed Watson. + Licensed under the MIT License (MIT), see + http://jedwatson.github.io/classnames +*/ +/*! + Copyright (c) 2016 Jed Watson. + Licensed under the MIT License (MIT), see + http://jedwatson.github.io/classnames +*/ +!function(){"use strict";var i=function(){function e(){}function n(e,n){for(var i=n.length,t=0;t0?l(t(e),9007199254740991):0}},function(e,n,i){var t=i(1),l=i(14),r=i(68),o=i(15),a=r(!1);e.exports=function(e,n){var i,r=l(e),c=0,p=[];for(i in r)!t(o,i)&&t(r,i)&&p.push(i);for(;n.length>c;)t(r,i=n[c++])&&(~a(p,i)||p.push(i));return p}},function(e,n,i){var t=i(0),l=i(11),r=i(5),o=i(1),a=i(19),c=i(36),p=i(37),y=p.get,h=p.enforce,x=String(c).split("toString");l("inspectSource",function(e){return c.call(e)}),(e.exports=function(e,n,i,l){var c=!!l&&!!l.unsafe,p=!!l&&!!l.enumerable,y=!!l&&!!l.noTargetGet;"function"==typeof i&&("string"!=typeof n||o(i,"name")||r(i,"name",n),h(i).source=x.join("string"==typeof n?n:"")),e!==t?(c?!y&&e[n]&&(p=!0):delete e[n],p?e[n]=i:r(e,n,i)):p?e[n]=i:a(n,i)})(Function.prototype,"toString",function(){return"function"==typeof this&&y(this).source||c.call(this)})},function(e,n){var i={}.toString;e.exports=function(e){return i.call(e).slice(8,-1)}},function(e,n,i){var t=i(8),l=i(73),r=i(10),o=i(14),a=i(18),c=i(1),p=i(35),y=Object.getOwnPropertyDescriptor;n.f=t?y:function(e,n){if(e=o(e),n=a(n,!0),p)try{return y(e,n)}catch(e){}if(c(e,n))return r(!l.f.call(e,n),e[n])}},function(e,n,i){var t=i(0),l=i(31).f,r=i(5),o=i(29),a=i(19),c=i(71),p=i(65);e.exports=function(e,n){var i,y,h,x,s,u=e.target,d=e.global,f=e.stat;if(i=d?t:f?t[u]||a(u,{}):(t[u]||{}).prototype)for(y in n){if(x=n[y],h=e.noTargetGet?(s=l(i,y))&&s.value:i[y],!p(d?y:u+(f?".":"#")+y,e.forced)&&void 0!==h){if(typeof x==typeof h)continue;c(x,h)}(e.sham||h&&h.sham)&&r(x,"sham",!0),o(i,y,x,e)}}},function(e,n){var i=0,t=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++i+t).toString(36))}},function(e,n,i){var t=i(0),l=i(6),r=t.document,o=l(r)&&l(r.createElement);e.exports=function(e){return o?r.createElement(e):{}}},function(e,n,i){var t=i(8),l=i(4),r=i(34);e.exports=!t&&!l(function(){return 7!=Object.defineProperty(r("div"),"a",{get:function(){return 7}}).a})},function(e,n,i){var t=i(11);e.exports=t("native-function-to-string",Function.toString)},function(e,n,i){var t,l,r,o=i(76),a=i(0),c=i(6),p=i(5),y=i(1),h=i(16),x=i(15),s=a.WeakMap;if(o){var u=new s,d=u.get,f=u.has,g=u.set;t=function(e,n){return g.call(u,e,n),n},l=function(e){return d.call(u,e)||{}},r=function(e){return f.call(u,e)}}else{var v=h("state");x[v]=!0,t=function(e,n){return p(e,v,n),n},l=function(e){return y(e,v)?e[v]:{}},r=function(e){return y(e,v)}}e.exports={set:t,get:l,has:r,enforce:function(e){return r(e)?l(e):t(e,{})},getterFor:function(e){return function(n){var i;if(!c(n)||(i=l(n)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return i}}}},function(e,n,i){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var t=Object.assign||function(e){for(var n=1;n0&&void 0!==arguments[0]?arguments[0]:{};if("undefined"==typeof document)throw new Error("`feather.replace()` only works in a browser environment.");var n=document.querySelectorAll("[data-feather]");Array.from(n).forEach(function(n){return function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=function(e){return Array.from(e.attributes).reduce(function(e,n){return e[n.name]=n.value,e},{})}(e),o=i["data-feather"];delete i["data-feather"];var a=r.default[o].toSvg(t({},n,i,{class:(0,l.default)(n.class,i.class)})),c=(new DOMParser).parseFromString(a,"image/svg+xml").querySelector("svg");e.parentNode.replaceChild(c,e)}(n,e)})}},function(e,n,i){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var t,l=i(12),r=(t=l)&&t.__esModule?t:{default:t};n.default=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(console.warn("feather.toSvg() is deprecated. Please use feather.icons[name].toSvg() instead."),!e)throw new Error("The required `key` (icon name) parameter is missing.");if(!r.default[e])throw new Error("No icon matching '"+e+"'. See the complete list of icons at https://feathericons.com");return r.default[e].toSvg(n)}},function(e){e.exports={activity:["pulse","health","action","motion"],airplay:["stream","cast","mirroring"],"alert-circle":["warning","alert","danger"],"alert-octagon":["warning","alert","danger"],"alert-triangle":["warning","alert","danger"],"align-center":["text alignment","center"],"align-justify":["text alignment","justified"],"align-left":["text alignment","left"],"align-right":["text alignment","right"],anchor:[],archive:["index","box"],"at-sign":["mention","at","email","message"],award:["achievement","badge"],aperture:["camera","photo"],"bar-chart":["statistics","diagram","graph"],"bar-chart-2":["statistics","diagram","graph"],battery:["power","electricity"],"battery-charging":["power","electricity"],bell:["alarm","notification","sound"],"bell-off":["alarm","notification","silent"],bluetooth:["wireless"],"book-open":["read","library"],book:["read","dictionary","booklet","magazine","library"],bookmark:["read","clip","marker","tag"],box:["cube"],briefcase:["work","bag","baggage","folder"],calendar:["date"],camera:["photo"],cast:["chromecast","airplay"],circle:["off","zero","record"],clipboard:["copy"],clock:["time","watch","alarm"],"cloud-drizzle":["weather","shower"],"cloud-lightning":["weather","bolt"],"cloud-rain":["weather"],"cloud-snow":["weather","blizzard"],cloud:["weather"],codepen:["logo"],codesandbox:["logo"],code:["source","programming"],coffee:["drink","cup","mug","tea","cafe","hot","beverage"],columns:["layout"],command:["keyboard","cmd","terminal","prompt"],compass:["navigation","safari","travel","direction"],copy:["clone","duplicate"],"corner-down-left":["arrow","return"],"corner-down-right":["arrow"],"corner-left-down":["arrow"],"corner-left-up":["arrow"],"corner-right-down":["arrow"],"corner-right-up":["arrow"],"corner-up-left":["arrow"],"corner-up-right":["arrow"],cpu:["processor","technology"],"credit-card":["purchase","payment","cc"],crop:["photo","image"],crosshair:["aim","target"],database:["storage","memory"],delete:["remove"],disc:["album","cd","dvd","music"],"dollar-sign":["currency","money","payment"],droplet:["water"],edit:["pencil","change"],"edit-2":["pencil","change"],"edit-3":["pencil","change"],eye:["view","watch"],"eye-off":["view","watch","hide","hidden"],"external-link":["outbound"],facebook:["logo","social"],"fast-forward":["music"],figma:["logo","design","tool"],"file-minus":["delete","remove","erase"],"file-plus":["add","create","new"],"file-text":["data","txt","pdf"],film:["movie","video"],filter:["funnel","hopper"],flag:["report"],"folder-minus":["directory"],"folder-plus":["directory"],folder:["directory"],framer:["logo","design","tool"],frown:["emoji","face","bad","sad","emotion"],gift:["present","box","birthday","party"],"git-branch":["code","version control"],"git-commit":["code","version control"],"git-merge":["code","version control"],"git-pull-request":["code","version control"],github:["logo","version control"],gitlab:["logo","version control"],globe:["world","browser","language","translate"],"hard-drive":["computer","server","memory","data"],hash:["hashtag","number","pound"],headphones:["music","audio","sound"],heart:["like","love","emotion"],"help-circle":["question mark"],hexagon:["shape","node.js","logo"],home:["house","living"],image:["picture"],inbox:["email"],instagram:["logo","camera"],key:["password","login","authentication","secure"],layers:["stack"],layout:["window","webpage"],"life-bouy":["help","life ring","support"],link:["chain","url"],"link-2":["chain","url"],linkedin:["logo","social media"],list:["options"],lock:["security","password","secure"],"log-in":["sign in","arrow","enter"],"log-out":["sign out","arrow","exit"],mail:["email","message"],"map-pin":["location","navigation","travel","marker"],map:["location","navigation","travel"],maximize:["fullscreen"],"maximize-2":["fullscreen","arrows","expand"],meh:["emoji","face","neutral","emotion"],menu:["bars","navigation","hamburger"],"message-circle":["comment","chat"],"message-square":["comment","chat"],"mic-off":["record","sound","mute"],mic:["record","sound","listen"],minimize:["exit fullscreen","close"],"minimize-2":["exit fullscreen","arrows","close"],minus:["subtract"],monitor:["tv","screen","display"],moon:["dark","night"],"more-horizontal":["ellipsis"],"more-vertical":["ellipsis"],"mouse-pointer":["arrow","cursor"],move:["arrows"],music:["note"],navigation:["location","travel"],"navigation-2":["location","travel"],octagon:["stop"],package:["box","container"],paperclip:["attachment"],pause:["music","stop"],"pause-circle":["music","audio","stop"],"pen-tool":["vector","drawing"],percent:["discount"],"phone-call":["ring"],"phone-forwarded":["call"],"phone-incoming":["call"],"phone-missed":["call"],"phone-off":["call","mute"],"phone-outgoing":["call"],phone:["call"],play:["music","start"],"pie-chart":["statistics","diagram"],"play-circle":["music","start"],plus:["add","new"],"plus-circle":["add","new"],"plus-square":["add","new"],pocket:["logo","save"],power:["on","off"],printer:["fax","office","device"],radio:["signal"],"refresh-cw":["synchronise","arrows"],"refresh-ccw":["arrows"],repeat:["loop","arrows"],rewind:["music"],"rotate-ccw":["arrow"],"rotate-cw":["arrow"],rss:["feed","subscribe"],save:["floppy disk"],scissors:["cut"],search:["find","magnifier","magnifying glass"],send:["message","mail","email","paper airplane","paper aeroplane"],settings:["cog","edit","gear","preferences"],"share-2":["network","connections"],shield:["security","secure"],"shield-off":["security","insecure"],"shopping-bag":["ecommerce","cart","purchase","store"],"shopping-cart":["ecommerce","cart","purchase","store"],shuffle:["music"],"skip-back":["music"],"skip-forward":["music"],slack:["logo"],slash:["ban","no"],sliders:["settings","controls"],smartphone:["cellphone","device"],smile:["emoji","face","happy","good","emotion"],speaker:["audio","music"],star:["bookmark","favorite","like"],"stop-circle":["media","music"],sun:["brightness","weather","light"],sunrise:["weather","time","morning","day"],sunset:["weather","time","evening","night"],tablet:["device"],tag:["label"],target:["logo","bullseye"],terminal:["code","command line","prompt"],thermometer:["temperature","celsius","fahrenheit","weather"],"thumbs-down":["dislike","bad","emotion"],"thumbs-up":["like","good","emotion"],"toggle-left":["on","off","switch"],"toggle-right":["on","off","switch"],tool:["settings","spanner"],trash:["garbage","delete","remove","bin"],"trash-2":["garbage","delete","remove","bin"],triangle:["delta"],truck:["delivery","van","shipping","transport","lorry"],tv:["television","stream"],twitch:["logo"],twitter:["logo","social"],type:["text"],umbrella:["rain","weather"],unlock:["security"],"user-check":["followed","subscribed"],"user-minus":["delete","remove","unfollow","unsubscribe"],"user-plus":["new","add","create","follow","subscribe"],"user-x":["delete","remove","unfollow","unsubscribe","unavailable"],user:["person","account"],users:["group"],"video-off":["camera","movie","film"],video:["camera","movie","film"],voicemail:["phone"],volume:["music","sound","mute"],"volume-1":["music","sound"],"volume-2":["music","sound"],"volume-x":["music","sound","mute"],watch:["clock","time"],"wifi-off":["disabled"],wifi:["connection","signal","wireless"],wind:["weather","air"],"x-circle":["cancel","close","delete","remove","times","clear"],"x-octagon":["delete","stop","alert","warning","times","clear"],"x-square":["cancel","close","delete","remove","times","clear"],x:["cancel","close","delete","remove","times","clear"],youtube:["logo","video","play"],"zap-off":["flash","camera","lightning"],zap:["flash","camera","lightning"],"zoom-in":["magnifying glass"],"zoom-out":["magnifying glass"]}},function(e){e.exports={activity:'',airplay:'',"alert-circle":'',"alert-octagon":'',"alert-triangle":'',"align-center":'',"align-justify":'',"align-left":'',"align-right":'',anchor:'',aperture:'',archive:'',"arrow-down-circle":'',"arrow-down-left":'',"arrow-down-right":'',"arrow-down":'',"arrow-left-circle":'',"arrow-left":'',"arrow-right-circle":'',"arrow-right":'',"arrow-up-circle":'',"arrow-up-left":'',"arrow-up-right":'',"arrow-up":'',"at-sign":'',award:'',"bar-chart-2":'',"bar-chart":'',"battery-charging":'',battery:'',"bell-off":'',bell:'',bluetooth:'',bold:'',"book-open":'',book:'',bookmark:'',box:'',briefcase:'',calendar:'',"camera-off":'',camera:'',cast:'',"check-circle":'',"check-square":'',check:'',"chevron-down":'',"chevron-left":'',"chevron-right":'',"chevron-up":'',"chevrons-down":'',"chevrons-left":'',"chevrons-right":'',"chevrons-up":'',chrome:'',circle:'',clipboard:'',clock:'',"cloud-drizzle":'',"cloud-lightning":'',"cloud-off":'',"cloud-rain":'',"cloud-snow":'',cloud:'',code:'',codepen:'',codesandbox:'',coffee:'',columns:'',command:'',compass:'',copy:'',"corner-down-left":'',"corner-down-right":'',"corner-left-down":'',"corner-left-up":'',"corner-right-down":'',"corner-right-up":'',"corner-up-left":'',"corner-up-right":'',cpu:'',"credit-card":'',crop:'',crosshair:'',database:'',delete:'',disc:'',"divide-circle":'',"divide-square":'',divide:'',"dollar-sign":'',"download-cloud":'',download:'',dribbble:'',droplet:'',"edit-2":'',"edit-3":'',edit:'',"external-link":'',"eye-off":'',eye:'',facebook:'',"fast-forward":'',feather:'',figma:'',"file-minus":'',"file-plus":'',"file-text":'',file:'',film:'',filter:'',flag:'',"folder-minus":'',"folder-plus":'',folder:'',framer:'',frown:'',gift:'',"git-branch":'',"git-commit":'',"git-merge":'',"git-pull-request":'',github:'',gitlab:'',globe:'',grid:'',"hard-drive":'',hash:'',headphones:'',heart:'',"help-circle":'',hexagon:'',home:'',image:'',inbox:'',info:'',instagram:'',italic:'',key:'',layers:'',layout:'',"life-buoy":'',"link-2":'',link:'',linkedin:'',list:'',loader:'',lock:'',"log-in":'',"log-out":'',mail:'',"map-pin":'',map:'',"maximize-2":'',maximize:'',meh:'',menu:'',"message-circle":'',"message-square":'',"mic-off":'',mic:'',"minimize-2":'',minimize:'',"minus-circle":'',"minus-square":'',minus:'',monitor:'',moon:'',"more-horizontal":'',"more-vertical":'',"mouse-pointer":'',move:'',music:'',"navigation-2":'',navigation:'',octagon:'',package:'',paperclip:'',"pause-circle":'',pause:'',"pen-tool":'',percent:'',"phone-call":'',"phone-forwarded":'',"phone-incoming":'',"phone-missed":'',"phone-off":'',"phone-outgoing":'',phone:'',"pie-chart":'',"play-circle":'',play:'',"plus-circle":'',"plus-square":'',plus:'',pocket:'',power:'',printer:'',radio:'',"refresh-ccw":'',"refresh-cw":'',repeat:'',rewind:'',"rotate-ccw":'',"rotate-cw":'',rss:'',save:'',scissors:'',search:'',send:'',server:'',settings:'',"share-2":'',share:'',"shield-off":'',shield:'',"shopping-bag":'',"shopping-cart":'',shuffle:'',sidebar:'',"skip-back":'',"skip-forward":'',slack:'',slash:'',sliders:'',smartphone:'',smile:'',speaker:'',square:'',star:'',"stop-circle":'',sun:'',sunrise:'',sunset:'',tablet:'',tag:'',target:'',terminal:'',thermometer:'',"thumbs-down":'',"thumbs-up":'',"toggle-left":'',"toggle-right":'',tool:'',"trash-2":'',trash:'',trello:'',"trending-down":'',"trending-up":'',triangle:'',truck:'',tv:'',twitch:'',twitter:'',type:'',umbrella:'',underline:'',unlock:'',"upload-cloud":'',upload:'',"user-check":'',"user-minus":'',"user-plus":'',"user-x":'',user:'',users:'',"video-off":'',video:'',voicemail:'',"volume-1":'',"volume-2":'',"volume-x":'',volume:'',watch:'',"wifi-off":'',wifi:'',wind:'',"x-circle":'',"x-octagon":'',"x-square":'',x:'',youtube:'',"zap-off":'',zap:'',"zoom-in":'',"zoom-out":''}},function(e){e.exports={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"}},function(e,n,i){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var t=Object.assign||function(e){for(var n=1;n2&&void 0!==arguments[2]?arguments[2]:[];!function(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}(this,e),this.name=n,this.contents=i,this.tags=l,this.attrs=t({},o.default,{class:"feather feather-"+n})}return l(e,[{key:"toSvg",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return""+this.contents+""}},{key:"toString",value:function(){return this.contents}}]),e}();n.default=c},function(e,n,i){"use strict";var t=o(i(12)),l=o(i(39)),r=o(i(38));function o(e){return e&&e.__esModule?e:{default:e}}e.exports={icons:t.default,toSvg:l.default,replace:r.default}},function(e,n,i){e.exports=i(0)},function(e,n,i){var t=i(2)("iterator"),l=!1;try{var r=0,o={next:function(){return{done:!!r++}},return:function(){l=!0}};o[t]=function(){return this},Array.from(o,function(){throw 2})}catch(e){}e.exports=function(e,n){if(!n&&!l)return!1;var i=!1;try{var r={};r[t]=function(){return{next:function(){return{done:i=!0}}}},e(r)}catch(e){}return i}},function(e,n,i){var t=i(30),l=i(2)("toStringTag"),r="Arguments"==t(function(){return arguments}());e.exports=function(e){var n,i,o;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(i=function(e,n){try{return e[n]}catch(e){}}(n=Object(e),l))?i:r?t(n):"Object"==(o=t(n))&&"function"==typeof n.callee?"Arguments":o}},function(e,n,i){var t=i(47),l=i(9),r=i(2)("iterator");e.exports=function(e){if(void 0!=e)return e[r]||e["@@iterator"]||l[t(e)]}},function(e,n,i){"use strict";var t=i(18),l=i(7),r=i(10);e.exports=function(e,n,i){var o=t(n);o in e?l.f(e,o,r(0,i)):e[o]=i}},function(e,n,i){var t=i(2),l=i(9),r=t("iterator"),o=Array.prototype;e.exports=function(e){return void 0!==e&&(l.Array===e||o[r]===e)}},function(e,n,i){var t=i(3);e.exports=function(e,n,i,l){try{return l?n(t(i)[0],i[1]):n(i)}catch(n){var r=e.return;throw void 0!==r&&t(r.call(e)),n}}},function(e,n){e.exports=function(e){if("function"!=typeof e)throw TypeError(String(e)+" is not a function");return e}},function(e,n,i){var t=i(52);e.exports=function(e,n,i){if(t(e),void 0===n)return e;switch(i){case 0:return function(){return e.call(n)};case 1:return function(i){return e.call(n,i)};case 2:return function(i,t){return e.call(n,i,t)};case 3:return function(i,t,l){return e.call(n,i,t,l)}}return function(){return e.apply(n,arguments)}}},function(e,n,i){"use strict";var t=i(53),l=i(24),r=i(51),o=i(50),a=i(27),c=i(49),p=i(48);e.exports=function(e){var n,i,y,h,x=l(e),s="function"==typeof this?this:Array,u=arguments.length,d=u>1?arguments[1]:void 0,f=void 0!==d,g=0,v=p(x);if(f&&(d=t(d,u>2?arguments[2]:void 0,2)),void 0==v||s==Array&&o(v))for(i=new s(n=a(x.length));n>g;g++)c(i,g,f?d(x[g],g):x[g]);else for(h=v.call(x),i=new s;!(y=h.next()).done;g++)c(i,g,f?r(h,d,[y.value,g],!0):y.value);return i.length=g,i}},function(e,n,i){var t=i(32),l=i(54);t({target:"Array",stat:!0,forced:!i(46)(function(e){Array.from(e)})},{from:l})},function(e,n,i){var t=i(6),l=i(3);e.exports=function(e,n){if(l(e),!t(n)&&null!==n)throw TypeError("Can't set "+String(n)+" as a prototype")}},function(e,n,i){var t=i(56);e.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var e,n=!1,i={};try{(e=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set).call(i,[]),n=i instanceof Array}catch(e){}return function(i,l){return t(i,l),n?e.call(i,l):i.__proto__=l,i}}():void 0)},function(e,n,i){var t=i(0).document;e.exports=t&&t.documentElement},function(e,n,i){var t=i(28),l=i(13);e.exports=Object.keys||function(e){return t(e,l)}},function(e,n,i){var t=i(8),l=i(7),r=i(3),o=i(59);e.exports=t?Object.defineProperties:function(e,n){r(e);for(var i,t=o(n),a=t.length,c=0;a>c;)l.f(e,i=t[c++],n[i]);return e}},function(e,n,i){var t=i(3),l=i(60),r=i(13),o=i(15),a=i(58),c=i(34),p=i(16)("IE_PROTO"),y=function(){},h=function(){var e,n=c("iframe"),i=r.length;for(n.style.display="none",a.appendChild(n),n.src=String("javascript:"),(e=n.contentWindow.document).open(),e.write(" + + + + Basit's Blog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + +
+ + + + + + +
+ + +
+ + +
+ + +
+ + + + + + diff --git a/public/posts/index.xml b/public/posts/index.xml new file mode 100644 index 0000000..b81860f --- /dev/null +++ b/public/posts/index.xml @@ -0,0 +1,32 @@ + + + + Posts on Basit's Blog + https://blog.rjbasitali.com/posts/ + Recent content in Posts on Basit's Blog + Hugo -- gohugo.io + en-us + Basit Ali + Tue, 12 Oct 2021 22:05:04 +0500 + + Writing your own Reverse Proxy server using Golang + https://blog.rjbasitali.com/posts/writing-your-own-reverse-proxy-using-golang/ + Tue, 12 Oct 2021 22:05:04 +0500 + + https://blog.rjbasitali.com/posts/writing-your-own-reverse-proxy-using-golang/ + Writing a Reverse Proxy server in Go is a matter of single digit lines of code due to its rock solid standard library and its low level network plumbing capabilities. Recently I came across some use cases where I needed to write my own Reverse Proxy server and of course Go was the pragmatic choice. +Let us first start with defining Reverse Proxy and its common uses. +Reverse Proxy A Reverse Proxy is an intermediary server that sits between multiple clients and servers, and directs client requests to appropriate backend server. + + + + Writing a Middleware for your HTTP handler – Golang + https://blog.rjbasitali.com/posts/writing-a-golang-middleware-for-your-http-handler/ + Sun, 01 Aug 2021 22:05:04 +0500 + + https://blog.rjbasitali.com/posts/writing-a-golang-middleware-for-your-http-handler/ + If you are a backend developer working daily with HTTP requests then you have most likely already encountered situations where you want a common functionality across all the incoming HTTP requests, which can be as simple as checking if the Content-Type header only has the value application/json if you only support json, or maybe you want to spoof your HTTP request to change the method type from POST,GET or PUT to something else based on the X-HTTP-Method-Override header, or of course authenticate before finally passing the request to the destination HTTP handler. + + + + diff --git a/public/posts/page/1/index.html b/public/posts/page/1/index.html new file mode 100644 index 0000000..8b143f8 --- /dev/null +++ b/public/posts/page/1/index.html @@ -0,0 +1,10 @@ + + + + https://blog.rjbasitali.com/posts/ + + + + + + diff --git a/public/posts/writing-a-golang-middleware-for-your-http-handler/index.html b/public/posts/writing-a-golang-middleware-for-your-http-handler/index.html new file mode 100644 index 0000000..e20b060 --- /dev/null +++ b/public/posts/writing-a-golang-middleware-for-your-http-handler/index.html @@ -0,0 +1,454 @@ + + + + + + + + + + + + Writing a Middleware for your HTTP handler – Golang | Basit's Blog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + +
+ + + + + + + +
+ + +
+ +
+ +
+
+ + +
+
+

+ Writing a Middleware for your HTTP handler – Golang +

+
+ + + + +
+ + + 4 minute read +
+ + + + + +
+
+ + + +
+

If you are a backend developer working daily with HTTP requests then you have most likely already encountered situations where you want a common functionality across all the incoming HTTP requests, which can be as simple as checking if the Content-Type header only has the value application/json if you only support json, or maybe you want to spoof your HTTP request to change the method type from POST,GET or PUT to something else based on the X-HTTP-Method-Override header, or of course authenticate before finally passing the request to the destination HTTP handler.

+

You can achieve the following behaviour by writing a middleware, also known as a filter in some other backend frameworks. You can have as many middlewares as you want, each with a separate responsibility, and can chain them together to funnel incoming HTTP requests.

+

Writing a middleware in Go is pretty simple, you just need to wrap your middleware around the base HTTP handler, which so to speak is a thin wrapper around your HTTP handler.

+

Lets start with http package’s ListenAndServe method, which listens for incoming connections and serves with the handler to handle the requests, and lets write a handler for root "/" path which checks for the header Content-Type to see if it’s application/json, because our API only accepts JSON, and respond with following json {"msg":"Hello world!"} to any incoming request:

+
 1    func main() {
+ 2        mux := http.NewServeMux()
+ 3        mux.HandleFunc("/", rootHandler)
+ 4        http.ListenAndServe(":8080", mux)
+ 5    }
+ 6
+ 7    func rootHandler(w http.ResponseWriter, r *http.Request) {
+ 8        if r.Header.Get("Content-Type") != "application/json" {
+ 9                http.Error(w, "Only application/json content type supported", http.StatusUnsupportedMediaType)
+10                return
+11            }
+12        w.Write([]byte(`{"msg":"Hello world!"}`))
+13    }
+

Of course in reality you could have a dozen of handlers each with a different endpoint, but lets keep it simple for this tutorial.

+

Now let’s assume we have a dozen request handlers in our project and we want each handler to check for Content-Type header as we did in our rootHandler, we want our code to be DRY (Don’t Repeat Yourself).

+

Which brings us to writing a middleware to check the Content-Type header for each incoming request. Lets write a middleware and call it wrap:

+
1    func wrap(next http.Handler) http.Handler {
+2        return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+3            // middleware logic
+4            next.ServeHTTP(w, r)
+5        })
+6    }
+

The wrap function takes in a Handler and returns a Handler, this syntax allows it to be used where we would normally use a request handler, and also allow us to chain multiple middlewares together. Now we can do something like wrap(handler) instead of just using handler, this would call our middleware logic before calling next.ServeHTTP(w, r) which can be the next middleware in the chain or a final call to our request handler.

+

In the following example, we are wrapping our wrap middleware around mux so every incoming request will pass through our middleware first:

+
 1    func main() {
+ 2        mux := http.NewServeMux()
+ 3        mux.HandleFunc("/", rootHandler)
+ 4        http.ListenAndServe(":8080", wrap(mux))
+ 5    }
+ 6
+ 7    func rootHandler(w http.ResponseWriter, r *http.Request) {
+ 8        w.Write([]byte(`{"msg":"Hello world!"}`))
+ 9    }
+10
+11    func wrap(next http.Handler) http.Handler {
+12        return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+13            if r.Header.Get("Content-Type") != "application/json" {
+14                http.Error(w, "Only application/json content type supported", http.StatusUnsupportedMediaType)
+15                return
+16            }
+17            next.ServeHTTP(w, r)
+18        })
+19    }
+

So far we’ve been using a single middleware, lets see multiple middlewares chained together in action. We can define multiple middlewares with the same signature as of wrap, replacing the comment // middleware logic with our code.

+
+
1   func wrap(next http.Handler) http.Handler {
+2       return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+3           // middleware logic
+4           next.ServeHTTP(w, r)
+5       })
+6   }
+
+

Lets rename wrap to enforceJSON, and write another middleware which will log every incoming request’s method and path, and chain them both together:

+
 1    func main() {
+ 2        mux := http.NewServeMux()
+ 3        mux.HandleFunc("/", rootHandler)
+ 4        http.ListenAndServe(":8080", logRequest(enforceJSON(mux)))
+ 5    }
+ 6
+ 7    func rootHandler(w ResponseWriter, r *Request) {
+ 8        w.Write([]byte(`{"msg":"Hello world!"}`))
+ 9    }
+10
+11    func logRequest(next http.Handler) http.Handler {
+12        return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+13            fmt.Println(r.Method, r.URL.Path)   // logs: GET /v1/users/1234
+14            next.ServeHTTP(w, r)
+15        })
+16    }
+17
+18    func enforceJSON(next http.Handler) http.Handler {
+19        return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+20            if r.Header.Get("Content-Type") != "application/json" {
+21                http.Error(w, "Only application/json content type supported", http.StatusUnsupportedMediaType)
+22                return
+23            }
+24            next.ServeHTTP(w, r)
+25        })
+26    }
+

See how we are using logRequest(enforceJSON(mux)) instead of wrap(mux)? Now every incoming HTTP request will be logged and then checked for Content-Type before being passed onto the handler.

+

A cleaner way to chain multiple handlers is writing a single wrap middleware and chain all the middlewares inside wrap:

+
1    func wrap(handler http.Handler) http.Handler {
+2        handler = enforceJSON(handler)
+3        handler = logRequest(handler)
+4        return handler
+5    }
+

And then instead of:

+
1    http.ListenAndServe(":8080", logRequest(enforceJSON(mux)))
+

We can use:

+
1    http.ListenAndServe(":8080", wrap(mux))
+

+

That’s all on middlewares in golang today. Hope it was useful with your understanding on middlewares or how to write them.

+ +
+
+ + + + + + + + + +
+
+ + + + + + + + + + + +
+
+ + +
+ + +
+ + +
+ + + + + + + + + + + + diff --git a/public/posts/writing-your-own-reverse-proxy-using-golang/index.html b/public/posts/writing-your-own-reverse-proxy-using-golang/index.html new file mode 100644 index 0000000..d021f09 --- /dev/null +++ b/public/posts/writing-your-own-reverse-proxy-using-golang/index.html @@ -0,0 +1,485 @@ + + + + + + + + + + + + Writing your own Reverse Proxy server using Golang | Basit's Blog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + +
+ + + + + + + +
+ + + + +
+
+ + +
+
+

+ Writing your own Reverse Proxy server using Golang +

+
+ + + + +
+ + + 5 minute read +
+ + + + + +
+
+ + + +
+

Writing a Reverse Proxy server in Go is a matter of single digit lines of code due to its rock solid standard library and its low level network plumbing capabilities. Recently I came across some use cases where I needed to write my own Reverse Proxy server and of course Go was the pragmatic choice.

+

Let us first start with defining Reverse Proxy and its common uses.

+

Reverse Proxy

+

A Reverse Proxy is an intermediary server that sits between multiple clients and servers, and directs client requests to appropriate backend server. It is commonly used for:

+
    +
  • +

    Load Balancing – It can distribute the load across multiple available backend servers in such manner that maximizes speed and capacity utilization while ensuring no one server is overloaded, which can degrade performance.

    +
  • +
  • +

    Security – By intercepting requests headed for your backend servers, a reverse proxy server protects their identities and acts as an additional defense against security attacks.

    +
  • +
  • +

    Caching – It can cache content to serve, and you can deploy regional proxies to cache content related to specific regions.

    +
  • +
  • +

    TLS Termination – We can use the reverse proxy to terminate the SSL/TLS connection with the clients in cases where backend servers are being hosted on the same secure VPC network, and it’s ok to let the reverse proxy <-> backend server connection insecure.

    +
  • +
  • +

    More – Literally, there are a lot more use cases that can take leverage of reverse proxies, that I leave for you to explore.

    +
  • +
+

Personal Use Cases

+

Some common use cases I personally use reverse proxy server for are:

+
    +
  • +

    TLS Termination – Lets say I have multiple servers running on the same VPC network, each has it’s own copy of the TLS certificate issued to same domain name, it makes sense to let the reverse proxy handle the TLS handshake and terminate the secure connection and forward it insecurely to appropriate backend server on the same VPC isolated from public reach, now instead of having TLS certs on every backend server you can have them on proxy only.

    +
  • +
  • +

    Single VPS Dev Environment – I have multiple backend servers for a single project, each with separate responsibilities, that I need to deploy but the servers would sit ideal 99% of the time I don’t want to spin up multiple VPS for each for a dev environment, which would cost me money, also I don’t want to explicitly mention the port numbers on the client side to have the servers run on the same VPS. To solve this, I can run all the backend servers and reverse proxy on a single VPS, and have the requests proxied to servers running on different ports.

    +
  • +
+

Also sometimes for Authorization, Caching or implementing a feature like Request Limit per client.

+

Let’s Code

+

Enough with the uses, lets jump over to implementation. You are probably already familiar with Go standard library’s net/http package, there’s also a utility package for it you might have or might not have used, that is net/http/httputil. We’ll be using this utility package because it has the type ReverseProxy defined which makes writing a reverse proxy so simple using Go.

+

Conditions

+

Let’s define some condition based on which we’ll be forwarding the requests to appropriate server. For this tutorial lets stick to those conditions being the domain name or host of the requests:

+
    +
  1. If request came on host sub1.xyz.com, forward to localhost:8080.
  2. +
  3. If request came on host sub2.xyz.com, forward to localhost:8181.
  4. +
  5. If request came from an unknown host, forward to localhost:8888.
  6. +
+

main.go

+

Now lets create a main.go file, which will do the following:

+
 1    package main
+ 2
+ 3    import "net/http"
+ 4
+ 5    func main() {
+ 6        http.HandleFunc("/", proxy)
+ 7        if err := http.ListenAndServe(":4433", nil); err != nil {
+ 8            panic(err)
+ 9        }
+10    }
+11
+12    func proxy(w http.ResponseWriter, r *http.Request) {
+13        // We will get to this later ...
+14    }
+

Now that we have a basic server in place, let’s write our conditions for reverse proxy and use it to forward requests inside our proxy handler.

+
 1    package main
+ 2
+ 3    import (
+ 4        "net/http"
+ 5        "net/http/httputil"
+ 6        "net/url"
+ 7        "strings"
+ 8    )
+ 9
+10    func main() {
+11        http.HandleFunc("/", proxy)
+12        if err := http.ListenAndServe(":4433", nil); err != nil {
+13            panic(err)
+14        }
+15    }
+16
+17    func proxy(w http.ResponseWriter, r *http.Request) {
+18        if strings.HasSuffix(r.Host, "://sub1.xyz.com") { // forward requests from sub1.xyz.com to localhost:8080
+19            if url, err := url.Parse("http://localhost:8080"); err == nil {
+20                proxy := httputil.NewSingleHostReverseProxy(url)
+21                proxy.ServeHTTP(w, r)
+22            }
+23        } else if strings.HasSuffix(r.Host, "://sub2.xyz.com") { // forward requests from sub2.xyz.com to localhost:8181
+24            if url, err := url.Parse("http://localhost:8181"); err == nil {
+25                proxy := httputil.NewSingleHostReverseProxy(url)
+26                proxy.ServeHTTP(w, r)
+27            }
+28        } else { // forward requests from unknown host to localhost:8888
+29            if url, err := url.Parse("http://localhost:8888"); err == nil {
+30                proxy := httputil.NewSingleHostReverseProxy(url)
+31                proxy.ServeHTTP(w, r)
+32            }
+33        }
+34    }
+

The httputil’s NewSingleHostReverseProxy(url) function returns a new ReverseProxy that routes requests to url provided. And that’s all, or what minimal we need to run a reverse proxy based on conditions we defined.

+

But there are many ways we can refactor this code, starting from using predefined proxy objects instead of creating a new one on each request. Or I prefer a map map[string]*httputil.ReverseProxy which maps hosts to proxies, so we can use the map to check if a proxy exists for host then use it, else use the default one. I’ll leave the refactoring to anyone following this tutorial to keep it short.

+

Next Steps

+

Though it is pretty simple to write a reverse proxy using Go’s standard library, but it’s missing a lot of good stuff that comes with nginx or other solutions available. So you can start by implementing some of them into your own reverse proxy that is if the available solutions aren’t feasible and you are having to develop your own, like:

+
    +
  • Caching
  • +
  • Logging
  • +
  • Protocol Support (HTTP, HTTPS, HTTP/1.1, HTTP/2, …)
  • +
  • Rate Limit
  • +
  • TLS Support
  • +
  • Load Balancing
  • +
  • +
+ +
+
+ + + + + + + + + +
+
+ + + + + + + + + + + +
+
+ + +
+ + +
+ + +
+ + + + + + + + + + + + diff --git a/public/sitemap.xml b/public/sitemap.xml new file mode 100644 index 0000000..cf4b646 --- /dev/null +++ b/public/sitemap.xml @@ -0,0 +1,49 @@ + + + + https://blog.rjbasitali.com/ + 2021-10-12T22:05:04+05:00 + + https://blog.rjbasitali.com/tags/go/ + 2021-10-12T22:05:04+05:00 + + https://blog.rjbasitali.com/tags/golang/ + 2021-10-12T22:05:04+05:00 + + https://blog.rjbasitali.com/posts/ + 2021-10-12T22:05:04+05:00 + + https://blog.rjbasitali.com/tags/proxy/ + 2021-10-12T22:05:04+05:00 + + https://blog.rjbasitali.com/tags/reverse-proxy/ + 2021-10-12T22:05:04+05:00 + + https://blog.rjbasitali.com/tags/ + 2021-10-12T22:05:04+05:00 + + https://blog.rjbasitali.com/posts/writing-your-own-reverse-proxy-using-golang/ + 2021-10-12T22:05:04+05:00 + + https://blog.rjbasitali.com/tags/handler/ + 2021-08-01T22:05:04+05:00 + + https://blog.rjbasitali.com/tags/http/ + 2021-08-01T22:05:04+05:00 + + https://blog.rjbasitali.com/tags/middleware/ + 2021-08-01T22:05:04+05:00 + + https://blog.rjbasitali.com/posts/writing-a-golang-middleware-for-your-http-handler/ + 2021-08-01T22:05:04+05:00 + + https://blog.rjbasitali.com/contact/ + 2021-08-01T16:26:01+05:00 + + https://blog.rjbasitali.com/about/ + 2021-07-31T22:39:25+05:00 + + https://blog.rjbasitali.com/categories/ + + diff --git a/public/tags/go/index.html b/public/tags/go/index.html new file mode 100644 index 0000000..cab47ea --- /dev/null +++ b/public/tags/go/index.html @@ -0,0 +1,142 @@ + + + + + + + + + + + + Basit's Blog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + +
+ + + + + + +
+ + +
+ + +
+ + +
+ + + + + + diff --git a/public/tags/go/index.xml b/public/tags/go/index.xml new file mode 100644 index 0000000..d3f99fd --- /dev/null +++ b/public/tags/go/index.xml @@ -0,0 +1,23 @@ + + + + go on Basit's Blog + https://blog.rjbasitali.com/tags/go/ + Recent content in go on Basit's Blog + Hugo -- gohugo.io + en-us + Basit Ali + Tue, 12 Oct 2021 22:05:04 +0500 + + Writing your own Reverse Proxy server using Golang + https://blog.rjbasitali.com/posts/writing-your-own-reverse-proxy-using-golang/ + Tue, 12 Oct 2021 22:05:04 +0500 + + https://blog.rjbasitali.com/posts/writing-your-own-reverse-proxy-using-golang/ + Writing a Reverse Proxy server in Go is a matter of single digit lines of code due to its rock solid standard library and its low level network plumbing capabilities. Recently I came across some use cases where I needed to write my own Reverse Proxy server and of course Go was the pragmatic choice. +Let us first start with defining Reverse Proxy and its common uses. +Reverse Proxy A Reverse Proxy is an intermediary server that sits between multiple clients and servers, and directs client requests to appropriate backend server. + + + + diff --git a/public/tags/go/page/1/index.html b/public/tags/go/page/1/index.html new file mode 100644 index 0000000..efa84c2 --- /dev/null +++ b/public/tags/go/page/1/index.html @@ -0,0 +1,10 @@ + + + + https://blog.rjbasitali.com/tags/go/ + + + + + + diff --git a/public/tags/golang/index.html b/public/tags/golang/index.html new file mode 100644 index 0000000..d1bff37 --- /dev/null +++ b/public/tags/golang/index.html @@ -0,0 +1,153 @@ + + + + + + + + + + + + Basit's Blog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + +
+ + + + + + +
+ + +
+ + +
+ + +
+ + + + + + diff --git a/public/tags/golang/index.xml b/public/tags/golang/index.xml new file mode 100644 index 0000000..2b10b51 --- /dev/null +++ b/public/tags/golang/index.xml @@ -0,0 +1,32 @@ + + + + golang on Basit's Blog + https://blog.rjbasitali.com/tags/golang/ + Recent content in golang on Basit's Blog + Hugo -- gohugo.io + en-us + Basit Ali + Tue, 12 Oct 2021 22:05:04 +0500 + + Writing your own Reverse Proxy server using Golang + https://blog.rjbasitali.com/posts/writing-your-own-reverse-proxy-using-golang/ + Tue, 12 Oct 2021 22:05:04 +0500 + + https://blog.rjbasitali.com/posts/writing-your-own-reverse-proxy-using-golang/ + Writing a Reverse Proxy server in Go is a matter of single digit lines of code due to its rock solid standard library and its low level network plumbing capabilities. Recently I came across some use cases where I needed to write my own Reverse Proxy server and of course Go was the pragmatic choice. +Let us first start with defining Reverse Proxy and its common uses. +Reverse Proxy A Reverse Proxy is an intermediary server that sits between multiple clients and servers, and directs client requests to appropriate backend server. + + + + Writing a Middleware for your HTTP handler – Golang + https://blog.rjbasitali.com/posts/writing-a-golang-middleware-for-your-http-handler/ + Sun, 01 Aug 2021 22:05:04 +0500 + + https://blog.rjbasitali.com/posts/writing-a-golang-middleware-for-your-http-handler/ + If you are a backend developer working daily with HTTP requests then you have most likely already encountered situations where you want a common functionality across all the incoming HTTP requests, which can be as simple as checking if the Content-Type header only has the value application/json if you only support json, or maybe you want to spoof your HTTP request to change the method type from POST,GET or PUT to something else based on the X-HTTP-Method-Override header, or of course authenticate before finally passing the request to the destination HTTP handler. + + + + diff --git a/public/tags/golang/page/1/index.html b/public/tags/golang/page/1/index.html new file mode 100644 index 0000000..54e8190 --- /dev/null +++ b/public/tags/golang/page/1/index.html @@ -0,0 +1,10 @@ + + + + https://blog.rjbasitali.com/tags/golang/ + + + + + + diff --git a/public/tags/handler/index.html b/public/tags/handler/index.html new file mode 100644 index 0000000..901bee0 --- /dev/null +++ b/public/tags/handler/index.html @@ -0,0 +1,142 @@ + + + + + + + + + + + + Basit's Blog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + +
+ + + + + + +
+ + +
+ + +
+ + +
+ + + + + + diff --git a/public/tags/handler/index.xml b/public/tags/handler/index.xml new file mode 100644 index 0000000..456faad --- /dev/null +++ b/public/tags/handler/index.xml @@ -0,0 +1,21 @@ + + + + handler on Basit's Blog + https://blog.rjbasitali.com/tags/handler/ + Recent content in handler on Basit's Blog + Hugo -- gohugo.io + en-us + Basit Ali + Sun, 01 Aug 2021 22:05:04 +0500 + + Writing a Middleware for your HTTP handler – Golang + https://blog.rjbasitali.com/posts/writing-a-golang-middleware-for-your-http-handler/ + Sun, 01 Aug 2021 22:05:04 +0500 + + https://blog.rjbasitali.com/posts/writing-a-golang-middleware-for-your-http-handler/ + If you are a backend developer working daily with HTTP requests then you have most likely already encountered situations where you want a common functionality across all the incoming HTTP requests, which can be as simple as checking if the Content-Type header only has the value application/json if you only support json, or maybe you want to spoof your HTTP request to change the method type from POST,GET or PUT to something else based on the X-HTTP-Method-Override header, or of course authenticate before finally passing the request to the destination HTTP handler. + + + + diff --git a/public/tags/handler/page/1/index.html b/public/tags/handler/page/1/index.html new file mode 100644 index 0000000..bc1c57a --- /dev/null +++ b/public/tags/handler/page/1/index.html @@ -0,0 +1,10 @@ + + + + https://blog.rjbasitali.com/tags/handler/ + + + + + + diff --git a/public/tags/http/index.html b/public/tags/http/index.html new file mode 100644 index 0000000..0ca6f66 --- /dev/null +++ b/public/tags/http/index.html @@ -0,0 +1,142 @@ + + + + + + + + + + + + Basit's Blog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + +
+ + + + + + +
+ + +
+ + +
+ + +
+ + + + + + diff --git a/public/tags/http/index.xml b/public/tags/http/index.xml new file mode 100644 index 0000000..a9d4b86 --- /dev/null +++ b/public/tags/http/index.xml @@ -0,0 +1,21 @@ + + + + http on Basit's Blog + https://blog.rjbasitali.com/tags/http/ + Recent content in http on Basit's Blog + Hugo -- gohugo.io + en-us + Basit Ali + Sun, 01 Aug 2021 22:05:04 +0500 + + Writing a Middleware for your HTTP handler – Golang + https://blog.rjbasitali.com/posts/writing-a-golang-middleware-for-your-http-handler/ + Sun, 01 Aug 2021 22:05:04 +0500 + + https://blog.rjbasitali.com/posts/writing-a-golang-middleware-for-your-http-handler/ + If you are a backend developer working daily with HTTP requests then you have most likely already encountered situations where you want a common functionality across all the incoming HTTP requests, which can be as simple as checking if the Content-Type header only has the value application/json if you only support json, or maybe you want to spoof your HTTP request to change the method type from POST,GET or PUT to something else based on the X-HTTP-Method-Override header, or of course authenticate before finally passing the request to the destination HTTP handler. + + + + diff --git a/public/tags/http/page/1/index.html b/public/tags/http/page/1/index.html new file mode 100644 index 0000000..fb99379 --- /dev/null +++ b/public/tags/http/page/1/index.html @@ -0,0 +1,10 @@ + + + + https://blog.rjbasitali.com/tags/http/ + + + + + + diff --git a/public/tags/index.html b/public/tags/index.html new file mode 100644 index 0000000..43cb9dc --- /dev/null +++ b/public/tags/index.html @@ -0,0 +1,141 @@ + + + + + + + + + + + + Basit's Blog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + +
+ + +
+ + +
+ + + + + + diff --git a/public/tags/index.xml b/public/tags/index.xml new file mode 100644 index 0000000..1acbaba --- /dev/null +++ b/public/tags/index.xml @@ -0,0 +1,75 @@ + + + + Tags on Basit's Blog + https://blog.rjbasitali.com/tags/ + Recent content in Tags on Basit's Blog + Hugo -- gohugo.io + en-us + Basit Ali + Tue, 12 Oct 2021 22:05:04 +0500 + + go + https://blog.rjbasitali.com/tags/go/ + Tue, 12 Oct 2021 22:05:04 +0500 + + https://blog.rjbasitali.com/tags/go/ + + + + + golang + https://blog.rjbasitali.com/tags/golang/ + Tue, 12 Oct 2021 22:05:04 +0500 + + https://blog.rjbasitali.com/tags/golang/ + + + + + proxy + https://blog.rjbasitali.com/tags/proxy/ + Tue, 12 Oct 2021 22:05:04 +0500 + + https://blog.rjbasitali.com/tags/proxy/ + + + + + reverse-proxy + https://blog.rjbasitali.com/tags/reverse-proxy/ + Tue, 12 Oct 2021 22:05:04 +0500 + + https://blog.rjbasitali.com/tags/reverse-proxy/ + + + + + handler + https://blog.rjbasitali.com/tags/handler/ + Sun, 01 Aug 2021 22:05:04 +0500 + + https://blog.rjbasitali.com/tags/handler/ + + + + + http + https://blog.rjbasitali.com/tags/http/ + Sun, 01 Aug 2021 22:05:04 +0500 + + https://blog.rjbasitali.com/tags/http/ + + + + + middleware + https://blog.rjbasitali.com/tags/middleware/ + Sun, 01 Aug 2021 22:05:04 +0500 + + https://blog.rjbasitali.com/tags/middleware/ + + + + + diff --git a/public/tags/middleware/index.html b/public/tags/middleware/index.html new file mode 100644 index 0000000..6a1a54e --- /dev/null +++ b/public/tags/middleware/index.html @@ -0,0 +1,142 @@ + + + + + + + + + + + + Basit's Blog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + +
+ + + + + + +
+ + +
+ + +
+ + +
+ + + + + + diff --git a/public/tags/middleware/index.xml b/public/tags/middleware/index.xml new file mode 100644 index 0000000..4809def --- /dev/null +++ b/public/tags/middleware/index.xml @@ -0,0 +1,21 @@ + + + + middleware on Basit's Blog + https://blog.rjbasitali.com/tags/middleware/ + Recent content in middleware on Basit's Blog + Hugo -- gohugo.io + en-us + Basit Ali + Sun, 01 Aug 2021 22:05:04 +0500 + + Writing a Middleware for your HTTP handler – Golang + https://blog.rjbasitali.com/posts/writing-a-golang-middleware-for-your-http-handler/ + Sun, 01 Aug 2021 22:05:04 +0500 + + https://blog.rjbasitali.com/posts/writing-a-golang-middleware-for-your-http-handler/ + If you are a backend developer working daily with HTTP requests then you have most likely already encountered situations where you want a common functionality across all the incoming HTTP requests, which can be as simple as checking if the Content-Type header only has the value application/json if you only support json, or maybe you want to spoof your HTTP request to change the method type from POST,GET or PUT to something else based on the X-HTTP-Method-Override header, or of course authenticate before finally passing the request to the destination HTTP handler. + + + + diff --git a/public/tags/middleware/page/1/index.html b/public/tags/middleware/page/1/index.html new file mode 100644 index 0000000..34d558d --- /dev/null +++ b/public/tags/middleware/page/1/index.html @@ -0,0 +1,10 @@ + + + + https://blog.rjbasitali.com/tags/middleware/ + + + + + + diff --git a/public/tags/proxy/index.html b/public/tags/proxy/index.html new file mode 100644 index 0000000..6fa4654 --- /dev/null +++ b/public/tags/proxy/index.html @@ -0,0 +1,142 @@ + + + + + + + + + + + + Basit's Blog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + +
+ + + + + + +
+ + +
+ + +
+ + +
+ + + + + + diff --git a/public/tags/proxy/index.xml b/public/tags/proxy/index.xml new file mode 100644 index 0000000..26e6784 --- /dev/null +++ b/public/tags/proxy/index.xml @@ -0,0 +1,23 @@ + + + + proxy on Basit's Blog + https://blog.rjbasitali.com/tags/proxy/ + Recent content in proxy on Basit's Blog + Hugo -- gohugo.io + en-us + Basit Ali + Tue, 12 Oct 2021 22:05:04 +0500 + + Writing your own Reverse Proxy server using Golang + https://blog.rjbasitali.com/posts/writing-your-own-reverse-proxy-using-golang/ + Tue, 12 Oct 2021 22:05:04 +0500 + + https://blog.rjbasitali.com/posts/writing-your-own-reverse-proxy-using-golang/ + Writing a Reverse Proxy server in Go is a matter of single digit lines of code due to its rock solid standard library and its low level network plumbing capabilities. Recently I came across some use cases where I needed to write my own Reverse Proxy server and of course Go was the pragmatic choice. +Let us first start with defining Reverse Proxy and its common uses. +Reverse Proxy A Reverse Proxy is an intermediary server that sits between multiple clients and servers, and directs client requests to appropriate backend server. + + + + diff --git a/public/tags/proxy/page/1/index.html b/public/tags/proxy/page/1/index.html new file mode 100644 index 0000000..d6b0923 --- /dev/null +++ b/public/tags/proxy/page/1/index.html @@ -0,0 +1,10 @@ + + + + https://blog.rjbasitali.com/tags/proxy/ + + + + + + diff --git a/public/tags/reverse-proxy/index.html b/public/tags/reverse-proxy/index.html new file mode 100644 index 0000000..1d828ab --- /dev/null +++ b/public/tags/reverse-proxy/index.html @@ -0,0 +1,142 @@ + + + + + + + + + + + + Basit's Blog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + +
+ + + + + + +
+ + +
+ + +
+ + +
+ + + + + + diff --git a/public/tags/reverse-proxy/index.xml b/public/tags/reverse-proxy/index.xml new file mode 100644 index 0000000..50ded3d --- /dev/null +++ b/public/tags/reverse-proxy/index.xml @@ -0,0 +1,23 @@ + + + + reverse-proxy on Basit's Blog + https://blog.rjbasitali.com/tags/reverse-proxy/ + Recent content in reverse-proxy on Basit's Blog + Hugo -- gohugo.io + en-us + Basit Ali + Tue, 12 Oct 2021 22:05:04 +0500 + + Writing your own Reverse Proxy server using Golang + https://blog.rjbasitali.com/posts/writing-your-own-reverse-proxy-using-golang/ + Tue, 12 Oct 2021 22:05:04 +0500 + + https://blog.rjbasitali.com/posts/writing-your-own-reverse-proxy-using-golang/ + Writing a Reverse Proxy server in Go is a matter of single digit lines of code due to its rock solid standard library and its low level network plumbing capabilities. Recently I came across some use cases where I needed to write my own Reverse Proxy server and of course Go was the pragmatic choice. +Let us first start with defining Reverse Proxy and its common uses. +Reverse Proxy A Reverse Proxy is an intermediary server that sits between multiple clients and servers, and directs client requests to appropriate backend server. + + + + diff --git a/public/tags/reverse-proxy/page/1/index.html b/public/tags/reverse-proxy/page/1/index.html new file mode 100644 index 0000000..7030047 --- /dev/null +++ b/public/tags/reverse-proxy/page/1/index.html @@ -0,0 +1,10 @@ + + + + https://blog.rjbasitali.com/tags/reverse-proxy/ + + + + + + diff --git a/resources/_gen/assets/scss/scss/style.scss_17a317b87063135b4df76ed814d78726.content b/resources/_gen/assets/scss/scss/style.scss_17a317b87063135b4df76ed814d78726.content new file mode 100644 index 0000000..2324144 --- /dev/null +++ b/resources/_gen/assets/scss/scss/style.scss_17a317b87063135b4df76ed814d78726.content @@ -0,0 +1,3 @@ +.inline{display:inline}.block{display:block}.inline-block{display:inline-block}.table{display:table}.table-cell{display:table-cell}.overflow-hidden{overflow:hidden}.overflow-scroll{overflow:scroll}.overflow-auto{overflow:auto}.clearfix:before,.clearfix:after{display:table;content:" "}.clearfix:after{clear:both}.left{float:left}.right{float:right}.fit{max-width:100%}.truncate{display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.max-width-1{max-width:24rem}.max-width-2{max-width:32rem}.max-width-3{max-width:48rem}.max-width-4{max-width:64rem}.border-box{box-sizing:border-box}.m0{margin:0}.mt0{margin-top:0}.mr0{margin-right:0}.mb0{margin-bottom:0}.ml0{margin-left:0}.mx0{margin-right:0;margin-left:0}.my0{margin-top:0;margin-bottom:0}.m1{margin:.5rem}.mt1{margin-top:.5rem}.mr1{margin-right:.5rem}.mb1{margin-bottom:.5rem}.ml1{margin-left:.5rem}.mx1{margin-right:.5rem;margin-left:.5rem}.my1{margin-top:.5rem;margin-bottom:.5rem}.m2{margin:1rem}.mt2{margin-top:1rem}.mr2{margin-right:1rem}.mb2{margin-bottom:1rem}.ml2{margin-left:1rem}.mx2{margin-right:1rem;margin-left:1rem}.my2{margin-top:1rem;margin-bottom:1rem}.m3{margin:2rem}.mt3{margin-top:2rem}.mr3{margin-right:2rem}.mb3{margin-bottom:2rem}.ml3{margin-left:2rem}.mx3{margin-right:2rem;margin-left:2rem}.my3{margin-top:2rem;margin-bottom:2rem}.m4{margin:4rem}.mt4{margin-top:4rem}.mr4{margin-right:4rem}.mb4{margin-bottom:4rem}.ml4{margin-left:4rem}.mx4{margin-right:4rem;margin-left:4rem}.my4{margin-top:4rem;margin-bottom:4rem}.mxn1{margin-right:-.5rem;margin-left:-.5rem}.mxn2{margin-right:-1rem;margin-left:-1rem}.mxn3{margin-right:-2rem;margin-left:-2rem}.mxn4{margin-right:-4rem;margin-left:-4rem}.ml-auto{margin-left:auto}.mr-auto{margin-right:auto}.mx-auto{margin-right:auto;margin-left:auto}.p0{padding:0}.pt0{padding-top:0}.pr0{padding-right:0}.pb0{padding-bottom:0}.pl0{padding-left:0}.px0{padding-right:0;padding-left:0}.py0{padding-top:0;padding-bottom:0}.p1{padding:.5rem}.pt1{padding-top:.5rem}.pr1{padding-right:.5rem}.pb1{padding-bottom:.5rem}.pl1{padding-left:.5rem}.py1{padding-top:.5rem;padding-bottom:.5rem}.px1{padding-right:.5rem;padding-left:.5rem}.p2{padding:1rem}.pt2{padding-top:1rem}.pr2{padding-right:1rem}.pb2{padding-bottom:1rem}.pl2{padding-left:1rem}.py2{padding-top:1rem;padding-bottom:1rem}.px2{padding-right:1rem;padding-left:1rem}.p3{padding:2rem}.pt3{padding-top:2rem}.pr3{padding-right:2rem}.pb3{padding-bottom:2rem}.pl3{padding-left:2rem}.py3{padding-top:2rem;padding-bottom:2rem}.px3{padding-right:2rem;padding-left:2rem}.p4{padding:4rem}.pt4{padding-top:4rem}.pr4{padding-right:4rem}.pb4{padding-bottom:4rem}.pl4{padding-left:4rem}.py4{padding-top:4rem;padding-bottom:4rem}.px4{padding-right:4rem;padding-left:4rem}h1,.h1{display:block;margin-top:3rem;margin-bottom:1rem;color:#2bbc8a;letter-spacing:.01em;font-weight:700;font-style:normal;font-size:1.5em;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}h2,.h2{position:relative;display:block;margin-top:2rem;margin-bottom:.5rem;color:#383838;text-transform:none;letter-spacing:normal;font-weight:bold;font-size:1rem}h3{color:#383838;text-decoration:underline;font-weight:bold;font-size:.9rem}h4 h5 h6{display:inline;text-decoration:none;color:#8c8c8c;font-weight:bold;font-size:.9rem}h3 h4 h5 h6{margin-top:.9rem;margin-bottom:.5rem}hr{border:0.5px dashed #8c8c8c;opacity:.5;margin:0;margin-top:20px;margin-bottom:20px}strong{font-weight:bold}em cite{font-style:italic}sup sub{position:relative;vertical-align:baseline;font-size:.75em;line-height:0}sup{top:-.5em}sub{bottom:-.2em}small{font-size:.85em}acronym abbr{border-bottom:1px dotted}ul ol dl{line-height:1.725}ul ul,ol ul,ul ol,ol ol{margin-top:0;margin-bottom:0}ol{list-style:decimal}dt{font-weight:bold}table{width:100%;border-collapse:collapse;text-align:left;font-size:12px;overflow:auto;display:block}th{padding:8px;border-bottom:1px dashed #666;color:#383838;font-weight:bold;font-size:13px}td{padding:0 8px;border-bottom:none}@font-face{font-style:normal;font-family:"JetBrains Mono";font-display:swap;src:local("JetBrains Mono"),local("JetBrains-Mono"),url("../lib/JetBrainsMono/web/woff2/JetBrainsMono-Regular.woff2") format("woff2"),url("../lib/JetBrainsMono/web/woff/JetBrainsMono-Regular.woff") format("woff"),url("../lib/JetBrainsMono/web/eot/JetBrainsMono-Regular.eot") format("embedded-opentype"),url("../lib/JetBrainsMono/ttf/JetBrainsMono-Regular.ttf") format("truetype")}*,*:before,*:after{box-sizing:border-box}html{margin:0;padding:0;height:100%;border-top:2px solid #383838;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0;height:100%;background-color:#fff;color:#383838;font-display:swap;font-weight:400;font-size:14px;font-family:"JetBrains Mono",monospace;line-height:1.725;text-rendering:geometricPrecision;flex:1;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}.content{position:relative;display:flex;flex-direction:column;min-height:100%;overflow-wrap:break-word}.content p{hyphens:auto;-moz-hyphens:auto;-ms-hyphens:auto;-webkit-hyphens:auto}.content code{hyphens:manual;-moz-hyphens:manual;-ms-hyphens:manual;-webkit-hyphens:manual}.content a{color:#383838;text-decoration:none;background-image:linear-gradient(transparent, transparent 5px, #383838 5px, #383838);background-position:bottom;background-size:100% 6px;background-repeat:repeat-x}.content a:hover{background-image:linear-gradient(transparent, transparent 4px, #d480aa 4px, #d480aa)}.content a.icon{background:none}.content a.icon:hover{color:#d480aa}.content h1 a,.content .h1 a,.content h2 a,.content h3 a,.content h4 a,.content h5 a,.content h6 a{background:none;color:inherit;text-decoration:none}.content h1 a:hover,.content .h1 a:hover,.content h2 a:hover,.content h3 a:hover,.content h4 a:hover,.content h5 a:hover,.content h6 a:hover{background-image:linear-gradient(transparent, transparent 6px, #d480aa 6px, #d480aa);background-position:bottom;background-size:100% 6px;background-repeat:repeat-x}.content h6 a{background:none;color:inherit;text-decoration:none}.content h6 a:hover{background-image:linear-gradient(transparent, transparent 6px, #d480aa 6px, #d480aa);background-position:bottom;background-size:100% 6px;background-repeat:repeat-x}@media (min-width: 540px){.image-wrap{flex-direction:row;margin-bottom:2rem}.image-wrap .image-block{flex:1 0 35%;margin-right:2rem}.image-wrap p{flex:1 0 65%}}.max-width{max-width:48rem}@media (max-width: 480px){.px3{padding-right:1rem;padding-left:1rem}.my4{margin-top:2rem;margin-bottom:2rem}}@media (min-width: 480px){p{text-align:justify}}#header{margin:0 auto 2rem;width:100%}#header h1,#header .h1{margin-top:0;margin-bottom:0;color:#383838;letter-spacing:.01em;font-weight:700;font-style:normal;font-size:1.5rem;line-height:2rem;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}#header a{background:none;color:inherit;text-decoration:none}#header #logo{display:inline-block;float:left;margin-right:20px;width:50px;height:50px;border-radius:5px;background-size:50px 50px;background-repeat:no-repeat;filter:grayscale(100%);-webkit-filter:grayscale(100%)}#header #nav{color:#2bbc8a;letter-spacing:.01em;font-weight:200;font-style:normal;font-size:.8rem}#header #nav ul{margin:0;padding:0;list-style-type:none;line-height:15px}#header #nav ul a{margin-right:15px;color:#2bbc8a}#header #nav ul a:hover{background-image:linear-gradient(transparent, transparent 5px, #2bbc8a 5px, #2bbc8a);background-position:bottom;background-size:100% 6px;background-repeat:repeat-x}#header #nav ul li{display:inline-block;margin-right:15px;border-right:1px dotted;border-color:#2bbc8a;vertical-align:middle}#header #nav ul .icon{display:none}#header #nav ul li:last-child{margin-right:0;border-right:0}#header #nav ul li:last-child a{margin-right:0}#header:hover #logo{filter:none;-webkit-filter:none}@media screen and (max-width: 480px){#header #title{display:table;margin-right:5rem;min-height:50px}#header #title h1{display:table-cell;vertical-align:middle}#header #nav ul a:hover{background:none}#header #nav ul li{display:none;border-right:0}#header #nav ul li.icon{position:absolute;top:77px;right:1rem;display:inline-block}#header #nav ul.responsive li{display:block}#header #nav li:not(:first-child){padding-top:1rem;padding-left:70px;font-size:1rem}}#header-post{position:fixed;top:2rem;right:0;display:inline-block;float:right;z-index:100}#header-post a{background:none;color:inherit;text-decoration:none}#header-post a.icon{background:none}#header-post a.icon:hover{color:#d480aa}#header-post nav ul{display:block;list-style-image:none;list-style-position:outside;list-style-type:none;padding-inline-start:40px}#header-post nav ul li{display:list-item;margin-right:0px}#header-post nav>ul{margin-block-end:1em;margin-block-start:1em}#header-post ul{display:inline-block;margin:0;padding:0;list-style-type:none}#header-post ul li{display:inline-block;margin-right:15px;vertical-align:middle}#header-post ul li:last-child{margin-right:0}#header-post #menu-icon{float:right;margin-right:2rem;margin-left:15px}#header-post #menu-icon:hover{color:#2bbc8a}#header-post #menu-icon-tablet{float:right;margin-right:2rem;margin-left:15px}#header-post #menu-icon-tablet:hover{color:#2bbc8a}#header-post #top-icon-tablet{position:fixed;right:2rem;bottom:2rem;margin-right:2rem;margin-left:15px}#header-post #top-icon-tablet:hover{color:#2bbc8a}#header-post .active{color:#2bbc8a}#header-post #menu{visibility:hidden;margin-right:2rem}#header-post #nav{color:#2bbc8a;letter-spacing:.01em;font-weight:200;font-style:normal;font-size:.8rem}#header-post #nav ul{line-height:15px}#header-post #nav ul a{margin-right:15px;color:#2bbc8a}#header-post #nav ul a:hover{background-image:linear-gradient(transparent, transparent 5px, #2bbc8a 5px, #2bbc8a);background-position:bottom;background-size:100% 6px;background-repeat:repeat-x}#header-post #nav ul li{border-right:1px dotted #2bbc8a}#header-post #nav ul li:last-child{margin-right:0;border-right:0}#header-post #nav ul li:last-child a{margin-right:0}#header-post #actions{float:right;margin-top:2rem;margin-right:2rem;width:100%;text-align:right}#header-post #actions ul{display:block}#header-post #actions .info{display:block;font-style:italic}#header-post #share{clear:both;padding-top:1rem;padding-right:2rem;text-align:right}#header-post #share li{display:block;margin:0}#header-post #toc{float:right;clear:both;overflow:auto;margin-top:1rem;padding-right:2rem;max-width:20em;max-height:calc(95vh - 7rem);text-align:right}#header-post #toc a:hover{color:#d480aa}#header-post #toc nav>ul>li{color:#383838;font-size:.8rem}#header-post #toc nav>ul>li:before{color:#2bbc8a;content:"#";margin-right:8px}#header-post #toc nav>ul>li>ul>li{color:#666;font-size:.7rem}#header-post #toc nav>ul>li>ul>li:before{color:#2bbc8a;content:"·";font-weight:bold;margin-right:3px}#header-post #toc nav>ul>li>ul>li>ul>li{color:#333;font-size:.4rem}#header-post #toc .toc-level-5{display:none}#header-post #toc .toc-level-6{display:none}#header-post #toc .toc-number{display:none}@media screen and (max-width: 500px){#header-post{display:none}}@media screen and (max-width: 900px){#header-post #menu-icon{display:none}#header-post #actions{display:none}}@media screen and (max-width: 1199px){#header-post #toc{display:none}}@media screen and (min-width: 900px){#header-post #menu-icon-tablet{display:none !important}#header-post #top-icon-tablet{display:none !important}}@media screen and (min-width: 1199px){#header-post #actions{width:auto}#header-post #actions ul{display:inline-block;float:right}#header-post #actions .info{display:inline;float:left;margin-right:2rem;font-style:italic}}#footer-post{position:fixed;right:0;bottom:0;left:0;z-index:5000000;width:100%;border-top:1px solid #666;background:#fafafa;transition:opacity .2s}#footer-post a{background:none;color:inherit;text-decoration:none}#footer-post a.icon{background:none}#footer-post a.icon:hover{color:#d480aa}#footer-post #nav-footer{padding-right:1rem;padding-left:1rem;background:#e6e6e6;text-align:center}#footer-post #nav-footer a{color:#2bbc8a;font-size:1em}#footer-post #nav-footer a:hover{background-image:linear-gradient(transparent, transparent 5px, #2bbc8a 5px, #2bbc8a);background-position:bottom;background-size:100% 6px;background-repeat:repeat-x}#footer-post #nav-footer ul{display:table;margin:0;padding:0;width:100%;list-style-type:none}#footer-post #nav-footer ul li{display:inline-table;padding:10px;width:20%;vertical-align:middle}#footer-post #actions-footer{overflow:auto;margin-top:1rem;margin-bottom:1rem;padding-right:1rem;padding-left:1rem;width:100%;text-align:center;white-space:nowrap}#footer-post #actions-footer a{display:inline-block;padding-left:1rem;color:#2bbc8a}#footer-post #share-footer{padding-right:1rem;padding-left:1rem;background:#e6e6e6;text-align:center}#footer-post #share-footer ul{display:table;margin:0;padding:0;width:100%;list-style-type:none}#footer-post #share-footer ul li{display:inline-table;padding:10px;width:20%;vertical-align:middle}#footer-post #toc-footer{clear:both;padding-top:1rem;padding-bottom:1rem;background:#e6e6e6;text-align:left}#footer-post #toc-footer #TableOfContents ul{margin:0;padding-left:20px;list-style-type:none}#footer-post #toc-footer #TableOfContents ul li{line-height:30px}#footer-post #toc-footer a:hover{color:#d480aa}#footer-post #toc-footer #TableOfContents>ul>li{color:#383838;font-size:.8rem}#footer-post #toc-footer #TableOfContents>ul>li:before{color:#2bbc8a;content:"#";margin-right:8px}#footer-post #toc-footer #TableOfContents>ul>li>ul>li{color:#666;font-size:.7rem;line-height:15px}#footer-post #toc-footer #TableOfContents>ul>li>ul>li:before{color:#2bbc8a;content:"·";font-weight:bold;margin-right:3px}#footer-post #toc-footer #TableOfContents>ul>li>ul>li>ul>li{display:none}@media screen and (min-width: 500px){#footer-post-container{display:none}}.post-list{padding:0}.post-list .post-item{margin-bottom:1rem;margin-left:0;list-style-type:none}.post-list .post-item .meta{display:block;margin-right:16px;min-width:100px;color:#666;font-size:14px}@media (min-width: 480px){.post-list .post-item{display:flex;margin-bottom:5px}.post-list .post-item .meta{text-align:left}}.project-list{padding:0;list-style:none}.project-list .project-item{margin-bottom:5px}.project-list .project-item p{display:inline}article header .posttitle{margin-top:0;margin-bottom:0;text-transform:none;font-size:1.5em;line-height:1.25}article header .meta{margin-top:0;margin-bottom:1rem}article header .meta *{color:#8c8c8c;font-size:.85rem}article header .author{text-transform:uppercase;letter-spacing:.01em;font-weight:700}article header .postdate{display:inline}article .content h2:before{position:absolute;top:-4px;left:-1rem;color:#2bbc8a;content:"#";font-weight:bold;font-size:1.2rem}article .content img,article .content video{display:block;margin:auto;max-width:100%;height:auto}article .content img .video-container,article .content video .video-container{position:relative;overflow:hidden;padding-top:56.25% e;height:0}article .content img .video-container iframe,article .content img .video-container object,article .content img .video-container embed,article .content video .video-container iframe,article .content video .video-container object,article .content video .video-container embed{position:absolute;top:0;left:0;margin-top:0;width:100%;height:100%}article .content img blockquote,article .content video blockquote{margin:1rem 10px;padding:.5em 10px;background:inherit;color:#2bbc8a;quotes:"\201C" "\201D" "\2018" "\2019";font-weight:bold}article .content img blockquote p,article .content video blockquote p{margin:0}article .content img blockquote:before,article .content video blockquote:before{margin-right:.25em;color:#2bbc8a;content:"\201C";vertical-align:-.4em;font-size:2em;line-height:.1em}article .content img blockquote footer,article .content video blockquote footer{margin:line-height 0;color:#666;font-size:11px}article .content img blockquote footer a,article .content video blockquote footer a{background-image:linear-gradient(transparent, transparent 5px, #666 5px, #666);color:#666}article .content img blockquote footer a:hover,article .content video blockquote footer a:hover{background-image:linear-gradient(transparent, transparent 4px, #999 4px, #999);color:#999}article .content img blockquote footer cite:before,article .content video blockquote footer cite:before{padding:0 .5em;content:"—"}article .content img .pullquote,article .content video .pullquote{margin:0;width:45%;text-align:left}article .content img .pullquote.left,article .content video .pullquote.left{margin-right:1em;margin-left:.5em}article .content img .pullquote.right,article .content video .pullquote.right{margin-right:.5em;margin-left:1em}article .content img .caption,article .content video .caption{position:relative;display:block;margin-top:.5em;color:#666;text-align:center;font-size:.9em}.posttitle{text-transform:none;font-size:1.5em;line-height:1.25}.article-tag .tag-link:before{content:"#";background-image:linear-gradient(transparent, transparent 10px, #d480aa 10px, #d480aa);background-position:bottom;background-size:100% 6px;background-repeat:repeat-x}.article-category .category-link{background-image:linear-gradient(transparent, transparent 10px, #d480aa 10px, #d480aa);background-position:bottom;background-size:100% 6px;background-repeat:repeat-x}@media (min-width: 480px){.article-read-time,.article-tag,.article-category{display:inline}.article-read-time:before,.article-tag:before,.article-category:before{content:"|"}}#archive .post-list{padding:0}#archive .post-list .post-item{margin-bottom:1rem;margin-left:0;list-style-type:none}#archive .post-list .post-item .meta{display:block;margin-right:16px;min-width:100px;color:#666;font-size:14px}@media (min-width: 480px){#archive .post-list .post-item{display:flex;margin-bottom:5px;margin-left:1rem}#archive .post-list .post-item .meta{text-align:left}}.blog-post-comments{margin-top:4rem}#footer{position:absolute;bottom:0;margin-bottom:10px;width:100%;color:#666;vertical-align:top;text-align:center;font-size:11px}#footer ul{margin:0;padding:0;list-style:none}#footer li{display:inline-block;margin-right:15px;border-right:1px solid;border-color:#666;vertical-align:middle}#footer li a{margin-right:15px}#footer li:last-child{margin-right:0;border-right:0}#footer li:last-child a{margin-right:0}#footer a{color:#666;text-decoration:underline;background-image:none}#footer a:hover{color:#999}#footer .footer-left{height:20px;vertical-align:middle;line-height:20px}@media (min-width: 39rem){#footer{display:flex;flex-flow:row wrap;justify-content:space-between;align-items:center;align-content:center;margin-bottom:20px}#footer .footer-left{align-self:flex-start;margin-right:20px}#footer .footer-right{align-self:flex-end}}.pagination{display:inline-block;margin-top:2rem;width:100%;text-align:center}.pagination .page-number{color:#383838;font-size:.8rem}.pagination a{padding:4px 6px;border-radius:5px;background-image:none;color:#383838;text-decoration:none}.pagination a:hover{background-image:none}.pagination a:hover:not(.active){color:#383838}.search-input{padding:4px 7px;width:100%;outline:none;border:solid 1px #8c8c8c;border-radius:5px;background-color:#fff;color:#383838;font-size:1.2rem;-webkit-border-radius:5px;-moz-border-radius:5px}.search-input:focus{border:solid 1px #2bbc8a}#search-result ul.search-result-list{padding:0;list-style-type:none}#search-result li{margin:2em auto}#search-result a.search-result-title{background-image:none;color:#383838;text-transform:capitalize;font-weight:bold;line-height:1.2}#search-result p.search-result{overflow:hidden;margin:.4em auto;max-height:13em;text-align:justify;font-size:.8em}#search-result em.search-keyword{border-bottom:1px dashed #d480aa;color:#d480aa;font-weight:bold}.search-no-result{display:none;padding-bottom:.5em;color:#383838}#tag-cloud .tag-cloud-title{color:#666}#tag-cloud .tag-cloud-tags{clear:both;text-align:center}#tag-cloud .tag-cloud-tags a{display:inline-block;margin:10px}.tooltipped{position:relative}.tooltipped::after{position:absolute;z-index:1000000;display:none;padding:.2em .5em;-webkit-font-smoothing:subpixel-antialiased;color:#fff;font-display:swap;font-weight:400;font-size:11.2px;font-family:"JetBrains Mono",monospace;line-height:1.725;text-rendering:geometricPrecision;text-align:center;word-wrap:break-word;white-space:pre;content:attr(aria-label);background:#383838;border-radius:3px;opacity:0}.tooltipped::before{position:absolute;z-index:1000001;display:none;width:0;height:0;color:#383838;pointer-events:none;content:'';border:6px solid transparent;opacity:0}@keyframes tooltip-appear{from{opacity:0}to{opacity:1}}.tooltipped:hover::before,.tooltipped:hover::after,.tooltipped:active::before,.tooltipped:active::after,.tooltipped:focus::before,.tooltipped:focus::after{display:inline-block;text-decoration:none;animation-name:tooltip-appear;animation-duration:0.1s;animation-fill-mode:forwards;animation-timing-function:ease-in}.tooltipped-s::after,.tooltipped-sw::after{top:100%;right:50%;margin-top:6px}.tooltipped-s::before,.tooltipped-sw::before{top:auto;right:50%;bottom:-7px;margin-right:-6px;border-bottom-color:#383838}.tooltipped-sw::after{margin-right:-16px}.tooltipped-s::after{transform:translateX(50%)}#categories .category-list-title{color:#666}#categories .category-list .category-list-item .category-list-count{color:#666}#categories .category-list .category-list-item .category-list-count:before{content:" ("}#categories .category-list .category-list-item .category-list-count:after{content:")"}pre{overflow-x:auto;padding:15px 15px 10px 15px;border:1px dotted #666;border-radius:2px;-webkit-border-radius:2px;font-size:13px;font-family:"JetBrains Mono",monospace;line-height:22px;position:relative}pre .code-copy-btn{position:absolute;top:0;right:0;border:0;border-radius:0 2px;padding:0;font-family:"JetBrains Mono", monospace;font-weight:800;font-size:0.9em;line-height:1.7;color:#fff;background-color:#8c8c8c;min-width:60px;text-align:center;cursor:pointer;letter-spacing:0em}pre .code-copy-btn:hover{background-color:#666;color:#2bbc8a}pre code{display:block;padding:0;border:none}code{font-family:"JetBrains Mono",monospace;padding:0 5px;border:1px dotted #666;border-radius:2px;-webkit-border-radius:2px}.highlight>div{border-radius:2px;-webkit-border-radius:2px}.highlight pre{border:none;background:none}.highlight table pre{margin-top:0}.highlight table td:first-child pre{padding-right:0}.highlight table td:last-child pre{padding-left:0} + +/*# sourceMappingURL=styles.css.map */ \ No newline at end of file diff --git a/resources/_gen/assets/scss/scss/style.scss_17a317b87063135b4df76ed814d78726.json b/resources/_gen/assets/scss/scss/style.scss_17a317b87063135b4df76ed814d78726.json new file mode 100644 index 0000000..acc1a4d --- /dev/null +++ b/resources/_gen/assets/scss/scss/style.scss_17a317b87063135b4df76ed814d78726.json @@ -0,0 +1 @@ +{"Target":"css/styles.94f653e9e151e28067a7c5dbbc4600cbd5a3c721e79faaf971e523c40f3b249b8e4f20bb57810dfffa8d559ca5c140fd56eb4cd9c0853113ad08e66afdb08bdd.css","MediaType":"text/css","Data":{"Integrity":"sha512-lPZT6eFR4oBnp8XbvEYAy9WjxyHnn6r5ceUjxA87JJuOTyC7V4EN//qNVZylwUD9VutM2cCFMROtCOZq/bCL3Q=="}} \ No newline at end of file diff --git a/themes/cactus b/themes/cactus new file mode 160000 index 0000000..a27a143 --- /dev/null +++ b/themes/cactus @@ -0,0 +1 @@ +Subproject commit a27a14348040b919818cbc862e3667c05f90b077
+ + + + + + +
+ + +

Find me on + + + + + + + + , + + + + + + + , + + + + + + + and + + + + + + + . + +

+ + +
+ +
+ Writings + + Topics + + + + go + + golang + + handler + + http + + middleware + + proxy + + reverse-proxy + + + Most recent + + + + + + + + + + + +
+ + + + + + + + + + + +