The reason I was doing this is because I don't want to pay the expensive fee to see the certification dumps lol.
Docker containers in workflow created & removed
Node & NPM in workflow created & removed
Follow the official github documentation:
Follow below for personalized installation:
- cd linux/selfhost-runner
- vagrant up --provider vmware_desktop
- vagrant ssh Server1
- cd actions-runner
- ./run.sh
Link to Github Actions workflow:
-
https://github.com/jonathan-kee/examTopicScraper/actions/workflows/first-example.yml
-
Click Run Workflow
You need to enable the setting below for vmware to work: Privacy & Security -> Full Disk Access -> vagrant-vmware-utility
- cd linux/selfhost-runner
- vagrant up --provider vmware_desktop
- vagrant provision (You can skip this step, vagrant up will already provision)
- vagrant ssh Server1
- sudo chown -R vagrant:vagrant /home/vagrant/actions-runner
- cd actions-runner
- ./config.sh --url https://github.com// --token YOUR_TOKEN_HERE
*** Enter registration process details ***
./run.sh
Runner Registration Enter the name of the runner group to add this runner to: [press Enter for Default]
Enter the name of runner: [press Enter for Server1] prod-rocky-runner
This runner will have the following labels: 'self-hosted', 'Linux', 'ARM64' Enter any additional labels (ex. label-1,label-2): [press Enter to skip]
√ Runner successfully added
Runner settings
Enter name of work folder: [press Enter for _work]
√ Settings Saved.
- Website on webscraping & crawling:
- I am currently using browser automation instead of http clients:
- https://webscraping.fyi/overview/browser-automation/
- https://webscraping.fyi/overview/languages/#http-clients
- Youtube channels on webscraping & crawling:
- Airflow being used for webscraping:
- Official Reddit Date Engineering website
- Kodekloud
- Architecture for Data
- Workflow Orchestration
Airflow certification link:
Notes on Airflow certification:
- Data Ingestion
Dlt Certification links:
- https://dlthub.learnworlds.com/course/dlt-fundamentals
- https://dlthub.learnworlds.com/course/dlt-advanced
- Data Processing
DBT Certification links:
- https://learn.getdbt.com/learning-paths/dbt-certified-developer
- https://learn.getdbt.com/learning-paths/dbt-certified-cloud-architect
Apache Spark (Data bricks certs)
- Data Analytics
- Excel
- Power BI
Github Actions solves
- Codebase
- Build, Release and Run
^ You have to learn Git before Github Actions to make sense, can try below:
Github's Project Management tool like Trello, Jira:
Very useful feature for Github:
Scrum with GitHub Projects (Very good introduction to Github Projects):
Github Workflow for Issues and Pull Requests:
^
- Create Issues
- Issue can become a branch or link a pull request to the Issue
- Issue become a new branch, compare branch to main and create a pull request
- Creating a pull request will link to the issue
- Merge Pull request will also close the issue
TLDR: Create Issue -> New Branch from Issue -> Create Pull Request (Compare branch to main) -> Merge Pull Request -> Close Issue
GitHub Foundations Certification Course (Most detailed explanation on Issues & Pull Request):
Learn about Github Issue before moving into Github projects:
Github projects training course:
Question: So how does Github Issues, Github Projects fit into CI / CD?
*** Project Idea, have text to speech for recordings / meetings, then translate it Github Projects UI ***
- Install node version manager:
- curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
^^^^^^ The following wont work if ~/.profile exist, Then you need to manually add to .bashrc by doing the following:
- echo 'export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm [ -s "$NVM_DIR/bash_completion" ] && . "$NVM_DIR/bash_completion" # This loads nvm bash_completion' >> ~/.bashrc
- Make .bashrc take effect immediately by sourcing:
- source ~/.bashrc
- Install Node 24:
- nvm install 24
- Verify the Node.js version:
- node -v
- Verify npm version:
- npm -v
- Install Typescript:
- npm install -g typescript
- Install Dependencies:
- npm install
- Compile Typescript and launch with node with sample arguments:
- tsc && node ./build/index.js
- After npm install, there might be vulnerabilities:
- npm audit fix
- Minio
- Postgres
^ Both of these need to use volume, otherwise they would data would be lost
I am not entirely sure if I should create an image for the webscraper
^ If I am not mistaken, the 12 factor app mentioned about containerize scripts
^ The famous voting app has a image that is not a web server, it's like a script that has loop forevor until it errors
Docker is actually a server, it comes with
- Docker Daemon (dockerd)
- REST API
- Docker CLI (docker)
^ Based on Kodekloud's Docker-Certified-Associate-Exam-Course, You still need indepth knowledge of Linux
Link to Docker Certified Associate (DCA) Exam:
Mirantis bought over the Docker Certification Exam:
An alternative to Kodekloud's docker courses https://labs.iximiuz.com/roadmaps/docker
Not sure what is the importance for the process tree looking like that https://labs.iximiuz.com/challenges/docker-101-container-run-in-background
Download an image without starting a container:
-
docker image pull minio/minio
-
docker image pull postgres:14.21-trixie
-
Build Image for the webscraper
-
Create docker compose file
Question: If Postgres has delta table extension, will it be able to handle DBA SQL as well? Answer:
-
Oracle Database 12c DBA Handbook book is around 700 pages, I will just assume Postgres DBA SQL is that deep as well.
-
I have a folder named DBA1-handouts-16-en for Postgres DBA SQL, I downloaded from https://edu.postgrespro.com/16/DBA1-handouts-16-en.zip
- Install DBT fusion:
- Install DBT extension by "dbt Labs Inc":
- Rescrape pages that result in dirty data, need to update / merge existing data.
^ Partially added for Answers, never needed for question & discussions
-
Error handling for missing src images
-
Workflow Orchestration with Airflow
-
Column lineage with dbt
-
Schema Drift from upstream (The HTML, Javascript from examtopics)
-
SQL backup dump on repository, so when switch computer we get the data back
-
Maybe instead of scraping the data directly, you take all the data first and dump it into a data lake, then only process it at some future point
^ Try to use MINIO as a datalake, Hadoop also works
^ This pattern is good, because you don't have to think about transforming the data, you just focus on extracting as much data as possible
^ Good oppurtunity to use pg_lake for Postgres:
-
Convert the project into a CLI
-
Add Presentation like Excel or PowerBi if possible
Use Playwright for more scalable web scraping:
Question: Is SSIS still worth learning just to learn more about ETL patterns?
- Connect Touch&Go Ewallet to Bukku Accounting system
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome
--remote-debugging-port=9222
--user-data-dir=/tmp/chrome-profile
Apparently if you edit class="popup-overlay show" to "popup-overla show", the popup will break

