From 01ef9a0b18705b415a1ab49acba5889b76f7ff62 Mon Sep 17 00:00:00 2001 From: JMARyA Date: Mon, 19 May 2025 13:52:03 +0200 Subject: [PATCH 1/6] add stump --- technology/applications/web/stump.md | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 technology/applications/web/stump.md diff --git a/technology/applications/web/stump.md b/technology/applications/web/stump.md new file mode 100644 index 0000000..672ac13 --- /dev/null +++ b/technology/applications/web/stump.md @@ -0,0 +1,8 @@ +--- +obj: application +website: https://www.stumpapp.dev +repo: https://github.com/stumpapp/stump +--- + +# Stump +Stump is a free and open source comics, manga and digital book server with OPDS support. From bff33f063b5f94730c0dc2744cb8649b44585139 Mon Sep 17 00:00:00 2001 From: JMARyA Date: Mon, 19 May 2025 13:54:21 +0200 Subject: [PATCH 2/6] add octopi --- technology/applications/utilities/octopi.md | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 technology/applications/utilities/octopi.md diff --git a/technology/applications/utilities/octopi.md b/technology/applications/utilities/octopi.md new file mode 100644 index 0000000..79608ff --- /dev/null +++ b/technology/applications/utilities/octopi.md @@ -0,0 +1,8 @@ +--- +obj: application +repo: https://github.com/aarnt/octopi +--- + +# Octopi +Octopi is a graphical user interface for the Arch Linux pacman package management tool. +It consists of a package browser, sudo helper, notifier, cache cleaner and repository editor. From 1bef285a760e32e6ffd9ca44cf1f48a6d5ee9ed0 Mon Sep 17 00:00:00 2001 From: JMARyA Date: Mon, 19 May 2025 14:08:57 +0200 Subject: [PATCH 3/6] add material icons --- technology/dev/Material Icons.md | 74 ++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 technology/dev/Material Icons.md diff --git a/technology/dev/Material Icons.md b/technology/dev/Material Icons.md new file mode 100644 index 0000000..c44bee3 --- /dev/null +++ b/technology/dev/Material Icons.md @@ -0,0 +1,74 @@ +--- +obj: concept +website: https://fonts.google.com/icons +repo: https://github.com/google/material-design-icons +--- + +# Material Icons +[Material Icons](https://fonts.google.com/icons) are a comprehensive set of visual symbols designed by Google. These icons follow the [Material Design](https://m3.material.io/) guidelines and are widely used across Android, web, and other platforms to provide a consistent, clean, and intuitive UI experience. + +## Features +* Over 2,000 icons +* Available in multiple styles (Filled, Outlined, Rounded, Sharp, Two-tone) +* Free and open-source under the [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0) +* Easily customizable (size, color, weight) +* Supported via web fonts, SVGs, and icon components + +## Icon Styles +| Style | Description | +| -------- | ----------------------------------------- | +| Filled | Default solid icons | +| Outlined | Icons with a thin, outlined design | +| Rounded | Icons with rounded corners | +| Sharp | Icons with sharp, angular edges | +| Two-tone | Icons with dual-tone for visual hierarchy | + +## Installation + +### Web Font +Add the following `` tag to your HTML ``: + +```html + +``` + +Then use an icon like this: +```html +home +``` + +To use other styles (e.g., Outlined, Rounded), change the font family: +```html + +``` + +Use it like: +```html +home +``` + +## SVG +You can download individual icons as SVGs from [Material Icons](https://fonts.google.com/icons) or use them programmatically. + +Example: +```html +home icon +``` + +## Customization + +### Size +Use CSS to change the size: +```html +home +``` + +Or use utility classes in frameworks like Tailwind: +```html +home +``` + +### Color +```html +home +``` From a0179e824ee2abe7c4b2eb8ad6cbfbd40fd0c606 Mon Sep 17 00:00:00 2001 From: JMARyA Date: Mon, 19 May 2025 15:40:41 +0200 Subject: [PATCH 4/6] update rnr --- technology/applications/cli/rnr.md | 105 +++++++++++++++++++++++++---- 1 file changed, 93 insertions(+), 12 deletions(-) diff --git a/technology/applications/cli/rnr.md b/technology/applications/cli/rnr.md index b457b68..6b91c67 100644 --- a/technology/applications/cli/rnr.md +++ b/technology/applications/cli/rnr.md @@ -1,20 +1,101 @@ --- obj: application repo: https://github.com/ismaelgv/rnr +rev: 2025-05-19 --- # rnr -[Repo](https://github.com/ismaelgv/rnr) -**RnR** is a command-line tool to **securely rename** multiple files and directories that supports regular expressions. +RnR is a command-line tool to rename multiple files and directories that supports regular expressions. ## Usage -Flags -```shell --n, --dry-run Only show what would be done (default mode) --f, --force Make actual changes to files --x, --hidden Include hidden files and directories --D, --include-dirs Rename matching directories --r, --recursive Recursive mode --s, --silent Do not print any information ---no-dump Do not dump operations into a file -``` \ No newline at end of file +Usage: `rnr ` + +Commands: +- `regex`: Rename files and directories using a regular expression +- `from-file`: Read operations from a dump file +- `to-ascii`: Replace file name UTF-8 chars with ASCII chars representation + +### regex +``` +Rename files and directories using a regular expression + +Usage: rnr regex [OPTIONS] ... + +Arguments: + Expression to match (can be a regex) + Expression replacement (use single quotes for capture groups) + ... Target paths + +Options: + -n, --dry-run + Only show what would be done (default mode) + -f, --force + Make actual changes to files + -b, --backup + Generate file backups before renaming + -s, --silent + Do not print any information + --color + Set color output mode [default: auto] [possible values: always, never, auto] + --dump + Force dumping operations into a file even in dry-run mode + --dump-prefix + Set the dump file prefix [default: rnr-] + --no-dump + Do not dump operations into a file + -l, --replace-limit + Limit of replacements, all matches if set to 0 + -t, --replace-transform + Apply a transformation to replacements including captured groups [possible values: upper, lower, ascii] + -D, --include-dirs + Rename matching directories + -r, --recursive + Recursive mode + -d, --max-depth + Set max depth in recursive mode + -x, --hidden + Include hidden files and directories +``` + +### from-file +``` +Read operations from a dump file + +Usage: rnr from-file [OPTIONS] + +Arguments: + + +Options: + -n, --dry-run Only show what would be done (default mode) + -f, --force Make actual changes to files + -b, --backup Generate file backups before renaming + -s, --silent Do not print any information + --color Set color output mode [default: auto] [possible values: always, never, auto] + --dump Force dumping operations into a file even in dry-run mode + --dump-prefix Set the dump file prefix [default: rnr-] + --no-dump Do not dump operations into a file + -u, --undo Undo the operations from the dump file +``` + +### to-ascii +``` +Usage: rnr to-ascii [OPTIONS] ... + +Arguments: + ... Target paths + +Options: + -n, --dry-run Only show what would be done (default mode) + -f, --force Make actual changes to files + -b, --backup Generate file backups before renaming + -s, --silent Do not print any information + --color Set color output mode [default: auto] [possible values: always, never, auto] + --dump Force dumping operations into a file even in dry-run mode + --dump-prefix Set the dump file prefix [default: rnr-] + --no-dump Do not dump operations into a file + -D, --include-dirs Rename matching directories + -r, --recursive Recursive mode + -d, --max-depth Set max depth in recursive mode + -x, --hidden Include hidden files and directories +``` From a97795fd6d68de9c8cc7592c9cc881af0275425b Mon Sep 17 00:00:00 2001 From: JMARyA Date: Mon, 19 May 2025 15:47:54 +0200 Subject: [PATCH 5/6] add opengist --- technology/applications/web/opengist.md | 208 ++++++++++++++++++++++++ 1 file changed, 208 insertions(+) create mode 100644 technology/applications/web/opengist.md diff --git a/technology/applications/web/opengist.md b/technology/applications/web/opengist.md new file mode 100644 index 0000000..046b906 --- /dev/null +++ b/technology/applications/web/opengist.md @@ -0,0 +1,208 @@ +--- +obj: application +website: https://opengist.io +repo: https://github.com/thomiceli/opengist +rev: 2025-05-19 +--- + +# OpenGist +Opengist is a self-hosted pastebin powered by Git. All snippets are stored in a Git repository and can be read and/or modified using standard Git commands, or with the web interface. It is similiar to GitHub Gist, but open-source and could be self-hosted. + +## Features +- Create public, unlisted or private snippets +- Init / Clone / Pull / Push snippets via Git over HTTP or SSH +- Syntax highlighting ; markdown & CSV support +- Search code in snippets ; browse users snippets, likes and forks +- Add topics to snippets +- Embed snippets in other websites +- Revisions history +- Like / Fork snippets +- Editor with indentation mode & size ; drag and drop files +- Download raw files or as a ZIP archive +- Retrieve snippet data/metadata via a JSON API +- OAuth2 login with GitHub, GitLab, Gitea, and OpenID Connect +- Avatars via Gravatar or OAuth2 providers +- Light/Dark mode +- Responsive UI +- Enable or disable signups +- Restrict or unrestrict snippets visibility to anonymous users + +## Compose +```yml +services: + opengist: + image: ghcr.io/thomiceli/opengist:1 + container_name: opengist + restart: unless-stopped + ports: + - "6157:6157" # HTTP port + - "2222:2222" # SSH port, can be removed if you don't use SSH + volumes: + - "$HOME/.opengist:/opengist" + environment: + # OG_LOG_LEVEL: info + # other configuration options +``` + +## Configuration + +| YAML Config Key | Environment Variable | Default value | Description | +| --------------------- | ----------------------------------- | --------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| log-level | OG_LOG_LEVEL | `warn` | Set the log level to one of the following: `debug`, `info`, `warn`, `error`, `fatal`. | +| log-output | OG_LOG_OUTPUT | `stdout,file` | Set the log output to one or more of the following: `stdout`, `file`. | +| external-url | OG_EXTERNAL_URL | none | Public URL to access to Opengist. | +| opengist-home | OG_OPENGIST_HOME | home directory | Path to the directory where Opengist stores its data. | +| secret-key | OG_SECRET_KEY | randomized 32 bytes | Secret key used for session store & encrypt MFA data on database. | +| db-uri | OG_DB_URI | `opengist.db` | URI of the database. | +| index | OG_INDEX | `bleve` | Define the code indexer (either `bleve`, `meilisearch`, or empty for no index). | +| index.meili.host | OG_MEILI_HOST | none | Set the host for the Meiliseach server. | +| index.meili.api-key | OG_MEILI_API_KEY | none | Set the API key for the Meiliseach server. | +| git.default-branch | OG_GIT_DEFAULT_BRANCH | none | Default branch name used by Opengist when initializing Git repositories. If not set, uses the Git default branch name. More info [here](https://git-scm.com/book/en/v2/Getting-Started-First-Time-Git-Setup#_new_default_branch) | +| sqlite.journal-mode | OG_SQLITE_JOURNAL_MODE | `WAL` | Set the journal mode for SQLite. More info [here](https://www.sqlite.org/pragma.html#pragma_journal_mode) | +| http.host | OG_HTTP_HOST | `0.0.0.0` | The host on which the HTTP server should bind. | +| http.port | OG_HTTP_PORT | `6157` | The port on which the HTTP server should listen. | +| http.git-enabled | OG_HTTP_GIT_ENABLED | `true` | Enable or disable git operations (clone, pull, push) via HTTP. (`true` or `false`) | +| metrics.enabled | OG_METRICS_ENABLED | `false` | Enable or disable Prometheus metrics endpoint at `/metrics` (`true` or `false`) | +| ssh.git-enabled | OG_SSH_GIT_ENABLED | `true` | Enable or disable git operations (clone, pull, push) via SSH. (`true` or `false`) | +| ssh.host | OG_SSH_HOST | `0.0.0.0` | The host on which the SSH server should bind. | +| ssh.port | OG_SSH_PORT | `2222` | The port on which the SSH server should listen. | +| ssh.external-domain | OG_SSH_EXTERNAL_DOMAIN | none | Public domain for the Git SSH connection, if it has to be different from the HTTP one. If not set, uses the URL from the request. | +| ssh.keygen-executable | OG_SSH_KEYGEN_EXECUTABLE | `ssh-keygen` | Path to the SSH key generation executable. | +| github.client-key | OG_GITHUB_CLIENT_KEY | none | The client key for the GitHub OAuth application. | +| github.secret | OG_GITHUB_SECRET | none | The secret for the GitHub OAuth application. | +| gitlab.client-key | OG_GITLAB_CLIENT_KEY | none | The client key for the GitLab OAuth application. | +| gitlab.secret | OG_GITLAB_SECRET | none | The secret for the GitLab OAuth application. | +| gitlab.url | OG_GITLAB_URL | `https://gitlab.com/` | The URL of the GitLab instance. | +| gitlab.name | OG_GITLAB_NAME | `GitLab` | The name of the GitLab instance. It is displayed in the OAuth login button. | +| gitea.client-key | OG_GITEA_CLIENT_KEY | none | The client key for the Gitea OAuth application. | +| gitea.secret | OG_GITEA_SECRET | none | The secret for the Gitea OAuth application. | +| gitea.url | OG_GITEA_URL | `https://gitea.com/` | The URL of the Gitea instance. | +| gitea.name | OG_GITEA_NAME | `Gitea` | The name of the Gitea instance. It is displayed in the OAuth login button. | +| oidc.provider-name | OG_OIDC_PROVIDER_NAME | none | The name of the OIDC provider | +| oidc.client-key | OG_OIDC_CLIENT_KEY | none | The client key for the OpenID application. | +| oidc.secret | OG_OIDC_SECRET | none | The secret for the OpenID application. | +| oidc.discovery-url | OG_OIDC_DISCOVERY_URL | none | Discovery endpoint of the OpenID provider. | +| ldap.url | OG_LDAP_URL | none | URL of the LDAP instance; if not set, LDAP authentication is disabled | +| ldap.bind-dn | OG_LDAP_BIND_DN | none | Bind DN to authenticate against the LDAP. e.g: cn=read-only-admin,dc=example,dc=com | +| ldap.bind-credentials | OG_LDAP_BIND_CREDENTIALS | none | The password for the Bind DN. | +| ldap.search-base | OG_LDAP_SEARCH_BASE | none | The Base DN to start search from. e.g: ou=People,dc=example,dc=com | +| ldap.search-filter | OG_LDAP_SEARCH_FILTER | none | The filter to search against (the format string %s will be replaced with the username). e.g: (uid=%s) | +| custom.name | OG_CUSTOM_NAME | none | The name of your instance, to be displayed in the tab title | +| custom.logo | OG_CUSTOM_LOGO | none | Path to an image, relative to $opengist-home/custom. | +| custom.favicon | OG_CUSTOM_FAVICON | none | Path to an image, relative to $opengist-home/custom. | +| custom.static-links | OG_CUSTOM_STATIC_LINK_#_(PATH,NAME) | none | Path and name to custom links, more info [here](custom-links.md). | + +## Usage +### Init Gists via Git +Opengist allows you to create new snippets via Git over HTTP. + +Simply init a new Git repository where your file(s) is/are located: + +```shell +git init +git add . +git commit -m "My cool snippet" +``` + +Then add this Opengist special remote URL and push your changes: + +```shell +git remote add origin http://localhost:6157/init + +git push -u origin master +``` + +Log in with your Opengist account credentials, and your snippet will be created at the specified URL: + +```shell +Username for 'http://localhost:6157': thomas +Password for 'http://thomas@localhost:6157': +Enumerating objects: 3, done. +Counting objects: 100% (3/3), done. +Delta compression using up to 8 threads +Compressing objects: 100% (2/2), done. +Writing objects: 100% (3/3), 416 bytes | 416.00 KiB/s, done. +Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 +remote: +remote: Your new repository has been created here: http://localhost:6157/thomas/6051e930f140429f9a2f3bb1fa101066 +remote: +remote: If you want to keep working with your gist, you could set the remote URL via: +remote: git remote set-url origin http://localhost:6157/thomas/6051e930f140429f9a2f3bb1fa101066 +remote: +To http://localhost:6157/init + * [new branch] master -> master +``` + +### Embed a Gist to your webpage +To embed a Gist to your webpage, you can add a script tag with the URL of your gist followed by `.js` to your HTML page: + +```html + + + + +``` + +### Retrieve Gist as JSON +To retrieve a Gist as JSON, you can add `.json` to the end of the URL of your gist: + +```shell +curl http://opengist.url/thomas/my-gist.json | jq '.' +``` + +It returns a JSON object with the following structure similar to this one: +```json +{ + "created_at": "2023-04-12T13:15:20+02:00", + "description": "", + "embed": { + "css": "http://localhost:6157/assets/embed-94abc261.css", + "html": "
\n
\n \n
\n \n \n \n \n

