Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| b3a887de94 |
@@ -1,11 +0,0 @@
|
|||||||
# To get started with Dependabot version updates, you'll need to specify which
|
|
||||||
# package ecosystems to update and where the package manifests are located.
|
|
||||||
# Please see the documentation for all configuration options:
|
|
||||||
# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
|
|
||||||
|
|
||||||
version: 2
|
|
||||||
updates:
|
|
||||||
- package-ecosystem: "pip" # See documentation for possible values
|
|
||||||
directory: "/" # Location of package manifests
|
|
||||||
schedule:
|
|
||||||
interval: "weekly"
|
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
# This is a basic workflow to help you get started with Actions
|
|
||||||
|
|
||||||
name: Publish Blog
|
|
||||||
|
|
||||||
# Controls when the action will run. Triggers the workflow on push or pull request
|
|
||||||
# events but only for the main branch
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: [ main ]
|
|
||||||
pull_request:
|
|
||||||
branches: [ main ]
|
|
||||||
|
|
||||||
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
|
|
||||||
jobs:
|
|
||||||
# This workflow contains a single job called "build"
|
|
||||||
build:
|
|
||||||
# The type of runner that the job will run on
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
# Steps represent a sequence of tasks that will be executed as part of the job
|
|
||||||
steps:
|
|
||||||
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
|
|
||||||
- uses: actions/checkout@v2
|
|
||||||
|
|
||||||
# Runs a single command using the runners shell
|
|
||||||
- name: set up permissions
|
|
||||||
run: chmod +x pages-publish.sh
|
|
||||||
|
|
||||||
# Runs a set of commands using the runners shell
|
|
||||||
- name: Run a multi-line script
|
|
||||||
run: ./pages-publish.sh
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
# build folders
|
|
||||||
output
|
|
||||||
__pycache__
|
|
||||||
*.txt
|
|
||||||
.vscode
|
|
||||||
@@ -1,407 +0,0 @@
|
|||||||
Attribution-NonCommercial 4.0 International
|
|
||||||
|
|
||||||
=======================================================================
|
|
||||||
|
|
||||||
Creative Commons Corporation ("Creative Commons") is not a law firm and
|
|
||||||
does not provide legal services or legal advice. Distribution of
|
|
||||||
Creative Commons public licenses does not create a lawyer-client or
|
|
||||||
other relationship. Creative Commons makes its licenses and related
|
|
||||||
information available on an "as-is" basis. Creative Commons gives no
|
|
||||||
warranties regarding its licenses, any material licensed under their
|
|
||||||
terms and conditions, or any related information. Creative Commons
|
|
||||||
disclaims all liability for damages resulting from their use to the
|
|
||||||
fullest extent possible.
|
|
||||||
|
|
||||||
Using Creative Commons Public Licenses
|
|
||||||
|
|
||||||
Creative Commons public licenses provide a standard set of terms and
|
|
||||||
conditions that creators and other rights holders may use to share
|
|
||||||
original works of authorship and other material subject to copyright
|
|
||||||
and certain other rights specified in the public license below. The
|
|
||||||
following considerations are for informational purposes only, are not
|
|
||||||
exhaustive, and do not form part of our licenses.
|
|
||||||
|
|
||||||
Considerations for licensors: Our public licenses are
|
|
||||||
intended for use by those authorized to give the public
|
|
||||||
permission to use material in ways otherwise restricted by
|
|
||||||
copyright and certain other rights. Our licenses are
|
|
||||||
irrevocable. Licensors should read and understand the terms
|
|
||||||
and conditions of the license they choose before applying it.
|
|
||||||
Licensors should also secure all rights necessary before
|
|
||||||
applying our licenses so that the public can reuse the
|
|
||||||
material as expected. Licensors should clearly mark any
|
|
||||||
material not subject to the license. This includes other CC-
|
|
||||||
licensed material, or material used under an exception or
|
|
||||||
limitation to copyright. More considerations for licensors:
|
|
||||||
wiki.creativecommons.org/Considerations_for_licensors
|
|
||||||
|
|
||||||
Considerations for the public: By using one of our public
|
|
||||||
licenses, a licensor grants the public permission to use the
|
|
||||||
licensed material under specified terms and conditions. If
|
|
||||||
the licensor's permission is not necessary for any reason--for
|
|
||||||
example, because of any applicable exception or limitation to
|
|
||||||
copyright--then that use is not regulated by the license. Our
|
|
||||||
licenses grant only permissions under copyright and certain
|
|
||||||
other rights that a licensor has authority to grant. Use of
|
|
||||||
the licensed material may still be restricted for other
|
|
||||||
reasons, including because others have copyright or other
|
|
||||||
rights in the material. A licensor may make special requests,
|
|
||||||
such as asking that all changes be marked or described.
|
|
||||||
Although not required by our licenses, you are encouraged to
|
|
||||||
respect those requests where reasonable. More considerations
|
|
||||||
for the public:
|
|
||||||
wiki.creativecommons.org/Considerations_for_licensees
|
|
||||||
|
|
||||||
=======================================================================
|
|
||||||
|
|
||||||
Creative Commons Attribution-NonCommercial 4.0 International Public
|
|
||||||
License
|
|
||||||
|
|
||||||
By exercising the Licensed Rights (defined below), You accept and agree
|
|
||||||
to be bound by the terms and conditions of this Creative Commons
|
|
||||||
Attribution-NonCommercial 4.0 International Public License ("Public
|
|
||||||
License"). To the extent this Public License may be interpreted as a
|
|
||||||
contract, You are granted the Licensed Rights in consideration of Your
|
|
||||||
acceptance of these terms and conditions, and the Licensor grants You
|
|
||||||
such rights in consideration of benefits the Licensor receives from
|
|
||||||
making the Licensed Material available under these terms and
|
|
||||||
conditions.
|
|
||||||
|
|
||||||
|
|
||||||
Section 1 -- Definitions.
|
|
||||||
|
|
||||||
a. Adapted Material means material subject to Copyright and Similar
|
|
||||||
Rights that is derived from or based upon the Licensed Material
|
|
||||||
and in which the Licensed Material is translated, altered,
|
|
||||||
arranged, transformed, or otherwise modified in a manner requiring
|
|
||||||
permission under the Copyright and Similar Rights held by the
|
|
||||||
Licensor. For purposes of this Public License, where the Licensed
|
|
||||||
Material is a musical work, performance, or sound recording,
|
|
||||||
Adapted Material is always produced where the Licensed Material is
|
|
||||||
synched in timed relation with a moving image.
|
|
||||||
|
|
||||||
b. Adapter's License means the license You apply to Your Copyright
|
|
||||||
and Similar Rights in Your contributions to Adapted Material in
|
|
||||||
accordance with the terms and conditions of this Public License.
|
|
||||||
|
|
||||||
c. Copyright and Similar Rights means copyright and/or similar rights
|
|
||||||
closely related to copyright including, without limitation,
|
|
||||||
performance, broadcast, sound recording, and Sui Generis Database
|
|
||||||
Rights, without regard to how the rights are labeled or
|
|
||||||
categorized. For purposes of this Public License, the rights
|
|
||||||
specified in Section 2(b)(1)-(2) are not Copyright and Similar
|
|
||||||
Rights.
|
|
||||||
d. Effective Technological Measures means those measures that, in the
|
|
||||||
absence of proper authority, may not be circumvented under laws
|
|
||||||
fulfilling obligations under Article 11 of the WIPO Copyright
|
|
||||||
Treaty adopted on December 20, 1996, and/or similar international
|
|
||||||
agreements.
|
|
||||||
|
|
||||||
e. Exceptions and Limitations means fair use, fair dealing, and/or
|
|
||||||
any other exception or limitation to Copyright and Similar Rights
|
|
||||||
that applies to Your use of the Licensed Material.
|
|
||||||
|
|
||||||
f. Licensed Material means the artistic or literary work, database,
|
|
||||||
or other material to which the Licensor applied this Public
|
|
||||||
License.
|
|
||||||
|
|
||||||
g. Licensed Rights means the rights granted to You subject to the
|
|
||||||
terms and conditions of this Public License, which are limited to
|
|
||||||
all Copyright and Similar Rights that apply to Your use of the
|
|
||||||
Licensed Material and that the Licensor has authority to license.
|
|
||||||
|
|
||||||
h. Licensor means the individual(s) or entity(ies) granting rights
|
|
||||||
under this Public License.
|
|
||||||
|
|
||||||
i. NonCommercial means not primarily intended for or directed towards
|
|
||||||
commercial advantage or monetary compensation. For purposes of
|
|
||||||
this Public License, the exchange of the Licensed Material for
|
|
||||||
other material subject to Copyright and Similar Rights by digital
|
|
||||||
file-sharing or similar means is NonCommercial provided there is
|
|
||||||
no payment of monetary compensation in connection with the
|
|
||||||
exchange.
|
|
||||||
|
|
||||||
j. Share means to provide material to the public by any means or
|
|
||||||
process that requires permission under the Licensed Rights, such
|
|
||||||
as reproduction, public display, public performance, distribution,
|
|
||||||
dissemination, communication, or importation, and to make material
|
|
||||||
available to the public including in ways that members of the
|
|
||||||
public may access the material from a place and at a time
|
|
||||||
individually chosen by them.
|
|
||||||
|
|
||||||
k. Sui Generis Database Rights means rights other than copyright
|
|
||||||
resulting from Directive 96/9/EC of the European Parliament and of
|
|
||||||
the Council of 11 March 1996 on the legal protection of databases,
|
|
||||||
as amended and/or succeeded, as well as other essentially
|
|
||||||
equivalent rights anywhere in the world.
|
|
||||||
|
|
||||||
l. You means the individual or entity exercising the Licensed Rights
|
|
||||||
under this Public License. Your has a corresponding meaning.
|
|
||||||
|
|
||||||
|
|
||||||
Section 2 -- Scope.
|
|
||||||
|
|
||||||
a. License grant.
|
|
||||||
|
|
||||||
1. Subject to the terms and conditions of this Public License,
|
|
||||||
the Licensor hereby grants You a worldwide, royalty-free,
|
|
||||||
non-sublicensable, non-exclusive, irrevocable license to
|
|
||||||
exercise the Licensed Rights in the Licensed Material to:
|
|
||||||
|
|
||||||
a. reproduce and Share the Licensed Material, in whole or
|
|
||||||
in part, for NonCommercial purposes only; and
|
|
||||||
|
|
||||||
b. produce, reproduce, and Share Adapted Material for
|
|
||||||
NonCommercial purposes only.
|
|
||||||
|
|
||||||
2. Exceptions and Limitations. For the avoidance of doubt, where
|
|
||||||
Exceptions and Limitations apply to Your use, this Public
|
|
||||||
License does not apply, and You do not need to comply with
|
|
||||||
its terms and conditions.
|
|
||||||
|
|
||||||
3. Term. The term of this Public License is specified in Section
|
|
||||||
6(a).
|
|
||||||
|
|
||||||
4. Media and formats; technical modifications allowed. The
|
|
||||||
Licensor authorizes You to exercise the Licensed Rights in
|
|
||||||
all media and formats whether now known or hereafter created,
|
|
||||||
and to make technical modifications necessary to do so. The
|
|
||||||
Licensor waives and/or agrees not to assert any right or
|
|
||||||
authority to forbid You from making technical modifications
|
|
||||||
necessary to exercise the Licensed Rights, including
|
|
||||||
technical modifications necessary to circumvent Effective
|
|
||||||
Technological Measures. For purposes of this Public License,
|
|
||||||
simply making modifications authorized by this Section 2(a)
|
|
||||||
(4) never produces Adapted Material.
|
|
||||||
|
|
||||||
5. Downstream recipients.
|
|
||||||
|
|
||||||
a. Offer from the Licensor -- Licensed Material. Every
|
|
||||||
recipient of the Licensed Material automatically
|
|
||||||
receives an offer from the Licensor to exercise the
|
|
||||||
Licensed Rights under the terms and conditions of this
|
|
||||||
Public License.
|
|
||||||
|
|
||||||
b. No downstream restrictions. You may not offer or impose
|
|
||||||
any additional or different terms or conditions on, or
|
|
||||||
apply any Effective Technological Measures to, the
|
|
||||||
Licensed Material if doing so restricts exercise of the
|
|
||||||
Licensed Rights by any recipient of the Licensed
|
|
||||||
Material.
|
|
||||||
|
|
||||||
6. No endorsement. Nothing in this Public License constitutes or
|
|
||||||
may be construed as permission to assert or imply that You
|
|
||||||
are, or that Your use of the Licensed Material is, connected
|
|
||||||
with, or sponsored, endorsed, or granted official status by,
|
|
||||||
the Licensor or others designated to receive attribution as
|
|
||||||
provided in Section 3(a)(1)(A)(i).
|
|
||||||
|
|
||||||
b. Other rights.
|
|
||||||
|
|
||||||
1. Moral rights, such as the right of integrity, are not
|
|
||||||
licensed under this Public License, nor are publicity,
|
|
||||||
privacy, and/or other similar personality rights; however, to
|
|
||||||
the extent possible, the Licensor waives and/or agrees not to
|
|
||||||
assert any such rights held by the Licensor to the limited
|
|
||||||
extent necessary to allow You to exercise the Licensed
|
|
||||||
Rights, but not otherwise.
|
|
||||||
|
|
||||||
2. Patent and trademark rights are not licensed under this
|
|
||||||
Public License.
|
|
||||||
|
|
||||||
3. To the extent possible, the Licensor waives any right to
|
|
||||||
collect royalties from You for the exercise of the Licensed
|
|
||||||
Rights, whether directly or through a collecting society
|
|
||||||
under any voluntary or waivable statutory or compulsory
|
|
||||||
licensing scheme. In all other cases the Licensor expressly
|
|
||||||
reserves any right to collect such royalties, including when
|
|
||||||
the Licensed Material is used other than for NonCommercial
|
|
||||||
purposes.
|
|
||||||
|
|
||||||
|
|
||||||
Section 3 -- License Conditions.
|
|
||||||
|
|
||||||
Your exercise of the Licensed Rights is expressly made subject to the
|
|
||||||
following conditions.
|
|
||||||
|
|
||||||
a. Attribution.
|
|
||||||
|
|
||||||
1. If You Share the Licensed Material (including in modified
|
|
||||||
form), You must:
|
|
||||||
|
|
||||||
a. retain the following if it is supplied by the Licensor
|
|
||||||
with the Licensed Material:
|
|
||||||
|
|
||||||
i. identification of the creator(s) of the Licensed
|
|
||||||
Material and any others designated to receive
|
|
||||||
attribution, in any reasonable manner requested by
|
|
||||||
the Licensor (including by pseudonym if
|
|
||||||
designated);
|
|
||||||
|
|
||||||
ii. a copyright notice;
|
|
||||||
|
|
||||||
iii. a notice that refers to this Public License;
|
|
||||||
|
|
||||||
iv. a notice that refers to the disclaimer of
|
|
||||||
warranties;
|
|
||||||
|
|
||||||
v. a URI or hyperlink to the Licensed Material to the
|
|
||||||
extent reasonably practicable;
|
|
||||||
|
|
||||||
b. indicate if You modified the Licensed Material and
|
|
||||||
retain an indication of any previous modifications; and
|
|
||||||
|
|
||||||
c. indicate the Licensed Material is licensed under this
|
|
||||||
Public License, and include the text of, or the URI or
|
|
||||||
hyperlink to, this Public License.
|
|
||||||
|
|
||||||
2. You may satisfy the conditions in Section 3(a)(1) in any
|
|
||||||
reasonable manner based on the medium, means, and context in
|
|
||||||
which You Share the Licensed Material. For example, it may be
|
|
||||||
reasonable to satisfy the conditions by providing a URI or
|
|
||||||
hyperlink to a resource that includes the required
|
|
||||||
information.
|
|
||||||
|
|
||||||
3. If requested by the Licensor, You must remove any of the
|
|
||||||
information required by Section 3(a)(1)(A) to the extent
|
|
||||||
reasonably practicable.
|
|
||||||
|
|
||||||
4. If You Share Adapted Material You produce, the Adapter's
|
|
||||||
License You apply must not prevent recipients of the Adapted
|
|
||||||
Material from complying with this Public License.
|
|
||||||
|
|
||||||
|
|
||||||
Section 4 -- Sui Generis Database Rights.
|
|
||||||
|
|
||||||
Where the Licensed Rights include Sui Generis Database Rights that
|
|
||||||
apply to Your use of the Licensed Material:
|
|
||||||
|
|
||||||
a. for the avoidance of doubt, Section 2(a)(1) grants You the right
|
|
||||||
to extract, reuse, reproduce, and Share all or a substantial
|
|
||||||
portion of the contents of the database for NonCommercial purposes
|
|
||||||
only;
|
|
||||||
|
|
||||||
b. if You include all or a substantial portion of the database
|
|
||||||
contents in a database in which You have Sui Generis Database
|
|
||||||
Rights, then the database in which You have Sui Generis Database
|
|
||||||
Rights (but not its individual contents) is Adapted Material; and
|
|
||||||
|
|
||||||
c. You must comply with the conditions in Section 3(a) if You Share
|
|
||||||
all or a substantial portion of the contents of the database.
|
|
||||||
|
|
||||||
For the avoidance of doubt, this Section 4 supplements and does not
|
|
||||||
replace Your obligations under this Public License where the Licensed
|
|
||||||
Rights include other Copyright and Similar Rights.
|
|
||||||
|
|
||||||
|
|
||||||
Section 5 -- Disclaimer of Warranties and Limitation of Liability.
|
|
||||||
|
|
||||||
a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
|
|
||||||
EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
|
|
||||||
AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
|
|
||||||
ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
|
|
||||||
IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
|
|
||||||
WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
|
||||||
PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
|
|
||||||
ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
|
|
||||||
KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
|
|
||||||
ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
|
|
||||||
|
|
||||||
b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
|
|
||||||
TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
|
|
||||||
NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
|
|
||||||
INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
|
|
||||||
COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
|
|
||||||
USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
|
|
||||||
ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
|
|
||||||
DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
|
|
||||||
IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
|
|
||||||
|
|
||||||
c. The disclaimer of warranties and limitation of liability provided
|
|
||||||
above shall be interpreted in a manner that, to the extent
|
|
||||||
possible, most closely approximates an absolute disclaimer and
|
|
||||||
waiver of all liability.
|
|
||||||
|
|
||||||
|
|
||||||
Section 6 -- Term and Termination.
|
|
||||||
|
|
||||||
a. This Public License applies for the term of the Copyright and
|
|
||||||
Similar Rights licensed here. However, if You fail to comply with
|
|
||||||
this Public License, then Your rights under this Public License
|
|
||||||
terminate automatically.
|
|
||||||
|
|
||||||
b. Where Your right to use the Licensed Material has terminated under
|
|
||||||
Section 6(a), it reinstates:
|
|
||||||
|
|
||||||
1. automatically as of the date the violation is cured, provided
|
|
||||||
it is cured within 30 days of Your discovery of the
|
|
||||||
violation; or
|
|
||||||
|
|
||||||
2. upon express reinstatement by the Licensor.
|
|
||||||
|
|
||||||
For the avoidance of doubt, this Section 6(b) does not affect any
|
|
||||||
right the Licensor may have to seek remedies for Your violations
|
|
||||||
of this Public License.
|
|
||||||
|
|
||||||
c. For the avoidance of doubt, the Licensor may also offer the
|
|
||||||
Licensed Material under separate terms or conditions or stop
|
|
||||||
distributing the Licensed Material at any time; however, doing so
|
|
||||||
will not terminate this Public License.
|
|
||||||
|
|
||||||
d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
|
|
||||||
License.
|
|
||||||
|
|
||||||
|
|
||||||
Section 7 -- Other Terms and Conditions.
|
|
||||||
|
|
||||||
a. The Licensor shall not be bound by any additional or different
|
|
||||||
terms or conditions communicated by You unless expressly agreed.
|
|
||||||
|
|
||||||
b. Any arrangements, understandings, or agreements regarding the
|
|
||||||
Licensed Material not stated herein are separate from and
|
|
||||||
independent of the terms and conditions of this Public License.
|
|
||||||
|
|
||||||
|
|
||||||
Section 8 -- Interpretation.
|
|
||||||
|
|
||||||
a. For the avoidance of doubt, this Public License does not, and
|
|
||||||
shall not be interpreted to, reduce, limit, restrict, or impose
|
|
||||||
conditions on any use of the Licensed Material that could lawfully
|
|
||||||
be made without permission under this Public License.
|
|
||||||
|
|
||||||
b. To the extent possible, if any provision of this Public License is
|
|
||||||
deemed unenforceable, it shall be automatically reformed to the
|
|
||||||
minimum extent necessary to make it enforceable. If the provision
|
|
||||||
cannot be reformed, it shall be severed from this Public License
|
|
||||||
without affecting the enforceability of the remaining terms and
|
|
||||||
conditions.
|
|
||||||
|
|
||||||
c. No term or condition of this Public License will be waived and no
|
|
||||||
failure to comply consented to unless expressly agreed to by the
|
|
||||||
Licensor.
|
|
||||||
|
|
||||||
d. Nothing in this Public License constitutes or may be interpreted
|
|
||||||
as a limitation upon, or waiver of, any privileges and immunities
|
|
||||||
that apply to the Licensor or You, including from the legal
|
|
||||||
processes of any jurisdiction or authority.
|
|
||||||
|
|
||||||
=======================================================================
|
|
||||||
|
|
||||||
Creative Commons is not a party to its public
|
|
||||||
licenses. Notwithstanding, Creative Commons may elect to apply one of
|
|
||||||
its public licenses to material it publishes and in those instances
|
|
||||||
will be considered the “Licensor.” The text of the Creative Commons
|
|
||||||
public licenses is dedicated to the public domain under the CC0 Public
|
|
||||||
Domain Dedication. Except for the limited purpose of indicating that
|
|
||||||
material is shared under a Creative Commons public license or as
|
|
||||||
otherwise permitted by the Creative Commons policies published at
|
|
||||||
creativecommons.org/policies, Creative Commons does not authorize the
|
|
||||||
use of the trademark "Creative Commons" or any other trademark or logo
|
|
||||||
of Creative Commons without its prior written consent including,
|
|
||||||
without limitation, in connection with any unauthorized modifications
|
|
||||||
to any of its public licenses or any other arrangements,
|
|
||||||
understandings, or agreements concerning use of licensed material. For
|
|
||||||
the avoidance of doubt, this paragraph does not form part of the
|
|
||||||
public licenses.
|
|
||||||
|
|
||||||
Creative Commons may be contacted at creativecommons.org.
|
|
||||||
@@ -1,88 +0,0 @@
|
|||||||
PY?=python3
|
|
||||||
PELICAN?=pelican
|
|
||||||
PELICANTHEME?=pelican-themes
|
|
||||||
PELICANOPTS=
|
|
||||||
|
|
||||||
BASEDIR=$(CURDIR)
|
|
||||||
INPUTDIR=$(BASEDIR)/content
|
|
||||||
OUTPUTDIR=$(BASEDIR)/output
|
|
||||||
THEMEDIR=$(BASEDIR)/themes/alchemy
|
|
||||||
CONFFILE=$(BASEDIR)/pelicanconf.py
|
|
||||||
PUBLISHCONF=$(BASEDIR)/publishconf.py
|
|
||||||
|
|
||||||
GITHUB_PAGES_BRANCH=gh-pages
|
|
||||||
|
|
||||||
|
|
||||||
DEBUG ?= 0
|
|
||||||
ifeq ($(DEBUG), 1)
|
|
||||||
PELICANOPTS += -D
|
|
||||||
endif
|
|
||||||
|
|
||||||
RELATIVE ?= 0
|
|
||||||
ifeq ($(RELATIVE), 1)
|
|
||||||
PELICANOPTS += --relative-urls
|
|
||||||
endif
|
|
||||||
|
|
||||||
SERVER ?= "0.0.0.0"
|
|
||||||
|
|
||||||
PORT ?= 0
|
|
||||||
ifneq ($(PORT), 0)
|
|
||||||
PELICANOPTS += -p $(PORT)
|
|
||||||
endif
|
|
||||||
|
|
||||||
|
|
||||||
help:
|
|
||||||
@echo 'Makefile for a pelican Web site '
|
|
||||||
@echo ' '
|
|
||||||
@echo 'Usage: '
|
|
||||||
@echo ' make html (re)generate the web site '
|
|
||||||
@echo ' make clean remove the generated files '
|
|
||||||
@echo ' make regenerate regenerate files upon modification '
|
|
||||||
@echo ' make publish generate using production settings '
|
|
||||||
@echo ' make theme add theme '
|
|
||||||
@echo ' make serve [PORT=8000] serve site at http://localhost:8000'
|
|
||||||
@echo ' make serve-global [SERVER=0.0.0.0] serve (as root) to $(SERVER):80 '
|
|
||||||
@echo ' make devserver [PORT=8000] serve and regenerate together '
|
|
||||||
@echo ' make ssh_upload upload the web site via SSH '
|
|
||||||
@echo ' make rsync_upload upload the web site via rsync+ssh '
|
|
||||||
@echo ' make github upload the web site via gh-pages '
|
|
||||||
@echo ' '
|
|
||||||
@echo 'Set the DEBUG variable to 1 to enable debugging, e.g. make DEBUG=1 html '
|
|
||||||
@echo 'Set the RELATIVE variable to 1 to enable relative urls '
|
|
||||||
@echo ' '
|
|
||||||
|
|
||||||
html:
|
|
||||||
"$(PELICAN)" "$(INPUTDIR)" -o "$(OUTPUTDIR)" -s "$(CONFFILE)" $(PELICANOPTS)
|
|
||||||
|
|
||||||
clean:
|
|
||||||
[ ! -d "$(OUTPUTDIR)" ] || rm -rf "$(OUTPUTDIR)"
|
|
||||||
|
|
||||||
regenerate:
|
|
||||||
"$(PELICAN)" -r "$(INPUTDIR)" -o "$(OUTPUTDIR)" -s "$(CONFFILE)" $(PELICANOPTS)
|
|
||||||
|
|
||||||
serve:
|
|
||||||
"$(PELICAN)" -l "$(INPUTDIR)" -o "$(OUTPUTDIR)" -s "$(CONFFILE)" $(PELICANOPTS)
|
|
||||||
|
|
||||||
serve-global:
|
|
||||||
"$(PELICAN)" -l "$(INPUTDIR)" -o "$(OUTPUTDIR)" -s "$(CONFFILE)" $(PELICANOPTS) -b $(SERVER)
|
|
||||||
|
|
||||||
devserver:
|
|
||||||
"$(PELICAN)" -lr "$(INPUTDIR)" -o "$(OUTPUTDIR)" -s "$(CONFFILE)" $(PELICANOPTS)
|
|
||||||
|
|
||||||
devserver-global:
|
|
||||||
$(PELICAN) -lr $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS) -b 0.0.0.0
|
|
||||||
|
|
||||||
publish:
|
|
||||||
"$(PELICAN)" "$(INPUTDIR)" -o "$(OUTPUTDIR)" -s "$(PUBLISHCONF)" $(PELICANOPTS)
|
|
||||||
|
|
||||||
theme:
|
|
||||||
"$(PELICANTHEME)" --install "$(THEMEDIR)" --verbose
|
|
||||||
|
|
||||||
github: publish
|
|
||||||
mkdir -p "$(OUTPUTDIR)/custom"
|
|
||||||
cp -a custom/. "$(OUTPUTDIR)/custom/"
|
|
||||||
cp 404.html "$(OUTPUTDIR)"
|
|
||||||
ghp-import -m "Generate Pelican site" -b $(GITHUB_PAGES_BRANCH) "$(OUTPUTDIR)"
|
|
||||||
git push -f origin $(GITHUB_PAGES_BRANCH)
|
|
||||||
|
|
||||||
.PHONY: html help clean regenerate serve serve-global devserver publish github
|
|
||||||
|
Before Width: | Height: | Size: 5.7 KiB After Width: | Height: | Size: 5.7 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 4.6 KiB After Width: | Height: | Size: 4.6 KiB |
@@ -0,0 +1,115 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<!-- Required meta tags -->
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
|
||||||
|
<title>Archives | Be My SpaceTime
|
||||||
|
</title>
|
||||||
|
<link rel="canonical" href="https://avinal.space/archives.html">
|
||||||
|
|
||||||
|
<link rel="apple-touch-icon" href="https://avinal.space/apple-touch-icon.png" sizes="180x180">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-32x32.png" sizes="32x32">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-16x16.png" sizes="16x16">
|
||||||
|
<link rel="manifest" href="https://avinal.space/site.webmanifest">
|
||||||
|
<meta name="theme-color" content="#333333">
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/bootstrap.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/all.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/pygments/manni.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/theme.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/space.css">
|
||||||
|
|
||||||
|
<link rel="alternate" type="application/atom+xml" title="Full Atom Feed" href="https://avinal.space/feeds/all.atom.xml">
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body style="font-family:Overpass Mono,monospace;">
|
||||||
|
<header class="header star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container text-center">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<h1 class="title" style="font-family: ExodarOut;font-weight: lighter;"><a href="https://avinal.space/">Be My SpaceTime</a>
|
||||||
|
</h1>
|
||||||
|
<!--
|
||||||
|
<p class="text-muted">눈치</p>
|
||||||
|
-->
|
||||||
|
<ul class="list-inline">
|
||||||
|
<li class="list-inline-item"><a href="https://gsoc.avinal.space" target="_blank">gsoc</a></li>
|
||||||
|
<li class="list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/pages/about-me.html">About Me</a></li>
|
||||||
|
<li class=" list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-github" href="https://github.com/avinal" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-linkedin" href="https://www.linkedin.com/in/avinal/" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-instagram" href="https://instagram.com/avinal.k" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-calendar" href="https://meet.avinal.space" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fa fa-envelope" href="mailto:blog@avinal.space" target="_blank"></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div> </div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<div class="main">
|
||||||
|
<div class="container">
|
||||||
|
<h1>Archives
|
||||||
|
</h1>
|
||||||
|
<hr>
|
||||||
|
<dl class="row">
|
||||||
|
<dt class="col-sm-4">Sun 27 February 2022</dt>
|
||||||
|
<dd class="col-sm-8"><a href="https://avinal.space/posts/development/lovely-dangerous-things-redhat.html">Developing Minimal Tekton Server <a class="reference external image-reference" href="https://github.com/MiniTeks"><img alt="mks_logo" class="align-middle" src="/images/mks_logo.png" style="width: 1.5em;" /></a></a></dd>
|
||||||
|
<dt class="col-sm-4">Fri 25 February 2022</dt>
|
||||||
|
<dd class="col-sm-8"><a href="https://avinal.space/posts/development/i-am-loving-it-redhat.html">My internship at Red Hat <a class="reference external image-reference" href="https://redhat.com"><img alt="redhat_logo" class="align-middle" src="/images/redhat_logo.png" style="width: 1.5em;" /></a></a></dd>
|
||||||
|
<dt class="col-sm-4">Thu 19 August 2021</dt>
|
||||||
|
<dd class="col-sm-8"><a href="https://avinal.space/posts/report/final-evaluation.html">Google Summer of Code 2021</a></dd>
|
||||||
|
<dt class="col-sm-4">Sun 14 February 2021</dt>
|
||||||
|
<dd class="col-sm-8"><a href="https://avinal.space/posts/development/rst-guide.html">reStructuredText in GitHub</a></dd>
|
||||||
|
<dt class="col-sm-4">Tue 02 February 2021</dt>
|
||||||
|
<dd class="col-sm-8"><a href="https://avinal.space/posts/development/wakatime-readme.html">How I implemented WakaTime embeddable Coding Graph GHA?</a></dd>
|
||||||
|
<dt class="col-sm-4">Tue 26 January 2021</dt>
|
||||||
|
<dd class="col-sm-8"><a href="https://avinal.space/posts/development/twilight-blog.html">How I Created This Blog?</a></dd>
|
||||||
|
<dt class="col-sm-4">Sat 09 January 2021</dt>
|
||||||
|
<dd class="col-sm-8"><a href="https://avinal.space/posts/prime/prime1.html">Introduction to Prime Numbers</a></dd>
|
||||||
|
<dt class="col-sm-4">Mon 04 January 2021</dt>
|
||||||
|
<dd class="col-sm-8"><a href="https://avinal.space/posts/blog/hrt-interview-1.html"><abbr title="Hudson River Trading">HRT</abbr> Systems Internship Interview Experience</a></dd>
|
||||||
|
<dt class="col-sm-4">Thu 31 December 2020</dt>
|
||||||
|
<dd class="col-sm-8"><a href="https://avinal.space/posts/development/wsl1.html">Move WSL 2 Safely to another Drive</a></dd>
|
||||||
|
<dt class="col-sm-4">Tue 01 December 2020</dt>
|
||||||
|
<dd class="col-sm-8"><a href="https://avinal.space/posts/development/vlc-gsod-report.html">Create the VLC User Documentation for one Mobile Port(Android)</a></dd>
|
||||||
|
<dt class="col-sm-4">Mon 28 September 2020</dt>
|
||||||
|
<dd class="col-sm-8"><a href="https://avinal.space/posts/blog/this-is-for-you.html">The Interstellar Twilight</a></dd>
|
||||||
|
<dt class="col-sm-4">Sat 21 September 2019</dt>
|
||||||
|
<dd class="col-sm-8"><a href="https://avinal.space/posts/article/for-sunshine.html">प्रेम रतन धन पायो</a></dd>
|
||||||
|
<dt class="col-sm-4">Mon 27 February 2012</dt>
|
||||||
|
<dd class="col-sm-8"><a href="https://avinal.space/posts/article/red-big-ants.html">The Big Red Ants</a></dd>
|
||||||
|
</dl>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<footer class="footer star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<ul class="col-sm-6 list-inline">
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/archives.html">Archives</a></li>
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/categories.html">Categories</a></li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/tags.html">Tags</a></li>
|
||||||
|
</ul>
|
||||||
|
<p class="col-sm-6 text-sm-right text-muted">Created with <i class="fa fa-heart" style="color: red;"></i> by <a
|
||||||
|
href="https://github.com/avinal" target="_blank">Avinal</a>
|
||||||
|
</p>
|
||||||
|
</div> </div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,214 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<!-- Required meta tags -->
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
|
||||||
|
<title>Avinal Articles | Be My SpaceTime
|
||||||
|
</title>
|
||||||
|
<link rel="canonical" href="https://avinal.space/author/avinal.html">
|
||||||
|
|
||||||
|
<link rel="apple-touch-icon" href="https://avinal.space/apple-touch-icon.png" sizes="180x180">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-32x32.png" sizes="32x32">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-16x16.png" sizes="16x16">
|
||||||
|
<link rel="manifest" href="https://avinal.space/site.webmanifest">
|
||||||
|
<meta name="theme-color" content="#333333">
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/bootstrap.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/all.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/pygments/manni.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/theme.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/space.css">
|
||||||
|
|
||||||
|
<link rel="alternate" type="application/atom+xml" title="Full Atom Feed" href="https://avinal.space/feeds/all.atom.xml">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body style="font-family:Overpass Mono,monospace;">
|
||||||
|
<header class="header star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container text-center">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<h1 class="title" style="font-family: ExodarOut;font-weight: lighter;"><a href="https://avinal.space/">Be My SpaceTime</a>
|
||||||
|
</h1>
|
||||||
|
<!--
|
||||||
|
<p class="text-muted">눈치</p>
|
||||||
|
-->
|
||||||
|
<ul class="list-inline">
|
||||||
|
<li class="list-inline-item"><a href="https://gsoc.avinal.space" target="_blank">gsoc</a></li>
|
||||||
|
<li class="list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/pages/about-me.html">About Me</a></li>
|
||||||
|
<li class=" list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-github" href="https://github.com/avinal" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-linkedin" href="https://www.linkedin.com/in/avinal/" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-instagram" href="https://instagram.com/avinal.k" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-calendar" href="https://meet.avinal.space" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fa fa-envelope" href="mailto:blog@avinal.space" target="_blank"></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div> </div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<div class="main">
|
||||||
|
<div class="container">
|
||||||
|
<h1>Avinal Articles
|
||||||
|
</h1>
|
||||||
|
<hr>
|
||||||
|
<article class="row teaser">
|
||||||
|
<header class="col-sm-4 text-muted">
|
||||||
|
<ul>
|
||||||
|
<li title="2022-02-27T20:47:00+05:30">
|
||||||
|
<i class="fas fa-clock"></i>
|
||||||
|
Sun 27 February 2022
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<i class="fas fa-folder-open"></i>
|
||||||
|
<a href="https://avinal.space/category/development.html">development</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</header>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<h4 class="title">
|
||||||
|
<a href="https://avinal.space/posts/development/lovely-dangerous-things-redhat.html">Developing Minimal Tekton Server <a class="reference external image-reference" href="https://github.com/MiniTeks"><img alt="mks_logo" class="align-middle" src="/images/mks_logo.png" style="width: 1.5em;" /></a></a>
|
||||||
|
</h4>
|
||||||
|
<div class="content">
|
||||||
|
We will be designing and implementing an application that will be talking to Tekton APIs to create resources on a Kubernetes/OpenShift Cluster.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
<hr>
|
||||||
|
<article class="row teaser">
|
||||||
|
<header class="col-sm-4 text-muted">
|
||||||
|
<ul>
|
||||||
|
<li title="2022-02-25T20:47:00+05:30">
|
||||||
|
<i class="fas fa-clock"></i>
|
||||||
|
Fri 25 February 2022
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<i class="fas fa-folder-open"></i>
|
||||||
|
<a href="https://avinal.space/category/development.html">development</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</header>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<h4 class="title">
|
||||||
|
<a href="https://avinal.space/posts/development/i-am-loving-it-redhat.html">My internship at Red Hat <a class="reference external image-reference" href="https://redhat.com"><img alt="redhat_logo" class="align-middle" src="/images/redhat_logo.png" style="width: 1.5em;" /></a></a>
|
||||||
|
</h4>
|
||||||
|
<div class="content">
|
||||||
|
I made it to the Red Hat as a DevTools intern. This post is about onboarding and how I prepared myself for working on the actual project.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
<hr>
|
||||||
|
<article class="row teaser">
|
||||||
|
<header class="col-sm-4 text-muted">
|
||||||
|
<ul>
|
||||||
|
<li title="2021-08-19T23:07:00+05:30">
|
||||||
|
<i class="fas fa-clock"></i>
|
||||||
|
Thu 19 August 2021
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<i class="fas fa-folder-open"></i>
|
||||||
|
<a href="https://avinal.space/category/report.html">report</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</header>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<h4 class="title">
|
||||||
|
<a href="https://avinal.space/posts/report/final-evaluation.html">Google Summer of Code 2021</a>
|
||||||
|
</h4>
|
||||||
|
<div class="content">
|
||||||
|
This is the final report of my Google Summer of Code 2021 at The FOSSology Project.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
<hr>
|
||||||
|
<article class="row teaser">
|
||||||
|
<header class="col-sm-4 text-muted">
|
||||||
|
<ul>
|
||||||
|
<li title="2021-02-14T22:47:00+05:30">
|
||||||
|
<i class="fas fa-clock"></i>
|
||||||
|
Sun 14 February 2021
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<i class="fas fa-folder-open"></i>
|
||||||
|
<a href="https://avinal.space/category/development.html">development</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</header>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<h4 class="title">
|
||||||
|
<a href="https://avinal.space/posts/development/rst-guide.html">reStructuredText in GitHub</a>
|
||||||
|
</h4>
|
||||||
|
<div class="content">
|
||||||
|
reStructuredText syntax
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
<hr>
|
||||||
|
<article class="row teaser">
|
||||||
|
<header class="col-sm-4 text-muted">
|
||||||
|
<ul>
|
||||||
|
<li title="2021-02-02T21:47:00+05:30">
|
||||||
|
<i class="fas fa-clock"></i>
|
||||||
|
Tue 02 February 2021
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<i class="fas fa-folder-open"></i>
|
||||||
|
<a href="https://avinal.space/category/development.html">development</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</header>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<h4 class="title">
|
||||||
|
<a href="https://avinal.space/posts/development/wakatime-readme.html">How I implemented WakaTime embeddable Coding Graph GHA?</a>
|
||||||
|
</h4>
|
||||||
|
<div class="content">
|
||||||
|
f you use WakaTime to track your coding activity. You can add that to your README as a bar graph or embed it in your blog/portfolio. Just add this action to any of your repositories and there you have it.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
<hr>
|
||||||
|
<ul class="pagination">
|
||||||
|
<li class="page-item">
|
||||||
|
<span class="page-link">1 of 3</span>
|
||||||
|
</li>
|
||||||
|
<li class="page-item">
|
||||||
|
<a class="page-link" href="https://avinal.space/author/avinal2.html">
|
||||||
|
<span aria-hidden="true">»</span>
|
||||||
|
<span class="sr-only">Next</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<footer class="footer star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<ul class="col-sm-6 list-inline">
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/archives.html">Archives</a></li>
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/categories.html">Categories</a></li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/tags.html">Tags</a></li>
|
||||||
|
</ul>
|
||||||
|
<p class="col-sm-6 text-sm-right text-muted">Created with <i class="fa fa-heart" style="color: red;"></i> by <a
|
||||||
|
href="https://github.com/avinal" target="_blank">Avinal</a>
|
||||||
|
</p>
|
||||||
|
</div> </div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,220 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<!-- Required meta tags -->
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
|
||||||
|
<title>Avinal Articles | Be My SpaceTime
|
||||||
|
</title>
|
||||||
|
<link rel="canonical" href="https://avinal.space/author/avinal2.html">
|
||||||
|
|
||||||
|
<link rel="apple-touch-icon" href="https://avinal.space/apple-touch-icon.png" sizes="180x180">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-32x32.png" sizes="32x32">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-16x16.png" sizes="16x16">
|
||||||
|
<link rel="manifest" href="https://avinal.space/site.webmanifest">
|
||||||
|
<meta name="theme-color" content="#333333">
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/bootstrap.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/all.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/pygments/manni.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/theme.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/space.css">
|
||||||
|
|
||||||
|
<link rel="alternate" type="application/atom+xml" title="Full Atom Feed" href="https://avinal.space/feeds/all.atom.xml">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body style="font-family:Overpass Mono,monospace;">
|
||||||
|
<header class="header star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container text-center">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<h1 class="title" style="font-family: ExodarOut;font-weight: lighter;"><a href="https://avinal.space/">Be My SpaceTime</a>
|
||||||
|
</h1>
|
||||||
|
<!--
|
||||||
|
<p class="text-muted">눈치</p>
|
||||||
|
-->
|
||||||
|
<ul class="list-inline">
|
||||||
|
<li class="list-inline-item"><a href="https://gsoc.avinal.space" target="_blank">gsoc</a></li>
|
||||||
|
<li class="list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/pages/about-me.html">About Me</a></li>
|
||||||
|
<li class=" list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-github" href="https://github.com/avinal" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-linkedin" href="https://www.linkedin.com/in/avinal/" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-instagram" href="https://instagram.com/avinal.k" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-calendar" href="https://meet.avinal.space" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fa fa-envelope" href="mailto:blog@avinal.space" target="_blank"></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div> </div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<div class="main">
|
||||||
|
<div class="container">
|
||||||
|
<h1>Avinal Articles
|
||||||
|
</h1>
|
||||||
|
<hr>
|
||||||
|
<article class="row teaser">
|
||||||
|
<header class="col-sm-4 text-muted">
|
||||||
|
<ul>
|
||||||
|
<li title="2021-01-26T16:47:00+05:30">
|
||||||
|
<i class="fas fa-clock"></i>
|
||||||
|
Tue 26 January 2021
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<i class="fas fa-folder-open"></i>
|
||||||
|
<a href="https://avinal.space/category/development.html">development</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</header>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<h4 class="title">
|
||||||
|
<a href="https://avinal.space/posts/development/twilight-blog.html">How I Created This Blog?</a>
|
||||||
|
</h4>
|
||||||
|
<div class="content">
|
||||||
|
As you would have guessed by now, this blog is created using one such awesome SSG named Pelican. Pelican is simple, customizable and offers lots of themes and plugins. Pelican is python based SSG and is available through pip.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
<hr>
|
||||||
|
<article class="row teaser">
|
||||||
|
<header class="col-sm-4 text-muted">
|
||||||
|
<ul>
|
||||||
|
<li title="2021-01-09T22:29:00+05:30">
|
||||||
|
<i class="fas fa-clock"></i>
|
||||||
|
Sat 09 January 2021
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<i class="fas fa-folder-open"></i>
|
||||||
|
<a href="https://avinal.space/category/prime.html">prime</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</header>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<h4 class="title">
|
||||||
|
<a href="https://avinal.space/posts/prime/prime1.html">Introduction to Prime Numbers</a>
|
||||||
|
</h4>
|
||||||
|
<div class="content">
|
||||||
|
A prime is a positive integer p having exactly two positive divisors, namely 1 and p. An integer n is composite if n > 1 and n is not prime. (The number 1 is considered neither prime nor composite.)
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
<hr>
|
||||||
|
<article class="row teaser">
|
||||||
|
<header class="col-sm-4 text-muted">
|
||||||
|
<ul>
|
||||||
|
<li title="2021-01-04T21:47:00+05:30">
|
||||||
|
<i class="fas fa-clock"></i>
|
||||||
|
Mon 04 January 2021
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<i class="fas fa-folder-open"></i>
|
||||||
|
<a href="https://avinal.space/category/blog.html">blog</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</header>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<h4 class="title">
|
||||||
|
<a href="https://avinal.space/posts/blog/hrt-interview-1.html"><abbr title="Hudson River Trading">HRT</abbr> Systems Internship Interview Experience</a>
|
||||||
|
</h4>
|
||||||
|
<div class="content">
|
||||||
|
I applied for Systems Internship - Summer 2021 back in December 2020 at Hudson River Trading , New York.....Questions were clear and of medium level. But they were designed in such a way that you must know the basics before you could attempt.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
<hr>
|
||||||
|
<article class="row teaser">
|
||||||
|
<header class="col-sm-4 text-muted">
|
||||||
|
<ul>
|
||||||
|
<li title="2020-12-31T19:07:00+05:30">
|
||||||
|
<i class="fas fa-clock"></i>
|
||||||
|
Thu 31 December 2020
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<i class="fas fa-folder-open"></i>
|
||||||
|
<a href="https://avinal.space/category/development.html">development</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</header>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<h4 class="title">
|
||||||
|
<a href="https://avinal.space/posts/development/wsl1.html">Move WSL 2 Safely to another Drive</a>
|
||||||
|
</h4>
|
||||||
|
<div class="content">
|
||||||
|
It is real pain when you have small SSD and Windows Subsystem for Linux (WSL) is growing exponentially in size. There is no easy way to move the WSL installation to another drive. Here in this blog I will discuss how to tackle this problem with bite size steps.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
<hr>
|
||||||
|
<article class="row teaser">
|
||||||
|
<header class="col-sm-4 text-muted">
|
||||||
|
<ul>
|
||||||
|
<li title="2020-12-01T23:47:00+05:30">
|
||||||
|
<i class="fas fa-clock"></i>
|
||||||
|
Tue 01 December 2020
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<i class="fas fa-folder-open"></i>
|
||||||
|
<a href="https://avinal.space/category/development.html">development</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</header>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<h4 class="title">
|
||||||
|
<a href="https://avinal.space/posts/development/vlc-gsod-report.html">Create the VLC User Documentation for one Mobile Port(Android)</a>
|
||||||
|
</h4>
|
||||||
|
<div class="content">
|
||||||
|
The project was to Create the VLC User Documentation for Android Mobile Port which was previously hosted on VLC’s wiki pages. The major portion of this was to start everything from scratch including chapter separation, section organization.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
<hr>
|
||||||
|
<ul class="pagination">
|
||||||
|
<li class="page-item">
|
||||||
|
<a class="page-link" href="https://avinal.space/author/avinal.html">
|
||||||
|
<span aria-hidden="true">«</span>
|
||||||
|
<span class="sr-only">Previous</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li class="page-item">
|
||||||
|
<span class="page-link">2 of 3</span>
|
||||||
|
</li>
|
||||||
|
<li class="page-item">
|
||||||
|
<a class="page-link" href="https://avinal.space/author/avinal3.html">
|
||||||
|
<span aria-hidden="true">»</span>
|
||||||
|
<span class="sr-only">Next</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<footer class="footer star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<ul class="col-sm-6 list-inline">
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/archives.html">Archives</a></li>
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/categories.html">Categories</a></li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/tags.html">Tags</a></li>
|
||||||
|
</ul>
|
||||||
|
<p class="col-sm-6 text-sm-right text-muted">Created with <i class="fa fa-heart" style="color: red;"></i> by <a
|
||||||
|
href="https://github.com/avinal" target="_blank">Avinal</a>
|
||||||
|
</p>
|
||||||
|
</div> </div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,168 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<!-- Required meta tags -->
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
|
||||||
|
<title>Avinal Articles | Be My SpaceTime
|
||||||
|
</title>
|
||||||
|
<link rel="canonical" href="https://avinal.space/author/avinal3.html">
|
||||||
|
|
||||||
|
<link rel="apple-touch-icon" href="https://avinal.space/apple-touch-icon.png" sizes="180x180">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-32x32.png" sizes="32x32">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-16x16.png" sizes="16x16">
|
||||||
|
<link rel="manifest" href="https://avinal.space/site.webmanifest">
|
||||||
|
<meta name="theme-color" content="#333333">
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/bootstrap.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/all.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/pygments/manni.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/theme.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/space.css">
|
||||||
|
|
||||||
|
<link rel="alternate" type="application/atom+xml" title="Full Atom Feed" href="https://avinal.space/feeds/all.atom.xml">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body style="font-family:Overpass Mono,monospace;">
|
||||||
|
<header class="header star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container text-center">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<h1 class="title" style="font-family: ExodarOut;font-weight: lighter;"><a href="https://avinal.space/">Be My SpaceTime</a>
|
||||||
|
</h1>
|
||||||
|
<!--
|
||||||
|
<p class="text-muted">눈치</p>
|
||||||
|
-->
|
||||||
|
<ul class="list-inline">
|
||||||
|
<li class="list-inline-item"><a href="https://gsoc.avinal.space" target="_blank">gsoc</a></li>
|
||||||
|
<li class="list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/pages/about-me.html">About Me</a></li>
|
||||||
|
<li class=" list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-github" href="https://github.com/avinal" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-linkedin" href="https://www.linkedin.com/in/avinal/" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-instagram" href="https://instagram.com/avinal.k" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-calendar" href="https://meet.avinal.space" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fa fa-envelope" href="mailto:blog@avinal.space" target="_blank"></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div> </div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<div class="main">
|
||||||
|
<div class="container">
|
||||||
|
<h1>Avinal Articles
|
||||||
|
</h1>
|
||||||
|
<hr>
|
||||||
|
<article class="row teaser">
|
||||||
|
<header class="col-sm-4 text-muted">
|
||||||
|
<ul>
|
||||||
|
<li title="2020-09-28T22:47:00+05:30">
|
||||||
|
<i class="fas fa-clock"></i>
|
||||||
|
Mon 28 September 2020
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<i class="fas fa-folder-open"></i>
|
||||||
|
<a href="https://avinal.space/category/blog.html">blog</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</header>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<h4 class="title">
|
||||||
|
<a href="https://avinal.space/posts/blog/this-is-for-you.html">The Interstellar Twilight</a>
|
||||||
|
</h4>
|
||||||
|
<div class="content">
|
||||||
|
If in the Twilight of dreams we should meet once more, we shell talk again together and I shall sing to you a lullaby till you sleep again to meet me in the Twilight of another dream.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
<hr>
|
||||||
|
<article class="row teaser">
|
||||||
|
<header class="col-sm-4 text-muted">
|
||||||
|
<ul>
|
||||||
|
<li title="2019-09-21T15:47:00+05:30">
|
||||||
|
<i class="fas fa-clock"></i>
|
||||||
|
Sat 21 September 2019
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<i class="fas fa-folder-open"></i>
|
||||||
|
<a href="https://avinal.space/category/article.html">article</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</header>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<h4 class="title">
|
||||||
|
<a href="https://avinal.space/posts/article/for-sunshine.html">प्रेम रतन धन पायो</a>
|
||||||
|
</h4>
|
||||||
|
<div class="content">
|
||||||
|
टूटता तारा देखना एक अलौकिक अनुभव है। हिमाद्रि के छत से आसमान कुछ ज्यादा ही करीब प्रतीत होता है । लोग सदियों से हिमालय को पूजते आयें हैं । दादा-दादी कहा करते थे ये जिंदा पहाड़ हैं । सारी बातें सुनते हैं लोगों की । उनके दुख दर्द दूर करते हैं, ये देवता हैं ।
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
<hr>
|
||||||
|
<article class="row teaser">
|
||||||
|
<header class="col-sm-4 text-muted">
|
||||||
|
<ul>
|
||||||
|
<li title="2012-02-27T22:47:00+05:30">
|
||||||
|
<i class="fas fa-clock"></i>
|
||||||
|
Mon 27 February 2012
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<i class="fas fa-folder-open"></i>
|
||||||
|
<a href="https://avinal.space/category/article.html">article</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</header>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<h4 class="title">
|
||||||
|
<a href="https://avinal.space/posts/article/red-big-ants.html">The Big Red Ants</a>
|
||||||
|
</h4>
|
||||||
|
<div class="content">
|
||||||
|
In a bird’s eye view if we see around us, ants are the common and tiniest living entitiy seen by naked eye. One of them are the big red ants, in my view they are unique from others in two ways, first they live on trees and second their anteenas are too long and bent in middle, seems like their fore legs. Their mandible (mouth) seems like eagle’s beak.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
<hr>
|
||||||
|
<ul class="pagination">
|
||||||
|
<li class="page-item">
|
||||||
|
<a class="page-link" href="https://avinal.space/author/avinal2.html">
|
||||||
|
<span aria-hidden="true">«</span>
|
||||||
|
<span class="sr-only">Previous</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li class="page-item">
|
||||||
|
<span class="page-link">3 of 3</span>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<footer class="footer star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<ul class="col-sm-6 list-inline">
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/archives.html">Archives</a></li>
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/categories.html">Categories</a></li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/tags.html">Tags</a></li>
|
||||||
|
</ul>
|
||||||
|
<p class="col-sm-6 text-sm-right text-muted">Created with <i class="fa fa-heart" style="color: red;"></i> by <a
|
||||||
|
href="https://github.com/avinal" target="_blank">Avinal</a>
|
||||||
|
</p>
|
||||||
|
</div> </div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,109 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<!-- Required meta tags -->
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
|
||||||
|
<title>Categories | Be My SpaceTime
|
||||||
|
</title>
|
||||||
|
<link rel="canonical" href="https://avinal.space/categories.html">
|
||||||
|
|
||||||
|
<link rel="apple-touch-icon" href="https://avinal.space/apple-touch-icon.png" sizes="180x180">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-32x32.png" sizes="32x32">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-16x16.png" sizes="16x16">
|
||||||
|
<link rel="manifest" href="https://avinal.space/site.webmanifest">
|
||||||
|
<meta name="theme-color" content="#333333">
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/bootstrap.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/all.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/pygments/manni.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/theme.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/space.css">
|
||||||
|
|
||||||
|
<link rel="alternate" type="application/atom+xml" title="Full Atom Feed" href="https://avinal.space/feeds/all.atom.xml">
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body style="font-family:Overpass Mono,monospace;">
|
||||||
|
<header class="header star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container text-center">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<h1 class="title" style="font-family: ExodarOut;font-weight: lighter;"><a href="https://avinal.space/">Be My SpaceTime</a>
|
||||||
|
</h1>
|
||||||
|
<!--
|
||||||
|
<p class="text-muted">눈치</p>
|
||||||
|
-->
|
||||||
|
<ul class="list-inline">
|
||||||
|
<li class="list-inline-item"><a href="https://gsoc.avinal.space" target="_blank">gsoc</a></li>
|
||||||
|
<li class="list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/pages/about-me.html">About Me</a></li>
|
||||||
|
<li class=" list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-github" href="https://github.com/avinal" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-linkedin" href="https://www.linkedin.com/in/avinal/" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-instagram" href="https://instagram.com/avinal.k" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-calendar" href="https://meet.avinal.space" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fa fa-envelope" href="mailto:blog@avinal.space" target="_blank"></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div> </div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<div class="main">
|
||||||
|
<div class="container">
|
||||||
|
<h1>Categories
|
||||||
|
</h1>
|
||||||
|
<hr>
|
||||||
|
<table class="table table-bordered table-striped">
|
||||||
|
<tr>
|
||||||
|
<td><a href="https://avinal.space/category/article.html">article</a></td>
|
||||||
|
<td>2</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><a href="https://avinal.space/category/blog.html">blog</a></td>
|
||||||
|
<td>2</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><a href="https://avinal.space/category/development.html">development</a></td>
|
||||||
|
<td>7</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><a href="https://avinal.space/category/prime.html">prime</a></td>
|
||||||
|
<td>1</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><a href="https://avinal.space/category/report.html">report</a></td>
|
||||||
|
<td>1</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<footer class="footer star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<ul class="col-sm-6 list-inline">
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/archives.html">Archives</a></li>
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/categories.html">Categories</a></li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/tags.html">Tags</a></li>
|
||||||
|
</ul>
|
||||||
|
<p class="col-sm-6 text-sm-right text-muted">Created with <i class="fa fa-heart" style="color: red;"></i> by <a
|
||||||
|
href="https://github.com/avinal" target="_blank">Avinal</a>
|
||||||
|
</p>
|
||||||
|
</div> </div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,134 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<!-- Required meta tags -->
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
|
||||||
|
<title>article Articles | Be My SpaceTime
|
||||||
|
</title>
|
||||||
|
<link rel="canonical" href="https://avinal.space/category/article.html">
|
||||||
|
|
||||||
|
<link rel="apple-touch-icon" href="https://avinal.space/apple-touch-icon.png" sizes="180x180">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-32x32.png" sizes="32x32">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-16x16.png" sizes="16x16">
|
||||||
|
<link rel="manifest" href="https://avinal.space/site.webmanifest">
|
||||||
|
<meta name="theme-color" content="#333333">
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/bootstrap.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/all.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/pygments/manni.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/theme.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/space.css">
|
||||||
|
|
||||||
|
<link rel="alternate" type="application/atom+xml" title="Full Atom Feed" href="https://avinal.space/feeds/all.atom.xml">
|
||||||
|
<link rel="alternate" type="application/atom+xml" title="Categories Atom Feed"
|
||||||
|
href="https://avinal.space/feeds/article.atom.xml">
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body style="font-family:Overpass Mono,monospace;">
|
||||||
|
<header class="header star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container text-center">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<h1 class="title" style="font-family: ExodarOut;font-weight: lighter;"><a href="https://avinal.space/">Be My SpaceTime</a>
|
||||||
|
</h1>
|
||||||
|
<!--
|
||||||
|
<p class="text-muted">눈치</p>
|
||||||
|
-->
|
||||||
|
<ul class="list-inline">
|
||||||
|
<li class="list-inline-item"><a href="https://gsoc.avinal.space" target="_blank">gsoc</a></li>
|
||||||
|
<li class="list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/pages/about-me.html">About Me</a></li>
|
||||||
|
<li class=" list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-github" href="https://github.com/avinal" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-linkedin" href="https://www.linkedin.com/in/avinal/" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-instagram" href="https://instagram.com/avinal.k" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-calendar" href="https://meet.avinal.space" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fa fa-envelope" href="mailto:blog@avinal.space" target="_blank"></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div> </div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<div class="main">
|
||||||
|
<div class="container">
|
||||||
|
<h1>Category: article
|
||||||
|
</h1>
|
||||||
|
<hr>
|
||||||
|
<article class="row teaser">
|
||||||
|
<header class="col-sm-4 text-muted">
|
||||||
|
<ul>
|
||||||
|
<li title="2019-09-21T15:47:00+05:30">
|
||||||
|
<i class="fas fa-clock"></i>
|
||||||
|
Sat 21 September 2019
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<i class="fas fa-folder-open"></i>
|
||||||
|
<a href="https://avinal.space/category/article.html">article</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</header>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<h4 class="title">
|
||||||
|
<a href="https://avinal.space/posts/article/for-sunshine.html">प्रेम रतन धन पायो</a>
|
||||||
|
</h4>
|
||||||
|
<div class="content">
|
||||||
|
टूटता तारा देखना एक अलौकिक अनुभव है। हिमाद्रि के छत से आसमान कुछ ज्यादा ही करीब प्रतीत होता है । लोग सदियों से हिमालय को पूजते आयें हैं । दादा-दादी कहा करते थे ये जिंदा पहाड़ हैं । सारी बातें सुनते हैं लोगों की । उनके दुख दर्द दूर करते हैं, ये देवता हैं ।
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
<hr>
|
||||||
|
<article class="row teaser">
|
||||||
|
<header class="col-sm-4 text-muted">
|
||||||
|
<ul>
|
||||||
|
<li title="2012-02-27T22:47:00+05:30">
|
||||||
|
<i class="fas fa-clock"></i>
|
||||||
|
Mon 27 February 2012
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<i class="fas fa-folder-open"></i>
|
||||||
|
<a href="https://avinal.space/category/article.html">article</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</header>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<h4 class="title">
|
||||||
|
<a href="https://avinal.space/posts/article/red-big-ants.html">The Big Red Ants</a>
|
||||||
|
</h4>
|
||||||
|
<div class="content">
|
||||||
|
In a bird’s eye view if we see around us, ants are the common and tiniest living entitiy seen by naked eye. One of them are the big red ants, in my view they are unique from others in two ways, first they live on trees and second their anteenas are too long and bent in middle, seems like their fore legs. Their mandible (mouth) seems like eagle’s beak.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<footer class="footer star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<ul class="col-sm-6 list-inline">
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/archives.html">Archives</a></li>
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/categories.html">Categories</a></li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/tags.html">Tags</a></li>
|
||||||
|
</ul>
|
||||||
|
<p class="col-sm-6 text-sm-right text-muted">Created with <i class="fa fa-heart" style="color: red;"></i> by <a
|
||||||
|
href="https://github.com/avinal" target="_blank">Avinal</a>
|
||||||
|
</p>
|
||||||
|
</div> </div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,134 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<!-- Required meta tags -->
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
|
||||||
|
<title>blog Articles | Be My SpaceTime
|
||||||
|
</title>
|
||||||
|
<link rel="canonical" href="https://avinal.space/category/blog.html">
|
||||||
|
|
||||||
|
<link rel="apple-touch-icon" href="https://avinal.space/apple-touch-icon.png" sizes="180x180">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-32x32.png" sizes="32x32">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-16x16.png" sizes="16x16">
|
||||||
|
<link rel="manifest" href="https://avinal.space/site.webmanifest">
|
||||||
|
<meta name="theme-color" content="#333333">
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/bootstrap.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/all.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/pygments/manni.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/theme.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/space.css">
|
||||||
|
|
||||||
|
<link rel="alternate" type="application/atom+xml" title="Full Atom Feed" href="https://avinal.space/feeds/all.atom.xml">
|
||||||
|
<link rel="alternate" type="application/atom+xml" title="Categories Atom Feed"
|
||||||
|
href="https://avinal.space/feeds/blog.atom.xml">
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body style="font-family:Overpass Mono,monospace;">
|
||||||
|
<header class="header star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container text-center">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<h1 class="title" style="font-family: ExodarOut;font-weight: lighter;"><a href="https://avinal.space/">Be My SpaceTime</a>
|
||||||
|
</h1>
|
||||||
|
<!--
|
||||||
|
<p class="text-muted">눈치</p>
|
||||||
|
-->
|
||||||
|
<ul class="list-inline">
|
||||||
|
<li class="list-inline-item"><a href="https://gsoc.avinal.space" target="_blank">gsoc</a></li>
|
||||||
|
<li class="list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/pages/about-me.html">About Me</a></li>
|
||||||
|
<li class=" list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-github" href="https://github.com/avinal" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-linkedin" href="https://www.linkedin.com/in/avinal/" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-instagram" href="https://instagram.com/avinal.k" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-calendar" href="https://meet.avinal.space" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fa fa-envelope" href="mailto:blog@avinal.space" target="_blank"></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div> </div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<div class="main">
|
||||||
|
<div class="container">
|
||||||
|
<h1>Category: blog
|
||||||
|
</h1>
|
||||||
|
<hr>
|
||||||
|
<article class="row teaser">
|
||||||
|
<header class="col-sm-4 text-muted">
|
||||||
|
<ul>
|
||||||
|
<li title="2021-01-04T21:47:00+05:30">
|
||||||
|
<i class="fas fa-clock"></i>
|
||||||
|
Mon 04 January 2021
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<i class="fas fa-folder-open"></i>
|
||||||
|
<a href="https://avinal.space/category/blog.html">blog</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</header>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<h4 class="title">
|
||||||
|
<a href="https://avinal.space/posts/blog/hrt-interview-1.html"><abbr title="Hudson River Trading">HRT</abbr> Systems Internship Interview Experience</a>
|
||||||
|
</h4>
|
||||||
|
<div class="content">
|
||||||
|
I applied for Systems Internship - Summer 2021 back in December 2020 at Hudson River Trading , New York.....Questions were clear and of medium level. But they were designed in such a way that you must know the basics before you could attempt.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
<hr>
|
||||||
|
<article class="row teaser">
|
||||||
|
<header class="col-sm-4 text-muted">
|
||||||
|
<ul>
|
||||||
|
<li title="2020-09-28T22:47:00+05:30">
|
||||||
|
<i class="fas fa-clock"></i>
|
||||||
|
Mon 28 September 2020
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<i class="fas fa-folder-open"></i>
|
||||||
|
<a href="https://avinal.space/category/blog.html">blog</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</header>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<h4 class="title">
|
||||||
|
<a href="https://avinal.space/posts/blog/this-is-for-you.html">The Interstellar Twilight</a>
|
||||||
|
</h4>
|
||||||
|
<div class="content">
|
||||||
|
If in the Twilight of dreams we should meet once more, we shell talk again together and I shall sing to you a lullaby till you sleep again to meet me in the Twilight of another dream.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<footer class="footer star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<ul class="col-sm-6 list-inline">
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/archives.html">Archives</a></li>
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/categories.html">Categories</a></li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/tags.html">Tags</a></li>
|
||||||
|
</ul>
|
||||||
|
<p class="col-sm-6 text-sm-right text-muted">Created with <i class="fa fa-heart" style="color: red;"></i> by <a
|
||||||
|
href="https://github.com/avinal" target="_blank">Avinal</a>
|
||||||
|
</p>
|
||||||
|
</div> </div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,215 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<!-- Required meta tags -->
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
|
||||||
|
<title>development Articles | Be My SpaceTime
|
||||||
|
</title>
|
||||||
|
<link rel="canonical" href="https://avinal.space/category/development.html">
|
||||||
|
|
||||||
|
<link rel="apple-touch-icon" href="https://avinal.space/apple-touch-icon.png" sizes="180x180">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-32x32.png" sizes="32x32">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-16x16.png" sizes="16x16">
|
||||||
|
<link rel="manifest" href="https://avinal.space/site.webmanifest">
|
||||||
|
<meta name="theme-color" content="#333333">
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/bootstrap.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/all.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/pygments/manni.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/theme.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/space.css">
|
||||||
|
|
||||||
|
<link rel="alternate" type="application/atom+xml" title="Full Atom Feed" href="https://avinal.space/feeds/all.atom.xml">
|
||||||
|
<link rel="alternate" type="application/atom+xml" title="Categories Atom Feed"
|
||||||
|
href="https://avinal.space/feeds/development.atom.xml">
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body style="font-family:Overpass Mono,monospace;">
|
||||||
|
<header class="header star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container text-center">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<h1 class="title" style="font-family: ExodarOut;font-weight: lighter;"><a href="https://avinal.space/">Be My SpaceTime</a>
|
||||||
|
</h1>
|
||||||
|
<!--
|
||||||
|
<p class="text-muted">눈치</p>
|
||||||
|
-->
|
||||||
|
<ul class="list-inline">
|
||||||
|
<li class="list-inline-item"><a href="https://gsoc.avinal.space" target="_blank">gsoc</a></li>
|
||||||
|
<li class="list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/pages/about-me.html">About Me</a></li>
|
||||||
|
<li class=" list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-github" href="https://github.com/avinal" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-linkedin" href="https://www.linkedin.com/in/avinal/" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-instagram" href="https://instagram.com/avinal.k" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-calendar" href="https://meet.avinal.space" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fa fa-envelope" href="mailto:blog@avinal.space" target="_blank"></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div> </div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<div class="main">
|
||||||
|
<div class="container">
|
||||||
|
<h1>Category: development
|
||||||
|
</h1>
|
||||||
|
<hr>
|
||||||
|
<article class="row teaser">
|
||||||
|
<header class="col-sm-4 text-muted">
|
||||||
|
<ul>
|
||||||
|
<li title="2022-02-27T20:47:00+05:30">
|
||||||
|
<i class="fas fa-clock"></i>
|
||||||
|
Sun 27 February 2022
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<i class="fas fa-folder-open"></i>
|
||||||
|
<a href="https://avinal.space/category/development.html">development</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</header>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<h4 class="title">
|
||||||
|
<a href="https://avinal.space/posts/development/lovely-dangerous-things-redhat.html">Developing Minimal Tekton Server <a class="reference external image-reference" href="https://github.com/MiniTeks"><img alt="mks_logo" class="align-middle" src="/images/mks_logo.png" style="width: 1.5em;" /></a></a>
|
||||||
|
</h4>
|
||||||
|
<div class="content">
|
||||||
|
We will be designing and implementing an application that will be talking to Tekton APIs to create resources on a Kubernetes/OpenShift Cluster.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
<hr>
|
||||||
|
<article class="row teaser">
|
||||||
|
<header class="col-sm-4 text-muted">
|
||||||
|
<ul>
|
||||||
|
<li title="2022-02-25T20:47:00+05:30">
|
||||||
|
<i class="fas fa-clock"></i>
|
||||||
|
Fri 25 February 2022
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<i class="fas fa-folder-open"></i>
|
||||||
|
<a href="https://avinal.space/category/development.html">development</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</header>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<h4 class="title">
|
||||||
|
<a href="https://avinal.space/posts/development/i-am-loving-it-redhat.html">My internship at Red Hat <a class="reference external image-reference" href="https://redhat.com"><img alt="redhat_logo" class="align-middle" src="/images/redhat_logo.png" style="width: 1.5em;" /></a></a>
|
||||||
|
</h4>
|
||||||
|
<div class="content">
|
||||||
|
I made it to the Red Hat as a DevTools intern. This post is about onboarding and how I prepared myself for working on the actual project.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
<hr>
|
||||||
|
<article class="row teaser">
|
||||||
|
<header class="col-sm-4 text-muted">
|
||||||
|
<ul>
|
||||||
|
<li title="2021-02-14T22:47:00+05:30">
|
||||||
|
<i class="fas fa-clock"></i>
|
||||||
|
Sun 14 February 2021
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<i class="fas fa-folder-open"></i>
|
||||||
|
<a href="https://avinal.space/category/development.html">development</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</header>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<h4 class="title">
|
||||||
|
<a href="https://avinal.space/posts/development/rst-guide.html">reStructuredText in GitHub</a>
|
||||||
|
</h4>
|
||||||
|
<div class="content">
|
||||||
|
reStructuredText syntax
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
<hr>
|
||||||
|
<article class="row teaser">
|
||||||
|
<header class="col-sm-4 text-muted">
|
||||||
|
<ul>
|
||||||
|
<li title="2021-02-02T21:47:00+05:30">
|
||||||
|
<i class="fas fa-clock"></i>
|
||||||
|
Tue 02 February 2021
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<i class="fas fa-folder-open"></i>
|
||||||
|
<a href="https://avinal.space/category/development.html">development</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</header>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<h4 class="title">
|
||||||
|
<a href="https://avinal.space/posts/development/wakatime-readme.html">How I implemented WakaTime embeddable Coding Graph GHA?</a>
|
||||||
|
</h4>
|
||||||
|
<div class="content">
|
||||||
|
f you use WakaTime to track your coding activity. You can add that to your README as a bar graph or embed it in your blog/portfolio. Just add this action to any of your repositories and there you have it.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
<hr>
|
||||||
|
<article class="row teaser">
|
||||||
|
<header class="col-sm-4 text-muted">
|
||||||
|
<ul>
|
||||||
|
<li title="2021-01-26T16:47:00+05:30">
|
||||||
|
<i class="fas fa-clock"></i>
|
||||||
|
Tue 26 January 2021
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<i class="fas fa-folder-open"></i>
|
||||||
|
<a href="https://avinal.space/category/development.html">development</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</header>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<h4 class="title">
|
||||||
|
<a href="https://avinal.space/posts/development/twilight-blog.html">How I Created This Blog?</a>
|
||||||
|
</h4>
|
||||||
|
<div class="content">
|
||||||
|
As you would have guessed by now, this blog is created using one such awesome SSG named Pelican. Pelican is simple, customizable and offers lots of themes and plugins. Pelican is python based SSG and is available through pip.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
<hr>
|
||||||
|
<ul class="pagination">
|
||||||
|
<li class="page-item">
|
||||||
|
<span class="page-link">1 of 2</span>
|
||||||
|
</li>
|
||||||
|
<li class="page-item">
|
||||||
|
<a class="page-link" href="https://avinal.space/category/development2.html">
|
||||||
|
<span aria-hidden="true">»</span>
|
||||||
|
<span class="sr-only">Next</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<footer class="footer star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<ul class="col-sm-6 list-inline">
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/archives.html">Archives</a></li>
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/categories.html">Categories</a></li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/tags.html">Tags</a></li>
|
||||||
|
</ul>
|
||||||
|
<p class="col-sm-6 text-sm-right text-muted">Created with <i class="fa fa-heart" style="color: red;"></i> by <a
|
||||||
|
href="https://github.com/avinal" target="_blank">Avinal</a>
|
||||||
|
</p>
|
||||||
|
</div> </div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,146 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<!-- Required meta tags -->
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
|
||||||
|
<title>development Articles | Be My SpaceTime
|
||||||
|
</title>
|
||||||
|
<link rel="canonical" href="https://avinal.space/category/development2.html">
|
||||||
|
|
||||||
|
<link rel="apple-touch-icon" href="https://avinal.space/apple-touch-icon.png" sizes="180x180">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-32x32.png" sizes="32x32">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-16x16.png" sizes="16x16">
|
||||||
|
<link rel="manifest" href="https://avinal.space/site.webmanifest">
|
||||||
|
<meta name="theme-color" content="#333333">
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/bootstrap.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/all.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/pygments/manni.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/theme.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/space.css">
|
||||||
|
|
||||||
|
<link rel="alternate" type="application/atom+xml" title="Full Atom Feed" href="https://avinal.space/feeds/all.atom.xml">
|
||||||
|
<link rel="alternate" type="application/atom+xml" title="Categories Atom Feed"
|
||||||
|
href="https://avinal.space/feeds/development.atom.xml">
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body style="font-family:Overpass Mono,monospace;">
|
||||||
|
<header class="header star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container text-center">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<h1 class="title" style="font-family: ExodarOut;font-weight: lighter;"><a href="https://avinal.space/">Be My SpaceTime</a>
|
||||||
|
</h1>
|
||||||
|
<!--
|
||||||
|
<p class="text-muted">눈치</p>
|
||||||
|
-->
|
||||||
|
<ul class="list-inline">
|
||||||
|
<li class="list-inline-item"><a href="https://gsoc.avinal.space" target="_blank">gsoc</a></li>
|
||||||
|
<li class="list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/pages/about-me.html">About Me</a></li>
|
||||||
|
<li class=" list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-github" href="https://github.com/avinal" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-linkedin" href="https://www.linkedin.com/in/avinal/" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-instagram" href="https://instagram.com/avinal.k" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-calendar" href="https://meet.avinal.space" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fa fa-envelope" href="mailto:blog@avinal.space" target="_blank"></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div> </div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<div class="main">
|
||||||
|
<div class="container">
|
||||||
|
<h1>Category: development
|
||||||
|
</h1>
|
||||||
|
<hr>
|
||||||
|
<article class="row teaser">
|
||||||
|
<header class="col-sm-4 text-muted">
|
||||||
|
<ul>
|
||||||
|
<li title="2020-12-31T19:07:00+05:30">
|
||||||
|
<i class="fas fa-clock"></i>
|
||||||
|
Thu 31 December 2020
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<i class="fas fa-folder-open"></i>
|
||||||
|
<a href="https://avinal.space/category/development.html">development</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</header>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<h4 class="title">
|
||||||
|
<a href="https://avinal.space/posts/development/wsl1.html">Move WSL 2 Safely to another Drive</a>
|
||||||
|
</h4>
|
||||||
|
<div class="content">
|
||||||
|
It is real pain when you have small SSD and Windows Subsystem for Linux (WSL) is growing exponentially in size. There is no easy way to move the WSL installation to another drive. Here in this blog I will discuss how to tackle this problem with bite size steps.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
<hr>
|
||||||
|
<article class="row teaser">
|
||||||
|
<header class="col-sm-4 text-muted">
|
||||||
|
<ul>
|
||||||
|
<li title="2020-12-01T23:47:00+05:30">
|
||||||
|
<i class="fas fa-clock"></i>
|
||||||
|
Tue 01 December 2020
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<i class="fas fa-folder-open"></i>
|
||||||
|
<a href="https://avinal.space/category/development.html">development</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</header>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<h4 class="title">
|
||||||
|
<a href="https://avinal.space/posts/development/vlc-gsod-report.html">Create the VLC User Documentation for one Mobile Port(Android)</a>
|
||||||
|
</h4>
|
||||||
|
<div class="content">
|
||||||
|
The project was to Create the VLC User Documentation for Android Mobile Port which was previously hosted on VLC’s wiki pages. The major portion of this was to start everything from scratch including chapter separation, section organization.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
<hr>
|
||||||
|
<ul class="pagination">
|
||||||
|
<li class="page-item">
|
||||||
|
<a class="page-link" href="https://avinal.space/category/development.html">
|
||||||
|
<span aria-hidden="true">«</span>
|
||||||
|
<span class="sr-only">Previous</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li class="page-item">
|
||||||
|
<span class="page-link">2 of 2</span>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<footer class="footer star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<ul class="col-sm-6 list-inline">
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/archives.html">Archives</a></li>
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/categories.html">Categories</a></li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/tags.html">Tags</a></li>
|
||||||
|
</ul>
|
||||||
|
<p class="col-sm-6 text-sm-right text-muted">Created with <i class="fa fa-heart" style="color: red;"></i> by <a
|
||||||
|
href="https://github.com/avinal" target="_blank">Avinal</a>
|
||||||
|
</p>
|
||||||
|
</div> </div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,111 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<!-- Required meta tags -->
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
|
||||||
|
<title>prime Articles | Be My SpaceTime
|
||||||
|
</title>
|
||||||
|
<link rel="canonical" href="https://avinal.space/category/prime.html">
|
||||||
|
|
||||||
|
<link rel="apple-touch-icon" href="https://avinal.space/apple-touch-icon.png" sizes="180x180">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-32x32.png" sizes="32x32">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-16x16.png" sizes="16x16">
|
||||||
|
<link rel="manifest" href="https://avinal.space/site.webmanifest">
|
||||||
|
<meta name="theme-color" content="#333333">
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/bootstrap.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/all.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/pygments/manni.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/theme.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/space.css">
|
||||||
|
|
||||||
|
<link rel="alternate" type="application/atom+xml" title="Full Atom Feed" href="https://avinal.space/feeds/all.atom.xml">
|
||||||
|
<link rel="alternate" type="application/atom+xml" title="Categories Atom Feed"
|
||||||
|
href="https://avinal.space/feeds/prime.atom.xml">
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body style="font-family:Overpass Mono,monospace;">
|
||||||
|
<header class="header star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container text-center">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<h1 class="title" style="font-family: ExodarOut;font-weight: lighter;"><a href="https://avinal.space/">Be My SpaceTime</a>
|
||||||
|
</h1>
|
||||||
|
<!--
|
||||||
|
<p class="text-muted">눈치</p>
|
||||||
|
-->
|
||||||
|
<ul class="list-inline">
|
||||||
|
<li class="list-inline-item"><a href="https://gsoc.avinal.space" target="_blank">gsoc</a></li>
|
||||||
|
<li class="list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/pages/about-me.html">About Me</a></li>
|
||||||
|
<li class=" list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-github" href="https://github.com/avinal" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-linkedin" href="https://www.linkedin.com/in/avinal/" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-instagram" href="https://instagram.com/avinal.k" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-calendar" href="https://meet.avinal.space" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fa fa-envelope" href="mailto:blog@avinal.space" target="_blank"></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div> </div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<div class="main">
|
||||||
|
<div class="container">
|
||||||
|
<h1>Category: prime
|
||||||
|
</h1>
|
||||||
|
<hr>
|
||||||
|
<article class="row teaser">
|
||||||
|
<header class="col-sm-4 text-muted">
|
||||||
|
<ul>
|
||||||
|
<li title="2021-01-09T22:29:00+05:30">
|
||||||
|
<i class="fas fa-clock"></i>
|
||||||
|
Sat 09 January 2021
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<i class="fas fa-folder-open"></i>
|
||||||
|
<a href="https://avinal.space/category/prime.html">prime</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</header>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<h4 class="title">
|
||||||
|
<a href="https://avinal.space/posts/prime/prime1.html">Introduction to Prime Numbers</a>
|
||||||
|
</h4>
|
||||||
|
<div class="content">
|
||||||
|
A prime is a positive integer p having exactly two positive divisors, namely 1 and p. An integer n is composite if n > 1 and n is not prime. (The number 1 is considered neither prime nor composite.)
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<footer class="footer star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<ul class="col-sm-6 list-inline">
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/archives.html">Archives</a></li>
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/categories.html">Categories</a></li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/tags.html">Tags</a></li>
|
||||||
|
</ul>
|
||||||
|
<p class="col-sm-6 text-sm-right text-muted">Created with <i class="fa fa-heart" style="color: red;"></i> by <a
|
||||||
|
href="https://github.com/avinal" target="_blank">Avinal</a>
|
||||||
|
</p>
|
||||||
|
</div> </div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,111 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<!-- Required meta tags -->
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
|
||||||
|
<title>report Articles | Be My SpaceTime
|
||||||
|
</title>
|
||||||
|
<link rel="canonical" href="https://avinal.space/category/report.html">
|
||||||
|
|
||||||
|
<link rel="apple-touch-icon" href="https://avinal.space/apple-touch-icon.png" sizes="180x180">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-32x32.png" sizes="32x32">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-16x16.png" sizes="16x16">
|
||||||
|
<link rel="manifest" href="https://avinal.space/site.webmanifest">
|
||||||
|
<meta name="theme-color" content="#333333">
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/bootstrap.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/all.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/pygments/manni.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/theme.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/space.css">
|
||||||
|
|
||||||
|
<link rel="alternate" type="application/atom+xml" title="Full Atom Feed" href="https://avinal.space/feeds/all.atom.xml">
|
||||||
|
<link rel="alternate" type="application/atom+xml" title="Categories Atom Feed"
|
||||||
|
href="https://avinal.space/feeds/report.atom.xml">
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body style="font-family:Overpass Mono,monospace;">
|
||||||
|
<header class="header star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container text-center">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<h1 class="title" style="font-family: ExodarOut;font-weight: lighter;"><a href="https://avinal.space/">Be My SpaceTime</a>
|
||||||
|
</h1>
|
||||||
|
<!--
|
||||||
|
<p class="text-muted">눈치</p>
|
||||||
|
-->
|
||||||
|
<ul class="list-inline">
|
||||||
|
<li class="list-inline-item"><a href="https://gsoc.avinal.space" target="_blank">gsoc</a></li>
|
||||||
|
<li class="list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/pages/about-me.html">About Me</a></li>
|
||||||
|
<li class=" list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-github" href="https://github.com/avinal" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-linkedin" href="https://www.linkedin.com/in/avinal/" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-instagram" href="https://instagram.com/avinal.k" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-calendar" href="https://meet.avinal.space" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fa fa-envelope" href="mailto:blog@avinal.space" target="_blank"></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div> </div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<div class="main">
|
||||||
|
<div class="container">
|
||||||
|
<h1>Category: report
|
||||||
|
</h1>
|
||||||
|
<hr>
|
||||||
|
<article class="row teaser">
|
||||||
|
<header class="col-sm-4 text-muted">
|
||||||
|
<ul>
|
||||||
|
<li title="2021-08-19T23:07:00+05:30">
|
||||||
|
<i class="fas fa-clock"></i>
|
||||||
|
Thu 19 August 2021
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<i class="fas fa-folder-open"></i>
|
||||||
|
<a href="https://avinal.space/category/report.html">report</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</header>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<h4 class="title">
|
||||||
|
<a href="https://avinal.space/posts/report/final-evaluation.html">Google Summer of Code 2021</a>
|
||||||
|
</h4>
|
||||||
|
<div class="content">
|
||||||
|
This is the final report of my Google Summer of Code 2021 at The FOSSology Project.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<footer class="footer star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<ul class="col-sm-6 list-inline">
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/archives.html">Archives</a></li>
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/categories.html">Categories</a></li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/tags.html">Tags</a></li>
|
||||||
|
</ul>
|
||||||
|
<p class="col-sm-6 text-sm-right text-muted">Created with <i class="fa fa-heart" style="color: red;"></i> by <a
|
||||||
|
href="https://github.com/avinal" target="_blank">Avinal</a>
|
||||||
|
</p>
|
||||||
|
</div> </div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
****************
|
|
||||||
The Big Red Ants
|
|
||||||
****************
|
|
||||||
|
|
||||||
:date: 2012-02-27 22:47
|
|
||||||
:tags: ants, sav
|
|
||||||
:category: article
|
|
||||||
:slug: red-big-ants
|
|
||||||
:summary: In a bird’s eye view if we see around us, ants are the common and tiniest living entitiy seen by naked eye. One of them are the big red ants, in my view they are unique from others in two ways, first they live on trees and second their anteenas are too long and bent in middle, seems like their fore legs. Their mandible (mouth) seems like eagle’s beak.
|
|
||||||
|
|
||||||
.. raw:: html
|
|
||||||
|
|
||||||
<p style="border: 2px solid var(--cyan);border-radius: 7px;" align=center>This article was published in 3rd edition of नवांकुर , the official magazine of Simultala Awasiya Vidyalaya, Bihar, India.<p>
|
|
||||||
|
|
||||||
In a bird’s eye view if we see around us, ants are the common and tiniest living entitiy seen by naked eye. One of them are the big red ants, in my view they are unique from others in two ways, first they live on trees and second their anteenas are too long and bent in middle, seems like their fore legs. Their mandible (mouth) seems like eagle’s beak.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
As I observed them making and reparing their nests, I concluded that they are very laborious and intellectual. They create their nests by binding two or more leaves (maybe up to 500) together. They stich the leaves using a stinky white substance either excreted by themselves or from trees. This substance is like web of spider. At first builder ants creates an array at the blade of two leaves. Then they make ant-cranes or ant-chain like chain of monomer to form a polymer. They catch the leaves and pull each other to stich. After some time, the parliament of leaves transforms into a leaf-sac called their nest. They also weave translucent cloth like structure to cover remainings of leaf. A nest hangs by a branch of the trees.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
A nest is skillfully divided into living rooms, barracks, storehouse, egg room and queen’s room. The eggroom, lies at the center of nest to protect from outer attack until last time. Besides that, lies queen’s room. Living rooms are sequenncly joined with eggroom. There are different rooms for workers, food searchers etc. The partition of the room resembles atom’s electron shell, one upon another. At last barracks are the outermost rooms, just like outermost orbit of electron. The defence system is strongest at the nest’s opening. A nest may size as 2-3 footballs and have 50 to 10000 ants. There may be more openings.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Now about their attacking and protecting skills. A solider is unique from other ants. It is equipped with many attacking and defending skills. Normally they do not attack. They are social insects. If someone attacks, all other ants go inside, and soldiers come out. They spread allover the nest. They are very sensetive and have sharp vision. If any one of them see their enemy the stand on their hind legs, swinging, their forelegs and anteens in their air as scolding someone. Their spit contains formic acid, present at the end of the abdomen below the rectum. If their nest is broken and eggs fall on ground then the ants make a dome, like the dome of Taj mahal to save the eggs till last their breadth. This shows their caring skills.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
The most amazing is their discipline. They can easily beat a human in race of discipline. Humans must learn from it. When two ants meet, they touch their anteena to communicate. When they walk in a queue, they seem like twinkling dots and dashes. I want to conclude that **All tiny things are not really tiny. It may be as a space having infinite mysteries one has to explore it.**
|
|
||||||
@@ -1,45 +0,0 @@
|
|||||||
*************************
|
|
||||||
The Interstellar Twilight
|
|
||||||
*************************
|
|
||||||
|
|
||||||
:date: 2020-09-28 22:47
|
|
||||||
:tags: interstellar, twilight
|
|
||||||
:category: blog
|
|
||||||
:slug: this-is-for-you
|
|
||||||
:summary: If in the Twilight of dreams we should meet once more, we shell talk again together and I shall sing to you a lullaby till you sleep again to meet me in the Twilight of another dream.
|
|
||||||
|
|
||||||
|
|
||||||
Yeah, it was a dream someday. I never imagined you. But I do remember glimpses of a wonderful person
|
|
||||||
in my deep slumber. When I go back to last year about the same time, I find myself a manic who gets
|
|
||||||
carried away with every emotion. Becoming too happy about something and then becoming too sad was so
|
|
||||||
common that I never noticed what I was risking.
|
|
||||||
|
|
||||||
**"If in the Twilight of dreams we should meet once more, we shell talk again together and I shall sing to you a lullaby till you sleep again to meet me in the Twilight of another dream."**
|
|
||||||
|
|
||||||
|
|
||||||
But 1 year ago many things changed. A never seen dream came true. To be honest I was skeptical if all
|
|
||||||
this happening to me was true. Even until last December. Gradually things started falling into places.
|
|
||||||
And for the most part, the reality became more real. I can now easily see what is happening and why it
|
|
||||||
happened. Everything was so nice until we had a fight. Then another, and now it was every other day
|
|
||||||
story. It was a really hard time collecting everything together and act as nothing happened after every
|
|
||||||
single of those. Everything was plunging. I started imagining the end of something that I did not
|
|
||||||
imagine to happen in the first place.
|
|
||||||
|
|
||||||
But during all those times, there was a continual intuition that maybe there is something that we both
|
|
||||||
are missing. And that was maybe the root of all chaos. I never came to know that what it was neither did
|
|
||||||
you. But I do realize many mistakes I have been doing since we met.
|
|
||||||
|
|
||||||
I want to thank you for not losing hope in me. We both always tried to reduce tension as much as we could.
|
|
||||||
And thank you for many other ineffable things happened because of you.
|
|
||||||
|
|
||||||
As of now I can see things making sense. Every message, every talk now seems to make sense. I am more
|
|
||||||
deeply into this friendship if I was not ever before. The ecstasy of having you is other-worldly. I don't
|
|
||||||
know if I could ever adore a person this much but I adore this ravishing friendship. Only you or only
|
|
||||||
this friendship may mean nothing to me. But I am delighted to say that I have both and I have you.
|
|
||||||
|
|
||||||
Now, what is all with The Interstellar Twilight. Why this name ? Let me explain it for you. **Interstellar**
|
|
||||||
means between stars and **Twilight** means the soft glow when the sun is below the horizon.
|
|
||||||
**The Interstellar Twilight** means the glow between the stars or simply glow of a cluster of stars. A
|
|
||||||
single star shines but the glow is too low to be noticed against its brightness. But a lot stars together
|
|
||||||
gets a glow. So my friend we are such two stars and our friendship is that glow.
|
|
||||||
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
************
|
|
||||||
My Checklist
|
|
||||||
************
|
|
||||||
|
|
||||||
:date: 2021-02-14 22:47
|
|
||||||
:slug: checklist
|
|
||||||
:category: development
|
|
||||||
:tags: rst, github
|
|
||||||
:status: draft
|
|
||||||
@@ -1,432 +0,0 @@
|
|||||||
**************************
|
|
||||||
Google Summer of Code 2021
|
|
||||||
**************************
|
|
||||||
|
|
||||||
:date: 2021-08-19 23:07
|
|
||||||
:tags: gsoc, FOSSology
|
|
||||||
:category: report
|
|
||||||
:summary: This is the final report of my Google Summer of Code 2021 at The FOSSology Project.
|
|
||||||
:slug: final-evaluation
|
|
||||||
:status: published
|
|
||||||
|
|
||||||
.. role:: rd
|
|
||||||
|
|
||||||
.. role:: gr
|
|
||||||
|
|
||||||
.. role:: or
|
|
||||||
|
|
||||||
.. role:: html-raw(raw)
|
|
||||||
:format: html
|
|
||||||
|
|
||||||
.. raw:: html
|
|
||||||
|
|
||||||
<style>
|
|
||||||
.rd {color:red;font-weight:bold}
|
|
||||||
.gr{color:green;font-weight:bold}
|
|
||||||
.or{color:orange;font-weight:medium}
|
|
||||||
ul{margin-bottom:0}
|
|
||||||
</style>
|
|
||||||
|
|
||||||
The CMake Build system
|
|
||||||
----------------------
|
|
||||||
|
|
||||||
FOSSology is quite an old and mature project. The project has been using bare metal **Makefiles**. As the project is growing with new agents and modernization it was required to have a modern build system.
|
|
||||||
|
|
||||||
The FOSSology is a suite of well-integrated and synchronized sub-projects (called agents) written in C, C++, and PHP. Most of the major agents are in C, C++ and that made CMake an obvious choice for a new build system for FOSSology. CMake is a versatile set of build, test, and packaging tools and is the most popular choice of C/C++ developers. CMake can be extended to create a build system for other languages too via custom scripts.
|
|
||||||
|
|
||||||
|
|
||||||
GitHub Actions CI/CD
|
|
||||||
--------------------
|
|
||||||
|
|
||||||
.. image:: /images/ci.png
|
|
||||||
:class: float-md-right rounded border border-info ml-3
|
|
||||||
:alt: A CI Meme
|
|
||||||
:width: 350
|
|
||||||
|
|
||||||
Since the FOSSology project moved on Github, it has used only the free Travis CI service for OSS projects.
|
|
||||||
At the time of writing Travis CI has reduced its free tier CI services. GitHub Actions provides faster builds. Since GitHub Actions is a fully managed service by GitHub, we don’t need to know how to scale and operate the infrastructure to run it.
|
|
||||||
|
|
||||||
It is straightforward to use with GitHub because when we fork a repository, the actions automatically get forked. This allows you to test and build projects very efficiently and even run them closer to the developer. Also, you have readily available access to the GitHub API, making it more popular among developers.
|
|
||||||
|
|
||||||
Improvements over previous build system and CI
|
|
||||||
----------------------------------------------
|
|
||||||
|
|
||||||
The new build system and CI brings a lot of improvements and features. The list below describes them.
|
|
||||||
|
|
||||||
- CMake enforces out-of-source builds. This was already possible with the previous build system but not a strict requirement. This feature keeps the source code clean and makes cleaning the build artifacts easy. (Just remove the build folder :)
|
|
||||||
- One of the major improvements over the previous build system is faster build times. CMake generates parallel build-enabled configurations for all generators. In our tests, the new build system is at least twice as fast as the previous one. With further improvement in configuration, we will be able to further cut the build times.
|
|
||||||
- Previously FOSSology can only be built using *Unix Makefiles*. With CMake, we can now use many other popular generators such as *Ninja*.
|
|
||||||
- Now it is also very flexible to choose different compilers. This will help support more platforms and architecture in the future. As of now, we are experimenting with Clang compilers.
|
|
||||||
- FOSSology is quite an old project and a lot of agent testing code was written in the last decade. Initially, none of them were compatible with the new build system, but we were able to hack most of the test code using better-improved methods. Test times have also improved.
|
|
||||||
- Migrating from Travis CI to GitHub Actions was another big move and for the most part, it removes the dependency on a third-party CI service. Along with that GitHub Actions provides better build times, tons of new features, and better integration with other GitHub services.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Deliverables
|
|
||||||
--------------
|
|
||||||
|
|
||||||
.. raw:: html
|
|
||||||
|
|
||||||
<div class="alert alert-info" role="alert">
|
|
||||||
<ul class="simple">
|
|
||||||
<li>Final Pull Request <a class="badge badge-info" href="https://github.com/fossology/fossology/pull/2075">#2075</a></li>
|
|
||||||
<li>Pull Request Branch <a class="badge badge-info" href="https://github.com/avinal/fossology/tree/avinal/feat/buildsystem">avinal/feat/buildsystem</a></li>
|
|
||||||
<li>Working Branch (individual commits) <ul>
|
|
||||||
<li><a class="badge badge-info" href="https://github.com/avinal/fossology/tree/avinal/feat/cmake-buildsystem">avinal/feat/cmake-buildsystem</a></li>
|
|
||||||
<li><a class="badge badge-info" href="https://github.com/avinal/fossology/tree/avinal/feat/testing">avinal/feat/testing</a></li>
|
|
||||||
</ul></li>
|
|
||||||
<li>Project Issue <a class="badge badge-info" href="https://github.com/fossology/fossology/issues/1913">#1913</a></li>
|
|
||||||
<li>Project Discussion <a class="badge badge-info" href="https://github.com/fossology/fossology/discussions/1931">#1931</a></li>
|
|
||||||
<li>Weekly Reports<ul>
|
|
||||||
<li><a class="badge badge-info" href="https://gsoc.avinal.space">Personal Blog</a></li>
|
|
||||||
<li><a class="badge badge-info" href="https://fossology.github.io/gsoc/docs/2021/buildsystem/">FOSSology Official Blog</a></li>
|
|
||||||
</ul></li></ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
**CMake Build System Tasks**
|
|
||||||
|
|
||||||
.. table::
|
|
||||||
:class: table table-sm table-hover table-bordered table-responsive
|
|
||||||
:widths: 5 15 10 10 20 15 25
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
+----+------------------+-----------+-----------+--------------------+-----------+----------------+
|
|
||||||
| # | Agents | Build | Install | Testing | Packaging | Remarks |
|
|
||||||
+====+==================+===========+===========+====================+===========+================+
|
|
||||||
| 1 | adj2nest | :gr:`YES` | :gr:`YES` | | :gr:`YES` | |
|
|
||||||
+----+------------------+-----------+-----------+--------------------+-----------+----------------+
|
|
||||||
| 2 | buckets | :gr:`YES` | :gr:`YES` | | :gr:`YES`| |
|
|
||||||
+----+------------------+-----------+-----------+--------------------+-----------+----------------+
|
|
||||||
| 3 | cli | :gr:`YES` | :gr:`YES` | - :rd:`Functional` | :gr:`YES` | |
|
|
||||||
+----+------------------+-----------+-----------+--------------------+-----------+----------------+
|
|
||||||
| 4 | copyright | :gr:`YES` | :gr:`YES` | - :gr:`Functional` | | |
|
|
||||||
| | | | | - :gr:`Unit` | :gr:`YES` | |
|
|
||||||
+----+------------------+-----------+-----------+--------------------+-----------+----------------+
|
|
||||||
| 5 | debug | | :gr:`YES` | | :gr:`YES` | |
|
|
||||||
+----+------------------+-----------+-----------+--------------------+-----------+----------------+
|
|
||||||
| 6 | decider | :gr:`YES` | :gr:`YES` | - :gr:`Functional` | | |
|
|
||||||
| | | | | - :gr:`Unit` | :gr:`YES` | |
|
|
||||||
+----+------------------+-----------+-----------+--------------------+-----------+----------------+
|
|
||||||
| 7 | deciderjob | :gr:`YES` | :gr:`YES` | - :gr:`Functional` | :gr:`YES` | |
|
|
||||||
+----+------------------+-----------+-----------+--------------------+-----------+----------------+
|
|
||||||
| 8 | delagent | :gr:`YES` | :gr:`YES` | - :rd:`Functional` | | |
|
|
||||||
| | | | | - :rd:`Unit` | :gr:`YES` | |
|
|
||||||
+----+------------------+-----------+-----------+--------------------+-----------+----------------+
|
|
||||||
| 9 | demomod | :or:`YES` | :or:`YES` | - :or:`Functional` | :or:`NO` | *(Not Used)* |
|
|
||||||
| | | | | - :or:`Unit` | | |
|
|
||||||
+----+------------------+-----------+-----------+--------------------+-----------+----------------+
|
|
||||||
| 10 | example_wc_agent | :or:`YES` | :or:`YES` | - :or:`Functional` | :or:`NO` | *(Not Used)* |
|
|
||||||
| | | | | - :or:`Unit` | | |
|
|
||||||
+----+------------------+-----------+-----------+--------------------+-----------+----------------+
|
|
||||||
| 11 | clib | :gr:`YES` | :gr:`YES` | - :gr:`Functional` | | |
|
|
||||||
| | | | | - :gr:`Unit` | :gr:`YES` | |
|
|
||||||
+----+------------------+-----------+-----------+--------------------+-----------+----------------+
|
|
||||||
| 12 | cpplib | :gr:`YES` | :gr:`YES` | - :gr:`Unit` | :gr:`YES` | |
|
|
||||||
+----+------------------+-----------+-----------+--------------------+-----------+----------------+
|
|
||||||
| 13 | phplib | :gr:`YES` | :gr:`YES` | - :gr:`Functional` | | 1 functional |
|
|
||||||
| | | | | - :gr:`Unit` | :gr:`YES` | test needs fix |
|
|
||||||
+----+------------------+-----------+-----------+--------------------+-----------+----------------+
|
|
||||||
| 14 | maintagent | :gr:`YES` | :gr:`YES` | | :gr:`YES` | |
|
|
||||||
+----+------------------+-----------+-----------+--------------------+-----------+----------------+
|
|
||||||
| 15 | mimetype | :gr:`YES` | :gr:`YES` | - :gr:`Functional` | | |
|
|
||||||
| | | | | - :gr:`Unit` | :gr:`YES` | |
|
|
||||||
+----+------------------+-----------+-----------+--------------------+-----------+----------------+
|
|
||||||
| 16 | monk | :gr:`YES` | :gr:`YES` | - :gr:`Functional` | | |
|
|
||||||
| | | | | - :gr:`Unit` | :gr:`YES` | |
|
|
||||||
+----+------------------+-----------+-----------+--------------------+-----------+----------------+
|
|
||||||
| 17 | ninka | :or:`YES` | :or:`YES` | - :or:`Functional` | :or:`NO` | *(Deprecated)* |
|
|
||||||
| | | | | - :or:`Unit` | | |
|
|
||||||
+----+------------------+-----------+-----------+--------------------+-----------+----------------+
|
|
||||||
| 18 | nomos | :gr:`YES` | :gr:`YES` | - :gr:`Functional` | | |
|
|
||||||
| | | | | - :gr:`Unit` | :gr:`YES` | |
|
|
||||||
+----+------------------+-----------+-----------+--------------------+-----------+----------------+
|
|
||||||
| 19 | ojo | :gr:`YES` | :gr:`YES` | - :gr:`Functional` | | 1 functional |
|
|
||||||
| | | | | - :gr:`Unit` | :gr:`YES` | test needs fix |
|
|
||||||
+----+------------------+-----------+-----------+--------------------+-----------+----------------+
|
|
||||||
| 20 | pkgagent | :gr:`YES` | :gr:`YES` | - :gr:`Functional` | | |
|
|
||||||
| | | | | - :gr:`Unit` | :gr:`YES` | |
|
|
||||||
+----+------------------+-----------+-----------+--------------------+-----------+----------------+
|
|
||||||
| 21 | readmeoss | :gr:`YES` | :gr:`YES` | | :gr:`YES` | |
|
|
||||||
+----+------------------+-----------+-----------+--------------------+-----------+----------------+
|
|
||||||
| 22 | regexscan | :or:`YES` | :or:`YES` | | :or:`NO` | *(Deprecated)* |
|
|
||||||
+----+------------------+-----------+-----------+--------------------+-----------+----------------+
|
|
||||||
| 23 | reportImport | :gr:`YES` | :gr:`YES` | | :gr:`YES` | |
|
|
||||||
+----+------------------+-----------+-----------+--------------------+-----------+----------------+
|
|
||||||
| 24 | reuser | :gr:`YES` | :gr:`YES` | - :gr:`Functional` | :gr:`YES` | |
|
|
||||||
+----+------------------+-----------+-----------+--------------------+-----------+----------------+
|
|
||||||
| 25 | reso | :gr:`YES` | :gr:`YES` | | :gr:`YES` | |
|
|
||||||
+----+------------------+-----------+-----------+--------------------+-----------+----------------+
|
|
||||||
| 26 | scheduler | :gr:`YES` | :gr:`YES` | - :rd:`Functional` | | Tests needs |
|
|
||||||
| | | | | - :rd:`Unit` | :gr:`YES` | fix |
|
|
||||||
+----+------------------+-----------+-----------+--------------------+-----------+----------------+
|
|
||||||
| 27 | softwareHeritage | :gr:`YES` | :gr:`YES` | | :gr:`YES` | |
|
|
||||||
+----+------------------+-----------+-----------+--------------------+-----------+----------------+
|
|
||||||
| 28 | spasht | :gr:`YES` | :gr:`YES` | | :gr:`YES` | |
|
|
||||||
+----+------------------+-----------+-----------+--------------------+-----------+----------------+
|
|
||||||
| 29 | spdx2 | :gr:`YES` | :gr:`YES` | - :gr:`Functional` | | 1 Test failing |
|
|
||||||
| | | | | - :gr:`Unit` | :gr:`YES` | in CI |
|
|
||||||
+----+------------------+-----------+-----------+--------------------+-----------+----------------+
|
|
||||||
| 30 | unifiedreport | :gr:`YES` | :gr:`YES` | - :gr:`Functional` | :gr:`YES` | |
|
|
||||||
+----+------------------+-----------+-----------+--------------------+-----------+----------------+
|
|
||||||
| 31 | ununpack | :gr:`YES` | :gr:`YES` | - :gr:`Functional` | | Unit tests |
|
|
||||||
| | | | | - :rd:`Unit` | :gr:`YES` | needs fix |
|
|
||||||
+----+------------------+-----------+-----------+--------------------+-----------+----------------+
|
|
||||||
| 32 | wget_agent | :gr:`YES` | :gr:`YES` | - :gr:`Functional` | | |
|
|
||||||
| | | | | - :gr:`Unit` | :gr:`YES` | |
|
|
||||||
+----+------------------+-----------+-----------+--------------------+-----------+----------------+
|
|
||||||
| 32 | www | :gr:`YES` | :gr:`YES` | - :rd:`UI` | :gr:`YES` | |
|
|
||||||
+----+------------------+-----------+-----------+--------------------+-----------+----------------+
|
|
||||||
|
|
||||||
|
|
||||||
**GitHub Actions CI Tasks**
|
|
||||||
|
|
||||||
.. table::
|
|
||||||
:class: table table-sm table-hover table-bordered table-responsive
|
|
||||||
:widths: 5 25 70
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
+---+------------------------+----------------------------------------------------------+
|
|
||||||
| # | CI Tasks | Status |
|
|
||||||
+===+========================+==========================================================+
|
|
||||||
| 1 | :gr:`build` | Added Ubuntu 20.04 GCC 8, 9 and Clang, GCC 7 not working |
|
|
||||||
+---+------------------------+----------------------------------------------------------+
|
|
||||||
| 2 | :gr:`c/cpp unit test` | Added, delagent, scheduler and ununpack not working |
|
|
||||||
+---+------------------------+----------------------------------------------------------+
|
|
||||||
| 3 | :gr:`phpunit tests` | Added, delagent and scheduler functional not working |
|
|
||||||
+---+------------------------+----------------------------------------------------------+
|
|
||||||
| 4 | :rd:`cahching` | Not implemented |
|
|
||||||
+---+------------------------+----------------------------------------------------------+
|
|
||||||
| 5 |:rd:`source install` | Not implemented |
|
|
||||||
+---+------------------------+----------------------------------------------------------+
|
|
||||||
|
|
||||||
(:gr:`GREEN`: COMPLETED, :rd:`RED`: INCOMPLETE, :or:`ORANGE`: NOT NEEDED/DEPRECATED)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
How does it work and how to use it?
|
|
||||||
-----------------------------------
|
|
||||||
|
|
||||||
.. raw:: html
|
|
||||||
|
|
||||||
<div class="embed-responsive embed-responsive-16by9">
|
|
||||||
<iframe class="embed-responsive-item" src="/images/second-build.webm" allowfullscreen></iframe>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
The new build system retains the modular and hierarchical structure of the previous build system. On the other hand, the new build system provides several new flags to control the build. The new build system forces out-of-source build instead of the previous in-source builds. This keeps the source clutter-free and reduces the chance of accidentally deleting source files. *Testing still needs some in-source artifacts, this will be solved once all the tests are fixed according to the new build system.*
|
|
||||||
|
|
||||||
Each agent is a complete CMake sub-project with its independent configuration for building, installing, and testing. That means a single agent can be built and installed separately and even removed from the default build without breaking other builds. The directory structure is as below.
|
|
||||||
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
.
|
|
||||||
├── build # temporary directory for build artifacts
|
|
||||||
├── cmake # CMake modules for FOSSology
|
|
||||||
│ ├── FoPackaging.cmake # CMake Packaging configurations
|
|
||||||
│ ├── FoUtilities.cmake # Custom CMake utilities
|
|
||||||
│ ├── FoVersionFile.cmake # VERSION version.php CMake template file
|
|
||||||
│ ├── SetDefaults.cmake # CMake defaults for this project
|
|
||||||
│ ├── TestInstall.make.in # Template makefile for install during tests
|
|
||||||
│ └── VERSION.in # VERSION file template
|
|
||||||
├── src
|
|
||||||
│ ├── agent-1 # Agent sub-project
|
|
||||||
│ │ ├── agent # Agent's source code directory
|
|
||||||
│ │ │ ├── agent-source-code
|
|
||||||
│ │ │ └── CMakeLists.txt
|
|
||||||
│ │ ├── agent_tests # Agent's test directory
|
|
||||||
│ │ │ ├── Unit
|
|
||||||
│ │ │ ├── Functional
|
|
||||||
│ │ │ └── CMakeLists.txt
|
|
||||||
│ │ ├── ui # Agent's UI source code
|
|
||||||
│ │ │ ├── templates
|
|
||||||
│ │ │ └── agent-ui-code
|
|
||||||
│ │ └── CMakeLists.txt # Agent's top-level CMake configuration
|
|
||||||
: :
|
|
||||||
│ ├── other agents
|
|
||||||
: :
|
|
||||||
│ └── CMakeLists.txt # Source intermediate CMake configuration
|
|
||||||
:
|
|
||||||
├── other directories and files
|
|
||||||
:
|
|
||||||
└── CMakeLists.txt # FOSSology Top-level CMake configuration
|
|
||||||
|
|
||||||
|
|
||||||
The :code:`cmake` directory contains customized CMake modules and templates for FOSSology. This directory is required for all the operations. The general workflow of the new build system as well as how to use it is described below.
|
|
||||||
|
|
||||||
1. Since the new build system is still in review. You must fork FOSSology and pull the `#2075 <https://github.com/fossology/fossology/pull/2075>`_ pull request branch. Once you are in FOSSology root, run these commands.
|
|
||||||
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
git fetch https://github.com/avinal/fossology avinal/feat/buildsystem:buildsystem
|
|
||||||
git checkout buildsystem
|
|
||||||
|
|
||||||
|
|
||||||
2. The first step towards building is to create a temporary directory for storing intermediate files and build artifacts. By convention we use a directory named :code:`build`, but you can use any name. (**NOTE: For testing do not use other names**)
|
|
||||||
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
mkdir build
|
|
||||||
cd build
|
|
||||||
|
|
||||||
|
|
||||||
3. In the next steps, we will configure the CMake project and generate the required configurations. You can use several flags to control the build. Given below are the flags available for this project.
|
|
||||||
|
|
||||||
.. table::
|
|
||||||
:class: table table-sm table-hover table-bordered table-responsive
|
|
||||||
|
|
||||||
+-----------------------------------+--------------------------------------------+--------------------+
|
|
||||||
| CMake Flags | Description | Default |
|
|
||||||
+===================================+============================================+====================+
|
|
||||||
| **-DCMAKE_INSTALL_PREFIX=<path>** | Sets the install prefix. | :code:`/usr/local` |
|
|
||||||
+-----------------------------------+--------------------------------------------+--------------------+
|
|
||||||
| **-DAGENTS="agent1;agent2..."** | Only configure these agents. | ALL AGENTS |
|
|
||||||
+-----------------------------------+--------------------------------------------+--------------------+
|
|
||||||
| **-DOFFLINE=<ON/OFF>** | Controls vendor generation, ON=NO | **OFF** |
|
|
||||||
+-----------------------------------+--------------------------------------------+--------------------+
|
|
||||||
| **-DCMAKE_BUILD_TYPE=<type>** | - :code:`Debug` | |
|
|
||||||
| | - :code:`Release` | :code:`Debug` |
|
|
||||||
| - Controls build type aka | - :code:`RelWithDebInfo` | |
|
|
||||||
| level optimisation | - :code:`MinSizeRel` | |
|
|
||||||
+-----------------------------------+--------------------------------------------+--------------------+
|
|
||||||
| **-DTESTING=<ON/OFF>** | Controls testing config generation | **OFF** |
|
|
||||||
+-----------------------------------+--------------------------------------------+--------------------+
|
|
||||||
| **-DMONOPACK=<ON/OFF>** | Package adj2nest and ununpack seperately | **OFF** |
|
|
||||||
+-----------------------------------+--------------------------------------------+--------------------+
|
|
||||||
| **-GNinja** | Use Ninja instead of Unix Makefiles | *Unix MakeFiles* |
|
|
||||||
+-----------------------------------+--------------------------------------------+--------------------+
|
|
||||||
|
|
||||||
There are lots of inbuilt CMake command-line options you can see them in the official `documentation <https://cmake.org/cmake/help/v3.10/manual/cmake.1.html>`_. Once you have chosen your flags we can now configure the project using the following commands.
|
|
||||||
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
# From build folder
|
|
||||||
cd <name-of-build-directory>
|
|
||||||
cmake <flags> ..
|
|
||||||
|
|
||||||
|
|
||||||
4. The next step is to build the project. You can use parallel jobs to build faster. For more options you can type :code:`cmake --help` or :code:`make --help` or :code:`ninja --help`.
|
|
||||||
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
# Common build command for all generators,
|
|
||||||
# Default number of parallel builds depends on generator used
|
|
||||||
cmake --build . --parallel <no-of-processes>
|
|
||||||
|
|
||||||
# For Unix Makefiles, no parallel build by default
|
|
||||||
make -j <no-of-processes>
|
|
||||||
|
|
||||||
# For Ninja, 8+ parallel build by default (depends on system)
|
|
||||||
ninja -j <no-of-processes>
|
|
||||||
|
|
||||||
|
|
||||||
5. Installing is also as easy as building. You can choose to install only certain components even if you have built the whole project. If you directly invoke the install command without building the project, it will automatically build the project first.
|
|
||||||
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
# For Unix Makefiles
|
|
||||||
make install
|
|
||||||
|
|
||||||
# For Ninja
|
|
||||||
ninja install
|
|
||||||
|
|
||||||
|
|
||||||
6. While testing has some issues, most of the testing is working fine. For now, you must build and run any test from the FOSSology root directory only. You can choose to configure a single agent if you want to test one agent only. See :code:`ctest --help` for controlling test runs.
|
|
||||||
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
# Common testing command
|
|
||||||
ctest --parallel <no-of-processes>
|
|
||||||
|
|
||||||
# For Unix Makefiles
|
|
||||||
make test
|
|
||||||
|
|
||||||
# For Ninja
|
|
||||||
ninja test
|
|
||||||
|
|
||||||
|
|
||||||
7. You can package FOSSology, the packaging currently lacks copyright and conf files. But for testing purposes, you can use the following commands. Similar to installing, if you run the package command without building the project, it will automatically build the project first. See :code:`cpack --help` for more packaging options.
|
|
||||||
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
# Common testing command
|
|
||||||
cpack
|
|
||||||
|
|
||||||
# For Unix Makefiles
|
|
||||||
make package
|
|
||||||
|
|
||||||
# For Ninja
|
|
||||||
ninja package
|
|
||||||
|
|
||||||
|
|
||||||
Known Issues and Drawbacks
|
|
||||||
--------------------------
|
|
||||||
|
|
||||||
Although the transition from Makefiles to CMake and Travis CI to GitHub Actions is almost complete and working as expected. But it is not free of drawbacks and issues. This section outlines the known issues at the time of writing.
|
|
||||||
|
|
||||||
.. image:: https://imgs.xkcd.com/comics/conference_question.png
|
|
||||||
:class: float-md-right rounded border border-info ml-3
|
|
||||||
:alt: A Bug Meme
|
|
||||||
:width: 350
|
|
||||||
|
|
||||||
|
|
||||||
- Coverage builds may fail with linking errors.
|
|
||||||
- Packaging prefix is the same as the install prefix. This requires the developer to set the install prefix manually before packaging to produce packages with the correct directory structure.
|
|
||||||
- Testing and packaging must be used from the FOSSology root directory. Not doing so may or may not configure the project as intended.
|
|
||||||
- Previously tests were written hardcoded for the Makefiles. But new build system requires all artifacts to be generated in a separate directory. This required me to add symbolic links wherever a generated script or file is expected. Tests can still leave some artifacts inside source folders.
|
|
||||||
- There is no easy way to install a particular agent from the FOSSology root directory.
|
|
||||||
- Packages don't contain copyright, readme, and license files. CMake doesn't provide a way to include these files. This is being tracked by issue `#21832 <https://gitlab.kitware.com/cmake/cmake/-/issues/21832>`_.
|
|
||||||
- While packaging the symbolic links may or may not be dereferenced and hence results in copying the folder too in the target directory.
|
|
||||||
- Running tests locally may require switching to :code:`fossy` user.
|
|
||||||
- While configured for testing, it may give permission errors.
|
|
||||||
- Scheduler, Ununpack, and Delagent unit and functional tests are not working. I have added an issue `#2084 <https://github.com/fossology/fossology/issues/2084>`_ to track the progress on fixing these tests.
|
|
||||||
- CMake doesn't generate uninstall targets. The closest thing to uninstall is `this snippet <https://gitlab.kitware.com/cmake/community/-/wikis/FAQ#can-i-do-make-uninstall-with-cmake>`_. This will be later added to the FOSSology.
|
|
||||||
|
|
||||||
|
|
||||||
Challenges Faced
|
|
||||||
----------------
|
|
||||||
|
|
||||||
While this whole project was challenging, some aspects of it were unforeseen and more challenging. When I decided to go on with this project I just had enough CMake knowledge to write a configuration for a very small project. I had never used CMake on this big scale. On the other side, the FOSSology community is largely unknown to CMake so for all of us it was learned, practiced, and implement. With support from mentors, I was able to overcome this challenge with flying colors.
|
|
||||||
|
|
||||||
The other challenge was to understand the old build system, how they are all connected and what is the flow. The complexity can be imagined by the fact that the most of code and configurations were written in the decade before the last decade and haven't changed much since then.
|
|
||||||
|
|
||||||
The most challenging task was to make tests work with the new build system. Since tests were mostly hardcoded and the new build system refactored many of the files and directory, the tests were failing initially. The testing part took me the most time. All thanks to my mentor Gaurav and my friend Sarita I was able to hack them to suit the new build system.
|
|
||||||
|
|
||||||
Related Resources and Links
|
|
||||||
---------------------------
|
|
||||||
|
|
||||||
- Fix FOSSology agent tests issue `#2084 <https://github.com/fossology/fossology/issues/2084>`_
|
|
||||||
- feat(CI): Migrate API docs generation and deployment to GitHub Actions pull request `#1917 <https://github.com/fossology/fossology/pull/1917>`_
|
|
||||||
- feat(CI): Migrate Static Checks and Analysis to GitHub Actions from Travis CI `#1919 <https://github.com/fossology/fossology/pull/1919>`_
|
|
||||||
|
|
||||||
|
|
||||||
Future Development Plans
|
|
||||||
------------------------
|
|
||||||
|
|
||||||
There is a lot to do with the new build system and CI and it will probably take a year or to reach a maturity point. I was able to meet most of the goals but some of them are remaining.
|
|
||||||
|
|
||||||
- Fix the tests, probably renovate them from the ground up.
|
|
||||||
- Find a hack for packaging problems.
|
|
||||||
- Improve and optimize the build.
|
|
||||||
- Modernise the source code, remove old, bloated code and replace them according to new standards.
|
|
||||||
|
|
||||||
|
|
||||||
What did I learn from this project?
|
|
||||||
-----------------------------------
|
|
||||||
|
|
||||||
This Google Summer of Code was the busiest time of my life for all good reasons. I learned a lot about license compliance and how it all works in the software industry. The next big thing is CMake. As I mentioned I was just a novice user of CMake. Now I am confident that given any other large project I will be able to migrate it/improve it. I got to learn PHP, of which I did not know a single word before GSoC. And finally, I learned about packing and testing. I had these courses but implementing them myself and fixing them was a wholesome experience.
|
|
||||||
|
|
||||||
Other than that I improved on my communication and presentation skills. Collaborating with fellow participants was one of the great things that happened during GSoC.
|
|
||||||
|
|
||||||
|
|
||||||
Acknowledgments
|
|
||||||
---------------
|
|
||||||
|
|
||||||
Google Summer of Code is the best thing that has happened to me this year so far. Although there are numerous people to say thanks to, I want to mention key people who were my motivation and support during this period.
|
|
||||||
|
|
||||||
First of all, I want to thank and appreciate my mentors `Gaurav Mishra <https://github.com/GMishx>`_, `Michael C. Jaeger <https://github.com/mcjaeger>`_, `Anupam Ghosh <https://github.com/ag4ums>`_, and `Shaheem Azmal M MD <https://github.com/shaheemazmalmmd>`_. Without the help and support from them, all this would not have been possible. They are very polite, knowledgeable, and helpful.
|
|
||||||
|
|
||||||
I want to thank my friend and :abbr:`fellow participant (Integrating ScanCode Toolkit to FOSSology)` `Sarita <https://github.com/itssingh>`_. Thank you for being a collaborator, support, and motivation for attempting GSoC.
|
|
||||||
|
|
||||||
Finally, I want to thank, my family and friends. I got to meet many awesome developers as my fellow participants from around the world, I wish we will do more collaboration in the future.
|
|
||||||
|
|
||||||
@@ -1,64 +0,0 @@
|
|||||||
**************************************************************************
|
|
||||||
:abbr:`HRT (Hudson River Trading)` Systems Internship Interview Experience
|
|
||||||
**************************************************************************
|
|
||||||
|
|
||||||
:date: 2021-01-04 21:47
|
|
||||||
:tags: HRT, hudsonrivertrading, interview, internship
|
|
||||||
:slug: hrt-interview-1
|
|
||||||
:category: blog
|
|
||||||
:summary: I applied for **Systems Internship - Summer 2021** back in December 2020 at `Hudson River Trading <https://www.hudsonrivertrading.com>`_ , New York.....Questions were clear and of medium level. But they were designed in such a way that you must know the basics before you could attempt.
|
|
||||||
|
|
||||||
I applied for **Systems Internship - Summer 2021** back in December 2020 at `Hudson River Trading <https://www.hudsonrivertrading.com>`_ , New York. The internship description was: -
|
|
||||||
|
|
||||||
.. epigraph::
|
|
||||||
|
|
||||||
We are looking for highly motivated students who are eager to learn and excited about systems to join us for our summer internship
|
|
||||||
program. As a systems intern, you may have the opportunity to work on projects in the following areas:
|
|
||||||
|
|
||||||
* Programming/scripting (Golang, Python, C++, C)
|
|
||||||
* FOSS development
|
|
||||||
* HPC, Cluster computing
|
|
||||||
* System Administration
|
|
||||||
* Linux, Debian
|
|
||||||
* Linux-based computer security
|
|
||||||
* Data Storage
|
|
||||||
* Large deployment or config management
|
|
||||||
|
|
||||||
The first step was a coding test on the Codility platform. If you have used any of the online coding platforms, this is similar. It was a :abbr:`2.5 hrs (90 mins)` test consisting of 3 questions. They let you use :abbr:`online references (documentation, man pages, etc.)` but
|
|
||||||
**do not copy the code** as it will highly reduce your chances of qualifying for this first stage. You can choose between **C/C++**,
|
|
||||||
**Python** and **Golang** (no Java 😪).
|
|
||||||
|
|
||||||
Questions were clear and of medium level. But they were designed in such a way that you must know the basics before you could attempt.
|
|
||||||
Also, they expected a clear and concise approach. Two of the most important points in their instructions were: -
|
|
||||||
|
|
||||||
.. epigraph::
|
|
||||||
|
|
||||||
* While correctness and performance are the most important factors for evaluation, we will take test duration into account as well.
|
|
||||||
* Please understand that this test is meant to be challenging. A perfect score is not necessary to move on to future interview rounds, so do the best you can!
|
|
||||||
|
|
||||||
|
|
||||||
So, you must be near perfect in your approach as well as on time. I did them kind of quickly. They will show you a summary of your
|
|
||||||
submission but not the results. It will take almost 2 weeks to get back to you for further steps.
|
|
||||||
|
|
||||||
Next, I received a mail invitation for a telephonic interview. **This interview will last about 45 minutes and will be technical but will not require coding. Interview topics may include your background, programming languages, and Unix/Linux concepts**. Once you receive this
|
|
||||||
mail you can then decide a time slot for an interview.
|
|
||||||
|
|
||||||
I was not sure what they will ask if this is not a coding interview. The interviewer was very polite, and he was explaining the questions
|
|
||||||
too. Questions were not so tricky but practical and real-life. Since it was **not for SDE role**, the questions were mostly related to
|
|
||||||
Linux/Unix, C++ (mainly pointers and memory), Python/Bash scripting, automation, knowledge of tools (IDEs, Editors, System Administration
|
|
||||||
Tools) and previous experiences. The interview would often explain why he is asking this question, this was very nice. Then some common
|
|
||||||
interview questions, why do you want to work for this role? What makes you fit for this role? etc.
|
|
||||||
|
|
||||||
One thing that I want to point out is that the interviewer was repeatedly checking my resume, and for the most part he did not ask
|
|
||||||
anything that was not on my resume. So, my tip is to create a nice resume with genuine work/tool experiences. And when you are applying
|
|
||||||
for such a role, it would be helpful if you mention mathematics or other courses that you have taken. *Do not lie on your resume*. They
|
|
||||||
will easily catch that.
|
|
||||||
|
|
||||||
The other thing is to keep your words short and clear; I was not great at communication, but you can be. If the interviewer allows then
|
|
||||||
use examples for the things you cannot explain. I used nice examples. At last, he gave me short feedback on how well I performed.
|
|
||||||
|
|
||||||
At last, I want to point out things I should not have done. The first is, I did not ask much about the role, you must do this at least
|
|
||||||
once. Second, I am talkative, I do not know if the interviewer was not faking his expressions (because he would often discuss in-depth),
|
|
||||||
but not all interviewers will be the same. So, do not talk too much, nor too less. At last work on your communication skill, mostly how
|
|
||||||
you to present things and how to answer technical as well as behavioral questions. I was not fluent, but my way of presentation might
|
|
||||||
have saved me.
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
|
|
||||||
************************************
|
|
||||||
Google Summer of Code 2021 Selection
|
|
||||||
************************************
|
|
||||||
|
|
||||||
:date: 2021-05-17 23:22
|
|
||||||
:slug: finally-gsoc
|
|
||||||
:category: gsoc
|
|
||||||
:tags: gsoc, gsoc21, fossology
|
|
||||||
:status: draft
|
|
||||||
|
|
||||||
Finally after three years I have been selected in **Google Summer of Code** program at **The FOSSology Project**. I will be working on *New Buildsystem and CI/CD* for the project.
|
|
||||||
@@ -1,239 +0,0 @@
|
|||||||
**************************************************************
|
|
||||||
Create the VLC User Documentation for one Mobile Port(Android)
|
|
||||||
**************************************************************
|
|
||||||
|
|
||||||
:date: 2020-12-01 23:47
|
|
||||||
:modified: 2020-12-31 23:19
|
|
||||||
:slug: vlc-gsod-report
|
|
||||||
:category: development
|
|
||||||
:tags: vlc, gsod, gsod2020
|
|
||||||
:summary: The project was to Create the VLC User Documentation for Android Mobile Port which was previously hosted on VLC’s wiki pages. The major portion of this was to start everything from scratch including chapter separation, section organization.
|
|
||||||
|
|
||||||
OVERVIEW
|
|
||||||
--------
|
|
||||||
|
|
||||||
VideoLAN is a non-profit organization that develops software for playing video and other media formats. VLC media player (commonly known as just VLC) is a free and Open Source cross-platform multimedia player and framework that plays most multimedia files as well as DVDs, Audio CDs, VCDs, and various streaming protocols built by the VideoLAN organization and a team of volunteers. VLC for Android is a port of the VLC for Android OS.
|
|
||||||
|
|
||||||
|
|
||||||
The project was to Create the VLC User Documentation for Android Mobile Port which was previously hosted on VLC’s wiki pages. The major portion of this was to start everything from scratch including chapter separation, section organization and an engaging and easy to follow for both technical and non-technical users. The original proposal can be found here.
|
|
||||||
|
|
||||||
|
|
||||||
PROJECT GOALS
|
|
||||||
-------------
|
|
||||||
|
|
||||||
* Propose a new structure for documentation e.g. Chapter Separation, Sections etc
|
|
||||||
* Proper balance between technical and non-technical descriptions to serve all kinds of users.
|
|
||||||
* Adequate amount of screenshots in each section and other supporting media to make documentation more appealing.
|
|
||||||
* Optimized for all Screen Sizes. Especially for Mobile Devices.
|
|
||||||
* Ease of navigation
|
|
||||||
|
|
||||||
COMMUNITY BONDING
|
|
||||||
-----------------
|
|
||||||
|
|
||||||
This period was mostly utilized for collecting more information and many internal meetings to shape the projects and bonding with fellow writers, developers(mentors). I got to know more about the VLC organization and the project. We decided to create a skeleton of the project and then follow a Issue-Merge Request-Review-Merge system to keep the commit history clean and maintain the proper review of the work before it is merged.
|
|
||||||
|
|
||||||
|
|
||||||
I initially proposed that the new documentation should also use the same tools(Sphinx and GitLab Pages) because if in future we want to merge all the documentation into a single one, it will be easier to migrate and will provide a consistency across all documentations. Later I got to know that this will be an independent project and may not be merged since it solves a lot of problems. I was already familiar with the tools so it took no time to get started.
|
|
||||||
|
|
||||||
|
|
||||||
Nicolas Pomepuy, who is the lead developer of VLC for Android was assigned as my primary mentor and Simon Latapie as secondary mentor.
|
|
||||||
|
|
||||||
|
|
||||||
DOCUMENTATION DEVELOPMENT PHASE
|
|
||||||
-------------------------------
|
|
||||||
|
|
||||||
Initial Preparation
|
|
||||||
I first moved my existing demo documentation to an entirely new repository with only the skeleton at the suggestion of my mentor. It was necessary to keep the commit history clean. The skeleton contained the empty directories representing the chapter separation. I got to learn “how to properly develop a project and contribute to open source”. This was a major lesson that got me familiar with the Merge Request and Review system.
|
|
||||||
|
|
||||||
|
|
||||||
The Development
|
|
||||||
The next part was to frame the actual documentation pages and push to the repository. Since there was a significant time-zone difference we agreed to discuss by creating issues and sometimes my emails. There was one meeting every fortnight to check the process and discuss further development and blockers. Nicolas was really helpful and patient, answering each of my big-small queries.
|
|
||||||
|
|
||||||
Work Done
|
|
||||||
|
|
||||||
.. raw:: html
|
|
||||||
|
|
||||||
<style>
|
|
||||||
table,td,th {
|
|
||||||
border-collapse:collapse;
|
|
||||||
border: 1px solid #000000;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
<table>
|
|
||||||
<tr>
|
|
||||||
<td><strong>Documentation</strong></td>
|
|
||||||
<td><a href="https://avinal.videolan.me/vlc-android-user/">VLC for Android User Documentation </a>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><strong>Project Repository</strong>
|
|
||||||
</td>
|
|
||||||
<td><a href="https://code.videolan.org/avinal/vlc-android-user">Projects · Avinal Kumar / VLC for Android User Documentation</a>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><strong>Commits</strong>
|
|
||||||
</td>
|
|
||||||
<td><a href="https://code.videolan.org/avinal/vlc-android-user/-/commits/master">Commits · Avinal Kumar / VLC for Android User Documentation</a>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><strong>Issues/Discussions</strong>
|
|
||||||
</td>
|
|
||||||
<td><a href="https://code.videolan.org/avinal/vlc-android-user/-/issues">Issues · Avinal Kumar / VLC for Android User Documentation</a>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><strong>Merge Requests</strong>
|
|
||||||
</td>
|
|
||||||
<td><a href="https://code.videolan.org/avinal/vlc-android-user/-/merge_requests">Merge Requests · Avinal Kumar / VLC for Android User Documentation</a>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
|
|
||||||
Since the Android port of VLC can be installed on Android Smartphones/Tablets, Android TVs, Amazon Fire Devices and Chromebooks too, a full documentation will cover these all devices. Although these are different form factors, the features provided on each of them is exactly the same and the same documentation can be used for all these devices. As of now only Smartphones/Tablets are covered. And later additional pages will be added to reference different features/User Interface. Regardless of this addition the current documentation can serve a major part for all these form factors.
|
|
||||||
Completed/Remaining
|
|
||||||
|
|
||||||
.. raw:: html
|
|
||||||
|
|
||||||
<table>
|
|
||||||
<tr>
|
|
||||||
<td><strong>Chapters</strong>
|
|
||||||
</td>
|
|
||||||
<td><strong>Sections</strong>
|
|
||||||
</td>
|
|
||||||
<td><strong>Status</strong>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><strong>Settings</strong>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<ul>
|
|
||||||
<li>General Settings
|
|
||||||
<li>Interface
|
|
||||||
<li>Video
|
|
||||||
<li>Subtitles
|
|
||||||
<li>Audio
|
|
||||||
<li>Casting
|
|
||||||
<li>Advanced
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</td>
|
|
||||||
<td><strong>ALL COMPLETED</strong>
|
|
||||||
<p>
|
|
||||||
<strong>FOR ALL FORM FACTORS</strong>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><strong>Video</strong>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<ul>
|
|
||||||
<li>Video Explorer
|
|
||||||
<li>Video Player
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</td>
|
|
||||||
<td><strong>COMPLETED FOR SMARTPHONES/TABLETS</strong>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><strong>Audio</strong>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<ul>
|
|
||||||
<li>Audio Explorer
|
|
||||||
<li>Audio Player
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</td>
|
|
||||||
<td><strong>COMPLETED FOR SMARTPHONES/TABLETS</strong>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><strong>Browse</strong>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<ul>
|
|
||||||
<li>Explorer
|
|
||||||
<li>Local Network
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</td>
|
|
||||||
<td><strong>ONLY SMB IN LOCAL NETWORK COMPLETED</strong>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><strong>Installation</strong>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<ul>
|
|
||||||
<li>Smartphones/Tablets
|
|
||||||
<li>Android TV
|
|
||||||
<li>Fire Devices
|
|
||||||
<li>Chromebooks
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</td>
|
|
||||||
<td><strong>COMPLETED FOR SMARTPHONES/TABLETS</strong>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><strong>User Interface</strong>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<ul>
|
|
||||||
<li>Smartphones/Tablets
|
|
||||||
<li>Android TV
|
|
||||||
<li>Fire Devices
|
|
||||||
<li>Chromebooks
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</td>
|
|
||||||
<td><strong>COMPLETED FOR SMARTPHONES/TABLETS</strong>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><strong>Support</strong>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<ul>
|
|
||||||
<li>FAQs
|
|
||||||
<li>Help
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</td>
|
|
||||||
<td><strong>IN PROGRESS</strong>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><strong>Guidelines</strong>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<ul>
|
|
||||||
<li>Contribution Guideline
|
|
||||||
<li>Screenshot Guidelines
|
|
||||||
<li>READMEs
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</td>
|
|
||||||
<td><strong>IN PROGRESS</strong>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
|
|
||||||
CHALLENGES
|
|
||||||
----------
|
|
||||||
|
|
||||||
The major obstacle was to get screenshots for all form factors. Since screenshots were the major part of this documentation it was necessary to provide proper screenshots in each chapter and with every step. For Android TV and Smartphone this was solved by using emulators instead of actual devices, but to emulate the actual scenario in an emulator was sometimes very difficult.
|
|
||||||
There were many occasions where I was not able to gather the exact information about devices other than smartphones/tables. Since all form factors share a common pool of features, my mentor suggested that I focus on smartphones/tables. And to create issues mentioning missing parts so that it could be solved later.
|
|
||||||
|
|
||||||
|
|
||||||
THANKS
|
|
||||||
------
|
|
||||||
|
|
||||||
I want to thank my mentors for being supporting and helpful. I want to thank every person at VLC and Google who were involved in this whole process. Thanks and Congrats to my fellow writer Abhishek Pratap Singh. This was a great opportunity to learn and meet awesome people. I learned a lot about Sphinx, reStructured Text and many other things.
|
|
||||||
|
|
||||||
@@ -1,96 +0,0 @@
|
|||||||
.. |redhat_logo| image:: /images/redhat_logo.png
|
|
||||||
:width: 1.5em
|
|
||||||
:align: middle
|
|
||||||
:target: https://redhat.com
|
|
||||||
|
|
||||||
|
|
||||||
**************************************
|
|
||||||
My internship at Red Hat |redhat_logo|
|
|
||||||
**************************************
|
|
||||||
|
|
||||||
:date: 2022-02-25 20:47
|
|
||||||
:slug: i-am-loving-it-redhat
|
|
||||||
:category: development
|
|
||||||
:tags: kubernetes, redhat, docker, golang, tekton, openshift, intern
|
|
||||||
:summary: I made it to the Red Hat as a DevTools intern. This post is about onboarding and how I prepared myself for working on the actual project.
|
|
||||||
|
|
||||||
|
|
||||||
I have been contributing to open source for the last 3 years and Red Hat was one of the companies that I was very fond of. I must say all my contributions and consistency paid off, and I made it to the Red Hat as a DevTools intern. This post is about onboarding and how I prepared myself for working on the actual project.
|
|
||||||
|
|
||||||
|
|
||||||
On the first day of my internship, I met two amazing teammates `Saytam <https://github.com/>`_ and `Utkarsh <https://github.com/>`_. We were also introduced to a Senior Software Engineer `Piyush Garg <https://github.com>`_ who later mentored us. The initial few meetings were more on the introduction and what to learn topics. Before I jump into more details let me explain first what does a **DevTools Developer/Engineer** do?
|
|
||||||
|
|
||||||
|
|
||||||
What does a DevTools Developer/Engineer do?
|
|
||||||
-------------------------------------------
|
|
||||||
|
|
||||||
From `MDN Web Docs <https://developer.mozilla.org/en-US/docs/Glossary/Developer_Tools>`_ **Developer tools (or "development tools" or short "DevTools") are programs that allow a developer to create, test, and debug software.** At RedHat, a lot of open source developer tools of industry standards are developed. There are many, OpenShift, Tekton, CodeReady containers, and many more.
|
|
||||||
|
|
||||||
.. |golang_logo| image:: /images/golang.png
|
|
||||||
:width: 2.5em
|
|
||||||
:align: top
|
|
||||||
|
|
||||||
Learning on the |golang_logo|
|
|
||||||
-----------------------------
|
|
||||||
|
|
||||||
There was a lot of learning and still a lot to learn. In a meeting with my manager Pradeepto Bhattacharya, I was told that I will be working on TektonCD or OpenShift Pipelines, and both of them require a sound knowledge of Golang, CI/CD, Containers, Docker, and Kubernetes. I was familiar with CI/CD, containers, and Docker but never used Golang and Kubernetes. We were provided plenty of good resources and my teammates also helped with many awesome resources. I am listing all the resources with their category.
|
|
||||||
|
|
||||||
|
|
||||||
`Golang <https://go.dev/>`_
|
|
||||||
"""""""""""""""""""""""""""
|
|
||||||
|
|
||||||
.. image:: /images/goladder.png
|
|
||||||
:class: float-md-right rounded ml-3
|
|
||||||
:alt: Gopher on the ladder
|
|
||||||
:height: 20em
|
|
||||||
|
|
||||||
One of Golang’s biggest advantages is that it offers the clarity and ease of use that other languages lack. Golang’s advantages make it easy for new programmers to quickly understand the language and for seasoned veterans to easily read each other’s code.
|
|
||||||
|
|
||||||
- `Official Go Documentation <https://go.dev/doc/>`_ - *Start from here*
|
|
||||||
- `Go by Example <https://gobyexample.com/>`_ - *bite-size examples for most of the golang features*
|
|
||||||
- `Golang tutorial series - GOLANGBOT.COM <https://golangbot.com/learn-golang-series/>`_ - *in-depth tutorial of golang*
|
|
||||||
- `Effective Go <https://go.dev/doc/effective_go>`_ - *writing good golang programs*
|
|
||||||
- `The Go Playground <https://go.dev/play/>`_ - *official online golang ide*
|
|
||||||
- `The Go Programming Language - Book <https://www.gopl.io/>`_ *for learning advanced level golang*
|
|
||||||
- `Golang Tutorial for Beginners | Full Go Course - TechWorld with Nana <https://youtu.be/yyUHQIec83I>`_ *if you prefer video tutorials, I don't :)*
|
|
||||||
|
|
||||||
`Docker <https://www.docker.com/>`_
|
|
||||||
"""""""""""""""""""""""""""""""""""
|
|
||||||
|
|
||||||
Docker takes away repetitive, mundane configuration tasks and is used throughout the development lifecycle for fast, easy, and portable application development - desktop and cloud. Docker’s comprehensive end-to-end platform includes UIs, CLIs, APIs, and security that are engineered to work together across the entire application delivery lifecycle.
|
|
||||||
|
|
||||||
.. image:: /images/docker-architecture.png
|
|
||||||
:class: float-md-right img-fluid my-3
|
|
||||||
:alt: The Docker Architecture
|
|
||||||
|
|
||||||
|
|
||||||
- `Docker and Containers - Katacoda <https://www.katacoda.com/courses/docker>`_ *interactive lessons on docker and containers*
|
|
||||||
- `Docker for beginners <https://docker-curriculum.com/>`_
|
|
||||||
- `Docker Tutorial for Beginners | TechWorld with Nana <https://youtu.be/3c-iBn73dDE>`_ *video tutorial*
|
|
||||||
|
|
||||||
`Kubernetes <https://kubernetes.io/>`_
|
|
||||||
""""""""""""""""""""""""""""""""""""""
|
|
||||||
|
|
||||||
.. image:: /images/kubernetes-meme.png
|
|
||||||
:width: 200
|
|
||||||
:alt: Kubernetes tech
|
|
||||||
:class: float-md-left border mr-3
|
|
||||||
|
|
||||||
|
|
||||||
**Kubernetes** is the Greek word for a ship’s captain. We get the words Cybernetic and Gubernatorial from it. The Kubernetes project focuses on building a robust platform for running thousands of containers in production.
|
|
||||||
|
|
||||||
- `Learn Kubernetes - Katacoda <https://www.katacoda.com/courses/kubernetes>`_ *interactive lessons with kubernetes*
|
|
||||||
- `kube by example <https://kubebyexample.com/>`_ *learn by doing*
|
|
||||||
- `Kubernetes Tutorial for Beginners <https://youtu.be/X48VuDVv0do>`_ *video tutorial*
|
|
||||||
|
|
||||||
*Not so Minimal* Tekton Server
|
|
||||||
------------------------------
|
|
||||||
|
|
||||||
In late January, we were asked to implement our learnings and deep dive into Kubernetes and TektonCD through an assignment project. Soon we realized that whatever we were learning so far was not even close to what we were going to implement. We were given a document containing the requirements of the applications we were supposed to create along with all the documentation and architectural diagrams.
|
|
||||||
|
|
||||||
|
|
||||||
The application was called **Minimal Tekton Server**. It is a set of three different applications, i.e a server, a CLI, and a dashboard. In short, this application is supposed to *listen to custom resources being created and then transfer the request to Tekton API to create the corresponding resource on the OpenShift/Kubernetes cluster.*
|
|
||||||
|
|
||||||
|
|
||||||
So are you interested in how it went? Please follow up with my `next blog <https://avinal.space/posts/development/lovely-dangerous-things-redhat.html>`_.
|
|
||||||
|
|
||||||
@@ -1,174 +0,0 @@
|
|||||||
.. |redhat_logo| image:: /images/redhat_logo.png
|
|
||||||
:width: 1.5em
|
|
||||||
:align: middle
|
|
||||||
:target: https://redhat.com
|
|
||||||
|
|
||||||
.. |mks_logo| image:: /images/mks_logo.png
|
|
||||||
:width: 1.5em
|
|
||||||
:align: middle
|
|
||||||
:target: https://github.com/MiniTeks
|
|
||||||
|
|
||||||
*******************************************
|
|
||||||
Developing Minimal Tekton Server |mks_logo|
|
|
||||||
*******************************************
|
|
||||||
|
|
||||||
:date: 2022-02-27 20:47
|
|
||||||
:modified: 2022-03-07 22:47
|
|
||||||
:slug: lovely-dangerous-things-redhat
|
|
||||||
:category: development
|
|
||||||
:tags: kubernetes, redhat, docker, golang, tekton, openshift, intern
|
|
||||||
:summary: We will be designing and implementing an application that will be talking to Tekton APIs to create resources on a Kubernetes/OpenShift Cluster.
|
|
||||||
|
|
||||||
|
|
||||||
.. raw:: html
|
|
||||||
|
|
||||||
<p style="border: 2px solid var(--pink);border-radius: 7px;" align=center>This blog is a descreptive account of the development of Minimal Tekton Server. This is highly technical in nature, so please make sure that you have sufficient knowledge about Golang, Docker, Kubernetes and TektonCD. You can refer to my <a href="https://avinal.space/posts/development/i-am-loving-it-redhat.html">previous blog</a> to know about these topics.<p>
|
|
||||||
|
|
||||||
|
|
||||||
As mentioned in my last blog, we were given to implement an application named **Minimal Tekton Server**. The problem statement reads:
|
|
||||||
|
|
||||||
.. epigraph::
|
|
||||||
|
|
||||||
We will be designing and implementing an application that will be talking to Tekton APIs to create resources on a Kubernetes/OpenShift Cluster. The application will expose some fields of the Tekton Resources which the user will provide and then this application will create Tekton resources by talking to Tekton APIs available on the cluster to create the resources based on the user-provided fields.
|
|
||||||
|
|
||||||
|
|
||||||
There are three parts in this project for the application and two more parts for the CI/CD using TektonCD and Kubernetes/OpenShift. I will go through each part descriptively and try to explain what we did.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
The Architecture of MKS
|
|
||||||
-----------------------
|
|
||||||
|
|
||||||
The first task in the development of the Minimal Tekton Server was creating its architectural diagram. Our first diagram was trash compared to the final diagram. Yeah, we learned. I will be explaining our final(obviously) architectural diagram and try to make some sense out of band-aids and duct tapes.
|
|
||||||
|
|
||||||
.. image:: /images/mks-architecture.png
|
|
||||||
:alt: The MKS Arhitecture
|
|
||||||
:class: img-fluid my-3
|
|
||||||
|
|
||||||
Let me start with explaining **What are MKS Resources?**. I hope you know at least tidbits about Kubernetes and by the definition: *A resource is an endpoint in the Kubernetes API that stores a collection of API objects of a certain kind; for example, the built-in :code:`pods` resource contains a collection of Pod objects.* But developers soon realized that these in-built resources were not enough for the ever-growing applications of Kubernetes. Here `custom resource <https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/>`_ comes into the picture. *A custom resource is an extension of the Kubernetes API that is not necessarily available in a default Kubernetes installation.* To define a custom resource we use something called `Custom Resource Definition <https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/>`_. So MKS Resources are such custom resources that correspond to the TektonCD custom resources.
|
|
||||||
|
|
||||||
|
|
||||||
.. image:: /images/venus-flytrap.gif
|
|
||||||
:class: float-md-right ml-3
|
|
||||||
:width: 250
|
|
||||||
:alt: A venus flytrap engulphing an insect.
|
|
||||||
|
|
||||||
|
|
||||||
Let us now focus on the box containing :code:`Controller` and :code:`API server`. The controller can be said as a stimulus-response mechanism. Take the analogy of a Venus Flytrap plant. The trap is initially open. There are :code:`trigger` hairs on the inside of the trap. Once an insect is detected, there is a change of state and the trap closes in a blick on the eye. The controller works the same way. It listens for the change in the state of the MKS resources and immediately transfers the request to the Tekton API to reflect the change in the corresponding Tekton resources. The changes can be creation, deletion, or updating. The API server ensures that there is a working connection between our controller and the Tekton API.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
MKS Server also exposes APIs to introduce a change of state in the MKS resources. In technical terms these are called :code:`verbs`. There are five such verbs that we have exposed: :code:`create`, :code:`update`, :code:`get`, :code:`delete`, and :code:`list`. They can be utilized by a REST client, or in our case **MKS CLI** to introduce desired change. The MKS command-line interface provides commands and subcommands to do the desired tasks.
|
|
||||||
|
|
||||||
|
|
||||||
Whenever there is a change in the state, there is a logic running inside the controller to react on that and that also affects our database. We store four datapoints in our database: :code:`created`, :code:`deleted`, :code:`completed`, and :code:`failed`. They tell us about the current statistcs of our MKS resource using a single-page web app called **MKS Dashboard** (or UI).
|
|
||||||
|
|
||||||
This was about the architecture of the Minimal Tekton Server. Let us jump into more technical stuff.
|
|
||||||
|
|
||||||
|
|
||||||
How to implement a CRD controller?
|
|
||||||
----------------------------------
|
|
||||||
|
|
||||||
During this assignment, something that took the most time and effort was the implementation of a controller for our custom resources. This isn't very hard if you go by the rules and do the things according to the well-defined documents and blogs since this is a standard step in the implementation of any custom resource controller. But did we follow the rules? Hell no! But this time, let us go step-by-step.
|
|
||||||
|
|
||||||
1. The first step is to define a :code:`CustomResourceDefinition` for our custom resource. Let us define a CRD called :code:`spacetime`. To do this you can write a YAML file like below.
|
|
||||||
|
|
||||||
.. code-block:: yaml
|
|
||||||
|
|
||||||
# file: spacetime-crd.yaml
|
|
||||||
apiVersion: apiextensions.k8s.io/v1
|
|
||||||
kind: CustomResourceDefinition
|
|
||||||
metadata:
|
|
||||||
# name must match the spec fields below, and be in the form: <plural>.<group>
|
|
||||||
name: spacetimes.example.com
|
|
||||||
spec:
|
|
||||||
# group name to use for REST API: /apis/<group>/<version>
|
|
||||||
group: example.com
|
|
||||||
# list of versions supported by this CustomResourceDefinition
|
|
||||||
versions:
|
|
||||||
- name: v1alpha1
|
|
||||||
# Each version can be enabled/disabled by Served flag.
|
|
||||||
served: true
|
|
||||||
# One and only one version must be marked as the storage version.
|
|
||||||
storage: true
|
|
||||||
schema:
|
|
||||||
openAPIV3Schema:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
spec:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
message:
|
|
||||||
type: string
|
|
||||||
# either Namespaced or Cluster
|
|
||||||
scope: Namespaced
|
|
||||||
names:
|
|
||||||
# plural name to be used in the URL: /apis/<group>/<version>/<plural>
|
|
||||||
plural: spacetimes
|
|
||||||
# singular name to be used as an alias on the CLI and for display
|
|
||||||
singular: spacetime
|
|
||||||
# kind is normally the CamelCased singular type. Your resource manifests use this.
|
|
||||||
kind: SpaceTime
|
|
||||||
# shortNames allow shorter string to match your resource on the CLI
|
|
||||||
shortNames:
|
|
||||||
- st
|
|
||||||
|
|
||||||
You can learn more about the fields and options `here <https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/>`_. The CRD that we defined above corresponds to the :code:`CustomResource` given below. Once you apply the above file you will be able to see the :code:`spacetime` custom resource on your Kubernetes/OpenShift cluster.
|
|
||||||
|
|
||||||
.. code-block:: yaml
|
|
||||||
|
|
||||||
# file: spacetime-cr.yaml
|
|
||||||
apiVersion: spacetimes.example.com/v1alpha1
|
|
||||||
kind: SpaceTime
|
|
||||||
metadata:
|
|
||||||
name: spacetime-cr
|
|
||||||
spec:
|
|
||||||
message: "Hello from space!"
|
|
||||||
|
|
||||||
Apply them using the following commands:
|
|
||||||
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
kubectl apply -f spacetime-crd.yaml
|
|
||||||
kubectl apply -f spacetime-cr.yaml
|
|
||||||
|
|
||||||
2. Once we have defined our custom resources, we need to define the types that will correspond to this custom resource definition. This can be done using :code:`k8s.io/apimachinery/pkg/apis/meta/v1` package written in golang. Did I tell you that this is all in golang? Well, now you know. Create a package structure for a golang project and add the definition of the type as given below.
|
|
||||||
|
|
||||||
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
mkdir -p pkg/api/spacetime/v1alpha1
|
|
||||||
touch pkg/api/spacetime/v1alpha1/{spacetime_types,register,doc}.go pkg/api/spacetime/register.go
|
|
||||||
|
|
||||||
|
|
||||||
Add the following content to the corresponding files.
|
|
||||||
|
|
||||||
.. code-block:: golang
|
|
||||||
|
|
||||||
// file: /pkg/api/spacetime/v1alpha1/spacetime_types.go
|
|
||||||
package v1alpha1
|
|
||||||
|
|
||||||
import (
|
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
||||||
)
|
|
||||||
|
|
||||||
type SpaceTime struct {
|
|
||||||
metav1.TypeMeta `json:",inline"`
|
|
||||||
metav1.ObjectMeta `json:"metadata,omitempty"`
|
|
||||||
|
|
||||||
Spec SpaceTimeSpec `json:"spec"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type SpaceTimeSpec struct {
|
|
||||||
Message string `json:"message"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type SpaceTimeList struct {
|
|
||||||
metav1.TypeMeta `json:",inline"`
|
|
||||||
metav1.ListMeta `json:"metadata"`
|
|
||||||
|
|
||||||
Items []SpaceTime `json:"items"`
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
**To be Continued**
|
|
||||||
@@ -1,134 +0,0 @@
|
|||||||
**************************
|
|
||||||
reStructuredText in GitHub
|
|
||||||
**************************
|
|
||||||
|
|
||||||
:date: 2021-02-14 22:47
|
|
||||||
:slug: rst-guide
|
|
||||||
:category: development
|
|
||||||
:tags: rst, github
|
|
||||||
:summary: reStructuredText syntax
|
|
||||||
|
|
||||||
- Headers
|
|
||||||
|
|
||||||
.. code-block:: rst
|
|
||||||
|
|
||||||
Top Title
|
|
||||||
=========
|
|
||||||
|
|
||||||
Sub Title
|
|
||||||
---------
|
|
||||||
|
|
||||||
Sub Sub Title
|
|
||||||
^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
- Images
|
|
||||||
|
|
||||||
- Direct
|
|
||||||
|
|
||||||
.. code-block:: rst
|
|
||||||
|
|
||||||
.. figure:: image-path-or-url
|
|
||||||
:align: center
|
|
||||||
:target: link-to-go-when-image-is-clicked
|
|
||||||
:alt: alternative-text-if-any
|
|
||||||
|
|
||||||
- Indirect
|
|
||||||
|
|
||||||
.. code-block:: rst
|
|
||||||
|
|
||||||
.. |substitution| image:: image-path-or-url
|
|
||||||
:target: link-to-go-when-image-is-clicked
|
|
||||||
|
|
||||||
You can use :code:`|substitution|` where you want to put your image.
|
|
||||||
|
|
||||||
- Links
|
|
||||||
|
|
||||||
.. code-block:: rst
|
|
||||||
|
|
||||||
`Link Text <link-itself>`__
|
|
||||||
|
|
||||||
- Lists
|
|
||||||
|
|
||||||
.. code-block:: rst
|
|
||||||
|
|
||||||
- item 1
|
|
||||||
- item 2
|
|
||||||
|
|
||||||
* item 1
|
|
||||||
* itme 2
|
|
||||||
|
|
||||||
#. item 1
|
|
||||||
#. item 2
|
|
||||||
|
|
||||||
1. item 1
|
|
||||||
2. item 2
|
|
||||||
|
|
||||||
First two lists are unordered next two are ordered.
|
|
||||||
|
|
||||||
- Code
|
|
||||||
|
|
||||||
- Inline
|
|
||||||
|
|
||||||
.. code-block:: rst
|
|
||||||
|
|
||||||
:code:`your-code`
|
|
||||||
|
|
||||||
- Code block
|
|
||||||
|
|
||||||
.. code-block:: rst
|
|
||||||
|
|
||||||
.. code-block:: language(optional)
|
|
||||||
|
|
||||||
Your code
|
|
||||||
in multiple lines. You may enable line numbers too.
|
|
||||||
|
|
||||||
- Tables
|
|
||||||
|
|
||||||
.. code-block:: rst
|
|
||||||
|
|
||||||
+----------------+----------------+
|
|
||||||
| Header Cell | Header Cell |
|
|
||||||
+================+================+
|
|
||||||
| Data cell | Data Cell |
|
|
||||||
+----------------+----------------+
|
|
||||||
| Header Cell | Header Cell |
|
|
||||||
+----------------+----------------+
|
|
||||||
|
|
||||||
- Raw HTML block
|
|
||||||
|
|
||||||
.. code-block:: rst
|
|
||||||
|
|
||||||
.. raw:: html
|
|
||||||
|
|
||||||
<put>
|
|
||||||
your html code here
|
|
||||||
</put>
|
|
||||||
|
|
||||||
- Notes, warnings
|
|
||||||
|
|
||||||
.. code-block:: rst
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
|
|
||||||
Put your note here.
|
|
||||||
|
|
||||||
.. warning::
|
|
||||||
|
|
||||||
Put your warning here.
|
|
||||||
|
|
||||||
.. important::
|
|
||||||
|
|
||||||
Put instructions here.
|
|
||||||
|
|
||||||
.. admonition:: custom-text
|
|
||||||
|
|
||||||
Custom description here.
|
|
||||||
|
|
||||||
|
|
||||||
These all are supported by GitHub very well. For more exhautive list specific to Sphinx see `this <https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html>`__ link.
|
|
||||||
|
|
||||||
Tips
|
|
||||||
----
|
|
||||||
|
|
||||||
- There must be a blank line before and after any directive. Such as after title or code block, tables etc.
|
|
||||||
- The options and content of a directives must be 1 tab indented to the directives.
|
|
||||||
@@ -1,157 +0,0 @@
|
|||||||
************************
|
|
||||||
How I Created This Blog?
|
|
||||||
************************
|
|
||||||
|
|
||||||
:date: 2021-01-26 16:47
|
|
||||||
:updated: 2021-05-05 22:30
|
|
||||||
:tags: blog, pelican, ssg
|
|
||||||
:slug: twilight-blog
|
|
||||||
:category: development
|
|
||||||
:summary: As you would have guessed by now, this blog is created using one such awesome SSG named **Pelican**. Pelican is simple, customizable and offers lots of themes and plugins. Pelican is python based SSG and is available through :code:`pip`.
|
|
||||||
|
|
||||||
.. role:: html-raw(raw)
|
|
||||||
:format: html
|
|
||||||
|
|
||||||
:html-raw:`<div class="alert alert-info" role="alert">This article may not be for you if you are a web developer. You already got better options. 😉</div>`
|
|
||||||
|
|
||||||
There are lots of ways to create a personal website or a blog. You can design your own user interface and write the backend code. But not everyone is a web developer. And here comes :abbr:`SSGs (Static Site Generator)` to the rescue. **Static Site Generators** are little more than just website generators. In general, if you are looking for a simple blog, its better to use SSG than writing a lot of html and css. They are simple and elegant. Easy to maintain and you can add lots of customizations to your site without breaking or bloating your blog. There are lots of SSGs, `Jekyll <https://jekyllrb.com/>`_, `Pelican <https://blog.getpelican.com/>`_ and more complex ones like `Gatsby <https://www.gatsbyjs.com/>`_, `Hugo <https://gohugo.io/>`_ .
|
|
||||||
|
|
||||||
As you would have guessed by now, this blog is created using one such awesome SSG named **Pelican**. Pelican is simple, customizable and offers lots of `themes <http://www.pelicanthemes.com/>`_ and `plugins <https://github.com/getpelican/pelican-plugins>`_. Pelican is python based SSG and is available through :code:`pip`.
|
|
||||||
|
|
||||||
.. code-block:: shell
|
|
||||||
|
|
||||||
# for reStructuredText only (recommended)
|
|
||||||
python -m pip install pelican
|
|
||||||
|
|
||||||
# for markdown and reStructuredText both
|
|
||||||
python -m pip install "pelican[markdown]"
|
|
||||||
|
|
||||||
You can start a pelican project by typing following command. It will create a basic template and build configurations.
|
|
||||||
|
|
||||||
.. code-block:: shell
|
|
||||||
|
|
||||||
pelican-quickstart
|
|
||||||
|
|
||||||
# output
|
|
||||||
yourproject/
|
|
||||||
├── content # Put your content here
|
|
||||||
│ └── (pages)
|
|
||||||
├── output # Output files
|
|
||||||
├── tasks.py
|
|
||||||
├── Makefile # Makefile to run build and publish command
|
|
||||||
├── pelicanconf.py # Main settings file
|
|
||||||
└── publishconf.py # Settings to use when ready to publish
|
|
||||||
|
|
||||||
Next step is to choose themes. As I said earlier there are lots of `themes <http://www.pelicanthemes.com/>`_ . And it is easy to create your own theme. Check `here <https://docs.getpelican.com/en/latest/themes.html>`_ to create your own theme. My choice of theme was `pelican-alchemy <https://nairobilug.github.io/pelican-alchemy/>`_ . This is a simple and great theme. Installing and removing themes in pelican is very easy.
|
|
||||||
|
|
||||||
.. code-block:: shell
|
|
||||||
|
|
||||||
# list all installed themes
|
|
||||||
pelican-themes -l
|
|
||||||
# output
|
|
||||||
simple
|
|
||||||
alchemy
|
|
||||||
notmyidea
|
|
||||||
|
|
||||||
# install new theme
|
|
||||||
pelican-themes -i theme-path
|
|
||||||
|
|
||||||
# remove a theme
|
|
||||||
pelican-themes -r theme-name
|
|
||||||
|
|
||||||
To use a particular theme, set the :code:`THEME` variable in the **pelicanconf.py** file.
|
|
||||||
|
|
||||||
.. code-block:: python
|
|
||||||
|
|
||||||
THEME = 'alchemy'
|
|
||||||
|
|
||||||
You can also use a theme that is not installed if you have all the required theme files. Just set this variable to its path.
|
|
||||||
|
|
||||||
.. code-block:: python
|
|
||||||
|
|
||||||
THEME = 'path-to-theme-directory'
|
|
||||||
|
|
||||||
Various themes will have different feature, choose according to your need, or you can always add a feature through plugin. The next step is to build and check your blog. Pelican got it all set up.
|
|
||||||
|
|
||||||
.. code-block:: shell
|
|
||||||
|
|
||||||
# build your website
|
|
||||||
make html
|
|
||||||
# output
|
|
||||||
"pelican" "/mnt/z/my_git/avinal.github.io/content" -o "/mnt/z/my_git/avinal.github.io/output" -s "/mnt/z/my_git/avinal.github.io/pelicanconf.py"
|
|
||||||
Done: Processed 6 articles, 0 drafts, 1 page, 0 hidden pages and 0 draft pages in 2.43 seconds.
|
|
||||||
|
|
||||||
# build and test/serve on localhost
|
|
||||||
make serve
|
|
||||||
# output
|
|
||||||
"pelican" -l "/mnt/z/my_git/avinal.github.io/content" -o "/mnt/z/my_git/avinal.github.io/output" -s "/mnt/z/my_git/avinal.github.io/pelicanconf.py"
|
|
||||||
|
|
||||||
Serving site at: 127.0.0.1:8000 - Tap CTRL-C to stop
|
|
||||||
|
|
||||||
Now open your browser and open `127.0.0.1:8000 <127.0.0.1:8000>`_ or `localhost:8000 <localhost:8000>`_. You should be able to see your new blog. Stop local server using :code:`CTRL+C`. Next step is to publish it to github pages. Pelican has tools for this too. But wait we can do something more interesting here. Why not let GitHub take care of both building and publishing? Just push this project to a GitHub repository and set up GitHub pages. See `this <https://pages.github.com/>`_ help for instructions on that. Before pushing to GitHub add this little script to your project.
|
|
||||||
|
|
||||||
.. code-block:: shell
|
|
||||||
|
|
||||||
#! /bin/bash
|
|
||||||
## file: publi.sh
|
|
||||||
|
|
||||||
# install tools
|
|
||||||
sudo apt-get install -y git make python3 python3-pip python3-setuptools python3-wheel
|
|
||||||
|
|
||||||
# setup github config
|
|
||||||
git config user.email "your-email"
|
|
||||||
git config user.name "your-username"
|
|
||||||
|
|
||||||
# install dependencies
|
|
||||||
sudo pip3 install -r requirements.txt
|
|
||||||
|
|
||||||
# pelican commands - install theme put your theme in themes directory
|
|
||||||
pelican-themes --install themes/theme-name
|
|
||||||
|
|
||||||
# publish to github pages
|
|
||||||
ghp-import -m "Generate Pelican site" -b gh-pages output
|
|
||||||
git push -f origin gh-pages
|
|
||||||
|
|
||||||
Now once your project is on GitHub, go to the **Actions** tab and click on *set up a workflow yourself* and paste the following code into the file and commit it.
|
|
||||||
|
|
||||||
.. code-block:: yaml
|
|
||||||
|
|
||||||
# file: publish.yml
|
|
||||||
name: Publish Blog
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: [ main ]
|
|
||||||
pull_request:
|
|
||||||
branches: [ main ]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v2
|
|
||||||
- name: set up permissions
|
|
||||||
run: chmod +x publi.sh
|
|
||||||
- name: Run a multi-line script
|
|
||||||
run: ./publi.sh
|
|
||||||
|
|
||||||
If you have done everything correctly then go to *https://username.github.io* and you should see your blog. From now on whenever you want to add an article, just write it, test locally and push. Yay your blog is ready.
|
|
||||||
|
|
||||||
:html-raw:`<h2 style=font-family:Exodar;font-weight:lighter;">But My Blog is Special 🥰</h2>`
|
|
||||||
|
|
||||||
My blog looks different, that is because I customized this theme a lot, especially headers, footers, and link appearance. And sorry I won't be publish my theme any time sooner. But I am listing down all the resources I have used for finally getting this result. You can always get my help by sending me a :html-raw:`<a href="mailto:avinal.xlvii@gmail.com" class="fa fa-envelope" style="text-decoration: none;"></a>` or starting a discussion on :html-raw:`<a href="https://github.com/avinal/avinal/discussions/2" class="fab fa-github" style="text-decoration: none;"></a>`.
|
|
||||||
|
|
||||||
* `Pelican Blog <https://blog.getpelican.com/>`_
|
|
||||||
* `Pelican Docs <https://docs.getpelican.com/en/latest/>`_
|
|
||||||
* `Pelican Themes <http://www.pelicanthemes.com/>`_
|
|
||||||
* `Pelican Alchemy Theme <https://github.com/nairobilug/pelican-alchemy>`_
|
|
||||||
* `Parallax Star background in CSS <https://codepen.io/saransh/pen/BKJun>`_
|
|
||||||
* `Solar System animation <https://codepen.io/kowlor/pen/ZYYQoy>`_
|
|
||||||
* :html-raw:`<a href="https://www.dafont.com/exodar.font" style="font-family: Exodar;font-weight: lighter;text-decoration: none;">EXODAR Font</a>`
|
|
||||||
* `Overpass Mono <https://fonts.google.com/specimen/Overpass+Mono>`_
|
|
||||||
* `Font Awesome <https://fontawesome.com/how-to-use/on-the-web/setup/hosting-font-awesome-yourself>`_
|
|
||||||
|
|
||||||
:html-raw:`<div class="alert alert-warning" role="alert">Some of the fonts I have used in my blog may not be available for commercial use. Please check if you intend to do so. Alternatively you may use fonts from this wonderful collection, <a href="https://www.websiteplanet.com/blog/best-free-fonts/">70+ Best Free Fonts for Designers – Free for Commercial Use in 2021</a> <i>(Thanks Ritta Blens for this suggestion)</i></div>`
|
|
||||||
|
|
||||||
|
|
||||||
:html-raw:`<p align=center>Thanks!</p>`
|
|
||||||
|
|
||||||
@@ -1,160 +0,0 @@
|
|||||||
*******************************************************
|
|
||||||
How I implemented WakaTime embeddable Coding Graph GHA?
|
|
||||||
*******************************************************
|
|
||||||
|
|
||||||
:date: 2021-02-02 21:47
|
|
||||||
:tags: wakatime, github-action, coding
|
|
||||||
:category: development
|
|
||||||
:slug: wakatime-readme
|
|
||||||
:summary: f you use WakaTime to track your coding activity. You can add that to your README as a bar graph or embed it in your blog/portfolio. Just add this action to any of your repositories and there you have it.
|
|
||||||
|
|
||||||
|
|
||||||
.. raw:: html
|
|
||||||
|
|
||||||
<a href="https://github.com/avinal/Profile-Readme-WakaTime"><img src="https://raw.githubusercontent.com/avinal/Profile-Readme-WakaTime/b281d074ee75f9626b39d10e2e518c6a297208a3/waka.png" class="img-fluid"></a>
|
|
||||||
|
|
||||||
Implementation Details
|
|
||||||
----------------------
|
|
||||||
|
|
||||||
This GitHub Action is divided into three parts. I didn't want to use Docker but it seems it doesn't work well without it. Let dive a little into technical details. Three parts are as below.
|
|
||||||
|
|
||||||
1. `main.py <https://github.com/avinal/Profile-Readme-WakaTime/blob/master/main.py>`_ python script. This script contains many procedures.
|
|
||||||
|
|
||||||
* `Getting JSON data file via WakaTime API <https://github.com/avinal/Profile-Readme-WakaTime/blob/master/main.py#L52>`_
|
|
||||||
|
|
||||||
.. code-block:: python
|
|
||||||
|
|
||||||
def get_stats() -> list:
|
|
||||||
...
|
|
||||||
return data_list
|
|
||||||
|
|
||||||
|
|
||||||
This function parses the JSON file received and scraps out the useful data as a list of lists. Data scraped are language list, time spent on each language, percentage of the time, start date, and end date. For this action, I have limited the number of languages to 5 however it should be very easy to increase that number.
|
|
||||||
|
|
||||||
* `Setting the Timeline <https://github.com/avinal/Profile-Readme-WakaTime/blob/master/main.py#L13>`_
|
|
||||||
|
|
||||||
.. code-block:: python
|
|
||||||
|
|
||||||
def this_week(dates: list) -> str:
|
|
||||||
...
|
|
||||||
return f"Coding Activity During: {week_start.strftime('%d %B, %Y')} to {week_end.strftime('%d %B, %Y')}"
|
|
||||||
|
|
||||||
The start date and end date scraped in the last function are used here to set the timeline. Because date in JSON is provided in UTC as below :
|
|
||||||
|
|
||||||
.. code-block:: json
|
|
||||||
|
|
||||||
date: "YYYY-MM-DDTHH:MM:SSZ"
|
|
||||||
|
|
||||||
I striped it to simple dates only. We can set them manually by taking the current time from the system. But that method is flawed. But this method ensures that JSON was received latest and the request was successful. Any anomaly will point to a failure in request.
|
|
||||||
|
|
||||||
|
|
||||||
* `Creating a bar graph <https://github.com/avinal/Profile-Readme-WakaTime/blob/master/main.py#L21>`_
|
|
||||||
|
|
||||||
.. code-block:: python
|
|
||||||
|
|
||||||
def make_graph(data: list):
|
|
||||||
...
|
|
||||||
savefig(...)
|
|
||||||
|
|
||||||
|
|
||||||
Lastly, it is time to generate the graph and save them as an image. This function uses the data scraped in the first step. Creating a bar graph using `matplotlib` is easy. Decorating was a bit difficult. I wanted this graph to merge with GitHub's look so I chose to color the bar as GitHub colors the languages. That data is stored as `colors.json`. Many of the languages have slightly different spelling in GitHub as compared to WakaTime. So some languages are shown in default color. That can be improved if we notice that language and change its color manually. Lastly, the graph is saved both as SVG and PNG. SVGs are better to put on a responsive page.
|
|
||||||
|
|
||||||
|
|
||||||
2. `entrypoint.py <https://github.com/avinal/Profile-Readme-WakaTime/blob/master/entrypoint.sh>`_ shell script. This shell script clones the repository copies the image and pushes changes to the master. There were several problems. First of all authentication. This was solved by using a remote repository address using GitHub Token. And it seems that GitHub doesn't allow to commit without a username and email. So I used **github-actions** bot email.
|
|
||||||
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
remote_repo-"https://${GITHUB_ACTOR}:${INPUT_GITHUB_TOKEN}@github.com/${GITHUB_REPOSITORY}.git"
|
|
||||||
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
|
|
||||||
git config user.name "GitHub Actions"
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
:code:`41898282` is the id assigned to the github-actions bot. Don't ask where I found them 🙂.
|
|
||||||
|
|
||||||
Another problem was to separate repository name from combined *username/repository-name* provided by `${GITHUB_REPOSITORY}`. GitHub doesn't provides a direct way to get just the repo name. We used *Internal Field Separator*. It returns an array and works similar to :code:`split()` command in Python and Java.
|
|
||||||
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
# '/' is the seperator
|
|
||||||
IFS-'/' read -ra reponame <<< "${GITHUB_REPOSITORY}"
|
|
||||||
# returned {username, repository}
|
|
||||||
repository-"${reponame[1]}"
|
|
||||||
|
|
||||||
|
|
||||||
After that, all other commands are pretty straight. Commit the added files and push them.
|
|
||||||
|
|
||||||
3. `Dockerfile <https://github.com/avinal/Profile-Readme-WakaTime/blob/master/Dockerfile>`_ **IMPORTANT** It took a lot of time to reach this state 🥱. This is where all the magic happens. I am running `ubuntu:latest` inside the container. I first update the distribution. Then install the required python packages. Lastly, I invoke the python script and shell script.
|
|
||||||
|
|
||||||
There was an almost impossible problem, I searched hundreds of posts that *how can I access the generated files inside Docker container*, but no luck. But at last, I found a workaround(obviously otherwise you wouldn't be reading this by now 🤣) each command is run in a separate virtual sub-container. As the command ends its output is also lost but not when you club multiple commands together. At least not until every command is finished. The generated files are available to the next clubbed process. I did that by combining the python script run and shell script run.
|
|
||||||
|
|
||||||
.. code-block:: dockerfile
|
|
||||||
|
|
||||||
CMD python3 /main.py && /entrypoint.sh
|
|
||||||
|
|
||||||
This part is the smallest yet took the most time and tries while developing this action.
|
|
||||||
|
|
||||||
How to use this GitHub Actions?
|
|
||||||
-------------------------------
|
|
||||||
|
|
||||||
1. First get your WakaTime API Key. You can get it from your [WakaTime](https://wakatime.com) account settings.
|
|
||||||
2. Save WakaTime API Key to Repository Secret. Find that by clicking the Settings tab. Keep the name of the secret as **WAKATIME_API_KEY**.
|
|
||||||
3. Add the following line in your README.md of your repo.
|
|
||||||
|
|
||||||
.. code-block:: html
|
|
||||||
|
|
||||||
<img src-"https://github.com/<username>/<repository-name>/blob/<branch-name>/images/stat.svg" alt-"Alternative Text"/>
|
|
||||||
Example: <img src-"https://github.com/avinal/avinal/blob/main/images/stat.svg" alt-"Avinal WakaTime Activity"/>
|
|
||||||
|
|
||||||
|
|
||||||
You can use this method to embed in web pages too. **Do not use the markdown method of inserting images. It does not work sometimes.**
|
|
||||||
|
|
||||||
4. Click the **Action** tab and **choose to set up a workflow yourself**.
|
|
||||||
5. Copy the following code into the opened file, you can search for **WakaTime Stat** in the marketplace tab for assistance.
|
|
||||||
|
|
||||||
.. code-block:: yaml
|
|
||||||
|
|
||||||
name: WakaTime status update
|
|
||||||
|
|
||||||
on:
|
|
||||||
schedule:
|
|
||||||
# Runs at 12 am '0 0 * * *' UTC
|
|
||||||
- cron: "1 0 * * *"
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
update-readme:
|
|
||||||
name: Update the WakaTime Stat
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
# Use avinal/Profile-Readme-WakaTime@<latest-release-tag> for latest stable release
|
|
||||||
# Do not change the line below except the word master with tag number maybe
|
|
||||||
# If you have forked this project you can use <username>/Profile-Readme-WakaTime@master instead
|
|
||||||
- uses: avinal/Profile-Readme-WakaTime@master
|
|
||||||
with:
|
|
||||||
# WakaTime API key stored in secrets, do not directly paste it here
|
|
||||||
WAKATIME_API_KEY: ${{ secrets.WAKATIME_API_KEY }}
|
|
||||||
# Automatic github token
|
|
||||||
GITHUB_TOKEN: ${{ github.token }}
|
|
||||||
# Branch - newer GitHub repositories have "main" as default branch, change to main in that case, default is master
|
|
||||||
BRANCH: "master"
|
|
||||||
# Manual Commit messages - write your own messages here
|
|
||||||
COMMIT_MSG: "Automated Coding Activity Update :alien:"
|
|
||||||
|
|
||||||
|
|
||||||
6. Please wait till 12 AM UTC to run this workflow automatically. Or you can force run it by going to the Actions tab. Or you can add the following lines under `on:` to run with every push. Search for 12 AM UTC to find the equivalent time in your time zone.
|
|
||||||
|
|
||||||
.. code-block:: yaml
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: [ master ]
|
|
||||||
schedule:
|
|
||||||
- cron: '1 0 * * *'
|
|
||||||
|
|
||||||
My Coding Activity
|
|
||||||
------------------
|
|
||||||
|
|
||||||
.. raw:: html
|
|
||||||
|
|
||||||
<img class="img-fluid" src="https://raw.githubusercontent.com/avinal/avinal/main/images/stat.svg">
|
|
||||||
|
|
||||||
@@ -1,95 +0,0 @@
|
|||||||
**********************************
|
|
||||||
Move WSL 2 Safely to another Drive
|
|
||||||
**********************************
|
|
||||||
|
|
||||||
:date: 2020-12-31 19:07
|
|
||||||
:tags: wsl, wsl2
|
|
||||||
:category: development
|
|
||||||
:slug: wsl1
|
|
||||||
:summary: It is real pain when you have small SSD and Windows Subsystem for Linux (WSL) is growing exponentially in size. There is no easy way to move the WSL installation to another drive. Here in this blog I will discuss how to tackle this problem with bite size steps.
|
|
||||||
|
|
||||||
It is real pain when you have small SSD and Windows Subsystem for Linux (WSL) is growing exponentially in size. There is no easy way to move
|
|
||||||
the WSL installation to another drive. Here in this blog I will discuss how to tackle this problem with bite size steps.
|
|
||||||
|
|
||||||
.. |powershell| image:: /images/powershell.png
|
|
||||||
:width: 5%
|
|
||||||
:align: middle
|
|
||||||
|
|
||||||
.. |command-line| image:: /images/command-line.png
|
|
||||||
:width: 5%
|
|
||||||
:align: middle
|
|
||||||
|
|
||||||
.. |windows10| image:: /images/windows10.png
|
|
||||||
:width: 5%
|
|
||||||
:align: middle
|
|
||||||
:alt: WinKey
|
|
||||||
|
|
||||||
.. role:: html-raw(raw)
|
|
||||||
:format: html
|
|
||||||
|
|
||||||
1. Open a PowerShell |powershell| or Command Prompt |command-line| with *Admin* access. For this you can use |windows10| + X shortcut and select **Windows PowerShell(Admin)**.
|
|
||||||
2. Check if the WSL 2 installation you are planning to move is is currently running/stopped.
|
|
||||||
|
|
||||||
.. code-block:: powershell
|
|
||||||
|
|
||||||
PS C:\Users\Avinal> wsl -l -v
|
|
||||||
PS C:\Users\Avinal>
|
|
||||||
NAME STATE VERSION
|
|
||||||
* Ubuntu Running 2
|
|
||||||
Kali Stopped 2
|
|
||||||
|
|
||||||
3. If its running then you must stop the particular WSL distribution. (*Ubuntu* used as example)
|
|
||||||
|
|
||||||
.. code-block:: powershell
|
|
||||||
|
|
||||||
PS C:\Users\Avinal> wsl -t Ubuntu
|
|
||||||
|
|
||||||
4. Export to some folder. (Here exporting *Ubuntu* as *ubuntu-ex.tar* to *Z:\wsl2*)
|
|
||||||
|
|
||||||
.. code-block:: powershell
|
|
||||||
|
|
||||||
PS C:\Users\Avinal> wsl --export Ubuntu "Z:\export\ubuntu-ex.tar"
|
|
||||||
|
|
||||||
5. Unregister previous WSL installation
|
|
||||||
|
|
||||||
.. code-block:: powershell
|
|
||||||
|
|
||||||
PS C:\Users\Avinal> wsl --unregister Ubuntu
|
|
||||||
|
|
||||||
6. Create a new folder and import your WSL installation to that folder.
|
|
||||||
|
|
||||||
.. code-block:: powershell
|
|
||||||
|
|
||||||
PS C:\Users\Avinal> New-Item -Path "Z:\wsl2" -ItemType Directory
|
|
||||||
|
|
||||||
Directory: Z:\
|
|
||||||
|
|
||||||
Mode LastWriteTime Length Name
|
|
||||||
---- ------------- ------ ----
|
|
||||||
d----- 31-12-2020 21:03 wsl2
|
|
||||||
|
|
||||||
PS C:\Users\Avinal> wsl --import Ubuntu "Z:\wsl2" "Z:\export\ubuntu-ex.tar"
|
|
||||||
|
|
||||||
7. Check after import is complete
|
|
||||||
|
|
||||||
.. code-block:: powershell
|
|
||||||
|
|
||||||
PS C:\Users\Avinal> wsl -l -v
|
|
||||||
PS C:\Users\Avinal>
|
|
||||||
NAME STATE VERSION
|
|
||||||
* Ubuntu Running 2
|
|
||||||
Kali Stopped 2
|
|
||||||
|
|
||||||
8. Mark one of your WSL distribution as *(default)*.
|
|
||||||
|
|
||||||
.. code-block:: powershell
|
|
||||||
|
|
||||||
PS C:\Users\Avinal> wsl -s Ubuntu
|
|
||||||
|
|
||||||
9. After exporting your default user will be set as :html-raw:`<i style="color:red">root</i>` , to change it to your desired username, run following command
|
|
||||||
|
|
||||||
.. code-block:: powershell
|
|
||||||
|
|
||||||
PS C:\Users\Avinal> ubuntu config --default-user user_name
|
|
||||||
|
|
||||||
10. Finally run :code:`wsl` and you have successfully moved your WSL 2 installation to another drive.
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
********
|
|
||||||
About Me
|
|
||||||
********
|
|
||||||
|
|
||||||
:slug: about-me
|
|
||||||
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
*****************************
|
|
||||||
Introduction to Prime Numbers
|
|
||||||
*****************************
|
|
||||||
|
|
||||||
:date: 2021-01-09 22:29
|
|
||||||
:tags: prime, primenumbers
|
|
||||||
:category: prime
|
|
||||||
:slug: prime1
|
|
||||||
:summary: A prime is a positive integer *p* having exactly two positive divisors, namely *1* and *p*. An integer *n* is composite if *n* > *1* and *n* is not prime. (The number 1 is considered neither prime nor composite.)
|
|
||||||
|
|
||||||
.. epigraph::
|
|
||||||
|
|
||||||
A prime is a positive integer *p* having exactly two positive divisors, namely *1* and *p*. An integer *n* is composite if *n* > *1* and *n* is not prime. (The number 1 is considered neither prime nor composite.)
|
|
||||||
|
|
||||||
We can frame a brute force algorithm for checking primality of numbers using the above statement.
|
|
||||||
|
|
||||||
.. code-block:: cpp
|
|
||||||
|
|
||||||
bool is_prime(int number) {
|
|
||||||
int factor = 0;
|
|
||||||
for (int i = 0; i <= number; ++i) {
|
|
||||||
if (number % i == 0) {
|
|
||||||
factor++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return (factor == 2)? true : false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -0,0 +1,176 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<!-- Required meta tags -->
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
|
||||||
|
<title>My Checklist | Be My SpaceTime
|
||||||
|
</title>
|
||||||
|
<link rel="canonical" href="https://avinal.space/drafts/checklist.html">
|
||||||
|
|
||||||
|
<link rel="apple-touch-icon" href="https://avinal.space/apple-touch-icon.png" sizes="180x180">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-32x32.png" sizes="32x32">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-16x16.png" sizes="16x16">
|
||||||
|
<link rel="manifest" href="https://avinal.space/site.webmanifest">
|
||||||
|
<meta name="theme-color" content="#333333">
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/bootstrap.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/all.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/pygments/manni.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/theme.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/space.css">
|
||||||
|
|
||||||
|
<link rel="alternate" type="application/atom+xml" title="Full Atom Feed" href="https://avinal.space/feeds/all.atom.xml">
|
||||||
|
<link rel="alternate" type="application/atom+xml" title="Categories Atom Feed"
|
||||||
|
href="https://avinal.space/feeds/development.atom.xml">
|
||||||
|
<meta name="description" content="">
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body style="font-family:Overpass Mono,monospace;">
|
||||||
|
<header class="header star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container text-center">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<h1 class="title" style="font-family: ExodarOut;font-weight: lighter;"><a href="https://avinal.space/">Be My SpaceTime</a>
|
||||||
|
</h1>
|
||||||
|
<!--
|
||||||
|
<p class="text-muted">눈치</p>
|
||||||
|
-->
|
||||||
|
<ul class="list-inline">
|
||||||
|
<li class="list-inline-item"><a href="https://gsoc.avinal.space" target="_blank">gsoc</a></li>
|
||||||
|
<li class="list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/pages/about-me.html">About Me</a></li>
|
||||||
|
<li class=" list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-github" href="https://github.com/avinal" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-linkedin" href="https://www.linkedin.com/in/avinal/" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-instagram" href="https://instagram.com/avinal.k" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-calendar" href="https://meet.avinal.space" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fa fa-envelope" href="mailto:blog@avinal.space" target="_blank"></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div> </div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<div class="main">
|
||||||
|
<div class="container">
|
||||||
|
<h1>My Checklist
|
||||||
|
</h1>
|
||||||
|
<hr>
|
||||||
|
<article class="article">
|
||||||
|
<header>
|
||||||
|
<ul class="list-inline">
|
||||||
|
<li class="list-inline-item text-muted" title="2021-02-14T22:47:00+05:30">
|
||||||
|
<i class="fas fa-clock"></i>
|
||||||
|
Sun 14 February 2021
|
||||||
|
</li>
|
||||||
|
<li class="list-inline-item">
|
||||||
|
<i class="fas fa-folder-open"></i>
|
||||||
|
<a href="https://avinal.space/category/development.html">development</a>
|
||||||
|
</li>
|
||||||
|
<li class="list-inline-item">
|
||||||
|
<i class="fas fa-tag"></i>
|
||||||
|
<a href="https://avinal.space/tag/rst.html">#rst</a>, <a href="https://avinal.space/tag/github.html">#github</a> </li>
|
||||||
|
</ul>
|
||||||
|
</header>
|
||||||
|
<div class="content">
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
<p align=center>
|
||||||
|
This Blog is licensed under <a href="http://creativecommons.org/licenses/by-nc/4.0/?ref=chooser-v1"
|
||||||
|
target="_blank" rel="license noopener noreferrer">Attribution-NonCommercial 4.0 International<img
|
||||||
|
style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
|
||||||
|
src="https://mirrors.creativecommons.org/presskit/icons/cc.svg?ref=chooser-v1"><img
|
||||||
|
style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
|
||||||
|
src="https://mirrors.creativecommons.org/presskit/icons/by.svg?ref=chooser-v1"><img
|
||||||
|
style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
|
||||||
|
src="https://mirrors.creativecommons.org/presskit/icons/nc.svg?ref=chooser-v1">
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
<hr>
|
||||||
|
<div id="comment-form">
|
||||||
|
<div class="alert alert-info" role="alert">
|
||||||
|
Feel free to leave a feedback or question!
|
||||||
|
</div>
|
||||||
|
<form action="https://docs.google.com/forms/u/0/d/e/1FAIpQLSfL9T8WBRm-Ac2uyu74lJXSYOqAuF6lLIUAulRArCsuiI1ZRQ/formResponse" target="response" method="POST" id="valid-form">
|
||||||
|
<div class="form-row align-items-center">
|
||||||
|
<div class="form-group col-md-5">
|
||||||
|
<label class="sr-only" for="person-name">Name</label>
|
||||||
|
<input type="text" class="form-control form-control-sm" id="person-name" placeholder="Your Name (Optional)"
|
||||||
|
aria-describedby="nameHelp" name="entry.982725972">
|
||||||
|
<input type="text" id="page-link" name="entry.1641222305" hidden>
|
||||||
|
<small id="nameHelp" class="form-text text-muted">You may put your GitHub Username.</small>
|
||||||
|
</div>
|
||||||
|
<div class="form-group col-md-7">
|
||||||
|
<label class="sr-only" for="email-address">Email address</label>
|
||||||
|
<input type="email" class="form-control form-control-sm" id="email-address" aria-describedby="emailHelp"
|
||||||
|
placeholder="Your Email Address (Optional)" name="entry.1652853191">
|
||||||
|
<small id="emailHelp" class="form-text text-muted">I'll never share your email with anyone
|
||||||
|
else.</small>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="sr-only" for="comment-section">Your Message</label>
|
||||||
|
<textarea class="form-control form-control-sm" id="comment-section" rows="3"
|
||||||
|
placeholder="Please enter your message or feedback. (Required)" aria-describedby="emailHelp"
|
||||||
|
name="entry.1062656232" required></textarea>
|
||||||
|
<div class="invalid-feedback">
|
||||||
|
Please Enter something !
|
||||||
|
</div>
|
||||||
|
<small id="textHelp" class="form-text text-muted">Enter upto 200 characters.</small>
|
||||||
|
</div>
|
||||||
|
<button class="btn btn-outline-info" type="submit">Send</button>
|
||||||
|
</form>
|
||||||
|
<iframe name="response" hidden></iframe>
|
||||||
|
</div>
|
||||||
|
<div class="alert alert-info" role="alert" id="comment-message" style="display: none;">
|
||||||
|
<h4 class="alert-heading">Thanks You 🥳</h4>
|
||||||
|
<p>Thanks a lot for reading this blog and sending me a feedback. I hope you liked it. I will get back to you
|
||||||
|
soon if you have added an email.</p>
|
||||||
|
</div>
|
||||||
|
<script>
|
||||||
|
(function () {
|
||||||
|
'use strict';
|
||||||
|
window.addEventListener('load', function () {
|
||||||
|
var form = document.getElementById('valid-form');
|
||||||
|
form.addEventListener('submit', function (event) {
|
||||||
|
document.getElementById('page-link').value = window.location.href;
|
||||||
|
document.getElementById('comment-form').style.display = 'none';
|
||||||
|
document.getElementById('comment-message').style.display = '';
|
||||||
|
}, false);
|
||||||
|
}, false);
|
||||||
|
})();
|
||||||
|
</script>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<footer class="footer star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<ul class="col-sm-6 list-inline">
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/archives.html">Archives</a></li>
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/categories.html">Categories</a></li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/tags.html">Tags</a></li>
|
||||||
|
</ul>
|
||||||
|
<p class="col-sm-6 text-sm-right text-muted">Created with <i class="fa fa-heart" style="color: red;"></i> by <a
|
||||||
|
href="https://github.com/avinal" target="_blank">Avinal</a>
|
||||||
|
</p>
|
||||||
|
</div> </div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,177 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<!-- Required meta tags -->
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
|
||||||
|
<title>Google Summer of Code 2021 Selection | Be My SpaceTime
|
||||||
|
</title>
|
||||||
|
<link rel="canonical" href="https://avinal.space/drafts/finally-gsoc.html">
|
||||||
|
|
||||||
|
<link rel="apple-touch-icon" href="https://avinal.space/apple-touch-icon.png" sizes="180x180">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-32x32.png" sizes="32x32">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-16x16.png" sizes="16x16">
|
||||||
|
<link rel="manifest" href="https://avinal.space/site.webmanifest">
|
||||||
|
<meta name="theme-color" content="#333333">
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/bootstrap.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/all.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/pygments/manni.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/theme.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/space.css">
|
||||||
|
|
||||||
|
<link rel="alternate" type="application/atom+xml" title="Full Atom Feed" href="https://avinal.space/feeds/all.atom.xml">
|
||||||
|
<link rel="alternate" type="application/atom+xml" title="Categories Atom Feed"
|
||||||
|
href="https://avinal.space/feeds/gsoc.atom.xml">
|
||||||
|
<meta name="description" content="Finally after three years I have been selected in Google Summer of Code program at The FOSSology Project. I will be working on New Buildsystem and CI/CD for the project.">
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body style="font-family:Overpass Mono,monospace;">
|
||||||
|
<header class="header star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container text-center">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<h1 class="title" style="font-family: ExodarOut;font-weight: lighter;"><a href="https://avinal.space/">Be My SpaceTime</a>
|
||||||
|
</h1>
|
||||||
|
<!--
|
||||||
|
<p class="text-muted">눈치</p>
|
||||||
|
-->
|
||||||
|
<ul class="list-inline">
|
||||||
|
<li class="list-inline-item"><a href="https://gsoc.avinal.space" target="_blank">gsoc</a></li>
|
||||||
|
<li class="list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/pages/about-me.html">About Me</a></li>
|
||||||
|
<li class=" list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-github" href="https://github.com/avinal" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-linkedin" href="https://www.linkedin.com/in/avinal/" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-instagram" href="https://instagram.com/avinal.k" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-calendar" href="https://meet.avinal.space" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fa fa-envelope" href="mailto:blog@avinal.space" target="_blank"></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div> </div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<div class="main">
|
||||||
|
<div class="container">
|
||||||
|
<h1>Google Summer of Code 2021 Selection
|
||||||
|
</h1>
|
||||||
|
<hr>
|
||||||
|
<article class="article">
|
||||||
|
<header>
|
||||||
|
<ul class="list-inline">
|
||||||
|
<li class="list-inline-item text-muted" title="2021-05-17T23:22:00+05:30">
|
||||||
|
<i class="fas fa-clock"></i>
|
||||||
|
Mon 17 May 2021
|
||||||
|
</li>
|
||||||
|
<li class="list-inline-item">
|
||||||
|
<i class="fas fa-folder-open"></i>
|
||||||
|
<a href="https://avinal.space/category/gsoc.html">gsoc</a>
|
||||||
|
</li>
|
||||||
|
<li class="list-inline-item">
|
||||||
|
<i class="fas fa-tag"></i>
|
||||||
|
<a href="https://avinal.space/tag/gsoc.html">#gsoc</a>, <a href="https://avinal.space/tag/gsoc21.html">#gsoc21</a>, <a href="https://avinal.space/tag/fossology.html">#fossology</a> </li>
|
||||||
|
</ul>
|
||||||
|
</header>
|
||||||
|
<div class="content">
|
||||||
|
<p>Finally after three years I have been selected in <strong>Google Summer of Code</strong> program at <strong>The FOSSology Project</strong>. I will be working on <em>New Buildsystem and CI/CD</em> for the project.</p>
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
<p align=center>
|
||||||
|
This Blog is licensed under <a href="http://creativecommons.org/licenses/by-nc/4.0/?ref=chooser-v1"
|
||||||
|
target="_blank" rel="license noopener noreferrer">Attribution-NonCommercial 4.0 International<img
|
||||||
|
style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
|
||||||
|
src="https://mirrors.creativecommons.org/presskit/icons/cc.svg?ref=chooser-v1"><img
|
||||||
|
style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
|
||||||
|
src="https://mirrors.creativecommons.org/presskit/icons/by.svg?ref=chooser-v1"><img
|
||||||
|
style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
|
||||||
|
src="https://mirrors.creativecommons.org/presskit/icons/nc.svg?ref=chooser-v1">
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
<hr>
|
||||||
|
<div id="comment-form">
|
||||||
|
<div class="alert alert-info" role="alert">
|
||||||
|
Feel free to leave a feedback or question!
|
||||||
|
</div>
|
||||||
|
<form action="https://docs.google.com/forms/u/0/d/e/1FAIpQLSfL9T8WBRm-Ac2uyu74lJXSYOqAuF6lLIUAulRArCsuiI1ZRQ/formResponse" target="response" method="POST" id="valid-form">
|
||||||
|
<div class="form-row align-items-center">
|
||||||
|
<div class="form-group col-md-5">
|
||||||
|
<label class="sr-only" for="person-name">Name</label>
|
||||||
|
<input type="text" class="form-control form-control-sm" id="person-name" placeholder="Your Name (Optional)"
|
||||||
|
aria-describedby="nameHelp" name="entry.982725972">
|
||||||
|
<input type="text" id="page-link" name="entry.1641222305" hidden>
|
||||||
|
<small id="nameHelp" class="form-text text-muted">You may put your GitHub Username.</small>
|
||||||
|
</div>
|
||||||
|
<div class="form-group col-md-7">
|
||||||
|
<label class="sr-only" for="email-address">Email address</label>
|
||||||
|
<input type="email" class="form-control form-control-sm" id="email-address" aria-describedby="emailHelp"
|
||||||
|
placeholder="Your Email Address (Optional)" name="entry.1652853191">
|
||||||
|
<small id="emailHelp" class="form-text text-muted">I'll never share your email with anyone
|
||||||
|
else.</small>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="sr-only" for="comment-section">Your Message</label>
|
||||||
|
<textarea class="form-control form-control-sm" id="comment-section" rows="3"
|
||||||
|
placeholder="Please enter your message or feedback. (Required)" aria-describedby="emailHelp"
|
||||||
|
name="entry.1062656232" required></textarea>
|
||||||
|
<div class="invalid-feedback">
|
||||||
|
Please Enter something !
|
||||||
|
</div>
|
||||||
|
<small id="textHelp" class="form-text text-muted">Enter upto 200 characters.</small>
|
||||||
|
</div>
|
||||||
|
<button class="btn btn-outline-info" type="submit">Send</button>
|
||||||
|
</form>
|
||||||
|
<iframe name="response" hidden></iframe>
|
||||||
|
</div>
|
||||||
|
<div class="alert alert-info" role="alert" id="comment-message" style="display: none;">
|
||||||
|
<h4 class="alert-heading">Thanks You 🥳</h4>
|
||||||
|
<p>Thanks a lot for reading this blog and sending me a feedback. I hope you liked it. I will get back to you
|
||||||
|
soon if you have added an email.</p>
|
||||||
|
</div>
|
||||||
|
<script>
|
||||||
|
(function () {
|
||||||
|
'use strict';
|
||||||
|
window.addEventListener('load', function () {
|
||||||
|
var form = document.getElementById('valid-form');
|
||||||
|
form.addEventListener('submit', function (event) {
|
||||||
|
document.getElementById('page-link').value = window.location.href;
|
||||||
|
document.getElementById('comment-form').style.display = 'none';
|
||||||
|
document.getElementById('comment-message').style.display = '';
|
||||||
|
}, false);
|
||||||
|
}, false);
|
||||||
|
})();
|
||||||
|
</script>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<footer class="footer star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<ul class="col-sm-6 list-inline">
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/archives.html">Archives</a></li>
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/categories.html">Categories</a></li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/tags.html">Tags</a></li>
|
||||||
|
</ul>
|
||||||
|
<p class="col-sm-6 text-sm-right text-muted">Created with <i class="fa fa-heart" style="color: red;"></i> by <a
|
||||||
|
href="https://github.com/avinal" target="_blank">Avinal</a>
|
||||||
|
</p>
|
||||||
|
</div> </div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
|
Before Width: | Height: | Size: 926 B After Width: | Height: | Size: 926 B |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
@@ -1,19 +1,6 @@
|
|||||||
****************
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
प्रेम रतन धन पायो
|
<feed xmlns="http://www.w3.org/2005/Atom"><title>Be My SpaceTime - article</title><link href="https://avinal.space/" rel="alternate"></link><link href="https://avinal.space/feeds/article.atom.xml" rel="self"></link><id>https://avinal.space/</id><updated>2019-09-21T15:47:00+05:30</updated><subtitle>눈치</subtitle><entry><title>प्रेम रतन धन पायो</title><link href="https://avinal.space/posts/article/for-sunshine.html" rel="alternate"></link><published>2019-09-21T15:47:00+05:30</published><updated>2019-09-21T15:47:00+05:30</updated><author><name>Avinal</name></author><id>tag:avinal.space,2019-09-21:/posts/article/for-sunshine.html</id><summary type="html"><p class="first last">टूटता तारा देखना एक अलौकिक अनुभव है। हिमाद्रि के छत से आसमान कुछ ज्यादा ही करीब प्रतीत होता है । लोग सदियों से हिमालय को पूजते आयें हैं । दादा-दादी कहा करते थे ये जिंदा पहाड़ हैं । सारी बातें सुनते हैं लोगों की । उनके दुख दर्द दूर करते हैं, ये देवता हैं ।</p>
|
||||||
****************
|
</summary><content type="html"><p style="border: 2px solid var(--cyan);border-radius: 7px;" align=center>This article was published in 18th edition of SRIJAN, the official magazine of <a href="https://nith.ac.in" style="text-decoration: none;">National Institute of Technology, Hamirpur</a>, India. The magazine can be accessed <a href="https://issuu.com/srijandesk/docs/srijan2020" style="text-decoration: none;">here</a>.<p><p>टूटता तारा देखना एक अलौकिक अनुभव है। हिमाद्रि के छत से आसमान कुछ ज्यादा ही करीब प्रतीत होता है । लोग सदियों से हिमालय को पूजते आयें हैं ।
|
||||||
|
|
||||||
:date: 2019-09-21 15:47
|
|
||||||
:slug: for-sunshine
|
|
||||||
:category: article
|
|
||||||
:tags: love, article, hindi
|
|
||||||
:summary: टूटता तारा देखना एक अलौकिक अनुभव है। हिमाद्रि के छत से आसमान कुछ ज्यादा ही करीब प्रतीत होता है । लोग सदियों से हिमालय को पूजते आयें हैं । दादा-दादी कहा करते थे ये जिंदा पहाड़ हैं । सारी बातें सुनते हैं लोगों की । उनके दुख दर्द दूर करते हैं, ये देवता हैं ।
|
|
||||||
|
|
||||||
.. raw:: html
|
|
||||||
|
|
||||||
<p style="border: 2px solid var(--cyan);border-radius: 7px;" align=center>This article was published in 18th edition of SRIJAN, the official magazine of <a href="https://nith.ac.in" style="text-decoration: none;">National Institute of Technology, Hamirpur</a>, India. The magazine can be accessed <a href="https://issuu.com/srijandesk/docs/srijan2020" style="text-decoration: none;">here</a>.<p>
|
|
||||||
|
|
||||||
|
|
||||||
टूटता तारा देखना एक अलौकिक अनुभव है। हिमाद्रि के छत से आसमान कुछ ज्यादा ही करीब प्रतीत होता है । लोग सदियों से हिमालय को पूजते आयें हैं ।
|
|
||||||
दादा-दादी कहा करते थे ये जिंदा पहाड़ हैं । सारी बातें सुनते हैं लोगों की । उनके दुख दर्द दूर करते हैं, ये देवता हैं । आजकल जब रोज़ क्लास
|
दादा-दादी कहा करते थे ये जिंदा पहाड़ हैं । सारी बातें सुनते हैं लोगों की । उनके दुख दर्द दूर करते हैं, ये देवता हैं । आजकल जब रोज़ क्लास
|
||||||
आते जाते दूर पहाड़ों की चोटियाँ देखता हूँ तो उनकी विशालता का अनुभव होता हैं । एक पल को अगर ये मान लिया जाए की हमारी सारी धार्मिक किताबें
|
आते जाते दूर पहाड़ों की चोटियाँ देखता हूँ तो उनकी विशालता का अनुभव होता हैं । एक पल को अगर ये मान लिया जाए की हमारी सारी धार्मिक किताबें
|
||||||
वो कहानियाँ हैं जो पथिक लेखकों के द्वारा लिखी गयी हैं तो सारी बातें साफ हो जाती है कि क्यूँ देवी-देवताओं ने हिमालय को अपनाया है। टूटता
|
वो कहानियाँ हैं जो पथिक लेखकों के द्वारा लिखी गयी हैं तो सारी बातें साफ हो जाती है कि क्यूँ देवी-देवताओं ने हिमालय को अपनाया है। टूटता
|
||||||
@@ -21,10 +8,8 @@
|
|||||||
दैविक है। टूटते तारो के बारे में लोगों के बहुत सारे विश्वास हैं । कभी विभीषिका का पूर्वाभास माने जाने वाले इन टूटते तारे आज इच्छा पूरक के
|
दैविक है। टूटते तारो के बारे में लोगों के बहुत सारे विश्वास हैं । कभी विभीषिका का पूर्वाभास माने जाने वाले इन टूटते तारे आज इच्छा पूरक के
|
||||||
प्रतीक हैं । कुछ लोगों का ये भी मानना है कि टूटते तारे दिवंगत लोगों का संकेत हैं । हिमालय की कन्दराओं में न जाने कितने ही ऋषि-मुनियों ने
|
प्रतीक हैं । कुछ लोगों का ये भी मानना है कि टूटते तारे दिवंगत लोगों का संकेत हैं । हिमालय की कन्दराओं में न जाने कितने ही ऋषि-मुनियों ने
|
||||||
तप करते हुए अपना जीवन अर्पित कर दिया । इसलिए हिमालय की पहाड़ों से टूटता तारा देखना दैविक हैं क्योंकि शायद वो तारे उन ऋषि-मुनियों की पवित्र
|
तप करते हुए अपना जीवन अर्पित कर दिया । इसलिए हिमालय की पहाड़ों से टूटता तारा देखना दैविक हैं क्योंकि शायद वो तारे उन ऋषि-मुनियों की पवित्र
|
||||||
आत्माओं का संकेत हैं ।
|
आत्माओं का संकेत हैं ।</p>
|
||||||
|
<p>प्रकृति की सुंदरता और कलाकारी हिमालय की कण-कण में झलकती है। प्रकृति ने प्रेम को भी हिमालय के जितना ही विशाल और अलौकिक बनाया है । ये एक
|
||||||
|
|
||||||
प्रकृति की सुंदरता और कलाकारी हिमालय की कण-कण में झलकती है। प्रकृति ने प्रेम को भी हिमालय के जितना ही विशाल और अलौकिक बनाया है । ये एक
|
|
||||||
अलग चर्चा का विषय है कि हिमालय पहले आया या प्रेम। मैं तो प्रेम के पक्ष में हूँ । वो हर अणु-परमाणु जिन्होंने इतने बड़ा पहाड़ खड़ा किया वो सब
|
अलग चर्चा का विषय है कि हिमालय पहले आया या प्रेम। मैं तो प्रेम के पक्ष में हूँ । वो हर अणु-परमाणु जिन्होंने इतने बड़ा पहाड़ खड़ा किया वो सब
|
||||||
आपस में प्रेम से बंधे हुए हैं। ये पृथ्वी, सूर्य, चंद्रमा, आकाश-गंगा इत्यादि सब प्रेम से बंधे हुए हैं । और हिमाद्रि के छत पर मैं इसी प्रेम
|
आपस में प्रेम से बंधे हुए हैं। ये पृथ्वी, सूर्य, चंद्रमा, आकाश-गंगा इत्यादि सब प्रेम से बंधे हुए हैं । और हिमाद्रि के छत पर मैं इसी प्रेम
|
||||||
के आगोश में आकर भावशून्य होकर तारों को निहार रहा था । तभी मानो सदियों की मन्नत पूरी हुई और मुझे एक टूटता तारा दिखा । आप मेरी स्थिति की
|
के आगोश में आकर भावशून्य होकर तारों को निहार रहा था । तभी मानो सदियों की मन्नत पूरी हुई और मुझे एक टूटता तारा दिखा । आप मेरी स्थिति की
|
||||||
@@ -35,10 +20,8 @@
|
|||||||
क्या होता है। अब वो लोग जो ये सोच रहे की भाईसाब आप हर कहानी(सच्ची घटना का विवरण वाली कहानी 😊) में सो क्यूँ जाते हैं। सच बताऊँ तो इसका
|
क्या होता है। अब वो लोग जो ये सोच रहे की भाईसाब आप हर कहानी(सच्ची घटना का विवरण वाली कहानी 😊) में सो क्यूँ जाते हैं। सच बताऊँ तो इसका
|
||||||
कोई सटीक जबाव नहीं है मेरे पास, पर अध्यात्म ये कहता है की जब आप सो रहे होते हैं तो आपका मन चेतना के कई स्थिति से गुजरता है। जब आप परम
|
कोई सटीक जबाव नहीं है मेरे पास, पर अध्यात्म ये कहता है की जब आप सो रहे होते हैं तो आपका मन चेतना के कई स्थिति से गुजरता है। जब आप परम
|
||||||
चैतन्य अवस्था में होते हैं तो रहस्य, प्रतिभज्ञान इत्यादि के रास्ते खुल जाते हैं। और विज्ञान ये भी कहता है कि निद्रा के माध्यम से इस
|
चैतन्य अवस्था में होते हैं तो रहस्य, प्रतिभज्ञान इत्यादि के रास्ते खुल जाते हैं। और विज्ञान ये भी कहता है कि निद्रा के माध्यम से इस
|
||||||
अवस्था में जाना उतना ही अनिश्चित है जितना किसी बाला का मेरे लिए प्रेम-प्रस्ताव । सरल शब्दों में – मैं कुछ समय के लिए सो गया।
|
अवस्था में जाना उतना ही अनिश्चित है जितना किसी बाला का मेरे लिए प्रेम-प्रस्ताव । सरल शब्दों में – मैं कुछ समय के लिए सो गया।</p>
|
||||||
|
<p>आज से ठीक 2 महीने पहले अगर ये मुझसे कोई पूछता की क्या चाहिए तुम्हें तो शायद मेरे पास जबाव होता। दोस्त तो बहुत हैं पर जब कोई ऐसा हो जो
|
||||||
|
|
||||||
आज से ठीक 2 महीने पहले अगर ये मुझसे कोई पूछता की क्या चाहिए तुम्हें तो शायद मेरे पास जबाव होता। दोस्त तो बहुत हैं पर जब कोई ऐसा हो जो
|
|
||||||
आपके अधूरे वाक्य पूरे कर सके, कोई ऐसा जो आपकी भावनाओं को आपकी तरह समझ सके, कोई ऐसा जो आपको आपके असल रूप में पसंद करता हो । आपको लग रहा
|
आपके अधूरे वाक्य पूरे कर सके, कोई ऐसा जो आपकी भावनाओं को आपकी तरह समझ सके, कोई ऐसा जो आपको आपके असल रूप में पसंद करता हो । आपको लग रहा
|
||||||
होगा की मैं एक प्रेमिका का विवरण दे रहा हूँ, पर नहीं या शायद हाँ , मैं समझता हूँ की अधिकतर लोग प्रेमिका शब्द का प्रयोग अनुचित ढंग से करते
|
होगा की मैं एक प्रेमिका का विवरण दे रहा हूँ, पर नहीं या शायद हाँ , मैं समझता हूँ की अधिकतर लोग प्रेमिका शब्द का प्रयोग अनुचित ढंग से करते
|
||||||
हैं। जहां प्रेम है वहाँ प्रेमी-प्रेमिका होंगे फिर वो भाई-बहन का रिश्ता हो या माँ-बेटे का । एक पल को सोचो तो ऊपर के विवरण के लिए कोई सबसे
|
हैं। जहां प्रेम है वहाँ प्रेमी-प्रेमिका होंगे फिर वो भाई-बहन का रिश्ता हो या माँ-बेटे का । एक पल को सोचो तो ऊपर के विवरण के लिए कोई सबसे
|
||||||
@@ -50,22 +33,22 @@
|
|||||||
भी हो। मैं ये नहीं कह सकता की मेरी खोज पूर्ण हो गयी पर हाँ एक पड़ाव तो जरूर आ गया है। उस पहली मुलाक़ात में एक पल को ऐसा लगा मानो किसी
|
भी हो। मैं ये नहीं कह सकता की मेरी खोज पूर्ण हो गयी पर हाँ एक पड़ाव तो जरूर आ गया है। उस पहली मुलाक़ात में एक पल को ऐसा लगा मानो किसी
|
||||||
चमत्कारी दर्जी ने कपड़े की जगह एक पूरा आदमी सिल कर दिया हो। सब कुछ एकदम नाप के अनुरूप। शायद कई सालों के बाद मैं खुशियों का बवंडर अपने अंदर
|
चमत्कारी दर्जी ने कपड़े की जगह एक पूरा आदमी सिल कर दिया हो। सब कुछ एकदम नाप के अनुरूप। शायद कई सालों के बाद मैं खुशियों का बवंडर अपने अंदर
|
||||||
महसूस कर रहा था। आप पूछेंगे इसमें प्रेम कहाँ है? हिमालय जितना विशाल है उतना ही गहरा भी है , यहाँ भी प्रेम गहराई में है । प्रेम का होना
|
महसूस कर रहा था। आप पूछेंगे इसमें प्रेम कहाँ है? हिमालय जितना विशाल है उतना ही गहरा भी है , यहाँ भी प्रेम गहराई में है । प्रेम का होना
|
||||||
जरूरी है दिखावा तो हर कोई कर लेता है। कबीर ने अपने एक दोहे में कहा है :
|
जरूरी है दिखावा तो हर कोई कर लेता है। कबीर ने अपने एक दोहे में कहा है :</p>
|
||||||
|
<p><strong>बूंद समानी समूंद में , जानत है सब कोई; समूंद समाना बूंद में , बूझे बिरला कोई।</strong></p>
|
||||||
**बूंद समानी समूंद में , जानत है सब कोई; समूंद समाना बूंद में , बूझे बिरला कोई।**
|
<p>मैं इस दोहे को प्रेम के संदर्भ में व्याख्या करना चाहूँगा। लोग बूंद हैं और प्रेम समुद्र, लोगों को प्रेम में पड़ते सबने देखा है या सुना है,
|
||||||
|
|
||||||
मैं इस दोहे को प्रेम के संदर्भ में व्याख्या करना चाहूँगा। लोग बूंद हैं और प्रेम समुद्र, लोगों को प्रेम में पड़ते सबने देखा है या सुना है,
|
|
||||||
पर जो प्रेम लोगों के अंदर व्याप्त है ये हर कोई नहीं समझता। मैं उस विशेष व्यक्ति का कृतज्ञ हूँ जिसने ने मुझे इस दोहे के मूल भाव का अहसास
|
पर जो प्रेम लोगों के अंदर व्याप्त है ये हर कोई नहीं समझता। मैं उस विशेष व्यक्ति का कृतज्ञ हूँ जिसने ने मुझे इस दोहे के मूल भाव का अहसास
|
||||||
करवाया।
|
करवाया।</p>
|
||||||
|
<p>कभी-कभी डर लगता है, खोने का उसे। आजकल दुनिया में सब अनिश्चित है। कब-क्या हो जाए ये कोई नहीं बता सकता। पहले सिर्फ पृथ्वी थी फिर लोग हुए और
|
||||||
|
तब से पृथ्वी अस्थमा की मरीज है। किसी प्रसिद्ध कवि ने लिखा है :</p>
|
||||||
कभी-कभी डर लगता है, खोने का उसे। आजकल दुनिया में सब अनिश्चित है। कब-क्या हो जाए ये कोई नहीं बता सकता। पहले सिर्फ पृथ्वी थी फिर लोग हुए और
|
<p><strong>आज आदमी में विष इतना भर गया है, की विषधरों का वंश उनसे डर गया है,</strong>
|
||||||
तब से पृथ्वी अस्थमा की मरीज है। किसी प्रसिद्ध कवि ने लिखा है :
|
<strong>कल को कहते सुनोगे , आदमी काटा और साँप मर गया है।</strong></p>
|
||||||
|
<p>ठंडी-ठंडी हवाओं ने मेरी सारी नींद उड़ा दी। प्रकृति शायद मुझे खुश करके मारना चाहती थी। आसमान ने एक बड़े काले पर्दे का रूप ले लिया था और उस
|
||||||
**आज आदमी में विष इतना भर गया है, की विषधरों का वंश उनसे डर गया है,**
|
|
||||||
**कल को कहते सुनोगे , आदमी काटा और साँप मर गया है।**
|
|
||||||
|
|
||||||
ठंडी-ठंडी हवाओं ने मेरी सारी नींद उड़ा दी। प्रकृति शायद मुझे खुश करके मारना चाहती थी। आसमान ने एक बड़े काले पर्दे का रूप ले लिया था और उस
|
|
||||||
पर्दे पर दसियो उजले साँप रेंगते नज़र आ रहे थे। मानो दस सालो के टूटते तारे एक साथ दिख रहे हों और आसमान कह रहा हो – जो चाहिए, जितना चाहिए
|
पर्दे पर दसियो उजले साँप रेंगते नज़र आ रहे थे। मानो दस सालो के टूटते तारे एक साथ दिख रहे हों और आसमान कह रहा हो – जो चाहिए, जितना चाहिए
|
||||||
माँग लो। और मैंने सच में माँग लिए , लगभग सब कुछ । और उसको हमेशा पास रखने की दुआ तो नहीं माँग सका , पर वो जहां रहे, खुश रहे, सलामत रहे।
|
माँग लो। और मैंने सच में माँग लिए , लगभग सब कुछ । और उसको हमेशा पास रखने की दुआ तो नहीं माँग सका , पर वो जहां रहे, खुश रहे, सलामत रहे।</p>
|
||||||
|
</content><category term="article"></category><category term="love"></category><category term="article"></category><category term="hindi"></category></entry><entry><title>The Big Red Ants</title><link href="https://avinal.space/posts/article/red-big-ants.html" rel="alternate"></link><published>2012-02-27T22:47:00+05:30</published><updated>2012-02-27T22:47:00+05:30</updated><author><name>Avinal</name></author><id>tag:avinal.space,2012-02-27:/posts/article/red-big-ants.html</id><summary type="html"><p class="first last">In a bird’s eye view if we see around us, ants are the common and tiniest living entitiy seen by naked eye. One of them are the big red ants, in my view they are unique from others in two ways, first they live on trees and second their anteenas are too long and bent in middle, seems like their fore legs. Their mandible (mouth) seems like eagle’s beak.</p>
|
||||||
|
</summary><content type="html"><p style="border: 2px solid var(--cyan);border-radius: 7px;" align=center>This article was published in 3rd edition of नवांकुर , the official magazine of Simultala Awasiya Vidyalaya, Bihar, India.<p><p>In a bird’s eye view if we see around us, ants are the common and tiniest living entitiy seen by naked eye. One of them are the big red ants, in my view they are unique from others in two ways, first they live on trees and second their anteenas are too long and bent in middle, seems like their fore legs. Their mandible (mouth) seems like eagle’s beak.</p>
|
||||||
|
<p>As I observed them making and reparing their nests, I concluded that they are very laborious and intellectual. They create their nests by binding two or more leaves (maybe up to 500) together. They stich the leaves using a stinky white substance either excreted by themselves or from trees. This substance is like web of spider. At first builder ants creates an array at the blade of two leaves. Then they make ant-cranes or ant-chain like chain of monomer to form a polymer. They catch the leaves and pull each other to stich. After some time, the parliament of leaves transforms into a leaf-sac called their nest. They also weave translucent cloth like structure to cover remainings of leaf. A nest hangs by a branch of the trees.</p>
|
||||||
|
<p>A nest is skillfully divided into living rooms, barracks, storehouse, egg room and queen’s room. The eggroom, lies at the center of nest to protect from outer attack until last time. Besides that, lies queen’s room. Living rooms are sequenncly joined with eggroom. There are different rooms for workers, food searchers etc. The partition of the room resembles atom’s electron shell, one upon another. At last barracks are the outermost rooms, just like outermost orbit of electron. The defence system is strongest at the nest’s opening. A nest may size as 2-3 footballs and have 50 to 10000 ants. There may be more openings.</p>
|
||||||
|
<p>Now about their attacking and protecting skills. A solider is unique from other ants. It is equipped with many attacking and defending skills. Normally they do not attack. They are social insects. If someone attacks, all other ants go inside, and soldiers come out. They spread allover the nest. They are very sensetive and have sharp vision. If any one of them see their enemy the stand on their hind legs, swinging, their forelegs and anteens in their air as scolding someone. Their spit contains formic acid, present at the end of the abdomen below the rectum. If their nest is broken and eggs fall on ground then the ants make a dome, like the dome of Taj mahal to save the eggs till last their breadth. This shows their caring skills.</p>
|
||||||
|
<p>The most amazing is their discipline. They can easily beat a human in race of discipline. Humans must learn from it. When two ants meet, they touch their anteena to communicate. When they walk in a queue, they seem like twinkling dots and dashes. I want to conclude that <strong>All tiny things are not really tiny. It may be as a space having infinite mysteries one has to explore it.</strong></p>
|
||||||
|
</content><category term="article"></category><category term="ants"></category><category term="sav"></category></entry></feed>
|
||||||
@@ -0,0 +1,76 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<feed xmlns="http://www.w3.org/2005/Atom"><title>Be My SpaceTime - blog</title><link href="https://avinal.space/" rel="alternate"></link><link href="https://avinal.space/feeds/blog.atom.xml" rel="self"></link><id>https://avinal.space/</id><updated>2021-01-04T21:47:00+05:30</updated><subtitle>눈치</subtitle><entry><title>HRT Systems Internship Interview Experience</title><link href="https://avinal.space/posts/blog/hrt-interview-1.html" rel="alternate"></link><published>2021-01-04T21:47:00+05:30</published><updated>2021-01-04T21:47:00+05:30</updated><author><name>Avinal</name></author><id>tag:avinal.space,2021-01-04:/posts/blog/hrt-interview-1.html</id><summary type="html"><p class="first last">I applied for <strong>Systems Internship - Summer 2021</strong> back in December 2020 at <a class="reference external" href="https://www.hudsonrivertrading.com">Hudson River Trading</a> , New York.....Questions were clear and of medium level. But they were designed in such a way that you must know the basics before you could attempt.</p>
|
||||||
|
</summary><content type="html"><p>I applied for <strong>Systems Internship - Summer 2021</strong> back in December 2020 at <a class="reference external" href="https://www.hudsonrivertrading.com">Hudson River Trading</a> , New York. The internship description was: -</p>
|
||||||
|
<blockquote class="epigraph">
|
||||||
|
<p>We are looking for highly motivated students who are eager to learn and excited about systems to join us for our summer internship
|
||||||
|
program. As a systems intern, you may have the opportunity to work on projects in the following areas:</p>
|
||||||
|
<ul class="simple">
|
||||||
|
<li>Programming/scripting (Golang, Python, C++, C)</li>
|
||||||
|
<li>FOSS development</li>
|
||||||
|
<li>HPC, Cluster computing</li>
|
||||||
|
<li>System Administration</li>
|
||||||
|
<li>Linux, Debian</li>
|
||||||
|
<li>Linux-based computer security</li>
|
||||||
|
<li>Data Storage</li>
|
||||||
|
<li>Large deployment or config management</li>
|
||||||
|
</ul>
|
||||||
|
</blockquote>
|
||||||
|
<p>The first step was a coding test on the Codility platform. If you have used any of the online coding platforms, this is similar. It was a <abbr title="90 mins">2.5 hrs</abbr> test consisting of 3 questions. They let you use <abbr title="documentation, man pages, etc.">online references</abbr> but
|
||||||
|
<strong>do not copy the code</strong> as it will highly reduce your chances of qualifying for this first stage. You can choose between <strong>C/C++</strong>,
|
||||||
|
<strong>Python</strong> and <strong>Golang</strong> (no Java 😪).</p>
|
||||||
|
<p>Questions were clear and of medium level. But they were designed in such a way that you must know the basics before you could attempt.
|
||||||
|
Also, they expected a clear and concise approach. Two of the most important points in their instructions were: -</p>
|
||||||
|
<blockquote class="epigraph">
|
||||||
|
<ul class="simple">
|
||||||
|
<li>While correctness and performance are the most important factors for evaluation, we will take test duration into account as well.</li>
|
||||||
|
<li>Please understand that this test is meant to be challenging. A perfect score is not necessary to move on to future interview rounds, so do the best you can!</li>
|
||||||
|
</ul>
|
||||||
|
</blockquote>
|
||||||
|
<p>So, you must be near perfect in your approach as well as on time. I did them kind of quickly. They will show you a summary of your
|
||||||
|
submission but not the results. It will take almost 2 weeks to get back to you for further steps.</p>
|
||||||
|
<p>Next, I received a mail invitation for a telephonic interview. <strong>This interview will last about 45 minutes and will be technical but will not require coding. Interview topics may include your background, programming languages, and Unix/Linux concepts</strong>. Once you receive this
|
||||||
|
mail you can then decide a time slot for an interview.</p>
|
||||||
|
<p>I was not sure what they will ask if this is not a coding interview. The interviewer was very polite, and he was explaining the questions
|
||||||
|
too. Questions were not so tricky but practical and real-life. Since it was <strong>not for SDE role</strong>, the questions were mostly related to
|
||||||
|
Linux/Unix, C++ (mainly pointers and memory), Python/Bash scripting, automation, knowledge of tools (IDEs, Editors, System Administration
|
||||||
|
Tools) and previous experiences. The interview would often explain why he is asking this question, this was very nice. Then some common
|
||||||
|
interview questions, why do you want to work for this role? What makes you fit for this role? etc.</p>
|
||||||
|
<p>One thing that I want to point out is that the interviewer was repeatedly checking my resume, and for the most part he did not ask
|
||||||
|
anything that was not on my resume. So, my tip is to create a nice resume with genuine work/tool experiences. And when you are applying
|
||||||
|
for such a role, it would be helpful if you mention mathematics or other courses that you have taken. <em>Do not lie on your resume</em>. They
|
||||||
|
will easily catch that.</p>
|
||||||
|
<p>The other thing is to keep your words short and clear; I was not great at communication, but you can be. If the interviewer allows then
|
||||||
|
use examples for the things you cannot explain. I used nice examples. At last, he gave me short feedback on how well I performed.</p>
|
||||||
|
<p>At last, I want to point out things I should not have done. The first is, I did not ask much about the role, you must do this at least
|
||||||
|
once. Second, I am talkative, I do not know if the interviewer was not faking his expressions (because he would often discuss in-depth),
|
||||||
|
but not all interviewers will be the same. So, do not talk too much, nor too less. At last work on your communication skill, mostly how
|
||||||
|
you to present things and how to answer technical as well as behavioral questions. I was not fluent, but my way of presentation might
|
||||||
|
have saved me.</p>
|
||||||
|
</content><category term="blog"></category><category term="HRT"></category><category term="hudsonrivertrading"></category><category term="interview"></category><category term="internship"></category></entry><entry><title>The Interstellar Twilight</title><link href="https://avinal.space/posts/blog/this-is-for-you.html" rel="alternate"></link><published>2020-09-28T22:47:00+05:30</published><updated>2020-09-28T22:47:00+05:30</updated><author><name>Avinal</name></author><id>tag:avinal.space,2020-09-28:/posts/blog/this-is-for-you.html</id><summary type="html"><p class="first last">If in the Twilight of dreams we should meet once more, we shell talk again together and I shall sing to you a lullaby till you sleep again to meet me in the Twilight of another dream.</p>
|
||||||
|
</summary><content type="html"><p>Yeah, it was a dream someday. I never imagined you. But I do remember glimpses of a wonderful person
|
||||||
|
in my deep slumber. When I go back to last year about the same time, I find myself a manic who gets
|
||||||
|
carried away with every emotion. Becoming too happy about something and then becoming too sad was so
|
||||||
|
common that I never noticed what I was risking.</p>
|
||||||
|
<p><strong>&quot;If in the Twilight of dreams we should meet once more, we shell talk again together and I shall sing to you a lullaby till you sleep again to meet me in the Twilight of another dream.&quot;</strong></p>
|
||||||
|
<p>But 1 year ago many things changed. A never seen dream came true. To be honest I was skeptical if all
|
||||||
|
this happening to me was true. Even until last December. Gradually things started falling into places.
|
||||||
|
And for the most part, the reality became more real. I can now easily see what is happening and why it
|
||||||
|
happened. Everything was so nice until we had a fight. Then another, and now it was every other day
|
||||||
|
story. It was a really hard time collecting everything together and act as nothing happened after every
|
||||||
|
single of those. Everything was plunging. I started imagining the end of something that I did not
|
||||||
|
imagine to happen in the first place.</p>
|
||||||
|
<p>But during all those times, there was a continual intuition that maybe there is something that we both
|
||||||
|
are missing. And that was maybe the root of all chaos. I never came to know that what it was neither did
|
||||||
|
you. But I do realize many mistakes I have been doing since we met.</p>
|
||||||
|
<p>I want to thank you for not losing hope in me. We both always tried to reduce tension as much as we could.
|
||||||
|
And thank you for many other ineffable things happened because of you.</p>
|
||||||
|
<p>As of now I can see things making sense. Every message, every talk now seems to make sense. I am more
|
||||||
|
deeply into this friendship if I was not ever before. The ecstasy of having you is other-worldly. I don't
|
||||||
|
know if I could ever adore a person this much but I adore this ravishing friendship. Only you or only
|
||||||
|
this friendship may mean nothing to me. But I am delighted to say that I have both and I have you.</p>
|
||||||
|
<p>Now, what is all with The Interstellar Twilight. Why this name ? Let me explain it for you. <strong>Interstellar</strong>
|
||||||
|
means between stars and <strong>Twilight</strong> means the soft glow when the sun is below the horizon.
|
||||||
|
<strong>The Interstellar Twilight</strong> means the glow between the stars or simply glow of a cluster of stars. A
|
||||||
|
single star shines but the glow is too low to be noticed against its brightness. But a lot stars together
|
||||||
|
gets a glow. So my friend we are such two stars and our friendship is that glow.</p>
|
||||||
|
</content><category term="blog"></category><category term="interstellar"></category><category term="twilight"></category></entry></feed>
|
||||||
@@ -0,0 +1,783 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<feed xmlns="http://www.w3.org/2005/Atom"><title>Be My SpaceTime - development</title><link href="https://avinal.space/" rel="alternate"></link><link href="https://avinal.space/feeds/development.atom.xml" rel="self"></link><id>https://avinal.space/</id><updated>2022-03-07T22:47:00+05:30</updated><subtitle>눈치</subtitle><entry><title>Developing Minimal Tekton Server</title><link href="https://avinal.space/posts/development/lovely-dangerous-things-redhat.html" rel="alternate"></link><published>2022-02-27T20:47:00+05:30</published><updated>2022-03-07T22:47:00+05:30</updated><author><name>Avinal</name></author><id>tag:avinal.space,2022-02-27:/posts/development/lovely-dangerous-things-redhat.html</id><summary type="html"><p class="first last">We will be designing and implementing an application that will be talking to Tekton APIs to create resources on a Kubernetes/OpenShift Cluster.</p>
|
||||||
|
</summary><content type="html"><p style="border: 2px solid var(--pink);border-radius: 7px;" align=center>This blog is a descreptive account of the development of Minimal Tekton Server. This is highly technical in nature, so please make sure that you have sufficient knowledge about Golang, Docker, Kubernetes and TektonCD. You can refer to my <a href="https://avinal.space/posts/development/i-am-loving-it-redhat.html">previous blog</a> to know about these topics.<p><p>As mentioned in my last blog, we were given to implement an application named <strong>Minimal Tekton Server</strong>. The problem statement reads:</p>
|
||||||
|
<blockquote class="epigraph">
|
||||||
|
We will be designing and implementing an application that will be talking to Tekton APIs to create resources on a Kubernetes/OpenShift Cluster. The application will expose some fields of the Tekton Resources which the user will provide and then this application will create Tekton resources by talking to Tekton APIs available on the cluster to create the resources based on the user-provided fields.</blockquote>
|
||||||
|
<p>There are three parts in this project for the application and two more parts for the CI/CD using TektonCD and Kubernetes/OpenShift. I will go through each part descriptively and try to explain what we did.</p>
|
||||||
|
<div class="section" id="the-architecture-of-mks">
|
||||||
|
<h2>The Architecture of MKS</h2>
|
||||||
|
<p>The first task in the development of the Minimal Tekton Server was creating its architectural diagram. Our first diagram was trash compared to the final diagram. Yeah, we learned. I will be explaining our final(obviously) architectural diagram and try to make some sense out of band-aids and duct tapes.</p>
|
||||||
|
<img alt="The MKS Arhitecture" class="img-fluid my-3" src="/images/mks-architecture.png" />
|
||||||
|
<p>Let me start with explaining <strong>What are MKS Resources?</strong>. I hope you know at least tidbits about Kubernetes and by the definition: <em>A resource is an endpoint in the Kubernetes API that stores a collection of API objects of a certain kind; for example, the built-in :code:`pods` resource contains a collection of Pod objects.</em> But developers soon realized that these in-built resources were not enough for the ever-growing applications of Kubernetes. Here <a class="reference external" href="https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/">custom resource</a> comes into the picture. <em>A custom resource is an extension of the Kubernetes API that is not necessarily available in a default Kubernetes installation.</em> To define a custom resource we use something called <a class="reference external" href="https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/">Custom Resource Definition</a>. So MKS Resources are such custom resources that correspond to the TektonCD custom resources.</p>
|
||||||
|
<img alt="A venus flytrap engulphing an insect." class="float-md-right ml-3" src="/images/venus-flytrap.gif" style="width: 250px;" />
|
||||||
|
<p>Let us now focus on the box containing <code>Controller</code> and <code>API server</code>. The controller can be said as a stimulus-response mechanism. Take the analogy of a Venus Flytrap plant. The trap is initially open. There are <code>trigger</code> hairs on the inside of the trap. Once an insect is detected, there is a change of state and the trap closes in a blick on the eye. The controller works the same way. It listens for the change in the state of the MKS resources and immediately transfers the request to the Tekton API to reflect the change in the corresponding Tekton resources. The changes can be creation, deletion, or updating. The API server ensures that there is a working connection between our controller and the Tekton API.</p>
|
||||||
|
<p>MKS Server also exposes APIs to introduce a change of state in the MKS resources. In technical terms these are called <code>verbs</code>. There are five such verbs that we have exposed: <code>create</code>, <code>update</code>, <code>get</code>, <code>delete</code>, and <code>list</code>. They can be utilized by a REST client, or in our case <strong>MKS CLI</strong> to introduce desired change. The MKS command-line interface provides commands and subcommands to do the desired tasks.</p>
|
||||||
|
<p>Whenever there is a change in the state, there is a logic running inside the controller to react on that and that also affects our database. We store four datapoints in our database: <code>created</code>, <code>deleted</code>, <code>completed</code>, and <code>failed</code>. They tell us about the current statistcs of our MKS resource using a single-page web app called <strong>MKS Dashboard</strong> (or UI).</p>
|
||||||
|
<p>This was about the architecture of the Minimal Tekton Server. Let us jump into more technical stuff.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="how-to-implement-a-crd-controller">
|
||||||
|
<h2>How to implement a CRD controller?</h2>
|
||||||
|
<p>During this assignment, something that took the most time and effort was the implementation of a controller for our custom resources. This isn't very hard if you go by the rules and do the things according to the well-defined documents and blogs since this is a standard step in the implementation of any custom resource controller. But did we follow the rules? Hell no! But this time, let us go step-by-step.</p>
|
||||||
|
<ol class="arabic simple">
|
||||||
|
<li>The first step is to define a <code>CustomResourceDefinition</code> for our custom resource. Let us define a CRD called <code>spacetime</code>. To do this you can write a YAML file like below.</li>
|
||||||
|
</ol>
|
||||||
|
<div class="highlight"><pre><span></span><span class="c1"># file: spacetime-crd.yaml</span><span class="w"></span>
|
||||||
|
<span class="nt">apiVersion</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">apiextensions.k8s.io/v1</span><span class="w"></span>
|
||||||
|
<span class="nt">kind</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">CustomResourceDefinition</span><span class="w"></span>
|
||||||
|
<span class="nt">metadata</span><span class="p">:</span><span class="w"></span>
|
||||||
|
<span class="c1"># name must match the spec fields below, and be in the form: &lt;plural&gt;.&lt;group&gt;</span><span class="w"></span>
|
||||||
|
<span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">spacetimes.example.com</span><span class="w"></span>
|
||||||
|
<span class="nt">spec</span><span class="p">:</span><span class="w"></span>
|
||||||
|
<span class="c1"># group name to use for REST API: /apis/&lt;group&gt;/&lt;version&gt;</span><span class="w"></span>
|
||||||
|
<span class="nt">group</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">example.com</span><span class="w"></span>
|
||||||
|
<span class="c1"># list of versions supported by this CustomResourceDefinition</span><span class="w"></span>
|
||||||
|
<span class="nt">versions</span><span class="p">:</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">v1alpha1</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="c1"># Each version can be enabled/disabled by Served flag.</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">served</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">true</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="c1"># One and only one version must be marked as the storage version.</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">storage</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">true</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">schema</span><span class="p">:</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">openAPIV3Schema</span><span class="p">:</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">object</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">properties</span><span class="p">:</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">spec</span><span class="p">:</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">object</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">properties</span><span class="p">:</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">message</span><span class="p">:</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">string</span><span class="w"></span>
|
||||||
|
<span class="c1"># either Namespaced or Cluster</span><span class="w"></span>
|
||||||
|
<span class="nt">scope</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Namespaced</span><span class="w"></span>
|
||||||
|
<span class="nt">names</span><span class="p">:</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="c1"># plural name to be used in the URL: /apis/&lt;group&gt;/&lt;version&gt;/&lt;plural&gt;</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">plural</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">spacetimes</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="c1"># singular name to be used as an alias on the CLI and for display</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">singular</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">spacetime</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="c1"># kind is normally the CamelCased singular type. Your resource manifests use this.</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">kind</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">SpaceTime</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="c1"># shortNames allow shorter string to match your resource on the CLI</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">shortNames</span><span class="p">:</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">st</span><span class="w"></span>
|
||||||
|
</pre></div>
|
||||||
|
<p>You can learn more about the fields and options <a class="reference external" href="https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/">here</a>. The CRD that we defined above corresponds to the <code>CustomResource</code> given below. Once you apply the above file you will be able to see the <code>spacetime</code> custom resource on your Kubernetes/OpenShift cluster.</p>
|
||||||
|
<div class="highlight"><pre><span></span><span class="c1"># file: spacetime-cr.yaml</span><span class="w"></span>
|
||||||
|
<span class="nt">apiVersion</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">spacetimes.example.com/v1alpha1</span><span class="w"></span>
|
||||||
|
<span class="nt">kind</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">SpaceTime</span><span class="w"></span>
|
||||||
|
<span class="nt">metadata</span><span class="p">:</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">spacetime-cr</span><span class="w"></span>
|
||||||
|
<span class="nt">spec</span><span class="p">:</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">message</span><span class="p">:</span><span class="w"> </span><span class="s">&quot;Hello</span><span class="nv"> </span><span class="s">from</span><span class="nv"> </span><span class="s">space!&quot;</span><span class="w"></span>
|
||||||
|
</pre></div>
|
||||||
|
<p>Apply them using the following commands:</p>
|
||||||
|
<div class="highlight"><pre><span></span>kubectl apply -f spacetime-crd.yaml
|
||||||
|
kubectl apply -f spacetime-cr.yaml
|
||||||
|
</pre></div>
|
||||||
|
<ol class="arabic simple" start="2">
|
||||||
|
<li>Once we have defined our custom resources, we need to define the types that will correspond to this custom resource definition. This can be done using <code>k8s.io/apimachinery/pkg/apis/meta/v1</code> package written in golang. Did I tell you that this is all in golang? Well, now you know. Create a package structure for a golang project and add the definition of the type as given below.</li>
|
||||||
|
</ol>
|
||||||
|
<div class="highlight"><pre><span></span>mkdir -p pkg/api/spacetime/v1alpha1
|
||||||
|
touch pkg/api/spacetime/v1alpha1/<span class="o">{</span>spacetime_types,register,doc<span class="o">}</span>.go pkg/api/spacetime/register.go
|
||||||
|
</pre></div>
|
||||||
|
<p>Add the following content to the corresponding files.</p>
|
||||||
|
<div class="highlight"><pre><span></span><span class="c1">// file: /pkg/api/spacetime/v1alpha1/spacetime_types.go</span><span class="w"></span>
|
||||||
|
<span class="kn">package</span><span class="w"> </span><span class="nx">v1alpha1</span><span class="w"></span>
|
||||||
|
|
||||||
|
<span class="kn">import</span><span class="w"> </span><span class="p">(</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nx">metav1</span><span class="w"> </span><span class="s">&quot;k8s.io/apimachinery/pkg/apis/meta/v1&quot;</span><span class="w"></span>
|
||||||
|
<span class="p">)</span><span class="w"></span>
|
||||||
|
|
||||||
|
<span class="kd">type</span><span class="w"> </span><span class="nx">SpaceTime</span><span class="w"> </span><span class="kd">struct</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nx">metav1</span><span class="p">.</span><span class="nx">TypeMeta</span><span class="w"> </span><span class="s">`json:&quot;,inline&quot;`</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nx">metav1</span><span class="p">.</span><span class="nx">ObjectMeta</span><span class="w"> </span><span class="s">`json:&quot;metadata,omitempty&quot;`</span><span class="w"></span>
|
||||||
|
|
||||||
|
<span class="w"> </span><span class="nx">Spec</span><span class="w"> </span><span class="nx">SpaceTimeSpec</span><span class="w"> </span><span class="s">`json:&quot;spec&quot;`</span><span class="w"></span>
|
||||||
|
<span class="p">}</span><span class="w"></span>
|
||||||
|
|
||||||
|
<span class="kd">type</span><span class="w"> </span><span class="nx">SpaceTimeSpec</span><span class="w"> </span><span class="kd">struct</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nx">Message</span><span class="w"> </span><span class="kt">string</span><span class="w"> </span><span class="s">`json:&quot;message&quot;`</span><span class="w"></span>
|
||||||
|
<span class="p">}</span><span class="w"></span>
|
||||||
|
|
||||||
|
<span class="kd">type</span><span class="w"> </span><span class="nx">SpaceTimeList</span><span class="w"> </span><span class="kd">struct</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nx">metav1</span><span class="p">.</span><span class="nx">TypeMeta</span><span class="w"> </span><span class="s">`json:&quot;,inline&quot;`</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nx">metav1</span><span class="p">.</span><span class="nx">ListMeta</span><span class="w"> </span><span class="s">`json:&quot;metadata&quot;`</span><span class="w"></span>
|
||||||
|
|
||||||
|
<span class="w"> </span><span class="nx">Items</span><span class="w"> </span><span class="p">[]</span><span class="nx">SpaceTime</span><span class="w"> </span><span class="s">`json:&quot;items&quot;`</span><span class="w"></span>
|
||||||
|
<span class="p">}</span><span class="w"></span>
|
||||||
|
</pre></div>
|
||||||
|
<p><strong>To be Continued</strong></p>
|
||||||
|
</div>
|
||||||
|
</content><category term="development"></category><category term="kubernetes"></category><category term="redhat"></category><category term="docker"></category><category term="golang"></category><category term="tekton"></category><category term="openshift"></category><category term="intern"></category></entry><entry><title>My internship at Red Hat</title><link href="https://avinal.space/posts/development/i-am-loving-it-redhat.html" rel="alternate"></link><published>2022-02-25T20:47:00+05:30</published><updated>2022-02-25T20:47:00+05:30</updated><author><name>Avinal</name></author><id>tag:avinal.space,2022-02-25:/posts/development/i-am-loving-it-redhat.html</id><summary type="html"><p class="first last">I made it to the Red Hat as a DevTools intern. This post is about onboarding and how I prepared myself for working on the actual project.</p>
|
||||||
|
</summary><content type="html"><p>I have been contributing to open source for the last 3 years and Red Hat was one of the companies that I was very fond of. I must say all my contributions and consistency paid off, and I made it to the Red Hat as a DevTools intern. This post is about onboarding and how I prepared myself for working on the actual project.</p>
|
||||||
|
<p>On the first day of my internship, I met two amazing teammates <a class="reference external" href="https://github.com/">Saytam</a> and <a class="reference external" href="https://github.com/">Utkarsh</a>. We were also introduced to a Senior Software Engineer <a class="reference external" href="https://github.com">Piyush Garg</a> who later mentored us. The initial few meetings were more on the introduction and what to learn topics. Before I jump into more details let me explain first what does a <strong>DevTools Developer/Engineer</strong> do?</p>
|
||||||
|
<div class="section" id="what-does-a-devtools-developer-engineer-do">
|
||||||
|
<h2>What does a DevTools Developer/Engineer do?</h2>
|
||||||
|
<p>From <a class="reference external" href="https://developer.mozilla.org/en-US/docs/Glossary/Developer_Tools">MDN Web Docs</a> <strong>Developer tools (or &quot;development tools&quot; or short &quot;DevTools&quot;) are programs that allow a developer to create, test, and debug software.</strong> At RedHat, a lot of open source developer tools of industry standards are developed. There are many, OpenShift, Tekton, CodeReady containers, and many more.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="learning-on-the-golang-logo">
|
||||||
|
<h2>Learning on the <img alt="golang_logo" class="align-top" src="/images/golang.png" style="width: 2.5em;" /></h2>
|
||||||
|
<p>There was a lot of learning and still a lot to learn. In a meeting with my manager Pradeepto Bhattacharya, I was told that I will be working on TektonCD or OpenShift Pipelines, and both of them require a sound knowledge of Golang, CI/CD, Containers, Docker, and Kubernetes. I was familiar with CI/CD, containers, and Docker but never used Golang and Kubernetes. We were provided plenty of good resources and my teammates also helped with many awesome resources. I am listing all the resources with their category.</p>
|
||||||
|
<div class="section" id="golang-1">
|
||||||
|
<h3><a class="reference external" href="https://go.dev/">Golang</a></h3>
|
||||||
|
<img alt="Gopher on the ladder" class="float-md-right rounded ml-3" src="/images/goladder.png" style="height: 20em;" />
|
||||||
|
<p>One of Golang’s biggest advantages is that it offers the clarity and ease of use that other languages lack. Golang’s advantages make it easy for new programmers to quickly understand the language and for seasoned veterans to easily read each other’s code.</p>
|
||||||
|
<ul class="simple">
|
||||||
|
<li><a class="reference external" href="https://go.dev/doc/">Official Go Documentation</a> - <em>Start from here</em></li>
|
||||||
|
<li><a class="reference external" href="https://gobyexample.com/">Go by Example</a> - <em>bite-size examples for most of the golang features</em></li>
|
||||||
|
<li><a class="reference external" href="https://golangbot.com/learn-golang-series/">Golang tutorial series - GOLANGBOT.COM</a> - <em>in-depth tutorial of golang</em></li>
|
||||||
|
<li><a class="reference external" href="https://go.dev/doc/effective_go">Effective Go</a> - <em>writing good golang programs</em></li>
|
||||||
|
<li><a class="reference external" href="https://go.dev/play/">The Go Playground</a> - <em>official online golang ide</em></li>
|
||||||
|
<li><a class="reference external" href="https://www.gopl.io/">The Go Programming Language - Book</a> <em>for learning advanced level golang</em></li>
|
||||||
|
<li><a class="reference external" href="https://youtu.be/yyUHQIec83I">Golang Tutorial for Beginners | Full Go Course - TechWorld with Nana</a> <em>if you prefer video tutorials, I don't :)</em></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="docker-1">
|
||||||
|
<h3><a class="reference external" href="https://www.docker.com/">Docker</a></h3>
|
||||||
|
<p>Docker takes away repetitive, mundane configuration tasks and is used throughout the development lifecycle for fast, easy, and portable application development - desktop and cloud. Docker’s comprehensive end-to-end platform includes UIs, CLIs, APIs, and security that are engineered to work together across the entire application delivery lifecycle.</p>
|
||||||
|
<img alt="The Docker Architecture" class="float-md-right img-fluid my-3" src="/images/docker-architecture.png" />
|
||||||
|
<ul class="simple">
|
||||||
|
<li><a class="reference external" href="https://www.katacoda.com/courses/docker">Docker and Containers - Katacoda</a> <em>interactive lessons on docker and containers</em></li>
|
||||||
|
<li><a class="reference external" href="https://docker-curriculum.com/">Docker for beginners</a></li>
|
||||||
|
<li><a class="reference external" href="https://youtu.be/3c-iBn73dDE">Docker Tutorial for Beginners | TechWorld with Nana</a> <em>video tutorial</em></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="kubernetes-1">
|
||||||
|
<h3><a class="reference external" href="https://kubernetes.io/">Kubernetes</a></h3>
|
||||||
|
<img alt="Kubernetes tech" class="float-md-left border mr-3" src="/images/kubernetes-meme.png" style="width: 200px;" />
|
||||||
|
<p><strong>Kubernetes</strong> is the Greek word for a ship’s captain. We get the words Cybernetic and Gubernatorial from it. The Kubernetes project focuses on building a robust platform for running thousands of containers in production.</p>
|
||||||
|
<ul class="simple">
|
||||||
|
<li><a class="reference external" href="https://www.katacoda.com/courses/kubernetes">Learn Kubernetes - Katacoda</a> <em>interactive lessons with kubernetes</em></li>
|
||||||
|
<li><a class="reference external" href="https://kubebyexample.com/">kube by example</a> <em>learn by doing</em></li>
|
||||||
|
<li><a class="reference external" href="https://youtu.be/X48VuDVv0do">Kubernetes Tutorial for Beginners</a> <em>video tutorial</em></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="not-so-minimal-tekton-server">
|
||||||
|
<h2><em>Not so Minimal</em> Tekton Server</h2>
|
||||||
|
<p>In late January, we were asked to implement our learnings and deep dive into Kubernetes and TektonCD through an assignment project. Soon we realized that whatever we were learning so far was not even close to what we were going to implement. We were given a document containing the requirements of the applications we were supposed to create along with all the documentation and architectural diagrams.</p>
|
||||||
|
<p>The application was called <strong>Minimal Tekton Server</strong>. It is a set of three different applications, i.e a server, a CLI, and a dashboard. In short, this application is supposed to <em>listen to custom resources being created and then transfer the request to Tekton API to create the corresponding resource on the OpenShift/Kubernetes cluster.</em></p>
|
||||||
|
<p>So are you interested in how it went? Please follow up with my <a class="reference external" href="https://avinal.space/posts/development/lovely-dangerous-things-redhat.html">next blog</a>.</p>
|
||||||
|
</div>
|
||||||
|
</content><category term="development"></category><category term="kubernetes"></category><category term="redhat"></category><category term="docker"></category><category term="golang"></category><category term="tekton"></category><category term="openshift"></category><category term="intern"></category></entry><entry><title>reStructuredText in GitHub</title><link href="https://avinal.space/posts/development/rst-guide.html" rel="alternate"></link><published>2021-02-14T22:47:00+05:30</published><updated>2021-02-14T22:47:00+05:30</updated><author><name>Avinal</name></author><id>tag:avinal.space,2021-02-14:/posts/development/rst-guide.html</id><summary type="html"><p class="first last">reStructuredText syntax</p>
|
||||||
|
</summary><content type="html"><ul>
|
||||||
|
<li><p class="first">Headers</p>
|
||||||
|
<div class="highlight"><pre><span></span><span class="gh">Top Title</span>
|
||||||
|
<span class="gh">=========</span>
|
||||||
|
|
||||||
|
<span class="gh">Sub Title</span>
|
||||||
|
<span class="gh">---------</span>
|
||||||
|
|
||||||
|
<span class="gh">Sub Sub Title</span>
|
||||||
|
<span class="gh">^^^^^^^^^^^^^</span>
|
||||||
|
</pre></div>
|
||||||
|
</li>
|
||||||
|
<li><p class="first">Images</p>
|
||||||
|
<ul>
|
||||||
|
<li><p class="first">Direct</p>
|
||||||
|
<div class="highlight"><pre><span></span><span class="p">..</span> <span class="ow">figure</span><span class="p">::</span> image-path-or-url
|
||||||
|
<span class="nc">:align:</span> center
|
||||||
|
<span class="nc">:target:</span> link-to-go-when-image-is-clicked
|
||||||
|
<span class="nc">:alt:</span> alternative-text-if-any
|
||||||
|
</pre></div>
|
||||||
|
</li>
|
||||||
|
<li><p class="first">Indirect</p>
|
||||||
|
<div class="highlight"><pre><span></span><span class="p">..</span> <span class="nt">|substitution|</span> <span class="ow">image</span><span class="p">::</span> image-path-or-url
|
||||||
|
<span class="nc">:target:</span> link-to-go-when-image-is-clicked
|
||||||
|
</pre></div>
|
||||||
|
<p>You can use <code>|substitution|</code> where you want to put your image.</p>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li><p class="first">Links</p>
|
||||||
|
<div class="highlight"><pre><span></span><span class="s">`Link Text </span><span class="si">&lt;link-itself&gt;</span><span class="s">`__</span>
|
||||||
|
</pre></div>
|
||||||
|
</li>
|
||||||
|
<li><p class="first">Lists</p>
|
||||||
|
<div class="highlight"><pre><span></span><span class="m">-</span> item 1
|
||||||
|
<span class="m">-</span> item 2
|
||||||
|
|
||||||
|
<span class="m">*</span> item 1
|
||||||
|
<span class="m">*</span> itme 2
|
||||||
|
|
||||||
|
<span class="m">#.</span> item 1
|
||||||
|
<span class="m">#.</span> item 2
|
||||||
|
|
||||||
|
<span class="m">1.</span> item 1
|
||||||
|
<span class="m">2.</span> item 2
|
||||||
|
</pre></div>
|
||||||
|
<p>First two lists are unordered next two are ordered.</p>
|
||||||
|
</li>
|
||||||
|
<li><p class="first">Code</p>
|
||||||
|
<ul>
|
||||||
|
<li><p class="first">Inline</p>
|
||||||
|
<div class="highlight"><pre><span></span><span class="na">:code:</span><span class="nv">`your-code`</span>
|
||||||
|
</pre></div>
|
||||||
|
</li>
|
||||||
|
<li><p class="first">Code block</p>
|
||||||
|
<div class="highlight"><pre><span></span><span class="p">..</span> <span class="ow">code-block</span><span class="p">::</span> <span class="k">language(optional)</span>
|
||||||
|
|
||||||
|
<span class="s"> Your code</span>
|
||||||
|
<span class="s"> in multiple lines. You may enable line numbers too.</span>
|
||||||
|
</pre></div>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li><p class="first">Tables</p>
|
||||||
|
<div class="highlight"><pre><span></span>+----------------+----------------+
|
||||||
|
<span class="o">|</span> Header Cell | Header Cell |
|
||||||
|
+================+================+
|
||||||
|
<span class="o">|</span> Data cell | Data Cell |
|
||||||
|
+----------------+----------------+
|
||||||
|
<span class="o">|</span> Header Cell | Header Cell |
|
||||||
|
+----------------+----------------+
|
||||||
|
</pre></div>
|
||||||
|
</li>
|
||||||
|
<li><p class="first">Raw HTML block</p>
|
||||||
|
<div class="highlight"><pre><span></span><span class="p">..</span> <span class="ow">raw</span><span class="p">::</span> html
|
||||||
|
|
||||||
|
&lt;put&gt;
|
||||||
|
your html code here
|
||||||
|
&lt;/put&gt;
|
||||||
|
</pre></div>
|
||||||
|
</li>
|
||||||
|
<li><p class="first">Notes, warnings</p>
|
||||||
|
<div class="highlight"><pre><span></span><span class="p">..</span> <span class="ow">note</span><span class="p">::</span>
|
||||||
|
|
||||||
|
Put your note here.
|
||||||
|
|
||||||
|
<span class="p">..</span> <span class="ow">warning</span><span class="p">::</span>
|
||||||
|
|
||||||
|
Put your warning here.
|
||||||
|
|
||||||
|
<span class="p">..</span> <span class="ow">important</span><span class="p">::</span>
|
||||||
|
|
||||||
|
Put instructions here.
|
||||||
|
|
||||||
|
<span class="p">..</span> <span class="ow">admonition</span><span class="p">::</span> custom-text
|
||||||
|
|
||||||
|
Custom description here.
|
||||||
|
</pre></div>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<p>These all are supported by GitHub very well. For more exhautive list specific to Sphinx see <a class="reference external" href="https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html">this</a> link.</p>
|
||||||
|
<div class="section" id="tips">
|
||||||
|
<h2>Tips</h2>
|
||||||
|
<ul class="simple">
|
||||||
|
<li>There must be a blank line before and after any directive. Such as after title or code block, tables etc.</li>
|
||||||
|
<li>The options and content of a directives must be 1 tab indented to the directives.</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</content><category term="development"></category><category term="rst"></category><category term="github"></category></entry><entry><title>How I implemented WakaTime embeddable Coding Graph GHA?</title><link href="https://avinal.space/posts/development/wakatime-readme.html" rel="alternate"></link><published>2021-02-02T21:47:00+05:30</published><updated>2021-02-02T21:47:00+05:30</updated><author><name>Avinal</name></author><id>tag:avinal.space,2021-02-02:/posts/development/wakatime-readme.html</id><summary type="html"><p class="first last">f you use WakaTime to track your coding activity. You can add that to your README as a bar graph or embed it in your blog/portfolio. Just add this action to any of your repositories and there you have it.</p>
|
||||||
|
</summary><content type="html"><a href="https://github.com/avinal/Profile-Readme-WakaTime"><img src="https://raw.githubusercontent.com/avinal/Profile-Readme-WakaTime/b281d074ee75f9626b39d10e2e518c6a297208a3/waka.png" class="img-fluid"></a><div class="section" id="implementation-details">
|
||||||
|
<h2>Implementation Details</h2>
|
||||||
|
<p>This GitHub Action is divided into three parts. I didn't want to use Docker but it seems it doesn't work well without it. Let dive a little into technical details. Three parts are as below.</p>
|
||||||
|
<ol class="arabic simple">
|
||||||
|
<li><a class="reference external" href="https://github.com/avinal/Profile-Readme-WakaTime/blob/master/main.py">main.py</a> python script. This script contains many procedures.</li>
|
||||||
|
</ol>
|
||||||
|
<ul>
|
||||||
|
<li><p class="first"><a class="reference external" href="https://github.com/avinal/Profile-Readme-WakaTime/blob/master/main.py#L52">Getting JSON data file via WakaTime API</a></p>
|
||||||
|
<blockquote>
|
||||||
|
<div class="highlight"><pre><span></span><span class="k">def</span> <span class="nf">get_stats</span><span class="p">()</span> <span class="o">-&gt;</span> <span class="nb">list</span><span class="p">:</span>
|
||||||
|
<span class="o">...</span>
|
||||||
|
<span class="k">return</span> <span class="n">data_list</span>
|
||||||
|
</pre></div>
|
||||||
|
</blockquote>
|
||||||
|
<p>This function parses the JSON file received and scraps out the useful data as a list of lists. Data scraped are language list, time spent on each language, percentage of the time, start date, and end date. For this action, I have limited the number of languages to 5 however it should be very easy to increase that number.</p>
|
||||||
|
</li>
|
||||||
|
<li><p class="first"><a class="reference external" href="https://github.com/avinal/Profile-Readme-WakaTime/blob/master/main.py#L13">Setting the Timeline</a></p>
|
||||||
|
<blockquote>
|
||||||
|
<div class="highlight"><pre><span></span><span class="k">def</span> <span class="nf">this_week</span><span class="p">(</span><span class="n">dates</span><span class="p">:</span> <span class="nb">list</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
|
||||||
|
<span class="o">...</span>
|
||||||
|
<span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;Coding Activity During: </span><span class="si">{</span><span class="n">week_start</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">&#39;</span><span class="si">%d</span><span class="s1"> %B, %Y&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2"> to </span><span class="si">{</span><span class="n">week_end</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">&#39;</span><span class="si">%d</span><span class="s1"> %B, %Y&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span>
|
||||||
|
</pre></div>
|
||||||
|
</blockquote>
|
||||||
|
<p>The start date and end date scraped in the last function are used here to set the timeline. Because date in JSON is provided in UTC as below :</p>
|
||||||
|
<blockquote>
|
||||||
|
<div class="highlight"><pre><span></span><span class="err">da</span><span class="kc">te</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;YYYY-MM-DDTHH:MM:SSZ&quot;</span><span class="w"></span>
|
||||||
|
</pre></div>
|
||||||
|
</blockquote>
|
||||||
|
<p>I striped it to simple dates only. We can set them manually by taking the current time from the system. But that method is flawed. But this method ensures that JSON was received latest and the request was successful. Any anomaly will point to a failure in request.</p>
|
||||||
|
</li>
|
||||||
|
<li><p class="first"><a class="reference external" href="https://github.com/avinal/Profile-Readme-WakaTime/blob/master/main.py#L21">Creating a bar graph</a></p>
|
||||||
|
<blockquote>
|
||||||
|
<div class="highlight"><pre><span></span><span class="k">def</span> <span class="nf">make_graph</span><span class="p">(</span><span class="n">data</span><span class="p">:</span> <span class="nb">list</span><span class="p">):</span>
|
||||||
|
<span class="o">...</span>
|
||||||
|
<span class="n">savefig</span><span class="p">(</span><span class="o">...</span><span class="p">)</span>
|
||||||
|
</pre></div>
|
||||||
|
</blockquote>
|
||||||
|
<p>Lastly, it is time to generate the graph and save them as an image. This function uses the data scraped in the first step. Creating a bar graph using <cite>matplotlib</cite> is easy. Decorating was a bit difficult. I wanted this graph to merge with GitHub's look so I chose to color the bar as GitHub colors the languages. That data is stored as <cite>colors.json</cite>. Many of the languages have slightly different spelling in GitHub as compared to WakaTime. So some languages are shown in default color. That can be improved if we notice that language and change its color manually. Lastly, the graph is saved both as SVG and PNG. SVGs are better to put on a responsive page.</p>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<ol class="arabic" start="2">
|
||||||
|
<li><p class="first"><a class="reference external" href="https://github.com/avinal/Profile-Readme-WakaTime/blob/master/entrypoint.sh">entrypoint.py</a> shell script. This shell script clones the repository copies the image and pushes changes to the master. There were several problems. First of all authentication. This was solved by using a remote repository address using GitHub Token. And it seems that GitHub doesn't allow to commit without a username and email. So I used <strong>github-actions</strong> bot email.</p>
|
||||||
|
<blockquote>
|
||||||
|
<div class="highlight"><pre><span></span>remote_repo-<span class="s2">&quot;https://</span><span class="si">${</span><span class="nv">GITHUB_ACTOR</span><span class="si">}</span><span class="s2">:</span><span class="si">${</span><span class="nv">INPUT_GITHUB_TOKEN</span><span class="si">}</span><span class="s2">@github.com/</span><span class="si">${</span><span class="nv">GITHUB_REPOSITORY</span><span class="si">}</span><span class="s2">.git&quot;</span>
|
||||||
|
git config user.email <span class="s2">&quot;41898282+github-actions[bot]@users.noreply.github.com&quot;</span>
|
||||||
|
git config user.name <span class="s2">&quot;GitHub Actions&quot;</span>
|
||||||
|
</pre></div>
|
||||||
|
</blockquote>
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
|
<blockquote>
|
||||||
|
<p><code>41898282</code> is the id assigned to the github-actions bot. Don't ask where I found them 🙂.</p>
|
||||||
|
<p>Another problem was to separate repository name from combined <em>username/repository-name</em> provided by <cite>${GITHUB_REPOSITORY}</cite>. GitHub doesn't provides a direct way to get just the repo name. We used <em>Internal Field Separator</em>. It returns an array and works similar to <code>split()</code> command in Python and Java.</p>
|
||||||
|
<blockquote>
|
||||||
|
<div class="highlight"><pre><span></span><span class="c1"># &#39;/&#39; is the seperator</span>
|
||||||
|
IFS-<span class="s1">&#39;/&#39;</span> <span class="nb">read</span> -ra reponame <span class="o">&lt;&lt;&lt;</span> <span class="s2">&quot;</span><span class="si">${</span><span class="nv">GITHUB_REPOSITORY</span><span class="si">}</span><span class="s2">&quot;</span>
|
||||||
|
<span class="c1"># returned {username, repository}</span>
|
||||||
|
repository-<span class="s2">&quot;</span><span class="si">${</span><span class="nv">reponame</span><span class="p">[1]</span><span class="si">}</span><span class="s2">&quot;</span>
|
||||||
|
</pre></div>
|
||||||
|
</blockquote>
|
||||||
|
</blockquote>
|
||||||
|
<p>After that, all other commands are pretty straight. Commit the added files and push them.</p>
|
||||||
|
<ol class="arabic simple" start="3">
|
||||||
|
<li><a class="reference external" href="https://github.com/avinal/Profile-Readme-WakaTime/blob/master/Dockerfile">Dockerfile</a> <strong>IMPORTANT</strong> It took a lot of time to reach this state 🥱. This is where all the magic happens. I am running <cite>ubuntu:latest</cite> inside the container. I first update the distribution. Then install the required python packages. Lastly, I invoke the python script and shell script.</li>
|
||||||
|
</ol>
|
||||||
|
<p>There was an almost impossible problem, I searched hundreds of posts that <em>how can I access the generated files inside Docker container</em>, but no luck. But at last, I found a workaround(obviously otherwise you wouldn't be reading this by now 🤣) each command is run in a separate virtual sub-container. As the command ends its output is also lost but not when you club multiple commands together. At least not until every command is finished. The generated files are available to the next clubbed process. I did that by combining the python script run and shell script run.</p>
|
||||||
|
<div class="highlight"><pre><span></span><span class="k">CMD</span><span class="w"> </span>python3 /main.py <span class="o">&amp;&amp;</span> /entrypoint.sh
|
||||||
|
</pre></div>
|
||||||
|
<p>This part is the smallest yet took the most time and tries while developing this action.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="how-to-use-this-github-actions">
|
||||||
|
<h2>How to use this GitHub Actions?</h2>
|
||||||
|
<ol class="arabic">
|
||||||
|
<li><p class="first">First get your WakaTime API Key. You can get it from your [WakaTime](<a class="reference external" href="https://wakatime.com">https://wakatime.com</a>) account settings.</p>
|
||||||
|
</li>
|
||||||
|
<li><p class="first">Save WakaTime API Key to Repository Secret. Find that by clicking the Settings tab. Keep the name of the secret as <strong>WAKATIME_API_KEY</strong>.</p>
|
||||||
|
</li>
|
||||||
|
<li><p class="first">Add the following line in your README.md of your repo.</p>
|
||||||
|
<blockquote>
|
||||||
|
<div class="highlight"><pre><span></span><span class="p">&lt;</span><span class="nt">img</span> <span class="na">src-</span><span class="err">&quot;</span><span class="na">https:</span><span class="err">//</span><span class="na">github</span><span class="err">.</span><span class="na">com</span><span class="err">/&lt;</span><span class="na">username</span><span class="p">&gt;</span>/<span class="p">&lt;</span><span class="nt">repository-name</span><span class="p">&gt;</span>/blob/<span class="p">&lt;</span><span class="nt">branch-name</span><span class="p">&gt;</span>/images/stat.svg&quot; alt-&quot;Alternative Text&quot;/&gt;
|
||||||
|
Example: <span class="p">&lt;</span><span class="nt">img</span> <span class="na">src-</span><span class="err">&quot;</span><span class="na">https:</span><span class="err">//</span><span class="na">github</span><span class="err">.</span><span class="na">com</span><span class="err">/</span><span class="na">avinal</span><span class="err">/</span><span class="na">avinal</span><span class="err">/</span><span class="na">blob</span><span class="err">/</span><span class="na">main</span><span class="err">/</span><span class="na">images</span><span class="err">/</span><span class="na">stat</span><span class="err">.</span><span class="na">svg</span><span class="err">&quot;</span> <span class="na">alt-</span><span class="err">&quot;</span><span class="na">Avinal</span> <span class="na">WakaTime</span> <span class="na">Activity</span><span class="err">&quot;</span><span class="p">/&gt;</span>
|
||||||
|
</pre></div>
|
||||||
|
</blockquote>
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
|
<blockquote>
|
||||||
|
You can use this method to embed in web pages too. <strong>Do not use the markdown method of inserting images. It does not work sometimes.</strong></blockquote>
|
||||||
|
<ol class="arabic" start="4">
|
||||||
|
<li><p class="first">Click the <strong>Action</strong> tab and <strong>choose to set up a workflow yourself</strong>.</p>
|
||||||
|
</li>
|
||||||
|
<li><p class="first">Copy the following code into the opened file, you can search for <strong>WakaTime Stat</strong> in the marketplace tab for assistance.</p>
|
||||||
|
<blockquote>
|
||||||
|
<div class="highlight"><pre><span></span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">WakaTime status update</span><span class="w"></span>
|
||||||
|
|
||||||
|
<span class="nt">on</span><span class="p">:</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">schedule</span><span class="p">:</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="c1"># Runs at 12 am &#39;0 0 * * *&#39; UTC</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">cron</span><span class="p">:</span><span class="w"> </span><span class="s">&quot;1</span><span class="nv"> </span><span class="s">0</span><span class="nv"> </span><span class="s">*</span><span class="nv"> </span><span class="s">*</span><span class="nv"> </span><span class="s">*&quot;</span><span class="w"></span>
|
||||||
|
|
||||||
|
<span class="nt">jobs</span><span class="p">:</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">update-readme</span><span class="p">:</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Update the WakaTime Stat</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">runs-on</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">ubuntu-latest</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">steps</span><span class="p">:</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="c1"># Use avinal/Profile-Readme-WakaTime@&lt;latest-release-tag&gt; for latest stable release</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="c1"># Do not change the line below except the word master with tag number maybe</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="c1"># If you have forked this project you can use &lt;username&gt;/Profile-Readme-WakaTime@master instead</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">uses</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">avinal/Profile-Readme-WakaTime@master</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">with</span><span class="p">:</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="c1"># WakaTime API key stored in secrets, do not directly paste it here</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">WAKATIME_API_KEY</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">${{ secrets.WAKATIME_API_KEY }}</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="c1"># Automatic github token</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">GITHUB_TOKEN</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">${{ github.token }}</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="c1"># Branch - newer GitHub repositories have &quot;main&quot; as default branch, change to main in that case, default is master</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">BRANCH</span><span class="p">:</span><span class="w"> </span><span class="s">&quot;master&quot;</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="c1"># Manual Commit messages - write your own messages here</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">COMMIT_MSG</span><span class="p">:</span><span class="w"> </span><span class="s">&quot;Automated</span><span class="nv"> </span><span class="s">Coding</span><span class="nv"> </span><span class="s">Activity</span><span class="nv"> </span><span class="s">Update</span><span class="nv"> </span><span class="s">:alien:&quot;</span><span class="w"></span>
|
||||||
|
</pre></div>
|
||||||
|
</blockquote>
|
||||||
|
</li>
|
||||||
|
<li><p class="first">Please wait till 12 AM UTC to run this workflow automatically. Or you can force run it by going to the Actions tab. Or you can add the following lines under <cite>on:</cite> to run with every push. Search for 12 AM UTC to find the equivalent time in your time zone.</p>
|
||||||
|
<blockquote>
|
||||||
|
<div class="highlight"><pre><span></span><span class="nt">on</span><span class="p">:</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">push</span><span class="p">:</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">branches</span><span class="p">:</span><span class="w"> </span><span class="p p-Indicator">[</span><span class="w"> </span><span class="nv">master</span><span class="w"> </span><span class="p p-Indicator">]</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">schedule</span><span class="p">:</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">cron</span><span class="p">:</span><span class="w"> </span><span class="s">&#39;1</span><span class="nv"> </span><span class="s">0</span><span class="nv"> </span><span class="s">*</span><span class="nv"> </span><span class="s">*</span><span class="nv"> </span><span class="s">*&#39;</span><span class="w"></span>
|
||||||
|
</pre></div>
|
||||||
|
</blockquote>
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="my-coding-activity">
|
||||||
|
<h2>My Coding Activity</h2>
|
||||||
|
<img class="img-fluid" src="https://raw.githubusercontent.com/avinal/avinal/main/images/stat.svg"></div>
|
||||||
|
</content><category term="development"></category><category term="wakatime"></category><category term="github-action"></category><category term="coding"></category></entry><entry><title>How I Created This Blog?</title><link href="https://avinal.space/posts/development/twilight-blog.html" rel="alternate"></link><published>2021-01-26T16:47:00+05:30</published><updated>2021-01-26T16:47:00+05:30</updated><author><name>Avinal</name></author><id>tag:avinal.space,2021-01-26:/posts/development/twilight-blog.html</id><summary type="html"><p class="first last">As you would have guessed by now, this blog is created using one such awesome SSG named <strong>Pelican</strong>. Pelican is simple, customizable and offers lots of themes and plugins. Pelican is python based SSG and is available through <tt class="docutils literal">pip</tt>.</p>
|
||||||
|
</summary><content type="html"><p><span class="html-raw"><div class="alert alert-info" role="alert">This article may not be for you if you are a web developer. You already got better options. 😉</div></span></p>
|
||||||
|
<p>There are lots of ways to create a personal website or a blog. You can design your own user interface and write the backend code. But not everyone is a web developer. And here comes <abbr title="Static Site Generator">SSGs</abbr> to the rescue. <strong>Static Site Generators</strong> are little more than just website generators. In general, if you are looking for a simple blog, its better to use SSG than writing a lot of html and css. They are simple and elegant. Easy to maintain and you can add lots of customizations to your site without breaking or bloating your blog. There are lots of SSGs, <a class="reference external" href="https://jekyllrb.com/">Jekyll</a>, <a class="reference external" href="https://blog.getpelican.com/">Pelican</a> and more complex ones like <a class="reference external" href="https://www.gatsbyjs.com/">Gatsby</a>, <a class="reference external" href="https://gohugo.io/">Hugo</a> .</p>
|
||||||
|
<p>As you would have guessed by now, this blog is created using one such awesome SSG named <strong>Pelican</strong>. Pelican is simple, customizable and offers lots of <a class="reference external" href="http://www.pelicanthemes.com/">themes</a> and <a class="reference external" href="https://github.com/getpelican/pelican-plugins">plugins</a>. Pelican is python based SSG and is available through <code>pip</code>.</p>
|
||||||
|
<div class="highlight"><pre><span></span><span class="c1"># for reStructuredText only (recommended)</span>
|
||||||
|
python -m pip install pelican
|
||||||
|
|
||||||
|
<span class="c1"># for markdown and reStructuredText both</span>
|
||||||
|
python -m pip install <span class="s2">&quot;pelican[markdown]&quot;</span>
|
||||||
|
</pre></div>
|
||||||
|
<p>You can start a pelican project by typing following command. It will create a basic template and build configurations.</p>
|
||||||
|
<div class="highlight"><pre><span></span>pelican-quickstart
|
||||||
|
|
||||||
|
<span class="c1"># output</span>
|
||||||
|
yourproject/
|
||||||
|
├── content <span class="c1"># Put your content here</span>
|
||||||
|
│ └── <span class="o">(</span>pages<span class="o">)</span>
|
||||||
|
├── output <span class="c1"># Output files</span>
|
||||||
|
├── tasks.py
|
||||||
|
├── Makefile <span class="c1"># Makefile to run build and publish command</span>
|
||||||
|
├── pelicanconf.py <span class="c1"># Main settings file</span>
|
||||||
|
└── publishconf.py <span class="c1"># Settings to use when ready to publish</span>
|
||||||
|
</pre></div>
|
||||||
|
<p>Next step is to choose themes. As I said earlier there are lots of <a class="reference external" href="http://www.pelicanthemes.com/">themes</a> . And it is easy to create your own theme. Check <a class="reference external" href="https://docs.getpelican.com/en/latest/themes.html">here</a> to create your own theme. My choice of theme was <a class="reference external" href="https://nairobilug.github.io/pelican-alchemy/">pelican-alchemy</a> . This is a simple and great theme. Installing and removing themes in pelican is very easy.</p>
|
||||||
|
<div class="highlight"><pre><span></span><span class="c1"># list all installed themes</span>
|
||||||
|
pelican-themes -l
|
||||||
|
<span class="c1"># output</span>
|
||||||
|
simple
|
||||||
|
alchemy
|
||||||
|
notmyidea
|
||||||
|
|
||||||
|
<span class="c1"># install new theme</span>
|
||||||
|
pelican-themes -i theme-path
|
||||||
|
|
||||||
|
<span class="c1"># remove a theme</span>
|
||||||
|
pelican-themes -r theme-name
|
||||||
|
</pre></div>
|
||||||
|
<p>To use a particular theme, set the <code>THEME</code> variable in the <strong>pelicanconf.py</strong> file.</p>
|
||||||
|
<div class="highlight"><pre><span></span><span class="n">THEME</span> <span class="o">=</span> <span class="s1">&#39;alchemy&#39;</span>
|
||||||
|
</pre></div>
|
||||||
|
<p>You can also use a theme that is not installed if you have all the required theme files. Just set this variable to its path.</p>
|
||||||
|
<div class="highlight"><pre><span></span><span class="n">THEME</span> <span class="o">=</span> <span class="s1">&#39;path-to-theme-directory&#39;</span>
|
||||||
|
</pre></div>
|
||||||
|
<p>Various themes will have different feature, choose according to your need, or you can always add a feature through plugin. The next step is to build and check your blog. Pelican got it all set up.</p>
|
||||||
|
<div class="highlight"><pre><span></span><span class="c1"># build your website</span>
|
||||||
|
make html
|
||||||
|
<span class="c1"># output</span>
|
||||||
|
<span class="s2">&quot;pelican&quot;</span> <span class="s2">&quot;/mnt/z/my_git/avinal.github.io/content&quot;</span> -o <span class="s2">&quot;/mnt/z/my_git/avinal.github.io/output&quot;</span> -s <span class="s2">&quot;/mnt/z/my_git/avinal.github.io/pelicanconf.py&quot;</span>
|
||||||
|
Done: Processed <span class="m">6</span> articles, <span class="m">0</span> drafts, <span class="m">1</span> page, <span class="m">0</span> hidden pages and <span class="m">0</span> draft pages <span class="k">in</span> <span class="m">2</span>.43 seconds.
|
||||||
|
|
||||||
|
<span class="c1"># build and test/serve on localhost</span>
|
||||||
|
make serve
|
||||||
|
<span class="c1"># output</span>
|
||||||
|
<span class="s2">&quot;pelican&quot;</span> -l <span class="s2">&quot;/mnt/z/my_git/avinal.github.io/content&quot;</span> -o <span class="s2">&quot;/mnt/z/my_git/avinal.github.io/output&quot;</span> -s <span class="s2">&quot;/mnt/z/my_git/avinal.github.io/pelicanconf.py&quot;</span>
|
||||||
|
|
||||||
|
Serving site at: <span class="m">127</span>.0.0.1:8000 - Tap CTRL-C to stop
|
||||||
|
</pre></div>
|
||||||
|
<p>Now open your browser and open <a class="reference external" href="127.0.0.1:8000">127.0.0.1:8000</a> or <a class="reference external" href="localhost:8000">localhost:8000</a>. You should be able to see your new blog. Stop local server using <code>CTRL+C</code>. Next step is to publish it to github pages. Pelican has tools for this too. But wait we can do something more interesting here. Why not let GitHub take care of both building and publishing? Just push this project to a GitHub repository and set up GitHub pages. See <a class="reference external" href="https://pages.github.com/">this</a> help for instructions on that. Before pushing to GitHub add this little script to your project.</p>
|
||||||
|
<div class="highlight"><pre><span></span><span class="ch">#! /bin/bash</span>
|
||||||
|
<span class="c1">## file: publi.sh</span>
|
||||||
|
|
||||||
|
<span class="c1"># install tools</span>
|
||||||
|
sudo apt-get install -y git make python3 python3-pip python3-setuptools python3-wheel
|
||||||
|
|
||||||
|
<span class="c1"># setup github config</span>
|
||||||
|
git config user.email <span class="s2">&quot;your-email&quot;</span>
|
||||||
|
git config user.name <span class="s2">&quot;your-username&quot;</span>
|
||||||
|
|
||||||
|
<span class="c1"># install dependencies</span>
|
||||||
|
sudo pip3 install -r requirements.txt
|
||||||
|
|
||||||
|
<span class="c1"># pelican commands - install theme put your theme in themes directory</span>
|
||||||
|
pelican-themes --install themes/theme-name
|
||||||
|
|
||||||
|
<span class="c1"># publish to github pages</span>
|
||||||
|
ghp-import -m <span class="s2">&quot;Generate Pelican site&quot;</span> -b gh-pages output
|
||||||
|
git push -f origin gh-pages
|
||||||
|
</pre></div>
|
||||||
|
<p>Now once your project is on GitHub, go to the <strong>Actions</strong> tab and click on <em>set up a workflow yourself</em> and paste the following code into the file and commit it.</p>
|
||||||
|
<div class="highlight"><pre><span></span><span class="c1"># file: publish.yml</span><span class="w"></span>
|
||||||
|
<span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Publish Blog</span><span class="w"></span>
|
||||||
|
<span class="nt">on</span><span class="p">:</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">push</span><span class="p">:</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">branches</span><span class="p">:</span><span class="w"> </span><span class="p p-Indicator">[</span><span class="w"> </span><span class="nv">main</span><span class="w"> </span><span class="p p-Indicator">]</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">pull_request</span><span class="p">:</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">branches</span><span class="p">:</span><span class="w"> </span><span class="p p-Indicator">[</span><span class="w"> </span><span class="nv">main</span><span class="w"> </span><span class="p p-Indicator">]</span><span class="w"></span>
|
||||||
|
|
||||||
|
<span class="nt">jobs</span><span class="p">:</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">build</span><span class="p">:</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">runs-on</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">ubuntu-latest</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">steps</span><span class="p">:</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">uses</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">actions/checkout@v2</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">set up permissions</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">run</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">chmod +x publi.sh</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Run a multi-line script</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">run</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">./publi.sh</span><span class="w"></span>
|
||||||
|
</pre></div>
|
||||||
|
<p>If you have done everything correctly then go to <em>https://username.github.io</em> and you should see your blog. From now on whenever you want to add an article, just write it, test locally and push. Yay your blog is ready.</p>
|
||||||
|
<p><span class="html-raw"><h2 style=font-family:Exodar;font-weight:lighter;">But My Blog is Special 🥰</h2></span></p>
|
||||||
|
<p>My blog looks different, that is because I customized this theme a lot, especially headers, footers, and link appearance. And sorry I won't be publish my theme any time sooner. But I am listing down all the resources I have used for finally getting this result. You can always get my help by sending me a <span class="html-raw"><a href="mailto:avinal.xlvii@gmail.com" class="fa fa-envelope" style="text-decoration: none;"></a></span> or starting a discussion on <span class="html-raw"><a href="https://github.com/avinal/avinal/discussions/2" class="fab fa-github" style="text-decoration: none;"></a></span>.</p>
|
||||||
|
<ul class="simple">
|
||||||
|
<li><a class="reference external" href="https://blog.getpelican.com/">Pelican Blog</a></li>
|
||||||
|
<li><a class="reference external" href="https://docs.getpelican.com/en/latest/">Pelican Docs</a></li>
|
||||||
|
<li><a class="reference external" href="http://www.pelicanthemes.com/">Pelican Themes</a></li>
|
||||||
|
<li><a class="reference external" href="https://github.com/nairobilug/pelican-alchemy">Pelican Alchemy Theme</a></li>
|
||||||
|
<li><a class="reference external" href="https://codepen.io/saransh/pen/BKJun">Parallax Star background in CSS</a></li>
|
||||||
|
<li><a class="reference external" href="https://codepen.io/kowlor/pen/ZYYQoy">Solar System animation</a></li>
|
||||||
|
<li><span class="html-raw"><a href="https://www.dafont.com/exodar.font" style="font-family: Exodar;font-weight: lighter;text-decoration: none;">EXODAR Font</a></span></li>
|
||||||
|
<li><a class="reference external" href="https://fonts.google.com/specimen/Overpass+Mono">Overpass Mono</a></li>
|
||||||
|
<li><a class="reference external" href="https://fontawesome.com/how-to-use/on-the-web/setup/hosting-font-awesome-yourself">Font Awesome</a></li>
|
||||||
|
</ul>
|
||||||
|
<p><span class="html-raw"><div class="alert alert-warning" role="alert">Some of the fonts I have used in my blog may not be available for commercial use. Please check if you intend to do so. Alternatively you may use fonts from this wonderful collection, <a href="https://www.websiteplanet.com/blog/best-free-fonts/">70+ Best Free Fonts for Designers – Free for Commercial Use in 2021</a> <i>(Thanks Ritta Blens for this suggestion)</i></div></span></p>
|
||||||
|
<p><span class="html-raw"><p align=center>Thanks!</p></span></p>
|
||||||
|
</content><category term="development"></category><category term="blog"></category><category term="pelican"></category><category term="ssg"></category></entry><entry><title>Move WSL 2 Safely to another Drive</title><link href="https://avinal.space/posts/development/wsl1.html" rel="alternate"></link><published>2020-12-31T19:07:00+05:30</published><updated>2020-12-31T19:07:00+05:30</updated><author><name>Avinal</name></author><id>tag:avinal.space,2020-12-31:/posts/development/wsl1.html</id><summary type="html"><p class="first last">It is real pain when you have small SSD and Windows Subsystem for Linux (WSL) is growing exponentially in size. There is no easy way to move the WSL installation to another drive. Here in this blog I will discuss how to tackle this problem with bite size steps.</p>
|
||||||
|
</summary><content type="html"><p>It is real pain when you have small SSD and Windows Subsystem for Linux (WSL) is growing exponentially in size. There is no easy way to move
|
||||||
|
the WSL installation to another drive. Here in this blog I will discuss how to tackle this problem with bite size steps.</p>
|
||||||
|
<ol class="arabic simple">
|
||||||
|
<li>Open a PowerShell <img alt="powershell" class="align-middle" src="/images/powershell.png" style="width: 5%;" /> or Command Prompt <img alt="command-line" class="align-middle" src="/images/command-line.png" style="width: 5%;" /> with <em>Admin</em> access. For this you can use <img alt="WinKey" class="align-middle" src="/images/windows10.png" style="width: 5%;" /> + X shortcut and select <strong>Windows PowerShell(Admin)</strong>.</li>
|
||||||
|
<li>Check if the WSL 2 installation you are planning to move is is currently running/stopped.</li>
|
||||||
|
</ol>
|
||||||
|
<div class="highlight"><pre><span></span><span class="nb">PS </span><span class="n">C</span><span class="p">:\</span><span class="n">Users</span><span class="p">\</span><span class="n">Avinal</span><span class="p">&gt;</span> <span class="n">wsl</span> <span class="n">-l</span> <span class="n">-v</span>
|
||||||
|
<span class="nb">PS </span><span class="n">C</span><span class="p">:\</span><span class="n">Users</span><span class="p">\</span><span class="n">Avinal</span><span class="p">&gt;</span>
|
||||||
|
<span class="n">NAME</span> <span class="n">STATE</span> <span class="n">VERSION</span>
|
||||||
|
<span class="p">*</span> <span class="n">Ubuntu</span> <span class="n">Running</span> <span class="n">2</span>
|
||||||
|
<span class="n">Kali</span> <span class="n">Stopped</span> <span class="n">2</span>
|
||||||
|
</pre></div>
|
||||||
|
<ol class="arabic simple" start="3">
|
||||||
|
<li>If its running then you must stop the particular WSL distribution. (<em>Ubuntu</em> used as example)</li>
|
||||||
|
</ol>
|
||||||
|
<div class="highlight"><pre><span></span><span class="nb">PS </span><span class="n">C</span><span class="p">:\</span><span class="n">Users</span><span class="p">\</span><span class="n">Avinal</span><span class="p">&gt;</span> <span class="n">wsl</span> <span class="n">-t</span> <span class="n">Ubuntu</span>
|
||||||
|
</pre></div>
|
||||||
|
<ol class="arabic simple" start="4">
|
||||||
|
<li>Export to some folder. (Here exporting <em>Ubuntu</em> as <em>ubuntu-ex.tar</em> to <em>Z:wsl2</em>)</li>
|
||||||
|
</ol>
|
||||||
|
<div class="highlight"><pre><span></span><span class="nb">PS </span><span class="n">C</span><span class="p">:\</span><span class="n">Users</span><span class="p">\</span><span class="n">Avinal</span><span class="p">&gt;</span> <span class="n">wsl</span> <span class="p">-</span><span class="n">-export</span> <span class="n">Ubuntu</span> <span class="s2">&quot;Z:\export\ubuntu-ex.tar&quot;</span>
|
||||||
|
</pre></div>
|
||||||
|
<ol class="arabic simple" start="5">
|
||||||
|
<li>Unregister previous WSL installation</li>
|
||||||
|
</ol>
|
||||||
|
<div class="highlight"><pre><span></span><span class="nb">PS </span><span class="n">C</span><span class="p">:\</span><span class="n">Users</span><span class="p">\</span><span class="n">Avinal</span><span class="p">&gt;</span> <span class="n">wsl</span> <span class="p">-</span><span class="n">-unregister</span> <span class="n">Ubuntu</span>
|
||||||
|
</pre></div>
|
||||||
|
<ol class="arabic simple" start="6">
|
||||||
|
<li>Create a new folder and import your WSL installation to that folder.</li>
|
||||||
|
</ol>
|
||||||
|
<div class="highlight"><pre><span></span><span class="nb">PS </span><span class="n">C</span><span class="p">:\</span><span class="n">Users</span><span class="p">\</span><span class="n">Avinal</span><span class="p">&gt;</span> <span class="nb">New-Item</span> <span class="n">-Path</span> <span class="s2">&quot;Z:\wsl2&quot;</span> <span class="n">-ItemType</span> <span class="n">Directory</span>
|
||||||
|
|
||||||
|
<span class="n">Directory</span><span class="p">:</span> <span class="n">Z</span><span class="p">:\</span>
|
||||||
|
|
||||||
|
<span class="n">Mode</span> <span class="n">LastWriteTime</span> <span class="n">Length</span> <span class="n">Name</span>
|
||||||
|
<span class="p">----</span> <span class="p">-------------</span> <span class="p">------</span> <span class="p">----</span>
|
||||||
|
<span class="n">d</span><span class="p">-----</span> <span class="n">31</span><span class="p">-</span><span class="n">12</span><span class="p">-</span><span class="n">2020</span> <span class="n">21</span><span class="p">:</span><span class="n">03</span> <span class="n">wsl2</span>
|
||||||
|
|
||||||
|
<span class="nb">PS </span><span class="n">C</span><span class="p">:\</span><span class="n">Users</span><span class="p">\</span><span class="n">Avinal</span><span class="p">&gt;</span> <span class="n">wsl</span> <span class="p">-</span><span class="n">-import</span> <span class="n">Ubuntu</span> <span class="s2">&quot;Z:\wsl2&quot;</span> <span class="s2">&quot;Z:\export\ubuntu-ex.tar&quot;</span>
|
||||||
|
</pre></div>
|
||||||
|
<ol class="arabic simple" start="7">
|
||||||
|
<li>Check after import is complete</li>
|
||||||
|
</ol>
|
||||||
|
<div class="highlight"><pre><span></span><span class="nb">PS </span><span class="n">C</span><span class="p">:\</span><span class="n">Users</span><span class="p">\</span><span class="n">Avinal</span><span class="p">&gt;</span> <span class="n">wsl</span> <span class="n">-l</span> <span class="n">-v</span>
|
||||||
|
<span class="nb">PS </span><span class="n">C</span><span class="p">:\</span><span class="n">Users</span><span class="p">\</span><span class="n">Avinal</span><span class="p">&gt;</span>
|
||||||
|
<span class="n">NAME</span> <span class="n">STATE</span> <span class="n">VERSION</span>
|
||||||
|
<span class="p">*</span> <span class="n">Ubuntu</span> <span class="n">Running</span> <span class="n">2</span>
|
||||||
|
<span class="n">Kali</span> <span class="n">Stopped</span> <span class="n">2</span>
|
||||||
|
</pre></div>
|
||||||
|
<ol class="arabic simple" start="8">
|
||||||
|
<li>Mark one of your WSL distribution as <em>(default)</em>.</li>
|
||||||
|
</ol>
|
||||||
|
<div class="highlight"><pre><span></span><span class="nb">PS </span><span class="n">C</span><span class="p">:\</span><span class="n">Users</span><span class="p">\</span><span class="n">Avinal</span><span class="p">&gt;</span> <span class="n">wsl</span> <span class="n">-s</span> <span class="n">Ubuntu</span>
|
||||||
|
</pre></div>
|
||||||
|
<ol class="arabic simple" start="9">
|
||||||
|
<li>After exporting your default user will be set as <span class="html-raw"><i style="color:red">root</i></span> , to change it to your desired username, run following command</li>
|
||||||
|
</ol>
|
||||||
|
<div class="highlight"><pre><span></span><span class="nb">PS </span><span class="n">C</span><span class="p">:\</span><span class="n">Users</span><span class="p">\</span><span class="n">Avinal</span><span class="p">&gt;</span> <span class="n">ubuntu</span> <span class="n">config</span> <span class="p">-</span><span class="n">-default-user</span> <span class="n">user_name</span>
|
||||||
|
</pre></div>
|
||||||
|
<ol class="arabic simple" start="10">
|
||||||
|
<li>Finally run <code>wsl</code> and you have successfully moved your WSL 2 installation to another drive.</li>
|
||||||
|
</ol>
|
||||||
|
</content><category term="development"></category><category term="wsl"></category><category term="wsl2"></category></entry><entry><title>Create the VLC User Documentation for one Mobile Port(Android)</title><link href="https://avinal.space/posts/development/vlc-gsod-report.html" rel="alternate"></link><published>2020-12-01T23:47:00+05:30</published><updated>2020-12-31T23:19:00+05:30</updated><author><name>Avinal</name></author><id>tag:avinal.space,2020-12-01:/posts/development/vlc-gsod-report.html</id><summary type="html"><p class="first last">The project was to Create the VLC User Documentation for Android Mobile Port which was previously hosted on VLC’s wiki pages. The major portion of this was to start everything from scratch including chapter separation, section organization.</p>
|
||||||
|
</summary><content type="html"><div class="section" id="overview">
|
||||||
|
<h2>OVERVIEW</h2>
|
||||||
|
<p>VideoLAN is a non-profit organization that develops software for playing video and other media formats. VLC media player (commonly known as just VLC) is a free and Open Source cross-platform multimedia player and framework that plays most multimedia files as well as DVDs, Audio CDs, VCDs, and various streaming protocols built by the VideoLAN organization and a team of volunteers. VLC for Android is a port of the VLC for Android OS.</p>
|
||||||
|
<p>The project was to Create the VLC User Documentation for Android Mobile Port which was previously hosted on VLC’s wiki pages. The major portion of this was to start everything from scratch including chapter separation, section organization and an engaging and easy to follow for both technical and non-technical users. The original proposal can be found here.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="project-goals">
|
||||||
|
<h2>PROJECT GOALS</h2>
|
||||||
|
<ul class="simple">
|
||||||
|
<li>Propose a new structure for documentation e.g. Chapter Separation, Sections etc</li>
|
||||||
|
<li>Proper balance between technical and non-technical descriptions to serve all kinds of users.</li>
|
||||||
|
<li>Adequate amount of screenshots in each section and other supporting media to make documentation more appealing.</li>
|
||||||
|
<li>Optimized for all Screen Sizes. Especially for Mobile Devices.</li>
|
||||||
|
<li>Ease of navigation</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="community-bonding">
|
||||||
|
<h2>COMMUNITY BONDING</h2>
|
||||||
|
<p>This period was mostly utilized for collecting more information and many internal meetings to shape the projects and bonding with fellow writers, developers(mentors). I got to know more about the VLC organization and the project. We decided to create a skeleton of the project and then follow a Issue-Merge Request-Review-Merge system to keep the commit history clean and maintain the proper review of the work before it is merged.</p>
|
||||||
|
<p>I initially proposed that the new documentation should also use the same tools(Sphinx and GitLab Pages) because if in future we want to merge all the documentation into a single one, it will be easier to migrate and will provide a consistency across all documentations. Later I got to know that this will be an independent project and may not be merged since it solves a lot of problems. I was already familiar with the tools so it took no time to get started.</p>
|
||||||
|
<p>Nicolas Pomepuy, who is the lead developer of VLC for Android was assigned as my primary mentor and Simon Latapie as secondary mentor.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="documentation-development-phase">
|
||||||
|
<h2>DOCUMENTATION DEVELOPMENT PHASE</h2>
|
||||||
|
<p>Initial Preparation
|
||||||
|
I first moved my existing demo documentation to an entirely new repository with only the skeleton at the suggestion of my mentor. It was necessary to keep the commit history clean. The skeleton contained the empty directories representing the chapter separation. I got to learn “how to properly develop a project and contribute to open source”. This was a major lesson that got me familiar with the Merge Request and Review system.</p>
|
||||||
|
<p>The Development
|
||||||
|
The next part was to frame the actual documentation pages and push to the repository. Since there was a significant time-zone difference we agreed to discuss by creating issues and sometimes my emails. There was one meeting every fortnight to check the process and discuss further development and blockers. Nicolas was really helpful and patient, answering each of my big-small queries.</p>
|
||||||
|
<p>Work Done</p>
|
||||||
|
<style>
|
||||||
|
table,td,th {
|
||||||
|
border-collapse:collapse;
|
||||||
|
border: 1px solid #000000;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td><strong>Documentation</strong></td>
|
||||||
|
<td><a href="https://avinal.videolan.me/vlc-android-user/">VLC for Android User Documentation </a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><strong>Project Repository</strong>
|
||||||
|
</td>
|
||||||
|
<td><a href="https://code.videolan.org/avinal/vlc-android-user">Projects · Avinal Kumar / VLC for Android User Documentation</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><strong>Commits</strong>
|
||||||
|
</td>
|
||||||
|
<td><a href="https://code.videolan.org/avinal/vlc-android-user/-/commits/master">Commits · Avinal Kumar / VLC for Android User Documentation</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><strong>Issues/Discussions</strong>
|
||||||
|
</td>
|
||||||
|
<td><a href="https://code.videolan.org/avinal/vlc-android-user/-/issues">Issues · Avinal Kumar / VLC for Android User Documentation</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><strong>Merge Requests</strong>
|
||||||
|
</td>
|
||||||
|
<td><a href="https://code.videolan.org/avinal/vlc-android-user/-/merge_requests">Merge Requests · Avinal Kumar / VLC for Android User Documentation</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table><p>Since the Android port of VLC can be installed on Android Smartphones/Tablets, Android TVs, Amazon Fire Devices and Chromebooks too, a full documentation will cover these all devices. Although these are different form factors, the features provided on each of them is exactly the same and the same documentation can be used for all these devices. As of now only Smartphones/Tablets are covered. And later additional pages will be added to reference different features/User Interface. Regardless of this addition the current documentation can serve a major part for all these form factors.
|
||||||
|
Completed/Remaining</p>
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td><strong>Chapters</strong>
|
||||||
|
</td>
|
||||||
|
<td><strong>Sections</strong>
|
||||||
|
</td>
|
||||||
|
<td><strong>Status</strong>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><strong>Settings</strong>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<ul>
|
||||||
|
<li>General Settings
|
||||||
|
<li>Interface
|
||||||
|
<li>Video
|
||||||
|
<li>Subtitles
|
||||||
|
<li>Audio
|
||||||
|
<li>Casting
|
||||||
|
<li>Advanced
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
<td><strong>ALL COMPLETED</strong>
|
||||||
|
<p>
|
||||||
|
<strong>FOR ALL FORM FACTORS</strong>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><strong>Video</strong>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<ul>
|
||||||
|
<li>Video Explorer
|
||||||
|
<li>Video Player
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
<td><strong>COMPLETED FOR SMARTPHONES/TABLETS</strong>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><strong>Audio</strong>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<ul>
|
||||||
|
<li>Audio Explorer
|
||||||
|
<li>Audio Player
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
<td><strong>COMPLETED FOR SMARTPHONES/TABLETS</strong>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><strong>Browse</strong>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<ul>
|
||||||
|
<li>Explorer
|
||||||
|
<li>Local Network
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
<td><strong>ONLY SMB IN LOCAL NETWORK COMPLETED</strong>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><strong>Installation</strong>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<ul>
|
||||||
|
<li>Smartphones/Tablets
|
||||||
|
<li>Android TV
|
||||||
|
<li>Fire Devices
|
||||||
|
<li>Chromebooks
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
<td><strong>COMPLETED FOR SMARTPHONES/TABLETS</strong>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><strong>User Interface</strong>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<ul>
|
||||||
|
<li>Smartphones/Tablets
|
||||||
|
<li>Android TV
|
||||||
|
<li>Fire Devices
|
||||||
|
<li>Chromebooks
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
<td><strong>COMPLETED FOR SMARTPHONES/TABLETS</strong>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><strong>Support</strong>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<ul>
|
||||||
|
<li>FAQs
|
||||||
|
<li>Help
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
<td><strong>IN PROGRESS</strong>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><strong>Guidelines</strong>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<ul>
|
||||||
|
<li>Contribution Guideline
|
||||||
|
<li>Screenshot Guidelines
|
||||||
|
<li>READMEs
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
<td><strong>IN PROGRESS</strong>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table></div>
|
||||||
|
<div class="section" id="challenges">
|
||||||
|
<h2>CHALLENGES</h2>
|
||||||
|
<p>The major obstacle was to get screenshots for all form factors. Since screenshots were the major part of this documentation it was necessary to provide proper screenshots in each chapter and with every step. For Android TV and Smartphone this was solved by using emulators instead of actual devices, but to emulate the actual scenario in an emulator was sometimes very difficult.
|
||||||
|
There were many occasions where I was not able to gather the exact information about devices other than smartphones/tables. Since all form factors share a common pool of features, my mentor suggested that I focus on smartphones/tables. And to create issues mentioning missing parts so that it could be solved later.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="thanks">
|
||||||
|
<h2>THANKS</h2>
|
||||||
|
<p>I want to thank my mentors for being supporting and helpful. I want to thank every person at VLC and Google who were involved in this whole process. Thanks and Congrats to my fellow writer Abhishek Pratap Singh. This was a great opportunity to learn and meet awesome people. I learned a lot about Sphinx, reStructured Text and many other things.</p>
|
||||||
|
</div>
|
||||||
|
</content><category term="development"></category><category term="vlc"></category><category term="gsod"></category><category term="gsod2020"></category></entry></feed>
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<feed xmlns="http://www.w3.org/2005/Atom"><title>Be My SpaceTime - prime</title><link href="https://avinal.space/" rel="alternate"></link><link href="https://avinal.space/feeds/prime.atom.xml" rel="self"></link><id>https://avinal.space/</id><updated>2021-01-09T22:29:00+05:30</updated><subtitle>눈치</subtitle><entry><title>Introduction to Prime Numbers</title><link href="https://avinal.space/posts/prime/prime1.html" rel="alternate"></link><published>2021-01-09T22:29:00+05:30</published><updated>2021-01-09T22:29:00+05:30</updated><author><name>Avinal</name></author><id>tag:avinal.space,2021-01-09:/posts/prime/prime1.html</id><summary type="html"><p class="first last">A prime is a positive integer <em>p</em> having exactly two positive divisors, namely <em>1</em> and <em>p</em>. An integer <em>n</em> is composite if <em>n</em> &gt; <em>1</em> and <em>n</em> is not prime. (The number 1 is considered neither prime nor composite.)</p>
|
||||||
|
</summary><content type="html"><blockquote class="epigraph">
|
||||||
|
A prime is a positive integer <em>p</em> having exactly two positive divisors, namely <em>1</em> and <em>p</em>. An integer <em>n</em> is composite if <em>n</em> &gt; <em>1</em> and <em>n</em> is not prime. (The number 1 is considered neither prime nor composite.)</blockquote>
|
||||||
|
<p>We can frame a brute force algorithm for checking primality of numbers using the above statement.</p>
|
||||||
|
<div class="highlight"><pre><span></span><span class="kt">bool</span><span class="w"> </span><span class="nf">is_prime</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">number</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">factor</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">&lt;=</span><span class="w"> </span><span class="n">number</span><span class="p">;</span><span class="w"> </span><span class="o">++</span><span class="n">i</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">number</span><span class="w"> </span><span class="o">%</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="n">factor</span><span class="o">++</span><span class="p">;</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="p">}</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="p">}</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="p">(</span><span class="n">factor</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="o">?</span><span class="w"> </span><span class="nb">true</span><span class="w"> </span><span class="o">:</span><span class="w"> </span><span class="nb">false</span><span class="p">;</span><span class="w"></span>
|
||||||
|
<span class="p">}</span><span class="w"></span>
|
||||||
|
</pre></div>
|
||||||
|
</content><category term="prime"></category><category term="prime"></category><category term="primenumbers"></category></entry></feed>
|
||||||
@@ -0,0 +1,689 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<feed xmlns="http://www.w3.org/2005/Atom"><title>Be My SpaceTime - report</title><link href="https://avinal.space/" rel="alternate"></link><link href="https://avinal.space/feeds/report.atom.xml" rel="self"></link><id>https://avinal.space/</id><updated>2021-08-19T23:07:00+05:30</updated><subtitle>눈치</subtitle><entry><title>Google Summer of Code 2021</title><link href="https://avinal.space/posts/report/final-evaluation.html" rel="alternate"></link><published>2021-08-19T23:07:00+05:30</published><updated>2021-08-19T23:07:00+05:30</updated><author><name>Avinal</name></author><id>tag:avinal.space,2021-08-19:/posts/report/final-evaluation.html</id><summary type="html"><p class="first last">This is the final report of my Google Summer of Code 2021 at The FOSSology Project.</p>
|
||||||
|
</summary><content type="html"><style>
|
||||||
|
.rd {color:red;font-weight:bold}
|
||||||
|
.gr{color:green;font-weight:bold}
|
||||||
|
.or{color:orange;font-weight:medium}
|
||||||
|
ul{margin-bottom:0}
|
||||||
|
</style><div class="section" id="the-cmake-build-system">
|
||||||
|
<h2>The CMake Build system</h2>
|
||||||
|
<p>FOSSology is quite an old and mature project. The project has been using bare metal <strong>Makefiles</strong>. As the project is growing with new agents and modernization it was required to have a modern build system.</p>
|
||||||
|
<p>The FOSSology is a suite of well-integrated and synchronized sub-projects (called agents) written in C, C++, and PHP. Most of the major agents are in C, C++ and that made CMake an obvious choice for a new build system for FOSSology. CMake is a versatile set of build, test, and packaging tools and is the most popular choice of C/C++ developers. CMake can be extended to create a build system for other languages too via custom scripts.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="github-actions-ci-cd">
|
||||||
|
<h2>GitHub Actions CI/CD</h2>
|
||||||
|
<img alt="A CI Meme" class="float-md-right rounded border border-info ml-3" src="/images/ci.png" style="width: 350px;" />
|
||||||
|
<p>Since the FOSSology project moved on Github, it has used only the free Travis CI service for OSS projects.
|
||||||
|
At the time of writing Travis CI has reduced its free tier CI services. GitHub Actions provides faster builds. Since GitHub Actions is a fully managed service by GitHub, we don’t need to know how to scale and operate the infrastructure to run it.</p>
|
||||||
|
<p>It is straightforward to use with GitHub because when we fork a repository, the actions automatically get forked. This allows you to test and build projects very efficiently and even run them closer to the developer. Also, you have readily available access to the GitHub API, making it more popular among developers.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="improvements-over-previous-build-system-and-ci">
|
||||||
|
<h2>Improvements over previous build system and CI</h2>
|
||||||
|
<p>The new build system and CI brings a lot of improvements and features. The list below describes them.</p>
|
||||||
|
<ul class="simple">
|
||||||
|
<li>CMake enforces out-of-source builds. This was already possible with the previous build system but not a strict requirement. This feature keeps the source code clean and makes cleaning the build artifacts easy. (Just remove the build folder :)</li>
|
||||||
|
<li>One of the major improvements over the previous build system is faster build times. CMake generates parallel build-enabled configurations for all generators. In our tests, the new build system is at least twice as fast as the previous one. With further improvement in configuration, we will be able to further cut the build times.</li>
|
||||||
|
<li>Previously FOSSology can only be built using <em>Unix Makefiles</em>. With CMake, we can now use many other popular generators such as <em>Ninja</em>.</li>
|
||||||
|
<li>Now it is also very flexible to choose different compilers. This will help support more platforms and architecture in the future. As of now, we are experimenting with Clang compilers.</li>
|
||||||
|
<li>FOSSology is quite an old project and a lot of agent testing code was written in the last decade. Initially, none of them were compatible with the new build system, but we were able to hack most of the test code using better-improved methods. Test times have also improved.</li>
|
||||||
|
<li>Migrating from Travis CI to GitHub Actions was another big move and for the most part, it removes the dependency on a third-party CI service. Along with that GitHub Actions provides better build times, tons of new features, and better integration with other GitHub services.</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="deliverables">
|
||||||
|
<h2>Deliverables</h2>
|
||||||
|
<div class="alert alert-info" role="alert">
|
||||||
|
<ul class="simple">
|
||||||
|
<li>Final Pull Request <a class="badge badge-info" href="https://github.com/fossology/fossology/pull/2075">#2075</a></li>
|
||||||
|
<li>Pull Request Branch <a class="badge badge-info" href="https://github.com/avinal/fossology/tree/avinal/feat/buildsystem">avinal/feat/buildsystem</a></li>
|
||||||
|
<li>Working Branch (individual commits) <ul>
|
||||||
|
<li><a class="badge badge-info" href="https://github.com/avinal/fossology/tree/avinal/feat/cmake-buildsystem">avinal/feat/cmake-buildsystem</a></li>
|
||||||
|
<li><a class="badge badge-info" href="https://github.com/avinal/fossology/tree/avinal/feat/testing">avinal/feat/testing</a></li>
|
||||||
|
</ul></li>
|
||||||
|
<li>Project Issue <a class="badge badge-info" href="https://github.com/fossology/fossology/issues/1913">#1913</a></li>
|
||||||
|
<li>Project Discussion <a class="badge badge-info" href="https://github.com/fossology/fossology/discussions/1931">#1931</a></li>
|
||||||
|
<li>Weekly Reports<ul>
|
||||||
|
<li><a class="badge badge-info" href="https://gsoc.avinal.space">Personal Blog</a></li>
|
||||||
|
<li><a class="badge badge-info" href="https://fossology.github.io/gsoc/docs/2021/buildsystem/">FOSSology Official Blog</a></li>
|
||||||
|
</ul></li></ul>
|
||||||
|
</div><p><strong>CMake Build System Tasks</strong></p>
|
||||||
|
<table border="1" class="table table-sm table-hover table-bordered table-responsive docutils align-center">
|
||||||
|
<colgroup>
|
||||||
|
<col width="5%" />
|
||||||
|
<col width="15%" />
|
||||||
|
<col width="10%" />
|
||||||
|
<col width="10%" />
|
||||||
|
<col width="20%" />
|
||||||
|
<col width="15%" />
|
||||||
|
<col width="25%" />
|
||||||
|
</colgroup>
|
||||||
|
<thead valign="bottom">
|
||||||
|
<tr><th class="head">#</th>
|
||||||
|
<th class="head">Agents</th>
|
||||||
|
<th class="head">Build</th>
|
||||||
|
<th class="head">Install</th>
|
||||||
|
<th class="head">Testing</th>
|
||||||
|
<th class="head">Packaging</th>
|
||||||
|
<th class="head">Remarks</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody valign="top">
|
||||||
|
<tr><td>1</td>
|
||||||
|
<td>adj2nest</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td>&nbsp;</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td>&nbsp;</td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>2</td>
|
||||||
|
<td>buckets</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td>&nbsp;</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td>&nbsp;</td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>3</td>
|
||||||
|
<td>cli</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><ul class="first last simple">
|
||||||
|
<li><span class="rd">Functional</span></li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td>&nbsp;</td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>4</td>
|
||||||
|
<td>copyright</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><ul class="first last simple">
|
||||||
|
<li><span class="gr">Functional</span></li>
|
||||||
|
<li><span class="gr">Unit</span></li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td>&nbsp;</td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>5</td>
|
||||||
|
<td>debug</td>
|
||||||
|
<td>&nbsp;</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td>&nbsp;</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td>&nbsp;</td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>6</td>
|
||||||
|
<td>decider</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><ul class="first last simple">
|
||||||
|
<li><span class="gr">Functional</span></li>
|
||||||
|
<li><span class="gr">Unit</span></li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td>&nbsp;</td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>7</td>
|
||||||
|
<td>deciderjob</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><ul class="first last simple">
|
||||||
|
<li><span class="gr">Functional</span></li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td>&nbsp;</td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>8</td>
|
||||||
|
<td>delagent</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><ul class="first last simple">
|
||||||
|
<li><span class="rd">Functional</span></li>
|
||||||
|
<li><span class="rd">Unit</span></li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td>&nbsp;</td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>9</td>
|
||||||
|
<td>demomod</td>
|
||||||
|
<td><span class="or">YES</span></td>
|
||||||
|
<td><span class="or">YES</span></td>
|
||||||
|
<td><ul class="first last simple">
|
||||||
|
<li><span class="or">Functional</span></li>
|
||||||
|
<li><span class="or">Unit</span></li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
<td><span class="or">NO</span></td>
|
||||||
|
<td><em>(Not Used)</em></td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>10</td>
|
||||||
|
<td>example_wc_agent</td>
|
||||||
|
<td><span class="or">YES</span></td>
|
||||||
|
<td><span class="or">YES</span></td>
|
||||||
|
<td><ul class="first last simple">
|
||||||
|
<li><span class="or">Functional</span></li>
|
||||||
|
<li><span class="or">Unit</span></li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
<td><span class="or">NO</span></td>
|
||||||
|
<td><em>(Not Used)</em></td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>11</td>
|
||||||
|
<td>clib</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><ul class="first last simple">
|
||||||
|
<li><span class="gr">Functional</span></li>
|
||||||
|
<li><span class="gr">Unit</span></li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td>&nbsp;</td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>12</td>
|
||||||
|
<td>cpplib</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><ul class="first last simple">
|
||||||
|
<li><span class="gr">Unit</span></li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td>&nbsp;</td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>13</td>
|
||||||
|
<td>phplib</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><ul class="first last simple">
|
||||||
|
<li><span class="gr">Functional</span></li>
|
||||||
|
<li><span class="gr">Unit</span></li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td>1 functional
|
||||||
|
test needs fix</td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>14</td>
|
||||||
|
<td>maintagent</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td>&nbsp;</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td>&nbsp;</td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>15</td>
|
||||||
|
<td>mimetype</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><ul class="first last simple">
|
||||||
|
<li><span class="gr">Functional</span></li>
|
||||||
|
<li><span class="gr">Unit</span></li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td>&nbsp;</td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>16</td>
|
||||||
|
<td>monk</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><ul class="first last simple">
|
||||||
|
<li><span class="gr">Functional</span></li>
|
||||||
|
<li><span class="gr">Unit</span></li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td>&nbsp;</td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>17</td>
|
||||||
|
<td>ninka</td>
|
||||||
|
<td><span class="or">YES</span></td>
|
||||||
|
<td><span class="or">YES</span></td>
|
||||||
|
<td><ul class="first last simple">
|
||||||
|
<li><span class="or">Functional</span></li>
|
||||||
|
<li><span class="or">Unit</span></li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
<td><span class="or">NO</span></td>
|
||||||
|
<td><em>(Deprecated)</em></td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>18</td>
|
||||||
|
<td>nomos</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><ul class="first last simple">
|
||||||
|
<li><span class="gr">Functional</span></li>
|
||||||
|
<li><span class="gr">Unit</span></li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td>&nbsp;</td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>19</td>
|
||||||
|
<td>ojo</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><ul class="first last simple">
|
||||||
|
<li><span class="gr">Functional</span></li>
|
||||||
|
<li><span class="gr">Unit</span></li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td>1 functional
|
||||||
|
test needs fix</td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>20</td>
|
||||||
|
<td>pkgagent</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><ul class="first last simple">
|
||||||
|
<li><span class="gr">Functional</span></li>
|
||||||
|
<li><span class="gr">Unit</span></li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td>&nbsp;</td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>21</td>
|
||||||
|
<td>readmeoss</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td>&nbsp;</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td>&nbsp;</td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>22</td>
|
||||||
|
<td>regexscan</td>
|
||||||
|
<td><span class="or">YES</span></td>
|
||||||
|
<td><span class="or">YES</span></td>
|
||||||
|
<td>&nbsp;</td>
|
||||||
|
<td><span class="or">NO</span></td>
|
||||||
|
<td><em>(Deprecated)</em></td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>23</td>
|
||||||
|
<td>reportImport</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td>&nbsp;</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td>&nbsp;</td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>24</td>
|
||||||
|
<td>reuser</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><ul class="first last simple">
|
||||||
|
<li><span class="gr">Functional</span></li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td>&nbsp;</td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>25</td>
|
||||||
|
<td>reso</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td>&nbsp;</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td>&nbsp;</td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>26</td>
|
||||||
|
<td>scheduler</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><ul class="first last simple">
|
||||||
|
<li><span class="rd">Functional</span></li>
|
||||||
|
<li><span class="rd">Unit</span></li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td>Tests needs
|
||||||
|
fix</td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>27</td>
|
||||||
|
<td>softwareHeritage</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td>&nbsp;</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td>&nbsp;</td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>28</td>
|
||||||
|
<td>spasht</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td>&nbsp;</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td>&nbsp;</td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>29</td>
|
||||||
|
<td>spdx2</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><ul class="first last simple">
|
||||||
|
<li><span class="gr">Functional</span></li>
|
||||||
|
<li><span class="gr">Unit</span></li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td>1 Test failing
|
||||||
|
in CI</td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>30</td>
|
||||||
|
<td>unifiedreport</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><ul class="first last simple">
|
||||||
|
<li><span class="gr">Functional</span></li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td>&nbsp;</td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>31</td>
|
||||||
|
<td>ununpack</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><ul class="first last simple">
|
||||||
|
<li><span class="gr">Functional</span></li>
|
||||||
|
<li><span class="rd">Unit</span></li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td>Unit tests
|
||||||
|
needs fix</td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>32</td>
|
||||||
|
<td>wget_agent</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><ul class="first last simple">
|
||||||
|
<li><span class="gr">Functional</span></li>
|
||||||
|
<li><span class="gr">Unit</span></li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td>&nbsp;</td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>32</td>
|
||||||
|
<td>www</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><ul class="first last simple">
|
||||||
|
<li><span class="rd">UI</span></li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td>&nbsp;</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<p><strong>GitHub Actions CI Tasks</strong></p>
|
||||||
|
<table border="1" class="table table-sm table-hover table-bordered table-responsive docutils align-center">
|
||||||
|
<colgroup>
|
||||||
|
<col width="5%" />
|
||||||
|
<col width="25%" />
|
||||||
|
<col width="70%" />
|
||||||
|
</colgroup>
|
||||||
|
<thead valign="bottom">
|
||||||
|
<tr><th class="head">#</th>
|
||||||
|
<th class="head">CI Tasks</th>
|
||||||
|
<th class="head">Status</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody valign="top">
|
||||||
|
<tr><td>1</td>
|
||||||
|
<td><span class="gr">build</span></td>
|
||||||
|
<td>Added Ubuntu 20.04 GCC 8, 9 and Clang, GCC 7 not working</td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>2</td>
|
||||||
|
<td><span class="gr">c/cpp unit test</span></td>
|
||||||
|
<td>Added, delagent, scheduler and ununpack not working</td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>3</td>
|
||||||
|
<td><span class="gr">phpunit tests</span></td>
|
||||||
|
<td>Added, delagent and scheduler functional not working</td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>4</td>
|
||||||
|
<td><span class="rd">cahching</span></td>
|
||||||
|
<td>Not implemented</td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>5</td>
|
||||||
|
<td><span class="rd">source install</span></td>
|
||||||
|
<td>Not implemented</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<p>(<span class="gr">GREEN</span>: COMPLETED, <span class="rd">RED</span>: INCOMPLETE, <span class="or">ORANGE</span>: NOT NEEDED/DEPRECATED)</p>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="how-does-it-work-and-how-to-use-it">
|
||||||
|
<h2>How does it work and how to use it?</h2>
|
||||||
|
<div class="embed-responsive embed-responsive-16by9">
|
||||||
|
<iframe class="embed-responsive-item" src="/images/second-build.webm" allowfullscreen></iframe>
|
||||||
|
</div><p>The new build system retains the modular and hierarchical structure of the previous build system. On the other hand, the new build system provides several new flags to control the build. The new build system forces out-of-source build instead of the previous in-source builds. This keeps the source clutter-free and reduces the chance of accidentally deleting source files. <em>Testing still needs some in-source artifacts, this will be solved once all the tests are fixed according to the new build system.</em></p>
|
||||||
|
<p>Each agent is a complete CMake sub-project with its independent configuration for building, installing, and testing. That means a single agent can be built and installed separately and even removed from the default build without breaking other builds. The directory structure is as below.</p>
|
||||||
|
<div class="highlight"><pre><span></span>.
|
||||||
|
├── build <span class="c1"># temporary directory for build artifacts</span>
|
||||||
|
├── cmake <span class="c1"># CMake modules for FOSSology</span>
|
||||||
|
│ ├── FoPackaging.cmake <span class="c1"># CMake Packaging configurations</span>
|
||||||
|
│ ├── FoUtilities.cmake <span class="c1"># Custom CMake utilities</span>
|
||||||
|
│ ├── FoVersionFile.cmake <span class="c1"># VERSION version.php CMake template file</span>
|
||||||
|
│ ├── SetDefaults.cmake <span class="c1"># CMake defaults for this project</span>
|
||||||
|
│ ├── TestInstall.make.in <span class="c1"># Template makefile for install during tests</span>
|
||||||
|
│ └── VERSION.in <span class="c1"># VERSION file template</span>
|
||||||
|
├── src
|
||||||
|
│ ├── agent-1 <span class="c1"># Agent sub-project</span>
|
||||||
|
│ │ ├── agent <span class="c1"># Agent&#39;s source code directory</span>
|
||||||
|
│ │ │ ├── agent-source-code
|
||||||
|
│ │ │ └── CMakeLists.txt
|
||||||
|
│ │ ├── agent_tests <span class="c1"># Agent&#39;s test directory</span>
|
||||||
|
│ │ │ ├── Unit
|
||||||
|
│ │ │ ├── Functional
|
||||||
|
│ │ │ └── CMakeLists.txt
|
||||||
|
│ │ ├── ui <span class="c1"># Agent&#39;s UI source code</span>
|
||||||
|
│ │ │ ├── templates
|
||||||
|
│ │ │ └── agent-ui-code
|
||||||
|
│ │ └── CMakeLists.txt <span class="c1"># Agent&#39;s top-level CMake configuration</span>
|
||||||
|
: :
|
||||||
|
│ ├── other agents
|
||||||
|
: :
|
||||||
|
│ └── CMakeLists.txt <span class="c1"># Source intermediate CMake configuration</span>
|
||||||
|
:
|
||||||
|
├── other directories and files
|
||||||
|
:
|
||||||
|
└── CMakeLists.txt <span class="c1"># FOSSology Top-level CMake configuration</span>
|
||||||
|
</pre></div>
|
||||||
|
<p>The <code>cmake</code> directory contains customized CMake modules and templates for FOSSology. This directory is required for all the operations. The general workflow of the new build system as well as how to use it is described below.</p>
|
||||||
|
<ol class="arabic">
|
||||||
|
<li><p class="first">Since the new build system is still in review. You must fork FOSSology and pull the <a class="reference external" href="https://github.com/fossology/fossology/pull/2075">#2075</a> pull request branch. Once you are in FOSSology root, run these commands.</p>
|
||||||
|
<blockquote>
|
||||||
|
<div class="highlight"><pre><span></span>git fetch https://github.com/avinal/fossology avinal/feat/buildsystem:buildsystem
|
||||||
|
git checkout buildsystem
|
||||||
|
</pre></div>
|
||||||
|
</blockquote>
|
||||||
|
</li>
|
||||||
|
<li><p class="first">The first step towards building is to create a temporary directory for storing intermediate files and build artifacts. By convention we use a directory named <code>build</code>, but you can use any name. (<strong>NOTE: For testing do not use other names</strong>)</p>
|
||||||
|
<blockquote>
|
||||||
|
<div class="highlight"><pre><span></span>mkdir build
|
||||||
|
<span class="nb">cd</span> build
|
||||||
|
</pre></div>
|
||||||
|
</blockquote>
|
||||||
|
</li>
|
||||||
|
<li><p class="first">In the next steps, we will configure the CMake project and generate the required configurations. You can use several flags to control the build. Given below are the flags available for this project.</p>
|
||||||
|
<blockquote>
|
||||||
|
<table border="1" class="table table-sm table-hover table-bordered table-responsive docutils">
|
||||||
|
<colgroup>
|
||||||
|
<col width="35%" />
|
||||||
|
<col width="44%" />
|
||||||
|
<col width="20%" />
|
||||||
|
</colgroup>
|
||||||
|
<thead valign="bottom">
|
||||||
|
<tr><th class="head">CMake Flags</th>
|
||||||
|
<th class="head">Description</th>
|
||||||
|
<th class="head">Default</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody valign="top">
|
||||||
|
<tr><td><strong>-DCMAKE_INSTALL_PREFIX=&lt;path&gt;</strong></td>
|
||||||
|
<td>Sets the install prefix.</td>
|
||||||
|
<td><code>/usr/local</code></td>
|
||||||
|
</tr>
|
||||||
|
<tr><td><strong>-DAGENTS=&quot;agent1;agent2...&quot;</strong></td>
|
||||||
|
<td>Only configure these agents.</td>
|
||||||
|
<td>ALL AGENTS</td>
|
||||||
|
</tr>
|
||||||
|
<tr><td><strong>-DOFFLINE=&lt;ON/OFF&gt;</strong></td>
|
||||||
|
<td>Controls vendor generation, ON=NO</td>
|
||||||
|
<td><strong>OFF</strong></td>
|
||||||
|
</tr>
|
||||||
|
<tr><td><p class="first"><strong>-DCMAKE_BUILD_TYPE=&lt;type&gt;</strong></p>
|
||||||
|
<blockquote class="last">
|
||||||
|
<ul class="simple">
|
||||||
|
<li>Controls build type aka
|
||||||
|
level optimisation</li>
|
||||||
|
</ul>
|
||||||
|
</blockquote>
|
||||||
|
</td>
|
||||||
|
<td><ul class="first last simple">
|
||||||
|
<li><code>Debug</code></li>
|
||||||
|
<li><code>Release</code></li>
|
||||||
|
<li><code>RelWithDebInfo</code></li>
|
||||||
|
<li><code>MinSizeRel</code></li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
<td><code>Debug</code></td>
|
||||||
|
</tr>
|
||||||
|
<tr><td><strong>-DTESTING=&lt;ON/OFF&gt;</strong></td>
|
||||||
|
<td>Controls testing config generation</td>
|
||||||
|
<td><strong>OFF</strong></td>
|
||||||
|
</tr>
|
||||||
|
<tr><td><strong>-DMONOPACK=&lt;ON/OFF&gt;</strong></td>
|
||||||
|
<td>Package adj2nest and ununpack seperately</td>
|
||||||
|
<td><strong>OFF</strong></td>
|
||||||
|
</tr>
|
||||||
|
<tr><td><strong>-GNinja</strong></td>
|
||||||
|
<td>Use Ninja instead of Unix Makefiles</td>
|
||||||
|
<td><em>Unix MakeFiles</em></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<p>There are lots of inbuilt CMake command-line options you can see them in the official <a class="reference external" href="https://cmake.org/cmake/help/v3.10/manual/cmake.1.html">documentation</a>. Once you have chosen your flags we can now configure the project using the following commands.</p>
|
||||||
|
<div class="highlight"><pre><span></span><span class="c1"># From build folder</span>
|
||||||
|
<span class="nb">cd</span> &lt;name-of-build-directory&gt;
|
||||||
|
cmake &lt;flags&gt; ..
|
||||||
|
</pre></div>
|
||||||
|
</blockquote>
|
||||||
|
</li>
|
||||||
|
<li><p class="first">The next step is to build the project. You can use parallel jobs to build faster. For more options you can type <code>cmake --help</code> or <code>make --help</code> or <code>ninja --help</code>.</p>
|
||||||
|
<blockquote>
|
||||||
|
<div class="highlight"><pre><span></span><span class="c1"># Common build command for all generators,</span>
|
||||||
|
<span class="c1"># Default number of parallel builds depends on generator used</span>
|
||||||
|
cmake --build . --parallel &lt;no-of-processes&gt;
|
||||||
|
|
||||||
|
<span class="c1"># For Unix Makefiles, no parallel build by default</span>
|
||||||
|
make -j &lt;no-of-processes&gt;
|
||||||
|
|
||||||
|
<span class="c1"># For Ninja, 8+ parallel build by default (depends on system)</span>
|
||||||
|
ninja -j &lt;no-of-processes&gt;
|
||||||
|
</pre></div>
|
||||||
|
</blockquote>
|
||||||
|
</li>
|
||||||
|
<li><p class="first">Installing is also as easy as building. You can choose to install only certain components even if you have built the whole project. If you directly invoke the install command without building the project, it will automatically build the project first.</p>
|
||||||
|
<blockquote>
|
||||||
|
<div class="highlight"><pre><span></span><span class="c1"># For Unix Makefiles</span>
|
||||||
|
make install
|
||||||
|
|
||||||
|
<span class="c1"># For Ninja</span>
|
||||||
|
ninja install
|
||||||
|
</pre></div>
|
||||||
|
</blockquote>
|
||||||
|
</li>
|
||||||
|
<li><p class="first">While testing has some issues, most of the testing is working fine. For now, you must build and run any test from the FOSSology root directory only. You can choose to configure a single agent if you want to test one agent only. See <code>ctest --help</code> for controlling test runs.</p>
|
||||||
|
<blockquote>
|
||||||
|
<div class="highlight"><pre><span></span><span class="c1"># Common testing command</span>
|
||||||
|
ctest --parallel &lt;no-of-processes&gt;
|
||||||
|
|
||||||
|
<span class="c1"># For Unix Makefiles</span>
|
||||||
|
make <span class="nb">test</span>
|
||||||
|
|
||||||
|
<span class="c1"># For Ninja</span>
|
||||||
|
ninja <span class="nb">test</span>
|
||||||
|
</pre></div>
|
||||||
|
</blockquote>
|
||||||
|
</li>
|
||||||
|
<li><p class="first">You can package FOSSology, the packaging currently lacks copyright and conf files. But for testing purposes, you can use the following commands. Similar to installing, if you run the package command without building the project, it will automatically build the project first. See <code>cpack --help</code> for more packaging options.</p>
|
||||||
|
<blockquote>
|
||||||
|
<div class="highlight"><pre><span></span><span class="c1"># Common testing command</span>
|
||||||
|
cpack
|
||||||
|
|
||||||
|
<span class="c1"># For Unix Makefiles</span>
|
||||||
|
make package
|
||||||
|
|
||||||
|
<span class="c1"># For Ninja</span>
|
||||||
|
ninja package
|
||||||
|
</pre></div>
|
||||||
|
</blockquote>
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="known-issues-and-drawbacks">
|
||||||
|
<h2>Known Issues and Drawbacks</h2>
|
||||||
|
<p>Although the transition from Makefiles to CMake and Travis CI to GitHub Actions is almost complete and working as expected. But it is not free of drawbacks and issues. This section outlines the known issues at the time of writing.</p>
|
||||||
|
<img alt="A Bug Meme" class="float-md-right rounded border border-info ml-3" src="https://imgs.xkcd.com/comics/conference_question.png" style="width: 350px;" />
|
||||||
|
<ul class="simple">
|
||||||
|
<li>Coverage builds may fail with linking errors.</li>
|
||||||
|
<li>Packaging prefix is the same as the install prefix. This requires the developer to set the install prefix manually before packaging to produce packages with the correct directory structure.</li>
|
||||||
|
<li>Testing and packaging must be used from the FOSSology root directory. Not doing so may or may not configure the project as intended.</li>
|
||||||
|
<li>Previously tests were written hardcoded for the Makefiles. But new build system requires all artifacts to be generated in a separate directory. This required me to add symbolic links wherever a generated script or file is expected. Tests can still leave some artifacts inside source folders.</li>
|
||||||
|
<li>There is no easy way to install a particular agent from the FOSSology root directory.</li>
|
||||||
|
<li>Packages don't contain copyright, readme, and license files. CMake doesn't provide a way to include these files. This is being tracked by issue <a class="reference external" href="https://gitlab.kitware.com/cmake/cmake/-/issues/21832">#21832</a>.</li>
|
||||||
|
<li>While packaging the symbolic links may or may not be dereferenced and hence results in copying the folder too in the target directory.</li>
|
||||||
|
<li>Running tests locally may require switching to <code>fossy</code> user.</li>
|
||||||
|
<li>While configured for testing, it may give permission errors.</li>
|
||||||
|
<li>Scheduler, Ununpack, and Delagent unit and functional tests are not working. I have added an issue <a class="reference external" href="https://github.com/fossology/fossology/issues/2084">#2084</a> to track the progress on fixing these tests.</li>
|
||||||
|
<li>CMake doesn't generate uninstall targets. The closest thing to uninstall is <a class="reference external" href="https://gitlab.kitware.com/cmake/community/-/wikis/FAQ#can-i-do-make-uninstall-with-cmake">this snippet</a>. This will be later added to the FOSSology.</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="challenges-faced">
|
||||||
|
<h2>Challenges Faced</h2>
|
||||||
|
<p>While this whole project was challenging, some aspects of it were unforeseen and more challenging. When I decided to go on with this project I just had enough CMake knowledge to write a configuration for a very small project. I had never used CMake on this big scale. On the other side, the FOSSology community is largely unknown to CMake so for all of us it was learned, practiced, and implement. With support from mentors, I was able to overcome this challenge with flying colors.</p>
|
||||||
|
<p>The other challenge was to understand the old build system, how they are all connected and what is the flow. The complexity can be imagined by the fact that the most of code and configurations were written in the decade before the last decade and haven't changed much since then.</p>
|
||||||
|
<p>The most challenging task was to make tests work with the new build system. Since tests were mostly hardcoded and the new build system refactored many of the files and directory, the tests were failing initially. The testing part took me the most time. All thanks to my mentor Gaurav and my friend Sarita I was able to hack them to suit the new build system.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="related-resources-and-links">
|
||||||
|
<h2>Related Resources and Links</h2>
|
||||||
|
<ul class="simple">
|
||||||
|
<li>Fix FOSSology agent tests issue <a class="reference external" href="https://github.com/fossology/fossology/issues/2084">#2084</a></li>
|
||||||
|
<li>feat(CI): Migrate API docs generation and deployment to GitHub Actions pull request <a class="reference external" href="https://github.com/fossology/fossology/pull/1917">#1917</a></li>
|
||||||
|
<li>feat(CI): Migrate Static Checks and Analysis to GitHub Actions from Travis CI <a class="reference external" href="https://github.com/fossology/fossology/pull/1919">#1919</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="future-development-plans">
|
||||||
|
<h2>Future Development Plans</h2>
|
||||||
|
<p>There is a lot to do with the new build system and CI and it will probably take a year or to reach a maturity point. I was able to meet most of the goals but some of them are remaining.</p>
|
||||||
|
<ul class="simple">
|
||||||
|
<li>Fix the tests, probably renovate them from the ground up.</li>
|
||||||
|
<li>Find a hack for packaging problems.</li>
|
||||||
|
<li>Improve and optimize the build.</li>
|
||||||
|
<li>Modernise the source code, remove old, bloated code and replace them according to new standards.</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="what-did-i-learn-from-this-project">
|
||||||
|
<h2>What did I learn from this project?</h2>
|
||||||
|
<p>This Google Summer of Code was the busiest time of my life for all good reasons. I learned a lot about license compliance and how it all works in the software industry. The next big thing is CMake. As I mentioned I was just a novice user of CMake. Now I am confident that given any other large project I will be able to migrate it/improve it. I got to learn PHP, of which I did not know a single word before GSoC. And finally, I learned about packing and testing. I had these courses but implementing them myself and fixing them was a wholesome experience.</p>
|
||||||
|
<p>Other than that I improved on my communication and presentation skills. Collaborating with fellow participants was one of the great things that happened during GSoC.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="acknowledgments">
|
||||||
|
<h2>Acknowledgments</h2>
|
||||||
|
<p>Google Summer of Code is the best thing that has happened to me this year so far. Although there are numerous people to say thanks to, I want to mention key people who were my motivation and support during this period.</p>
|
||||||
|
<p>First of all, I want to thank and appreciate my mentors <a class="reference external" href="https://github.com/GMishx">Gaurav Mishra</a>, <a class="reference external" href="https://github.com/mcjaeger">Michael C. Jaeger</a>, <a class="reference external" href="https://github.com/ag4ums">Anupam Ghosh</a>, and <a class="reference external" href="https://github.com/shaheemazmalmmd">Shaheem Azmal M MD</a>. Without the help and support from them, all this would not have been possible. They are very polite, knowledgeable, and helpful.</p>
|
||||||
|
<p>I want to thank my friend and <abbr title="Integrating ScanCode Toolkit to FOSSology">fellow participant</abbr> <a class="reference external" href="https://github.com/itssingh">Sarita</a>. Thank you for being a collaborator, support, and motivation for attempting GSoC.</p>
|
||||||
|
<p>Finally, I want to thank, my family and friends. I got to meet many awesome developers as my fellow participants from around the world, I wish we will do more collaboration in the future.</p>
|
||||||
|
</div>
|
||||||
|
</content><category term="report"></category><category term="gsoc"></category><category term="FOSSology"></category></entry></feed>
|
||||||
|
Before Width: | Height: | Size: 145 KiB After Width: | Height: | Size: 145 KiB |
|
Before Width: | Height: | Size: 141 KiB After Width: | Height: | Size: 141 KiB |
|
Before Width: | Height: | Size: 903 B After Width: | Height: | Size: 903 B |
|
Before Width: | Height: | Size: 184 KiB After Width: | Height: | Size: 184 KiB |
|
Before Width: | Height: | Size: 83 KiB After Width: | Height: | Size: 83 KiB |
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 372 KiB After Width: | Height: | Size: 372 KiB |
|
Before Width: | Height: | Size: 163 KiB After Width: | Height: | Size: 163 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 905 KiB After Width: | Height: | Size: 905 KiB |
|
Before Width: | Height: | Size: 7.0 KiB After Width: | Height: | Size: 7.0 KiB |
|
Before Width: | Height: | Size: 2.4 MiB After Width: | Height: | Size: 2.4 MiB |
|
Before Width: | Height: | Size: 434 B After Width: | Height: | Size: 434 B |
@@ -0,0 +1,214 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<!-- Required meta tags -->
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
|
||||||
|
<title>Be My SpaceTime | 눈치
|
||||||
|
</title>
|
||||||
|
<link rel="canonical" href="https://avinal.space/index.html">
|
||||||
|
|
||||||
|
<link rel="apple-touch-icon" href="https://avinal.space/apple-touch-icon.png" sizes="180x180">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-32x32.png" sizes="32x32">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-16x16.png" sizes="16x16">
|
||||||
|
<link rel="manifest" href="https://avinal.space/site.webmanifest">
|
||||||
|
<meta name="theme-color" content="#333333">
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/bootstrap.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/all.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/pygments/manni.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/theme.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/space.css">
|
||||||
|
|
||||||
|
<link rel="alternate" type="application/atom+xml" title="Full Atom Feed" href="https://avinal.space/feeds/all.atom.xml">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body style="font-family:Overpass Mono,monospace;">
|
||||||
|
<header class="header star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container text-center">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<h1 class="title" style="font-family: ExodarOut;font-weight: lighter;"><a href="https://avinal.space/">Be My SpaceTime</a>
|
||||||
|
</h1>
|
||||||
|
<!--
|
||||||
|
<p class="text-muted">눈치</p>
|
||||||
|
-->
|
||||||
|
<ul class="list-inline">
|
||||||
|
<li class="list-inline-item"><a href="https://gsoc.avinal.space" target="_blank">gsoc</a></li>
|
||||||
|
<li class="list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/pages/about-me.html">About Me</a></li>
|
||||||
|
<li class=" list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-github" href="https://github.com/avinal" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-linkedin" href="https://www.linkedin.com/in/avinal/" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-instagram" href="https://instagram.com/avinal.k" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-calendar" href="https://meet.avinal.space" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fa fa-envelope" href="mailto:blog@avinal.space" target="_blank"></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div> </div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<div class="main">
|
||||||
|
<div class="container">
|
||||||
|
<h1>Articles
|
||||||
|
</h1>
|
||||||
|
<hr>
|
||||||
|
<article class="row teaser">
|
||||||
|
<header class="col-sm-4 text-muted">
|
||||||
|
<ul>
|
||||||
|
<li title="2022-02-27T20:47:00+05:30">
|
||||||
|
<i class="fas fa-clock"></i>
|
||||||
|
Sun 27 February 2022
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<i class="fas fa-folder-open"></i>
|
||||||
|
<a href="https://avinal.space/category/development.html">development</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</header>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<h4 class="title">
|
||||||
|
<a href="https://avinal.space/posts/development/lovely-dangerous-things-redhat.html">Developing Minimal Tekton Server <a class="reference external image-reference" href="https://github.com/MiniTeks"><img alt="mks_logo" class="align-middle" src="/images/mks_logo.png" style="width: 1.5em;" /></a></a>
|
||||||
|
</h4>
|
||||||
|
<div class="content">
|
||||||
|
We will be designing and implementing an application that will be talking to Tekton APIs to create resources on a Kubernetes/OpenShift Cluster.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
<hr>
|
||||||
|
<article class="row teaser">
|
||||||
|
<header class="col-sm-4 text-muted">
|
||||||
|
<ul>
|
||||||
|
<li title="2022-02-25T20:47:00+05:30">
|
||||||
|
<i class="fas fa-clock"></i>
|
||||||
|
Fri 25 February 2022
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<i class="fas fa-folder-open"></i>
|
||||||
|
<a href="https://avinal.space/category/development.html">development</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</header>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<h4 class="title">
|
||||||
|
<a href="https://avinal.space/posts/development/i-am-loving-it-redhat.html">My internship at Red Hat <a class="reference external image-reference" href="https://redhat.com"><img alt="redhat_logo" class="align-middle" src="/images/redhat_logo.png" style="width: 1.5em;" /></a></a>
|
||||||
|
</h4>
|
||||||
|
<div class="content">
|
||||||
|
I made it to the Red Hat as a DevTools intern. This post is about onboarding and how I prepared myself for working on the actual project.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
<hr>
|
||||||
|
<article class="row teaser">
|
||||||
|
<header class="col-sm-4 text-muted">
|
||||||
|
<ul>
|
||||||
|
<li title="2021-08-19T23:07:00+05:30">
|
||||||
|
<i class="fas fa-clock"></i>
|
||||||
|
Thu 19 August 2021
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<i class="fas fa-folder-open"></i>
|
||||||
|
<a href="https://avinal.space/category/report.html">report</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</header>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<h4 class="title">
|
||||||
|
<a href="https://avinal.space/posts/report/final-evaluation.html">Google Summer of Code 2021</a>
|
||||||
|
</h4>
|
||||||
|
<div class="content">
|
||||||
|
This is the final report of my Google Summer of Code 2021 at The FOSSology Project.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
<hr>
|
||||||
|
<article class="row teaser">
|
||||||
|
<header class="col-sm-4 text-muted">
|
||||||
|
<ul>
|
||||||
|
<li title="2021-02-14T22:47:00+05:30">
|
||||||
|
<i class="fas fa-clock"></i>
|
||||||
|
Sun 14 February 2021
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<i class="fas fa-folder-open"></i>
|
||||||
|
<a href="https://avinal.space/category/development.html">development</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</header>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<h4 class="title">
|
||||||
|
<a href="https://avinal.space/posts/development/rst-guide.html">reStructuredText in GitHub</a>
|
||||||
|
</h4>
|
||||||
|
<div class="content">
|
||||||
|
reStructuredText syntax
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
<hr>
|
||||||
|
<article class="row teaser">
|
||||||
|
<header class="col-sm-4 text-muted">
|
||||||
|
<ul>
|
||||||
|
<li title="2021-02-02T21:47:00+05:30">
|
||||||
|
<i class="fas fa-clock"></i>
|
||||||
|
Tue 02 February 2021
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<i class="fas fa-folder-open"></i>
|
||||||
|
<a href="https://avinal.space/category/development.html">development</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</header>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<h4 class="title">
|
||||||
|
<a href="https://avinal.space/posts/development/wakatime-readme.html">How I implemented WakaTime embeddable Coding Graph GHA?</a>
|
||||||
|
</h4>
|
||||||
|
<div class="content">
|
||||||
|
f you use WakaTime to track your coding activity. You can add that to your README as a bar graph or embed it in your blog/portfolio. Just add this action to any of your repositories and there you have it.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
<hr>
|
||||||
|
<ul class="pagination">
|
||||||
|
<li class="page-item">
|
||||||
|
<span class="page-link">1 of 3</span>
|
||||||
|
</li>
|
||||||
|
<li class="page-item">
|
||||||
|
<a class="page-link" href="https://avinal.space/index2.html">
|
||||||
|
<span aria-hidden="true">»</span>
|
||||||
|
<span class="sr-only">Next</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<footer class="footer star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<ul class="col-sm-6 list-inline">
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/archives.html">Archives</a></li>
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/categories.html">Categories</a></li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/tags.html">Tags</a></li>
|
||||||
|
</ul>
|
||||||
|
<p class="col-sm-6 text-sm-right text-muted">Created with <i class="fa fa-heart" style="color: red;"></i> by <a
|
||||||
|
href="https://github.com/avinal" target="_blank">Avinal</a>
|
||||||
|
</p>
|
||||||
|
</div> </div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,220 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<!-- Required meta tags -->
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
|
||||||
|
<title>Be My SpaceTime | 눈치
|
||||||
|
</title>
|
||||||
|
<link rel="canonical" href="https://avinal.space/index2.html">
|
||||||
|
|
||||||
|
<link rel="apple-touch-icon" href="https://avinal.space/apple-touch-icon.png" sizes="180x180">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-32x32.png" sizes="32x32">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-16x16.png" sizes="16x16">
|
||||||
|
<link rel="manifest" href="https://avinal.space/site.webmanifest">
|
||||||
|
<meta name="theme-color" content="#333333">
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/bootstrap.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/all.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/pygments/manni.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/theme.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/space.css">
|
||||||
|
|
||||||
|
<link rel="alternate" type="application/atom+xml" title="Full Atom Feed" href="https://avinal.space/feeds/all.atom.xml">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body style="font-family:Overpass Mono,monospace;">
|
||||||
|
<header class="header star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container text-center">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<h1 class="title" style="font-family: ExodarOut;font-weight: lighter;"><a href="https://avinal.space/">Be My SpaceTime</a>
|
||||||
|
</h1>
|
||||||
|
<!--
|
||||||
|
<p class="text-muted">눈치</p>
|
||||||
|
-->
|
||||||
|
<ul class="list-inline">
|
||||||
|
<li class="list-inline-item"><a href="https://gsoc.avinal.space" target="_blank">gsoc</a></li>
|
||||||
|
<li class="list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/pages/about-me.html">About Me</a></li>
|
||||||
|
<li class=" list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-github" href="https://github.com/avinal" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-linkedin" href="https://www.linkedin.com/in/avinal/" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-instagram" href="https://instagram.com/avinal.k" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-calendar" href="https://meet.avinal.space" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fa fa-envelope" href="mailto:blog@avinal.space" target="_blank"></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div> </div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<div class="main">
|
||||||
|
<div class="container">
|
||||||
|
<h1>Articles
|
||||||
|
</h1>
|
||||||
|
<hr>
|
||||||
|
<article class="row teaser">
|
||||||
|
<header class="col-sm-4 text-muted">
|
||||||
|
<ul>
|
||||||
|
<li title="2021-01-26T16:47:00+05:30">
|
||||||
|
<i class="fas fa-clock"></i>
|
||||||
|
Tue 26 January 2021
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<i class="fas fa-folder-open"></i>
|
||||||
|
<a href="https://avinal.space/category/development.html">development</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</header>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<h4 class="title">
|
||||||
|
<a href="https://avinal.space/posts/development/twilight-blog.html">How I Created This Blog?</a>
|
||||||
|
</h4>
|
||||||
|
<div class="content">
|
||||||
|
As you would have guessed by now, this blog is created using one such awesome SSG named Pelican. Pelican is simple, customizable and offers lots of themes and plugins. Pelican is python based SSG and is available through pip.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
<hr>
|
||||||
|
<article class="row teaser">
|
||||||
|
<header class="col-sm-4 text-muted">
|
||||||
|
<ul>
|
||||||
|
<li title="2021-01-09T22:29:00+05:30">
|
||||||
|
<i class="fas fa-clock"></i>
|
||||||
|
Sat 09 January 2021
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<i class="fas fa-folder-open"></i>
|
||||||
|
<a href="https://avinal.space/category/prime.html">prime</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</header>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<h4 class="title">
|
||||||
|
<a href="https://avinal.space/posts/prime/prime1.html">Introduction to Prime Numbers</a>
|
||||||
|
</h4>
|
||||||
|
<div class="content">
|
||||||
|
A prime is a positive integer p having exactly two positive divisors, namely 1 and p. An integer n is composite if n > 1 and n is not prime. (The number 1 is considered neither prime nor composite.)
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
<hr>
|
||||||
|
<article class="row teaser">
|
||||||
|
<header class="col-sm-4 text-muted">
|
||||||
|
<ul>
|
||||||
|
<li title="2021-01-04T21:47:00+05:30">
|
||||||
|
<i class="fas fa-clock"></i>
|
||||||
|
Mon 04 January 2021
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<i class="fas fa-folder-open"></i>
|
||||||
|
<a href="https://avinal.space/category/blog.html">blog</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</header>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<h4 class="title">
|
||||||
|
<a href="https://avinal.space/posts/blog/hrt-interview-1.html"><abbr title="Hudson River Trading">HRT</abbr> Systems Internship Interview Experience</a>
|
||||||
|
</h4>
|
||||||
|
<div class="content">
|
||||||
|
I applied for Systems Internship - Summer 2021 back in December 2020 at Hudson River Trading , New York.....Questions were clear and of medium level. But they were designed in such a way that you must know the basics before you could attempt.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
<hr>
|
||||||
|
<article class="row teaser">
|
||||||
|
<header class="col-sm-4 text-muted">
|
||||||
|
<ul>
|
||||||
|
<li title="2020-12-31T19:07:00+05:30">
|
||||||
|
<i class="fas fa-clock"></i>
|
||||||
|
Thu 31 December 2020
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<i class="fas fa-folder-open"></i>
|
||||||
|
<a href="https://avinal.space/category/development.html">development</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</header>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<h4 class="title">
|
||||||
|
<a href="https://avinal.space/posts/development/wsl1.html">Move WSL 2 Safely to another Drive</a>
|
||||||
|
</h4>
|
||||||
|
<div class="content">
|
||||||
|
It is real pain when you have small SSD and Windows Subsystem for Linux (WSL) is growing exponentially in size. There is no easy way to move the WSL installation to another drive. Here in this blog I will discuss how to tackle this problem with bite size steps.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
<hr>
|
||||||
|
<article class="row teaser">
|
||||||
|
<header class="col-sm-4 text-muted">
|
||||||
|
<ul>
|
||||||
|
<li title="2020-12-01T23:47:00+05:30">
|
||||||
|
<i class="fas fa-clock"></i>
|
||||||
|
Tue 01 December 2020
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<i class="fas fa-folder-open"></i>
|
||||||
|
<a href="https://avinal.space/category/development.html">development</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</header>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<h4 class="title">
|
||||||
|
<a href="https://avinal.space/posts/development/vlc-gsod-report.html">Create the VLC User Documentation for one Mobile Port(Android)</a>
|
||||||
|
</h4>
|
||||||
|
<div class="content">
|
||||||
|
The project was to Create the VLC User Documentation for Android Mobile Port which was previously hosted on VLC’s wiki pages. The major portion of this was to start everything from scratch including chapter separation, section organization.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
<hr>
|
||||||
|
<ul class="pagination">
|
||||||
|
<li class="page-item">
|
||||||
|
<a class="page-link" href="https://avinal.space/index.html">
|
||||||
|
<span aria-hidden="true">«</span>
|
||||||
|
<span class="sr-only">Previous</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li class="page-item">
|
||||||
|
<span class="page-link">2 of 3</span>
|
||||||
|
</li>
|
||||||
|
<li class="page-item">
|
||||||
|
<a class="page-link" href="https://avinal.space/index3.html">
|
||||||
|
<span aria-hidden="true">»</span>
|
||||||
|
<span class="sr-only">Next</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<footer class="footer star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<ul class="col-sm-6 list-inline">
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/archives.html">Archives</a></li>
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/categories.html">Categories</a></li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/tags.html">Tags</a></li>
|
||||||
|
</ul>
|
||||||
|
<p class="col-sm-6 text-sm-right text-muted">Created with <i class="fa fa-heart" style="color: red;"></i> by <a
|
||||||
|
href="https://github.com/avinal" target="_blank">Avinal</a>
|
||||||
|
</p>
|
||||||
|
</div> </div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,168 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<!-- Required meta tags -->
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
|
||||||
|
<title>Be My SpaceTime | 눈치
|
||||||
|
</title>
|
||||||
|
<link rel="canonical" href="https://avinal.space/index3.html">
|
||||||
|
|
||||||
|
<link rel="apple-touch-icon" href="https://avinal.space/apple-touch-icon.png" sizes="180x180">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-32x32.png" sizes="32x32">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-16x16.png" sizes="16x16">
|
||||||
|
<link rel="manifest" href="https://avinal.space/site.webmanifest">
|
||||||
|
<meta name="theme-color" content="#333333">
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/bootstrap.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/all.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/pygments/manni.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/theme.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/space.css">
|
||||||
|
|
||||||
|
<link rel="alternate" type="application/atom+xml" title="Full Atom Feed" href="https://avinal.space/feeds/all.atom.xml">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body style="font-family:Overpass Mono,monospace;">
|
||||||
|
<header class="header star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container text-center">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<h1 class="title" style="font-family: ExodarOut;font-weight: lighter;"><a href="https://avinal.space/">Be My SpaceTime</a>
|
||||||
|
</h1>
|
||||||
|
<!--
|
||||||
|
<p class="text-muted">눈치</p>
|
||||||
|
-->
|
||||||
|
<ul class="list-inline">
|
||||||
|
<li class="list-inline-item"><a href="https://gsoc.avinal.space" target="_blank">gsoc</a></li>
|
||||||
|
<li class="list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/pages/about-me.html">About Me</a></li>
|
||||||
|
<li class=" list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-github" href="https://github.com/avinal" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-linkedin" href="https://www.linkedin.com/in/avinal/" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-instagram" href="https://instagram.com/avinal.k" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-calendar" href="https://meet.avinal.space" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fa fa-envelope" href="mailto:blog@avinal.space" target="_blank"></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div> </div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<div class="main">
|
||||||
|
<div class="container">
|
||||||
|
<h1>Articles
|
||||||
|
</h1>
|
||||||
|
<hr>
|
||||||
|
<article class="row teaser">
|
||||||
|
<header class="col-sm-4 text-muted">
|
||||||
|
<ul>
|
||||||
|
<li title="2020-09-28T22:47:00+05:30">
|
||||||
|
<i class="fas fa-clock"></i>
|
||||||
|
Mon 28 September 2020
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<i class="fas fa-folder-open"></i>
|
||||||
|
<a href="https://avinal.space/category/blog.html">blog</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</header>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<h4 class="title">
|
||||||
|
<a href="https://avinal.space/posts/blog/this-is-for-you.html">The Interstellar Twilight</a>
|
||||||
|
</h4>
|
||||||
|
<div class="content">
|
||||||
|
If in the Twilight of dreams we should meet once more, we shell talk again together and I shall sing to you a lullaby till you sleep again to meet me in the Twilight of another dream.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
<hr>
|
||||||
|
<article class="row teaser">
|
||||||
|
<header class="col-sm-4 text-muted">
|
||||||
|
<ul>
|
||||||
|
<li title="2019-09-21T15:47:00+05:30">
|
||||||
|
<i class="fas fa-clock"></i>
|
||||||
|
Sat 21 September 2019
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<i class="fas fa-folder-open"></i>
|
||||||
|
<a href="https://avinal.space/category/article.html">article</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</header>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<h4 class="title">
|
||||||
|
<a href="https://avinal.space/posts/article/for-sunshine.html">प्रेम रतन धन पायो</a>
|
||||||
|
</h4>
|
||||||
|
<div class="content">
|
||||||
|
टूटता तारा देखना एक अलौकिक अनुभव है। हिमाद्रि के छत से आसमान कुछ ज्यादा ही करीब प्रतीत होता है । लोग सदियों से हिमालय को पूजते आयें हैं । दादा-दादी कहा करते थे ये जिंदा पहाड़ हैं । सारी बातें सुनते हैं लोगों की । उनके दुख दर्द दूर करते हैं, ये देवता हैं ।
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
<hr>
|
||||||
|
<article class="row teaser">
|
||||||
|
<header class="col-sm-4 text-muted">
|
||||||
|
<ul>
|
||||||
|
<li title="2012-02-27T22:47:00+05:30">
|
||||||
|
<i class="fas fa-clock"></i>
|
||||||
|
Mon 27 February 2012
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<i class="fas fa-folder-open"></i>
|
||||||
|
<a href="https://avinal.space/category/article.html">article</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</header>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<h4 class="title">
|
||||||
|
<a href="https://avinal.space/posts/article/red-big-ants.html">The Big Red Ants</a>
|
||||||
|
</h4>
|
||||||
|
<div class="content">
|
||||||
|
In a bird’s eye view if we see around us, ants are the common and tiniest living entitiy seen by naked eye. One of them are the big red ants, in my view they are unique from others in two ways, first they live on trees and second their anteenas are too long and bent in middle, seems like their fore legs. Their mandible (mouth) seems like eagle’s beak.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
<hr>
|
||||||
|
<ul class="pagination">
|
||||||
|
<li class="page-item">
|
||||||
|
<a class="page-link" href="https://avinal.space/index2.html">
|
||||||
|
<span aria-hidden="true">«</span>
|
||||||
|
<span class="sr-only">Previous</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li class="page-item">
|
||||||
|
<span class="page-link">3 of 3</span>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<footer class="footer star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<ul class="col-sm-6 list-inline">
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/archives.html">Archives</a></li>
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/categories.html">Categories</a></li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/tags.html">Tags</a></li>
|
||||||
|
</ul>
|
||||||
|
<p class="col-sm-6 text-sm-right text-muted">Created with <i class="fa fa-heart" style="color: red;"></i> by <a
|
||||||
|
href="https://github.com/avinal" target="_blank">Avinal</a>
|
||||||
|
</p>
|
||||||
|
</div> </div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
|
Before Width: | Height: | Size: 4.4 KiB After Width: | Height: | Size: 4.4 KiB |
|
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 4.3 KiB |
|
Before Width: | Height: | Size: 9.1 KiB After Width: | Height: | Size: 9.1 KiB |
|
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 3.2 KiB |
@@ -1,10 +0,0 @@
|
|||||||
#! /bin/bash
|
|
||||||
|
|
||||||
# install tools
|
|
||||||
sudo apt-get install -y git make python3 python3-pip python3-setuptools python3-wheel
|
|
||||||
|
|
||||||
# install dependencies
|
|
||||||
sudo pip3 install -r requirements.txt
|
|
||||||
|
|
||||||
# publish to github pages
|
|
||||||
sudo make github
|
|
||||||
@@ -0,0 +1,94 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<!-- Required meta tags -->
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
|
||||||
|
<title>About Me | Be My SpaceTime
|
||||||
|
</title>
|
||||||
|
<link rel="canonical" href="https://avinal.space/pages/about-me.html">
|
||||||
|
|
||||||
|
<link rel="apple-touch-icon" href="https://avinal.space/apple-touch-icon.png" sizes="180x180">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-32x32.png" sizes="32x32">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-16x16.png" sizes="16x16">
|
||||||
|
<link rel="manifest" href="https://avinal.space/site.webmanifest">
|
||||||
|
<meta name="theme-color" content="#333333">
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/bootstrap.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/all.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/pygments/manni.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/theme.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/space.css">
|
||||||
|
|
||||||
|
<link rel="alternate" type="application/atom+xml" title="Full Atom Feed" href="https://avinal.space/feeds/all.atom.xml">
|
||||||
|
|
||||||
|
<meta name="description" content="">
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body style="font-family:Overpass Mono,monospace;">
|
||||||
|
<header class="header star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container text-center">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<h1 class="title" style="font-family: ExodarOut;font-weight: lighter;"><a href="https://avinal.space/">Be My SpaceTime</a>
|
||||||
|
</h1>
|
||||||
|
<!--
|
||||||
|
<p class="text-muted">눈치</p>
|
||||||
|
-->
|
||||||
|
<ul class="list-inline">
|
||||||
|
<li class="list-inline-item"><a href="https://gsoc.avinal.space" target="_blank">gsoc</a></li>
|
||||||
|
<li class="list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/pages/about-me.html">About Me</a></li>
|
||||||
|
<li class=" list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-github" href="https://github.com/avinal" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-linkedin" href="https://www.linkedin.com/in/avinal/" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-instagram" href="https://instagram.com/avinal.k" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-calendar" href="https://meet.avinal.space" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fa fa-envelope" href="mailto:blog@avinal.space" target="_blank"></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div> </div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<div class="main">
|
||||||
|
<div class="container">
|
||||||
|
<h1>About Me
|
||||||
|
</h1>
|
||||||
|
<hr>
|
||||||
|
<article class="article">
|
||||||
|
<div class="content">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<footer class="footer star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<ul class="col-sm-6 list-inline">
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/archives.html">Archives</a></li>
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/categories.html">Categories</a></li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/tags.html">Tags</a></li>
|
||||||
|
</ul>
|
||||||
|
<p class="col-sm-6 text-sm-right text-muted">Created with <i class="fa fa-heart" style="color: red;"></i> by <a
|
||||||
|
href="https://github.com/avinal" target="_blank">Avinal</a>
|
||||||
|
</p>
|
||||||
|
</div> </div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
@@ -1,78 +0,0 @@
|
|||||||
#!/usr/bin/env python
|
|
||||||
# -*- coding: utf-8 -*- #
|
|
||||||
|
|
||||||
AUTHOR = 'Avinal'
|
|
||||||
HIDE_AUTHORS = True
|
|
||||||
SITENAME = 'Be My SpaceTime'
|
|
||||||
SITESUBTITLE = '눈치'
|
|
||||||
SITEURL = 'https://avinal.space'
|
|
||||||
THEME = 'themes/alchemy'
|
|
||||||
PATH = 'content'
|
|
||||||
MAIL = 'blog@avinal.space'
|
|
||||||
TIMEZONE = 'Asia/Kolkata'
|
|
||||||
DEFAULT_LANG = 'en'
|
|
||||||
|
|
||||||
# Feed generation is usually not desired when developing
|
|
||||||
FEED_ALL_ATOM = None
|
|
||||||
CATEGORY_FEED_ATOM = None
|
|
||||||
TRANSLATION_FEED_ATOM = None
|
|
||||||
AUTHOR_FEED_ATOM = None
|
|
||||||
AUTHOR_FEED_RSS = None
|
|
||||||
|
|
||||||
|
|
||||||
# URL Flexibility
|
|
||||||
ARTICLE_URL = 'posts/{category}/{slug}.html'
|
|
||||||
ARTICLE_SAVE_AS = ARTICLE_URL
|
|
||||||
PAGE_URL = 'pages/{slug}.html'
|
|
||||||
PAGE_SAVE_AS = PAGE_URL
|
|
||||||
|
|
||||||
# static content setting
|
|
||||||
STATIC_PATHS = ['extras', 'images']
|
|
||||||
EXTRA_PATH_METADATA = {
|
|
||||||
'extras/android-chrome-192x192.png': {'path': 'android-chrome-192x192.png'},
|
|
||||||
'extras/android-chrome-512x512.png': {'path': 'android-chrome-512x512.png'},
|
|
||||||
'extras/apple-touch-icon.png': {'path': 'apple-touch-icon.png'},
|
|
||||||
'extras/browserconfig.xml': {'path': 'browserconfig.xml'},
|
|
||||||
'extras/favicon-16x16.png': {'path': 'favicon-16x16.png'},
|
|
||||||
'extras/favicon-32x32.png': {'path': 'favicon-32x32.png'},
|
|
||||||
'extras/favicon.ico': {'path': 'favicon.ico'},
|
|
||||||
'extras/site.webmanifest': {'path': 'site.webmanifest'},
|
|
||||||
'extras/mstile-150x150.png': {'path': 'mstile-150x150.png'},
|
|
||||||
'extras/mstile-70x70.png': {'path': 'mstile-70x70.png'},
|
|
||||||
'extras/mstile-310x310.png': {'path': 'mstile-310x310.png'},
|
|
||||||
'extras/mstile-144x144.png': {'path': 'mstile-144x144.png'},
|
|
||||||
'extras/safari-pinned-tab.svg': {'path': 'safari-pinned-tab.svg'},
|
|
||||||
'extras/CNAME': {'path': 'CNAME'},
|
|
||||||
}
|
|
||||||
|
|
||||||
RFG_FAVICONS = True
|
|
||||||
|
|
||||||
LINKS = [
|
|
||||||
('gsoc', 'https://gsoc.avinal.space')
|
|
||||||
]
|
|
||||||
# icons
|
|
||||||
ICONS = [
|
|
||||||
('github', "https://github.com/avinal"),
|
|
||||||
('linkedin', 'https://www.linkedin.com/in/avinal/'),
|
|
||||||
('instagram', 'https://instagram.com/avinal.k'),
|
|
||||||
('calendar', 'https://meet.avinal.space')
|
|
||||||
]
|
|
||||||
|
|
||||||
DIRECT_TEMPLATES = ('index', 'tags', 'categories', 'archives', 'sitemap')
|
|
||||||
SITEMAP_SAVE_AS = 'sitemap.xml'
|
|
||||||
|
|
||||||
DEFAULT_PAGINATION = 5
|
|
||||||
|
|
||||||
PYGMENTS_STYLE = 'manni'
|
|
||||||
|
|
||||||
# Comments config
|
|
||||||
|
|
||||||
FORM_COMMENTS = True
|
|
||||||
|
|
||||||
FORM_PROPERTIES = {
|
|
||||||
'name' : 'entry.982725972',
|
|
||||||
'email':'entry.1652853191',
|
|
||||||
'link':'entry.1641222305',
|
|
||||||
'comment':'entry.1062656232',
|
|
||||||
'action':'https://docs.google.com/forms/u/0/d/e/1FAIpQLSfL9T8WBRm-Ac2uyu74lJXSYOqAuF6lLIUAulRArCsuiI1ZRQ/formResponse'
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,221 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<!-- Required meta tags -->
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
|
||||||
|
<title>प्रेम रतन धन पायो | Be My SpaceTime
|
||||||
|
</title>
|
||||||
|
<link rel="canonical" href="https://avinal.space/posts/article/for-sunshine.html">
|
||||||
|
|
||||||
|
<link rel="apple-touch-icon" href="https://avinal.space/apple-touch-icon.png" sizes="180x180">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-32x32.png" sizes="32x32">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-16x16.png" sizes="16x16">
|
||||||
|
<link rel="manifest" href="https://avinal.space/site.webmanifest">
|
||||||
|
<meta name="theme-color" content="#333333">
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/bootstrap.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/all.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/pygments/manni.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/theme.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/space.css">
|
||||||
|
|
||||||
|
<link rel="alternate" type="application/atom+xml" title="Full Atom Feed" href="https://avinal.space/feeds/all.atom.xml">
|
||||||
|
<link rel="alternate" type="application/atom+xml" title="Categories Atom Feed"
|
||||||
|
href="https://avinal.space/feeds/article.atom.xml">
|
||||||
|
<meta name="description" content="टूटता तारा देखना एक अलौकिक अनुभव है। हिमाद्रि के छत से आसमान कुछ ज्यादा ही करीब प्रतीत होता है । लोग सदियों से हिमालय को पूजते आयें हैं । दादा-दादी कहा करते थे ये जिंदा पहाड़ हैं । सारी बातें सुनते हैं लोगों की । उनके दुख दर्द दूर करते हैं, ये देवता हैं ।">
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body style="font-family:Overpass Mono,monospace;">
|
||||||
|
<header class="header star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container text-center">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<h1 class="title" style="font-family: ExodarOut;font-weight: lighter;"><a href="https://avinal.space/">Be My SpaceTime</a>
|
||||||
|
</h1>
|
||||||
|
<!--
|
||||||
|
<p class="text-muted">눈치</p>
|
||||||
|
-->
|
||||||
|
<ul class="list-inline">
|
||||||
|
<li class="list-inline-item"><a href="https://gsoc.avinal.space" target="_blank">gsoc</a></li>
|
||||||
|
<li class="list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/pages/about-me.html">About Me</a></li>
|
||||||
|
<li class=" list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-github" href="https://github.com/avinal" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-linkedin" href="https://www.linkedin.com/in/avinal/" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-instagram" href="https://instagram.com/avinal.k" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-calendar" href="https://meet.avinal.space" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fa fa-envelope" href="mailto:blog@avinal.space" target="_blank"></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div> </div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<div class="main">
|
||||||
|
<div class="container">
|
||||||
|
<h1>प्रेम रतन धन पायो
|
||||||
|
</h1>
|
||||||
|
<hr>
|
||||||
|
<article class="article">
|
||||||
|
<header>
|
||||||
|
<ul class="list-inline">
|
||||||
|
<li class="list-inline-item text-muted" title="2019-09-21T15:47:00+05:30">
|
||||||
|
<i class="fas fa-clock"></i>
|
||||||
|
Sat 21 September 2019
|
||||||
|
</li>
|
||||||
|
<li class="list-inline-item">
|
||||||
|
<i class="fas fa-folder-open"></i>
|
||||||
|
<a href="https://avinal.space/category/article.html">article</a>
|
||||||
|
</li>
|
||||||
|
<li class="list-inline-item">
|
||||||
|
<i class="fas fa-tag"></i>
|
||||||
|
<a href="https://avinal.space/tag/love.html">#love</a>, <a href="https://avinal.space/tag/article.html">#article</a>, <a href="https://avinal.space/tag/hindi.html">#hindi</a> </li>
|
||||||
|
</ul>
|
||||||
|
</header>
|
||||||
|
<div class="content">
|
||||||
|
<p style="border: 2px solid var(--cyan);border-radius: 7px;" align=center>This article was published in 18th edition of SRIJAN, the official magazine of <a href="https://nith.ac.in" style="text-decoration: none;">National Institute of Technology, Hamirpur</a>, India. The magazine can be accessed <a href="https://issuu.com/srijandesk/docs/srijan2020" style="text-decoration: none;">here</a>.<p><p>टूटता तारा देखना एक अलौकिक अनुभव है। हिमाद्रि के छत से आसमान कुछ ज्यादा ही करीब प्रतीत होता है । लोग सदियों से हिमालय को पूजते आयें हैं ।
|
||||||
|
दादा-दादी कहा करते थे ये जिंदा पहाड़ हैं । सारी बातें सुनते हैं लोगों की । उनके दुख दर्द दूर करते हैं, ये देवता हैं । आजकल जब रोज़ क्लास
|
||||||
|
आते जाते दूर पहाड़ों की चोटियाँ देखता हूँ तो उनकी विशालता का अनुभव होता हैं । एक पल को अगर ये मान लिया जाए की हमारी सारी धार्मिक किताबें
|
||||||
|
वो कहानियाँ हैं जो पथिक लेखकों के द्वारा लिखी गयी हैं तो सारी बातें साफ हो जाती है कि क्यूँ देवी-देवताओं ने हिमालय को अपनाया है। टूटता
|
||||||
|
तारा देखना अलौकिक है पर हिमालय की श्रेणियों से टूटता तारा देखना दैविक है । और वो कहते हैं न जिसमें न कोई तर्क हो न ही हाथों की सफाई वो
|
||||||
|
दैविक है। टूटते तारो के बारे में लोगों के बहुत सारे विश्वास हैं । कभी विभीषिका का पूर्वाभास माने जाने वाले इन टूटते तारे आज इच्छा पूरक के
|
||||||
|
प्रतीक हैं । कुछ लोगों का ये भी मानना है कि टूटते तारे दिवंगत लोगों का संकेत हैं । हिमालय की कन्दराओं में न जाने कितने ही ऋषि-मुनियों ने
|
||||||
|
तप करते हुए अपना जीवन अर्पित कर दिया । इसलिए हिमालय की पहाड़ों से टूटता तारा देखना दैविक हैं क्योंकि शायद वो तारे उन ऋषि-मुनियों की पवित्र
|
||||||
|
आत्माओं का संकेत हैं ।</p>
|
||||||
|
<p>प्रकृति की सुंदरता और कलाकारी हिमालय की कण-कण में झलकती है। प्रकृति ने प्रेम को भी हिमालय के जितना ही विशाल और अलौकिक बनाया है । ये एक
|
||||||
|
अलग चर्चा का विषय है कि हिमालय पहले आया या प्रेम। मैं तो प्रेम के पक्ष में हूँ । वो हर अणु-परमाणु जिन्होंने इतने बड़ा पहाड़ खड़ा किया वो सब
|
||||||
|
आपस में प्रेम से बंधे हुए हैं। ये पृथ्वी, सूर्य, चंद्रमा, आकाश-गंगा इत्यादि सब प्रेम से बंधे हुए हैं । और हिमाद्रि के छत पर मैं इसी प्रेम
|
||||||
|
के आगोश में आकर भावशून्य होकर तारों को निहार रहा था । तभी मानो सदियों की मन्नत पूरी हुई और मुझे एक टूटता तारा दिखा । आप मेरी स्थिति की
|
||||||
|
जटिलता का अनुभव इस प्रकार से लगा सकते हैं कि लोग टूटते तारे से मन्नत मांगते हैं और मैं टूटता तारा ही मन्नत में मांग रहा था । इससे पहले की
|
||||||
|
मैं पिछली जटिलता से बाहर आता की दूसरी जटिलता सामने आ पड़ी की तारा तो दिख गया पर मैं माँगूँ क्या ? और अगर आप सोच रहे की भाई पैसे मांग लो
|
||||||
|
शोहरत , नाम , शक्ति और पता नहीं क्या-क्या ? मांग तो लेता पर अगर आप मेरी जगह इसी स्थिति में होते तो शायद आपको भी ये सब याद न आता । तो मैं
|
||||||
|
एक पल को ये आकलन करने लगा की क्या कुछ ऐसा है जिसकी मुझे बहुत जरूरत है पर मेरे पास हो नहीं । और आपको पता है की गहरी सोच में जाने पर अक्सर
|
||||||
|
क्या होता है। अब वो लोग जो ये सोच रहे की भाईसाब आप हर कहानी(सच्ची घटना का विवरण वाली कहानी 😊) में सो क्यूँ जाते हैं। सच बताऊँ तो इसका
|
||||||
|
कोई सटीक जबाव नहीं है मेरे पास, पर अध्यात्म ये कहता है की जब आप सो रहे होते हैं तो आपका मन चेतना के कई स्थिति से गुजरता है। जब आप परम
|
||||||
|
चैतन्य अवस्था में होते हैं तो रहस्य, प्रतिभज्ञान इत्यादि के रास्ते खुल जाते हैं। और विज्ञान ये भी कहता है कि निद्रा के माध्यम से इस
|
||||||
|
अवस्था में जाना उतना ही अनिश्चित है जितना किसी बाला का मेरे लिए प्रेम-प्रस्ताव । सरल शब्दों में – मैं कुछ समय के लिए सो गया।</p>
|
||||||
|
<p>आज से ठीक 2 महीने पहले अगर ये मुझसे कोई पूछता की क्या चाहिए तुम्हें तो शायद मेरे पास जबाव होता। दोस्त तो बहुत हैं पर जब कोई ऐसा हो जो
|
||||||
|
आपके अधूरे वाक्य पूरे कर सके, कोई ऐसा जो आपकी भावनाओं को आपकी तरह समझ सके, कोई ऐसा जो आपको आपके असल रूप में पसंद करता हो । आपको लग रहा
|
||||||
|
होगा की मैं एक प्रेमिका का विवरण दे रहा हूँ, पर नहीं या शायद हाँ , मैं समझता हूँ की अधिकतर लोग प्रेमिका शब्द का प्रयोग अनुचित ढंग से करते
|
||||||
|
हैं। जहां प्रेम है वहाँ प्रेमी-प्रेमिका होंगे फिर वो भाई-बहन का रिश्ता हो या माँ-बेटे का । एक पल को सोचो तो ऊपर के विवरण के लिए कोई सबसे
|
||||||
|
सटीक उत्तर है तो वो है माँ। जब आप उन माँ-बाप जिन्होंने आपको जन्म दिया, आपका पालन-पोषण किया , आपको इस लायक बनाया कि आप इस वक़्त ये लेख पढ़
|
||||||
|
पा रहे हैं , उनको अपनी प्रेमी-प्रेमिका नहीं कह सकते तो शायद किसी और लड़के-लड़की को कहने का आपको कोई हक़ नहीं है। पर ये बात निजी समझदारी की
|
||||||
|
है और मैं माँ-बाप के बारे में बिलकुल भी बात नहीं कर रहा, इन 2-4 पन्ने में उनको चित्रित कर पाना दुष्कर है। अगर माँ है तो ये अलग व्यक्ति
|
||||||
|
क्यूँ ? लोग कहते हैं क्योंकि भगवान हर जगह नहीं हो सकते इसलिए उन्होंने माँ बनाई। पर मैं कहता हूँ माँ भी हर जगह नहीं हो सकती इसलिए भगवान ने
|
||||||
|
दोस्त बनाए और विशेष लोग भी बनाए। आज तक बहुत सारे लोग आए-गए , कई बार लगा की शायद वो विशेष व्यक्ति मिलने ही वाला है पर वो भ्रम था शायद ये
|
||||||
|
भी हो। मैं ये नहीं कह सकता की मेरी खोज पूर्ण हो गयी पर हाँ एक पड़ाव तो जरूर आ गया है। उस पहली मुलाक़ात में एक पल को ऐसा लगा मानो किसी
|
||||||
|
चमत्कारी दर्जी ने कपड़े की जगह एक पूरा आदमी सिल कर दिया हो। सब कुछ एकदम नाप के अनुरूप। शायद कई सालों के बाद मैं खुशियों का बवंडर अपने अंदर
|
||||||
|
महसूस कर रहा था। आप पूछेंगे इसमें प्रेम कहाँ है? हिमालय जितना विशाल है उतना ही गहरा भी है , यहाँ भी प्रेम गहराई में है । प्रेम का होना
|
||||||
|
जरूरी है दिखावा तो हर कोई कर लेता है। कबीर ने अपने एक दोहे में कहा है :</p>
|
||||||
|
<p><strong>बूंद समानी समूंद में , जानत है सब कोई; समूंद समाना बूंद में , बूझे बिरला कोई।</strong></p>
|
||||||
|
<p>मैं इस दोहे को प्रेम के संदर्भ में व्याख्या करना चाहूँगा। लोग बूंद हैं और प्रेम समुद्र, लोगों को प्रेम में पड़ते सबने देखा है या सुना है,
|
||||||
|
पर जो प्रेम लोगों के अंदर व्याप्त है ये हर कोई नहीं समझता। मैं उस विशेष व्यक्ति का कृतज्ञ हूँ जिसने ने मुझे इस दोहे के मूल भाव का अहसास
|
||||||
|
करवाया।</p>
|
||||||
|
<p>कभी-कभी डर लगता है, खोने का उसे। आजकल दुनिया में सब अनिश्चित है। कब-क्या हो जाए ये कोई नहीं बता सकता। पहले सिर्फ पृथ्वी थी फिर लोग हुए और
|
||||||
|
तब से पृथ्वी अस्थमा की मरीज है। किसी प्रसिद्ध कवि ने लिखा है :</p>
|
||||||
|
<p><strong>आज आदमी में विष इतना भर गया है, की विषधरों का वंश उनसे डर गया है,</strong>
|
||||||
|
<strong>कल को कहते सुनोगे , आदमी काटा और साँप मर गया है।</strong></p>
|
||||||
|
<p>ठंडी-ठंडी हवाओं ने मेरी सारी नींद उड़ा दी। प्रकृति शायद मुझे खुश करके मारना चाहती थी। आसमान ने एक बड़े काले पर्दे का रूप ले लिया था और उस
|
||||||
|
पर्दे पर दसियो उजले साँप रेंगते नज़र आ रहे थे। मानो दस सालो के टूटते तारे एक साथ दिख रहे हों और आसमान कह रहा हो – जो चाहिए, जितना चाहिए
|
||||||
|
माँग लो। और मैंने सच में माँग लिए , लगभग सब कुछ । और उसको हमेशा पास रखने की दुआ तो नहीं माँग सका , पर वो जहां रहे, खुश रहे, सलामत रहे।</p>
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
<p align=center>
|
||||||
|
This Blog is licensed under <a href="http://creativecommons.org/licenses/by-nc/4.0/?ref=chooser-v1"
|
||||||
|
target="_blank" rel="license noopener noreferrer">Attribution-NonCommercial 4.0 International<img
|
||||||
|
style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
|
||||||
|
src="https://mirrors.creativecommons.org/presskit/icons/cc.svg?ref=chooser-v1"><img
|
||||||
|
style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
|
||||||
|
src="https://mirrors.creativecommons.org/presskit/icons/by.svg?ref=chooser-v1"><img
|
||||||
|
style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
|
||||||
|
src="https://mirrors.creativecommons.org/presskit/icons/nc.svg?ref=chooser-v1">
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
<hr>
|
||||||
|
<div id="comment-form">
|
||||||
|
<div class="alert alert-info" role="alert">
|
||||||
|
Feel free to leave a feedback or question!
|
||||||
|
</div>
|
||||||
|
<form action="https://docs.google.com/forms/u/0/d/e/1FAIpQLSfL9T8WBRm-Ac2uyu74lJXSYOqAuF6lLIUAulRArCsuiI1ZRQ/formResponse" target="response" method="POST" id="valid-form">
|
||||||
|
<div class="form-row align-items-center">
|
||||||
|
<div class="form-group col-md-5">
|
||||||
|
<label class="sr-only" for="person-name">Name</label>
|
||||||
|
<input type="text" class="form-control form-control-sm" id="person-name" placeholder="Your Name (Optional)"
|
||||||
|
aria-describedby="nameHelp" name="entry.982725972">
|
||||||
|
<input type="text" id="page-link" name="entry.1641222305" hidden>
|
||||||
|
<small id="nameHelp" class="form-text text-muted">You may put your GitHub Username.</small>
|
||||||
|
</div>
|
||||||
|
<div class="form-group col-md-7">
|
||||||
|
<label class="sr-only" for="email-address">Email address</label>
|
||||||
|
<input type="email" class="form-control form-control-sm" id="email-address" aria-describedby="emailHelp"
|
||||||
|
placeholder="Your Email Address (Optional)" name="entry.1652853191">
|
||||||
|
<small id="emailHelp" class="form-text text-muted">I'll never share your email with anyone
|
||||||
|
else.</small>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="sr-only" for="comment-section">Your Message</label>
|
||||||
|
<textarea class="form-control form-control-sm" id="comment-section" rows="3"
|
||||||
|
placeholder="Please enter your message or feedback. (Required)" aria-describedby="emailHelp"
|
||||||
|
name="entry.1062656232" required></textarea>
|
||||||
|
<div class="invalid-feedback">
|
||||||
|
Please Enter something !
|
||||||
|
</div>
|
||||||
|
<small id="textHelp" class="form-text text-muted">Enter upto 200 characters.</small>
|
||||||
|
</div>
|
||||||
|
<button class="btn btn-outline-info" type="submit">Send</button>
|
||||||
|
</form>
|
||||||
|
<iframe name="response" hidden></iframe>
|
||||||
|
</div>
|
||||||
|
<div class="alert alert-info" role="alert" id="comment-message" style="display: none;">
|
||||||
|
<h4 class="alert-heading">Thanks You 🥳</h4>
|
||||||
|
<p>Thanks a lot for reading this blog and sending me a feedback. I hope you liked it. I will get back to you
|
||||||
|
soon if you have added an email.</p>
|
||||||
|
</div>
|
||||||
|
<script>
|
||||||
|
(function () {
|
||||||
|
'use strict';
|
||||||
|
window.addEventListener('load', function () {
|
||||||
|
var form = document.getElementById('valid-form');
|
||||||
|
form.addEventListener('submit', function (event) {
|
||||||
|
document.getElementById('page-link').value = window.location.href;
|
||||||
|
document.getElementById('comment-form').style.display = 'none';
|
||||||
|
document.getElementById('comment-message').style.display = '';
|
||||||
|
}, false);
|
||||||
|
}, false);
|
||||||
|
})();
|
||||||
|
</script>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<footer class="footer star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<ul class="col-sm-6 list-inline">
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/archives.html">Archives</a></li>
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/categories.html">Categories</a></li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/tags.html">Tags</a></li>
|
||||||
|
</ul>
|
||||||
|
<p class="col-sm-6 text-sm-right text-muted">Created with <i class="fa fa-heart" style="color: red;"></i> by <a
|
||||||
|
href="https://github.com/avinal" target="_blank">Avinal</a>
|
||||||
|
</p>
|
||||||
|
</div> </div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,181 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<!-- Required meta tags -->
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
|
||||||
|
<title>The Big Red Ants | Be My SpaceTime
|
||||||
|
</title>
|
||||||
|
<link rel="canonical" href="https://avinal.space/posts/article/red-big-ants.html">
|
||||||
|
|
||||||
|
<link rel="apple-touch-icon" href="https://avinal.space/apple-touch-icon.png" sizes="180x180">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-32x32.png" sizes="32x32">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-16x16.png" sizes="16x16">
|
||||||
|
<link rel="manifest" href="https://avinal.space/site.webmanifest">
|
||||||
|
<meta name="theme-color" content="#333333">
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/bootstrap.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/all.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/pygments/manni.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/theme.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/space.css">
|
||||||
|
|
||||||
|
<link rel="alternate" type="application/atom+xml" title="Full Atom Feed" href="https://avinal.space/feeds/all.atom.xml">
|
||||||
|
<link rel="alternate" type="application/atom+xml" title="Categories Atom Feed"
|
||||||
|
href="https://avinal.space/feeds/article.atom.xml">
|
||||||
|
<meta name="description" content="In a bird’s eye view if we see around us, ants are the common and tiniest living entitiy seen by naked eye. One of them are the big red ants, in my view they are unique from others in two ways, first they live on trees and second their anteenas are too long and bent in middle, seems like their fore legs. Their mandible (mouth) seems like eagle’s beak.">
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body style="font-family:Overpass Mono,monospace;">
|
||||||
|
<header class="header star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container text-center">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<h1 class="title" style="font-family: ExodarOut;font-weight: lighter;"><a href="https://avinal.space/">Be My SpaceTime</a>
|
||||||
|
</h1>
|
||||||
|
<!--
|
||||||
|
<p class="text-muted">눈치</p>
|
||||||
|
-->
|
||||||
|
<ul class="list-inline">
|
||||||
|
<li class="list-inline-item"><a href="https://gsoc.avinal.space" target="_blank">gsoc</a></li>
|
||||||
|
<li class="list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/pages/about-me.html">About Me</a></li>
|
||||||
|
<li class=" list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-github" href="https://github.com/avinal" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-linkedin" href="https://www.linkedin.com/in/avinal/" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-instagram" href="https://instagram.com/avinal.k" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-calendar" href="https://meet.avinal.space" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fa fa-envelope" href="mailto:blog@avinal.space" target="_blank"></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div> </div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<div class="main">
|
||||||
|
<div class="container">
|
||||||
|
<h1>The Big Red Ants
|
||||||
|
</h1>
|
||||||
|
<hr>
|
||||||
|
<article class="article">
|
||||||
|
<header>
|
||||||
|
<ul class="list-inline">
|
||||||
|
<li class="list-inline-item text-muted" title="2012-02-27T22:47:00+05:30">
|
||||||
|
<i class="fas fa-clock"></i>
|
||||||
|
Mon 27 February 2012
|
||||||
|
</li>
|
||||||
|
<li class="list-inline-item">
|
||||||
|
<i class="fas fa-folder-open"></i>
|
||||||
|
<a href="https://avinal.space/category/article.html">article</a>
|
||||||
|
</li>
|
||||||
|
<li class="list-inline-item">
|
||||||
|
<i class="fas fa-tag"></i>
|
||||||
|
<a href="https://avinal.space/tag/ants.html">#ants</a>, <a href="https://avinal.space/tag/sav.html">#sav</a> </li>
|
||||||
|
</ul>
|
||||||
|
</header>
|
||||||
|
<div class="content">
|
||||||
|
<p style="border: 2px solid var(--cyan);border-radius: 7px;" align=center>This article was published in 3rd edition of नवांकुर , the official magazine of Simultala Awasiya Vidyalaya, Bihar, India.<p><p>In a bird’s eye view if we see around us, ants are the common and tiniest living entitiy seen by naked eye. One of them are the big red ants, in my view they are unique from others in two ways, first they live on trees and second their anteenas are too long and bent in middle, seems like their fore legs. Their mandible (mouth) seems like eagle’s beak.</p>
|
||||||
|
<p>As I observed them making and reparing their nests, I concluded that they are very laborious and intellectual. They create their nests by binding two or more leaves (maybe up to 500) together. They stich the leaves using a stinky white substance either excreted by themselves or from trees. This substance is like web of spider. At first builder ants creates an array at the blade of two leaves. Then they make ant-cranes or ant-chain like chain of monomer to form a polymer. They catch the leaves and pull each other to stich. After some time, the parliament of leaves transforms into a leaf-sac called their nest. They also weave translucent cloth like structure to cover remainings of leaf. A nest hangs by a branch of the trees.</p>
|
||||||
|
<p>A nest is skillfully divided into living rooms, barracks, storehouse, egg room and queen’s room. The eggroom, lies at the center of nest to protect from outer attack until last time. Besides that, lies queen’s room. Living rooms are sequenncly joined with eggroom. There are different rooms for workers, food searchers etc. The partition of the room resembles atom’s electron shell, one upon another. At last barracks are the outermost rooms, just like outermost orbit of electron. The defence system is strongest at the nest’s opening. A nest may size as 2-3 footballs and have 50 to 10000 ants. There may be more openings.</p>
|
||||||
|
<p>Now about their attacking and protecting skills. A solider is unique from other ants. It is equipped with many attacking and defending skills. Normally they do not attack. They are social insects. If someone attacks, all other ants go inside, and soldiers come out. They spread allover the nest. They are very sensetive and have sharp vision. If any one of them see their enemy the stand on their hind legs, swinging, their forelegs and anteens in their air as scolding someone. Their spit contains formic acid, present at the end of the abdomen below the rectum. If their nest is broken and eggs fall on ground then the ants make a dome, like the dome of Taj mahal to save the eggs till last their breadth. This shows their caring skills.</p>
|
||||||
|
<p>The most amazing is their discipline. They can easily beat a human in race of discipline. Humans must learn from it. When two ants meet, they touch their anteena to communicate. When they walk in a queue, they seem like twinkling dots and dashes. I want to conclude that <strong>All tiny things are not really tiny. It may be as a space having infinite mysteries one has to explore it.</strong></p>
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
<p align=center>
|
||||||
|
This Blog is licensed under <a href="http://creativecommons.org/licenses/by-nc/4.0/?ref=chooser-v1"
|
||||||
|
target="_blank" rel="license noopener noreferrer">Attribution-NonCommercial 4.0 International<img
|
||||||
|
style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
|
||||||
|
src="https://mirrors.creativecommons.org/presskit/icons/cc.svg?ref=chooser-v1"><img
|
||||||
|
style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
|
||||||
|
src="https://mirrors.creativecommons.org/presskit/icons/by.svg?ref=chooser-v1"><img
|
||||||
|
style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
|
||||||
|
src="https://mirrors.creativecommons.org/presskit/icons/nc.svg?ref=chooser-v1">
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
<hr>
|
||||||
|
<div id="comment-form">
|
||||||
|
<div class="alert alert-info" role="alert">
|
||||||
|
Feel free to leave a feedback or question!
|
||||||
|
</div>
|
||||||
|
<form action="https://docs.google.com/forms/u/0/d/e/1FAIpQLSfL9T8WBRm-Ac2uyu74lJXSYOqAuF6lLIUAulRArCsuiI1ZRQ/formResponse" target="response" method="POST" id="valid-form">
|
||||||
|
<div class="form-row align-items-center">
|
||||||
|
<div class="form-group col-md-5">
|
||||||
|
<label class="sr-only" for="person-name">Name</label>
|
||||||
|
<input type="text" class="form-control form-control-sm" id="person-name" placeholder="Your Name (Optional)"
|
||||||
|
aria-describedby="nameHelp" name="entry.982725972">
|
||||||
|
<input type="text" id="page-link" name="entry.1641222305" hidden>
|
||||||
|
<small id="nameHelp" class="form-text text-muted">You may put your GitHub Username.</small>
|
||||||
|
</div>
|
||||||
|
<div class="form-group col-md-7">
|
||||||
|
<label class="sr-only" for="email-address">Email address</label>
|
||||||
|
<input type="email" class="form-control form-control-sm" id="email-address" aria-describedby="emailHelp"
|
||||||
|
placeholder="Your Email Address (Optional)" name="entry.1652853191">
|
||||||
|
<small id="emailHelp" class="form-text text-muted">I'll never share your email with anyone
|
||||||
|
else.</small>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="sr-only" for="comment-section">Your Message</label>
|
||||||
|
<textarea class="form-control form-control-sm" id="comment-section" rows="3"
|
||||||
|
placeholder="Please enter your message or feedback. (Required)" aria-describedby="emailHelp"
|
||||||
|
name="entry.1062656232" required></textarea>
|
||||||
|
<div class="invalid-feedback">
|
||||||
|
Please Enter something !
|
||||||
|
</div>
|
||||||
|
<small id="textHelp" class="form-text text-muted">Enter upto 200 characters.</small>
|
||||||
|
</div>
|
||||||
|
<button class="btn btn-outline-info" type="submit">Send</button>
|
||||||
|
</form>
|
||||||
|
<iframe name="response" hidden></iframe>
|
||||||
|
</div>
|
||||||
|
<div class="alert alert-info" role="alert" id="comment-message" style="display: none;">
|
||||||
|
<h4 class="alert-heading">Thanks You 🥳</h4>
|
||||||
|
<p>Thanks a lot for reading this blog and sending me a feedback. I hope you liked it. I will get back to you
|
||||||
|
soon if you have added an email.</p>
|
||||||
|
</div>
|
||||||
|
<script>
|
||||||
|
(function () {
|
||||||
|
'use strict';
|
||||||
|
window.addEventListener('load', function () {
|
||||||
|
var form = document.getElementById('valid-form');
|
||||||
|
form.addEventListener('submit', function (event) {
|
||||||
|
document.getElementById('page-link').value = window.location.href;
|
||||||
|
document.getElementById('comment-form').style.display = 'none';
|
||||||
|
document.getElementById('comment-message').style.display = '';
|
||||||
|
}, false);
|
||||||
|
}, false);
|
||||||
|
})();
|
||||||
|
</script>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<footer class="footer star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<ul class="col-sm-6 list-inline">
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/archives.html">Archives</a></li>
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/categories.html">Categories</a></li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/tags.html">Tags</a></li>
|
||||||
|
</ul>
|
||||||
|
<p class="col-sm-6 text-sm-right text-muted">Created with <i class="fa fa-heart" style="color: red;"></i> by <a
|
||||||
|
href="https://github.com/avinal" target="_blank">Avinal</a>
|
||||||
|
</p>
|
||||||
|
</div> </div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,222 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<!-- Required meta tags -->
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
|
||||||
|
<title>HRT Systems Internship Interview Experience | Be My SpaceTime
|
||||||
|
</title>
|
||||||
|
<link rel="canonical" href="https://avinal.space/posts/blog/hrt-interview-1.html">
|
||||||
|
|
||||||
|
<link rel="apple-touch-icon" href="https://avinal.space/apple-touch-icon.png" sizes="180x180">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-32x32.png" sizes="32x32">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-16x16.png" sizes="16x16">
|
||||||
|
<link rel="manifest" href="https://avinal.space/site.webmanifest">
|
||||||
|
<meta name="theme-color" content="#333333">
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/bootstrap.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/all.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/pygments/manni.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/theme.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/space.css">
|
||||||
|
|
||||||
|
<link rel="alternate" type="application/atom+xml" title="Full Atom Feed" href="https://avinal.space/feeds/all.atom.xml">
|
||||||
|
<link rel="alternate" type="application/atom+xml" title="Categories Atom Feed"
|
||||||
|
href="https://avinal.space/feeds/blog.atom.xml">
|
||||||
|
<meta name="description" content="I applied for Systems Internship - Summer 2021 back in December 2020 at Hudson River Trading , New York.....Questions were clear and of medium level. But they were designed in such a way that you must know the basics before you could attempt.">
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body style="font-family:Overpass Mono,monospace;">
|
||||||
|
<header class="header star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container text-center">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<h1 class="title" style="font-family: ExodarOut;font-weight: lighter;"><a href="https://avinal.space/">Be My SpaceTime</a>
|
||||||
|
</h1>
|
||||||
|
<!--
|
||||||
|
<p class="text-muted">눈치</p>
|
||||||
|
-->
|
||||||
|
<ul class="list-inline">
|
||||||
|
<li class="list-inline-item"><a href="https://gsoc.avinal.space" target="_blank">gsoc</a></li>
|
||||||
|
<li class="list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/pages/about-me.html">About Me</a></li>
|
||||||
|
<li class=" list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-github" href="https://github.com/avinal" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-linkedin" href="https://www.linkedin.com/in/avinal/" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-instagram" href="https://instagram.com/avinal.k" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-calendar" href="https://meet.avinal.space" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fa fa-envelope" href="mailto:blog@avinal.space" target="_blank"></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div> </div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<div class="main">
|
||||||
|
<div class="container">
|
||||||
|
<h1><abbr title="Hudson River Trading">HRT</abbr> Systems Internship Interview Experience
|
||||||
|
</h1>
|
||||||
|
<hr>
|
||||||
|
<article class="article">
|
||||||
|
<header>
|
||||||
|
<ul class="list-inline">
|
||||||
|
<li class="list-inline-item text-muted" title="2021-01-04T21:47:00+05:30">
|
||||||
|
<i class="fas fa-clock"></i>
|
||||||
|
Mon 04 January 2021
|
||||||
|
</li>
|
||||||
|
<li class="list-inline-item">
|
||||||
|
<i class="fas fa-folder-open"></i>
|
||||||
|
<a href="https://avinal.space/category/blog.html">blog</a>
|
||||||
|
</li>
|
||||||
|
<li class="list-inline-item">
|
||||||
|
<i class="fas fa-tag"></i>
|
||||||
|
<a href="https://avinal.space/tag/hrt.html">#HRT</a>, <a href="https://avinal.space/tag/hudsonrivertrading.html">#hudsonrivertrading</a>, <a href="https://avinal.space/tag/interview.html">#interview</a>, <a href="https://avinal.space/tag/internship.html">#internship</a> </li>
|
||||||
|
</ul>
|
||||||
|
</header>
|
||||||
|
<div class="content">
|
||||||
|
<p>I applied for <strong>Systems Internship - Summer 2021</strong> back in December 2020 at <a class="reference external" href="https://www.hudsonrivertrading.com">Hudson River Trading</a> , New York. The internship description was: -</p>
|
||||||
|
<blockquote class="epigraph">
|
||||||
|
<p>We are looking for highly motivated students who are eager to learn and excited about systems to join us for our summer internship
|
||||||
|
program. As a systems intern, you may have the opportunity to work on projects in the following areas:</p>
|
||||||
|
<ul class="simple">
|
||||||
|
<li>Programming/scripting (Golang, Python, C++, C)</li>
|
||||||
|
<li>FOSS development</li>
|
||||||
|
<li>HPC, Cluster computing</li>
|
||||||
|
<li>System Administration</li>
|
||||||
|
<li>Linux, Debian</li>
|
||||||
|
<li>Linux-based computer security</li>
|
||||||
|
<li>Data Storage</li>
|
||||||
|
<li>Large deployment or config management</li>
|
||||||
|
</ul>
|
||||||
|
</blockquote>
|
||||||
|
<p>The first step was a coding test on the Codility platform. If you have used any of the online coding platforms, this is similar. It was a <abbr title="90 mins">2.5 hrs</abbr> test consisting of 3 questions. They let you use <abbr title="documentation, man pages, etc.">online references</abbr> but
|
||||||
|
<strong>do not copy the code</strong> as it will highly reduce your chances of qualifying for this first stage. You can choose between <strong>C/C++</strong>,
|
||||||
|
<strong>Python</strong> and <strong>Golang</strong> (no Java 😪).</p>
|
||||||
|
<p>Questions were clear and of medium level. But they were designed in such a way that you must know the basics before you could attempt.
|
||||||
|
Also, they expected a clear and concise approach. Two of the most important points in their instructions were: -</p>
|
||||||
|
<blockquote class="epigraph">
|
||||||
|
<ul class="simple">
|
||||||
|
<li>While correctness and performance are the most important factors for evaluation, we will take test duration into account as well.</li>
|
||||||
|
<li>Please understand that this test is meant to be challenging. A perfect score is not necessary to move on to future interview rounds, so do the best you can!</li>
|
||||||
|
</ul>
|
||||||
|
</blockquote>
|
||||||
|
<p>So, you must be near perfect in your approach as well as on time. I did them kind of quickly. They will show you a summary of your
|
||||||
|
submission but not the results. It will take almost 2 weeks to get back to you for further steps.</p>
|
||||||
|
<p>Next, I received a mail invitation for a telephonic interview. <strong>This interview will last about 45 minutes and will be technical but will not require coding. Interview topics may include your background, programming languages, and Unix/Linux concepts</strong>. Once you receive this
|
||||||
|
mail you can then decide a time slot for an interview.</p>
|
||||||
|
<p>I was not sure what they will ask if this is not a coding interview. The interviewer was very polite, and he was explaining the questions
|
||||||
|
too. Questions were not so tricky but practical and real-life. Since it was <strong>not for SDE role</strong>, the questions were mostly related to
|
||||||
|
Linux/Unix, C++ (mainly pointers and memory), Python/Bash scripting, automation, knowledge of tools (IDEs, Editors, System Administration
|
||||||
|
Tools) and previous experiences. The interview would often explain why he is asking this question, this was very nice. Then some common
|
||||||
|
interview questions, why do you want to work for this role? What makes you fit for this role? etc.</p>
|
||||||
|
<p>One thing that I want to point out is that the interviewer was repeatedly checking my resume, and for the most part he did not ask
|
||||||
|
anything that was not on my resume. So, my tip is to create a nice resume with genuine work/tool experiences. And when you are applying
|
||||||
|
for such a role, it would be helpful if you mention mathematics or other courses that you have taken. <em>Do not lie on your resume</em>. They
|
||||||
|
will easily catch that.</p>
|
||||||
|
<p>The other thing is to keep your words short and clear; I was not great at communication, but you can be. If the interviewer allows then
|
||||||
|
use examples for the things you cannot explain. I used nice examples. At last, he gave me short feedback on how well I performed.</p>
|
||||||
|
<p>At last, I want to point out things I should not have done. The first is, I did not ask much about the role, you must do this at least
|
||||||
|
once. Second, I am talkative, I do not know if the interviewer was not faking his expressions (because he would often discuss in-depth),
|
||||||
|
but not all interviewers will be the same. So, do not talk too much, nor too less. At last work on your communication skill, mostly how
|
||||||
|
you to present things and how to answer technical as well as behavioral questions. I was not fluent, but my way of presentation might
|
||||||
|
have saved me.</p>
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
<p align=center>
|
||||||
|
This Blog is licensed under <a href="http://creativecommons.org/licenses/by-nc/4.0/?ref=chooser-v1"
|
||||||
|
target="_blank" rel="license noopener noreferrer">Attribution-NonCommercial 4.0 International<img
|
||||||
|
style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
|
||||||
|
src="https://mirrors.creativecommons.org/presskit/icons/cc.svg?ref=chooser-v1"><img
|
||||||
|
style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
|
||||||
|
src="https://mirrors.creativecommons.org/presskit/icons/by.svg?ref=chooser-v1"><img
|
||||||
|
style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
|
||||||
|
src="https://mirrors.creativecommons.org/presskit/icons/nc.svg?ref=chooser-v1">
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
<hr>
|
||||||
|
<div id="comment-form">
|
||||||
|
<div class="alert alert-info" role="alert">
|
||||||
|
Feel free to leave a feedback or question!
|
||||||
|
</div>
|
||||||
|
<form action="https://docs.google.com/forms/u/0/d/e/1FAIpQLSfL9T8WBRm-Ac2uyu74lJXSYOqAuF6lLIUAulRArCsuiI1ZRQ/formResponse" target="response" method="POST" id="valid-form">
|
||||||
|
<div class="form-row align-items-center">
|
||||||
|
<div class="form-group col-md-5">
|
||||||
|
<label class="sr-only" for="person-name">Name</label>
|
||||||
|
<input type="text" class="form-control form-control-sm" id="person-name" placeholder="Your Name (Optional)"
|
||||||
|
aria-describedby="nameHelp" name="entry.982725972">
|
||||||
|
<input type="text" id="page-link" name="entry.1641222305" hidden>
|
||||||
|
<small id="nameHelp" class="form-text text-muted">You may put your GitHub Username.</small>
|
||||||
|
</div>
|
||||||
|
<div class="form-group col-md-7">
|
||||||
|
<label class="sr-only" for="email-address">Email address</label>
|
||||||
|
<input type="email" class="form-control form-control-sm" id="email-address" aria-describedby="emailHelp"
|
||||||
|
placeholder="Your Email Address (Optional)" name="entry.1652853191">
|
||||||
|
<small id="emailHelp" class="form-text text-muted">I'll never share your email with anyone
|
||||||
|
else.</small>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="sr-only" for="comment-section">Your Message</label>
|
||||||
|
<textarea class="form-control form-control-sm" id="comment-section" rows="3"
|
||||||
|
placeholder="Please enter your message or feedback. (Required)" aria-describedby="emailHelp"
|
||||||
|
name="entry.1062656232" required></textarea>
|
||||||
|
<div class="invalid-feedback">
|
||||||
|
Please Enter something !
|
||||||
|
</div>
|
||||||
|
<small id="textHelp" class="form-text text-muted">Enter upto 200 characters.</small>
|
||||||
|
</div>
|
||||||
|
<button class="btn btn-outline-info" type="submit">Send</button>
|
||||||
|
</form>
|
||||||
|
<iframe name="response" hidden></iframe>
|
||||||
|
</div>
|
||||||
|
<div class="alert alert-info" role="alert" id="comment-message" style="display: none;">
|
||||||
|
<h4 class="alert-heading">Thanks You 🥳</h4>
|
||||||
|
<p>Thanks a lot for reading this blog and sending me a feedback. I hope you liked it. I will get back to you
|
||||||
|
soon if you have added an email.</p>
|
||||||
|
</div>
|
||||||
|
<script>
|
||||||
|
(function () {
|
||||||
|
'use strict';
|
||||||
|
window.addEventListener('load', function () {
|
||||||
|
var form = document.getElementById('valid-form');
|
||||||
|
form.addEventListener('submit', function (event) {
|
||||||
|
document.getElementById('page-link').value = window.location.href;
|
||||||
|
document.getElementById('comment-form').style.display = 'none';
|
||||||
|
document.getElementById('comment-message').style.display = '';
|
||||||
|
}, false);
|
||||||
|
}, false);
|
||||||
|
})();
|
||||||
|
</script>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<footer class="footer star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<ul class="col-sm-6 list-inline">
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/archives.html">Archives</a></li>
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/categories.html">Categories</a></li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/tags.html">Tags</a></li>
|
||||||
|
</ul>
|
||||||
|
<p class="col-sm-6 text-sm-right text-muted">Created with <i class="fa fa-heart" style="color: red;"></i> by <a
|
||||||
|
href="https://github.com/avinal" target="_blank">Avinal</a>
|
||||||
|
</p>
|
||||||
|
</div> </div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,202 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<!-- Required meta tags -->
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
|
||||||
|
<title>The Interstellar Twilight | Be My SpaceTime
|
||||||
|
</title>
|
||||||
|
<link rel="canonical" href="https://avinal.space/posts/blog/this-is-for-you.html">
|
||||||
|
|
||||||
|
<link rel="apple-touch-icon" href="https://avinal.space/apple-touch-icon.png" sizes="180x180">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-32x32.png" sizes="32x32">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-16x16.png" sizes="16x16">
|
||||||
|
<link rel="manifest" href="https://avinal.space/site.webmanifest">
|
||||||
|
<meta name="theme-color" content="#333333">
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/bootstrap.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/all.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/pygments/manni.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/theme.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/space.css">
|
||||||
|
|
||||||
|
<link rel="alternate" type="application/atom+xml" title="Full Atom Feed" href="https://avinal.space/feeds/all.atom.xml">
|
||||||
|
<link rel="alternate" type="application/atom+xml" title="Categories Atom Feed"
|
||||||
|
href="https://avinal.space/feeds/blog.atom.xml">
|
||||||
|
<meta name="description" content="If in the Twilight of dreams we should meet once more, we shell talk again together and I shall sing to you a lullaby till you sleep again to meet me in the Twilight of another dream.">
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body style="font-family:Overpass Mono,monospace;">
|
||||||
|
<header class="header star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container text-center">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<h1 class="title" style="font-family: ExodarOut;font-weight: lighter;"><a href="https://avinal.space/">Be My SpaceTime</a>
|
||||||
|
</h1>
|
||||||
|
<!--
|
||||||
|
<p class="text-muted">눈치</p>
|
||||||
|
-->
|
||||||
|
<ul class="list-inline">
|
||||||
|
<li class="list-inline-item"><a href="https://gsoc.avinal.space" target="_blank">gsoc</a></li>
|
||||||
|
<li class="list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/pages/about-me.html">About Me</a></li>
|
||||||
|
<li class=" list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-github" href="https://github.com/avinal" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-linkedin" href="https://www.linkedin.com/in/avinal/" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-instagram" href="https://instagram.com/avinal.k" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-calendar" href="https://meet.avinal.space" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fa fa-envelope" href="mailto:blog@avinal.space" target="_blank"></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div> </div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<div class="main">
|
||||||
|
<div class="container">
|
||||||
|
<h1>The Interstellar Twilight
|
||||||
|
</h1>
|
||||||
|
<hr>
|
||||||
|
<article class="article">
|
||||||
|
<header>
|
||||||
|
<ul class="list-inline">
|
||||||
|
<li class="list-inline-item text-muted" title="2020-09-28T22:47:00+05:30">
|
||||||
|
<i class="fas fa-clock"></i>
|
||||||
|
Mon 28 September 2020
|
||||||
|
</li>
|
||||||
|
<li class="list-inline-item">
|
||||||
|
<i class="fas fa-folder-open"></i>
|
||||||
|
<a href="https://avinal.space/category/blog.html">blog</a>
|
||||||
|
</li>
|
||||||
|
<li class="list-inline-item">
|
||||||
|
<i class="fas fa-tag"></i>
|
||||||
|
<a href="https://avinal.space/tag/interstellar.html">#interstellar</a>, <a href="https://avinal.space/tag/twilight.html">#twilight</a> </li>
|
||||||
|
</ul>
|
||||||
|
</header>
|
||||||
|
<div class="content">
|
||||||
|
<p>Yeah, it was a dream someday. I never imagined you. But I do remember glimpses of a wonderful person
|
||||||
|
in my deep slumber. When I go back to last year about the same time, I find myself a manic who gets
|
||||||
|
carried away with every emotion. Becoming too happy about something and then becoming too sad was so
|
||||||
|
common that I never noticed what I was risking.</p>
|
||||||
|
<p><strong>"If in the Twilight of dreams we should meet once more, we shell talk again together and I shall sing to you a lullaby till you sleep again to meet me in the Twilight of another dream."</strong></p>
|
||||||
|
<p>But 1 year ago many things changed. A never seen dream came true. To be honest I was skeptical if all
|
||||||
|
this happening to me was true. Even until last December. Gradually things started falling into places.
|
||||||
|
And for the most part, the reality became more real. I can now easily see what is happening and why it
|
||||||
|
happened. Everything was so nice until we had a fight. Then another, and now it was every other day
|
||||||
|
story. It was a really hard time collecting everything together and act as nothing happened after every
|
||||||
|
single of those. Everything was plunging. I started imagining the end of something that I did not
|
||||||
|
imagine to happen in the first place.</p>
|
||||||
|
<p>But during all those times, there was a continual intuition that maybe there is something that we both
|
||||||
|
are missing. And that was maybe the root of all chaos. I never came to know that what it was neither did
|
||||||
|
you. But I do realize many mistakes I have been doing since we met.</p>
|
||||||
|
<p>I want to thank you for not losing hope in me. We both always tried to reduce tension as much as we could.
|
||||||
|
And thank you for many other ineffable things happened because of you.</p>
|
||||||
|
<p>As of now I can see things making sense. Every message, every talk now seems to make sense. I am more
|
||||||
|
deeply into this friendship if I was not ever before. The ecstasy of having you is other-worldly. I don't
|
||||||
|
know if I could ever adore a person this much but I adore this ravishing friendship. Only you or only
|
||||||
|
this friendship may mean nothing to me. But I am delighted to say that I have both and I have you.</p>
|
||||||
|
<p>Now, what is all with The Interstellar Twilight. Why this name ? Let me explain it for you. <strong>Interstellar</strong>
|
||||||
|
means between stars and <strong>Twilight</strong> means the soft glow when the sun is below the horizon.
|
||||||
|
<strong>The Interstellar Twilight</strong> means the glow between the stars or simply glow of a cluster of stars. A
|
||||||
|
single star shines but the glow is too low to be noticed against its brightness. But a lot stars together
|
||||||
|
gets a glow. So my friend we are such two stars and our friendship is that glow.</p>
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
<p align=center>
|
||||||
|
This Blog is licensed under <a href="http://creativecommons.org/licenses/by-nc/4.0/?ref=chooser-v1"
|
||||||
|
target="_blank" rel="license noopener noreferrer">Attribution-NonCommercial 4.0 International<img
|
||||||
|
style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
|
||||||
|
src="https://mirrors.creativecommons.org/presskit/icons/cc.svg?ref=chooser-v1"><img
|
||||||
|
style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
|
||||||
|
src="https://mirrors.creativecommons.org/presskit/icons/by.svg?ref=chooser-v1"><img
|
||||||
|
style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
|
||||||
|
src="https://mirrors.creativecommons.org/presskit/icons/nc.svg?ref=chooser-v1">
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
<hr>
|
||||||
|
<div id="comment-form">
|
||||||
|
<div class="alert alert-info" role="alert">
|
||||||
|
Feel free to leave a feedback or question!
|
||||||
|
</div>
|
||||||
|
<form action="https://docs.google.com/forms/u/0/d/e/1FAIpQLSfL9T8WBRm-Ac2uyu74lJXSYOqAuF6lLIUAulRArCsuiI1ZRQ/formResponse" target="response" method="POST" id="valid-form">
|
||||||
|
<div class="form-row align-items-center">
|
||||||
|
<div class="form-group col-md-5">
|
||||||
|
<label class="sr-only" for="person-name">Name</label>
|
||||||
|
<input type="text" class="form-control form-control-sm" id="person-name" placeholder="Your Name (Optional)"
|
||||||
|
aria-describedby="nameHelp" name="entry.982725972">
|
||||||
|
<input type="text" id="page-link" name="entry.1641222305" hidden>
|
||||||
|
<small id="nameHelp" class="form-text text-muted">You may put your GitHub Username.</small>
|
||||||
|
</div>
|
||||||
|
<div class="form-group col-md-7">
|
||||||
|
<label class="sr-only" for="email-address">Email address</label>
|
||||||
|
<input type="email" class="form-control form-control-sm" id="email-address" aria-describedby="emailHelp"
|
||||||
|
placeholder="Your Email Address (Optional)" name="entry.1652853191">
|
||||||
|
<small id="emailHelp" class="form-text text-muted">I'll never share your email with anyone
|
||||||
|
else.</small>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="sr-only" for="comment-section">Your Message</label>
|
||||||
|
<textarea class="form-control form-control-sm" id="comment-section" rows="3"
|
||||||
|
placeholder="Please enter your message or feedback. (Required)" aria-describedby="emailHelp"
|
||||||
|
name="entry.1062656232" required></textarea>
|
||||||
|
<div class="invalid-feedback">
|
||||||
|
Please Enter something !
|
||||||
|
</div>
|
||||||
|
<small id="textHelp" class="form-text text-muted">Enter upto 200 characters.</small>
|
||||||
|
</div>
|
||||||
|
<button class="btn btn-outline-info" type="submit">Send</button>
|
||||||
|
</form>
|
||||||
|
<iframe name="response" hidden></iframe>
|
||||||
|
</div>
|
||||||
|
<div class="alert alert-info" role="alert" id="comment-message" style="display: none;">
|
||||||
|
<h4 class="alert-heading">Thanks You 🥳</h4>
|
||||||
|
<p>Thanks a lot for reading this blog and sending me a feedback. I hope you liked it. I will get back to you
|
||||||
|
soon if you have added an email.</p>
|
||||||
|
</div>
|
||||||
|
<script>
|
||||||
|
(function () {
|
||||||
|
'use strict';
|
||||||
|
window.addEventListener('load', function () {
|
||||||
|
var form = document.getElementById('valid-form');
|
||||||
|
form.addEventListener('submit', function (event) {
|
||||||
|
document.getElementById('page-link').value = window.location.href;
|
||||||
|
document.getElementById('comment-form').style.display = 'none';
|
||||||
|
document.getElementById('comment-message').style.display = '';
|
||||||
|
}, false);
|
||||||
|
}, false);
|
||||||
|
})();
|
||||||
|
</script>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<footer class="footer star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<ul class="col-sm-6 list-inline">
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/archives.html">Archives</a></li>
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/categories.html">Categories</a></li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/tags.html">Tags</a></li>
|
||||||
|
</ul>
|
||||||
|
<p class="col-sm-6 text-sm-right text-muted">Created with <i class="fa fa-heart" style="color: red;"></i> by <a
|
||||||
|
href="https://github.com/avinal" target="_blank">Avinal</a>
|
||||||
|
</p>
|
||||||
|
</div> </div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,226 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<!-- Required meta tags -->
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
|
||||||
|
<title>My internship at Red Hat | Be My SpaceTime
|
||||||
|
</title>
|
||||||
|
<link rel="canonical" href="https://avinal.space/posts/development/i-am-loving-it-redhat.html">
|
||||||
|
|
||||||
|
<link rel="apple-touch-icon" href="https://avinal.space/apple-touch-icon.png" sizes="180x180">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-32x32.png" sizes="32x32">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-16x16.png" sizes="16x16">
|
||||||
|
<link rel="manifest" href="https://avinal.space/site.webmanifest">
|
||||||
|
<meta name="theme-color" content="#333333">
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/bootstrap.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/all.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/pygments/manni.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/theme.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/space.css">
|
||||||
|
|
||||||
|
<link rel="alternate" type="application/atom+xml" title="Full Atom Feed" href="https://avinal.space/feeds/all.atom.xml">
|
||||||
|
<link rel="alternate" type="application/atom+xml" title="Categories Atom Feed"
|
||||||
|
href="https://avinal.space/feeds/development.atom.xml">
|
||||||
|
<meta name="description" content="I made it to the Red Hat as a DevTools intern. This post is about onboarding and how I prepared myself for working on the actual project.">
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body style="font-family:Overpass Mono,monospace;">
|
||||||
|
<header class="header star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container text-center">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<h1 class="title" style="font-family: ExodarOut;font-weight: lighter;"><a href="https://avinal.space/">Be My SpaceTime</a>
|
||||||
|
</h1>
|
||||||
|
<!--
|
||||||
|
<p class="text-muted">눈치</p>
|
||||||
|
-->
|
||||||
|
<ul class="list-inline">
|
||||||
|
<li class="list-inline-item"><a href="https://gsoc.avinal.space" target="_blank">gsoc</a></li>
|
||||||
|
<li class="list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/pages/about-me.html">About Me</a></li>
|
||||||
|
<li class=" list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-github" href="https://github.com/avinal" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-linkedin" href="https://www.linkedin.com/in/avinal/" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-instagram" href="https://instagram.com/avinal.k" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-calendar" href="https://meet.avinal.space" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fa fa-envelope" href="mailto:blog@avinal.space" target="_blank"></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div> </div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<div class="main">
|
||||||
|
<div class="container">
|
||||||
|
<h1>My internship at Red Hat <a class="reference external image-reference" href="https://redhat.com"><img alt="redhat_logo" class="align-middle" src="/images/redhat_logo.png" style="width: 1.5em;" /></a>
|
||||||
|
</h1>
|
||||||
|
<hr>
|
||||||
|
<article class="article">
|
||||||
|
<header>
|
||||||
|
<ul class="list-inline">
|
||||||
|
<li class="list-inline-item text-muted" title="2022-02-25T20:47:00+05:30">
|
||||||
|
<i class="fas fa-clock"></i>
|
||||||
|
Fri 25 February 2022
|
||||||
|
</li>
|
||||||
|
<li class="list-inline-item">
|
||||||
|
<i class="fas fa-folder-open"></i>
|
||||||
|
<a href="https://avinal.space/category/development.html">development</a>
|
||||||
|
</li>
|
||||||
|
<li class="list-inline-item">
|
||||||
|
<i class="fas fa-tag"></i>
|
||||||
|
<a href="https://avinal.space/tag/kubernetes.html">#kubernetes</a>, <a href="https://avinal.space/tag/redhat.html">#redhat</a>, <a href="https://avinal.space/tag/docker.html">#docker</a>, <a href="https://avinal.space/tag/golang.html">#golang</a>, <a href="https://avinal.space/tag/tekton.html">#tekton</a>, <a href="https://avinal.space/tag/openshift.html">#openshift</a>, <a href="https://avinal.space/tag/intern.html">#intern</a> </li>
|
||||||
|
</ul>
|
||||||
|
</header>
|
||||||
|
<div class="content">
|
||||||
|
<p>I have been contributing to open source for the last 3 years and Red Hat was one of the companies that I was very fond of. I must say all my contributions and consistency paid off, and I made it to the Red Hat as a DevTools intern. This post is about onboarding and how I prepared myself for working on the actual project.</p>
|
||||||
|
<p>On the first day of my internship, I met two amazing teammates <a class="reference external" href="https://github.com/">Saytam</a> and <a class="reference external" href="https://github.com/">Utkarsh</a>. We were also introduced to a Senior Software Engineer <a class="reference external" href="https://github.com">Piyush Garg</a> who later mentored us. The initial few meetings were more on the introduction and what to learn topics. Before I jump into more details let me explain first what does a <strong>DevTools Developer/Engineer</strong> do?</p>
|
||||||
|
<div class="section" id="what-does-a-devtools-developer-engineer-do">
|
||||||
|
<h2>What does a DevTools Developer/Engineer do?</h2>
|
||||||
|
<p>From <a class="reference external" href="https://developer.mozilla.org/en-US/docs/Glossary/Developer_Tools">MDN Web Docs</a> <strong>Developer tools (or "development tools" or short "DevTools") are programs that allow a developer to create, test, and debug software.</strong> At RedHat, a lot of open source developer tools of industry standards are developed. There are many, OpenShift, Tekton, CodeReady containers, and many more.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="learning-on-the-golang-logo">
|
||||||
|
<h2>Learning on the <img alt="golang_logo" class="align-top" src="/images/golang.png" style="width: 2.5em;" /></h2>
|
||||||
|
<p>There was a lot of learning and still a lot to learn. In a meeting with my manager Pradeepto Bhattacharya, I was told that I will be working on TektonCD or OpenShift Pipelines, and both of them require a sound knowledge of Golang, CI/CD, Containers, Docker, and Kubernetes. I was familiar with CI/CD, containers, and Docker but never used Golang and Kubernetes. We were provided plenty of good resources and my teammates also helped with many awesome resources. I am listing all the resources with their category.</p>
|
||||||
|
<div class="section" id="golang-1">
|
||||||
|
<h3><a class="reference external" href="https://go.dev/">Golang</a></h3>
|
||||||
|
<img alt="Gopher on the ladder" class="float-md-right rounded ml-3" src="/images/goladder.png" style="height: 20em;" />
|
||||||
|
<p>One of Golang’s biggest advantages is that it offers the clarity and ease of use that other languages lack. Golang’s advantages make it easy for new programmers to quickly understand the language and for seasoned veterans to easily read each other’s code.</p>
|
||||||
|
<ul class="simple">
|
||||||
|
<li><a class="reference external" href="https://go.dev/doc/">Official Go Documentation</a> - <em>Start from here</em></li>
|
||||||
|
<li><a class="reference external" href="https://gobyexample.com/">Go by Example</a> - <em>bite-size examples for most of the golang features</em></li>
|
||||||
|
<li><a class="reference external" href="https://golangbot.com/learn-golang-series/">Golang tutorial series - GOLANGBOT.COM</a> - <em>in-depth tutorial of golang</em></li>
|
||||||
|
<li><a class="reference external" href="https://go.dev/doc/effective_go">Effective Go</a> - <em>writing good golang programs</em></li>
|
||||||
|
<li><a class="reference external" href="https://go.dev/play/">The Go Playground</a> - <em>official online golang ide</em></li>
|
||||||
|
<li><a class="reference external" href="https://www.gopl.io/">The Go Programming Language - Book</a> <em>for learning advanced level golang</em></li>
|
||||||
|
<li><a class="reference external" href="https://youtu.be/yyUHQIec83I">Golang Tutorial for Beginners | Full Go Course - TechWorld with Nana</a> <em>if you prefer video tutorials, I don't :)</em></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="docker-1">
|
||||||
|
<h3><a class="reference external" href="https://www.docker.com/">Docker</a></h3>
|
||||||
|
<p>Docker takes away repetitive, mundane configuration tasks and is used throughout the development lifecycle for fast, easy, and portable application development - desktop and cloud. Docker’s comprehensive end-to-end platform includes UIs, CLIs, APIs, and security that are engineered to work together across the entire application delivery lifecycle.</p>
|
||||||
|
<img alt="The Docker Architecture" class="float-md-right img-fluid my-3" src="/images/docker-architecture.png" />
|
||||||
|
<ul class="simple">
|
||||||
|
<li><a class="reference external" href="https://www.katacoda.com/courses/docker">Docker and Containers - Katacoda</a> <em>interactive lessons on docker and containers</em></li>
|
||||||
|
<li><a class="reference external" href="https://docker-curriculum.com/">Docker for beginners</a></li>
|
||||||
|
<li><a class="reference external" href="https://youtu.be/3c-iBn73dDE">Docker Tutorial for Beginners | TechWorld with Nana</a> <em>video tutorial</em></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="kubernetes-1">
|
||||||
|
<h3><a class="reference external" href="https://kubernetes.io/">Kubernetes</a></h3>
|
||||||
|
<img alt="Kubernetes tech" class="float-md-left border mr-3" src="/images/kubernetes-meme.png" style="width: 200px;" />
|
||||||
|
<p><strong>Kubernetes</strong> is the Greek word for a ship’s captain. We get the words Cybernetic and Gubernatorial from it. The Kubernetes project focuses on building a robust platform for running thousands of containers in production.</p>
|
||||||
|
<ul class="simple">
|
||||||
|
<li><a class="reference external" href="https://www.katacoda.com/courses/kubernetes">Learn Kubernetes - Katacoda</a> <em>interactive lessons with kubernetes</em></li>
|
||||||
|
<li><a class="reference external" href="https://kubebyexample.com/">kube by example</a> <em>learn by doing</em></li>
|
||||||
|
<li><a class="reference external" href="https://youtu.be/X48VuDVv0do">Kubernetes Tutorial for Beginners</a> <em>video tutorial</em></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="not-so-minimal-tekton-server">
|
||||||
|
<h2><em>Not so Minimal</em> Tekton Server</h2>
|
||||||
|
<p>In late January, we were asked to implement our learnings and deep dive into Kubernetes and TektonCD through an assignment project. Soon we realized that whatever we were learning so far was not even close to what we were going to implement. We were given a document containing the requirements of the applications we were supposed to create along with all the documentation and architectural diagrams.</p>
|
||||||
|
<p>The application was called <strong>Minimal Tekton Server</strong>. It is a set of three different applications, i.e a server, a CLI, and a dashboard. In short, this application is supposed to <em>listen to custom resources being created and then transfer the request to Tekton API to create the corresponding resource on the OpenShift/Kubernetes cluster.</em></p>
|
||||||
|
<p>So are you interested in how it went? Please follow up with my <a class="reference external" href="https://avinal.space/posts/development/lovely-dangerous-things-redhat.html">next blog</a>.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
<p align=center>
|
||||||
|
This Blog is licensed under <a href="http://creativecommons.org/licenses/by-nc/4.0/?ref=chooser-v1"
|
||||||
|
target="_blank" rel="license noopener noreferrer">Attribution-NonCommercial 4.0 International<img
|
||||||
|
style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
|
||||||
|
src="https://mirrors.creativecommons.org/presskit/icons/cc.svg?ref=chooser-v1"><img
|
||||||
|
style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
|
||||||
|
src="https://mirrors.creativecommons.org/presskit/icons/by.svg?ref=chooser-v1"><img
|
||||||
|
style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
|
||||||
|
src="https://mirrors.creativecommons.org/presskit/icons/nc.svg?ref=chooser-v1">
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
<hr>
|
||||||
|
<div id="comment-form">
|
||||||
|
<div class="alert alert-info" role="alert">
|
||||||
|
Feel free to leave a feedback or question!
|
||||||
|
</div>
|
||||||
|
<form action="https://docs.google.com/forms/u/0/d/e/1FAIpQLSfL9T8WBRm-Ac2uyu74lJXSYOqAuF6lLIUAulRArCsuiI1ZRQ/formResponse" target="response" method="POST" id="valid-form">
|
||||||
|
<div class="form-row align-items-center">
|
||||||
|
<div class="form-group col-md-5">
|
||||||
|
<label class="sr-only" for="person-name">Name</label>
|
||||||
|
<input type="text" class="form-control form-control-sm" id="person-name" placeholder="Your Name (Optional)"
|
||||||
|
aria-describedby="nameHelp" name="entry.982725972">
|
||||||
|
<input type="text" id="page-link" name="entry.1641222305" hidden>
|
||||||
|
<small id="nameHelp" class="form-text text-muted">You may put your GitHub Username.</small>
|
||||||
|
</div>
|
||||||
|
<div class="form-group col-md-7">
|
||||||
|
<label class="sr-only" for="email-address">Email address</label>
|
||||||
|
<input type="email" class="form-control form-control-sm" id="email-address" aria-describedby="emailHelp"
|
||||||
|
placeholder="Your Email Address (Optional)" name="entry.1652853191">
|
||||||
|
<small id="emailHelp" class="form-text text-muted">I'll never share your email with anyone
|
||||||
|
else.</small>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="sr-only" for="comment-section">Your Message</label>
|
||||||
|
<textarea class="form-control form-control-sm" id="comment-section" rows="3"
|
||||||
|
placeholder="Please enter your message or feedback. (Required)" aria-describedby="emailHelp"
|
||||||
|
name="entry.1062656232" required></textarea>
|
||||||
|
<div class="invalid-feedback">
|
||||||
|
Please Enter something !
|
||||||
|
</div>
|
||||||
|
<small id="textHelp" class="form-text text-muted">Enter upto 200 characters.</small>
|
||||||
|
</div>
|
||||||
|
<button class="btn btn-outline-info" type="submit">Send</button>
|
||||||
|
</form>
|
||||||
|
<iframe name="response" hidden></iframe>
|
||||||
|
</div>
|
||||||
|
<div class="alert alert-info" role="alert" id="comment-message" style="display: none;">
|
||||||
|
<h4 class="alert-heading">Thanks You 🥳</h4>
|
||||||
|
<p>Thanks a lot for reading this blog and sending me a feedback. I hope you liked it. I will get back to you
|
||||||
|
soon if you have added an email.</p>
|
||||||
|
</div>
|
||||||
|
<script>
|
||||||
|
(function () {
|
||||||
|
'use strict';
|
||||||
|
window.addEventListener('load', function () {
|
||||||
|
var form = document.getElementById('valid-form');
|
||||||
|
form.addEventListener('submit', function (event) {
|
||||||
|
document.getElementById('page-link').value = window.location.href;
|
||||||
|
document.getElementById('comment-form').style.display = 'none';
|
||||||
|
document.getElementById('comment-message').style.display = '';
|
||||||
|
}, false);
|
||||||
|
}, false);
|
||||||
|
})();
|
||||||
|
</script>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<footer class="footer star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<ul class="col-sm-6 list-inline">
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/archives.html">Archives</a></li>
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/categories.html">Categories</a></li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/tags.html">Tags</a></li>
|
||||||
|
</ul>
|
||||||
|
<p class="col-sm-6 text-sm-right text-muted">Created with <i class="fa fa-heart" style="color: red;"></i> by <a
|
||||||
|
href="https://github.com/avinal" target="_blank">Avinal</a>
|
||||||
|
</p>
|
||||||
|
</div> </div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,282 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<!-- Required meta tags -->
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
|
||||||
|
<title>Developing Minimal Tekton Server | Be My SpaceTime
|
||||||
|
</title>
|
||||||
|
<link rel="canonical" href="https://avinal.space/posts/development/lovely-dangerous-things-redhat.html">
|
||||||
|
|
||||||
|
<link rel="apple-touch-icon" href="https://avinal.space/apple-touch-icon.png" sizes="180x180">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-32x32.png" sizes="32x32">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-16x16.png" sizes="16x16">
|
||||||
|
<link rel="manifest" href="https://avinal.space/site.webmanifest">
|
||||||
|
<meta name="theme-color" content="#333333">
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/bootstrap.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/all.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/pygments/manni.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/theme.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/space.css">
|
||||||
|
|
||||||
|
<link rel="alternate" type="application/atom+xml" title="Full Atom Feed" href="https://avinal.space/feeds/all.atom.xml">
|
||||||
|
<link rel="alternate" type="application/atom+xml" title="Categories Atom Feed"
|
||||||
|
href="https://avinal.space/feeds/development.atom.xml">
|
||||||
|
<meta name="description" content="We will be designing and implementing an application that will be talking to Tekton APIs to create resources on a Kubernetes/OpenShift Cluster.">
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body style="font-family:Overpass Mono,monospace;">
|
||||||
|
<header class="header star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container text-center">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<h1 class="title" style="font-family: ExodarOut;font-weight: lighter;"><a href="https://avinal.space/">Be My SpaceTime</a>
|
||||||
|
</h1>
|
||||||
|
<!--
|
||||||
|
<p class="text-muted">눈치</p>
|
||||||
|
-->
|
||||||
|
<ul class="list-inline">
|
||||||
|
<li class="list-inline-item"><a href="https://gsoc.avinal.space" target="_blank">gsoc</a></li>
|
||||||
|
<li class="list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/pages/about-me.html">About Me</a></li>
|
||||||
|
<li class=" list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-github" href="https://github.com/avinal" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-linkedin" href="https://www.linkedin.com/in/avinal/" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-instagram" href="https://instagram.com/avinal.k" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-calendar" href="https://meet.avinal.space" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fa fa-envelope" href="mailto:blog@avinal.space" target="_blank"></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div> </div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<div class="main">
|
||||||
|
<div class="container">
|
||||||
|
<h1>Developing Minimal Tekton Server <a class="reference external image-reference" href="https://github.com/MiniTeks"><img alt="mks_logo" class="align-middle" src="/images/mks_logo.png" style="width: 1.5em;" /></a>
|
||||||
|
</h1>
|
||||||
|
<hr>
|
||||||
|
<article class="article">
|
||||||
|
<header>
|
||||||
|
<ul class="list-inline">
|
||||||
|
<li class="list-inline-item text-muted" title="2022-02-27T20:47:00+05:30">
|
||||||
|
<i class="fas fa-clock"></i>
|
||||||
|
Sun 27 February 2022
|
||||||
|
</li>
|
||||||
|
<li class="list-inline-item">
|
||||||
|
<i class="fas fa-folder-open"></i>
|
||||||
|
<a href="https://avinal.space/category/development.html">development</a>
|
||||||
|
</li>
|
||||||
|
<li class="list-inline-item">
|
||||||
|
<i class="fas fa-tag"></i>
|
||||||
|
<a href="https://avinal.space/tag/kubernetes.html">#kubernetes</a>, <a href="https://avinal.space/tag/redhat.html">#redhat</a>, <a href="https://avinal.space/tag/docker.html">#docker</a>, <a href="https://avinal.space/tag/golang.html">#golang</a>, <a href="https://avinal.space/tag/tekton.html">#tekton</a>, <a href="https://avinal.space/tag/openshift.html">#openshift</a>, <a href="https://avinal.space/tag/intern.html">#intern</a> </li>
|
||||||
|
</ul>
|
||||||
|
</header>
|
||||||
|
<div class="content">
|
||||||
|
<p style="border: 2px solid var(--pink);border-radius: 7px;" align=center>This blog is a descreptive account of the development of Minimal Tekton Server. This is highly technical in nature, so please make sure that you have sufficient knowledge about Golang, Docker, Kubernetes and TektonCD. You can refer to my <a href="https://avinal.space/posts/development/i-am-loving-it-redhat.html">previous blog</a> to know about these topics.<p><p>As mentioned in my last blog, we were given to implement an application named <strong>Minimal Tekton Server</strong>. The problem statement reads:</p>
|
||||||
|
<blockquote class="epigraph">
|
||||||
|
We will be designing and implementing an application that will be talking to Tekton APIs to create resources on a Kubernetes/OpenShift Cluster. The application will expose some fields of the Tekton Resources which the user will provide and then this application will create Tekton resources by talking to Tekton APIs available on the cluster to create the resources based on the user-provided fields.</blockquote>
|
||||||
|
<p>There are three parts in this project for the application and two more parts for the CI/CD using TektonCD and Kubernetes/OpenShift. I will go through each part descriptively and try to explain what we did.</p>
|
||||||
|
<div class="section" id="the-architecture-of-mks">
|
||||||
|
<h2>The Architecture of MKS</h2>
|
||||||
|
<p>The first task in the development of the Minimal Tekton Server was creating its architectural diagram. Our first diagram was trash compared to the final diagram. Yeah, we learned. I will be explaining our final(obviously) architectural diagram and try to make some sense out of band-aids and duct tapes.</p>
|
||||||
|
<img alt="The MKS Arhitecture" class="img-fluid my-3" src="/images/mks-architecture.png" />
|
||||||
|
<p>Let me start with explaining <strong>What are MKS Resources?</strong>. I hope you know at least tidbits about Kubernetes and by the definition: <em>A resource is an endpoint in the Kubernetes API that stores a collection of API objects of a certain kind; for example, the built-in :code:`pods` resource contains a collection of Pod objects.</em> But developers soon realized that these in-built resources were not enough for the ever-growing applications of Kubernetes. Here <a class="reference external" href="https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/">custom resource</a> comes into the picture. <em>A custom resource is an extension of the Kubernetes API that is not necessarily available in a default Kubernetes installation.</em> To define a custom resource we use something called <a class="reference external" href="https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/">Custom Resource Definition</a>. So MKS Resources are such custom resources that correspond to the TektonCD custom resources.</p>
|
||||||
|
<img alt="A venus flytrap engulphing an insect." class="float-md-right ml-3" src="/images/venus-flytrap.gif" style="width: 250px;" />
|
||||||
|
<p>Let us now focus on the box containing <code>Controller</code> and <code>API server</code>. The controller can be said as a stimulus-response mechanism. Take the analogy of a Venus Flytrap plant. The trap is initially open. There are <code>trigger</code> hairs on the inside of the trap. Once an insect is detected, there is a change of state and the trap closes in a blick on the eye. The controller works the same way. It listens for the change in the state of the MKS resources and immediately transfers the request to the Tekton API to reflect the change in the corresponding Tekton resources. The changes can be creation, deletion, or updating. The API server ensures that there is a working connection between our controller and the Tekton API.</p>
|
||||||
|
<p>MKS Server also exposes APIs to introduce a change of state in the MKS resources. In technical terms these are called <code>verbs</code>. There are five such verbs that we have exposed: <code>create</code>, <code>update</code>, <code>get</code>, <code>delete</code>, and <code>list</code>. They can be utilized by a REST client, or in our case <strong>MKS CLI</strong> to introduce desired change. The MKS command-line interface provides commands and subcommands to do the desired tasks.</p>
|
||||||
|
<p>Whenever there is a change in the state, there is a logic running inside the controller to react on that and that also affects our database. We store four datapoints in our database: <code>created</code>, <code>deleted</code>, <code>completed</code>, and <code>failed</code>. They tell us about the current statistcs of our MKS resource using a single-page web app called <strong>MKS Dashboard</strong> (or UI).</p>
|
||||||
|
<p>This was about the architecture of the Minimal Tekton Server. Let us jump into more technical stuff.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="how-to-implement-a-crd-controller">
|
||||||
|
<h2>How to implement a CRD controller?</h2>
|
||||||
|
<p>During this assignment, something that took the most time and effort was the implementation of a controller for our custom resources. This isn't very hard if you go by the rules and do the things according to the well-defined documents and blogs since this is a standard step in the implementation of any custom resource controller. But did we follow the rules? Hell no! But this time, let us go step-by-step.</p>
|
||||||
|
<ol class="arabic simple">
|
||||||
|
<li>The first step is to define a <code>CustomResourceDefinition</code> for our custom resource. Let us define a CRD called <code>spacetime</code>. To do this you can write a YAML file like below.</li>
|
||||||
|
</ol>
|
||||||
|
<div class="highlight"><pre><span></span><span class="c1"># file: spacetime-crd.yaml</span><span class="w"></span>
|
||||||
|
<span class="nt">apiVersion</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">apiextensions.k8s.io/v1</span><span class="w"></span>
|
||||||
|
<span class="nt">kind</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">CustomResourceDefinition</span><span class="w"></span>
|
||||||
|
<span class="nt">metadata</span><span class="p">:</span><span class="w"></span>
|
||||||
|
<span class="c1"># name must match the spec fields below, and be in the form: <plural>.<group></span><span class="w"></span>
|
||||||
|
<span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">spacetimes.example.com</span><span class="w"></span>
|
||||||
|
<span class="nt">spec</span><span class="p">:</span><span class="w"></span>
|
||||||
|
<span class="c1"># group name to use for REST API: /apis/<group>/<version></span><span class="w"></span>
|
||||||
|
<span class="nt">group</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">example.com</span><span class="w"></span>
|
||||||
|
<span class="c1"># list of versions supported by this CustomResourceDefinition</span><span class="w"></span>
|
||||||
|
<span class="nt">versions</span><span class="p">:</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">v1alpha1</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="c1"># Each version can be enabled/disabled by Served flag.</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">served</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">true</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="c1"># One and only one version must be marked as the storage version.</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">storage</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">true</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">schema</span><span class="p">:</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">openAPIV3Schema</span><span class="p">:</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">object</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">properties</span><span class="p">:</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">spec</span><span class="p">:</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">object</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">properties</span><span class="p">:</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">message</span><span class="p">:</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">string</span><span class="w"></span>
|
||||||
|
<span class="c1"># either Namespaced or Cluster</span><span class="w"></span>
|
||||||
|
<span class="nt">scope</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Namespaced</span><span class="w"></span>
|
||||||
|
<span class="nt">names</span><span class="p">:</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="c1"># plural name to be used in the URL: /apis/<group>/<version>/<plural></span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">plural</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">spacetimes</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="c1"># singular name to be used as an alias on the CLI and for display</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">singular</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">spacetime</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="c1"># kind is normally the CamelCased singular type. Your resource manifests use this.</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">kind</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">SpaceTime</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="c1"># shortNames allow shorter string to match your resource on the CLI</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">shortNames</span><span class="p">:</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">st</span><span class="w"></span>
|
||||||
|
</pre></div>
|
||||||
|
<p>You can learn more about the fields and options <a class="reference external" href="https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/">here</a>. The CRD that we defined above corresponds to the <code>CustomResource</code> given below. Once you apply the above file you will be able to see the <code>spacetime</code> custom resource on your Kubernetes/OpenShift cluster.</p>
|
||||||
|
<div class="highlight"><pre><span></span><span class="c1"># file: spacetime-cr.yaml</span><span class="w"></span>
|
||||||
|
<span class="nt">apiVersion</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">spacetimes.example.com/v1alpha1</span><span class="w"></span>
|
||||||
|
<span class="nt">kind</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">SpaceTime</span><span class="w"></span>
|
||||||
|
<span class="nt">metadata</span><span class="p">:</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">spacetime-cr</span><span class="w"></span>
|
||||||
|
<span class="nt">spec</span><span class="p">:</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">message</span><span class="p">:</span><span class="w"> </span><span class="s">"Hello</span><span class="nv"> </span><span class="s">from</span><span class="nv"> </span><span class="s">space!"</span><span class="w"></span>
|
||||||
|
</pre></div>
|
||||||
|
<p>Apply them using the following commands:</p>
|
||||||
|
<div class="highlight"><pre><span></span>kubectl apply -f spacetime-crd.yaml
|
||||||
|
kubectl apply -f spacetime-cr.yaml
|
||||||
|
</pre></div>
|
||||||
|
<ol class="arabic simple" start="2">
|
||||||
|
<li>Once we have defined our custom resources, we need to define the types that will correspond to this custom resource definition. This can be done using <code>k8s.io/apimachinery/pkg/apis/meta/v1</code> package written in golang. Did I tell you that this is all in golang? Well, now you know. Create a package structure for a golang project and add the definition of the type as given below.</li>
|
||||||
|
</ol>
|
||||||
|
<div class="highlight"><pre><span></span>mkdir -p pkg/api/spacetime/v1alpha1
|
||||||
|
touch pkg/api/spacetime/v1alpha1/<span class="o">{</span>spacetime_types,register,doc<span class="o">}</span>.go pkg/api/spacetime/register.go
|
||||||
|
</pre></div>
|
||||||
|
<p>Add the following content to the corresponding files.</p>
|
||||||
|
<div class="highlight"><pre><span></span><span class="c1">// file: /pkg/api/spacetime/v1alpha1/spacetime_types.go</span><span class="w"></span>
|
||||||
|
<span class="kn">package</span><span class="w"> </span><span class="nx">v1alpha1</span><span class="w"></span>
|
||||||
|
|
||||||
|
<span class="kn">import</span><span class="w"> </span><span class="p">(</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nx">metav1</span><span class="w"> </span><span class="s">"k8s.io/apimachinery/pkg/apis/meta/v1"</span><span class="w"></span>
|
||||||
|
<span class="p">)</span><span class="w"></span>
|
||||||
|
|
||||||
|
<span class="kd">type</span><span class="w"> </span><span class="nx">SpaceTime</span><span class="w"> </span><span class="kd">struct</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nx">metav1</span><span class="p">.</span><span class="nx">TypeMeta</span><span class="w"> </span><span class="s">`json:",inline"`</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nx">metav1</span><span class="p">.</span><span class="nx">ObjectMeta</span><span class="w"> </span><span class="s">`json:"metadata,omitempty"`</span><span class="w"></span>
|
||||||
|
|
||||||
|
<span class="w"> </span><span class="nx">Spec</span><span class="w"> </span><span class="nx">SpaceTimeSpec</span><span class="w"> </span><span class="s">`json:"spec"`</span><span class="w"></span>
|
||||||
|
<span class="p">}</span><span class="w"></span>
|
||||||
|
|
||||||
|
<span class="kd">type</span><span class="w"> </span><span class="nx">SpaceTimeSpec</span><span class="w"> </span><span class="kd">struct</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nx">Message</span><span class="w"> </span><span class="kt">string</span><span class="w"> </span><span class="s">`json:"message"`</span><span class="w"></span>
|
||||||
|
<span class="p">}</span><span class="w"></span>
|
||||||
|
|
||||||
|
<span class="kd">type</span><span class="w"> </span><span class="nx">SpaceTimeList</span><span class="w"> </span><span class="kd">struct</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nx">metav1</span><span class="p">.</span><span class="nx">TypeMeta</span><span class="w"> </span><span class="s">`json:",inline"`</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nx">metav1</span><span class="p">.</span><span class="nx">ListMeta</span><span class="w"> </span><span class="s">`json:"metadata"`</span><span class="w"></span>
|
||||||
|
|
||||||
|
<span class="w"> </span><span class="nx">Items</span><span class="w"> </span><span class="p">[]</span><span class="nx">SpaceTime</span><span class="w"> </span><span class="s">`json:"items"`</span><span class="w"></span>
|
||||||
|
<span class="p">}</span><span class="w"></span>
|
||||||
|
</pre></div>
|
||||||
|
<p><strong>To be Continued</strong></p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
<p align=center>
|
||||||
|
This Blog is licensed under <a href="http://creativecommons.org/licenses/by-nc/4.0/?ref=chooser-v1"
|
||||||
|
target="_blank" rel="license noopener noreferrer">Attribution-NonCommercial 4.0 International<img
|
||||||
|
style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
|
||||||
|
src="https://mirrors.creativecommons.org/presskit/icons/cc.svg?ref=chooser-v1"><img
|
||||||
|
style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
|
||||||
|
src="https://mirrors.creativecommons.org/presskit/icons/by.svg?ref=chooser-v1"><img
|
||||||
|
style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
|
||||||
|
src="https://mirrors.creativecommons.org/presskit/icons/nc.svg?ref=chooser-v1">
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
<hr>
|
||||||
|
<div id="comment-form">
|
||||||
|
<div class="alert alert-info" role="alert">
|
||||||
|
Feel free to leave a feedback or question!
|
||||||
|
</div>
|
||||||
|
<form action="https://docs.google.com/forms/u/0/d/e/1FAIpQLSfL9T8WBRm-Ac2uyu74lJXSYOqAuF6lLIUAulRArCsuiI1ZRQ/formResponse" target="response" method="POST" id="valid-form">
|
||||||
|
<div class="form-row align-items-center">
|
||||||
|
<div class="form-group col-md-5">
|
||||||
|
<label class="sr-only" for="person-name">Name</label>
|
||||||
|
<input type="text" class="form-control form-control-sm" id="person-name" placeholder="Your Name (Optional)"
|
||||||
|
aria-describedby="nameHelp" name="entry.982725972">
|
||||||
|
<input type="text" id="page-link" name="entry.1641222305" hidden>
|
||||||
|
<small id="nameHelp" class="form-text text-muted">You may put your GitHub Username.</small>
|
||||||
|
</div>
|
||||||
|
<div class="form-group col-md-7">
|
||||||
|
<label class="sr-only" for="email-address">Email address</label>
|
||||||
|
<input type="email" class="form-control form-control-sm" id="email-address" aria-describedby="emailHelp"
|
||||||
|
placeholder="Your Email Address (Optional)" name="entry.1652853191">
|
||||||
|
<small id="emailHelp" class="form-text text-muted">I'll never share your email with anyone
|
||||||
|
else.</small>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="sr-only" for="comment-section">Your Message</label>
|
||||||
|
<textarea class="form-control form-control-sm" id="comment-section" rows="3"
|
||||||
|
placeholder="Please enter your message or feedback. (Required)" aria-describedby="emailHelp"
|
||||||
|
name="entry.1062656232" required></textarea>
|
||||||
|
<div class="invalid-feedback">
|
||||||
|
Please Enter something !
|
||||||
|
</div>
|
||||||
|
<small id="textHelp" class="form-text text-muted">Enter upto 200 characters.</small>
|
||||||
|
</div>
|
||||||
|
<button class="btn btn-outline-info" type="submit">Send</button>
|
||||||
|
</form>
|
||||||
|
<iframe name="response" hidden></iframe>
|
||||||
|
</div>
|
||||||
|
<div class="alert alert-info" role="alert" id="comment-message" style="display: none;">
|
||||||
|
<h4 class="alert-heading">Thanks You 🥳</h4>
|
||||||
|
<p>Thanks a lot for reading this blog and sending me a feedback. I hope you liked it. I will get back to you
|
||||||
|
soon if you have added an email.</p>
|
||||||
|
</div>
|
||||||
|
<script>
|
||||||
|
(function () {
|
||||||
|
'use strict';
|
||||||
|
window.addEventListener('load', function () {
|
||||||
|
var form = document.getElementById('valid-form');
|
||||||
|
form.addEventListener('submit', function (event) {
|
||||||
|
document.getElementById('page-link').value = window.location.href;
|
||||||
|
document.getElementById('comment-form').style.display = 'none';
|
||||||
|
document.getElementById('comment-message').style.display = '';
|
||||||
|
}, false);
|
||||||
|
}, false);
|
||||||
|
})();
|
||||||
|
</script>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<footer class="footer star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<ul class="col-sm-6 list-inline">
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/archives.html">Archives</a></li>
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/categories.html">Categories</a></li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/tags.html">Tags</a></li>
|
||||||
|
</ul>
|
||||||
|
<p class="col-sm-6 text-sm-right text-muted">Created with <i class="fa fa-heart" style="color: red;"></i> by <a
|
||||||
|
href="https://github.com/avinal" target="_blank">Avinal</a>
|
||||||
|
</p>
|
||||||
|
</div> </div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,284 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<!-- Required meta tags -->
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
|
||||||
|
<title>reStructuredText in GitHub | Be My SpaceTime
|
||||||
|
</title>
|
||||||
|
<link rel="canonical" href="https://avinal.space/posts/development/rst-guide.html">
|
||||||
|
|
||||||
|
<link rel="apple-touch-icon" href="https://avinal.space/apple-touch-icon.png" sizes="180x180">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-32x32.png" sizes="32x32">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-16x16.png" sizes="16x16">
|
||||||
|
<link rel="manifest" href="https://avinal.space/site.webmanifest">
|
||||||
|
<meta name="theme-color" content="#333333">
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/bootstrap.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/all.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/pygments/manni.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/theme.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/space.css">
|
||||||
|
|
||||||
|
<link rel="alternate" type="application/atom+xml" title="Full Atom Feed" href="https://avinal.space/feeds/all.atom.xml">
|
||||||
|
<link rel="alternate" type="application/atom+xml" title="Categories Atom Feed"
|
||||||
|
href="https://avinal.space/feeds/development.atom.xml">
|
||||||
|
<meta name="description" content="reStructuredText syntax">
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body style="font-family:Overpass Mono,monospace;">
|
||||||
|
<header class="header star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container text-center">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<h1 class="title" style="font-family: ExodarOut;font-weight: lighter;"><a href="https://avinal.space/">Be My SpaceTime</a>
|
||||||
|
</h1>
|
||||||
|
<!--
|
||||||
|
<p class="text-muted">눈치</p>
|
||||||
|
-->
|
||||||
|
<ul class="list-inline">
|
||||||
|
<li class="list-inline-item"><a href="https://gsoc.avinal.space" target="_blank">gsoc</a></li>
|
||||||
|
<li class="list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/pages/about-me.html">About Me</a></li>
|
||||||
|
<li class=" list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-github" href="https://github.com/avinal" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-linkedin" href="https://www.linkedin.com/in/avinal/" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-instagram" href="https://instagram.com/avinal.k" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-calendar" href="https://meet.avinal.space" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fa fa-envelope" href="mailto:blog@avinal.space" target="_blank"></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div> </div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<div class="main">
|
||||||
|
<div class="container">
|
||||||
|
<h1>reStructuredText in GitHub
|
||||||
|
</h1>
|
||||||
|
<hr>
|
||||||
|
<article class="article">
|
||||||
|
<header>
|
||||||
|
<ul class="list-inline">
|
||||||
|
<li class="list-inline-item text-muted" title="2021-02-14T22:47:00+05:30">
|
||||||
|
<i class="fas fa-clock"></i>
|
||||||
|
Sun 14 February 2021
|
||||||
|
</li>
|
||||||
|
<li class="list-inline-item">
|
||||||
|
<i class="fas fa-folder-open"></i>
|
||||||
|
<a href="https://avinal.space/category/development.html">development</a>
|
||||||
|
</li>
|
||||||
|
<li class="list-inline-item">
|
||||||
|
<i class="fas fa-tag"></i>
|
||||||
|
<a href="https://avinal.space/tag/rst.html">#rst</a>, <a href="https://avinal.space/tag/github.html">#github</a> </li>
|
||||||
|
</ul>
|
||||||
|
</header>
|
||||||
|
<div class="content">
|
||||||
|
<ul>
|
||||||
|
<li><p class="first">Headers</p>
|
||||||
|
<div class="highlight"><pre><span></span><span class="gh">Top Title</span>
|
||||||
|
<span class="gh">=========</span>
|
||||||
|
|
||||||
|
<span class="gh">Sub Title</span>
|
||||||
|
<span class="gh">---------</span>
|
||||||
|
|
||||||
|
<span class="gh">Sub Sub Title</span>
|
||||||
|
<span class="gh">^^^^^^^^^^^^^</span>
|
||||||
|
</pre></div>
|
||||||
|
</li>
|
||||||
|
<li><p class="first">Images</p>
|
||||||
|
<ul>
|
||||||
|
<li><p class="first">Direct</p>
|
||||||
|
<div class="highlight"><pre><span></span><span class="p">..</span> <span class="ow">figure</span><span class="p">::</span> image-path-or-url
|
||||||
|
<span class="nc">:align:</span> center
|
||||||
|
<span class="nc">:target:</span> link-to-go-when-image-is-clicked
|
||||||
|
<span class="nc">:alt:</span> alternative-text-if-any
|
||||||
|
</pre></div>
|
||||||
|
</li>
|
||||||
|
<li><p class="first">Indirect</p>
|
||||||
|
<div class="highlight"><pre><span></span><span class="p">..</span> <span class="nt">|substitution|</span> <span class="ow">image</span><span class="p">::</span> image-path-or-url
|
||||||
|
<span class="nc">:target:</span> link-to-go-when-image-is-clicked
|
||||||
|
</pre></div>
|
||||||
|
<p>You can use <code>|substitution|</code> where you want to put your image.</p>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li><p class="first">Links</p>
|
||||||
|
<div class="highlight"><pre><span></span><span class="s">`Link Text </span><span class="si"><link-itself></span><span class="s">`__</span>
|
||||||
|
</pre></div>
|
||||||
|
</li>
|
||||||
|
<li><p class="first">Lists</p>
|
||||||
|
<div class="highlight"><pre><span></span><span class="m">-</span> item 1
|
||||||
|
<span class="m">-</span> item 2
|
||||||
|
|
||||||
|
<span class="m">*</span> item 1
|
||||||
|
<span class="m">*</span> itme 2
|
||||||
|
|
||||||
|
<span class="m">#.</span> item 1
|
||||||
|
<span class="m">#.</span> item 2
|
||||||
|
|
||||||
|
<span class="m">1.</span> item 1
|
||||||
|
<span class="m">2.</span> item 2
|
||||||
|
</pre></div>
|
||||||
|
<p>First two lists are unordered next two are ordered.</p>
|
||||||
|
</li>
|
||||||
|
<li><p class="first">Code</p>
|
||||||
|
<ul>
|
||||||
|
<li><p class="first">Inline</p>
|
||||||
|
<div class="highlight"><pre><span></span><span class="na">:code:</span><span class="nv">`your-code`</span>
|
||||||
|
</pre></div>
|
||||||
|
</li>
|
||||||
|
<li><p class="first">Code block</p>
|
||||||
|
<div class="highlight"><pre><span></span><span class="p">..</span> <span class="ow">code-block</span><span class="p">::</span> <span class="k">language(optional)</span>
|
||||||
|
|
||||||
|
<span class="s"> Your code</span>
|
||||||
|
<span class="s"> in multiple lines. You may enable line numbers too.</span>
|
||||||
|
</pre></div>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li><p class="first">Tables</p>
|
||||||
|
<div class="highlight"><pre><span></span>+----------------+----------------+
|
||||||
|
<span class="o">|</span> Header Cell | Header Cell |
|
||||||
|
+================+================+
|
||||||
|
<span class="o">|</span> Data cell | Data Cell |
|
||||||
|
+----------------+----------------+
|
||||||
|
<span class="o">|</span> Header Cell | Header Cell |
|
||||||
|
+----------------+----------------+
|
||||||
|
</pre></div>
|
||||||
|
</li>
|
||||||
|
<li><p class="first">Raw HTML block</p>
|
||||||
|
<div class="highlight"><pre><span></span><span class="p">..</span> <span class="ow">raw</span><span class="p">::</span> html
|
||||||
|
|
||||||
|
<put>
|
||||||
|
your html code here
|
||||||
|
</put>
|
||||||
|
</pre></div>
|
||||||
|
</li>
|
||||||
|
<li><p class="first">Notes, warnings</p>
|
||||||
|
<div class="highlight"><pre><span></span><span class="p">..</span> <span class="ow">note</span><span class="p">::</span>
|
||||||
|
|
||||||
|
Put your note here.
|
||||||
|
|
||||||
|
<span class="p">..</span> <span class="ow">warning</span><span class="p">::</span>
|
||||||
|
|
||||||
|
Put your warning here.
|
||||||
|
|
||||||
|
<span class="p">..</span> <span class="ow">important</span><span class="p">::</span>
|
||||||
|
|
||||||
|
Put instructions here.
|
||||||
|
|
||||||
|
<span class="p">..</span> <span class="ow">admonition</span><span class="p">::</span> custom-text
|
||||||
|
|
||||||
|
Custom description here.
|
||||||
|
</pre></div>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<p>These all are supported by GitHub very well. For more exhautive list specific to Sphinx see <a class="reference external" href="https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html">this</a> link.</p>
|
||||||
|
<div class="section" id="tips">
|
||||||
|
<h2>Tips</h2>
|
||||||
|
<ul class="simple">
|
||||||
|
<li>There must be a blank line before and after any directive. Such as after title or code block, tables etc.</li>
|
||||||
|
<li>The options and content of a directives must be 1 tab indented to the directives.</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
<p align=center>
|
||||||
|
This Blog is licensed under <a href="http://creativecommons.org/licenses/by-nc/4.0/?ref=chooser-v1"
|
||||||
|
target="_blank" rel="license noopener noreferrer">Attribution-NonCommercial 4.0 International<img
|
||||||
|
style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
|
||||||
|
src="https://mirrors.creativecommons.org/presskit/icons/cc.svg?ref=chooser-v1"><img
|
||||||
|
style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
|
||||||
|
src="https://mirrors.creativecommons.org/presskit/icons/by.svg?ref=chooser-v1"><img
|
||||||
|
style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
|
||||||
|
src="https://mirrors.creativecommons.org/presskit/icons/nc.svg?ref=chooser-v1">
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
<hr>
|
||||||
|
<div id="comment-form">
|
||||||
|
<div class="alert alert-info" role="alert">
|
||||||
|
Feel free to leave a feedback or question!
|
||||||
|
</div>
|
||||||
|
<form action="https://docs.google.com/forms/u/0/d/e/1FAIpQLSfL9T8WBRm-Ac2uyu74lJXSYOqAuF6lLIUAulRArCsuiI1ZRQ/formResponse" target="response" method="POST" id="valid-form">
|
||||||
|
<div class="form-row align-items-center">
|
||||||
|
<div class="form-group col-md-5">
|
||||||
|
<label class="sr-only" for="person-name">Name</label>
|
||||||
|
<input type="text" class="form-control form-control-sm" id="person-name" placeholder="Your Name (Optional)"
|
||||||
|
aria-describedby="nameHelp" name="entry.982725972">
|
||||||
|
<input type="text" id="page-link" name="entry.1641222305" hidden>
|
||||||
|
<small id="nameHelp" class="form-text text-muted">You may put your GitHub Username.</small>
|
||||||
|
</div>
|
||||||
|
<div class="form-group col-md-7">
|
||||||
|
<label class="sr-only" for="email-address">Email address</label>
|
||||||
|
<input type="email" class="form-control form-control-sm" id="email-address" aria-describedby="emailHelp"
|
||||||
|
placeholder="Your Email Address (Optional)" name="entry.1652853191">
|
||||||
|
<small id="emailHelp" class="form-text text-muted">I'll never share your email with anyone
|
||||||
|
else.</small>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="sr-only" for="comment-section">Your Message</label>
|
||||||
|
<textarea class="form-control form-control-sm" id="comment-section" rows="3"
|
||||||
|
placeholder="Please enter your message or feedback. (Required)" aria-describedby="emailHelp"
|
||||||
|
name="entry.1062656232" required></textarea>
|
||||||
|
<div class="invalid-feedback">
|
||||||
|
Please Enter something !
|
||||||
|
</div>
|
||||||
|
<small id="textHelp" class="form-text text-muted">Enter upto 200 characters.</small>
|
||||||
|
</div>
|
||||||
|
<button class="btn btn-outline-info" type="submit">Send</button>
|
||||||
|
</form>
|
||||||
|
<iframe name="response" hidden></iframe>
|
||||||
|
</div>
|
||||||
|
<div class="alert alert-info" role="alert" id="comment-message" style="display: none;">
|
||||||
|
<h4 class="alert-heading">Thanks You 🥳</h4>
|
||||||
|
<p>Thanks a lot for reading this blog and sending me a feedback. I hope you liked it. I will get back to you
|
||||||
|
soon if you have added an email.</p>
|
||||||
|
</div>
|
||||||
|
<script>
|
||||||
|
(function () {
|
||||||
|
'use strict';
|
||||||
|
window.addEventListener('load', function () {
|
||||||
|
var form = document.getElementById('valid-form');
|
||||||
|
form.addEventListener('submit', function (event) {
|
||||||
|
document.getElementById('page-link').value = window.location.href;
|
||||||
|
document.getElementById('comment-form').style.display = 'none';
|
||||||
|
document.getElementById('comment-message').style.display = '';
|
||||||
|
}, false);
|
||||||
|
}, false);
|
||||||
|
})();
|
||||||
|
</script>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<footer class="footer star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<ul class="col-sm-6 list-inline">
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/archives.html">Archives</a></li>
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/categories.html">Categories</a></li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/tags.html">Tags</a></li>
|
||||||
|
</ul>
|
||||||
|
<p class="col-sm-6 text-sm-right text-muted">Created with <i class="fa fa-heart" style="color: red;"></i> by <a
|
||||||
|
href="https://github.com/avinal" target="_blank">Avinal</a>
|
||||||
|
</p>
|
||||||
|
</div> </div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,288 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<!-- Required meta tags -->
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
|
||||||
|
<title>How I Created This Blog? | Be My SpaceTime
|
||||||
|
</title>
|
||||||
|
<link rel="canonical" href="https://avinal.space/posts/development/twilight-blog.html">
|
||||||
|
|
||||||
|
<link rel="apple-touch-icon" href="https://avinal.space/apple-touch-icon.png" sizes="180x180">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-32x32.png" sizes="32x32">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-16x16.png" sizes="16x16">
|
||||||
|
<link rel="manifest" href="https://avinal.space/site.webmanifest">
|
||||||
|
<meta name="theme-color" content="#333333">
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/bootstrap.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/all.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/pygments/manni.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/theme.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/space.css">
|
||||||
|
|
||||||
|
<link rel="alternate" type="application/atom+xml" title="Full Atom Feed" href="https://avinal.space/feeds/all.atom.xml">
|
||||||
|
<link rel="alternate" type="application/atom+xml" title="Categories Atom Feed"
|
||||||
|
href="https://avinal.space/feeds/development.atom.xml">
|
||||||
|
<meta name="description" content="As you would have guessed by now, this blog is created using one such awesome SSG named Pelican. Pelican is simple, customizable and offers lots of themes and plugins. Pelican is python based SSG and is available through pip.">
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body style="font-family:Overpass Mono,monospace;">
|
||||||
|
<header class="header star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container text-center">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<h1 class="title" style="font-family: ExodarOut;font-weight: lighter;"><a href="https://avinal.space/">Be My SpaceTime</a>
|
||||||
|
</h1>
|
||||||
|
<!--
|
||||||
|
<p class="text-muted">눈치</p>
|
||||||
|
-->
|
||||||
|
<ul class="list-inline">
|
||||||
|
<li class="list-inline-item"><a href="https://gsoc.avinal.space" target="_blank">gsoc</a></li>
|
||||||
|
<li class="list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/pages/about-me.html">About Me</a></li>
|
||||||
|
<li class=" list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-github" href="https://github.com/avinal" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-linkedin" href="https://www.linkedin.com/in/avinal/" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-instagram" href="https://instagram.com/avinal.k" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-calendar" href="https://meet.avinal.space" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fa fa-envelope" href="mailto:blog@avinal.space" target="_blank"></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div> </div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<div class="main">
|
||||||
|
<div class="container">
|
||||||
|
<h1>How I Created This Blog?
|
||||||
|
</h1>
|
||||||
|
<hr>
|
||||||
|
<article class="article">
|
||||||
|
<header>
|
||||||
|
<ul class="list-inline">
|
||||||
|
<li class="list-inline-item text-muted" title="2021-01-26T16:47:00+05:30">
|
||||||
|
<i class="fas fa-clock"></i>
|
||||||
|
Tue 26 January 2021
|
||||||
|
</li>
|
||||||
|
<li class="list-inline-item">
|
||||||
|
<i class="fas fa-folder-open"></i>
|
||||||
|
<a href="https://avinal.space/category/development.html">development</a>
|
||||||
|
</li>
|
||||||
|
<li class="list-inline-item">
|
||||||
|
<i class="fas fa-tag"></i>
|
||||||
|
<a href="https://avinal.space/tag/blog.html">#blog</a>, <a href="https://avinal.space/tag/pelican.html">#pelican</a>, <a href="https://avinal.space/tag/ssg.html">#ssg</a> </li>
|
||||||
|
</ul>
|
||||||
|
</header>
|
||||||
|
<div class="content">
|
||||||
|
<p><span class="html-raw"><div class="alert alert-info" role="alert">This article may not be for you if you are a web developer. You already got better options. 😉</div></span></p>
|
||||||
|
<p>There are lots of ways to create a personal website or a blog. You can design your own user interface and write the backend code. But not everyone is a web developer. And here comes <abbr title="Static Site Generator">SSGs</abbr> to the rescue. <strong>Static Site Generators</strong> are little more than just website generators. In general, if you are looking for a simple blog, its better to use SSG than writing a lot of html and css. They are simple and elegant. Easy to maintain and you can add lots of customizations to your site without breaking or bloating your blog. There are lots of SSGs, <a class="reference external" href="https://jekyllrb.com/">Jekyll</a>, <a class="reference external" href="https://blog.getpelican.com/">Pelican</a> and more complex ones like <a class="reference external" href="https://www.gatsbyjs.com/">Gatsby</a>, <a class="reference external" href="https://gohugo.io/">Hugo</a> .</p>
|
||||||
|
<p>As you would have guessed by now, this blog is created using one such awesome SSG named <strong>Pelican</strong>. Pelican is simple, customizable and offers lots of <a class="reference external" href="http://www.pelicanthemes.com/">themes</a> and <a class="reference external" href="https://github.com/getpelican/pelican-plugins">plugins</a>. Pelican is python based SSG and is available through <code>pip</code>.</p>
|
||||||
|
<div class="highlight"><pre><span></span><span class="c1"># for reStructuredText only (recommended)</span>
|
||||||
|
python -m pip install pelican
|
||||||
|
|
||||||
|
<span class="c1"># for markdown and reStructuredText both</span>
|
||||||
|
python -m pip install <span class="s2">"pelican[markdown]"</span>
|
||||||
|
</pre></div>
|
||||||
|
<p>You can start a pelican project by typing following command. It will create a basic template and build configurations.</p>
|
||||||
|
<div class="highlight"><pre><span></span>pelican-quickstart
|
||||||
|
|
||||||
|
<span class="c1"># output</span>
|
||||||
|
yourproject/
|
||||||
|
├── content <span class="c1"># Put your content here</span>
|
||||||
|
│ └── <span class="o">(</span>pages<span class="o">)</span>
|
||||||
|
├── output <span class="c1"># Output files</span>
|
||||||
|
├── tasks.py
|
||||||
|
├── Makefile <span class="c1"># Makefile to run build and publish command</span>
|
||||||
|
├── pelicanconf.py <span class="c1"># Main settings file</span>
|
||||||
|
└── publishconf.py <span class="c1"># Settings to use when ready to publish</span>
|
||||||
|
</pre></div>
|
||||||
|
<p>Next step is to choose themes. As I said earlier there are lots of <a class="reference external" href="http://www.pelicanthemes.com/">themes</a> . And it is easy to create your own theme. Check <a class="reference external" href="https://docs.getpelican.com/en/latest/themes.html">here</a> to create your own theme. My choice of theme was <a class="reference external" href="https://nairobilug.github.io/pelican-alchemy/">pelican-alchemy</a> . This is a simple and great theme. Installing and removing themes in pelican is very easy.</p>
|
||||||
|
<div class="highlight"><pre><span></span><span class="c1"># list all installed themes</span>
|
||||||
|
pelican-themes -l
|
||||||
|
<span class="c1"># output</span>
|
||||||
|
simple
|
||||||
|
alchemy
|
||||||
|
notmyidea
|
||||||
|
|
||||||
|
<span class="c1"># install new theme</span>
|
||||||
|
pelican-themes -i theme-path
|
||||||
|
|
||||||
|
<span class="c1"># remove a theme</span>
|
||||||
|
pelican-themes -r theme-name
|
||||||
|
</pre></div>
|
||||||
|
<p>To use a particular theme, set the <code>THEME</code> variable in the <strong>pelicanconf.py</strong> file.</p>
|
||||||
|
<div class="highlight"><pre><span></span><span class="n">THEME</span> <span class="o">=</span> <span class="s1">'alchemy'</span>
|
||||||
|
</pre></div>
|
||||||
|
<p>You can also use a theme that is not installed if you have all the required theme files. Just set this variable to its path.</p>
|
||||||
|
<div class="highlight"><pre><span></span><span class="n">THEME</span> <span class="o">=</span> <span class="s1">'path-to-theme-directory'</span>
|
||||||
|
</pre></div>
|
||||||
|
<p>Various themes will have different feature, choose according to your need, or you can always add a feature through plugin. The next step is to build and check your blog. Pelican got it all set up.</p>
|
||||||
|
<div class="highlight"><pre><span></span><span class="c1"># build your website</span>
|
||||||
|
make html
|
||||||
|
<span class="c1"># output</span>
|
||||||
|
<span class="s2">"pelican"</span> <span class="s2">"/mnt/z/my_git/avinal.github.io/content"</span> -o <span class="s2">"/mnt/z/my_git/avinal.github.io/output"</span> -s <span class="s2">"/mnt/z/my_git/avinal.github.io/pelicanconf.py"</span>
|
||||||
|
Done: Processed <span class="m">6</span> articles, <span class="m">0</span> drafts, <span class="m">1</span> page, <span class="m">0</span> hidden pages and <span class="m">0</span> draft pages <span class="k">in</span> <span class="m">2</span>.43 seconds.
|
||||||
|
|
||||||
|
<span class="c1"># build and test/serve on localhost</span>
|
||||||
|
make serve
|
||||||
|
<span class="c1"># output</span>
|
||||||
|
<span class="s2">"pelican"</span> -l <span class="s2">"/mnt/z/my_git/avinal.github.io/content"</span> -o <span class="s2">"/mnt/z/my_git/avinal.github.io/output"</span> -s <span class="s2">"/mnt/z/my_git/avinal.github.io/pelicanconf.py"</span>
|
||||||
|
|
||||||
|
Serving site at: <span class="m">127</span>.0.0.1:8000 - Tap CTRL-C to stop
|
||||||
|
</pre></div>
|
||||||
|
<p>Now open your browser and open <a class="reference external" href="127.0.0.1:8000">127.0.0.1:8000</a> or <a class="reference external" href="localhost:8000">localhost:8000</a>. You should be able to see your new blog. Stop local server using <code>CTRL+C</code>. Next step is to publish it to github pages. Pelican has tools for this too. But wait we can do something more interesting here. Why not let GitHub take care of both building and publishing? Just push this project to a GitHub repository and set up GitHub pages. See <a class="reference external" href="https://pages.github.com/">this</a> help for instructions on that. Before pushing to GitHub add this little script to your project.</p>
|
||||||
|
<div class="highlight"><pre><span></span><span class="ch">#! /bin/bash</span>
|
||||||
|
<span class="c1">## file: publi.sh</span>
|
||||||
|
|
||||||
|
<span class="c1"># install tools</span>
|
||||||
|
sudo apt-get install -y git make python3 python3-pip python3-setuptools python3-wheel
|
||||||
|
|
||||||
|
<span class="c1"># setup github config</span>
|
||||||
|
git config user.email <span class="s2">"your-email"</span>
|
||||||
|
git config user.name <span class="s2">"your-username"</span>
|
||||||
|
|
||||||
|
<span class="c1"># install dependencies</span>
|
||||||
|
sudo pip3 install -r requirements.txt
|
||||||
|
|
||||||
|
<span class="c1"># pelican commands - install theme put your theme in themes directory</span>
|
||||||
|
pelican-themes --install themes/theme-name
|
||||||
|
|
||||||
|
<span class="c1"># publish to github pages</span>
|
||||||
|
ghp-import -m <span class="s2">"Generate Pelican site"</span> -b gh-pages output
|
||||||
|
git push -f origin gh-pages
|
||||||
|
</pre></div>
|
||||||
|
<p>Now once your project is on GitHub, go to the <strong>Actions</strong> tab and click on <em>set up a workflow yourself</em> and paste the following code into the file and commit it.</p>
|
||||||
|
<div class="highlight"><pre><span></span><span class="c1"># file: publish.yml</span><span class="w"></span>
|
||||||
|
<span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Publish Blog</span><span class="w"></span>
|
||||||
|
<span class="nt">on</span><span class="p">:</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">push</span><span class="p">:</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">branches</span><span class="p">:</span><span class="w"> </span><span class="p p-Indicator">[</span><span class="w"> </span><span class="nv">main</span><span class="w"> </span><span class="p p-Indicator">]</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">pull_request</span><span class="p">:</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">branches</span><span class="p">:</span><span class="w"> </span><span class="p p-Indicator">[</span><span class="w"> </span><span class="nv">main</span><span class="w"> </span><span class="p p-Indicator">]</span><span class="w"></span>
|
||||||
|
|
||||||
|
<span class="nt">jobs</span><span class="p">:</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">build</span><span class="p">:</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">runs-on</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">ubuntu-latest</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">steps</span><span class="p">:</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">uses</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">actions/checkout@v2</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">set up permissions</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">run</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">chmod +x publi.sh</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Run a multi-line script</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">run</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">./publi.sh</span><span class="w"></span>
|
||||||
|
</pre></div>
|
||||||
|
<p>If you have done everything correctly then go to <em>https://username.github.io</em> and you should see your blog. From now on whenever you want to add an article, just write it, test locally and push. Yay your blog is ready.</p>
|
||||||
|
<p><span class="html-raw"><h2 style=font-family:Exodar;font-weight:lighter;">But My Blog is Special 🥰</h2></span></p>
|
||||||
|
<p>My blog looks different, that is because I customized this theme a lot, especially headers, footers, and link appearance. And sorry I won't be publish my theme any time sooner. But I am listing down all the resources I have used for finally getting this result. You can always get my help by sending me a <span class="html-raw"><a href="mailto:avinal.xlvii@gmail.com" class="fa fa-envelope" style="text-decoration: none;"></a></span> or starting a discussion on <span class="html-raw"><a href="https://github.com/avinal/avinal/discussions/2" class="fab fa-github" style="text-decoration: none;"></a></span>.</p>
|
||||||
|
<ul class="simple">
|
||||||
|
<li><a class="reference external" href="https://blog.getpelican.com/">Pelican Blog</a></li>
|
||||||
|
<li><a class="reference external" href="https://docs.getpelican.com/en/latest/">Pelican Docs</a></li>
|
||||||
|
<li><a class="reference external" href="http://www.pelicanthemes.com/">Pelican Themes</a></li>
|
||||||
|
<li><a class="reference external" href="https://github.com/nairobilug/pelican-alchemy">Pelican Alchemy Theme</a></li>
|
||||||
|
<li><a class="reference external" href="https://codepen.io/saransh/pen/BKJun">Parallax Star background in CSS</a></li>
|
||||||
|
<li><a class="reference external" href="https://codepen.io/kowlor/pen/ZYYQoy">Solar System animation</a></li>
|
||||||
|
<li><span class="html-raw"><a href="https://www.dafont.com/exodar.font" style="font-family: Exodar;font-weight: lighter;text-decoration: none;">EXODAR Font</a></span></li>
|
||||||
|
<li><a class="reference external" href="https://fonts.google.com/specimen/Overpass+Mono">Overpass Mono</a></li>
|
||||||
|
<li><a class="reference external" href="https://fontawesome.com/how-to-use/on-the-web/setup/hosting-font-awesome-yourself">Font Awesome</a></li>
|
||||||
|
</ul>
|
||||||
|
<p><span class="html-raw"><div class="alert alert-warning" role="alert">Some of the fonts I have used in my blog may not be available for commercial use. Please check if you intend to do so. Alternatively you may use fonts from this wonderful collection, <a href="https://www.websiteplanet.com/blog/best-free-fonts/">70+ Best Free Fonts for Designers – Free for Commercial Use in 2021</a> <i>(Thanks Ritta Blens for this suggestion)</i></div></span></p>
|
||||||
|
<p><span class="html-raw"><p align=center>Thanks!</p></span></p>
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
<p align=center>
|
||||||
|
This Blog is licensed under <a href="http://creativecommons.org/licenses/by-nc/4.0/?ref=chooser-v1"
|
||||||
|
target="_blank" rel="license noopener noreferrer">Attribution-NonCommercial 4.0 International<img
|
||||||
|
style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
|
||||||
|
src="https://mirrors.creativecommons.org/presskit/icons/cc.svg?ref=chooser-v1"><img
|
||||||
|
style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
|
||||||
|
src="https://mirrors.creativecommons.org/presskit/icons/by.svg?ref=chooser-v1"><img
|
||||||
|
style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
|
||||||
|
src="https://mirrors.creativecommons.org/presskit/icons/nc.svg?ref=chooser-v1">
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
<hr>
|
||||||
|
<div id="comment-form">
|
||||||
|
<div class="alert alert-info" role="alert">
|
||||||
|
Feel free to leave a feedback or question!
|
||||||
|
</div>
|
||||||
|
<form action="https://docs.google.com/forms/u/0/d/e/1FAIpQLSfL9T8WBRm-Ac2uyu74lJXSYOqAuF6lLIUAulRArCsuiI1ZRQ/formResponse" target="response" method="POST" id="valid-form">
|
||||||
|
<div class="form-row align-items-center">
|
||||||
|
<div class="form-group col-md-5">
|
||||||
|
<label class="sr-only" for="person-name">Name</label>
|
||||||
|
<input type="text" class="form-control form-control-sm" id="person-name" placeholder="Your Name (Optional)"
|
||||||
|
aria-describedby="nameHelp" name="entry.982725972">
|
||||||
|
<input type="text" id="page-link" name="entry.1641222305" hidden>
|
||||||
|
<small id="nameHelp" class="form-text text-muted">You may put your GitHub Username.</small>
|
||||||
|
</div>
|
||||||
|
<div class="form-group col-md-7">
|
||||||
|
<label class="sr-only" for="email-address">Email address</label>
|
||||||
|
<input type="email" class="form-control form-control-sm" id="email-address" aria-describedby="emailHelp"
|
||||||
|
placeholder="Your Email Address (Optional)" name="entry.1652853191">
|
||||||
|
<small id="emailHelp" class="form-text text-muted">I'll never share your email with anyone
|
||||||
|
else.</small>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="sr-only" for="comment-section">Your Message</label>
|
||||||
|
<textarea class="form-control form-control-sm" id="comment-section" rows="3"
|
||||||
|
placeholder="Please enter your message or feedback. (Required)" aria-describedby="emailHelp"
|
||||||
|
name="entry.1062656232" required></textarea>
|
||||||
|
<div class="invalid-feedback">
|
||||||
|
Please Enter something !
|
||||||
|
</div>
|
||||||
|
<small id="textHelp" class="form-text text-muted">Enter upto 200 characters.</small>
|
||||||
|
</div>
|
||||||
|
<button class="btn btn-outline-info" type="submit">Send</button>
|
||||||
|
</form>
|
||||||
|
<iframe name="response" hidden></iframe>
|
||||||
|
</div>
|
||||||
|
<div class="alert alert-info" role="alert" id="comment-message" style="display: none;">
|
||||||
|
<h4 class="alert-heading">Thanks You 🥳</h4>
|
||||||
|
<p>Thanks a lot for reading this blog and sending me a feedback. I hope you liked it. I will get back to you
|
||||||
|
soon if you have added an email.</p>
|
||||||
|
</div>
|
||||||
|
<script>
|
||||||
|
(function () {
|
||||||
|
'use strict';
|
||||||
|
window.addEventListener('load', function () {
|
||||||
|
var form = document.getElementById('valid-form');
|
||||||
|
form.addEventListener('submit', function (event) {
|
||||||
|
document.getElementById('page-link').value = window.location.href;
|
||||||
|
document.getElementById('comment-form').style.display = 'none';
|
||||||
|
document.getElementById('comment-message').style.display = '';
|
||||||
|
}, false);
|
||||||
|
}, false);
|
||||||
|
})();
|
||||||
|
</script>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<footer class="footer star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<ul class="col-sm-6 list-inline">
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/archives.html">Archives</a></li>
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/categories.html">Categories</a></li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/tags.html">Tags</a></li>
|
||||||
|
</ul>
|
||||||
|
<p class="col-sm-6 text-sm-right text-muted">Created with <i class="fa fa-heart" style="color: red;"></i> by <a
|
||||||
|
href="https://github.com/avinal" target="_blank">Avinal</a>
|
||||||
|
</p>
|
||||||
|
</div> </div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,377 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<!-- Required meta tags -->
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
|
||||||
|
<title>Create the VLC User Documentation for one Mobile Port(Android) | Be My SpaceTime
|
||||||
|
</title>
|
||||||
|
<link rel="canonical" href="https://avinal.space/posts/development/vlc-gsod-report.html">
|
||||||
|
|
||||||
|
<link rel="apple-touch-icon" href="https://avinal.space/apple-touch-icon.png" sizes="180x180">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-32x32.png" sizes="32x32">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-16x16.png" sizes="16x16">
|
||||||
|
<link rel="manifest" href="https://avinal.space/site.webmanifest">
|
||||||
|
<meta name="theme-color" content="#333333">
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/bootstrap.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/all.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/pygments/manni.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/theme.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/space.css">
|
||||||
|
|
||||||
|
<link rel="alternate" type="application/atom+xml" title="Full Atom Feed" href="https://avinal.space/feeds/all.atom.xml">
|
||||||
|
<link rel="alternate" type="application/atom+xml" title="Categories Atom Feed"
|
||||||
|
href="https://avinal.space/feeds/development.atom.xml">
|
||||||
|
<meta name="description" content="The project was to Create the VLC User Documentation for Android Mobile Port which was previously hosted on VLC’s wiki pages. The major portion of this was to start everything from scratch including chapter separation, section organization.">
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body style="font-family:Overpass Mono,monospace;">
|
||||||
|
<header class="header star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container text-center">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<h1 class="title" style="font-family: ExodarOut;font-weight: lighter;"><a href="https://avinal.space/">Be My SpaceTime</a>
|
||||||
|
</h1>
|
||||||
|
<!--
|
||||||
|
<p class="text-muted">눈치</p>
|
||||||
|
-->
|
||||||
|
<ul class="list-inline">
|
||||||
|
<li class="list-inline-item"><a href="https://gsoc.avinal.space" target="_blank">gsoc</a></li>
|
||||||
|
<li class="list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/pages/about-me.html">About Me</a></li>
|
||||||
|
<li class=" list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-github" href="https://github.com/avinal" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-linkedin" href="https://www.linkedin.com/in/avinal/" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-instagram" href="https://instagram.com/avinal.k" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-calendar" href="https://meet.avinal.space" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fa fa-envelope" href="mailto:blog@avinal.space" target="_blank"></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div> </div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<div class="main">
|
||||||
|
<div class="container">
|
||||||
|
<h1>Create the VLC User Documentation for one Mobile Port(Android)
|
||||||
|
</h1>
|
||||||
|
<hr>
|
||||||
|
<article class="article">
|
||||||
|
<header>
|
||||||
|
<ul class="list-inline">
|
||||||
|
<li class="list-inline-item text-muted" title="2020-12-01T23:47:00+05:30">
|
||||||
|
<i class="fas fa-clock"></i>
|
||||||
|
Tue 01 December 2020
|
||||||
|
</li>
|
||||||
|
<li class="list-inline-item">
|
||||||
|
<i class="fas fa-folder-open"></i>
|
||||||
|
<a href="https://avinal.space/category/development.html">development</a>
|
||||||
|
</li>
|
||||||
|
<li class="list-inline-item">
|
||||||
|
<i class="fas fa-tag"></i>
|
||||||
|
<a href="https://avinal.space/tag/vlc.html">#vlc</a>, <a href="https://avinal.space/tag/gsod.html">#gsod</a>, <a href="https://avinal.space/tag/gsod2020.html">#gsod2020</a> </li>
|
||||||
|
</ul>
|
||||||
|
</header>
|
||||||
|
<div class="content">
|
||||||
|
<div class="section" id="overview">
|
||||||
|
<h2>OVERVIEW</h2>
|
||||||
|
<p>VideoLAN is a non-profit organization that develops software for playing video and other media formats. VLC media player (commonly known as just VLC) is a free and Open Source cross-platform multimedia player and framework that plays most multimedia files as well as DVDs, Audio CDs, VCDs, and various streaming protocols built by the VideoLAN organization and a team of volunteers. VLC for Android is a port of the VLC for Android OS.</p>
|
||||||
|
<p>The project was to Create the VLC User Documentation for Android Mobile Port which was previously hosted on VLC’s wiki pages. The major portion of this was to start everything from scratch including chapter separation, section organization and an engaging and easy to follow for both technical and non-technical users. The original proposal can be found here.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="project-goals">
|
||||||
|
<h2>PROJECT GOALS</h2>
|
||||||
|
<ul class="simple">
|
||||||
|
<li>Propose a new structure for documentation e.g. Chapter Separation, Sections etc</li>
|
||||||
|
<li>Proper balance between technical and non-technical descriptions to serve all kinds of users.</li>
|
||||||
|
<li>Adequate amount of screenshots in each section and other supporting media to make documentation more appealing.</li>
|
||||||
|
<li>Optimized for all Screen Sizes. Especially for Mobile Devices.</li>
|
||||||
|
<li>Ease of navigation</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="community-bonding">
|
||||||
|
<h2>COMMUNITY BONDING</h2>
|
||||||
|
<p>This period was mostly utilized for collecting more information and many internal meetings to shape the projects and bonding with fellow writers, developers(mentors). I got to know more about the VLC organization and the project. We decided to create a skeleton of the project and then follow a Issue-Merge Request-Review-Merge system to keep the commit history clean and maintain the proper review of the work before it is merged.</p>
|
||||||
|
<p>I initially proposed that the new documentation should also use the same tools(Sphinx and GitLab Pages) because if in future we want to merge all the documentation into a single one, it will be easier to migrate and will provide a consistency across all documentations. Later I got to know that this will be an independent project and may not be merged since it solves a lot of problems. I was already familiar with the tools so it took no time to get started.</p>
|
||||||
|
<p>Nicolas Pomepuy, who is the lead developer of VLC for Android was assigned as my primary mentor and Simon Latapie as secondary mentor.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="documentation-development-phase">
|
||||||
|
<h2>DOCUMENTATION DEVELOPMENT PHASE</h2>
|
||||||
|
<p>Initial Preparation
|
||||||
|
I first moved my existing demo documentation to an entirely new repository with only the skeleton at the suggestion of my mentor. It was necessary to keep the commit history clean. The skeleton contained the empty directories representing the chapter separation. I got to learn “how to properly develop a project and contribute to open source”. This was a major lesson that got me familiar with the Merge Request and Review system.</p>
|
||||||
|
<p>The Development
|
||||||
|
The next part was to frame the actual documentation pages and push to the repository. Since there was a significant time-zone difference we agreed to discuss by creating issues and sometimes my emails. There was one meeting every fortnight to check the process and discuss further development and blockers. Nicolas was really helpful and patient, answering each of my big-small queries.</p>
|
||||||
|
<p>Work Done</p>
|
||||||
|
<style>
|
||||||
|
table,td,th {
|
||||||
|
border-collapse:collapse;
|
||||||
|
border: 1px solid #000000;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td><strong>Documentation</strong></td>
|
||||||
|
<td><a href="https://avinal.videolan.me/vlc-android-user/">VLC for Android User Documentation </a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><strong>Project Repository</strong>
|
||||||
|
</td>
|
||||||
|
<td><a href="https://code.videolan.org/avinal/vlc-android-user">Projects · Avinal Kumar / VLC for Android User Documentation</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><strong>Commits</strong>
|
||||||
|
</td>
|
||||||
|
<td><a href="https://code.videolan.org/avinal/vlc-android-user/-/commits/master">Commits · Avinal Kumar / VLC for Android User Documentation</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><strong>Issues/Discussions</strong>
|
||||||
|
</td>
|
||||||
|
<td><a href="https://code.videolan.org/avinal/vlc-android-user/-/issues">Issues · Avinal Kumar / VLC for Android User Documentation</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><strong>Merge Requests</strong>
|
||||||
|
</td>
|
||||||
|
<td><a href="https://code.videolan.org/avinal/vlc-android-user/-/merge_requests">Merge Requests · Avinal Kumar / VLC for Android User Documentation</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table><p>Since the Android port of VLC can be installed on Android Smartphones/Tablets, Android TVs, Amazon Fire Devices and Chromebooks too, a full documentation will cover these all devices. Although these are different form factors, the features provided on each of them is exactly the same and the same documentation can be used for all these devices. As of now only Smartphones/Tablets are covered. And later additional pages will be added to reference different features/User Interface. Regardless of this addition the current documentation can serve a major part for all these form factors.
|
||||||
|
Completed/Remaining</p>
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td><strong>Chapters</strong>
|
||||||
|
</td>
|
||||||
|
<td><strong>Sections</strong>
|
||||||
|
</td>
|
||||||
|
<td><strong>Status</strong>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><strong>Settings</strong>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<ul>
|
||||||
|
<li>General Settings
|
||||||
|
<li>Interface
|
||||||
|
<li>Video
|
||||||
|
<li>Subtitles
|
||||||
|
<li>Audio
|
||||||
|
<li>Casting
|
||||||
|
<li>Advanced
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
<td><strong>ALL COMPLETED</strong>
|
||||||
|
<p>
|
||||||
|
<strong>FOR ALL FORM FACTORS</strong>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><strong>Video</strong>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<ul>
|
||||||
|
<li>Video Explorer
|
||||||
|
<li>Video Player
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
<td><strong>COMPLETED FOR SMARTPHONES/TABLETS</strong>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><strong>Audio</strong>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<ul>
|
||||||
|
<li>Audio Explorer
|
||||||
|
<li>Audio Player
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
<td><strong>COMPLETED FOR SMARTPHONES/TABLETS</strong>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><strong>Browse</strong>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<ul>
|
||||||
|
<li>Explorer
|
||||||
|
<li>Local Network
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
<td><strong>ONLY SMB IN LOCAL NETWORK COMPLETED</strong>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><strong>Installation</strong>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<ul>
|
||||||
|
<li>Smartphones/Tablets
|
||||||
|
<li>Android TV
|
||||||
|
<li>Fire Devices
|
||||||
|
<li>Chromebooks
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
<td><strong>COMPLETED FOR SMARTPHONES/TABLETS</strong>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><strong>User Interface</strong>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<ul>
|
||||||
|
<li>Smartphones/Tablets
|
||||||
|
<li>Android TV
|
||||||
|
<li>Fire Devices
|
||||||
|
<li>Chromebooks
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
<td><strong>COMPLETED FOR SMARTPHONES/TABLETS</strong>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><strong>Support</strong>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<ul>
|
||||||
|
<li>FAQs
|
||||||
|
<li>Help
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
<td><strong>IN PROGRESS</strong>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><strong>Guidelines</strong>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<ul>
|
||||||
|
<li>Contribution Guideline
|
||||||
|
<li>Screenshot Guidelines
|
||||||
|
<li>READMEs
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
<td><strong>IN PROGRESS</strong>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table></div>
|
||||||
|
<div class="section" id="challenges">
|
||||||
|
<h2>CHALLENGES</h2>
|
||||||
|
<p>The major obstacle was to get screenshots for all form factors. Since screenshots were the major part of this documentation it was necessary to provide proper screenshots in each chapter and with every step. For Android TV and Smartphone this was solved by using emulators instead of actual devices, but to emulate the actual scenario in an emulator was sometimes very difficult.
|
||||||
|
There were many occasions where I was not able to gather the exact information about devices other than smartphones/tables. Since all form factors share a common pool of features, my mentor suggested that I focus on smartphones/tables. And to create issues mentioning missing parts so that it could be solved later.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="thanks">
|
||||||
|
<h2>THANKS</h2>
|
||||||
|
<p>I want to thank my mentors for being supporting and helpful. I want to thank every person at VLC and Google who were involved in this whole process. Thanks and Congrats to my fellow writer Abhishek Pratap Singh. This was a great opportunity to learn and meet awesome people. I learned a lot about Sphinx, reStructured Text and many other things.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
<p align=center>
|
||||||
|
This Blog is licensed under <a href="http://creativecommons.org/licenses/by-nc/4.0/?ref=chooser-v1"
|
||||||
|
target="_blank" rel="license noopener noreferrer">Attribution-NonCommercial 4.0 International<img
|
||||||
|
style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
|
||||||
|
src="https://mirrors.creativecommons.org/presskit/icons/cc.svg?ref=chooser-v1"><img
|
||||||
|
style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
|
||||||
|
src="https://mirrors.creativecommons.org/presskit/icons/by.svg?ref=chooser-v1"><img
|
||||||
|
style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
|
||||||
|
src="https://mirrors.creativecommons.org/presskit/icons/nc.svg?ref=chooser-v1">
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
<hr>
|
||||||
|
<div id="comment-form">
|
||||||
|
<div class="alert alert-info" role="alert">
|
||||||
|
Feel free to leave a feedback or question!
|
||||||
|
</div>
|
||||||
|
<form action="https://docs.google.com/forms/u/0/d/e/1FAIpQLSfL9T8WBRm-Ac2uyu74lJXSYOqAuF6lLIUAulRArCsuiI1ZRQ/formResponse" target="response" method="POST" id="valid-form">
|
||||||
|
<div class="form-row align-items-center">
|
||||||
|
<div class="form-group col-md-5">
|
||||||
|
<label class="sr-only" for="person-name">Name</label>
|
||||||
|
<input type="text" class="form-control form-control-sm" id="person-name" placeholder="Your Name (Optional)"
|
||||||
|
aria-describedby="nameHelp" name="entry.982725972">
|
||||||
|
<input type="text" id="page-link" name="entry.1641222305" hidden>
|
||||||
|
<small id="nameHelp" class="form-text text-muted">You may put your GitHub Username.</small>
|
||||||
|
</div>
|
||||||
|
<div class="form-group col-md-7">
|
||||||
|
<label class="sr-only" for="email-address">Email address</label>
|
||||||
|
<input type="email" class="form-control form-control-sm" id="email-address" aria-describedby="emailHelp"
|
||||||
|
placeholder="Your Email Address (Optional)" name="entry.1652853191">
|
||||||
|
<small id="emailHelp" class="form-text text-muted">I'll never share your email with anyone
|
||||||
|
else.</small>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="sr-only" for="comment-section">Your Message</label>
|
||||||
|
<textarea class="form-control form-control-sm" id="comment-section" rows="3"
|
||||||
|
placeholder="Please enter your message or feedback. (Required)" aria-describedby="emailHelp"
|
||||||
|
name="entry.1062656232" required></textarea>
|
||||||
|
<div class="invalid-feedback">
|
||||||
|
Please Enter something !
|
||||||
|
</div>
|
||||||
|
<small id="textHelp" class="form-text text-muted">Enter upto 200 characters.</small>
|
||||||
|
</div>
|
||||||
|
<button class="btn btn-outline-info" type="submit">Send</button>
|
||||||
|
</form>
|
||||||
|
<iframe name="response" hidden></iframe>
|
||||||
|
</div>
|
||||||
|
<div class="alert alert-info" role="alert" id="comment-message" style="display: none;">
|
||||||
|
<h4 class="alert-heading">Thanks You 🥳</h4>
|
||||||
|
<p>Thanks a lot for reading this blog and sending me a feedback. I hope you liked it. I will get back to you
|
||||||
|
soon if you have added an email.</p>
|
||||||
|
</div>
|
||||||
|
<script>
|
||||||
|
(function () {
|
||||||
|
'use strict';
|
||||||
|
window.addEventListener('load', function () {
|
||||||
|
var form = document.getElementById('valid-form');
|
||||||
|
form.addEventListener('submit', function (event) {
|
||||||
|
document.getElementById('page-link').value = window.location.href;
|
||||||
|
document.getElementById('comment-form').style.display = 'none';
|
||||||
|
document.getElementById('comment-message').style.display = '';
|
||||||
|
}, false);
|
||||||
|
}, false);
|
||||||
|
})();
|
||||||
|
</script>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<footer class="footer star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<ul class="col-sm-6 list-inline">
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/archives.html">Archives</a></li>
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/categories.html">Categories</a></li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/tags.html">Tags</a></li>
|
||||||
|
</ul>
|
||||||
|
<p class="col-sm-6 text-sm-right text-muted">Created with <i class="fa fa-heart" style="color: red;"></i> by <a
|
||||||
|
href="https://github.com/avinal" target="_blank">Avinal</a>
|
||||||
|
</p>
|
||||||
|
</div> </div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,311 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<!-- Required meta tags -->
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
|
||||||
|
<title>How I implemented WakaTime embeddable Coding Graph GHA? | Be My SpaceTime
|
||||||
|
</title>
|
||||||
|
<link rel="canonical" href="https://avinal.space/posts/development/wakatime-readme.html">
|
||||||
|
|
||||||
|
<link rel="apple-touch-icon" href="https://avinal.space/apple-touch-icon.png" sizes="180x180">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-32x32.png" sizes="32x32">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-16x16.png" sizes="16x16">
|
||||||
|
<link rel="manifest" href="https://avinal.space/site.webmanifest">
|
||||||
|
<meta name="theme-color" content="#333333">
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/bootstrap.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/all.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/pygments/manni.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/theme.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/space.css">
|
||||||
|
|
||||||
|
<link rel="alternate" type="application/atom+xml" title="Full Atom Feed" href="https://avinal.space/feeds/all.atom.xml">
|
||||||
|
<link rel="alternate" type="application/atom+xml" title="Categories Atom Feed"
|
||||||
|
href="https://avinal.space/feeds/development.atom.xml">
|
||||||
|
<meta name="description" content="f you use WakaTime to track your coding activity. You can add that to your README as a bar graph or embed it in your blog/portfolio. Just add this action to any of your repositories and there you have it.">
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body style="font-family:Overpass Mono,monospace;">
|
||||||
|
<header class="header star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container text-center">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<h1 class="title" style="font-family: ExodarOut;font-weight: lighter;"><a href="https://avinal.space/">Be My SpaceTime</a>
|
||||||
|
</h1>
|
||||||
|
<!--
|
||||||
|
<p class="text-muted">눈치</p>
|
||||||
|
-->
|
||||||
|
<ul class="list-inline">
|
||||||
|
<li class="list-inline-item"><a href="https://gsoc.avinal.space" target="_blank">gsoc</a></li>
|
||||||
|
<li class="list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/pages/about-me.html">About Me</a></li>
|
||||||
|
<li class=" list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-github" href="https://github.com/avinal" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-linkedin" href="https://www.linkedin.com/in/avinal/" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-instagram" href="https://instagram.com/avinal.k" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-calendar" href="https://meet.avinal.space" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fa fa-envelope" href="mailto:blog@avinal.space" target="_blank"></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div> </div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<div class="main">
|
||||||
|
<div class="container">
|
||||||
|
<h1>How I implemented WakaTime embeddable Coding Graph GHA?
|
||||||
|
</h1>
|
||||||
|
<hr>
|
||||||
|
<article class="article">
|
||||||
|
<header>
|
||||||
|
<ul class="list-inline">
|
||||||
|
<li class="list-inline-item text-muted" title="2021-02-02T21:47:00+05:30">
|
||||||
|
<i class="fas fa-clock"></i>
|
||||||
|
Tue 02 February 2021
|
||||||
|
</li>
|
||||||
|
<li class="list-inline-item">
|
||||||
|
<i class="fas fa-folder-open"></i>
|
||||||
|
<a href="https://avinal.space/category/development.html">development</a>
|
||||||
|
</li>
|
||||||
|
<li class="list-inline-item">
|
||||||
|
<i class="fas fa-tag"></i>
|
||||||
|
<a href="https://avinal.space/tag/wakatime.html">#wakatime</a>, <a href="https://avinal.space/tag/github-action.html">#github-action</a>, <a href="https://avinal.space/tag/coding.html">#coding</a> </li>
|
||||||
|
</ul>
|
||||||
|
</header>
|
||||||
|
<div class="content">
|
||||||
|
<a href="https://github.com/avinal/Profile-Readme-WakaTime"><img src="https://raw.githubusercontent.com/avinal/Profile-Readme-WakaTime/b281d074ee75f9626b39d10e2e518c6a297208a3/waka.png" class="img-fluid"></a><div class="section" id="implementation-details">
|
||||||
|
<h2>Implementation Details</h2>
|
||||||
|
<p>This GitHub Action is divided into three parts. I didn't want to use Docker but it seems it doesn't work well without it. Let dive a little into technical details. Three parts are as below.</p>
|
||||||
|
<ol class="arabic simple">
|
||||||
|
<li><a class="reference external" href="https://github.com/avinal/Profile-Readme-WakaTime/blob/master/main.py">main.py</a> python script. This script contains many procedures.</li>
|
||||||
|
</ol>
|
||||||
|
<ul>
|
||||||
|
<li><p class="first"><a class="reference external" href="https://github.com/avinal/Profile-Readme-WakaTime/blob/master/main.py#L52">Getting JSON data file via WakaTime API</a></p>
|
||||||
|
<blockquote>
|
||||||
|
<div class="highlight"><pre><span></span><span class="k">def</span> <span class="nf">get_stats</span><span class="p">()</span> <span class="o">-></span> <span class="nb">list</span><span class="p">:</span>
|
||||||
|
<span class="o">...</span>
|
||||||
|
<span class="k">return</span> <span class="n">data_list</span>
|
||||||
|
</pre></div>
|
||||||
|
</blockquote>
|
||||||
|
<p>This function parses the JSON file received and scraps out the useful data as a list of lists. Data scraped are language list, time spent on each language, percentage of the time, start date, and end date. For this action, I have limited the number of languages to 5 however it should be very easy to increase that number.</p>
|
||||||
|
</li>
|
||||||
|
<li><p class="first"><a class="reference external" href="https://github.com/avinal/Profile-Readme-WakaTime/blob/master/main.py#L13">Setting the Timeline</a></p>
|
||||||
|
<blockquote>
|
||||||
|
<div class="highlight"><pre><span></span><span class="k">def</span> <span class="nf">this_week</span><span class="p">(</span><span class="n">dates</span><span class="p">:</span> <span class="nb">list</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||||
|
<span class="o">...</span>
|
||||||
|
<span class="k">return</span> <span class="sa">f</span><span class="s2">"Coding Activity During: </span><span class="si">{</span><span class="n">week_start</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'</span><span class="si">%d</span><span class="s1"> %B, %Y'</span><span class="p">)</span><span class="si">}</span><span class="s2"> to </span><span class="si">{</span><span class="n">week_end</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'</span><span class="si">%d</span><span class="s1"> %B, %Y'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span>
|
||||||
|
</pre></div>
|
||||||
|
</blockquote>
|
||||||
|
<p>The start date and end date scraped in the last function are used here to set the timeline. Because date in JSON is provided in UTC as below :</p>
|
||||||
|
<blockquote>
|
||||||
|
<div class="highlight"><pre><span></span><span class="err">da</span><span class="kc">te</span><span class="p">:</span><span class="w"> </span><span class="s2">"YYYY-MM-DDTHH:MM:SSZ"</span><span class="w"></span>
|
||||||
|
</pre></div>
|
||||||
|
</blockquote>
|
||||||
|
<p>I striped it to simple dates only. We can set them manually by taking the current time from the system. But that method is flawed. But this method ensures that JSON was received latest and the request was successful. Any anomaly will point to a failure in request.</p>
|
||||||
|
</li>
|
||||||
|
<li><p class="first"><a class="reference external" href="https://github.com/avinal/Profile-Readme-WakaTime/blob/master/main.py#L21">Creating a bar graph</a></p>
|
||||||
|
<blockquote>
|
||||||
|
<div class="highlight"><pre><span></span><span class="k">def</span> <span class="nf">make_graph</span><span class="p">(</span><span class="n">data</span><span class="p">:</span> <span class="nb">list</span><span class="p">):</span>
|
||||||
|
<span class="o">...</span>
|
||||||
|
<span class="n">savefig</span><span class="p">(</span><span class="o">...</span><span class="p">)</span>
|
||||||
|
</pre></div>
|
||||||
|
</blockquote>
|
||||||
|
<p>Lastly, it is time to generate the graph and save them as an image. This function uses the data scraped in the first step. Creating a bar graph using <cite>matplotlib</cite> is easy. Decorating was a bit difficult. I wanted this graph to merge with GitHub's look so I chose to color the bar as GitHub colors the languages. That data is stored as <cite>colors.json</cite>. Many of the languages have slightly different spelling in GitHub as compared to WakaTime. So some languages are shown in default color. That can be improved if we notice that language and change its color manually. Lastly, the graph is saved both as SVG and PNG. SVGs are better to put on a responsive page.</p>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<ol class="arabic" start="2">
|
||||||
|
<li><p class="first"><a class="reference external" href="https://github.com/avinal/Profile-Readme-WakaTime/blob/master/entrypoint.sh">entrypoint.py</a> shell script. This shell script clones the repository copies the image and pushes changes to the master. There were several problems. First of all authentication. This was solved by using a remote repository address using GitHub Token. And it seems that GitHub doesn't allow to commit without a username and email. So I used <strong>github-actions</strong> bot email.</p>
|
||||||
|
<blockquote>
|
||||||
|
<div class="highlight"><pre><span></span>remote_repo-<span class="s2">"https://</span><span class="si">${</span><span class="nv">GITHUB_ACTOR</span><span class="si">}</span><span class="s2">:</span><span class="si">${</span><span class="nv">INPUT_GITHUB_TOKEN</span><span class="si">}</span><span class="s2">@github.com/</span><span class="si">${</span><span class="nv">GITHUB_REPOSITORY</span><span class="si">}</span><span class="s2">.git"</span>
|
||||||
|
git config user.email <span class="s2">"41898282+github-actions[bot]@users.noreply.github.com"</span>
|
||||||
|
git config user.name <span class="s2">"GitHub Actions"</span>
|
||||||
|
</pre></div>
|
||||||
|
</blockquote>
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
|
<blockquote>
|
||||||
|
<p><code>41898282</code> is the id assigned to the github-actions bot. Don't ask where I found them 🙂.</p>
|
||||||
|
<p>Another problem was to separate repository name from combined <em>username/repository-name</em> provided by <cite>${GITHUB_REPOSITORY}</cite>. GitHub doesn't provides a direct way to get just the repo name. We used <em>Internal Field Separator</em>. It returns an array and works similar to <code>split()</code> command in Python and Java.</p>
|
||||||
|
<blockquote>
|
||||||
|
<div class="highlight"><pre><span></span><span class="c1"># '/' is the seperator</span>
|
||||||
|
IFS-<span class="s1">'/'</span> <span class="nb">read</span> -ra reponame <span class="o"><<<</span> <span class="s2">"</span><span class="si">${</span><span class="nv">GITHUB_REPOSITORY</span><span class="si">}</span><span class="s2">"</span>
|
||||||
|
<span class="c1"># returned {username, repository}</span>
|
||||||
|
repository-<span class="s2">"</span><span class="si">${</span><span class="nv">reponame</span><span class="p">[1]</span><span class="si">}</span><span class="s2">"</span>
|
||||||
|
</pre></div>
|
||||||
|
</blockquote>
|
||||||
|
</blockquote>
|
||||||
|
<p>After that, all other commands are pretty straight. Commit the added files and push them.</p>
|
||||||
|
<ol class="arabic simple" start="3">
|
||||||
|
<li><a class="reference external" href="https://github.com/avinal/Profile-Readme-WakaTime/blob/master/Dockerfile">Dockerfile</a> <strong>IMPORTANT</strong> It took a lot of time to reach this state 🥱. This is where all the magic happens. I am running <cite>ubuntu:latest</cite> inside the container. I first update the distribution. Then install the required python packages. Lastly, I invoke the python script and shell script.</li>
|
||||||
|
</ol>
|
||||||
|
<p>There was an almost impossible problem, I searched hundreds of posts that <em>how can I access the generated files inside Docker container</em>, but no luck. But at last, I found a workaround(obviously otherwise you wouldn't be reading this by now 🤣) each command is run in a separate virtual sub-container. As the command ends its output is also lost but not when you club multiple commands together. At least not until every command is finished. The generated files are available to the next clubbed process. I did that by combining the python script run and shell script run.</p>
|
||||||
|
<div class="highlight"><pre><span></span><span class="k">CMD</span><span class="w"> </span>python3 /main.py <span class="o">&&</span> /entrypoint.sh
|
||||||
|
</pre></div>
|
||||||
|
<p>This part is the smallest yet took the most time and tries while developing this action.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="how-to-use-this-github-actions">
|
||||||
|
<h2>How to use this GitHub Actions?</h2>
|
||||||
|
<ol class="arabic">
|
||||||
|
<li><p class="first">First get your WakaTime API Key. You can get it from your [WakaTime](<a class="reference external" href="https://wakatime.com">https://wakatime.com</a>) account settings.</p>
|
||||||
|
</li>
|
||||||
|
<li><p class="first">Save WakaTime API Key to Repository Secret. Find that by clicking the Settings tab. Keep the name of the secret as <strong>WAKATIME_API_KEY</strong>.</p>
|
||||||
|
</li>
|
||||||
|
<li><p class="first">Add the following line in your README.md of your repo.</p>
|
||||||
|
<blockquote>
|
||||||
|
<div class="highlight"><pre><span></span><span class="p"><</span><span class="nt">img</span> <span class="na">src-</span><span class="err">"</span><span class="na">https:</span><span class="err">//</span><span class="na">github</span><span class="err">.</span><span class="na">com</span><span class="err">/<</span><span class="na">username</span><span class="p">></span>/<span class="p"><</span><span class="nt">repository-name</span><span class="p">></span>/blob/<span class="p"><</span><span class="nt">branch-name</span><span class="p">></span>/images/stat.svg" alt-"Alternative Text"/>
|
||||||
|
Example: <span class="p"><</span><span class="nt">img</span> <span class="na">src-</span><span class="err">"</span><span class="na">https:</span><span class="err">//</span><span class="na">github</span><span class="err">.</span><span class="na">com</span><span class="err">/</span><span class="na">avinal</span><span class="err">/</span><span class="na">avinal</span><span class="err">/</span><span class="na">blob</span><span class="err">/</span><span class="na">main</span><span class="err">/</span><span class="na">images</span><span class="err">/</span><span class="na">stat</span><span class="err">.</span><span class="na">svg</span><span class="err">"</span> <span class="na">alt-</span><span class="err">"</span><span class="na">Avinal</span> <span class="na">WakaTime</span> <span class="na">Activity</span><span class="err">"</span><span class="p">/></span>
|
||||||
|
</pre></div>
|
||||||
|
</blockquote>
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
|
<blockquote>
|
||||||
|
You can use this method to embed in web pages too. <strong>Do not use the markdown method of inserting images. It does not work sometimes.</strong></blockquote>
|
||||||
|
<ol class="arabic" start="4">
|
||||||
|
<li><p class="first">Click the <strong>Action</strong> tab and <strong>choose to set up a workflow yourself</strong>.</p>
|
||||||
|
</li>
|
||||||
|
<li><p class="first">Copy the following code into the opened file, you can search for <strong>WakaTime Stat</strong> in the marketplace tab for assistance.</p>
|
||||||
|
<blockquote>
|
||||||
|
<div class="highlight"><pre><span></span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">WakaTime status update</span><span class="w"></span>
|
||||||
|
|
||||||
|
<span class="nt">on</span><span class="p">:</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">schedule</span><span class="p">:</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="c1"># Runs at 12 am '0 0 * * *' UTC</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">cron</span><span class="p">:</span><span class="w"> </span><span class="s">"1</span><span class="nv"> </span><span class="s">0</span><span class="nv"> </span><span class="s">*</span><span class="nv"> </span><span class="s">*</span><span class="nv"> </span><span class="s">*"</span><span class="w"></span>
|
||||||
|
|
||||||
|
<span class="nt">jobs</span><span class="p">:</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">update-readme</span><span class="p">:</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Update the WakaTime Stat</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">runs-on</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">ubuntu-latest</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">steps</span><span class="p">:</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="c1"># Use avinal/Profile-Readme-WakaTime@<latest-release-tag> for latest stable release</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="c1"># Do not change the line below except the word master with tag number maybe</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="c1"># If you have forked this project you can use <username>/Profile-Readme-WakaTime@master instead</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">uses</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">avinal/Profile-Readme-WakaTime@master</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">with</span><span class="p">:</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="c1"># WakaTime API key stored in secrets, do not directly paste it here</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">WAKATIME_API_KEY</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">${{ secrets.WAKATIME_API_KEY }}</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="c1"># Automatic github token</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">GITHUB_TOKEN</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">${{ github.token }}</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="c1"># Branch - newer GitHub repositories have "main" as default branch, change to main in that case, default is master</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">BRANCH</span><span class="p">:</span><span class="w"> </span><span class="s">"master"</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="c1"># Manual Commit messages - write your own messages here</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">COMMIT_MSG</span><span class="p">:</span><span class="w"> </span><span class="s">"Automated</span><span class="nv"> </span><span class="s">Coding</span><span class="nv"> </span><span class="s">Activity</span><span class="nv"> </span><span class="s">Update</span><span class="nv"> </span><span class="s">:alien:"</span><span class="w"></span>
|
||||||
|
</pre></div>
|
||||||
|
</blockquote>
|
||||||
|
</li>
|
||||||
|
<li><p class="first">Please wait till 12 AM UTC to run this workflow automatically. Or you can force run it by going to the Actions tab. Or you can add the following lines under <cite>on:</cite> to run with every push. Search for 12 AM UTC to find the equivalent time in your time zone.</p>
|
||||||
|
<blockquote>
|
||||||
|
<div class="highlight"><pre><span></span><span class="nt">on</span><span class="p">:</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">push</span><span class="p">:</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">branches</span><span class="p">:</span><span class="w"> </span><span class="p p-Indicator">[</span><span class="w"> </span><span class="nv">master</span><span class="w"> </span><span class="p p-Indicator">]</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="nt">schedule</span><span class="p">:</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">cron</span><span class="p">:</span><span class="w"> </span><span class="s">'1</span><span class="nv"> </span><span class="s">0</span><span class="nv"> </span><span class="s">*</span><span class="nv"> </span><span class="s">*</span><span class="nv"> </span><span class="s">*'</span><span class="w"></span>
|
||||||
|
</pre></div>
|
||||||
|
</blockquote>
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="my-coding-activity">
|
||||||
|
<h2>My Coding Activity</h2>
|
||||||
|
<img class="img-fluid" src="https://raw.githubusercontent.com/avinal/avinal/main/images/stat.svg"></div>
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
<p align=center>
|
||||||
|
This Blog is licensed under <a href="http://creativecommons.org/licenses/by-nc/4.0/?ref=chooser-v1"
|
||||||
|
target="_blank" rel="license noopener noreferrer">Attribution-NonCommercial 4.0 International<img
|
||||||
|
style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
|
||||||
|
src="https://mirrors.creativecommons.org/presskit/icons/cc.svg?ref=chooser-v1"><img
|
||||||
|
style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
|
||||||
|
src="https://mirrors.creativecommons.org/presskit/icons/by.svg?ref=chooser-v1"><img
|
||||||
|
style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
|
||||||
|
src="https://mirrors.creativecommons.org/presskit/icons/nc.svg?ref=chooser-v1">
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
<hr>
|
||||||
|
<div id="comment-form">
|
||||||
|
<div class="alert alert-info" role="alert">
|
||||||
|
Feel free to leave a feedback or question!
|
||||||
|
</div>
|
||||||
|
<form action="https://docs.google.com/forms/u/0/d/e/1FAIpQLSfL9T8WBRm-Ac2uyu74lJXSYOqAuF6lLIUAulRArCsuiI1ZRQ/formResponse" target="response" method="POST" id="valid-form">
|
||||||
|
<div class="form-row align-items-center">
|
||||||
|
<div class="form-group col-md-5">
|
||||||
|
<label class="sr-only" for="person-name">Name</label>
|
||||||
|
<input type="text" class="form-control form-control-sm" id="person-name" placeholder="Your Name (Optional)"
|
||||||
|
aria-describedby="nameHelp" name="entry.982725972">
|
||||||
|
<input type="text" id="page-link" name="entry.1641222305" hidden>
|
||||||
|
<small id="nameHelp" class="form-text text-muted">You may put your GitHub Username.</small>
|
||||||
|
</div>
|
||||||
|
<div class="form-group col-md-7">
|
||||||
|
<label class="sr-only" for="email-address">Email address</label>
|
||||||
|
<input type="email" class="form-control form-control-sm" id="email-address" aria-describedby="emailHelp"
|
||||||
|
placeholder="Your Email Address (Optional)" name="entry.1652853191">
|
||||||
|
<small id="emailHelp" class="form-text text-muted">I'll never share your email with anyone
|
||||||
|
else.</small>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="sr-only" for="comment-section">Your Message</label>
|
||||||
|
<textarea class="form-control form-control-sm" id="comment-section" rows="3"
|
||||||
|
placeholder="Please enter your message or feedback. (Required)" aria-describedby="emailHelp"
|
||||||
|
name="entry.1062656232" required></textarea>
|
||||||
|
<div class="invalid-feedback">
|
||||||
|
Please Enter something !
|
||||||
|
</div>
|
||||||
|
<small id="textHelp" class="form-text text-muted">Enter upto 200 characters.</small>
|
||||||
|
</div>
|
||||||
|
<button class="btn btn-outline-info" type="submit">Send</button>
|
||||||
|
</form>
|
||||||
|
<iframe name="response" hidden></iframe>
|
||||||
|
</div>
|
||||||
|
<div class="alert alert-info" role="alert" id="comment-message" style="display: none;">
|
||||||
|
<h4 class="alert-heading">Thanks You 🥳</h4>
|
||||||
|
<p>Thanks a lot for reading this blog and sending me a feedback. I hope you liked it. I will get back to you
|
||||||
|
soon if you have added an email.</p>
|
||||||
|
</div>
|
||||||
|
<script>
|
||||||
|
(function () {
|
||||||
|
'use strict';
|
||||||
|
window.addEventListener('load', function () {
|
||||||
|
var form = document.getElementById('valid-form');
|
||||||
|
form.addEventListener('submit', function (event) {
|
||||||
|
document.getElementById('page-link').value = window.location.href;
|
||||||
|
document.getElementById('comment-form').style.display = 'none';
|
||||||
|
document.getElementById('comment-message').style.display = '';
|
||||||
|
}, false);
|
||||||
|
}, false);
|
||||||
|
})();
|
||||||
|
</script>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<footer class="footer star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<ul class="col-sm-6 list-inline">
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/archives.html">Archives</a></li>
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/categories.html">Categories</a></li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/tags.html">Tags</a></li>
|
||||||
|
</ul>
|
||||||
|
<p class="col-sm-6 text-sm-right text-muted">Created with <i class="fa fa-heart" style="color: red;"></i> by <a
|
||||||
|
href="https://github.com/avinal" target="_blank">Avinal</a>
|
||||||
|
</p>
|
||||||
|
</div> </div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,238 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<!-- Required meta tags -->
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
|
||||||
|
<title>Move WSL 2 Safely to another Drive | Be My SpaceTime
|
||||||
|
</title>
|
||||||
|
<link rel="canonical" href="https://avinal.space/posts/development/wsl1.html">
|
||||||
|
|
||||||
|
<link rel="apple-touch-icon" href="https://avinal.space/apple-touch-icon.png" sizes="180x180">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-32x32.png" sizes="32x32">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-16x16.png" sizes="16x16">
|
||||||
|
<link rel="manifest" href="https://avinal.space/site.webmanifest">
|
||||||
|
<meta name="theme-color" content="#333333">
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/bootstrap.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/all.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/pygments/manni.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/theme.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/space.css">
|
||||||
|
|
||||||
|
<link rel="alternate" type="application/atom+xml" title="Full Atom Feed" href="https://avinal.space/feeds/all.atom.xml">
|
||||||
|
<link rel="alternate" type="application/atom+xml" title="Categories Atom Feed"
|
||||||
|
href="https://avinal.space/feeds/development.atom.xml">
|
||||||
|
<meta name="description" content="It is real pain when you have small SSD and Windows Subsystem for Linux (WSL) is growing exponentially in size. There is no easy way to move the WSL installation to another drive. Here in this blog I will discuss how to tackle this problem with bite size steps.">
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body style="font-family:Overpass Mono,monospace;">
|
||||||
|
<header class="header star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container text-center">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<h1 class="title" style="font-family: ExodarOut;font-weight: lighter;"><a href="https://avinal.space/">Be My SpaceTime</a>
|
||||||
|
</h1>
|
||||||
|
<!--
|
||||||
|
<p class="text-muted">눈치</p>
|
||||||
|
-->
|
||||||
|
<ul class="list-inline">
|
||||||
|
<li class="list-inline-item"><a href="https://gsoc.avinal.space" target="_blank">gsoc</a></li>
|
||||||
|
<li class="list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/pages/about-me.html">About Me</a></li>
|
||||||
|
<li class=" list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-github" href="https://github.com/avinal" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-linkedin" href="https://www.linkedin.com/in/avinal/" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-instagram" href="https://instagram.com/avinal.k" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-calendar" href="https://meet.avinal.space" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fa fa-envelope" href="mailto:blog@avinal.space" target="_blank"></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div> </div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<div class="main">
|
||||||
|
<div class="container">
|
||||||
|
<h1>Move WSL 2 Safely to another Drive
|
||||||
|
</h1>
|
||||||
|
<hr>
|
||||||
|
<article class="article">
|
||||||
|
<header>
|
||||||
|
<ul class="list-inline">
|
||||||
|
<li class="list-inline-item text-muted" title="2020-12-31T19:07:00+05:30">
|
||||||
|
<i class="fas fa-clock"></i>
|
||||||
|
Thu 31 December 2020
|
||||||
|
</li>
|
||||||
|
<li class="list-inline-item">
|
||||||
|
<i class="fas fa-folder-open"></i>
|
||||||
|
<a href="https://avinal.space/category/development.html">development</a>
|
||||||
|
</li>
|
||||||
|
<li class="list-inline-item">
|
||||||
|
<i class="fas fa-tag"></i>
|
||||||
|
<a href="https://avinal.space/tag/wsl.html">#wsl</a>, <a href="https://avinal.space/tag/wsl2.html">#wsl2</a> </li>
|
||||||
|
</ul>
|
||||||
|
</header>
|
||||||
|
<div class="content">
|
||||||
|
<p>It is real pain when you have small SSD and Windows Subsystem for Linux (WSL) is growing exponentially in size. There is no easy way to move
|
||||||
|
the WSL installation to another drive. Here in this blog I will discuss how to tackle this problem with bite size steps.</p>
|
||||||
|
<ol class="arabic simple">
|
||||||
|
<li>Open a PowerShell <img alt="powershell" class="align-middle" src="/images/powershell.png" style="width: 5%;" /> or Command Prompt <img alt="command-line" class="align-middle" src="/images/command-line.png" style="width: 5%;" /> with <em>Admin</em> access. For this you can use <img alt="WinKey" class="align-middle" src="/images/windows10.png" style="width: 5%;" /> + X shortcut and select <strong>Windows PowerShell(Admin)</strong>.</li>
|
||||||
|
<li>Check if the WSL 2 installation you are planning to move is is currently running/stopped.</li>
|
||||||
|
</ol>
|
||||||
|
<div class="highlight"><pre><span></span><span class="nb">PS </span><span class="n">C</span><span class="p">:\</span><span class="n">Users</span><span class="p">\</span><span class="n">Avinal</span><span class="p">></span> <span class="n">wsl</span> <span class="n">-l</span> <span class="n">-v</span>
|
||||||
|
<span class="nb">PS </span><span class="n">C</span><span class="p">:\</span><span class="n">Users</span><span class="p">\</span><span class="n">Avinal</span><span class="p">></span>
|
||||||
|
<span class="n">NAME</span> <span class="n">STATE</span> <span class="n">VERSION</span>
|
||||||
|
<span class="p">*</span> <span class="n">Ubuntu</span> <span class="n">Running</span> <span class="n">2</span>
|
||||||
|
<span class="n">Kali</span> <span class="n">Stopped</span> <span class="n">2</span>
|
||||||
|
</pre></div>
|
||||||
|
<ol class="arabic simple" start="3">
|
||||||
|
<li>If its running then you must stop the particular WSL distribution. (<em>Ubuntu</em> used as example)</li>
|
||||||
|
</ol>
|
||||||
|
<div class="highlight"><pre><span></span><span class="nb">PS </span><span class="n">C</span><span class="p">:\</span><span class="n">Users</span><span class="p">\</span><span class="n">Avinal</span><span class="p">></span> <span class="n">wsl</span> <span class="n">-t</span> <span class="n">Ubuntu</span>
|
||||||
|
</pre></div>
|
||||||
|
<ol class="arabic simple" start="4">
|
||||||
|
<li>Export to some folder. (Here exporting <em>Ubuntu</em> as <em>ubuntu-ex.tar</em> to <em>Z:wsl2</em>)</li>
|
||||||
|
</ol>
|
||||||
|
<div class="highlight"><pre><span></span><span class="nb">PS </span><span class="n">C</span><span class="p">:\</span><span class="n">Users</span><span class="p">\</span><span class="n">Avinal</span><span class="p">></span> <span class="n">wsl</span> <span class="p">-</span><span class="n">-export</span> <span class="n">Ubuntu</span> <span class="s2">"Z:\export\ubuntu-ex.tar"</span>
|
||||||
|
</pre></div>
|
||||||
|
<ol class="arabic simple" start="5">
|
||||||
|
<li>Unregister previous WSL installation</li>
|
||||||
|
</ol>
|
||||||
|
<div class="highlight"><pre><span></span><span class="nb">PS </span><span class="n">C</span><span class="p">:\</span><span class="n">Users</span><span class="p">\</span><span class="n">Avinal</span><span class="p">></span> <span class="n">wsl</span> <span class="p">-</span><span class="n">-unregister</span> <span class="n">Ubuntu</span>
|
||||||
|
</pre></div>
|
||||||
|
<ol class="arabic simple" start="6">
|
||||||
|
<li>Create a new folder and import your WSL installation to that folder.</li>
|
||||||
|
</ol>
|
||||||
|
<div class="highlight"><pre><span></span><span class="nb">PS </span><span class="n">C</span><span class="p">:\</span><span class="n">Users</span><span class="p">\</span><span class="n">Avinal</span><span class="p">></span> <span class="nb">New-Item</span> <span class="n">-Path</span> <span class="s2">"Z:\wsl2"</span> <span class="n">-ItemType</span> <span class="n">Directory</span>
|
||||||
|
|
||||||
|
<span class="n">Directory</span><span class="p">:</span> <span class="n">Z</span><span class="p">:\</span>
|
||||||
|
|
||||||
|
<span class="n">Mode</span> <span class="n">LastWriteTime</span> <span class="n">Length</span> <span class="n">Name</span>
|
||||||
|
<span class="p">----</span> <span class="p">-------------</span> <span class="p">------</span> <span class="p">----</span>
|
||||||
|
<span class="n">d</span><span class="p">-----</span> <span class="n">31</span><span class="p">-</span><span class="n">12</span><span class="p">-</span><span class="n">2020</span> <span class="n">21</span><span class="p">:</span><span class="n">03</span> <span class="n">wsl2</span>
|
||||||
|
|
||||||
|
<span class="nb">PS </span><span class="n">C</span><span class="p">:\</span><span class="n">Users</span><span class="p">\</span><span class="n">Avinal</span><span class="p">></span> <span class="n">wsl</span> <span class="p">-</span><span class="n">-import</span> <span class="n">Ubuntu</span> <span class="s2">"Z:\wsl2"</span> <span class="s2">"Z:\export\ubuntu-ex.tar"</span>
|
||||||
|
</pre></div>
|
||||||
|
<ol class="arabic simple" start="7">
|
||||||
|
<li>Check after import is complete</li>
|
||||||
|
</ol>
|
||||||
|
<div class="highlight"><pre><span></span><span class="nb">PS </span><span class="n">C</span><span class="p">:\</span><span class="n">Users</span><span class="p">\</span><span class="n">Avinal</span><span class="p">></span> <span class="n">wsl</span> <span class="n">-l</span> <span class="n">-v</span>
|
||||||
|
<span class="nb">PS </span><span class="n">C</span><span class="p">:\</span><span class="n">Users</span><span class="p">\</span><span class="n">Avinal</span><span class="p">></span>
|
||||||
|
<span class="n">NAME</span> <span class="n">STATE</span> <span class="n">VERSION</span>
|
||||||
|
<span class="p">*</span> <span class="n">Ubuntu</span> <span class="n">Running</span> <span class="n">2</span>
|
||||||
|
<span class="n">Kali</span> <span class="n">Stopped</span> <span class="n">2</span>
|
||||||
|
</pre></div>
|
||||||
|
<ol class="arabic simple" start="8">
|
||||||
|
<li>Mark one of your WSL distribution as <em>(default)</em>.</li>
|
||||||
|
</ol>
|
||||||
|
<div class="highlight"><pre><span></span><span class="nb">PS </span><span class="n">C</span><span class="p">:\</span><span class="n">Users</span><span class="p">\</span><span class="n">Avinal</span><span class="p">></span> <span class="n">wsl</span> <span class="n">-s</span> <span class="n">Ubuntu</span>
|
||||||
|
</pre></div>
|
||||||
|
<ol class="arabic simple" start="9">
|
||||||
|
<li>After exporting your default user will be set as <span class="html-raw"><i style="color:red">root</i></span> , to change it to your desired username, run following command</li>
|
||||||
|
</ol>
|
||||||
|
<div class="highlight"><pre><span></span><span class="nb">PS </span><span class="n">C</span><span class="p">:\</span><span class="n">Users</span><span class="p">\</span><span class="n">Avinal</span><span class="p">></span> <span class="n">ubuntu</span> <span class="n">config</span> <span class="p">-</span><span class="n">-default-user</span> <span class="n">user_name</span>
|
||||||
|
</pre></div>
|
||||||
|
<ol class="arabic simple" start="10">
|
||||||
|
<li>Finally run <code>wsl</code> and you have successfully moved your WSL 2 installation to another drive.</li>
|
||||||
|
</ol>
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
<p align=center>
|
||||||
|
This Blog is licensed under <a href="http://creativecommons.org/licenses/by-nc/4.0/?ref=chooser-v1"
|
||||||
|
target="_blank" rel="license noopener noreferrer">Attribution-NonCommercial 4.0 International<img
|
||||||
|
style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
|
||||||
|
src="https://mirrors.creativecommons.org/presskit/icons/cc.svg?ref=chooser-v1"><img
|
||||||
|
style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
|
||||||
|
src="https://mirrors.creativecommons.org/presskit/icons/by.svg?ref=chooser-v1"><img
|
||||||
|
style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
|
||||||
|
src="https://mirrors.creativecommons.org/presskit/icons/nc.svg?ref=chooser-v1">
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
<hr>
|
||||||
|
<div id="comment-form">
|
||||||
|
<div class="alert alert-info" role="alert">
|
||||||
|
Feel free to leave a feedback or question!
|
||||||
|
</div>
|
||||||
|
<form action="https://docs.google.com/forms/u/0/d/e/1FAIpQLSfL9T8WBRm-Ac2uyu74lJXSYOqAuF6lLIUAulRArCsuiI1ZRQ/formResponse" target="response" method="POST" id="valid-form">
|
||||||
|
<div class="form-row align-items-center">
|
||||||
|
<div class="form-group col-md-5">
|
||||||
|
<label class="sr-only" for="person-name">Name</label>
|
||||||
|
<input type="text" class="form-control form-control-sm" id="person-name" placeholder="Your Name (Optional)"
|
||||||
|
aria-describedby="nameHelp" name="entry.982725972">
|
||||||
|
<input type="text" id="page-link" name="entry.1641222305" hidden>
|
||||||
|
<small id="nameHelp" class="form-text text-muted">You may put your GitHub Username.</small>
|
||||||
|
</div>
|
||||||
|
<div class="form-group col-md-7">
|
||||||
|
<label class="sr-only" for="email-address">Email address</label>
|
||||||
|
<input type="email" class="form-control form-control-sm" id="email-address" aria-describedby="emailHelp"
|
||||||
|
placeholder="Your Email Address (Optional)" name="entry.1652853191">
|
||||||
|
<small id="emailHelp" class="form-text text-muted">I'll never share your email with anyone
|
||||||
|
else.</small>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="sr-only" for="comment-section">Your Message</label>
|
||||||
|
<textarea class="form-control form-control-sm" id="comment-section" rows="3"
|
||||||
|
placeholder="Please enter your message or feedback. (Required)" aria-describedby="emailHelp"
|
||||||
|
name="entry.1062656232" required></textarea>
|
||||||
|
<div class="invalid-feedback">
|
||||||
|
Please Enter something !
|
||||||
|
</div>
|
||||||
|
<small id="textHelp" class="form-text text-muted">Enter upto 200 characters.</small>
|
||||||
|
</div>
|
||||||
|
<button class="btn btn-outline-info" type="submit">Send</button>
|
||||||
|
</form>
|
||||||
|
<iframe name="response" hidden></iframe>
|
||||||
|
</div>
|
||||||
|
<div class="alert alert-info" role="alert" id="comment-message" style="display: none;">
|
||||||
|
<h4 class="alert-heading">Thanks You 🥳</h4>
|
||||||
|
<p>Thanks a lot for reading this blog and sending me a feedback. I hope you liked it. I will get back to you
|
||||||
|
soon if you have added an email.</p>
|
||||||
|
</div>
|
||||||
|
<script>
|
||||||
|
(function () {
|
||||||
|
'use strict';
|
||||||
|
window.addEventListener('load', function () {
|
||||||
|
var form = document.getElementById('valid-form');
|
||||||
|
form.addEventListener('submit', function (event) {
|
||||||
|
document.getElementById('page-link').value = window.location.href;
|
||||||
|
document.getElementById('comment-form').style.display = 'none';
|
||||||
|
document.getElementById('comment-message').style.display = '';
|
||||||
|
}, false);
|
||||||
|
}, false);
|
||||||
|
})();
|
||||||
|
</script>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<footer class="footer star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<ul class="col-sm-6 list-inline">
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/archives.html">Archives</a></li>
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/categories.html">Categories</a></li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/tags.html">Tags</a></li>
|
||||||
|
</ul>
|
||||||
|
<p class="col-sm-6 text-sm-right text-muted">Created with <i class="fa fa-heart" style="color: red;"></i> by <a
|
||||||
|
href="https://github.com/avinal" target="_blank">Avinal</a>
|
||||||
|
</p>
|
||||||
|
</div> </div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,189 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<!-- Required meta tags -->
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
|
||||||
|
<title>Introduction to Prime Numbers | Be My SpaceTime
|
||||||
|
</title>
|
||||||
|
<link rel="canonical" href="https://avinal.space/posts/prime/prime1.html">
|
||||||
|
|
||||||
|
<link rel="apple-touch-icon" href="https://avinal.space/apple-touch-icon.png" sizes="180x180">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-32x32.png" sizes="32x32">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-16x16.png" sizes="16x16">
|
||||||
|
<link rel="manifest" href="https://avinal.space/site.webmanifest">
|
||||||
|
<meta name="theme-color" content="#333333">
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/bootstrap.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/all.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/pygments/manni.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/theme.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/space.css">
|
||||||
|
|
||||||
|
<link rel="alternate" type="application/atom+xml" title="Full Atom Feed" href="https://avinal.space/feeds/all.atom.xml">
|
||||||
|
<link rel="alternate" type="application/atom+xml" title="Categories Atom Feed"
|
||||||
|
href="https://avinal.space/feeds/prime.atom.xml">
|
||||||
|
<meta name="description" content="A prime is a positive integer p having exactly two positive divisors, namely 1 and p. An integer n is composite if n > 1 and n is not prime. (The number 1 is considered neither prime nor composite.)">
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body style="font-family:Overpass Mono,monospace;">
|
||||||
|
<header class="header star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container text-center">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<h1 class="title" style="font-family: ExodarOut;font-weight: lighter;"><a href="https://avinal.space/">Be My SpaceTime</a>
|
||||||
|
</h1>
|
||||||
|
<!--
|
||||||
|
<p class="text-muted">눈치</p>
|
||||||
|
-->
|
||||||
|
<ul class="list-inline">
|
||||||
|
<li class="list-inline-item"><a href="https://gsoc.avinal.space" target="_blank">gsoc</a></li>
|
||||||
|
<li class="list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/pages/about-me.html">About Me</a></li>
|
||||||
|
<li class=" list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-github" href="https://github.com/avinal" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-linkedin" href="https://www.linkedin.com/in/avinal/" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-instagram" href="https://instagram.com/avinal.k" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-calendar" href="https://meet.avinal.space" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fa fa-envelope" href="mailto:blog@avinal.space" target="_blank"></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div> </div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<div class="main">
|
||||||
|
<div class="container">
|
||||||
|
<h1>Introduction to Prime Numbers
|
||||||
|
</h1>
|
||||||
|
<hr>
|
||||||
|
<article class="article">
|
||||||
|
<header>
|
||||||
|
<ul class="list-inline">
|
||||||
|
<li class="list-inline-item text-muted" title="2021-01-09T22:29:00+05:30">
|
||||||
|
<i class="fas fa-clock"></i>
|
||||||
|
Sat 09 January 2021
|
||||||
|
</li>
|
||||||
|
<li class="list-inline-item">
|
||||||
|
<i class="fas fa-folder-open"></i>
|
||||||
|
<a href="https://avinal.space/category/prime.html">prime</a>
|
||||||
|
</li>
|
||||||
|
<li class="list-inline-item">
|
||||||
|
<i class="fas fa-tag"></i>
|
||||||
|
<a href="https://avinal.space/tag/prime.html">#prime</a>, <a href="https://avinal.space/tag/primenumbers.html">#primenumbers</a> </li>
|
||||||
|
</ul>
|
||||||
|
</header>
|
||||||
|
<div class="content">
|
||||||
|
<blockquote class="epigraph">
|
||||||
|
A prime is a positive integer <em>p</em> having exactly two positive divisors, namely <em>1</em> and <em>p</em>. An integer <em>n</em> is composite if <em>n</em> > <em>1</em> and <em>n</em> is not prime. (The number 1 is considered neither prime nor composite.)</blockquote>
|
||||||
|
<p>We can frame a brute force algorithm for checking primality of numbers using the above statement.</p>
|
||||||
|
<div class="highlight"><pre><span></span><span class="kt">bool</span><span class="w"> </span><span class="nf">is_prime</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">number</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">factor</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><=</span><span class="w"> </span><span class="n">number</span><span class="p">;</span><span class="w"> </span><span class="o">++</span><span class="n">i</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">number</span><span class="w"> </span><span class="o">%</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="n">factor</span><span class="o">++</span><span class="p">;</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="p">}</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="p">}</span><span class="w"></span>
|
||||||
|
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="p">(</span><span class="n">factor</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="o">?</span><span class="w"> </span><span class="nb">true</span><span class="w"> </span><span class="o">:</span><span class="w"> </span><span class="nb">false</span><span class="p">;</span><span class="w"></span>
|
||||||
|
<span class="p">}</span><span class="w"></span>
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
<p align=center>
|
||||||
|
This Blog is licensed under <a href="http://creativecommons.org/licenses/by-nc/4.0/?ref=chooser-v1"
|
||||||
|
target="_blank" rel="license noopener noreferrer">Attribution-NonCommercial 4.0 International<img
|
||||||
|
style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
|
||||||
|
src="https://mirrors.creativecommons.org/presskit/icons/cc.svg?ref=chooser-v1"><img
|
||||||
|
style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
|
||||||
|
src="https://mirrors.creativecommons.org/presskit/icons/by.svg?ref=chooser-v1"><img
|
||||||
|
style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
|
||||||
|
src="https://mirrors.creativecommons.org/presskit/icons/nc.svg?ref=chooser-v1">
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
<hr>
|
||||||
|
<div id="comment-form">
|
||||||
|
<div class="alert alert-info" role="alert">
|
||||||
|
Feel free to leave a feedback or question!
|
||||||
|
</div>
|
||||||
|
<form action="https://docs.google.com/forms/u/0/d/e/1FAIpQLSfL9T8WBRm-Ac2uyu74lJXSYOqAuF6lLIUAulRArCsuiI1ZRQ/formResponse" target="response" method="POST" id="valid-form">
|
||||||
|
<div class="form-row align-items-center">
|
||||||
|
<div class="form-group col-md-5">
|
||||||
|
<label class="sr-only" for="person-name">Name</label>
|
||||||
|
<input type="text" class="form-control form-control-sm" id="person-name" placeholder="Your Name (Optional)"
|
||||||
|
aria-describedby="nameHelp" name="entry.982725972">
|
||||||
|
<input type="text" id="page-link" name="entry.1641222305" hidden>
|
||||||
|
<small id="nameHelp" class="form-text text-muted">You may put your GitHub Username.</small>
|
||||||
|
</div>
|
||||||
|
<div class="form-group col-md-7">
|
||||||
|
<label class="sr-only" for="email-address">Email address</label>
|
||||||
|
<input type="email" class="form-control form-control-sm" id="email-address" aria-describedby="emailHelp"
|
||||||
|
placeholder="Your Email Address (Optional)" name="entry.1652853191">
|
||||||
|
<small id="emailHelp" class="form-text text-muted">I'll never share your email with anyone
|
||||||
|
else.</small>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="sr-only" for="comment-section">Your Message</label>
|
||||||
|
<textarea class="form-control form-control-sm" id="comment-section" rows="3"
|
||||||
|
placeholder="Please enter your message or feedback. (Required)" aria-describedby="emailHelp"
|
||||||
|
name="entry.1062656232" required></textarea>
|
||||||
|
<div class="invalid-feedback">
|
||||||
|
Please Enter something !
|
||||||
|
</div>
|
||||||
|
<small id="textHelp" class="form-text text-muted">Enter upto 200 characters.</small>
|
||||||
|
</div>
|
||||||
|
<button class="btn btn-outline-info" type="submit">Send</button>
|
||||||
|
</form>
|
||||||
|
<iframe name="response" hidden></iframe>
|
||||||
|
</div>
|
||||||
|
<div class="alert alert-info" role="alert" id="comment-message" style="display: none;">
|
||||||
|
<h4 class="alert-heading">Thanks You 🥳</h4>
|
||||||
|
<p>Thanks a lot for reading this blog and sending me a feedback. I hope you liked it. I will get back to you
|
||||||
|
soon if you have added an email.</p>
|
||||||
|
</div>
|
||||||
|
<script>
|
||||||
|
(function () {
|
||||||
|
'use strict';
|
||||||
|
window.addEventListener('load', function () {
|
||||||
|
var form = document.getElementById('valid-form');
|
||||||
|
form.addEventListener('submit', function (event) {
|
||||||
|
document.getElementById('page-link').value = window.location.href;
|
||||||
|
document.getElementById('comment-form').style.display = 'none';
|
||||||
|
document.getElementById('comment-message').style.display = '';
|
||||||
|
}, false);
|
||||||
|
}, false);
|
||||||
|
})();
|
||||||
|
</script>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<footer class="footer star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<ul class="col-sm-6 list-inline">
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/archives.html">Archives</a></li>
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/categories.html">Categories</a></li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/tags.html">Tags</a></li>
|
||||||
|
</ul>
|
||||||
|
<p class="col-sm-6 text-sm-right text-muted">Created with <i class="fa fa-heart" style="color: red;"></i> by <a
|
||||||
|
href="https://github.com/avinal" target="_blank">Avinal</a>
|
||||||
|
</p>
|
||||||
|
</div> </div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,862 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<!-- Required meta tags -->
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
|
||||||
|
<title>Google Summer of Code 2021 | Be My SpaceTime
|
||||||
|
</title>
|
||||||
|
<link rel="canonical" href="https://avinal.space/posts/report/final-evaluation.html">
|
||||||
|
|
||||||
|
<link rel="apple-touch-icon" href="https://avinal.space/apple-touch-icon.png" sizes="180x180">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-32x32.png" sizes="32x32">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-16x16.png" sizes="16x16">
|
||||||
|
<link rel="manifest" href="https://avinal.space/site.webmanifest">
|
||||||
|
<meta name="theme-color" content="#333333">
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/bootstrap.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/all.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/pygments/manni.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/theme.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/space.css">
|
||||||
|
|
||||||
|
<link rel="alternate" type="application/atom+xml" title="Full Atom Feed" href="https://avinal.space/feeds/all.atom.xml">
|
||||||
|
<link rel="alternate" type="application/atom+xml" title="Categories Atom Feed"
|
||||||
|
href="https://avinal.space/feeds/report.atom.xml">
|
||||||
|
<meta name="description" content="This is the final report of my Google Summer of Code 2021 at The FOSSology Project.">
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body style="font-family:Overpass Mono,monospace;">
|
||||||
|
<header class="header star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container text-center">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<h1 class="title" style="font-family: ExodarOut;font-weight: lighter;"><a href="https://avinal.space/">Be My SpaceTime</a>
|
||||||
|
</h1>
|
||||||
|
<!--
|
||||||
|
<p class="text-muted">눈치</p>
|
||||||
|
-->
|
||||||
|
<ul class="list-inline">
|
||||||
|
<li class="list-inline-item"><a href="https://gsoc.avinal.space" target="_blank">gsoc</a></li>
|
||||||
|
<li class="list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/pages/about-me.html">About Me</a></li>
|
||||||
|
<li class=" list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-github" href="https://github.com/avinal" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-linkedin" href="https://www.linkedin.com/in/avinal/" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-instagram" href="https://instagram.com/avinal.k" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-calendar" href="https://meet.avinal.space" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fa fa-envelope" href="mailto:blog@avinal.space" target="_blank"></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div> </div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<div class="main">
|
||||||
|
<div class="container">
|
||||||
|
<h1>Google Summer of Code 2021
|
||||||
|
</h1>
|
||||||
|
<hr>
|
||||||
|
<article class="article">
|
||||||
|
<header>
|
||||||
|
<ul class="list-inline">
|
||||||
|
<li class="list-inline-item text-muted" title="2021-08-19T23:07:00+05:30">
|
||||||
|
<i class="fas fa-clock"></i>
|
||||||
|
Thu 19 August 2021
|
||||||
|
</li>
|
||||||
|
<li class="list-inline-item">
|
||||||
|
<i class="fas fa-folder-open"></i>
|
||||||
|
<a href="https://avinal.space/category/report.html">report</a>
|
||||||
|
</li>
|
||||||
|
<li class="list-inline-item">
|
||||||
|
<i class="fas fa-tag"></i>
|
||||||
|
<a href="https://avinal.space/tag/gsoc.html">#gsoc</a>, <a href="https://avinal.space/tag/fossology.html">#FOSSology</a> </li>
|
||||||
|
</ul>
|
||||||
|
</header>
|
||||||
|
<div class="content">
|
||||||
|
<style>
|
||||||
|
.rd {color:red;font-weight:bold}
|
||||||
|
.gr{color:green;font-weight:bold}
|
||||||
|
.or{color:orange;font-weight:medium}
|
||||||
|
ul{margin-bottom:0}
|
||||||
|
</style><div class="section" id="the-cmake-build-system">
|
||||||
|
<h2>The CMake Build system</h2>
|
||||||
|
<p>FOSSology is quite an old and mature project. The project has been using bare metal <strong>Makefiles</strong>. As the project is growing with new agents and modernization it was required to have a modern build system.</p>
|
||||||
|
<p>The FOSSology is a suite of well-integrated and synchronized sub-projects (called agents) written in C, C++, and PHP. Most of the major agents are in C, C++ and that made CMake an obvious choice for a new build system for FOSSology. CMake is a versatile set of build, test, and packaging tools and is the most popular choice of C/C++ developers. CMake can be extended to create a build system for other languages too via custom scripts.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="github-actions-ci-cd">
|
||||||
|
<h2>GitHub Actions CI/CD</h2>
|
||||||
|
<img alt="A CI Meme" class="float-md-right rounded border border-info ml-3" src="/images/ci.png" style="width: 350px;" />
|
||||||
|
<p>Since the FOSSology project moved on Github, it has used only the free Travis CI service for OSS projects.
|
||||||
|
At the time of writing Travis CI has reduced its free tier CI services. GitHub Actions provides faster builds. Since GitHub Actions is a fully managed service by GitHub, we don’t need to know how to scale and operate the infrastructure to run it.</p>
|
||||||
|
<p>It is straightforward to use with GitHub because when we fork a repository, the actions automatically get forked. This allows you to test and build projects very efficiently and even run them closer to the developer. Also, you have readily available access to the GitHub API, making it more popular among developers.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="improvements-over-previous-build-system-and-ci">
|
||||||
|
<h2>Improvements over previous build system and CI</h2>
|
||||||
|
<p>The new build system and CI brings a lot of improvements and features. The list below describes them.</p>
|
||||||
|
<ul class="simple">
|
||||||
|
<li>CMake enforces out-of-source builds. This was already possible with the previous build system but not a strict requirement. This feature keeps the source code clean and makes cleaning the build artifacts easy. (Just remove the build folder :)</li>
|
||||||
|
<li>One of the major improvements over the previous build system is faster build times. CMake generates parallel build-enabled configurations for all generators. In our tests, the new build system is at least twice as fast as the previous one. With further improvement in configuration, we will be able to further cut the build times.</li>
|
||||||
|
<li>Previously FOSSology can only be built using <em>Unix Makefiles</em>. With CMake, we can now use many other popular generators such as <em>Ninja</em>.</li>
|
||||||
|
<li>Now it is also very flexible to choose different compilers. This will help support more platforms and architecture in the future. As of now, we are experimenting with Clang compilers.</li>
|
||||||
|
<li>FOSSology is quite an old project and a lot of agent testing code was written in the last decade. Initially, none of them were compatible with the new build system, but we were able to hack most of the test code using better-improved methods. Test times have also improved.</li>
|
||||||
|
<li>Migrating from Travis CI to GitHub Actions was another big move and for the most part, it removes the dependency on a third-party CI service. Along with that GitHub Actions provides better build times, tons of new features, and better integration with other GitHub services.</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="deliverables">
|
||||||
|
<h2>Deliverables</h2>
|
||||||
|
<div class="alert alert-info" role="alert">
|
||||||
|
<ul class="simple">
|
||||||
|
<li>Final Pull Request <a class="badge badge-info" href="https://github.com/fossology/fossology/pull/2075">#2075</a></li>
|
||||||
|
<li>Pull Request Branch <a class="badge badge-info" href="https://github.com/avinal/fossology/tree/avinal/feat/buildsystem">avinal/feat/buildsystem</a></li>
|
||||||
|
<li>Working Branch (individual commits) <ul>
|
||||||
|
<li><a class="badge badge-info" href="https://github.com/avinal/fossology/tree/avinal/feat/cmake-buildsystem">avinal/feat/cmake-buildsystem</a></li>
|
||||||
|
<li><a class="badge badge-info" href="https://github.com/avinal/fossology/tree/avinal/feat/testing">avinal/feat/testing</a></li>
|
||||||
|
</ul></li>
|
||||||
|
<li>Project Issue <a class="badge badge-info" href="https://github.com/fossology/fossology/issues/1913">#1913</a></li>
|
||||||
|
<li>Project Discussion <a class="badge badge-info" href="https://github.com/fossology/fossology/discussions/1931">#1931</a></li>
|
||||||
|
<li>Weekly Reports<ul>
|
||||||
|
<li><a class="badge badge-info" href="https://gsoc.avinal.space">Personal Blog</a></li>
|
||||||
|
<li><a class="badge badge-info" href="https://fossology.github.io/gsoc/docs/2021/buildsystem/">FOSSology Official Blog</a></li>
|
||||||
|
</ul></li></ul>
|
||||||
|
</div><p><strong>CMake Build System Tasks</strong></p>
|
||||||
|
<table border="1" class="table table-sm table-hover table-bordered table-responsive docutils align-center">
|
||||||
|
<colgroup>
|
||||||
|
<col width="5%" />
|
||||||
|
<col width="15%" />
|
||||||
|
<col width="10%" />
|
||||||
|
<col width="10%" />
|
||||||
|
<col width="20%" />
|
||||||
|
<col width="15%" />
|
||||||
|
<col width="25%" />
|
||||||
|
</colgroup>
|
||||||
|
<thead valign="bottom">
|
||||||
|
<tr><th class="head">#</th>
|
||||||
|
<th class="head">Agents</th>
|
||||||
|
<th class="head">Build</th>
|
||||||
|
<th class="head">Install</th>
|
||||||
|
<th class="head">Testing</th>
|
||||||
|
<th class="head">Packaging</th>
|
||||||
|
<th class="head">Remarks</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody valign="top">
|
||||||
|
<tr><td>1</td>
|
||||||
|
<td>adj2nest</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td> </td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td> </td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>2</td>
|
||||||
|
<td>buckets</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td> </td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td> </td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>3</td>
|
||||||
|
<td>cli</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><ul class="first last simple">
|
||||||
|
<li><span class="rd">Functional</span></li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td> </td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>4</td>
|
||||||
|
<td>copyright</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><ul class="first last simple">
|
||||||
|
<li><span class="gr">Functional</span></li>
|
||||||
|
<li><span class="gr">Unit</span></li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td> </td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>5</td>
|
||||||
|
<td>debug</td>
|
||||||
|
<td> </td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td> </td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td> </td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>6</td>
|
||||||
|
<td>decider</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><ul class="first last simple">
|
||||||
|
<li><span class="gr">Functional</span></li>
|
||||||
|
<li><span class="gr">Unit</span></li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td> </td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>7</td>
|
||||||
|
<td>deciderjob</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><ul class="first last simple">
|
||||||
|
<li><span class="gr">Functional</span></li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td> </td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>8</td>
|
||||||
|
<td>delagent</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><ul class="first last simple">
|
||||||
|
<li><span class="rd">Functional</span></li>
|
||||||
|
<li><span class="rd">Unit</span></li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td> </td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>9</td>
|
||||||
|
<td>demomod</td>
|
||||||
|
<td><span class="or">YES</span></td>
|
||||||
|
<td><span class="or">YES</span></td>
|
||||||
|
<td><ul class="first last simple">
|
||||||
|
<li><span class="or">Functional</span></li>
|
||||||
|
<li><span class="or">Unit</span></li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
<td><span class="or">NO</span></td>
|
||||||
|
<td><em>(Not Used)</em></td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>10</td>
|
||||||
|
<td>example_wc_agent</td>
|
||||||
|
<td><span class="or">YES</span></td>
|
||||||
|
<td><span class="or">YES</span></td>
|
||||||
|
<td><ul class="first last simple">
|
||||||
|
<li><span class="or">Functional</span></li>
|
||||||
|
<li><span class="or">Unit</span></li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
<td><span class="or">NO</span></td>
|
||||||
|
<td><em>(Not Used)</em></td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>11</td>
|
||||||
|
<td>clib</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><ul class="first last simple">
|
||||||
|
<li><span class="gr">Functional</span></li>
|
||||||
|
<li><span class="gr">Unit</span></li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td> </td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>12</td>
|
||||||
|
<td>cpplib</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><ul class="first last simple">
|
||||||
|
<li><span class="gr">Unit</span></li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td> </td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>13</td>
|
||||||
|
<td>phplib</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><ul class="first last simple">
|
||||||
|
<li><span class="gr">Functional</span></li>
|
||||||
|
<li><span class="gr">Unit</span></li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td>1 functional
|
||||||
|
test needs fix</td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>14</td>
|
||||||
|
<td>maintagent</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td> </td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td> </td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>15</td>
|
||||||
|
<td>mimetype</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><ul class="first last simple">
|
||||||
|
<li><span class="gr">Functional</span></li>
|
||||||
|
<li><span class="gr">Unit</span></li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td> </td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>16</td>
|
||||||
|
<td>monk</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><ul class="first last simple">
|
||||||
|
<li><span class="gr">Functional</span></li>
|
||||||
|
<li><span class="gr">Unit</span></li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td> </td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>17</td>
|
||||||
|
<td>ninka</td>
|
||||||
|
<td><span class="or">YES</span></td>
|
||||||
|
<td><span class="or">YES</span></td>
|
||||||
|
<td><ul class="first last simple">
|
||||||
|
<li><span class="or">Functional</span></li>
|
||||||
|
<li><span class="or">Unit</span></li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
<td><span class="or">NO</span></td>
|
||||||
|
<td><em>(Deprecated)</em></td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>18</td>
|
||||||
|
<td>nomos</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><ul class="first last simple">
|
||||||
|
<li><span class="gr">Functional</span></li>
|
||||||
|
<li><span class="gr">Unit</span></li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td> </td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>19</td>
|
||||||
|
<td>ojo</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><ul class="first last simple">
|
||||||
|
<li><span class="gr">Functional</span></li>
|
||||||
|
<li><span class="gr">Unit</span></li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td>1 functional
|
||||||
|
test needs fix</td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>20</td>
|
||||||
|
<td>pkgagent</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><ul class="first last simple">
|
||||||
|
<li><span class="gr">Functional</span></li>
|
||||||
|
<li><span class="gr">Unit</span></li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td> </td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>21</td>
|
||||||
|
<td>readmeoss</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td> </td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td> </td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>22</td>
|
||||||
|
<td>regexscan</td>
|
||||||
|
<td><span class="or">YES</span></td>
|
||||||
|
<td><span class="or">YES</span></td>
|
||||||
|
<td> </td>
|
||||||
|
<td><span class="or">NO</span></td>
|
||||||
|
<td><em>(Deprecated)</em></td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>23</td>
|
||||||
|
<td>reportImport</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td> </td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td> </td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>24</td>
|
||||||
|
<td>reuser</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><ul class="first last simple">
|
||||||
|
<li><span class="gr">Functional</span></li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td> </td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>25</td>
|
||||||
|
<td>reso</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td> </td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td> </td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>26</td>
|
||||||
|
<td>scheduler</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><ul class="first last simple">
|
||||||
|
<li><span class="rd">Functional</span></li>
|
||||||
|
<li><span class="rd">Unit</span></li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td>Tests needs
|
||||||
|
fix</td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>27</td>
|
||||||
|
<td>softwareHeritage</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td> </td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td> </td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>28</td>
|
||||||
|
<td>spasht</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td> </td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td> </td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>29</td>
|
||||||
|
<td>spdx2</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><ul class="first last simple">
|
||||||
|
<li><span class="gr">Functional</span></li>
|
||||||
|
<li><span class="gr">Unit</span></li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td>1 Test failing
|
||||||
|
in CI</td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>30</td>
|
||||||
|
<td>unifiedreport</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><ul class="first last simple">
|
||||||
|
<li><span class="gr">Functional</span></li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td> </td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>31</td>
|
||||||
|
<td>ununpack</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><ul class="first last simple">
|
||||||
|
<li><span class="gr">Functional</span></li>
|
||||||
|
<li><span class="rd">Unit</span></li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td>Unit tests
|
||||||
|
needs fix</td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>32</td>
|
||||||
|
<td>wget_agent</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><ul class="first last simple">
|
||||||
|
<li><span class="gr">Functional</span></li>
|
||||||
|
<li><span class="gr">Unit</span></li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td> </td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>32</td>
|
||||||
|
<td>www</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td><ul class="first last simple">
|
||||||
|
<li><span class="rd">UI</span></li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
<td><span class="gr">YES</span></td>
|
||||||
|
<td> </td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<p><strong>GitHub Actions CI Tasks</strong></p>
|
||||||
|
<table border="1" class="table table-sm table-hover table-bordered table-responsive docutils align-center">
|
||||||
|
<colgroup>
|
||||||
|
<col width="5%" />
|
||||||
|
<col width="25%" />
|
||||||
|
<col width="70%" />
|
||||||
|
</colgroup>
|
||||||
|
<thead valign="bottom">
|
||||||
|
<tr><th class="head">#</th>
|
||||||
|
<th class="head">CI Tasks</th>
|
||||||
|
<th class="head">Status</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody valign="top">
|
||||||
|
<tr><td>1</td>
|
||||||
|
<td><span class="gr">build</span></td>
|
||||||
|
<td>Added Ubuntu 20.04 GCC 8, 9 and Clang, GCC 7 not working</td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>2</td>
|
||||||
|
<td><span class="gr">c/cpp unit test</span></td>
|
||||||
|
<td>Added, delagent, scheduler and ununpack not working</td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>3</td>
|
||||||
|
<td><span class="gr">phpunit tests</span></td>
|
||||||
|
<td>Added, delagent and scheduler functional not working</td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>4</td>
|
||||||
|
<td><span class="rd">cahching</span></td>
|
||||||
|
<td>Not implemented</td>
|
||||||
|
</tr>
|
||||||
|
<tr><td>5</td>
|
||||||
|
<td><span class="rd">source install</span></td>
|
||||||
|
<td>Not implemented</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<p>(<span class="gr">GREEN</span>: COMPLETED, <span class="rd">RED</span>: INCOMPLETE, <span class="or">ORANGE</span>: NOT NEEDED/DEPRECATED)</p>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="how-does-it-work-and-how-to-use-it">
|
||||||
|
<h2>How does it work and how to use it?</h2>
|
||||||
|
<div class="embed-responsive embed-responsive-16by9">
|
||||||
|
<iframe class="embed-responsive-item" src="/images/second-build.webm" allowfullscreen></iframe>
|
||||||
|
</div><p>The new build system retains the modular and hierarchical structure of the previous build system. On the other hand, the new build system provides several new flags to control the build. The new build system forces out-of-source build instead of the previous in-source builds. This keeps the source clutter-free and reduces the chance of accidentally deleting source files. <em>Testing still needs some in-source artifacts, this will be solved once all the tests are fixed according to the new build system.</em></p>
|
||||||
|
<p>Each agent is a complete CMake sub-project with its independent configuration for building, installing, and testing. That means a single agent can be built and installed separately and even removed from the default build without breaking other builds. The directory structure is as below.</p>
|
||||||
|
<div class="highlight"><pre><span></span>.
|
||||||
|
├── build <span class="c1"># temporary directory for build artifacts</span>
|
||||||
|
├── cmake <span class="c1"># CMake modules for FOSSology</span>
|
||||||
|
│ ├── FoPackaging.cmake <span class="c1"># CMake Packaging configurations</span>
|
||||||
|
│ ├── FoUtilities.cmake <span class="c1"># Custom CMake utilities</span>
|
||||||
|
│ ├── FoVersionFile.cmake <span class="c1"># VERSION version.php CMake template file</span>
|
||||||
|
│ ├── SetDefaults.cmake <span class="c1"># CMake defaults for this project</span>
|
||||||
|
│ ├── TestInstall.make.in <span class="c1"># Template makefile for install during tests</span>
|
||||||
|
│ └── VERSION.in <span class="c1"># VERSION file template</span>
|
||||||
|
├── src
|
||||||
|
│ ├── agent-1 <span class="c1"># Agent sub-project</span>
|
||||||
|
│ │ ├── agent <span class="c1"># Agent's source code directory</span>
|
||||||
|
│ │ │ ├── agent-source-code
|
||||||
|
│ │ │ └── CMakeLists.txt
|
||||||
|
│ │ ├── agent_tests <span class="c1"># Agent's test directory</span>
|
||||||
|
│ │ │ ├── Unit
|
||||||
|
│ │ │ ├── Functional
|
||||||
|
│ │ │ └── CMakeLists.txt
|
||||||
|
│ │ ├── ui <span class="c1"># Agent's UI source code</span>
|
||||||
|
│ │ │ ├── templates
|
||||||
|
│ │ │ └── agent-ui-code
|
||||||
|
│ │ └── CMakeLists.txt <span class="c1"># Agent's top-level CMake configuration</span>
|
||||||
|
: :
|
||||||
|
│ ├── other agents
|
||||||
|
: :
|
||||||
|
│ └── CMakeLists.txt <span class="c1"># Source intermediate CMake configuration</span>
|
||||||
|
:
|
||||||
|
├── other directories and files
|
||||||
|
:
|
||||||
|
└── CMakeLists.txt <span class="c1"># FOSSology Top-level CMake configuration</span>
|
||||||
|
</pre></div>
|
||||||
|
<p>The <code>cmake</code> directory contains customized CMake modules and templates for FOSSology. This directory is required for all the operations. The general workflow of the new build system as well as how to use it is described below.</p>
|
||||||
|
<ol class="arabic">
|
||||||
|
<li><p class="first">Since the new build system is still in review. You must fork FOSSology and pull the <a class="reference external" href="https://github.com/fossology/fossology/pull/2075">#2075</a> pull request branch. Once you are in FOSSology root, run these commands.</p>
|
||||||
|
<blockquote>
|
||||||
|
<div class="highlight"><pre><span></span>git fetch https://github.com/avinal/fossology avinal/feat/buildsystem:buildsystem
|
||||||
|
git checkout buildsystem
|
||||||
|
</pre></div>
|
||||||
|
</blockquote>
|
||||||
|
</li>
|
||||||
|
<li><p class="first">The first step towards building is to create a temporary directory for storing intermediate files and build artifacts. By convention we use a directory named <code>build</code>, but you can use any name. (<strong>NOTE: For testing do not use other names</strong>)</p>
|
||||||
|
<blockquote>
|
||||||
|
<div class="highlight"><pre><span></span>mkdir build
|
||||||
|
<span class="nb">cd</span> build
|
||||||
|
</pre></div>
|
||||||
|
</blockquote>
|
||||||
|
</li>
|
||||||
|
<li><p class="first">In the next steps, we will configure the CMake project and generate the required configurations. You can use several flags to control the build. Given below are the flags available for this project.</p>
|
||||||
|
<blockquote>
|
||||||
|
<table border="1" class="table table-sm table-hover table-bordered table-responsive docutils">
|
||||||
|
<colgroup>
|
||||||
|
<col width="35%" />
|
||||||
|
<col width="44%" />
|
||||||
|
<col width="20%" />
|
||||||
|
</colgroup>
|
||||||
|
<thead valign="bottom">
|
||||||
|
<tr><th class="head">CMake Flags</th>
|
||||||
|
<th class="head">Description</th>
|
||||||
|
<th class="head">Default</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody valign="top">
|
||||||
|
<tr><td><strong>-DCMAKE_INSTALL_PREFIX=<path></strong></td>
|
||||||
|
<td>Sets the install prefix.</td>
|
||||||
|
<td><code>/usr/local</code></td>
|
||||||
|
</tr>
|
||||||
|
<tr><td><strong>-DAGENTS="agent1;agent2..."</strong></td>
|
||||||
|
<td>Only configure these agents.</td>
|
||||||
|
<td>ALL AGENTS</td>
|
||||||
|
</tr>
|
||||||
|
<tr><td><strong>-DOFFLINE=<ON/OFF></strong></td>
|
||||||
|
<td>Controls vendor generation, ON=NO</td>
|
||||||
|
<td><strong>OFF</strong></td>
|
||||||
|
</tr>
|
||||||
|
<tr><td><p class="first"><strong>-DCMAKE_BUILD_TYPE=<type></strong></p>
|
||||||
|
<blockquote class="last">
|
||||||
|
<ul class="simple">
|
||||||
|
<li>Controls build type aka
|
||||||
|
level optimisation</li>
|
||||||
|
</ul>
|
||||||
|
</blockquote>
|
||||||
|
</td>
|
||||||
|
<td><ul class="first last simple">
|
||||||
|
<li><code>Debug</code></li>
|
||||||
|
<li><code>Release</code></li>
|
||||||
|
<li><code>RelWithDebInfo</code></li>
|
||||||
|
<li><code>MinSizeRel</code></li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
<td><code>Debug</code></td>
|
||||||
|
</tr>
|
||||||
|
<tr><td><strong>-DTESTING=<ON/OFF></strong></td>
|
||||||
|
<td>Controls testing config generation</td>
|
||||||
|
<td><strong>OFF</strong></td>
|
||||||
|
</tr>
|
||||||
|
<tr><td><strong>-DMONOPACK=<ON/OFF></strong></td>
|
||||||
|
<td>Package adj2nest and ununpack seperately</td>
|
||||||
|
<td><strong>OFF</strong></td>
|
||||||
|
</tr>
|
||||||
|
<tr><td><strong>-GNinja</strong></td>
|
||||||
|
<td>Use Ninja instead of Unix Makefiles</td>
|
||||||
|
<td><em>Unix MakeFiles</em></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<p>There are lots of inbuilt CMake command-line options you can see them in the official <a class="reference external" href="https://cmake.org/cmake/help/v3.10/manual/cmake.1.html">documentation</a>. Once you have chosen your flags we can now configure the project using the following commands.</p>
|
||||||
|
<div class="highlight"><pre><span></span><span class="c1"># From build folder</span>
|
||||||
|
<span class="nb">cd</span> <name-of-build-directory>
|
||||||
|
cmake <flags> ..
|
||||||
|
</pre></div>
|
||||||
|
</blockquote>
|
||||||
|
</li>
|
||||||
|
<li><p class="first">The next step is to build the project. You can use parallel jobs to build faster. For more options you can type <code>cmake --help</code> or <code>make --help</code> or <code>ninja --help</code>.</p>
|
||||||
|
<blockquote>
|
||||||
|
<div class="highlight"><pre><span></span><span class="c1"># Common build command for all generators,</span>
|
||||||
|
<span class="c1"># Default number of parallel builds depends on generator used</span>
|
||||||
|
cmake --build . --parallel <no-of-processes>
|
||||||
|
|
||||||
|
<span class="c1"># For Unix Makefiles, no parallel build by default</span>
|
||||||
|
make -j <no-of-processes>
|
||||||
|
|
||||||
|
<span class="c1"># For Ninja, 8+ parallel build by default (depends on system)</span>
|
||||||
|
ninja -j <no-of-processes>
|
||||||
|
</pre></div>
|
||||||
|
</blockquote>
|
||||||
|
</li>
|
||||||
|
<li><p class="first">Installing is also as easy as building. You can choose to install only certain components even if you have built the whole project. If you directly invoke the install command without building the project, it will automatically build the project first.</p>
|
||||||
|
<blockquote>
|
||||||
|
<div class="highlight"><pre><span></span><span class="c1"># For Unix Makefiles</span>
|
||||||
|
make install
|
||||||
|
|
||||||
|
<span class="c1"># For Ninja</span>
|
||||||
|
ninja install
|
||||||
|
</pre></div>
|
||||||
|
</blockquote>
|
||||||
|
</li>
|
||||||
|
<li><p class="first">While testing has some issues, most of the testing is working fine. For now, you must build and run any test from the FOSSology root directory only. You can choose to configure a single agent if you want to test one agent only. See <code>ctest --help</code> for controlling test runs.</p>
|
||||||
|
<blockquote>
|
||||||
|
<div class="highlight"><pre><span></span><span class="c1"># Common testing command</span>
|
||||||
|
ctest --parallel <no-of-processes>
|
||||||
|
|
||||||
|
<span class="c1"># For Unix Makefiles</span>
|
||||||
|
make <span class="nb">test</span>
|
||||||
|
|
||||||
|
<span class="c1"># For Ninja</span>
|
||||||
|
ninja <span class="nb">test</span>
|
||||||
|
</pre></div>
|
||||||
|
</blockquote>
|
||||||
|
</li>
|
||||||
|
<li><p class="first">You can package FOSSology, the packaging currently lacks copyright and conf files. But for testing purposes, you can use the following commands. Similar to installing, if you run the package command without building the project, it will automatically build the project first. See <code>cpack --help</code> for more packaging options.</p>
|
||||||
|
<blockquote>
|
||||||
|
<div class="highlight"><pre><span></span><span class="c1"># Common testing command</span>
|
||||||
|
cpack
|
||||||
|
|
||||||
|
<span class="c1"># For Unix Makefiles</span>
|
||||||
|
make package
|
||||||
|
|
||||||
|
<span class="c1"># For Ninja</span>
|
||||||
|
ninja package
|
||||||
|
</pre></div>
|
||||||
|
</blockquote>
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="known-issues-and-drawbacks">
|
||||||
|
<h2>Known Issues and Drawbacks</h2>
|
||||||
|
<p>Although the transition from Makefiles to CMake and Travis CI to GitHub Actions is almost complete and working as expected. But it is not free of drawbacks and issues. This section outlines the known issues at the time of writing.</p>
|
||||||
|
<img alt="A Bug Meme" class="float-md-right rounded border border-info ml-3" src="https://imgs.xkcd.com/comics/conference_question.png" style="width: 350px;" />
|
||||||
|
<ul class="simple">
|
||||||
|
<li>Coverage builds may fail with linking errors.</li>
|
||||||
|
<li>Packaging prefix is the same as the install prefix. This requires the developer to set the install prefix manually before packaging to produce packages with the correct directory structure.</li>
|
||||||
|
<li>Testing and packaging must be used from the FOSSology root directory. Not doing so may or may not configure the project as intended.</li>
|
||||||
|
<li>Previously tests were written hardcoded for the Makefiles. But new build system requires all artifacts to be generated in a separate directory. This required me to add symbolic links wherever a generated script or file is expected. Tests can still leave some artifacts inside source folders.</li>
|
||||||
|
<li>There is no easy way to install a particular agent from the FOSSology root directory.</li>
|
||||||
|
<li>Packages don't contain copyright, readme, and license files. CMake doesn't provide a way to include these files. This is being tracked by issue <a class="reference external" href="https://gitlab.kitware.com/cmake/cmake/-/issues/21832">#21832</a>.</li>
|
||||||
|
<li>While packaging the symbolic links may or may not be dereferenced and hence results in copying the folder too in the target directory.</li>
|
||||||
|
<li>Running tests locally may require switching to <code>fossy</code> user.</li>
|
||||||
|
<li>While configured for testing, it may give permission errors.</li>
|
||||||
|
<li>Scheduler, Ununpack, and Delagent unit and functional tests are not working. I have added an issue <a class="reference external" href="https://github.com/fossology/fossology/issues/2084">#2084</a> to track the progress on fixing these tests.</li>
|
||||||
|
<li>CMake doesn't generate uninstall targets. The closest thing to uninstall is <a class="reference external" href="https://gitlab.kitware.com/cmake/community/-/wikis/FAQ#can-i-do-make-uninstall-with-cmake">this snippet</a>. This will be later added to the FOSSology.</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="challenges-faced">
|
||||||
|
<h2>Challenges Faced</h2>
|
||||||
|
<p>While this whole project was challenging, some aspects of it were unforeseen and more challenging. When I decided to go on with this project I just had enough CMake knowledge to write a configuration for a very small project. I had never used CMake on this big scale. On the other side, the FOSSology community is largely unknown to CMake so for all of us it was learned, practiced, and implement. With support from mentors, I was able to overcome this challenge with flying colors.</p>
|
||||||
|
<p>The other challenge was to understand the old build system, how they are all connected and what is the flow. The complexity can be imagined by the fact that the most of code and configurations were written in the decade before the last decade and haven't changed much since then.</p>
|
||||||
|
<p>The most challenging task was to make tests work with the new build system. Since tests were mostly hardcoded and the new build system refactored many of the files and directory, the tests were failing initially. The testing part took me the most time. All thanks to my mentor Gaurav and my friend Sarita I was able to hack them to suit the new build system.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="related-resources-and-links">
|
||||||
|
<h2>Related Resources and Links</h2>
|
||||||
|
<ul class="simple">
|
||||||
|
<li>Fix FOSSology agent tests issue <a class="reference external" href="https://github.com/fossology/fossology/issues/2084">#2084</a></li>
|
||||||
|
<li>feat(CI): Migrate API docs generation and deployment to GitHub Actions pull request <a class="reference external" href="https://github.com/fossology/fossology/pull/1917">#1917</a></li>
|
||||||
|
<li>feat(CI): Migrate Static Checks and Analysis to GitHub Actions from Travis CI <a class="reference external" href="https://github.com/fossology/fossology/pull/1919">#1919</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="future-development-plans">
|
||||||
|
<h2>Future Development Plans</h2>
|
||||||
|
<p>There is a lot to do with the new build system and CI and it will probably take a year or to reach a maturity point. I was able to meet most of the goals but some of them are remaining.</p>
|
||||||
|
<ul class="simple">
|
||||||
|
<li>Fix the tests, probably renovate them from the ground up.</li>
|
||||||
|
<li>Find a hack for packaging problems.</li>
|
||||||
|
<li>Improve and optimize the build.</li>
|
||||||
|
<li>Modernise the source code, remove old, bloated code and replace them according to new standards.</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="what-did-i-learn-from-this-project">
|
||||||
|
<h2>What did I learn from this project?</h2>
|
||||||
|
<p>This Google Summer of Code was the busiest time of my life for all good reasons. I learned a lot about license compliance and how it all works in the software industry. The next big thing is CMake. As I mentioned I was just a novice user of CMake. Now I am confident that given any other large project I will be able to migrate it/improve it. I got to learn PHP, of which I did not know a single word before GSoC. And finally, I learned about packing and testing. I had these courses but implementing them myself and fixing them was a wholesome experience.</p>
|
||||||
|
<p>Other than that I improved on my communication and presentation skills. Collaborating with fellow participants was one of the great things that happened during GSoC.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="acknowledgments">
|
||||||
|
<h2>Acknowledgments</h2>
|
||||||
|
<p>Google Summer of Code is the best thing that has happened to me this year so far. Although there are numerous people to say thanks to, I want to mention key people who were my motivation and support during this period.</p>
|
||||||
|
<p>First of all, I want to thank and appreciate my mentors <a class="reference external" href="https://github.com/GMishx">Gaurav Mishra</a>, <a class="reference external" href="https://github.com/mcjaeger">Michael C. Jaeger</a>, <a class="reference external" href="https://github.com/ag4ums">Anupam Ghosh</a>, and <a class="reference external" href="https://github.com/shaheemazmalmmd">Shaheem Azmal M MD</a>. Without the help and support from them, all this would not have been possible. They are very polite, knowledgeable, and helpful.</p>
|
||||||
|
<p>I want to thank my friend and <abbr title="Integrating ScanCode Toolkit to FOSSology">fellow participant</abbr> <a class="reference external" href="https://github.com/itssingh">Sarita</a>. Thank you for being a collaborator, support, and motivation for attempting GSoC.</p>
|
||||||
|
<p>Finally, I want to thank, my family and friends. I got to meet many awesome developers as my fellow participants from around the world, I wish we will do more collaboration in the future.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
<p align=center>
|
||||||
|
This Blog is licensed under <a href="http://creativecommons.org/licenses/by-nc/4.0/?ref=chooser-v1"
|
||||||
|
target="_blank" rel="license noopener noreferrer">Attribution-NonCommercial 4.0 International<img
|
||||||
|
style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
|
||||||
|
src="https://mirrors.creativecommons.org/presskit/icons/cc.svg?ref=chooser-v1"><img
|
||||||
|
style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
|
||||||
|
src="https://mirrors.creativecommons.org/presskit/icons/by.svg?ref=chooser-v1"><img
|
||||||
|
style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
|
||||||
|
src="https://mirrors.creativecommons.org/presskit/icons/nc.svg?ref=chooser-v1">
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
<hr>
|
||||||
|
<div id="comment-form">
|
||||||
|
<div class="alert alert-info" role="alert">
|
||||||
|
Feel free to leave a feedback or question!
|
||||||
|
</div>
|
||||||
|
<form action="https://docs.google.com/forms/u/0/d/e/1FAIpQLSfL9T8WBRm-Ac2uyu74lJXSYOqAuF6lLIUAulRArCsuiI1ZRQ/formResponse" target="response" method="POST" id="valid-form">
|
||||||
|
<div class="form-row align-items-center">
|
||||||
|
<div class="form-group col-md-5">
|
||||||
|
<label class="sr-only" for="person-name">Name</label>
|
||||||
|
<input type="text" class="form-control form-control-sm" id="person-name" placeholder="Your Name (Optional)"
|
||||||
|
aria-describedby="nameHelp" name="entry.982725972">
|
||||||
|
<input type="text" id="page-link" name="entry.1641222305" hidden>
|
||||||
|
<small id="nameHelp" class="form-text text-muted">You may put your GitHub Username.</small>
|
||||||
|
</div>
|
||||||
|
<div class="form-group col-md-7">
|
||||||
|
<label class="sr-only" for="email-address">Email address</label>
|
||||||
|
<input type="email" class="form-control form-control-sm" id="email-address" aria-describedby="emailHelp"
|
||||||
|
placeholder="Your Email Address (Optional)" name="entry.1652853191">
|
||||||
|
<small id="emailHelp" class="form-text text-muted">I'll never share your email with anyone
|
||||||
|
else.</small>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="sr-only" for="comment-section">Your Message</label>
|
||||||
|
<textarea class="form-control form-control-sm" id="comment-section" rows="3"
|
||||||
|
placeholder="Please enter your message or feedback. (Required)" aria-describedby="emailHelp"
|
||||||
|
name="entry.1062656232" required></textarea>
|
||||||
|
<div class="invalid-feedback">
|
||||||
|
Please Enter something !
|
||||||
|
</div>
|
||||||
|
<small id="textHelp" class="form-text text-muted">Enter upto 200 characters.</small>
|
||||||
|
</div>
|
||||||
|
<button class="btn btn-outline-info" type="submit">Send</button>
|
||||||
|
</form>
|
||||||
|
<iframe name="response" hidden></iframe>
|
||||||
|
</div>
|
||||||
|
<div class="alert alert-info" role="alert" id="comment-message" style="display: none;">
|
||||||
|
<h4 class="alert-heading">Thanks You 🥳</h4>
|
||||||
|
<p>Thanks a lot for reading this blog and sending me a feedback. I hope you liked it. I will get back to you
|
||||||
|
soon if you have added an email.</p>
|
||||||
|
</div>
|
||||||
|
<script>
|
||||||
|
(function () {
|
||||||
|
'use strict';
|
||||||
|
window.addEventListener('load', function () {
|
||||||
|
var form = document.getElementById('valid-form');
|
||||||
|
form.addEventListener('submit', function (event) {
|
||||||
|
document.getElementById('page-link').value = window.location.href;
|
||||||
|
document.getElementById('comment-form').style.display = 'none';
|
||||||
|
document.getElementById('comment-message').style.display = '';
|
||||||
|
}, false);
|
||||||
|
}, false);
|
||||||
|
})();
|
||||||
|
</script>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<footer class="footer star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<ul class="col-sm-6 list-inline">
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/archives.html">Archives</a></li>
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/categories.html">Categories</a></li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/tags.html">Tags</a></li>
|
||||||
|
</ul>
|
||||||
|
<p class="col-sm-6 text-sm-right text-muted">Created with <i class="fa fa-heart" style="color: red;"></i> by <a
|
||||||
|
href="https://github.com/avinal" target="_blank">Avinal</a>
|
||||||
|
</p>
|
||||||
|
</div> </div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
#!/usr/bin/env python
|
|
||||||
# -*- coding: utf-8 -*- #
|
|
||||||
|
|
||||||
# This file is only used if you use `make publish` or
|
|
||||||
# explicitly specify it as your config file.
|
|
||||||
|
|
||||||
import os
|
|
||||||
import sys
|
|
||||||
sys.path.append(os.curdir)
|
|
||||||
from pelicanconf import *
|
|
||||||
|
|
||||||
# If your site is available via HTTPS, make sure SITEURL begins with https://
|
|
||||||
SITEURL = 'https://avinal.space'
|
|
||||||
RELATIVE_URLS = False
|
|
||||||
|
|
||||||
FEED_ALL_ATOM = 'feeds/all.atom.xml'
|
|
||||||
CATEGORY_FEED_ATOM = 'feeds/{slug}.atom.xml'
|
|
||||||
|
|
||||||
DELETE_OUTPUT_DIRECTORY = True
|
|
||||||
|
|
||||||
# Following items are often useful when publishing
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
pelican
|
|
||||||
ghp-import
|
|
||||||
wheel
|
|
||||||
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |
@@ -0,0 +1,76 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||||
|
|
||||||
|
<url>
|
||||||
|
<loc>https://avinal.space/posts/development/lovely-dangerous-things-redhat.html</loc>
|
||||||
|
<priority>0.8</priority>
|
||||||
|
</url>
|
||||||
|
|
||||||
|
<url>
|
||||||
|
<loc>https://avinal.space/posts/development/i-am-loving-it-redhat.html</loc>
|
||||||
|
<priority>0.8</priority>
|
||||||
|
</url>
|
||||||
|
|
||||||
|
<url>
|
||||||
|
<loc>https://avinal.space/posts/report/final-evaluation.html</loc>
|
||||||
|
<priority>0.8</priority>
|
||||||
|
</url>
|
||||||
|
|
||||||
|
<url>
|
||||||
|
<loc>https://avinal.space/posts/development/rst-guide.html</loc>
|
||||||
|
<priority>0.8</priority>
|
||||||
|
</url>
|
||||||
|
|
||||||
|
<url>
|
||||||
|
<loc>https://avinal.space/posts/development/wakatime-readme.html</loc>
|
||||||
|
<priority>0.8</priority>
|
||||||
|
</url>
|
||||||
|
|
||||||
|
<url>
|
||||||
|
<loc>https://avinal.space/posts/development/twilight-blog.html</loc>
|
||||||
|
<priority>0.8</priority>
|
||||||
|
</url>
|
||||||
|
|
||||||
|
<url>
|
||||||
|
<loc>https://avinal.space/posts/prime/prime1.html</loc>
|
||||||
|
<priority>0.8</priority>
|
||||||
|
</url>
|
||||||
|
|
||||||
|
<url>
|
||||||
|
<loc>https://avinal.space/posts/blog/hrt-interview-1.html</loc>
|
||||||
|
<priority>0.8</priority>
|
||||||
|
</url>
|
||||||
|
|
||||||
|
<url>
|
||||||
|
<loc>https://avinal.space/posts/development/wsl1.html</loc>
|
||||||
|
<priority>0.8</priority>
|
||||||
|
</url>
|
||||||
|
|
||||||
|
<url>
|
||||||
|
<loc>https://avinal.space/posts/development/vlc-gsod-report.html</loc>
|
||||||
|
<priority>0.8</priority>
|
||||||
|
</url>
|
||||||
|
|
||||||
|
<url>
|
||||||
|
<loc>https://avinal.space/posts/blog/this-is-for-you.html</loc>
|
||||||
|
<priority>0.8</priority>
|
||||||
|
</url>
|
||||||
|
|
||||||
|
<url>
|
||||||
|
<loc>https://avinal.space/posts/article/for-sunshine.html</loc>
|
||||||
|
<priority>0.8</priority>
|
||||||
|
</url>
|
||||||
|
|
||||||
|
<url>
|
||||||
|
<loc>https://avinal.space/posts/article/red-big-ants.html</loc>
|
||||||
|
<priority>0.8</priority>
|
||||||
|
</url>
|
||||||
|
|
||||||
|
|
||||||
|
<url>
|
||||||
|
<loc>https://avinal.space/pages/about-me.html</loc>
|
||||||
|
<priority>1.0</priority>
|
||||||
|
</url>
|
||||||
|
|
||||||
|
|
||||||
|
</urlset>
|
||||||
@@ -0,0 +1,110 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<!-- Required meta tags -->
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
|
||||||
|
<title>#ants Articles | Be My SpaceTime
|
||||||
|
</title>
|
||||||
|
<link rel="canonical" href="https://avinal.space/tag/ants.html">
|
||||||
|
|
||||||
|
<link rel="apple-touch-icon" href="https://avinal.space/apple-touch-icon.png" sizes="180x180">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-32x32.png" sizes="32x32">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-16x16.png" sizes="16x16">
|
||||||
|
<link rel="manifest" href="https://avinal.space/site.webmanifest">
|
||||||
|
<meta name="theme-color" content="#333333">
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/bootstrap.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/all.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/pygments/manni.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/theme.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/space.css">
|
||||||
|
|
||||||
|
<link rel="alternate" type="application/atom+xml" title="Full Atom Feed" href="https://avinal.space/feeds/all.atom.xml">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body style="font-family:Overpass Mono,monospace;">
|
||||||
|
<header class="header star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container text-center">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<h1 class="title" style="font-family: ExodarOut;font-weight: lighter;"><a href="https://avinal.space/">Be My SpaceTime</a>
|
||||||
|
</h1>
|
||||||
|
<!--
|
||||||
|
<p class="text-muted">눈치</p>
|
||||||
|
-->
|
||||||
|
<ul class="list-inline">
|
||||||
|
<li class="list-inline-item"><a href="https://gsoc.avinal.space" target="_blank">gsoc</a></li>
|
||||||
|
<li class="list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/pages/about-me.html">About Me</a></li>
|
||||||
|
<li class=" list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-github" href="https://github.com/avinal" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-linkedin" href="https://www.linkedin.com/in/avinal/" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-instagram" href="https://instagram.com/avinal.k" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-calendar" href="https://meet.avinal.space" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fa fa-envelope" href="mailto:blog@avinal.space" target="_blank"></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div> </div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<div class="main">
|
||||||
|
<div class="container">
|
||||||
|
<h1>Tag: #ants
|
||||||
|
</h1>
|
||||||
|
<hr>
|
||||||
|
<article class="row teaser">
|
||||||
|
<header class="col-sm-4 text-muted">
|
||||||
|
<ul>
|
||||||
|
<li title="2012-02-27T22:47:00+05:30">
|
||||||
|
<i class="fas fa-clock"></i>
|
||||||
|
Mon 27 February 2012
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<i class="fas fa-folder-open"></i>
|
||||||
|
<a href="https://avinal.space/category/article.html">article</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</header>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<h4 class="title">
|
||||||
|
<a href="https://avinal.space/posts/article/red-big-ants.html">The Big Red Ants</a>
|
||||||
|
</h4>
|
||||||
|
<div class="content">
|
||||||
|
In a bird’s eye view if we see around us, ants are the common and tiniest living entitiy seen by naked eye. One of them are the big red ants, in my view they are unique from others in two ways, first they live on trees and second their anteenas are too long and bent in middle, seems like their fore legs. Their mandible (mouth) seems like eagle’s beak.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<footer class="footer star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<ul class="col-sm-6 list-inline">
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/archives.html">Archives</a></li>
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/categories.html">Categories</a></li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/tags.html">Tags</a></li>
|
||||||
|
</ul>
|
||||||
|
<p class="col-sm-6 text-sm-right text-muted">Created with <i class="fa fa-heart" style="color: red;"></i> by <a
|
||||||
|
href="https://github.com/avinal" target="_blank">Avinal</a>
|
||||||
|
</p>
|
||||||
|
</div> </div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,110 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<!-- Required meta tags -->
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
|
||||||
|
<title>#article Articles | Be My SpaceTime
|
||||||
|
</title>
|
||||||
|
<link rel="canonical" href="https://avinal.space/tag/article.html">
|
||||||
|
|
||||||
|
<link rel="apple-touch-icon" href="https://avinal.space/apple-touch-icon.png" sizes="180x180">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-32x32.png" sizes="32x32">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-16x16.png" sizes="16x16">
|
||||||
|
<link rel="manifest" href="https://avinal.space/site.webmanifest">
|
||||||
|
<meta name="theme-color" content="#333333">
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/bootstrap.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/all.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/pygments/manni.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/theme.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/space.css">
|
||||||
|
|
||||||
|
<link rel="alternate" type="application/atom+xml" title="Full Atom Feed" href="https://avinal.space/feeds/all.atom.xml">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body style="font-family:Overpass Mono,monospace;">
|
||||||
|
<header class="header star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container text-center">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<h1 class="title" style="font-family: ExodarOut;font-weight: lighter;"><a href="https://avinal.space/">Be My SpaceTime</a>
|
||||||
|
</h1>
|
||||||
|
<!--
|
||||||
|
<p class="text-muted">눈치</p>
|
||||||
|
-->
|
||||||
|
<ul class="list-inline">
|
||||||
|
<li class="list-inline-item"><a href="https://gsoc.avinal.space" target="_blank">gsoc</a></li>
|
||||||
|
<li class="list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/pages/about-me.html">About Me</a></li>
|
||||||
|
<li class=" list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-github" href="https://github.com/avinal" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-linkedin" href="https://www.linkedin.com/in/avinal/" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-instagram" href="https://instagram.com/avinal.k" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-calendar" href="https://meet.avinal.space" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fa fa-envelope" href="mailto:blog@avinal.space" target="_blank"></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div> </div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<div class="main">
|
||||||
|
<div class="container">
|
||||||
|
<h1>Tag: #article
|
||||||
|
</h1>
|
||||||
|
<hr>
|
||||||
|
<article class="row teaser">
|
||||||
|
<header class="col-sm-4 text-muted">
|
||||||
|
<ul>
|
||||||
|
<li title="2019-09-21T15:47:00+05:30">
|
||||||
|
<i class="fas fa-clock"></i>
|
||||||
|
Sat 21 September 2019
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<i class="fas fa-folder-open"></i>
|
||||||
|
<a href="https://avinal.space/category/article.html">article</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</header>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<h4 class="title">
|
||||||
|
<a href="https://avinal.space/posts/article/for-sunshine.html">प्रेम रतन धन पायो</a>
|
||||||
|
</h4>
|
||||||
|
<div class="content">
|
||||||
|
टूटता तारा देखना एक अलौकिक अनुभव है। हिमाद्रि के छत से आसमान कुछ ज्यादा ही करीब प्रतीत होता है । लोग सदियों से हिमालय को पूजते आयें हैं । दादा-दादी कहा करते थे ये जिंदा पहाड़ हैं । सारी बातें सुनते हैं लोगों की । उनके दुख दर्द दूर करते हैं, ये देवता हैं ।
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<footer class="footer star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<ul class="col-sm-6 list-inline">
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/archives.html">Archives</a></li>
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/categories.html">Categories</a></li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/tags.html">Tags</a></li>
|
||||||
|
</ul>
|
||||||
|
<p class="col-sm-6 text-sm-right text-muted">Created with <i class="fa fa-heart" style="color: red;"></i> by <a
|
||||||
|
href="https://github.com/avinal" target="_blank">Avinal</a>
|
||||||
|
</p>
|
||||||
|
</div> </div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,110 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<!-- Required meta tags -->
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
|
||||||
|
<title>#blog Articles | Be My SpaceTime
|
||||||
|
</title>
|
||||||
|
<link rel="canonical" href="https://avinal.space/tag/blog.html">
|
||||||
|
|
||||||
|
<link rel="apple-touch-icon" href="https://avinal.space/apple-touch-icon.png" sizes="180x180">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-32x32.png" sizes="32x32">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-16x16.png" sizes="16x16">
|
||||||
|
<link rel="manifest" href="https://avinal.space/site.webmanifest">
|
||||||
|
<meta name="theme-color" content="#333333">
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/bootstrap.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/all.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/pygments/manni.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/theme.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/space.css">
|
||||||
|
|
||||||
|
<link rel="alternate" type="application/atom+xml" title="Full Atom Feed" href="https://avinal.space/feeds/all.atom.xml">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body style="font-family:Overpass Mono,monospace;">
|
||||||
|
<header class="header star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container text-center">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<h1 class="title" style="font-family: ExodarOut;font-weight: lighter;"><a href="https://avinal.space/">Be My SpaceTime</a>
|
||||||
|
</h1>
|
||||||
|
<!--
|
||||||
|
<p class="text-muted">눈치</p>
|
||||||
|
-->
|
||||||
|
<ul class="list-inline">
|
||||||
|
<li class="list-inline-item"><a href="https://gsoc.avinal.space" target="_blank">gsoc</a></li>
|
||||||
|
<li class="list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/pages/about-me.html">About Me</a></li>
|
||||||
|
<li class=" list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-github" href="https://github.com/avinal" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-linkedin" href="https://www.linkedin.com/in/avinal/" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-instagram" href="https://instagram.com/avinal.k" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-calendar" href="https://meet.avinal.space" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fa fa-envelope" href="mailto:blog@avinal.space" target="_blank"></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div> </div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<div class="main">
|
||||||
|
<div class="container">
|
||||||
|
<h1>Tag: #blog
|
||||||
|
</h1>
|
||||||
|
<hr>
|
||||||
|
<article class="row teaser">
|
||||||
|
<header class="col-sm-4 text-muted">
|
||||||
|
<ul>
|
||||||
|
<li title="2021-01-26T16:47:00+05:30">
|
||||||
|
<i class="fas fa-clock"></i>
|
||||||
|
Tue 26 January 2021
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<i class="fas fa-folder-open"></i>
|
||||||
|
<a href="https://avinal.space/category/development.html">development</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</header>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<h4 class="title">
|
||||||
|
<a href="https://avinal.space/posts/development/twilight-blog.html">How I Created This Blog?</a>
|
||||||
|
</h4>
|
||||||
|
<div class="content">
|
||||||
|
As you would have guessed by now, this blog is created using one such awesome SSG named Pelican. Pelican is simple, customizable and offers lots of themes and plugins. Pelican is python based SSG and is available through pip.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<footer class="footer star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<ul class="col-sm-6 list-inline">
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/archives.html">Archives</a></li>
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/categories.html">Categories</a></li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/tags.html">Tags</a></li>
|
||||||
|
</ul>
|
||||||
|
<p class="col-sm-6 text-sm-right text-muted">Created with <i class="fa fa-heart" style="color: red;"></i> by <a
|
||||||
|
href="https://github.com/avinal" target="_blank">Avinal</a>
|
||||||
|
</p>
|
||||||
|
</div> </div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,110 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<!-- Required meta tags -->
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
|
||||||
|
<title>#coding Articles | Be My SpaceTime
|
||||||
|
</title>
|
||||||
|
<link rel="canonical" href="https://avinal.space/tag/coding.html">
|
||||||
|
|
||||||
|
<link rel="apple-touch-icon" href="https://avinal.space/apple-touch-icon.png" sizes="180x180">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-32x32.png" sizes="32x32">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-16x16.png" sizes="16x16">
|
||||||
|
<link rel="manifest" href="https://avinal.space/site.webmanifest">
|
||||||
|
<meta name="theme-color" content="#333333">
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/bootstrap.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/all.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/pygments/manni.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/theme.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/space.css">
|
||||||
|
|
||||||
|
<link rel="alternate" type="application/atom+xml" title="Full Atom Feed" href="https://avinal.space/feeds/all.atom.xml">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body style="font-family:Overpass Mono,monospace;">
|
||||||
|
<header class="header star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container text-center">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<h1 class="title" style="font-family: ExodarOut;font-weight: lighter;"><a href="https://avinal.space/">Be My SpaceTime</a>
|
||||||
|
</h1>
|
||||||
|
<!--
|
||||||
|
<p class="text-muted">눈치</p>
|
||||||
|
-->
|
||||||
|
<ul class="list-inline">
|
||||||
|
<li class="list-inline-item"><a href="https://gsoc.avinal.space" target="_blank">gsoc</a></li>
|
||||||
|
<li class="list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/pages/about-me.html">About Me</a></li>
|
||||||
|
<li class=" list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-github" href="https://github.com/avinal" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-linkedin" href="https://www.linkedin.com/in/avinal/" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-instagram" href="https://instagram.com/avinal.k" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-calendar" href="https://meet.avinal.space" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fa fa-envelope" href="mailto:blog@avinal.space" target="_blank"></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div> </div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<div class="main">
|
||||||
|
<div class="container">
|
||||||
|
<h1>Tag: #coding
|
||||||
|
</h1>
|
||||||
|
<hr>
|
||||||
|
<article class="row teaser">
|
||||||
|
<header class="col-sm-4 text-muted">
|
||||||
|
<ul>
|
||||||
|
<li title="2021-02-02T21:47:00+05:30">
|
||||||
|
<i class="fas fa-clock"></i>
|
||||||
|
Tue 02 February 2021
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<i class="fas fa-folder-open"></i>
|
||||||
|
<a href="https://avinal.space/category/development.html">development</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</header>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<h4 class="title">
|
||||||
|
<a href="https://avinal.space/posts/development/wakatime-readme.html">How I implemented WakaTime embeddable Coding Graph GHA?</a>
|
||||||
|
</h4>
|
||||||
|
<div class="content">
|
||||||
|
f you use WakaTime to track your coding activity. You can add that to your README as a bar graph or embed it in your blog/portfolio. Just add this action to any of your repositories and there you have it.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<footer class="footer star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<ul class="col-sm-6 list-inline">
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/archives.html">Archives</a></li>
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/categories.html">Categories</a></li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/tags.html">Tags</a></li>
|
||||||
|
</ul>
|
||||||
|
<p class="col-sm-6 text-sm-right text-muted">Created with <i class="fa fa-heart" style="color: red;"></i> by <a
|
||||||
|
href="https://github.com/avinal" target="_blank">Avinal</a>
|
||||||
|
</p>
|
||||||
|
</div> </div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,133 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<!-- Required meta tags -->
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
|
||||||
|
<title>#docker Articles | Be My SpaceTime
|
||||||
|
</title>
|
||||||
|
<link rel="canonical" href="https://avinal.space/tag/docker.html">
|
||||||
|
|
||||||
|
<link rel="apple-touch-icon" href="https://avinal.space/apple-touch-icon.png" sizes="180x180">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-32x32.png" sizes="32x32">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-16x16.png" sizes="16x16">
|
||||||
|
<link rel="manifest" href="https://avinal.space/site.webmanifest">
|
||||||
|
<meta name="theme-color" content="#333333">
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/bootstrap.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/all.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/pygments/manni.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/theme.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/space.css">
|
||||||
|
|
||||||
|
<link rel="alternate" type="application/atom+xml" title="Full Atom Feed" href="https://avinal.space/feeds/all.atom.xml">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body style="font-family:Overpass Mono,monospace;">
|
||||||
|
<header class="header star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container text-center">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<h1 class="title" style="font-family: ExodarOut;font-weight: lighter;"><a href="https://avinal.space/">Be My SpaceTime</a>
|
||||||
|
</h1>
|
||||||
|
<!--
|
||||||
|
<p class="text-muted">눈치</p>
|
||||||
|
-->
|
||||||
|
<ul class="list-inline">
|
||||||
|
<li class="list-inline-item"><a href="https://gsoc.avinal.space" target="_blank">gsoc</a></li>
|
||||||
|
<li class="list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/pages/about-me.html">About Me</a></li>
|
||||||
|
<li class=" list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-github" href="https://github.com/avinal" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-linkedin" href="https://www.linkedin.com/in/avinal/" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-instagram" href="https://instagram.com/avinal.k" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-calendar" href="https://meet.avinal.space" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fa fa-envelope" href="mailto:blog@avinal.space" target="_blank"></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div> </div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<div class="main">
|
||||||
|
<div class="container">
|
||||||
|
<h1>Tag: #docker
|
||||||
|
</h1>
|
||||||
|
<hr>
|
||||||
|
<article class="row teaser">
|
||||||
|
<header class="col-sm-4 text-muted">
|
||||||
|
<ul>
|
||||||
|
<li title="2022-02-27T20:47:00+05:30">
|
||||||
|
<i class="fas fa-clock"></i>
|
||||||
|
Sun 27 February 2022
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<i class="fas fa-folder-open"></i>
|
||||||
|
<a href="https://avinal.space/category/development.html">development</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</header>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<h4 class="title">
|
||||||
|
<a href="https://avinal.space/posts/development/lovely-dangerous-things-redhat.html">Developing Minimal Tekton Server <a class="reference external image-reference" href="https://github.com/MiniTeks"><img alt="mks_logo" class="align-middle" src="/images/mks_logo.png" style="width: 1.5em;" /></a></a>
|
||||||
|
</h4>
|
||||||
|
<div class="content">
|
||||||
|
We will be designing and implementing an application that will be talking to Tekton APIs to create resources on a Kubernetes/OpenShift Cluster.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
<hr>
|
||||||
|
<article class="row teaser">
|
||||||
|
<header class="col-sm-4 text-muted">
|
||||||
|
<ul>
|
||||||
|
<li title="2022-02-25T20:47:00+05:30">
|
||||||
|
<i class="fas fa-clock"></i>
|
||||||
|
Fri 25 February 2022
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<i class="fas fa-folder-open"></i>
|
||||||
|
<a href="https://avinal.space/category/development.html">development</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</header>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<h4 class="title">
|
||||||
|
<a href="https://avinal.space/posts/development/i-am-loving-it-redhat.html">My internship at Red Hat <a class="reference external image-reference" href="https://redhat.com"><img alt="redhat_logo" class="align-middle" src="/images/redhat_logo.png" style="width: 1.5em;" /></a></a>
|
||||||
|
</h4>
|
||||||
|
<div class="content">
|
||||||
|
I made it to the Red Hat as a DevTools intern. This post is about onboarding and how I prepared myself for working on the actual project.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<footer class="footer star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<ul class="col-sm-6 list-inline">
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/archives.html">Archives</a></li>
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/categories.html">Categories</a></li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/tags.html">Tags</a></li>
|
||||||
|
</ul>
|
||||||
|
<p class="col-sm-6 text-sm-right text-muted">Created with <i class="fa fa-heart" style="color: red;"></i> by <a
|
||||||
|
href="https://github.com/avinal" target="_blank">Avinal</a>
|
||||||
|
</p>
|
||||||
|
</div> </div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,110 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<!-- Required meta tags -->
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
|
||||||
|
<title>#FOSSology Articles | Be My SpaceTime
|
||||||
|
</title>
|
||||||
|
<link rel="canonical" href="https://avinal.space/tag/fossology.html">
|
||||||
|
|
||||||
|
<link rel="apple-touch-icon" href="https://avinal.space/apple-touch-icon.png" sizes="180x180">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-32x32.png" sizes="32x32">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-16x16.png" sizes="16x16">
|
||||||
|
<link rel="manifest" href="https://avinal.space/site.webmanifest">
|
||||||
|
<meta name="theme-color" content="#333333">
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/bootstrap.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/all.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/pygments/manni.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/theme.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/space.css">
|
||||||
|
|
||||||
|
<link rel="alternate" type="application/atom+xml" title="Full Atom Feed" href="https://avinal.space/feeds/all.atom.xml">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body style="font-family:Overpass Mono,monospace;">
|
||||||
|
<header class="header star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container text-center">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<h1 class="title" style="font-family: ExodarOut;font-weight: lighter;"><a href="https://avinal.space/">Be My SpaceTime</a>
|
||||||
|
</h1>
|
||||||
|
<!--
|
||||||
|
<p class="text-muted">눈치</p>
|
||||||
|
-->
|
||||||
|
<ul class="list-inline">
|
||||||
|
<li class="list-inline-item"><a href="https://gsoc.avinal.space" target="_blank">gsoc</a></li>
|
||||||
|
<li class="list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/pages/about-me.html">About Me</a></li>
|
||||||
|
<li class=" list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-github" href="https://github.com/avinal" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-linkedin" href="https://www.linkedin.com/in/avinal/" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-instagram" href="https://instagram.com/avinal.k" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-calendar" href="https://meet.avinal.space" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fa fa-envelope" href="mailto:blog@avinal.space" target="_blank"></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div> </div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<div class="main">
|
||||||
|
<div class="container">
|
||||||
|
<h1>Tag: #FOSSology
|
||||||
|
</h1>
|
||||||
|
<hr>
|
||||||
|
<article class="row teaser">
|
||||||
|
<header class="col-sm-4 text-muted">
|
||||||
|
<ul>
|
||||||
|
<li title="2021-08-19T23:07:00+05:30">
|
||||||
|
<i class="fas fa-clock"></i>
|
||||||
|
Thu 19 August 2021
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<i class="fas fa-folder-open"></i>
|
||||||
|
<a href="https://avinal.space/category/report.html">report</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</header>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<h4 class="title">
|
||||||
|
<a href="https://avinal.space/posts/report/final-evaluation.html">Google Summer of Code 2021</a>
|
||||||
|
</h4>
|
||||||
|
<div class="content">
|
||||||
|
This is the final report of my Google Summer of Code 2021 at The FOSSology Project.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<footer class="footer star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<ul class="col-sm-6 list-inline">
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/archives.html">Archives</a></li>
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/categories.html">Categories</a></li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/tags.html">Tags</a></li>
|
||||||
|
</ul>
|
||||||
|
<p class="col-sm-6 text-sm-right text-muted">Created with <i class="fa fa-heart" style="color: red;"></i> by <a
|
||||||
|
href="https://github.com/avinal" target="_blank">Avinal</a>
|
||||||
|
</p>
|
||||||
|
</div> </div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,110 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<!-- Required meta tags -->
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
|
||||||
|
<title>#github-action Articles | Be My SpaceTime
|
||||||
|
</title>
|
||||||
|
<link rel="canonical" href="https://avinal.space/tag/github-action.html">
|
||||||
|
|
||||||
|
<link rel="apple-touch-icon" href="https://avinal.space/apple-touch-icon.png" sizes="180x180">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-32x32.png" sizes="32x32">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-16x16.png" sizes="16x16">
|
||||||
|
<link rel="manifest" href="https://avinal.space/site.webmanifest">
|
||||||
|
<meta name="theme-color" content="#333333">
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/bootstrap.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/all.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/pygments/manni.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/theme.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/space.css">
|
||||||
|
|
||||||
|
<link rel="alternate" type="application/atom+xml" title="Full Atom Feed" href="https://avinal.space/feeds/all.atom.xml">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body style="font-family:Overpass Mono,monospace;">
|
||||||
|
<header class="header star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container text-center">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<h1 class="title" style="font-family: ExodarOut;font-weight: lighter;"><a href="https://avinal.space/">Be My SpaceTime</a>
|
||||||
|
</h1>
|
||||||
|
<!--
|
||||||
|
<p class="text-muted">눈치</p>
|
||||||
|
-->
|
||||||
|
<ul class="list-inline">
|
||||||
|
<li class="list-inline-item"><a href="https://gsoc.avinal.space" target="_blank">gsoc</a></li>
|
||||||
|
<li class="list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/pages/about-me.html">About Me</a></li>
|
||||||
|
<li class=" list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-github" href="https://github.com/avinal" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-linkedin" href="https://www.linkedin.com/in/avinal/" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-instagram" href="https://instagram.com/avinal.k" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-calendar" href="https://meet.avinal.space" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fa fa-envelope" href="mailto:blog@avinal.space" target="_blank"></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div> </div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<div class="main">
|
||||||
|
<div class="container">
|
||||||
|
<h1>Tag: #github-action
|
||||||
|
</h1>
|
||||||
|
<hr>
|
||||||
|
<article class="row teaser">
|
||||||
|
<header class="col-sm-4 text-muted">
|
||||||
|
<ul>
|
||||||
|
<li title="2021-02-02T21:47:00+05:30">
|
||||||
|
<i class="fas fa-clock"></i>
|
||||||
|
Tue 02 February 2021
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<i class="fas fa-folder-open"></i>
|
||||||
|
<a href="https://avinal.space/category/development.html">development</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</header>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<h4 class="title">
|
||||||
|
<a href="https://avinal.space/posts/development/wakatime-readme.html">How I implemented WakaTime embeddable Coding Graph GHA?</a>
|
||||||
|
</h4>
|
||||||
|
<div class="content">
|
||||||
|
f you use WakaTime to track your coding activity. You can add that to your README as a bar graph or embed it in your blog/portfolio. Just add this action to any of your repositories and there you have it.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<footer class="footer star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<ul class="col-sm-6 list-inline">
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/archives.html">Archives</a></li>
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/categories.html">Categories</a></li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/tags.html">Tags</a></li>
|
||||||
|
</ul>
|
||||||
|
<p class="col-sm-6 text-sm-right text-muted">Created with <i class="fa fa-heart" style="color: red;"></i> by <a
|
||||||
|
href="https://github.com/avinal" target="_blank">Avinal</a>
|
||||||
|
</p>
|
||||||
|
</div> </div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,110 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<!-- Required meta tags -->
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
|
||||||
|
<title>#github Articles | Be My SpaceTime
|
||||||
|
</title>
|
||||||
|
<link rel="canonical" href="https://avinal.space/tag/github.html">
|
||||||
|
|
||||||
|
<link rel="apple-touch-icon" href="https://avinal.space/apple-touch-icon.png" sizes="180x180">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-32x32.png" sizes="32x32">
|
||||||
|
<link rel="icon" type="image/png" href="https://avinal.space/favicon-16x16.png" sizes="16x16">
|
||||||
|
<link rel="manifest" href="https://avinal.space/site.webmanifest">
|
||||||
|
<meta name="theme-color" content="#333333">
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/bootstrap.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/all.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/pygments/manni.min.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/theme.css">
|
||||||
|
<link rel="stylesheet" href="https://avinal.space/theme/css/space.css">
|
||||||
|
|
||||||
|
<link rel="alternate" type="application/atom+xml" title="Full Atom Feed" href="https://avinal.space/feeds/all.atom.xml">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body style="font-family:Overpass Mono,monospace;">
|
||||||
|
<header class="header star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container text-center">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<h1 class="title" style="font-family: ExodarOut;font-weight: lighter;"><a href="https://avinal.space/">Be My SpaceTime</a>
|
||||||
|
</h1>
|
||||||
|
<!--
|
||||||
|
<p class="text-muted">눈치</p>
|
||||||
|
-->
|
||||||
|
<ul class="list-inline">
|
||||||
|
<li class="list-inline-item"><a href="https://gsoc.avinal.space" target="_blank">gsoc</a></li>
|
||||||
|
<li class="list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/pages/about-me.html">About Me</a></li>
|
||||||
|
<li class=" list-inline-item text-muted">|</li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-github" href="https://github.com/avinal" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-linkedin" href="https://www.linkedin.com/in/avinal/" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-instagram" href="https://instagram.com/avinal.k" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fab fa-calendar" href="https://meet.avinal.space" target="_blank"></a></li>
|
||||||
|
<li class="list-inline-item"><a class="fa fa-envelope" href="mailto:blog@avinal.space" target="_blank"></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div> </div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<div class="main">
|
||||||
|
<div class="container">
|
||||||
|
<h1>Tag: #github
|
||||||
|
</h1>
|
||||||
|
<hr>
|
||||||
|
<article class="row teaser">
|
||||||
|
<header class="col-sm-4 text-muted">
|
||||||
|
<ul>
|
||||||
|
<li title="2021-02-14T22:47:00+05:30">
|
||||||
|
<i class="fas fa-clock"></i>
|
||||||
|
Sun 14 February 2021
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<i class="fas fa-folder-open"></i>
|
||||||
|
<a href="https://avinal.space/category/development.html">development</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</header>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<h4 class="title">
|
||||||
|
<a href="https://avinal.space/posts/development/rst-guide.html">reStructuredText in GitHub</a>
|
||||||
|
</h4>
|
||||||
|
<div class="content">
|
||||||
|
reStructuredText syntax
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<footer class="footer star">
|
||||||
|
<div id='stars'></div>
|
||||||
|
<div id='stars2'></div>
|
||||||
|
<div id='stars3'></div>
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<ul class="col-sm-6 list-inline">
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/archives.html">Archives</a></li>
|
||||||
|
<li class="list-inline-item"><a
|
||||||
|
href="https://avinal.space/categories.html">Categories</a></li>
|
||||||
|
<li class="list-inline-item"><a href="https://avinal.space/tags.html">Tags</a></li>
|
||||||
|
</ul>
|
||||||
|
<p class="col-sm-6 text-sm-right text-muted">Created with <i class="fa fa-heart" style="color: red;"></i> by <a
|
||||||
|
href="https://github.com/avinal" target="_blank">Avinal</a>
|
||||||
|
</p>
|
||||||
|
</div> </div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||