Compare commits
8 Commits
bda9f5dc59
...
b6bf9d6c13
| Author | SHA1 | Date | |
|---|---|---|---|
| b6bf9d6c13 | |||
| 62400fe840 | |||
| 8c5ead5058 | |||
| 24973f30ad | |||
| c3f807526a | |||
| 629411274a | |||
| b6c6a806b0 | |||
| 48a588a3fb |
131
README.md
131
README.md
@ -2,36 +2,135 @@
|
||||
|
||||
## Local
|
||||
|
||||
Docker commands to create the local containers.
|
||||
|
||||
`docker build -t pa4kev/portfolio-reactjs-full:latest -f Dockerfile .`
|
||||
|
||||
`docker push pa4kev/portfolio-reactjs-full:latest`
|
||||
|
||||
## Server (Enaga)
|
||||
|
||||
### GNU/Linux
|
||||
|
||||
* Create user, set password, set shell and add to sudo group.
|
||||
|
||||
`useradd -m <user>`
|
||||
|
||||
`passwd <user>`
|
||||
|
||||
`chsh -s /bin/bash <user>`
|
||||
|
||||
`adduser <user> sudo`
|
||||
|
||||
* Then create an `.ssh` folder for `<user>` in the home folder and create a file called `authorized_keys` as the public key on the local machine. Then copy the contents of the public key to the new file.
|
||||
|
||||
* Update the hostname.
|
||||
|
||||
`hostnamectl set-hostname enaga`
|
||||
|
||||
`vim /etc/hosts`
|
||||
|
||||
* [Install docker](https://docs.docker.com/engine/install/debian/#install-using-the-convenience-script)
|
||||
|
||||
* Allow docker to be run without sudo commands. (Log out and back in later)
|
||||
|
||||
`sudo gpasswd -a $USER docker`
|
||||
|
||||
* Install Nginx
|
||||
|
||||
`sudo apt-get update`
|
||||
|
||||
`sudo apt-get install nginx`
|
||||
|
||||
* Copy the nginx configuration file with `scp` to the server.
|
||||
|
||||
* Move the nginx configuration file to: `sites-available`.
|
||||
|
||||
`sudo mv matsubara.nl /etc/nginx/sites-available/matsubara.nl`
|
||||
|
||||
* Create a symbolic link to: `sites-enabled`.
|
||||
|
||||
`sudo ln -s /etc/nginx/sites-available/matsubara.nl matsubara.nl`
|
||||
|
||||
* Now the certificates need to be created, these are already used by the configuration file, so you cannot restart nginx at this moment. Run the related `docker` commands first to create the certificates. Make sure that the DNS points to the correct IP address before creating the certificates.
|
||||
|
||||
### Docker
|
||||
|
||||
To no longer require `sudo` for docker, use:
|
||||
|
||||
`sudo groupadd docker`
|
||||
|
||||
`sudo gpasswd -a $USER docker`
|
||||
|
||||
### Docker network
|
||||
|
||||
You can create a custom [network](https://docs.docker.com/reference/cli/docker/network/). Note that docker already has some default network called **bridge** that you can use. But note that DNS [host name resolving](https://forums.docker.com/t/cant-resolve-docker-container-names-have-to-use-docker-ip-address/138753) only works on custom networks.
|
||||
|
||||
* To list all networks:
|
||||
|
||||
`docker network ls`
|
||||
|
||||
* Create a custom network:
|
||||
|
||||
`docker network create -d bridge uguisu`
|
||||
|
||||
* To add an existing container to a network:
|
||||
|
||||
`docker network connect uguisu container-name`
|
||||
|
||||
* Or specify in the run command:
|
||||
|
||||
`docker run --network=uguisu`
|
||||
|
||||
* Inspect a network with:
|
||||
|
||||
`docker inspect uguisu`
|
||||
|
||||
* Inspect which networks are connected to a container:
|
||||
|
||||
`docker inspect container-name | grep "Network"`
|
||||
|
||||
### Postgres database
|
||||
|
||||
* Create a [postgres database container](https://hub.docker.com/_/postgres).
|
||||
|
||||
`docker run -d --name database -e POSTGRES_USER=gitea -e POSTGRES_PASSWORD=password -e POSTGRES_DB=gitea -v ./volume-postgres:/var/lib/postgresql/data postgres:17.4-bookworm`
|
||||
|
||||
* Import the database SQL export file. [Copy](https://docs.docker.com/reference/cli/docker/container/cp/) the backup file to the container and then run **psql** to import it.
|
||||
|
||||
`docker cp backup.sql database:/backup.sql`
|
||||
|
||||
`docker exec -it database bash`
|
||||
|
||||
`psql --username=gitea gitea < backup.sql`
|
||||
|
||||
### Website containers
|
||||
|
||||
`docker pull pa4kev/portfolio-reactjs-full`
|
||||
|
||||
if required, run certbot to set the certificates.
|
||||
|
||||
* First stop Nginx, as it is using port 80
|
||||
|
||||
``sudo systemctl stop nginx.service``
|
||||
|
||||
* Run this container, I doubt that i am understanding how it works properly though.
|
||||
|
||||
`docker run -it --rm -p 80:80 --name certbot -v "/etc/letsencrypt:/etc/letsencrypt" -v "/var/lib/letsencrypt:/var/lib/letsencrypt" certbot/certbot certonly --standalone --break-my-certs -d matsubara.nl -d www.matsubara.nl -d pa4kev.nl -d www.pa4kev.nl -d michelaben.nl -d www.michelaben.nl -d gitea.matsubara.nl`
|
||||
|
||||
`docker run -it --rm --name certbot --net webproxy -v $(pwd)/letsencrypt:/etc/letsencrypt -v $(pwd)/letsencrypt-lib:/var/lib/letsencrypt certbot/certbot certonly --standalone --preferred-challenges http -d matsubara.nl -d www.matsubara.nl -d pa4kev.nl -d www.pa4kev.nl -d michelaben.nl -d www.michelaben.nl -d gitea.matsubara.nl`
|
||||
|
||||
* Start Nginx again.
|
||||
|
||||
`sudo systemctl start nginx.service`
|
||||
|
||||
* Run the portfolio container.
|
||||
|
||||
`docker run -t -d --name react -p 8080:80 -v /var/www/html:/var/www/html pa4kev/portfolio-reactjs-full`
|
||||
|
||||
* `-t` foreground mode
|
||||
* `-d` detached mode
|
||||
|
||||
* Run the Gitea container.
|
||||
`docker run -d --name gitea -p 3000:3000 -p 222:22 -v ./gitea:/data -v /etc/timezone:/etc/timezone:ro -v /etc/localtime:/etc/localtime:ro gitea/gitea:1.22.6`
|
||||
|
||||
`docker run -it --rm --name certbot --net webproxy -v $(pwd)/letsencrypt:/etc/letsencrypt -v $(pwd)/letsencrypt-lib:/var/lib/letsencrypt certbot/certbot certonly --standalone --preferred-challenges http -d matsubara.nl -d www.matsubara.nl -d pa4kev.nl -d www.pa4kev.nl -d michelaben.nl -d www.michelaben.nl -d gitea.matsubara.nl`
|
||||
|
||||
## Nginx
|
||||
|
||||
`sudo vim /etc/nginx/sites-available/matsubara.nl`
|
||||
@ -42,17 +141,22 @@ if required, run certbot to set the certificates.
|
||||
|
||||
## Gitea
|
||||
|
||||
`docker run -d --name gitea -p 3000:3000 -p 222:22 -v ./gitea:/data -v /etc/timezone:/etc/timezone:ro -v /etc/localtime:/etc/localtime:ro gitea/gitea:1.22.6`
|
||||
* Run the [Gitea container](https://hub.docker.com/r/gitea/gitea).
|
||||
|
||||
`docker run -d --name gitea --network=uguisu -p 3000:3000 -p 222:22 -v ./gitea:/data -v /etc/timezone:/etc/timezone:ro -v /etc/localtime:/etc/localtime:ro gitea/gitea:1.23.5`
|
||||
|
||||
* Adjust settings for gitea.
|
||||
|
||||
`docker exec -it gitea bash`
|
||||
|
||||
`vi ./data/gitea/conf/app.ini`
|
||||
|
||||
* Applied this setting. See also: [Gitea config cheatsheet](https://docs.gitea.com/next/administration/config-cheat-sheet)
|
||||
|
||||
`DISABLE_REGISTRATION = true`
|
||||
|
||||
* Then restart the container.
|
||||
|
||||
`docker container restart gitea`
|
||||
|
||||
## React
|
||||
@ -87,7 +191,7 @@ List outdated packages: `npm outdated`
|
||||
|
||||
Update all dependancies: `npm update`
|
||||
|
||||
---
|
||||
## Elm
|
||||
|
||||
`elm init`
|
||||
|
||||
@ -114,17 +218,6 @@ You can now run for development:
|
||||
|
||||
`elm make src/Main.elm --output=index.js`
|
||||
|
||||
---
|
||||
|
||||
## Docker
|
||||
|
||||
To no longer require `sudo` for docker, use:
|
||||
|
||||
* `sudo groupadd docker`
|
||||
* `sudo gpasswd -a $USER docker`
|
||||
|
||||
---
|
||||
|
||||
## Documentation
|
||||
|
||||
[Create React App](https://github.com/facebook/create-react-app)
|
||||
@ -143,6 +236,8 @@ To no longer require `sudo` for docker, use:
|
||||
|
||||
[Docker hub - Nginx](https://hub.docker.com/_/nginx)
|
||||
|
||||
---
|
||||
|
||||
### Code Splitting
|
||||
|
||||
This section has moved here: [https://facebook.github.io/create-react-app/docs/code-splitting](https://facebook.github.io/create-react-app/docs/code-splitting)
|
||||
|
||||
@ -46,7 +46,7 @@ import EquipmentPage from './Pages/Radio/equipmentPage';
|
||||
import PlamoMain from './Pages/Plamo/PlamoMain'
|
||||
|
||||
import { languages, getLanguage } from './Language/Language';
|
||||
import { japaneseRoutes, plamoBlogRoutes, plamoEquipmentRoutes, programmingLanguageRoutes } from './Routers';
|
||||
import { japaneseRoutes, plamoBlogRoutes, plamoEquipmentRoutes, plamoShowcaseGundamRoutes, programmingLanguageRoutes } from './Routers';
|
||||
|
||||
function App() {
|
||||
const language = getLanguage();
|
||||
@ -131,6 +131,7 @@ function App() {
|
||||
{/* Plamo */}
|
||||
{plamoBlogRoutes}
|
||||
{plamoEquipmentRoutes}
|
||||
{plamoShowcaseGundamRoutes}
|
||||
|
||||
{/* Software */}
|
||||
{programmingLanguageRoutes}
|
||||
|
||||
39
src/Pages/Japan/Japanese/en/onomatopoeia.md
Normal file
39
src/Pages/Japan/Japanese/en/onomatopoeia.md
Normal file
@ -0,0 +1,39 @@
|
||||
### ざあざあ
|
||||
* Sound of rainfall
|
||||
|
||||
---
|
||||
|
||||
### 元々
|
||||
* Originally
|
||||
|
||||
---
|
||||
|
||||
### ヒヤヒヤ
|
||||
* Feeling nervous
|
||||
|
||||
### ノリノリ
|
||||
* Feeling of a good party
|
||||
|
||||
### ドキドキ
|
||||
* Feeling of heartbeat
|
||||
|
||||
### わざわざ
|
||||
Expresses action of going through a lot of effort.
|
||||
* <Jps colour="c1" text="わざわざ"/>くれてありがとう。
|
||||
|
||||
* <Jps colour="c1" text="わざわざ"/> お<Furigana kanji="越" kana="こ"/>し いただき ありがとうございました。
|
||||
* [お越し](https://jisho.org/search/%E3%81%8A%E8%B6%8A%E3%81%97)
|
||||
|
||||
* <Jps colour="c1" text="わざわざ"/><Furigana kanji="新幹線" kana="しんかんせん"/>でこっちの<Furigana kanji="方" kana="かた"/>に<Furigana kanji="来" kana="き"/>てくれます。
|
||||
|
||||
---
|
||||
|
||||
### ボコボコ
|
||||
|
||||
### ビリビリ
|
||||
|
||||
---
|
||||
|
||||
#### 関係するリンク
|
||||
|
||||
* [Tofugu - Japanese Onomatopoeia: The Definitive Guide](https://www.tofugu.com/japanese/japanese-onomatopoeia/)
|
||||
@ -1,7 +1,6 @@
|
||||
These pages contain my notes on learning the Japanese language and culture.
|
||||
|
||||
* [Wani Kani](https://www.wanikani.com/users/PA4KEV)
|
||||
* [Map of Japan](./japanMap)
|
||||
|
||||
---
|
||||
|
||||
@ -41,6 +40,7 @@ These pages contain my notes on learning the Japanese language and culture.
|
||||
|
||||
#### Other
|
||||
|
||||
* [Japanese onomatopoeia](./japanese/onomatopoeia)
|
||||
* [Japanese scale modelling tools](./japanese/japanese-tools)
|
||||
|
||||
---
|
||||
|
||||
@ -1,6 +1,3 @@
|
||||
Het land Japan en de Japanse taal hebben mij al jaren gefacineerd. Ik ben ook getrouwd met een Japanse. Om de taal vloeiend te kunnen beheersen, moet je elke dag oefenen. Geen uitzonderingen.
|
||||
|
||||
* [Wani Kani](https://www.wanikani.com/users/PA4KEV)
|
||||
|
||||
|
||||
* [Kaart van Japan](./japanMap)
|
||||
@ -4,6 +4,10 @@ Building and painting plastic scale models and mecha figures is one of my hobbie
|
||||
|
||||
---
|
||||
|
||||
### Showcase
|
||||
|
||||
 [Kawasaki Zaku](./showcase/gundam/kawasaki-zaku)
|
||||
|
||||
### Equipment
|
||||
|
||||
* [Airbrush booth](./equipment/airbrush-cabine)
|
||||
|
||||
@ -233,3 +233,36 @@ My friend told me it looks a bit like a hangar, here is a 1/144 Zaku II for scal
|
||||

|
||||
|
||||
Finally completed and inspired by the hangar remark, I decided to name my booth: ["White Base"](https://en.wikipedia.org/wiki/White_Base).
|
||||
|
||||
---
|
||||
|
||||
### Ventilation specifications
|
||||
|
||||
Trade mark: S-vent
|
||||
Model: SVTT150
|
||||
Specific energy consumption (SEC), kWh/(m².a):
|
||||
* cold: -53,9 A+
|
||||
* average: -26,8 B
|
||||
* warm: -11,3 E
|
||||
Type of ventilation unit: Unidirectional
|
||||
Type of drive installed: Variable speed
|
||||
Type of heat recovery system: None
|
||||
Thermal efficiency of heat recovery, %: None
|
||||
Maximum flow rate, m³/h: 400
|
||||
Electric power input, W: 60
|
||||
Sound power level, dB(A): 64
|
||||
Reference flow rate, m³/s: 0,086
|
||||
Reference pressure difference, Pa: 50
|
||||
Specific power input (SPI), W/(m³/h): 0,113
|
||||
Control typology: Local demand control
|
||||
Maximum internal leakage rates, %: N/A
|
||||
Maximum external leakage rates, %: 2,7
|
||||
Internet address: None
|
||||
The annual electricity consumption (AEC), kWh electricity/a:
|
||||
* cold: 60
|
||||
* average: 60
|
||||
* warm: 60
|
||||
The annual heating saved (AHS), kWh primary energy/a:
|
||||
* cold: 5536
|
||||
* average: 2830
|
||||
* warm: 1280
|
||||
|
||||
@ -233,3 +233,36 @@ Een vriend van me zei dat het een beetje op een hangar leek, hier is een 1/144 Z
|
||||

|
||||
|
||||
Nu dat alles compleet is en geïnspireerd door de hangar opmerking, besloot ik om mijn cabine de naam: ["White Base"](https://en.wikipedia.org/wiki/White_Base) te geven.
|
||||
|
||||
---
|
||||
|
||||
### Ventilator specificaties
|
||||
|
||||
Trade mark: S-vent
|
||||
Model: SVTT150
|
||||
Specific energy consumption (SEC), kWh/(m².a):
|
||||
* cold: -53,9 A+
|
||||
* average: -26,8 B
|
||||
* warm: -11,3 E
|
||||
Type of ventilation unit: Unidirectional
|
||||
Type of drive installed: Variable speed
|
||||
Type of heat recovery system: None
|
||||
Thermal efficiency of heat recovery, %: None
|
||||
Maximum flow rate, m³/h: 400
|
||||
Electric power input, W: 60
|
||||
Sound power level, dB(A): 64
|
||||
Reference flow rate, m³/s: 0,086
|
||||
Reference pressure difference, Pa: 50
|
||||
Specific power input (SPI), W/(m³/h): 0,113
|
||||
Control typology: Local demand control
|
||||
Maximum internal leakage rates, %: N/A
|
||||
Maximum external leakage rates, %: 2,7
|
||||
Internet address: None
|
||||
The annual electricity consumption (AEC), kWh electricity/a:
|
||||
* cold: 60
|
||||
* average: 60
|
||||
* warm: 60
|
||||
The annual heating saved (AHS), kWh primary energy/a:
|
||||
* cold: 5536
|
||||
* average: 2830
|
||||
* warm: 1280
|
||||
@ -4,6 +4,10 @@ Het bouwen en schilderen van plastic schaalmodellen en mecha figuren is een hobb
|
||||
|
||||
---
|
||||
|
||||
### Gebouwde kits
|
||||
|
||||
 [Kawasaki Zaku](./showcase/gundam/kawasaki-zaku)
|
||||
|
||||
### Gereedschappen
|
||||
|
||||
* [Airbrush cabine](./equipment/airbrush-cabine)
|
||||
|
||||
97
src/Pages/Plamo/showcase/gundam/en/kawasaki-zaku.md
Normal file
97
src/Pages/Plamo/showcase/gundam/en/kawasaki-zaku.md
Normal file
@ -0,0 +1,97 @@
|
||||
# Kawasaki Zaku II
|
||||
|
||||
My first completed model, a Bandai Zaku II.
|
||||
|
||||
Named after the army green colour, used for Second World War [Kawasaki airplanes](https://en.wikipedia.org/wiki/Kawasaki_Aerospace_Company).
|
||||
|
||||
Paints used:
|
||||
|
||||
* Primer: Mr. Surfacer 1000
|
||||
* Main colour: Mr. Color 130 - Kawasaki Green
|
||||
* Tubes: Mr. Color 60 - Gray
|
||||
* Torso, hands, knees: Tamiya LP-61 Metallic Gray
|
||||
* Rifle, thrusters: Mr. Color 28 Steel
|
||||
|
||||
---
|
||||
|
||||
2024-12-22
|
||||
|
||||

|
||||
|
||||
2025-03-20
|
||||
|
||||
I used sprue goo/glue and cut plastic [bread clips](https://en.wikipedia.org/wiki/Bread_clip) to close the seams and holes on the legs.
|
||||
|
||||

|
||||
|
||||
I also added some additional scribed lines to the arms, torso and spikes. Filled some empty parts of the skirt. The underside of the ammonition drum filled with bread clips and cut a hole in the backpack to place a mesh for some extra detail.
|
||||
|
||||

|
||||
|
||||
2025-03-21
|
||||
|
||||
All parts ready and primed with Mr. Surfacer 1000.
|
||||
|
||||

|
||||
|
||||
2025-04-02
|
||||
|
||||
Parts airbrushed with lacquer colours.
|
||||
|
||||

|
||||
|
||||
2025-04-11
|
||||
|
||||
Masking tape used to cover parts when airbrushing. By closing the outer plates with sprue glue, I had no way to separate these leg parts anymore. But Tamiya masking tape works well here.
|
||||
|
||||

|
||||
|
||||
2025-04-14
|
||||
|
||||
The front and back view of the Zaku II figure, with some decals applied.
|
||||
|
||||
I added a little plastic pink diamond for its mono-eye, which will be revealed later.
|
||||
|
||||

|
||||
|
||||
Applied a little weathering with oil paint and mixing medium for some greasy streaks. It takes several layers and the oil paint dries slowly.
|
||||
|
||||

|
||||
|
||||
2025-04-23
|
||||
|
||||
With the kit finished, I wanted to try and build a base for it.
|
||||
|
||||

|
||||
|
||||
2025-04-29
|
||||
|
||||

|
||||
|
||||
2025-05-01
|
||||
|
||||
The tree is a 1/150 scale (N-Gauge for trains) Kuromatsu tree, made by Tomytec.
|
||||
|
||||

|
||||
|
||||
2025-05-02
|
||||
|
||||
One day later, the figure is displayed at AnimeCon 2025. As you can see, there is frosting on the asphalt base, caused by improper use of varnish. The Zaku itself also has gotten a layer of orange peel looking coating.
|
||||
|
||||

|
||||
|
||||
I was there as part of the SIG Plamo (Special Interest Group Plastic Models) group! Can you find the Kawasaki Zaku among these amazing models and figures made by the group?
|
||||
|
||||

|
||||
|
||||
Here are some final photographs of the completed figure, already gathering some dust.
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
This round decal is an image of the [131 squadron](https://www.defensie.nl/onderwerpen/emblemen/emblemen-koninklijke-luchtmacht/131-squadron) of the Royal Dutch Airforce.
|
||||
|
||||

|
||||
|
||||

|
||||
97
src/Pages/Plamo/showcase/gundam/nl/kawasaki-zaku.md
Normal file
97
src/Pages/Plamo/showcase/gundam/nl/kawasaki-zaku.md
Normal file
@ -0,0 +1,97 @@
|
||||
# Kawasaki Zaku II
|
||||
|
||||
Mijn eerste complete figuur, een Bandai Zaku II.
|
||||
|
||||
Vernoemd naar de groene kleur, die vooral voor Tweede Wereld oorlog [Kawasaki vliegtuigen](https://en.wikipedia.org/wiki/Kawasaki_Aerospace_Company) gebruikt wordt.
|
||||
|
||||
Gebruikte verf:
|
||||
|
||||
* Onderlaag: Mr. Surfacer 1000
|
||||
* Hoofdkleur: Mr. Color 130 - Kawasaki Green
|
||||
* Buizen: Mr. Color 60 - Gray
|
||||
* Torso, handen, knieën: Tamiya LP-61 Metallic Gray
|
||||
* Geweer, stuwmotoren: Mr. Color 28 Steel
|
||||
|
||||
---
|
||||
|
||||
2024-12-22
|
||||
|
||||

|
||||
|
||||
2025-03-20
|
||||
|
||||
Ik heb sprue goo/glue en plastic [broodclipjes](https://nl.wikipedia.org/wiki/Broodclipje) gebruikt om de naden en gaten te dichten van het plaatwerk op de benen.
|
||||
|
||||

|
||||
|
||||
Daarna heb ik details toegevoeged door lijnen te graveren op de armen, torso en de pinnen op de schouders. Enkele gaten van de rok gedicht. De onderkant van munitie drum gevuld met broodclipjes en een gat in de rugzak gemaakt om te vullen met een gaasje.
|
||||
|
||||

|
||||
|
||||
2025-03-21
|
||||
|
||||
Alle onderdelen klaar en een onderlaag gegeven met Mr. Surfacer 1000.
|
||||
|
||||

|
||||
|
||||
2025-04-02
|
||||
|
||||
Onderdelen geairbrusht met lak kleuren.
|
||||
|
||||

|
||||
|
||||
2025-04-11
|
||||
|
||||
Omdat ik de benen heb dicht gemaakt, kon ik ze niet meer uit elkaar halen. Dus met wat Tamiya maskeertape afgeplakt om andere delen te kunnen spuiten.
|
||||
|
||||

|
||||
|
||||
2025-04-14
|
||||
|
||||
De voor- en achterkant van de Zaku II, met enkele decals.
|
||||
|
||||
Ik heb een klein plastic diamantje gebruikt voon de mono-eye, die later zichtbaar zal zijn.
|
||||
|
||||

|
||||
|
||||
Ik heb een beetje verwering toegebracht met wat olieverf, gemengd met mixing medium om wat olie-achtige strepen te zetten. Er zijn enkele laagjes nodig en deze verf droogt langzaam.
|
||||
|
||||

|
||||
|
||||
2025-04-23
|
||||
|
||||
Nu dat de kit af is, wou ik proberen of ik er een voetstukje voor kon maken.
|
||||
|
||||

|
||||
|
||||
2025-04-29
|
||||
|
||||

|
||||
|
||||
2025-05-01
|
||||
|
||||
Het boompje is een 1/150 schaal (N-Schaal voor treinen) Kuromatsu boom, gemaakt door Tomytec.
|
||||
|
||||

|
||||
|
||||
2025-05-02
|
||||
|
||||
Een dag later, staat het figuur bij AnimeCon 2025. Zoals je ziet, is er een laagje frosting of het asfalt gekomen. Dit kwan doordat ik het vernis uit de spuitbus niet op de juiste temperatuur heb gebruikt. Ook de Zaku zelf heeft een laagje "orange peel" gekregen hierdoor.
|
||||
|
||||

|
||||
|
||||
Ik was hier als lid van de SIG Plamo (Special Interest Group Plastic Models) groep! Kun jij de Kawasaki Zaku vinden tussen deze gave modellen en figuren gemaakt door de groep?
|
||||
|
||||

|
||||
|
||||
Hier zijn nog wat laastse fotos van het complete figuur, nu al met een laagje stof.
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
Deze ronde decal is het symbool van de [131 squadron](https://www.defensie.nl/onderwerpen/emblemen/emblemen-koninklijke-luchtmacht/131-squadron) van de Nedelandse Koninklijke Luchtmacht.
|
||||
|
||||

|
||||
|
||||

|
||||
@ -1,5 +1,27 @@
|
||||
{
|
||||
"courses": [
|
||||
{
|
||||
"name": "Blazor Deep Dive",
|
||||
"sub": "From beginner to advanced in .NET 8",
|
||||
"instructor": "Frank Liu",
|
||||
"achieveDate": "2025-04-18",
|
||||
"duration": 14.5,
|
||||
"institution": "Udemy",
|
||||
"link": "https://www.udemy.com/course/responsive-web-design-tutorial-course-html5-css3-bootstrap/",
|
||||
"certificate": "https://www.udemy.com/certificate/UC-8b73ec23-4187-4ec2-9b0c-6b1c9e109220/",
|
||||
"skills": ".NET, Blazor"
|
||||
},
|
||||
{
|
||||
"name": "Entity Framework Core",
|
||||
"sub": "A full tour",
|
||||
"instructor": "Trevoir Williams",
|
||||
"achieveDate": "2025-04-14",
|
||||
"duration": 10.5,
|
||||
"institution": "Udemy",
|
||||
"link": "https://www.udemy.com/course/responsive-web-design-tutorial-course-html5-css3-bootstrap/",
|
||||
"certificate": "https://www.udemy.com/certificate/UC-0c891709-9105-498c-b9db-f7b2eef2b83a/",
|
||||
"skills": ".NET, Entity Framework"
|
||||
},
|
||||
{
|
||||
"name": "Responsive Web Design Essentials",
|
||||
"sub": "HTML5 CSS3 Bootstrap",
|
||||
|
||||
@ -18,4 +18,5 @@ factorial 3
|
||||
3 * (2 * factorial 1)
|
||||
3 * (2 * (1 * factorial 0))
|
||||
3 * (2 * (1 * 1))
|
||||
```
|
||||
```
|
||||
|
||||
|
||||
@ -17,4 +17,4 @@ My interests are:
|
||||
* Woodworking
|
||||
* Yoga
|
||||
|
||||
I am based in Helmond, the Netherlands.
|
||||
I live in Helmond, the Netherlands.
|
||||
@ -3,13 +3,13 @@ import { Route } from 'react-router-dom';
|
||||
import { languages } from './Language/Language';
|
||||
import JapanesePage from './Pages/Japan/JapanesePage';
|
||||
import BlogPage from './Pages/Plamo/BlogPage';
|
||||
import CSharpPage from './Pages/Software/csharp/CSharpPage';
|
||||
import CSharpPage from './Pages/Software/dotnet/csharp/CSharpPage';
|
||||
import ElmPage from './Pages/Software/elm/ElmPage';
|
||||
import HaskellPage from './Pages/Software/haskell/HaskellPage';
|
||||
|
||||
// Japan
|
||||
export const japaneseRoutes = languages.map(lang => {
|
||||
const pages = ['but', 'cheat-sheet', 'contrast-particle', 'dake-vs-shika', 'expressions', 'if-when', 'japanese-scale-modelling-tools', 'mae-ni-ato-de', 'particles', 'rashii-kamoshirenai-darou', 'tameni-youni-noni', 'te-form', 'te-oku', 'toka-tari-shi', 'verbs'];
|
||||
const pages = ['but', 'cheat-sheet', 'contrast-particle', 'dake-vs-shika', 'expressions', 'if-when', 'japanese-scale-modelling-tools', 'mae-ni-ato-de', 'onomatopoeia', 'particles', 'rashii-kamoshirenai-darou', 'tameni-youni-noni', 'te-form', 'te-oku', 'toka-tari-shi', 'verbs'];
|
||||
return pages.map(page => {
|
||||
const path = `/${lang}/japan/japanese/${page}`;
|
||||
const mdPath = `Japan/Japanese/${lang}/${page}.md`;
|
||||
@ -34,6 +34,14 @@ export const plamoEquipmentRoutes = languages.map(lang => {
|
||||
return <Route key={`${lang}-${page}`} exact path={path} element={<BlogPage mdPath={mdPath} />} />;
|
||||
});
|
||||
}).flat();
|
||||
export const plamoShowcaseGundamRoutes = languages.map(lang => {
|
||||
const pages = ['kawasaki-zaku'];
|
||||
return pages.map(page => {
|
||||
const path = `/${lang}/plamo/showcase/gundam/${page}`;
|
||||
const mdPath = `Plamo/showcase/gundam/${lang}/${page}.md`;
|
||||
return <Route key={`${lang}-${page}`} exact path={path} element={<BlogPage mdPath={mdPath} />} />;
|
||||
});
|
||||
}).flat();
|
||||
|
||||
// Software
|
||||
export const programmingLanguageRoutes = languages.map(lang => {
|
||||
@ -59,7 +67,17 @@ export const programmingLanguageRoutes = languages.map(lang => {
|
||||
});
|
||||
|
||||
// Pages within Haskell.
|
||||
md = ['curried-functions'];
|
||||
md = [
|
||||
'caesar-cipher',
|
||||
'conditional-expressions-and-guarded-equations',
|
||||
'curried-functions',
|
||||
'graham-hutton-answers',
|
||||
'lambda-expressions',
|
||||
'lists',
|
||||
'recursive-functions',
|
||||
'strings',
|
||||
'pattern-matching',
|
||||
];
|
||||
const entriesHaskell = md.map(entry => {
|
||||
const path = `/${lang}/software/haskell/${entry}`;
|
||||
const mdPath = `Software/haskell/${lang}/${entry}.md`;
|
||||
|
||||
@ -10,7 +10,7 @@ const Footer = () => {
|
||||
return (
|
||||
<footer className={`bg-${theme} text-center text-lg-start text-${theme}`}>
|
||||
<div className="container-fluid">
|
||||
<span className="small">{getString('footer_madewith')}: <a className={`link-${theme}`} href="https://reactjs.org/" target="_blank" rel="noopener noreferrer">React</a>, <a className={`link-${theme}`} href="https://fsharp.org/" target="_blank" rel="noopener noreferrer">F#</a>, <a className={`link-${theme}`} href="https://github.com/giraffe-fsharp/Giraffe" target="_blank" rel="noopener noreferrer">Giraffe</a>, <a className={`link-${theme}`} href="https://getbootstrap.com/" target="_blank" rel="noopener noreferrer">Bootstrap</a>, <a className={`link-${theme}`} href="https://www.nginx.com/" target="_blank" rel="noopener noreferrer">Nginx</a> {getString('and')} <a className={`link-${theme}`} href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> {getString('on')} <a className={`link-${theme}`} href="https://www.digitalocean.com/" target="_blank" rel="noopener noreferrer">DigitalOcean</a> cloud droplets.</span>
|
||||
<span className="small">{getString('footer_madewith')}: <a className={`link-${theme}`} href="https://reactjs.org/" target="_blank" rel="noopener noreferrer">React</a>, <a className={`link-${theme}`} href="https://fsharp.org/" target="_blank" rel="noopener noreferrer">F#</a>, <a className={`link-${theme}`} href="https://github.com/giraffe-fsharp/Giraffe" target="_blank" rel="noopener noreferrer">Giraffe</a>, <a className={`link-${theme}`} href="https://getbootstrap.com/" target="_blank" rel="noopener noreferrer">Bootstrap</a>, <a className={`link-${theme}`} href="https://www.nginx.com/" target="_blank" rel="noopener noreferrer">Nginx</a> {getString('and')} <a className={`link-${theme}`} href="https://www.docker.com/" target="_blank" rel="noopener noreferrer">Docker</a> {getString('on')} <a className={`link-${theme}`} href="https://www.strato.nl/server/vps-linux/" target="_blank" rel="noopener noreferrer">Strato</a> VPS.</span>
|
||||
<br />
|
||||
<span className="small">{getString('footer_contentparsed')}: <a className={`link-${theme}`} href="https://github.com/quantizor/markdown-to-jsx" target="_blank" rel="noopener noreferrer">markdown-to-jsx</a></span>
|
||||
<br /><br />
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user