| Zeile 1: |
Zeile 1: |
| | == Aktuelles == | | == Aktuelles == |
| | | | |
| − | * Siehe
| + | Siehe |
| − | ** [http://www.heise.de/developer heise.de]
| + | * [http://www.heise.de/developer heise.de] |
| − | ** [http://www.golem.de golem.de]
| + | * [http://www.golem.de golem.de] |
| | * [http://www.heise.de/developer/podcast/ Heise.de - Podcast für Entwickler] | | * [http://www.heise.de/developer/podcast/ Heise.de - Podcast für Entwickler] |
| | + | * [https://open.hpi.de/courses Kurse zu IT des Hasso-Plattner-Instituts] |
| | | | |
| | == Programmiertechniken == | | == Programmiertechniken == |
| Zeile 107: |
Zeile 108: |
| | Außerdem muss man als dependencies zum Projekt die Plugins maven-jar-plugin und maven-dependency-plugin hinzufügen. | | Außerdem muss man als dependencies zum Projekt die Plugins maven-jar-plugin und maven-dependency-plugin hinzufügen. |
| | Die erzeugte JAR findet sich im Ordner <code>target/</code> des Projekts, nachdem man mit Rechtsklick auf das Projekt und "Build with Dependencies" den Bauprozess gestartet hat. | | Die erzeugte JAR findet sich im Ordner <code>target/</code> des Projekts, nachdem man mit Rechtsklick auf das Projekt und "Build with Dependencies" den Bauprozess gestartet hat. |
| | + | |
| | + | ===== JAR mit allen Abhängigkeiten ===== |
| | + | |
| | + | Um ein einziges JAR mit allen Abhängigkeiten (fat JAR oder uber-jar) zu erzeugen, kann man das maven-assembly-plugin, das onejar-maven-plugin oder wohl auch das maven-shade-plugin nutzen. |
| | + | |
| | + | Siehe |
| | + | * https://stackoverflow.com/questions/574594/how-can-i-create-an-executable-jar-with-dependencies-using-maven |
| | + | * http://tutorials.jenkov.com/maven/maven-build-fat-jar.html |
| | | | |
| | ==== Projektmanagement allgemein ==== | | ==== Projektmanagement allgemein ==== |
| Zeile 135: |
Zeile 144: |
| | * [http://www.eclipse.org/jubula/ Eclipse Jubula] kann u.a. [[Java Swing]]-Anwendungen testen. | | * [http://www.eclipse.org/jubula/ Eclipse Jubula] kann u.a. [[Java Swing]]-Anwendungen testen. |
| | * [https://www.qfs.de/de/index.html QF-Test], eine proprietäre Testsuite u.a. für [[Java]]-Desktopanwendungen z.B. mit [[Swing]] | | * [https://www.qfs.de/de/index.html QF-Test], eine proprietäre Testsuite u.a. für [[Java]]-Desktopanwendungen z.B. mit [[Swing]] |
| | + | |
| | + | === Low Code === |
| | + | |
| | + | Low Code oder [https://de.wikipedia.org/wiki/No-Code-Plattform No Code] sind Entwicklungsumgebungen, die mit verhältnismäßig mächtigen Elementen arbeiten, um rasch Anwendungen entwickeln zu können. |
| | + | |
| | + | Beispiele: |
| | + | |
| | + | * [https://www.airtable.com/pricing Airtable] |
| | + | * [https://www.make.com/ Make], früher als Integromat bezeichnet |
| | | | |
| | == Reguläre Ausdrücke == | | == Reguläre Ausdrücke == |
| Zeile 140: |
Zeile 158: |
| | * [http://regexlib.com/CheatSheet.aspx Übersicht über "regular expressions (regex)"] | | * [http://regexlib.com/CheatSheet.aspx Übersicht über "regular expressions (regex)"] |
| | * [http://openoffice.blogs.com/openoffice/2009/06/using-regular-expressions-in-openoffice-calc-filters-phrases-like-contains-rather-than-equals-less-t.html Reguläre Ausdrücke für Filter] in [[OpenOffice]] Calc. | | * [http://openoffice.blogs.com/openoffice/2009/06/using-regular-expressions-in-openoffice-calc-filters-phrases-like-contains-rather-than-equals-less-t.html Reguläre Ausdrücke für Filter] in [[OpenOffice]] Calc. |
| | + | |
| | + | == Künstliche Intelligenz == |
| | + | |
| | + | |
| | + | === Allgemeines === |
| | + | Siehe [[Neuronale Netze]] |
| | + | |
| | + | === ChatGPT === |
| | + | |
| | + | ChatGPT ist eine künstliche Intelligenz, mit der man Dialoge im WhatsApp-Stil führen kann. Es kann nach Anmeldung auf openai kostenlos genutzt werden. |
| | + | |
| | + | Eine lustige Anwendung ist [https://www.ricoshet.com/ ricoshet.com]; dort spricht - nach Vorgabe eines Themas - ChatGPT mit sich selbst. |
| | + | |
| | + | Siehe |
| | + | * https://www.golem.de/news/kuenstliche-intelligenz-so-funktioniert-chatgpt-2302-171644-3.html |
| | + | |
| | + | === Sprachmodelle === |
| | + | |
| | + | Viele andere Sprachmodelle kann man auch lokal (und kostenlos) testen. 32GB sind aber mindestens erforderlich, 64GB machen die Nutzung rascher. |
| | + | |
| | + | Als Tool bieten sich an: |
| | + | * [https://msty.ai/ Msty] an. |
| | + | * GPT4all |
| | | | |
| | == Datenbanken == | | == Datenbanken == |
| Zeile 193: |
Zeile 234: |
| | | | |
| | HSQLDB ist eine kleine Java-Datenbank, die auch In-Memory-Tabellen bietet. Zusammen mit Hibernate kann sie auch als Persistenzschicht für POJOs genutzt werden. | | HSQLDB ist eine kleine Java-Datenbank, die auch In-Memory-Tabellen bietet. Zusammen mit Hibernate kann sie auch als Persistenzschicht für POJOs genutzt werden. |
| | + | |
| | + | ==== AlaSQL ==== |
| | + | [https://github.com/AlaSQL/alasql/wiki/Sql AlaSQL] ist eine SQL-Abfragesprache für JSON-Daten. AlaSQL kann auch Excel-Tabellen lesen. |
| | | | |
| | === NoSQL === | | === NoSQL === |
| | + | |
| | + | Siehe |
| | + | |
| | + | * [[SurrealDB]] |
| | + | * [https://github.com/nocodb/nocodb NocoDB] |
| | + | * [https://www.openxava.org/ate/matrify-alternative OpenXava] erlaubt mit einfachen [[Java]]-Klassen recht schnell Web-Datenbankanwendungen zu erstellen. |
| | + | * [https://www.edgedb.com/docs/intro/quickstart#ref-quickstart EdgeDB] |
| | + | * LowDB - kann nicht als wirkliche Datenbank bezeichnet werden, aber möglicherweise sinnvoll für Persistenz von wenigen Daten. |
| | + | |
| | + | ==== Convex ==== |
| | + | |
| | + | [https://www.convex.dev/ Convex] |
| | + | |
| | + | * TypeScript im Server und im Client |
| | + | * Authentication |
| | + | * Authorization (sehr flexibel) |
| | + | * Nutzt generierten Code im Client - Projektstruktur wird von Convex grundsätzlich vorgegeben. |
| | + | * hat derzeit (Dezember 2025) [https://stack.convex.dev/object-sync-engine keine vollständige Offline-Funktionalität]. Aber angeblich schaut sich das Convex-Team das näher an. |
| | | | |
| | ==== CouchDB ==== | | ==== CouchDB ==== |
| | | | |
| | Siehe [[CouchDB]] | | Siehe [[CouchDB]] |
| | + | |
| | + | ==== Echtzeit-Datenbanken ==== |
| | + | |
| | + | * [[AceBase]] |
| | + | * https://rethinkdb.com/ |
| | + | * Die in Google Firebase integrierte Echtzeitdatenbank |
| | + | ** https://levelup.gitconnected.com/todo-app-using-firebase-react-typescript-ea0a34bd417d |
| | + | * [[SurrealDB]] |
| | + | * [[Supabase]] |
| | + | |
| | + | === Datenbanken als Service === |
| | + | * [https://www.elephantsql.com/plans.html ElephantSQL] - Postgres as a service |
| | + | * Google [[Firebase]] |
| | + | * IBM Cloudant basierend auf [[CouchDB]] |
| | + | * [https://nhost.io/pricing Nhost] u.a. mit [[PostgreSQL]] |
| | + | * [https://www.back4app.com/ Back4App] |
| | + | ** https://parseplatform.org/ |
| | + | * [https://devcenter.kinvey.com/rest/guides/core-overview Kinvey] |
| | + | * [https://kuzzle.io/pricing/ Kuzzle] |
| | + | |
| | + | === Datenbanken im Browser === |
| | + | |
| | + | * SQLite |
| | + | * [[pouchdb]], basiert im Browser auf IndexedDB, läuft aber auch in [[Node.js]] |
| | + | * [[IndexedDB]] |
| | + | ** kann in [[Node.js]] z.B. zum Testen imitiert werden, siehe [https://www.npmjs.com/package/fake-indexeddb fake-indexeddb] |
| | + | * [https://github.com/julienetie/db64 db64] ist ein kleiner Wrapper um [[IndexedDB]] |
| | + | * [https://github.com/jakearchibald/idb idb] ist wohl der häufigst genutzte Wrapper [[IndexedDB]] |
| | + | * [https://dexie.org/ Dexie.js], unterstützt auch [[TypeScript]] |
| | + | * [https://nanosql.io/ NanoSQL] |
| | + | * [https://www.npmjs.com/package/localforage LocalForage] |
| | + | * [https://github.com/google/lovefield lovefield], SQL-angelehnt |
| | + | |
| | + | * [https://www.npmjs.com/package/idb idb] dünne Hülle um IndexedDB |
| | + | * [https://www.npmjs.com/package/idb-keyval idb-keyval], einfacher Schlüssel-Wert-Speicher, basierend auf IndexedDB |
| | + | |
| | + | === Datenbank-Frontends === |
| | + | |
| | + | * [http://kexi-project.org/ kexi] tritt als Alternative für MS Access oder FileMaker an. |
| | + | * [https://github.com/giowck/symphytum Symphytum], intuitives Datenbank-Frontend (und -Backend), noch in der Entwicklung, bisher keine relationale Daten (Stand: Okt. 2020) |
| | + | * [[LibreOffice]] Base |
| | + | |
| | + | === Datenbank-Frontend in der Cloud === |
| | + | |
| | + | * https://restdb.io/features/ |
| | + | |
| | + | === Append-only Datenbanken === |
| | + | |
| | + | Unveränderliche Datenbanken, also Datenbanken, die die gesamte Historie bis zum Erreichen des aktuellen Status behalten, (Insert-only- bzw. Append-only-Datenbanken) gibt es in unterschiedlicher Ausprägung. |
| | + | |
| | + | Z.B. |
| | + | * Oracle Immutable Tables (oder Blockchain-Tables) |
| | + | * temporale Tabellen mit "as of <timestamp>"-Operator |
| | + | ** [https://mariadb.com/kb/en/system-versioned-tables/ MariaDB] |
| | + | * Datenbanken mit Versionskontrolle |
| | + | ** [https://www.dolthub.com/ Dolt] |
| | + | ** [https://terminusdb.com/ TerminusDB] |
| | + | * [https://immudb.io/ ImmuDb] |
| | + | * [[BigchainDB]] - blockchain-basiert |
| | + | |
| | + | |
| | + | Siehe auch |
| | + | * https://www.dolthub.com/blog/2022-03-21-immutable-database/ |
| | + | * https://en.wikipedia.org/wiki/Merkle_tree |
| | | | |
| | == Webbrowser steuern == | | == Webbrowser steuern == |
| Zeile 217: |
Zeile 343: |
| | * [http://www.python.org Python-Homepage] | | * [http://www.python.org Python-Homepage] |
| | * [https://realpython.com/python-development-visual-studio-code/ Einrichten von Visual Studio Code] als Python-IDE | | * [https://realpython.com/python-development-visual-studio-code/ Einrichten von Visual Studio Code] als Python-IDE |
| | + | |
| | + | === Python Package Manager PIP === |
| | + | |
| | + | PIP ist der Standard-Packagemanager für Python. Er lässt sich folgendermaßen auf [[Ubuntu]]/[[Debian]] installieren: |
| | + | |
| | + | sudo aptitude install python3-pip |
| | + | |
| | + | |
| | + | Wenn er durcheinander kommt und z.B. folgende Fehlermeldung zeigt: |
| | + | PermissionError: [Errno 13] Permission denied: '/usr/local/lib/python3.8/dist-packages/python_dateutil-2.8.1.dist-info' |
| | + | |
| | + | dann kann das an fehlenden Berechtigungen liegen. Das kann man beheben. Um den Benutzer USER der Gruppe <code>staff</code> hinzuzufügen, kann man folgendes Kommando nutzen: |
| | + | |
| | + | sudo adduser USER staff |
| | + | |
| | + | '''Warnung: [https://wiki.debian.org/SystemGroups#Groups_without_an_associated_user staff lässt recht weitgehende Veränderungen am System zu]. Bitte nur nutzen, wenn man wirklich versteht, was man tut!''' |
| | | | |
| | == XML == | | == XML == |
| Zeile 268: |
Zeile 410: |
| | * [http://www.htmlgoodies.com/html5/client/the-complete-guide-to-building-html5-games-with-canvas-svg.html#fbid=1sCuPBXjCgS Anleitung zum Bau von HTML5-Spielen auf Basis des Canvas- | | * [http://www.htmlgoodies.com/html5/client/the-complete-guide-to-building-html5-games-with-canvas-svg.html#fbid=1sCuPBXjCgS Anleitung zum Bau von HTML5-Spielen auf Basis des Canvas- |
| | Elements] | | Elements] |
| | + | |
| | + | ==== HTML5 Web Share API und Web Share Target API ==== |
| | + | |
| | + | Auf Mobil-Browsern wird die Web Share API, mit der Webapplikationen Inhalte mit nativen Apps "teilen" können, bereits weitverbreitet. |
| | + | |
| | + | Eher suchen muss man noch die [https://w3c.github.io/web-share-target/level-2/ Web Share Target API], mit der Webapplikationen im nativen "Teilen"-Dialog der Smartphones bzw. im "Öffnen mit ..."-Dialog der Desktops erscheinen können. In [[Chrome]] scheint es sich noch hinter einer Einstellung zu verstecken. Zu den Einstellungen kommt man mit chrome://flags. |
| | + | |
| | + | Siehe |
| | + | * https://mconverter.eu/blog/web_share_target_api/ |
| | + | * https://web.dev/web-share-target/ |
| | + | |
| | | | |
| | ==== HTML5 Frameworks ==== | | ==== HTML5 Frameworks ==== |
| | + | ===== React ===== |
| | + | Siehe [[React]] |
| | ===== Ember.js ===== | | ===== Ember.js ===== |
| | | | |
| Zeile 392: |
Zeile 547: |
| | * Grunt | | * Grunt |
| | * [[Maven]] mit dem maven-frontend-plugin | | * [[Maven]] mit dem maven-frontend-plugin |
| − | * webpack - eigentlich nur ein Paketierer für einzelne JavaScript-Dateien. | + | * [[Webpack]] - eigentlich nur ein Paketierer für einzelne JavaScript-Dateien. |
| | + | |
| | + | Daneben gibt es viele Build- und Hosting-Plattformen in der Cloud, z.B. |
| | + | * Netlify |
| | + | * [https://www.gatsbyjs.com/pricing/#buildsDetails GatsbyJS] |
| | + | * Back4app |
| | | | |
| | === Allgemeines === | | === Allgemeines === |
| Zeile 413: |
Zeile 573: |
| | Siehe | | Siehe |
| | * https://pouchdb.com/2015/05/18/we-have-a-problem-with-promises.html | | * https://pouchdb.com/2015/05/18/we-have-a-problem-with-promises.html |
| | + | |
| | + | ==== Module ==== |
| | + | |
| | + | In JavaScript haben sich verschiedene Formate für Module etabliert. |
| | + | |
| | + | Allerdings scheint zumindest in ES6 nicht mehr sicher zu sein, dass beim Import eines |
| | + | Moduls von mehreren verschiedenen Modulen dieses eine Modul als Singleton importiert |
| | + | wird. Siehe Kommentare zur [https://stackoverflow.com/questions/69896862/javascript-imports-do-they-duplicate Stackoverflow-Frage]. |
| | | | |
| | === Coding Style === | | === Coding Style === |
| Zeile 457: |
Zeile 625: |
| | * https://vaadin.com/pwa/build/production-pwa-with-webpack-and-workbox | | * https://vaadin.com/pwa/build/production-pwa-with-webpack-and-workbox |
| | | | |
| − | === HTTP Long Polling === | + | === HTTP Long Polling und WebSockets === |
| | Für HTTP-Long Polling bieten sich JavaScript-[[Closure]]s an. | | Für HTTP-Long Polling bieten sich JavaScript-[[Closure]]s an. |
| | Siehe [http://techoctave.com/c7/posts/60-simple-long-polling-example-with-javascript-and-jquery jQuery-Long Polling Example]. | | Siehe [http://techoctave.com/c7/posts/60-simple-long-polling-example-with-javascript-and-jquery jQuery-Long Polling Example]. |
| | | | |
| | In HTML5 gibt es für Server-Push die sogenannten [[WebSocket]]s. [http://techoctave.com/c7/posts/60-simple-long-polling-example-with-javascript-and-jquery Socket.IO] ist eine JavaScript-Bibliothek, die die Server-Push-Technologie (HTTP Long Poll oder Implementierungen von Websockets) kapselt. | | In HTML5 gibt es für Server-Push die sogenannten [[WebSocket]]s. [http://techoctave.com/c7/posts/60-simple-long-polling-example-with-javascript-and-jquery Socket.IO] ist eine JavaScript-Bibliothek, die die Server-Push-Technologie (HTTP Long Poll oder Implementierungen von Websockets) kapselt. |
| | + | |
| | + | ==== WebSockets ==== |
| | + | |
| | + | Mit |
| | + | * https://github.com/danhab99/interactive-websocket-cli |
| | + | kann man einen Server und einen Client in der Shell starten, um Websockets ein wenig auszuprobieren. |
| | | | |
| | === Bearbeiten von PDFs mit JavaScript === | | === Bearbeiten von PDFs mit JavaScript === |
| Zeile 480: |
Zeile 654: |
| | Eine Alternative zur Erzeugung von PDFs könnte das Erstellen von SVGs sein: | | Eine Alternative zur Erzeugung von PDFs könnte das Erstellen von SVGs sein: |
| | * https://www.txtjs.com/ | | * https://www.txtjs.com/ |
| | + | |
| | + | === Bearbeiten von Word-DOCX-Dokumenten === |
| | + | |
| | + | Siehe |
| | + | * [https://docxtemplater.readthedocs.io/en/latest/faq.html DocxTemplater] |
| | + | * [https://github.com/lalalic/docx4js docx4js] - ein Docx-Parser |
| | + | * [https://jstool.gitlab.io/demo/preview-ms-word-docx-document-in-browser/ Rendern von Docx im Browser] |
| | + | ** basiert auf [https://github.com/mwilliamson/mammoth.js mammoth.js] |
| | + | * https://stackoverflow.com/questions/44698896/javascript-library-to-read-doc-and-docx-on-client |
| | + | |
| | + | Lesen von Word-Docx-Dokumenten |
| | + | * [https://www.npmjs.com/package/word-extractor?activeTab=readme word-extractor] - liest nur Text |
| | + | * [https://github.com/mwilliamson/mammoth.js mammoth.js] erzeugt simples HTML aus Word. |
| | + | ** [https://jstool.gitlab.io/demo/preview-ms-word-docx-document-in-browser/ Mammoth-Online-Demo] |
| | + | * [https://www.npmjs.com/package/any-text any-text] ermöglicht, den Text eines Docx-Dokuments auszulesen. |
| | + | * [https://github.com/dkiyatkin/node-office node-office] nutzt unoconv zur Extrahierung von Text |
| | + | ** [https://wiki.ubuntuusers.de/unoconv/ unoconv] ist ein Kommandozeilentool zur Konvertierung von Office-Dokumenten, das ein installiertes OpenOffice oder LibreOffice nutzt. |
| | + | |
| | + | === Scannen mit JavaScript === |
| | + | |
| | + | Dokumente scannen kann man wohl auch aus dem Browser: Siehe |
| | + | * https://www.npmjs.com/package/scanner-js |
| | + | |
| | + | Aber auch das übliche Client-Server-Modell wird in JavaScript verwirklicht: |
| | + | * https://github.com/sbs20/scanservjs |
| | | | |
| | === Google Apps Script === | | === Google Apps Script === |
| Zeile 502: |
Zeile 701: |
| | ** Siehe aus dem [[Java]]-Bereich dazu auch [[JOOQ]] | | ** Siehe aus dem [[Java]]-Bereich dazu auch [[JOOQ]] |
| | * [https://www.npmjs.com/package/bookshelf Bookshelf.js] ist eine "leichte" ORM-Ebene, die sich [[Knex]] bedient. Für spezielle Abfragen kann auf Knex zurückgegriffen werden. | | * [https://www.npmjs.com/package/bookshelf Bookshelf.js] ist eine "leichte" ORM-Ebene, die sich [[Knex]] bedient. Für spezielle Abfragen kann auf Knex zurückgegriffen werden. |
| | + | |
| | + | ===== JavaScript for PostgresSQL NOTIFY/LISTEN ===== |
| | + | |
| | + | |
| | + | * https://github.com/andywer/pg-listen |
| | + | * https://www.npmjs.com/package/pg-pubsub |
| | + | * https://github.com/emilbayes/pg-ipc |
| | | | |
| | === JavaScript UI Frameworks === | | === JavaScript UI Frameworks === |
| Zeile 523: |
Zeile 729: |
| | ** https://medium.com/@gajus/parsing-absolutely-anything-in-javascript-using-earley-algorithm-886edcc31e5e | | ** https://medium.com/@gajus/parsing-absolutely-anything-in-javascript-using-earley-algorithm-886edcc31e5e |
| | * PEG.js kann mit Hilfe eines Plugins auch TypeScript-Parser bauen. | | * PEG.js kann mit Hilfe eines Plugins auch TypeScript-Parser bauen. |
| | + | |
| | + | === Diagramme darstellen in Javascript === |
| | + | ==== Darstellung von Kuchen- und Balkendiagrammen ==== |
| | + | |
| | + | * https://plotly.com/javascript/ |
| | + | |
| | + | ==== Darstellung von Graphen ==== |
| | + | |
| | + | Siehe |
| | + | * [https://js.cytoscape.org/ Cytoscape] (MIT-Lizenz) |
| | + | * [https://mermaid.js.org/ mermaid.js] - Darstellung von in Text-Notation beschriebenen Graphen |
| | + | ** https://blog.ordix.de/flowcharts-as-code-mit-mermaid-js |
| | + | * https://github.com/jpb12/react-tree-graph |
| | + | * [https://kroki.io/ Kroki] ist ein freier HTTP-Dienst, der Diagramme erzeugt. Er basiert auf Open Source. |
| | | | |
| | === Test JavaScript === | | === Test JavaScript === |
| Zeile 528: |
Zeile 748: |
| | Zur Steuerung von Webbrowsern bzw. zum Simulieren von Webbrowser-Nutzung siehe | | Zur Steuerung von Webbrowsern bzw. zum Simulieren von Webbrowser-Nutzung siehe |
| | * [[Selenium]] (steuert verschiedene Browser) | | * [[Selenium]] (steuert verschiedene Browser) |
| − | * [https://en.wikipedia.org/wiki/PhantomJS PhantomJS] (basiert auf WebKit) | + | * https://github.com/puppeteer/puppeteer - Puppeteer lädt eine passende [[Chromium]]-Version herunter |
| | + | * [https://en.wikipedia.org/wiki/PhantomJS PhantomJS] (basiert auf WebKit, wird nicht mehr weiterentwickelt) |
| | * CasperJS (basiert auf PhantomJS) | | * CasperJS (basiert auf PhantomJS) |
| | * [https://slimerjs.org SlimerJS] (basiert auf Gecko, der [[Firefox]]-Engine) | | * [https://slimerjs.org SlimerJS] (basiert auf Gecko, der [[Firefox]]-Engine) |
| Zeile 543: |
Zeile 764: |
| | | | |
| | [http://hueniverse.com/oauth/ OAuth] ist ein offener Standard zur Identifizierung für einzelne Web-Dienste. Der Upgrade auf Oauth 2.0 wird von manchen Beteiligten kritisch gesehen. | | [http://hueniverse.com/oauth/ OAuth] ist ein offener Standard zur Identifizierung für einzelne Web-Dienste. Der Upgrade auf Oauth 2.0 wird von manchen Beteiligten kritisch gesehen. |
| | + | |
| | + | Siehe auch |
| | + | * [[OpenID]] |
| | + | * [https://hubzilla.org//page/hubzilla/hubzilla-project Hubzilla-Projekt] |
| | | | |
| | == OPA == | | == OPA == |
| | | | |
| − | [http://doc.opalang.org/ OPA] ist eine Programmiersprache, deren Ausführung unbemerkt vom Entwickler sowohl auf dem Server (mit Datenbank) als auch auf dem Client läuft. | + | [http://opalang.org/ OPA] ist eine Programmiersprache, deren Ausführung unbemerkt vom Entwickler sowohl auf dem Server (mit Datenbank) als auch auf dem Client läuft. |
| | + | |
| | + | * https://www.openpolicyagent.org/docs/latest/policy-language/ |
| | | | |
| | == Webservices == | | == Webservices == |
| Zeile 562: |
Zeile 789: |
| | [[Category:Informationstechnik]] | | [[Category:Informationstechnik]] |
| | [[Category:Softwareentwicklung]] | | [[Category:Softwareentwicklung]] |
| | + | [[Category:Datenbank]] |
| | [[Category:Java-Tipps]] | | [[Category:Java-Tipps]] |
| | [[Category:Podcast]] | | [[Category:Podcast]] |