documenting my notes

This commit is contained in:
tomit4 2021-08-21 06:37:26 -07:00
commit 0379beff4d
28 changed files with 1639 additions and 0 deletions

6
README.md Normal file
View file

@ -0,0 +1,6 @@
<h2>A Colection of My Personal Computer Related Notes</h2>
This repository simply contains a series of notes I have accumulated over a series of time regarding Computers/Programming.
Some of them are simply lists of programs I like or commands I have found useful. My memory can't possibly hold all the information.
So I have committed them to a series of notes on my computer. This repostiory acts both as a storehouse of my personal knowledge regarding
computers and programming, mainly dealing with Linux and its vast array of commands and programs.

34
apachesetup.txt Normal file
View file

@ -0,0 +1,34 @@
Install Apache on Arch Linux
We must first begin by installing Apache with the following command:
sudo pacman -S apache
Start the Apache service with the following command:
sudo systemctl start httpd
To edit the main Apache configuration file for one or many websites, according to your preference, open the configuration file located in the following directory:
sudo nano /etc/httpd/conf/httpd.conf
In order to test the installation, create a test HTML file in the following directory with the command below:
sudo nano /srv/http/index.html
Insert the following HTML code in the empty file then save and exit:
<html>
<body>
<h1>CONGRATULATIONS</h1>
<h2>You have just installed Apache on your Arch Linux Server</h2>
</body>
</html>
You can now verify that Apache is installed correctly by typing http:// and your IP address in your browser.
http://YOUR.IP.ADD.RESS
To get your servers public IP address, type the following command:
curl icanhazip.com

85
chmod_notes2.txt Normal file
View file

