Feliz aniversário, Funções ZZ! Ganhou um plugin para Oh My Fish!

· fish oh-my-fish shell utilities

O utilitário de linha de comando Funções ZZ completou 21 anos de idade na última segunda-feira! 🥳 🎉 🎊

Eu, em comemoração mais que merecida, escrevi um plugin para Oh My Fish que permite usar os mais incríveis utilitários de todos os tempos no Fish Shell! 🐠 🐚

A green fish in green waters
Katherine McAdoo

Lá se vai bem mais de uma década dede que o meu amigo e ex-colega de Globo Marcelo “metal” Vieira me apresentou as Funções ZZ, uma fabulosa coletânea de 190 miniaplicativos 🤯 para linha de comando.

Criadas há 21 anos pelo entusiasta e contribuidor de software-livre Aurelio “verde” Jargas e com co-autoria e contribuições de muitos outros, as Funções ZZ ainda são uma grande mão na roda para as mais variadas situações.

Embora algumas delas tenham foco em coisas do Brasil (como, por exemplo, a tabela do brasileirão, a programação da TV Globo, o validador de CPF, etc.) boa parte é super útil para quem passa várias horas por dia no prompt de comando, efetuando tarefas muitas vezes complexas e compostas por uma sequência de comandos, cada um gerando dados de entrada para o seguinte (foo | bar | qux) numa forma de operar o shell que chamamos de encadeamento.

Mas, se você está pensando que as Funções ZZ são úteis apenas na linha de comando, pense de novo! Suas glórias vão muito além do shell! Eu me lembro bem quando o metal me contou uma história — e, a propósito, ele é cheio delas — de quando ele criou um bot para disponibilizar as funções via Jabber e poder usá-las de onde quer que estivesse, inclusive e principalmente pelo celular. Ele vivia, certamente, se gabando do feito.

Já eu, como feliz usuário de Fish Shell já há um bom tempo, não poderia ficar sem as formidáveis Funções ZZ! Feitas para rodar em Bash, elas precisariam ser reescritas para rodarem nativamente no Fish. Por sorte, o framework que uso e mantenho, Oh My Fish, tem um excelente suporte a criação de plugins, o que permite estender as funcionalidades do shell de forma simples.

Sendo assim, resolvi juntar uns códigos que eu já havia feito e criar o plugin-funcoeszz. Ele disponibiliza todas as 190 funções, prontas pra serem usadas no Fish Shell, com todas as suas glórias:

⋊> ~ zzaleatorio
359

⋊> ~ zzcalcula 179 \* 2 + 1
359

⋊> ~ zzbissexto
2021 não é bissexto

⋊> ~ zzbissexto 2020
2020 é bissexto

⋊> ~ zzdiasuteis
Fevereiro de 2021 tem 20 dias úteis.

⋊> ~ zzromanos 2021
MMXXI

⋊> ~ zzromanos CCCLIX
359

⋊> ~ zzsenha
O3HPJKUow1EM0huQNYD8pR7RBL0Vlr

⋊> ~ zzmaiusculas tá funcionando
TÁ FUNCIONANDO

⋊> ~ zzcoin BTC
R$ 270.549,99

Espero que o plugin seja útil para demais usuários de Fish! Na página do repositório você encontra as instruções de instalação. Tanto o Fish Shell quanto o Oh My Fish também são fáceis de instalar, as instruções podem ser encontradas aqui e aqui, respectivamente.

Encerro com um agradecimento ao verde e aos demais autores por cada uma das 190 funções e ao metal por ter me apresentado esta pérola da computação brasileira! 👏 👍 🙌

Fique agora com algumas das minhas favoritas:

⋊> ~ zzfatorar 360
360 | 2
180 | 2
 90 | 2
 45 | 3
 15 | 3
  5 | 5
  1 |

360 = 2^3 * 3^2 * 5

⋊> ~ zzfatorar 359
359 é um número primo.

