Improved, refactored, added options, prompts, jekyll website
21
LICENSE
Normal file
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2021 Cotes Chung
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
23
README.md
@@ -11,11 +11,12 @@ Presently, wordpress and WIX integration is present for uploading the generated
|
||||
### This is based on openai gpt models for content generation, google bard for keyword research and some basic tools for plagiarism checker, SEO audit and suggestions to improve the generated content.
|
||||
As prompts are the important ingredients to get the best result, they are stored in prompts folder. Edit these prompts to produce results as per your likings.
|
||||
|
||||
### API based blog generation are much cheaper, almost 10x, but difficult to use for everyone. We use bard for search related prompts and chatgpt for generative requirements.
|
||||
|
||||
- API based blog generation are much cheaper, almost 10x, but difficult to use for everyone. We use bard for search related prompts and chatgpt for generative requirements.
|
||||
- Jekyll static website is included for checking how blogs will look locally.
|
||||
|
||||
### Check TBD for features currently under development.
|
||||
|
||||
### Amazon affiliate links are also supported. Given, affiliate tag, your affiliate product links will included in the blogs.
|
||||
- Amazon affiliate links are also supported. Given, affiliate tag, your affiliate product links will included in the blogs.
|
||||
To use the module, simply create an instance of the AmazonAffiliateImages class, passing in your Amazon affiliate tag.
|
||||
Then, you can use the get_image_url() or get_image_html() methods to get the Amazon affiliate image URL or HTML
|
||||
for a product, passing in either the product ASIN or the product URL.
|
||||
@@ -24,7 +25,7 @@ for a product, passing in either the product ASIN or the product URL.
|
||||
|
||||
## How to use this tool
|
||||
|
||||
*Prerequisites: pip install requirements.txt
|
||||
### Prerequisites: pip install requirements.txt
|
||||
|
||||
This is in active development and needs ironing out. The main concern is make it general purpose, for all.
|
||||
Usuability and extendibility are major concerns. This section will be updated soon.
|
||||
@@ -41,9 +42,13 @@ options:
|
||||
--keywords KEYWORDS The keywords.
|
||||
--niche NICHE Whether the blog is a niche blog (default: False).
|
||||
|
||||
*Example:
|
||||
- Example:
|
||||
python3 pseo_main.py --num_blogs "10" --keywords "Python, programming, data science" --niche True
|
||||
|
||||
- Output is directly written as blog post for pseo_website and can found in pseo_website/_posts directory
|
||||
- Note: Follow instructions here to install jekyll : https://jekyllrb.com/docs/installation/
|
||||
- Read this: https://chirpy.cotes.page/posts/write-a-new-post/
|
||||
|
||||
----------------------------------
|
||||
|
||||
The generated blogs are present in generated_blogs folder. Presently, the blog template is rigid and follows the
|
||||
@@ -58,6 +63,14 @@ TBD: More templates and an easy way to change prompts are in pipeline.
|
||||
|
||||
-----------------------------------
|
||||
|
||||
PSEO Website:
|
||||
|
||||
We are using jekyll static page generator and chirpy theme for it.
|
||||
This is easy enough to programmatically control and publish content.
|
||||
|
||||
Checkout pseo_website directory for details.
|
||||
|
||||
-----------------------------------
|
||||
|
||||
# The detailed SEO checks are as follows:
|
||||
|
||||
|
||||
4
TBD
@@ -7,3 +7,7 @@
|
||||
|
||||
6). We need memory to store blogs posts and not repeat them.
|
||||
Have a database, or query from web hosting, of all the blogs present.
|
||||
|
||||
7). Incorporate prompttemplate.
|
||||
|
||||
8). Integrate website support for flask, django, wordpress, wix etc
|
||||
|
||||
|
Before Width: | Height: | Size: 3.0 MiB |
|
Before Width: | Height: | Size: 2.8 KiB |
1
lib/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
# This file makes the `lib` directory a Python package
|
||||
@@ -8,16 +8,19 @@
|
||||
########################################################################
|
||||
|
||||
import json
|
||||
import os
|
||||
import datetime #I wish
|
||||
|
||||
import openai
|
||||
from tqdm import tqdm, trange
|
||||
import time
|
||||
import re
|
||||
from textwrap import dedent
|
||||
|
||||
from .gpt_providers.openai_gpt_provider import openai_chatgpt
|
||||
|
||||
|
||||
def generate_detailed_blog(num_blogs, blog_keywords, niche):
|
||||
def generate_detailed_blog(num_blogs, blog_keywords, niche, num_subtopics):
|
||||
"""
|
||||
This function will take a blog Topic to first generate sections for it
|
||||
and then generate content for each section.
|
||||
@@ -34,34 +37,44 @@ def generate_detailed_blog(num_blogs, blog_keywords, niche):
|
||||
|
||||
# Use to store the blog in a string, to save in a *.md file.
|
||||
blog_markdown_str = ""
|
||||
|
||||
|
||||
# TBD: Check if the generated topics are equal to what user asked.
|
||||
blog_topic_arr = generate_blog_topics(blog_keywords, num_blogs, niche)
|
||||
print(f"Generated Blog Topics:---- {blog_topic_arr}")
|
||||
print(f"Generated Blog Topics:---- {blog_topic_arr}\n")
|
||||
|
||||
# For each of blog topic, generate content.
|
||||
for a_blog_topic in blog_topic_arr:
|
||||
# if md/html
|
||||
blog_markdown_str = "# " + a_blog_topic + "\n"
|
||||
|
||||
blog_markdown_str = "# " + a_blog_topic.replace('"', '') + "\n\n"
|
||||
# Get the introduction specific to blog title and sub topics.
|
||||
tpc_outlines = generate_topic_outline(a_blog_topic)
|
||||
tpc_outlines = generate_topic_outline(a_blog_topic, num_subtopics)
|
||||
blog_intro = get_blog_intro(a_blog_topic, tpc_outlines)
|
||||
blog_markdown_str = blog_markdown_str + "### Introduction" + "\n" + f"{blog_intro}" + "\n"
|
||||
|
||||
print(f"The intro is:\n {blog_intro}")
|
||||
blog_markdown_str = blog_markdown_str + "### Introduction" + "\n\n" + f"{blog_intro}" + "\n\n"
|
||||
# Now, for each blog we have sub topic. Generate content for each of the sub topic.
|
||||
for a_outline in tpc_outlines:
|
||||
sub_topic_content = generate_topic_content(blog_keywords, a_outline)
|
||||
blog_markdown_str = blog_markdown_str + "\n" + f"\n{sub_topic_content}" + "\n"
|
||||
print(f"Generating content for sub-topic: {a_outline}")
|
||||
# a_outline is sub topic heading, hence part ToC also.
|
||||
blog_markdown_str = blog_markdown_str + "\n\n" + f"### {a_outline}" + "\n\n"
|
||||
blog_markdown_str = blog_markdown_str + "\n" + f"\n {sub_topic_content}" + "\n\n"
|
||||
blog_markdown_str = blog_markdown_str + "\n" + "-------------------------" + "\n"
|
||||
|
||||
# Get the Conclusion of the blog, by passing the generated blog.
|
||||
blog_conclusion = get_blog_conclusion(blog_markdown_str)
|
||||
blog_markdown_str = blog_markdown_str + "# Conclusion" + "\n" + f"{blog_conclusion}" + "\n"
|
||||
blog_markdown_str = blog_markdown_str + "### Conclusion" + "\n" + f"{blog_conclusion}" + "\n"
|
||||
|
||||
# print/check the final blog content.
|
||||
print(f"Final blog content: {blog_markdown_str}")
|
||||
# Save the blog content as a .md file. Markdown or HTML ?
|
||||
save_blog_to_file(blog_markdown_str)
|
||||
blog_meta_desc = generate_blog_description(blog_markdown_str)
|
||||
print(f"\nGet the blog meta description:{blog_meta_desc}")
|
||||
blog_tags = get_blog_tags(blog_markdown_str)
|
||||
print(f"\nBlog tags for generated content: {blog_tags}")
|
||||
blog_categories = get_blog_categories(blog_markdown_str)
|
||||
print(f"Generated blog categories: {blog_categories}")
|
||||
|
||||
# TBD: Save the blog content as a .md file. Markdown or HTML ?
|
||||
save_blog_to_file(blog_markdown_str, a_blog_topic, blog_meta_desc, blog_tags, blog_categories)
|
||||
|
||||
exit(1)
|
||||
|
||||
@@ -82,24 +95,25 @@ def generate_blog_topics(blog_keywords, num_blogs, niche):
|
||||
one for generating unique blog content.
|
||||
Ex: Generate SEO optimized blog topics on given keywords
|
||||
"""
|
||||
# Get more keywords, based on user given keywords.
|
||||
prompt = f"""As an SEO specialist and blog content writer, please write {num_blogs} catchy
|
||||
and SEO-friendly blog topics on {blog_keywords}. The blog title must be less than 80 characters.
|
||||
"""
|
||||
# Beware of keywords stuffing, clustering, semantic should help avoid.
|
||||
more_keywords = get_related_keywords(num_blogs, blog_keywords, niche)
|
||||
# f"including the following keywords: {more_keywords}."
|
||||
prompt = ("As an SEO specialist and blog content writer, "
|
||||
f"please write {num_blogs} catchy and SEO-friendly blog topics on {blog_keywords},"
|
||||
f"including the following keywords: {more_keywords}."
|
||||
)
|
||||
print(f"prompt used for blog titles: {prompt}")
|
||||
if num_blogs > 5:
|
||||
# Get more keywords, based on user given keywords.
|
||||
more_keywords = get_related_keywords(num_blogs, blog_keywords, niche)
|
||||
prompt = prompt + """Use the following keywords wisely, without keyword stuffing: {more_keywords}"""
|
||||
|
||||
print(f"prompt used for blog titles: {prompt}\n")
|
||||
# Calculate the max tokens based on the number of blogs
|
||||
max_tokens = min(1000, num_blogs * 100)
|
||||
try:
|
||||
response = openai_chatgpt(
|
||||
prompt,
|
||||
model="text-davinci-003",
|
||||
temperature=0.9,
|
||||
temperature=0.1,
|
||||
max_tokens=max_tokens,
|
||||
top_p=0.9,
|
||||
top_p=1,
|
||||
n=1
|
||||
)
|
||||
topic_list = extract_key_text(response)
|
||||
@@ -108,23 +122,23 @@ def generate_blog_topics(blog_keywords, num_blogs, niche):
|
||||
SystemError(f"Error in generating blog topics: {err}")
|
||||
|
||||
|
||||
def generate_topic_outline(blog_title):
|
||||
def generate_topic_outline(blog_title, num_subtopics):
|
||||
"""
|
||||
Given a blog title generate an outline for it
|
||||
"""
|
||||
# TBD: Remove hardcoding, make dynamic
|
||||
prompt = ("As a technical writer and SEO expert, suggest 7 beginner-friendly and helpful sub-topics"
|
||||
f"for the blog title '{blog_title}',"
|
||||
"Include 2 sub topics on related long-tailed keywords and "
|
||||
"2 sub topics on most popular questions."
|
||||
)
|
||||
prompt = f"""As a SEO expert, suggest only {num_subtopics}
|
||||
beginner-friendly and insightful sub topic for the blog title: {blog_title}.
|
||||
"""
|
||||
# The suggested {num_subtopics} outline should include few long-tailed keywords and most popular questions.
|
||||
# TBD: Include --niche
|
||||
print(f"prompt used for blog title Outline :{prompt}")
|
||||
# TBD: Add logic for which_provider and which_model
|
||||
response = openai_chatgpt(
|
||||
prompt,
|
||||
model="text-davinci-003",
|
||||
temperature=0.7,
|
||||
max_tokens=1000,
|
||||
temperature=0.1,
|
||||
max_tokens=100,
|
||||
top_p=0.9,
|
||||
n=1
|
||||
)
|
||||
@@ -139,9 +153,13 @@ def generate_topic_content(blog_keywords, sub_topic):
|
||||
For each of given topic generate content for it.
|
||||
"""
|
||||
# The outline should contain various subheadings and include the starting sentence for each section.
|
||||
prompt = (f"As a professional writer and topic authority on '{blog_keywords}',"
|
||||
f"craft a captivating, inviting and factual (no more than 700 characters) blog content on {sub_topic}."
|
||||
f"Use bulleit points and other readibility enhancers."
|
||||
# TBD: Depending on the usecase 'Voice and style' will change to professional etc.
|
||||
prompt = (f"As a professional blogger and topic authority on '{blog_keywords}',"
|
||||
f"craft factual (no more than 700 characters) blog content on {sub_topic}."
|
||||
"Your response should reflect Experience, Expertise, Authoritativeness, and Trustworthiness from content."
|
||||
"Voice and style guide: Write in a professional manner, giving enlightening details and reasons."
|
||||
"Use natural language and phrases that a real person would use: in normal conversations."
|
||||
"Format your response using markdown. Use headings, subheadings, bullet points, and bold to organize the information."
|
||||
)
|
||||
try:
|
||||
response = openai_chatgpt(prompt)
|
||||
@@ -167,16 +185,16 @@ def get_blog_intro(blog_title, blog_topics):
|
||||
"""
|
||||
Generate blog introduction as per title and sub topics
|
||||
"""
|
||||
prompt = (f"As a professional writer, craft a captivating, inviting, and concise (no more than 550 characters)"
|
||||
f"introduction for the blog titled '{blog_title}' with the following sub-topics: '{blog_topics}'"
|
||||
f"The introduction should compel readers to delve deeper into the blog post."
|
||||
)
|
||||
prompt = f"""As a professional writer, craft a captivating, inviting, and concise (no more than 550 characters).
|
||||
The introduction should compel readers to delve deeper into the blog post,
|
||||
titled: {blog_title} with the following sub-topics: {blog_topics}
|
||||
"""
|
||||
try:
|
||||
# TBD: Add logic for which_provider and which_model
|
||||
response = openai_chatgpt(
|
||||
prompt,
|
||||
model="text-davinci-003",
|
||||
temperature=0.7,
|
||||
temperature=0.1,
|
||||
max_tokens=1000,
|
||||
top_p=0.9,
|
||||
n=1
|
||||
@@ -193,15 +211,16 @@ def get_blog_conclusion(blog_content):
|
||||
"""
|
||||
Accepts a blog content and concludes it.
|
||||
"""
|
||||
prompt = ("As an expert SEO and blog writer, please conclude the given blog providing vital take aways,"
|
||||
"summarise key points (no more than 300 characters). The blog content: '{blog_content}'"
|
||||
)
|
||||
prompt = f"""As an expert SEO and blog writer, please conclude the given blog providing vital take aways,
|
||||
summarise key points (no more than 300 characters) in bullet points. The blog content: {blog_content}
|
||||
"""
|
||||
print(f"Generating blog conclusion iwth prompt: {prompt}")
|
||||
try:
|
||||
# TBD: Add logic for which_provider and which_model
|
||||
response = openai_chatgpt(
|
||||
prompt,
|
||||
model="text-davinci-003",
|
||||
temperature=0.9,
|
||||
temperature=0.1,
|
||||
max_tokens=450,
|
||||
top_p=0.7,
|
||||
n=1
|
||||
@@ -214,15 +233,37 @@ def get_blog_conclusion(blog_content):
|
||||
SystemError(f"Error in generating blog conclusion: {err}")
|
||||
|
||||
|
||||
def generate_blog_description():
|
||||
def generate_blog_description(blog_content):
|
||||
"""
|
||||
Prompt designed to give SEO optimized blog descripton
|
||||
"""
|
||||
# Suggest keywords that I should include in my meta description for my blog post on [topic]
|
||||
# I want to generate high CTR meta and keyword rich meta title and meta descriptions in text format.
|
||||
# My keywords are – [keyword 1], [keyword 2], [keyword 3]
|
||||
# Suggest a meta description for the content above, make it user-friendly
|
||||
# and with a call to action, include the keyword [keyword].
|
||||
prompt = f"""As an expert SEO and blog writer, write meta description for given blog content.
|
||||
The description should be between 150 and 160 characters long, uses strong, active verbs,
|
||||
avoids using all caps or excessive punctuation, and is relevant to the blog content.
|
||||
It should be engaging and encourages users to click on the link.
|
||||
The blog content: {blog_content}"""
|
||||
|
||||
pass
|
||||
try:
|
||||
# TBD: Add logic for which_provider and which_model
|
||||
response = openai_chatgpt(
|
||||
prompt,
|
||||
model="text-davinci-003",
|
||||
temperature=0.1,
|
||||
max_tokens=450,
|
||||
top_p=0.7,
|
||||
n=1
|
||||
)
|
||||
text_values = []
|
||||
for choice in response["choices"]:
|
||||
text_values.extend(choice["text"].split("\n"))
|
||||
return (' '.join([element for element in text_values if element]))
|
||||
except Exception as err:
|
||||
SystemError(f"Error in generating blog description: {err}")
|
||||
|
||||
|
||||
def get_blog_tags(blog_article):
|
||||
@@ -230,33 +271,101 @@ def get_blog_tags(blog_article):
|
||||
Function to suggest tags for the given blog content
|
||||
"""
|
||||
# Suggest at least 5 tags for the following blog post [Enter your blog post text here].
|
||||
pass
|
||||
prompt = f"""As an expert SEO and blog writer, suggest 3 to 5 relevant, specific,
|
||||
and popular tags that are unique and consistent to improve the visibility
|
||||
and discoverability of following blog content: {blog_article}"
|
||||
"""
|
||||
try:
|
||||
# TBD: Add logic for which_provider and which_model
|
||||
response = openai_chatgpt(
|
||||
prompt,
|
||||
model="text-davinci-003",
|
||||
temperature=0.1,
|
||||
max_tokens=450,
|
||||
top_p=0.7,
|
||||
n=1
|
||||
)
|
||||
text_values = []
|
||||
for choice in response["choices"]:
|
||||
text_values.extend(choice["text"].split("\n"))
|
||||
return (' '.join([element for element in text_values if element]))
|
||||
except Exception as err:
|
||||
SystemError(f"Error in generating blog tags: {err}")
|
||||
|
||||
|
||||
def get_long_tailed_keywords(blog_article):
|
||||
def get_blog_categories(blog_article):
|
||||
"""
|
||||
Function to get long tailed keywords for the blog article.
|
||||
Function to generate blog categories for given blog content.
|
||||
"""
|
||||
# Want you to generate a list of long-tail keywords that are related
|
||||
# to the following blog post [Enter blog post text here]
|
||||
pass
|
||||
prompt = f"""As an expert SEO and content writer, Suggest 2-3 blog categories by identifying
|
||||
the main topic, most relevant categories, considering the target
|
||||
audience and the blog's category taxonomy for the following blog content: {blog_article}"
|
||||
"""
|
||||
try:
|
||||
# TBD: Add logic for which_provider and which_model
|
||||
response = openai_chatgpt(
|
||||
prompt,
|
||||
model="text-davinci-003",
|
||||
temperature=0.1,
|
||||
max_tokens=100,
|
||||
top_p=0.7,
|
||||
n=1
|
||||
)
|
||||
text_values = []
|
||||
for choice in response["choices"]:
|
||||
text_values.extend(choice["text"].split("\n"))
|
||||
return (' '.join([element for element in text_values if element]))
|
||||
except Exception as err:
|
||||
SystemError(f"Error in generating blog categories: {err}")
|
||||
|
||||
|
||||
def save_blog_to_file(blog_content, file_type="md"):
|
||||
def save_blog_to_file(blog_content, blog_title,
|
||||
blog_meta_desc, blog_tags, blog_categories, file_type="md"
|
||||
):
|
||||
""" Common function to save the generated blog to a file.
|
||||
arg: file_type can be md or html
|
||||
"""
|
||||
output_path = "../generated_blogs"
|
||||
# TBD: This can come from config file.
|
||||
output_path = "pseo_website/_posts/"
|
||||
output_path = os.path.join(os.getcwd(), output_path)
|
||||
# Convert the spaces in blog_title with dash
|
||||
regex = re.compile('[^a-zA-Z0-9- ]')
|
||||
blog_title = regex.sub('', blog_title)
|
||||
blog_title = re.sub('--+', '-', blog_title)
|
||||
blog_title = blog_title.replace(' ', '-')
|
||||
|
||||
if not os.path.exists(output_path):
|
||||
# If the directory does not exist, create it
|
||||
os.makedirs(output_path)
|
||||
#os.makedirs(output_path)
|
||||
print("Error: Blog output directory is set to {output_path}, which Does Not Exist.")
|
||||
|
||||
output_today = os.path.join(output_path, f'{datetime.date.today().strftime("%d-%m-%y")}')
|
||||
if not os.path.exists(output_today):
|
||||
os.makedirs(output_today)
|
||||
else:
|
||||
with open(f"{output_today}/{blog_title}.md", "w") as f:
|
||||
f.write(blog_content)
|
||||
if file_type in "md":
|
||||
# fill the Front Matter as below at the top of the post: https://jekyllrb.com/docs/front-matter/
|
||||
# date: YYYY-MM-DD HH:MM:SS +/-TTTT
|
||||
formatted_date = f"{datetime.datetime.now():%Y-%m-%d %H:%M:%S %z}"
|
||||
blog_frontmatter = """---
|
||||
title: {blog_title}
|
||||
date: {formatted_date}
|
||||
categories: [{blog_categories}]
|
||||
tags: [{blog_tags}]
|
||||
description: {blog_meta_desc}
|
||||
img_path: '/posts/20180809'
|
||||
---\n\n"""
|
||||
|
||||
# Create a new file named YYYY-MM-DD-TITLE.EXTENSION and put it in the _posts of the root directory.
|
||||
# Please note that the EXTENSION must be one of md or markdown
|
||||
blog_output_path = os.path.join(
|
||||
output_path,
|
||||
f"{datetime.date.today().strftime('%Y-%m-%d')}-{blog_title}.md"
|
||||
)
|
||||
# Save the generated blog content to a file.
|
||||
try:
|
||||
with open(blog_output_path, "w") as f:
|
||||
f.write(dedent(blog_frontmatter))
|
||||
f.write(blog_content)
|
||||
except Exception as e:
|
||||
raise Exception(f"Failed to write blog content: {e}")
|
||||
print(f"\nSuccessfully saved and Posted blog at: {blog_output_path,}\n")
|
||||
|
||||
|
||||
def extract_key_text(json_data):
|
||||
@@ -311,36 +420,39 @@ def get_related_keywords(num_blogs, keywords, niche):
|
||||
f" semantically related keywords and entities for the topic of {keywords} that are used"
|
||||
" in high-quality content and relevant to my competitors."
|
||||
)
|
||||
# TBD: Add logic for which_provider and which_model
|
||||
response = openai_chatgpt(
|
||||
prompt,
|
||||
model="text-davinci-003",
|
||||
temperature=0.7,
|
||||
max_tokens=100,
|
||||
top_p=0.9,
|
||||
n=10
|
||||
)
|
||||
try:
|
||||
# TBD: Add logic for which_provider and which_model
|
||||
response = openai_chatgpt(
|
||||
prompt,
|
||||
model="text-davinci-003",
|
||||
temperature=0.7,
|
||||
max_tokens=100,
|
||||
top_p=0.9,
|
||||
n=10
|
||||
)
|
||||
|
||||
# Extract the keywords from the response
|
||||
keywords = []
|
||||
for choice in response.choices:
|
||||
# Split the response into words
|
||||
words = choice.text.split(" ")
|
||||
# Extract the keywords from the response
|
||||
keywords = []
|
||||
for choice in response.choices:
|
||||
# Split the response into words
|
||||
words = choice.text.split(" ")
|
||||
|
||||
# Add the words to the list of keywords
|
||||
for text in words:
|
||||
# Remove digits
|
||||
text = re.sub(r'\d', '', text)
|
||||
# Add the words to the list of keywords
|
||||
for text in words:
|
||||
# Remove digits
|
||||
text = re.sub(r'\d', '', text)
|
||||
|
||||
# Remove special characters
|
||||
text = re.sub(r'[^\w\s]', '', text)
|
||||
# Remove newline characters
|
||||
text = text.replace('\n', '')
|
||||
# Remove special characters
|
||||
text = re.sub(r'[^\w\s]', '', text)
|
||||
# Remove newline characters
|
||||
text = text.replace('\n', '')
|
||||
|
||||
keywords.append(text)
|
||||
keywords.append(text)
|
||||
|
||||
# Remove any duplicate keywords
|
||||
keywords = set(keywords)
|
||||
# Remove any duplicate keywords
|
||||
keywords = set(keywords)
|
||||
|
||||
# Return the list of keywords
|
||||
return (' '.join(keywords))
|
||||
# Return the list of keywords
|
||||
return (' '.join(keywords))
|
||||
except Exception as err:
|
||||
SystemError(f"Error in getting related keywords.")
|
||||
|
||||
@@ -1,5 +1,14 @@
|
||||
import re
|
||||
|
||||
#######################################################################
|
||||
#
|
||||
# I want you to act as a plagiarism checker. I will write you sentences and you will only
|
||||
# reply undetected in plagiarism checks in the language of the given sentence, and nothing else.
|
||||
# Do not write explanations on replies. My first sentence is {}
|
||||
#
|
||||
######################################################################
|
||||
|
||||
|
||||
class PlagiarismChecker:
|
||||
def __init__(self, known_sources):
|
||||
self.known_sources = known_sources
|
||||
|
||||
47
lib/prompts/README.md
Normal file
@@ -0,0 +1,47 @@
|
||||
## Prompting settings for LLMs
|
||||
|
||||
**Model:** Choose which LLM model to use. Different models have different strengths and weaknesses. For example, some models are better at generating creative text formats, while others are better at answering questions in an informative way.
|
||||
|
||||
**Temperature:** The temperature setting controls how creative and varied the text the LLM generates is. A higher temperature setting will result in more creative and varied text, but it may also be less accurate. A lower temperature setting will result in more accurate text, but it may also be less creative and varied.
|
||||
|
||||
**Top P:** The top P setting controls how likely the LLM is to generate the most likely words. A higher top P setting will result in more predictable and grammatically correct text, but it may also be less interesting. A lower top P setting will result in more interesting and creative text, but it may also be less predictable and grammatically correct.
|
||||
|
||||
**Frequency penalty:** The frequency penalty setting controls how likely the LLM is to generate words that are common in the text it is trained on. A higher frequency penalty setting will result in less repetitive text, but it may also be less fluent. A lower frequency penalty setting will result in more fluent text, but it may also be more repetitive.
|
||||
|
||||
**Presence penalty:** The presence penalty setting controls how likely the LLM is to generate words that are already present in the prompt. A higher presence penalty setting will result in more creative text, but it may also be less relevant to the prompt. A lower presence penalty setting will result in more relevant text, but it may also be less creative.
|
||||
|
||||
These settings can help you get better results from LLMs, depending on what you are trying to do. For example, if you are trying to generate a creative poem, you might want to use a higher temperature setting and a lower presence penalty setting. If you are trying to get an answer to a technical question, you might want to use a lower temperature setting and a higher presence penalty setting.
|
||||
|
||||
Experiment with the different settings to see what works best for you.
|
||||
|
||||
## Components of a prompt
|
||||
|
||||
**Instruction:** The specific task or instruction that you want the LLM to perform. For example, you might want it to generate a poem, translate a sentence, or answer a question.
|
||||
|
||||
**Context:** External information or additional context that can help the LLM to better understand your request and generate a better response. For example, if you are asking the LLM to generate a poem, you might provide it with the topic of the poem or the style of poem that you want.
|
||||
|
||||
**Input data:** The input or question that you are asking the LLM to respond to. For example, if you are asking the LLM to translate a sentence, you would provide it with the sentence that you want translated.
|
||||
|
||||
**Output indicator:** The type or format of the output that you want the LLM to generate. For example, you might want the LLM to generate a poem, translate a sentence, or answer a question in a specific format.
|
||||
|
||||
You don't need to include all four of these components in a prompt, but the more information you can provide to the LLM, the better it will be able to understand your request and generate a good response.
|
||||
|
||||
|
||||
## Tips for prompting large language models
|
||||
|
||||
**Be clear and concise in your prompt.** The LLM should be able to understand exactly what you are asking it to do.
|
||||
|
||||
**Provide context for your prompt.** This can help the LLM to generate a better response. For example, if you are asking the LLM to write a poem, you might provide it with the topic of the poem or the style of poem that you want.
|
||||
|
||||
**Break down complex tasks into smaller steps.** This can help the LLM to better understand what you are asking it to do and to generate a more accurate response.
|
||||
|
||||
**Use examples to illustrate your prompt.** This can help the LLM to understand what you are asking for and to generate a more relevant response.
|
||||
|
||||
**Test your prompts on different LLMs.** Different LLMs have different strengths and weaknesses, so some prompts may work better with certain LLMs than others.
|
||||
|
||||
**Additional tips:**
|
||||
|
||||
* **Use the right model.** Different LLMs are better at different tasks. For example, some LLMs are better at generating creative text formats, while others are better at answering questions in an informative way.
|
||||
* **Tune the prompting settings.** There are a number of prompting settings that you can adjust to get better results from LLMs. For example, you can adjust the temperature setting to control how creative the LLM is, or the top P setting to control how likely the LLM is to generate the most likely words.
|
||||
* **Experiment with different prompts.** The best way to find out what works for you is to experiment with different prompts. Try different ways of phrasing your prompt and see what works best.
|
||||
|
||||
@@ -1,3 +1,10 @@
|
||||
#####################################################
|
||||
# Act as travel guide:
|
||||
#####################################################
|
||||
want you to act as a travel guide. I will write you my location and you will suggest a place to visit near my location. In some cases, I will also give you the type of places I will visit. You will also suggest me places of similar type that are close to my first location. My first suggestion request is {}
|
||||
|
||||
|
||||
|
||||
#####################################################
|
||||
#
|
||||
# Use below prompts to generate Idea or topics, titles to write on.
|
||||
@@ -1,3 +1,5 @@
|
||||
# WIP - Work in Progress
|
||||
|
||||
## Required Python third-party packages
|
||||
|
||||
- requests==2.26.0
|
||||
|
||||
@@ -38,8 +38,8 @@ def upload_blog_post(wix_site_id, wix_api_key, blog_post_title, blog_post_conten
|
||||
|
||||
###########################################################################################
|
||||
# Example usage:
|
||||
wix_site_id = "1234567890"
|
||||
wix_api_key = "YOUR_WIX_API_KEY"
|
||||
wix_site_id = ""
|
||||
wix_api_key = ""
|
||||
blog_post_title = "My first blog post"
|
||||
blog_post_content = "This is my first blog post."
|
||||
|
||||
|
||||
78
lib/webhosting_integrations/wix_integration_bard.py
Normal file
@@ -0,0 +1,78 @@
|
||||
import requests
|
||||
import json
|
||||
import os
|
||||
|
||||
class WixAPI:
|
||||
def __init__(self, api_key, site_id):
|
||||
self.api_key = api_key
|
||||
self.site_id = site_id
|
||||
self.headers = {
|
||||
"Authorization": f"Bearer {self.api_key}"
|
||||
}
|
||||
|
||||
def upload_blog(self, blog_title, blog_content, blog_image=None):
|
||||
"""Uploads a blog to a Wix website.
|
||||
|
||||
Args:
|
||||
blog_title: The title of the blog.
|
||||
blog_content: The content of the blog.
|
||||
blog_image: The image for the blog (optional).
|
||||
|
||||
Returns:
|
||||
The ID of the uploaded blog.
|
||||
"""
|
||||
|
||||
response = requests.post(
|
||||
f"https://www.wix.com/api/v1/sites/{self.site_id}/blogs",
|
||||
headers=self.headers,
|
||||
json={
|
||||
"title": blog_title,
|
||||
"content": blog_content,
|
||||
"image": blog_image
|
||||
}
|
||||
)
|
||||
|
||||
if response.status_code == 201:
|
||||
return json.loads(response.content)["id"]
|
||||
else:
|
||||
raise Exception(f"Failed to upload blog: {response.status_code}")
|
||||
|
||||
def upload_blogs(wix_api, local_directory):
|
||||
"""Uploads all blogs from a local directory to a Wix website.
|
||||
|
||||
Args:
|
||||
wix_api: A WixAPI object.
|
||||
local_directory: The local directory containing the blogs.
|
||||
"""
|
||||
|
||||
for blog_file in os.listdir(local_directory):
|
||||
blog_path = os.path.join(local_directory, blog_file)
|
||||
|
||||
# Read the blog content from the file.
|
||||
with open(blog_path, "r") as f:
|
||||
blog_content = f.read()
|
||||
|
||||
# Get the blog title from the file name.
|
||||
blog_title = blog_file.split(".")[0]
|
||||
|
||||
# Upload the blog to the Wix website.
|
||||
blog_id = wix_api.upload_blog(blog_title, blog_content)
|
||||
|
||||
print(f"Uploaded blog {blog_title} with ID {blog_id}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
# Get the Wix API key.
|
||||
wix_api_key = "IST.eyJraWQiOiJQb3pIX2FDMiIsImFsZyI6IlJTMjU2In0.eyJkYXRhIjoie1wiaWRcIjpcIjk3MDFlNTlhLTJlNmEtNDVhMy1hYmU2LWQ0ZWMxMWI4YWFhY1wiLFwiaWRlbnRpdHlcIjp7XCJ0eXBlXCI6XCJhcHBsaWNhdGlvblwiLFwiaWRcIjpcImNjYmI5OWQxLTk1ZmYtNGRmZC1iNGIxLTYwOWRmNWExNmUwN1wifSxcInRlbmFudFwiOntcInR5cGVcIjpcImFjY291bnRcIixcImlkXCI6XCJhNTZiYTM1Zi02NDUzLTQxMDAtYWM1ZC1lM2M4OGU4YTdjN2RcIn19IiwiaWF0IjoxNjk2NjY4MDE1fQ.XhR3cBfxXhjRIeRL28Y7x0lG7o3pN6Cibpe50rN2saJRxFGyVcQGpWt6R_RnyMaBXQrxyKQcLjpTTSxmdnC6Myby1oCFAHuOpmUoGnYz634J_Epfc2BdwnA2SbnvAEktbOoFhIlMf7is2Xt89bE-h7LUPIejGHdCUucv_F1n6gBY6Bl0KxQhA_9k7M92bKr_mvoncDwTPVoeI_CL6fsQZ19tWzSDfe-DvornEIPId-Pp8Gh-lx9LmyhWepQDxpDDXEtlCEEeWvTB8_6ohOC_Jc2gSp8pw7uEawmoAaaqRKsLPBHFjrdgddKJ9jesWWMXxUGWcvJtBtoB3bZypgJSkQ"
|
||||
|
||||
# Get the Wix site ID.
|
||||
wix_site_id = "a56ba35f-6453-4100-ac5d-e3c88e8a7c7d"
|
||||
|
||||
# Create a WixAPI object.
|
||||
wix_api = WixAPI(wix_api_key, wix_site_id)
|
||||
|
||||
# Get the local directory containing the blogs.
|
||||
local_directory = "/home/ajsingh/pseo_experiments/lib/webhosting_integrations"
|
||||
|
||||
# Upload all blogs from the local directory to the Wix website.
|
||||
upload_blogs(wix_api, local_directory)
|
||||
|
||||
63
pseo_main.py
@@ -9,10 +9,12 @@
|
||||
#
|
||||
#########################################################
|
||||
import sys
|
||||
import os
|
||||
|
||||
import argparse
|
||||
import json
|
||||
import traceback
|
||||
import requests
|
||||
from loguru import logger
|
||||
logger.remove()
|
||||
logger.add(sys.stdout,
|
||||
@@ -33,11 +35,12 @@ def main():
|
||||
"""
|
||||
|
||||
parser = argparse.ArgumentParser(
|
||||
description="Accepts user input for the number of blogs, keywords, and niche."
|
||||
description="Accepts user input for the number of blogs, subtopics, keywords, and niche."
|
||||
)
|
||||
parser.add_argument("--num_blogs", type=int, default=1, help="The number of blogs (default: 5).")
|
||||
parser.add_argument("--num_blogs", type=int, default=5, help="The number of blogs (default: 5).")
|
||||
parser.add_argument("--keywords", type=str, required=True, help="The keywords.A broad idea to write multiple blogs on.")
|
||||
parser.add_argument("--niche", type=bool, default=False, help="Written blogs on long tailed search topics (default: False).")
|
||||
parser.add_argument("--num_subtopics", type=int, default=6, help="The number of sub topics to write (default: 6).")
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
@@ -54,18 +57,52 @@ def main():
|
||||
logger.info(f"Keywords: {args.keywords}")
|
||||
logger.info(f"Niche blog: {args.niche}")
|
||||
|
||||
return args.num_blogs, args.keywords, args.niche
|
||||
return args
|
||||
|
||||
def check_openai_api_key(openai_api_key):
|
||||
"""Checks if the given OpenAI API key is valid and works.
|
||||
|
||||
Args:
|
||||
openai_api_key: The OpenAI API key to check.
|
||||
|
||||
Returns:
|
||||
True if the OpenAI API key is valid and works, False otherwise.
|
||||
"""
|
||||
|
||||
headers = {
|
||||
"Authorization": f"Bearer {openai_api_key}"
|
||||
}
|
||||
|
||||
# Make a test request to the OpenAI API.
|
||||
response = requests.get(
|
||||
"https://api.openai.com/v1/engines",
|
||||
headers=headers
|
||||
)
|
||||
|
||||
# If the request was successful, the API key is valid and works.
|
||||
return response.status_code == 200
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
# Check if we have everything, we need to start writing blogs.
|
||||
try:
|
||||
num_blogs, keywords, niche = main()
|
||||
logger.info(f"returned value: {num_blogs} {keywords}")
|
||||
except TypeError as e:
|
||||
logger.error(e)
|
||||
except ValueError as e:
|
||||
logger.error(e)
|
||||
else:
|
||||
logger.info(f"Starting to write {num_blogs} blogs on {keywords}")
|
||||
generate_detailed_blog(num_blogs, keywords, niche)
|
||||
"""Checks for the OPENAI_API_KEY environment variable, if it is not exported or if it is not valid."""
|
||||
openai_api_key = os.environ.get("OPENAI_API_KEY")
|
||||
if not openai_api_key:
|
||||
logger.error("Error: Please export OPENAI_API_KEY='' - before running this script.")
|
||||
exit(1)
|
||||
# Check if the OpenAI API key is valid.
|
||||
if not check_openai_api_key(openai_api_key):
|
||||
logger.error("The OPENAI_API_KEY not valid. Check your API key and make sure its correct.")
|
||||
exit(1)
|
||||
# The OpenAI API key is valid and works.
|
||||
logger.info("The OPENAI_API_KEY environment variable is valid and works.")
|
||||
|
||||
try:
|
||||
args = main()
|
||||
except TypeError as e:
|
||||
logger.error(e)
|
||||
except ValueError as e:
|
||||
logger.error(e)
|
||||
else:
|
||||
logger.info(f"Writing {args.num_blogs} blogs on '{args.keywords}' with {args.num_subtopics} subtopics.")
|
||||
generate_detailed_blog(args.num_blogs, args.keywords, args.niche, args.num_subtopics)
|
||||
|
||||
25
pseo_website/Gemfile
Normal file
@@ -0,0 +1,25 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
source "https://rubygems.org"
|
||||
|
||||
gem "jekyll-theme-chirpy", "~> 6.2", ">= 6.2.3"
|
||||
|
||||
group :test do
|
||||
gem "html-proofer", "~> 4.4"
|
||||
end
|
||||
|
||||
# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem
|
||||
# and associated library.
|
||||
platforms :mingw, :x64_mingw, :mswin, :jruby do
|
||||
gem "tzinfo", ">= 1", "< 3"
|
||||
gem "tzinfo-data"
|
||||
end
|
||||
|
||||
# Performance-booster for watching directories on Windows
|
||||
gem "wdm", "~> 0.1.1", :platforms => [:mingw, :x64_mingw, :mswin]
|
||||
|
||||
# Lock `http_parser.rb` gem to `v0.6.x` on JRuby builds since newer versions of the gem
|
||||
# do not have a Java counterpart.
|
||||
gem "http_parser.rb", "~> 0.6.0", :platforms => [:jruby]
|
||||
|
||||
gem 'jekyll-seo-tag'
|
||||
117
pseo_website/Gemfile.lock
Normal file
@@ -0,0 +1,117 @@
|
||||
GEM
|
||||
remote: https://rubygems.org/
|
||||
specs:
|
||||
addressable (2.8.5)
|
||||
public_suffix (>= 2.0.2, < 6.0)
|
||||
colorator (1.1.0)
|
||||
concurrent-ruby (1.2.2)
|
||||
em-websocket (0.5.3)
|
||||
eventmachine (>= 0.12.9)
|
||||
http_parser.rb (~> 0)
|
||||
ethon (0.16.0)
|
||||
ffi (>= 1.15.0)
|
||||
eventmachine (1.2.7)
|
||||
ffi (1.16.3)
|
||||
forwardable-extended (2.6.0)
|
||||
google-protobuf (3.24.4-x86_64-linux)
|
||||
html-proofer (4.4.3)
|
||||
addressable (~> 2.3)
|
||||
mercenary (~> 0.3)
|
||||
nokogiri (~> 1.13)
|
||||
parallel (~> 1.10)
|
||||
rainbow (~> 3.0)
|
||||
typhoeus (~> 1.3)
|
||||
yell (~> 2.0)
|
||||
zeitwerk (~> 2.5)
|
||||
http_parser.rb (0.8.0)
|
||||
i18n (1.14.1)
|
||||
concurrent-ruby (~> 1.0)
|
||||
jekyll (4.3.2)
|
||||
addressable (~> 2.4)
|
||||
colorator (~> 1.0)
|
||||
em-websocket (~> 0.5)
|
||||
i18n (~> 1.0)
|
||||
jekyll-sass-converter (>= 2.0, < 4.0)
|
||||
jekyll-watch (~> 2.0)
|
||||
kramdown (~> 2.3, >= 2.3.1)
|
||||
kramdown-parser-gfm (~> 1.0)
|
||||
liquid (~> 4.0)
|
||||
mercenary (>= 0.3.6, < 0.5)
|
||||
pathutil (~> 0.9)
|
||||
rouge (>= 3.0, < 5.0)
|
||||
safe_yaml (~> 1.0)
|
||||
terminal-table (>= 1.8, < 4.0)
|
||||
webrick (~> 1.7)
|
||||
jekyll-archives (2.2.1)
|
||||
jekyll (>= 3.6, < 5.0)
|
||||
jekyll-include-cache (0.2.1)
|
||||
jekyll (>= 3.7, < 5.0)
|
||||
jekyll-paginate (1.1.0)
|
||||
jekyll-redirect-from (0.16.0)
|
||||
jekyll (>= 3.3, < 5.0)
|
||||
jekyll-sass-converter (3.0.0)
|
||||
sass-embedded (~> 1.54)
|
||||
jekyll-seo-tag (2.8.0)
|
||||
jekyll (>= 3.8, < 5.0)
|
||||
jekyll-sitemap (1.4.0)
|
||||
jekyll (>= 3.7, < 5.0)
|
||||
jekyll-theme-chirpy (6.2.3)
|
||||
jekyll (~> 4.3)
|
||||
jekyll-archives (~> 2.2)
|
||||
jekyll-include-cache (~> 0.2)
|
||||
jekyll-paginate (~> 1.1)
|
||||
jekyll-redirect-from (~> 0.16)
|
||||
jekyll-seo-tag (~> 2.7)
|
||||
jekyll-sitemap (~> 1.4)
|
||||
jekyll-watch (2.2.1)
|
||||
listen (~> 3.0)
|
||||
kramdown (2.4.0)
|
||||
rexml
|
||||
kramdown-parser-gfm (1.1.0)
|
||||
kramdown (~> 2.0)
|
||||
liquid (4.0.4)
|
||||
listen (3.8.0)
|
||||
rb-fsevent (~> 0.10, >= 0.10.3)
|
||||
rb-inotify (~> 0.9, >= 0.9.10)
|
||||
mercenary (0.4.0)
|
||||
nokogiri (1.15.4-x86_64-linux)
|
||||
racc (~> 1.4)
|
||||
parallel (1.23.0)
|
||||
pathutil (0.16.2)
|
||||
forwardable-extended (~> 2.6)
|
||||
public_suffix (5.0.3)
|
||||
racc (1.7.1)
|
||||
rainbow (3.1.1)
|
||||
rake (13.0.6)
|
||||
rb-fsevent (0.11.2)
|
||||
rb-inotify (0.10.1)
|
||||
ffi (~> 1.0)
|
||||
rexml (3.2.6)
|
||||
rouge (4.1.3)
|
||||
safe_yaml (1.0.5)
|
||||
sass-embedded (1.69.4)
|
||||
google-protobuf (~> 3.23)
|
||||
rake (>= 13.0.0)
|
||||
terminal-table (3.0.2)
|
||||
unicode-display_width (>= 1.1.1, < 3)
|
||||
typhoeus (1.4.0)
|
||||
ethon (>= 0.9.0)
|
||||
unicode-display_width (2.5.0)
|
||||
webrick (1.8.1)
|
||||
yell (2.2.2)
|
||||
zeitwerk (2.6.12)
|
||||
|
||||
PLATFORMS
|
||||
x86_64-linux
|
||||
|
||||
DEPENDENCIES
|
||||
html-proofer (~> 4.4)
|
||||
http_parser.rb (~> 0.6.0)
|
||||
jekyll-seo-tag
|
||||
jekyll-theme-chirpy (~> 6.2, >= 6.2.3)
|
||||
tzinfo (>= 1, < 3)
|
||||
tzinfo-data
|
||||
wdm (~> 0.1.1)
|
||||
|
||||
BUNDLED WITH
|
||||
2.4.21
|
||||
194
pseo_website/_config.yml
Normal file
@@ -0,0 +1,194 @@
|
||||
# The Site Configuration
|
||||
|
||||
# Import the theme
|
||||
theme: jekyll-theme-chirpy
|
||||
|
||||
# The language of the webpage › http://www.lingoes.net/en/translator/langcode.htm
|
||||
# If it has the same name as one of the files in folder `_data/locales`, the layout language will also be changed,
|
||||
# otherwise, the layout language will use the default value of 'en'.
|
||||
lang: en
|
||||
|
||||
# Change to your timezone › https://kevinnovak.github.io/Time-Zone-Picker
|
||||
timezone: Asia/Kolkata
|
||||
|
||||
# jekyll-seo-tag settings › https://github.com/jekyll/jekyll-seo-tag/blob/master/docs/usage.md
|
||||
# ↓ --------------------------
|
||||
|
||||
title: AI-Takia # the main title
|
||||
|
||||
tagline: Latest Blogs on AI tech, Tools & SaaS # it will display as the sub-title
|
||||
|
||||
description: >- # used by seo meta and the atom feed
|
||||
Begginer friendly AI technologies simplified & explained. Know & boost productivity with latest AI tools.
|
||||
|
||||
# Fill in the protocol & hostname for your site.
|
||||
# e.g. 'https://username.github.io', note that it does not end with a '/'.
|
||||
url: "https://ajaysi.github.io"
|
||||
|
||||
github:
|
||||
username: ajaysi # change to your github username
|
||||
|
||||
twitter:
|
||||
username: ajaysi # change to your twitter username
|
||||
|
||||
social:
|
||||
# Change to your full name.
|
||||
# It will be displayed as the default author of the posts and the copyright owner in the Footer
|
||||
name: ajaysi
|
||||
email: example@domain.com # change to your email address
|
||||
links:
|
||||
# The first element serves as the copyright owner's link
|
||||
- https://twitter.com/username # change to your twitter homepage
|
||||
- https://github.com/username # change to your github homepage
|
||||
# Uncomment below to add more social links
|
||||
# - https://www.facebook.com/username
|
||||
# - https://www.linkedin.com/in/username
|
||||
|
||||
google_site_verification: # fill in to your verification string
|
||||
|
||||
# ↑ --------------------------
|
||||
# The end of `jekyll-seo-tag` settings
|
||||
|
||||
google_analytics:
|
||||
id: # fill in your Google Analytics ID
|
||||
|
||||
# Prefer color scheme setting.
|
||||
#
|
||||
# Note: Keep empty will follow the system prefer color by default,
|
||||
# and there will be a toggle to switch the theme between dark and light
|
||||
# on the bottom left of the sidebar.
|
||||
#
|
||||
# Available options:
|
||||
#
|
||||
# light - Use the light color scheme
|
||||
# dark - Use the dark color scheme
|
||||
#
|
||||
theme_mode: # [light|dark]
|
||||
|
||||
# The CDN endpoint for images.
|
||||
# Notice that once it is assigned, the CDN url
|
||||
# will be added to all image (site avatar & posts' images) paths starting with '/'
|
||||
#
|
||||
# e.g. 'https://cdn.com'
|
||||
img_cdn:
|
||||
|
||||
# the avatar on sidebar, support local or CORS resources
|
||||
avatar:
|
||||
|
||||
# boolean type, the global switch for TOC in posts.
|
||||
toc: true
|
||||
|
||||
comments:
|
||||
active: # The global switch for posts comments, e.g., 'disqus'. Keep it empty means disable
|
||||
# The active options are as follows:
|
||||
disqus:
|
||||
shortname: # fill with the Disqus shortname. › https://help.disqus.com/en/articles/1717111-what-s-a-shortname
|
||||
# utterances settings › https://utteranc.es/
|
||||
utterances:
|
||||
repo: # <gh-username>/<repo>
|
||||
issue_term: # < url | pathname | title | ...>
|
||||
# Giscus options › https://giscus.app
|
||||
giscus:
|
||||
repo: # <gh-username>/<repo>
|
||||
repo_id:
|
||||
category:
|
||||
category_id:
|
||||
mapping: # optional, default to 'pathname'
|
||||
input_position: # optional, default to 'bottom'
|
||||
lang: # optional, default to the value of `site.lang`
|
||||
reactions_enabled: # optional, default to the value of `1`
|
||||
|
||||
# Self-hosted static assets, optional › https://github.com/cotes2020/chirpy-static-assets
|
||||
assets:
|
||||
self_host:
|
||||
enabled: # boolean, keep empty means false
|
||||
# specify the Jekyll environment, empty means both
|
||||
# only works if `assets.self_host.enabled` is 'true'
|
||||
env: # [development|production]
|
||||
|
||||
pwa:
|
||||
enabled: true # the option for PWA feature
|
||||
|
||||
paginate: 10
|
||||
|
||||
# The base URL of your site
|
||||
baseurl: ""
|
||||
|
||||
# ------------ The following options are not recommended to be modified ------------------
|
||||
|
||||
kramdown:
|
||||
syntax_highlighter: rouge
|
||||
syntax_highlighter_opts: # Rouge Options › https://github.com/jneen/rouge#full-options
|
||||
css_class: highlight
|
||||
# default_lang: console
|
||||
span:
|
||||
line_numbers: false
|
||||
block:
|
||||
line_numbers: true
|
||||
start_line: 1
|
||||
|
||||
collections:
|
||||
tabs:
|
||||
output: true
|
||||
sort_by: order
|
||||
|
||||
defaults:
|
||||
- scope:
|
||||
path: "" # An empty string here means all files in the project
|
||||
type: posts
|
||||
values:
|
||||
layout: post
|
||||
comments: true # Enable comments in posts.
|
||||
toc: true # Display TOC column in posts.
|
||||
# DO NOT modify the following parameter unless you are confident enough
|
||||
# to update the code of all other post links in this project.
|
||||
permalink: /posts/:title/
|
||||
- scope:
|
||||
path: _drafts
|
||||
values:
|
||||
comments: false
|
||||
- scope:
|
||||
path: ""
|
||||
type: tabs # see `site.collections`
|
||||
values:
|
||||
layout: page
|
||||
permalink: /:title/
|
||||
- scope:
|
||||
path: assets/img/favicons
|
||||
values:
|
||||
swcache: true
|
||||
- scope:
|
||||
path: assets/js/dist
|
||||
values:
|
||||
swcache: true
|
||||
|
||||
sass:
|
||||
style: compressed
|
||||
|
||||
compress_html:
|
||||
clippings: all
|
||||
comments: all
|
||||
endings: all
|
||||
profile: false
|
||||
blanklines: false
|
||||
ignore:
|
||||
envs: [development]
|
||||
|
||||
exclude:
|
||||
- "*.gem"
|
||||
- "*.gemspec"
|
||||
- docs
|
||||
- tools
|
||||
- README.md
|
||||
- LICENSE
|
||||
- rollup.config.js
|
||||
- package*.json
|
||||
|
||||
jekyll-archives:
|
||||
enabled: [categories, tags]
|
||||
layouts:
|
||||
category: category
|
||||
tag: tag
|
||||
permalinks:
|
||||
tag: /tags/:name/
|
||||
category: /categories/:name/
|
||||
27
pseo_website/_data/contact.yml
Normal file
@@ -0,0 +1,27 @@
|
||||
# The contact options.
|
||||
|
||||
- type: github
|
||||
icon: "fab fa-github"
|
||||
|
||||
- type: twitter
|
||||
icon: "fa-brands fa-x-twitter"
|
||||
|
||||
- type: email
|
||||
icon: "fas fa-envelope"
|
||||
noblank: true # open link in current tab
|
||||
|
||||
#- type: rss
|
||||
# icon: "fas fa-rss"
|
||||
# noblank: true
|
||||
#
|
||||
# - type: mastodon
|
||||
# icon: 'fab fa-mastodon' # icons powered by <https://fontawesome.com/>
|
||||
# url: '' # Fill with your Mastodon account page, rel="me" will be applied for verification
|
||||
#
|
||||
- type: linkedin
|
||||
icon: 'fab fa-linkedin' # icons powered by <https://fontawesome.com/>
|
||||
url: '' # Fill with your Linkedin homepage
|
||||
#
|
||||
# - type: stack-overflow
|
||||
# icon: 'fab fa-stack-overflow'
|
||||
# url: '' # Fill with your stackoverflow homepage
|
||||
25
pseo_website/_data/share.yml
Normal file
@@ -0,0 +1,25 @@
|
||||
# Sharing options at the bottom of the post.
|
||||
# Icons from <https://fontawesome.com/>
|
||||
|
||||
platforms:
|
||||
- type: Twitter
|
||||
icon: "fa-brands fa-square-x-twitter"
|
||||
link: "https://twitter.com/intent/tweet?text=TITLE&url=URL"
|
||||
|
||||
- type: Facebook
|
||||
icon: "fab fa-facebook-square"
|
||||
link: "https://www.facebook.com/sharer/sharer.php?title=TITLE&u=URL"
|
||||
|
||||
- type: Telegram
|
||||
icon: "fab fa-telegram"
|
||||
link: "https://t.me/share/url?url=URL&text=TITLE"
|
||||
|
||||
# Uncomment below if you need to.
|
||||
#
|
||||
# - type: Linkedin
|
||||
# icon: "fab fa-linkedin"
|
||||
# link: "https://www.linkedin.com/sharing/share-offsite/?url=URL"
|
||||
#
|
||||
# - type: Weibo
|
||||
# icon: "fab fa-weibo"
|
||||
# link: "http://service.weibo.com/share/share.php?title=TITLE&url=URL"
|
||||
14
pseo_website/_plugins/posts-lastmod-hook.rb
Normal file
@@ -0,0 +1,14 @@
|
||||
#!/usr/bin/env ruby
|
||||
#
|
||||
# Check for changed posts
|
||||
|
||||
Jekyll::Hooks.register :posts, :post_init do |post|
|
||||
|
||||
commit_num = `git rev-list --count HEAD "#{ post.path }"`
|
||||
|
||||
if commit_num.to_i > 1
|
||||
lastmod_date = `git log -1 --pretty="%ad" --date=iso "#{ post.path }"`
|
||||
post.data['last_modified_at'] = lastmod_date
|
||||
end
|
||||
|
||||
end
|
||||
1
pseo_website/_posts/.placeholder
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
135
pseo_website/_posts/2019-08-09-getting-started.md
Normal file
@@ -0,0 +1,135 @@
|
||||
---
|
||||
title: Getting Started
|
||||
author: cotes
|
||||
date: 2019-08-09 20:55:00 +0800
|
||||
categories: [Blogging, Tutorial]
|
||||
tags: [getting started]
|
||||
pin: true
|
||||
img_path: '/posts/20180809'
|
||||
---
|
||||
|
||||
## Prerequisites
|
||||
|
||||
Follow the instructions in the [Jekyll Docs](https://jekyllrb.com/docs/installation/) to complete the installation of the basic environment. [Git](https://git-scm.com/) also needs to be installed.
|
||||
|
||||
## Installation
|
||||
|
||||
### Creating a New Site
|
||||
|
||||
There are two ways to create a new repository for this theme:
|
||||
|
||||
- [**Using the Chirpy Starter**](#option-1-using-the-chirpy-starter) - Easy to upgrade, isolates irrelevant project files so you can focus on writing.
|
||||
- [**GitHub Fork**](#option-2-github-fork) - Convenient for custom development, but difficult to upgrade. Unless you are familiar with Jekyll and are determined to tweak or contribute to this project, this approach is not recommended.
|
||||
|
||||
#### Option 1. Using the Chirpy Starter
|
||||
|
||||
Sign in to GitHub and browse to [**Chirpy Starter**][starter], click the button <kbd>Use this template</kbd> > <kbd>Create a new repository</kbd>, and name the new repository `USERNAME.github.io`, where `USERNAME` represents your GitHub username.
|
||||
|
||||
#### Option 2. GitHub Fork
|
||||
|
||||
Sign in to GitHub to [fork **Chirpy**](https://github.com/cotes2020/jekyll-theme-chirpy/fork), and then rename it to `USERNAME.github.io` (`USERNAME` means your username).
|
||||
|
||||
Next, clone your site to local machine. In order to build JavaScript files later, we need to install [Node.js][nodejs], and then run the tool:
|
||||
|
||||
```console
|
||||
$ bash tools/init
|
||||
```
|
||||
|
||||
> If you don't want to deploy your site on GitHub Pages, append option `--no-gh` at the end of the above command.
|
||||
{: .prompt-info }
|
||||
|
||||
The above command will:
|
||||
|
||||
1. Check out the code to the [latest tag][latest-tag] (to ensure the stability of your site: as the code for the default branch is under development).
|
||||
2. Remove non-essential sample files and take care of GitHub-related files.
|
||||
3. Build JavaScript files and export to `assets/js/dist/`{: .filepath }, then make them tracked by Git.
|
||||
4. Automatically create a new commit to save the changes above.
|
||||
|
||||
### Installing Dependencies
|
||||
|
||||
Before running local server for the first time, go to the root directory of your site and run:
|
||||
|
||||
```console
|
||||
$ bundle
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
### Configuration
|
||||
|
||||
Update the variables of `_config.yml`{: .filepath} as needed. Some of them are typical options:
|
||||
|
||||
- `url`
|
||||
- `avatar`
|
||||
- `timezone`
|
||||
- `lang`
|
||||
|
||||
### Social Contact Options
|
||||
|
||||
Social contact options are displayed at the bottom of the sidebar. You can turn on/off the specified contacts in file `_data/contact.yml`{: .filepath }.
|
||||
|
||||
### Customizing Stylesheet
|
||||
|
||||
If you need to customize the stylesheet, copy the theme's `assets/css/jekyll-theme-chirpy.scss`{: .filepath} to the same path on your Jekyll site, and then add the custom style at the end of it.
|
||||
|
||||
Starting with version `6.2.0`, if you want to overwrite the SASS variables defined in `_sass/addon/variables.scss`{: .filepath}, copy the main sass file `_sass/main.scss`{: .filepath} into the `_sass`{: .filepath} directory in your site's source, then create a new file `_sass/variables-hook.scss`{: .filepath} and assign new value.
|
||||
|
||||
### Customing Static Assets
|
||||
|
||||
Static assets configuration was introduced in version `5.1.0`. The CDN of the static assets is defined by file `_data/origin/cors.yml`{: .filepath }, and you can replace some of them according to the network conditions in the region where your website is published.
|
||||
|
||||
Also, if you'd like to self-host the static assets, please refer to the [_chirpy-static-assets_](https://github.com/cotes2020/chirpy-static-assets#readme).
|
||||
|
||||
### Running Local Server
|
||||
|
||||
You may want to preview the site contents before publishing, so just run it by:
|
||||
|
||||
```console
|
||||
$ bundle exec jekyll s
|
||||
```
|
||||
|
||||
After a few seconds, the local service will be published at _<http://127.0.0.1:4000>_.
|
||||
|
||||
## Deployment
|
||||
|
||||
Before the deployment begins, check out the file `_config.yml`{: .filepath} and make sure the `url` is configured correctly. Furthermore, if you prefer the [**project site**](https://help.github.com/en/github/working-with-github-pages/about-github-pages#types-of-github-pages-sites) and don't use a custom domain, or you want to visit your website with a base URL on a web server other than **GitHub Pages**, remember to change the `baseurl` to your project name that starts with a slash, e.g, `/project-name`.
|
||||
|
||||
Now you can choose _ONE_ of the following methods to deploy your Jekyll site.
|
||||
|
||||
### Deploy by Using GitHub Actions
|
||||
|
||||
There are a few things to get ready for.
|
||||
|
||||
- If you're on the GitHub Free plan, keep your site repository public.
|
||||
- If you have committed `Gemfile.lock`{: .filepath} to the repository, and your local machine is not running Linux, go the the root of your site and update the platform list of the lock-file:
|
||||
|
||||
```console
|
||||
$ bundle lock --add-platform x86_64-linux
|
||||
```
|
||||
|
||||
Next, configure the _Pages_ service.
|
||||
|
||||
1. Browse to your repository on GitHub. Select the tab _Settings_, then click _Pages_ in the left navigation bar. Then, in the **Source** section (under _Build and deployment_), select [**GitHub Actions**][pages-workflow-src] from the dropdown menu.
|
||||
{: .light .border .normal w='375' h='140' }
|
||||
{: .dark .normal w='375' h='140' }
|
||||
|
||||
2. Push any commits to GitHub to trigger the _Actions_ workflow. In the _Actions_ tab of your repository, you should see the workflow _Build and Deploy_ running. Once the build is complete and successful, the site will be deployed automatically.
|
||||
|
||||
At this point, you can go to the URL indicated by GitHub to access your site.
|
||||
|
||||
### Manually Build and Deploy
|
||||
|
||||
On self-hosted servers, you cannot enjoy the convenience of **GitHub Actions**. Therefore, you should build the site on your local machine and then upload the site files to the server.
|
||||
|
||||
Go to the root of the source project, and build your site as follows:
|
||||
|
||||
```console
|
||||
$ JEKYLL_ENV=production bundle exec jekyll b
|
||||
```
|
||||
|
||||
Unless you specified the output path, the generated site files will be placed in folder `_site`{: .filepath} of the project's root directory. Now you should upload those files to the target server.
|
||||
|
||||
[nodejs]: https://nodejs.org/
|
||||
[starter]: https://github.com/cotes2020/chirpy-starter
|
||||
[pages-workflow-src]: https://docs.github.com/en/pages/getting-started-with-github-pages/configuring-a-publishing-source-for-your-github-pages-site#publishing-with-a-custom-github-actions-workflow
|
||||
[latest-tag]: https://github.com/cotes2020/jekyll-theme-chirpy/tags
|
||||
50
pseo_website/_posts/2023-10-20-mansarovar-trek.md
Normal file
@@ -0,0 +1,50 @@
|
||||
---
|
||||
title:
|
||||
author: cotes
|
||||
date: 2019-08-09 20:55:00 +0800
|
||||
categories: [Blogging, Tutorial]
|
||||
tags: [getting started]
|
||||
pin: true
|
||||
img_path: '/posts/20180809'
|
||||
---
|
||||
|
||||
# Discover the Ancient Tibetan Tradition of Gurla Parikrama and Mandhata in Simikot, Rara Lake, and Kailash Plateau.
|
||||
### Introduction
|
||||
Dive into the depths of Tibetan history and tradition with the ancient Gurla Parikrama and Mandhata. Explore the spiritual significance, the breathtakingly beautiful landscapes, and the captivating culture of Simikot, Rara Lake, and Kailash Plateau. Discover the best route, what to expect, and how to prepare for your Gurla Parikrama and Mandhata trek. Get all the best tips for completing the trek, and find out when is the best time to visit. Embark on an unforgettable adventure!
|
||||
|
||||
|
||||
History and Origin of the Gurla Parikrama and Mandhata Tradition • The Gurla Parikrama is an ancient pilgrimage route around the holy peak of Mount Mandhata in India's Central Himalayas. • This pilgrimage has been taking place for centuries, with pilgrims coming from all parts of India and beyond to take part. • It is believed that Lord Shiva himself had once walked the Gurla Parikrama route, bestowing his blessings upon those who complete the sacred journey. • The Mandhata tradition also holds a special place in Hindu mythology. It is said that Lord Mandhata, the King of Suryavansha, once visited the region and paid homage to the gods in the area. • The tradition has been continued by his descendants who visit the Gurla Parikrama route to perform poojas and rituals in honour of the gods. • Thousands of devotees flock to the region during the annual Gurla Parikrama Yatra (pilgrimage) to walk the sacred route and be blessed by Lord Shiva. • It is an experience that leaves devotees spiritually enriched, feeling closer to the divine.
|
||||
|
||||
-------------------------
|
||||
|
||||
|
||||
The Gurla Parikrama and Mandhata Tradition is an important part of the Hindu culture and mythology that has been kept alive since centuries. Here are some of the religious significance associated with it: • Gurla Parikrama is a ritual of circumambulating Mount Gurla Mandhata in India's westernmost region of Kumaon. • Mandhata Tradition is an annual pilgrimage that begins in late June and goes on for 8 days. It is one of the holiest treks in the country and is a much sought after experience. • It is believed that circumambulating Mount Gurla Mandhata can wash away one’s sins and can help attain spiritual liberation. • Devotees from all over India come to visit the holy mountain and pay their respects. • Gurla Mandhata is also known as the Mount of Enlightenment as it is believed to have been blessed by Lord Shiva. • On the eighth day of the trek, devotees take a holy dip in the sacred waters of the Gomukh glacier. • The trek is also known to be an enriching experience as it offers a close encounter with nature, varied landscapes, and unparalleled views of the majestic Himalayas. A trek to Gurla Parikrama is an unforgettable journey and is sure to leave one in awe of the sheer beauty and spiritual significance associated with this tradition.
|
||||
|
||||
-------------------------
|
||||
|
||||
|
||||
A Guide to the Gurla Parikrama and Mandhata Route in Simikot, Rara Lake, and Kailash Plateau: - The Gurla Parikrama and Mandhata route is a popular trekking route in India's western Himalayas. - It covers the western part of the sacred Kailash and Manasarovar circuit, including the stunning Rara Lake. - From Simikot, the route goes through the remote villages of Tibetan culture, and up to the sacred peak of Mt. Gurla Mandhata (7,694m). - This route is a journey through both the physical and spiritual terrain, passing through the traditional monasteries of the Sherpas and Nyinba people. - It provides magnificent views of the Himalayan peaks, including the sacred Mt. Kailash and the wild and beautiful Rara Lake. - Along the way, trekkers can explore the culture and hospitality of the local people, visit holy lakes, experience unique flora and fauna, and gain a deeper understanding of the spiritual culture of the Himalayas. - This route is a great way to experience the full beauty of the Kailash Plateau and the surrounding area. - A trek of this route is a great way to experience the spiritual power of the Himalayas and the wonders of nature.
|
||||
|
||||
-------------------------
|
||||
|
||||
|
||||
Gurla Parikrama and Mandhata Trek in Simikot, Rara Lake and Kailash Plateau is an incredible journey that takes you through the beauty of the Himalayas and the serene lake Rara. Here is what you can expect from this trek: • Immerse yourself in the spiritual atmosphere and take part in the traditional Gurla Parikrama. • Trek through stunning landscapes, lush forests, high altitude lakes and meadows and stunning mountain views. • Visit the beautiful Rara Lake – the largest lake in Nepal and explore its fascinating aquatic wildlife. • Hike up to Mandhata Top for spectacular views of the surrounding region. • Visit the ancient monasteries and temples in the region. • Experience the culture and traditions of the local people and explore the untouched beauty of the region. • Get close to the mighty Mount Kailash, a place of immense spiritual significance. The Gurla Parikrama and Mandhata Trek will be an experience of a lifetime and will make for a wonderful adventure. So, book your tickets now for this amazing journey!
|
||||
|
||||
-------------------------
|
||||
|
||||
|
||||
Ready to take on the challenging Gurla Parikrama and Mandhata Trek in Simikot, Rara Lake, and Kailash Plateau? Here's what you need to know to prepare: • Ensure your fitness: Physically and mentally preparing your body for the rigors of the trek is key to a successful journey. • Pack wisely: Taking only what is necessary will make your trek lighter and easier. Consider items like lightweight layers, woolen clothing, trekking poles, waterproof gear, and power banks for charging devices. • Plan ahead: Familiarize yourself with the route, plan alternate routes, and prepare for potential obstacles. Consider booking a porter or a guide to help you on your journey. • Acclimatize: Take some time to adjust to the altitude before you start your trek. Spend a day or two in Simikot to get used to the air. • Look after yourself: Be mindful of your energy and eat nutritious food to keep yourself going. Hydrate frequently and take rest days if needed.
|
||||
|
||||
-------------------------
|
||||
|
||||
|
||||
1. Start your Gurla Parikrama and Mandhata trek with a thorough physical examination. 2. Take along basic medical supplies such as painkillers, bandages, and ointments. 3. Have appropriate trekking gears such as waterproof jackets and shoes. 4. Bring a water filter, as clean drinking water is not available in many areas. 5. Acclimatize well to the changing altitude, temperatures, and other environmental conditions. 6. Choose a guide with experience in the local area, culture, and language. 7. Avoid camping in exposed or windy areas. 8. Cover yourself and belongings when it rains. 9. Be aware of the local wildlife and terrain. 10. Choose the best routes to get to Simikot, Rara Lake, and Kailash Plateau. 11. Have a map to find landmarks and rest stops along the way. 12. Endure physical and mental hardships during the Gurla Parikrama and Mandhata trek. 13. Bring the necessary mental and emotional strength for this challenging trek. 14. Be respectful of the local community and traditions. 15. Enjoy the beautiful views, people, and cultures in Simikot, Rara Lake, and Kailash Plateau.
|
||||
|
||||
-------------------------
|
||||
|
||||
|
||||
Trekking in India is an adventure like no other. The Gurla Parikrama and Mandhata Trek in Simikot, Rara Lake, and Kailash Plateau is a journey of a lifetime! Here are some tips to make the most of your trekking experience: • Best Time: Visit between April and June, or mid-September to October, when the weather is more favorable and the trails less crowded. • Gear Up: Make sure to bring the proper equipment for trekking, such as waterproof jackets, gloves, woolen clothes, trekking poles, and a map. • Adventures Ahead: Get ready to explore breathtaking landscapes, beautiful lakes, and high-altitude passes. • Stay Safe: Be mindful of your health and safety by drinking plenty of water, avoiding strenuous activities in high altitude, and bringing a first-aid kit. • Permits & Documentation: Make sure to have your permits and documentation in order. • Explore & Enjoy: Take your time to appreciate the wonders of the region and savor the unique culture and hospitality of the local people. Go ahead and explore the Gurla Parikrama and Mandhata Trek in Simikot, Rara Lake, and Kailash Plateau! Enjoy the adventure of a lifetime!
|
||||
|
||||
-------------------------
|
||||
# Conclusion
|
||||
{conclusion} By taking the time to optimize your content for SEO, you can ensure your content is seen by the right people, in the right places, and at the right time. With proper keyword research, you can find the right keywords to target, create content that is both engaging and SEO-friendly, and promote it across multiple channels. With this, you can increase your reach and ensure that your content reaches its intended audience.
|
||||
@@ -0,0 +1,47 @@
|
||||
# "Discover the Best Trekking Routes in Indias Majestic Himalayan Ranges - From Uttarakhand to Rajasthan, Ladakh to Himachal Pradesh"
|
||||
### Introduction
|
||||
Experience India's majestic Himalayan mountain ranges like never before. From Uttarakhand to Rajasthan, Ladakh to Himachal Pradesh, you'll discover the best trekking routes and essential tips to make your journey unforgettable. Uncover picturesque beauty, witness traditional culture, and learn long-tailed keywords for Himalayan trekking routes – all in this comprehensive blog post. Get ready to embark on an epic adventure!
|
||||
|
||||
### 1. Exploring Uttarakhand: A Guide to the Best Trekking Routes
|
||||
|
||||
|
||||
Exploring Uttarakhand: A Guide to the Best Trekking Routes - Uttarakhand is home to some of the most stunning mountain scenery in India. From snow-capped Himalayan peaks to emerald forests, trekking in Uttarakhand is an unforgettable experience. - Here are some of the best routes to explore: - Pindari Glacier Trek: Located in the northernmost region of the state, this 7-day trek takes you through some of the most spectacular mountain views. - Kuari Pass Trek: This classic trek provides a beautiful introduction to the Himalayas. With stunning views of Nanda Devi and Dunagiri peaks, this trek is perfect for beginner trekkers. - Valley of Flowers Trek: This 5-day trek will take you through a kaleidoscope of colours. You will witness spectacular views of wild flowers, cascading waterfalls, lush meadows, and picturesque villages. - Dodital Trek: This is a relatively easy trek that takes you through the picturesque hamlets of the Garhwal Himalayas. The trek culminates in a stunning view of the Dodital Lake. - These are just a few of the many treks that Uttarakhand has to offer. Whether you’re a beginner or an experienced trekker, you’ll find something that suits your skills and interests. So, what are you waiting for? Come and explore the beauty of Uttarakhand!
|
||||
|
||||
-------------------------
|
||||
|
||||
### 2. Trekking in Ladakh - A Must-Do Adventure
|
||||
|
||||
|
||||
Trekking in Ladakh - A Must-Do Adventure! • Ladakh offers some of the most breathtaking views in the world, making it the perfect trekking destination. • The region has a unique cultural landscape, with Buddhist monasteries, stunning lakes, and spectacular views of the snow-capped Himalayas. • Trekking in Ladakh can be both challenging and rewarding, as the altitude and remoteness of the region mean that the journey will be both physically and mentally challenging. • There are a variety of treks available, ranging from easy to difficult, and from short to long. • Whether you’re a beginner or an experienced trekker, you’ll find a route to suit your level of experience and fitness. • Trekking in Ladakh is an experience like no other. From camping under the stars to visiting the ancient monasteries, it’s an adventure you’ll never forget. • So, if you’re looking for an adventure of a lifetime, don’t miss out on the unique experience that trekking in Ladakh offers!
|
||||
|
||||
-------------------------
|
||||
|
||||
### 3. A Journey to Rajasthan: Exploring the Himalayas
|
||||
|
||||
|
||||
A Journey to Rajasthan: Exploring the Himalayas • Witness the majestic beauty of the majestic Himalayas on an adventurous trek in Rajasthan • Enjoy the scenic beauty of the high Himalayan peaks, lush meadows, and rivers • Trek through the pristine forests of Rajasthan to discover the beauty of nature • Uncover the traditional culture and rich heritage of the locals living in the Himalayan foothills • Camp near the spectacular rivers of the Himalayas and take in the beauty of the starry nights • Make sure to take the necessary precautions for a safe and enjoyable trek experience • Make sure to pack all the necessary items and be well-prepared for the trek • Capture beautiful memories of your journey to the Himalayas and cherish them forever!
|
||||
|
||||
-------------------------
|
||||
|
||||
### 4. Trekking in Himachal Pradesh - A Photographic Journey
|
||||
|
||||
|
||||
Himachal Pradesh is the trekking paradise of India. Here's why it should be on your bucket list: • Stunning landscapes: Enjoy an ever-changing landscape as you traverse through dense forests, towering snow-capped peaks, lush valleys and vast meadows. • Rich biodiversity: As you explore the region, you'll witness an abundance of wildlife like leopards, snow leopards, langurs, Himalayan black bears, and more. • Colorful culture: Trek through traditional villages and explore ancient temples, monasteries, and other cultural attractions. • Adventure activities: Take part in exciting activities like paragliding, rafting, skiing, camping, and more. • Spectacular views: Capture awe-inspiring photographs from mesmerizing vantage points and experience a breathtaking view of the Himalayas. Whether you're a novice or an experienced trekker, trekking in Himachal Pradesh is an unforgettable journey!
|
||||
|
||||
-------------------------
|
||||
|
||||
### 5. Essential Tips for Trekking in India's Himalayan Ranges
|
||||
|
||||
|
||||
Trekking in India's majestic Himalayan ranges can be both an invigorating and challenging experience. Here are five essential tips for a memorable and safe trekking journey: • Research Your Trek: Do your homework. Be aware of the terrain, conditions and altitude levels you’ll encounter. Be aware of risks, climate change and other factors that may influence your trek. • Travel Light: Pack lightly and bring the essentials - good hiking boots, waterproof clothing, hat, sunscreen, head torch, basic first aid kit, etc. • Get Insurance: Always get travel insurance and make sure it covers you for trekking. • Follow Trekking Guidelines: Always abide by the local rules and regulations. Respect the environment and cultural norms. • Hire an Experienced Guide: Local guides are experienced and knowledgeable of the region and will ensure you stay safe during your trek.
|
||||
|
||||
-------------------------
|
||||
|
||||
### 6. Long-Tailed Keywords for Himalayan Trekking Routes
|
||||
|
||||
|
||||
Himalayan Trekking Routes: 6 Long-Tailed Keywords to Capture Interest • Trek the majestic Himalayas: Trekking in India offers numerous routes to explore the magnificent Himalayas and its serene beauty. • Cultural Experiences: Himalayan trekking routes provide travelers with the opportunity to experience local culture and customs of the region. • Spectacular Views: With breathtakingly beautiful sights, the Himalayan routes are renowned for offering mesmerizing views of the snow-capped mountains and valleys. • Adventurous Escapes: Get the adrenaline pumping with some of the more thrilling routes like the Stok Kangri climb or the Chadar Trek. • Unforgettable Experiences: With abundant flora and fauna, campsites, and trails, the Himalayan trekking routes will offer an unforgettable journey for all. • Life-Changing Memories: A trek in the Himalayas will leave you with memories that will last a lifetime.
|
||||
|
||||
-------------------------
|
||||
### Conclusion
|
||||
• Optimise website for speed and mobile-friendliness to improve SEO ranking • Research keywords to increase website visibility • Optimise meta tags, meta descriptions, page titles, and URLs • Monitor backlinks and link building strategies • Analyse competitors and use their SEO tactics • Incorporate long-tail keywords to increase website traffic
|
||||
1
pseo_website/_posts/2023-10-22-This-is-Blog-Title..md
Normal file
@@ -0,0 +1 @@
|
||||
This is the content of my blog post.
|
||||
@@ -0,0 +1,33 @@
|
||||
# "Trekking Through Indias Incredible Landscapes - From Kashmir in the Himalayas to Ladakh, Kumaon, Himachal Pradesh, Uttarakhand, Sikkim, Goa, and Rajasthan"
|
||||
### Introduction
|
||||
Explore India's stunning landscapes from the majestic Himalayas to Rajasthan! This guide will lead you on an unforgettable trekking journey to some of India's most beautiful places. Discover the unique cultures, enjoy the picturesque natural beauty, and prepare for a memorable adventure!
|
||||
|
||||
### 1. "Top Trekking Routes in India: Exploring the Himalayas, Kumaon, Himachal Pradesh, Uttarakhand, Sikkim, Goa, and Rajasthan"
|
||||
|
||||
|
||||
Explore India's varied and rugged landscapes on foot by trekking some of the country's best routes. Here are the top treks in India that must be on every traveler's list: •Exploring the Himalayas: Get an awe-inspiring glimpse of the snow-capped peaks of the Himalayas and explore the rugged terrains of Ladakh, Himachal Pradesh, Uttarakhand, Sikkim, and Nepal. •Kumaon: Enjoy spectacular views of Nanda Devi and Kedarnath ranges and traverse the old trading routes of Kumaon. •Himachal Pradesh: Trek to the secluded villages in the Parvati Valley or venture on the adventurous Chadar Trek in the Zanskar region. •Uttarakhand: Trek through the Garhwal Himalayas for lush green meadows, cascading waterfalls, and spectacular views of the peaks. •Sikkim: Take in the breathtaking beauty of the Kanchenjunga range and discover the rare flora and fauna of the Kanchenjunga National Park. •Goa: Hike through the lush Sahyadri hills and explore the beautiful beaches of Goa. •Rajasthan: Conquer the rocky terrains of Rajasthan’s Aravalli hills and witness the exotic wildlife of Ranthambore National Park. Go trekking and discover the natural beauty of India. Enjoy your journey!
|
||||
|
||||
-------------------------
|
||||
|
||||
### 2. "Trekking Through India: Experiencing the Rich Culture and Natural Beauty"
|
||||
|
||||
|
||||
Trekking Through India: Experiencing the Rich Culture and Natural Beauty • India is home to some of the world's most breathtaking natural beauty and rich cultural heritage. • Trekking through India is an exciting way to experience the country's diverse landscapes, from snow-capped mountain peaks to lush green jungles. • As you trek through India, you'll pass through stunning mountain passes, fascinating villages and ancient monuments. • You'll also get the chance to witness traditional ceremonies and interact with the locals, giving you a deeper insight into India's rich culture. • Plus, trekking allows you to appreciate India's natural beauty and breathtaking views up close and personal. • With numerous trekking routes across India, there is something for everyone, no matter your experience level. • So why not start exploring India today and discover the amazing culture and beauty that awaits?
|
||||
|
||||
-------------------------
|
||||
|
||||
### 3. "Essential Tips and Advice for Trekking in India: What to Pack and How to Prepare"
|
||||
|
||||
|
||||
Trekking in India is an experience of a lifetime! Here are some essential tips and advice to help you get the most out of your journey: • Pack Light: Avoid packing unnecessary items and stick to the basics. You should bring a day pack and sleeping bag as well as trekking shoes, sunscreen, rain gear, and a hat. • Stay Hydrated: Dehydration can be a real risk on a trekking trip in India. Make sure you carry plenty of water and remember to drink regularly. • Be Aware of the Terrain: Different areas have different types of terrain. Research your destination and familiarize yourself with the area. • Wear Appropriate Clothing: Make sure to dress appropriately for the terrain and climate. Opt for quick-drying, lightweight materials and avoid cotton. • Take Breaks: Trekking can be physically demanding, so take regular breaks and try to stay hydrated. • Take Safety Precautions: Be aware of your surroundings and don’t take unnecessary risks. Remember to bring a first-aid kit and stay informed about the local conditions. Following these tips and advice will ensure a safe and enjoyable trekking experience in India.
|
||||
|
||||
-------------------------
|
||||
|
||||
### 4. "The Ultimate Guide to Trekking in India:
|
||||
|
||||
|
||||
The Ultimate Guide to Trekking in India: • India offers an incredible variety of trekking trails, from the daunting heights of the Himalayas to the lush green forests of the Western Ghats. • It is the perfect country for a first-time trekker, with hundreds of adventure trails ranging from easy to difficult, so you can find the right trek for you. • Each region offers something unique and special, from the stunning mountain views in Ladakh to the lush jungle terrain of the Sahyadris. • Prepare for your trek with the right gear, research, and a certified guide to ensure a safe and enjoyable experience. • With all its incredible trekking opportunities, India is a must-visit destination for any outdoor enthusiast!
|
||||
|
||||
-------------------------
|
||||
### Conclusion
|
||||
Takeaways: • Explore India's stunning landscapes from the majestic Himalayas to Rajasthan! • Discover unique cultures and picturesque natural beauty. • Trek through India to experience its diverse landscapes, rich culture, and breathtaking views. • Pack light, stay hydrated, and take safety precautions. • Prepare with the right gear and research.
|
||||
@@ -0,0 +1,33 @@
|
||||
# "Unlock the Adventure of Trekking in India: Exploring Himalayan Peaks, Trails and Gear"
|
||||
### Introduction
|
||||
Experience the wonders of trekking in India! Explore the majestic Himalayan peaks, trails and gear, and unlock the adventure of a lifetime. From beginner routes to essential tips and gear, join us for an Indian trekking adventure and get ready to explore the unknown!
|
||||
|
||||
### 1. "Exploring the Best Treks in India for Beginners: Himalayan Peaks, Trails and Gear".
|
||||
|
||||
|
||||
Are you an adventurer looking for a thrill? Exploring the best treks in India could be a great option for you! • The Himalayan peaks offer some of the best trekking experiences in India. • From famous trails like the Roopkund Trek to thrilling passes like the Chadar Trek, there's something for everyone. • Experienced trekkers can pick up gear like boots, gloves, crampons and ice-axes for a safe and comfortable trek. • For beginners, we suggest starting with easier treks like the Markha Valley Trek or the Zanskar Trek. • Packing the right gear is key to a safe and successful trek. Be sure to pick up all the essential items, such as first aid kit, sleeping bag, and tent. • Have fun and enjoy the incredible sights of the Himalayas! So what are you waiting for? Pack your bags and start exploring the best treks in India for beginners.
|
||||
|
||||
-------------------------
|
||||
|
||||
### 2. "What to Expect on an Indian Trekking Adventure: Essential Gear and Routes to Get You Started".
|
||||
|
||||
|
||||
Trekking in India is a thrilling adventure that provides an insight into some of the most breathtaking landscapes and ancient cultures. Here's what to expect on your Indian trekking journey: • Essential Gear: Make sure you pack all the right gear, such as a sturdy pair of hiking boots, lightweight clothing, sun protection, and a waterproof jacket. • Routes: India has a range of trekking trails, ranging from easy day hikes to multi-day hikes through the Himalayas. Before you set out, make sure you research and plan your route carefully. • Wildlife: India has an abundance of wildlife, including the snow leopard, Bengal tiger, and one-horned rhinoceros. Be prepared to spot some amazing animals along your trek. • Scenery: From the snow-capped Himalayas to the lush jungles of the north-east, India offers some of the most stunning landscapes in the world. Be sure to take lots of pictures to capture the beauty. • Local Culture: The culture of the local people is just as important as the scenery. Be sure to talk to the locals and get to know their stories. • Accommodation: Depending on your trek, you may need to book a hotel, lodge or campsite. Make sure to research your accommodation options before setting out. No matter what type of trek you choose, India promises an unforgettable adventure. So pack your bags and get ready for the journey of a lifetime!
|
||||
|
||||
-------------------------
|
||||
|
||||
### 3. "The Ultimate Guide to Trekking in India: Choose the Right Peak and Trail for Your Experience Level".
|
||||
|
||||
|
||||
Are you ready to discover India's best treks? This guide will help you choose the right peak and trail for your experience level. • Pick the right trek: Before you book your trekking adventure in India, you'll need to decide which peak and trail are the best for your experience level. Here’s what you should consider: • Difficulty: Is this trek easy, moderate, or difficult? • Terrain: What type of terrain will you encounter? • Distance: How long is the trek? • Altitude: How high will you be going? • Weather: What is the weather like in this area? • Permits: Do you need a permit to trek in this area? • Choose the best season: India has diverse climates, so the best season for trekking depends on the region you're visiting. For instance, Ladakh is best in summer and spring, while the Himalayas are best in autumn and winter. • Stay safe: To stay safe during your trek, bring the right equipment, wear appropriate clothing, and drink plenty of water. It’s also important to stay on designated trails and watch out for signs of altitude sickness. • Pack wisely: When you're packing for your trek, make sure to bring the essentials such as a warm sleeping bag, trekking shoes, and first-aid kit. You should also pack snacks and energy bars to keep your energy levels up. With these tips, you're ready to start your trekking adventure in India. Bon voyage!
|
||||
|
||||
-------------------------
|
||||
|
||||
### 4. "Essential Tips for Trekking in India: Safety, Gear, and Planning for a Himalayan Adventure".
|
||||
|
||||
|
||||
Essential Tips for Trekking in India: Safety, Gear, and Planning for a Himalayan Adventure • Safety First: Make sure you take the proper precautions when trekking in India. Choose a reputable guide, bring the right clothing and footwear, and be aware of the local terrain. • Get the Right Gear: For a safe and successful trek, it's important to have the right gear. Invest in high-quality hiking boots, waterproof clothing, a first-aid kit, and appropriate camping gear. • Have a Plan: Before embarking on your Himalayan adventure, create a detailed plan of the routes, distance, and timeframes. Consider any potential risks and plan accordingly. • Enjoy the Journey: Taking the time to properly plan for a trek is essential, but don't forget to relax and enjoy the journey! Take in the breathtaking scenery, challenge yourself, and make the most of your experience.
|
||||
|
||||
-------------------------
|
||||
### Conclusion
|
||||
Summary: • Explore the majestic Himalayan peaks, trails and gear for an Indian trekking adventure. • Start with easier treks like the Markha Valley Trek or the Zanskar Trek. • Pack essential gear like boots, gloves, crampons, ice-axes and first aid kit. • Research the route, weather and local culture. • Choose the right peak and trail for your experience level. • Stay safe with the right equipment, clothing and water. • Plan your trek and enjoy the journey!
|
||||
@@ -0,0 +1,18 @@
|
||||
# 7 Spectacular Trekking Trails in India to Put on Your Bucket List
|
||||
|
||||
### Introduction
|
||||
|
||||
Explore India's breathtakingly beautiful landscapes, rich culture, and diverse wildlife by trekking its most spectacular trails! From the majestic Himalayas to the lush Western Ghats, discover what it takes to embark on an unforgettable trekking adventure and get helpful tips for the beginner trekker.
|
||||
|
||||
|
||||
|
||||
### "Tips for the Beginner Trekker: How to Prepare for Trekking in India".
|
||||
|
||||
|
||||
|
||||
Trekking in India is a great way to explore the beautiful landscape and unique culture of the country. Here are some tips for the beginner trekker to help prepare for a successful trek: • Research: Take the time to learn about the trekking route and conditions. This will help you better prepare for the trek. • Gear: Ensure you have the right gear for the trek. Make sure to pack light and to also include items such as a sleeping bag, a warm jacket, and appropriate shoes. • Fitness: Trekking can be physically demanding, so make sure to train beforehand. This includes building stamina and strength. • Accommodation: Familiarise yourself with the accommodation options available along the trekking route. This will make it easier to plan and book the right places. • Food: Make sure you bring enough food and snacks for the trek. If possible, buy these items in advance to save time. • Water: Carry plenty of water with you at all times. It is recommended to drink at least 4-5 litres a day. • Navigation: Familiarise yourself with the route and navigation tools such as a map and compass. • Safety: Make sure to inform someone of your trekking route and duration. Carry a first-aid kit and know the emergency numbers of the region. Following these tips will help you prepare for a successful trek in India. Enjoy the adventure!
|
||||
|
||||
|
||||
-------------------------
|
||||
### Conclusion
|
||||
Takeaways: - Research trekking route and conditions - Pack appropriate gear and snacks - Train beforehand to build stamina and strength - Familiarise yourself with accommodation and navigation tools - Bring plenty of water and inform someone of your trekking route - Carry a first-aid kit and know emergency numbers
|
||||
@@ -0,0 +1,18 @@
|
||||
# Top Trekking Destinations in India: Unravel Natures Hidden Beauty
|
||||
|
||||
### Introduction
|
||||
|
||||
Unlock the beauty of nature with a trekking adventure through India. From soaring Himalayan peaks to lush jungles, discover hidden gems and get tips and advice for first-time trekkers in India. Join us as we explore the top trekking destinations in India!
|
||||
|
||||
|
||||
|
||||
### "Tips and Advice for First-Time Trekkers in India".
|
||||
|
||||
|
||||
|
||||
Tips and Advice for First-Time Trekkers in India: •Research and Prepare: Start your journey by learning all you can about the terrain, trails, climate and local culture. •Get Fit: Prepare your body for the trek, practice cardio and strength exercises, and get your gear ready. •Pack Light: Carry only essential items for your trek like sunscreen, water, food, first aid kit, and a map. •Stay Hydrated: Drink plenty of water throughout the day to keep your body healthy. •Listen to Your Guide: Experienced guides can help you navigate tricky terrain, so it's important to pay attention. •Know the Weather: Be aware of the weather conditions before you set out and carry necessary items to keep you safe and warm. •Stay Connected: Carry a GPS and cell phone, so you can stay in touch and be safe on your journey. •Respect Nature: Leave no trace by disposing of your waste properly and not disrupting the flora and fauna. •Plan Ahead: Finalize your itinerary and route in advance so you can enjoy your trek in the best possible way.
|
||||
|
||||
|
||||
-------------------------
|
||||
### Conclusion
|
||||
Takeaways from "Top Trekking Destinations in India": • Research and Prepare before embarking on your journey • Pack light and stay hydrated • Listen to your guide and be aware of the weather conditions • Carry a GPS and cell phone for safety • Respect nature and plan your itinerary in advance.
|
||||
@@ -0,0 +1,25 @@
|
||||
---
|
||||
title: {blog_title}
|
||||
date: {formatted_date}
|
||||
categories: [{blog_categories}]
|
||||
tags: [{blog_tags}]
|
||||
description: {blog_meta_desc}
|
||||
img_path: '/posts/20180809'
|
||||
---# Trekking Through India: 10 Must-See Destinations
|
||||
|
||||
### Introduction
|
||||
|
||||
Discover the beauty of India's rich cultural heritage on an epic trek through the country's most spectacular destinations. From the bustling markets of Jaipur to the stunning mountain views of Sikkim, embark on an unforgettable adventure and get the best gear for trekking in India with our essential tips for beginners.
|
||||
|
||||
|
||||
|
||||
### "Choosing the Best Gear for Trekking in India: Essential Tips for Beginners".
|
||||
|
||||
|
||||
|
||||
# Choosing the Best Gear for Trekking in India: Essential Tips for Beginners Trekking in India can be an unforgettable experience, but it’s important to make sure you have the right gear. Here are some essential tips to help you choose the best gear for trekking in India: * **Comfort**: Opt for lightweight and breathable clothing and materials to ensure maximum comfort while trekking. Make sure to also choose materials that provide protection from extreme weather conditions and UV rays. * **Durability**: Choose quality materials that can stand up to rough terrain and a wide range of temperatures. Synthetic materials and fabrics such as fleece are usually a better option as they are more durable and last longer. * **Functionality**: Choose gear that is multifunctional and easy to use. A sturdy backpack with multiple pockets and compartments will come in handy for storing supplies and other essentials. Waterproof, zippered bags and packs can also be useful for protecting items from the rain. * **Stability**: Invest in quality trekking shoes and boots that provide good ankle support and superior grip. Trekking poles can also help with stability and provide an extra level of support when going uphill or downhill. By following these tips, you can ensure you have the best gear for your next trekking adventure in India.
|
||||
|
||||
|
||||
-------------------------
|
||||
### Conclusion
|
||||
None
|
||||
@@ -0,0 +1,18 @@
|
||||
# Trekking Through India: Exploring Natures Jewel
|
||||
|
||||
### Introduction
|
||||
|
||||
Take a journey into India's wild and untamed terrain and explore its untouched gems. Uncover hidden natural wonders and discover new routes as you traverse 5 unique trekking routes perfect for the beginner adventurer. Join us as we explore India's breathtaking natural jewels!
|
||||
|
||||
|
||||
|
||||
### "5 Unique Trekking Routes for Beginners in India: Exploring Nature's Jewels"
|
||||
|
||||
|
||||
|
||||
Trekking in India offers a host of options for both experienced trekkers and beginners alike. Here are five of the most unique trekking routes for those just getting started on their trekking journey: • Dzongri Trek in Sikkim: This easy-to-moderate grade trek provides stunning views of Kanchenjunga and its many glaciers. It is the ideal choice for those who seek to explore nature's bounty. • Pin Parvati Pass Trek in Himachal Pradesh: This challenging but beautiful route traverses through lush alpine meadows and offers stunning views of the Pir Panjal range. • Bhrigu Lake Trek in Himachal Pradesh: One of the most beautiful treks, it takes you to the pristine and serene lake Bhrigu and the surrounding lush green meadows. • Valley of Flowers Trek in Uttarakhand: This trek takes you through vibrant fields of various kinds of flowers and a host of other wildlife, making it perfect for those looking for a tranquil experience. • Kuari Pass Trek in Uttarakhand: Another great trek for beginners, this route takes you through forests of oak and conifer, pristine glacial streams, and some of the most beautiful meadows in India. So, if you're looking to embark on a trekking journey in India, these five routes offer an ideal way to explore nature's jewels!
|
||||
|
||||
|
||||
-------------------------
|
||||
### Conclusion
|
||||
Takeaways: • Explore 5 unique trekking routes perfect for beginner adventurers in India • Dzongri Trek in Sikkim offers stunning views of Kanchenjunga and its glaciers • Pin Parvati Pass Trek in Himachal Pradesh is a challenging but beautiful route • Bhrigu Lake Trek in Himachal Pradesh is a tranquil experience • Valley of Flowers Trek in Uttarakhand is full of vibrant fields of flowers • Kuari Pass Trek in Uttarakhand takes you through forests of oak and conifer
|
||||
@@ -0,0 +1,18 @@
|
||||
# Trekking in India: Your Complete Guide to Epic Trails
|
||||
|
||||
### Introduction
|
||||
|
||||
Ready to experience the breathtaking beauty of India's great outdoors? Join us on an adventure to explore the majestic trails of the country, from the Himalayas to the Southern coast. We'll share the best packing tips and provide you with all the info you need to make your trekking journey an epic one.
|
||||
|
||||
|
||||
|
||||
### Sub Topic: "Preparing for Your Trek: Packing Tips for Trekkers in India".
|
||||
|
||||
|
||||
|
||||
## Preparing for Your Trek: Packing Tips for Trekkers in India * Deciding what to pack for a trekking trip can seem daunting at first, but with the right preparation and planning, it's easy to ensure you have the essential items you need for a successful trek. * **The Basics**: * Pack light, but don't skimp on items such as warm clothing, waterproof gear, sturdy footwear, first-aid kit, and the necessary toiletries. * **Food and Water**: * Bring high-energy snacks like trail mix, energy bars, and other light snacks. Don't forget to bring enough water for your trekking days, as well as a water filter for refilling. * **Trekking Gear**: * A trekking pole, a headlamp or flashlight, a whistle, a pocketknife, and a map/compass are all must-haves for your trek. * **Other Tips**: * Make sure all of your items are packed securely and easy to access. Layer your clothing for convenience and adjustability. Wear comfortable, broken-in shoes to prevent blisters. And finally, don't forget to take plenty of photos!
|
||||
|
||||
|
||||
-------------------------
|
||||
### Conclusion
|
||||
Takeaways: * Pack light, but don't skimp on essentials such as warm clothing, waterproof gear, and first-aid kit. * Bring high-energy snacks and enough water for your trekking days. * Trekking gear such as poles, headlamps, whistles, pocketknives, and maps/compass are must-haves. * Securely pack items for easy access, layer clothing, and wear comfortable shoes. * Don't forget to take plenty of photos!
|
||||
915
pseo_website/_site/404.html
Normal file
@@ -0,0 +1,915 @@
|
||||
<!doctype html>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- `site.alt_lang` can specify a language different from the UI -->
|
||||
<html lang="en" >
|
||||
<!-- The Head -->
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<meta name="theme-color" media="(prefers-color-scheme: light)" content="#f7f7f7">
|
||||
<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#1b1b1e">
|
||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
|
||||
<meta
|
||||
name="viewport"
|
||||
content="width=device-width, user-scalable=no initial-scale=1, shrink-to-fit=no, viewport-fit=cover"
|
||||
>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Begin Jekyll SEO tag v2.8.0 -->
|
||||
<meta name="generator" content="Jekyll v4.3.2" />
|
||||
<meta property="og:title" content="404: Page not found" />
|
||||
<meta property="og:locale" content="en" />
|
||||
<meta name="description" content="Begginer friendly AI technologies simplified & explained. Know & boost productivity with latest AI tools." />
|
||||
<meta property="og:description" content="Begginer friendly AI technologies simplified & explained. Know & boost productivity with latest AI tools." />
|
||||
<link rel="canonical" href="http://localhost:4000/404.html" />
|
||||
<meta property="og:url" content="http://localhost:4000/404.html" />
|
||||
<meta property="og:site_name" content="AI-Takia" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta name="twitter:card" content="summary" />
|
||||
<meta property="twitter:title" content="404: Page not found" />
|
||||
<meta name="twitter:site" content="@ajaysi" />
|
||||
<script type="application/ld+json">
|
||||
{"@context":"https://schema.org","@type":"WebPage","description":"Begginer friendly AI technologies simplified & explained. Know & boost productivity with latest AI tools.","headline":"404: Page not found","url":"http://localhost:4000/404.html"}</script>
|
||||
<!-- End Jekyll SEO tag -->
|
||||
|
||||
|
||||
|
||||
<title>404: Page not found | AI-Takia
|
||||
</title>
|
||||
|
||||
<!--
|
||||
The Favicons for Web, Android, Microsoft, and iOS (iPhone and iPad) Apps
|
||||
Generated by: https://realfavicongenerator.net/
|
||||
-->
|
||||
|
||||
|
||||
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/assets/img/favicons/apple-touch-icon.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="/assets/img/favicons/favicon-32x32.png">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="/assets/img/favicons/favicon-16x16.png">
|
||||
<link rel="manifest" href="/assets/img/favicons/site.webmanifest">
|
||||
<link rel="shortcut icon" href="/assets/img/favicons/favicon.ico">
|
||||
<meta name="apple-mobile-web-app-title" content="AI-Takia">
|
||||
<meta name="application-name" content="AI-Takia">
|
||||
<meta name="msapplication-TileColor" content="#da532c">
|
||||
<meta name="msapplication-config" content="/assets/img/favicons/browserconfig.xml">
|
||||
<meta name="theme-color" content="#ffffff">
|
||||
|
||||
|
||||
|
||||
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com" >
|
||||
<link rel="dns-prefetch" href="https://fonts.googleapis.com" >
|
||||
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link rel="dns-prefetch" href="https://fonts.gstatic.com" crossorigin>
|
||||
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com" >
|
||||
<link rel="dns-prefetch" href="https://fonts.googleapis.com" >
|
||||
|
||||
<link rel="preconnect" href="https://cdn.jsdelivr.net" >
|
||||
<link rel="dns-prefetch" href="https://cdn.jsdelivr.net" >
|
||||
|
||||
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Lato&family=Source+Sans+Pro:wght@400;600;700;900&display=swap">
|
||||
|
||||
|
||||
<!-- GA -->
|
||||
|
||||
|
||||
<!-- Bootstrap -->
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css">
|
||||
|
||||
<!-- Font Awesome -->
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.4.2/css/all.min.css">
|
||||
|
||||
<link rel="stylesheet" href="/assets/css/jekyll-theme-chirpy.css">
|
||||
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/loading-attribute-polyfill@2.1.1/dist/loading-attribute-polyfill.min.css">
|
||||
|
||||
|
||||
|
||||
<!-- Manific Popup -->
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/magnific-popup@1.1.0/dist/magnific-popup.min.css">
|
||||
|
||||
|
||||
<!-- JavaScript -->
|
||||
|
||||
|
||||
<!-- Switch the mode between dark and light. -->
|
||||
|
||||
<script type="text/javascript">
|
||||
class ModeToggle {
|
||||
static get MODE_KEY() {
|
||||
return 'mode';
|
||||
}
|
||||
static get MODE_ATTR() {
|
||||
return 'data-mode';
|
||||
}
|
||||
static get DARK_MODE() {
|
||||
return 'dark';
|
||||
}
|
||||
static get LIGHT_MODE() {
|
||||
return 'light';
|
||||
}
|
||||
static get ID() {
|
||||
return 'mode-toggle';
|
||||
}
|
||||
|
||||
constructor() {
|
||||
if (this.hasMode) {
|
||||
if (this.isDarkMode) {
|
||||
if (!this.isSysDarkPrefer) {
|
||||
this.setDark();
|
||||
}
|
||||
} else {
|
||||
if (this.isSysDarkPrefer) {
|
||||
this.setLight();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let self = this;
|
||||
|
||||
/* always follow the system prefers */
|
||||
this.sysDarkPrefers.addEventListener('change', () => {
|
||||
if (self.hasMode) {
|
||||
if (self.isDarkMode) {
|
||||
if (!self.isSysDarkPrefer) {
|
||||
self.setDark();
|
||||
}
|
||||
} else {
|
||||
if (self.isSysDarkPrefer) {
|
||||
self.setLight();
|
||||
}
|
||||
}
|
||||
|
||||
self.clearMode();
|
||||
}
|
||||
|
||||
self.notify();
|
||||
});
|
||||
} /* constructor() */
|
||||
|
||||
get sysDarkPrefers() {
|
||||
return window.matchMedia('(prefers-color-scheme: dark)');
|
||||
}
|
||||
|
||||
get isSysDarkPrefer() {
|
||||
return this.sysDarkPrefers.matches;
|
||||
}
|
||||
|
||||
get isDarkMode() {
|
||||
return this.mode === ModeToggle.DARK_MODE;
|
||||
}
|
||||
|
||||
get isLightMode() {
|
||||
return this.mode === ModeToggle.LIGHT_MODE;
|
||||
}
|
||||
|
||||
get hasMode() {
|
||||
return this.mode != null;
|
||||
}
|
||||
|
||||
get mode() {
|
||||
return sessionStorage.getItem(ModeToggle.MODE_KEY);
|
||||
}
|
||||
|
||||
/* get the current mode on screen */
|
||||
get modeStatus() {
|
||||
if (this.isDarkMode || (!this.hasMode && this.isSysDarkPrefer)) {
|
||||
return ModeToggle.DARK_MODE;
|
||||
} else {
|
||||
return ModeToggle.LIGHT_MODE;
|
||||
}
|
||||
}
|
||||
|
||||
setDark() {
|
||||
document.documentElement.setAttribute(ModeToggle.MODE_ATTR, ModeToggle.DARK_MODE);
|
||||
sessionStorage.setItem(ModeToggle.MODE_KEY, ModeToggle.DARK_MODE);
|
||||
}
|
||||
|
||||
setLight() {
|
||||
document.documentElement.setAttribute(ModeToggle.MODE_ATTR, ModeToggle.LIGHT_MODE);
|
||||
sessionStorage.setItem(ModeToggle.MODE_KEY, ModeToggle.LIGHT_MODE);
|
||||
}
|
||||
|
||||
clearMode() {
|
||||
document.documentElement.removeAttribute(ModeToggle.MODE_ATTR);
|
||||
sessionStorage.removeItem(ModeToggle.MODE_KEY);
|
||||
}
|
||||
|
||||
/* Notify another plugins that the theme mode has changed */
|
||||
notify() {
|
||||
window.postMessage(
|
||||
{
|
||||
direction: ModeToggle.ID,
|
||||
message: this.modeStatus
|
||||
},
|
||||
'*'
|
||||
);
|
||||
}
|
||||
|
||||
flipMode() {
|
||||
if (this.hasMode) {
|
||||
if (this.isSysDarkPrefer) {
|
||||
if (this.isLightMode) {
|
||||
this.clearMode();
|
||||
} else {
|
||||
this.setLight();
|
||||
}
|
||||
} else {
|
||||
if (this.isDarkMode) {
|
||||
this.clearMode();
|
||||
} else {
|
||||
this.setDark();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (this.isSysDarkPrefer) {
|
||||
this.setLight();
|
||||
} else {
|
||||
this.setDark();
|
||||
}
|
||||
}
|
||||
|
||||
this.notify();
|
||||
} /* flipMode() */
|
||||
} /* ModeToggle */
|
||||
|
||||
const modeToggle = new ModeToggle();
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<!-- A placeholder to allow defining custom metadata -->
|
||||
|
||||
</head>
|
||||
|
||||
|
||||
<body>
|
||||
<!-- The Side Bar -->
|
||||
|
||||
<aside aria-label="Sidebar" id="sidebar" class="d-flex flex-column align-items-end">
|
||||
<header class="profile-wrapper">
|
||||
<a href="/" id="avatar" class="rounded-circle">
|
||||
|
||||
</a>
|
||||
|
||||
<h1 class="site-title">
|
||||
<a href="/">AI-Takia</a>
|
||||
</h1>
|
||||
<p class="site-subtitle fst-italic mb-0">Latest Blogs on AI tech, Tools & SaaS</p>
|
||||
</header>
|
||||
<!-- .profile-wrapper -->
|
||||
|
||||
<nav class="flex-column flex-grow-1 w-100 ps-0">
|
||||
<ul class="nav">
|
||||
<!-- home -->
|
||||
<li class="nav-item">
|
||||
<a href="/" class="nav-link">
|
||||
<i class="fa-fw fas fa-home"></i>
|
||||
<span>HOME</span>
|
||||
</a>
|
||||
</li>
|
||||
<!-- the real tabs -->
|
||||
|
||||
<li class="nav-item">
|
||||
<a href="/categories/" class="nav-link">
|
||||
<i class="fa-fw fas fa-stream"></i>
|
||||
|
||||
|
||||
<span>CATEGORIES</span>
|
||||
</a>
|
||||
</li>
|
||||
<!-- .nav-item -->
|
||||
|
||||
<li class="nav-item">
|
||||
<a href="/tags/" class="nav-link">
|
||||
<i class="fa-fw fas fa-tags"></i>
|
||||
|
||||
|
||||
<span>TAGS</span>
|
||||
</a>
|
||||
</li>
|
||||
<!-- .nav-item -->
|
||||
|
||||
<li class="nav-item">
|
||||
<a href="/archives/" class="nav-link">
|
||||
<i class="fa-fw fas fa-archive"></i>
|
||||
|
||||
|
||||
<span>ARCHIVES</span>
|
||||
</a>
|
||||
</li>
|
||||
<!-- .nav-item -->
|
||||
|
||||
<li class="nav-item">
|
||||
<a href="/about/" class="nav-link">
|
||||
<i class="fa-fw fas fa-info-circle"></i>
|
||||
|
||||
|
||||
<span>ABOUT</span>
|
||||
</a>
|
||||
</li>
|
||||
<!-- .nav-item -->
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
<div class="sidebar-bottom d-flex flex-wrap align-items-center w-100">
|
||||
|
||||
<button type="button" class="mode-toggle btn" aria-label="Switch Mode">
|
||||
<i class="fas fa-adjust"></i>
|
||||
</button>
|
||||
|
||||
|
||||
<span class="icon-border"></span>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a
|
||||
href="https://github.com/ajaysi"
|
||||
aria-label="github"
|
||||
|
||||
|
||||
|
||||
target="_blank"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
rel="noopener noreferrer"
|
||||
|
||||
>
|
||||
<i class="fab fa-github"></i>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a
|
||||
href="https://twitter.com/ajaysi"
|
||||
aria-label="twitter"
|
||||
|
||||
|
||||
|
||||
target="_blank"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
rel="noopener noreferrer"
|
||||
|
||||
>
|
||||
<i class="fa-brands fa-x-twitter"></i>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a
|
||||
href="javascript:location.href = 'mailto:' + ['example','domain.com'].join('@')"
|
||||
aria-label="email"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
>
|
||||
<i class="fas fa-envelope"></i>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a
|
||||
href=""
|
||||
aria-label="linkedin"
|
||||
|
||||
|
||||
|
||||
target="_blank"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
rel="noopener noreferrer"
|
||||
|
||||
>
|
||||
<i class="fab fa-linkedin"></i>
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
<!-- .sidebar-bottom -->
|
||||
</aside>
|
||||
<!-- #sidebar -->
|
||||
|
||||
|
||||
<div id="main-wrapper" class="d-flex justify-content-center">
|
||||
<div class="container d-flex flex-column px-xxl-5">
|
||||
<!-- The Top Bar -->
|
||||
|
||||
<header id="topbar-wrapper" aria-label="Top Bar">
|
||||
<div
|
||||
id="topbar"
|
||||
class="d-flex align-items-center justify-content-between px-lg-3 h-100"
|
||||
>
|
||||
<nav id="breadcrumb" aria-label="Breadcrumb">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span>
|
||||
<a href="/">
|
||||
Home
|
||||
</a>
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span>404: Page not found</span>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</nav>
|
||||
<!-- endof #breadcrumb -->
|
||||
|
||||
<button type="button" id="sidebar-trigger" class="btn btn-link">
|
||||
<i class="fas fa-bars fa-fw"></i>
|
||||
</button>
|
||||
|
||||
<div id="topbar-title">
|
||||
404: Page not found
|
||||
</div>
|
||||
|
||||
<button type="button" id="search-trigger" class="btn btn-link">
|
||||
<i class="fas fa-search fa-fw"></i>
|
||||
</button>
|
||||
|
||||
<search class="align-items-center ms-3 ms-lg-0">
|
||||
<i class="fas fa-search fa-fw"></i>
|
||||
<input
|
||||
class="form-control"
|
||||
id="search-input"
|
||||
type="search"
|
||||
aria-label="search"
|
||||
autocomplete="off"
|
||||
placeholder="Search..."
|
||||
>
|
||||
</search>
|
||||
<button type="button" class="btn btn-link text-decoration-none" id="search-cancel">Cancel</button>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
|
||||
<div class="row flex-grow-1">
|
||||
<main aria-label="Main Content" class="col-12 col-lg-11 col-xl-9 px-md-4">
|
||||
|
||||
<!-- Refactor the HTML structure -->
|
||||
|
||||
|
||||
|
||||
<!--
|
||||
In order to allow a wide table to scroll horizontally,
|
||||
we suround the markdown table with `<div class="table-wrapper">` and `</div>`
|
||||
-->
|
||||
|
||||
|
||||
|
||||
<!--
|
||||
Fixed kramdown code highlight rendering:
|
||||
https://github.com/penibelst/jekyll-compress-html/issues/101
|
||||
https://github.com/penibelst/jekyll-compress-html/issues/71#issuecomment-188144901
|
||||
-->
|
||||
|
||||
|
||||
|
||||
<!-- Change the icon of checkbox -->
|
||||
|
||||
|
||||
|
||||
<!-- Handle images -->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Add header for code snippets -->
|
||||
|
||||
|
||||
|
||||
<!-- Create heading anchors -->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- return -->
|
||||
|
||||
|
||||
|
||||
|
||||
<article class="px-1">
|
||||
|
||||
|
||||
|
||||
<h1 class="dynamic-title">
|
||||
404: Page not found
|
||||
</h1>
|
||||
<div class="content">
|
||||
|
||||
|
||||
|
||||
|
||||
<p class="lead">Sorry, we've misplaced that URL or it's pointing to something that doesn't exist.</p>
|
||||
|
||||
</div>
|
||||
|
||||
</article>
|
||||
|
||||
|
||||
|
||||
</main>
|
||||
|
||||
<!-- panel -->
|
||||
<aside aria-label="Panel" id="panel-wrapper" class="col-xl-3 ps-2 mb-5 text-muted">
|
||||
<div class="access">
|
||||
<!-- Get the last 5 posts from lastmod list. -->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- The trending tags list -->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<section>
|
||||
<h2 class="panel-heading">Trending Tags</h2>
|
||||
<div class="d-flex flex-wrap mt-3 mb-1 me-3">
|
||||
|
||||
|
||||
<a class="post-tag btn btn-outline-primary" href="/tags/getting-started/">getting started</a>
|
||||
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</aside>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<!-- tail -->
|
||||
<div id="tail-wrapper" class="col-12 col-lg-11 col-xl-9 px-md-4">
|
||||
|
||||
|
||||
<!-- The Footer -->
|
||||
|
||||
<footer
|
||||
aria-label="Site Info"
|
||||
class="
|
||||
d-flex flex-column justify-content-center text-muted
|
||||
flex-lg-row justify-content-lg-between align-items-lg-center pb-lg-3
|
||||
"
|
||||
>
|
||||
<p>
|
||||
©
|
||||
<time>2023</time>
|
||||
<a href="https://twitter.com/username">ajaysi</a>.
|
||||
|
||||
<span
|
||||
data-bs-toggle="tooltip"
|
||||
data-bs-placement="top"
|
||||
title="Except where otherwise noted, the blog posts on this site are licensed under the Creative Commons Attribution 4.0 International (CC BY 4.0) License by the author."
|
||||
>Some rights reserved.</span>
|
||||
|
||||
</p>
|
||||
|
||||
<p>Using the <a href="https://github.com/cotes2020/jekyll-theme-chirpy" target="_blank" rel="noopener">Chirpy</a> theme for <a href="https://jekyllrb.com" target="_blank" rel="noopener">Jekyll</a>
|
||||
</p>
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- The Search results -->
|
||||
|
||||
<div id="search-result-wrapper" class="d-flex justify-content-center unloaded">
|
||||
<div class="col-11 content">
|
||||
<div id="search-hints">
|
||||
<!-- The trending tags list -->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<section>
|
||||
<h2 class="panel-heading">Trending Tags</h2>
|
||||
<div class="d-flex flex-wrap mt-3 mb-1 me-3">
|
||||
|
||||
|
||||
<a class="post-tag btn btn-outline-primary" href="/tags/getting-started/">getting started</a>
|
||||
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
<div id="search-results" class="d-flex flex-wrap justify-content-center text-muted mt-3"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<aside aria-label="Scroll to Top">
|
||||
<button id="back-to-top" type="button" class="btn btn-lg btn-box-shadow">
|
||||
<i class="fas fa-angle-up"></i>
|
||||
</button>
|
||||
</aside>
|
||||
</div>
|
||||
|
||||
<div id="mask"></div>
|
||||
|
||||
|
||||
<aside
|
||||
id="notification"
|
||||
class="toast"
|
||||
role="alert"
|
||||
aria-live="assertive"
|
||||
aria-atomic="true"
|
||||
data-bs-animation="true"
|
||||
data-bs-autohide="false"
|
||||
>
|
||||
<div class="toast-header">
|
||||
<button
|
||||
type="button"
|
||||
class="btn-close ms-auto"
|
||||
data-bs-dismiss="toast"
|
||||
aria-label="Close"
|
||||
></button>
|
||||
</div>
|
||||
<div class="toast-body text-center pt-0">
|
||||
<p class="px-2 mb-3">A new version of content is available.</p>
|
||||
<button type="button" class="btn btn-primary" aria-label="Update">
|
||||
Update
|
||||
</button>
|
||||
</div>
|
||||
</aside>
|
||||
|
||||
|
||||
|
||||
<!-- JavaScripts -->
|
||||
|
||||
<!-- JS selector for site. -->
|
||||
|
||||
<!-- commons -->
|
||||
|
||||
|
||||
|
||||
<!-- layout specified -->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- image lazy-loading & popup & clipboard -->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/combine/npm/jquery@3.7.1/dist/jquery.min.js,npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js,npm/simple-jekyll-search@1.10.0/dest/simple-jekyll-search.min.js,npm/loading-attribute-polyfill@2.1.1/dist/loading-attribute-polyfill.umd.min.js,npm/magnific-popup@1.1.0/dist/jquery.magnific-popup.min.js,npm/clipboard@2.0.11/dist/clipboard.min.js"></script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script defer src="/assets/js/dist/page.min.js"></script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!--
|
||||
Jekyll Simple Search loader
|
||||
See: <https://github.com/christian-fei/Simple-Jekyll-Search>
|
||||
-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
/* Note: dependent library will be loaded in `js-selector.html` */
|
||||
SimpleJekyllSearch({
|
||||
searchInput: document.getElementById('search-input'),
|
||||
resultsContainer: document.getElementById('search-results'),
|
||||
json: '/assets/js/data/search.json',
|
||||
searchResultTemplate: ' <article class="px-1 px-sm-2 px-lg-4 px-xl-0"> <header> <h2><a href="{url}">{title}</a></h2> <div class="post-meta d-flex flex-column flex-sm-row text-muted mt-1 mb-1"> {categories} {tags} </div> </header> <p>{snippet}</p> </article>',
|
||||
noResultsText: '<p class="mt-5"></p>',
|
||||
templateMiddleware: function(prop, value, template) {
|
||||
if (prop === 'categories') {
|
||||
if (value === '') {
|
||||
return `${value}`;
|
||||
} else {
|
||||
return `<div class="me-sm-4"><i class="far fa-folder fa-fw"></i>${value}</div>`;
|
||||
}
|
||||
}
|
||||
|
||||
if (prop === 'tags') {
|
||||
if (value === '') {
|
||||
return `${value}`;
|
||||
} else {
|
||||
return `<div><i class="fa fa-tag fa-fw"></i>${value}</div>`;
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
914
pseo_website/_site/about/index.html
Normal file
@@ -0,0 +1,914 @@
|
||||
<!doctype html>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- `site.alt_lang` can specify a language different from the UI -->
|
||||
<html lang="en" >
|
||||
<!-- The Head -->
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<meta name="theme-color" media="(prefers-color-scheme: light)" content="#f7f7f7">
|
||||
<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#1b1b1e">
|
||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
|
||||
<meta
|
||||
name="viewport"
|
||||
content="width=device-width, user-scalable=no initial-scale=1, shrink-to-fit=no, viewport-fit=cover"
|
||||
>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Begin Jekyll SEO tag v2.8.0 -->
|
||||
<meta name="generator" content="Jekyll v4.3.2" />
|
||||
<meta property="og:title" content="About" />
|
||||
<meta property="og:locale" content="en" />
|
||||
<meta name="description" content="Add Markdown syntax content to file _tabs/about.md and it will show up on this page." />
|
||||
<meta property="og:description" content="Add Markdown syntax content to file _tabs/about.md and it will show up on this page." />
|
||||
<link rel="canonical" href="http://localhost:4000/about/" />
|
||||
<meta property="og:url" content="http://localhost:4000/about/" />
|
||||
<meta property="og:site_name" content="AI-Takia" />
|
||||
<meta property="og:type" content="article" />
|
||||
<meta property="article:published_time" content="2023-10-22T14:10:02+05:30" />
|
||||
<meta name="twitter:card" content="summary" />
|
||||
<meta property="twitter:title" content="About" />
|
||||
<meta name="twitter:site" content="@ajaysi" />
|
||||
<script type="application/ld+json">
|
||||
{"@context":"https://schema.org","@type":"WebSite","dateModified":"2023-10-22T14:10:02+05:30","datePublished":"2023-10-22T14:10:02+05:30","description":"Add Markdown syntax content to file _tabs/about.md and it will show up on this page.","headline":"About","name":"ajaysi","sameAs":["https://twitter.com/username","https://github.com/username"],"url":"http://localhost:4000/about/"}</script>
|
||||
<!-- End Jekyll SEO tag -->
|
||||
|
||||
|
||||
|
||||
<title>About | AI-Takia
|
||||
</title>
|
||||
|
||||
<!--
|
||||
The Favicons for Web, Android, Microsoft, and iOS (iPhone and iPad) Apps
|
||||
Generated by: https://realfavicongenerator.net/
|
||||
-->
|
||||
|
||||
|
||||
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/assets/img/favicons/apple-touch-icon.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="/assets/img/favicons/favicon-32x32.png">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="/assets/img/favicons/favicon-16x16.png">
|
||||
<link rel="manifest" href="/assets/img/favicons/site.webmanifest">
|
||||
<link rel="shortcut icon" href="/assets/img/favicons/favicon.ico">
|
||||
<meta name="apple-mobile-web-app-title" content="AI-Takia">
|
||||
<meta name="application-name" content="AI-Takia">
|
||||
<meta name="msapplication-TileColor" content="#da532c">
|
||||
<meta name="msapplication-config" content="/assets/img/favicons/browserconfig.xml">
|
||||
<meta name="theme-color" content="#ffffff">
|
||||
|
||||
|
||||
|
||||
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com" >
|
||||
<link rel="dns-prefetch" href="https://fonts.googleapis.com" >
|
||||
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link rel="dns-prefetch" href="https://fonts.gstatic.com" crossorigin>
|
||||
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com" >
|
||||
<link rel="dns-prefetch" href="https://fonts.googleapis.com" >
|
||||
|
||||
<link rel="preconnect" href="https://cdn.jsdelivr.net" >
|
||||
<link rel="dns-prefetch" href="https://cdn.jsdelivr.net" >
|
||||
|
||||
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Lato&family=Source+Sans+Pro:wght@400;600;700;900&display=swap">
|
||||
|
||||
|
||||
<!-- GA -->
|
||||
|
||||
|
||||
<!-- Bootstrap -->
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css">
|
||||
|
||||
<!-- Font Awesome -->
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.4.2/css/all.min.css">
|
||||
|
||||
<link rel="stylesheet" href="/assets/css/jekyll-theme-chirpy.css">
|
||||
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/loading-attribute-polyfill@2.1.1/dist/loading-attribute-polyfill.min.css">
|
||||
|
||||
|
||||
|
||||
<!-- Manific Popup -->
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/magnific-popup@1.1.0/dist/magnific-popup.min.css">
|
||||
|
||||
|
||||
<!-- JavaScript -->
|
||||
|
||||
|
||||
<!-- Switch the mode between dark and light. -->
|
||||
|
||||
<script type="text/javascript">
|
||||
class ModeToggle {
|
||||
static get MODE_KEY() {
|
||||
return 'mode';
|
||||
}
|
||||
static get MODE_ATTR() {
|
||||
return 'data-mode';
|
||||
}
|
||||
static get DARK_MODE() {
|
||||
return 'dark';
|
||||
}
|
||||
static get LIGHT_MODE() {
|
||||
return 'light';
|
||||
}
|
||||
static get ID() {
|
||||
return 'mode-toggle';
|
||||
}
|
||||
|
||||
constructor() {
|
||||
if (this.hasMode) {
|
||||
if (this.isDarkMode) {
|
||||
if (!this.isSysDarkPrefer) {
|
||||
this.setDark();
|
||||
}
|
||||
} else {
|
||||
if (this.isSysDarkPrefer) {
|
||||
this.setLight();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let self = this;
|
||||
|
||||
/* always follow the system prefers */
|
||||
this.sysDarkPrefers.addEventListener('change', () => {
|
||||
if (self.hasMode) {
|
||||
if (self.isDarkMode) {
|
||||
if (!self.isSysDarkPrefer) {
|
||||
self.setDark();
|
||||
}
|
||||
} else {
|
||||
if (self.isSysDarkPrefer) {
|
||||
self.setLight();
|
||||
}
|
||||
}
|
||||
|
||||
self.clearMode();
|
||||
}
|
||||
|
||||
self.notify();
|
||||
});
|
||||
} /* constructor() */
|
||||
|
||||
get sysDarkPrefers() {
|
||||
return window.matchMedia('(prefers-color-scheme: dark)');
|
||||
}
|
||||
|
||||
get isSysDarkPrefer() {
|
||||
return this.sysDarkPrefers.matches;
|
||||
}
|
||||
|
||||
get isDarkMode() {
|
||||
return this.mode === ModeToggle.DARK_MODE;
|
||||
}
|
||||
|
||||
get isLightMode() {
|
||||
return this.mode === ModeToggle.LIGHT_MODE;
|
||||
}
|
||||
|
||||
get hasMode() {
|
||||
return this.mode != null;
|
||||
}
|
||||
|
||||
get mode() {
|
||||
return sessionStorage.getItem(ModeToggle.MODE_KEY);
|
||||
}
|
||||
|
||||
/* get the current mode on screen */
|
||||
get modeStatus() {
|
||||
if (this.isDarkMode || (!this.hasMode && this.isSysDarkPrefer)) {
|
||||
return ModeToggle.DARK_MODE;
|
||||
} else {
|
||||
return ModeToggle.LIGHT_MODE;
|
||||
}
|
||||
}
|
||||
|
||||
setDark() {
|
||||
document.documentElement.setAttribute(ModeToggle.MODE_ATTR, ModeToggle.DARK_MODE);
|
||||
sessionStorage.setItem(ModeToggle.MODE_KEY, ModeToggle.DARK_MODE);
|
||||
}
|
||||
|
||||
setLight() {
|
||||
document.documentElement.setAttribute(ModeToggle.MODE_ATTR, ModeToggle.LIGHT_MODE);
|
||||
sessionStorage.setItem(ModeToggle.MODE_KEY, ModeToggle.LIGHT_MODE);
|
||||
}
|
||||
|
||||
clearMode() {
|
||||
document.documentElement.removeAttribute(ModeToggle.MODE_ATTR);
|
||||
sessionStorage.removeItem(ModeToggle.MODE_KEY);
|
||||
}
|
||||
|
||||
/* Notify another plugins that the theme mode has changed */
|
||||
notify() {
|
||||
window.postMessage(
|
||||
{
|
||||
direction: ModeToggle.ID,
|
||||
message: this.modeStatus
|
||||
},
|
||||
'*'
|
||||
);
|
||||
}
|
||||
|
||||
flipMode() {
|
||||
if (this.hasMode) {
|
||||
if (this.isSysDarkPrefer) {
|
||||
if (this.isLightMode) {
|
||||
this.clearMode();
|
||||
} else {
|
||||
this.setLight();
|
||||
}
|
||||
} else {
|
||||
if (this.isDarkMode) {
|
||||
this.clearMode();
|
||||
} else {
|
||||
this.setDark();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (this.isSysDarkPrefer) {
|
||||
this.setLight();
|
||||
} else {
|
||||
this.setDark();
|
||||
}
|
||||
}
|
||||
|
||||
this.notify();
|
||||
} /* flipMode() */
|
||||
} /* ModeToggle */
|
||||
|
||||
const modeToggle = new ModeToggle();
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<!-- A placeholder to allow defining custom metadata -->
|
||||
|
||||
</head>
|
||||
|
||||
|
||||
<body>
|
||||
<!-- The Side Bar -->
|
||||
|
||||
<aside aria-label="Sidebar" id="sidebar" class="d-flex flex-column align-items-end">
|
||||
<header class="profile-wrapper">
|
||||
<a href="/" id="avatar" class="rounded-circle">
|
||||
|
||||
</a>
|
||||
|
||||
<h1 class="site-title">
|
||||
<a href="/">AI-Takia</a>
|
||||
</h1>
|
||||
<p class="site-subtitle fst-italic mb-0">Latest Blogs on AI tech, Tools & SaaS</p>
|
||||
</header>
|
||||
<!-- .profile-wrapper -->
|
||||
|
||||
<nav class="flex-column flex-grow-1 w-100 ps-0">
|
||||
<ul class="nav">
|
||||
<!-- home -->
|
||||
<li class="nav-item">
|
||||
<a href="/" class="nav-link">
|
||||
<i class="fa-fw fas fa-home"></i>
|
||||
<span>HOME</span>
|
||||
</a>
|
||||
</li>
|
||||
<!-- the real tabs -->
|
||||
|
||||
<li class="nav-item">
|
||||
<a href="/categories/" class="nav-link">
|
||||
<i class="fa-fw fas fa-stream"></i>
|
||||
|
||||
|
||||
<span>CATEGORIES</span>
|
||||
</a>
|
||||
</li>
|
||||
<!-- .nav-item -->
|
||||
|
||||
<li class="nav-item">
|
||||
<a href="/tags/" class="nav-link">
|
||||
<i class="fa-fw fas fa-tags"></i>
|
||||
|
||||
|
||||
<span>TAGS</span>
|
||||
</a>
|
||||
</li>
|
||||
<!-- .nav-item -->
|
||||
|
||||
<li class="nav-item">
|
||||
<a href="/archives/" class="nav-link">
|
||||
<i class="fa-fw fas fa-archive"></i>
|
||||
|
||||
|
||||
<span>ARCHIVES</span>
|
||||
</a>
|
||||
</li>
|
||||
<!-- .nav-item -->
|
||||
|
||||
<li class="nav-item active">
|
||||
<a href="/about/" class="nav-link">
|
||||
<i class="fa-fw fas fa-info-circle"></i>
|
||||
|
||||
|
||||
<span>ABOUT</span>
|
||||
</a>
|
||||
</li>
|
||||
<!-- .nav-item -->
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
<div class="sidebar-bottom d-flex flex-wrap align-items-center w-100">
|
||||
|
||||
<button type="button" class="mode-toggle btn" aria-label="Switch Mode">
|
||||
<i class="fas fa-adjust"></i>
|
||||
</button>
|
||||
|
||||
|
||||
<span class="icon-border"></span>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a
|
||||
href="https://github.com/ajaysi"
|
||||
aria-label="github"
|
||||
|
||||
|
||||
|
||||
target="_blank"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
rel="noopener noreferrer"
|
||||
|
||||
>
|
||||
<i class="fab fa-github"></i>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a
|
||||
href="https://twitter.com/ajaysi"
|
||||
aria-label="twitter"
|
||||
|
||||
|
||||
|
||||
target="_blank"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
rel="noopener noreferrer"
|
||||
|
||||
>
|
||||
<i class="fa-brands fa-x-twitter"></i>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a
|
||||
href="javascript:location.href = 'mailto:' + ['example','domain.com'].join('@')"
|
||||
aria-label="email"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
>
|
||||
<i class="fas fa-envelope"></i>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a
|
||||
href=""
|
||||
aria-label="linkedin"
|
||||
|
||||
|
||||
|
||||
target="_blank"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
rel="noopener noreferrer"
|
||||
|
||||
>
|
||||
<i class="fab fa-linkedin"></i>
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
<!-- .sidebar-bottom -->
|
||||
</aside>
|
||||
<!-- #sidebar -->
|
||||
|
||||
|
||||
<div id="main-wrapper" class="d-flex justify-content-center">
|
||||
<div class="container d-flex flex-column px-xxl-5">
|
||||
<!-- The Top Bar -->
|
||||
|
||||
<header id="topbar-wrapper" aria-label="Top Bar">
|
||||
<div
|
||||
id="topbar"
|
||||
class="d-flex align-items-center justify-content-between px-lg-3 h-100"
|
||||
>
|
||||
<nav id="breadcrumb" aria-label="Breadcrumb">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span>
|
||||
<a href="/">
|
||||
Home
|
||||
</a>
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span>About</span>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</nav>
|
||||
<!-- endof #breadcrumb -->
|
||||
|
||||
<button type="button" id="sidebar-trigger" class="btn btn-link">
|
||||
<i class="fas fa-bars fa-fw"></i>
|
||||
</button>
|
||||
|
||||
<div id="topbar-title">
|
||||
About
|
||||
</div>
|
||||
|
||||
<button type="button" id="search-trigger" class="btn btn-link">
|
||||
<i class="fas fa-search fa-fw"></i>
|
||||
</button>
|
||||
|
||||
<search class="align-items-center ms-3 ms-lg-0">
|
||||
<i class="fas fa-search fa-fw"></i>
|
||||
<input
|
||||
class="form-control"
|
||||
id="search-input"
|
||||
type="search"
|
||||
aria-label="search"
|
||||
autocomplete="off"
|
||||
placeholder="Search..."
|
||||
>
|
||||
</search>
|
||||
<button type="button" class="btn btn-link text-decoration-none" id="search-cancel">Cancel</button>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
|
||||
<div class="row flex-grow-1">
|
||||
<main aria-label="Main Content" class="col-12 col-lg-11 col-xl-9 px-md-4">
|
||||
|
||||
<!-- Refactor the HTML structure -->
|
||||
|
||||
|
||||
|
||||
<!--
|
||||
In order to allow a wide table to scroll horizontally,
|
||||
we suround the markdown table with `<div class="table-wrapper">` and `</div>`
|
||||
-->
|
||||
|
||||
|
||||
|
||||
<!--
|
||||
Fixed kramdown code highlight rendering:
|
||||
https://github.com/penibelst/jekyll-compress-html/issues/101
|
||||
https://github.com/penibelst/jekyll-compress-html/issues/71#issuecomment-188144901
|
||||
-->
|
||||
|
||||
|
||||
|
||||
<!-- Change the icon of checkbox -->
|
||||
|
||||
|
||||
|
||||
<!-- Handle images -->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Add header for code snippets -->
|
||||
|
||||
|
||||
|
||||
<!-- Create heading anchors -->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- return -->
|
||||
|
||||
|
||||
|
||||
|
||||
<article class="px-1">
|
||||
|
||||
|
||||
|
||||
<h1 class="dynamic-title">
|
||||
About
|
||||
</h1>
|
||||
<div class="content">
|
||||
<blockquote class="prompt-tip">
|
||||
<p>Add Markdown syntax content to file <code class="language-plaintext filepath highlighter-rouge">_tabs/about.md</code> and it will show up on this page.</p>
|
||||
</blockquote>
|
||||
|
||||
</div>
|
||||
|
||||
</article>
|
||||
|
||||
|
||||
|
||||
</main>
|
||||
|
||||
<!-- panel -->
|
||||
<aside aria-label="Panel" id="panel-wrapper" class="col-xl-3 ps-2 mb-5 text-muted">
|
||||
<div class="access">
|
||||
<!-- Get the last 5 posts from lastmod list. -->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- The trending tags list -->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<section>
|
||||
<h2 class="panel-heading">Trending Tags</h2>
|
||||
<div class="d-flex flex-wrap mt-3 mb-1 me-3">
|
||||
|
||||
|
||||
<a class="post-tag btn btn-outline-primary" href="/tags/getting-started/">getting started</a>
|
||||
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</aside>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<!-- tail -->
|
||||
<div id="tail-wrapper" class="col-12 col-lg-11 col-xl-9 px-md-4">
|
||||
|
||||
|
||||
<!-- The Footer -->
|
||||
|
||||
<footer
|
||||
aria-label="Site Info"
|
||||
class="
|
||||
d-flex flex-column justify-content-center text-muted
|
||||
flex-lg-row justify-content-lg-between align-items-lg-center pb-lg-3
|
||||
"
|
||||
>
|
||||
<p>
|
||||
©
|
||||
<time>2023</time>
|
||||
<a href="https://twitter.com/username">ajaysi</a>.
|
||||
|
||||
<span
|
||||
data-bs-toggle="tooltip"
|
||||
data-bs-placement="top"
|
||||
title="Except where otherwise noted, the blog posts on this site are licensed under the Creative Commons Attribution 4.0 International (CC BY 4.0) License by the author."
|
||||
>Some rights reserved.</span>
|
||||
|
||||
</p>
|
||||
|
||||
<p>Using the <a href="https://github.com/cotes2020/jekyll-theme-chirpy" target="_blank" rel="noopener">Chirpy</a> theme for <a href="https://jekyllrb.com" target="_blank" rel="noopener">Jekyll</a>
|
||||
</p>
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- The Search results -->
|
||||
|
||||
<div id="search-result-wrapper" class="d-flex justify-content-center unloaded">
|
||||
<div class="col-11 content">
|
||||
<div id="search-hints">
|
||||
<!-- The trending tags list -->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<section>
|
||||
<h2 class="panel-heading">Trending Tags</h2>
|
||||
<div class="d-flex flex-wrap mt-3 mb-1 me-3">
|
||||
|
||||
|
||||
<a class="post-tag btn btn-outline-primary" href="/tags/getting-started/">getting started</a>
|
||||
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
<div id="search-results" class="d-flex flex-wrap justify-content-center text-muted mt-3"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<aside aria-label="Scroll to Top">
|
||||
<button id="back-to-top" type="button" class="btn btn-lg btn-box-shadow">
|
||||
<i class="fas fa-angle-up"></i>
|
||||
</button>
|
||||
</aside>
|
||||
</div>
|
||||
|
||||
<div id="mask"></div>
|
||||
|
||||
|
||||
<aside
|
||||
id="notification"
|
||||
class="toast"
|
||||
role="alert"
|
||||
aria-live="assertive"
|
||||
aria-atomic="true"
|
||||
data-bs-animation="true"
|
||||
data-bs-autohide="false"
|
||||
>
|
||||
<div class="toast-header">
|
||||
<button
|
||||
type="button"
|
||||
class="btn-close ms-auto"
|
||||
data-bs-dismiss="toast"
|
||||
aria-label="Close"
|
||||
></button>
|
||||
</div>
|
||||
<div class="toast-body text-center pt-0">
|
||||
<p class="px-2 mb-3">A new version of content is available.</p>
|
||||
<button type="button" class="btn btn-primary" aria-label="Update">
|
||||
Update
|
||||
</button>
|
||||
</div>
|
||||
</aside>
|
||||
|
||||
|
||||
|
||||
<!-- JavaScripts -->
|
||||
|
||||
<!-- JS selector for site. -->
|
||||
|
||||
<!-- commons -->
|
||||
|
||||
|
||||
|
||||
<!-- layout specified -->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- image lazy-loading & popup & clipboard -->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/combine/npm/jquery@3.7.1/dist/jquery.min.js,npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js,npm/simple-jekyll-search@1.10.0/dest/simple-jekyll-search.min.js,npm/loading-attribute-polyfill@2.1.1/dist/loading-attribute-polyfill.umd.min.js,npm/magnific-popup@1.1.0/dist/jquery.magnific-popup.min.js,npm/clipboard@2.0.11/dist/clipboard.min.js"></script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script defer src="/assets/js/dist/page.min.js"></script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!--
|
||||
Jekyll Simple Search loader
|
||||
See: <https://github.com/christian-fei/Simple-Jekyll-Search>
|
||||
-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
/* Note: dependent library will be loaded in `js-selector.html` */
|
||||
SimpleJekyllSearch({
|
||||
searchInput: document.getElementById('search-input'),
|
||||
resultsContainer: document.getElementById('search-results'),
|
||||
json: '/assets/js/data/search.json',
|
||||
searchResultTemplate: ' <article class="px-1 px-sm-2 px-lg-4 px-xl-0"> <header> <h2><a href="{url}">{title}</a></h2> <div class="post-meta d-flex flex-column flex-sm-row text-muted mt-1 mb-1"> {categories} {tags} </div> </header> <p>{snippet}</p> </article>',
|
||||
noResultsText: '<p class="mt-5"></p>',
|
||||
templateMiddleware: function(prop, value, template) {
|
||||
if (prop === 'categories') {
|
||||
if (value === '') {
|
||||
return `${value}`;
|
||||
} else {
|
||||
return `<div class="me-sm-4"><i class="far fa-folder fa-fw"></i>${value}</div>`;
|
||||
}
|
||||
}
|
||||
|
||||
if (prop === 'tags') {
|
||||
if (value === '') {
|
||||
return `${value}`;
|
||||
} else {
|
||||
return `<div><i class="fa fa-tag fa-fw"></i>${value}</div>`;
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
43
pseo_website/_site/app.js
Normal file
@@ -0,0 +1,43 @@
|
||||
const $notification = $('#notification');
|
||||
const $btnRefresh = $('#notification .toast-body>button');
|
||||
|
||||
if ('serviceWorker' in navigator) {
|
||||
/* Registering Service Worker */
|
||||
navigator.serviceWorker.register('/sw.js')
|
||||
.then(registration => {
|
||||
|
||||
/* in case the user ignores the notification */
|
||||
if (registration.waiting) {
|
||||
$notification.toast('show');
|
||||
}
|
||||
|
||||
registration.addEventListener('updatefound', () => {
|
||||
registration.installing.addEventListener('statechange', () => {
|
||||
if (registration.waiting) {
|
||||
if (navigator.serviceWorker.controller) {
|
||||
$notification.toast('show');
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
$btnRefresh.click(() => {
|
||||
if (registration.waiting) {
|
||||
registration.waiting.postMessage('SKIP_WAITING');
|
||||
}
|
||||
$notification.toast('hide');
|
||||
});
|
||||
});
|
||||
|
||||
let refreshing = false;
|
||||
|
||||
/* Detect controller change and refresh all the opened tabs */
|
||||
navigator.serviceWorker.addEventListener('controllerchange', () => {
|
||||
if (!refreshing) {
|
||||
window.location.reload();
|
||||
refreshing = true;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
911
pseo_website/_site/archives/index.html
Normal file
@@ -0,0 +1,911 @@
|
||||
<!doctype html>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- `site.alt_lang` can specify a language different from the UI -->
|
||||
<html lang="en" >
|
||||
<!-- The Head -->
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<meta name="theme-color" media="(prefers-color-scheme: light)" content="#f7f7f7">
|
||||
<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#1b1b1e">
|
||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
|
||||
<meta
|
||||
name="viewport"
|
||||
content="width=device-width, user-scalable=no initial-scale=1, shrink-to-fit=no, viewport-fit=cover"
|
||||
>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Begin Jekyll SEO tag v2.8.0 -->
|
||||
<meta name="generator" content="Jekyll v4.3.2" />
|
||||
<meta property="og:title" content="Archives" />
|
||||
<meta property="og:locale" content="en" />
|
||||
<meta name="description" content="Begginer friendly AI technologies simplified & explained. Know & boost productivity with latest AI tools." />
|
||||
<meta property="og:description" content="Begginer friendly AI technologies simplified & explained. Know & boost productivity with latest AI tools." />
|
||||
<link rel="canonical" href="http://localhost:4000/archives/" />
|
||||
<meta property="og:url" content="http://localhost:4000/archives/" />
|
||||
<meta property="og:site_name" content="AI-Takia" />
|
||||
<meta property="og:type" content="article" />
|
||||
<meta property="article:published_time" content="2023-10-22T14:10:02+05:30" />
|
||||
<meta name="twitter:card" content="summary" />
|
||||
<meta property="twitter:title" content="Archives" />
|
||||
<meta name="twitter:site" content="@ajaysi" />
|
||||
<script type="application/ld+json">
|
||||
{"@context":"https://schema.org","@type":"BlogPosting","dateModified":"2023-10-22T14:10:02+05:30","datePublished":"2023-10-22T14:10:02+05:30","description":"Begginer friendly AI technologies simplified & explained. Know & boost productivity with latest AI tools.","headline":"Archives","mainEntityOfPage":{"@type":"WebPage","@id":"http://localhost:4000/archives/"},"url":"http://localhost:4000/archives/"}</script>
|
||||
<!-- End Jekyll SEO tag -->
|
||||
|
||||
|
||||
|
||||
<title>Archives | AI-Takia
|
||||
</title>
|
||||
|
||||
<!--
|
||||
The Favicons for Web, Android, Microsoft, and iOS (iPhone and iPad) Apps
|
||||
Generated by: https://realfavicongenerator.net/
|
||||
-->
|
||||
|
||||
|
||||
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/assets/img/favicons/apple-touch-icon.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="/assets/img/favicons/favicon-32x32.png">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="/assets/img/favicons/favicon-16x16.png">
|
||||
<link rel="manifest" href="/assets/img/favicons/site.webmanifest">
|
||||
<link rel="shortcut icon" href="/assets/img/favicons/favicon.ico">
|
||||
<meta name="apple-mobile-web-app-title" content="AI-Takia">
|
||||
<meta name="application-name" content="AI-Takia">
|
||||
<meta name="msapplication-TileColor" content="#da532c">
|
||||
<meta name="msapplication-config" content="/assets/img/favicons/browserconfig.xml">
|
||||
<meta name="theme-color" content="#ffffff">
|
||||
|
||||
|
||||
|
||||
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com" >
|
||||
<link rel="dns-prefetch" href="https://fonts.googleapis.com" >
|
||||
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link rel="dns-prefetch" href="https://fonts.gstatic.com" crossorigin>
|
||||
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com" >
|
||||
<link rel="dns-prefetch" href="https://fonts.googleapis.com" >
|
||||
|
||||
<link rel="preconnect" href="https://cdn.jsdelivr.net" >
|
||||
<link rel="dns-prefetch" href="https://cdn.jsdelivr.net" >
|
||||
|
||||
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Lato&family=Source+Sans+Pro:wght@400;600;700;900&display=swap">
|
||||
|
||||
|
||||
<!-- GA -->
|
||||
|
||||
|
||||
<!-- Bootstrap -->
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css">
|
||||
|
||||
<!-- Font Awesome -->
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.4.2/css/all.min.css">
|
||||
|
||||
<link rel="stylesheet" href="/assets/css/jekyll-theme-chirpy.css">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- JavaScript -->
|
||||
|
||||
|
||||
<!-- Switch the mode between dark and light. -->
|
||||
|
||||
<script type="text/javascript">
|
||||
class ModeToggle {
|
||||
static get MODE_KEY() {
|
||||
return 'mode';
|
||||
}
|
||||
static get MODE_ATTR() {
|
||||
return 'data-mode';
|
||||
}
|
||||
static get DARK_MODE() {
|
||||
return 'dark';
|
||||
}
|
||||
static get LIGHT_MODE() {
|
||||
return 'light';
|
||||
}
|
||||
static get ID() {
|
||||
return 'mode-toggle';
|
||||
}
|
||||
|
||||
constructor() {
|
||||
if (this.hasMode) {
|
||||
if (this.isDarkMode) {
|
||||
if (!this.isSysDarkPrefer) {
|
||||
this.setDark();
|
||||
}
|
||||
} else {
|
||||
if (this.isSysDarkPrefer) {
|
||||
this.setLight();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let self = this;
|
||||
|
||||
/* always follow the system prefers */
|
||||
this.sysDarkPrefers.addEventListener('change', () => {
|
||||
if (self.hasMode) {
|
||||
if (self.isDarkMode) {
|
||||
if (!self.isSysDarkPrefer) {
|
||||
self.setDark();
|
||||
}
|
||||
} else {
|
||||
if (self.isSysDarkPrefer) {
|
||||
self.setLight();
|
||||
}
|
||||
}
|
||||
|
||||
self.clearMode();
|
||||
}
|
||||
|
||||
self.notify();
|
||||
});
|
||||
} /* constructor() */
|
||||
|
||||
get sysDarkPrefers() {
|
||||
return window.matchMedia('(prefers-color-scheme: dark)');
|
||||
}
|
||||
|
||||
get isSysDarkPrefer() {
|
||||
return this.sysDarkPrefers.matches;
|
||||
}
|
||||
|
||||
get isDarkMode() {
|
||||
return this.mode === ModeToggle.DARK_MODE;
|
||||
}
|
||||
|
||||
get isLightMode() {
|
||||
return this.mode === ModeToggle.LIGHT_MODE;
|
||||
}
|
||||
|
||||
get hasMode() {
|
||||
return this.mode != null;
|
||||
}
|
||||
|
||||
get mode() {
|
||||
return sessionStorage.getItem(ModeToggle.MODE_KEY);
|
||||
}
|
||||
|
||||
/* get the current mode on screen */
|
||||
get modeStatus() {
|
||||
if (this.isDarkMode || (!this.hasMode && this.isSysDarkPrefer)) {
|
||||
return ModeToggle.DARK_MODE;
|
||||
} else {
|
||||
return ModeToggle.LIGHT_MODE;
|
||||
}
|
||||
}
|
||||
|
||||
setDark() {
|
||||
document.documentElement.setAttribute(ModeToggle.MODE_ATTR, ModeToggle.DARK_MODE);
|
||||
sessionStorage.setItem(ModeToggle.MODE_KEY, ModeToggle.DARK_MODE);
|
||||
}
|
||||
|
||||
setLight() {
|
||||
document.documentElement.setAttribute(ModeToggle.MODE_ATTR, ModeToggle.LIGHT_MODE);
|
||||
sessionStorage.setItem(ModeToggle.MODE_KEY, ModeToggle.LIGHT_MODE);
|
||||
}
|
||||
|
||||
clearMode() {
|
||||
document.documentElement.removeAttribute(ModeToggle.MODE_ATTR);
|
||||
sessionStorage.removeItem(ModeToggle.MODE_KEY);
|
||||
}
|
||||
|
||||
/* Notify another plugins that the theme mode has changed */
|
||||
notify() {
|
||||
window.postMessage(
|
||||
{
|
||||
direction: ModeToggle.ID,
|
||||
message: this.modeStatus
|
||||
},
|
||||
'*'
|
||||
);
|
||||
}
|
||||
|
||||
flipMode() {
|
||||
if (this.hasMode) {
|
||||
if (this.isSysDarkPrefer) {
|
||||
if (this.isLightMode) {
|
||||
this.clearMode();
|
||||
} else {
|
||||
this.setLight();
|
||||
}
|
||||
} else {
|
||||
if (this.isDarkMode) {
|
||||
this.clearMode();
|
||||
} else {
|
||||
this.setDark();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (this.isSysDarkPrefer) {
|
||||
this.setLight();
|
||||
} else {
|
||||
this.setDark();
|
||||
}
|
||||
}
|
||||
|
||||
this.notify();
|
||||
} /* flipMode() */
|
||||
} /* ModeToggle */
|
||||
|
||||
const modeToggle = new ModeToggle();
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<!-- A placeholder to allow defining custom metadata -->
|
||||
|
||||
</head>
|
||||
|
||||
|
||||
<body>
|
||||
<!-- The Side Bar -->
|
||||
|
||||
<aside aria-label="Sidebar" id="sidebar" class="d-flex flex-column align-items-end">
|
||||
<header class="profile-wrapper">
|
||||
<a href="/" id="avatar" class="rounded-circle">
|
||||
|
||||
</a>
|
||||
|
||||
<h1 class="site-title">
|
||||
<a href="/">AI-Takia</a>
|
||||
</h1>
|
||||
<p class="site-subtitle fst-italic mb-0">Latest Blogs on AI tech, Tools & SaaS</p>
|
||||
</header>
|
||||
<!-- .profile-wrapper -->
|
||||
|
||||
<nav class="flex-column flex-grow-1 w-100 ps-0">
|
||||
<ul class="nav">
|
||||
<!-- home -->
|
||||
<li class="nav-item">
|
||||
<a href="/" class="nav-link">
|
||||
<i class="fa-fw fas fa-home"></i>
|
||||
<span>HOME</span>
|
||||
</a>
|
||||
</li>
|
||||
<!-- the real tabs -->
|
||||
|
||||
<li class="nav-item">
|
||||
<a href="/categories/" class="nav-link">
|
||||
<i class="fa-fw fas fa-stream"></i>
|
||||
|
||||
|
||||
<span>CATEGORIES</span>
|
||||
</a>
|
||||
</li>
|
||||
<!-- .nav-item -->
|
||||
|
||||
<li class="nav-item">
|
||||
<a href="/tags/" class="nav-link">
|
||||
<i class="fa-fw fas fa-tags"></i>
|
||||
|
||||
|
||||
<span>TAGS</span>
|
||||
</a>
|
||||
</li>
|
||||
<!-- .nav-item -->
|
||||
|
||||
<li class="nav-item active">
|
||||
<a href="/archives/" class="nav-link">
|
||||
<i class="fa-fw fas fa-archive"></i>
|
||||
|
||||
|
||||
<span>ARCHIVES</span>
|
||||
</a>
|
||||
</li>
|
||||
<!-- .nav-item -->
|
||||
|
||||
<li class="nav-item">
|
||||
<a href="/about/" class="nav-link">
|
||||
<i class="fa-fw fas fa-info-circle"></i>
|
||||
|
||||
|
||||
<span>ABOUT</span>
|
||||
</a>
|
||||
</li>
|
||||
<!-- .nav-item -->
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
<div class="sidebar-bottom d-flex flex-wrap align-items-center w-100">
|
||||
|
||||
<button type="button" class="mode-toggle btn" aria-label="Switch Mode">
|
||||
<i class="fas fa-adjust"></i>
|
||||
</button>
|
||||
|
||||
|
||||
<span class="icon-border"></span>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a
|
||||
href="https://github.com/ajaysi"
|
||||
aria-label="github"
|
||||
|
||||
|
||||
|
||||
target="_blank"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
rel="noopener noreferrer"
|
||||
|
||||
>
|
||||
<i class="fab fa-github"></i>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a
|
||||
href="https://twitter.com/ajaysi"
|
||||
aria-label="twitter"
|
||||
|
||||
|
||||
|
||||
target="_blank"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
rel="noopener noreferrer"
|
||||
|
||||
>
|
||||
<i class="fa-brands fa-x-twitter"></i>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a
|
||||
href="javascript:location.href = 'mailto:' + ['example','domain.com'].join('@')"
|
||||
aria-label="email"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
>
|
||||
<i class="fas fa-envelope"></i>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a
|
||||
href=""
|
||||
aria-label="linkedin"
|
||||
|
||||
|
||||
|
||||
target="_blank"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
rel="noopener noreferrer"
|
||||
|
||||
>
|
||||
<i class="fab fa-linkedin"></i>
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
<!-- .sidebar-bottom -->
|
||||
</aside>
|
||||
<!-- #sidebar -->
|
||||
|
||||
|
||||
<div id="main-wrapper" class="d-flex justify-content-center">
|
||||
<div class="container d-flex flex-column px-xxl-5">
|
||||
<!-- The Top Bar -->
|
||||
|
||||
<header id="topbar-wrapper" aria-label="Top Bar">
|
||||
<div
|
||||
id="topbar"
|
||||
class="d-flex align-items-center justify-content-between px-lg-3 h-100"
|
||||
>
|
||||
<nav id="breadcrumb" aria-label="Breadcrumb">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span>
|
||||
<a href="/">
|
||||
Home
|
||||
</a>
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span>Archives</span>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</nav>
|
||||
<!-- endof #breadcrumb -->
|
||||
|
||||
<button type="button" id="sidebar-trigger" class="btn btn-link">
|
||||
<i class="fas fa-bars fa-fw"></i>
|
||||
</button>
|
||||
|
||||
<div id="topbar-title">
|
||||
Archives
|
||||
</div>
|
||||
|
||||
<button type="button" id="search-trigger" class="btn btn-link">
|
||||
<i class="fas fa-search fa-fw"></i>
|
||||
</button>
|
||||
|
||||
<search class="align-items-center ms-3 ms-lg-0">
|
||||
<i class="fas fa-search fa-fw"></i>
|
||||
<input
|
||||
class="form-control"
|
||||
id="search-input"
|
||||
type="search"
|
||||
aria-label="search"
|
||||
autocomplete="off"
|
||||
placeholder="Search..."
|
||||
>
|
||||
</search>
|
||||
<button type="button" class="btn btn-link text-decoration-none" id="search-cancel">Cancel</button>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
|
||||
<div class="row flex-grow-1">
|
||||
<main aria-label="Main Content" class="col-12 col-lg-11 col-xl-9 px-md-4">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<article class="px-1">
|
||||
|
||||
|
||||
|
||||
<h1 class="dynamic-title">
|
||||
Archives
|
||||
</h1>
|
||||
<div class="content">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div id="archives" class="pl-xl-3">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<time class="year lead d-block">2023</time>
|
||||
<ul class="list-unstyled">
|
||||
|
||||
|
||||
|
||||
|
||||
<li>
|
||||
|
||||
<span class="date day" data-ts="1697913000" data-df="DD">22</span>
|
||||
<span class="date month small text-muted ms-1" data-ts="1697913000" data-df="MMM">
|
||||
Oct
|
||||
</span>
|
||||
<a href="/posts/This-is-Blog-Title/">This Is Blog Title</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
<time class="year lead d-block">2019</time>
|
||||
<ul class="list-unstyled">
|
||||
|
||||
|
||||
|
||||
|
||||
<li>
|
||||
|
||||
<span class="date day" data-ts="1565355300" data-df="DD">09</span>
|
||||
<span class="date month small text-muted ms-1" data-ts="1565355300" data-df="MMM">
|
||||
Aug
|
||||
</span>
|
||||
<a href="/posts/mansarovar-trek/">Mansarovar Trek</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li>
|
||||
|
||||
<span class="date day" data-ts="1565355300" data-df="DD">09</span>
|
||||
<span class="date month small text-muted ms-1" data-ts="1565355300" data-df="MMM">
|
||||
Aug
|
||||
</span>
|
||||
<a href="/posts/getting-started/">Getting Started</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</article>
|
||||
|
||||
|
||||
</main>
|
||||
|
||||
<!-- panel -->
|
||||
<aside aria-label="Panel" id="panel-wrapper" class="col-xl-3 ps-2 mb-5 text-muted">
|
||||
<div class="access">
|
||||
<!-- Get the last 5 posts from lastmod list. -->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- The trending tags list -->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<section>
|
||||
<h2 class="panel-heading">Trending Tags</h2>
|
||||
<div class="d-flex flex-wrap mt-3 mb-1 me-3">
|
||||
|
||||
|
||||
<a class="post-tag btn btn-outline-primary" href="/tags/getting-started/">getting started</a>
|
||||
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</aside>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<!-- tail -->
|
||||
<div id="tail-wrapper" class="col-12 col-lg-11 col-xl-9 px-md-4">
|
||||
|
||||
|
||||
<!-- The Footer -->
|
||||
|
||||
<footer
|
||||
aria-label="Site Info"
|
||||
class="
|
||||
d-flex flex-column justify-content-center text-muted
|
||||
flex-lg-row justify-content-lg-between align-items-lg-center pb-lg-3
|
||||
"
|
||||
>
|
||||
<p>
|
||||
©
|
||||
<time>2023</time>
|
||||
<a href="https://twitter.com/username">ajaysi</a>.
|
||||
|
||||
<span
|
||||
data-bs-toggle="tooltip"
|
||||
data-bs-placement="top"
|
||||
title="Except where otherwise noted, the blog posts on this site are licensed under the Creative Commons Attribution 4.0 International (CC BY 4.0) License by the author."
|
||||
>Some rights reserved.</span>
|
||||
|
||||
</p>
|
||||
|
||||
<p>Using the <a href="https://github.com/cotes2020/jekyll-theme-chirpy" target="_blank" rel="noopener">Chirpy</a> theme for <a href="https://jekyllrb.com" target="_blank" rel="noopener">Jekyll</a>
|
||||
</p>
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- The Search results -->
|
||||
|
||||
<div id="search-result-wrapper" class="d-flex justify-content-center unloaded">
|
||||
<div class="col-11 content">
|
||||
<div id="search-hints">
|
||||
<!-- The trending tags list -->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<section>
|
||||
<h2 class="panel-heading">Trending Tags</h2>
|
||||
<div class="d-flex flex-wrap mt-3 mb-1 me-3">
|
||||
|
||||
|
||||
<a class="post-tag btn btn-outline-primary" href="/tags/getting-started/">getting started</a>
|
||||
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
<div id="search-results" class="d-flex flex-wrap justify-content-center text-muted mt-3"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<aside aria-label="Scroll to Top">
|
||||
<button id="back-to-top" type="button" class="btn btn-lg btn-box-shadow">
|
||||
<i class="fas fa-angle-up"></i>
|
||||
</button>
|
||||
</aside>
|
||||
</div>
|
||||
|
||||
<div id="mask"></div>
|
||||
|
||||
|
||||
<aside
|
||||
id="notification"
|
||||
class="toast"
|
||||
role="alert"
|
||||
aria-live="assertive"
|
||||
aria-atomic="true"
|
||||
data-bs-animation="true"
|
||||
data-bs-autohide="false"
|
||||
>
|
||||
<div class="toast-header">
|
||||
<button
|
||||
type="button"
|
||||
class="btn-close ms-auto"
|
||||
data-bs-dismiss="toast"
|
||||
aria-label="Close"
|
||||
></button>
|
||||
</div>
|
||||
<div class="toast-body text-center pt-0">
|
||||
<p class="px-2 mb-3">A new version of content is available.</p>
|
||||
<button type="button" class="btn btn-primary" aria-label="Update">
|
||||
Update
|
||||
</button>
|
||||
</div>
|
||||
</aside>
|
||||
|
||||
|
||||
|
||||
<!-- JavaScripts -->
|
||||
|
||||
<!-- JS selector for site. -->
|
||||
|
||||
<!-- commons -->
|
||||
|
||||
|
||||
|
||||
<!-- layout specified -->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/combine/npm/jquery@3.7.1/dist/jquery.min.js,npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js,npm/simple-jekyll-search@1.10.0/dest/simple-jekyll-search.min.js,npm/dayjs@1.11.10/dayjs.min.js,npm/dayjs@1.11.10/locale/en.min.js,npm/dayjs@1.11.10/plugin/relativeTime.min.js,npm/dayjs@1.11.10/plugin/localizedFormat.min.js"></script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script defer src="/assets/js/dist/misc.min.js"></script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!--
|
||||
Jekyll Simple Search loader
|
||||
See: <https://github.com/christian-fei/Simple-Jekyll-Search>
|
||||
-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
/* Note: dependent library will be loaded in `js-selector.html` */
|
||||
SimpleJekyllSearch({
|
||||
searchInput: document.getElementById('search-input'),
|
||||
resultsContainer: document.getElementById('search-results'),
|
||||
json: '/assets/js/data/search.json',
|
||||
searchResultTemplate: ' <article class="px-1 px-sm-2 px-lg-4 px-xl-0"> <header> <h2><a href="{url}">{title}</a></h2> <div class="post-meta d-flex flex-column flex-sm-row text-muted mt-1 mb-1"> {categories} {tags} </div> </header> <p>{snippet}</p> </article>',
|
||||
noResultsText: '<p class="mt-5"></p>',
|
||||
templateMiddleware: function(prop, value, template) {
|
||||
if (prop === 'categories') {
|
||||
if (value === '') {
|
||||
return `${value}`;
|
||||
} else {
|
||||
return `<div class="me-sm-4"><i class="far fa-folder fa-fw"></i>${value}</div>`;
|
||||
}
|
||||
}
|
||||
|
||||
if (prop === 'tags') {
|
||||
if (value === '') {
|
||||
return `${value}`;
|
||||
} else {
|
||||
return `<div><i class="fa fa-tag fa-fw"></i>${value}</div>`;
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
1
pseo_website/_site/assets/css/jekyll-theme-chirpy.css
Normal file
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 61 KiB |
BIN
pseo_website/_site/assets/img/favicons/apple-touch-icon.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
10
pseo_website/_site/assets/img/favicons/browserconfig.xml
Normal file
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<browserconfig>
|
||||
<msapplication>
|
||||
<tile>
|
||||
<square150x150logo src="/assets/img/favicons/mstile-150x150.png" />
|
||||
<TileColor>#da532c</TileColor>
|
||||
</tile>
|
||||
</msapplication>
|
||||
</browserconfig>
|
||||
|
||||
BIN
pseo_website/_site/assets/img/favicons/favicon-16x16.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
pseo_website/_site/assets/img/favicons/favicon-32x32.png
Normal file
|
After Width: | Height: | Size: 2.3 KiB |
BIN
pseo_website/_site/assets/img/favicons/favicon.ico
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
pseo_website/_site/assets/img/favicons/mstile-150x150.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
23
pseo_website/_site/assets/img/favicons/site.webmanifest
Normal file
@@ -0,0 +1,23 @@
|
||||
|
||||
|
||||
{
|
||||
"name": "AI-Takia",
|
||||
"short_name": "AI-Takia",
|
||||
"description": "Begginer friendly AI technologies simplified & explained. Know & boost productivity with latest AI tools.",
|
||||
"icons": [
|
||||
{
|
||||
"src": "/assets/img/favicons/android-chrome-192x192.png",
|
||||
"sizes": "192x192",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/assets/img/favicons/android-chrome-512x512.png",
|
||||
"sizes": "512x512",
|
||||
"type": "image/png"
|
||||
}],
|
||||
"start_url": "/index.html",
|
||||
"theme_color": "#2a1e6b",
|
||||
"background_color": "#ffffff",
|
||||
"display": "fullscreen"
|
||||
}
|
||||
|
||||
11
pseo_website/_site/assets/index.html
Normal file
@@ -0,0 +1,11 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en-US">
|
||||
<meta charset="utf-8">
|
||||
<title>Redirecting…</title>
|
||||
<link rel="canonical" href="http://localhost:4000/404.html">
|
||||
<script>location="http://localhost:4000/404.html"</script>
|
||||
<meta http-equiv="refresh" content="0; url=http://localhost:4000/404.html">
|
||||
<meta name="robots" content="noindex">
|
||||
<h1>Redirecting…</h1>
|
||||
<a href="http://localhost:4000/404.html">Click here if you are not redirected.</a>
|
||||
</html>
|
||||
55
pseo_website/_site/assets/js/data/search.json
Normal file
57
pseo_website/_site/assets/js/data/swcache.js
Normal file
@@ -0,0 +1,57 @@
|
||||
const resource = [
|
||||
/* --- CSS --- */
|
||||
'/assets/css/jekyll-theme-chirpy.css',
|
||||
|
||||
/* --- PWA --- */
|
||||
'/app.js',
|
||||
'/sw.js',
|
||||
|
||||
/* --- HTML --- */
|
||||
'/index.html',
|
||||
'/404.html',
|
||||
|
||||
|
||||
'/categories/',
|
||||
|
||||
'/tags/',
|
||||
|
||||
'/archives/',
|
||||
|
||||
'/about/',
|
||||
|
||||
|
||||
/* --- Favicons & compressed JS --- */
|
||||
|
||||
|
||||
'/assets/img/favicons/android-chrome-192x192.png',
|
||||
'/assets/img/favicons/android-chrome-512x512.png',
|
||||
'/assets/img/favicons/apple-touch-icon.png',
|
||||
'/assets/img/favicons/favicon-16x16.png',
|
||||
'/assets/img/favicons/favicon-32x32.png',
|
||||
'/assets/img/favicons/favicon.ico',
|
||||
'/assets/img/favicons/mstile-150x150.png',
|
||||
'/assets/js/dist/categories.min.js',
|
||||
'/assets/js/dist/commons.min.js',
|
||||
'/assets/js/dist/home.min.js',
|
||||
'/assets/js/dist/misc.min.js',
|
||||
'/assets/js/dist/page.min.js',
|
||||
'/assets/js/dist/post.min.js'
|
||||
];
|
||||
|
||||
/* The request url with below domain will be cached */
|
||||
const allowedDomains = [
|
||||
|
||||
|
||||
'localhost:4000',
|
||||
|
||||
|
||||
|
||||
'fonts.gstatic.com',
|
||||
'fonts.googleapis.com',
|
||||
'cdn.jsdelivr.net',
|
||||
'polyfill.io'
|
||||
];
|
||||
|
||||
/* Requests that include the following path will be banned */
|
||||
const denyUrls = [];
|
||||
|
||||
4
pseo_website/_site/assets/js/dist/categories.min.js
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
/*!
|
||||
* Chirpy v6.2.3 | © 2019 Cotes Chung | MIT Licensed | https://github.com/cotes2020/jekyll-theme-chirpy/
|
||||
*/
|
||||
!function(){"use strict";function e(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function t(e,t){for(var r=0;r<t.length;r++){var o=t[r];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,i(o.key),o)}}function r(e,r,o){return r&&t(e.prototype,r),o&&t(e,o),Object.defineProperty(e,"prototype",{writable:!1}),e}function o(e,t,r){return(t=i(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function n(e){return function(e){if(Array.isArray(e))return a(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return a(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return a(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function a(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,o=new Array(t);r<t;r++)o[r]=e[r];return o}function i(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var o=r.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}var l=$(".mode-toggle");var s=$("body"),c="sidebar-display",u=function(){function t(){e(this,t)}return r(t,null,[{key:"toggle",value:function(){!1===t.isExpanded?s.attr(c,""):s.removeAttr(c),t.isExpanded=!t.isExpanded}}]),t}();o(u,"isExpanded",!1);var f=$("#sidebar-trigger"),d=$("#search-trigger"),p=$("#search-cancel"),b=$("#main-wrapper>.container>.row"),v=$("#topbar-title"),m=$("search"),g=$("#search-result-wrapper"),y=$("#search-results"),h=$("#search-input"),C=$("#search-hints"),w=$("html,body"),k="loaded",A="unloaded",S="input-focus",T="d-flex",j=function(){function t(){e(this,t)}return r(t,null,[{key:"on",value:function(){t.offset=window.scrollY,w.scrollTop(0)}},{key:"off",value:function(){w.scrollTop(t.offset)}}]),t}();o(j,"offset",0),o(j,"resultVisible",!1);var E=function(){function t(){e(this,t)}return r(t,null,[{key:"on",value:function(){f.addClass(A),v.addClass(A),d.addClass(A),m.addClass(T),p.addClass(k)}},{key:"off",value:function(){p.removeClass(k),m.removeClass(T),f.removeClass(A),v.removeClass(A),d.removeClass(A)}}]),t}(),O=function(){function t(){e(this,t)}return r(t,null,[{key:"on",value:function(){j.resultVisible||(j.on(),g.removeClass(A),b.addClass(A),j.resultVisible=!0)}},{key:"off",value:function(){j.resultVisible&&(y.empty(),C.hasClass(A)&&C.removeClass(A),g.addClass(A),b.removeClass(A),j.off(),h.val(""),j.resultVisible=!1)}}]),t}();function x(){return p.hasClass(k)}var P=$(".collapse");var V,I;$(".code-header>button").children().attr("class"),V=$(window),I=$("#back-to-top"),V.on("scroll",(function(){V.scrollTop()>50?I.fadeIn():I.fadeOut()})),I.on("click",(function(){V.scrollTop(0)})),n(document.querySelectorAll('[data-bs-toggle="tooltip"]')).map((function(e){return new bootstrap.Tooltip(e)})),0!==l.length&&l.off().on("click",(function(e){var t=$(e.target),r=t.prop("tagName")==="button".toUpperCase()?t:t.parent();modeToggle.flipMode(),r.trigger("blur")})),$("#sidebar-trigger").on("click",u.toggle),$("#mask").on("click",u.toggle),d.on("click",(function(){E.on(),O.on(),h.trigger("focus")})),p.on("click",(function(){E.off(),O.off()})),h.on("focus",(function(){m.addClass(S)})),h.on("focusout",(function(){m.removeClass(S)})),h.on("input",(function(){""===h.val()?x()?C.removeClass(A):O.off():(O.on(),x()&&C.addClass(A))})),P.on("hide.bs.collapse",(function(){var e="h_"+$(this).attr("id").substring(2);e&&($("#".concat(e," .far.fa-folder-open")).attr("class","far fa-folder fa-fw"),$("#".concat(e," i.fas")).addClass("rotate"),$("#".concat(e)).removeClass("hide-border-bottom"))})),P.on("show.bs.collapse",(function(){var e="h_"+$(this).attr("id").substring(2);e&&($("#".concat(e," .far.fa-folder")).attr("class","far fa-folder-open fa-fw"),$("#".concat(e," i.fas")).removeClass("rotate"),$("#".concat(e)).addClass("hide-border-bottom"))}))}();
|
||||
4
pseo_website/_site/assets/js/dist/commons.min.js
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
/*!
|
||||
* Chirpy v6.2.3 | © 2019 Cotes Chung | MIT Licensed | https://github.com/cotes2020/jekyll-theme-chirpy/
|
||||
*/
|
||||
!function(){"use strict";function e(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function t(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,i(n.key),n)}}function r(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function n(e,t,r){return(t=i(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e){return function(e){if(Array.isArray(e))return a(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return a(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return a(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function a(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function i(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}var l=$(".mode-toggle");var s=$("body"),u="sidebar-display",c=function(){function t(){e(this,t)}return r(t,null,[{key:"toggle",value:function(){!1===t.isExpanded?s.attr(u,""):s.removeAttr(u),t.isExpanded=!t.isExpanded}}]),t}();n(c,"isExpanded",!1);var f=$("#sidebar-trigger"),d=$("#search-trigger"),p=$("#search-cancel"),b=$("#main-wrapper>.container>.row"),m=$("#topbar-title"),v=$("search"),y=$("#search-result-wrapper"),g=$("#search-results"),h=$("#search-input"),C=$("#search-hints"),w=$("html,body"),k="loaded",A="unloaded",S="input-focus",T="d-flex",j=function(){function t(){e(this,t)}return r(t,null,[{key:"on",value:function(){t.offset=window.scrollY,w.scrollTop(0)}},{key:"off",value:function(){w.scrollTop(t.offset)}}]),t}();n(j,"offset",0),n(j,"resultVisible",!1);var E,O,x=function(){function t(){e(this,t)}return r(t,null,[{key:"on",value:function(){f.addClass(A),m.addClass(A),d.addClass(A),v.addClass(T),p.addClass(k)}},{key:"off",value:function(){p.removeClass(k),v.removeClass(T),f.removeClass(A),m.removeClass(A),d.removeClass(A)}}]),t}(),P=function(){function t(){e(this,t)}return r(t,null,[{key:"on",value:function(){j.resultVisible||(j.on(),y.removeClass(A),b.addClass(A),j.resultVisible=!0)}},{key:"off",value:function(){j.resultVisible&&(g.empty(),C.hasClass(A)&&C.removeClass(A),y.addClass(A),b.removeClass(A),j.off(),h.val(""),j.resultVisible=!1)}}]),t}();function V(){return p.hasClass(k)}E=$(window),O=$("#back-to-top"),E.on("scroll",(function(){E.scrollTop()>50?O.fadeIn():O.fadeOut()})),O.on("click",(function(){E.scrollTop(0)})),o(document.querySelectorAll('[data-bs-toggle="tooltip"]')).map((function(e){return new bootstrap.Tooltip(e)})),0!==l.length&&l.off().on("click",(function(e){var t=$(e.target),r=t.prop("tagName")==="button".toUpperCase()?t:t.parent();modeToggle.flipMode(),r.trigger("blur")})),$("#sidebar-trigger").on("click",c.toggle),$("#mask").on("click",c.toggle),d.on("click",(function(){x.on(),P.on(),h.trigger("focus")})),p.on("click",(function(){x.off(),P.off()})),h.on("focus",(function(){v.addClass(S)})),h.on("focusout",(function(){v.removeClass(S)})),h.on("input",(function(){""===h.val()?V()?C.removeClass(A):P.off():(P.on(),V()&&C.addClass(A))}))}();
|
||||
4
pseo_website/_site/assets/js/dist/home.min.js
vendored
Normal file
4
pseo_website/_site/assets/js/dist/misc.min.js
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
/*!
|
||||
* Chirpy v6.2.3 | © 2019 Cotes Chung | MIT Licensed | https://github.com/cotes2020/jekyll-theme-chirpy/
|
||||
*/
|
||||
!function(){"use strict";function t(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function e(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,i(n.key),n)}}function r(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),Object.defineProperty(t,"prototype",{writable:!1}),t}function n(t,e,r){return(e=i(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function o(t){return function(t){if(Array.isArray(t))return a(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(!t)return;if("string"==typeof t)return a(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);"Object"===r&&t.constructor&&(r=t.constructor.name);if("Map"===r||"Set"===r)return Array.from(t);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return a(t,e)}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function a(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n}function i(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}var l=$(".mode-toggle");var s=$("body"),u="sidebar-display",c=function(){function e(){t(this,e)}return r(e,null,[{key:"toggle",value:function(){!1===e.isExpanded?s.attr(u,""):s.removeAttr(u),e.isExpanded=!e.isExpanded}}]),e}();n(c,"isExpanded",!1);var f=$("#sidebar-trigger"),d=$("#search-trigger"),m=$("#search-cancel"),p=$("#main-wrapper>.container>.row"),v=$("#topbar-title"),g=$("search"),y=$("#search-result-wrapper"),b=$("#search-results"),h=$("#search-input"),C=$("#search-hints"),k=$("html,body"),w="loaded",T="unloaded",j="input-focus",A="d-flex",S=function(){function e(){t(this,e)}return r(e,null,[{key:"on",value:function(){e.offset=window.scrollY,k.scrollTop(0)}},{key:"off",value:function(){k.scrollTop(e.offset)}}]),e}();n(S,"offset",0),n(S,"resultVisible",!1);var x=function(){function e(){t(this,e)}return r(e,null,[{key:"on",value:function(){f.addClass(T),v.addClass(T),d.addClass(T),g.addClass(A),m.addClass(w)}},{key:"off",value:function(){m.removeClass(w),g.removeClass(A),f.removeClass(T),v.removeClass(T),d.removeClass(T)}}]),e}(),E=function(){function e(){t(this,e)}return r(e,null,[{key:"on",value:function(){S.resultVisible||(S.on(),y.removeClass(T),p.addClass(T),S.resultVisible=!0)}},{key:"off",value:function(){S.resultVisible&&(b.empty(),C.hasClass(T)&&C.removeClass(T),y.addClass(T),p.removeClass(T),S.off(),h.val(""),S.resultVisible=!1)}}]),e}();function F(){return m.hasClass(w)}$(".collapse");$(".code-header>button").children().attr("class");var O,D,P=function(){function e(){t(this,e)}return r(e,null,[{key:"attrTimestamp",get:function(){return"data-ts"}},{key:"attrDateFormat",get:function(){return"data-df"}},{key:"locale",get:function(){return $("html").attr("lang").substring(0,2)}},{key:"getTimestamp",value:function(t){return Number(t.attr(e.attrTimestamp))}},{key:"getDateFormat",value:function(t){return t.attr(e.attrDateFormat)}}]),e}();O=$(window),D=$("#back-to-top"),O.on("scroll",(function(){O.scrollTop()>50?D.fadeIn():D.fadeOut()})),D.on("click",(function(){O.scrollTop(0)})),o(document.querySelectorAll('[data-bs-toggle="tooltip"]')).map((function(t){return new bootstrap.Tooltip(t)})),0!==l.length&&l.off().on("click",(function(t){var e=$(t.target),r=e.prop("tagName")==="button".toUpperCase()?e:e.parent();modeToggle.flipMode(),r.trigger("blur")})),$("#sidebar-trigger").on("click",c.toggle),$("#mask").on("click",c.toggle),d.on("click",(function(){x.on(),E.on(),h.trigger("focus")})),m.on("click",(function(){x.off(),E.off()})),h.on("focus",(function(){g.addClass(j)})),h.on("focusout",(function(){g.removeClass(j)})),h.on("input",(function(){""===h.val()?F()?C.removeClass(T):E.off():(E.on(),F()&&C.addClass(T))})),dayjs.locale(P.locale),dayjs.extend(window.dayjs_plugin_localizedFormat),$("[".concat(P.attrTimestamp,"]")).each((function(){var t=dayjs.unix(P.getTimestamp($(this))),e=t.format(P.getDateFormat($(this)));$(this).text(e),$(this).removeAttr(P.attrTimestamp),$(this).removeAttr(P.attrDateFormat);var r=$(this).attr("data-bs-toggle");if(void 0!==r&&"tooltip"===r){var n=t.format("llll");$(this).attr("data-bs-title",n),new bootstrap.Tooltip($(this))}}))}();
|
||||
4
pseo_website/_site/assets/js/dist/page.min.js
vendored
Normal file
4
pseo_website/_site/assets/js/dist/post.min.js
vendored
Normal file
905
pseo_website/_site/categories/blogging/index.html
Normal file
@@ -0,0 +1,905 @@
|
||||
<!doctype html>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- `site.alt_lang` can specify a language different from the UI -->
|
||||
<html lang="en" >
|
||||
<!-- The Head -->
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<meta name="theme-color" media="(prefers-color-scheme: light)" content="#f7f7f7">
|
||||
<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#1b1b1e">
|
||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
|
||||
<meta
|
||||
name="viewport"
|
||||
content="width=device-width, user-scalable=no initial-scale=1, shrink-to-fit=no, viewport-fit=cover"
|
||||
>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Begin Jekyll SEO tag v2.8.0 -->
|
||||
<meta name="generator" content="Jekyll v4.3.2" />
|
||||
<meta property="og:title" content="Blogging" />
|
||||
<meta property="og:locale" content="en" />
|
||||
<meta name="description" content="Begginer friendly AI technologies simplified & explained. Know & boost productivity with latest AI tools." />
|
||||
<meta property="og:description" content="Begginer friendly AI technologies simplified & explained. Know & boost productivity with latest AI tools." />
|
||||
<link rel="canonical" href="http://localhost:4000/categories/blogging/" />
|
||||
<meta property="og:url" content="http://localhost:4000/categories/blogging/" />
|
||||
<meta property="og:site_name" content="AI-Takia" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta name="twitter:card" content="summary" />
|
||||
<meta property="twitter:title" content="Blogging" />
|
||||
<meta name="twitter:site" content="@ajaysi" />
|
||||
<script type="application/ld+json">
|
||||
{"@context":"https://schema.org","@type":"WebPage","description":"Begginer friendly AI technologies simplified & explained. Know & boost productivity with latest AI tools.","headline":"Blogging","url":"http://localhost:4000/categories/blogging/"}</script>
|
||||
<!-- End Jekyll SEO tag -->
|
||||
|
||||
|
||||
|
||||
<title>Blogging | AI-Takia
|
||||
</title>
|
||||
|
||||
<!--
|
||||
The Favicons for Web, Android, Microsoft, and iOS (iPhone and iPad) Apps
|
||||
Generated by: https://realfavicongenerator.net/
|
||||
-->
|
||||
|
||||
|
||||
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/assets/img/favicons/apple-touch-icon.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="/assets/img/favicons/favicon-32x32.png">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="/assets/img/favicons/favicon-16x16.png">
|
||||
<link rel="manifest" href="/assets/img/favicons/site.webmanifest">
|
||||
<link rel="shortcut icon" href="/assets/img/favicons/favicon.ico">
|
||||
<meta name="apple-mobile-web-app-title" content="AI-Takia">
|
||||
<meta name="application-name" content="AI-Takia">
|
||||
<meta name="msapplication-TileColor" content="#da532c">
|
||||
<meta name="msapplication-config" content="/assets/img/favicons/browserconfig.xml">
|
||||
<meta name="theme-color" content="#ffffff">
|
||||
|
||||
|
||||
|
||||
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com" >
|
||||
<link rel="dns-prefetch" href="https://fonts.googleapis.com" >
|
||||
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link rel="dns-prefetch" href="https://fonts.gstatic.com" crossorigin>
|
||||
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com" >
|
||||
<link rel="dns-prefetch" href="https://fonts.googleapis.com" >
|
||||
|
||||
<link rel="preconnect" href="https://cdn.jsdelivr.net" >
|
||||
<link rel="dns-prefetch" href="https://cdn.jsdelivr.net" >
|
||||
|
||||
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Lato&family=Source+Sans+Pro:wght@400;600;700;900&display=swap">
|
||||
|
||||
|
||||
<!-- GA -->
|
||||
|
||||
|
||||
<!-- Bootstrap -->
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css">
|
||||
|
||||
<!-- Font Awesome -->
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.4.2/css/all.min.css">
|
||||
|
||||
<link rel="stylesheet" href="/assets/css/jekyll-theme-chirpy.css">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- JavaScript -->
|
||||
|
||||
|
||||
<!-- Switch the mode between dark and light. -->
|
||||
|
||||
<script type="text/javascript">
|
||||
class ModeToggle {
|
||||
static get MODE_KEY() {
|
||||
return 'mode';
|
||||
}
|
||||
static get MODE_ATTR() {
|
||||
return 'data-mode';
|
||||
}
|
||||
static get DARK_MODE() {
|
||||
return 'dark';
|
||||
}
|
||||
static get LIGHT_MODE() {
|
||||
return 'light';
|
||||
}
|
||||
static get ID() {
|
||||
return 'mode-toggle';
|
||||
}
|
||||
|
||||
constructor() {
|
||||
if (this.hasMode) {
|
||||
if (this.isDarkMode) {
|
||||
if (!this.isSysDarkPrefer) {
|
||||
this.setDark();
|
||||
}
|
||||
} else {
|
||||
if (this.isSysDarkPrefer) {
|
||||
this.setLight();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let self = this;
|
||||
|
||||
/* always follow the system prefers */
|
||||
this.sysDarkPrefers.addEventListener('change', () => {
|
||||
if (self.hasMode) {
|
||||
if (self.isDarkMode) {
|
||||
if (!self.isSysDarkPrefer) {
|
||||
self.setDark();
|
||||
}
|
||||
} else {
|
||||
if (self.isSysDarkPrefer) {
|
||||
self.setLight();
|
||||
}
|
||||
}
|
||||
|
||||
self.clearMode();
|
||||
}
|
||||
|
||||
self.notify();
|
||||
});
|
||||
} /* constructor() */
|
||||
|
||||
get sysDarkPrefers() {
|
||||
return window.matchMedia('(prefers-color-scheme: dark)');
|
||||
}
|
||||
|
||||
get isSysDarkPrefer() {
|
||||
return this.sysDarkPrefers.matches;
|
||||
}
|
||||
|
||||
get isDarkMode() {
|
||||
return this.mode === ModeToggle.DARK_MODE;
|
||||
}
|
||||
|
||||
get isLightMode() {
|
||||
return this.mode === ModeToggle.LIGHT_MODE;
|
||||
}
|
||||
|
||||
get hasMode() {
|
||||
return this.mode != null;
|
||||
}
|
||||
|
||||
get mode() {
|
||||
return sessionStorage.getItem(ModeToggle.MODE_KEY);
|
||||
}
|
||||
|
||||
/* get the current mode on screen */
|
||||
get modeStatus() {
|
||||
if (this.isDarkMode || (!this.hasMode && this.isSysDarkPrefer)) {
|
||||
return ModeToggle.DARK_MODE;
|
||||
} else {
|
||||
return ModeToggle.LIGHT_MODE;
|
||||
}
|
||||
}
|
||||
|
||||
setDark() {
|
||||
document.documentElement.setAttribute(ModeToggle.MODE_ATTR, ModeToggle.DARK_MODE);
|
||||
sessionStorage.setItem(ModeToggle.MODE_KEY, ModeToggle.DARK_MODE);
|
||||
}
|
||||
|
||||
setLight() {
|
||||
document.documentElement.setAttribute(ModeToggle.MODE_ATTR, ModeToggle.LIGHT_MODE);
|
||||
sessionStorage.setItem(ModeToggle.MODE_KEY, ModeToggle.LIGHT_MODE);
|
||||
}
|
||||
|
||||
clearMode() {
|
||||
document.documentElement.removeAttribute(ModeToggle.MODE_ATTR);
|
||||
sessionStorage.removeItem(ModeToggle.MODE_KEY);
|
||||
}
|
||||
|
||||
/* Notify another plugins that the theme mode has changed */
|
||||
notify() {
|
||||
window.postMessage(
|
||||
{
|
||||
direction: ModeToggle.ID,
|
||||
message: this.modeStatus
|
||||
},
|
||||
'*'
|
||||
);
|
||||
}
|
||||
|
||||
flipMode() {
|
||||
if (this.hasMode) {
|
||||
if (this.isSysDarkPrefer) {
|
||||
if (this.isLightMode) {
|
||||
this.clearMode();
|
||||
} else {
|
||||
this.setLight();
|
||||
}
|
||||
} else {
|
||||
if (this.isDarkMode) {
|
||||
this.clearMode();
|
||||
} else {
|
||||
this.setDark();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (this.isSysDarkPrefer) {
|
||||
this.setLight();
|
||||
} else {
|
||||
this.setDark();
|
||||
}
|
||||
}
|
||||
|
||||
this.notify();
|
||||
} /* flipMode() */
|
||||
} /* ModeToggle */
|
||||
|
||||
const modeToggle = new ModeToggle();
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<!-- A placeholder to allow defining custom metadata -->
|
||||
|
||||
</head>
|
||||
|
||||
|
||||
<body>
|
||||
<!-- The Side Bar -->
|
||||
|
||||
<aside aria-label="Sidebar" id="sidebar" class="d-flex flex-column align-items-end">
|
||||
<header class="profile-wrapper">
|
||||
<a href="/" id="avatar" class="rounded-circle">
|
||||
|
||||
</a>
|
||||
|
||||
<h1 class="site-title">
|
||||
<a href="/">AI-Takia</a>
|
||||
</h1>
|
||||
<p class="site-subtitle fst-italic mb-0">Latest Blogs on AI tech, Tools & SaaS</p>
|
||||
</header>
|
||||
<!-- .profile-wrapper -->
|
||||
|
||||
<nav class="flex-column flex-grow-1 w-100 ps-0">
|
||||
<ul class="nav">
|
||||
<!-- home -->
|
||||
<li class="nav-item">
|
||||
<a href="/" class="nav-link">
|
||||
<i class="fa-fw fas fa-home"></i>
|
||||
<span>HOME</span>
|
||||
</a>
|
||||
</li>
|
||||
<!-- the real tabs -->
|
||||
|
||||
<li class="nav-item">
|
||||
<a href="/categories/" class="nav-link">
|
||||
<i class="fa-fw fas fa-stream"></i>
|
||||
|
||||
|
||||
<span>CATEGORIES</span>
|
||||
</a>
|
||||
</li>
|
||||
<!-- .nav-item -->
|
||||
|
||||
<li class="nav-item">
|
||||
<a href="/tags/" class="nav-link">
|
||||
<i class="fa-fw fas fa-tags"></i>
|
||||
|
||||
|
||||
<span>TAGS</span>
|
||||
</a>
|
||||
</li>
|
||||
<!-- .nav-item -->
|
||||
|
||||
<li class="nav-item">
|
||||
<a href="/archives/" class="nav-link">
|
||||
<i class="fa-fw fas fa-archive"></i>
|
||||
|
||||
|
||||
<span>ARCHIVES</span>
|
||||
</a>
|
||||
</li>
|
||||
<!-- .nav-item -->
|
||||
|
||||
<li class="nav-item">
|
||||
<a href="/about/" class="nav-link">
|
||||
<i class="fa-fw fas fa-info-circle"></i>
|
||||
|
||||
|
||||
<span>ABOUT</span>
|
||||
</a>
|
||||
</li>
|
||||
<!-- .nav-item -->
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
<div class="sidebar-bottom d-flex flex-wrap align-items-center w-100">
|
||||
|
||||
<button type="button" class="mode-toggle btn" aria-label="Switch Mode">
|
||||
<i class="fas fa-adjust"></i>
|
||||
</button>
|
||||
|
||||
|
||||
<span class="icon-border"></span>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a
|
||||
href="https://github.com/ajaysi"
|
||||
aria-label="github"
|
||||
|
||||
|
||||
|
||||
target="_blank"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
rel="noopener noreferrer"
|
||||
|
||||
>
|
||||
<i class="fab fa-github"></i>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a
|
||||
href="https://twitter.com/ajaysi"
|
||||
aria-label="twitter"
|
||||
|
||||
|
||||
|
||||
target="_blank"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
rel="noopener noreferrer"
|
||||
|
||||
>
|
||||
<i class="fa-brands fa-x-twitter"></i>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a
|
||||
href="javascript:location.href = 'mailto:' + ['example','domain.com'].join('@')"
|
||||
aria-label="email"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
>
|
||||
<i class="fas fa-envelope"></i>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a
|
||||
href=""
|
||||
aria-label="linkedin"
|
||||
|
||||
|
||||
|
||||
target="_blank"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
rel="noopener noreferrer"
|
||||
|
||||
>
|
||||
<i class="fab fa-linkedin"></i>
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
<!-- .sidebar-bottom -->
|
||||
</aside>
|
||||
<!-- #sidebar -->
|
||||
|
||||
|
||||
<div id="main-wrapper" class="d-flex justify-content-center">
|
||||
<div class="container d-flex flex-column px-xxl-5">
|
||||
<!-- The Top Bar -->
|
||||
|
||||
<header id="topbar-wrapper" aria-label="Top Bar">
|
||||
<div
|
||||
id="topbar"
|
||||
class="d-flex align-items-center justify-content-between px-lg-3 h-100"
|
||||
>
|
||||
<nav id="breadcrumb" aria-label="Breadcrumb">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span>
|
||||
<a href="/">
|
||||
Home
|
||||
</a>
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
|
||||
<span>
|
||||
<a href="/categories">
|
||||
Categories
|
||||
</a>
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
|
||||
<span>Blogging</span>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</nav>
|
||||
<!-- endof #breadcrumb -->
|
||||
|
||||
<button type="button" id="sidebar-trigger" class="btn btn-link">
|
||||
<i class="fas fa-bars fa-fw"></i>
|
||||
</button>
|
||||
|
||||
<div id="topbar-title">
|
||||
Category
|
||||
</div>
|
||||
|
||||
<button type="button" id="search-trigger" class="btn btn-link">
|
||||
<i class="fas fa-search fa-fw"></i>
|
||||
</button>
|
||||
|
||||
<search class="align-items-center ms-3 ms-lg-0">
|
||||
<i class="fas fa-search fa-fw"></i>
|
||||
<input
|
||||
class="form-control"
|
||||
id="search-input"
|
||||
type="search"
|
||||
aria-label="search"
|
||||
autocomplete="off"
|
||||
placeholder="Search..."
|
||||
>
|
||||
</search>
|
||||
<button type="button" class="btn btn-link text-decoration-none" id="search-cancel">Cancel</button>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
|
||||
<div class="row flex-grow-1">
|
||||
<main aria-label="Main Content" class="col-12 col-lg-11 col-xl-9 px-md-4">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<article class="px-1">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div id="page-category">
|
||||
<h1 class="ps-lg-2">
|
||||
<i class="far fa-folder-open fa-fw text-muted"></i>
|
||||
Blogging
|
||||
<span class="lead text-muted ps-2">2</span>
|
||||
</h1>
|
||||
|
||||
<ul class="content ps-0">
|
||||
|
||||
<li class="d-flex justify-content-between px-md-3">
|
||||
<a href="/posts/mansarovar-trek/">Mansarovar Trek</a>
|
||||
<span class="dash flex-grow-1"></span>
|
||||
<!--
|
||||
Date format snippet
|
||||
See: ${JS_ROOT}/utils/locale-dateime.js
|
||||
-->
|
||||
|
||||
|
||||
|
||||
|
||||
<time
|
||||
|
||||
class="text-muted small text-nowrap"
|
||||
|
||||
data-ts="1565355300"
|
||||
data-df="ll"
|
||||
|
||||
>
|
||||
Aug 9, 2019
|
||||
</time>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="d-flex justify-content-between px-md-3">
|
||||
<a href="/posts/getting-started/">Getting Started</a>
|
||||
<span class="dash flex-grow-1"></span>
|
||||
<!--
|
||||
Date format snippet
|
||||
See: ${JS_ROOT}/utils/locale-dateime.js
|
||||
-->
|
||||
|
||||
|
||||
|
||||
|
||||
<time
|
||||
|
||||
class="text-muted small text-nowrap"
|
||||
|
||||
data-ts="1565355300"
|
||||
data-df="ll"
|
||||
|
||||
>
|
||||
Aug 9, 2019
|
||||
</time>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
</article>
|
||||
|
||||
|
||||
</main>
|
||||
|
||||
<!-- panel -->
|
||||
<aside aria-label="Panel" id="panel-wrapper" class="col-xl-3 ps-2 mb-5 text-muted">
|
||||
<div class="access">
|
||||
<!-- Get the last 5 posts from lastmod list. -->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- The trending tags list -->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<section>
|
||||
<h2 class="panel-heading">Trending Tags</h2>
|
||||
<div class="d-flex flex-wrap mt-3 mb-1 me-3">
|
||||
|
||||
|
||||
<a class="post-tag btn btn-outline-primary" href="/tags/getting-started/">getting started</a>
|
||||
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</aside>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<!-- tail -->
|
||||
<div id="tail-wrapper" class="col-12 col-lg-11 col-xl-9 px-md-4">
|
||||
|
||||
|
||||
<!-- The Footer -->
|
||||
|
||||
<footer
|
||||
aria-label="Site Info"
|
||||
class="
|
||||
d-flex flex-column justify-content-center text-muted
|
||||
flex-lg-row justify-content-lg-between align-items-lg-center pb-lg-3
|
||||
"
|
||||
>
|
||||
<p>
|
||||
©
|
||||
<time>2023</time>
|
||||
<a href="https://twitter.com/username">ajaysi</a>.
|
||||
|
||||
<span
|
||||
data-bs-toggle="tooltip"
|
||||
data-bs-placement="top"
|
||||
title="Except where otherwise noted, the blog posts on this site are licensed under the Creative Commons Attribution 4.0 International (CC BY 4.0) License by the author."
|
||||
>Some rights reserved.</span>
|
||||
|
||||
</p>
|
||||
|
||||
<p>Using the <a href="https://github.com/cotes2020/jekyll-theme-chirpy" target="_blank" rel="noopener">Chirpy</a> theme for <a href="https://jekyllrb.com" target="_blank" rel="noopener">Jekyll</a>
|
||||
</p>
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- The Search results -->
|
||||
|
||||
<div id="search-result-wrapper" class="d-flex justify-content-center unloaded">
|
||||
<div class="col-11 content">
|
||||
<div id="search-hints">
|
||||
<!-- The trending tags list -->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<section>
|
||||
<h2 class="panel-heading">Trending Tags</h2>
|
||||
<div class="d-flex flex-wrap mt-3 mb-1 me-3">
|
||||
|
||||
|
||||
<a class="post-tag btn btn-outline-primary" href="/tags/getting-started/">getting started</a>
|
||||
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
<div id="search-results" class="d-flex flex-wrap justify-content-center text-muted mt-3"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<aside aria-label="Scroll to Top">
|
||||
<button id="back-to-top" type="button" class="btn btn-lg btn-box-shadow">
|
||||
<i class="fas fa-angle-up"></i>
|
||||
</button>
|
||||
</aside>
|
||||
</div>
|
||||
|
||||
<div id="mask"></div>
|
||||
|
||||
|
||||
<aside
|
||||
id="notification"
|
||||
class="toast"
|
||||
role="alert"
|
||||
aria-live="assertive"
|
||||
aria-atomic="true"
|
||||
data-bs-animation="true"
|
||||
data-bs-autohide="false"
|
||||
>
|
||||
<div class="toast-header">
|
||||
<button
|
||||
type="button"
|
||||
class="btn-close ms-auto"
|
||||
data-bs-dismiss="toast"
|
||||
aria-label="Close"
|
||||
></button>
|
||||
</div>
|
||||
<div class="toast-body text-center pt-0">
|
||||
<p class="px-2 mb-3">A new version of content is available.</p>
|
||||
<button type="button" class="btn btn-primary" aria-label="Update">
|
||||
Update
|
||||
</button>
|
||||
</div>
|
||||
</aside>
|
||||
|
||||
|
||||
|
||||
<!-- JavaScripts -->
|
||||
|
||||
<!-- JS selector for site. -->
|
||||
|
||||
<!-- commons -->
|
||||
|
||||
|
||||
|
||||
<!-- layout specified -->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/combine/npm/jquery@3.7.1/dist/jquery.min.js,npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js,npm/simple-jekyll-search@1.10.0/dest/simple-jekyll-search.min.js,npm/dayjs@1.11.10/dayjs.min.js,npm/dayjs@1.11.10/locale/en.min.js,npm/dayjs@1.11.10/plugin/relativeTime.min.js,npm/dayjs@1.11.10/plugin/localizedFormat.min.js"></script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script defer src="/assets/js/dist/misc.min.js"></script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!--
|
||||
Jekyll Simple Search loader
|
||||
See: <https://github.com/christian-fei/Simple-Jekyll-Search>
|
||||
-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
/* Note: dependent library will be loaded in `js-selector.html` */
|
||||
SimpleJekyllSearch({
|
||||
searchInput: document.getElementById('search-input'),
|
||||
resultsContainer: document.getElementById('search-results'),
|
||||
json: '/assets/js/data/search.json',
|
||||
searchResultTemplate: ' <article class="px-1 px-sm-2 px-lg-4 px-xl-0"> <header> <h2><a href="{url}">{title}</a></h2> <div class="post-meta d-flex flex-column flex-sm-row text-muted mt-1 mb-1"> {categories} {tags} </div> </header> <p>{snippet}</p> </article>',
|
||||
noResultsText: '<p class="mt-5"></p>',
|
||||
templateMiddleware: function(prop, value, template) {
|
||||
if (prop === 'categories') {
|
||||
if (value === '') {
|
||||
return `${value}`;
|
||||
} else {
|
||||
return `<div class="me-sm-4"><i class="far fa-folder fa-fw"></i>${value}</div>`;
|
||||
}
|
||||
}
|
||||
|
||||
if (prop === 'tags') {
|
||||
if (value === '') {
|
||||
return `${value}`;
|
||||
} else {
|
||||
return `<div><i class="fa fa-tag fa-fw"></i>${value}</div>`;
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
919
pseo_website/_site/categories/index.html
Normal file
@@ -0,0 +1,919 @@
|
||||
<!doctype html>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- `site.alt_lang` can specify a language different from the UI -->
|
||||
<html lang="en" >
|
||||
<!-- The Head -->
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<meta name="theme-color" media="(prefers-color-scheme: light)" content="#f7f7f7">
|
||||
<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#1b1b1e">
|
||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
|
||||
<meta
|
||||
name="viewport"
|
||||
content="width=device-width, user-scalable=no initial-scale=1, shrink-to-fit=no, viewport-fit=cover"
|
||||
>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Begin Jekyll SEO tag v2.8.0 -->
|
||||
<meta name="generator" content="Jekyll v4.3.2" />
|
||||
<meta property="og:title" content="Categories" />
|
||||
<meta property="og:locale" content="en" />
|
||||
<meta name="description" content="Begginer friendly AI technologies simplified & explained. Know & boost productivity with latest AI tools." />
|
||||
<meta property="og:description" content="Begginer friendly AI technologies simplified & explained. Know & boost productivity with latest AI tools." />
|
||||
<link rel="canonical" href="http://localhost:4000/categories/" />
|
||||
<meta property="og:url" content="http://localhost:4000/categories/" />
|
||||
<meta property="og:site_name" content="AI-Takia" />
|
||||
<meta property="og:type" content="article" />
|
||||
<meta property="article:published_time" content="2023-10-22T14:10:02+05:30" />
|
||||
<meta name="twitter:card" content="summary" />
|
||||
<meta property="twitter:title" content="Categories" />
|
||||
<meta name="twitter:site" content="@ajaysi" />
|
||||
<script type="application/ld+json">
|
||||
{"@context":"https://schema.org","@type":"BlogPosting","dateModified":"2023-10-22T14:10:02+05:30","datePublished":"2023-10-22T14:10:02+05:30","description":"Begginer friendly AI technologies simplified & explained. Know & boost productivity with latest AI tools.","headline":"Categories","mainEntityOfPage":{"@type":"WebPage","@id":"http://localhost:4000/categories/"},"url":"http://localhost:4000/categories/"}</script>
|
||||
<!-- End Jekyll SEO tag -->
|
||||
|
||||
|
||||
|
||||
<title>Categories | AI-Takia
|
||||
</title>
|
||||
|
||||
<!--
|
||||
The Favicons for Web, Android, Microsoft, and iOS (iPhone and iPad) Apps
|
||||
Generated by: https://realfavicongenerator.net/
|
||||
-->
|
||||
|
||||
|
||||
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/assets/img/favicons/apple-touch-icon.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="/assets/img/favicons/favicon-32x32.png">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="/assets/img/favicons/favicon-16x16.png">
|
||||
<link rel="manifest" href="/assets/img/favicons/site.webmanifest">
|
||||
<link rel="shortcut icon" href="/assets/img/favicons/favicon.ico">
|
||||
<meta name="apple-mobile-web-app-title" content="AI-Takia">
|
||||
<meta name="application-name" content="AI-Takia">
|
||||
<meta name="msapplication-TileColor" content="#da532c">
|
||||
<meta name="msapplication-config" content="/assets/img/favicons/browserconfig.xml">
|
||||
<meta name="theme-color" content="#ffffff">
|
||||
|
||||
|
||||
|
||||
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com" >
|
||||
<link rel="dns-prefetch" href="https://fonts.googleapis.com" >
|
||||
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link rel="dns-prefetch" href="https://fonts.gstatic.com" crossorigin>
|
||||
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com" >
|
||||
<link rel="dns-prefetch" href="https://fonts.googleapis.com" >
|
||||
|
||||
<link rel="preconnect" href="https://cdn.jsdelivr.net" >
|
||||
<link rel="dns-prefetch" href="https://cdn.jsdelivr.net" >
|
||||
|
||||
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Lato&family=Source+Sans+Pro:wght@400;600;700;900&display=swap">
|
||||
|
||||
|
||||
<!-- GA -->
|
||||
|
||||
|
||||
<!-- Bootstrap -->
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css">
|
||||
|
||||
<!-- Font Awesome -->
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.4.2/css/all.min.css">
|
||||
|
||||
<link rel="stylesheet" href="/assets/css/jekyll-theme-chirpy.css">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- JavaScript -->
|
||||
|
||||
|
||||
<!-- Switch the mode between dark and light. -->
|
||||
|
||||
<script type="text/javascript">
|
||||
class ModeToggle {
|
||||
static get MODE_KEY() {
|
||||
return 'mode';
|
||||
}
|
||||
static get MODE_ATTR() {
|
||||
return 'data-mode';
|
||||
}
|
||||
static get DARK_MODE() {
|
||||
return 'dark';
|
||||
}
|
||||
static get LIGHT_MODE() {
|
||||
return 'light';
|
||||
}
|
||||
static get ID() {
|
||||
return 'mode-toggle';
|
||||
}
|
||||
|
||||
constructor() {
|
||||
if (this.hasMode) {
|
||||
if (this.isDarkMode) {
|
||||
if (!this.isSysDarkPrefer) {
|
||||
this.setDark();
|
||||
}
|
||||
} else {
|
||||
if (this.isSysDarkPrefer) {
|
||||
this.setLight();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let self = this;
|
||||
|
||||
/* always follow the system prefers */
|
||||
this.sysDarkPrefers.addEventListener('change', () => {
|
||||
if (self.hasMode) {
|
||||
if (self.isDarkMode) {
|
||||
if (!self.isSysDarkPrefer) {
|
||||
self.setDark();
|
||||
}
|
||||
} else {
|
||||
if (self.isSysDarkPrefer) {
|
||||
self.setLight();
|
||||
}
|
||||
}
|
||||
|
||||
self.clearMode();
|
||||
}
|
||||
|
||||
self.notify();
|
||||
});
|
||||
} /* constructor() */
|
||||
|
||||
get sysDarkPrefers() {
|
||||
return window.matchMedia('(prefers-color-scheme: dark)');
|
||||
}
|
||||
|
||||
get isSysDarkPrefer() {
|
||||
return this.sysDarkPrefers.matches;
|
||||
}
|
||||
|
||||
get isDarkMode() {
|
||||
return this.mode === ModeToggle.DARK_MODE;
|
||||
}
|
||||
|
||||
get isLightMode() {
|
||||
return this.mode === ModeToggle.LIGHT_MODE;
|
||||
}
|
||||
|
||||
get hasMode() {
|
||||
return this.mode != null;
|
||||
}
|
||||
|
||||
get mode() {
|
||||
return sessionStorage.getItem(ModeToggle.MODE_KEY);
|
||||
}
|
||||
|
||||
/* get the current mode on screen */
|
||||
get modeStatus() {
|
||||
if (this.isDarkMode || (!this.hasMode && this.isSysDarkPrefer)) {
|
||||
return ModeToggle.DARK_MODE;
|
||||
} else {
|
||||
return ModeToggle.LIGHT_MODE;
|
||||
}
|
||||
}
|
||||
|
||||
setDark() {
|
||||
document.documentElement.setAttribute(ModeToggle.MODE_ATTR, ModeToggle.DARK_MODE);
|
||||
sessionStorage.setItem(ModeToggle.MODE_KEY, ModeToggle.DARK_MODE);
|
||||
}
|
||||
|
||||
setLight() {
|
||||
document.documentElement.setAttribute(ModeToggle.MODE_ATTR, ModeToggle.LIGHT_MODE);
|
||||
sessionStorage.setItem(ModeToggle.MODE_KEY, ModeToggle.LIGHT_MODE);
|
||||
}
|
||||
|
||||
clearMode() {
|
||||
document.documentElement.removeAttribute(ModeToggle.MODE_ATTR);
|
||||
sessionStorage.removeItem(ModeToggle.MODE_KEY);
|
||||
}
|
||||
|
||||
/* Notify another plugins that the theme mode has changed */
|
||||
notify() {
|
||||
window.postMessage(
|
||||
{
|
||||
direction: ModeToggle.ID,
|
||||
message: this.modeStatus
|
||||
},
|
||||
'*'
|
||||
);
|
||||
}
|
||||
|
||||
flipMode() {
|
||||
if (this.hasMode) {
|
||||
if (this.isSysDarkPrefer) {
|
||||
if (this.isLightMode) {
|
||||
this.clearMode();
|
||||
} else {
|
||||
this.setLight();
|
||||
}
|
||||
} else {
|
||||
if (this.isDarkMode) {
|
||||
this.clearMode();
|
||||
} else {
|
||||
this.setDark();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (this.isSysDarkPrefer) {
|
||||
this.setLight();
|
||||
} else {
|
||||
this.setDark();
|
||||
}
|
||||
}
|
||||
|
||||
this.notify();
|
||||
} /* flipMode() */
|
||||
} /* ModeToggle */
|
||||
|
||||
const modeToggle = new ModeToggle();
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<!-- A placeholder to allow defining custom metadata -->
|
||||
|
||||
</head>
|
||||
|
||||
|
||||
<body>
|
||||
<!-- The Side Bar -->
|
||||
|
||||
<aside aria-label="Sidebar" id="sidebar" class="d-flex flex-column align-items-end">
|
||||
<header class="profile-wrapper">
|
||||
<a href="/" id="avatar" class="rounded-circle">
|
||||
|
||||
</a>
|
||||
|
||||
<h1 class="site-title">
|
||||
<a href="/">AI-Takia</a>
|
||||
</h1>
|
||||
<p class="site-subtitle fst-italic mb-0">Latest Blogs on AI tech, Tools & SaaS</p>
|
||||
</header>
|
||||
<!-- .profile-wrapper -->
|
||||
|
||||
<nav class="flex-column flex-grow-1 w-100 ps-0">
|
||||
<ul class="nav">
|
||||
<!-- home -->
|
||||
<li class="nav-item">
|
||||
<a href="/" class="nav-link">
|
||||
<i class="fa-fw fas fa-home"></i>
|
||||
<span>HOME</span>
|
||||
</a>
|
||||
</li>
|
||||
<!-- the real tabs -->
|
||||
|
||||
<li class="nav-item active">
|
||||
<a href="/categories/" class="nav-link">
|
||||
<i class="fa-fw fas fa-stream"></i>
|
||||
|
||||
|
||||
<span>CATEGORIES</span>
|
||||
</a>
|
||||
</li>
|
||||
<!-- .nav-item -->
|
||||
|
||||
<li class="nav-item">
|
||||
<a href="/tags/" class="nav-link">
|
||||
<i class="fa-fw fas fa-tags"></i>
|
||||
|
||||
|
||||
<span>TAGS</span>
|
||||
</a>
|
||||
</li>
|
||||
<!-- .nav-item -->
|
||||
|
||||
<li class="nav-item">
|
||||
<a href="/archives/" class="nav-link">
|
||||
<i class="fa-fw fas fa-archive"></i>
|
||||
|
||||
|
||||
<span>ARCHIVES</span>
|
||||
</a>
|
||||
</li>
|
||||
<!-- .nav-item -->
|
||||
|
||||
<li class="nav-item">
|
||||
<a href="/about/" class="nav-link">
|
||||
<i class="fa-fw fas fa-info-circle"></i>
|
||||
|
||||
|
||||
<span>ABOUT</span>
|
||||
</a>
|
||||
</li>
|
||||
<!-- .nav-item -->
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
<div class="sidebar-bottom d-flex flex-wrap align-items-center w-100">
|
||||
|
||||
<button type="button" class="mode-toggle btn" aria-label="Switch Mode">
|
||||
<i class="fas fa-adjust"></i>
|
||||
</button>
|
||||
|
||||
|
||||
<span class="icon-border"></span>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a
|
||||
href="https://github.com/ajaysi"
|
||||
aria-label="github"
|
||||
|
||||
|
||||
|
||||
target="_blank"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
rel="noopener noreferrer"
|
||||
|
||||
>
|
||||
<i class="fab fa-github"></i>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a
|
||||
href="https://twitter.com/ajaysi"
|
||||
aria-label="twitter"
|
||||
|
||||
|
||||
|
||||
target="_blank"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
rel="noopener noreferrer"
|
||||
|
||||
>
|
||||
<i class="fa-brands fa-x-twitter"></i>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a
|
||||
href="javascript:location.href = 'mailto:' + ['example','domain.com'].join('@')"
|
||||
aria-label="email"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
>
|
||||
<i class="fas fa-envelope"></i>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a
|
||||
href=""
|
||||
aria-label="linkedin"
|
||||
|
||||
|
||||
|
||||
target="_blank"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
rel="noopener noreferrer"
|
||||
|
||||
>
|
||||
<i class="fab fa-linkedin"></i>
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
<!-- .sidebar-bottom -->
|
||||
</aside>
|
||||
<!-- #sidebar -->
|
||||
|
||||
|
||||
<div id="main-wrapper" class="d-flex justify-content-center">
|
||||
<div class="container d-flex flex-column px-xxl-5">
|
||||
<!-- The Top Bar -->
|
||||
|
||||
<header id="topbar-wrapper" aria-label="Top Bar">
|
||||
<div
|
||||
id="topbar"
|
||||
class="d-flex align-items-center justify-content-between px-lg-3 h-100"
|
||||
>
|
||||
<nav id="breadcrumb" aria-label="Breadcrumb">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span>
|
||||
<a href="/">
|
||||
Home
|
||||
</a>
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span>Categories</span>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</nav>
|
||||
<!-- endof #breadcrumb -->
|
||||
|
||||
<button type="button" id="sidebar-trigger" class="btn btn-link">
|
||||
<i class="fas fa-bars fa-fw"></i>
|
||||
</button>
|
||||
|
||||
<div id="topbar-title">
|
||||
Categories
|
||||
</div>
|
||||
|
||||
<button type="button" id="search-trigger" class="btn btn-link">
|
||||
<i class="fas fa-search fa-fw"></i>
|
||||
</button>
|
||||
|
||||
<search class="align-items-center ms-3 ms-lg-0">
|
||||
<i class="fas fa-search fa-fw"></i>
|
||||
<input
|
||||
class="form-control"
|
||||
id="search-input"
|
||||
type="search"
|
||||
aria-label="search"
|
||||
autocomplete="off"
|
||||
placeholder="Search..."
|
||||
>
|
||||
</search>
|
||||
<button type="button" class="btn btn-link text-decoration-none" id="search-cancel">Cancel</button>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
|
||||
<div class="row flex-grow-1">
|
||||
<main aria-label="Main Content" class="col-12 col-lg-11 col-xl-9 px-md-4">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<article class="px-1">
|
||||
|
||||
|
||||
|
||||
<h1 class="dynamic-title">
|
||||
Categories
|
||||
</h1>
|
||||
<div class="content">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="card categories">
|
||||
<!-- top-category -->
|
||||
<div
|
||||
id="h_0"
|
||||
class="card-header d-flex justify-content-between hide-border-bottom"
|
||||
>
|
||||
<span class="ms-2">
|
||||
<i class="far fa-folder-open fa-fw"></i>
|
||||
|
||||
|
||||
<a href="/categories/blogging/" class="mx-2">Blogging</a>
|
||||
|
||||
<!-- content count -->
|
||||
|
||||
<span class="text-muted small font-weight-light">
|
||||
|
||||
1
|
||||
|
||||
category
|
||||
,
|
||||
|
||||
|
||||
2
|
||||
|
||||
|
||||
posts
|
||||
|
||||
</span>
|
||||
</span>
|
||||
|
||||
<!-- arrow -->
|
||||
|
||||
<a
|
||||
href="#l_0"
|
||||
data-bs-toggle="collapse"
|
||||
aria-expanded="true"
|
||||
aria-label="h_0-trigger"
|
||||
class="category-trigger hide-border-bottom"
|
||||
>
|
||||
<i class="fas fa-fw fa-angle-down"></i>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
<!-- .card-header -->
|
||||
|
||||
<!-- Sub-categories -->
|
||||
|
||||
<div id="l_0" class="collapse show" aria-expanded="true">
|
||||
<ul class="list-group">
|
||||
|
||||
<li class="list-group-item">
|
||||
<i class="far fa-folder fa-fw"></i>
|
||||
|
||||
|
||||
<a href="/categories/tutorial/" class="mx-2">Tutorial</a>
|
||||
|
||||
|
||||
<span class="text-muted small font-weight-light">
|
||||
2
|
||||
|
||||
|
||||
posts
|
||||
|
||||
</span>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<!-- .card -->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</article>
|
||||
|
||||
|
||||
</main>
|
||||
|
||||
<!-- panel -->
|
||||
<aside aria-label="Panel" id="panel-wrapper" class="col-xl-3 ps-2 mb-5 text-muted">
|
||||
<div class="access">
|
||||
<!-- Get the last 5 posts from lastmod list. -->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- The trending tags list -->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<section>
|
||||
<h2 class="panel-heading">Trending Tags</h2>
|
||||
<div class="d-flex flex-wrap mt-3 mb-1 me-3">
|
||||
|
||||
|
||||
<a class="post-tag btn btn-outline-primary" href="/tags/getting-started/">getting started</a>
|
||||
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</aside>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<!-- tail -->
|
||||
<div id="tail-wrapper" class="col-12 col-lg-11 col-xl-9 px-md-4">
|
||||
|
||||
|
||||
<!-- The Footer -->
|
||||
|
||||
<footer
|
||||
aria-label="Site Info"
|
||||
class="
|
||||
d-flex flex-column justify-content-center text-muted
|
||||
flex-lg-row justify-content-lg-between align-items-lg-center pb-lg-3
|
||||
"
|
||||
>
|
||||
<p>
|
||||
©
|
||||
<time>2023</time>
|
||||
<a href="https://twitter.com/username">ajaysi</a>.
|
||||
|
||||
<span
|
||||
data-bs-toggle="tooltip"
|
||||
data-bs-placement="top"
|
||||
title="Except where otherwise noted, the blog posts on this site are licensed under the Creative Commons Attribution 4.0 International (CC BY 4.0) License by the author."
|
||||
>Some rights reserved.</span>
|
||||
|
||||
</p>
|
||||
|
||||
<p>Using the <a href="https://github.com/cotes2020/jekyll-theme-chirpy" target="_blank" rel="noopener">Chirpy</a> theme for <a href="https://jekyllrb.com" target="_blank" rel="noopener">Jekyll</a>
|
||||
</p>
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- The Search results -->
|
||||
|
||||
<div id="search-result-wrapper" class="d-flex justify-content-center unloaded">
|
||||
<div class="col-11 content">
|
||||
<div id="search-hints">
|
||||
<!-- The trending tags list -->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<section>
|
||||
<h2 class="panel-heading">Trending Tags</h2>
|
||||
<div class="d-flex flex-wrap mt-3 mb-1 me-3">
|
||||
|
||||
|
||||
<a class="post-tag btn btn-outline-primary" href="/tags/getting-started/">getting started</a>
|
||||
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
<div id="search-results" class="d-flex flex-wrap justify-content-center text-muted mt-3"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<aside aria-label="Scroll to Top">
|
||||
<button id="back-to-top" type="button" class="btn btn-lg btn-box-shadow">
|
||||
<i class="fas fa-angle-up"></i>
|
||||
</button>
|
||||
</aside>
|
||||
</div>
|
||||
|
||||
<div id="mask"></div>
|
||||
|
||||
|
||||
<aside
|
||||
id="notification"
|
||||
class="toast"
|
||||
role="alert"
|
||||
aria-live="assertive"
|
||||
aria-atomic="true"
|
||||
data-bs-animation="true"
|
||||
data-bs-autohide="false"
|
||||
>
|
||||
<div class="toast-header">
|
||||
<button
|
||||
type="button"
|
||||
class="btn-close ms-auto"
|
||||
data-bs-dismiss="toast"
|
||||
aria-label="Close"
|
||||
></button>
|
||||
</div>
|
||||
<div class="toast-body text-center pt-0">
|
||||
<p class="px-2 mb-3">A new version of content is available.</p>
|
||||
<button type="button" class="btn btn-primary" aria-label="Update">
|
||||
Update
|
||||
</button>
|
||||
</div>
|
||||
</aside>
|
||||
|
||||
|
||||
|
||||
<!-- JavaScripts -->
|
||||
|
||||
<!-- JS selector for site. -->
|
||||
|
||||
<!-- commons -->
|
||||
|
||||
|
||||
|
||||
<!-- layout specified -->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/combine/npm/jquery@3.7.1/dist/jquery.min.js,npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js,npm/simple-jekyll-search@1.10.0/dest/simple-jekyll-search.min.js"></script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script defer src="/assets/js/dist/categories.min.js"></script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!--
|
||||
Jekyll Simple Search loader
|
||||
See: <https://github.com/christian-fei/Simple-Jekyll-Search>
|
||||
-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
/* Note: dependent library will be loaded in `js-selector.html` */
|
||||
SimpleJekyllSearch({
|
||||
searchInput: document.getElementById('search-input'),
|
||||
resultsContainer: document.getElementById('search-results'),
|
||||
json: '/assets/js/data/search.json',
|
||||
searchResultTemplate: ' <article class="px-1 px-sm-2 px-lg-4 px-xl-0"> <header> <h2><a href="{url}">{title}</a></h2> <div class="post-meta d-flex flex-column flex-sm-row text-muted mt-1 mb-1"> {categories} {tags} </div> </header> <p>{snippet}</p> </article>',
|
||||
noResultsText: '<p class="mt-5"></p>',
|
||||
templateMiddleware: function(prop, value, template) {
|
||||
if (prop === 'categories') {
|
||||
if (value === '') {
|
||||
return `${value}`;
|
||||
} else {
|
||||
return `<div class="me-sm-4"><i class="far fa-folder fa-fw"></i>${value}</div>`;
|
||||
}
|
||||
}
|
||||
|
||||
if (prop === 'tags') {
|
||||
if (value === '') {
|
||||
return `${value}`;
|
||||
} else {
|
||||
return `<div><i class="fa fa-tag fa-fw"></i>${value}</div>`;
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
905
pseo_website/_site/categories/tutorial/index.html
Normal file
@@ -0,0 +1,905 @@
|
||||
<!doctype html>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- `site.alt_lang` can specify a language different from the UI -->
|
||||
<html lang="en" >
|
||||
<!-- The Head -->
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<meta name="theme-color" media="(prefers-color-scheme: light)" content="#f7f7f7">
|
||||
<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#1b1b1e">
|
||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
|
||||
<meta
|
||||
name="viewport"
|
||||
content="width=device-width, user-scalable=no initial-scale=1, shrink-to-fit=no, viewport-fit=cover"
|
||||
>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Begin Jekyll SEO tag v2.8.0 -->
|
||||
<meta name="generator" content="Jekyll v4.3.2" />
|
||||
<meta property="og:title" content="Tutorial" />
|
||||
<meta property="og:locale" content="en" />
|
||||
<meta name="description" content="Begginer friendly AI technologies simplified & explained. Know & boost productivity with latest AI tools." />
|
||||
<meta property="og:description" content="Begginer friendly AI technologies simplified & explained. Know & boost productivity with latest AI tools." />
|
||||
<link rel="canonical" href="http://localhost:4000/categories/tutorial/" />
|
||||
<meta property="og:url" content="http://localhost:4000/categories/tutorial/" />
|
||||
<meta property="og:site_name" content="AI-Takia" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta name="twitter:card" content="summary" />
|
||||
<meta property="twitter:title" content="Tutorial" />
|
||||
<meta name="twitter:site" content="@ajaysi" />
|
||||
<script type="application/ld+json">
|
||||
{"@context":"https://schema.org","@type":"WebPage","description":"Begginer friendly AI technologies simplified & explained. Know & boost productivity with latest AI tools.","headline":"Tutorial","url":"http://localhost:4000/categories/tutorial/"}</script>
|
||||
<!-- End Jekyll SEO tag -->
|
||||
|
||||
|
||||
|
||||
<title>Tutorial | AI-Takia
|
||||
</title>
|
||||
|
||||
<!--
|
||||
The Favicons for Web, Android, Microsoft, and iOS (iPhone and iPad) Apps
|
||||
Generated by: https://realfavicongenerator.net/
|
||||
-->
|
||||
|
||||
|
||||
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/assets/img/favicons/apple-touch-icon.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="/assets/img/favicons/favicon-32x32.png">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="/assets/img/favicons/favicon-16x16.png">
|
||||
<link rel="manifest" href="/assets/img/favicons/site.webmanifest">
|
||||
<link rel="shortcut icon" href="/assets/img/favicons/favicon.ico">
|
||||
<meta name="apple-mobile-web-app-title" content="AI-Takia">
|
||||
<meta name="application-name" content="AI-Takia">
|
||||
<meta name="msapplication-TileColor" content="#da532c">
|
||||
<meta name="msapplication-config" content="/assets/img/favicons/browserconfig.xml">
|
||||
<meta name="theme-color" content="#ffffff">
|
||||
|
||||
|
||||
|
||||
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com" >
|
||||
<link rel="dns-prefetch" href="https://fonts.googleapis.com" >
|
||||
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link rel="dns-prefetch" href="https://fonts.gstatic.com" crossorigin>
|
||||
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com" >
|
||||
<link rel="dns-prefetch" href="https://fonts.googleapis.com" >
|
||||
|
||||
<link rel="preconnect" href="https://cdn.jsdelivr.net" >
|
||||
<link rel="dns-prefetch" href="https://cdn.jsdelivr.net" >
|
||||
|
||||
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Lato&family=Source+Sans+Pro:wght@400;600;700;900&display=swap">
|
||||
|
||||
|
||||
<!-- GA -->
|
||||
|
||||
|
||||
<!-- Bootstrap -->
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css">
|
||||
|
||||
<!-- Font Awesome -->
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.4.2/css/all.min.css">
|
||||
|
||||
<link rel="stylesheet" href="/assets/css/jekyll-theme-chirpy.css">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- JavaScript -->
|
||||
|
||||
|
||||
<!-- Switch the mode between dark and light. -->
|
||||
|
||||
<script type="text/javascript">
|
||||
class ModeToggle {
|
||||
static get MODE_KEY() {
|
||||
return 'mode';
|
||||
}
|
||||
static get MODE_ATTR() {
|
||||
return 'data-mode';
|
||||
}
|
||||
static get DARK_MODE() {
|
||||
return 'dark';
|
||||
}
|
||||
static get LIGHT_MODE() {
|
||||
return 'light';
|
||||
}
|
||||
static get ID() {
|
||||
return 'mode-toggle';
|
||||
}
|
||||
|
||||
constructor() {
|
||||
if (this.hasMode) {
|
||||
if (this.isDarkMode) {
|
||||
if (!this.isSysDarkPrefer) {
|
||||
this.setDark();
|
||||
}
|
||||
} else {
|
||||
if (this.isSysDarkPrefer) {
|
||||
this.setLight();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let self = this;
|
||||
|
||||
/* always follow the system prefers */
|
||||
this.sysDarkPrefers.addEventListener('change', () => {
|
||||
if (self.hasMode) {
|
||||
if (self.isDarkMode) {
|
||||
if (!self.isSysDarkPrefer) {
|
||||
self.setDark();
|
||||
}
|
||||
} else {
|
||||
if (self.isSysDarkPrefer) {
|
||||
self.setLight();
|
||||
}
|
||||
}
|
||||
|
||||
self.clearMode();
|
||||
}
|
||||
|
||||
self.notify();
|
||||
});
|
||||
} /* constructor() */
|
||||
|
||||
get sysDarkPrefers() {
|
||||
return window.matchMedia('(prefers-color-scheme: dark)');
|
||||
}
|
||||
|
||||
get isSysDarkPrefer() {
|
||||
return this.sysDarkPrefers.matches;
|
||||
}
|
||||
|
||||
get isDarkMode() {
|
||||
return this.mode === ModeToggle.DARK_MODE;
|
||||
}
|
||||
|
||||
get isLightMode() {
|
||||
return this.mode === ModeToggle.LIGHT_MODE;
|
||||
}
|
||||
|
||||
get hasMode() {
|
||||
return this.mode != null;
|
||||
}
|
||||
|
||||
get mode() {
|
||||
return sessionStorage.getItem(ModeToggle.MODE_KEY);
|
||||
}
|
||||
|
||||
/* get the current mode on screen */
|
||||
get modeStatus() {
|
||||
if (this.isDarkMode || (!this.hasMode && this.isSysDarkPrefer)) {
|
||||
return ModeToggle.DARK_MODE;
|
||||
} else {
|
||||
return ModeToggle.LIGHT_MODE;
|
||||
}
|
||||
}
|
||||
|
||||
setDark() {
|
||||
document.documentElement.setAttribute(ModeToggle.MODE_ATTR, ModeToggle.DARK_MODE);
|
||||
sessionStorage.setItem(ModeToggle.MODE_KEY, ModeToggle.DARK_MODE);
|
||||
}
|
||||
|
||||
setLight() {
|
||||
document.documentElement.setAttribute(ModeToggle.MODE_ATTR, ModeToggle.LIGHT_MODE);
|
||||
sessionStorage.setItem(ModeToggle.MODE_KEY, ModeToggle.LIGHT_MODE);
|
||||
}
|
||||
|
||||
clearMode() {
|
||||
document.documentElement.removeAttribute(ModeToggle.MODE_ATTR);
|
||||
sessionStorage.removeItem(ModeToggle.MODE_KEY);
|
||||
}
|
||||
|
||||
/* Notify another plugins that the theme mode has changed */
|
||||
notify() {
|
||||
window.postMessage(
|
||||
{
|
||||
direction: ModeToggle.ID,
|
||||
message: this.modeStatus
|
||||
},
|
||||
'*'
|
||||
);
|
||||
}
|
||||
|
||||
flipMode() {
|
||||
if (this.hasMode) {
|
||||
if (this.isSysDarkPrefer) {
|
||||
if (this.isLightMode) {
|
||||
this.clearMode();
|
||||
} else {
|
||||
this.setLight();
|
||||
}
|
||||
} else {
|
||||
if (this.isDarkMode) {
|
||||
this.clearMode();
|
||||
} else {
|
||||
this.setDark();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (this.isSysDarkPrefer) {
|
||||
this.setLight();
|
||||
} else {
|
||||
this.setDark();
|
||||
}
|
||||
}
|
||||
|
||||
this.notify();
|
||||
} /* flipMode() */
|
||||
} /* ModeToggle */
|
||||
|
||||
const modeToggle = new ModeToggle();
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<!-- A placeholder to allow defining custom metadata -->
|
||||
|
||||
</head>
|
||||
|
||||
|
||||
<body>
|
||||
<!-- The Side Bar -->
|
||||
|
||||
<aside aria-label="Sidebar" id="sidebar" class="d-flex flex-column align-items-end">
|
||||
<header class="profile-wrapper">
|
||||
<a href="/" id="avatar" class="rounded-circle">
|
||||
|
||||
</a>
|
||||
|
||||
<h1 class="site-title">
|
||||
<a href="/">AI-Takia</a>
|
||||
</h1>
|
||||
<p class="site-subtitle fst-italic mb-0">Latest Blogs on AI tech, Tools & SaaS</p>
|
||||
</header>
|
||||
<!-- .profile-wrapper -->
|
||||
|
||||
<nav class="flex-column flex-grow-1 w-100 ps-0">
|
||||
<ul class="nav">
|
||||
<!-- home -->
|
||||
<li class="nav-item">
|
||||
<a href="/" class="nav-link">
|
||||
<i class="fa-fw fas fa-home"></i>
|
||||
<span>HOME</span>
|
||||
</a>
|
||||
</li>
|
||||
<!-- the real tabs -->
|
||||
|
||||
<li class="nav-item">
|
||||
<a href="/categories/" class="nav-link">
|
||||
<i class="fa-fw fas fa-stream"></i>
|
||||
|
||||
|
||||
<span>CATEGORIES</span>
|
||||
</a>
|
||||
</li>
|
||||
<!-- .nav-item -->
|
||||
|
||||
<li class="nav-item">
|
||||
<a href="/tags/" class="nav-link">
|
||||
<i class="fa-fw fas fa-tags"></i>
|
||||
|
||||
|
||||
<span>TAGS</span>
|
||||
</a>
|
||||
</li>
|
||||
<!-- .nav-item -->
|
||||
|
||||
<li class="nav-item">
|
||||
<a href="/archives/" class="nav-link">
|
||||
<i class="fa-fw fas fa-archive"></i>
|
||||
|
||||
|
||||
<span>ARCHIVES</span>
|
||||
</a>
|
||||
</li>
|
||||
<!-- .nav-item -->
|
||||
|
||||
<li class="nav-item">
|
||||
<a href="/about/" class="nav-link">
|
||||
<i class="fa-fw fas fa-info-circle"></i>
|
||||
|
||||
|
||||
<span>ABOUT</span>
|
||||
</a>
|
||||
</li>
|
||||
<!-- .nav-item -->
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
<div class="sidebar-bottom d-flex flex-wrap align-items-center w-100">
|
||||
|
||||
<button type="button" class="mode-toggle btn" aria-label="Switch Mode">
|
||||
<i class="fas fa-adjust"></i>
|
||||
</button>
|
||||
|
||||
|
||||
<span class="icon-border"></span>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a
|
||||
href="https://github.com/ajaysi"
|
||||
aria-label="github"
|
||||
|
||||
|
||||
|
||||
target="_blank"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
rel="noopener noreferrer"
|
||||
|
||||
>
|
||||
<i class="fab fa-github"></i>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a
|
||||
href="https://twitter.com/ajaysi"
|
||||
aria-label="twitter"
|
||||
|
||||
|
||||
|
||||
target="_blank"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
rel="noopener noreferrer"
|
||||
|
||||
>
|
||||
<i class="fa-brands fa-x-twitter"></i>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a
|
||||
href="javascript:location.href = 'mailto:' + ['example','domain.com'].join('@')"
|
||||
aria-label="email"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
>
|
||||
<i class="fas fa-envelope"></i>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a
|
||||
href=""
|
||||
aria-label="linkedin"
|
||||
|
||||
|
||||
|
||||
target="_blank"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
rel="noopener noreferrer"
|
||||
|
||||
>
|
||||
<i class="fab fa-linkedin"></i>
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
<!-- .sidebar-bottom -->
|
||||
</aside>
|
||||
<!-- #sidebar -->
|
||||
|
||||
|
||||
<div id="main-wrapper" class="d-flex justify-content-center">
|
||||
<div class="container d-flex flex-column px-xxl-5">
|
||||
<!-- The Top Bar -->
|
||||
|
||||
<header id="topbar-wrapper" aria-label="Top Bar">
|
||||
<div
|
||||
id="topbar"
|
||||
class="d-flex align-items-center justify-content-between px-lg-3 h-100"
|
||||
>
|
||||
<nav id="breadcrumb" aria-label="Breadcrumb">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span>
|
||||
<a href="/">
|
||||
Home
|
||||
</a>
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
|
||||
<span>
|
||||
<a href="/categories">
|
||||
Categories
|
||||
</a>
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
|
||||
<span>Tutorial</span>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</nav>
|
||||
<!-- endof #breadcrumb -->
|
||||
|
||||
<button type="button" id="sidebar-trigger" class="btn btn-link">
|
||||
<i class="fas fa-bars fa-fw"></i>
|
||||
</button>
|
||||
|
||||
<div id="topbar-title">
|
||||
Category
|
||||
</div>
|
||||
|
||||
<button type="button" id="search-trigger" class="btn btn-link">
|
||||
<i class="fas fa-search fa-fw"></i>
|
||||
</button>
|
||||
|
||||
<search class="align-items-center ms-3 ms-lg-0">
|
||||
<i class="fas fa-search fa-fw"></i>
|
||||
<input
|
||||
class="form-control"
|
||||
id="search-input"
|
||||
type="search"
|
||||
aria-label="search"
|
||||
autocomplete="off"
|
||||
placeholder="Search..."
|
||||
>
|
||||
</search>
|
||||
<button type="button" class="btn btn-link text-decoration-none" id="search-cancel">Cancel</button>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
|
||||
<div class="row flex-grow-1">
|
||||
<main aria-label="Main Content" class="col-12 col-lg-11 col-xl-9 px-md-4">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<article class="px-1">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div id="page-category">
|
||||
<h1 class="ps-lg-2">
|
||||
<i class="far fa-folder-open fa-fw text-muted"></i>
|
||||
Tutorial
|
||||
<span class="lead text-muted ps-2">2</span>
|
||||
</h1>
|
||||
|
||||
<ul class="content ps-0">
|
||||
|
||||
<li class="d-flex justify-content-between px-md-3">
|
||||
<a href="/posts/mansarovar-trek/">Mansarovar Trek</a>
|
||||
<span class="dash flex-grow-1"></span>
|
||||
<!--
|
||||
Date format snippet
|
||||
See: ${JS_ROOT}/utils/locale-dateime.js
|
||||
-->
|
||||
|
||||
|
||||
|
||||
|
||||
<time
|
||||
|
||||
class="text-muted small text-nowrap"
|
||||
|
||||
data-ts="1565355300"
|
||||
data-df="ll"
|
||||
|
||||
>
|
||||
Aug 9, 2019
|
||||
</time>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="d-flex justify-content-between px-md-3">
|
||||
<a href="/posts/getting-started/">Getting Started</a>
|
||||
<span class="dash flex-grow-1"></span>
|
||||
<!--
|
||||
Date format snippet
|
||||
See: ${JS_ROOT}/utils/locale-dateime.js
|
||||
-->
|
||||
|
||||
|
||||
|
||||
|
||||
<time
|
||||
|
||||
class="text-muted small text-nowrap"
|
||||
|
||||
data-ts="1565355300"
|
||||
data-df="ll"
|
||||
|
||||
>
|
||||
Aug 9, 2019
|
||||
</time>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
</article>
|
||||
|
||||
|
||||
</main>
|
||||
|
||||
<!-- panel -->
|
||||
<aside aria-label="Panel" id="panel-wrapper" class="col-xl-3 ps-2 mb-5 text-muted">
|
||||
<div class="access">
|
||||
<!-- Get the last 5 posts from lastmod list. -->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- The trending tags list -->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<section>
|
||||
<h2 class="panel-heading">Trending Tags</h2>
|
||||
<div class="d-flex flex-wrap mt-3 mb-1 me-3">
|
||||
|
||||
|
||||
<a class="post-tag btn btn-outline-primary" href="/tags/getting-started/">getting started</a>
|
||||
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</aside>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<!-- tail -->
|
||||
<div id="tail-wrapper" class="col-12 col-lg-11 col-xl-9 px-md-4">
|
||||
|
||||
|
||||
<!-- The Footer -->
|
||||
|
||||
<footer
|
||||
aria-label="Site Info"
|
||||
class="
|
||||
d-flex flex-column justify-content-center text-muted
|
||||
flex-lg-row justify-content-lg-between align-items-lg-center pb-lg-3
|
||||
"
|
||||
>
|
||||
<p>
|
||||
©
|
||||
<time>2023</time>
|
||||
<a href="https://twitter.com/username">ajaysi</a>.
|
||||
|
||||
<span
|
||||
data-bs-toggle="tooltip"
|
||||
data-bs-placement="top"
|
||||
title="Except where otherwise noted, the blog posts on this site are licensed under the Creative Commons Attribution 4.0 International (CC BY 4.0) License by the author."
|
||||
>Some rights reserved.</span>
|
||||
|
||||
</p>
|
||||
|
||||
<p>Using the <a href="https://github.com/cotes2020/jekyll-theme-chirpy" target="_blank" rel="noopener">Chirpy</a> theme for <a href="https://jekyllrb.com" target="_blank" rel="noopener">Jekyll</a>
|
||||
</p>
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- The Search results -->
|
||||
|
||||
<div id="search-result-wrapper" class="d-flex justify-content-center unloaded">
|
||||
<div class="col-11 content">
|
||||
<div id="search-hints">
|
||||
<!-- The trending tags list -->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<section>
|
||||
<h2 class="panel-heading">Trending Tags</h2>
|
||||
<div class="d-flex flex-wrap mt-3 mb-1 me-3">
|
||||
|
||||
|
||||
<a class="post-tag btn btn-outline-primary" href="/tags/getting-started/">getting started</a>
|
||||
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
<div id="search-results" class="d-flex flex-wrap justify-content-center text-muted mt-3"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<aside aria-label="Scroll to Top">
|
||||
<button id="back-to-top" type="button" class="btn btn-lg btn-box-shadow">
|
||||
<i class="fas fa-angle-up"></i>
|
||||
</button>
|
||||
</aside>
|
||||
</div>
|
||||
|
||||
<div id="mask"></div>
|
||||
|
||||
|
||||
<aside
|
||||
id="notification"
|
||||
class="toast"
|
||||
role="alert"
|
||||
aria-live="assertive"
|
||||
aria-atomic="true"
|
||||
data-bs-animation="true"
|
||||
data-bs-autohide="false"
|
||||
>
|
||||
<div class="toast-header">
|
||||
<button
|
||||
type="button"
|
||||
class="btn-close ms-auto"
|
||||
data-bs-dismiss="toast"
|
||||
aria-label="Close"
|
||||
></button>
|
||||
</div>
|
||||
<div class="toast-body text-center pt-0">
|
||||
<p class="px-2 mb-3">A new version of content is available.</p>
|
||||
<button type="button" class="btn btn-primary" aria-label="Update">
|
||||
Update
|
||||
</button>
|
||||
</div>
|
||||
</aside>
|
||||
|
||||
|
||||
|
||||
<!-- JavaScripts -->
|
||||
|
||||
<!-- JS selector for site. -->
|
||||
|
||||
<!-- commons -->
|
||||
|
||||
|
||||
|
||||
<!-- layout specified -->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/combine/npm/jquery@3.7.1/dist/jquery.min.js,npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js,npm/simple-jekyll-search@1.10.0/dest/simple-jekyll-search.min.js,npm/dayjs@1.11.10/dayjs.min.js,npm/dayjs@1.11.10/locale/en.min.js,npm/dayjs@1.11.10/plugin/relativeTime.min.js,npm/dayjs@1.11.10/plugin/localizedFormat.min.js"></script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script defer src="/assets/js/dist/misc.min.js"></script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!--
|
||||
Jekyll Simple Search loader
|
||||
See: <https://github.com/christian-fei/Simple-Jekyll-Search>
|
||||
-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
/* Note: dependent library will be loaded in `js-selector.html` */
|
||||
SimpleJekyllSearch({
|
||||
searchInput: document.getElementById('search-input'),
|
||||
resultsContainer: document.getElementById('search-results'),
|
||||
json: '/assets/js/data/search.json',
|
||||
searchResultTemplate: ' <article class="px-1 px-sm-2 px-lg-4 px-xl-0"> <header> <h2><a href="{url}">{title}</a></h2> <div class="post-meta d-flex flex-column flex-sm-row text-muted mt-1 mb-1"> {categories} {tags} </div> </header> <p>{snippet}</p> </article>',
|
||||
noResultsText: '<p class="mt-5"></p>',
|
||||
templateMiddleware: function(prop, value, template) {
|
||||
if (prop === 'categories') {
|
||||
if (value === '') {
|
||||
return `${value}`;
|
||||
} else {
|
||||
return `<div class="me-sm-4"><i class="far fa-folder fa-fw"></i>${value}</div>`;
|
||||
}
|
||||
}
|
||||
|
||||
if (prop === 'tags') {
|
||||
if (value === '') {
|
||||
return `${value}`;
|
||||
} else {
|
||||
return `<div><i class="fa fa-tag fa-fw"></i>${value}</div>`;
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
142
pseo_website/_site/feed.xml
Normal file
@@ -0,0 +1,142 @@
|
||||
|
||||
|
||||
<feed xmlns="http://www.w3.org/2005/Atom">
|
||||
<id>http://localhost:4000/</id>
|
||||
<title>AI-Takia</title>
|
||||
<subtitle>Begginer friendly AI technologies simplified & explained. Know & boost productivity with latest AI tools.</subtitle>
|
||||
<updated>2023-10-22T14:10:02+05:30</updated>
|
||||
<author>
|
||||
<name>ajaysi</name>
|
||||
<uri>http://localhost:4000/</uri>
|
||||
</author>
|
||||
<link rel="self" type="application/atom+xml" href="http://localhost:4000/feed.xml"/>
|
||||
<link rel="alternate" type="text/html" hreflang="en"
|
||||
href="http://localhost:4000/"/>
|
||||
<generator uri="https://jekyllrb.com/" version="4.3.2">Jekyll</generator>
|
||||
<rights> © 2023 ajaysi </rights>
|
||||
<icon>/assets/img/favicons/favicon.ico</icon>
|
||||
<logo>/assets/img/favicons/favicon-96x96.png</logo>
|
||||
|
||||
|
||||
|
||||
<entry>
|
||||
<title>This Is Blog Title</title>
|
||||
<link href="http://localhost:4000/posts/This-is-Blog-Title/" rel="alternate" type="text/html" title="This Is Blog Title" />
|
||||
<published>2023-10-22T00:00:00+05:30</published>
|
||||
|
||||
<updated>2023-10-22T00:00:00+05:30</updated>
|
||||
|
||||
<id>http://localhost:4000/posts/This-is-Blog-Title/</id>
|
||||
<content src="http://localhost:4000/posts/This-is-Blog-Title/" />
|
||||
<author>
|
||||
<name>ajaysi</name>
|
||||
</author>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<summary>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
This is the content of my blog post.
|
||||
|
||||
</summary>
|
||||
|
||||
|
||||
</entry>
|
||||
|
||||
|
||||
<entry>
|
||||
<title>Mansarovar Trek</title>
|
||||
<link href="http://localhost:4000/posts/mansarovar-trek/" rel="alternate" type="text/html" title="Mansarovar Trek" />
|
||||
<published>2019-08-09T18:25:00+05:30</published>
|
||||
|
||||
<updated>2019-08-09T18:25:00+05:30</updated>
|
||||
|
||||
<id>http://localhost:4000/posts/mansarovar-trek/</id>
|
||||
<content src="http://localhost:4000/posts/mansarovar-trek/" />
|
||||
<author>
|
||||
<name>cotes</name>
|
||||
</author>
|
||||
|
||||
|
||||
|
||||
<category term="Blogging" />
|
||||
|
||||
<category term="Tutorial" />
|
||||
|
||||
|
||||
|
||||
|
||||
<summary>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Discover the Ancient Tibetan Tradition of Gurla Parikrama and Mandhata in Simikot, Rara Lake, and Kailash Plateau.
|
||||
Introduction
|
||||
Dive into the depths of Tibetan history and tradition with the ancient Gurla Parikrama and Mandhata. Explore the spiritual significance, the breathtakingly beautiful landscapes, and the captivating culture of Simikot, Rara Lake, and Kailash Plateau. Discover the best r...
|
||||
</summary>
|
||||
|
||||
|
||||
</entry>
|
||||
|
||||
|
||||
<entry>
|
||||
<title>Getting Started</title>
|
||||
<link href="http://localhost:4000/posts/getting-started/" rel="alternate" type="text/html" title="Getting Started" />
|
||||
<published>2019-08-09T18:25:00+05:30</published>
|
||||
|
||||
<updated>2019-08-09T18:25:00+05:30</updated>
|
||||
|
||||
<id>http://localhost:4000/posts/getting-started/</id>
|
||||
<content src="http://localhost:4000/posts/getting-started/" />
|
||||
<author>
|
||||
<name>cotes</name>
|
||||
</author>
|
||||
|
||||
|
||||
|
||||
<category term="Blogging" />
|
||||
|
||||
<category term="Tutorial" />
|
||||
|
||||
|
||||
|
||||
|
||||
<summary>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Prerequisites
|
||||
|
||||
Follow the instructions in the Jekyll Docs to complete the installation of the basic environment. Git also needs to be installed.
|
||||
|
||||
Installation
|
||||
|
||||
Creating a New Site
|
||||
|
||||
There are two ways to create a new repository for this theme:
|
||||
|
||||
|
||||
Using the Chirpy Starter - Easy to upgrade, isolates irrelevant project files so you can focus on writing.
|
||||
GitHub Fork - Convenient for custom devel...
|
||||
</summary>
|
||||
|
||||
|
||||
</entry>
|
||||
|
||||
</feed>
|
||||
|
||||
|
||||
1127
pseo_website/_site/index.html
Normal file
11
pseo_website/_site/norobots/index.html
Normal file
@@ -0,0 +1,11 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en-US">
|
||||
<meta charset="utf-8">
|
||||
<title>Redirecting…</title>
|
||||
<link rel="canonical" href="http://localhost:4000/404.html">
|
||||
<script>location="http://localhost:4000/404.html"</script>
|
||||
<meta http-equiv="refresh" content="0; url=http://localhost:4000/404.html">
|
||||
<meta name="robots" content="noindex">
|
||||
<h1>Redirecting…</h1>
|
||||
<a href="http://localhost:4000/404.html">Click here if you are not redirected.</a>
|
||||
</html>
|
||||
1182
pseo_website/_site/posts/This-is-Blog-Title/index.html
Normal file
1809
pseo_website/_site/posts/getting-started/index.html
Normal file
11
pseo_website/_site/posts/index.html
Normal file
@@ -0,0 +1,11 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en-US">
|
||||
<meta charset="utf-8">
|
||||
<title>Redirecting…</title>
|
||||
<link rel="canonical" href="http://localhost:4000/404.html">
|
||||
<script>location="http://localhost:4000/404.html"</script>
|
||||
<meta http-equiv="refresh" content="0; url=http://localhost:4000/404.html">
|
||||
<meta name="robots" content="noindex">
|
||||
<h1>Redirecting…</h1>
|
||||
<a href="http://localhost:4000/404.html">Click here if you are not redirected.</a>
|
||||
</html>
|
||||
1343
pseo_website/_site/posts/mansarovar-trek/index.html
Normal file
1
pseo_website/_site/redirects.json
Normal file
@@ -0,0 +1 @@
|
||||
{"/norobots/":"http://localhost:4000/404.html","/assets/":"http://localhost:4000/404.html","/posts/":"http://localhost:4000/404.html"}
|
||||
5
pseo_website/_site/robots.txt
Normal file
@@ -0,0 +1,5 @@
|
||||
User-agent: *
|
||||
|
||||
Disallow: /norobots/
|
||||
|
||||
Sitemap: http://localhost:4000/sitemap.xml
|
||||
43
pseo_website/_site/sitemap.xml
Normal file
@@ -0,0 +1,43 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||
<url>
|
||||
<loc>http://localhost:4000/posts/getting-started/</loc>
|
||||
<lastmod>2019-08-09T18:25:00+05:30</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>http://localhost:4000/posts/mansarovar-trek/</loc>
|
||||
<lastmod>2019-08-09T18:25:00+05:30</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>http://localhost:4000/posts/This-is-Blog-Title/</loc>
|
||||
<lastmod>2023-10-22T00:00:00+05:30</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>http://localhost:4000/categories/</loc>
|
||||
<lastmod>2023-10-22T14:10:02+05:30</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>http://localhost:4000/tags/</loc>
|
||||
<lastmod>2023-10-22T14:10:02+05:30</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>http://localhost:4000/archives/</loc>
|
||||
<lastmod>2023-10-22T14:10:02+05:30</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>http://localhost:4000/about/</loc>
|
||||
<lastmod>2023-10-22T14:10:02+05:30</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>http://localhost:4000/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>http://localhost:4000/tags/getting-started/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>http://localhost:4000/categories/blogging/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>http://localhost:4000/categories/tutorial/</loc>
|
||||
</url>
|
||||
</urlset>
|
||||
84
pseo_website/_site/sw.js
Normal file
@@ -0,0 +1,84 @@
|
||||
self.importScripts('/assets/js/data/swcache.js');
|
||||
|
||||
const cacheName = 'chirpy-1697964002';
|
||||
|
||||
function verifyDomain(url) {
|
||||
for (const domain of allowedDomains) {
|
||||
const regex = RegExp(`^http(s)?:\/\/${domain}\/`);
|
||||
if (regex.test(url)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
function isExcluded(url) {
|
||||
for (const item of denyUrls) {
|
||||
if (url === item) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
self.addEventListener('install', (event) => {
|
||||
event.waitUntil(
|
||||
caches.open(cacheName).then((cache) => {
|
||||
return cache.addAll(resource);
|
||||
})
|
||||
);
|
||||
});
|
||||
|
||||
self.addEventListener('activate', (event) => {
|
||||
event.waitUntil(
|
||||
caches.keys().then((keyList) => {
|
||||
return Promise.all(
|
||||
keyList.map((key) => {
|
||||
if (key !== cacheName) {
|
||||
return caches.delete(key);
|
||||
}
|
||||
})
|
||||
);
|
||||
})
|
||||
);
|
||||
});
|
||||
|
||||
self.addEventListener('message', (event) => {
|
||||
if (event.data === 'SKIP_WAITING') {
|
||||
self.skipWaiting();
|
||||
}
|
||||
});
|
||||
|
||||
self.addEventListener('fetch', (event) => {
|
||||
event.respondWith(
|
||||
caches.match(event.request).then((response) => {
|
||||
if (response) {
|
||||
return response;
|
||||
}
|
||||
|
||||
return fetch(event.request).then((response) => {
|
||||
const url = event.request.url;
|
||||
|
||||
if (
|
||||
event.request.method !== 'GET' ||
|
||||
!verifyDomain(url) ||
|
||||
isExcluded(url)
|
||||
) {
|
||||
return response;
|
||||
}
|
||||
|
||||
/* see: <https://developers.google.com/web/fundamentals/primers/service-workers#cache_and_return_requests> */
|
||||
let responseToCache = response.clone();
|
||||
|
||||
caches.open(cacheName).then((cache) => {
|
||||
/* console.log('[sw] Caching new resource: ' + event.request.url); */
|
||||
cache.put(event.request, responseToCache);
|
||||
});
|
||||
|
||||
return response;
|
||||
});
|
||||
})
|
||||
);
|
||||
});
|
||||
|
||||
904
pseo_website/_site/tags/getting-started/index.html
Normal file
@@ -0,0 +1,904 @@
|
||||
<!doctype html>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- `site.alt_lang` can specify a language different from the UI -->
|
||||
<html lang="en" >
|
||||
<!-- The Head -->
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<meta name="theme-color" media="(prefers-color-scheme: light)" content="#f7f7f7">
|
||||
<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#1b1b1e">
|
||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
|
||||
<meta
|
||||
name="viewport"
|
||||
content="width=device-width, user-scalable=no initial-scale=1, shrink-to-fit=no, viewport-fit=cover"
|
||||
>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Begin Jekyll SEO tag v2.8.0 -->
|
||||
<meta name="generator" content="Jekyll v4.3.2" />
|
||||
<meta property="og:title" content="getting started" />
|
||||
<meta property="og:locale" content="en" />
|
||||
<meta name="description" content="Begginer friendly AI technologies simplified & explained. Know & boost productivity with latest AI tools." />
|
||||
<meta property="og:description" content="Begginer friendly AI technologies simplified & explained. Know & boost productivity with latest AI tools." />
|
||||
<link rel="canonical" href="http://localhost:4000/tags/getting-started/" />
|
||||
<meta property="og:url" content="http://localhost:4000/tags/getting-started/" />
|
||||
<meta property="og:site_name" content="AI-Takia" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta name="twitter:card" content="summary" />
|
||||
<meta property="twitter:title" content="getting started" />
|
||||
<meta name="twitter:site" content="@ajaysi" />
|
||||
<script type="application/ld+json">
|
||||
{"@context":"https://schema.org","@type":"WebPage","description":"Begginer friendly AI technologies simplified & explained. Know & boost productivity with latest AI tools.","headline":"getting started","url":"http://localhost:4000/tags/getting-started/"}</script>
|
||||
<!-- End Jekyll SEO tag -->
|
||||
|
||||
|
||||
|
||||
<title>getting started | AI-Takia
|
||||
</title>
|
||||
|
||||
<!--
|
||||
The Favicons for Web, Android, Microsoft, and iOS (iPhone and iPad) Apps
|
||||
Generated by: https://realfavicongenerator.net/
|
||||
-->
|
||||
|
||||
|
||||
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/assets/img/favicons/apple-touch-icon.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="/assets/img/favicons/favicon-32x32.png">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="/assets/img/favicons/favicon-16x16.png">
|
||||
<link rel="manifest" href="/assets/img/favicons/site.webmanifest">
|
||||
<link rel="shortcut icon" href="/assets/img/favicons/favicon.ico">
|
||||
<meta name="apple-mobile-web-app-title" content="AI-Takia">
|
||||
<meta name="application-name" content="AI-Takia">
|
||||
<meta name="msapplication-TileColor" content="#da532c">
|
||||
<meta name="msapplication-config" content="/assets/img/favicons/browserconfig.xml">
|
||||
<meta name="theme-color" content="#ffffff">
|
||||
|
||||
|
||||
|
||||
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com" >
|
||||
<link rel="dns-prefetch" href="https://fonts.googleapis.com" >
|
||||
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link rel="dns-prefetch" href="https://fonts.gstatic.com" crossorigin>
|
||||
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com" >
|
||||
<link rel="dns-prefetch" href="https://fonts.googleapis.com" >
|
||||
|
||||
<link rel="preconnect" href="https://cdn.jsdelivr.net" >
|
||||
<link rel="dns-prefetch" href="https://cdn.jsdelivr.net" >
|
||||
|
||||
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Lato&family=Source+Sans+Pro:wght@400;600;700;900&display=swap">
|
||||
|
||||
|
||||
<!-- GA -->
|
||||
|
||||
|
||||
<!-- Bootstrap -->
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css">
|
||||
|
||||
<!-- Font Awesome -->
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.4.2/css/all.min.css">
|
||||
|
||||
<link rel="stylesheet" href="/assets/css/jekyll-theme-chirpy.css">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- JavaScript -->
|
||||
|
||||
|
||||
<!-- Switch the mode between dark and light. -->
|
||||
|
||||
<script type="text/javascript">
|
||||
class ModeToggle {
|
||||
static get MODE_KEY() {
|
||||
return 'mode';
|
||||
}
|
||||
static get MODE_ATTR() {
|
||||
return 'data-mode';
|
||||
}
|
||||
static get DARK_MODE() {
|
||||
return 'dark';
|
||||
}
|
||||
static get LIGHT_MODE() {
|
||||
return 'light';
|
||||
}
|
||||
static get ID() {
|
||||
return 'mode-toggle';
|
||||
}
|
||||
|
||||
constructor() {
|
||||
if (this.hasMode) {
|
||||
if (this.isDarkMode) {
|
||||
if (!this.isSysDarkPrefer) {
|
||||
this.setDark();
|
||||
}
|
||||
} else {
|
||||
if (this.isSysDarkPrefer) {
|
||||
this.setLight();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let self = this;
|
||||
|
||||
/* always follow the system prefers */
|
||||
this.sysDarkPrefers.addEventListener('change', () => {
|
||||
if (self.hasMode) {
|
||||
if (self.isDarkMode) {
|
||||
if (!self.isSysDarkPrefer) {
|
||||
self.setDark();
|
||||
}
|
||||
} else {
|
||||
if (self.isSysDarkPrefer) {
|
||||
self.setLight();
|
||||
}
|
||||
}
|
||||
|
||||
self.clearMode();
|
||||
}
|
||||
|
||||
self.notify();
|
||||
});
|
||||
} /* constructor() */
|
||||
|
||||
get sysDarkPrefers() {
|
||||
return window.matchMedia('(prefers-color-scheme: dark)');
|
||||
}
|
||||
|
||||
get isSysDarkPrefer() {
|
||||
return this.sysDarkPrefers.matches;
|
||||
}
|
||||
|
||||
get isDarkMode() {
|
||||
return this.mode === ModeToggle.DARK_MODE;
|
||||
}
|
||||
|
||||
get isLightMode() {
|
||||
return this.mode === ModeToggle.LIGHT_MODE;
|
||||
}
|
||||
|
||||
get hasMode() {
|
||||
return this.mode != null;
|
||||
}
|
||||
|
||||
get mode() {
|
||||
return sessionStorage.getItem(ModeToggle.MODE_KEY);
|
||||
}
|
||||
|
||||
/* get the current mode on screen */
|
||||
get modeStatus() {
|
||||
if (this.isDarkMode || (!this.hasMode && this.isSysDarkPrefer)) {
|
||||
return ModeToggle.DARK_MODE;
|
||||
} else {
|
||||
return ModeToggle.LIGHT_MODE;
|
||||
}
|
||||
}
|
||||
|
||||
setDark() {
|
||||
document.documentElement.setAttribute(ModeToggle.MODE_ATTR, ModeToggle.DARK_MODE);
|
||||
sessionStorage.setItem(ModeToggle.MODE_KEY, ModeToggle.DARK_MODE);
|
||||
}
|
||||
|
||||
setLight() {
|
||||
document.documentElement.setAttribute(ModeToggle.MODE_ATTR, ModeToggle.LIGHT_MODE);
|
||||
sessionStorage.setItem(ModeToggle.MODE_KEY, ModeToggle.LIGHT_MODE);
|
||||
}
|
||||
|
||||
clearMode() {
|
||||
document.documentElement.removeAttribute(ModeToggle.MODE_ATTR);
|
||||
sessionStorage.removeItem(ModeToggle.MODE_KEY);
|
||||
}
|
||||
|
||||
/* Notify another plugins that the theme mode has changed */
|
||||
notify() {
|
||||
window.postMessage(
|
||||
{
|
||||
direction: ModeToggle.ID,
|
||||
message: this.modeStatus
|
||||
},
|
||||
'*'
|
||||
);
|
||||
}
|
||||
|
||||
flipMode() {
|
||||
if (this.hasMode) {
|
||||
if (this.isSysDarkPrefer) {
|
||||
if (this.isLightMode) {
|
||||
this.clearMode();
|
||||
} else {
|
||||
this.setLight();
|
||||
}
|
||||
} else {
|
||||
if (this.isDarkMode) {
|
||||
this.clearMode();
|
||||
} else {
|
||||
this.setDark();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (this.isSysDarkPrefer) {
|
||||
this.setLight();
|
||||
} else {
|
||||
this.setDark();
|
||||
}
|
||||
}
|
||||
|
||||
this.notify();
|
||||
} /* flipMode() */
|
||||
} /* ModeToggle */
|
||||
|
||||
const modeToggle = new ModeToggle();
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<!-- A placeholder to allow defining custom metadata -->
|
||||
|
||||
</head>
|
||||
|
||||
|
||||
<body>
|
||||
<!-- The Side Bar -->
|
||||
|
||||
<aside aria-label="Sidebar" id="sidebar" class="d-flex flex-column align-items-end">
|
||||
<header class="profile-wrapper">
|
||||
<a href="/" id="avatar" class="rounded-circle">
|
||||
|
||||
</a>
|
||||
|
||||
<h1 class="site-title">
|
||||
<a href="/">AI-Takia</a>
|
||||
</h1>
|
||||
<p class="site-subtitle fst-italic mb-0">Latest Blogs on AI tech, Tools & SaaS</p>
|
||||
</header>
|
||||
<!-- .profile-wrapper -->
|
||||
|
||||
<nav class="flex-column flex-grow-1 w-100 ps-0">
|
||||
<ul class="nav">
|
||||
<!-- home -->
|
||||
<li class="nav-item">
|
||||
<a href="/" class="nav-link">
|
||||
<i class="fa-fw fas fa-home"></i>
|
||||
<span>HOME</span>
|
||||
</a>
|
||||
</li>
|
||||
<!-- the real tabs -->
|
||||
|
||||
<li class="nav-item">
|
||||
<a href="/categories/" class="nav-link">
|
||||
<i class="fa-fw fas fa-stream"></i>
|
||||
|
||||
|
||||
<span>CATEGORIES</span>
|
||||
</a>
|
||||
</li>
|
||||
<!-- .nav-item -->
|
||||
|
||||
<li class="nav-item">
|
||||
<a href="/tags/" class="nav-link">
|
||||
<i class="fa-fw fas fa-tags"></i>
|
||||
|
||||
|
||||
<span>TAGS</span>
|
||||
</a>
|
||||
</li>
|
||||
<!-- .nav-item -->
|
||||
|
||||
<li class="nav-item">
|
||||
<a href="/archives/" class="nav-link">
|
||||
<i class="fa-fw fas fa-archive"></i>
|
||||
|
||||
|
||||
<span>ARCHIVES</span>
|
||||
</a>
|
||||
</li>
|
||||
<!-- .nav-item -->
|
||||
|
||||
<li class="nav-item">
|
||||
<a href="/about/" class="nav-link">
|
||||
<i class="fa-fw fas fa-info-circle"></i>
|
||||
|
||||
|
||||
<span>ABOUT</span>
|
||||
</a>
|
||||
</li>
|
||||
<!-- .nav-item -->
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
<div class="sidebar-bottom d-flex flex-wrap align-items-center w-100">
|
||||
|
||||
<button type="button" class="mode-toggle btn" aria-label="Switch Mode">
|
||||
<i class="fas fa-adjust"></i>
|
||||
</button>
|
||||
|
||||
|
||||
<span class="icon-border"></span>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a
|
||||
href="https://github.com/ajaysi"
|
||||
aria-label="github"
|
||||
|
||||
|
||||
|
||||
target="_blank"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
rel="noopener noreferrer"
|
||||
|
||||
>
|
||||
<i class="fab fa-github"></i>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a
|
||||
href="https://twitter.com/ajaysi"
|
||||
aria-label="twitter"
|
||||
|
||||
|
||||
|
||||
target="_blank"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
rel="noopener noreferrer"
|
||||
|
||||
>
|
||||
<i class="fa-brands fa-x-twitter"></i>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a
|
||||
href="javascript:location.href = 'mailto:' + ['example','domain.com'].join('@')"
|
||||
aria-label="email"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
>
|
||||
<i class="fas fa-envelope"></i>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a
|
||||
href=""
|
||||
aria-label="linkedin"
|
||||
|
||||
|
||||
|
||||
target="_blank"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
rel="noopener noreferrer"
|
||||
|
||||
>
|
||||
<i class="fab fa-linkedin"></i>
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
<!-- .sidebar-bottom -->
|
||||
</aside>
|
||||
<!-- #sidebar -->
|
||||
|
||||
|
||||
<div id="main-wrapper" class="d-flex justify-content-center">
|
||||
<div class="container d-flex flex-column px-xxl-5">
|
||||
<!-- The Top Bar -->
|
||||
|
||||
<header id="topbar-wrapper" aria-label="Top Bar">
|
||||
<div
|
||||
id="topbar"
|
||||
class="d-flex align-items-center justify-content-between px-lg-3 h-100"
|
||||
>
|
||||
<nav id="breadcrumb" aria-label="Breadcrumb">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span>
|
||||
<a href="/">
|
||||
Home
|
||||
</a>
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
|
||||
<span>
|
||||
<a href="/tags">
|
||||
Tags
|
||||
</a>
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
|
||||
<span>getting started</span>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</nav>
|
||||
<!-- endof #breadcrumb -->
|
||||
|
||||
<button type="button" id="sidebar-trigger" class="btn btn-link">
|
||||
<i class="fas fa-bars fa-fw"></i>
|
||||
</button>
|
||||
|
||||
<div id="topbar-title">
|
||||
Tag
|
||||
</div>
|
||||
|
||||
<button type="button" id="search-trigger" class="btn btn-link">
|
||||
<i class="fas fa-search fa-fw"></i>
|
||||
</button>
|
||||
|
||||
<search class="align-items-center ms-3 ms-lg-0">
|
||||
<i class="fas fa-search fa-fw"></i>
|
||||
<input
|
||||
class="form-control"
|
||||
id="search-input"
|
||||
type="search"
|
||||
aria-label="search"
|
||||
autocomplete="off"
|
||||
placeholder="Search..."
|
||||
>
|
||||
</search>
|
||||
<button type="button" class="btn btn-link text-decoration-none" id="search-cancel">Cancel</button>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
|
||||
<div class="row flex-grow-1">
|
||||
<main aria-label="Main Content" class="col-12 col-lg-11 col-xl-9 px-md-4">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<article class="px-1">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div id="page-tag">
|
||||
<h1 class="ps-lg-2">
|
||||
<i class="fa fa-tag fa-fw text-muted"></i>
|
||||
getting started
|
||||
<span class="lead text-muted ps-2">2</span>
|
||||
</h1>
|
||||
<ul class="content ps-0">
|
||||
|
||||
<li class="d-flex justify-content-between px-md-3">
|
||||
<a href="/posts/mansarovar-trek/">Mansarovar Trek</a>
|
||||
<span class="dash flex-grow-1"></span>
|
||||
<!--
|
||||
Date format snippet
|
||||
See: ${JS_ROOT}/utils/locale-dateime.js
|
||||
-->
|
||||
|
||||
|
||||
|
||||
|
||||
<time
|
||||
|
||||
class="text-muted small text-nowrap"
|
||||
|
||||
data-ts="1565355300"
|
||||
data-df="ll"
|
||||
|
||||
>
|
||||
Aug 9, 2019
|
||||
</time>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="d-flex justify-content-between px-md-3">
|
||||
<a href="/posts/getting-started/">Getting Started</a>
|
||||
<span class="dash flex-grow-1"></span>
|
||||
<!--
|
||||
Date format snippet
|
||||
See: ${JS_ROOT}/utils/locale-dateime.js
|
||||
-->
|
||||
|
||||
|
||||
|
||||
|
||||
<time
|
||||
|
||||
class="text-muted small text-nowrap"
|
||||
|
||||
data-ts="1565355300"
|
||||
data-df="ll"
|
||||
|
||||
>
|
||||
Aug 9, 2019
|
||||
</time>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
</article>
|
||||
|
||||
|
||||
</main>
|
||||
|
||||
<!-- panel -->
|
||||
<aside aria-label="Panel" id="panel-wrapper" class="col-xl-3 ps-2 mb-5 text-muted">
|
||||
<div class="access">
|
||||
<!-- Get the last 5 posts from lastmod list. -->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- The trending tags list -->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<section>
|
||||
<h2 class="panel-heading">Trending Tags</h2>
|
||||
<div class="d-flex flex-wrap mt-3 mb-1 me-3">
|
||||
|
||||
|
||||
<a class="post-tag btn btn-outline-primary" href="/tags/getting-started/">getting started</a>
|
||||
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</aside>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<!-- tail -->
|
||||
<div id="tail-wrapper" class="col-12 col-lg-11 col-xl-9 px-md-4">
|
||||
|
||||
|
||||
<!-- The Footer -->
|
||||
|
||||
<footer
|
||||
aria-label="Site Info"
|
||||
class="
|
||||
d-flex flex-column justify-content-center text-muted
|
||||
flex-lg-row justify-content-lg-between align-items-lg-center pb-lg-3
|
||||
"
|
||||
>
|
||||
<p>
|
||||
©
|
||||
<time>2023</time>
|
||||
<a href="https://twitter.com/username">ajaysi</a>.
|
||||
|
||||
<span
|
||||
data-bs-toggle="tooltip"
|
||||
data-bs-placement="top"
|
||||
title="Except where otherwise noted, the blog posts on this site are licensed under the Creative Commons Attribution 4.0 International (CC BY 4.0) License by the author."
|
||||
>Some rights reserved.</span>
|
||||
|
||||
</p>
|
||||
|
||||
<p>Using the <a href="https://github.com/cotes2020/jekyll-theme-chirpy" target="_blank" rel="noopener">Chirpy</a> theme for <a href="https://jekyllrb.com" target="_blank" rel="noopener">Jekyll</a>
|
||||
</p>
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- The Search results -->
|
||||
|
||||
<div id="search-result-wrapper" class="d-flex justify-content-center unloaded">
|
||||
<div class="col-11 content">
|
||||
<div id="search-hints">
|
||||
<!-- The trending tags list -->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<section>
|
||||
<h2 class="panel-heading">Trending Tags</h2>
|
||||
<div class="d-flex flex-wrap mt-3 mb-1 me-3">
|
||||
|
||||
|
||||
<a class="post-tag btn btn-outline-primary" href="/tags/getting-started/">getting started</a>
|
||||
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
<div id="search-results" class="d-flex flex-wrap justify-content-center text-muted mt-3"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<aside aria-label="Scroll to Top">
|
||||
<button id="back-to-top" type="button" class="btn btn-lg btn-box-shadow">
|
||||
<i class="fas fa-angle-up"></i>
|
||||
</button>
|
||||
</aside>
|
||||
</div>
|
||||
|
||||
<div id="mask"></div>
|
||||
|
||||
|
||||
<aside
|
||||
id="notification"
|
||||
class="toast"
|
||||
role="alert"
|
||||
aria-live="assertive"
|
||||
aria-atomic="true"
|
||||
data-bs-animation="true"
|
||||
data-bs-autohide="false"
|
||||
>
|
||||
<div class="toast-header">
|
||||
<button
|
||||
type="button"
|
||||
class="btn-close ms-auto"
|
||||
data-bs-dismiss="toast"
|
||||
aria-label="Close"
|
||||
></button>
|
||||
</div>
|
||||
<div class="toast-body text-center pt-0">
|
||||
<p class="px-2 mb-3">A new version of content is available.</p>
|
||||
<button type="button" class="btn btn-primary" aria-label="Update">
|
||||
Update
|
||||
</button>
|
||||
</div>
|
||||
</aside>
|
||||
|
||||
|
||||
|
||||
<!-- JavaScripts -->
|
||||
|
||||
<!-- JS selector for site. -->
|
||||
|
||||
<!-- commons -->
|
||||
|
||||
|
||||
|
||||
<!-- layout specified -->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/combine/npm/jquery@3.7.1/dist/jquery.min.js,npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js,npm/simple-jekyll-search@1.10.0/dest/simple-jekyll-search.min.js,npm/dayjs@1.11.10/dayjs.min.js,npm/dayjs@1.11.10/locale/en.min.js,npm/dayjs@1.11.10/plugin/relativeTime.min.js,npm/dayjs@1.11.10/plugin/localizedFormat.min.js"></script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script defer src="/assets/js/dist/misc.min.js"></script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!--
|
||||
Jekyll Simple Search loader
|
||||
See: <https://github.com/christian-fei/Simple-Jekyll-Search>
|
||||
-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
/* Note: dependent library will be loaded in `js-selector.html` */
|
||||
SimpleJekyllSearch({
|
||||
searchInput: document.getElementById('search-input'),
|
||||
resultsContainer: document.getElementById('search-results'),
|
||||
json: '/assets/js/data/search.json',
|
||||
searchResultTemplate: ' <article class="px-1 px-sm-2 px-lg-4 px-xl-0"> <header> <h2><a href="{url}">{title}</a></h2> <div class="post-meta d-flex flex-column flex-sm-row text-muted mt-1 mb-1"> {categories} {tags} </div> </header> <p>{snippet}</p> </article>',
|
||||
noResultsText: '<p class="mt-5"></p>',
|
||||
templateMiddleware: function(prop, value, template) {
|
||||
if (prop === 'categories') {
|
||||
if (value === '') {
|
||||
return `${value}`;
|
||||
} else {
|
||||
return `<div class="me-sm-4"><i class="far fa-folder fa-fw"></i>${value}</div>`;
|
||||
}
|
||||
}
|
||||
|
||||
if (prop === 'tags') {
|
||||
if (value === '') {
|
||||
return `${value}`;
|
||||
} else {
|
||||
return `<div><i class="fa fa-tag fa-fw"></i>${value}</div>`;
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
828
pseo_website/_site/tags/index.html
Normal file
@@ -0,0 +1,828 @@
|
||||
<!doctype html>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- `site.alt_lang` can specify a language different from the UI -->
|
||||
<html lang="en" >
|
||||
<!-- The Head -->
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<meta name="theme-color" media="(prefers-color-scheme: light)" content="#f7f7f7">
|
||||
<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#1b1b1e">
|
||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
|
||||
<meta
|
||||
name="viewport"
|
||||
content="width=device-width, user-scalable=no initial-scale=1, shrink-to-fit=no, viewport-fit=cover"
|
||||
>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Begin Jekyll SEO tag v2.8.0 -->
|
||||
<meta name="generator" content="Jekyll v4.3.2" />
|
||||
<meta property="og:title" content="Tags" />
|
||||
<meta property="og:locale" content="en" />
|
||||
<meta name="description" content="Begginer friendly AI technologies simplified & explained. Know & boost productivity with latest AI tools." />
|
||||
<meta property="og:description" content="Begginer friendly AI technologies simplified & explained. Know & boost productivity with latest AI tools." />
|
||||
<link rel="canonical" href="http://localhost:4000/tags/" />
|
||||
<meta property="og:url" content="http://localhost:4000/tags/" />
|
||||
<meta property="og:site_name" content="AI-Takia" />
|
||||
<meta property="og:type" content="article" />
|
||||
<meta property="article:published_time" content="2023-10-22T14:10:02+05:30" />
|
||||
<meta name="twitter:card" content="summary" />
|
||||
<meta property="twitter:title" content="Tags" />
|
||||
<meta name="twitter:site" content="@ajaysi" />
|
||||
<script type="application/ld+json">
|
||||
{"@context":"https://schema.org","@type":"BlogPosting","dateModified":"2023-10-22T14:10:02+05:30","datePublished":"2023-10-22T14:10:02+05:30","description":"Begginer friendly AI technologies simplified & explained. Know & boost productivity with latest AI tools.","headline":"Tags","mainEntityOfPage":{"@type":"WebPage","@id":"http://localhost:4000/tags/"},"url":"http://localhost:4000/tags/"}</script>
|
||||
<!-- End Jekyll SEO tag -->
|
||||
|
||||
|
||||
|
||||
<title>Tags | AI-Takia
|
||||
</title>
|
||||
|
||||
<!--
|
||||
The Favicons for Web, Android, Microsoft, and iOS (iPhone and iPad) Apps
|
||||
Generated by: https://realfavicongenerator.net/
|
||||
-->
|
||||
|
||||
|
||||
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/assets/img/favicons/apple-touch-icon.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="/assets/img/favicons/favicon-32x32.png">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="/assets/img/favicons/favicon-16x16.png">
|
||||
<link rel="manifest" href="/assets/img/favicons/site.webmanifest">
|
||||
<link rel="shortcut icon" href="/assets/img/favicons/favicon.ico">
|
||||
<meta name="apple-mobile-web-app-title" content="AI-Takia">
|
||||
<meta name="application-name" content="AI-Takia">
|
||||
<meta name="msapplication-TileColor" content="#da532c">
|
||||
<meta name="msapplication-config" content="/assets/img/favicons/browserconfig.xml">
|
||||
<meta name="theme-color" content="#ffffff">
|
||||
|
||||
|
||||
|
||||
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com" >
|
||||
<link rel="dns-prefetch" href="https://fonts.googleapis.com" >
|
||||
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link rel="dns-prefetch" href="https://fonts.gstatic.com" crossorigin>
|
||||
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com" >
|
||||
<link rel="dns-prefetch" href="https://fonts.googleapis.com" >
|
||||
|
||||
<link rel="preconnect" href="https://cdn.jsdelivr.net" >
|
||||
<link rel="dns-prefetch" href="https://cdn.jsdelivr.net" >
|
||||
|
||||
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Lato&family=Source+Sans+Pro:wght@400;600;700;900&display=swap">
|
||||
|
||||
|
||||
<!-- GA -->
|
||||
|
||||
|
||||
<!-- Bootstrap -->
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css">
|
||||
|
||||
<!-- Font Awesome -->
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.4.2/css/all.min.css">
|
||||
|
||||
<link rel="stylesheet" href="/assets/css/jekyll-theme-chirpy.css">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- JavaScript -->
|
||||
|
||||
|
||||
<!-- Switch the mode between dark and light. -->
|
||||
|
||||
<script type="text/javascript">
|
||||
class ModeToggle {
|
||||
static get MODE_KEY() {
|
||||
return 'mode';
|
||||
}
|
||||
static get MODE_ATTR() {
|
||||
return 'data-mode';
|
||||
}
|
||||
static get DARK_MODE() {
|
||||
return 'dark';
|
||||
}
|
||||
static get LIGHT_MODE() {
|
||||
return 'light';
|
||||
}
|
||||
static get ID() {
|
||||
return 'mode-toggle';
|
||||
}
|
||||
|
||||
constructor() {
|
||||
if (this.hasMode) {
|
||||
if (this.isDarkMode) {
|
||||
if (!this.isSysDarkPrefer) {
|
||||
this.setDark();
|
||||
}
|
||||
} else {
|
||||
if (this.isSysDarkPrefer) {
|
||||
this.setLight();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let self = this;
|
||||
|
||||
/* always follow the system prefers */
|
||||
this.sysDarkPrefers.addEventListener('change', () => {
|
||||
if (self.hasMode) {
|
||||
if (self.isDarkMode) {
|
||||
if (!self.isSysDarkPrefer) {
|
||||
self.setDark();
|
||||
}
|
||||
} else {
|
||||
if (self.isSysDarkPrefer) {
|
||||
self.setLight();
|
||||
}
|
||||
}
|
||||
|
||||
self.clearMode();
|
||||
}
|
||||
|
||||
self.notify();
|
||||
});
|
||||
} /* constructor() */
|
||||
|
||||
get sysDarkPrefers() {
|
||||
return window.matchMedia('(prefers-color-scheme: dark)');
|
||||
}
|
||||
|
||||
get isSysDarkPrefer() {
|
||||
return this.sysDarkPrefers.matches;
|
||||
}
|
||||
|
||||
get isDarkMode() {
|
||||
return this.mode === ModeToggle.DARK_MODE;
|
||||
}
|
||||
|
||||
get isLightMode() {
|
||||
return this.mode === ModeToggle.LIGHT_MODE;
|
||||
}
|
||||
|
||||
get hasMode() {
|
||||
return this.mode != null;
|
||||
}
|
||||
|
||||
get mode() {
|
||||
return sessionStorage.getItem(ModeToggle.MODE_KEY);
|
||||
}
|
||||
|
||||
/* get the current mode on screen */
|
||||
get modeStatus() {
|
||||
if (this.isDarkMode || (!this.hasMode && this.isSysDarkPrefer)) {
|
||||
return ModeToggle.DARK_MODE;
|
||||
} else {
|
||||
return ModeToggle.LIGHT_MODE;
|
||||
}
|
||||
}
|
||||
|
||||
setDark() {
|
||||
document.documentElement.setAttribute(ModeToggle.MODE_ATTR, ModeToggle.DARK_MODE);
|
||||
sessionStorage.setItem(ModeToggle.MODE_KEY, ModeToggle.DARK_MODE);
|
||||
}
|
||||
|
||||
setLight() {
|
||||
document.documentElement.setAttribute(ModeToggle.MODE_ATTR, ModeToggle.LIGHT_MODE);
|
||||
sessionStorage.setItem(ModeToggle.MODE_KEY, ModeToggle.LIGHT_MODE);
|
||||
}
|
||||
|
||||
clearMode() {
|
||||
document.documentElement.removeAttribute(ModeToggle.MODE_ATTR);
|
||||
sessionStorage.removeItem(ModeToggle.MODE_KEY);
|
||||
}
|
||||
|
||||
/* Notify another plugins that the theme mode has changed */
|
||||
notify() {
|
||||
window.postMessage(
|
||||
{
|
||||
direction: ModeToggle.ID,
|
||||
message: this.modeStatus
|
||||
},
|
||||
'*'
|
||||
);
|
||||
}
|
||||
|
||||
flipMode() {
|
||||
if (this.hasMode) {
|
||||
if (this.isSysDarkPrefer) {
|
||||
if (this.isLightMode) {
|
||||
this.clearMode();
|
||||
} else {
|
||||
this.setLight();
|
||||
}
|
||||
} else {
|
||||
if (this.isDarkMode) {
|
||||
this.clearMode();
|
||||
} else {
|
||||
this.setDark();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (this.isSysDarkPrefer) {
|
||||
this.setLight();
|
||||
} else {
|
||||
this.setDark();
|
||||
}
|
||||
}
|
||||
|
||||
this.notify();
|
||||
} /* flipMode() */
|
||||
} /* ModeToggle */
|
||||
|
||||
const modeToggle = new ModeToggle();
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<!-- A placeholder to allow defining custom metadata -->
|
||||
|
||||
</head>
|
||||
|
||||
|
||||
<body>
|
||||
<!-- The Side Bar -->
|
||||
|
||||
<aside aria-label="Sidebar" id="sidebar" class="d-flex flex-column align-items-end">
|
||||
<header class="profile-wrapper">
|
||||
<a href="/" id="avatar" class="rounded-circle">
|
||||
|
||||
</a>
|
||||
|
||||
<h1 class="site-title">
|
||||
<a href="/">AI-Takia</a>
|
||||
</h1>
|
||||
<p class="site-subtitle fst-italic mb-0">Latest Blogs on AI tech, Tools & SaaS</p>
|
||||
</header>
|
||||
<!-- .profile-wrapper -->
|
||||
|
||||
<nav class="flex-column flex-grow-1 w-100 ps-0">
|
||||
<ul class="nav">
|
||||
<!-- home -->
|
||||
<li class="nav-item">
|
||||
<a href="/" class="nav-link">
|
||||
<i class="fa-fw fas fa-home"></i>
|
||||
<span>HOME</span>
|
||||
</a>
|
||||
</li>
|
||||
<!-- the real tabs -->
|
||||
|
||||
<li class="nav-item">
|
||||
<a href="/categories/" class="nav-link">
|
||||
<i class="fa-fw fas fa-stream"></i>
|
||||
|
||||
|
||||
<span>CATEGORIES</span>
|
||||
</a>
|
||||
</li>
|
||||
<!-- .nav-item -->
|
||||
|
||||
<li class="nav-item active">
|
||||
<a href="/tags/" class="nav-link">
|
||||
<i class="fa-fw fas fa-tags"></i>
|
||||
|
||||
|
||||
<span>TAGS</span>
|
||||
</a>
|
||||
</li>
|
||||
<!-- .nav-item -->
|
||||
|
||||
<li class="nav-item">
|
||||
<a href="/archives/" class="nav-link">
|
||||
<i class="fa-fw fas fa-archive"></i>
|
||||
|
||||
|
||||
<span>ARCHIVES</span>
|
||||
</a>
|
||||
</li>
|
||||
<!-- .nav-item -->
|
||||
|
||||
<li class="nav-item">
|
||||
<a href="/about/" class="nav-link">
|
||||
<i class="fa-fw fas fa-info-circle"></i>
|
||||
|
||||
|
||||
<span>ABOUT</span>
|
||||
</a>
|
||||
</li>
|
||||
<!-- .nav-item -->
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
<div class="sidebar-bottom d-flex flex-wrap align-items-center w-100">
|
||||
|
||||
<button type="button" class="mode-toggle btn" aria-label="Switch Mode">
|
||||
<i class="fas fa-adjust"></i>
|
||||
</button>
|
||||
|
||||
|
||||
<span class="icon-border"></span>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a
|
||||
href="https://github.com/ajaysi"
|
||||
aria-label="github"
|
||||
|
||||
|
||||
|
||||
target="_blank"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
rel="noopener noreferrer"
|
||||
|
||||
>
|
||||
<i class="fab fa-github"></i>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a
|
||||
href="https://twitter.com/ajaysi"
|
||||
aria-label="twitter"
|
||||
|
||||
|
||||
|
||||
target="_blank"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
rel="noopener noreferrer"
|
||||
|
||||
>
|
||||
<i class="fa-brands fa-x-twitter"></i>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a
|
||||
href="javascript:location.href = 'mailto:' + ['example','domain.com'].join('@')"
|
||||
aria-label="email"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
>
|
||||
<i class="fas fa-envelope"></i>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a
|
||||
href=""
|
||||
aria-label="linkedin"
|
||||
|
||||
|
||||
|
||||
target="_blank"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
rel="noopener noreferrer"
|
||||
|
||||
>
|
||||
<i class="fab fa-linkedin"></i>
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
<!-- .sidebar-bottom -->
|
||||
</aside>
|
||||
<!-- #sidebar -->
|
||||
|
||||
|
||||
<div id="main-wrapper" class="d-flex justify-content-center">
|
||||
<div class="container d-flex flex-column px-xxl-5">
|
||||
<!-- The Top Bar -->
|
||||
|
||||
<header id="topbar-wrapper" aria-label="Top Bar">
|
||||
<div
|
||||
id="topbar"
|
||||
class="d-flex align-items-center justify-content-between px-lg-3 h-100"
|
||||
>
|
||||
<nav id="breadcrumb" aria-label="Breadcrumb">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span>
|
||||
<a href="/">
|
||||
Home
|
||||
</a>
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span>Tags</span>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</nav>
|
||||
<!-- endof #breadcrumb -->
|
||||
|
||||
<button type="button" id="sidebar-trigger" class="btn btn-link">
|
||||
<i class="fas fa-bars fa-fw"></i>
|
||||
</button>
|
||||
|
||||
<div id="topbar-title">
|
||||
Tags
|
||||
</div>
|
||||
|
||||
<button type="button" id="search-trigger" class="btn btn-link">
|
||||
<i class="fas fa-search fa-fw"></i>
|
||||
</button>
|
||||
|
||||
<search class="align-items-center ms-3 ms-lg-0">
|
||||
<i class="fas fa-search fa-fw"></i>
|
||||
<input
|
||||
class="form-control"
|
||||
id="search-input"
|
||||
type="search"
|
||||
aria-label="search"
|
||||
autocomplete="off"
|
||||
placeholder="Search..."
|
||||
>
|
||||
</search>
|
||||
<button type="button" class="btn btn-link text-decoration-none" id="search-cancel">Cancel</button>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
|
||||
<div class="row flex-grow-1">
|
||||
<main aria-label="Main Content" class="col-12 col-lg-11 col-xl-9 px-md-4">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<article class="px-1">
|
||||
|
||||
|
||||
|
||||
<h1 class="dynamic-title">
|
||||
Tags
|
||||
</h1>
|
||||
<div class="content">
|
||||
<div id="tags" class="d-flex flex-wrap mx-xl-2">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div>
|
||||
<a class="tag" href="/tags/getting-started/">
|
||||
getting started<span class="text-muted">2</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</article>
|
||||
|
||||
|
||||
</main>
|
||||
|
||||
<!-- panel -->
|
||||
<aside aria-label="Panel" id="panel-wrapper" class="col-xl-3 ps-2 mb-5 text-muted">
|
||||
<div class="access">
|
||||
<!-- Get the last 5 posts from lastmod list. -->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- The trending tags list -->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<section>
|
||||
<h2 class="panel-heading">Trending Tags</h2>
|
||||
<div class="d-flex flex-wrap mt-3 mb-1 me-3">
|
||||
|
||||
|
||||
<a class="post-tag btn btn-outline-primary" href="/tags/getting-started/">getting started</a>
|
||||
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</aside>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<!-- tail -->
|
||||
<div id="tail-wrapper" class="col-12 col-lg-11 col-xl-9 px-md-4">
|
||||
|
||||
|
||||
<!-- The Footer -->
|
||||
|
||||
<footer
|
||||
aria-label="Site Info"
|
||||
class="
|
||||
d-flex flex-column justify-content-center text-muted
|
||||
flex-lg-row justify-content-lg-between align-items-lg-center pb-lg-3
|
||||
"
|
||||
>
|
||||
<p>
|
||||
©
|
||||
<time>2023</time>
|
||||
<a href="https://twitter.com/username">ajaysi</a>.
|
||||
|
||||
<span
|
||||
data-bs-toggle="tooltip"
|
||||
data-bs-placement="top"
|
||||
title="Except where otherwise noted, the blog posts on this site are licensed under the Creative Commons Attribution 4.0 International (CC BY 4.0) License by the author."
|
||||
>Some rights reserved.</span>
|
||||
|
||||
</p>
|
||||
|
||||
<p>Using the <a href="https://github.com/cotes2020/jekyll-theme-chirpy" target="_blank" rel="noopener">Chirpy</a> theme for <a href="https://jekyllrb.com" target="_blank" rel="noopener">Jekyll</a>
|
||||
</p>
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- The Search results -->
|
||||
|
||||
<div id="search-result-wrapper" class="d-flex justify-content-center unloaded">
|
||||
<div class="col-11 content">
|
||||
<div id="search-hints">
|
||||
<!-- The trending tags list -->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<section>
|
||||
<h2 class="panel-heading">Trending Tags</h2>
|
||||
<div class="d-flex flex-wrap mt-3 mb-1 me-3">
|
||||
|
||||
|
||||
<a class="post-tag btn btn-outline-primary" href="/tags/getting-started/">getting started</a>
|
||||
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
<div id="search-results" class="d-flex flex-wrap justify-content-center text-muted mt-3"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<aside aria-label="Scroll to Top">
|
||||
<button id="back-to-top" type="button" class="btn btn-lg btn-box-shadow">
|
||||
<i class="fas fa-angle-up"></i>
|
||||
</button>
|
||||
</aside>
|
||||
</div>
|
||||
|
||||
<div id="mask"></div>
|
||||
|
||||
|
||||
<aside
|
||||
id="notification"
|
||||
class="toast"
|
||||
role="alert"
|
||||
aria-live="assertive"
|
||||
aria-atomic="true"
|
||||
data-bs-animation="true"
|
||||
data-bs-autohide="false"
|
||||
>
|
||||
<div class="toast-header">
|
||||
<button
|
||||
type="button"
|
||||
class="btn-close ms-auto"
|
||||
data-bs-dismiss="toast"
|
||||
aria-label="Close"
|
||||
></button>
|
||||
</div>
|
||||
<div class="toast-body text-center pt-0">
|
||||
<p class="px-2 mb-3">A new version of content is available.</p>
|
||||
<button type="button" class="btn btn-primary" aria-label="Update">
|
||||
Update
|
||||
</button>
|
||||
</div>
|
||||
</aside>
|
||||
|
||||
|
||||
|
||||
<!-- JavaScripts -->
|
||||
|
||||
<!-- JS selector for site. -->
|
||||
|
||||
<!-- commons -->
|
||||
|
||||
|
||||
|
||||
<!-- layout specified -->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/combine/npm/jquery@3.7.1/dist/jquery.min.js,npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js,npm/simple-jekyll-search@1.10.0/dest/simple-jekyll-search.min.js"></script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script defer src="/assets/js/dist/commons.min.js"></script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!--
|
||||
Jekyll Simple Search loader
|
||||
See: <https://github.com/christian-fei/Simple-Jekyll-Search>
|
||||
-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
/* Note: dependent library will be loaded in `js-selector.html` */
|
||||
SimpleJekyllSearch({
|
||||
searchInput: document.getElementById('search-input'),
|
||||
resultsContainer: document.getElementById('search-results'),
|
||||
json: '/assets/js/data/search.json',
|
||||
searchResultTemplate: ' <article class="px-1 px-sm-2 px-lg-4 px-xl-0"> <header> <h2><a href="{url}">{title}</a></h2> <div class="post-meta d-flex flex-column flex-sm-row text-muted mt-1 mb-1"> {categories} {tags} </div> </header> <p>{snippet}</p> </article>',
|
||||
noResultsText: '<p class="mt-5"></p>',
|
||||
templateMiddleware: function(prop, value, template) {
|
||||
if (prop === 'categories') {
|
||||
if (value === '') {
|
||||
return `${value}`;
|
||||
} else {
|
||||
return `<div class="me-sm-4"><i class="far fa-folder fa-fw"></i>${value}</div>`;
|
||||
}
|
||||
}
|
||||
|
||||
if (prop === 'tags') {
|
||||
if (value === '') {
|
||||
return `${value}`;
|
||||
} else {
|
||||
return `<div><i class="fa fa-tag fa-fw"></i>${value}</div>`;
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
8
pseo_website/_site/unregister.js
Normal file
@@ -0,0 +1,8 @@
|
||||
if ('serviceWorker' in navigator) {
|
||||
navigator.serviceWorker.getRegistrations().then((registrations) => {
|
||||
for (let reg of registrations) {
|
||||
reg.unregister();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
8
pseo_website/_tabs/about.md
Normal file
@@ -0,0 +1,8 @@
|
||||
---
|
||||
# the default layout is 'page'
|
||||
icon: fas fa-info-circle
|
||||
order: 4
|
||||
---
|
||||
|
||||
> Add Markdown syntax content to file `_tabs/about.md`{: .filepath } and it will show up on this page.
|
||||
{: .prompt-tip }
|
||||
5
pseo_website/_tabs/archives.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
layout: archives
|
||||
icon: fas fa-archive
|
||||
order: 3
|
||||
---
|
||||
5
pseo_website/_tabs/categories.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
layout: categories
|
||||
icon: fas fa-stream
|
||||
order: 1
|
||||
---
|
||||
5
pseo_website/_tabs/tags.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
layout: tags
|
||||
icon: fas fa-tags
|
||||
order: 2
|
||||
---
|
||||
4
pseo_website/index.html
Normal file
@@ -0,0 +1,4 @@
|
||||
---
|
||||
layout: home
|
||||
# Index page
|
||||
---
|
||||