From 91e8f9115dc1724d0f14591b76b9acaf356d6586 Mon Sep 17 00:00:00 2001 From: torrocus Date: Fri, 4 Sep 2020 12:03:19 +0000 Subject: [PATCH] jekyll build from Action 4a2f87b440bc5bc5b495ddeb56df419648934a22 --- .nojekyll | 0 404.html | 1 + .../after-create-secret-repository.png | Bin 0 -> 18082 bytes .../create-secret-repository.gif | Bin 0 -> 25995 bytes .../twitter_image.png | Bin 0 -> 825 bytes assets/main.css | 3 + assets/main.css.map | 20 +++ assets/minima-social-icons.svg | 33 +++++ .../index.html | 33 +++++ feed.xml | 2 + generating-password-in-ubuntu/index.html | 131 ++++++++++++++++++ .../index.html | 24 ++++ index.html | 1 + redirects.json | 1 + robots.txt | 1 + sitemap.xml | 22 +++ special-github-repository/index.html | 37 +++++ 17 files changed, 309 insertions(+) create mode 100644 .nojekyll create mode 100644 404.html create mode 100644 assets/images/special-github-repository/after-create-secret-repository.png create mode 100644 assets/images/special-github-repository/create-secret-repository.gif create mode 100644 assets/images/special-github-repository/twitter_image.png create mode 100644 assets/main.css create mode 100644 assets/main.css.map create mode 100644 assets/minima-social-icons.svg create mode 100644 deployment-jekyll-using-github-actions/index.html create mode 100644 feed.xml create mode 100644 generating-password-in-ubuntu/index.html create mode 100644 increase-markdown-conversion-speed-in-jekyll/index.html create mode 100644 index.html create mode 100644 redirects.json create mode 100644 robots.txt create mode 100644 sitemap.xml create mode 100644 special-github-repository/index.html diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/404.html b/404.html new file mode 100644 index 0000000..2f06302 --- /dev/null +++ b/404.html @@ -0,0 +1 @@ +Less is more | Full-stack developer, who loves challenges, tries to write a tech blog about Ruby on Rails, design patterns and application architecture.

404