⋊> ~ zzconstantes -m
Constantes Matemáticas
Nome                                            Símbolo Valor
Pi, constante de Arquimedes ou número de Ludoph π       ≈ 3.14159265358979323846264338327950288 
constante de Pitágoras, raiz quadrada de dois   √2      ≈ 1.41421356237309504880168872420969807 
constante de Napier, base do Logaritmo natural  e       ≈ 2.71828182845904523536028747135266249 
raiz quadrada de menos um (√-1)                 i       i² = -1 
constante de Euler-Mascheroni                   γ       ≈ 0.57721566490153286060651209008240243 
Número de Ouro                                  φ       ≈ 1.61803398874989484820458683436563811 
constante de Embree-Trefethen                   β*      ≈ 0.70258 
constante de Feigenbaum                         δ       ≈ 4.66920160910299067185320382046620161 
constante de Feigenbaum                         α       ≈ 2.50290787509589282228390287321821578 
constante dos primos gêmeos                     C2      ≈ 0.66016181584686957392781211001455577 
constante de Meissel-Mertens                    M1      ≈ 0.26149721284764278375542683860869585 
constante de Brun para primos gêmeos            B2      ≈ 1.9021605823 
constante de Brun para primos quádruplos        B4      ≈ 0.8705883800 
constante de Bruijn-Newman                      Λ       > – 2.7 · 10−9 
constante de Catalan                            K       ≈ 0.91596559417721901505460351493238411 
constante de Landau-Ramanujan                   K       ≈ 0.76422365358922066 
constante de Viswanath                          K       ≈ 1.13198824 
constante de Legendre                           B´L     ≈ 1.08366 
constante de Ramanujan-Soldner                  μ       ≈ 1.451369234883381050283968485892027 
constante de Erdös-Borwein                      EB      ≈ 1.606695152415291763 
Constante de Liouville                          L       ≈ 0.1100010000000000000000010 

Unidades de Base no SI
Grandeza                  Nome           Símbolo
Comprimento               metro          m
Massa                     quilograma     kg
Tempo                     segundo        s
Corrente elétrica         ampère         A
Temperatura termodinâmica kelvin         kg
Quantidade de substância  mol            mol
Intensidade luminosa      candela        cd

Algumas unidades do SI derivadas
Grandeza                              Nome                            Símbolo  Equivalente
Área                                  metro quadrado                  m²       
Volume                                metro cúbico                    m³       
Frequência                            hetz                            Hz       1/s
Massa específica                      quilograma por metro cúbico     kg/m³    
Velocidade, intensdidade              metro por segundo               m/s      
Velocidade angular                    radiano por segundo             rad/s    
Aceleração                            metro por segundo ao quadrado   m/s²     
Aceleração angular                    radiano por segundo ao quadrado rad/s²   
Força                                 newton                          N        kg*m/s²
Pressão                               pascal                          Pa       N/m
Trabalho, energia, quant. de calor    joule                           J        J/s
Potência                              watt                            W        A*s
Quantidade de eletricidade            coulomb                         C        N*m/C
Dif. de potencial, força eletromotriz volt                            V        N/C
Campo elétrico                        volt por metro                  V/m      V/A
Resistência elétrica                  ohm                             Ω        A*s/V
Capacitância                          farad                           F        V*s
Fluxo magnético                       weber                           Wb       V*s/A
Indutância                            henry                           Hz       Wb/m², N/A*m
Campo magnético                       tesla                           T        
Entropia                              joule por kelvin                J/K      
Calor específico                      joule por quilograma kelvin     J/(kg*K) 
Condutividade térmica                 watt por metro kelvin           W/(m*K)  
Intensidade radiante                  watt por esterorradiano         Wsr      

Unidades do SI suplementares
Grandeza                  Nome           Símbolo
Ângulo plano              radiano        rad
Ângulo sólido             esterorradiano sr

Constantes físicas fundamentais - Frequentemente usadas
Grandeza                                                       Símbolo  Valor                Incerteza           Unidade
Aceleração da gravidade (na UFMG)                              g        9,7838163            4 e-7               m/s²
Velocidade da luz no vácuo                                     c        299792458            exato               m/s
Carga elementar                                                e        1,602176565 e-19     0,000000035 e-19    C
Constante elétrica (permissividade)                            ϵ        8,854187817... e-12  exato               F/m
Constante magnética (permeabilidade)                           μ0       12,566370614... e-7  exato               N/A²
Massa do elétron                                               me       9,10938291 e-31      0,00000040 e-31     kg
Massa do próton                                                mp       1,672621777 e-27     0,000000074 e-27    kg
Razão carga/massa do elétron                                   e/me     1,760859708 e11      0,000000039 e11     C/kg
Razão massa próton/ massa elétron                              mp/me    1836,15267245        0,00000075          -
Constante de Planck                                            h        6,62606957 e−34      0,00000029 e-34     J*s
Constante universal dos gases                                  R        8,3144621            0,0000075           J/mol*K
Constante de Avogadro                                          NA       6,02214129 e23       0,00000027 e23      1/mol
Constante de Boltzmann                                         k        1,3806488 e-23       0,0000013 e-23      J/K
Volume molar de um gás ideal nas CNTP (273,15 K, 101,325 kPa)  Vm       22,413968 e-3        0,000020 e-3        m³/mol
Constante de Faraday                                           F        96485,3365           0,0021              C/mol
Constantre de Stefan-Boltzmann                                 σ        5,670373 e-8         0,000021 e-8        W/m²*K^4
Constante gravitacional                                        G        6,67384 e-11         0,00080 e-11        m³/s²*kg
Raio de Bohr                                                   a0       0,52917721092 e-10   0,00000000017 e-10  m
Momento magnético do elétron                                   μe       -928,476430 e-26     0,000021 e-26       J/T
Momento magnético do próton                                    μp       1,410606743 e-26     0,000000033 e-26    J/T

