first commit

main
erreur401 2 years ago
commit 84af5e43d9
  1. BIN
      __pycache__/app.cpython-311.pyc
  2. 63
      aappppppyy
  3. 151
      app.py
  4. 38
      pages/article_type.md
  5. 38
      pages/bash-commands.md
  6. 88
      pages/cheatsheet.md
  7. 79
      pages/cli-mediatools.md
  8. 48
      pages/git-and-hub.md
  9. 17
      pages/info.md
  10. 244
      pages/linux101.md
  11. 678
      pages/ressources.md
  12. BIN
      pages/ressources/arduino.jpg
  13. BIN
      pages/ressources/arduino.png
  14. BIN
      pages/ressources/arduino_brd.jpeg
  15. BIN
      pages/ressources/bCNC.png
  16. BIN
      pages/ressources/bcnc_ico.JPG
  17. BIN
      pages/ressources/blender.jpg
  18. BIN
      pages/ressources/blender.png
  19. BIN
      pages/ressources/blender_ico.png
  20. BIN
      pages/ressources/cura.jpg
  21. BIN
      pages/ressources/cura.png
  22. BIN
      pages/ressources/freecad.jpeg
  23. BIN
      pages/ressources/freecad_ico.jpeg
  24. BIN
      pages/ressources/fusion.jpeg
  25. BIN
      pages/ressources/fusion_ico.jpeg
  26. BIN
      pages/ressources/gimo.png
  27. BIN
      pages/ressources/gimp_ico.jpeg
  28. BIN
      pages/ressources/iddle.png
  29. BIN
      pages/ressources/inkscape.jpg
  30. BIN
      pages/ressources/inskape_ico.png
  31. BIN
      pages/ressources/junjiito_uzumaki.jpg
  32. BIN
      pages/ressources/krita.png
  33. BIN
      pages/ressources/krita_ss.png
  34. BIN
      pages/ressources/laserweb.png
  35. BIN
      pages/ressources/laserweb_ico.png
  36. BIN
      pages/ressources/libreCad.png
  37. BIN
      pages/ressources/librecad.jpeg
  38. BIN
      pages/ressources/librecad_ico.png
  39. BIN
      pages/ressources/makercam-profile.png
  40. BIN
      pages/ressources/octo-main.png
  41. BIN
      pages/ressources/octoprint_ico.png
  42. BIN
      pages/ressources/openscad.jpeg
  43. BIN
      pages/ressources/openscad_ico.jpeg
  44. BIN
      pages/ressources/pd.png
  45. BIN
      pages/ressources/pd_logo.jpg
  46. BIN
      pages/ressources/processing.png
  47. BIN
      pages/ressources/processing_ico.png
  48. BIN
      pages/ressources/programiz.png
  49. BIN
      pages/ressources/programizIde.png
  50. BIN
      pages/ressources/python.png
  51. BIN
      pages/ressources/qcad.jpg
  52. BIN
      pages/ressources/qcad_ico.jpeg
  53. BIN
      pages/ressources/scribus2.png
  54. BIN
      pages/ressources/scribus_ico.jpeg
  55. BIN
      pages/ressources/slicer.jpg
  56. BIN
      pages/ressources/sllicer_ico.jpeg
  57. BIN
      pages/ressources/thonny.png
  58. BIN
      pages/ressources/tinker_ico.png
  59. BIN
      pages/ressources/tinkercad.jpg
  60. 83
      pages/rpi_headless.md
  61. 91
      pages/softList.md
  62. 38
      pages/test.md
  63. BIN
      pages/test/atomic_01.jpg
  64. BIN
      pages/test/curiosity_selfie.jpg
  65. BIN
      pages/test/jjt.jpg
  66. 107
      pages/vimavim.md
  67. BIN
      static/img/def.jpg
  68. BIN
      static/img/laike.png
  69. 33
      static/index.html
  70. 21
      static/main.js
  71. 52
      static/style.bak
  72. 345
      static/style.css
  73. BIN
      static/test/atomic_01.jpg
  74. BIN
      static/test/curiosity_selfie.jpg
  75. BIN
      static/test/jjt.jpg
  76. BIN
      static/test/laike.png
  77. BIN
      static/test/pics.png
  78. BIN
      static/test/sp.jpg
  79. BIN
      static/test/st.png
  80. 4222
      static/test/vimModeStateDiagram.svg
  81. BIN
      static/test/wt_01.jpg
  82. BIN
      static/test/wt_02.jpg
  83. BIN
      static/test/wt_03.jpg
  84. 33
      templates/index.html
  85. 17
      templates/menu.html
  86. 37
      templates/single.html
  87. 24
      templates/staticpage.html
  88. 247
      venv/bin/Activate.ps1
  89. 69
      venv/bin/activate
  90. 26
      venv/bin/activate.csh
  91. 69
      venv/bin/activate.fish
  92. 8
      venv/bin/flask
  93. 8
      venv/bin/markdown_py
  94. 8
      venv/bin/pip
  95. 8
      venv/bin/pip3
  96. 8
      venv/bin/pip3.11
  97. 1
      venv/bin/python
  98. 1
      venv/bin/python3
  99. 1
      venv/bin/python3.11
  100. 1
      venv/lib/python3.11/site-packages/Flask_FlatPages-0.8.1.dist-info/INSTALLER
  101. Some files were not shown because too many files have changed in this diff Show More

Binary file not shown.

@ -0,0 +1,63 @@
import os
import subprocess
from flask import Flask, request, jsonify
from flask_flatpages import FlatPages
from flask import render_template
FLATPAGES_AUTO_RELOAD = True
app = Flask(__name__)
app.config.from_object(__name__)
pages = FlatPages(app)
application = app
pages.get('foo')
@app.route('/')
def index():
articles = (p for p in pages if 'date' in p.meta)
latest = sorted(articles, reverse=True,
key=lambda p: p.meta['published'])
return render_template('base.html', articles=latest)
@app.route('/<path:path>/')
def page(path):
page = pages.get_or_404(path)
return render_template('single.html', page=page)
@app.route('/webhook', methods=['POST'])
def webhook():
# Verify the secret (if you used one in Gitea)
secret = "your_secret_here" # Replace with your actual secret
if secret:
if 'X-Gitea-Signature' not in request.headers:
return "Unauthorized", 401
received_signature = request.headers['X-Gitea-Signature']
expected_signature = f"sha256={compute_signature(request.data, secret)}"
if received_signature != expected_signature:
return "Unauthorized", 401
# Perform Git pull to update the website's code
repo_path = "/path/to/your/website/repo" # Replace with the actual path
subprocess.run(['git', 'pull'], cwd=repo_path)
# Restart the Flask app
#restart_flask_app()
return "Webhook received and processed successfully", 200
def compute_signature(data, secret):
import hmac
import hashlib
return hmac.new(secret.encode('utf-8'), data, hashlib.sha256).hexdigest()
def restart_flask_app():
# Customize this function to restart your Flask app (e.g., using gunicorn, systemd, etc.)
# Example: subprocess.run(['systemctl', 'restart', 'your-flask-app.service'])
pass
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000) # Adjust the host and port as needed

151
app.py

@ -0,0 +1,151 @@
from flask import Flask , send_from_directory , request
from flask_flatpages import FlatPages
from flask import render_template
import os
FLATPAGES_EXTENSION = '.md'
FLATPAGES_AUTO_RELOAD = True
app = Flask(__name__)
app.config['APPLICATION_ROOT'] = '/flaskapp'
BASE_DIR = os.path.abspath(os.path.dirname(__file__))
FLATPAGES_MARKDOWN_EXTENSIONS = ['extra']
FLATPAGES_EXTENSION_CONFIGS = {
'codehilite': {
'linenums': 'True'
}
}
app.config.from_object(__name__)
pages = FlatPages(app)
application = app
pages.get('foo')
def Liste_cat():
articles = (p for p in pages if 'published' in p.meta)
catList = []
for a in articles:
catList.append(a.meta['cat'])
catList = list(dict.fromkeys(catList))
return catList
def imagelist(articlename):
dir_path = os.path.dirname(os.path.realpath(articlename))+'/pages/'
gallery_path = os.path.join(dir_path, articlename)
if os.path.exists(gallery_path):
images = [f for f in os.listdir(gallery_path) if f.endswith('.jpg') or f.endswith('.jpeg') or f.endswith('.png') or f.endswith('.gif')]
return gallery_path ,images
else:
return None, None
# this is chatgpt quick fix no love !
def is_time(value):
try:
datetime.strptime(value, '%H:%M:%S') # Adjust the format as needed
return True
except ValueError:
return False
@app.route('/')
def index():
# Articles are pages with a publication date
articles = (p for p in pages if 'published' in p.meta)
latest = sorted(articles, reverse=True,
key=lambda p: p.meta['published'])
catList = Liste_cat()
return render_template('index.html', articles=latest , catList=catList )
@app.route('/<path:path>')
def page(path):
page = pages.get_or_404(path)
catList = Liste_cat()
g_path, imgs = imagelist(path)
# print(list(page.meta.values()))
if imgs:
return render_template('single.html', page=page ,catList=catList , g_path=g_path, imgs = imgs)
else :
return render_template('single.html', page=page ,catList=catList)
@app.route('/info')
def info():
page = pages.get_or_404('info')
catList = Liste_cat()
return render_template('staticpage.html', page=page , catList=catList)
@app.route('/cat/<catname>')
def catPage(catname):
articles = (p for p in pages if 'published' in p.meta and 'cat' in p.meta and p.meta['cat']==catname )
latest = sorted(articles, reverse=True,
key=lambda p: p.meta['published'])
catList = Liste_cat()
return render_template('index.html', articles=latest , catList=catList )
@app.route('/author/<authorname>')
def authorPage(authorname):
articles = (p for p in pages if 'published' in p.meta and 'author' in p.meta and p.meta['author']==authorname )
latest = sorted(articles, reverse=True,
key=lambda p: p.meta['published'])
catList = Liste_cat()
return render_template('index.html', articles=latest , catList=catList )
@app.route('/pages/<path:path>')
def serve_pages(path):
return send_from_directory('pages', path)
@app.route('/search', methods=['POST'])
def search():
query = request.form['query']
print(query)
catList = Liste_cat()
# articles = (p for p in pages if 'published' in p.meta and query.lower() in metastr= lambda m : [item.lower() for item in list(p.meta.values())])
articles = (p for p in pages if 'published' in p.meta and any(isinstance(value,str) and query.lower() in value.lower() for value in p.meta.values()))
return render_template('index.html', articles=articles ,catList=catList)
@app.route('/webhook', methods=['POST'])
def webhook():
# Verify the secret (if you used one in Gitea)
secret = "your_secret_here" # Replace with your actual secret
if secret:
if 'X-Gitea-Signature' not in request.headers:
return "Unauthorized", 401
received_signature = request.headers['X-Gitea-Signature']
expected_signature = f"sha256={compute_signature(request.data, secret)}"
if received_signature != expected_signature:
return "Unauthorized", 401
# Perform Git pull to update the website's code
repo_path = "/path/to/your/website/repo" # Replace with the actual path
subprocess.run(['git', 'pull'], cwd=repo_path)
# Restart the Flask app
#restart_flask_app()
return "Webhook received and processed successfully", 200
def compute_signature(data, secret):
import hmac
import hashlib
return hmac.new(secret.encode('utf-8'), data, hashlib.sha256).hexdigest()
def restart_flask_app():
# Customize this function to restart your Flask app (e.g., using gunicorn, systemd, etc.)
# Example: subprocess.run(['systemctl', 'restart', 'your-flask-app.service'])
pass
@app.errorhandler(404)
def page_not_found(e):
# note that we set the 404 status explicitly
return "NOPE NOTHING HERE plz leave now 🛸"
if __name__ == "__main__":
app.run(host='0.0.0.0')

