diff --git a/Dockerfile b/Dockerfile
deleted file mode 100644
index fe72ad4..0000000
--- a/Dockerfile
+++ /dev/null
@@ -1,3 +0,0 @@
-FROM jekyll/jekyll:3.8
-
-ENV TZ="Europe/Paris"
diff --git a/Gemfile b/Gemfile
deleted file mode 100644
index 4482888..0000000
--- a/Gemfile
+++ /dev/null
@@ -1,36 +0,0 @@
-source "https://rubygems.org"
-
-# Hello! This is where you manage which Jekyll version is used to run.
-# When you want to use a different version, change it below, save the
-# file and run `bundle install`. Run Jekyll with `bundle exec`, like so:
-#
-# bundle exec jekyll serve
-#
-# This will help ensure the proper Jekyll version is running.
-# Happy Jekylling!
-#gem "jekyll", "~> 3.9"
-gem "github-pages", "~> 231", group: :jekyll_plugins
-
-# This is the default theme for new Jekyll sites. You may change this to anything you like.
-gem "minima", "~> 2.5"
-
-gem "kramdown-parser-gfm", "~> 1.1"
-
-# If you want to use GitHub Pages, remove the "gem "jekyll"" above and
-# uncomment the line below. To upgrade, run `bundle update github-pages`.
-# gem "github-pages", group: :jekyll_plugins
-
-# If you have any plugins, put them here!
-group :jekyll_plugins do
- gem "jekyll-feed", "~> 0.15"
-end
-
-# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
-gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
-
-# To avoid polling for changes
-gem 'wdm', '>= 0.1.1' if Gem.win_platform?
-
-if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('3.0.0')
- gem "webrick", "~> 1.7"
-end
diff --git a/Gemfile.lock b/Gemfile.lock
deleted file mode 100644
index f605892..0000000
--- a/Gemfile.lock
+++ /dev/null
@@ -1,269 +0,0 @@
-GEM
- remote: https://rubygems.org/
- specs:
- activesupport (6.1.7.8)
- concurrent-ruby (~> 1.0, >= 1.0.2)
- i18n (>= 1.6, < 2)
- minitest (>= 5.1)
- tzinfo (~> 2.0)
- zeitwerk (~> 2.3)
- addressable (2.8.7)
- public_suffix (>= 2.0.2, < 7.0)
- base64 (0.2.0)
- coffee-script (2.4.1)
- coffee-script-source
- execjs
- coffee-script-source (1.12.2)
- colorator (1.1.0)
- commonmarker (0.23.10)
- concurrent-ruby (1.3.4)
- dnsruby (1.72.2)
- simpleidn (~> 0.2.1)
- em-websocket (0.5.3)
- eventmachine (>= 0.12.9)
- http_parser.rb (~> 0)
- ethon (0.16.0)
- ffi (>= 1.15.0)
- eventmachine (1.2.7)
- execjs (2.9.1)
- faraday (2.8.1)
- base64
- faraday-net_http (>= 2.0, < 3.1)
- ruby2_keywords (>= 0.0.4)
- faraday-net_http (3.0.2)
- ffi (1.16.3)
- forwardable-extended (2.6.0)
- gemoji (4.1.0)
- github-pages (231)
- github-pages-health-check (= 1.18.2)
- jekyll (= 3.9.5)
- jekyll-avatar (= 0.8.0)
- jekyll-coffeescript (= 1.2.2)
- jekyll-commonmark-ghpages (= 0.4.0)
- jekyll-default-layout (= 0.1.5)
- jekyll-feed (= 0.17.0)
- jekyll-gist (= 1.5.0)
- jekyll-github-metadata (= 2.16.1)
- jekyll-include-cache (= 0.2.1)
- jekyll-mentions (= 1.6.0)
- jekyll-optional-front-matter (= 0.3.2)
- jekyll-paginate (= 1.1.0)
- jekyll-readme-index (= 0.3.0)
- jekyll-redirect-from (= 0.16.0)
- jekyll-relative-links (= 0.6.1)
- jekyll-remote-theme (= 0.4.3)
- jekyll-sass-converter (= 1.5.2)
- jekyll-seo-tag (= 2.8.0)
- jekyll-sitemap (= 1.4.0)
- jekyll-swiss (= 1.0.0)
- jekyll-theme-architect (= 0.2.0)
- jekyll-theme-cayman (= 0.2.0)
- jekyll-theme-dinky (= 0.2.0)
- jekyll-theme-hacker (= 0.2.0)
- jekyll-theme-leap-day (= 0.2.0)
- jekyll-theme-merlot (= 0.2.0)
- jekyll-theme-midnight (= 0.2.0)
- jekyll-theme-minimal (= 0.2.0)
- jekyll-theme-modernist (= 0.2.0)
- jekyll-theme-primer (= 0.6.0)
- jekyll-theme-slate (= 0.2.0)
- jekyll-theme-tactile (= 0.2.0)
- jekyll-theme-time-machine (= 0.2.0)
- jekyll-titles-from-headings (= 0.5.3)
- jemoji (= 0.13.0)
- kramdown (= 2.4.0)
- kramdown-parser-gfm (= 1.1.0)
- liquid (= 4.0.4)
- mercenary (~> 0.3)
- minima (= 2.5.1)
- nokogiri (>= 1.13.6, < 2.0)
- rouge (= 3.30.0)
- terminal-table (~> 1.4)
- github-pages-health-check (1.18.2)
- addressable (~> 2.3)
- dnsruby (~> 1.60)
- octokit (>= 4, < 8)
- public_suffix (>= 3.0, < 6.0)
- typhoeus (~> 1.3)
- html-pipeline (2.14.3)
- activesupport (>= 2)
- nokogiri (>= 1.4)
- http_parser.rb (0.8.0)
- i18n (1.14.5)
- concurrent-ruby (~> 1.0)
- jekyll (3.9.5)
- addressable (~> 2.4)
- colorator (~> 1.0)
- em-websocket (~> 0.5)
- i18n (>= 0.7, < 2)
- jekyll-sass-converter (~> 1.0)
- jekyll-watch (~> 2.0)
- kramdown (>= 1.17, < 3)
- liquid (~> 4.0)
- mercenary (~> 0.3.3)
- pathutil (~> 0.9)
- rouge (>= 1.7, < 4)
- safe_yaml (~> 1.0)
- jekyll-avatar (0.8.0)
- jekyll (>= 3.0, < 5.0)
- jekyll-coffeescript (1.2.2)
- coffee-script (~> 2.2)
- coffee-script-source (~> 1.12)
- jekyll-commonmark (1.4.0)
- commonmarker (~> 0.22)
- jekyll-commonmark-ghpages (0.4.0)
- commonmarker (~> 0.23.7)
- jekyll (~> 3.9.0)
- jekyll-commonmark (~> 1.4.0)
- rouge (>= 2.0, < 5.0)
- jekyll-default-layout (0.1.5)
- jekyll (>= 3.0, < 5.0)
- jekyll-feed (0.17.0)
- jekyll (>= 3.7, < 5.0)
- jekyll-gist (1.5.0)
- octokit (~> 4.2)
- jekyll-github-metadata (2.16.1)
- jekyll (>= 3.4, < 5.0)
- octokit (>= 4, < 7, != 4.4.0)
- jekyll-include-cache (0.2.1)
- jekyll (>= 3.7, < 5.0)
- jekyll-mentions (1.6.0)
- html-pipeline (~> 2.3)
- jekyll (>= 3.7, < 5.0)
- jekyll-optional-front-matter (0.3.2)
- jekyll (>= 3.0, < 5.0)
- jekyll-paginate (1.1.0)
- jekyll-readme-index (0.3.0)
- jekyll (>= 3.0, < 5.0)
- jekyll-redirect-from (0.16.0)
- jekyll (>= 3.3, < 5.0)
- jekyll-relative-links (0.6.1)
- jekyll (>= 3.3, < 5.0)
- jekyll-remote-theme (0.4.3)
- addressable (~> 2.0)
- jekyll (>= 3.5, < 5.0)
- jekyll-sass-converter (>= 1.0, <= 3.0.0, != 2.0.0)
- rubyzip (>= 1.3.0, < 3.0)
- jekyll-sass-converter (1.5.2)
- sass (~> 3.4)
- jekyll-seo-tag (2.8.0)
- jekyll (>= 3.8, < 5.0)
- jekyll-sitemap (1.4.0)
- jekyll (>= 3.7, < 5.0)
- jekyll-swiss (1.0.0)
- jekyll-theme-architect (0.2.0)
- jekyll (> 3.5, < 5.0)
- jekyll-seo-tag (~> 2.0)
- jekyll-theme-cayman (0.2.0)
- jekyll (> 3.5, < 5.0)
- jekyll-seo-tag (~> 2.0)
- jekyll-theme-dinky (0.2.0)
- jekyll (> 3.5, < 5.0)
- jekyll-seo-tag (~> 2.0)
- jekyll-theme-hacker (0.2.0)
- jekyll (> 3.5, < 5.0)
- jekyll-seo-tag (~> 2.0)
- jekyll-theme-leap-day (0.2.0)
- jekyll (> 3.5, < 5.0)
- jekyll-seo-tag (~> 2.0)
- jekyll-theme-merlot (0.2.0)
- jekyll (> 3.5, < 5.0)
- jekyll-seo-tag (~> 2.0)
- jekyll-theme-midnight (0.2.0)
- jekyll (> 3.5, < 5.0)
- jekyll-seo-tag (~> 2.0)
- jekyll-theme-minimal (0.2.0)
- jekyll (> 3.5, < 5.0)
- jekyll-seo-tag (~> 2.0)
- jekyll-theme-modernist (0.2.0)
- jekyll (> 3.5, < 5.0)
- jekyll-seo-tag (~> 2.0)
- jekyll-theme-primer (0.6.0)
- jekyll (> 3.5, < 5.0)
- jekyll-github-metadata (~> 2.9)
- jekyll-seo-tag (~> 2.0)
- jekyll-theme-slate (0.2.0)
- jekyll (> 3.5, < 5.0)
- jekyll-seo-tag (~> 2.0)
- jekyll-theme-tactile (0.2.0)
- jekyll (> 3.5, < 5.0)
- jekyll-seo-tag (~> 2.0)
- jekyll-theme-time-machine (0.2.0)
- jekyll (> 3.5, < 5.0)
- jekyll-seo-tag (~> 2.0)
- jekyll-titles-from-headings (0.5.3)
- jekyll (>= 3.3, < 5.0)
- jekyll-watch (2.2.1)
- listen (~> 3.0)
- jemoji (0.13.0)
- gemoji (>= 3, < 5)
- html-pipeline (~> 2.2)
- jekyll (>= 3.0, < 5.0)
- kramdown (2.4.0)
- rexml
- kramdown-parser-gfm (1.1.0)
- kramdown (~> 2.0)
- liquid (4.0.4)
- listen (3.9.0)
- rb-fsevent (~> 0.10, >= 0.10.3)
- rb-inotify (~> 0.9, >= 0.9.10)
- mercenary (0.3.6)
- mini_portile2 (2.8.9)
- minima (2.5.1)
- jekyll (>= 3.5, < 5.0)
- jekyll-feed (~> 0.9)
- jekyll-seo-tag (~> 2.1)
- minitest (5.25.1)
- nokogiri (1.18.9)
- mini_portile2 (~> 2.8.2)
- racc (~> 1.4)
- nokogiri (1.18.9-x86_64-linux-gnu)
- racc (~> 1.4)
- octokit (4.25.1)
- faraday (>= 1, < 3)
- sawyer (~> 0.9)
- pathutil (0.16.2)
- forwardable-extended (~> 2.6)
- public_suffix (5.1.1)
- racc (1.8.1)
- rb-fsevent (0.11.2)
- rb-inotify (0.11.1)
- ffi (~> 1.0)
- rexml (3.3.9)
- rouge (3.30.0)
- ruby2_keywords (0.0.5)
- rubyzip (2.3.2)
- safe_yaml (1.0.5)
- sass (3.7.4)
- sass-listen (~> 4.0.0)
- sass-listen (4.0.0)
- rb-fsevent (~> 0.9, >= 0.9.4)
- rb-inotify (~> 0.9, >= 0.9.7)
- sawyer (0.9.2)
- addressable (>= 2.3.5)
- faraday (>= 0.17.3, < 3)
- simpleidn (0.2.3)
- terminal-table (1.8.0)
- unicode-display_width (~> 1.1, >= 1.1.1)
- typhoeus (1.4.1)
- ethon (>= 0.9.0)
- tzinfo (2.0.6)
- concurrent-ruby (~> 1.0)
- unicode-display_width (1.8.0)
- webrick (1.8.2)
- zeitwerk (2.6.18)
-
-PLATFORMS
- ruby
- x86_64-linux
-
-DEPENDENCIES
- github-pages (~> 231)
- jekyll-feed (~> 0.15)
- kramdown-parser-gfm (~> 1.1)
- minima (~> 2.5)
- tzinfo-data
- webrick (~> 1.7)
-
-BUNDLED WITH
- 2.0.2
diff --git a/LICENSE b/LICENSE
index 0ad25db..34e54fe 100644
--- a/LICENSE
+++ b/LICENSE
@@ -629,8 +629,8 @@ to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
-
- Copyright (C)
+ Orbitale Blog
+ Copyright (C) 2015 Pierstoval
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
diff --git a/Makefile b/Makefile
deleted file mode 100644
index 7a9c2ca..0000000
--- a/Makefile
+++ /dev/null
@@ -1,36 +0,0 @@
-##Available commands:
-
-##
-## Default
-## -------
-##
-
-.DEFAULT_GOAL := help
-help: ## Show this help message
- @grep -E '(^[a-zA-Z_-]+:.*?##.*$$)|(^##)' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[32m%-15s\033[0m %s\n", $$1, $$2}' | sed -e 's/\[32m##/[33m/'
-.PHONY: help
-
-##
-## Project
-## -------
-##
-
-install: ## Install dependencies
- docker-compose run --rm jekyll bundle install
- chmod a+x vendor/bundle/bin/*
- $(MAKE) start
-
-start: ## Start the project
- docker-compose up -d
-
-stop: ## Stop the project
- docker-compose down
-
-restart: stop start ## Restart the project
-
-build: ## Build the website
- docker-compose exec jekyll jekyll build
-
-
-new: start ## Create a new blog post
- docker-compose exec jekyll entrypoint ruby generate_page.rb
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..75842c4
--- /dev/null
+++ b/README.md
@@ -0,0 +1,38 @@
+# sv
+
+Everything you need to build a Svelte project, powered by [`sv`](https://github.com/sveltejs/cli).
+
+## Creating a project
+
+If you're seeing this, you've probably already done this step. Congrats!
+
+```sh
+# create a new project in the current directory
+npx sv create
+
+# create a new project in my-app
+npx sv create my-app
+```
+
+## Developing
+
+Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server:
+
+```sh
+npm run dev
+
+# or start the server and open the app in a new browser tab
+npm run dev -- --open
+```
+
+## Building
+
+To create a production version of your app:
+
+```sh
+npm run build
+```
+
+You can preview the production build with `npm run preview`.
+
+> To deploy your app, you may need to install an [adapter](https://svelte.dev/docs/kit/adapters) for your target environment.
diff --git a/_config.yml b/_config.yml
deleted file mode 100644
index 5113fab..0000000
--- a/_config.yml
+++ /dev/null
@@ -1,54 +0,0 @@
-# Welcome to Jekyll!
-#
-# This config file is meant for settings that affect your whole blog, values
-# which you are expected to set up once and rarely edit after that. If you find
-# yourself editing this file very often, consider using Jekyll's data files
-# feature for the data you need to update frequently.
-#
-# For technical reasons, this file is *NOT* reloaded automatically when you use
-# 'bundle exec jekyll serve'. If you change this file, please restart the server process.
-
-# Site settings
-# These are used to personalize your new site. If you look in the HTML files,
-# you will see them accessed via {{ site.title }}, {{ site.email }}, and so on.
-# You can create any custom variable you would like, and they will be accessible
-# in the templates via {{ site.myvariable }}.
-title: Orbitale.tech
-#email: alex@orbitale.tech
-description: >
- It's just me trying to find useful things to do for the world of programming, expecially for the web.
-baseurl: ""
-url: "http://www.orbitale.tech"
-twitter_username: pierstoval
-github_username: pierstoval
-
-author: Alex Rock
-
-# Build settings
-markdown: kramdown
-theme: minima
-plugins:
- - jekyll-feed
-
-google_analytics: UA-43812649-3
-
-feed:
- path: feed.xml
-
-defaults:
- - scope:
- path: 'img/'
- values:
- images: true
-
-# Exclude from processing.
-# The following items will not be processed, by default. Create a custom list
-# to override the default setting.
-# exclude:
-# - Gemfile
-# - Gemfile.lock
-# - node_modules
-# - vendor/bundle/
-# - vendor/cache/
-# - vendor/gems/
-# - vendor/ruby/
diff --git a/_data/languages.yml b/_data/languages.yml
deleted file mode 100644
index c8033ff..0000000
--- a/_data/languages.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-en:
- label: English
- icon: 🇺🇸
-fr:
- label: Français
- icon: 🇫🇷
diff --git a/_data/translations.yml b/_data/translations.yml
deleted file mode 100644
index dab28d2..0000000
--- a/_data/translations.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-differentPostLanguage:
- en: "Read this post in a different language"
- fr: "Voir cette article dans une autre langue"
-
-differentLanguage:
- en: "Read this page in a different language"
- fr: "Voir cette page dans une autre langue"
diff --git a/_disabled_posts/2018-11-09-open-source-creativity-and-community-not-a-technical-post.md b/_disabled_posts/2018-11-09-open-source-creativity-and-community-not-a-technical-post.md
deleted file mode 100644
index 13e8f45..0000000
--- a/_disabled_posts/2018-11-09-open-source-creativity-and-community-not-a-technical-post.md
+++ /dev/null
@@ -1,42 +0,0 @@
----
-layout: post
-title: 'Open-source, creativity and community (not a technical post)'
-date: 2018-11-09 22:05:47 +0100
----
-
-What I tend to do, most of the time, is to help people, help the world being better, as much as I can. As an optimistic man, I'd say that it's not pointless to hope that the world is going to be a better place one day. After all, dreamers have always existed, and John Lennon sang it a few decades ago.
-
-What's the point of this post? It's in the complete middle of a technical blog, and potentially has no place in here.
-
-Or does it?
-
-I've been working in tech with my mental disorders as a burden for years, and it's still hard for me to keep going "well", so this is why I'm writing this today.
-
-To sum up: I need to work less, and be more creative, and I want to continue to help people.
-
-This needs time. And I've been told many times that open-source doesn't pay and nobody wants to pay for open-source.
-
-Do you think open-source and free activities would pay?
-
-That's a question I've been asking myself for years, and I discovered creators like [Veritasium](https://www.youtube.com/channel/UCHnyfMqiRRG1u-2MsSQLbXA), [The Coding Train](https://www.youtube.com/channel/UCvjgXvBlbQiydffZU7m1_aw), [Vsauce](https://www.youtube.com/channel/UC6nSFpj9HTCZ5t-N3Rm3-HA), and tons of others that I won't quote here because I'm not sure I would remember all of them (and I could also list the channels I follow on Youtube).
-
-All these awesome creators are making what makes me vibe: they share knowledge and science. I also follow tons of creators that just create art (music, illustrations, etc.).
-
-They all do what makes the world a better place.
-
-Banks, triple-A companies, GAFAM or most start-ups rule the world, but they don't really contribute to making everything better. It's just my opinion.
-
-Therefore, I want to create things too. I'm starting a therapy to help myself find more time to create and contribute.
-
-For this, I will create a Youtube channel soon and I will try to buy some tools to record myself.
-
-Amongst the activities I will try to share, there will be:
-
-* Code (of course, I'm a coder, and this is my main field of activity).
-* Some thoughts about some random subjects (like things I read in books for example).
-* I'll try to compose music (I ordered instruments and they'll come in a few weeks, so when I'll find time to teach myself how to record, I will share the work).
-* I like drawing but I'm no expert at all, and I wish I could practice to get skills, so I will make some drawings timelapses or samples, and put them online, sometimes.
-
-To promote this, I created a Patreon page: https://www.patreon.com/pierstoval
-
-Thanks for reading!
diff --git a/_includes/head.html b/_includes/head.html
deleted file mode 100644
index 5f7ba27..0000000
--- a/_includes/head.html
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
- {%- seo -%}
-
- {%- feed_meta -%}
- {%- if jekyll.environment == 'production' and site.google_analytics -%}
- {%- include google-analytics.html -%}
- {%- endif -%}
-
- {%- if page.layout != 'home' -%}
- {%- assign posts=site.posts | where:"lang-ref", page.lang-ref | sort: 'lang' -%}
- {%- if posts.size == 0 -%}
- {%- assign posts=site.pages | where:"lang-ref", page.lang-ref | sort: 'lang' -%}
- {%- endif -%}
- {%- if posts.size > 1 -%}
- {%- for post in posts -%}
- {%- if post.lang != page.lang -%}
-
- {%- endif -%}
- {%- endfor -%}
- {%- endif -%}
- {%- endif -%}
-
diff --git a/_includes/header.html b/_includes/header.html
deleted file mode 100644
index 0fb783b..0000000
--- a/_includes/header.html
+++ /dev/null
@@ -1,88 +0,0 @@
-{%- unless page.lang == "fr" or page.lang == "en" -%}
- {%- assign currentLang = "en" -%}
-{%- else -%}
- {%- assign currentLang = page.lang -%}
-{%- endunless -%}
-
-
-
-
+
+
diff --git a/src/lib/i18n.ts b/src/lib/i18n.ts
new file mode 100644
index 0000000..83d164c
--- /dev/null
+++ b/src/lib/i18n.ts
@@ -0,0 +1,19 @@
+import {addMessages, locale, init as baseInit} from 'svelte-i18n';
+import { dictionary as fr } from '../translations/_fr';
+import { dictionary as en } from '../translations/_en';
+
+addMessages('fr', fr);
+addMessages('en', en);
+
+export function init(lang: string) {
+ if (lang !== 'fr' && lang !== 'en') {
+ throw new Error(`Invalid locale ${lang}`);
+ }
+
+ locale.set(lang);
+
+ baseInit({
+ fallbackLocale: lang,
+ initialLocale: lang,
+ });
+}
diff --git a/src/lib/index.ts b/src/lib/index.ts
new file mode 100644
index 0000000..856f2b6
--- /dev/null
+++ b/src/lib/index.ts
@@ -0,0 +1 @@
+// place files you want to import through the `$lib` alias in this folder.
diff --git a/src/lib/stores.ts b/src/lib/stores.ts
new file mode 100644
index 0000000..47f7f02
--- /dev/null
+++ b/src/lib/stores.ts
@@ -0,0 +1,3 @@
+import { type Writable, writable } from 'svelte/store';
+
+export const otherLocaleLinkStore: Writable = writable(null);
diff --git a/_posts/2015-12-28-cms-bundle.md b/src/posts/en/2015-12-28-cms-bundle.md
similarity index 95%
rename from _posts/2015-12-28-cms-bundle.md
rename to src/posts/en/2015-12-28-cms-bundle.md
index a1a05b3..ca36d8c 100644
--- a/_posts/2015-12-28-cms-bundle.md
+++ b/src/posts/en/2015-12-28-cms-bundle.md
@@ -1,7 +1,7 @@
---
layout: post
title: "CmsBundle"
-date: 2015-12-28 19:08:22 +0200
+date: 2015-12-28 19:08:22 +2
lang: en
lang-ref: cms-bundle
---
diff --git a/_posts/2015-12-28-easy-impress.md b/src/posts/en/2015-12-28-easy-impress.md
similarity index 97%
rename from _posts/2015-12-28-easy-impress.md
rename to src/posts/en/2015-12-28-easy-impress.md
index 87a13b1..452bee3 100644
--- a/_posts/2015-12-28-easy-impress.md
+++ b/src/posts/en/2015-12-28-easy-impress.md
@@ -1,7 +1,7 @@
---
layout: post
title: "EasyImpress"
-date: 2015-12-28 18:48:24 +0200
+date: 2015-12-28 18:48:24 +2
lang: en
lang-ref: easy-impress
---
diff --git a/_posts/2015-12-28-git-difference-between-merge-and-rebase.html b/src/posts/en/2015-12-28-git-difference-between-merge-and-rebase.html
similarity index 98%
rename from _posts/2015-12-28-git-difference-between-merge-and-rebase.html
rename to src/posts/en/2015-12-28-git-difference-between-merge-and-rebase.html
index 2898e1b..3a2ec91 100644
--- a/_posts/2015-12-28-git-difference-between-merge-and-rebase.html
+++ b/src/posts/en/2015-12-28-git-difference-between-merge-and-rebase.html
@@ -1,15 +1,12 @@
---
layout: post
title: "Git - Difference between merge and rebase"
-date: 2015-12-28 22:31:56 +0200
+date: "2015-12-28 22:31:56 +2"
+lastUpdate: "2018-08-27 09:56:11 +2"
lang: en
lang-ref: git-difference-between-merge-and-rebase
---
-
Last modified: 2018-08-27 09:56
-
----
-
Let's go back to basics: Git.
This powerful versioning tool is hugely underestimated by newcomers because "Oh jeez it's so hard to understand what's the difference between git pull origin master and git merge origin/master, and what the hell is this slash in the middle"?
diff --git a/_posts/2015-12-28-manage-fosuser-in-easyadmin.md b/src/posts/en/2015-12-28-manage-fosuser-in-easyadmin.md
similarity index 98%
rename from _posts/2015-12-28-manage-fosuser-in-easyadmin.md
rename to src/posts/en/2015-12-28-manage-fosuser-in-easyadmin.md
index 8a0628e..df6ae2e 100644
--- a/_posts/2015-12-28-manage-fosuser-in-easyadmin.md
+++ b/src/posts/en/2015-12-28-manage-fosuser-in-easyadmin.md
@@ -1,7 +1,7 @@
---
layout: post
title: "Manage FOSUser in EasyAdmin"
-date: 2015-12-28 22:27:20 +0200
+date: 2015-12-28 22:27:20 +2
lang: en
lang-ref: manage-fosuser-in-easyadmin
---
diff --git a/_posts/2016-03-25-gist-regular-expression-for-imagemagick-geometry.md b/src/posts/en/2016-03-25-gist-regular-expression-for-imagemagick-geometry.md
similarity index 99%
rename from _posts/2016-03-25-gist-regular-expression-for-imagemagick-geometry.md
rename to src/posts/en/2016-03-25-gist-regular-expression-for-imagemagick-geometry.md
index 697a9b0..5652b22 100644
--- a/_posts/2016-03-25-gist-regular-expression-for-imagemagick-geometry.md
+++ b/src/posts/en/2016-03-25-gist-regular-expression-for-imagemagick-geometry.md
@@ -1,7 +1,7 @@
---
layout: post
title: '[Gist] Regular expression for ImageMagick "Geometry"'
-date: 2016-03-25 10:12:43 +0200
+date: 2016-03-25 10:12:43 +2
lang: en
lang-ref: gist-regular-expression-for-imagemagick-geometry
---
diff --git a/_posts/2017-10-25-php-basics-functions-and-methods-prototypes.md b/src/posts/en/2017-10-25-php-basics-functions-and-methods-prototypes.md
similarity index 98%
rename from _posts/2017-10-25-php-basics-functions-and-methods-prototypes.md
rename to src/posts/en/2017-10-25-php-basics-functions-and-methods-prototypes.md
index 0f2309e..3e17b81 100644
--- a/_posts/2017-10-25-php-basics-functions-and-methods-prototypes.md
+++ b/src/posts/en/2017-10-25-php-basics-functions-and-methods-prototypes.md
@@ -1,7 +1,7 @@
---
layout: post
title: '[PHP Basics] Functions and methods prototypes'
-date: 2017-10-25 11:29:57 +0200
+date: 2017-10-25 11:29:57 +2
lang: en
lang-ref: php-basics-functions-and-methods-prototypes
---
diff --git a/_posts/2017-11-11-apache-and-php-fpm-in-windows.md b/src/posts/en/2017-11-11-apache-and-php-fpm-in-windows.md
similarity index 98%
rename from _posts/2017-11-11-apache-and-php-fpm-in-windows.md
rename to src/posts/en/2017-11-11-apache-and-php-fpm-in-windows.md
index f1b7912..342bfb6 100644
--- a/_posts/2017-11-11-apache-and-php-fpm-in-windows.md
+++ b/src/posts/en/2017-11-11-apache-and-php-fpm-in-windows.md
@@ -1,7 +1,7 @@
---
layout: post
title: 'Apache and PHP-FPM in Windows'
-date: 2017-11-11 13:14:15 +0100
+date: 2017-11-11 13:14:15 +1
lang: en
lang-ref: apache-and-php-fpm-in-windows
---
@@ -159,7 +159,7 @@ allow us to just use our web-server without knowing what it does so we don't lea
how our interpreters work. It's a nice jump into _"Damn it doesn't work!"_ instead of _"I probably did something wrong,
let's fix this."_.
-Just a small reminder: I said in the [Installing Apache and PHP on Windows](#installing-apache-and-php-on-windows) part
+Just a small reminder: I said in the _"Installing Apache and PHP on Windows"_ part
that here you **must** have the `nts` version of PHP. Make sure you have the right one starting from her.
Well, we have many options, but I'll talk about options later.
diff --git a/_posts/2017-12-05-setup-a-dnsmasq-equivalent-on-windows-with-acrylic.md b/src/posts/en/2017-12-05-setup-a-dnsmasq-equivalent-on-windows-with-acrylic.md
similarity index 99%
rename from _posts/2017-12-05-setup-a-dnsmasq-equivalent-on-windows-with-acrylic.md
rename to src/posts/en/2017-12-05-setup-a-dnsmasq-equivalent-on-windows-with-acrylic.md
index 733bbe8..7866765 100644
--- a/_posts/2017-12-05-setup-a-dnsmasq-equivalent-on-windows-with-acrylic.md
+++ b/src/posts/en/2017-12-05-setup-a-dnsmasq-equivalent-on-windows-with-acrylic.md
@@ -1,7 +1,7 @@
---
layout: post
title: 'Setup a dnsmasq equivalent on Windows (with Acrylic)'
-date: 2017-12-05 15:37:59 +0100
+date: 2017-12-05 15:37:59 +1
lang: en
lang-ref: setup-a-dnsmasq-equivalent-on-windows-with-acrylic
---
diff --git a/_posts/2018-01-05-deploy-a-symfony-flex-project-on-heroku.md b/src/posts/en/2018-01-05-deploy-a-symfony-flex-project-on-heroku.md
similarity index 98%
rename from _posts/2018-01-05-deploy-a-symfony-flex-project-on-heroku.md
rename to src/posts/en/2018-01-05-deploy-a-symfony-flex-project-on-heroku.md
index 53ca9f8..e8a50f8 100644
--- a/_posts/2018-01-05-deploy-a-symfony-flex-project-on-heroku.md
+++ b/src/posts/en/2018-01-05-deploy-a-symfony-flex-project-on-heroku.md
@@ -1,7 +1,7 @@
---
layout: post
title: 'Deploy a Symfony Flex project on Heroku'
-date: 2018-01-05 15:51:59 +0100
+date: 2018-01-05 15:51:59 +1
lang: en
lang-ref: deploy-a-symfony-flex-project-on-heroku
---
@@ -811,9 +811,3 @@ just have to use S3 references in your code and you're set.
For Symfony and S3, I am personally using the combo of `oneup/flysystem-bundle` and `league/flysystem-aws-s3-v3`, which
allow me to just use the `League\Flysystem\FilesystemInterface` service as dependency to my own services/controllers,
and it works like a charm!
-
----
-
-At [Studio Agate](https://www.studio-agate.com/en/), we made the choice to use Heroku for our project, a big monolithic
-multi-domain web application that stores portals and websites related to the tabletop RPGs the studio makes, with
-a character manager, and an interactive cartography application.
diff --git a/_posts/2018-12-04-the-symfony-container-graph.md b/src/posts/en/2018-12-04-the-symfony-container-graph.md
similarity index 99%
rename from _posts/2018-12-04-the-symfony-container-graph.md
rename to src/posts/en/2018-12-04-the-symfony-container-graph.md
index cafc510..47e793c 100644
--- a/_posts/2018-12-04-the-symfony-container-graph.md
+++ b/src/posts/en/2018-12-04-the-symfony-container-graph.md
@@ -1,7 +1,7 @@
---
layout: post
title: 'The Symfony container graph'
-date: 2018-12-04 20:31:46 +0100
+date: 2018-12-04 20:31:46 +1
lang: en
lang-ref: the-symfony-container-graph
---
diff --git a/_posts/2019-04-19-capitalism-in-the-open-source-world.md b/src/posts/en/2019-04-19-capitalism-in-the-open-source-world.md
similarity index 99%
rename from _posts/2019-04-19-capitalism-in-the-open-source-world.md
rename to src/posts/en/2019-04-19-capitalism-in-the-open-source-world.md
index 37dbd6c..019aa3d 100644
--- a/_posts/2019-04-19-capitalism-in-the-open-source-world.md
+++ b/src/posts/en/2019-04-19-capitalism-in-the-open-source-world.md
@@ -1,7 +1,7 @@
---
layout: post
title: 'Capitalism in the open-source world'
-date: 2019-04-19 17:16:38 +0200
+date: 2019-04-19 17:16:38 +2
lang: en
lang-ref: capitalism-in-the-open-source-world
---
diff --git a/_posts/2019-07-19-what-is-a-controller.md b/src/posts/en/2019-07-19-what-is-a-controller.md
similarity index 99%
rename from _posts/2019-07-19-what-is-a-controller.md
rename to src/posts/en/2019-07-19-what-is-a-controller.md
index 63fbae3..f5f3a1f 100644
--- a/_posts/2019-07-19-what-is-a-controller.md
+++ b/src/posts/en/2019-07-19-what-is-a-controller.md
@@ -1,7 +1,7 @@
---
layout: post
title: 'What is a Controller?'
-date: 2019-07-19 02:01:09 +0200
+date: 2019-07-19 02:01:09 +2
lang: en
lang-ref: what-is-a-controller
---
diff --git a/_posts/2019-08-18-array-options-a-good-solution-with-symfony-optionsresolver.md b/src/posts/en/2019-08-18-array-options-a-good-solution-with-symfony-optionsresolver.md
similarity index 99%
rename from _posts/2019-08-18-array-options-a-good-solution-with-symfony-optionsresolver.md
rename to src/posts/en/2019-08-18-array-options-a-good-solution-with-symfony-optionsresolver.md
index 939eb17..178913c 100644
--- a/_posts/2019-08-18-array-options-a-good-solution-with-symfony-optionsresolver.md
+++ b/src/posts/en/2019-08-18-array-options-a-good-solution-with-symfony-optionsresolver.md
@@ -1,7 +1,7 @@
---
layout: post
title: 'Array options: a solution with Symfony OptionResolver'
-date: 2019-08-18 07:30:42 -0500
+date: 2019-08-18 07:30:42 -5
lang: en
lang-ref: array-options-a-good-solution-with-symfony-optionsresolver
---
diff --git a/_posts/2019-08-26-how-I-migrated-almost-all-my-work-to-docker-act-I-genesis.md b/src/posts/en/2019-08-26-how-I-migrated-almost-all-my-work-to-docker-act-I-genesis.md
similarity index 93%
rename from _posts/2019-08-26-how-I-migrated-almost-all-my-work-to-docker-act-I-genesis.md
rename to src/posts/en/2019-08-26-how-I-migrated-almost-all-my-work-to-docker-act-I-genesis.md
index 8870e93..66bbf04 100644
--- a/_posts/2019-08-26-how-I-migrated-almost-all-my-work-to-docker-act-I-genesis.md
+++ b/src/posts/en/2019-08-26-how-I-migrated-almost-all-my-work-to-docker-act-I-genesis.md
@@ -1,7 +1,7 @@
---
layout: post
title: 'How I migrated almost all my work to Docker Act I: genesis'
-date: 2019-08-26 10:00:00 +0200
+date: 2019-08-26 10:00:00 +2
lang: en
lang-ref: how-I-migrated-almost-all-my-work-to-docker-act-I-genesis
---
@@ -15,9 +15,9 @@ So here's a small (or not) post about Docker.
If you want to read the others, please refer to this index:
* Act I: Genesis (current)
-* [Act II: PHP](/2019/09/02/how-I-migrated-almost-all-my-work-to-docker-act-II-php.html)
-* [Act III: Services](/2019/09/09/how-I-migrated-almost-all-my-work-to-docker-act-III-services.html)
-* [Act IV: Project](/2019/09/16/how-I-migrated-almost-all-my-work-to-docker-act-IV-compose.html)
+* [Act II: PHP](/en/blog/2019/09/02/how-I-migrated-almost-all-my-work-to-docker-act-II-php.html)
+* [Act III: Services](/en/blog/2019/09/09/how-I-migrated-almost-all-my-work-to-docker-act-III-services.html)
+* [Act IV: Project](/en/blog/2019/09/16/how-I-migrated-almost-all-my-work-to-docker-act-IV-compose.html)
## A long time ago, on a computer far far away...
@@ -35,7 +35,7 @@ Now, I'm _dockerizing_ almost all my projects.
I was trapped behind my environment.
-I was (and still am) mostly using Windows to work, because, well, I like to have the same machine to do everything. Even though people tell me this is not optimized, I could find nice solutions to optimize my environment (use `cmd` but with some plugins, use WSL when necessary, use [Apache & PHP on Windows](/2017/11/11/apache-and-php-fpm-in-windows.html) with multiple versions of PHP, etc.).
+I was (and still am) mostly using Windows to work, because, well, I like to have the same machine to do everything. Even though people tell me this is not optimized, I could find nice solutions to optimize my environment (use `cmd` but with some plugins, use WSL when necessary, use [Apache & PHP on Windows](/en/blog/2017/11/11/apache-and-php-fpm-in-windows.html) with multiple versions of PHP, etc.).
This is still not optimized because if I ever lost my machine (which did not happen in 6 years), I would have to restart from scratch, all setup and stuff.
diff --git a/_posts/2019-09-02-how-I-migrated-almost-all-my-work-to-docker-act-II-php.md b/src/posts/en/2019-09-02-how-I-migrated-almost-all-my-work-to-docker-act-II-php.md
similarity index 98%
rename from _posts/2019-09-02-how-I-migrated-almost-all-my-work-to-docker-act-II-php.md
rename to src/posts/en/2019-09-02-how-I-migrated-almost-all-my-work-to-docker-act-II-php.md
index a6c5c9e..e555a53 100644
--- a/_posts/2019-09-02-how-I-migrated-almost-all-my-work-to-docker-act-II-php.md
+++ b/src/posts/en/2019-09-02-how-I-migrated-almost-all-my-work-to-docker-act-II-php.md
@@ -1,7 +1,7 @@
---
layout: post
title: 'How I migrated almost all my work to Docker Act II: PHP'
-date: 2019-09-02 10:00:00 +0200
+date: '2019-09-02 10:00:00 +2'
lang: en
lang-ref: how-I-migrated-almost-all-my-work-to-docker-act-II-php
---
@@ -10,10 +10,10 @@ This post is the second of a series of three posts about how I started to used D
If you have not read the other ones, you may give them a go before reading this one:
-* [Act I: Genesis](/2019/08/26/how-I-migrated-almost-all-my-work-to-docker-act-I-genesis.html)
+* [Act I: Genesis](/en/blog/2019/08/26/how-I-migrated-almost-all-my-work-to-docker-act-I-genesis.html)
* Act II: PHP (current)
-* [Act III: Services](/2019/09/09/how-I-migrated-almost-all-my-work-to-docker-act-III-services.html)
-* [Act IV: Project](/2019/09/16/how-I-migrated-almost-all-my-work-to-docker-act-IV-compose.html)
+* [Act III: Services](/en/blog/2019/09/09/how-I-migrated-almost-all-my-work-to-docker-act-III-services.html)
+* [Act IV: Project](/en/blog/2019/09/16/how-I-migrated-almost-all-my-work-to-docker-act-IV-compose.html)
## Reminder of previous post
diff --git a/_posts/2019-09-09-how-I-migrated-almost-all-my-work-to-docker-act-III-services.md b/src/posts/en/2019-09-09-how-I-migrated-almost-all-my-work-to-docker-act-III-services.md
similarity index 94%
rename from _posts/2019-09-09-how-I-migrated-almost-all-my-work-to-docker-act-III-services.md
rename to src/posts/en/2019-09-09-how-I-migrated-almost-all-my-work-to-docker-act-III-services.md
index 9f82268..f3dd273 100644
--- a/_posts/2019-09-09-how-I-migrated-almost-all-my-work-to-docker-act-III-services.md
+++ b/src/posts/en/2019-09-09-how-I-migrated-almost-all-my-work-to-docker-act-III-services.md
@@ -1,7 +1,7 @@
---
layout: post
title: 'How I migrated almost all my work to Docker Act III: services'
-date: 2019-09-09 10:00:00 +0200
+date: 2019-09-09 10:00:00 +2
lang: en
lang-ref: how-I-migrated-almost-all-my-work-to-docker-act-III-services
---
@@ -10,10 +10,10 @@ This post is the third of a series of four posts about how I started to used Doc
If you have not read the other ones, you may give them a go before reading this one:
-* [Act I: Genesis](/2019/08/26/how-I-migrated-almost-all-my-work-to-docker-act-I-genesis.html)
-* [Act II: PHP](/2019/09/02/how-I-migrated-almost-all-my-work-to-docker-act-II-php.html)
+* [Act I: Genesis](/en/blog/2019/08/26/how-I-migrated-almost-all-my-work-to-docker-act-I-genesis.html)
+* [Act II: PHP](/en/blog/2019/09/02/how-I-migrated-almost-all-my-work-to-docker-act-II-php.html)
* Act III: Services (current)
-* [Act IV: Project](/2019/09/16/how-I-migrated-almost-all-my-work-to-docker-act-IV-compose.html)
+* [Act IV: Project](/en/blog/2019/09/16/how-I-migrated-almost-all-my-work-to-docker-act-IV-compose.html)
## Reminder of previous post
@@ -27,7 +27,7 @@ Databases are the most straightforward example, but this is valid for _any_ type
Usually with PHP setups we start learning by installing an "*AMP" environment (LAMP for Linux, WAMP for Windows, etc.). They mean "Apache, Mysql and PHP".
-I will not explain why Apache is a bad solution, there is already a glance of this opinion on my [Apache and PHP-FPM in Windows](/2017/11/11/apache-and-php-fpm-in-windows.html) post, and plenty other resources on the web.
+I will not explain why Apache is a bad solution, there is already a glance of this opinion on my [Apache and PHP-FPM in Windows](/en/blog/2017/11/11/apache-and-php-fpm-in-windows.html) post, and plenty other resources on the web.
The problem with this setup, when using it natively, is that all three services are tied together and if you don't do PHP, you don't care about it and just want a MySQL server for example. With NodeJS you might not need Apache at all. With Ruby, well you need Ruby of course, and you may need a database.
diff --git a/_posts/2019-09-16-how-I-migrated-almost-all-my-work-to-docker-act-IV-compose.md b/src/posts/en/2019-09-16-how-I-migrated-almost-all-my-work-to-docker-act-IV-compose.md
similarity index 96%
rename from _posts/2019-09-16-how-I-migrated-almost-all-my-work-to-docker-act-IV-compose.md
rename to src/posts/en/2019-09-16-how-I-migrated-almost-all-my-work-to-docker-act-IV-compose.md
index 6e64952..d6bb74b 100644
--- a/_posts/2019-09-16-how-I-migrated-almost-all-my-work-to-docker-act-IV-compose.md
+++ b/src/posts/en/2019-09-16-how-I-migrated-almost-all-my-work-to-docker-act-IV-compose.md
@@ -1,7 +1,7 @@
---
layout: post
title: 'How I migrated almost all my work to Docker Act IV: Compose'
-date: 2019-09-16 10:00:00 +0200
+date: '2019-09-16 10:00:00 +2'
lang: en
lang-ref: how-I-migrated-almost-all-my-work-to-docker-act-IV-compose
---
@@ -10,9 +10,9 @@ This post is the last one of a series of four posts about how I dockerized all m
If you have not read the other ones, you may give them a go before reading this one:
-* [Act I: Genesis](/2019/08/26/how-I-migrated-almost-all-my-work-to-docker-act-I-genesis.html)
-* [Act II: PHP](/2019/09/02/how-I-migrated-almost-all-my-work-to-docker-act-II-php.html)
-* [Act III: Services](/2019/09/09/how-I-migrated-almost-all-my-work-to-docker-act-III-services.html)
+* [Act I: Genesis](/en/blog/2019/08/26/how-I-migrated-almost-all-my-work-to-docker-act-I-genesis.html)
+* [Act II: PHP](/en/blog/2019/09/02/how-I-migrated-almost-all-my-work-to-docker-act-II-php.html)
+* [Act III: Services](/en/blog/2019/09/09/how-I-migrated-almost-all-my-work-to-docker-act-III-services.html)
* Act IV (current)
## Reminder of previous posts
@@ -50,7 +50,7 @@ services:
http: # And here something else again.
```
-> **Note:** Remember in the [second post](/2019/09/02/how-I-migrated-almost-all-my-work-to-docker-act-II.html) when I talked about permissions?
+> **Note:** Remember in the [second post](/en/blog/2019/09/02/how-I-migrated-almost-all-my-work-to-docker-act-II-php.html) when I talked about permissions?
> Please be aware that **any container that will touch your files must handle permissions correctly**. Therefore, for any service you create that may have a shared volume with your machine, you **must** create a base Docker image and use the proposed hack to make sure permissions are handled correctly.
> Of course, as the hack I added to this post is focused on `php-fpm`, you must adapt it to the script you need to run, be it nodejs, mysql or anything.
diff --git a/_posts/2019-10-28-proper-dates-with-easyadmin.md b/src/posts/en/2019-10-28-proper-dates-with-easyadmin.md
similarity index 98%
rename from _posts/2019-10-28-proper-dates-with-easyadmin.md
rename to src/posts/en/2019-10-28-proper-dates-with-easyadmin.md
index e89c4b3..2fbe8bc 100644
--- a/_posts/2019-10-28-proper-dates-with-easyadmin.md
+++ b/src/posts/en/2019-10-28-proper-dates-with-easyadmin.md
@@ -1,7 +1,7 @@
---
layout: post
title: 'Immutable dates with proper timezone with EasyAdmin and Symfony Forms'
-date: 2019-10-28 23:09:27 +0100
+date: 2019-10-28 23:09:27 +1
lang: en
lang-ref: proper-dates-with-easyadmin
---
@@ -18,7 +18,7 @@ You know, when you have a legacy application that says _"Event starts at this da
For this, we will use EasyAdmin, but in the end, it is mostly using plain old Symfony Form component.
-If you already have an application using EasyAdmin, or just the Form component, you can directly go to the [Timezone handling](#timezone-handling) section.
+If you already have an application using EasyAdmin, or just the Form component, you can directly go to the _"Timezone handling"_ section.
## Setup the project
diff --git a/_posts/2019-11-16-setting-up-together-phpstorm-phpunit-xdebug-and-docker.md b/src/posts/en/2019-11-16-setting-up-together-phpstorm-phpunit-xdebug-and-docker.md
similarity index 98%
rename from _posts/2019-11-16-setting-up-together-phpstorm-phpunit-xdebug-and-docker.md
rename to src/posts/en/2019-11-16-setting-up-together-phpstorm-phpunit-xdebug-and-docker.md
index 5c7a608..1590ed2 100644
--- a/_posts/2019-11-16-setting-up-together-phpstorm-phpunit-xdebug-and-docker.md
+++ b/src/posts/en/2019-11-16-setting-up-together-phpstorm-phpunit-xdebug-and-docker.md
@@ -1,7 +1,7 @@
---
layout: post
title: 'Setting up together PHPStorm, PHPUnit, Xdebug and Docker'
-date: 2019-11-16 23:31:05 +0100
+date: 2019-11-16 23:31:05 +1
lang: en
lang-ref: setting-up-together-phpstorm-phpunit-xdebug-and-docker
---
@@ -12,7 +12,7 @@ Here, I'm going to talk about configuring XDebug with PHPStorm and Docker.
## Having a working Docker environment
-First of all, if we talk about Docker, you may refer to the [series of blog posts I wrote about Docker](/2019/08/26/how-I-migrated-almost-all-my-work-to-docker-act-I-genesis.html), it might help you.
+First of all, if we talk about Docker, you may refer to the [series of blog posts I wrote about Docker](/en/blog/2019/08/26/how-I-migrated-almost-all-my-work-to-docker-act-I-genesis.html), it might help you.
I will now consider you have a working PHP + Docker environment.
diff --git a/_posts/2019-11-26-how-to-migrate-to-symfony-4-4-or-5-0.md b/src/posts/en/2019-11-26-how-to-migrate-to-symfony-4-4-or-5-0.md
similarity index 99%
rename from _posts/2019-11-26-how-to-migrate-to-symfony-4-4-or-5-0.md
rename to src/posts/en/2019-11-26-how-to-migrate-to-symfony-4-4-or-5-0.md
index e9dfa19..76ebaf6 100644
--- a/_posts/2019-11-26-how-to-migrate-to-symfony-4-4-or-5-0.md
+++ b/src/posts/en/2019-11-26-how-to-migrate-to-symfony-4-4-or-5-0.md
@@ -1,7 +1,7 @@
---
layout: post
title: 'How to migrate to Symfony 4.4 / 5.0'
-date: 2019-11-26 06:29:17 -0600
+date: 2019-11-26 06:29:17 -6
lang: en
lang-ref: how-to-migrate-to-symfony-4-4-or-5-0
---
diff --git a/_posts/2019-12-23-how-to-test-non-deterministic-code.md b/src/posts/en/2019-12-23-how-to-test-non-deterministic-code.md
similarity index 99%
rename from _posts/2019-12-23-how-to-test-non-deterministic-code.md
rename to src/posts/en/2019-12-23-how-to-test-non-deterministic-code.md
index e261779..947c623 100644
--- a/_posts/2019-12-23-how-to-test-non-deterministic-code.md
+++ b/src/posts/en/2019-12-23-how-to-test-non-deterministic-code.md
@@ -1,7 +1,7 @@
---
layout: post
title: 'How to test non-deterministic code?'
-date: 2019-12-24 12:30:01 +0200
+date: 2019-12-24 12:30:01 +2
lang: en
lang-ref: how-to-test-non-deterministic-code
---
diff --git a/_posts/2020-03-06-I-m-going-free-lance.md b/src/posts/en/2020-03-06-I-m-going-free-lance.md
similarity index 99%
rename from _posts/2020-03-06-I-m-going-free-lance.md
rename to src/posts/en/2020-03-06-I-m-going-free-lance.md
index 05fe9ff..e348b4d 100644
--- a/_posts/2020-03-06-I-m-going-free-lance.md
+++ b/src/posts/en/2020-03-06-I-m-going-free-lance.md
@@ -1,7 +1,7 @@
---
layout: post
title: "I'm going (free)lance!"
-date: 2020-03-06 09:00:00 +0200
+date: 2020-03-06 09:00:00 +2
lang: en
lang-ref: I-m-going-free-lance
---
diff --git a/_posts/2020-05-16-free-and-conscious-help.md b/src/posts/en/2020-05-16-free-and-conscious-help.md
similarity index 99%
rename from _posts/2020-05-16-free-and-conscious-help.md
rename to src/posts/en/2020-05-16-free-and-conscious-help.md
index a1dd6fb..ac94c14 100644
--- a/_posts/2020-05-16-free-and-conscious-help.md
+++ b/src/posts/en/2020-05-16-free-and-conscious-help.md
@@ -1,7 +1,7 @@
---
layout: post
title: 'Free and conscious help'
-date: 2020-05-16 17:00:59 -0500
+date: 2020-05-16 17:00:59 -5
lang: en
lang-ref: free-and-conscious-help
---
diff --git a/_posts/2020-06-04-an-attempt-to-use-sveltejs-with-deno.md b/src/posts/en/2020-06-04-an-attempt-to-use-sveltejs-with-deno.md
similarity index 99%
rename from _posts/2020-06-04-an-attempt-to-use-sveltejs-with-deno.md
rename to src/posts/en/2020-06-04-an-attempt-to-use-sveltejs-with-deno.md
index d1fefa6..51588b3 100644
--- a/_posts/2020-06-04-an-attempt-to-use-sveltejs-with-deno.md
+++ b/src/posts/en/2020-06-04-an-attempt-to-use-sveltejs-with-deno.md
@@ -1,7 +1,7 @@
---
layout: post
title: 'An attempt to use SvelteJS with Deno'
-date: 2020-06-04 11:20:56 -0500
+date: 2020-06-04 11:20:56 -5
lang: en
lang-ref: an-attempt-to-use-sveltejs-with-deno
---
diff --git a/_posts/2020-06-25-being-a-php-developer-on-windows-10-cool-snippets.md b/src/posts/en/2020-06-25-being-a-php-developer-on-windows-10-cool-snippets.md
similarity index 98%
rename from _posts/2020-06-25-being-a-php-developer-on-windows-10-cool-snippets.md
rename to src/posts/en/2020-06-25-being-a-php-developer-on-windows-10-cool-snippets.md
index 7e64d35..e233fa2 100644
--- a/_posts/2020-06-25-being-a-php-developer-on-windows-10-cool-snippets.md
+++ b/src/posts/en/2020-06-25-being-a-php-developer-on-windows-10-cool-snippets.md
@@ -1,7 +1,7 @@
---
layout: post
title: 'Being a PHP developer on Windows: 10 cool snippets'
-date: 2020-06-25 11:58:22 +0200
+date: 2020-06-25 11:58:22 +2
lang: en
lang-ref: being-a-php-developer-on-windows
---
@@ -109,7 +109,7 @@ However, this program is not really intuitive, and `sc create` is not easy as it
That is why I am using [NSSM](https://nssm.cc/download), and I added it to my dotfiles so I don't have to re-download it from its main site each time I setup a new machine.
-I already talked about [NSSM in a previous post about Apache and PHP-FPM on Windows](https://www.orbitale.tech/2017/11/11/apache-and-php-fpm-in-windows.html), check it out.
+I already talked about [NSSM in a previous post about Apache and PHP-FPM on Windows](/en/blog/2017/11/11/apache-and-php-fpm-in-windows.html), check it out.
You now can create daemons by running `nssm install {your daemon name}`, and you can then **customize everything**: binary, arguments, working directory, environment variables, i/o, timeouts, rotate log files…
**Everything**.
diff --git a/_posts/2020-11-12-I-don-t-believe-in-open-source-anymore.md b/src/posts/en/2020-11-12-I-don-t-believe-in-open-source-anymore.md
similarity index 96%
rename from _posts/2020-11-12-I-don-t-believe-in-open-source-anymore.md
rename to src/posts/en/2020-11-12-I-don-t-believe-in-open-source-anymore.md
index 8bf6ccf..30452d3 100644
--- a/_posts/2020-11-12-I-don-t-believe-in-open-source-anymore.md
+++ b/src/posts/en/2020-11-12-I-don-t-believe-in-open-source-anymore.md
@@ -1,7 +1,7 @@
---
layout: post
title: "I don't believe in Open Source anymore"
-date: 2020-11-12 07:45:07 -0600
+date: 2020-11-12 07:45:07 -6
---
I feel like I don't believe in Open Source anymore.
@@ -12,7 +12,7 @@ Some reasons:
1. [https://twitter.com/Pierstoval/status/1323258961974435840](https://twitter.com/Pierstoval/status/1323258961974435840)
2. [https://twitter.com/suckup_de/status/1326840923423170560](https://twitter.com/suckup_de/status/1326840923423170560)
-3. [https://www.orbitale.tech/2019/04/19/capitalism-in-the-open-source-world.html](https://www.orbitale.tech/2019/04/19/capitalism-in-the-open-source-world.html)
+3. [https://www.orbitale.tech/2019/04/19/capitalism-in-the-open-source-world.html](/en/blog/2019/04/19/capitalism-in-the-open-source-world.html)
Next: continue reading.
diff --git a/_posts/2023-07-14-earth-has-already-been-warm-and-its-biased-views.md b/src/posts/en/2023-07-14-earth-has-already-been-warm-and-its-biased-views.md
similarity index 97%
rename from _posts/2023-07-14-earth-has-already-been-warm-and-its-biased-views.md
rename to src/posts/en/2023-07-14-earth-has-already-been-warm-and-its-biased-views.md
index cc708b0..aef0a05 100644
--- a/_posts/2023-07-14-earth-has-already-been-warm-and-its-biased-views.md
+++ b/src/posts/en/2023-07-14-earth-has-already-been-warm-and-its-biased-views.md
@@ -1,7 +1,7 @@
---
layout: post
title: '"Earth has already been warm" and its biased views'
-date: 2023-07-14 16:24:27 -0100
+date: 2023-07-14 16:24:27 -1
lang: en
lang-ref: la-terre-a-deja-ete-chaude-et-son-point-de-vue-biaise
---
diff --git a/_posts/2023-08-10-autism-masking-and-personal-experience.md b/src/posts/en/2023-08-10-autism-masking-and-personal-experience.md
similarity index 99%
rename from _posts/2023-08-10-autism-masking-and-personal-experience.md
rename to src/posts/en/2023-08-10-autism-masking-and-personal-experience.md
index 55f5069..c8ffe02 100644
--- a/_posts/2023-08-10-autism-masking-and-personal-experience.md
+++ b/src/posts/en/2023-08-10-autism-masking-and-personal-experience.md
@@ -1,7 +1,7 @@
---
layout: post
title: 'Autism, masking, and personal experience'
-date: 2023-08-10 14:56:30 +0200
+date: 2023-08-10 14:56:30 +2
lang: en
lang-ref: autism-masking-and-personal-experience
---
diff --git a/_posts/2024-04-16-the-legacy-journey-part-1-progressive-migration.md b/src/posts/en/2024-04-16-the-legacy-journey-part-1-progressive-migration.md
similarity index 99%
rename from _posts/2024-04-16-the-legacy-journey-part-1-progressive-migration.md
rename to src/posts/en/2024-04-16-the-legacy-journey-part-1-progressive-migration.md
index b38518b..e359cc0 100644
--- a/_posts/2024-04-16-the-legacy-journey-part-1-progressive-migration.md
+++ b/src/posts/en/2024-04-16-the-legacy-journey-part-1-progressive-migration.md
@@ -1,7 +1,7 @@
---
layout: post
title: 'The legacy journey (part 1: progressive migration)'
-date: 2024-04-16 15:06:31 +0200
+date: 2024-04-16 15:06:31 +2
lang: en
lang-ref: the-legacy-journey-part-1-progressive-migration
---
diff --git a/_posts/2024-09-10-saas-and-competition-issues.md b/src/posts/en/2024-09-10-saas-and-competition-issues.md
similarity index 99%
rename from _posts/2024-09-10-saas-and-competition-issues.md
rename to src/posts/en/2024-09-10-saas-and-competition-issues.md
index 2120506..641a052 100644
--- a/_posts/2024-09-10-saas-and-competition-issues.md
+++ b/src/posts/en/2024-09-10-saas-and-competition-issues.md
@@ -1,7 +1,7 @@
---
layout: post
title: 'SaaS and competition issues'
-date: 2024-09-10 22:55:57 +0200
+date: 2024-09-10 22:55:57 +2
lang: en
lang-ref: saas-and-competition-issues
---
diff --git a/fr/_posts/2015-12-28-cms-bundle.md b/src/posts/fr/2015-12-28-cms-bundle.md
similarity index 95%
rename from fr/_posts/2015-12-28-cms-bundle.md
rename to src/posts/fr/2015-12-28-cms-bundle.md
index 3d3aa2e..923160b 100644
--- a/fr/_posts/2015-12-28-cms-bundle.md
+++ b/src/posts/fr/2015-12-28-cms-bundle.md
@@ -1,7 +1,7 @@
---
layout: post
title: "CmsBundle"
-date: 2015-12-28 19:08:22 +0200
+date: 2015-12-28 19:08:22 +2
lang: fr
lang-ref: cms-bundle
---
diff --git a/fr/_posts/2015-12-28-easy-impress.md b/src/posts/fr/2015-12-28-easy-impress.md
similarity index 97%
rename from fr/_posts/2015-12-28-easy-impress.md
rename to src/posts/fr/2015-12-28-easy-impress.md
index f7cddf6..d8f23b7 100644
--- a/fr/_posts/2015-12-28-easy-impress.md
+++ b/src/posts/fr/2015-12-28-easy-impress.md
@@ -1,7 +1,7 @@
---
layout: post
title: "EasyImpress"
-date: 2015-12-28 18:48:24 +0200
+date: 2015-12-28 18:48:24 +2
lang: fr
lang-ref: easy-impress
---
diff --git a/fr/_posts/2015-12-28-gerer-les-utilisateurs-avec-easyadmin.md b/src/posts/fr/2015-12-28-gerer-les-utilisateurs-avec-easyadmin.md
similarity index 97%
rename from fr/_posts/2015-12-28-gerer-les-utilisateurs-avec-easyadmin.md
rename to src/posts/fr/2015-12-28-gerer-les-utilisateurs-avec-easyadmin.md
index de24fae..92e595b 100644
--- a/fr/_posts/2015-12-28-gerer-les-utilisateurs-avec-easyadmin.md
+++ b/src/posts/fr/2015-12-28-gerer-les-utilisateurs-avec-easyadmin.md
@@ -1,13 +1,12 @@
---
layout: post
title: "Gérer ses utilisateurs avec EasyAdmin"
-date: 2015-12-28 22:27:20 +0200
+date: 2015-12-28 22:27:20 +2
+lastUpdate: 2020-08-27 10:12:25 +2
lang: fr
lang-ref: manage-fosuser-in-easyadmin
---
-Dernière modification : 2020-08-19
-
Edit (2020-08-19) : Cet article est valide pour EasyAdmin 1 et 2, mais pas pour la version 3 qui a complètement changé le système de configuration.
Edit (2018-08-27) : FOSUserBundle n'est pas recommandé pour gérer vos utilisateurs. Si vous voulez un bon gestionnaire d'utilisateurs,
diff --git a/fr/_posts/2015-12-28-git-differences-entre-merge-et-rebase.html b/src/posts/fr/2015-12-28-git-differences-entre-merge-et-rebase.html
similarity index 98%
rename from fr/_posts/2015-12-28-git-differences-entre-merge-et-rebase.html
rename to src/posts/fr/2015-12-28-git-differences-entre-merge-et-rebase.html
index f31ba1f..d907c1d 100644
--- a/fr/_posts/2015-12-28-git-differences-entre-merge-et-rebase.html
+++ b/src/posts/fr/2015-12-28-git-differences-entre-merge-et-rebase.html
@@ -1,15 +1,12 @@
---
layout: post
title: "Git - Différences entre merge et rebase"
-date: 2015-12-28 22:31:56 +0200
+date: "2015-12-28 22:31:56 +2"
+lastUpdate: "2018-08-27 09:56:00 +2"
lang: fr
lang-ref: git-difference-between-merge-and-rebase
---
-
Dernière modification: 2018-08-27 09:56
-
-
-
Revenons aux bases: Git.
Ce puissant outil de gestion de versions est largement sous-estimé par les nouveaux venus car « Oh, wow, c'est super dur de comprendre quelle est la différence entre git pull origin main et git merge origin/main, et puis de toute façon c'est quoi ce "/" au milieu ? »
diff --git a/fr/_posts/2016-03-25-gist-expression-rationnelle-pour-le-parametre-geometry-d-imagemagick.md b/src/posts/fr/2016-03-25-gist-expression-rationnelle-pour-le-parametre-geometry-d-imagemagick.md
similarity index 99%
rename from fr/_posts/2016-03-25-gist-expression-rationnelle-pour-le-parametre-geometry-d-imagemagick.md
rename to src/posts/fr/2016-03-25-gist-expression-rationnelle-pour-le-parametre-geometry-d-imagemagick.md
index 056a694..ac9a734 100644
--- a/fr/_posts/2016-03-25-gist-expression-rationnelle-pour-le-parametre-geometry-d-imagemagick.md
+++ b/src/posts/fr/2016-03-25-gist-expression-rationnelle-pour-le-parametre-geometry-d-imagemagick.md
@@ -1,7 +1,7 @@
---
layout: post
title: '[Gist] Expression rationnelle pour le paramètre "Geometry" d''ImageMagick'
-date: 2016-03-25 10:12:43 +0200
+date: 2016-03-25 10:12:43 +2
lang: fr
lang-ref: gist-regular-expression-for-imagemagick-geometry
---
diff --git a/fr/_posts/2017-10-25-prototype-de-fonctions-et-de-methodes.md b/src/posts/fr/2017-10-25-prototype-de-fonctions-et-de-methodes.md
similarity index 98%
rename from fr/_posts/2017-10-25-prototype-de-fonctions-et-de-methodes.md
rename to src/posts/fr/2017-10-25-prototype-de-fonctions-et-de-methodes.md
index ce97ed7..48cf733 100644
--- a/fr/_posts/2017-10-25-prototype-de-fonctions-et-de-methodes.md
+++ b/src/posts/fr/2017-10-25-prototype-de-fonctions-et-de-methodes.md
@@ -1,7 +1,7 @@
---
layout: post
title: '[PHP Basics] Prototype de fonctions et de méthodes'
-date: 2017-10-25 11:29:57 +0200
+date: 2017-10-25 11:29:57 +2
lang: fr
lang-ref: php-basics-functions-and-methods-prototypes
---
diff --git a/fr/_posts/2017-11-11-apache-et-php-fpm-sous-windows.md b/src/posts/fr/2017-11-11-apache-et-php-fpm-sous-windows.md
similarity index 99%
rename from fr/_posts/2017-11-11-apache-et-php-fpm-sous-windows.md
rename to src/posts/fr/2017-11-11-apache-et-php-fpm-sous-windows.md
index 40e08fa..338f0da 100644
--- a/fr/_posts/2017-11-11-apache-et-php-fpm-sous-windows.md
+++ b/src/posts/fr/2017-11-11-apache-et-php-fpm-sous-windows.md
@@ -1,13 +1,12 @@
---
layout: post
title: 'Apache et PHP-FPM sous Windows'
-date: 2017-11-11 13:14:15 +0100
+date: 2017-11-11 13:14:15 +1
+lastUpdate: 2020-08-21 22:14:14 +1
lang: fr
lang-ref: apache-and-php-fpm-in-windows
---
-Dernière modification : 2020-08-21
-
Edit du 2020-08-21 : Je n'utilise plus cette configuration, mais je suis persuadé qu'elle fonctionne encore très bien. Je suis passé à Docker, qui est plus flexible, mais c'est aussi parce que je bosse sur beaucoup de projets, donc c'est plus simple à gérer.
---
diff --git a/fr/_posts/2019-04-19-un-cas-de-capitalisme-dans-le-monde-de-l-open-source.md b/src/posts/fr/2019-04-19-un-cas-de-capitalisme-dans-le-monde-de-l-open-source.md
similarity index 99%
rename from fr/_posts/2019-04-19-un-cas-de-capitalisme-dans-le-monde-de-l-open-source.md
rename to src/posts/fr/2019-04-19-un-cas-de-capitalisme-dans-le-monde-de-l-open-source.md
index 5e5c17d..d330546 100644
--- a/fr/_posts/2019-04-19-un-cas-de-capitalisme-dans-le-monde-de-l-open-source.md
+++ b/src/posts/fr/2019-04-19-un-cas-de-capitalisme-dans-le-monde-de-l-open-source.md
@@ -1,7 +1,7 @@
---
layout: post
title: "Un cas de capitalisme dans le monde de l'open source"
-date: 2019-04-19 17:16:38 +0200
+date: 2019-04-19 17:16:38 +2
lang: fr
lang-ref: capitalism-in-the-open-source-world
---
diff --git a/fr/_posts/2019-07-19-qu-est-ce-qu-un-controleur.md b/src/posts/fr/2019-07-19-qu-est-ce-qu-un-controleur.md
similarity index 99%
rename from fr/_posts/2019-07-19-qu-est-ce-qu-un-controleur.md
rename to src/posts/fr/2019-07-19-qu-est-ce-qu-un-controleur.md
index ede125f..4b635d9 100644
--- a/fr/_posts/2019-07-19-qu-est-ce-qu-un-controleur.md
+++ b/src/posts/fr/2019-07-19-qu-est-ce-qu-un-controleur.md
@@ -1,7 +1,7 @@
---
layout: post
title: "Qu'est-ce qu'un contrôleur ?"
-date: 2019-07-19 02:01:09 +0200
+date: 2019-07-19 02:01:09 +2
lang: fr
lang-ref: what-is-a-controller
---
diff --git a/fr/_posts/2019-08-26-comment-j-ai-migre-tout-mon-travail-sous-docker-acte-I-genese.md b/src/posts/fr/2019-08-26-comment-j-ai-migre-tout-mon-travail-sous-docker-acte-I-genese.md
similarity index 98%
rename from fr/_posts/2019-08-26-comment-j-ai-migre-tout-mon-travail-sous-docker-acte-I-genese.md
rename to src/posts/fr/2019-08-26-comment-j-ai-migre-tout-mon-travail-sous-docker-acte-I-genese.md
index 8c112b0..4727e4d 100644
--- a/fr/_posts/2019-08-26-comment-j-ai-migre-tout-mon-travail-sous-docker-acte-I-genese.md
+++ b/src/posts/fr/2019-08-26-comment-j-ai-migre-tout-mon-travail-sous-docker-acte-I-genese.md
@@ -1,7 +1,7 @@
---
layout: post
title: 'Comment j''ai migré tout mon travail sous Docker Acte I : genèse'
-date: 2019-08-26 10:00:00 +0200
+date: 2019-08-26 10:00:00 +2
lang: fr
lang-ref: how-I-migrated-almost-all-my-work-to-docker-act-I-genesis
---
@@ -35,7 +35,7 @@ Comment en suis-je arrivé là ?
J'étais bloqué par mon environnement de travail.
-J'étais (et je suis toujours, en réalité) un utilisateur de Windows pour coder, surtout parce que j'aime bien que ma machine fasse tout (y compris les jeux notamment). Même si pas mal de gens me disent que ce n'est pas optimisé, j'ai pu trouver pendant des années des solutions pour améliorer mon environnement de travail (l'utilisation de `cmd` avec quelques plugins, WSL quand nécessaire, utiliser [Apache & PHP sous Windows](/2017/11/11/apache-et-php-fpm-sous-windows.html) avec plusieurs v ersions de PHP, etc.).
+J'étais (et je suis toujours, en réalité) un utilisateur de Windows pour coder, surtout parce que j'aime bien que ma machine fasse tout (y compris les jeux notamment). Même si pas mal de gens me disent que ce n'est pas optimisé, j'ai pu trouver pendant des années des solutions pour améliorer mon environnement de travail (l'utilisation de `cmd` avec quelques plugins, WSL quand nécessaire, utiliser [Apache & PHP sous Windows](/fr/blog/2017/11/11/apache-et-php-fpm-sous-windows.html) avec plusieurs v ersions de PHP, etc.).
C'est toujours pas totalement optimisé, parce que ça reste Windows, que `cmd` est loin d'être parfait, que le terminal n'est pas vraiment orienté UNIX, que NTFS est un système de fichier hyper lent, enfin bref, en tout cas moi je suis à l'aise et j'aime beaucoup.
diff --git a/fr/_posts/2019-09-02-comment-j-ai-migre-tout-mon-travail-sous-docker-acte-II-php.md b/src/posts/fr/2019-09-02-comment-j-ai-migre-tout-mon-travail-sous-docker-acte-II-php.md
similarity index 99%
rename from fr/_posts/2019-09-02-comment-j-ai-migre-tout-mon-travail-sous-docker-acte-II-php.md
rename to src/posts/fr/2019-09-02-comment-j-ai-migre-tout-mon-travail-sous-docker-acte-II-php.md
index d426b77..26f0115 100644
--- a/fr/_posts/2019-09-02-comment-j-ai-migre-tout-mon-travail-sous-docker-acte-II-php.md
+++ b/src/posts/fr/2019-09-02-comment-j-ai-migre-tout-mon-travail-sous-docker-acte-II-php.md
@@ -1,7 +1,7 @@
---
layout: post
title: 'Comment j''ai migré tout mon travail sous Docker Acte II : PHP'
-date: 2019-09-02 10:00:00 +0200
+date: 2019-09-02 10:00:00 +2
lang: fr
lang-ref: how-I-migrated-almost-all-my-work-to-docker-act-II-php
---
diff --git a/fr/_posts/2019-09-09-comment-j-ai-migre-tout-mon-travail-sous-docker-acte-III-services.md b/src/posts/fr/2019-09-09-comment-j-ai-migre-tout-mon-travail-sous-docker-acte-III-services.md
similarity index 99%
rename from fr/_posts/2019-09-09-comment-j-ai-migre-tout-mon-travail-sous-docker-acte-III-services.md
rename to src/posts/fr/2019-09-09-comment-j-ai-migre-tout-mon-travail-sous-docker-acte-III-services.md
index 11f5f59..2a92cba 100644
--- a/fr/_posts/2019-09-09-comment-j-ai-migre-tout-mon-travail-sous-docker-acte-III-services.md
+++ b/src/posts/fr/2019-09-09-comment-j-ai-migre-tout-mon-travail-sous-docker-acte-III-services.md
@@ -1,7 +1,7 @@
---
layout: post
title: 'Comment j''ai migré tout mon travail sous Docker Acte III : Services'
-date: 2019-09-09 10:00:00 +0200
+date: 2019-09-09 10:00:00 +2
lang: fr
lang-ref: how-I-migrated-almost-all-my-work-to-docker-act-III-services
---
diff --git a/fr/_posts/2019-09-16-comment-j-ai-migre-tout-mon-travail-sous-docker-acte-IV-compose.md b/src/posts/fr/2019-09-16-comment-j-ai-migre-tout-mon-travail-sous-docker-acte-IV-compose.md
similarity index 99%
rename from fr/_posts/2019-09-16-comment-j-ai-migre-tout-mon-travail-sous-docker-acte-IV-compose.md
rename to src/posts/fr/2019-09-16-comment-j-ai-migre-tout-mon-travail-sous-docker-acte-IV-compose.md
index 2665675..18db5fb 100644
--- a/fr/_posts/2019-09-16-comment-j-ai-migre-tout-mon-travail-sous-docker-acte-IV-compose.md
+++ b/src/posts/fr/2019-09-16-comment-j-ai-migre-tout-mon-travail-sous-docker-acte-IV-compose.md
@@ -1,7 +1,7 @@
---
layout: post
title: 'Comment j''ai migré tout mon travail sous Docker Acte IV : Compose'
-date: 2019-09-16 10:00:00 +0200
+date: 2019-09-16 10:00:00 +2
lang: fr
lang-ref: how-I-migrated-almost-all-my-work-to-docker-act-IV-compose
---
diff --git a/fr/_posts/2019-12-23-comment-tester-du-code-non-deterministe.md b/src/posts/fr/2019-12-23-comment-tester-du-code-non-deterministe.md
similarity index 99%
rename from fr/_posts/2019-12-23-comment-tester-du-code-non-deterministe.md
rename to src/posts/fr/2019-12-23-comment-tester-du-code-non-deterministe.md
index 2601ad6..9cf54c3 100644
--- a/fr/_posts/2019-12-23-comment-tester-du-code-non-deterministe.md
+++ b/src/posts/fr/2019-12-23-comment-tester-du-code-non-deterministe.md
@@ -1,7 +1,7 @@
---
layout: post
title: 'Comment tester du code non déterministe ?'
-date: 2019-12-24 12:30:01 +0200
+date: 2019-12-24 12:30:01 +2
lang: fr
lang-ref: how-to-test-non-deterministic-code
---
diff --git a/fr/_posts/2020-05-16-aide-libre-et-consciente.md b/src/posts/fr/2020-05-16-aide-libre-et-consciente.md
similarity index 99%
rename from fr/_posts/2020-05-16-aide-libre-et-consciente.md
rename to src/posts/fr/2020-05-16-aide-libre-et-consciente.md
index 5da7caa..af5b64d 100644
--- a/fr/_posts/2020-05-16-aide-libre-et-consciente.md
+++ b/src/posts/fr/2020-05-16-aide-libre-et-consciente.md
@@ -1,7 +1,7 @@
---
layout: post
title: 'Aide libre et consciente'
-date: 2020-05-16 17:00:59 -0500
+date: 2020-05-16 17:00:59 -5
lang: fr
lang-ref: free-and-conscious-help
---
diff --git a/fr/_posts/2021-03-22-histoire-de-pression.md b/src/posts/fr/2021-03-22-histoire-de-pression.md
similarity index 99%
rename from fr/_posts/2021-03-22-histoire-de-pression.md
rename to src/posts/fr/2021-03-22-histoire-de-pression.md
index f4b8dc5..5ebf46c 100644
--- a/fr/_posts/2021-03-22-histoire-de-pression.md
+++ b/src/posts/fr/2021-03-22-histoire-de-pression.md
@@ -1,7 +1,7 @@
---
layout: post
title: 'Histoire de pression'
-date: 2021-03-22 17:48:21 +0200
+date: 2021-03-22 17:48:21 +2
lang: fr
lang-ref: pressure-story
---
diff --git a/fr/_posts/2022-08-02-on-ne-peut-plus-rien-dire-oui-mais.md b/src/posts/fr/2022-08-02-on-ne-peut-plus-rien-dire-oui-mais.md
similarity index 99%
rename from fr/_posts/2022-08-02-on-ne-peut-plus-rien-dire-oui-mais.md
rename to src/posts/fr/2022-08-02-on-ne-peut-plus-rien-dire-oui-mais.md
index 1290551..a8814a7 100644
--- a/fr/_posts/2022-08-02-on-ne-peut-plus-rien-dire-oui-mais.md
+++ b/src/posts/fr/2022-08-02-on-ne-peut-plus-rien-dire-oui-mais.md
@@ -1,7 +1,7 @@
---
layout: post
title: '« On ne peut plus rien dire », oui mais ?'
-date: 2022-08-02 10:21:01 +0200
+date: 2022-08-02 10:21:01 +2
lang: fr
lang-ref: on-peut-plus-rien-dire
---
diff --git a/fr/_posts/2023-07-14-la-terre-a-deja-ete-chaude-et-son-point-de-vue-biaise.md b/src/posts/fr/2023-07-14-la-terre-a-deja-ete-chaude-et-son-point-de-vue-biaise.md
similarity index 97%
rename from fr/_posts/2023-07-14-la-terre-a-deja-ete-chaude-et-son-point-de-vue-biaise.md
rename to src/posts/fr/2023-07-14-la-terre-a-deja-ete-chaude-et-son-point-de-vue-biaise.md
index ddeae36..f2343f2 100644
--- a/fr/_posts/2023-07-14-la-terre-a-deja-ete-chaude-et-son-point-de-vue-biaise.md
+++ b/src/posts/fr/2023-07-14-la-terre-a-deja-ete-chaude-et-son-point-de-vue-biaise.md
@@ -1,7 +1,7 @@
---
layout: post
title: '"La terre a déjà été chaude" et son point de vue biaisé'
-date: 2023-07-14 16:24:27 -0100
+date: 2023-07-14 16:24:27 -1
lang: fr
lang-ref: la-terre-a-deja-ete-chaude-et-son-point-de-vue-biaise
---
diff --git a/fr/_posts/2023-08-10-autisme-masking-et-experience-personnelle.md b/src/posts/fr/2023-08-10-autisme-masking-et-experience-personnelle.md
similarity index 99%
rename from fr/_posts/2023-08-10-autisme-masking-et-experience-personnelle.md
rename to src/posts/fr/2023-08-10-autisme-masking-et-experience-personnelle.md
index 8edc516..3230f00 100644
--- a/fr/_posts/2023-08-10-autisme-masking-et-experience-personnelle.md
+++ b/src/posts/fr/2023-08-10-autisme-masking-et-experience-personnelle.md
@@ -1,7 +1,7 @@
---
layout: post
title: 'Autisme, "masking", et expérience personnelle'
-date: 2023-08-10 14:56:30 +0200
+date: 2023-08-10 14:56:30 +2
lang: fr
lang-ref: autism-masking-and-personal-experience
---
diff --git a/fr/_posts/2024-04-16-l-aventure-du-legacy-partie-1-migration-progressive.md b/src/posts/fr/2024-04-16-l-aventure-du-legacy-partie-1-migration-progressive.md
similarity index 99%
rename from fr/_posts/2024-04-16-l-aventure-du-legacy-partie-1-migration-progressive.md
rename to src/posts/fr/2024-04-16-l-aventure-du-legacy-partie-1-migration-progressive.md
index bc00e44..084f953 100644
--- a/fr/_posts/2024-04-16-l-aventure-du-legacy-partie-1-migration-progressive.md
+++ b/src/posts/fr/2024-04-16-l-aventure-du-legacy-partie-1-migration-progressive.md
@@ -1,7 +1,7 @@
---
layout: post
title: "L'aventure du legacy (partie 1 : migration progressive)"
-date: 2024-04-16 15:06:31 +0200
+date: 2024-04-16 15:06:31 +2
lang: fr
lang-ref: the-legacy-journey-part-1-progressive-migration
---
diff --git a/fr/_posts/2024-09-10-saas-et-problemes-de-competition.md b/src/posts/fr/2024-09-10-saas-et-problemes-de-competition.md
similarity index 99%
rename from fr/_posts/2024-09-10-saas-et-problemes-de-competition.md
rename to src/posts/fr/2024-09-10-saas-et-problemes-de-competition.md
index 2883e7a..1598379 100644
--- a/fr/_posts/2024-09-10-saas-et-problemes-de-competition.md
+++ b/src/posts/fr/2024-09-10-saas-et-problemes-de-competition.md
@@ -1,7 +1,7 @@
---
layout: post
title: 'SaaS et problèmes de compétition'
-date: 2024-09-10 22:55:57 +0200
+date: 2024-09-10 22:55:57 +2
lang: fr
lang-ref: saas-and-competition-issues
---
diff --git a/src/routes/+error.svelte b/src/routes/+error.svelte
new file mode 100644
index 0000000..afce755
--- /dev/null
+++ b/src/routes/+error.svelte
@@ -0,0 +1,5 @@
+
+
+
diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte
new file mode 100644
index 0000000..04d79f3
--- /dev/null
+++ b/src/routes/+layout.svelte
@@ -0,0 +1,9 @@
+
+
+
+ {@render children()}
+
diff --git a/src/routes/+layout.ts b/src/routes/+layout.ts
new file mode 100644
index 0000000..e427a68
--- /dev/null
+++ b/src/routes/+layout.ts
@@ -0,0 +1,3 @@
+export const prerender = true;
+export const ssr = true;
+export const trailingSlash = 'always';
diff --git a/src/routes/+page.server.ts b/src/routes/+page.server.ts
new file mode 100644
index 0000000..2a9f4f3
--- /dev/null
+++ b/src/routes/+page.server.ts
@@ -0,0 +1,5 @@
+import { redirect } from '@sveltejs/kit';
+
+export const load = () => {
+ return redirect(302, '/en/');
+}
diff --git a/src/routes/404/+page.svelte b/src/routes/404/+page.svelte
new file mode 100644
index 0000000..fe544a4
--- /dev/null
+++ b/src/routes/404/+page.svelte
@@ -0,0 +1,5 @@
+
+
+
diff --git a/src/routes/[locale]/+error.svelte b/src/routes/[locale]/+error.svelte
new file mode 100644
index 0000000..bd2aa5a
--- /dev/null
+++ b/src/routes/[locale]/+error.svelte
@@ -0,0 +1,7 @@
+
+
+
diff --git a/src/routes/[locale]/+page.server.ts b/src/routes/[locale]/+page.server.ts
new file mode 100644
index 0000000..6e960de
--- /dev/null
+++ b/src/routes/[locale]/+page.server.ts
@@ -0,0 +1,93 @@
+import { error } from '@sveltejs/kit';
+import fs from 'fs';
+import path from 'path';
+import yaml from 'yaml';
+import {marked} from 'marked';
+import {DateTime} from 'luxon';
+
+const TRUNCATE_LENGTH = 200;
+
+type PostConfig = {
+ [key: string]: string,
+ title?: string,
+ date?: string,
+ lang?: 'fr'|'en',
+ 'lang-ref'?: string,
+};
+
+export const load = ({ params }) => {
+
+ const { locale } = params;
+
+ const rootDir = process.cwd();
+
+ const postsDir = path.join(rootDir, 'src', 'posts', locale);
+
+ if (!fs.lstatSync(postsDir).isDirectory()) {
+ return error(404);
+ }
+
+ const dirs = fs.readdirSync(postsDir);
+
+ const posts = dirs
+ .sort((a, b) => a > b ? -1 : 1)
+ .map(file => getPost(locale, postsDir, file));
+
+ return {
+ posts: posts,
+ };
+};
+
+function getPost(locale: string, postsDir: string, filePath: string): [PostConfig, string] {
+ let type: 'md'|'html';
+ if (filePath.endsWith('.md')) {
+ type = 'md';
+ } else if (filePath.endsWith('.html')) {
+ type = 'html';
+ } else {
+ throw new Error(`Unsupported file path "${filePath}", expected "md" or "html".`);
+ }
+
+ const [yamlConfig, postContent] = getPostContent(fs.readFileSync(path.join(postsDir, filePath)).toString(), type);
+
+ let date: Date;
+ if (yamlConfig.date) {
+ date = DateTime.fromFormat(yamlConfig.date, 'yyyy-MM-dd HH:mm:ss Z').toJSDate();
+ } else {
+ throw new Error('File path "' + filePath + '" does not contain any date.');
+ }
+
+ const strDate = new Intl.DateTimeFormat(locale, { dateStyle: "medium", timeStyle: undefined, timeZone: "Europe/Paris" }).format(date);
+
+ const url = `/${locale}/blog/${filePath.replace('.md', '.html').replace(/^(\d+)-(\d+)-(\d+)-/gi, '$1/$2/$3/').replace(/\.html\/$/gi, '.html')}`;
+
+ return {yamlConfig, postContent, date: strDate, url};
+}
+
+function getPostContent(fileContent: string, type: 'md'|'html'): [PostConfig, string] {
+ fileContent = fileContent.trim();
+ if (!fileContent.startsWith('---')) {
+ return [{}, fileContent];
+ }
+
+ const endIndex = fileContent.indexOf('---', 3);
+ if (endIndex === -1) {
+ return [{}, fileContent.substring(3)];
+ }
+
+ const yamlContent = fileContent.substring(3, endIndex).trim();
+ let postContent = fileContent.substring(endIndex + 3).trim();
+
+ if (postContent.length > TRUNCATE_LENGTH) {
+ postContent = postContent.substring(0, TRUNCATE_LENGTH) + "\n(...)";
+ }
+
+ if (type === 'md') {
+ postContent = marked.parse(postContent);
+ }
+
+ postContent = postContent.replace(/<[^>]+>/g, '');
+ postContent = postContent.replace("\n", ' ');
+
+ return [yaml.parse(yamlContent), postContent];
+}
diff --git a/src/routes/[locale]/+page.svelte b/src/routes/[locale]/+page.svelte
new file mode 100644
index 0000000..4733f71
--- /dev/null
+++ b/src/routes/[locale]/+page.svelte
@@ -0,0 +1,28 @@
+
+
+{#each posts as post}
+