O Sol, a Terra e a Lua
Propriedade                                                  Sol           Terra       Lua 
Massa(kg)                                                    1,99 e30      5,98 e24    7,36 e22 
Raio média(m)                                                6,96 e8       6,37 e6     1,74 e6 
Massa específica média (kg/m³)                               1410          5520        3340 
Gravidade na superfície (m/s²)                               274           9,81        1,67 
Velocidade de escape (km/s)                                  618           11,2        2,38 
Período de rotação (em dias em relação a estrelas distantes) 26 -- 37*     0,997       27,3 
Raio orbital médio (km)                                      2,6 e 17 ¹    1,50 e8 ²   3,82 e5³ 
Período orbital                                              2,4 e8 ano ¹  1,00 ano ²  27,3 dias³ 

O Sol irradia energia à taxa de 3,90 e26W; no limite externo da atmosfera terreste, a energia solar é recebida se for admitida uma incidência normal à taxa de 1380W/m²
* o Sol, uma esfera de gás, não gira como um corpo rígido. Seu período de rotação varia entre 26 dias no equador e 37 dias nos pólos.
¹Em relação ao centro da galáxia
²Em relação ao Sol
³Em relação à Terra

Unidades de Planck
Nome                             Dimensão                    Equivalência no SI
Tempo Planck                     Tempo (T)                   5.39121×10^−44 s
Comprimento de Planck            Comprimento (L)             1.61624×10^−35 m
Massa de Planck                  Massa (M)                   2.17645×10^−8 kg
Carga de Planck                  Carga elétrica (Q)          1.8755459×10^−18 C
Temperatura de Planck            Temperatura (ML²T^−2/k)     1.41679×10^32 K
Força de Planck                  Força (ML/T²)               1.21027×10^44 N
Potência de Planck               Potência (ML²/T³)           3.62831×10^52 W
Densidade de Planck              Densidade (M/L³)            5.15500×10^96 kg/m³
Frequência angular de Planck     Frequência (1/T)            1.85487×10^43 rad/s
Pressão de Planck                Pressão (M/LT²)             4.63309×10^113 Pa
Corrente elétrica de Planck      Corrente elétrica (Q/T)     3.4789×10^25 A
Tensão elétrica de Planck        Tensão elétrica (ML²/T²Q)   1.04295×10^27 V
Resistência elétrica de Planck   Resistência (ML²/TQ²)       2.99792458×10 Ω

⋊> ~ zzmat mmc 8 12  # mínimo múltiplo comum a 8 e 12
24

⋊> ~ zzmat media 5[2] 7 4[3]  # média aritmética dos valores: 5, 5, 7, 4, 4 e 4
4.833333

⋊> ~ zzmat somatoria 3 9 2x+3  # somatória de (2x + 3) para x de 3 a 9
105

⋊> ~ zzmat -p3 sen 60g  # seno de 60° com 3 casas decimais
0.866

⋊> ~ zznumero 12445.78
12.445,78

⋊> ~ zznumero --texto 4567890,213
quatro milhões, quinhentos e sessenta e sete mil oitocentos e noventa e duzentos e treze milésimos

⋊> ~ zznumero -m 85,345
R$ 85,34

⋊> ~ echo 748 | zznumero -f "%'.3f"
748.000