Page not found :(

The requested page could not be found.

Return to main page

diff --git a/assets/images/special-github-repository/after-create-secret-repository.png b/assets/images/special-github-repository/after-create-secret-repository.png new file mode 100644 index 0000000000000000000000000000000000000000..d40574158e7c7c7d0f3ba1a89de66b05ddc5fae3 GIT binary patch literal 18082 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 literal 0 HcmV?d00001 diff --git a/assets/images/special-github-repository/create-secret-repository.gif b/assets/images/special-github-repository/create-secret-repository.gif new file mode 100644 index 0000000000000000000000000000000000000000..27dfc807db879f889fbacf0704309d7e26ff3b0b GIT binary patch literal 25995 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 F1OP}KWeETP literal 0 HcmV?d00001 diff --git a/assets/main.css b/assets/main.css new file mode 100644 index 0000000..b3d10b1 --- /dev/null +++ b/assets/main.css @@ -0,0 +1,3 @@ +body,h1,h2,h3,h4,h5,h6,p,blockquote,pre,hr,dl,dd,ol,ul,figure{margin:0;padding:0}body{font:400 16px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";color:#111;background-color:#fdfdfd;-webkit-text-size-adjust:100%;-webkit-font-feature-settings:"kern" 1;-moz-font-feature-settings:"kern" 1;-o-font-feature-settings:"kern" 1;font-feature-settings:"kern" 1;font-kerning:normal;display:flex;min-height:100vh;flex-direction:column}h1,h2,h3,h4,h5,h6,p,blockquote,pre,ul,ol,dl,figure,.highlight{margin-bottom:15px}main{display:block}img{max-width:100%;vertical-align:middle}figure>img{display:block}figcaption{font-size:14px}ul,ol{margin-left:30px}li>ul,li>ol{margin-bottom:0}h1,h2,h3,h4,h5,h6{font-weight:400}a{color:#2a7ae2;text-decoration:none}a:visited{color:#1756a9}a:hover{color:#111;text-decoration:underline}.social-media-list a:hover{text-decoration:none}.social-media-list a:hover .username{text-decoration:underline}blockquote{color:#828282;border-left:4px solid #e8e8e8;padding-left:15px;font-size:18px;letter-spacing:-1px;font-style:italic}blockquote>:last-child{margin-bottom:0}pre,code{font-size:15px;border:1px solid #e8e8e8;border-radius:3px;background-color:#eef}code{padding:1px 5px}pre{padding:8px 12px;overflow-x:auto}pre>code{border:0;padding-right:0;padding-left:0}.wrapper{max-width:-webkit-calc(800px - (30px * 2));max-width:calc(800px - (30px * 2));margin-right:auto;margin-left:auto;padding-right:30px;padding-left:30px}@media screen and (max-width: 800px){.wrapper{max-width:-webkit-calc(800px - (30px));max-width:calc(800px - (30px));padding-right:15px;padding-left:15px}}.footer-col-wrapper:after,.wrapper:after{content:"";display:table;clear:both}.svg-icon{width:16px;height:16px;display:inline-block;fill:#828282;padding-right:5px;vertical-align:text-top}.social-media-list li+li{padding-top:5px}table{margin-bottom:30px;width:100%;text-align:left;color:#3f3f3f;border-collapse:collapse;border:1px solid #e8e8e8}table tr:nth-child(even){background-color:#f7f7f7}table th,table td{padding:10px 15px}table th{background-color:#f0f0f0;border:1px solid #dedede;border-bottom-color:#c9c9c9}table td{border:1px solid #e8e8e8}.site-header{border-top:5px solid #424242;border-bottom:1px solid #e8e8e8;min-height:55.95px;position:relative}.site-title{font-size:26px;font-weight:300;line-height:54px;letter-spacing:-1px;margin-bottom:0;float:left}.site-title,.site-title:visited{color:#424242}.site-nav{float:right;line-height:54px}.site-nav .nav-trigger{display:none}.site-nav .menu-icon{display:none}.site-nav .page-link{color:#111;line-height:1.5}.site-nav .page-link:not(:last-child){margin-right:20px}@media screen and (max-width: 600px){.site-nav{position:absolute;top:9px;right:15px;background-color:#fdfdfd;border:1px solid #e8e8e8;border-radius:5px;text-align:right}.site-nav label[for="nav-trigger"]{display:block;float:right;width:36px;height:36px;z-index:2;cursor:pointer}.site-nav .menu-icon{display:block;float:right;width:36px;height:26px;line-height:0;padding-top:10px;text-align:center}.site-nav .menu-icon>svg{fill:#424242}.site-nav input~.trigger{clear:both;display:none}.site-nav input:checked~.trigger{display:block;padding-bottom:5px}.site-nav .page-link{display:block;padding:5px 10px;margin-left:20px}.site-nav .page-link:not(:last-child){margin-right:0}}.site-footer{border-top:1px solid #e8e8e8;padding:30px 0}.footer-heading{font-size:18px;margin-bottom:15px}.contact-list,.social-media-list{list-style:none;margin-left:0}.footer-col-wrapper{font-size:15px;color:#828282;margin-left:-15px}.footer-col{float:left;margin-bottom:15px;padding-left:15px}.footer-col-1{width:-webkit-calc(35% - (30px / 2));width:calc(35% - (30px / 2))}.footer-col-2{width:-webkit-calc(20% - (30px / 2));width:calc(20% - (30px / 2))}.footer-col-3{width:-webkit-calc(45% - (30px / 2));width:calc(45% - (30px / 2))}@media screen and (max-width: 800px){.footer-col-1,.footer-col-2{width:-webkit-calc(50% - (30px / 2));width:calc(50% - (30px / 2))}.footer-col-3{width:-webkit-calc(100% - (30px / 2));width:calc(100% - (30px / 2))}}@media screen and (max-width: 600px){.footer-col{float:none;width:-webkit-calc(100% - (30px / 2));width:calc(100% - (30px / 2))}}.page-content{padding:30px 0;flex:1}.page-heading{font-size:32px}.post-list-heading{font-size:28px}.post-list{margin-left:0;list-style:none}.post-list>li{margin-bottom:30px}.post-meta{font-size:14px;color:#828282}.post-link{display:block;font-size:24px}.post-header{margin-bottom:30px}.post-title{font-size:42px;letter-spacing:-1px;line-height:1}@media screen and (max-width: 800px){.post-title{font-size:36px}}.post-content{margin-bottom:30px}.post-content h2{font-size:32px}@media screen and (max-width: 800px){.post-content h2{font-size:28px}}.post-content h3{font-size:26px}@media screen and (max-width: 800px){.post-content h3{font-size:22px}}.post-content h4{font-size:20px}@media screen and (max-width: 800px){.post-content h4{font-size:18px}}.highlight{background:#fff}.highlighter-rouge .highlight{background:#eef}.highlight .c{color:#998;font-style:italic}.highlight .err{color:#a61717;background-color:#e3d2d2}.highlight .k{font-weight:bold}.highlight .o{font-weight:bold}.highlight .cm{color:#998;font-style:italic}.highlight .cp{color:#999;font-weight:bold}.highlight .c1{color:#998;font-style:italic}.highlight .cs{color:#999;font-weight:bold;font-style:italic}.highlight .gd{color:#000;background-color:#fdd}.highlight .gd .x{color:#000;background-color:#faa}.highlight .ge{font-style:italic}.highlight .gr{color:#a00}.highlight .gh{color:#999}.highlight .gi{color:#000;background-color:#dfd}.highlight .gi .x{color:#000;background-color:#afa}.highlight .go{color:#888}.highlight .gp{color:#555}.highlight .gs{font-weight:bold}.highlight .gu{color:#aaa}.highlight .gt{color:#a00}.highlight .kc{font-weight:bold}.highlight .kd{font-weight:bold}.highlight .kp{font-weight:bold}.highlight .kr{font-weight:bold}.highlight .kt{color:#458;font-weight:bold}.highlight .m{color:#099}.highlight .s{color:#d14}.highlight .na{color:#008080}.highlight .nb{color:#0086B3}.highlight .nc{color:#458;font-weight:bold}.highlight .no{color:#008080}.highlight .ni{color:#800080}.highlight .ne{color:#900;font-weight:bold}.highlight .nf{color:#900;font-weight:bold}.highlight .nn{color:#555}.highlight .nt{color:#000080}.highlight .nv{color:#008080}.highlight .ow{font-weight:bold}.highlight .w{color:#bbb}.highlight .mf{color:#099}.highlight .mh{color:#099}.highlight .mi{color:#099}.highlight .mo{color:#099}.highlight .sb{color:#d14}.highlight .sc{color:#d14}.highlight .sd{color:#d14}.highlight .s2{color:#d14}.highlight .se{color:#d14}.highlight .sh{color:#d14}.highlight .si{color:#d14}.highlight .sx{color:#d14}.highlight .sr{color:#009926}.highlight .s1{color:#d14}.highlight .ss{color:#990073}.highlight .bp{color:#999}.highlight .vc{color:#008080}.highlight .vg{color:#008080}.highlight .vi{color:#008080}.highlight .il{color:#099} + +/*# sourceMappingURL=main.css.map */ \ No newline at end of file diff --git a/assets/main.css.map b/assets/main.css.map new file mode 100644 index 0000000..e581747 --- /dev/null +++ b/assets/main.css.map @@ -0,0 +1,20 @@ +{ + "version": 3, + "file": "main.css", + "sources": [ + "main.scss", + "vendor/bundle/ruby/2.7.0/gems/minima-2.5.1/_sass/minima.scss", + "vendor/bundle/ruby/2.7.0/gems/minima-2.5.1/_sass/minima/_base.scss", + "vendor/bundle/ruby/2.7.0/gems/minima-2.5.1/_sass/minima/_layout.scss", + "vendor/bundle/ruby/2.7.0/gems/minima-2.5.1/_sass/minima/_syntax-highlighting.scss" + ], + "sourcesContent": [ + "@import \"minima\";\n", + "@charset \"utf-8\";\n\n// Define defaults for each variable.\n\n$base-font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\" !default;\n$base-font-size: 16px !default;\n$base-font-weight: 400 !default;\n$small-font-size: $base-font-size * 0.875 !default;\n$base-line-height: 1.5 !default;\n\n$spacing-unit: 30px !default;\n\n$text-color: #111 !default;\n$background-color: #fdfdfd !default;\n$brand-color: #2a7ae2 !default;\n\n$grey-color: #828282 !default;\n$grey-color-light: lighten($grey-color, 40%) !default;\n$grey-color-dark: darken($grey-color, 25%) !default;\n\n$table-text-align: left !default;\n\n// Width of the content area\n$content-width: 800px !default;\n\n$on-palm: 600px !default;\n$on-laptop: 800px !default;\n\n// Use media queries like this:\n// @include media-query($on-palm) {\n// .wrapper {\n// padding-right: $spacing-unit / 2;\n// padding-left: $spacing-unit / 2;\n// }\n// }\n@mixin media-query($device) {\n @media screen and (max-width: $device) {\n @content;\n }\n}\n\n@mixin relative-font-size($ratio) {\n font-size: $base-font-size * $ratio;\n}\n\n// Import partials.\n@import\n \"minima/base\",\n \"minima/layout\",\n \"minima/syntax-highlighting\"\n;\n", + "/**\n * Reset some basic elements\n */\nbody, h1, h2, h3, h4, h5, h6,\np, blockquote, pre, hr,\ndl, dd, ol, ul, figure {\n margin: 0;\n padding: 0;\n}\n\n\n\n/**\n * Basic styling\n */\nbody {\n font: $base-font-weight #{$base-font-size}/#{$base-line-height} $base-font-family;\n color: $text-color;\n background-color: $background-color;\n -webkit-text-size-adjust: 100%;\n -webkit-font-feature-settings: \"kern\" 1;\n -moz-font-feature-settings: \"kern\" 1;\n -o-font-feature-settings: \"kern\" 1;\n font-feature-settings: \"kern\" 1;\n font-kerning: normal;\n display: flex;\n min-height: 100vh;\n flex-direction: column;\n}\n\n\n\n/**\n * Set `margin-bottom` to maintain vertical rhythm\n */\nh1, h2, h3, h4, h5, h6,\np, blockquote, pre,\nul, ol, dl, figure,\n%vertical-rhythm {\n margin-bottom: $spacing-unit / 2;\n}\n\n\n\n/**\n * `main` element\n */\nmain {\n display: block; /* Default value of `display` of `main` element is 'inline' in IE 11. */\n}\n\n\n\n/**\n * Images\n */\nimg {\n max-width: 100%;\n vertical-align: middle;\n}\n\n\n\n/**\n * Figures\n */\nfigure > img {\n display: block;\n}\n\nfigcaption {\n font-size: $small-font-size;\n}\n\n\n\n/**\n * Lists\n */\nul, ol {\n margin-left: $spacing-unit;\n}\n\nli {\n > ul,\n > ol {\n margin-bottom: 0;\n }\n}\n\n\n\n/**\n * Headings\n */\nh1, h2, h3, h4, h5, h6 {\n font-weight: $base-font-weight;\n}\n\n\n\n/**\n * Links\n */\na {\n color: $brand-color;\n text-decoration: none;\n\n &:visited {\n color: darken($brand-color, 15%);\n }\n\n &:hover {\n color: $text-color;\n text-decoration: underline;\n }\n\n .social-media-list &:hover {\n text-decoration: none;\n\n .username {\n text-decoration: underline;\n }\n }\n}\n\n\n/**\n * Blockquotes\n */\nblockquote {\n color: $grey-color;\n border-left: 4px solid $grey-color-light;\n padding-left: $spacing-unit / 2;\n @include relative-font-size(1.125);\n letter-spacing: -1px;\n font-style: italic;\n\n > :last-child {\n margin-bottom: 0;\n }\n}\n\n\n\n/**\n * Code formatting\n */\npre,\ncode {\n @include relative-font-size(0.9375);\n border: 1px solid $grey-color-light;\n border-radius: 3px;\n background-color: #eef;\n}\n\ncode {\n padding: 1px 5px;\n}\n\npre {\n padding: 8px 12px;\n overflow-x: auto;\n\n > code {\n border: 0;\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n\n\n/**\n * Wrapper\n */\n.wrapper {\n max-width: -webkit-calc(#{$content-width} - (#{$spacing-unit} * 2));\n max-width: calc(#{$content-width} - (#{$spacing-unit} * 2));\n margin-right: auto;\n margin-left: auto;\n padding-right: $spacing-unit;\n padding-left: $spacing-unit;\n @extend %clearfix;\n\n @include media-query($on-laptop) {\n max-width: -webkit-calc(#{$content-width} - (#{$spacing-unit}));\n max-width: calc(#{$content-width} - (#{$spacing-unit}));\n padding-right: $spacing-unit / 2;\n padding-left: $spacing-unit / 2;\n }\n}\n\n\n\n/**\n * Clearfix\n */\n%clearfix:after {\n content: \"\";\n display: table;\n clear: both;\n}\n\n\n\n/**\n * Icons\n */\n\n.svg-icon {\n width: 16px;\n height: 16px;\n display: inline-block;\n fill: #{$grey-color};\n padding-right: 5px;\n vertical-align: text-top;\n}\n\n.social-media-list {\n li + li {\n padding-top: 5px;\n }\n}\n\n\n\n/**\n * Tables\n */\ntable {\n margin-bottom: $spacing-unit;\n width: 100%;\n text-align: $table-text-align;\n color: lighten($text-color, 18%);\n border-collapse: collapse;\n border: 1px solid $grey-color-light;\n tr {\n &:nth-child(even) {\n background-color: lighten($grey-color-light, 6%);\n }\n }\n th, td {\n padding: ($spacing-unit / 3) ($spacing-unit / 2);\n }\n th {\n background-color: lighten($grey-color-light, 3%);\n border: 1px solid darken($grey-color-light, 4%);\n border-bottom-color: darken($grey-color-light, 12%);\n }\n td {\n border: 1px solid $grey-color-light;\n }\n}\n", + "/**\n * Site header\n */\n.site-header {\n border-top: 5px solid $grey-color-dark;\n border-bottom: 1px solid $grey-color-light;\n min-height: $spacing-unit * 1.865;\n\n // Positioning context for the mobile navigation icon\n position: relative;\n}\n\n.site-title {\n @include relative-font-size(1.625);\n font-weight: 300;\n line-height: $base-line-height * $base-font-size * 2.25;\n letter-spacing: -1px;\n margin-bottom: 0;\n float: left;\n\n &,\n &:visited {\n color: $grey-color-dark;\n }\n}\n\n.site-nav {\n float: right;\n line-height: $base-line-height * $base-font-size * 2.25;\n\n .nav-trigger {\n display: none;\n }\n\n .menu-icon {\n display: none;\n }\n\n .page-link {\n color: $text-color;\n line-height: $base-line-height;\n\n // Gaps between nav items, but not on the last one\n &:not(:last-child) {\n margin-right: 20px;\n }\n }\n\n @include media-query($on-palm) {\n position: absolute;\n top: 9px;\n right: $spacing-unit / 2;\n background-color: $background-color;\n border: 1px solid $grey-color-light;\n border-radius: 5px;\n text-align: right;\n\n label[for=\"nav-trigger\"] {\n display: block;\n float: right;\n width: 36px;\n height: 36px;\n z-index: 2;\n cursor: pointer;\n }\n\n .menu-icon {\n display: block;\n float: right;\n width: 36px;\n height: 26px;\n line-height: 0;\n padding-top: 10px;\n text-align: center;\n\n > svg {\n fill: $grey-color-dark;\n }\n }\n\n input ~ .trigger {\n clear: both;\n display: none;\n }\n\n input:checked ~ .trigger {\n display: block;\n padding-bottom: 5px;\n }\n\n .page-link {\n display: block;\n padding: 5px 10px;\n\n &:not(:last-child) {\n margin-right: 0;\n }\n margin-left: 20px;\n }\n }\n}\n\n\n\n/**\n * Site footer\n */\n.site-footer {\n border-top: 1px solid $grey-color-light;\n padding: $spacing-unit 0;\n}\n\n.footer-heading {\n @include relative-font-size(1.125);\n margin-bottom: $spacing-unit / 2;\n}\n\n.contact-list,\n.social-media-list {\n list-style: none;\n margin-left: 0;\n}\n\n.footer-col-wrapper {\n @include relative-font-size(0.9375);\n color: $grey-color;\n margin-left: -$spacing-unit / 2;\n @extend %clearfix;\n}\n\n.footer-col {\n float: left;\n margin-bottom: $spacing-unit / 2;\n padding-left: $spacing-unit / 2;\n}\n\n.footer-col-1 {\n width: -webkit-calc(35% - (#{$spacing-unit} / 2));\n width: calc(35% - (#{$spacing-unit} / 2));\n}\n\n.footer-col-2 {\n width: -webkit-calc(20% - (#{$spacing-unit} / 2));\n width: calc(20% - (#{$spacing-unit} / 2));\n}\n\n.footer-col-3 {\n width: -webkit-calc(45% - (#{$spacing-unit} / 2));\n width: calc(45% - (#{$spacing-unit} / 2));\n}\n\n@include media-query($on-laptop) {\n .footer-col-1,\n .footer-col-2 {\n width: -webkit-calc(50% - (#{$spacing-unit} / 2));\n width: calc(50% - (#{$spacing-unit} / 2));\n }\n\n .footer-col-3 {\n width: -webkit-calc(100% - (#{$spacing-unit} / 2));\n width: calc(100% - (#{$spacing-unit} / 2));\n }\n}\n\n@include media-query($on-palm) {\n .footer-col {\n float: none;\n width: -webkit-calc(100% - (#{$spacing-unit} / 2));\n width: calc(100% - (#{$spacing-unit} / 2));\n }\n}\n\n\n\n/**\n * Page content\n */\n.page-content {\n padding: $spacing-unit 0;\n flex: 1;\n}\n\n.page-heading {\n @include relative-font-size(2);\n}\n\n.post-list-heading {\n @include relative-font-size(1.75);\n}\n\n.post-list {\n margin-left: 0;\n list-style: none;\n\n > li {\n margin-bottom: $spacing-unit;\n }\n}\n\n.post-meta {\n font-size: $small-font-size;\n color: $grey-color;\n}\n\n.post-link {\n display: block;\n @include relative-font-size(1.5);\n}\n\n\n\n/**\n * Posts\n */\n.post-header {\n margin-bottom: $spacing-unit;\n}\n\n.post-title {\n @include relative-font-size(2.625);\n letter-spacing: -1px;\n line-height: 1;\n\n @include media-query($on-laptop) {\n @include relative-font-size(2.25);\n }\n}\n\n.post-content {\n margin-bottom: $spacing-unit;\n\n h2 {\n @include relative-font-size(2);\n\n @include media-query($on-laptop) {\n @include relative-font-size(1.75);\n }\n }\n\n h3 {\n @include relative-font-size(1.625);\n\n @include media-query($on-laptop) {\n @include relative-font-size(1.375);\n }\n }\n\n h4 {\n @include relative-font-size(1.25);\n\n @include media-query($on-laptop) {\n @include relative-font-size(1.125);\n }\n }\n}\n", + "/**\n * Syntax highlighting styles\n */\n.highlight {\n background: #fff;\n @extend %vertical-rhythm;\n\n .highlighter-rouge & {\n background: #eef;\n }\n\n .c { color: #998; font-style: italic } // Comment\n .err { color: #a61717; background-color: #e3d2d2 } // Error\n .k { font-weight: bold } // Keyword\n .o { font-weight: bold } // Operator\n .cm { color: #998; font-style: italic } // Comment.Multiline\n .cp { color: #999; font-weight: bold } // Comment.Preproc\n .c1 { color: #998; font-style: italic } // Comment.Single\n .cs { color: #999; font-weight: bold; font-style: italic } // Comment.Special\n .gd { color: #000; background-color: #fdd } // Generic.Deleted\n .gd .x { color: #000; background-color: #faa } // Generic.Deleted.Specific\n .ge { font-style: italic } // Generic.Emph\n .gr { color: #a00 } // Generic.Error\n .gh { color: #999 } // Generic.Heading\n .gi { color: #000; background-color: #dfd } // Generic.Inserted\n .gi .x { color: #000; background-color: #afa } // Generic.Inserted.Specific\n .go { color: #888 } // Generic.Output\n .gp { color: #555 } // Generic.Prompt\n .gs { font-weight: bold } // Generic.Strong\n .gu { color: #aaa } // Generic.Subheading\n .gt { color: #a00 } // Generic.Traceback\n .kc { font-weight: bold } // Keyword.Constant\n .kd { font-weight: bold } // Keyword.Declaration\n .kp { font-weight: bold } // Keyword.Pseudo\n .kr { font-weight: bold } // Keyword.Reserved\n .kt { color: #458; font-weight: bold } // Keyword.Type\n .m { color: #099 } // Literal.Number\n .s { color: #d14 } // Literal.String\n .na { color: #008080 } // Name.Attribute\n .nb { color: #0086B3 } // Name.Builtin\n .nc { color: #458; font-weight: bold } // Name.Class\n .no { color: #008080 } // Name.Constant\n .ni { color: #800080 } // Name.Entity\n .ne { color: #900; font-weight: bold } // Name.Exception\n .nf { color: #900; font-weight: bold } // Name.Function\n .nn { color: #555 } // Name.Namespace\n .nt { color: #000080 } // Name.Tag\n .nv { color: #008080 } // Name.Variable\n .ow { font-weight: bold } // Operator.Word\n .w { color: #bbb } // Text.Whitespace\n .mf { color: #099 } // Literal.Number.Float\n .mh { color: #099 } // Literal.Number.Hex\n .mi { color: #099 } // Literal.Number.Integer\n .mo { color: #099 } // Literal.Number.Oct\n .sb { color: #d14 } // Literal.String.Backtick\n .sc { color: #d14 } // Literal.String.Char\n .sd { color: #d14 } // Literal.String.Doc\n .s2 { color: #d14 } // Literal.String.Double\n .se { color: #d14 } // Literal.String.Escape\n .sh { color: #d14 } // Literal.String.Heredoc\n .si { color: #d14 } // Literal.String.Interpol\n .sx { color: #d14 } // Literal.String.Other\n .sr { color: #009926 } // Literal.String.Regex\n .s1 { color: #d14 } // Literal.String.Single\n .ss { color: #990073 } // Literal.String.Symbol\n .bp { color: #999 } // Name.Builtin.Pseudo\n .vc { color: #008080 } // Name.Variable.Class\n .vg { color: #008080 } // Name.Variable.Global\n .vi { color: #008080 } // Name.Variable.Instance\n .il { color: #099 } // Literal.Number.Integer.Long\n}\n" + ], + "names": [], + "mappings": "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" +} \ No newline at end of file diff --git a/assets/minima-social-icons.svg b/assets/minima-social-icons.svg new file mode 100644 index 0000000..fa7399f --- /dev/null +++ b/assets/minima-social-icons.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/deployment-jekyll-using-github-actions/index.html b/deployment-jekyll-using-github-actions/index.html new file mode 100644 index 0000000..ebcdaa1 --- /dev/null +++ b/deployment-jekyll-using-github-actions/index.html @@ -0,0 +1,33 @@ +Building site based on Jekyll 4.1 using GitHub Actions | Less is more