Welcome to Opengist

\n
\n \n\n
\n \n
\n
\n", + "js": "http://localhost:6157/thomas/my-gist.js", + "js_dark": "http://localhost:6157/thomas/my-gist.js?dark" + }, + "files": [ + { + "filename": "hello.md", + "size": 21, + "human_size": "21 B", + "content": "# Welcome to Opengist", + "truncated": false, + "type": "Markdown" + } + ], + "id": "my-gist", + "owner": "thomas", + "title": "hello.md", + "uuid": "8622b297bce54b408e36d546cef8019d", + "visibility": "public" +} +``` + +### Push Options +Opengist has support for a few [Git push options](https://git-scm.com/docs/git-push#Documentation/git-push.txt--oltoptiongt). + +These options are passed to `git push` command and can be used to change the metadata of a gist. + +#### Set URL +```shell +git push -o url=mygist # Will set the URL to https://opengist.example.com/user/mygist +``` + +#### Change title +```shell +git push -o title=Gist123 +git push -o title="My Gist 123" +``` + +#### Change description +```shell +git push -o description="This is my gist description" +``` + +#### Change visibility +```shell +git push -o visibility=public +git push -o visibility=unlisted +git push -o visibility=private +``` From 576421a6be2a23a111b2399a5e08d6032f45c3c1 Mon Sep 17 00:00:00 2001 From: JMARyA Date: Mon, 19 May 2025 15:57:29 +0200 Subject: [PATCH 6/6] add ruff --- technology/applications/development/ruff.md | 41 +++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 technology/applications/development/ruff.md diff --git a/technology/applications/development/ruff.md b/technology/applications/development/ruff.md new file mode 100644 index 0000000..05596c9 --- /dev/null +++ b/technology/applications/development/ruff.md @@ -0,0 +1,41 @@ +--- +obj: application +repo: https://github.com/astral-sh/ruff +website: https://docs.astral.sh/ruff +rev: 2025-05-19 +--- + +# ruff +An extremely fast Python linter and code formatter, written in Rust. + +## The Ruff Linter +The Ruff Linter is an extremely fast Python linter designed as a drop-in replacement for [Flake8](https://pypi.org/project/flake8/) (plus dozens of plugins), [isort](https://pypi.org/project/isort/), [pydocstyle](https://pypi.org/project/pydocstyle/), [pyupgrade](https://pypi.org/project/pyupgrade/), [autoflake](https://pypi.org/project/autoflake/), and more. + +### `ruff check` +`ruff check` is the primary entrypoint to the Ruff linter. It accepts a list of files or directories, and lints all discovered Python files, optionally fixing any fixable errors. When linting a directory, Ruff searches for Python files recursively in that directory and all its subdirectories: + +```console +$ ruff check # Lint files in the current directory. +$ ruff check --fix # Lint files in the current directory and fix any fixable errors. +$ ruff check --watch # Lint files in the current directory and re-lint on change. +$ ruff check path/to/code/ # Lint files in `path/to/code`. +``` + +## The Ruff Formatter +The Ruff formatter is an extremely fast Python code formatter designed as a drop-in replacement for [Black](https://pypi.org/project/black/), available as part of the `ruff` CLI via `ruff format`. + +### `ruff format` +`ruff format` is the primary entrypoint to the formatter. It accepts a list of files or directories, and formats all discovered Python files: + +```shell +ruff format # Format all files in the current directory. +ruff format path/to/code/ # Format all files in `path/to/code` (and any subdirectories). +ruff format path/to/file.py # Format a single file. +``` + +Similar to Black, running `ruff format /path/to/file.py` will format the given file or directory in-place, while `ruff format --check /path/to/file.py` will avoid writing any formatted files back, and instead exit with a non-zero status code upon detecting any unformatted files. + +For the full list of supported options, run `ruff format --help`. + +## Configuration +ruff can be configured via `ruff.toml` config file. See [here](https://docs.astral.sh/ruff/settings/) for a reference of all config parameters.