A analogia do openCypher com SQL é útil, mas não é 1:1.
Mapa Mental
| SQL | openCypher |
|---|---|
| banco relacional | grafo |
| tabela | rótulo de nó (:Person) ou tipo de aresta (:AUTHORED) |
| linha | nó ou aresta |
| coluna | propriedade |
| chave primária | propriedade id |
A analogia do openCypher com SQL é útil, mas não é 1:1.
Mapa Mental
| SQL | openCypher |
|---|---|
| banco relacional | grafo |
| tabela | rótulo de nó (:Person) ou tipo de aresta (:AUTHORED) |
| linha | nó ou aresta |
| coluna | propriedade |
| chave primária | propriedade id |
| ... | |
| "simple_modifications": [ | |
| { | |
| "from": { | |
| "key_code": "right_command" | |
| }, | |
| "to": [ | |
| { | |
| "shell_command": "open -a 'iTerm.app'" |
| fdupes -qdN -r ./ #remove duplicates files with same hash | |
| magick mogrify -format jpg -define preserve-timestamp=true *.heic #convert all files heic to jpg on current folder | |
| magick mogrify -path ./convert -define preserve-timestamp=true -format jpg -auto-orient -resize "1280x<" -quality 80% *.jpg #resize proprotional to folder "convert". Echo Show 8 size's | |
| magick mogrify -path ./convert -define preserve-timestamp=true -format jpg -resize "1280x800^" -gravity center -extent 1280x800 -quality 80% *.jpg #crop to amazon echo size after center zoom | |
| mkdir convert_logo | |
| magick mogrify -path convert_logo -compose over -gravity center -draw "image over 0,0 0,0 '<path/logo>.png'" *.jpg #OPTIONAL: Put logo on images |
| ... | |
| <profiles> | |
| <profile> | |
| <id>prd</id> <!-- chave do profile usado pelo CI/CD --> | |
| <build> | |
| <plugins> | |
| <plugin> | |
| <groupId>org.owasp</groupId> | |
| <artifactId>dependency-check-maven</artifactId> | |
| <version>5.3.2</version> |
| ... | |
| <build> | |
| <plugins> | |
| ... | |
| <plugin> | |
| <groupId>org.owasp</groupId> | |
| <artifactId>dependency-check-maven</artifactId> | |
| <version>5.3.2</version> | |
| <configuration> | |
| <suppressionFile>dependency-checker-exclude.xml</suppressionFile> |
| ... | |
| <build> | |
| <plugins> | |
| ... | |
| <plugin> | |
| <groupId>org.owasp</groupId> | |
| <artifactId>dependency-check-maven</artifactId> | |
| <version>5.3.2</version> | |
| <executions> | |
| <execution> |
| #metrics - habilitar todos os endpoints do actuator | |
| management.endpoints.web.exposure.include=* | |
| management.endpoint.prometheus.enabled=true | |
| #metricas - /actuator/metrics/bucket4j_summary_consumed | |
| bucket4j.filters[0].metrics.enabled=true #habilitar as métricas do bucket4j | |
| bucket4j.filters[0].metrics.types=REJECTED_COUNTER #métricas habilitas apenas para os bloqueios, mas poderia considerar também o consumo: REJECTED_COUNTER,CONSUMED_COUNTER | |
| bucket4j.filters[0].metrics.tags[0].key=IP #chave do actuador | |
| bucket4j.filters[0].metrics.tags[0].expression=getRemoteAddr() #valor ip do cliente | |
| bucket4j.filters[0].metrics.tags[0].types=REJECTED_COUNTER #quantidade de bloqueios |
| ... | |
| <dependencies> | |
| ... | |
| <!-- metrics dependency - actuator !--> | |
| <dependency> | |
| <groupId>org.springframework.boot</groupId> | |
| <artifactId>spring-boot-starter-actuator</artifactId> | |
| </dependency> | |
| ... | |
| </dependencies> |
| #bloqueio dos endpoints de autenticação - /auth | |
| bucket4j.filters[0].cache-name=rate-limit | |
| bucket4j.filters[0].http-response-body={ "message": "Too many requests" } | |
| bucket4j.filters[0].url=/auth/.* #url que será impactada pela regra | |
| bucket4j.filters[0].rate-limits[0].expression=@authService.getCurrentAuthUserInSession() #chave da regra de bloqueio. Retornado o usuário da sessão | |
| bucket4j.filters[0].rate-limits[0].bandwidths[0].capacity=3 #3 requisições permitidas no intervalod de 1 minuto | |
| bucket4j.filters[0].rate-limits[0].bandwidths[0].time=1 | |
| bucket4j.filters[0].rate-limits[0].bandwidths[0].unit=minutes | |
| bucket4j.filters[0].rate-limits[0].bandwidths[0].fixed-refill-interval=5 #ao exceder, será bloqueado por 5 minutos | |
| bucket4j.filters[0].rate-limits[0].bandwidths[0].fixed-refill-interval-unit=minutes |
| @RestController | |
| @RequestMapping("/") | |
| public class StartController { | |
| @GetMapping | |
| public String helloWorld() { | |
| return "Helo World"; | |
| } | |
| } |