From df879756bc9d501871740d25ff275df365305c7e Mon Sep 17 00:00:00 2001
From: "10567847+bamr87@users.noreply.github.com"
<10567847+bamr87@users.noreply.github.com>
Date: Sat, 2 Dec 2023 18:39:03 -0700
Subject: [PATCH 1/9] added jekyll docs
---
.gitmodules | 9 ++----
_includes/docs_variables_table.html | 18 +++++++++++
_includes/docs_version_badge.html | 1 +
pages/_docs/doc-index.md | 48 ++++++++++++++++++++++++++++-
4 files changed, 69 insertions(+), 7 deletions(-)
create mode 100644 _includes/docs_variables_table.html
create mode 100644 _includes/docs_version_badge.html
diff --git a/.gitmodules b/.gitmodules
index a29502f..eff918d 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,6 +1,3 @@
-[submodule "homebrew"]
- path = _quickstart/homebrew
- url = https://github.com/bamr87/homebrew
-[submodule "winget"]
- path = _quickstart/winget
- url = https://github.com/bamr87/winget-packages.git
+[submodule "pages/_docs/jekyll-docs"]
+ path = pages/_docs/jekyll-docs
+ url = https://github.com/jekyll/jekyll.git
diff --git a/_includes/docs_variables_table.html b/_includes/docs_variables_table.html
new file mode 100644
index 0000000..5e8717f
--- /dev/null
+++ b/_includes/docs_variables_table.html
@@ -0,0 +1,18 @@
+
\ No newline at end of file
diff --git a/_includes/docs_version_badge.html b/_includes/docs_version_badge.html
new file mode 100644
index 0000000..1442d74
--- /dev/null
+++ b/_includes/docs_version_badge.html
@@ -0,0 +1 @@
+{{ include.version }}
\ No newline at end of file
diff --git a/pages/_docs/doc-index.md b/pages/_docs/doc-index.md
index 31c2d2b..3cb105a 100644
--- a/pages/_docs/doc-index.md
+++ b/pages/_docs/doc-index.md
@@ -12,12 +12,58 @@ sidebar:
toc: true
toc_sticky: true
date: 2021-09-24T19:32:44.876Z
-lastmod: 2023-03-11T01:52:55.548Z
+lastmod: 2023-12-03T01:21:22.098Z
draft: true
---
These are the docs
## Jekyll
+[official docs](https://jekyllrb.com/docs/)
+```sh
+git submodule add https://github.com/jekyll/jekyll.git jekyll-docs
+
+```
+
+
+```sh
+cd jekyll-docs/docs/_docs
+git sparse-checkout init --cone
+git sparse-checkout set jekyll-docs/docs/_docs
+git sparse-checkout set docs/_docs
+
+```
+
+```html
+
+{{ include.version }}
+```
+
+
+```html
+
+
+
+
+```
+
+
## Bootstrap
From 6ac88eedf5b03f2e2077b15bd18a15a743447d78 Mon Sep 17 00:00:00 2001
From: bamr87 <10567847+bamr87@users.noreply.github.com>
Date: Sun, 3 Dec 2023 01:47:51 -0700
Subject: [PATCH 2/9] clean up
---
pages/_docs/2023-04-14-wsl-dev-setup.md | 22 ++++++-----
.../_docs/2023-04-15-wsl-setup-with-vscode.md | 6 +--
.../cannot-start-jekyll-at-specific-port.md | 21 ++++++++--
...-website-to-gitHub-pages-with-travis-ci.md | 6 +--
.../deploying-jekyll-website-to-netlify.md | 17 +++++++-
...ing-personal-website-with-custom-domain.md | 12 ++++--
...ng-diagrams-and-flowcharts-with-mermaid.md | 29 ++++++++++++--
pages/_docs/jekyll/jekyll-pagination.md | 23 ++++++++++-
pages/_docs/jekyll/jekyll-progress-bar.md | 20 +++++++++-
...kyll-search-function-for-static-website.md | 4 +-
pages/_docs/jekyll/jekyll-security.md | 13 ++++++-
pages/_docs/jekyll/jekyll-seo.md | 19 ++++++++-
pages/_docs/jekyll/personal-site.md | 39 -------------------
.../2023-11-23-character-building.md | 13 ++++++-
.../init_world/2023-11-23-it-fundamentals.md | 13 ++++++-
.../_quests/init_world/hello-win/hello-win.md | 23 +++++------
pages/_quests/personal-site.md | 39 +++++++++++++++++++
17 files changed, 229 insertions(+), 90 deletions(-)
delete mode 100644 pages/_docs/jekyll/personal-site.md
create mode 100644 pages/_quests/personal-site.md
diff --git a/pages/_docs/2023-04-14-wsl-dev-setup.md b/pages/_docs/2023-04-14-wsl-dev-setup.md
index 4686017..dee1e75 100644
--- a/pages/_docs/2023-04-14-wsl-dev-setup.md
+++ b/pages/_docs/2023-04-14-wsl-dev-setup.md
@@ -2,7 +2,7 @@
title: Set up a WSL development environment
author: null
excerpt: null
-description: Set up a WSL development environment using best practices from this set-by-step guide. Learn how to run Ubuntu, Visual Studio Code or Visual Studio, Git, Windows Credential Manager, MongoDB, MySQL, Docker remote containers and more.
+description: Set up a WSL development environment using best practices.
snippet: null
categories:
- notes
@@ -10,12 +10,10 @@ tags:
- notes
meta: null
draft: true
-lastmod: 2022-01-10T21:54:00.053Z
-source: 'https://github.com/MicrosoftDocs/wsl/blob/main/WSL/setup/environment.md'
+lastmod: 2023-12-03T08:37:16.464Z
+source: https://github.com/MicrosoftDocs/wsl/blob/main/WSL/setup/environment.md
---
-# Set up a WSL development environment
-
A step-by-step guide to the best practices for setting up a WSL development environment. Learn how to run the command to install the default Bash shell that uses Ubuntu or can be set to install other Linux distributions, use basic WSL commands, set up Visual Studio Code or Visual Studio, Git, Windows Credential Manager, databases like MongoDB, Postgres, or MySQL, set up GPU acceleration, run GUI apps, and more.
## Get started
@@ -113,9 +111,13 @@ We recommend using WSL with Windows Terminal, especially if you plan to work wit
## File storage
-- To open your WSL project in Windows File Explorer, enter: `explorer.exe .`
*Be sure to add the period at the end of the command to open the current directory.*
+- To open your WSL project in Windows File Explorer, enter: `explorer.exe .`
+
+*Be sure to add the period at the end of the command to open the current directory.*
+
+- [Store your project files on the same operating system as the tools you plan to use](../filesystems.md#file-storage-and-performance-across-file-systems).
-- [Store your project files on the same operating system as the tools you plan to use](../filesystems.md#file-storage-and-performance-across-file-systems).
For the fastest performance speed, store your files in the WSL file system if you are working on them with Linux tools in a Linux command line (Ubuntu, OpenSUSE, etc). If you're working in a Windows command line (PowerShell, Command Prompt) with Windows tools, store your files in the Windows file system. Files can be accessed across the operating systems, but it may significantly slow down performance.
+For the fastest performance speed, store your files in the WSL file system if you are working on them with Linux tools in a Linux command line (Ubuntu, OpenSUSE, etc). If you're working in a Windows command line (PowerShell, Command Prompt) with Windows tools, store your files in the Windows file system. Files can be accessed across the operating systems, but it may significantly slow down performance.
For example, when storing your WSL project files:
@@ -126,7 +128,7 @@ For example, when storing your WSL project files:
## Set up your favorite code editor
-We recommend using Visual Studio Code or Visual Studio, as they directly support remote development and debugging with WSL. Visual Studio Code allows you to use WSL as a full-featured development environment. Visual Studio offers native WSL support for C++ cross-platform development.
+We recommend using Visual Studio Code or Visual Studio, as they directly support remote development and debugging with WSL. Visual Studio Code allows you to use WSL as a full-featured development environment. Visual Studio offers native WSL support for C++ cross-platform development.
### Use Visual Studio Code
@@ -140,7 +142,7 @@ Once VS Code is installed and set up, you can open your WSL project with a VS Co
### Use Visual Studio
-Follow this step-by-step guide to [Get started using Visual Studio with WSL for C++ cross-platform development](/cpp/build/walkthrough-build-debug-wsl2). Visual Studio 2022 enables you to build and debug CMake projects on Windows, WSL distributions, and SSH connections from the same instance of Visual Studio.
+Follow this step-by-step guide to [Get started using Visual Studio with WSL for C++ cross-platform development](/cpp/build/walkthrough-build-debug-wsl2). Visual Studio 2022 enables you to build and debug CMake projects on Windows, WSL distributions, and SSH connections from the same instance of Visual Studio.
![Select a target system in Visual Studio 2022](../media/vs-target-system.png)
@@ -199,4 +201,4 @@ Follow this tutorial to learn how to set up and [run Linux GUI apps on WSL](../t
- [Set up your development environment on Windows](/windows/dev-environment/): Learn more about setting up your development environment for your preferred language or framework, such as React, Python, NodeJS, Vue, etc.
- [Troubleshooting](../troubleshooting.md): Find common issues, where to report bugs, where to request new features, and how to contribute to the docs.
- [FAQs](../faq.yml): Find a list of frequently asked questions.
-- [Release Notes](../release-notes.md): Review the WSL Release Notes for a history of past build updates. You can also find the [release notes for the WSL Linux Kernel](../kernel-release-notes.md).
\ No newline at end of file
+- [Release Notes](../release-notes.md): Review the WSL Release Notes for a history of past build updates. You can also find the [release notes for the WSL Linux Kernel](../kernel-release-notes.md)
diff --git a/pages/_docs/2023-04-15-wsl-setup-with-vscode.md b/pages/_docs/2023-04-15-wsl-setup-with-vscode.md
index d7472ac..b70e5b5 100644
--- a/pages/_docs/2023-04-15-wsl-setup-with-vscode.md
+++ b/pages/_docs/2023-04-15-wsl-setup-with-vscode.md
@@ -11,12 +11,10 @@ tags:
meta: null
keywords: wsl, windows, windowssubsystem, gnu, linux, bash, vs code, remote extension, debug, path, visual studio
draft: true
-lastmod: 2022-05-21T23:56:40.448Z
-source: 'https://github.com/MicrosoftDocs/WSL/blob/main/WSL/tutorials/wsl-vscode.md'
+lastmod: 2023-12-03T08:37:14.103Z
+source: https://github.com/MicrosoftDocs/WSL/blob/main/WSL/tutorials/wsl-vscode.md
---
-# Get started using Visual Studio Code with Windows Subsystem for Linux
-
Visual Studio Code, along with the WSL extension, enables you to use WSL as your full-time development environment directly from VS Code. You can:
* develop in a Linux-based environment
diff --git a/pages/_docs/jekyll/cannot-start-jekyll-at-specific-port.md b/pages/_docs/jekyll/cannot-start-jekyll-at-specific-port.md
index 5b95ec8..1507820 100644
--- a/pages/_docs/jekyll/cannot-start-jekyll-at-specific-port.md
+++ b/pages/_docs/jekyll/cannot-start-jekyll-at-specific-port.md
@@ -7,7 +7,7 @@ date: 2016-01-17
tags:
- Jekyll
- Port
-lastmod: 2022-06-11T18:15:41.001Z
+lastmod: 2023-12-03T08:37:12.500Z
---
@@ -15,32 +15,41 @@ lastmod: 2022-06-11T18:15:41.001Z
> Handle error 'Address Already in Use' when starting Jekyll.
## 1. Issue of 'Address Already in Use'
+
I've set up my [GitHub Page website](http://{{ site.github_user }}.github.io/) locally. It works as expected. But sometimes, I'm unable to start Jekyll. I keep getting the following error after running 'jekyll serve' command.
+
```raw
jekyll 3.5.2 | Error: Address already in use - bind(2) for 127.0.0.1:4000
```
+
Port 4000 has already been occupied. To solve this issue, kill the process that is using this port.
Find the process which is using port 4000.
+
```raw
-$ sudo lsof -i :4000
+sudo lsof -i :4000
```
Kill the process with its id.
+
```raw
-$ sudo kill -9
+sudo kill -9
```
+
![image](/assets/images/jekyll/8105/port.png){:width="700px"}
Retry 'jekyll serve', the error 'Port Already in Use' is gone.
## 2. NoMachine Process
+
Similar problem - Port 4000 is occupied by NoMachine(nxd).
+
```raw
Johnny@Johnny-Mac:~$ sudo lsof -i :4000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nxd 11199 nx 3u IPv4 0x2fad2a11645a3de5 0t0 TCP *:terabase (LISTEN)
nxd 11199 nx 4u IPv6 0x2fad2a115cded5bd 0t0 TCP *:terabase (LISTEN)
```
+
Killing the thread won't work, because NoMachine's nxd process will keep restarting, with a new PID. Either you have to change the port for your app. Or, change the service port for NoMachine. NoMachine->Preferences->Connection preferences.
![image](/assets/images/jekyll/8105/nomachine_preferences.png){:width="700px"}
![image](/assets/images/jekyll/8105/nomachine_port.png){:width="700px"}
@@ -48,22 +57,28 @@ Killing the thread won't work, because NoMachine's nxd process will keep restart
We can also shutdown NoMachine and disable the automatic start at next boot via command line.
On Linux:
+
```raw
sudo /etc/NX/nxserver --shutdown
sudo /etc/NX/nxserver --startmode manual
```
+
On Mac:
+
```raw
sudo /etc/NX/nxserver --shutdown
sudo /etc/NX/nxserver --startmode manual
```
+
On Windows:
Open the CMD console as administrator and move to the bin folder under the NoMachine installation directory and run:
+
```raw
nxserver --shutdown
nxserver --startmode manual
```
## 3. References
+
* [TCPServer Error: Address already in use - bind(2)](https://stackoverflow.com/questions/10261477/tcpserver-error-address-already-in-use-bind2)
* [Disabling the automatic start-up of NoMachine at boot time](https://www.nomachine.com/AR04L00800)
diff --git a/pages/_docs/jekyll/continuously-deploy-jekyll-website-to-gitHub-pages-with-travis-ci.md b/pages/_docs/jekyll/continuously-deploy-jekyll-website-to-gitHub-pages-with-travis-ci.md
index af215fa..47aceb3 100644
--- a/pages/_docs/jekyll/continuously-deploy-jekyll-website-to-gitHub-pages-with-travis-ci.md
+++ b/pages/_docs/jekyll/continuously-deploy-jekyll-website-to-gitHub-pages-with-travis-ci.md
@@ -1,6 +1,6 @@
---
key: tutorial
-title: Continuously Deploy Jekyll Website to GitHub Pages with Travis-CI
+title: Continuously Deploy Jekyll to GitHub Pages with Travis-CI
index: 8141
subcategory: jekyll
date: 2017-12-10
@@ -8,14 +8,14 @@ tags:
- Jekyll
- Github Pages
- Travis CI
-lastmod: 2022-06-11T18:16:21.350Z
+lastmod: 2023-12-03T08:38:10.703Z
---
> Start continuous integration with Travis CI for Jekyll website.
## 1. GitHub Pages & Jekyll
-I have my person website http://{{ site.github_user }}.github.io/ hosted on [Github Pages](https://pages.github.com/). I post new blogs by creating Markdown files(.md) and submit them to the repository on Github. Then, Github Pages(powered by [Jekyll](https://jekyllrb.com/)) starts to compile the entire website and publish it. In some cases, however, the compilation fails, and the new changes are not published. Then, GitHub Page will send a notification email to me. This email just reminds me that there is one build failure, but doesn't tell what is the root cause.
+I have my person website http://{{ site.github_user }}.github.io/ hosted on [Github Pages](https://pages.github.com/). I post new blogs by creating Markdown files(.md) and submit them to the repository on Github. Then, Github Pages(powered by [Jekyll](https://jekyllrb.com/)) starts to compile the entire website and publish it. In some cases, however, the compilation fails, and the new changes are not published. Then, GitHub Page will send a notification email to me. This email just reminds me that there is one build failure, but doesn't tell what is the root cause.
Another approach is to use third-party service(eg. Travis CI) to display Jekyll build error messages, which is also recommended by Github Pages.
diff --git a/pages/_docs/jekyll/deploying-jekyll-website-to-netlify.md b/pages/_docs/jekyll/deploying-jekyll-website-to-netlify.md
index 12a8b27..06366d1 100644
--- a/pages/_docs/jekyll/deploying-jekyll-website-to-netlify.md
+++ b/pages/_docs/jekyll/deploying-jekyll-website-to-netlify.md
@@ -7,26 +7,34 @@ date: 2019-06-22
tags:
- Jekyll
- Netlify
-lastmod: 2022-06-11T18:16:53.924Z
+lastmod: 2023-12-03T08:41:00.908Z
---
> Deploy static website built with Jekyll to Netlify.
## 1. Jekyll & GitHub Pages & Netlify
+
I'm using Jekyll to build my personal website [{{ site.github_user }}.github.io]({{ site.github_user }}.github.io). All its content are static, which are built by Jekyll. Currently, it is hosted on [GitHub Pages](https://pages.github.com/). It works fine, however, there are some limitations with GitHub Pages. For example, it is not possible to specify Http Header for caching.
On the other hand, Netlify supports more features than GitHub Pages and it is also free. [Netlify](https://www.netlify.com/) is an online service which builds, deploys, and manages modern web projects. Netlify basically initiates its own kind of repository that pushes both to a Github repository and its own services. It offers hosting for front-end projects with many options.
## 2. Deploying Application From Github Repository
+
### 2.1 Preparation
+
Since I'm deploying a Jekyll website, run the following commands in local repository to update `Gemfile.lock`. Netlify will use this file for the deployment.
+
```raw
bundle install
bundle update
```
+
### 2.2 New Netlify Account
-If you don't have netlify account yet, go to https://app.netlify.com/signup to create a Netlify account with your GitHub account. Once you have the account, follow the steps below to deploy static website to Netlify.
+
+If you don't have netlify account yet, go to [Netlify](https://app.netlify.com/signup) to create a Netlify account with your GitHub account. Once you have the account, follow the steps below to deploy static website to Netlify.
+
### 2.3 New Site from GitHub
+
After login, you are in the app home page, click 'New site from Git'.
![image](/assets/images/jekyll/8143/app.png)
Choose 'Github', next.
@@ -43,12 +51,16 @@ Switch to 'Deploy' tab to monitor the status and check the logs.
![image](/assets/images/jekyll/8143/monitor.png)
If no issue occurs, the publish will be done after few seconds(or minutes).
![image](/assets/images/jekyll/8143/published.png)
+
### 2.4 Testing
+
Click on the green link. Our app is now running in the domain of Netlify.
![image](/assets/images/jekyll/8143/homepage.png)
Try to switch other pages, all work fine.
![image](/assets/images/jekyll/8143/portfolio.png)
+
### 2.5 Changing Site Name
+
Switch to Settings tab, scroll down and click the 'Change site name' button.
![image](/assets/images/jekyll/8143/settings.png)
Change the name to '{{ site.github_user }}' and save.
@@ -57,4 +69,5 @@ Access your site with the new URL, it should work.
![image](/assets/images/jekyll/8143/newname.png)
## 3. Reference
+
* [A Step-by-Step Guide: Jekyll 3.0 on Netlify](https://www.netlify.com/blog/2015/10/28/a-step-by-step-guide-jekyll-3.0-on-netlify/)
diff --git a/pages/_docs/jekyll/deploying-personal-website-with-custom-domain.md b/pages/_docs/jekyll/deploying-personal-website-with-custom-domain.md
index 4c6cc36..d6877dd 100644
--- a/pages/_docs/jekyll/deploying-personal-website-with-custom-domain.md
+++ b/pages/_docs/jekyll/deploying-personal-website-with-custom-domain.md
@@ -6,18 +6,20 @@ subcategory: jekyll
date: 2019-06-21
tags:
- Custom Domain
-lastmod: 2022-06-11T18:16:53.926Z
+lastmod: 2023-12-03T08:40:23.773Z
---
> Setup personal website with Github page and custom domain.
## 1. Setup website in github page
+
Refer this post [Creating and Hosting a Personal Site on GitHub](http://jmcglone.com/guides/github-pages/) to create a repository on github and publish it to GitHub Pages.
-For demo purpose, I will use the repository of my personal website, see https://github.com/{{ site.github_user }}/{{ site.github_user }}.github.io.
+For demo purpose, I will use the repository of my personal website, see {{ site.github_user }}/{{ site.github_user }}.github.io.
## 2. Register domain from Godaddy
-Visit https://www.godaddy.com, register account and search domains.
+
+Visit , register account and search domains.
![image](/assets/images/jekyll/8142/godaddy_searchdomain.png)
Add the domain you're interested into shopping cart, and prepare to pay for it.
![image](/assets/images/jekyll/8142/godaddy_cart.png)
@@ -25,7 +27,9 @@ After you finish the payment, congratulations, you own the domain!
![image](/assets/images/jekyll/8142/godaddy_domain.png)
## 3. Setup DNS
+
Now, it's time to setup DNS for your new domain. Add `A` record to point the new domain(eg. {{ site.github_user }}.github.io) to a specific IP. The below four IP addresses are for GitHub Pages.
+
* 185.199.108.153
* 185.199.109.153
* 185.199.110.153
@@ -35,6 +39,7 @@ In addition, add `CNAME` record to point the new domain(eg. {{ site.github_user
![image](/assets/images/jekyll/8142/godaddy_adddns.png)
## 4. Enable Custom Domain and SSL on GitHub
+
Go to the github repository. In Settings, input the custom domain and check 'Enforce HTTPS'.
![image](/assets/images/jekyll/8142/custom_domain.png){:width="700px"}
@@ -44,5 +49,6 @@ Portfolio page.
![image](/assets/images/jekyll/8142/rongzhuang_portfolio.png)
## 5. Reference
+
* [How to Configure GoDaddy Custom Domains with GitHub Pages](https://medium.com/@supriyakankure/how-to-add-a-custom-domain-to-your-github-page-with-godaddy-84495781143e)
* [Custom domains on GitHub Pages gain support for HTTPS](https://github.blog/2018-05-01-github-pages-custom-domains-https/)
diff --git a/pages/_docs/jekyll/generating-diagrams-and-flowcharts-with-mermaid.md b/pages/_docs/jekyll/generating-diagrams-and-flowcharts-with-mermaid.md
index 85aae9a..753e4be 100644
--- a/pages/_docs/jekyll/generating-diagrams-and-flowcharts-with-mermaid.md
+++ b/pages/_docs/jekyll/generating-diagrams-and-flowcharts-with-mermaid.md
@@ -8,33 +8,42 @@ tags:
- Mermaid
- Flowchart
- Gantt
-lastmod: 2022-06-04T17:35:42.077Z
+lastmod: 2023-12-03T08:47:16.750Z
---
> Generate diagrams on web page with Mermaid.
## 1. Mermaid
+
[Mermaid](https://mermaidjs.github.io/) a simple markdown-like script language for generating charts from text via javascript.
## 2. Using Mermaid on Web Pages
+
Two steps:
+
* Include mermaid js library file with script tag in the html page.
* Define diagram with mermaid syntax on the web page.
### 2.1 Loading Mermaid
-The preferred way to use Mermaid on a web page is by linking to the publicly available MathJax Content Delivery Network(CDN). This can be done by adding the following code snippet into the HTML header block (the code between and ) of your HTML or XHTML document:
+
+The preferred way to use Mermaid on a web page is by linking to the publicly available MathJax Content Delivery Network(CDN). This can be done by adding the following code snippet into the HTML header block (the code between `` and ``) of your HTML or XHTML document:
+
```html
```
-* Go to https://unpkg.com/mermaid to search the latest version or specific version.
+
+* Go to to search the latest version or specific version.
In addition, we need to call the `initialize` method.
+
```html
```
+
If you use dynamically loaded fonts that are loaded through CSS, such as Google fonts, mermaid should wait for the whole page to have been loaded.
+
```html
```
+
{% endraw %}
## 5. Reference
+
* [Creating previous and next links within a Jekyll Collection](http://stories.upthebuzzard.com/jekyll_notes/2017-02-19-prev-and-next-within-a-jekyll-collection.html)
* [Previous Next Links for Jekyll Collections](https://gist.github.com/budparr/3e637e575471401d01ec)
* [Jekyll Filters - Where and Group_By](https://blog.webjeda.com/jekyll-filters/)
diff --git a/pages/_docs/jekyll/jekyll-progress-bar.md b/pages/_docs/jekyll/jekyll-progress-bar.md
index 38359b8..80d9252 100644
--- a/pages/_docs/jekyll/jekyll-progress-bar.md
+++ b/pages/_docs/jekyll/jekyll-progress-bar.md
@@ -7,24 +7,33 @@ date: 2019-06-04
tags:
- Nanobar
- Progress Bar
-lastmod: 2022-06-04T17:35:42.099Z
+lastmod: 2023-12-03T08:47:34.515Z
---
> Show progress bar when page is loading.
## 1. Progress Bar
+
[Nanobar](http://nanobar.jacoborus.codes/) is a very lightweight progress bar which generates a highly customizable top bar.
## 2. Generate Top Bar
+
### 2.1 Download Nanobar
+
Download and extract the [latest release](https://github.com/jacoborus/nanobar/archive/master.zip). Unzip the package and copy the `nanobar.min.js` file your project or website folder, for example `/assets/js/nanobar.min.js`.
+
### 2.2 Include Nanobar
+
Edit `_layouts/default.html`, insert script tag and set src to the path of the minimized version nonabar.
+
```html
```
+
### 2.3 Nanobar in Html
+
Edit `_layouts/default.html`, add nanobar below the navigation bar.
+
```html
...
@@ -37,16 +46,22 @@ Edit `_layouts/default.html`, add nanobar below the navigation bar.
...
```
+
### 2.4 Customize Top Progress Bar
+
Add the following css for nanobar into `/assets/css/main.scss`.
+
```css
.nanobar .bar {
margin-top: 56px;
background: #1cc927;
}
```
+
### 2.5 Invoke the Progress
+
Create nanobar with javascript and assign it to div with classname `nanobar`. Notice, the progress is dummy. It is fixed with three steps.
+
```html
```
+
### 2.6 Test
+
Access any page, there is a green top bar below the navigation bar.
![image](/assets/images/jekyll/8113/progress_bar.png)
## 3. Reference
+
* [Adding Top Progress Bar to Websites](https://blog.webjeda.com/top-bar-website/)
* [Nanobar - A lightweight progress bar](http://nanobar.jacoborus.codes/)
* [Pro Sidebar Template with Bootstrap 4](https://bootsnipp.com/snippets/Q0dAX)
diff --git a/pages/_docs/jekyll/jekyll-search-function-for-static-website.md b/pages/_docs/jekyll/jekyll-search-function-for-static-website.md
index c946379..687d945 100644
--- a/pages/_docs/jekyll/jekyll-search-function-for-static-website.md
+++ b/pages/_docs/jekyll/jekyll-search-function-for-static-website.md
@@ -8,15 +8,15 @@ tags:
- Search
- Lunr.js
draft: true
-lastmod: 2022-06-04T17:35:42.098Z
+lastmod: 2023-12-03T08:47:24.633Z
---
> Search.
## 1. Search
-
## 7. Reference
+
* [Jekyll search using lunr.js](https://learn.cloudcannon.com/jekyll/jekyll-search-using-lunr-js/)
* [Lunrjs - Searching](https://lunrjs.com/guides/searching.html)
* [Jekyll Search with Algolia and Webtasks](https://forestry.io/blog/search-with-algolia-in-jekyll/)
diff --git a/pages/_docs/jekyll/jekyll-security.md b/pages/_docs/jekyll/jekyll-security.md
index b8aebd3..5e01125 100644
--- a/pages/_docs/jekyll/jekyll-security.md
+++ b/pages/_docs/jekyll/jekyll-security.md
@@ -6,22 +6,29 @@ subcategory: jekyll
date: 2019-06-29
tags:
- Security
-lastmod: 2022-06-11T18:16:53.927Z
+lastmod: 2023-12-03T08:47:30.198Z
---
> Scan website security vulnerabilities and fix them.
## 1. Website Headers
+
### 1.1 Websites
-I have my personal website hosted on two domains, [{{ site.github_user }}.github.io](https://{{ site.github_user }}.github.io) and [{{ site.github_user }}.netlify.com](https://{{ site.github_user }}.netlify.com). The first one is hosted on [GitHub Pages](https://pages.github.com/), while the second one is hosted on [Netlify](https://www.netlify.com/). These two websites are powered by [Jekyll](https://jekyllrb.com/) and all their contents are totally static. Actually, they are using the same code base.The source codes are managed on GitHub in repository [https://github.com/{{ site.github_user }}/{{ site.github_user }}.github.io](https://github.com/{{ site.github_user }}/{{ site.github_user }}.github.io). Both sites are CI/CD with GitHub. If there is any change submitted to this repository, GitHub Pages and Netlify will compile and deploy the website automatically.
+
+I have my personal website hosted on two domains, [{{ site.github_user }}.github.io](https://{{ site.github_user }}.github.io) and [{{ site.github_user }}.netlify.com](https://{{ site.github_user }}.netlify.com). The first one is hosted on [GitHub Pages](https://pages.github.com/), while the second one is hosted on [Netlify](https://www.netlify.com/). These two websites are powered by [Jekyll](https://jekyllrb.com/) and all their contents are totally static. Actually, they are using the same code base.The source codes are managed on GitHub in repository [https://github.com/{{ site.github_user }}/{{ site.github_user }}.github.io]( site.github_user }}/{{ site.github_user }}.github.io). Both sites are CI/CD with GitHub. If there is any change submitted to this repository, GitHub Pages and Netlify will compile and deploy the website automatically.
+
### 1.2 Header Security
+
Visit [securityheaders.com](https://securityheaders.com) and scan headers for site https://{{ site.github_user }}.github.io.
![image](/assets/images/jekyll/8133/header_githubpages.png)
All the checks on header are failed. If we scan site https://{{ site.github_user }}.netlify.com, same result will be returned.
+
### 1.3 Resolution
+
To fix these security issues, we need to make some change at server side. However, there is no way to do that on GitHub Pages, but it can be done on Netlify. PS: This is one of the reasons why I migrated this static website from GitHub Pages to Netlify.
In the root directory of repository, create a file named `netlify.toml` with the following content. Ignore the `build` section and `cache-control` settings as of now.
+
```toml
[build]
command = "jekyll build"
@@ -42,12 +49,14 @@ In the root directory of repository, create a file named `netlify.toml` with the
public,
s-max-age=604800'''
```
+
Submit this file, wait for a while to let Netlify deploy the change. Once this file is deployed, run the scan for https://{{ site.github_user }}.netlify.com. This time, we can see all tests for header security are passed.
![image](/assets/images/jekyll/8133/header_netlify_fixed.png)
## 2. SSL
## 7. Reference
+
* [How to Configure Better Web Site Security with Cloudflare and Netlify](https://developer.okta.com/blog/2019/04/11/site-security-cloudflare-netlify)
* [12 Online Free Tools to Scan Website Security Vulnerabilities & Malware](https://geekflare.com/online-scan-website-security-vulnerabilities/)
* [The netlify.toml File](https://www.netlify.com/docs/netlify-toml-reference/)
diff --git a/pages/_docs/jekyll/jekyll-seo.md b/pages/_docs/jekyll/jekyll-seo.md
index ccd6da6..0527fa6 100644
--- a/pages/_docs/jekyll/jekyll-seo.md
+++ b/pages/_docs/jekyll/jekyll-seo.md
@@ -8,21 +8,28 @@ tags:
- SEO
- CDN
- DNS
-lastmod: 2022-06-11T18:16:53.931Z
+lastmod: 2023-12-03T08:47:31.567Z
---
> Optimize the website to improve the rankings.
## 1. SEO
+
Search engine optimization (`SEO`) is the process of increasing the quality and quantity of website traffic by increasing the visibility of a website or a web page to users of a web search engine.
+
### 1.1 robots.txt
+
Avoid web crawler to visit specific content, eg. /note.
+
```raw
User-agent: *
Disallow: /note/
```
+
### 1.2 RSS Feed
+
Edit /blog/atom.xml
+
```html
{%- raw -%}
---
@@ -56,8 +63,11 @@ type: blog
{% endraw %}
```
+
![image](/assets/images/jekyll/8131/rssfeed.png)
+
### 1.3 Sitemap
+
```xml
{%- raw -%}
---
@@ -84,15 +94,20 @@ type: blog
{% endraw %}
```
+
![image](/assets/images/jekyll/8131/sitemap.png)
## 2. Caching with CDN
+
### 2.1 Create a new account in Cloudflare
+
Add a new site, note the two name servers
+
* miki.ns.cloudflare.com
* owen.ns.cloudflare.com
### 2.2 Update Name server in GoDaddy
+
Find your domain, click the three dot button, choose 'Manage DNS'.
![image](/assets/images/jekyll/8131/godaddy_mydomains.png)
Scroll down, see the Nameservers section, click 'Change' btton.
@@ -105,9 +120,11 @@ You will receive an email from CloudFlare.
![image](/assets/images/jekyll/8131/cloudflare_notification.png)
## 3. Move Javascript Files to Bottom
+
Put javascript files to the bottom of the page can speed up the loading.
## 4. Reference
+
* [About robots.txt](https://www.robotstxt.org/robotstxt.html)
* [How to Use XML Sitemaps to Boost SEO](https://www.searchenginejournal.com/xml-sitemaps-seo/)
* [JEKYLL - GENERATING A SITEMAP.XML WITHOUT A PLUGIN](http://www.independent-software.com/generating-a-sitemap-xml-with-jekyll-without-a-plugin.html)
diff --git a/pages/_docs/jekyll/personal-site.md b/pages/_docs/jekyll/personal-site.md
deleted file mode 100644
index 8f195fd..0000000
--- a/pages/_docs/jekyll/personal-site.md
+++ /dev/null
@@ -1,39 +0,0 @@
----
-key: tutorial
-title: Personal Site
-index: 8199
-subcategory: jekyll
-date: 2020-01-20
-tags:
- - Personal Site
-lastmod: 2022-06-11T18:16:53.922Z
----
-
-> Services/tools used for building personal site.
-
-## 1. Personal Site
-My personal website can be accessed through following domains. These sites are all using the same source files.
-* [{{ site.github_base_url }}](https://{{ site.github_base_url }})
-
-
-
- No. | URL | Description
------|----------------------------------------------------|----------------------------------------
- 1 | https://github.com/{{ site.github_user }}/{{ site.github_user }}.github.io | Source code repository
- 2 | https://{{ site.github_user }}.github.io/ | `Domain 1`, hosted by GitHub Pages
- 3 | https://travis-ci.org/ | CI/CD for {{ site.github_user }}.github.io
- 4 | https://{{ site.github_user }}.netlify.com/ | `Domain 2`, hosted by Netlify
- 5 | https://www.netlify.com/ | CI/CD for {{ site.github_user }}.netlify.com
- 6 | https://{{ site.github_user }}.github.io/ | `Domain 3`, hosted by Cloudflare
- 7 | https://www.cloudflare.com/ | CDN for {{ site.github_user }}.github.io
- 8 | https://www.godaddy.com/ | Domain service for {{ site.github_user }}.github.io
- 9 | https://sharethis.com/ | Share buttons
- 10 | https://disqus.com/ | Comments service
- 11 | https://analytics.google.com | Track website traffic
- 12 | https://jekyllrb.com/ | Comments service
- 13 | https://highlightjs.org/ | Syntax highlighting
- 14 | https://www.mathjax.org/ | JS engine for mathematics
- 15 | https://mermaidjs.github.io/ | Charts generated from text via javascript
- 16 | https://lunrjs.com/ | Lightweight full-text offline search
- 17 | http://nanobar.jacoborus.codes/ | Lightweight progress bars
- 18 | https://www.google.com/adsense/ | Google Ads
diff --git a/pages/_quests/init_world/2023-11-23-character-building.md b/pages/_quests/init_world/2023-11-23-character-building.md
index 85c49c6..7070667 100644
--- a/pages/_quests/init_world/2023-11-23-character-building.md
+++ b/pages/_quests/init_world/2023-11-23-character-building.md
@@ -4,7 +4,7 @@ description: null
author: null
excerpt: null
date: 2023-11-23T18:10:54.834Z
-lastmod: 2023-11-25T21:09:56.651Z
+lastmod: 2023-12-03T08:47:29.067Z
draft: true
tags: []
categories: []
@@ -22,6 +22,7 @@ slug: character-building
A wise approach indeed! Building your character in the IT realm means equipping yourself with the right tools and environment. Let's shape your initial loadout:
### 1. **Choosing Your Operating System**
+
- **Windows**: Familiar to many and supports a wide range of software. Ideal for beginners and those interested in .NET development or gaming.
- **Linux**: Preferred in server environments and for development, especially open-source. Offers great control and customization.
- **macOS**: Popular among developers, especially for iOS development. Offers a Unix-based environment with a polished interface.
@@ -29,45 +30,53 @@ A wise approach indeed! Building your character in the IT realm means equipping
**Action Step**: Pick an OS that aligns with your interests and goals. You can dual-boot or use virtual machines to experience the best of multiple worlds.
### 2. **Setting Up Your Development Environment**
+
- **Text Editor**: Tools like Visual Studio Code, Sublime Text, or Atom are great for coding.
- **IDE (Integrated Development Environment)**: If you're leaning towards a specific programming language, choose an IDE that supports it well (e.g., PyCharm for Python, IntelliJ IDEA for Java).
**Action Step**: Install a text editor or an IDE based on the programming languages you're interested in.
### 3. **Learning Basic Command Line**
+
- **Windows**: Get familiar with Command Prompt and PowerShell.
- **Linux/macOS**: Practice using the Terminal.
**Action Step**: Start using the command line for simple tasks like navigating directories, creating files, and running scripts.
### 4. **Version Control System**
+
- **Git**: Essential for tracking changes in code and collaborating with others.
**Action Step**: Install Git and try basic commands like `git clone`, `git add`, `git commit`, and `git push`.
### 5. **Understanding Basic Networking**
+
- Tools like `ping`, `traceroute`, and `netstat` are fundamental.
**Action Step**: Use these tools to understand how your computer connects to networks and the internet.
### 6. **Virtualization Software**
+
- For experimenting with different OSs and setups, use tools like VirtualBox or VMware.
**Action Step**: Install a virtualization tool and try running a different OS.
### 7. **Basic Security Tools**
+
- Install a reputable antivirus and learn about basic security practices like using strong passwords and enabling firewalls.
**Action Step**: Secure your system and practice safe browsing habits.
### 8. **Cloud Services Account**
+
- Create a free tier account on AWS, Google Cloud, or Azure to start exploring cloud services.
**Action Step**: Follow a tutorial to deploy a simple cloud application.
### 9. **Learning Resources**
+
- Gather books, online courses, and tutorials relevant to your chosen path.
**Action Step**: Dedicate a specific time for learning and practicing new skills.
-By preparing your environment and tools, you're setting the stage for a successful journey in IT. Each tool and skill you acquire is like adding a new spell to your spellbook, making you more prepared for the challenges ahead. Happy adventuring! ๐งโโ๏ธ๐ป๐ฎ
\ No newline at end of file
+By preparing your environment and tools, you're setting the stage for a successful journey in IT. Each tool and skill you acquire is like adding a new spell to your spellbook, making you more prepared for the challenges ahead. Happy adventuring! ๐งโโ๏ธ๐ป๐ฎ
diff --git a/pages/_quests/init_world/2023-11-23-it-fundamentals.md b/pages/_quests/init_world/2023-11-23-it-fundamentals.md
index 8560a06..96e9961 100644
--- a/pages/_quests/init_world/2023-11-23-it-fundamentals.md
+++ b/pages/_quests/init_world/2023-11-23-it-fundamentals.md
@@ -4,7 +4,7 @@ description: null
author: null
excerpt: null
date: 2023-11-23T17:51:07.025Z
-lastmod: 2023-11-23T17:51:29.937Z
+lastmod: 2023-12-03T08:47:27.790Z
draft: true
tags: []
categories: []
@@ -16,11 +16,13 @@ slug: fundamentals
Absolutely! Hands-on exercises are like spells and incantations โ they're best learned by doing. Let's start with some foundational IT skills and practical exercises to get you going:
### 1. **Basic Computer Skills**
+
- **Exercise**: Organize your files and folders.
- Create a new folder structure on your computer.
- Organize your documents, images, and other files into these folders.
### 2. **Operating Systems (OS) Basics**
+
- **Exercise for Windows**: Learn to navigate the Control Panel and Task Manager.
- Explore different settings in the Control Panel.
- Open the Task Manager and familiarize yourself with different tabs like Processes, Performance, and Services.
@@ -30,43 +32,50 @@ Absolutely! Hands-on exercises are like spells and incantations โ they're best
- Practice basic Linux commands: `pwd`, `ls`, `cd`, `mkdir`, `rm`.
### 3. **Networking Fundamentals**
+
- **Exercise**: Explore your home network.
- Find out your computerโs IP address and default gateway.
- Log into your routerโs admin page (usually through the default gateway IP).
- Explore settings and understand terms like DHCP, DNS, and NAT.
### 4. **Basic Programming with Python**
+
- **Exercise**: Write a simple Python script.
- Install Python on your computer.
- Write a script that takes user input and prints a personalized greeting.
- Explore Python libraries by writing a script that fetches and displays the current weather from an online API.
### 5. **Scripting and Automation**
+
- **Exercise for Windows**: Write a basic Batch script.
- Create a script that cleans up temporary files from your computer.
- **Exercise for Linux**: Write a Bash script.
- Create a script that lists all files in a directory and sorts them by size.
### 6. **Introduction to Cloud Computing**
+
- **Exercise**: Create a free account on a cloud platform like Google Cloud Platform (GCP) or AWS.
- Explore the dashboard and familiarize yourself with the interface.
- Follow a tutorial to deploy a simple 'Hello World' application.
### 7. **Virtualization and Containers**
+
- **Exercise**: Create a Docker container.
- Install Docker on your machine.
- Pull a simple image like `nginx` or `hello-world` from Docker Hub.
- Run the container and access it via your web browser.
### 8. **Basic System Security**
+
- **Exercise**: Install and use an antivirus software.
- Perform a full system scan.
- Explore the settings and schedule regular scans.
### 9. **Version Control with Git**
+
- **Exercise**: Set up Git and practice basic commands.
- Install Git.
- Create a new repository and practice `git add`, `git commit`, `git push`.
- Clone an existing repository from GitHub and explore its contents.
-These exercises are your first steps. As you complete each one, you'll build a strong foundation in IT. Remember, the key is to practice regularly and keep challenging yourself with more complex tasks as you grow. Happy learning! ๐๐ป๐ง
\ No newline at end of file
+These exercises are your first steps. As you complete each one, you'll build a strong foundation in IT. Remember, the key is to practice regularly and keep challenging yourself with more complex tasks as you grow. Happy learning! ๐๐ป๐ง
diff --git a/pages/_quests/init_world/hello-win/hello-win.md b/pages/_quests/init_world/hello-win/hello-win.md
index 9224705..2a63536 100644
--- a/pages/_quests/init_world/hello-win/hello-win.md
+++ b/pages/_quests/init_world/hello-win/hello-win.md
@@ -3,17 +3,18 @@ Title: Init World - Win
Author: bamr87
Layout: post
permalink: /init-world/hello-win/
-Keywords: 'init, world'
+Keywords: init, world
Description: This is the init world.
Dependancies: null
-lastmod: '2021-12-16T01:24:13.911Z'
+lastmod: 2023-12-03T08:47:22.762Z
---
-# Powershell
+## Powershell
-cheatsheet: https://www.zerrouki.com/the-ps-cheatsheets/
+cheatsheet:
+
+
+
-https://docs.microsoft.com/en-us/windows/wsl/install-win10
-https://docs.microsoft.com/en-us/windows/wsl/interop
## run in Powershell as admin
```powershell
@@ -36,23 +37,23 @@ wsl --set-default-version 2
## Install distro
-https://docs.microsoft.com/en-us/windows/wsl/install-manual
+
-Invoke-WebRequest -Uri https://aka.ms/wsl-debian-gnulinux -OutFile Debian.appx -UseBasicParsing
+Invoke-WebRequest -Uri -OutFile Debian.appx -UseBasicParsing
cd ~/Downloads
Add-AppxPackage .\Debian.appx
## Setup new user and password
-https://docs.microsoft.com/en-us/windows/wsl/user-support
+
## Update Shell Override in Platformio
## Download/Install Apps
-https://docs.microsoft.com/en-us/windows/package-manager/
+
-winget https://github.com/microsoft/winget-cli/releases
+winget
# Core Universal OS Apps (Win/Linux/Mac)
diff --git a/pages/_quests/personal-site.md b/pages/_quests/personal-site.md
new file mode 100644
index 0000000..9060b2d
--- /dev/null
+++ b/pages/_quests/personal-site.md
@@ -0,0 +1,39 @@
+---
+key: tutorial
+title: Personal Site
+index: 8199
+subcategory: jekyll
+date: 2020-01-20
+tags:
+ - Personal Site
+lastmod: 2023-12-03T08:47:32.699Z
+---
+
+> Services/tools used for building personal site.
+
+## 1. Personal Site
+
+My personal website can be accessed through following domains. These sites are all using the same source files.
+
+* [{{ site.github_base_url }}](https://{{ site.github_base_url }})
+
+ No. | URL | Description
+-----|----------------------------------------------------|----------------------------------------
+ 1 | site.github_user }}/{{ site.github_user }}.github.io | Source code repository
+ 2 | https://{{ site.github_user }}.github.io/ | `Domain 1`, hosted by GitHub Pages
+ 3 | | CI/CD for {{ site.github_user }}.github.io
+ 4 | https://{{ site.github_user }}.netlify.com/ | `Domain 2`, hosted by Netlify
+ 5 | | CI/CD for {{ site.github_user }}.netlify.com
+ 6 | https://{{ site.github_user }}.github.io/ | `Domain 3`, hosted by Cloudflare
+ 7 | | CDN for {{ site.github_user }}.github.io
+ 8 | | Domain service for {{ site.github_user }}.github.io
+ 9 | | Share buttons
+ 10 | | Comments service
+ 11 | | Track website traffic
+ 12 | | Comments service
+ 13 | | Syntax highlighting
+ 14 | | JS engine for mathematics
+ 15 | | Charts generated from text via javascript
+ 16 | | Lightweight full-text offline search
+ 17 | | Lightweight progress bars
+ 18 | | Google Ads
From 7deee04038a7aa87950b5e88e1f652fab48573ba Mon Sep 17 00:00:00 2001
From: bamr87 <10567847+bamr87@users.noreply.github.com>
Date: Sun, 3 Dec 2023 02:38:22 -0700
Subject: [PATCH 3/9] fixes
---
...-jekyll-website-to-gitHub-pages-with-travis-ci.md | 12 ++++++++++--
pages/_docs/jekyll/jekyll-security.md | 6 +++---
pages/_quests/personal-site.md | 4 ++--
3 files changed, 15 insertions(+), 7 deletions(-)
diff --git a/pages/_docs/jekyll/continuously-deploy-jekyll-website-to-gitHub-pages-with-travis-ci.md b/pages/_docs/jekyll/continuously-deploy-jekyll-website-to-gitHub-pages-with-travis-ci.md
index 47aceb3..04235fb 100644
--- a/pages/_docs/jekyll/continuously-deploy-jekyll-website-to-gitHub-pages-with-travis-ci.md
+++ b/pages/_docs/jekyll/continuously-deploy-jekyll-website-to-gitHub-pages-with-travis-ci.md
@@ -8,7 +8,7 @@ tags:
- Jekyll
- Github Pages
- Travis CI
-lastmod: 2023-12-03T08:38:10.703Z
+lastmod: 2023-12-03T09:00:57.880Z
---
> Start continuous integration with Travis CI for Jekyll website.
@@ -20,11 +20,14 @@ I have my person website http://{{ site.github_user }}.github.io/ hosted on [Git
Another approach is to use third-party service(eg. Travis CI) to display Jekyll build error messages, which is also recommended by Github Pages.
## 2. Travis CI
+
[Travis CI](https://travis-ci.org) is a hosted, distributed continuous integration service used to build and test software projects hosted at GitHub.
## 3. Configuration of GitHub Page
+
Add a file named `Gemfile` in the root of the GitHub Pages repository with the following content:
Gemfile
+
```raw
source 'https://rubygems.org'
@@ -32,6 +35,7 @@ gem 'github-pages'
```
Add another file named `.travis.yml` to the root of the GitHub Pages repository with the following content:
+
```yml
language: ruby
rvm:
@@ -42,12 +46,14 @@ script: "bundle exec jekyll build"
Submit these two files to GitHub repository.
## 4. Configuration on Travis CI
-Access the home page of Travis CI - https://travis-ci.org, logon with your GitHub account.
+
+Access the home page of Travis CI - , logon with your GitHub account.
![image](/assets/images/jekyll/8141/travisci_account.png)
All the public repositories will be displayed here. Find the Github Page repository and switch on for auto building. The only left thing to do is to make some changes to your repository. Travis CI starts building the website once it detects new changes are committed.
![image](/assets/images/jekyll/8141/travisci_activate.png)
## 5. Demo
+
Edit some files and submit them to GitHub. Few minutes later, you will receive one notification email from GitHub Page saying the page build failed. However, there is no detailed information of the failure. We don't know what is the exact error.
![image](/assets/images/jekyll/8141/notification_builderror.png)
Then, you will get another notification email from Travis CI. It also reminds you that the build is failed.
@@ -66,6 +72,7 @@ Scroll down, no error occurs this time.
![image](/assets/images/jekyll/8141/fix2.png)
## 6. Travis CI Dashboard
+
The current activated repositories are listed in the dashboard.
![image](/assets/images/jekyll/8141/dashboard.png)
Click on the repository, we get the latest build.
@@ -77,6 +84,7 @@ Build history.
![image](/assets/images/jekyll/8141/history2.png)
## 7. Reference
+
* [Travis CI to the Jekyll site](https://jekyllrb.com/docs/continuous-integration/travis-ci/)
* [Viewing Jekyll build error messages](https://help.github.com/articles/viewing-jekyll-build-error-messages/)
* [Build Error Sample](https://travis-ci.org/{{ site.github_user }}/{{ site.github_user }}.github.io/builds/315705267?utm_source=email&utm_medium=notification)
diff --git a/pages/_docs/jekyll/jekyll-security.md b/pages/_docs/jekyll/jekyll-security.md
index 5e01125..e4908ba 100644
--- a/pages/_docs/jekyll/jekyll-security.md
+++ b/pages/_docs/jekyll/jekyll-security.md
@@ -6,7 +6,7 @@ subcategory: jekyll
date: 2019-06-29
tags:
- Security
-lastmod: 2023-12-03T08:47:30.198Z
+lastmod: 2023-12-03T09:00:54.463Z
---
> Scan website security vulnerabilities and fix them.
@@ -15,11 +15,11 @@ lastmod: 2023-12-03T08:47:30.198Z
### 1.1 Websites
-I have my personal website hosted on two domains, [{{ site.github_user }}.github.io](https://{{ site.github_user }}.github.io) and [{{ site.github_user }}.netlify.com](https://{{ site.github_user }}.netlify.com). The first one is hosted on [GitHub Pages](https://pages.github.com/), while the second one is hosted on [Netlify](https://www.netlify.com/). These two websites are powered by [Jekyll](https://jekyllrb.com/) and all their contents are totally static. Actually, they are using the same code base.The source codes are managed on GitHub in repository [https://github.com/{{ site.github_user }}/{{ site.github_user }}.github.io]( site.github_user }}/{{ site.github_user }}.github.io). Both sites are CI/CD with GitHub. If there is any change submitted to this repository, GitHub Pages and Netlify will compile and deploy the website automatically.
+I have my personal website hosted on two domains, [{{ site.github_user }}.github.io](https://{{ site.github_user }}.github.io) and [{{ site.github_user }}.netlify.com](https://{{ site.github_user }}.netlify.com). The first one is hosted on [GitHub Pages](https://pages.github.com/), while the second one is hosted on [Netlify](https://www.netlify.com/). These two websites are powered by [Jekyll](https://jekyllrb.com/) and all their contents are totally static. Actually, they are using the same code base.The source codes are managed on GitHub in repository [https://github.com/{{ site.github_user }}/{{ site.github_user }}.github.io](https://github.com/{{ site.github_user }}/{{ site.github_user }}.github.io). Both sites are CI/CD with GitHub. If there is any change submitted to this repository, GitHub Pages and Netlify will compile and deploy the website automatically.
### 1.2 Header Security
-Visit [securityheaders.com](https://securityheaders.com) and scan headers for site https://{{ site.github_user }}.github.io.
+Visit [securityheaders.com](https://securityheaders.com) and scan headers for site https://{{ site.github_user }}.github.io.w
![image](/assets/images/jekyll/8133/header_githubpages.png)
All the checks on header are failed. If we scan site https://{{ site.github_user }}.netlify.com, same result will be returned.
diff --git a/pages/_quests/personal-site.md b/pages/_quests/personal-site.md
index 9060b2d..fd6f587 100644
--- a/pages/_quests/personal-site.md
+++ b/pages/_quests/personal-site.md
@@ -6,7 +6,7 @@ subcategory: jekyll
date: 2020-01-20
tags:
- Personal Site
-lastmod: 2023-12-03T08:47:32.699Z
+lastmod: 2023-12-03T09:01:50.241Z
---
> Services/tools used for building personal site.
@@ -19,7 +19,7 @@ My personal website can be accessed through following domains. These sites are a
No. | URL | Description
-----|----------------------------------------------------|----------------------------------------
- 1 | site.github_user }}/{{ site.github_user }}.github.io | Source code repository
+ 1 | https://github.com/{{ site.github_user }}/{{ site.github_user }}.github.io | Source code repository
2 | https://{{ site.github_user }}.github.io/ | `Domain 1`, hosted by GitHub Pages
3 | | CI/CD for {{ site.github_user }}.github.io
4 | https://{{ site.github_user }}.netlify.com/ | `Domain 2`, hosted by Netlify
From 02cc37664be6466ee6bf2428f00280f48c965410 Mon Sep 17 00:00:00 2001
From: "10567847+bamr87@users.noreply.github.com"
<10567847+bamr87@users.noreply.github.com>
Date: Mon, 4 Dec 2023 15:42:39 -0700
Subject: [PATCH 4/9] added admin and jekyll-seo
---
Gemfile | 1 +
_config.yml | 12 ++
assets/images/jekyll-seo-preview.png | Bin 0 -> 2024085 bytes
assets/images/jekyll-seo-snippet.png | Bin 0 -> 1572726 bytes
frontmatter.json | 15 ++
index.md | 28 +--
pages/_docs/jekyll-seo.md | 197 ++++++++++++++++++++++
pages/_posts/2023-12-04-robots-dot-txt.md | 33 ++++
8 files changed, 272 insertions(+), 14 deletions(-)
create mode 100644 assets/images/jekyll-seo-preview.png
create mode 100644 assets/images/jekyll-seo-snippet.png
create mode 100644 pages/_docs/jekyll-seo.md
create mode 100644 pages/_posts/2023-12-04-robots-dot-txt.md
diff --git a/Gemfile b/Gemfile
index 32c422f..c7c978d 100644
--- a/Gemfile
+++ b/Gemfile
@@ -24,6 +24,7 @@ group :jekyll_plugins do
gem 'jekyll-algolia'
gem 'jekyll-assets', "~> 1.0.0"
gem 'jekyll-mermaid'
+ gem 'jekyll-admin'
# gem 'jekyll-spaceship'
# these are all part of the github-pages gem
diff --git a/_config.yml b/_config.yml
index d6a0161..eaa3ab6 100644
--- a/_config.yml
+++ b/_config.yml
@@ -66,6 +66,18 @@ maintainers:
- name: "Vacant"
profile: "/github.com"
+
+## Admin Information----------------------------------------------------------
+
+jekyll_admin:
+ # hidden_links:
+ # - posts
+ # - pages
+ # - staticfiles
+ # - datafiles
+ # - configuration
+ homepage: "pages"
+
## Personalization ----------------------------------------------------------------
locale : "en-US"
diff --git a/assets/images/jekyll-seo-preview.png b/assets/images/jekyll-seo-preview.png
new file mode 100644
index 0000000000000000000000000000000000000000..ea45f445b94e578a9e7537064f00340a73ffc53b
GIT binary patch
literal 2024085
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