@ -0,0 +1,38 @@
title : article type
author: zvevqx
published: 2021-11-22
cat: linux
desc: ws
...
# mon titre
![bliblabouuuu](https://cdn3.photoblogstop.com/wp-content/uploads/2012/07/Sierra_HDR_DFX8048_2280x819_Q40_wm_mini-1726x819__-1140x541.jpg)
Her father remarried while at Burma and Kuntala returned to Odisha with her Mother. She settled in Khurdha with her mother after returning from Burma. In spite of total lack of women's education her mother's perseverance allowed her to receive a good education. She studied from Ravenshaw Girls High School and continued her education in Orissa Medical School, Cuttack (Now Srirama Chandra Bhanja Medical College and Hospital). She earned her L.M.P (Licentiate Medical Practitioners) degree in 1921 with a gold medal. She was fluent in Odia, Hindi, Bengali, English and Burmese.[5] Her father remarried while at Burma and Kuntala returned to Odisha with her Mother. She settled in Khurdha with her mother after returning from Burma. In spite of total lack of women's education her mother's perseverance allowed her to receive a good education. She studied from Ravenshaw Girls High School and continued her education in Orissa Medical School, Cuttack (Now Srirama Chandra Bhanja Medical College and Hospital). She earned her L.M.P (Licentiate Medical Practitioners) degree in 1921 with a gold medal. She was fluent in Odia, Hindi, Bengali, English and Burmese.[5] Her father remarried while at Burma and Kuntala returned to Odisha with her Mother. She settled in Khurdha with her mother after returning from Burma. In spite of total lack of women's education her mother's perseverance allowed her to receive a good education. She studied from Ravenshaw Girls High School and continued her education in Orissa Medical School, Cuttack (Now Srirama Chandra Bhanja Medical College and Hospital). She earned her L.M.P (Licentiate Medical Practitioners) degree in 1921 with a gold medal. She was fluent in Odia, Hindi, Bengali, English and Burmese.[5] Her father remarried while at Burma and Kuntala returned to Odisha with her Mother. She settled in Khurdha with her mother after returning from Burma. In spite of total lack of women's education her mother's perseverance allowed her to receive a good education. She studied from Ravenshaw Girls High School and continued her education in Orissa Medical School, Cuttack (Now Srirama Chandra Bhanja Medical College and Hospital). She earned her L.M.P
some code ( add 1 **tab** before every line )
def Liste_cat():
articles = (p for p in pages if 'published' in p.meta)
catList = []
for a in articles:
catList.append(a.meta['cat'])
catList = list(dict.fromkeys(catList))
return catList
[un lien](https://google.com)
- lest
- tewt
- trie
yyEach of these objects is associated to a path: the slash-separated (whatever the OS) name of the file it was loaded from, relative to the pages root, and excluding the extension. For example, for an app in

@ -0,0 +1,38 @@
title : Bash and terminal command
author: zvevqx
published: 2025-11-22
cat: linux
desc: ws
...
👾 MOST OF THIS PAGE IS DIRECT OUTPUT OF CHATGPT 3.5
# Basic Bash Commands for Navigating a File System
Here are some of the basic Bash commands you can use to navigate a file system:
1. `pwd`: Displays the current working directory.
2. `cd`: Changes the current working directory.
* `cd <directory-name>`: Changes to the specified directory.
* `cd ..`: Changes to the parent directory.
* `cd /`: Changes to the root directory.
* `cd ~`: Changes to the home directory.
3. `ls`: Lists the contents of the current directory.
* `ls <directory-name>`: Lists the contents of the specified directory.
* `ls -l`: Lists the contents of the current directory in long format.
* `ls -a`: Lists all contents of the current directory, including hidden files.
4. `mkdir`: Creates a new directory.
* `mkdir <directory-name>`: Creates a new directory with the specified name.
5. `touch`: Creates a new file.
* `touch <file-name>`: Creates a new file with the specified name.
6. `cp`: Copies a file or directory.
* `cp <source> <destination>`: Copies the file or directory from the source to the destination.
7. `mv`: Moves a file or directory.
* `mv <source> <destination>`: Moves the file or directory from the source to the destination.
8. `rm`: Deletes a file or directory.
* `rm <file-name>`: Deletes the specified file.
* `rm -r <directory-name>`: Deletes the specified directory and its contents.
These are just a few of the basic Bash commands you can use to navigate a file system. As you become more familiar with these commands, you can start to use more advanced commands to perform more complex tasks.

@ -0,0 +1,88 @@
title : Cheatsheet all
author: zvevqx
published: 2025-11-22
cat: linux
desc: ws
...
👾 MOST OF THIS PAGE IS DIRECT OUTPUT OF CHATGPT 3.5
# Cheatsheet
## Bash Commands
| Command | Description |
| --- | --- |
| `cd [dir]` | change directory |
| `ls` | list directory contents |
| `pwd` | print working directory |
| `mkdir [dir]` | create a new directory |
| `rm [file]` | remove a file |
| `rm -r [dir]` | remove a directory and its contents |
| `cp [source] [destination]` | copy a file or directory |
| `mv [source] [destination]` | move or rename a file or directory |
| `cat [file]` | display the contents of a file |
| `grep [pattern] [file]` | search for a pattern in a file |
## Git Commands
| Command | Description |
| --- | --- |
| `git init` | initialize a new Git repository |
| `git add [file]` | add a file to the staging area |
| `git commit -m "[message]"` | commit changes with a message |
| `git status` | show the status of the repository |
| `git log` | show the commit history |
| `git push` | push changes to a remote repository |
| `git pull` | pull changes from a remote repository |
## SSH Commands
| Command | Description |
| --- | --- |
| `ssh [user]@[host]` | connect to a remote host via SSH |
| `scp [file] [user]@[host]:[destination]` | copy a file to a remote host |
| `ssh-keygen` | generate an SSH key pair |
| `ssh-copy-id [user]@[host]` | copy your SSH public key to a remote host |
## Python Commands and Tools
| Command | Description |
| --- | --- |
| `python` | start the Python interpreter |
| `pip install [package]` | install a Python package |
| `venv` | create and manage Python virtual environments |
### Python Virtual Environments
| Command | Description |
| --- | --- |
| `python3 -m venv [venv-name]` | create a new virtual environment |
| `source [venv-name]/bin/activate` | activate the virtual environment |
| `deactivate` | deactivate the virtual environment |
## FFmpeg Commands
| Command | Description |
| --- | --- |
| `ffmpeg -i [input] [output]` | convert a video or audio file |
| `ffmpeg -i [input] -ss [time] -t [duration] [output]` | trim a video or audio file |
| `ffmpeg -i [input] -vn -acodec [codec] [output]` | extract audio from a video file |
| `ffmpeg -f concat -safe 0 -i [list.txt] -c copy [output]` | concatenate multiple video or audio files |
## ImageMagick Commands
| Command | Description |
| --- | --- |
| `convert [input] [output]` | convert an image format |
| `mogrify -resize [size] [input]` | resize an image |
| `montage [input1] [input2] -geometry [geometry] [output]` | create a montage of images |
## Arduino Commands
| Command | Description |
| --- | --- |
| `arduino-cli board list` | list available boards |
| `arduino-cli compile --fqbn [board] [sketch]` | compile a sketch |
| `arduino-cli upload -p [port] --fqbn [board

@ -0,0 +1,79 @@
title : cli image/video tools ( ffmpeg / imagemagick )
author: zvevqx
published: 2025-11-22
cat: tools
desc: ws
...
👾 MOST OF THIS PAGE IS DIRECT OUTPUT OF CHATGPT 3.5
# Multimedia Cheat Sheet - Advanced Commands
Here are some advanced commands for two powerful multimedia tools: FFmpeg and ImageMagick.
## FFmpeg Cheat Sheet
FFmpeg is a powerful tool for manipulating video and audio files.
### Basic Commands
| Command | Description |
| --- | --- |
| `ffmpeg -i input.mp4 output.avi` | Convert MP4 file to AVI |
| `ffmpeg -i input.mp4 -ss 00:00:10 -t 00:00:05 output.mp4` | Trim a video from 10 seconds to 15 seconds |
| `ffmpeg -i input.mp4 -vn output.mp3` | Extract audio from a video file |
| `ffmpeg -i input.mp4 -vf "scale=640:360" output.mp4` | Resize a video to 640x360 pixels |
### Advanced Commands
| Command | Description |
| --- | --- |
| `ffmpeg -i input.mp4 -filter_complex "[0:v]split[v1][v2];[v1]scale=640:360[v1out];[v2]scale=1280:720[v2out]" -map "[v1out]" -map "[v2out]" -preset ultrafast -c:v libx264 -c:a copy output.mp4` | Split a video into two different resolutions (640x360 and 1280x720) |
| `ffmpeg -i input.mp4 -i watermark.png -filter_complex "overlay=10:10" output.mp4` | Add a watermark to a video |
| `ffmpeg -i input.mp4 -af "pan=stereo|c0=c1|c1=c0" output.mp4` | Convert mono audio to stereo |
| `ffmpeg -i input.mp4 -c:v libx264 -crf 23 -preset veryslow -c:a copy -movflags +faststart output.mp4` | Encode a video with a CRF value of 23 and a very slow preset, and enable fast start for streaming |
## ImageMagick Cheat Sheet
ImageMagick is a powerful tool for manipulating images.
### Basic Commands
| Command | Description |
| --- | --- |
| `convert input.jpg output.png` | Convert a JPEG file to PNG |
| `convert input.png -resize 50% output.png` | Resize a PNG file to 50% of its original size |
| `convert input.png -rotate 45 output.png` | Rotate a PNG file by 45 degrees |
| `convert input.png -crop 100x100+10+10 output.png` | Crop a 100x100 pixel region of a PNG file, starting from the point (10,10) |
### Advanced Commands
| Command | Description |
| --- | --- |
| `convert input.png -morphology Convolve Sobel:1 output.png` | Apply a Sobel edge detection filter to a PNG file |
| `convert input.png -colorspace Gray -negate output.png` | Convert a PNG file to grayscale and invert its colors |
| `convert input.png -threshold 50% output.png` | Apply a binary threshold to a PNG file |
| `convert input1.png input2.png -compose Difference -composite -normalize output.png` | Compute the absolute difference between two PNG files |
### Batch Processing with Mogrify
ImageMagick's `mogrify` command allows you to process multiple images in a directory at once. Here are some useful commands:
| Command | Description |
| --- | --- |
| mogrify -resize 50% *.jpg | Resize all JPEG files in the current directory to 50% of their original size |
| mogrify -format png *.jpg | Convert all JPEG files in the current directory to PNG |
| mogrify -rotate 90 *.png | Rotate all PNG files in the current directory by 90 degrees |
| mogrify -strip *.jpg | Remove EXIF data from all JPEG files in the current directory |
Note that mogrify modifies the original files in place, so be sure to make a backup of your files before using this command
| Command | Description|
| --- | --- |
| mogrify -resize 50% *.jpg | Resize all JPEG files in the current directory to 50% of their original size |
| mogrify -format png *.jpg | Convert all JPEG files in the current directory to PNG |
| mogrify -rotate 90 *.png | Rotate all PNG files in the current directory by 90 degrees |
| mogrify -strip *.jpg | Remove EXIF data from all JPEG files in the current directory |
**Note that mogrify modifies the original files in place, so be sure to make a backup of your files before using this command**.

@ -0,0 +1,48 @@
title : git and github basic
author: zvevqx
published: 2025-11-22
cat: linux
desc: ws
...
👾 MOST OF THIS PAGE IS DIRECT OUTPUT OF CHATGPT 3.5
# Git and GitHub Basics
## What is Git?
Git is a free and open-source version control system that helps you keep track of changes made to your code over time.
## What is GitHub?
GitHub is a web-based platform that provides hosting for Git repositories. It also offers many collaboration features such as pull requests, code reviews, and issue tracking.
## Getting Started
To get started with Git and GitHub, follow these steps:
1. Install Git on your computer.
2. Create a GitHub account.
3. Open your terminal or command prompt.
4. Navigate to the directory where you want to create your project.
5. Initialize a new Git repository using the command `git init`.
## Basic Git Commands
Here are some of the basic Git commands you will need to use:
- `git status` - shows the status of your Git repository
- `git add .` - adds all changes to the staging area
- `git commit -m "commit message"` - commits changes to the local repository with a message
- `git push` - pushes changes to the remote repository
## Basic GitHub Commands
Here are some of the basic GitHub commands you will need to use:
- `git clone <repository url>` - clones a repository to your local machine
- `git pull` - pulls changes from the remote repository to your local machine
- `git branch` - shows a list of branches in the repository
- `git checkout <branch name>` - switches to the specified branch
- `git merge <branch name>` - merges the specified branch with the current branch
- `git push <remote> <branch>` - pushes changes to a specific remote branch
## Conclusion
These are just the basics of Git and GitHub, but they should be enough to get you started with version control and collaborating with others on code. As you continue to use these tools, you will learn more advanced commands and techniques.

@ -0,0 +1,17 @@
title: info
author: julien
---
# contact
0460 96 28 21
email@domain.com
rue du sceptre 23
1050 ixelles
===
# CV

@ -0,0 +1,244 @@
title : Linux 101
author: zvevqx
published: 2025-11-22
cat: linux
desc: ws
...
learn more about `ssh` -> [https://www.ssh.com/ssh/](https://www.ssh.com/ssh/)
- **linux** :
start terminal <key>ctrl</key> + <key>alt</key> + <key>t</key>
~~~ bash
ssh -p portnumber pi@er401.duckdns.org
ssh user @ distant_server.address : connection_port (default to 22 )
~~~
>⚠ linux user :
> to copy inside the `terminal` : <key>ctrl</key> + <key>shift</key> + <key>c</key>
> to paste inside the `terminal` : <key>ctrl</key> + <key>shift</key> + <key>v</key>
- **Osx** :
start terminal ( <key> &#127822; </key> + <key> space </key> and search for `terminal`)
~~~bash
ssh pi@er401.duckdns.org:22
~~~
- **Windows** :
- install ```putty```
- got to [putty download page](https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html)
- `putty` will give ~~windows~~ `ssh` ability ...
- connect to:
- server: ```er401.duckdns.org```
- port ```22```
- user `pi`
---
---
## create your new `home`
### first
1. *create a User*
```
sudo useradd -m <username> -p <password>
```
2. *add user to groups and privilege*
- add user to ```admin``` list
```bash
sudo usermod -a -G sudo yourUserName
```
- change shell to ```zsh``` ( optional )
```bash
chsh -s /bin/zsh
```
- exit user ```pi```
```bash
exit
```
3. *reconnect with your `username` and `password`*
```bash
ssh YOUR_USER_NAME@er401.duckdns.org:22
```
4. welcome to your new `home`
1. your *home folder* is in `/home/yourUserName`
1. hint : you can check where you are with the command `pwd` (**P**rint **W**orking **D**irectory)
2. learm about linus folder structure -> [random first article on ddg search :) ](https://linuxhandbook.com/linux-directory-structure/)
---
## create folder in ```apache``` server
wft is `apache` :
> apache is a http web server [wiki page](https://en.wikipedia.org/wiki/Apache_HTTP_Server)
there other solution like [https://www.lighttpd.net/]{https://www.lighttpd.net/}
`apache` is well documented and often the one you'll find on a web server service
1. create folder first with your username
```bash
sudo mkdir -p /var/www/html/$USER
```
2. change ownership to your user
```bash
sudo chown -R $USER:$USER /var/www/html/$USER
```
3. make sure permissions on ```www``` are ok
```bash
sudo chmod -R 755 /var/www
```
4. create your first webpage to serve
```bash
touch /var/www/html/$USER/index.html
```
5. put something in it
```bash
nano /var/www/html/$USER/index.html
or
vim /var/www/html/$USER/index.html
```
6. content example
~~~html
<html>
<head>
<meta charset="UTF-8">
<title>Welcome to my page</title>
<style>
h1{
font-size : 42px;
}
</style>
</head>
<body>
<h1> 📡 Success!! 📡 </h1>
</body>
</html>
~~~
# DO SOME STUFF
## general `cli` commands
### navigate
- `.` the current directory ( folder)
- `..` the parent directory
- `man` : view the **man**ual of a command ( ex : ` man ls` )
- `pwd ` : Use the **pwd** command to find out the path of the current working directory (folder) you’re in
- `cd` : **c**hange **d**irectory to go inside a new directory
- `ls` : **l**i**s**t the current directory content
- `cp` : to **c**o**p**y documents / folders
- `mv`: to **m**o**v**e documents / folder
- `mkdir`: **m**a**k**e **dir**ectory create a folder
- `touch`: create an empty file
- `rm` : **r**e**m**ove folder and files ***⚠*** no return possible / read and think twice before smashing <key> enter </key>
- `find`: to find / search for files
### system stuffs
- `sudo` : **s**uper **u**ser **do** get super privileges to do system stuff ***⚠*** `sudo` can do **ANYTHING** , even destroy system
- `du` : **d**isk **u**sage ... to see .. disk usage ( use it with `-h` argument for human readable output )
- `top` and `htop` : to monitor system ( application / ram / cpu usage)
- `killall` : kill a process by name e:`killall firefox` will quit and kill all *firefix* process
- `uname ` : view system information ( kernel / linux version ....)
- `sudo reboot` : restart computer ( must be `sudo` to execute )
- `sudo halt` || `sudo shutdown now` : shutdown computer ( must be `sudo`)
### general help
- <key>ctrl</key> + <key>r</key> : search in history for already used commands
- <key>ctrl</key> + <key>c</key> : **kill** running command
- list of softwares : [go to page](soft.html)
## mjpeg-streamer ( video server )
```https://github.com/jacksonliam/mjpg-streamer```
[github project page](https://github.com/jacksonliam/mjpg-streamer)
***⚠*** don't follow the instructions during this class ( installation already done )
- after install
- add your user to `video` group
~~~bash
usermod -a -G video $USER
~~~
this will give your user to access camera equipement
- logout and back in
- go have a look
- start server
~~~bash
cd ~/mjpg-streamer/mjpg-streamer-experimental && ./mjpg_streamer -o "output_http.so -w ./www" -i "input_raspicam.so"
~~~
- go check
~~~bash
#in a local network
http://IP_FOR_THE_RASPBERRY_PI:8080/?action=stream
#in that case with dyndns service ( duckdns ) and port redirection ( 666 -> 8080)
http://er401.duckdns.org:666/?action=stream
~~~
# getting started with python
==underconstruction==
![uc](https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fi.pinimg.com%2Foriginals%2F0b%2F12%2Fd9%2F0b12d9ff85bf365bc7acde04a992d938.gif&f=1&nofb=1)
just some code to try
~~~python
import time
import math
x = 0
try :
while True:
x = x+1
time.sleep(0.5)
print(" la vlaeur de x est de = {}".format(x))
if x>100:
x=0
except KeyboardInterrupt:
print('Hello user you have pressed ctrl-c button.')
~~~

@ -0,0 +1,678 @@
---
title: RESSOURCES
author: zvevqx
published: 2023-11-22
cat: various
desc: ws
...
## coding
### learning
**![](pages/ressources/python.png)**
**Dive into python**
- reference historique
- tres complet
- disponible en plusieurs langue
[https://diveintopython3.net/](https://diveintopython3.net/)
**lear X in Y minutes**
- touts les languages sous forme d'une page *help*
- bon moyen de comprendre
- support aide memoire
[https://learnxinyminutes.com/](https://learnxinyminutes.com/)
**CodingBat**
- `python` et `java`
- suites d'exercices corrige
- console python integre au site
[https://codingbat.com/python](https://codingbat.com/python)
**CodeCademy**
- formation a `python2` gratuite
- multiple parcours d'apprentissage
<mark> Service payant apres une periode de test et suivant les formations </mark>
[https://www.codecademy.com/learn/learn-python](https://www.codecademy.com/learn/learn-python)
### language
*![](pages/ressources/arduino.jpg)*
**Arduino**
![](pages/ressources/arduino.png)
- easy to learn
- grande communautee
- enormement de ressources et aide en ligne
programation `hardware` sur des cartes de developpement du mm nom
**![](pages/ressources/arduino_brd.jpeg)**
[https://www.arduino.cc/en/Guide/ArduinoUno](https://www.arduino.cc/en/Guide/ArduinoUno)
*![](pages/ressources/processing_ico.png)*
**processing**
![](pages/ressources/processing.png)
> Processing is a flexible software sketchbook and a language for learning how to code within the context of the visual arts.
- base sur Java
- beaucoup de librairie et d'integration possible (ex : `arduino` via `firmata`)
- enormement de ressources et aide en ligne
[https://processing.org/](https://processing.org/)
[getting started](https://processing.org/tutorials/)
*![](pages/ressources/pd_logo.jpg)*
**PureData**
![](pages/ressources/pd.png)
- programation visuel / nodal
- grande communautee
- traiment image / video
- creation musicale
pendant `open-source` de `max-msp`
[https://puredata.info/](https://puredata.info/)
### IDE
#### python
*![](pages/ressources/python.png)*
**Thonny**
![thonny](pages/ressources/thonny.png)
- `I.D.E` pour debutant
- multi OS ( `linux`, `osx`, `win`)
- interface graphique pour `pip`
[https://thonny.org/](https://thonny.org/)
*![](pages/ressources/python.png)*
**idle**
![iddle](pages/ressources/iddle.png)
- ide pour et par `python`
- console `python`
[https://docs.python.org/3/library/idle.html](https://docs.python.org/3/library/idle.html)
*![programiz](pages/ressources/programiz.png)*
**programiz Online compiler**
![programiz](pages/ressources/programizIde.png)
- ide pour et par `python`
- console `python`
[https://docs.python.org/3/library/idle.html](https://docs.python.org/3/library/idle.html)
## software ressource
### 2D drawing / plan / edition
*![](pages/ressources/inskape_ico.png)* **INKSCAPE**
![](pages/ressources/inkscape.jpg)
*licence* : free / opensource
*os* : linux / osx / win
*use* vector graphic design software - illustrator like
>
- illustration / logo / plan for cnc and laser cut
- could be use as gcode generator with **plugin**
- lots of avialable plugin (box / gear / puzzle creation )
- import `.ai` from illustrator
[inkscape web site ](https://inkscape.org/en/)
[getting started ](https://inkscape.org/en/learn/)
*![](pages/ressources/librecad_ico.png)* **libreCad**
![](pages/ressources/libreCad.png)
*licence* free / opensource
*os* linux / osx / win
*use*: Cad drawing / techinical - autocad like
>
- create multiple `DXF` version to export
[libreCad web site ](https://librecad.org/)
[getting started ](https://wiki.librecad.org/index.php?title=Main_Page)
*![](pages/ressources/qcad_ico.jpeg)* **Qcad**
![](pages/ressources/qcad.jpg)
*licence* opensource / not Free (*free version avialable*)
*os* linux / osx / win
*use* Cad drawing / technical drawing ) - autocad like
>
- import / export `dwg`
- isometric tools
- active developpement and plugin
- `CAM` plugin for Gcode generation
[Qcad web site ](https://www.qcad.org/en/)
[getting started ](https://www.qcad.org/doc/qcad/latest/reference/en/)
*![](pages/ressources/gimp_ico.jpeg)* **Gimp**
![](pages/ressources/gimo.png)
*licence* free / opensource
*os* linux / osx / win
*use* image manipulation / pixel drawing - photoshop like
>
- layer and mask
- actively devellope
[gimp web site ](https://www.gimp.org/)
[getting started ](https://www.gimp.org/tutorials/)
*![](pages/ressources/krita.png)* **krita**
![](pages/ressources/krita_ss.png)
*licence* free / opensource
*os* linux / osx / win
*use*: Dessin / annimation / illustration
>
- gestion de palette graphique
- systeme d'animation frame par frame
[libreCad web site ](https://krita.org/en/)
[getting started ](https://wiki.librecad.org/index.php?title=Main_Page)
*![](pages/ressources/scribus_ico.jpeg)* **Scibus**
![](pages/ressources/scribus2.png)
*licence* free / opensource
*os* linux / osx / win
*use* print and book making / edition sofware - inDesign like
>
- prepress tool
- gabarit
[scribus website ](https://www.scribus.net/)
[getting started ](https://wiki.scribus.net/canvas/Help:TOC)
### 3d software
*![](pages/ressources/blender_ico.png)* **Blender**
![](pages/ressources/blender.png)
*licence* free / opensource
*os* linux / osx / win
*use* 3d Modeling / animation / image creation.
>
- light and powerfull
- lots of ressources online
- news 3d printing pannel
- all include (modeling texturing rendrering )
- can bu use to generate 3d gcode with `blenderCam` <mark>only' on specific blender version</mark>
[blender website ](https://www.blender.org/)
[getting started ](https://www.blender.org/support/tutorials/)
*![](pages/ressources/openscad_ico.jpeg)* **OpenScad**
![](pages/ressources/openscad.jpeg)
*licence* free / opensource
*os* linux / osx / win
*use* 3d Modeling / part creation /
<mark>code generated drawing</mark>
>
- light and powerfull
- parametric solid modeling
[openscad website ](http://www.openscad.org/)
[getting started ](http://www.openscad.org/documentation.html)
*![](pages/ressources/freecad_ico.jpeg)* **FreeCad**
![](pages/ressources/freecad.jpeg)
*licence* free / opensource
*os* linux / osx / win
*use* 3d drawing / parametric design / part creation
>
- 2d / 3d software included
- parametric solid modeling
- new `path` workbench for Gcode creation (cnc)
[freecad website ](https://www.freecadweb.org/)
[getting started ](https://www.freecadweb.org/wiki/Getting_started)
*![](pages/ressources/fusion_ico.jpeg)* **fusion360 autodesk**
![](pages/ressources/fusion.jpeg)
*licence* mountly plan / close source / *student free version*
*os* ~~linux~~ / osx / win
no plan for a `linux` version.
*use* 3d Modeling / part creation / parametric
>
- powerfull
- parametric solid modeling
- widely used
- `CAM` module include
[autodesk Fusion360 website ](https://www.autodesk.com/products/fusion-360/students-teachers-educators)
*![](pages/ressources/tinker_ico.png)* **tinkerCad**
![](pages/ressources/tinkercad.jpg)
*licence* free / plan
*os* Web Browser based
*use* 3d Modeling / part creation /
>
- online / no installation require
- parametric solid modeling
[tinkercad web site ](https://www.tinkercad.com/)
[getting started ](https://www.tinkercad.com/learn/)
### CAM / machine control
#### CNC / Laser
*![](pages/ressources/laserweb_ico.png)* **LaserWeb4**
![](pages/ressources/laserweb.png)
*licence* free / opensource
*os* linux / osx / win
*use* Cnc / laser gcode creation & machine control (GBRL 1.1f min)
>
- light and powerfull
- All include
- easy to use
- control both *CNC* and *Laser* (`GRBL` based)
[laserWeb4 gitHub page ](https://github.com/LaserWeb/LaserWeb4)
**MakerCAM**
![](pages/ressources/makercam-profile.png)
*licence* free
*os* webBrowser app
*use* CNC 2.5D gcode generator
<mark>need FLASH to operate</mark>
>
- simple and easy to use
- may cause problem in mm due to too much decimal. can be fix with python script [truncate](https://github.com/jhessig/metric-gcode-truncator)
[makercam website ](http://makercam.com)
*![](pages/ressources/bcnc_ico.JPG)* **Bcnc**
![](pages/ressources/bCNC.png)
*licence* free / openSource
*os* linux / osx / windows
*use* CNC 2.5D gcode generator
base on `python`
>
- lot of feature (bed leveling /gcode editor / gcode generator / various tools )
- grbl Based machine (`1.1f` min)
[Bcnc gitHub Page ](https://github.com/vlachoudis/bCNC)
#### 3D print
*![](pages/ressources/cura.png)* **Cura**
![](pages/ressources/cura.jpg)
*licence* free / openSource
*os* linux / osx / windows
*use* Generate 3d printer gcode file and control
>
- lots of predefine printer parametre
- lots of users
[ultimaker Cura website ](https://ultimaker.com/en/products/ultimaker-cura-software)
*![](pages/ressources/sllicer_ico.jpeg)* **Slic3r**
![](pages/ressources/slicer.jpg)
*licence* free / openSource
*os* linux / osx / windows
*use* Generate 3d printer gcode file and control
>
- offert full control on parameter
- lots of users and documentation
- really good new feature in the prusa edition
<mark>the new version is now from Prusa research</mark>
[Slic3r Official website ](http://slic3r.org)
[Slic3r Prusa edition website ](https://www.prusa3d.com/slic3r-prusa-edition/)
*![](pages/ressources/octoprint_ico.png)* **Octoprint**
![](pages/ressources/octo-main.png)
*licence* free / openSource
*os* linux / osx / windows
*use* Print server for 3d printer / printer control / gcode creation from server (cura 1.5 || slicer )
>
- full printer monitoring
- pugin to add functionality
- run on a `raspberryPi` and doest require a laptop or sd cad to operate machine (all can be done via local network)
[octoprint website](https://octoprint.org/)
## objet ressource and download
### 3dprint / cnc / laser files
**thingiverse**
- 3d files (stl) objet and part
- laser and cnc objet and part
- some parametric model (*openScad*)
[thingiverse](https://www.thingiverse.com/)
**youimagine**
- 3d files (stl) objet and part
- laser and cnc objet and part
[youimagine](https://www.youmagine.com/)
**myminifactory**
- 3d files ready to print
[myminifactory](https://www.myminifactory.com/)
### Tutorial / howto
**instructable**
- all the tutorial you can think of
- arduino
- diy
- robot ...
[instructable ](https://www.instructables.com/)
### VARIOUS ONLINE RESSOURCES
`Posted by u/morphfiend`
#### Fusion360
- Lars Christensen - [https://www.youtube.com/user/cadcamstuff/playlists](https://www.youtube.com/user/cadcamstuff/playlists)
- Start with the basics - [https://www.youtube.com/playlist?list=PLmA_xUT-8UlLmTvSAketheHaNQWxNA5yT](https://www.youtube.com/playlist?list=PLmA_xUT-8UlLmTvSAketheHaNQWxNA5yT)
- Quick Tips &amp; Best practices - [https://www.youtube.com/playlist?list=PLmA_xUT-8UlIh4hHJDCEDLPi3wQiMrPRY](https://www.youtube.com/playlist?list=PLmA_xUT-8UlIh4hHJDCEDLPi3wQiMrPRY)
- Fusion 360 in 90 minutes - [https://academy.autodesk.com/course/129267/introduction-cad-learn-fusion-360-90-minutes](https://academy.autodesk.com/course/129267/introduction-cad-learn-fusion-360-90-minutes)
- Autodesk Academy - [https://academy.autodesk.com/software/fusion-360](https://academy.autodesk.com/software/fusion-360)
- Fusion 360 Parameters - [http://help.autodesk.com/view/fusion360/ENU/?guid=GUID-76272551-3275-46C4-AE4D-10D58B408C20](http://help.autodesk.com/view/fusion360/ENU/?guid=GUID-76272551-3275-46C4-AE4D-10D58B408C20)
#### OnShape
- OnShape Tutorials - [https://www.onshape.com/videos/topic/tutorials](https://www.onshape.com/videos/topic/tutorials)
- OnShape Tech Tips - [https://www.onshape.com/videos/topic/tech-tips](https://www.onshape.com/videos/topic/tech-tips)
- CADSessions - [https://www.youtube.com/channel/UCVkrWFAz_F9mYhs3Q1V7ahA/video](https://www.youtube.com/channel/UCVkrWFAz_F9mYhs3Q1V7ahA/video)
#### OpenSCAD
- Cheat sheet - [http://www.openscad.org/documentation.html](http://www.openscad.org/documentation.html)
- Paul Randall (does OpenSCAD and freecad) - [https://www.youtube.com/channel/UCnxMaGMCrWAQgwF61ISRpGw/](https://www.youtube.com/channel/UCnxMaGMCrWAQgwF61ISRpGw/)
- OpenSCAD beginners tutorial - [http://edutechwiki.unige.ch/en/OpenScad_beginners_tutorial](http://edutechwiki.unige.ch/en/OpenScad_beginners_tutorial)
#### Rhino 3D
- Basics - [http://www.rhino3d.com/getting-started](http://www.rhino3d.com/getting-started)
- Preparing for 3D Printing - [https://wiki.mcneel.com/rhino/3dprinting](https://wiki.mcneel.com/rhino/3dprinting)
- Prepare your model for 3D Printing with Rhinoceros - [https://www.sculpteo.com/en/tutorial/prepare-your-model-3d-printing-rhinoceros/](https://www.sculpteo.com/en/tutorial/prepare-your-model-3d-printing-rhinoceros/)
- Advanced Rhino and Grasshopper recorded college classes - [https://www.youtube.com/user/nsenske/playlists](https://www.youtube.com/user/nsenske/playlists)
#### FreeCAD
- FreeCAD tutorials - [https://www.freecadweb.org/wiki/Category:Tutorials](https://www.freecadweb.org/wiki/Category:Tutorials)
- cad1919 (It is in a different language but uses graphics to help )- [https://www.youtube.com/user/cad1919/playlists](https://www.youtube.com/user/cad1919/playlists)
- Invent Box Tutorials - [https://www.youtube.com/playlist?list=PL2935W76vRNFvUGefQr3q9P9eezJZyj-u](https://www.youtube.com/playlist?list=PL2935W76vRNFvUGefQr3q9P9eezJZyj-u)
### 3D Modeling
#### Blender 2.7
- BlenderGuru - [https://www.blenderguru.com](https://www.blenderguru.com)
- Blendtuts - [https://www.blendtuts.com/tutorials/](https://www.blendtuts.com/tutorials/)
- CGCookies Blender Basics - [https://cgcookie.com/course/blender-basics](https://cgcookie.com/course/blender-basics)
- GameDevTV Complete Blender Course(Paid)- [https://www.udemy.com/blendertutorial/](https://www.udemy.com/blendertutorial/)
- Blender Tutorial - [https://www.blender.org/support/tutorials/](https://www.blender.org/support/tutorials/)
- Blender Fundamentals - [https://www.youtube.com/playlist?list=PLa1F2ddGya_8V90Kd5eC5PeBjySbXWGK1](https://www.youtube.com/playlist?list=PLa1F2ddGya_8V90Kd5eC5PeBjySbXWGK1)
#### Blender 2.8
- YanSculpts - [https://www.youtube.com/playlist?list=PLvPwLecDlWRD_VK_2INC1VQ18dZdpDwLi](https://www.youtube.com/playlist?list=PLvPwLecDlWRD_VK_2INC1VQ18dZdpDwLi)
- BlenderGuru 2.8 - [https://www.youtube.com/playlist?list=PLjEaoINr3zgH1JI7FtPX_Q9OGFhP-HCUV](https://www.youtube.com/playlist?list=PLjEaoINr3zgH1JI7FtPX_Q9OGFhP-HCUV)
- CG Masters (Paid) - [https://cgmasters.net/training-courses/hard-surface-modeling-in-blender/](https://cgmasters.net/training-courses/hard-surface-modeling-in-blender/)
#### 3ds Max
- TopHATTwaffle - [https://www.youtube.com/playlist?list=PL-454Fe3dQH1WKJEL96bzelfn_2pxYjgf](https://www.youtube.com/playlist?list=PL-454Fe3dQH1WKJEL96bzelfn_2pxYjgf)
- Autodesk 3ds max learning channel - [https://www.youtube.com/user/3dsMaxHowTos/playlists](https://www.youtube.com/user/3dsMaxHowTos/playlists)
- Autodesk getting started in 3ds Max - [https://area.autodesk.com/tutorials/series/getting-started-in-3ds-max-2018/](https://area.autodesk.com/tutorials/series/getting-started-in-3ds-max-2018/)
- Edge3Dcgi - [https://youtu.be/Q_Ks3QdmfvA](https://youtu.be/Q_Ks3QdmfvA)
- Arrimus 3d - [https://www.youtube.com/playlist?list=PLxt9ZAGPLIpeB8TcHrpzxvEI4Ve3SfZBC](https://www.youtube.com/playlist?list=PLxt9ZAGPLIpeB8TcHrpzxvEI4Ve3SfZBC)
#### 3D Sculpting
Blender Sculpting
- Grant Abbitt - [https://youtu.be/L3XtAFUWNuk](https://youtu.be/L3XtAFUWNuk)
- YanSculpts - [https://youtu.be/N4D6F7mhi4I](https://youtu.be/N4D6F7mhi4I)
#### Sculptrius
- pixologic (near the bottome of the page) - [http://pixologic.com/sculptris/](http://pixologic.com/sculptris/)
- Mr.Brooks - [https://vimeo.com/61128359](https://vimeo.com/61128359)
- Sculptris cheat sheet - [http://members.casema.nl/jw.v.dronkelaar/sculptris_cheat_sheet.pdf](http://members.casema.nl/jw.v.dronkelaar/sculptris_cheat_sheet.pdf)
#### 3DCoat
- alienminefield - [https://www.youtube.com/playlist?list=PL17Z03Lf1lyKZsHLvg27ZP0kzVR_mvLpX](https://www.youtube.com/playlist?list=PL17Z03Lf1lyKZsHLvg27ZP0kzVR_mvLpX)
- 3dcoat learn - [https://3dcoat.com/learn/](https://3dcoat.com/learn/)
- gamedev the pipline - [https://youtu.be/_Mw3yv3hk38](https://youtu.be/_Mw3yv3hk38)
- Pluralsight (Paid) - [https://www.pluralsight.com/courses/3d-coat-getting-started-2487](https://www.pluralsight.com/courses/3d-coat-getting-started-2487)
#### zBrush
- ZClassroom - [https://pixologic.com/zclassroom/](https://pixologic.com/zclassroom/)
- Zbrushtuts - [http://zbrushtuts.com/](http://zbrushtuts.com/)
- Zbrush for beginners - [https://www.youtube.com/watch?v=PO--0h8XHiw](https://www.youtube.com/watch?v=PO--0h8XHiw)
- Edge-CGI 3D tutorials - [https://www.youtube.com/user/Edge3Dcgi/playlists](https://www.youtube.com/user/Edge3Dcgi/playlists)
- Twitch for Pixologic - [https://www.twitch.tv/pixologic](https://www.twitch.tv/pixologic)
- flippednormals - [https://youtu.be/_yKGfcp2z3k](https://youtu.be/_yKGfcp2z3k)
#### Covers multiple pieces of software
- Gnomon workshop (Paid) - [https://www.thegnomonworkshop.com/](https://www.thegnomonworkshop.com/)
#### Special caseMeshmixer
- Maker's Muse - [https://youtu.be/C9VDKb3W4qA](https://youtu.be/C9VDKb3W4qA)
- Teaching Tech - [https://youtu.be/3GGnwDCFfv0](https://youtu.be/3GGnwDCFfv0)
- Sculpteo - [https://youtu.be/WwIM4Fp2SgA](https://youtu.be/WwIM4Fp2SgA)

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1022 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 157 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 491 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 313 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 576 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 155 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 318 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 185 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 138 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 167 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 206 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 368 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

@ -0,0 +1,83 @@
title : Raspberry pi headless setup 2023
author: zvevqx
published: 2023-09-23
cat: linux
desc: base commands to setup a rasbperrypi headless as rasbian 2023
...
main source
[https://www.raspberrypi.com/news/raspberry-pi-bullseye-update-april-2022/](https://www.raspberrypi.com/news/raspberry-pi-bullseye-update-april-2022/)
# Flashing the SD card
## the cli way on linux
*you will need:*
- sdcard (8go min)
- sdcard reader
*findind your sd card on the system*
use the `lsblk` command to get the path to your sd card
on Unix system (`linux`,`osx`) it sould look like : `/dev/sdX`
if not sure execute `lsblk` with and without the sdcard inserted and compare
### download os
download the proper version from Raspberry pi website [link to website](https://www.raspberrypi.com/software/operating-systems/)
### burn it to the sd card with the `dd` command
🚨 this operation need `sudo` privileges ... be carefull
`sudo dd if=PATH/TO/YOUR/IMAGEFILE.img of=PATH/TO/YOUR/SDCARD status=progress oflag=sync`
and wait
***done🤞***
## The Gui way
download and install `rpi-imager` software on your computer and follow allong
for linux
`sudo apt install rpi-imager`
link [https://www.raspberrypi.com/software/](https://www.raspberrypi.com/software/)
---
# Enable `ssh`
create an ampty file on the `bootfs` partition of the sd card
cli
` touch /PATH/TO/THE/PARTITION/ssh`
---
# Create user and password
Use `OpenSSL` to encrypt a password:
`echo 'raspi_users_password' | openssl passwd -6 -stdin`
Create a file named `userconf` in the root directory of the SD card’s boot partition
` touch /PATH/TO/THE/PARTITION/userconf`
Add a line of text to the new file in the following format: `username:encrypted_password`
where username is the username you want to use to log in to the Rpi, and encrypted_password is the string generated with OpenSSL.
example
`julien:we342swe4422e@343w44@4453@3456`

@ -0,0 +1,91 @@
title : software
author: zvevqx
published: 2021-11-22
cat: linux
desc: ws
...
## wip list of software to look at
## cli tools
**potrace**:
vectorisation tool ( like vetorisation dynamique in `illustrator` )
[potrace website](http://potrace.sourceforge.net/)
**imagemagick**:
swiss army knife image modification ( batch ... )
[imagemagick website](https://imagemagick.org/index.php)
## WM / DE
**i3vm**:
light window manager full option see also i3gap
**dwm**:
[suckless.org](suckless.org) ultralight wm
## File manager
### command line
**nnn**:
ultra light file manager [nnn github](https://github.com/jarun/nnn)
**ranger**:
python light file manager
**mc**:
midnight commander cli
### gui
**pcmanfm**:
light and fast fm
**krusader**:
Mc like fm
## Web browser
### cli
**lynkx**:
cli web browser
### gui
**surf**:webkit based simple webbroser by [suckless.org](suckless.org)
**quteBrowser**:
keyboard driven web browser [website](https://qutebrowser.org)
## images viewers
**sxiv**:
simple X images viewer
**Feh**:
light image viewer
**zathura**:
light pdf / eps / gs viewer
## various tools
**SCIM**:
Vim based Speadsheet editor
**Entr**:
pipe automatisation for almost everything
**Calcurse**:
calc and todo list in cli with vim binding

@ -0,0 +1,38 @@
title : galerie test
author: zvevqx
published: 2021-11-22
cat: template
desc: ws
...
# mon titre
![bliblabouuuu](https://cdn3.photoblogstop.com/wp-content/uploads/2012/07/Sierra_HDR_DFX8048_2280x819_Q40_wm_mini-1726x819__-1140x541.jpg)
Her father remarried while at Burma and Kuntala returned to Odisha with her Mother. She settled in Khurdha with her mother after returning from Burma. In spite of total lack of women's education her mother's perseverance allowed her to receive a good education. She studied from Ravenshaw Girls High School and continued her education in Orissa Medical School, Cuttack (Now Srirama Chandra Bhanja Medical College and Hospital). She earned her L.M.P (Licentiate Medical Practitioners) degree in 1921 with a gold medal. She was fluent in Odia, Hindi, Bengali, English and Burmese.[5] Her father remarried while at Burma and Kuntala returned to Odisha with her Mother. She settled in Khurdha with her mother after returning from Burma. In spite of total lack of women's education her mother's perseverance allowed her to receive a good education. She studied from Ravenshaw Girls High School and continued her education in Orissa Medical School, Cuttack (Now Srirama Chandra Bhanja Medical College and Hospital). She earned her L.M.P (Licentiate Medical Practitioners) degree in 1921 with a gold medal. She was fluent in Odia, Hindi, Bengali, English and Burmese.[5] Her father remarried while at Burma and Kuntala returned to Odisha with her Mother. She settled in Khurdha with her mother after returning from Burma. In spite of total lack of women's education her mother's perseverance allowed her to receive a good education. She studied from Ravenshaw Girls High School and continued her education in Orissa Medical School, Cuttack (Now Srirama Chandra Bhanja Medical College and Hospital). She earned her L.M.P (Licentiate Medical Practitioners) degree in 1921 with a gold medal. She was fluent in Odia, Hindi, Bengali, English and Burmese.[5] Her father remarried while at Burma and Kuntala returned to Odisha with her Mother. She settled in Khurdha with her mother after returning from Burma. In spite of total lack of women's education her mother's perseverance allowed her to receive a good education. She studied from Ravenshaw Girls High School and continued her education in Orissa Medical School, Cuttack (Now Srirama Chandra Bhanja Medical College and Hospital). She earned her L.M.P
some code ( add 1 **tab** before every line )
def Liste_cat():
articles = (p for p in pages if 'published' in p.meta)
catList = []
for a in articles:
catList.append(a.meta['cat'])
catList = list(dict.fromkeys(catList))
return catList
[un lien](https://google.com)
- lest
- tewt
- trie
yyEach of these objects is associated to a path: the slash-separated (whatever the OS) name of the file it was loaded from, relative to the pages root, and excluding the extension. For example, for an app in

Binary file not shown.

After

Width:  |  Height:  |  Size: 534 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 266 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

@ -0,0 +1,107 @@
title : VIM basics
author: zvevqx
published: 2025-11-22
cat: linux
desc: ws
...
👾 MOST OF THIS PAGE IS DIRECT OUTPUT OF CHATGPT 3.5
# Vim Editor
Vim is a powerful and popular text editor that runs in the command-line interface. It is known for its efficient and customizable editing features that allow users to edit text with speed and precision.
# Main Vim Operations
| Operation | Shortcut | Description |
|-------------------------|---------------------------|----------------------------------------------------|
| **Navigation** | | |
| Move left | `h` | Move the cursor left. |
| Move down | `j` | Move the cursor down. |
| Move up | `k` | Move the cursor up. |
| Move right | `l` | Move the cursor right. |
| Move forward one word | `w` | Move forward one word. |
| Move backward one word | `b` | Move backward one word. |
| Move to end of line | `$` | Move to the end of the current line. |
| Move to beginning | `0` | Move to the beginning of the current line. |
| Move to end of file | `G` | Move to the end of the file. |
| Move to beginning of file | `gg` | Move to the beginning of the file. |
| Move to specific line | `<line_number>G` | Move to a specific line number. |
| Move to matching bracket| `%` | Move to the matching parenthesis, bracket, or brace.|
| Move to paragraph start | `{` | Move to the beginning of the current paragraph. |
| Move to paragraph end | `}` | Move to the end of the current paragraph. |
| Move half a page up | `Ctrl+u` | Move half a page up. |
| Move half a page down | `Ctrl+d` | Move half a page down. |
| **Editing** | | |
| Insert before cursor | `i` | Insert text before the cursor. |
| Insert at line start | `I` | Insert text at the beginning of the current line. |
| Append after cursor | `a` | Append text after the cursor. |
| Append at line end | `A` | Append text at the end of the current line. |
| Open line below cursor | `o` | Open a new line below the current line and enter insert mode. |
| Open line above cursor | `O` | Open a new line above the current line and enter insert mode. |
| Delete character | `x` | Delete the character under the cursor. |
| Delete current line | `dd` | Delete the current line. |
| Yank (copy) current line| `yy` | Yank (copy) the current line. |
| Paste after cursor | `p` | Paste the yanked text after the cursor. |
| Paste before cursor | `P` | Paste the yanked text before the cursor. |
| Undo | `u` | Undo the last change. |
| Redo | `Ctrl+r` | Redo the last change. |
| **Search and Replace** | | |
| Search forward | `/search_term` | Search forward for "search_term." |
| Search backward | `?search_term` | Search backward for "search_term." |
| Move to next search result | `n` | Move to the next search result. |
| Move to previous search result | `N` | Move to the previous search result. |
| Replace on current line | `:s/search_term/replacement`| Replace "search_term" with "replacement" on the current line. |
| Global replace | `:%s/search_term/replacement/g` | Replace "search_term" with "replacement" globally in the file. |
| Turn off search highlighting | `:noh` | Turn off search result highlighting. |
| **Saving and Quitting** | | |
| Save | `:w` | Save the current file. |
| Save as | `:w filename` | Save the current file as "filename." |
| Quit | `:q` | Quit Vim. |
| Quit without saving | `:q!` | Quit Vim without saving changes. |
| Save and quit | `:wq` | Save changes and quit Vim. |
| **Visual Mode** | | |
| Enter visual mode | `v` | Enter visual mode to select text. |
| Enter visual line mode | `V` | Enter visual line mode to select lines. |
| Enter visual block mode | `Ctrl+v` | Enter visual block mode to select rectangular blocks of text. |
## some more advance mouvments
# Page and Line Movement Shortcuts in Vim
Vim provides a rich set of keyboard shortcuts for efficient page and line movement within a text document. Below is a table of these shortcuts:
| Shortcut | Description |
|------------------------|---------------------------------------------------|
| **Page Movement** | |
| Page down | `Ctrl+f` or `Space` |
| Page up | `Ctrl+b` or `Ctrl+u` |
| Half a page down | `Ctrl+d` |
| Half a page up | `Ctrl+u` |
| Go to next page | `Ctrl+d` or `Ctrl+f` |
| Go to previous page | `Ctrl+u` or `Ctrl+b` |
| **Line Movement** | |
| Move to beginning of line | `0` or `^` |
| Move to end of line | `$` |
| Move to next line | `j` or `↓` |
| Move to previous line | `k` or `↑` |
| Move down by `n` lines | `n` + `j` or `n` + `↓` |
| Move up by `n` lines | `n` + `k` or `n` + `↑` |
| Move to specific line | `:<line_number>` or `G` + `g` + `:<line_number>` |
| **Scrolling** | |
| Scroll the screen up | `Ctrl+y` |
| Scroll the screen down | `Ctrl+e` |
| Center the screen | `Ctrl+l` |
| Move to the top | `H` |
| Move to the middle | `M` |
| Move to the bottom | `L` |
| **Jumping** | |
| Jump to beginning of file | `gg` |
| Jump to end of file | `G` |
| Jump to line in the middle | `M` + `G` |
| Jump to last edit | `'` + `.` |

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 260 KiB

@ -0,0 +1,33 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>to do this - do that </title>
<link rel="stylesheet" type="text/css" href="{{url_for('static', filename='style.css')}}">
</head>
<body>
{% include 'menu.html' %}
<div id="articles">
<ul>
{% for article in articles %}
<li>
<a href="{{ url_for('index', _external=False) }}{{ article.path }}">
<h2 class="{{article.cat}}">{{article.title}}</h2>
</a>
<span class="categorie"><a href="{{ url_for('index', _external=False) }}cat/{{article.cat}}">{{article.cat}}</a></span>
<span class="author"><a href="{{ url_for('index', _external=False) }}author/{{article.author}}">{{ article.author }}</a></span>
<span class="date">{{ article.published }}</span>
</li>
{% endfor %}
</ul>
</div>
<script src="index.js"></script>
</body>
</html>

@ -0,0 +1,21 @@
$(document).ready(function(){
wimg = $(".img_container").width();
console.log(wimg);
$(".img_container").css("height",wimg);
$(window).resize(function(){
wimg = $(".img_container").width();
console.log(wimg);
$(".img_container").css("height",wimg);
})
$('#gal .img_container img').click(function(){
// $(" #gal .img_container").removeClass("fullImg");
$(this).parent().toggleClass("fullImg");
});
})

@ -0,0 +1,52 @@
@import url('https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,400;0,500;0,800;1,400&display=swap');
body{
font-family: 'Open Sans', sans-serif;
}
a {
text-decoration : none ;
color : #000;
}
#works {
display : grid ;
grid-template-columns: 1fr 1fr 1fr 1fr 1fr;
//column-gap: 10px;
//row-gap : 10px;
}
.work{
position:relative;
overflow:hidden;
}
#works .work .wimg {
height : 250px;
overflow:hidden;
display:grid;
}
#works .work .wimg img {
width : 130%;
place-self: center;
}
.wdesc {
background:rgba(255,255,255,0.5);
border-radius: 10px;
position: absolute;
left : -100%;
padding :10px;
bottom:20px;
transition : all 0.3s linear ;
opacity : 0 ;
}
.work:hover .wdesc {
left:10px;
opacity : 1 ;
}

@ -0,0 +1,345 @@
@import url('https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,400;0,500;0,800;1,400&display=swap');
@import url("https://cdn.jsdelivr.net/npm/bootstrap-icons@1.10.3/font/bootstrap-icons.css");
@import url('https://fonts.googleapis.com/css2?family=Fira+Code:wght@400;500;600&display=swap');
*{
font-family:'Fira Code';
}
body{
margin:0;
padding:0;
font-size : 10px;
font-family:'Fira Code';
}
#menu {
display: grid;
grid-template-columns: 8fr 2fr;
}
@media (max-width: 1080px) {
#menu {
grid-template-columns: 1fr;
margin-bottom:40px
}
}
#menu ul {
list-style: none;
margin:0;
padding:10px 20px;
}
#menu ul li {
display:inline-block;
margin-right:20px;
}
#menu ul li:first-of-type {
font-size:2em;
}
#menu ul li a{
color: #000000;
text-decoration : none;
font-size : 2em;
}
#menu div form{
display: grid;
grid-template-columns: 8fr 2fr;
padding: 10px;
}
#menu div form input{
/* border:1px solid; */
border-radius: 10px;
font-size: 2em;
text-align: center;
color: #000;
box-shadow: -1px -1px 1px -3px rgba(0,0,0,0.77) inset ,
1px 1px 1px -3px rgba(250,250,250,0.87) inset ;
background: #fefefe;
text-transform: uppercase;
}
#menu div form input:focus-visible{
outline: 1px solid #ddd;
box-shadow: 5px 5px 5px -2px rgba(0,0,0,0.47) inset ,
-5px -5px 5px -3px rgba(250,250,250,0.87) inset;
\
background: #fafafa;
}
#menu div form button{
margin-left:10px;
border-radius:10px;
font-size:3em;
}
#menu div form {
height: 100%;
}
a:hover{
color:#95a5a6 !important;
}
#articles ul {
list-style:none;
padding:0 0 0 0px;
}
#articles ul li{
font-size:1.5em;
padding:10px 0;
padding-left:20px;
border-bottom: 1px solid #000000;
}
#articles ul li h2{
display: inline-block;
margin:0;
font-size:1.5em;
padding-left:50px;
}
ul li h2{
position:relative;
}
ul li h2:before{
position:absolute;
text-align:center;
left:-20px;
top:0;
width:50px;
display:block;
font-size:1.3em;
line-height:1em;
}
.robot:before{
content:"🤖";
}
.various:before{
content:"💾";
}
.internet:before{
content:"🛰";
}
.linux:before{
content:"🐧";
}
#articles ul li a {
color : #000000;
text-decoration:none;
}
#articles ul li a:hover {
color : #0000ff;
}
#articles h2{
padding-right:20px;
}
#articles ul li span {
outline: 1px solid #000;
padding: 2px 10px;
border-radius:3px;
margin-left:10px;
}
#content-wrapper{
width:90%;
margin:auto ;
font-size:1.5em!important;
}
#content-wrapper p{
text-align:left;
margin-left:10px
}
#content-wrapper pre{
// font-size:2em;
color:#2c3e50;
background:#ecf0f1;
border-radius:3px;
padding:8px;
outline:3px #2c3e50 solid ;
overflow-x : auto ;
}
#content-wrapper code{
color:#2c3e50;
overflow-x : auto ;
font-family:monospace;
}
#content-wrapper h1{
font-size : 2.5em;
margin: 20px 0 0 -10px ;
}
#metad{
margin: 5px 0 30px 0;
}
#metad span {
font-size : 1em;
}
#metad span:after{
content:" / ";
margin: 0 0px 0 0px;
}
#metad .cat {
font-weight: bolder;
}
#metad .author {
font-style: italic;
}
#metad .date {
}
table {
border-collapse: collapse;
width: 100%;
margin-bottom: 20px;
}
th, td {
text-align: left;
padding: 8px;
border: 1px solid #ddd;
}
tr:nth-child(even) {
background-color: #f2f2f2;
}
th {
background-color: #000;
color: white;
}
img {
width:100%;
height:auto;
max-width: 1080px;
text-align: center;
display: block;
margin: auto;
}
//p img{
// width:150px;
// height:auto;
// float:left;
// margin: 20px;
//
//}
p strong img{
width:250px;
}
p em img{
width:150px;
float:right;
}
p{
line-height:1.2em;
margin-top:1.5em;
margin-bottom:1.5em;
text-align:justify;
// font-size:2em;
}
#gal {
display : grid ;
grid-template-columns: 1fr 1fr 1fr ;
column-gap: 10px;
row-gap: 10px;
}
.img_container {
position: relative;
overflow: hidden;
height: 120px;
display: grid;
align-content: center;
align-items: center;
justify-items: center;
justify-content: center;
align-items: center;
align-content: space-around;
}
.img_container img{
width:200%;
}
.fullImg{
grid-column: span 3;
height: auto!important;
}
.fullImg img{
width:100%;
}
key{
padding:1px 6px;
border:1px solid lightgrey;
border-radius: 5px;
box-shadow: 1px 1px 0px 1px rgb(120# 20# 20) ,
-1px -1px 0px 1px rgb(220 ## 20## 20);
background: #efefef;
background: rgb(185# 85# 85);
background: radial-gradient( rgba(200## 00# 90# ) 1%, rgba(225## 25## 25# ) 100%, rgba(185# 85# 85# ) 100%)
;
}
@media (max-width: 600px) {
#articles ul li span {
display:none;
}
#menu ul li:first-of-type {
outline: none;
width:100%;
}
#menu ul li {
outline: 1px solid #000;
padding: 2px 10px;
border-radius:3px;
margin-left:4px;
margin-bottom: 5px;
margin-right:0;
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 534 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 266 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 260 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 388 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 203 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

@ -0,0 +1,33 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>to do this - do that </title>
<link rel="stylesheet" type="text/css" href="{{url_for('static', filename='style.css')}}">
</head>
<body>
{% include 'menu.html' %}
<div id="articles">
<ul>
{% for article in articles %}
<li>
<a href="{{ url_for('index', _external=False) }}{{ article.path }}">
<h2 class="{{article.cat}}">{{article.title}}</h2>
</a>
<span class="categorie"><a href="{{ url_for('index', _external=False) }}cat/{{article.cat}}">{{article.cat}}</a></span>
<span class="author"><a href="{{ url_for('index', _external=False) }}author/{{article.author}}">{{ article.author }}</a></span>
<span class="date">{{ article.published }}</span>
</li>
{% endfor %}
</ul>
</div>
<script src="index.js"></script>
</body>
</html>

@ -0,0 +1,17 @@
<div id="menu">
<nav>
<ul>
<li><a href="{{ url_for('index', _external=False) }}">[[🧠]]</a></li>
{% for cat in catList : %}
<li><a href="{{ url_for('index', _external=False) }}cat/{{cat}}">{{cat}}</a></li>
{% endfor %}
<li><a href="{{ url_for('index', _external=False) }}info">info</a></li>
</ul>
</nav>
<div id="search-box">
<form action="/search" method="POST">
<input type="text" name="query" placeholder="Enter search query">
<button type="submit">~~></button>
</form>
</div>
</div>

@ -0,0 +1,37 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>tdtdt: {{page.title}} </title>
<link rel="stylesheet" type="text/css" href="{{url_for('static', filename='style.css')}}">
</head>
<body>
{% include 'menu.html' %}
<div id="content-wrapper">
<h1>{{ page.title }}</h1>
<div id="metad">
<span class="cat">{{ page.cat }}</span>
<span class="author">{{ page.author }}</span>
<span class="date">{{ page.published }}</span>
</div>
<div id="content">
{{ page }}
</div>
<div id="gal">
{% for img in imgs : %}
<div class = "img_container">
{% set img_url = page.path + '/' + img %}
<img src="pages/{{page.path}}/{{img}}"/>
</div>
{% endfor %}
</div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.3/jquery.min.js"></script>
<script src="{{url_for('static', filename='main.js')}}"></script>
</body>
</html>

@ -0,0 +1,24 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>log website</title>
<link rel="stylesheet" type="text/css" href="{{url_for('static', filename='style.css')}}">
</head>
<body>
{% include 'menu.html' %}
<div id="content-wrapper">
<h1>{{ page.title }}</h1>
<div id="content">
PAGE PAS SINGLE
{{ page }}
</div>
</div>
<script src="index.js"></script>
</body>
</html>

@ -0,0 +1,247 @@
<#
.Synopsis
Activate a Python virtual environment for the current PowerShell session.
.Description
Pushes the python executable for a virtual environment to the front of the
$Env:PATH environment variable and sets the prompt to signify that you are
in a Python virtual environment. Makes use of the command line switches as
well as the `pyvenv.cfg` file values present in the virtual environment.
.Parameter VenvDir
Path to the directory that contains the virtual environment to activate. The
default value for this is the parent of the directory that the Activate.ps1
script is located within.
.Parameter Prompt
The prompt prefix to display when this virtual environment is activated. By
default, this prompt is the name of the virtual environment folder (VenvDir)
surrounded by parentheses and followed by a single space (ie. '(.venv) ').
.Example
Activate.ps1
Activates the Python virtual environment that contains the Activate.ps1 script.
.Example
Activate.ps1 -Verbose
Activates the Python virtual environment that contains the Activate.ps1 script,
and shows extra information about the activation as it executes.
.Example
Activate.ps1 -VenvDir C:\Users\MyUser\Common\.venv
Activates the Python virtual environment located in the specified location.
.Example
Activate.ps1 -Prompt "MyPython"
Activates the Python virtual environment that contains the Activate.ps1 script,
and prefixes the current prompt with the specified string (surrounded in
parentheses) while the virtual environment is active.
.Notes
On Windows, it may be required to enable this Activate.ps1 script by setting the
execution policy for the user. You can do this by issuing the following PowerShell
command:
PS C:\> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
For more information on Execution Policies:
https://go.microsoft.com/fwlink/?LinkID=135170
#>
Param(
[Parameter(Mandatory = $false)]
[String]
$VenvDir,
[Parameter(Mandatory = $false)]
[String]
$Prompt
)
<# Function declarations --------------------------------------------------- #>
<#
.Synopsis
Remove all shell session elements added by the Activate script, including the
addition of the virtual environment's Python executable from the beginning of
the PATH variable.
.Parameter NonDestructive
If present, do not remove this function from the global namespace for the
session.
#>
function global:deactivate ([switch]$NonDestructive) {
# Revert to original values
# The prior prompt:
if (Test-Path -Path Function:_OLD_VIRTUAL_PROMPT) {
Copy-Item -Path Function:_OLD_VIRTUAL_PROMPT -Destination Function:prompt
Remove-Item -Path Function:_OLD_VIRTUAL_PROMPT
}
# The prior PYTHONHOME:
if (Test-Path -Path Env:_OLD_VIRTUAL_PYTHONHOME) {
Copy-Item -Path Env:_OLD_VIRTUAL_PYTHONHOME -Destination Env:PYTHONHOME
Remove-Item -Path Env:_OLD_VIRTUAL_PYTHONHOME
}
# The prior PATH:
if (Test-Path -Path Env:_OLD_VIRTUAL_PATH) {
Copy-Item -Path Env:_OLD_VIRTUAL_PATH -Destination Env:PATH
Remove-Item -Path Env:_OLD_VIRTUAL_PATH
}
# Just remove the VIRTUAL_ENV altogether:
if (Test-Path -Path Env:VIRTUAL_ENV) {
Remove-Item -Path env:VIRTUAL_ENV
}
# Just remove VIRTUAL_ENV_PROMPT altogether.
if (Test-Path -Path Env:VIRTUAL_ENV_PROMPT) {
Remove-Item -Path env:VIRTUAL_ENV_PROMPT
}
# Just remove the _PYTHON_VENV_PROMPT_PREFIX altogether:
if (Get-Variable -Name "_PYTHON_VENV_PROMPT_PREFIX" -ErrorAction SilentlyContinue) {
Remove-Variable -Name _PYTHON_VENV_PROMPT_PREFIX -Scope Global -Force
}
# Leave deactivate function in the global namespace if requested:
if (-not $NonDestructive) {
Remove-Item -Path function:deactivate
}
}
<#
.Description
Get-PyVenvConfig parses the values from the pyvenv.cfg file located in the
given folder, and returns them in a map.
For each line in the pyvenv.cfg file, if that line can be parsed into exactly
two strings separated by `=` (with any amount of whitespace surrounding the =)
then it is considered a `key = value` line. The left hand string is the key,
the right hand is the value.
If the value starts with a `'` or a `"` then the first and last character is
stripped from the value before being captured.
.Parameter ConfigDir
Path to the directory that contains the `pyvenv.cfg` file.
#>
function Get-PyVenvConfig(
[String]
$ConfigDir
) {
Write-Verbose "Given ConfigDir=$ConfigDir, obtain values in pyvenv.cfg"
# Ensure the file exists, and issue a warning if it doesn't (but still allow the function to continue).
$pyvenvConfigPath = Join-Path -Resolve -Path $ConfigDir -ChildPath 'pyvenv.cfg' -ErrorAction Continue
# An empty map will be returned if no config file is found.
$pyvenvConfig = @{ }
if ($pyvenvConfigPath) {
Write-Verbose "File exists, parse `key = value` lines"
$pyvenvConfigContent = Get-Content -Path $pyvenvConfigPath
$pyvenvConfigContent | ForEach-Object {
$keyval = $PSItem -split "\s*=\s*", 2
if ($keyval[0] -and $keyval[1]) {
$val = $keyval[1]
# Remove extraneous quotations around a string value.
if ("'""".Contains($val.Substring(0, 1))) {
$val = $val.Substring(1, $val.Length - 2)
}
$pyvenvConfig[$keyval[0]] = $val
Write-Verbose "Adding Key: '$($keyval[0])'='$val'"
}
}
}
return $pyvenvConfig
}
<# Begin Activate script --------------------------------------------------- #>
# Determine the containing directory of this script
$VenvExecPath = Split-Path -Parent $MyInvocation.MyCommand.Definition
$VenvExecDir = Get-Item -Path $VenvExecPath
Write-Verbose "Activation script is located in path: '$VenvExecPath'"
Write-Verbose "VenvExecDir Fullname: '$($VenvExecDir.FullName)"
Write-Verbose "VenvExecDir Name: '$($VenvExecDir.Name)"
# Set values required in priority: CmdLine, ConfigFile, Default
# First, get the location of the virtual environment, it might not be
# VenvExecDir if specified on the command line.
if ($VenvDir) {
Write-Verbose "VenvDir given as parameter, using '$VenvDir' to determine values"
}
else {
Write-Verbose "VenvDir not given as a parameter, using parent directory name as VenvDir."
$VenvDir = $VenvExecDir.Parent.FullName.TrimEnd("\\/")
Write-Verbose "VenvDir=$VenvDir"
}
# Next, read the `pyvenv.cfg` file to determine any required value such
# as `prompt`.
$pyvenvCfg = Get-PyVenvConfig -ConfigDir $VenvDir
# Next, set the prompt from the command line, or the config file, or
# just use the name of the virtual environment folder.
if ($Prompt) {
Write-Verbose "Prompt specified as argument, using '$Prompt'"
}
else {
Write-Verbose "Prompt not specified as argument to script, checking pyvenv.cfg value"
if ($pyvenvCfg -and $pyvenvCfg['prompt']) {
Write-Verbose " Setting based on value in pyvenv.cfg='$($pyvenvCfg['prompt'])'"
$Prompt = $pyvenvCfg['prompt'];
}
else {
Write-Verbose " Setting prompt based on parent's directory's name. (Is the directory name passed to venv module when creating the virtual environment)"
Write-Verbose " Got leaf-name of $VenvDir='$(Split-Path -Path $venvDir -Leaf)'"
$Prompt = Split-Path -Path $venvDir -Leaf
}
}
Write-Verbose "Prompt = '$Prompt'"
Write-Verbose "VenvDir='$VenvDir'"
# Deactivate any currently active virtual environment, but leave the
# deactivate function in place.
deactivate -nondestructive
# Now set the environment variable VIRTUAL_ENV, used by many tools to determine
# that there is an activated venv.
$env:VIRTUAL_ENV = $VenvDir
if (-not $Env:VIRTUAL_ENV_DISABLE_PROMPT) {
Write-Verbose "Setting prompt to '$Prompt'"
# Set the prompt to include the env name
# Make sure _OLD_VIRTUAL_PROMPT is global
function global:_OLD_VIRTUAL_PROMPT { "" }
Copy-Item -Path function:prompt -Destination function:_OLD_VIRTUAL_PROMPT
New-Variable -Name _PYTHON_VENV_PROMPT_PREFIX -Description "Python virtual environment prompt prefix" -Scope Global -Option ReadOnly -Visibility Public -Value $Prompt
function global:prompt {
Write-Host -NoNewline -ForegroundColor Green "($_PYTHON_VENV_PROMPT_PREFIX) "
_OLD_VIRTUAL_PROMPT
}
$env:VIRTUAL_ENV_PROMPT = $Prompt
}
# Clear PYTHONHOME
if (Test-Path -Path Env:PYTHONHOME) {
Copy-Item -Path Env:PYTHONHOME -Destination Env:_OLD_VIRTUAL_PYTHONHOME
Remove-Item -Path Env:PYTHONHOME
}
# Add the venv to the PATH
Copy-Item -Path Env:PATH -Destination Env:_OLD_VIRTUAL_PATH
$Env:PATH = "$VenvExecDir$([System.IO.Path]::PathSeparator)$Env:PATH"

69
venv/bin/activate vendored

@ -0,0 +1,69 @@
# This file must be used with "source bin/activate" *from bash*
# you cannot run it directly
deactivate () {
# reset old environment variables
if [ -n "${_OLD_VIRTUAL_PATH:-}" ] ; then
PATH="${_OLD_VIRTUAL_PATH:-}"
export PATH
unset _OLD_VIRTUAL_PATH
fi
if [ -n "${_OLD_VIRTUAL_PYTHONHOME:-}" ] ; then
PYTHONHOME="${_OLD_VIRTUAL_PYTHONHOME:-}"
export PYTHONHOME
unset _OLD_VIRTUAL_PYTHONHOME
fi
# This should detect bash and zsh, which have a hash command that must
# be called to get it to forget past commands. Without forgetting
# past commands the $PATH changes we made may not be respected
if [ -n "${BASH:-}" -o -n "${ZSH_VERSION:-}" ] ; then
hash -r 2> /dev/null
fi
if [ -n "${_OLD_VIRTUAL_PS1:-}" ] ; then
PS1="${_OLD_VIRTUAL_PS1:-}"
export PS1
unset _OLD_VIRTUAL_PS1
fi
unset VIRTUAL_ENV
unset VIRTUAL_ENV_PROMPT
if [ ! "${1:-}" = "nondestructive" ] ; then
# Self destruct!
unset -f deactivate
fi
}
# unset irrelevant variables
deactivate nondestructive
VIRTUAL_ENV="/home/zvevqx/LAB/work/www/webhookstest/venv"
export VIRTUAL_ENV
_OLD_VIRTUAL_PATH="$PATH"
PATH="$VIRTUAL_ENV/bin:$PATH"
export PATH
# unset PYTHONHOME if set
# this will fail if PYTHONHOME is set to the empty string (which is bad anyway)
# could use `if (set -u; : $PYTHONHOME) ;` in bash
if [ -n "${PYTHONHOME:-}" ] ; then
_OLD_VIRTUAL_PYTHONHOME="${PYTHONHOME:-}"
unset PYTHONHOME
fi
if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT:-}" ] ; then
_OLD_VIRTUAL_PS1="${PS1:-}"
PS1="(venv) ${PS1:-}"
export PS1
VIRTUAL_ENV_PROMPT="(venv) "
export VIRTUAL_ENV_PROMPT
fi
# This should detect bash and zsh, which have a hash command that must
# be called to get it to forget past commands. Without forgetting
# past commands the $PATH changes we made may not be respected
if [ -n "${BASH:-}" -o -n "${ZSH_VERSION:-}" ] ; then
hash -r 2> /dev/null
fi

@ -0,0 +1,26 @@
# This file must be used with "source bin/activate.csh" *from csh*.
# You cannot run it directly.
# Created by Davide Di Blasi <davidedb@gmail.com>.
# Ported to Python 3.3 venv by Andrew Svetlov <andrew.svetlov@gmail.com>
alias deactivate 'test $?_OLD_VIRTUAL_PATH != 0 && setenv PATH "$_OLD_VIRTUAL_PATH" && unset _OLD_VIRTUAL_PATH; rehash; test $?_OLD_VIRTUAL_PROMPT != 0 && set prompt="$_OLD_VIRTUAL_PROMPT" && unset _OLD_VIRTUAL_PROMPT; unsetenv VIRTUAL_ENV; unsetenv VIRTUAL_ENV_PROMPT; test "\!:*" != "nondestructive" && unalias deactivate'
# Unset irrelevant variables.
deactivate nondestructive
setenv VIRTUAL_ENV "/home/zvevqx/LAB/work/www/webhookstest/venv"
set _OLD_VIRTUAL_PATH="$PATH"
setenv PATH "$VIRTUAL_ENV/bin:$PATH"
set _OLD_VIRTUAL_PROMPT="$prompt"
if (! "$?VIRTUAL_ENV_DISABLE_PROMPT") then
set prompt = "(venv) $prompt"
setenv VIRTUAL_ENV_PROMPT "(venv) "
endif
alias pydoc python -m pydoc
rehash

@ -0,0 +1,69 @@
# This file must be used with "source <venv>/bin/activate.fish" *from fish*
# (https://fishshell.com/); you cannot run it directly.
function deactivate -d "Exit virtual environment and return to normal shell environment"
# reset old environment variables
if test -n "$_OLD_VIRTUAL_PATH"
set -gx PATH $_OLD_VIRTUAL_PATH
set -e _OLD_VIRTUAL_PATH
end
if test -n "$_OLD_VIRTUAL_PYTHONHOME"
set -gx PYTHONHOME $_OLD_VIRTUAL_PYTHONHOME
set -e _OLD_VIRTUAL_PYTHONHOME
end
if test -n "$_OLD_FISH_PROMPT_OVERRIDE"
set -e _OLD_FISH_PROMPT_OVERRIDE
# prevents error when using nested fish instances (Issue #93858)
if functions -q _old_fish_prompt
functions -e fish_prompt
functions -c _old_fish_prompt fish_prompt
functions -e _old_fish_prompt
end
end
set -e VIRTUAL_ENV
set -e VIRTUAL_ENV_PROMPT
if test "$argv[1]" != "nondestructive"
# Self-destruct!
functions -e deactivate
end
end
# Unset irrelevant variables.
deactivate nondestructive
set -gx VIRTUAL_ENV "/home/zvevqx/LAB/work/www/webhookstest/venv"
set -gx _OLD_VIRTUAL_PATH $PATH
set -gx PATH "$VIRTUAL_ENV/bin" $PATH
# Unset PYTHONHOME if set.
if set -q PYTHONHOME
set -gx _OLD_VIRTUAL_PYTHONHOME $PYTHONHOME
set -e PYTHONHOME
end
if test -z "$VIRTUAL_ENV_DISABLE_PROMPT"
# fish uses a function instead of an env var to generate the prompt.
# Save the current fish_prompt function as the function _old_fish_prompt.
functions -c fish_prompt _old_fish_prompt
# With the original prompt function renamed, we can override with our own.
function fish_prompt
# Save the return status of the last command.
set -l old_status $status
# Output the venv prompt; color taken from the blue of the Python logo.
printf "%s%s%s" (set_color 4B8BBE) "(venv) " (set_color normal)
# Restore the return status of the previous command.
echo "exit $old_status" | .
# Output the original/"old" prompt.
_old_fish_prompt
end
set -gx _OLD_FISH_PROMPT_OVERRIDE "$VIRTUAL_ENV"
set -gx VIRTUAL_ENV_PROMPT "(venv) "
end

8
venv/bin/flask vendored

@ -0,0 +1,8 @@
#!/home/zvevqx/LAB/work/www/webhookstest/venv/bin/python
# -*- coding: utf-8 -*-
import re
import sys
from flask.cli import main
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
sys.exit(main())

@ -0,0 +1,8 @@
#!/home/zvevqx/LAB/work/www/webhookstest/venv/bin/python
# -*- coding: utf-8 -*-
import re
import sys
from markdown.__main__ import run
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
sys.exit(run())

8
venv/bin/pip vendored

@ -0,0 +1,8 @@
#!/home/zvevqx/LAB/work/www/webhookstest/venv/bin/python
# -*- coding: utf-8 -*-
import re
import sys
from pip._internal.cli.main import main
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
sys.exit(main())

8
venv/bin/pip3 vendored

@ -0,0 +1,8 @@
#!/home/zvevqx/LAB/work/www/webhookstest/venv/bin/python
# -*- coding: utf-8 -*-
import re
import sys
from pip._internal.cli.main import main
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
sys.exit(main())

8
venv/bin/pip3.11 vendored

@ -0,0 +1,8 @@
#!/home/zvevqx/LAB/work/www/webhookstest/venv/bin/python
# -*- coding: utf-8 -*-
import re
import sys
from pip._internal.cli.main import main
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
sys.exit(main())

1
venv/bin/python vendored

@ -0,0 +1 @@
/usr/bin/python

1
venv/bin/python3 vendored

@ -0,0 +1 @@
python

@ -0,0 +1 @@
python

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save