@ -0,0 +1,85 @@
Chmod is a UNIX based command that changes/modifies file and directory permissions from the CLI.
Chmod has a somewhat extensive series of command flags that grant or remove read/write/execute privileges from users within a certain group.
To display files/directories with their permissions listed, type:
ls -l or ls-la (la shows current working directory with permissions)
This will display something along the lines of:
dxwxr-xr-x 2 dave dave 4096 Aug 23 8:02 archive
-rw-rw-r-- 1 dave dave 780 Aug 20 11:11 command_cls.page
'd' represents directory
'x' represents execute
'w' represents write
'r' represents read
'l' represents link
The first series of letters and dashes precluded by teh first '-' character demarcates the current USER's permissions.
The second represents the user's GROUP and their permissions.(usually the sudo group)
The third represents OTHER users and their permissions. (usually non-sudo users)
The chmod command can modify these permissions using specific flags(a,u,r,w,x,o,g) and operators(=,+,-).
For example, the following command grants read,write permissions to the current user, while granting read permissions to the other user groupfor the file new_file.txt.
chmod u=rw,og=4 new_file.txt
Note the use of the '=' operator that will overwrite any existing permissions.
If we now run ls-l again, we might see something that looks like this:
-rw-r--r-- 1 dave dave 28127 Aug 20 11:11 new_file.txt
This is all well and good for files we only need to read/write to, like a .txt file, but what if we have a bash script we want to run?
We can very easily with chmod grant executable privileges in a similar fashion to granting read/write permissions.
chmod +x new_shell.sh
If we run ls -l again, our new_shell.sh file should be highlighted as well to easily differentiate itself as an executable file.
Note this could also have been written as 'a+x' which would have done the same thing slightly more verbosely with the 'add' flag.
We can also easily remove executable permissions by running the same as above but with the '-' flag:
chmod -x new_shell.sh
To easily use chmod to change the permissions on multiple files of a single file extension, one can easily do this using the wildcard flag *.
For example if one wished to remove the read permissions for the "other" users from files that have a ".txt" extension, one would simply run:
chmod o-r *.txt
And again, one could do the opposite, adding read permissions to the "other" users for files that have a ".txt" extension:
chmod o+r *.txt
To recursively change permissions within a subdirectory, adding the -R flag will do this. For example if one wished to remove read permissions for our OTHER users within a subdirectory called 'page', one would simply type:
chmod -R o-r *.page
Also note that chmod has similar uses to the other command, chown (change ownership). For example while troubleshooting a permissions issue with mariaDB, I inputted the following to fix the issue:
sudo chown -R mysql: /var/lib/mysql
Note the difference in syntax here, instead of using flags to demarcate broad sweeping permission changes across user groups, instead we specified the user (in this case mysql). The use of the -R flag was important in this case as only the directory /var/lib/mysql was granted read/write permissions, while the files inside were still locked off from the user, mysql. In other words, running the chown command recursively where the user mysql (followed by a colon ':' to demarcate an optional paramter which takes the user's group, left blank in this case) would be granted user ownership permissions over the specified directory AND ALL OF ITS CONTENTS.
There is also a Numerical Shorthand to the chmod command which is very handy, but requires a bit more experience than I have to get used to it.
The essentials of it basically entails that three digits are given following the chmod command. The first digit represents the USER permissions, the second GROUP permissions, and the third OTHER permissions. An example would look like this:
chmod 664 *.page
Which would grant read/write permissions to both the USER and GROUP, while granting only read permissions to the OTHER to all files with the extension '.page'.
The following is a cheat sheet for the numerical annotations of chmod.
0:(000) No permission.
1:(001) Execute permission.
2:(010) Write permission.
3:(011) Write and execute permissions.
4:(100) Read permission.
5:(101) Read and execute permissions.
6:(110) Read and write permissions.
7:(111) Read, write, and execute permissions.
This can be extremely useful if you are a systems administrator with a large amount of employees who need various access to different files/directories within your system, but the more verbose strings of letters might be easier to remember depending on what your use is. Nevertheless it is up to you to decide which method of using chmod you are more easily able to remember its syntax. A combination of these techniques should serve you well.

38
couchdb_notes.txt Normal file
View file

@ -0,0 +1,38 @@
Please see the following link to read about how to set up couchdb using snap:
https://github.com/apache/couchdb-pkg/blob/main/README-SNAP.md
The essentials of setting up a basic couchdb are this:
First install using snap:
sudo snap install couchdb
Then set the admin password:
sudo snap set couchdb admin=yourpasswordhere
And start couchdb:
sudo snap start couchdb
Enable snap permissions:
sudo snap connect couchdb:mount-observe
sudo snap connect couchdb:process-control
Change the Erlang settings stored in the /var/snap/couchdb/current/etc/vm.args file:
sudo snap set couchdb name=douchdb@127.0.0.1:5984 setcookie=cutter
;make sure to read the vm.args file to further understand this.
;and also restart couchdb once this is done:
sudo snap restart couchdb
Monitor CouchDB;
snap logs couchdb -f
OR
journalctl -u snap.couchdb* -f

20
css_notes.txt Normal file
View file

@ -0,0 +1,20 @@
There is a lot to CSS, SASS, etc, so alot of these notes will be in reference to further documentation you can find online.
Eventually very specific tools that we reuse will be noted either here or in a separate file.
One of the best resources you can go to for CSS is Kevin Powell on youtube:
https://www.youtube.com/channel/UCJZv4d5rbIKd4QHMPkcABCw
And also CSS-Tricks.com:
https://css-tricks.com
Specifically their CSS grid and flexbox tutorials:
https://css-tricks.com/snippets/css/a-guide-to-flexbox/
https://css-tricks.com/snippets/css/complete-guide-grid/
A great resource for figuring out use specific grid snippets can be found at gridbyexample.com:
https://gridbyexample.com/examples/

11
curl_notes.txt Normal file
View file

@ -0,0 +1,11 @@
Very Simple GET request:
curl http://localhost:3000/maria_database
Simple JSON POST request:
curl -X POST http://localhost:3000/maria_database -H "Content-Type: application/json" -d '{"task": "DONE IN CURL"}'
Simple JSON DELETE request:
curl -X DELETE http://localhost:3000/maria_database -H "Content-Type: application/json" -d '{"deletedItem": "DONE IN CURL"}'
Simple JSON PUT request:
curl -X PUT http://localhost:3000/maria_database -H "Content-Type: application/json" -d '{"updated": "WE DID THIS IN CURL AGAIN", "previous": "DONE IN CURL"}'

View file

@ -0,0 +1,64 @@
The following covers the basic installation instructions and basic command line syntax for utilizing docker.
Install Docker and Docker-compose:
sudo pacman -S docker
sudo pacman -S docker-compose
Start Docker by Default on Startup:
sudo systemctl start docker.service
sudo systemctl enable docker.service
Check Docker version:
sudo docker version
And info:
sudo docker info
Run Docker without root:
sudo usermod -aG docker <username>
reboot (required to take effect)
Search for a Docker Image:
docker search [name]
docker search nginx (an example)
Install a docker image:
docker pull hello-world (a simple package that tests if docker is working properly)
And run that Docker image:
docker run hello-world
Monitor Docker:
docker container ls
To see a list of all the Docker images installed:
docker images
To see the CPU RAM and network usage of the running images:
docker stats
To see Docker's network configuration:
docker network ls
To remove docker containers type:
docker container prune (careful, removes them all)
docker container -r <container_id>
You'll still need to remove their corresponding images though, so:
docker images prune (again, removes them all)
docker rmi <container name or id>

17
docker_mariadb.txt Normal file
View file

@ -0,0 +1,17 @@
# Setting up a Docker MariaDB instance isn't too difficult, based off of Technotes yt channel, it can be done as follows:
# From the terminal, enter:
docker run -e MYSQL_ROOT_PASSWORD=test --name mydbcontainer -d mariadb
docker exec -it mydbcontainer -u root -p (enter password test)
# You will then see a classic CLI mariadb instance, go ahead and quit using \q, then:
docker inspect mydbcontainer
# This will show you a JSON like object that will include the IP addresss, copy it, and use it in the following command from your home machine command line:
mariadb -h 172.17.0.2 root -p (and enter password test again)
This will allow you to remote into the docker instance and use the mariadb without having to execute docker outright like above.

85
docker_notes.txt Normal file
View file

@ -0,0 +1,85 @@
Some commands of importance:
#To spin up the docker-compose server/website:
docker-compose up
#To see the docker images in a list:
docker image ls
#You can also inspect each image by tag or id with:
docker inspect <tag or id>
#To spin up docker in the background (leaving you to use the console further):
docker-compose up -d
#And to have a list of what applications are currently running from docker:
docker-compose ps
#To see what environment variables are available to the 'web' service:
docker-compose run web environment
#And lastly to close docker after opening it with the -d flag:
docker-compose stop
#If you wish to remove the containers docker has created in running the app, you can remove the containers by:
docker-compose down --volumes
The above commands are the basics of docker-compose program. Below is a not so brief description of what we learned from doing the basic tutorial:s
Essentially from what I've gathered is that Docker allows for faster integration of all required dependencies and greatly accellerates
the development of applications by removing certain repetitive commands that are common to application development.
Many of the projects that are found at docker.com are written in python and thusly the examples used in these notes will pertain
mainly to its uses with python, although it is worth noting that it is highly likely docker is usable with any programming language, including, of course
Javascript.
For a more in depth understanding of Docker basics, please visit:
https://docs.docker.com/compose/gettingstarted/
Within our own directories, you can find a subdirectory called docker_compose_test within web_tutorials that follows along.
Within every Docker application there will be a main application from which docker will look for it's main commands, similar to an index.js file or an
index.html file
In the case of the tutorial, this would be app.py
We also start off with creating a docker-compose.yml file as well as Dockerfile. Note that Dockerfile should have no extension specified,
but is essentially a text file, as well as a requirements.txt file.
To reiterate as a list:
app.py
docker-compose.yml
Dockerfile
requirements.txt
In order to truly understand the syntax, it will be important in the learning process to become familiar with the syntactical nuances of each of these files
The Dockerfile file is actually the file that the docker-compile program talks to to render either a server or a web application, or both. I suspect
it is capable of alot more than this, but this is what has been presented to me thus far.
The app.py is actually quite simple to read in this particular case as all it does is iterate however many times the user refreshes the site, and displays it to them
within a string that greets them. Even though I have limited knowledge of python, the syntax is very straightfoward. This is displayed using the Flask application.
The docker-compose.yml (.yaml can also be used) is likely referenced by the Dockerfile to determine where to build its dependencies, run the program in which environment, which port to run it on, etc.
Lastly, the requirements.txt is literally a simple list of required dependencies, all it requires is a \n linebreak to differentiate the needed dependencies from each other
(simplest formatting ever).
Note that the formatting is extremely important, just like in all programming. The indentation in the .yml and of course in the .py is of particular importance.
In the docker site's tutorial page which covered a django app, I typed out everything as I saw it only to find I had not used proper indentation and simply copying/pasting
their text fixed all the errors I was initially receiving.
Although I have already gone through this tutorial, it might be worth revisiting docker's tutorial on Python/Django, please see:
https://docs.docker.com/samples/django/

102
firefox_notes.txt Normal file
View file

@ -0,0 +1,102 @@
Maximize/"Harden" Firefox privacy settings
(via Mental Outlaw YT channel and Chris Xiao's Yet Another Firefox Hardening
article and Unix Sheikh's Choose your Browser Carefully article):
Install Ublock Origin
Install Decentraleyes
Install ForgetMeNot
Install DarkReader
Install Vimium-FF
Set Default Search Engine to Duck Duck Go Lite
Get Firefox to remember nothing through Preferences setting
Set Firefox to never visit non https websites
Disable smooth scrolling
about:config settings
(Optional): Turn off Javascript
media.peerconnection.enabled set to false #breaks real-time audio/video
media.navigator.enabled to false #breaks real-time audio/video
media.gmp
devtools.onboarding.telemetry.logged to false
datareporting.policy.dataSubmissionEnabled set to false
app.normandy.enabled set to false
extensions.pocket.enabled to false
extensions.formautofill.available set to blank
extensions.screenshots.disabled set to true
extensions.webcompat-reporter.enabled set to false
privacy.resistfingerprinting set to true #noticeable performance and stability impact, proceed with caution.
privacy.firstparty.isolate to true
network.dns.disablePrefetch to true
network.predictor.enabled set to false
network.prefetch-next to false
network.http.sendRefererHeader to 0 #sites with forms and logins may break
network.http.referer.XoriginPolicy to 1
network.cookie.lifetimePolicy to 2
pdfjs.enableScripting to false
identity.fxaccounts.enabled to false
geo.enabled to false
dom.webnotifications.enabled to false
security.ssl3.rsa_des_ede3_sha set to false
security.ssl.require_safe_negotiation set to true
security.tls.version set to at least 3 (4 highest setting as of 2021, but not necessary according to Mental Outlaw)
security.tls.enable_Ortt_data set to false
browser.shell.checkDefaultBrowser = false
browser.formfill.enable set to false
browser.cache.disk.enable set to false
browser.cache.disk_cache_ssl set to false
browser.cache.memory.enable set to false
browser.cache.offline.enable set to false
browser.cache.insecure.enable set to false
browser.privatebrowsing.autostart set to true
browser.urlbar.speculativeConnect.enabled set to false
browser.search.suggest.enabled set to false
plugin.scan.plid.all set to false (same, couldn't find)
browser.ping-centre.telemetry set to false
browser.newtabpage.activity-stream.feeds.telemetry set to false
browser.newtabpage.activity-stream.telemetry set to false
browser.newtabpage.activity-stream.section.highlights.includePocket to false
browser.tabs.crashReporting.sendReport to false
browser.uidensity to 1 (makes the browser's tabs not so huge for firefox 89+)
devtools.onboarding.telemetry.logged to false
toolkit.telemetry.enabled to false
toolkit.telemetry.server Delete the URL and leave it empty
toolkit.telemetry.archive.enabled set to false
toolkit.telemetry.bhrPing.enabled set to false
toolkit.telemetry.firstShutdownPing.enabled set to false
toolkit.telemetry.newProfilePing.enabled set to false
toolkit.telemetry.unified set to false
toolkit.telemetry.updatePing.enabled set to false
toolkit.telemetry.shutdownPingSender.enabled set to false
webgl.disabled set to true
privacy.firstparty.isolate set to true
security.ssl.enable_false_start set to false
go into ublock origin and check the 'Prevent WebRTC from leaking local IP addresses' box.
go into usr/lib/firefox/distribution and open/create package.json and input the following:
{
"policies": {
"DisableAppUpdate": true,
"DisableFirefoxAccounts": true,
"DisableTelemetry": true,
"DNSOverHTTPS": {
"Enabled": false,
"Locked": true
},
"DontCheckDefaultBrowser": true,
"NetworkPrediction": false,
"PromptForDownloadLocation": true,
"SearchEngines": {
"PreventInstalls": true
},
"SearchSuggestEnabled": false,
"NetworkPrediction": false
}
}
The following isn't privacy related, but turns off proton in firefox, which makes better use of screenspace:
browser.proton.enabled set to false
browser.proton.modals.enabled set to false
browser.proton.doorhangers.enabled set to false
browser.proton.contextmenus.enabled set to false

97
git_basics.txt Normal file
View file

@ -0,0 +1,97 @@
# This document covers the basics of creating a simple git repository.
################### CREATE NEW REPOSITORY ###################
# Log into github: https://www.github.com/
# Click on the left by your profile and then by repositories, click "New"
# Name your repository (within this document we will now refer to this as "test-repo")
# Navigate to the directory from which you will be working, and once you have established some files you'd like to commit, enter the following commands:
echo "# test-repo" >> README.md #creates a simple test README file
git init # initializes a local(on your computer) git repository
git add README.md # adds the README.md file to your local git repository
git commit -m "first commit" # and commits those files to the local git repository with a short message noting it as the "first commit"
git branch -M main # establishes which branch you wish your repository to be pushed to
git remote add origin https://github.com/<your_github_user_name>/test-repo.git # adds your local repository to be remotely added to the specified repository
git push -u origin main # pushes your local repository to the online repository
################### PUSH TO EXISTING REPOSITORY ###################
git remote add origin https://github.com/<your_github_user_name>/test-repo.git
git branch -M main
git push -u origin main
git checkout -b <new branch> ## create a new branch in your current repository
git commit -m "v0.1.0" # commits it to the repository with a version number as its message
git push origin main # pushes the local repository to the origin main branch
git tag v0.1.0 # tags that repository with that version number
git push origin v0.1.0 and pushes it to the repository
################ DELETING ITEMS FROM YOUR REPOSITORY ####################
git -rm <file name>
TO REMOVE FROM JUST THE REPOSITORY:
git -rm --cache <filename>
################### SECURITY #######################
CREATE AN AUTHENTICATION TOKEN ON GITHUB AND USE IT. (or use SSH)
# To create a gitignore file that ignores all node_modules subdirectories:
touch .gitignore
echo "node_modules/" > .gitignore
# To pull from your existing repository and force a merge request into your current git repository:
git pull origin main --allow-unrelated-histories
# Remember that certain files like our files.txt files in our reading-streams Node-Cookbook tutorials were over 50mb in size,
# which github has as their file cap, so don't commit files over 50mb.
#################### SSH PUSHING #####################
Creating an SSH key and utilizing it on your github account can be found here:
https://docs.github.com/en/github/authenticating-to-github/connecting-to-github-with-ssh
In order to utilize ssh with github, within your repository, when setting up your first push (instructions above)
You'll want to enter the following command before attempting to push:
git remote add orgin_ssh <ssh_url>
The ssh_url can be found on your repository's site under the Code tab, copy it and enter it with the command above
Then, when you are ready to push your committed changes to your repository, simply enter a modified version of the push command:
git push origin_ssh main
It will then prompt you for your ssh key's passphrase, enter it and you will be good to go (better than the security token option above)
################### UPDATE NPM REGISTRY ###################
npm login # Enter login credentials
npm publish --access=public # publishes your current npm package to npm

96
git_notes.txt Normal file
View file

@ -0,0 +1,96 @@
git --version
#Tells you which version of git you are running
git config --list
#Tells you what configuration settings you have on git
git config --global user.name "Your name"
#Configures git with your git(hub) username
git config --global user.email "yourname@youremail.com"
#Configures git with your git(hub) user email
git init
#initializes a new git repository on local machine
git add "your_file(s) here"
#adds your files to the repository
git commit -m
#commits the files
git push --set-upstream https:/github.com/username/repository_name.git master
#pushes the repository online
#you'll be prompted for your username and password at this point
rm -rf .git
#Stops current directory from being tracked by git, essentially removing initalized
#git respository.
touch .gitignore
#creates a .gitignore file that tracks the files within the directory you DON'T want
#included in your git project repository
#note that wildcard and then listing the type of files you want to ignore can ignore all
#files of a specific type, for example
*.py will ignore all python files
*.js will ignore all javascript files, etc.
git reset file_name
#removes the file_name from the files to be committed (opposite of git add)
git reset
#git reset with no parameters given will remove all files from the commit stage
git log
#shows the log of recent commits
git clone <url> <where to clone>
#clones a respotiroy from <url> to <where to clone>
#instead of <url> you can use local directories to clone from one local directory to another
by following <url> or local directory where <where to clone> is simply ".", the period
#indicates that you'd like to clone that respotiroy/directory to the current directory you are in
git remote -v
#lists the origins of the cloned repository
git branch -a
#lists all the branches of the cloned repository
git pull origin master
#pulls any changes that have been made to that git repository while you have
#been addding changes of your own (essentially showing changes other developers
#may have made/pushed to the repository while you have been working on your own changes)
#note that origin is the name of the repository, and master is the name of the branch
git push origin master
#pushes any changes you have made to the git repository, taking it from the commit
staging area to the final show area on git(hub).
common workflow example:
git branch calc-divide
#creates a git branch called calc-divide
git checkout calc-divide
#changes default working branch to calc-divide (default s usually master)
git branch -d calc-divide
#deletes branch locally
git push origin --delete calc-divide
#deletes branch remotely
#Once changes have been made to various branches, and the project looks like it will
#work well with all other branches/code changes (basically, the project is ready to be staged as a final version)
#the branches are ready to be merged into the master branch and staged on git(hub)
#the following commands allow for such with branch calc-divide:
git checkout master
git pull origin master
git branch --merged
git merge calc-divide
git push origin master

14
gpg_basics.txt Normal file
View file

@ -0,0 +1,14 @@
GPG is a simple file encryption tool that we can use to easily encrypt and decrypt our sensitive files.
To easily encrypt a file, simply type into the terminal:
gpg -c <file_you_want_to_encrypt.txt>
And then enter and repeat a passphrase that will decrypt it later.
You must wait ten minutes to test decrypting the file as it will wait ten minutes after encryption before it will ask for a password.
To decrypt the file, wait ten minutes, then:
gpg -d <file_you_want_to_encrypt.txt>
It will prompt you for the password, then it will decrypt the file. This will ALWAYS copy the file, so remove the original file after encryption and decryption.

22
grep_notes.txt Normal file
View file

@ -0,0 +1,22 @@
This grep or egrep(just grep with no -E flag), will return all sentences that begin with a capital letter and are followed by any
number of uppercase letters, followed by lower case letters, followed by blank spaces and end with a period.
This is an example of an extended regular expression, which allows for the use of the :alpha: :upper: :lower: etc. meta search criterion.
The '' delineates the beginning of an expression so that the meta characters are not interpreted by bash as commands.
The carat symbole ^ represents that the beginning of the expression MUST begin with, in this case an uppercase character.
It is encapsulated by two square brackets [[]] so as to delineate as ingle character, which then MUST be followed by ANY
number of uppercase characters, lowercase characters, and empty space characters, the ANY condition is inputted by the asterix * metacharacter
The backslash breaks us out of extended regular expressions and then returns us to LITERAL or BASIC regular expressions. In this case
we MUST follow it by a literal period .
We then ask it to search the lorem.txt using the regular expression, which will give us (roughly) every sentence within the text.
Note that this is FAR from perfect however, you can even see its major issues by using the same command on this document instead of lorem.txt
##########################################################
grep -E '^[[:upper:]][[:upper:][:lower:] ]*\.' lorem.txt
##########################################################
some text unique to grep1(compare these two files using the comm and diff(-u) commands)

46
grep_notes_1.txt Normal file
View file

@ -0,0 +1,46 @@
This grep or egrep(just grep with no -E flag), will return all sentences that begin with a capital letter and are followed by any
number of uppercase letters, followed by lower case letters, followed by blank spaces and end with a period.
This is an example of an extended regular expression, which allows for the use of the :alpha: :upper: :lower: etc. meta search criterion.
The '' delineates the beginning of an expression so that the meta characters are not interpreted by bash as commands.
The carat symbole ^ represents that the beginning of the expression MUST begin with, in this case an uppercase character.
It is encapsulated by two square brackets [[]] so as to delineate as ingle character, which then MUST be followed by ANY
number of uppercase characters, lowercase characters, and empty space characters, the ANY condition is inputted by the asterix * metacharacter
The backslash breaks us out of extended regular expressions and then returns us to LITERAL or BASIC regular expressions. In this case
we MUST follow it by a literal period .
We then ask it to search the lorem.txt using the regular expression, which will give us (roughly) every sentence within the text.
Note that this is FAR from perfect however, you can even see its major issues by using the same command on this document instead of lorem.txt
##########################################################
grep -E '^[[:upper:]][[:upper:][:lower:] ]*\.' lorem.txt
##########################################################
some text unique to grep2(compare these two files using the comm and diff(-u) commands)
##########################################################
(this file was copied from grep 1, and originally showed 'unique to grep1' above, it was then passed through the diff command thusly:
##########################################################
diff -Naur grep_notes_1.txt grep_notes_2.txt > grep_patch.txt
##########################################################
This created a grep_patch.txt file that you can see logs the output of the diff command, using the patch command, we can pass this
file through the command to update our original grep_notes_1.txt file to change ONLY what is different from the two files.
In this case, grep_notes_2.txt is considered the UPDATED file, and will thusly change the grep_notes_1.txt file. It could just as easily
be used to DOWNGRADE the file by reversing the order. This is useful for software development/updating/downgrading versions of programs.)
##########################################################
patch < grep_patch.txt
Outputs$:patching file grep_notes_1.txt
##########################################################

22
grep_notes_2.txt Normal file
View file

@ -0,0 +1,22 @@
This grep or egrep(just grep with no -E flag), will return all sentences that begin with a capital letter and are followed by any
number of uppercase letters, followed by lower case letters, followed by blank spaces and end with a period.
This is an example of an extended regular expression, which allows for the use of the :alpha: :upper: :lower: etc. meta search criterion.
The '' delineates the beginning of an expression so that the meta characters are not interpreted by bash as commands.
The carat symbole ^ represents that the beginning of the expression MUST begin with, in this case an uppercase character.
It is encapsulated by two square brackets [[]] so as to delineate as ingle character, which then MUST be followed by ANY
number of uppercase characters, lowercase characters, and empty space characters, the ANY condition is inputted by the asterix * metacharacter
The backslash breaks us out of extended regular expressions and then returns us to LITERAL or BASIC regular expressions. In this case
we MUST follow it by a literal period .
We then ask it to search the lorem.txt using the regular expression, which will give us (roughly) every sentence within the text.
Note that this is FAR from perfect however, you can even see its major issues by using the same command on this document instead of lorem.txt
##########################################################
grep -E '^[[:upper:]][[:upper:][:lower:] ]*\.' lorem.txt
##########################################################
some text unique to grep2(compare these two files using the comm and diff(-u) commands)

8
grep_patch.txt Normal file
View file

@ -0,0 +1,8 @@
--- grep_notes_1.txt 2021-08-21 05:42:09.720892075 -0700
+++ grep_notes_2.txt 2021-08-21 05:39:02.414217690 -0700
@@ -19,4 +19,4 @@
##########################################################
-some text unique to grep1(compare these two files using the comm and diff(-u) commands)
+some text unique to grep2(compare these two files using the comm and diff(-u) commands)

23
html_notes.txt Normal file
View file

@ -0,0 +1,23 @@
#There are some interesting keyboard shortcuts that will help us write our html
#pages faster. Keep in mind that saving default index.html files, etc will also be helpful
#To create a standard html page, simply type:
html
#to get options in vs code, choose "html5", and you will get a basic html page
#putting after the meta name tag a generic css link as follows:
<link rel="stylesheet" href="styles.css">
#is pretty much standard
#and putting in a generic javascript file as follows:
<script src="script.js" defer></script>
# will create a link to a standard javascript file and the defer will make sure
#it is read after the html/css is first processed
#hitting a .class*2 will create
<div class="class"></div>
<div class="class"></div>
#while doing the same with #id*2 will create
<div id="id"><div>
<div id="id"><div>

363
linux_notes.txt Normal file
View file

@ -0,0 +1,363 @@
To Display All Info about your Linux Machine:
uname -a
To change password:
passwd
To change password as root for another user:
passwd <username>
To login as a different user:
sudo -u <username> -i
To Display current kernel and other installed kernels:
mhwd-kernel -li
To quickly display files/directories:
ls
To display files/directories/hidden files in human readable format:
ls -lah
To Display disk usage of a particular directory:
du -c /directory (displays total disk usage)
du -h /directory (displays total disk usage by file/subdirectory in human readable format)
du -hc /directory (displays total disk usage and usage by file/subdirectory in human readable format)
To Display top five directories that use the most disk space:
du -ahx . | sort -rh | head -5
To Display location of binary file of program:
whereis <program_name>
To show all available network connections:
nmcli
To show all available network connections in human readable format:
nmcli connection
To connect to wifi network:
nmcli device wifi connect <NETWORK NAME>
To Display ip address info:
ip addr show
inxi -i
curl ifconfig.me
ip neigh
To connect via Network Manager Command Line Interface (nmcli):
nmcli device wifi connect "$SSID" password "$PASSWORD"
nmcli --ask device wifi connect "$SSID" (connects with a prompt that hides password)
To display and change wifi settings;
nmcli
To Display Proccesses:
bpytop
htop
top
powertop
To Kill all processes on a specific port:
fuser -k 3000/tcp
To Display HD Storage:
df
More info about nmcli:
man nmcli (very extensive)
man nmcli-examples(good manual for how to connect and configure network and wifi connections)
To Display CPU and Network info:
inxi -p (shows your partitioning)
inxi -r (shows your repo list)
inxi -i (shows your network details, including public ip)
nmcli -p device (displays in human readable format the available network connections)
nmcli device wifi list (displays with a mini gui the list of available wifi networks)
inxi -w (shows the weather)
lscpu OR
hwinfo --cpu (much more detailed info) OR
inxi -C (sort of like htop with lscpu)
To Display Nvidia GPU info:
nvidia-smi
To display socket statistics:
ss
To display the history of last logged in users:
last
To display your current external/public IP address:
curl ifconfig.me
To display all directories/files:
tree
To display all directories EXCEPT for one directory:
tree -I ignored_directory_name
Example:
tree -I node_modules
To display files/directories and their memory usage:
pstree
To Search for all files with the name <query> -i flag means case insensitive:
locate -i <query>
Similar to locate, but within working directory:
find /dir_name/filename.txt
To remove a file:
rm filename
To remove an empty directory:
rm -d directoryname
To remove a directory with files in it:
sudo rm -r directoryname
To securely delete a file (keep in mind this is not perfect, the only way to securely delete files is to physically destroy the hardware):
shred -u -z filename
To kill all processes on port 3000:
fuser -k -n tcp 3000
Grep Command Searches for particular strings/regex patterns within a text file:
Most Basic Use:
grep -F -i <query> <file.txt>
Example:
grep -F -i "tHe" linux_notes.txt
Curl is a powerful CLI command that can GET/POST/PATCH/DELETE/etc. from HTTP/FTP/etc:
curl "https://www.mywebsite.com"
To write curl output to a file:
curl -o "https://www.mywebsite.com" mywebsiteoutput.txt
To format the returned text from curl, use prettier:
prettier mywebsiteoutput.txt
And to save/overwrite the file:
prettier --write mywebsiteoutput.txt
To make a POST request in json format to a database:
curl -X POST http://localhost:3000/maria_database -d '{"id": 1, "task": "do something"}'
To Benchmark GPU:
cd into Unigine_Valley-1.0 (see Uningine for Linux website for download)
./valley (to run benchmark)
To Display system statistics including program resource usage:
yay -Ps OR
ncdu
To enable Uncomplicated Firewall:
sudo ufw enable
To turn off bluetooth:
sudo bluetooth off
To install protonvpn:
Utilize both Manjaro as well as ProtonVPN instructions, make sure
to also install all packages that require pip
To initialize protonvpn:
sudo protonvpn init
sudo protonvpn config
choose 1
enter openvpn login credentials found at protonvpn dashboard
sudo protonvpn connect -f
To disconnect protonvpn:
sudo protonvpn d
To Display Temps:
sensors OR
vcgencmd measure_temp (only works on Raspberry Pi) OR
watch -n 2 vcgencmd measure_temp (to see it adjust every 2 seconds)
To Display NVidia Temps:
nvidia-settings -q GPUCoreTemp -t OR
watch -n1 nvidia-smi (displays updated GPU temp and other stats every sec)
To Display CPU Clock Speed:
vcgencmd measure_clock arm (only works on Raspberry Pi) OR
watch -n 2 vcgencmd measure_clock arm (to see it adjust every 2 seconds)
To Display licensing/technical data about a program:
modinfo <program_name>
To adjust CPU clock and other settings in Raspberry Pi, navigate to:
cd /
boot/config.txt
and adjust via sudo nano
force_turbo=1
over_voltage=6-8(8max)
arm_freq=2000-2200(2200max)
To Update/Upgrade All Packages:
sudo pacman -Syu
OR
yay
To install a specific package:
sudo pacman -S <name>
OR
yay <name>
To install a package and bypass validity checks (make sure you trust the package):
yay -S --mflags --skipinteg <name>
To test whether or not a server is running on a specific port:
telnet localhost 3000
To uncompress a zip file:
unzip file.zip
To extract and uncompress a tar.gz file:
tar -xvzf foo.tar.gz
To change file permissions:
chmod (a somewhat advanced command, see chmod_notes.txt)
To remove a specific package:
sudo pacman -R <name>
OR
yay -Rns <name>
To remove a specific package and all its dependencies:
sudo pacman -Rs <name>
To Clean up unneeded dependencies:
yay -Yc
To clean up the pacman cache of all packages that are not currently installed:
sudo pacman -Sc OR
sudo paccache -r
To clean out your /home directory cache:
First to see your home cache disk usage:
sudo du -sh ~/.cache/
And then to remove everything there:
sudo rm -rf ~/.cache/* (be careful with this command as rm -rf with a wildcard will delete EVERYTHING)
To remove orphan (unused packages):
First to see orphans run:
sudo pacman -Qtdq
And then to remove them
sudo pacman -Rns $(pacman -Qtdq)
To list any failed services:
sudo systemctl --failed
To check for any process errors run:
sudo journalctl -p 3 -xb
To install snap and enable classic:
sudo pacman -S snapd
sudo ln -s /var/lib/snapd/snap /snap
Install Codium using snap:
sudo snap install codium --classic (has issues with displaying user prompts, but other package managers have other issues...)
For Art Install the following:
gimp(should be default in most distros)
inkscape
krita
blender
To add Fonts:
Download Fonts and unzip them
move them to usr/share/fonts/<folder_name>
For Epson V30 scanner enter the following (for arch and manjaro):
pamac build iscan-plugin-gt-f720
pamac install iscan
To Install td ameritrade
Follow specific instructions from both website and AUR (make sure java 8 is installed)
Upgrade:
sudo pacman -Syu
Install specific kernel:
sudo pacman -S kernel501 (501 being changeable in this case to the kernel version number you want)
Install package:
sudo pacman -S <packagename>
See package dependencies:
pactree <packagename>
See package dependencies only 1 level deep:
pactree -d 1 <packagename>
See package dependencies only one level deep without tree format:
pactree -d -1 -u <packagename>
Remove package:
sudo pacman -R <packagename>
Remove package and all its dependencies:
sudo pacman -Rcns <packagename>
See which program owns this file:
sudo pacman -Qo /path/to/file
To have bpytop start on startup and align to the left of the screen, go to Session and Startup and create a new operation:
xfce4-terminal --geometry=127x51+0+0 -x bpytop
Same with xbanish:
xbanish
Other Apps of Mention:
alacritty (nice simple terminal emulator)
bpytop (much better than htop, themes well with manjaro in the XFCE terminal)
nvtop (nvidia graphical user interface to monitor GPU status)
powertop (displays power usage)
atom (naturegreen dark theme)
codium (download via snap and install the vsix file of the borealis theme)(to install theme via CLI, run: codium --install-extension eckertalex.borealis-1.0.2.vs)
hub (extends functionality of git commands)
librewolf (download vis github)
micro(amazing minimalist text editor)
irssi
tor-browser
nmap
mangohud (displays gpu, cpu temps and usage percentage in game, input into steam Launch Options the following:)
MANGOHUD_CONFIG="cpu_temp,gpu_temp,background_alpha=0.2, font_size=16, round_corners=5.0, gl_vsync=0" mangohud %command% --launcher-skip"
ecryptfs-simple (simple encrypter package that can encrypt directories/files)
encfs (like ecryptfs, but better, sudo pacman -S encfs)
mtr (like ping, but way better)
etcher
iscan (funny enough, it's in the local repos, but you can also get it from the AUR)
krita
inkscape
xbanish (hides mouse on keyboard input, make sure to add to startup applications)
Laptop Battery Saving Utilities:
autocpufreq (one of the better battery saving measures, works more or less out of the box)
powertop (monitors mainly)
tlp (tlp start)
investigate cpu frequencies
Installing ecryptfs-simple:
git clone https://aur.archlinux.org/ecryptfs-simple.git
cd ecryptfs-simple
makepkg-si
(if your receive: "One or more PGP signatures could not be verified!, enter:)
gpg --recv-key <PGP public key listed above error>
makepkg-si
Favorite DE/TWM thus far:
Manjaro XFCE (minimal DE)
Manjaro Sway (community driven TWM)
Manjaro I3 (community driven TWM)
Manjaro Lomiri (for Pinephone, still in beta version as of mid 2021)

1
lorem.txt Normal file
View file

@ -0,0 +1 @@
Lorem impsum qualum dolum.

34
mysql_installation.txt Normal file
View file

@ -0,0 +1,34 @@
# After having had some difficulties installing mariaDB for Manjaro Linux, I though it best to document the basic installation process, as well as how I solved the issue.
# MariaDB is a free and open source version of the original MySQL. It is a robust SQL database that is easily run from the command line interface.
# Installation of mariaDB on Manjaro Linux starts off very much like most installations do with Arch based distrobutions, with the pacman package manager:
sudo pacman -S mariadb
# After installation is complete, enter:
sudo mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
# This will initialize our first mariadb database, note the location of the --datadir. This is where our problem occurred.
# After initializing our database, start the server and db. The enable command will start mariadb on system startup.
sudo systemctl start mariadb
sudo systemctl enable mariadb (this way we don't have to systemctl start mariadb every time we want to access our database)
# Finally you'll want to secure your database:
sudo mysql_secure_installation
# You will be prompted with a series of questions about how secure you wish to make your database.
# You may also wish to install and configure MySQL Workbench(not really all that good, install dbeaver instead, dbeaver requires java):
sudo pacman -S mysql-workbench
# The issue that I ran into during installation is that the permissions of /var/lib/mysql were not allowed for anyone, only access to the folder was allowed for mysql user. To change this, I ran this command:
sudo chown -R mysql: /var/lib/mysql
# the -R flag recursively changed ownership permissions throughout the entire /var/lib/mysql directory, whereas the user mysql only had permissions the directory itself.

67
mysql_notes.txt Normal file
View file

@ -0,0 +1,67 @@
//To access root:
mariadb -u root -p
//and enter root password
//To access user brian:
mariadb -u brian -p
//and enter password
//To access specific port:
mariadb -u brian -p port=<portnumber, default 3306>
//General guidelines for specific ip address, user, password, port number, and database:
mariadb -h 166.78.144.191 -u brian -p port=<port#> database_name
GRANT ACCESS
look this up in order to grant access to new user
SHOW DATABASES
//Displays your current databases
CREATE DATABASE name
//Creates a new database
USE DATABASE name
//Brings you to that Database, should change prompt
CREATE TABLE
look this up in order to see how to create tables
EXAMPLE OF CREATE TABLE:
CREATE TABLE to_do (id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY, task VARCHAR(28) NOT NULL) Engine=InnoDB;
SHOW TABLES
Shows databases tables
DESCRIBE name
Shows the properties of the table property
SELECT * FROM table_name;
# To add new users to the mysq.user database log into mariadb as root and then type:
USE mysql; # use the mysql database
SELECT User, Host, plugin FROM mysql.user;
# You will be presented with a display of a basic SQL table with User and plugin columns, below will display the user name under the user column and mysql_native_password under the plugin column.
# From here you can create a new user using the following mySQL command:
CREATE USER 'newuser' @ 'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO user@localhost IDENTIFIED BY 'password';
# To delete a row from a table:
DELETE FROM tablename WHERE parameters; (parameters example: id = 1)
# To export a database and save it as a .sql file:
mysqldump -u username -p current_database_name > sql_file_name.sql
# To import a database from a .sql file:
# Enter mariadb:
mariadb -u username -p
# Enter password
CREATE DATABASE new_database_name;
# Exit mariadb:
\q
mariadb -u username -p new_database_name < sql_file_name.sql

43
nodejs_notes.txt Normal file
View file

@ -0,0 +1,43 @@
There are some simple things every basic web project will need when working nodejs
One of these is that the npm init and npm install commands are pretty much universal
When creating a basic website that has a backend
once you are satisfied with the basic index.html, about.html etc. documents and intend
to create a backend side of the website, at some point you will want to create the package.json
file that will list all the npm depencies as well as other essential information about the project
to create the package.json file, very simply type in the terminal:
npm init
once you have determined which packages you will need from the npm, list them in the depencies of the
package.json file
and then type in the terminal:
npm install
This will install all dependencies listed in the dependencies property of the package.json file.
For extensive information about how to secure your NodeJS Applications, visit:
https://medium.com/@rajapradhan08/best-practices-for-securing-node-js-web-applications-2e54cfefdc05
sudo npm install -g nodemon
nodemon <server.js>
sudo npm install -g autocannon
autocannon is an HTTP benchmarking tool, it can be invoked like this;
autocannon --connections 100 http://localhost:3000/
allocates a pool of 100 concurrent connections to our server, default is 10.
The number of concurrent connections should be altered to best represent teh naticipated load on your server,
so you can simulate production workloads.
autocannon --connections 100 --duration 20 http://localhost:3000/
or more syntactically shortened:
autocannon -c 100 -d 20 http://localhost:3000

94
postgreSQL_basics.txt Normal file
View file

@ -0,0 +1,94 @@
PostgreSQL syntax basics are very much like other SQL syntax basics:
# Essentials to Logging in:
# If logging in from the same computer the database is being served from:
psql -d mydb -U myuser (where the -d flag indicates you wish to log into the database mydb, and the -U flag indicates the user you wish to log in as, in this case myuser)
# If, however you need to log in from a server named myhost, you can log in using this command:
psql -h myhost -d mydb -U myuser
# More commonly however you will want to utilize the following, which will ensure you are prompted with a password:
psql -d mydb -U myuser -W
# Once you have entered your password you will be prompted with the PostgreSQL's CLI, which looks something like this:
mydb=#_
# Should you at any point need any help, simply type the following, which will give you some basic commands:
psql --help
# Should you simply need to quit, type:
\q
##################################
# From here on out, we will go over the basics of creating a simple TABLE and INSERTing columns and rows and data into them.
# Create a Basic Database:
postgres=#CREATE DATABASE dbname;
# Change to a different Database:
\c DBNAME
# Listing Schema within your Database:
\dn
# List all Tables within your Schema:
\dt
# Creating a Basic Table:
# There are many ways to create a simple table with the standard definitions in SQL style syntax, the following is how one would create a basic Table that takes in some data about pets:
mydb=# CREATE TABLE pets(
ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
GENDER CHAR(1));
# Note the simple limitations and definitions we've put on the above. We CREATED a table called pets, followed by an opening parantheses. Then we started defining Columns and what kind of data we expect to be inputed there, the first is an ID, which we define as being an INTeger, with a PRIMARY KEY as a defining characteristic, and NOT NULL indicates it cannot be left blank.
# We also have a NAME column created, with a TEXT type input, and again NOT NULL as it cannot be left blank.
# The column AGE is similary created, with an INT type input, and again NOT NULL.
# Lastly a GENDER column is created, where it's only limitation is that it's CHARacter count must be one (didn't quite think that one out did I?)
# And there we have it, a basic table.
# Add Data to our rows:
# So if we wanted to INSERT new data into our TABLE we could do so like this:
INSERT INTO pets VALUES ('1', 'Slip', '12', 'F');
# Note the use of single quotes surrounding our input, this is a REQUIREMENT when inputting data.
# To view our data in our table, simply type:
SELECT * FROM table_name;
# More modern and works better is:
TABLE table_name;
#Or in this case:
SELECT * FROM pets;
# To delete a row from a table, simply enter:
DELETE FROM table_name
WHERE id = id_number;
##################################
# There is a lot more to cover, but I'll stop here for now as SQL style syntax can be Monolithic in scale.
# It is worth noting, however, that interacting with the psql cli can be a much more intuitive way of interacting with the Database than through the pgadmin4 GUI interface in our web broser, just in my opinion...

View file

@ -0,0 +1,99 @@
PostgreSQL is an Open Source Relational Database Module
Installation has thus far been somewhat difficult but I have had some success with the following on Manjaro Linux
# Installs postgresql and it's GUI pgadmin
sudo pacman -S yay
yay postgresql pgadmin4
sudo pacman -S postgres #allows for use of the initdb on Arch/Manjaro
# Setup the service
sudo -u postgres -i #login as postgres
initdb --locale $Lang -E -D '/var/lib/postgres/data/'
#This will then display on the console:
[postgres@manjaro ~]$ initdb --locale $LANG -E UTF8 -D '/var/lib/postgres/data/'
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.
The database cluster will be initialized with locale "en_US.utf8".
The default text search configuration will be set to "english".
Data page checksums are disabled.
fixing permissions on existing directory /var/lib/postgres/data ... ok
creating subdirectories ... ok
selecting dynamic shared memory implementation ... posix
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting default time zone ... America/Los_Angeles
creating configuration files ... ok
running bootstrap script ... ok
performing post-bootstrap initialization ... ok
syncing data to disk ... ok
initdb: warning: enabling "trust" authentication for local connections
You can change this by editing pg_hba.conf or using the option -A, or
--auth-local and --auth-host, the next time you run initdb.
Success. You can now start the database server using:
pg_ctl -D /var/lib/postgres/data/ -l logfile start
# Then we run:
sudo systemctl enable --now postgresql
# which will log the following:
Created symlink /etc/systemd/system/multi-user.target.wants/postgresql.service → /usr/lib/systemd/system/postgresql.service.
# and then...
sudo systemctl status postgresql #check for any errors
# To setup your connection security, login as root:
su
cd /var/lib/postgres/data
cp pg_hba.conf pg_hba.conf.backup # in case you mess up
micro pg_hba.conf
Although self explanatory, please also see:
https://dev.to/tusharsadhwani/how-to-setup-postgresql-on-manjaro-linux-arch-412l
For further details. This is also the website from which this configuration was written.
Ok, so we got in using pgAdmin as well! (this actually took me a good minute and using the psql cli helped)
Firstly, its' good to initialize our database on port 5432, note the initdb command above. Once done...
#login as postgres:
sudo -u postgres -i
#then login to postgres via cli gui:
psql <dbname>
#then it may prompt you for the password, after logging in, you will be presented with a basic cli GUI:
postgres=# help
You are using psql, the command-line interface to PostgreSQL
#from here you can pretty much interact with the interface but if you want to run the same server on pgAdmin,
#open it up via the terminal or from your Manjaro GUI:
pgadmin4
from her eyou can go to object create server, where it will ask for your login input,
this was the hard part, but I eventually determined that via psql, you could find all the info by typing
postgres=# \conninfo
which displays:
You are connected to database "postgres" as user "postgres" via socket in "/run/postgresql" at port "5432".
the name can be put in whatever you like, since you're naming the server (i also used postgres for this...)
but at the connection under Host name/address took me a while to realize that what it wanted was /run/postgresql
and yes the default port is 5432.
So there we are, finally the installation is complete and running on Manjaro Linux!

60
ssh_basics.txt Normal file
View file

@ -0,0 +1,60 @@
OpenSSH, or more commonly known simply as SSH, is a simple Secure Shell protocol that allows us to securely create passwords
that are associated with "keys" that will give us a long hashed key that is saved on whatever computer or API we are trying
to gain access to in which we can simply apply a password that is associated with that key. The key's hashed values are saved
on both our local computer as well as the API, but the passphrase to gain access is stored nowhere (unless we idiotically save it
in plain text somewhere, the following is a simle way to set it up on github and use it:
# Generating the SSH key
# First see what keys are availabe:
ls -la ~/.ssh
# To Generate a new SSH key:
ssh-keygen -t ed25519 -C "your_email@example.com" (note that the ed25519 is a key type and is necessary for security reasons,
you'll always want to use this type, but keep in mind that you'll probably want to rename this when prompted below so you can make
multiple ed25519 keys)
# You will be prompted to enter a file to which to save the key into, if you don't specify it will name it the ed25519 field
# You will also be prompted to enter/repeat a passphrase (remember this)
# Then add the SSH key to the ssh-agent
# First start the ssh-agent in the background.
evail "$(ssh-agent -s)"
# It will then list you the Agent pid number (note that yes, this is a process now running the background, this is how
it always will authenticate on your end, it is NECESSARY)
# Then we add the SSH private key to the ssh-agent.
ssh-add ~/.ssh/ed25519
# Then from the Github website on your profile page, go to settings and under SSH/GPG keys, add the SSH key including the SHA256 text,
but not your email
#After you have successfully done so (you should see a client side different SSH key that it is associated with), you'll need to test
your SSH connection:
ssh -T git@github.com
# You should then be prompted with a message like so:
> Hi username! You've successfully authenticated, but GitHub does not
> provide shell access.
# You're now ready to go, just make sure to specify the origin as origin-ssh instead of origin when pushing to github:
git add <file(s)>
git commit -m "commit message"
git push origin-ssh main
It will then prompt you for your ssh passphrase, enter it and you've successfully committed to github using ssh!
If you would like to automate it so it doesn't ask for the passphrase (just don't forget your passphrase in case), you can set up
automating putting in your passphrase like so:
ssh-add ~/.ssh/id_ed25519 &>/dev/null

75
vim_notes.txt Normal file
View file

@ -0,0 +1,75 @@
This Document covers some of the most commonly used vim commands:
# Super Basic:
# Quit Vim:
:q (make sure to enter the colon, this is in NORMAL mode)
:q! (quit without saving)
# Save Document:
:w
:wq (save and quit)
# Insert Text (enter INSERT mode):
i (that's right, just hit i)
a (enter insert mode, and put the cursor one ahead, ie append)
# Return to NORMAL mode:
Esc (hit the Escape key)
# Enter VISUAL mode:
v (from NORMAL mode, hit v, this will allow you to enter VISUAL mode)
# Navigate the Document in NORMAL mode:
h (go one character left)
j (go one character down)
k (go one character up)
l (go one character right)
w (go to the first character of the next word)
e (go to the last character of the next word)
b (go to the first character of the last word)
0 (go to the beginning of the current line)
$ (go to the end of the current line)
ctrl+d (navigate down one half screen)
ctrl+u (navigate up one half screen)
ctrl+f (navigate down one full screen)(essentially pgdown)
ctrl+b (navigate up one full screen)(essentially pgup)
# Copy/Paste:
yy or Y: copy current line, including new line character
y$: copy to the end of current line, but not the new line character
yiw: copy the current word, excluding surrounding whitespace
yaw: copy the current word, including surrounding whitespace
ytx: copy from the current cursor position up to and before the character represented by x
yfx: copy from the current cursor position up to and including the character represented by x
# Undo/Redo:
u: undo
Ctrl-R: redo
# Indent/Unindent:
>> : indent current line
<< : unindent current line
Travel to a specific line:
5G (takes you to line 5)
Page Up/ Page Down:
CTRL + B (Page Up)
CTRL + F (Page Down)
Global Search and Replace:
:%s/word_to_replace/new_word/g

13
vs_code_ext.txt Normal file
View file

@ -0,0 +1,13 @@
The following are some Codium Extensions that I like:
Beautify
Borealis Theme (install via .vsix file on vscodium)
Bracket Pair Colorizer
Cobalt2 Theme Official (blue borealis)
EsLint
GlassIt Linux (or GlassIt depending)
Import Cost
Markdown Preview Enhanced
Prettier
Vetur
Vim