⋊> ~ zztempo belo\ horizonte
Previsão do tempo para: belo horizonte

     \  /       Parcialmente nublado
   _ /"".-.     +29(30) °C     
     \_(   ).   ↓ 11 km/h      
     /(___(__)  10 km          
                0.0 mm         
                                                       ┌─────────────┐                                                       
┌──────────────────────────────┬───────────────────────┤  Qui 25 Fev ├───────────────────────┬──────────────────────────────┐
│             Manhã            │           Meio-dia    └──────┬──────┘      Tarde            │             Noite            │
├──────────────────────────────┼──────────────────────────────┼──────────────────────────────┼──────────────────────────────┤
│    \  /       Parcialmente n…│    \  /       Parcialmente n…│    \  /       Parcialmente n…│  _`/"".-.     Possibilidade …│
│  _ /"".-.     +22(23) °C     │  _ /"".-.     +27(28) °C     │  _ /"".-.     +26(27) °C     │   ,\_(   ).   +23(25) °C     │
│    \_(   ).   ← 8-10 km/h    │    \_(   ).   ↓ 8-9 km/h     │    \_(   ).   ↑ 6-8 km/h     │    /(___(__)  ← 6-10 km/h    │
│    /(___(__)  10 km          │    /(___(__)  10 km          │    /(___(__)  9 km           │      ‘ ‘ ‘ ‘  9 km           │
│               0.0 mm | 0%    │               0.0 mm | 0%    │               0.3 mm | 57%   │     ‘ ‘ ‘ ‘   0.5 mm | 88%   │
└──────────────────────────────┴──────────────────────────────┴──────────────────────────────┴──────────────────────────────┘
                                                       ┌─────────────┐                                                       
┌──────────────────────────────┬───────────────────────┤  Sex 26 Fev ├───────────────────────┬──────────────────────────────┐
│             Manhã            │           Meio-dia    └──────┬──────┘      Tarde            │             Noite            │
├──────────────────────────────┼──────────────────────────────┼──────────────────────────────┼──────────────────────────────┤
│  _`/"".-.     Possibilidade …│  _`/"".-.     Aguaceiros fra…│  _`/"".-.     Aguaceiros mod…│  _`/"".-.     Aguaceiros mod…│
│   ,\_(   ).   20 °C          │   ,\_(   ).   +24(26) °C     │   ,\_(   ).   +23(25) °C     │   ,\_(   ).   21 °C          │
│    /(___(__)  ↙ 9-12 km/h    │    /(___(__)  ↙ 14-18 km/h   │    /(___(__)  ↙ 13-24 km/h   │    /(___(__)  ↙ 11-21 km/h   │
│      ‘ ‘ ‘ ‘  10 km          │      ‘ ‘ ‘ ‘  10 km          │    ‚‘‚‘‚‘‚‘   7 km           │    ‚‘‚‘‚‘‚‘   7 km           │
│     ‘ ‘ ‘ ‘   0.4 mm | 69%   │     ‘ ‘ ‘ ‘   0.8 mm | 75%   │    ‚’‚’‚’‚’   4.5 mm | 72%   │    ‚’‚’‚’‚’   6.2 mm | 67%   │
└──────────────────────────────┴──────────────────────────────┴──────────────────────────────┴──────────────────────────────┘
                                                       ┌─────────────┐                                                       
┌──────────────────────────────┬───────────────────────┤  Sáb 27 Fev ├───────────────────────┬──────────────────────────────┐
│             Manhã            │           Meio-dia    └──────┬──────┘      Tarde            │             Noite            │
├──────────────────────────────┼──────────────────────────────┼──────────────────────────────┼──────────────────────────────┤
│    \  /       Parcialmente n…│    \  /       Parcialmente n…│  _`/"".-.     Aguaceiros mod…│  _`/"".-.     Aguaceiros fra…│
│  _ /"".-.     21 °C          │  _ /"".-.     +25(26) °C     │   ,\_(   ).   +23(25) °C     │   ,\_(   ).   22 °C          │
│    \_(   ).   ↙ 10-12 km/h   │    \_(   ).   ↙ 10-12 km/h   │    /(___(__)  ← 6-9 km/h     │    /(___(__)  ← 5-7 km/h     │
│    /(___(__)  10 km          │    /(___(__)  9 km           │    ‚‘‚‘‚‘‚‘   9 km           │      ‘ ‘ ‘ ‘  9 km           │
│               0.0 mm | 0%    │               0.3 mm | 55%   │    ‚’‚’‚’‚’   1.9 mm | 79%   │     ‘ ‘ ‘ ‘   2.0 mm | 84%   │
└──────────────────────────────┴──────────────────────────────┴──────────────────────────────┴──────────────────────────────┘
Localização: BH, Microrregião Belo Horizonte, Região Metropolitana de Belo Horizonte, Mesorregião Metropolitana de Belo Horizonte, MG, Região Sudeste, Brasil [-19.9227318,-43.9450948]