Building site based on Jekyll 4.1 using GitHub Actions

Today I decided to check feature GitHub Actions. My goal is to prepare configuration for GitHub Actions and publish a site based on Jekyll 4.1

GitHub Actions step by step for Jekyll

To use GitHub Actions, you need to create the folder .github/workflows. Inside this folder will be the GitHub Actions configuration. Each file is responsible for a separate GitHub Actions workflow. There are already actions at GitHub that help build a website based on Jekyll.

For the Jekyll build to go correctly, you need a JEKYLL_PAT key. To generate the key go to Settings in your GitHub profile. Then go to Developer settings and then go to Personal access tokens. Click Generate new token button and confirm your GitHub password. Fill out the form New personal access token as follows:

  • Note: GitHub Actions
  • Select checkbox public_repo
  • Click Generate token

A new GitHub API key will appear, so copy it. You have to paste it elsewhere, so if you lose it, you have to repeat the process.

Now go to the repository Settings and go to the Secrets settings. Click the New secret button and fill in the Secrets / New secret form as below:

  • Name: JEKYLL_PAT
  • Value: paste the copied GitHub Actions key here
  • Click Add secret

Settings on the GitHub side are almost ready. Now you need to prepare the configuration on the repository side.

Configuration file .github/workflows/deployment.yml:

name: deployment
+
+on:
+  push:
+    branches:
+      - master
+
+jobs:
+  github-pages:
+    runs-on: ubuntu-18.04
+    steps:
+    - uses: actions/checkout@v2
+
+    - uses: actions/cache@v1
+      with:
+        path: vendor/bundle
+        key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }}
+        restore-keys: |
+          ${{ runner.os }}-gems-
+
+    - uses: helaili/jekyll-action@2.0.3
+      env:
+        JEKYLL_PAT: ${{ secrets.JEKYLL_PAT }}
+

After doing git commit and git push, the GitHub Actions process should start. The process workflow can be viewed in the tab Actions. The name of this process is deployment (see the value of the key name in .github/workflows/deployment.yml file). After selecting the process name (in this case deployment) and commit name, you can see the GitHub Action process workflow.

▶ ✓ Set up job
+▶ ✓ Build helaili/jekyll-action@2.0.3
+▶ ✓ Run actions/checkout@v2
+▶ ✓ Run actions/cache@v1
+▶ ✓ Run helaili/jekyll-action@2.0.3
+▶ ✓ Post Run actions/cache@v1
+▶ ✓ Post Run actions/checkout@v2
+▶ ✓ Complete job
+

If everything is green, it means that the whole process was successful. If any step fails, you need to read the detailed information for that step. A good practice is to add a badge to the README file.

![Build and deploy](https://github.com/USER/REPO/workflows/WORKFLOW/badge.svg)
+

Where USER is the username, REPO is the GitHub repository name and WORKFLOW is the name of the GitHub Action process. Below is a preview of passing and failing badges.

deployment deployment passing passing deployment deployment failing failing

In most cases, the above instructions should allow you to build static websites based on Jekyll on GitHub Actions. This blog also uses this configuration.


Simple dictionary

  • JEKYLL_PAT - Jekyll Personal Access Token
diff --git a/feed.xml b/feed.xml new file mode 100644 index 0000000..8c47bdb --- /dev/null +++ b/feed.xml @@ -0,0 +1,2 @@ +Jekyll2020-09-04T12:03:19+00:00https://torrocus.com/blog/feed.xmlLess is moreFull-stack developer, who loves challenges, tries to write a tech blog about Ruby on Rails, design patterns and application architecture. +torrocusGenerating password 🔑2020-09-04T12:00:00+00:002020-09-04T12:00:00+00:00https://torrocus.com/blog/generating-password-in-ubuntutorrocusSecure password generator in Linux. Safe pronounceable password - dream or leak stream?Create a special repository in your GitHub Profile 🔨2020-07-11T21:55:00+00:002020-07-11T21:55:00+00:00https://torrocus.com/blog/special-github-repositorytorrocusLet's fun! How to create a secret GitHub repository?How to increase Markdown conversion speed in Jekyll?2020-07-08T07:30:00+00:002020-07-08T07:30:00+00:00https://torrocus.com/blog/increase-markdown-conversion-speed-in-jekylltorrocusChanging default Markdown converterBuilding site based on Jekyll 4.1 using GitHub Actions2020-06-21T14:00:00+00:002020-06-21T14:00:00+00:00https://torrocus.com/blog/deployment-jekyll-using-github-actionstorrocusDeployment automation on GitHub Pages \ No newline at end of file diff --git a/generating-password-in-ubuntu/index.html b/generating-password-in-ubuntu/index.html new file mode 100644 index 0000000..97e4c22 --- /dev/null +++ b/generating-password-in-ubuntu/index.html @@ -0,0 +1,131 @@ +Generating password 🔑 | Less is more

Generating password 🔑

How to generate a secure password?

There are no 100% secure passwords. Cracking any password is just a matter of time. But as programmers, we can make it harder.

Daily I use Ubuntu. The solutions provided will therefore apply to this environment. But these solutions are available on various Linux distributions.

Little improvisation

This way is to use Linux commands and a dictionary file. The shuf command will randomize a few words. And tr will remove the enters and this way we get a long password. Long doesn’t mean safe.

$ shuf -n8 /usr/share/dict/words | tr -d '\n'
+PentaxAlsopwigwamsunsureexplorationsupposedlyattiresignalling
+

This idea is taken from Stack Overflow. I strongly advise against generating a password in this way.

pwgen

Pwgen is a tool for automatic password generation. Pwgen generates random, meaningless but pronounceable passwords. The term pronounceable and a password of several dozen letters are in my opinion an oxymoron. The generated passwords include only lowercase letters, or upper and lower case mixed, or digits. For better memorization, capital letters and numbers are placed in the appropriate positions. It gives the impression of constructed words. The pwgen command with no parameters will generate 160 eight-characters passwords. Usually, one password is needed. Moreover, eight letters in a password are definitely not enough.

Click here to see how to install pwgen.

Installing pwgen:

sudo apt install pwgen
+


To generate 1 password with 32 characters:

$ pwgen 32 1
+gugoqu0Ziu4unguori7Ehooroo4eic1o
+

Need more characters in your password? No problem.

$ pwgen 48 1
+ahr6ejei4uithohloh9aib8IeY4zu4KaecuGheijo0IngooV
+

Even more password characters? Your wish is my command.

$ pwgen 64 1
+eem1Aighehupuaphie5eo5Apah3baataegahxiec3quenaeMieH6eiMaj9hai0Oh
+
Click here to see a pwgen parameter list.

$ pwgen -h
+Usage: pwgen [ OPTIONS ] [ pw_length ] [ num_pw ]
+
+Options supported by pwgen:
+  -c or --capitalize
+	Include at least one capital letter in the password
+  -A or --no-capitalize
+	Don't include capital letters in the password
+  -n or --numerals
+	Include at least one number in the password
+  -0 or --no-numerals
+	Don't include numbers in the password
+  -y or --symbols
+	Include at least one special symbol in the password
+  -r <chars> or --remove-chars=<chars>
+	Remove characters from the set of characters to generate passwords
+  -s or --secure
+	Generate completely random passwords
+  -B or --ambiguous
+	Don't include ambiguous characters in the password
+  -h or --help
+	Print a help message
+  -H or --sha1=path/to/file[#seed]
+	Use sha1 hash of given file as a (not so) random generator
+  -C
+	Print the generated passwords in columns
+  -1
+	Don't print the generated passwords in columns
+  -v or --no-vowels
+	Do not use any vowels so as to avoid accidental nasty words
+


Regarding security, I think it’s worth reading the Anarcat post. The author strongly advises against using pwgen.

apg

APG means Automated Password Generator.

Click here to see how to install apg.

Installing apg:

sudo apt install apg
+


apg uses two algorithms to generate passwords. The first is based on an algorithm for generating pronounced passwords. The second is an algorithm for generating passwords with random characters. This first algorithm is outdated. His vulnerabilities were discussed at the National Computer Security Conference. This second algorithm has 35 configurable operating modes.

The apg command generates several passwords by default.

$ apg
+^ovWiffAsdelv1 (CIRCUMFLEX-ov-Wiff-As-delv-ONE)
+Opp\knis8 (Opp-BACKSLASH-knis-EIGHT)
+tyob9Ok* (tyob-NINE-Ok-ASTERISK)
+Igyat2orIct[ (Ig-yat-TWO-or-Ict-LEFT_BRACKET)
+;ojWiuxCund4 (SEMICOLON-oj-Wi-ux-Cund-FOUR)
+VuodecDis5op< (Vu-od-ec-Dis-FIVE-op-LESS_THAN)
+

To generate 1 password with 64 characters, type:

$ apg -m 64 -n 1
+AtnokFuvWapIllAwkugheidijviFasOrIzyictUnveyzMobavArdOkWockyiesBu
+

By adding the parameter -a 0 you can use the first algorithm:

$ apg -a 0 -m 64 -n 1
+riWrovDisickuAbpoovhyijyatyicdoupIalneDrojeuvwochanVafJeucgutoob
+

And the parameter -a 1 uses the second algorithm:

torrocus@knuth:~$ apg -a 1 -m 64 -n 1
+zB;W&)dg(_1!{eZ@wBxkOO/x7<:DU5k]u3TW\aTgs.nK$rT\5"FKYBy(WKrpR-qA
+
Click here to see a apg parameter list.

$ apg -h
+
+apg   Automated Password Generator
+        Copyright (c) Adel I. Mirzazhanov
+
+apg   [-a algorithm] [-r file]
+      [-M mode] [-E char_string] [-n num_of_pass] [-m min_pass_len]
+      [-x max_pass_len] [-c cl_seed] [-d] [-s] [-h] [-y] [-q]
+
+-M mode         new style password modes
+-E char_string  exclude characters from password generation process
+-r file         apply dictionary check against file
+-b filter_file  apply bloom filter check against filter_file
+                (filter_file should be created with apgbfm(1) utility)
+-p substr_len   paranoid modifier for bloom filter check
+-a algorithm    choose algorithm
+                 1 - random password generation according to
+                     password modes
+                 0 - pronounceable password generation
+-n num_of_pass  generate num_of_pass passwords
+-m min_pass_len minimum password length
+-x max_pass_len maximum password length
+-s              ask user for a random seed for password
+                generation
+-c cl_seed      use cl_seed as a random seed for password
+-d              do NOT use any delimiters between generated passwords
+-l              spell generated password
+-t              print pronunciation for generated pronounceable password
+-y              print crypted passwords
+-q              quiet mode (do not print warnings)
+-h              print this help screen
+-v              print version information
+


This solution is a bit outdated but still available in packages.

diceware

Diceware creates memorizable passphrases from wordlists and various sources of randomness.

Click here to see how to install diceware.

Installing diceware:

sudo apt install diceware
+


Running diceware generates a password that consists of 6 words (default).

$ diceware
+SlipsTrumpetSariWaxIdeaDare
+

Of course, the number of words in the password can be changed.

diceware -n 10
+SlamsZealWhoseTineLoomAnagramMossBrimBleatIsotope
+

An interesting option is the possibility of rolling real dice. I used this option once. As humans, I think we’re too lazy.

$ diceware -r realdice
+Please roll 5 dice (or a single dice 5 times).
+What number shows dice number 1?
+...
+What number shows dice number 5?
+SoundLimaQuakeCaptainPrudeFrost
+

Such passwords are probably easier to remember. Are these passwords more secure? This is a matter for discussion.

Click here to see a diceware parameter list.

The diceware parameter list is as follows:

$ diceware -h
+usage: diceware [-h] [-n NUM] [-c | --no-caps] [-s NUM] [-d DELIMITER]
+                [-r SOURCE] [-w NAME] [--dice-sides N] [-v] [--version]
+                [INFILE]
+
+Create a passphrase
+
+positional arguments:
+  INFILE                Input wordlist. `-' will read from stdin.
+
+optional arguments:
+  -h, --help            show this help message and exit
+  -n NUM, --num NUM     number of words to concatenate. Default: 6
+  -c, --caps            Capitalize words. This is the default.
+  --no-caps             Turn off capitalization.
+  -s NUM, --specials NUM
+                        Insert NUM special chars into generated word.
+  -d DELIMITER, --delimiter DELIMITER
+                        Separate words by DELIMITER. Empty string by default.
+  -r SOURCE, --randomsource SOURCE
+                        Get randomness from this source. Possible values:
+                        `realdice', `system'. Default: system
+  -w NAME, --wordlist NAME
+                        Use words from this wordlist. Possible values: `en',
+                        `en_eff', `en_orig', `en_securedrop'. Wordlists are
+                        stored in the folder displayed below. Default:
+                        en_securedrop
+  -v, --verbose         Be verbose. Use several times for increased verbosity.
+  --version             output version information and exit.
+
+Arguments related to `realdice' randomsource:
+  --dice-sides N        Number of sides of dice. Default: 6
+
+Wordlists are stored in /usr/lib/python2.7/dist-packages/diceware/wordlists
+


Is it worth using password generators?

Yes of course. Mainly because each of us has our own behavioral profile. It’s easier to crack a person than a strong password.


diff --git a/increase-markdown-conversion-speed-in-jekyll/index.html b/increase-markdown-conversion-speed-in-jekyll/index.html new file mode 100644 index 0000000..26fb407 --- /dev/null +++ b/increase-markdown-conversion-speed-in-jekyll/index.html @@ -0,0 +1,24 @@ +How to increase Markdown conversion speed in Jekyll? | Less is more

How to increase Markdown conversion speed in Jekyll?

Jekyll uses Kramdown to convert Markdown by default. Kramdown was written in pure Ruby. I love Ruby as a programming language. But I’m aware that the alternative solution written in C will be faster.

Change Kramdown to CommonMark in Jekyll

For Markdown conversion an alternative solution to Kramdown is CommonMark. Jekyll has a dedicated gem called jekyll-commonmark. This gem uses the cmark-gfm library implemented in C.

Add a gem jekyll-commonmark to the group :jekyll_plugins in Gemfile

gem 'jekyll-commonmark'
+

In my opinion, it’s better to use the source directly from GitHub.

gem 'jekyll-commonmark', github: 'jekyll/jekyll-commonmark'
+

The jekyll-commonmark gem on RubyGems is not up to date. And I noticed that this gem in version 1.3.1 incorrectly colors the source code syntax.

After adding to Gemfile, call bundle install. If the gem installation was successful, the configuration needs to be improved.

In the file _config.yml find key markdown. Change the value of this key from kramdown to CommonMark. Remember that the markdown key is not required. If this key is not present, it defaults to kramdown. In this case, create the key markdown with the value CommonMark to override the default value.

It’s a good practice to set up the gem itself. CommonMark has options and extensions.

Part of the configuration file _config.yml

markdown: CommonMark
+commonmark:
+  extensions:
+    - autolink
+    - strikethrough
+    - table
+    - tagfilter
+    - tasklist
+  options:
+    - FOOTNOTES
+    - GITHUB_PRE_LANG
+    - SMART
+    - STRIKETHROUGH_DOUBLE_TILDE
+    - UNSAFE
+

This blog also uses this configuration.

CommonMark advantage

The first and indisputable advantage of CommonMark is of course the processing speed.

CommonMark disadvantage

However, I also see disadvantages. Using markdown with CommonMark, you cannot add HTML attributes such as id or class. Kramdown allowed the following markdown:

{:.commonmark-vs-kramdown}
+**CommonMark** is faster than **Kramdown**.
+

Kramdown parsed the above code to the following HTML:

<p class="commonmark-vs-kramdown">
+  <strong>CommonMark</strong> is faster than <strong>Kramdown</strong>.
+</p>
+

Unfortunately CommonMark parses it like this:

<p>{:.commonmark-vs-kramdown}
+<strong>CommonMark</strong> is faster than <strong>Kramdown</strong>.</p>
+

I can live with it and use HTML in problematic places. But surely attribute handling would be a big, positive change for CommonMark. Maybe in the future…

{:.commonmark-support-html-classes} This is my test for CommonMark on a living organism. If you don’t see the {:.commonmark-support-html-classes} text at the beginning of the paragraph, then CommonMark supports this functionality or I have given up I have changed the markdown parser.


Simple dictionary

Extensions

  • autolink - Automatically converts the URL to an anchor tag.
  • strikethrough - Provides strikethrough support.
  • table - Provides table conversion. Tables drawn with ASCII characters are converted to HTML tags.
  • tagfilter - Disables unsafe tags. Filters tags like: <iframe>, <noembed>, <noframes>, <plaintext>, <script>, <style>, <textarea>, <title>, <xmp>. These tags change the way HTML is interpreted. That’s why they are escapes. During conversion for filtered tags, < is converted to &lt;.
  • tasklist - Provides item list support. You can create lists of varying depths. The list can be numbered (using numbers: 1, 2, 3, etc.). Or an unnumbered list (using the characters: +, -, *, etc.).

Options

  • FOOTNOTES - Parse footnotes. Footnotes can be placed anywhere. It’s good practice to include footnotes at the end of the file.
  • GITHUB_PRE_LANG - This option sets the data-lang attribute on the <pre> tag. By default, the data-lang attribute is in the <code> tag.
  • SMART - Use smart punctuation. The smart option converts ASCII characters to typographic characters. Three dots ... (period) are converted to ellipses (…). Text in ‘single’ and “double” quotation marks have a starting and ending tag. Depending on the number of dashes, different characters are used. Single dash -, double dash –, triple dash —, quad dash ––.
  • STRIKETHROUGH_DOUBLE_TILDE - Strikethrough only with two tildes. This means that it is ~~stricked text~~ and it’s ~not stricked text~. Using a single tilde for strikethrough is deprecated and is not recommended. A single tilde should be used for subscript. Similar behavior with double tildes is in Redcarpet.
  • UNSAFE - Allows inserting plain HTML.

Options that I don’t use

Options available in the documentation. I haven’t tested them in detail.

  • FULL_INFO_STRING - Include full info strings of code blocks in separate attribute
  • HARDBREAKS - Treat \n as hardbreaks (by adding <br/>).
  • LIBERAL_HTML_TAG - Support liberal parsing of inline HTML tags.
  • NOBREAKS - Translate \n in the source to a single whitespace.
  • SOURCEPOS - Include source position in rendered HTML.
  • TABLE_PREFER_STYLE_ATTRIBUTES - Use style instead of align for table cells
  • VALIDATE_UTF8 - Replace illegal sequences with the replacement character U+FFFD.
diff --git a/index.html b/index.html new file mode 100644 index 0000000..c2fa56f --- /dev/null +++ b/index.html @@ -0,0 +1 @@ +Less is more | Full-stack developer, who loves challenges, tries to write a tech blog about Ruby on Rails, design patterns and application architecture.

Web Developer is blogging about IT...

Posts

subscribe via RSS

diff --git a/redirects.json b/redirects.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/redirects.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/robots.txt b/robots.txt new file mode 100644 index 0000000..c702d77 --- /dev/null +++ b/robots.txt @@ -0,0 +1 @@ +Sitemap: https://torrocus.com/blog/sitemap.xml diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 0000000..3550046 --- /dev/null +++ b/sitemap.xml @@ -0,0 +1,22 @@ + + + +https://torrocus.com/blog/deployment-jekyll-using-github-actions/ +2020-06-21T14:00:00+00:00 + + +https://torrocus.com/blog/increase-markdown-conversion-speed-in-jekyll/ +2020-07-08T07:30:00+00:00 + + +https://torrocus.com/blog/special-github-repository/ +2020-07-11T21:55:00+00:00 + + +https://torrocus.com/blog/generating-password-in-ubuntu/ +2020-09-04T12:00:00+00:00 + + +https://torrocus.com/blog/ + + diff --git a/special-github-repository/index.html b/special-github-repository/index.html new file mode 100644 index 0000000..918dd6a --- /dev/null +++ b/special-github-repository/index.html @@ -0,0 +1,37 @@ +Create a special repository in your GitHub Profile 🔨 | Less is more

Create a special repository in your GitHub Profile 🔨

Who doesn’t like riddles or secrets? As a programmer, I like all Easter eggs and associated mystery. GitHub probably also likes such games.

I noticed that my friend’s profile on GitHub looks different from mine. I took a closer look at this. It turned out that GitHub introduced a secret, special repository. For a special repository to be displayed in the user profile, two conditions must be met.

The name of your special repository

The message that appears on GitHub after discovering the secret looks something like this:

You found a secret! USERNAME/USERNAME is a ✨ special ✨ repository that you can use to add a README.md to your GitHub profile. Make sure it’s public and initialize it with a README to get started.

To clarify, USERNAME is your GitHub username. Your secret GitHub repository has the same name.

In my case, after entering my username as the repository name, the message looked exactly like this:


You found a secret! torrocus/torrocus is a ✨ special ✨ repository that you can use to add a README.md to your GitHub profile. Make sure it’s public and initialize it with a README to get started.


You found a secret!

Because this is a secret, the above message appears if and only if the repository name is exactly as the GitHub username.

Animation revealing a special repository

README file in your special repository

Before pressing the Create repository button, it’s worth checking the checkbox like below.

[✓] Initialize this repository with a README

Then, when creating the repo, the first commit with the README.md file will be created. The content of this file is as follows:

README.md

### Hi there 👋
+
+<!--
+**torrocus/torrocus** is a ✨ _special_ ✨ repository because its `README.md` (this file) appears on your GitHub profile.
+
+Here are some ideas to get you started:
+
+- 🔭 I’m currently working on ...
+- 🌱 I’m currently learning ...
+- 👯 I’m looking to collaborate on ...
+- 🤔 I’m looking for help with ...
+- 💬 Ask me about ...
+- 📫 How to reach me: ...
+- 😄 Pronouns: ...
+- ⚡ Fun fact: ...
+-->
+

And it gives the effect as in the screenshot below:

After create secret repository

Features of the special repository

In most cases, the README file in this “secret repo” behaves like any other markdown file. For now, I’m still testing the features of this repository. I noticed the following properties.

Interpretation of markdown syntax

  • Support headers (six levels of section headings)
    # Header with <h1> tag
    +## Header with <h2> tag
    +### Header with <h3> tag
    +#### Header with <h4> tag
    +<!-- Headlines below are much smaller than normal text -->
    +##### Header with <h5> tag
    +###### Header with <h6> tag
    +
  • Support for emphasis text and its combinations
    • bold text,
    • italic text,
    • stricken text
    • bold and italic text
    • italic and bold text
  • List support:
    • ordered list
    • unordered list
  • Support for tables in ASCII format
  • Support blockquotes
    Benjamin Franklin said:
    +> Three may keep a secret if two of them are dead.
    +
  • Automatic linking for URLs. Using the correct URL in the text will create a link.
  • Support a code snippet in the body of the text. Here is the inline code print("You found a secret!");.
  • Code block display support.
  • Support for different types of images (JPG, PNG, GIF, SVG). For images to display correctly, they must have an absolute path. https://raw.githubusercontent.com/torrocus/torrocus/master/IMAGE
  • Support <details> and <summary> tags. You can make the profile more interactive.
    <details open>
    +  <summary>Technologies</summary>
    +  <p>...</p>
    +</details>
    +
    There is a small problem with details. After </details> tag, enter the additional enter character. Otherwise, Markdown is interpreted incorrectly in the next line.
  • The displayed README.md file on the GitHub Profile is responsive. The maximum ASCII Art width can be 115 characters wide. The content should be in <pre> tags. But if it is to display well on mobile, it should be as wide as 55 characters. Empirically checked.

Using only the above functionalities may be sufficient. But a demanding GitHub user will notice several problems.

Not supported features

  • Doesn’t support some HTML tags like <small>. Tags that are not converted will appear as text.
  • JavaScript tags are displayed as text and are not interpreted.
  • Doesn’t support username @mentions. This is strange because this function is often used on GitHub. Maybe in the future, this will change.
  • Doesn’t support inline SVG. This image is not displayed. Instead of inline, provide the full, absolute path to SVG.
  • Doesn’t support Base64 images.

Image support

Images are displayed when I give the full path to them. The code in Markdown looks something like this:

![ALT TEXT](https://raw.githubusercontent.com/torrocus/torrocus/master/IMAGE)
+

GitHub converted the above Markdown code to HTML as follows:

<a target="_blank"
+   rel="noopener noreferrer"
+   href="https://raw.githubusercontent.com/torrocus/torrocus/master/IMAGE">
+  <img alt="ALT TEXT"
+       src="https://raw.githubusercontent.com/torrocus/torrocus/master/IMAGE">
+</a>
+

GitHub replaced the image to a link with the image. Fortunately, I can use HTML directly with <img> tag. In that case it’s possible to overwrite the link associated with the image.

I treat it as an experiment and fun, so I don’t have any special expectations.