- Wenn ein eigener nuget Server mit http verwendet wird, dann muss dort wo die sln liegt, eine NuGet.config angelegt werden:
1234567<?xml version="1.0" encoding="utf-8"?><configuration><packageSources><add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" /><add key="Name von NuGet Server" value="http://nuget.adresseZuNuGetServer/nuget" allowInsecureConnections="true" /></packageSources></configuration> - die csproj bearbeiten:
123456789<PropertyGroup><EnableSdkContainerSupport>true</EnableSdkContainerSupport><ContainerImageName>mein-container-name</ContainerImageName><ContainerImageTag>1.0.0</ContainerImageTag>...<ItemGroup><PackageReference Include="Microsoft.NET.Build.Containers" Version="8.0.403" />...
- Docker Desktop muss vorinstalliert sein und mit wsl2 laufen
1dotnet publish --os linux --arch x64 -p:PublishProfile=DefaultContainer -c Release - Https Zertifikat für Entwicklung erstellen: https://learn.microsoft.com/en-us/aspnet/core/security/docker-https?view=aspnetcore-8.0#running-pre-built-container-images-with-https
12dotnet dev-certs https -ep D:\Docker\https\aspnetapp.pfx -p 'GeheimesPassword'<span class="hljs-keyword">dotnet</span> <span class="hljs-keyword">dev-certs</span> https<span class="hljs-parameter"> --trust</span>
dotNet Docker veröffentlichen
Docker
Docker Desktop (AMD64)
Docker Desktop: The #1 Containerization Tool for Developers | Docker
Portainer
https://docs.portainer.io/start/install-ce/server/docker/wsl
1 |
docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest |
WebAdmin: https://localhost:9443/
Microsoft Sql Server
microsoft/mssql-server – Docker Image | Docker Hub
1 |
docker run --name mssql -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=XXXX" -p 1433:1433 -d mcr.microsoft.com/mssql/server:2022-latest |
Passwort setzen nicht vergessen
Im Container, unter volumes als bind, ein Verzeichnis einrichten, wo die backups liegen und wo die volumes liegen sollen
RabbitMQ
1 |
docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:4.0-management |
WebAdmin: https://localhost:15672/
Benutzername: guest
Password: guest
Hashicorp/Vault
1 |
docker run --name hashicorp-vault --cap-add=IPC_LOCK -e 'VAULT_LOCAL_CONFIG={"storage": {"file": {"path": "/vault/file"}}, "listener": [{"tcp": { "address": "0.0.0.0:8200", "tls_disable": true}}], "default_lease_ttl": "168h", "max_lease_ttl": "720h", "ui": true}' -p 8200:8200 hashicorp/vault server |
hashicorp/vault – Docker Image | Docker Hub
Weboberfläche: http://localhost:8200/
Logging Structured Message Templates selbst verwenden
Um selbst Strukturierte Messages Templates wie im Logging zu verwenden, kann man folgende Annotations nutzen:
1 2 3 4 5 6 7 8 |
[MessageTemplateFormatMethod("message")] public void Error<TArgument1, TArgument2, TArgument3>([Localizable(false)][StructuredMessageTemplate] string message, TArgument1 argument1, TArgument2 argument2, TArgument3 argument3) { if (IsErrorEnabled) { WriteToTargets(LogLevel.Error, message, new object[3] { argument1, argument2, argument3 }); } } |
Discord Installation „a fatal javascript error occurred“
Das war die einzige Lösung, die funktionierte, um Discord zu installieren über choco:
I have a problem with discord, and its no the logo. : r/discordapp (reddit.com)
Dazu das Powershell-Script. Ausprobiert und getestet.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# Get the Local AppData path dynamically using %LocalAppData% environment variable $localAppData = [System.Environment]::GetFolderPath('LocalApplicationData') $discordPath = Join-Path $localAppData "Discord" # Navigate to the Discord folder Set-Location -Path $discordPath # Delete the installer.db file if it exists $installerDbPath = Join-Path $discordPath "installer.db" if (Test-Path $installerDbPath) { Remove-Item $installerDbPath -Force Write-Host "Deleted installer.db file from $discordPath" } else { Write-Host "No installer.db file found to delete." } # Get the folder that starts with "app-" $appVersionFolder = Get-ChildItem -Path $discordPath | Where-Object { $_.Name -like 'app-*' } | Select-Object -First 1 # Check if the app version folder was found if ($appVersionFolder -ne $null) { $sourceDbPath = Join-Path $appVersionFolder.FullName "installer.db" # Check if the installer.db file exists in the app version folder if (Test-Path $sourceDbPath) { # Copy the installer.db file to the Discord folder Copy-Item -Path $sourceDbPath -Destination $discordPath -Force Write-Host "Copied installer.db from $($appVersionFolder.Name) to $discordPath" } else { Write-Host "No installer.db file found in $($appVersionFolder.Name)" } } else { Write-Host "No app version folder found." } |
Jupyter unter Windows installieren
Mit Jupyter (Julia + Python) kann man interaktive Notebooks erstellen.
Ein Notebook besteht aus Cells, die entweder als Text (markdown) oder Code (Python, etc.) nacheinander erstellt werden können.
Der Code kann im Notebook ausgeführt werden und visuell dargestellt werden. Variablen können Code-Zelle übergreifend genutzt werden.
Damit der Code ausgeführt werden kann, wird ein Kernel benötigt, der wie ein Interpreter den Code verarbeitet und ausgibt.
Um Jupyter nutzen zu können, muss dieser zunächst installiert werden.
Cronicle in Rocky Linux installieren
nodeJs über dnf installieren. Nicht über nvm, weil nvm nur für den jeweilligen User installiert
1 |
sudo dnf install nodejs |
So wie hier beschrieben, manuelle Schritte durchführen. Wichtig, vorher die aktuelle Version herausfinden und im Archiv ersetzen
1 2 3 4 5 6 7 |
https://github.com/jhuckaby/Cronicle/blob/master/docs/Setup.md mkdir -p /opt/cronicle cd /opt/cronicle curl -L https://XXXXXX.tar.gz | tar zxvf - --strip-components 1 npm install node bin/build.js dist |
Firewall Port freischalten
1 2 |
sudo firewall-cmd --zone=public --add-port=3012/tcp --permanent sudo firewall-cmd --reload |
Maschine neustarten
1 |
sudo reboot |
rclone OneDrive
rclone Konfigurieren
1. zu mnt Verzeichnis bewegen mit cd und ls
2. OneDrive Ordner erstellen:
1 |
mkdir OneDrive |
3. rclone installieren
1 |
dnf install rclone |
4. Neue rclone config erstellen
1 |
rclone config |
5. n -> New remote
Name: OneDrive
Nach Nummer suchen. In meinem Fall 27 Microsoft OneDrive
client_id mit Enter überspringen, client_secret mit Enter auch überspringen
1 für Microsoft Cloud Global aussuchen (Evtl. geht auch 3 Germany)
Edit advanced config? -> n
Der nächste Teil ist ein wenig tricky. Denn man benötigt den Microsoft 2FA Secret. Diesen bekommt man nur, wenn man über einen Browser die Anmeldung bestätigt.
Da die Linux Maschine nicht über einen Webbrowser verfügt, muss man dies auf Windows Rechner machen und die rclone config auf die Linux Maschine übertragen.
Paperless-ngx installieren
Unter Portainer, auf Stacks und neuen Stack im Editor erstellen.
Wichtig: Unter PAPERLESS_SECRET_KEY: XXX eine Zeichenkette generieren lassen.
SQL Server Datenbank Design -> Kroki ER Diagramm
https://kroki.io/examples.html#erd
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 |
DECLARE @FlatTable TABLE ( TableName NVARCHAR(128), ColumnName NVARCHAR(128), DataType NVARCHAR(128), [MaxLength] INT, [Precision] INT, Scale INT, Nullable BIT, [Identity] BIT, PrimaryKey BIT, ForeignKeyName NVARCHAR(128), ParentTable NVARCHAR(128), ParentColumn NVARCHAR(128), ReferencedTable NVARCHAR(128), ReferencedColumn NVARCHAR(128) ); INSERT INTO @FlatTable SELECT tbl.[name] AS [TableName], col.[name] AS [ColumnName], ty.[name] AS [DataType], col.[max_length] AS [MaxLength], col.[precision] AS [Precision], col.[scale] AS [Scale], col.[is_nullable] AS [Nullable], col.[is_identity] AS [Identity], CONVERT(BIT, IIF(pkcol.index_id IS NOT NULL, 1, 0)) AS [PrimaryKey], fk.name AS ForeignKeyName, OBJECT_NAME(fk.parent_object_id) AS ParentTable, COL_NAME(fkc.parent_object_id, fkc.parent_column_id) AS ParentColumn, OBJECT_NAME(fk.referenced_object_id) AS ReferencedTable, COL_NAME(fkc.referenced_object_id, fkc.referenced_column_id) AS ReferencedColumn FROM sys.tables tbl INNER JOIN sys.columns col ON col.[object_id] = tbl.[object_id] INNER JOIN sys.types ty ON ty.[user_type_id] = col.[user_type_id] -- do not use system_type_id LEFT JOIN ( SELECT ind.[object_id] AS [table_object_id], ind.[index_id], ind.[column_id] FROM sys.index_columns ind INNER JOIN sys.key_constraints pks ON pks.[parent_object_id] = ind.[object_id] AND pks.[unique_index_id] = ind.[index_id] WHERE pks.[type] = 'PK' ) pkcol ON pkcol.[table_object_id] = tbl.[object_id] AND pkcol.[column_id] = col.[column_id] LEFT JOIN sys.foreign_key_columns fkc ON tbl.object_id = fkc.parent_object_id AND col.column_id = fkc.parent_column_id LEFT JOIN sys.foreign_keys fk ON fkc.constraint_object_id = fk.object_id WHERE 1=1 -- tbl.name does not start with __ AND tbl.name != '__RefactorLog' ORDER BY tbl.[name], CONVERT(BIT, IIF(pkcol.index_id IS NOT NULL, 1, 0)) DESC, fk.name DESC, col.[name]; DECLARE @StuffedTable TABLE (TableName NVARCHAR(128), Columns NVARCHAR(MAX)) INSERT INTO @StuffedTable SELECT TableName, STUFF ( ( SELECT ',' + CASE WHEN PrimaryKey = 1 THEN '*' WHEN ForeignKeyName IS NOT NULL THEN '+' ELSE '' END + ColumnName + ' ' + [DataType] + CASE WHEN [DataType] IN ('varchar','nvarchar') THEN ' (' + REPLACE(CONVERT(VARCHAR, [MaxLength]), '-1', 'max') + ')' WHEN [DataType] = 'decimal' THEN ' (' + CONVERT(VARCHAR, [Precision]) + ',' + CONVERT(VARCHAR, [Scale]) + ')' ELSE '' END FROM @FlatTable As T2 WHERE T2.TableName = T1.TableName FOR XML PATH (''), TYPE ).value('.', 'nvarchar(max)') , 1, 1, '') + ',' AS [Columns] FROM @FlatTable As T1 GROUP BY TableName DECLARE @ResultString NVARCHAR(MAX) = (SELECT STUFF ( ( SELECT ',' + '[' + TableName + ']' + ',' + Columns FROM @StuffedTable As T2 FOR XML PATH (''), TYPE ).value('.', 'nvarchar(max)') , 1, 1, '')) PRINT '```kroki' + CHAR(13) + CHAR(10) + 'erd' + CHAR(13) + CHAR(10) + REPLACE(@ResultString, ',', CHAR(13) + CHAR(10)) + '```' + CHAR(13) + CHAR(10) |
Login