- How to improve your prototyping efficiency to produce live solutions in minutes?
- How to make it without expensive tools with long term learn curve?
- How to bring your Development on the next level?
Get Started with Domain-Specific Languages
About apidsl ✍
There are many developers who are working on different projects that utilize natural language processing, the key is convert a sentence to the working application, not just a code.
I did last time some wrapper for bash, python, ... with such format: load("domains.txt") I am using it to build multiplatform scripts, where the same sentence will be executed on PHP, Python, JS, ...
- jQuery, DOM Traversal and Manipulation
- Apache Camel uses a Java Domain Specific Language or DSL for creating Enterprise Integration Patterns or Routes in a variety of domain-specific languages (DSL)
We are using just a part (NLP) of AI on DIALOGWARE platform. We build hashtag #text2software , the hashtag #text2code is nothing special for today. Self managed DSL is the key.
A self-managed Domain-Specific Language (DSL) is a type of DSL that is designed to be managed by the user and not a programming language. Unlike traditional programming languages, a self-managed DSL is designed to be used in specific domains and can be used to quickly and easily write code for tasks related to that domain. For example, a self-managed DSL for database management could be used by a database administrator to quickly and easily create and manage a database.
- What does "managed by the user" mean? Change the language definition or write code using the language?
It's mean that as a User I am able to create any function without changing the language, the name of function is the name of filename of script which represent the function. On APIDSL we are basing on shell scripts, so it's easy to build modular DSL with based on git external dependencies. Managed by the user means that the user has complete control over the development and use of the self-managed DSL. This includes the ability to define the functions of the language.
What can you do with a Domain-Specific Language?
A domain-specific language is a notation, designed to be used for a particular purpose. In a DSL, you can define the types of model element and their relationships. When you have designed a DSL, you can distribute it as part of a Code with decentralised (on git repositoriess) packages. Users work with the DSL in command line or another tools depends, language.
bash.apidsl.com is a wrapper for bash scripts to make own DSL
How to work with modern business domain with different languages and environments? With apiDSL it's such easy, there are two options of usage:
-
directly from command line such param of apidsl.sh script
-
run (example.txt) file script
- universal format regardless of the environment
- using libraries and using only selected functions
- launching services available in the local environment
- running APIs available externally
- possibility to change permissions for each script depending on the user
- the ability to add your own functions
How it works? ✍
skrypt apidsl.sh Parsuje skrypty zapisywane w formacie: funkcja("parametr") i uruchamia w shellu przygotowane skrypty odnoszące się do nazyw plików:
/apidsl/bash/*.sh
load -> /apidsl/bash/load.sh
load("plik.txt") -> ./apidsl/bash/load.sh "plik.txt"
The lines with comments such: "//" , "#" are removed.
Mapowanie projektów z git
ładowane z repozytoriów git, jak github, gitlab, bitbucket
- zamiast xpath - ładowanie zalezności przez skrypt github
- letPath - przygotować https://github.com/letpath/bash
Layers ✍
A domain-specific language is a notation, designed to be used for a particular purpose. In a DSL, you can define the types of model element and their relationships. When you have designed a DSL, you can distribute it as part of a Code with decentralised (on git repositoriess) packages. Users work with the DSL in command line or another tools depends, language.
- OS System
Universal format regardless of the environment
USAGE in terminal or another platform language, e.g.
- apidsl .sh
- apidsl .php
- apidsl .js
- apidsl .py
With apiDSL it's such easy, there are two options of usage:
- directly from command line such param of apidsl.* .sh .py .js .php script
- run example.txt file script with apidsl.* .sh .py .js .php script
- the ability to add your own functions
- using libraries and using only selected functions
- launching services available in the local environment
- running APIs available externally
LIBRARY ✍
FUNCTIONS ✍
Przykładowe funkcje
Funkcja load() pobiera wejściowy parametr nazwy pliku i wyświetla zawartośc dla kolejnych funkcji
#!/bin/bash
FILENAME=$1
[ -z "$FILENAME" ] && IFS='' read -d '' -r FILENAME
[ ! -z "$FILENAME" ] && cat $FILENAME
Funkcja save() pobiera wejściowe dane i parametry zapisuje zawartość strumienia w nazwie pliku podanego w parametrze funkcji.
#!/bin/bash
[ -t 0 ] && echo "stdin File Content is empty" && exit
IFS='' read -d '' -r CONTENT
[ -z "$1" ] && echo "FILENAME is empty" && exit
FILENAME=$1
PATH_FILE="./${FILENAME}"
( [ -e "${PATH_FILE}" ] || touch "${PATH_FILE}" ) && [ ! -w "${PATH_FILE}" ] && echo "CONTENT can not be written to FILE: ${PATH_FILE}" && exit
echo "${CONTENT}" > "${PATH_FILE}"
EXAMPLES ✍
Set url of Webpage and extract title tag to string and save in a file**
File: example1.txt
http("https://www.rezydent.de/")
.xpath("title")
.save("title.txt");
./apidsl.sh example1.txt
./apidsl.sh 'http("https://www.rezydent.de/").xpath("title").save("title.txt")'
Load many domains from a file, download webpage html file, extract title tag from html, save to another the list of title
File: example2.txt
load("domains.txt")
.split("/n")
.http()
.xpath("title")
.appendToFile("titles.txt");
./apidsl.sh example2.txt
./apidsl.sh 'load("domains.txt").split("/n").http().xpath("title").appendToFile("titles.txt")'
Load file path from a file: path.txt, show file from the path On the end we see not the content from path.txt file, but content from pathwhich was inside the file and is loaded through the second function.
File: example3.txt
load("path.txt").load()
./apidsl.sh example3.txt
./apidsl.sh 'load("path.txt").load()'
TODO ✍
skrypty zapisywać w folderze głównym
zamiast w folderach, kazdy skrypt z kropkami jeśli piszemy
letwhois.ns() plik: letwhois.ns.sh
kazda funkcja jest przepisywana żeby mieć do niej dostęp z jednego poziomu bez przechodzenia po folderach
uproszcenie zarządzania i wyswietlanie listy plików
każda funkcja i tak musi działać autopnimicznie
skrypt instalujący kopiuje wszystkie skrypty bezposrednio
https://github.com/letwhois/bash apidsl/apidsl/bash letwhois
apidsl/apidsl/bash/letwhois/reverseIp.sh
repozytiorium https://github.com/letwhois/bash
mapa funkcji apidsl/apidsl/bash/letwhois/reverseIp.sh reverseIp
-
pobiera cale repo https://github.com/letwhois/bash
-
wyodrebnia poprzez mapowanie domainIp.sh domainIp domainIp.sh letwhois.domainIp
curl().grep("ri",)
- Skąd pobierać dane autoryzacyjne?
- Example with plainedit
- more loop options
- many loop in one sentence
install https://github.com/apidsl/ultimate-nmap-parser
skanuje hosty git clone https://github.com/desecsecurity/parsing_html_bash ./parsing_html.sh www.google.com
- skrypty do detekcji
- skrypty do naprawy
- schematy naprawy / template w zalezności od sytuacji
http.get("https://web.com")
js. import("https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js") .get("https://web.com") .xpath("title") .print()
js. console.log("clone") jquery.get("simpleargs") .nano("filename.txt","content") .git("commit","-m","nowy plik") .git("push");
Każdy z tych jest w fodlerze ze skryptami, gdzie kolejno podaje sie wartosci
- values
- context - before, next command
- scripts
- language
- Domain-Specific Languages