Skip to content

Instantly share code, notes, and snippets.

@jeffque
jeffque / xml.md
Created May 28, 2025 15:54
BNF grosseira para XML

Aqui uma gramática "livre de contexto" para reconhecer XMLs em geral (sem entrar na especificidade dos XSDs).

A tag de identificação por hora tá sendo ignorada, a que tem a forma <?xml ... ?>, mas seria só adicionar ela.

Para facilitar a escrita da gramática livre de contexto, estou usando aqui uma estratégia de "passagem de parâmetro". Isso facilita a indicação, por exemplo, de tags que se fecham: <p></p>, por exemplo, é derivado de TREE_NODE("p").

Para os casos de passagem de parâmetro, o "tipo" tá indicado. Por exemplo, a produção de TREE_NODE(TAG_NAME ::= IDENTIFICADOR_TAG) indica que o parâmetro TAG_NAME é feito como a produção IDENTIFICADOR_TAG.

#!/usr/bin/env ruby
require "liquid"
require "benchmark/ips"
require "jekyll"
puts "Ruby #{RUBY_VERSION}-p#{RUBY_PATCHLEVEL}"
puts "Liquid #{Liquid::VERSION}"
module Testing
class PostUrlAlways < Liquid::Tag
@jeffque
jeffque / SlowlorrisController.java
Last active January 28, 2025 17:16
A controller that yields a stream of results while computing Ackerman Peter function to check timeout problems in Spring Boot
@RestController
class SlowlorrisController {
@GetMapping(path = "/slowlorris2", produces = "text/plain")
StreamingResponseBody teste2() {
return out -> {
out.write(("COMEÇANDO!!!\n").getBytes(Charset.defaultCharset()));
out.flush();
for (int i = 0; i < 1000; i++) {
out.write(("rodada %d\n".formatted(i)).getBytes(Charset.defaultCharset()));
@jeffque
jeffque / Main.java
Created December 6, 2024 20:41
A simple app to show that visualvm cannot sample CPU usage of virtual threads
package jeffque;
import java.util.Scanner;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.function.Supplier;
public class Main {
@jeffque
jeffque / peano.hs
Created August 29, 2024 01:40
Aritmética de Peano
data Nat = Zero | Suc Nat
inc :: Nat -> Nat
inc x = Suc x
showNat :: Nat -> String
showNat Zero = "Zero"
showNat (Suc v) = "Suc " ++ (show v)
type BinNat = (Nat -> Nat -> Nat)
@jeffque
jeffque / ServeInputStream.java
Created August 23, 2024 12:48
Pequena alternativa para responder como input stream uma coleção de elementos
import java.io.IOException;
import java.io.InputStream;
import java.util.Iterator;
import java.util.function.Function;
public class ServeInputStream<T> extends InputStream {
private final Iterator<T> iterator;
private final Function<T, byte[]> serializer;
@jeffque
jeffque / mapeamentoHaskell.hs
Last active August 23, 2024 09:58
Uma demonstração da estrutura de dados "mapa"
data Resultado = Vazio | Valor Integer
type Mapeamento = (Integer -> Resultado)
showResultado :: Resultado -> String
showResultado Vazio = "Vazio"
showResultado (Valor v) = "Valor " ++ (show v)
instance Show Resultado where
show = showResultado
<html>
<head>
<script defer="" src="https://cdn.jsdelivr.net/npm/[email protected]/dist/katex.min.js" integrity="sha384-pK1WpvzWVBQiP0/GjnvRxV4mOb0oxFuyRxJlk6vVw146n3egcN5C925NCP7a7BY8" crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/katex.min.css" integrity="sha384-RZU/ijkSsFbcmivfdRBQDtwuwVqK7GMOw6IMvKyeWL2K5UAlyp6WonmB8m7Jd0Hn" crossorigin="anonymous">
</head>
<body>
<p><span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi mathvariant="normal">∀</mi><mi>i</mi><mo>∈</mo><mrow><mo fence="true">(</mo><mn>0</mn><mo separator="true">,</mo><mrow><mo fence="true">∣</mo><mi>P</mi><mo fence="true">∣</mo></mrow><mo fence="true">]</mo></mrow><mo>:</mo><msub><mi>p</mi><mrow><mi>i</mi><mo>−</mo><mn>1</mn></mrow></msub><mi mathvariant="normal">.</mi><msub><mi>v</mi><mrow><mi>i</mi><mi>n</mi></mrow></msub><mo>=</mo><msub><mi>p</mi><mi>i</mi></msub><mi mathvari
@jeffque
jeffque / questions-answers.md
Last active July 8, 2024 19:00 — forked from Met4tron/questions.md
Java na visão de quem está reaprendendo

Persistence

  • JPA ou Hibernate?
  • Existe um mundo onde JDBC puro é mais utilizado?
    • Eu uso bastante JDBC puro. Normalmente se usa quando se precisa falar diretamente com o banco, não HQL ou coisa equivalente. Existem tretas com spring-jdbc que o jdbc puro trata bem. Não cheguei a usar algo mais específico do spring para stream de dados e coisas mais pesadas.
  • Existe algum Query Builder no mundo Java?
  • Muitos. Como exemplo, jOOQ.
@jeffque
jeffque / exercício-java.md
Last active July 3, 2024 14:05
Exercício em Java para trabalhar modelagem de dados

Um pequeno exercício Java para trabalhar modelagem de dados.

A fila

Você precisa saber se o SLA de atendimento está sendo atendido e, se não está, quantos pacientes na fila foram atendidos depois do SLA.

Você receberá um único array de EVENTOS, ordenado pela ordem cornológica de acontecimento. Cada evento contém as seguintes informações: