domingo, 14 de abril de 2024

Arquivo de Configuração apache2.conf para PHP FPM/FastCGI


# This is the main Apache server configuration file.  It contains the
# configuration directives that give the server its instructions.
# See http://httpd.apache.org/docs/2.4/ for detailed information about
# the directives and /usr/share/doc/apache2/README.Debian about Debian specific
# hints.
#
#
# Summary of how the Apache 2 configuration works in Debian:
# The Apache 2 web server configuration in Debian is quite different to
# upstream's suggested way to configure the web server. This is because Debian's
# default Apache2 installation attempts to make adding and removing modules,
# virtual hosts, and extra configuration directives as flexible as possible, in
# order to make automating the changes and administering the server as easy as
# possible.

# It is split into several files forming the configuration hierarchy outlined
# below, all located in the /etc/apache2/ directory:
#
# /etc/apache2/
# |-- apache2.conf
# | `--  ports.conf
# |-- mods-enabled
# | |-- *.load
# | `-- *.conf
# |-- conf-enabled
# | `-- *.conf
# `-- sites-enabled
# `-- *.conf
#
#
# * apache2.conf is the main configuration file (this file). It puts the pieces
#   together by including all remaining configuration files when starting up the
#   web server.
#
# * ports.conf is always included from the main configuration file. It is
#   supposed to determine listening ports for incoming connections which can be
#   customized anytime.
#
# * Configuration files in the mods-enabled/, conf-enabled/ and sites-enabled/
#   directories contain particular configuration snippets which manage modules,
#   global configuration fragments, or virtual host configurations,
#   respectively.
#
#   They are activated by symlinking available configuration files from their
#   respective *-available/ counterparts. These should be managed by using our
#   helpers a2enmod/a2dismod, a2ensite/a2dissite and a2enconf/a2disconf. See
#   their respective man pages for detailed information.
#
# * The binary is called apache2. Due to the use of environment variables, in
#   the default configuration, apache2 needs to be started/stopped with
#   /etc/init.d/apache2 or apache2ctl. Calling /usr/bin/apache2 directly will not
#   work with the default configuration.


# Global configuration
#

#
# ServerRoot: The top of the directory tree under which the server's
# configuration, error, and log files are kept.
#
# NOTE!  If you intend to place this on an NFS (or otherwise network)
# mounted filesystem then please read the Mutex documentation (available
# at <URL:http://httpd.apache.org/docs/2.4/mod/core.html#mutex>);
# you will save yourself a lot of trouble.
#
# Do NOT add a slash at the end of the directory path.
#
ServerRoot "/etc/apache2"
#ServerName exemplo.com.br
#
# The accept serialization lock file MUST BE STORED ON A LOCAL DISK.
#
#Mutex file:${APACHE_LOCK_DIR} default

#
# The directory where shm and other runtime files will be stored.
#

DefaultRuntimeDir ${APACHE_RUN_DIR}

#
# PidFile: The file in which the server should record its process
# identification number when it starts.
# This needs to be set in /etc/apache2/envvars
#
PidFile ${APACHE_PID_FILE}

#
# Timeout: The number of seconds before receives and sends time out.
#
Timeout 180

#
# KeepAlive: Whether or not to allow persistent connections (more than
# one request per connection). Set to "Off" to deactivate.
#
KeepAlive On

#
# MaxKeepAliveRequests: The maximum number of requests to allow
# during a persistent connection. Set to 0 to allow an unlimited amount.
# We recommend you leave this number high, for maximum performance.
#
MaxKeepAliveRequests 600

#
# KeepAliveTimeout: Number of seconds to wait for the next request from the
# same client on the same connection.
#
KeepAliveTimeout 9


# These need to be set in /etc/apache2/envvars
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}

#
# HostnameLookups: Log the names of clients or just their IP addresses
# e.g., www.apache.org (on) or 204.62.129.132 (off).
# The default is off because it'd be overall better for the net if people
# had to knowingly turn this feature on, since enabling it means that
# each client request will result in AT LEAST one lookup request to the
# nameserver.
#
HostnameLookups Off

# ErrorLog: The location of the error log file.
# If you do not specify an ErrorLog directive within a <VirtualHost>
# container, error messages relating to that virtual host will be
# logged here.  If you *do* define an error logfile for a <VirtualHost>
# container, that host's errors will be logged there and not here.
#
ErrorLog ${APACHE_LOG_DIR}/error.log

#
# LogLevel: Control the severity of messages logged to the error_log.
# Available values: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the log level for particular modules, e.g.
# "LogLevel info ssl:warn"
#
LogLevel warn

# Include module configuration:
IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf

# Include list of ports to listen on
Include ports.conf

# Sets the default security model of the Apache2 HTTPD server. It does
# not allow access to the root filesystem outside of /usr/share and /var/www.
# The former is used by web applications packaged in Debian,
# the latter may be used for local directories served by the web server. If
# your system is serving content from a sub-directory in /srv you must allow
# access here, or in any related virtual host.
<Directory "/">
Options None
AllowOverride None
Require all denied
</Directory>

<Directory "/usr/share">
AllowOverride None
Require all denied
</Directory>

<Directory "/var/www/">
Options None
AllowOverride None
DirectoryIndex index.py index.php indez.pl index
Require all denied
        <FilesMatch ".+\.(phtml|htm|html|asp|py|pl)$">
                SetHandler "proxy:unix:/run/php/php8.3-fpm.sock|fcgi://localhost"
        </FilesMatch>
<LimitExcept GET POST HEAD>
            Require all denied
</LimitExcept>
</Directory>

#
#<Directory /srv/>
# Options Indexes FollowSymLinks
# AllowOverride None
# Require all granted
#</Directory>

<Directory "/var/www/exemplo">
    Options +SymLinksIfOwnerMatch +ExecCGI -Indexes -MultiViews
    AllowOverride None
    DirectoryIndex index.py index.php indez.pl index
    Require all granted
    <Files "*.php">
        #Allow from all
        Require valid-user
        Allow from 127.0.0.1
        #Allow from 12.123.123.123
        Satisfy Any
    </Files>
    <Files "index.py">
        Require all granted
    </Files>
    <LimitExcept GET POST HEAD>
        Require all denied
    </LimitExcept>
    #IndexIgnore *.php *.js *.css *.html *.log *.sql *.pdf *.swf *.rtf *.doc *.odt *.asp *.py
    #RewriteRule ^arquivo\.php$ arquivos/arquivo.php
    RewriteEngine on
    #ReWriteRule ^About_us$ About_us.html [NC]
    RewriteBase "/"
    #RewriteRule "\.js"   "-" [F]
    #RewriteRule "\.css"   "-" [F]
    # Evitar que outros utilizem as imagens consumindo banda
    RewriteCond %{HTTP_REFERER} !^$
    RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?exemplo.com.br [NC]
    RewriteRule \.(jpg|jpeg|png|gif|webp|ico)$ - [NC,F,L]
    #
    # Remover extensão dos arquivos (exemplo: /arquivo.php para /arquivo)
    # A extensões devem ser removidas no html também, por exemplo,
    # 'arquivo.php' ou 'arquivo.asp', etc, deve ficar somente 'arquivo', senão bloqueia o POST.
    RewriteCond %{THE_REQUEST} ^[A-Z]{2,}\s([^.]+)\.py [NC]
    RewriteRule ^ %1 [R,L]
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME}.py -f
    RewriteRule ^(.*?)/?$ $1.py [L]
    #
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.asp [NC]
    RewriteRule ^ %1 [R,L]
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME}.asp -f
    RewriteRule ^(.*?)/?$ $1.asp [L]
    #
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
    RewriteRule ^ %1 [R,L]
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME}.php -f
    RewriteRule ^(.*?)/?$ $1.php [L]
    # Esta regra logo abaixo leva para o example.com da IANA
    #RewriteRule ^(.*)$ www.exemplo.com.br/$1 [NC]
    # Ocultam pasta do caminho da URL, os caminhos no html devem ser alterados também
    RewriteRule "^index_pasta(.*)$" "pasta/pasta.py" [L]
    RewriteRule "^tabelaspasta(.*)$" "pasta/tabelaspasta.py" [L]
    RewriteRule "^loginpasta(.*)$" "pasta/loginpasta.asp" [L]
    RewriteRule "^index_logado_prof(.*)$" "pasta/index_logado_prof.asp" [L]
    RewriteRule "^cad_usu_pasta(.*)$" "pasta/cad_usu_pasta.asp" [L]
    #
    # Bloqueio de bots
    RewriteCond %{HTTP_USER_AGENT} MJ12bot [NC,OR]
    RewriteCond %{HTTP_USER_AGENT} AhrefsBot [NC,OR]
    RewriteCond %{HTTP_USER_AGENT} SEMrushBot [NC,OR]
    RewriteCond %{HTTP_USER_AGENT} Bytespider [NC,OR]
    RewriteCond %{HTTP_USER_AGENT} DotBot [NC,OR]
    RewriteCond %{HTTP_USER_AGENT} MauiBot [NC]
    RewriteCond %{HTTP_USER_AGENT} (gumgum-bot|postmanruntime|ag_dm_spider|scrapy|chimebot) [NC]
    RewriteRule .* - [F,L]
</Directory>

<Directory "/var/www/html">
Options None
AllowOverride None
DirectoryIndex None
Require all denied
<LimitExcept GET POST HEAD>
            Require all denied
</LimitExcept>
</Directory>

# AccessFileName: The name of the file to look for in each directory
# for additional configuration directives.  See also the AllowOverride
# directive.
#
# AccessFileName .htaccess

#
# The following lines prevent .htaccess and .htpasswd files from being
# viewed by Web clients.
#
<FilesMatch "^\.ht">
    Require all denied  
    Satisfy All
</FilesMatch>
#
<Files "index.php">
    Require all granted
    # Order Allow,Deny
    # Allow from all
</Files>
#
<FilesMatch "^\.">
    Require all denied
    Satisfy All
</FilesMatch>
#
<DirectoryMatch "^(.*/)*\..*">
    Require all denied
    Satisfy All
</DirectoryMatch>
#
<LocationMatch "^(.*/)\..*">
    Require all denied
    Satisfy All
</LocationMatch>
#
# Apache2 Tunning
#<IfModule mpm_prefork_module>
#       # Número de processos de servidor filho criados na inicialização:
#       StartServers              4
#       # Número mínimo de processos de servidor filho ociosos:
#       MinSpareServers          20
#       # Número máximo de processos de servidor filho ociosos:
#       MaxSpareServers          40
#       # Número máximo de conexões que serão processadas simultaneamente:
#       MaxRequestWorkers       200
#       # Limita o número de conexões que um servidor filho individual manipulará durante sua vida útil:
#       MaxConnectionsPerChild 4500
#</IfModule>
#
<IfModule mpm_event_module>
        # Define o limite superior do número de processos (padrão 16):
        ServerLimit             10
        # Número de processos de servidores filhos criados na inicialização (padrão 3):
        StartServers            3
        # Número mínimo de processos de servidor filho ociosos:
##       MinSpareServers          20
        # Número máximo de conexões que serão processadas simultaneamente (padrão 256):
        MaxRequestWorkers       250
        # Número mínimo de threads ociosas em todo o servidor (padrão 75):
        MinSpareThreads         75
        # Número máximo de processos de servidor filho ociosos:
##      MaxSpareServers          40
        # Número máximo de threads ociosas em todo o servidor (padrão 250):
        MaxSpareThreads         200
        # Define o número de threads criadas por processo filho (padrão 25):
        ThreadsPerChild         25
        # Define o valor máximo para ThreadsPerChild (padrão 64):
        ThreadLimit             64
        # Limita o número de conexões que um processo individual de servidor filho manipulará durante sua vida útil:
        MaxConnectionsPerChild  4480
        # Define o limite de conexões simultâneas por processo (padrão 2):
        AsyncRequestWorkerFactor 2
</IfModule>
#

# The following directives define some format nicknames for use with
# a CustomLog directive.
#
# These deviate from the Common Log Format definitions in that they use %O
# (the actual bytes sent including headers) instead of %b (the size of the
# requested file), because the latter makes it impossible to detect partial
# requests.
#
# Note that the use of %{X-Forwarded-For}i instead of %h is not recommended.
# Use mod_remoteip instead.
#
LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
#
AddType fcgid(73|74|80|81|82|83)-script .php .phtml .htm .html .asp .py .pl
AddType application/x-httpd-php .php .phtml .htm .html .asp .py .pl
AddType application/x-httpd-php-source .php .php8
AddType application/wasm .wasm
#
#AddHandler fcgid(73|74|80|81|82|83)-script .php .phtml .htm .html .asp .py .pl
AddHandler application/x-httpd-php .php .phtml .htm .html .asp .py .pl
#AddHandler application/x-httpd-php-source .php .php3 .php4 .php5 .php6 .php7 .php8
#AddHandler application/wasm .wasm
#
AddHandler fcgid(73|74|80|81|82|83)-script .fcgi .php .phtml .htm .html .asp .py .pl
#FcgidConnectTimeout 20
#FcgidMaxRequestLen 10485760
#FcgidMaxProcessesPerClass 10
#FcgidIOTimeout 100
#
<FilesMatch "\.php$">
    SetHandler application/x-httpd-php
</FilesMatch>
#
ErrorDocument 400 "Requisição mal feita pelo cliente!"
#ErrorDocument 400 /cgi-bin/crash-recover
ErrorDocument 400 https://www.exemplo.com.br/errors.html
#
# Na diretiva 401 não pode usar URI absoluta.
#ErrorDocument 401 /errors.html
ErrorDocument 401 "Necessita Autorização!"
#ErrorDocument 401 /cgi-bin/crash-recover
ErrorDocument 401 /bazinga
#ErrorDocument 401 /subscription_info.html
#
ErrorDocument 403 "Acesso não permitido, estamos de olho!"
#ErrorDocument 403 Forbidden!
#ErrorDocument 403 /cgi-bin/crash-recover
#ErrorDocument 403 /errors/forbidden.py?referrer=%{escape:%{HTTP_REFERER}}
ErrorDocument 403 https://www.exemplo.com.br/bazinga
#
#ErrorDocument 404 /errors/bad_urls.php
ErrorDocument 404 "Página não encontrada!"
##ErrorDocument 404 /cgi-bin/crash-recover
ErrorDocument 404 https://www.exemplo.com.br/bazinga
#
ErrorDocument 408 "Excedeu o tempo da requisição!"
#ErrorDocument 408 /cgi-bin/crash-recover
ErrorDocument 408 https://www.exemplo.com.br/errors.html
#
ErrorDocument 500 "Deu um problema no Servidor!"
#ErrorDocument 500 /cgi-bin/crash-recover
ErrorDocument 500 https://www.exemplo.com.br/errors.html
#ErrorDocument 500 ttps://example.com/cgi-bin/server-error.cgi
#
ErrorDocument 501 "O Servidor não suporta essa função!"
#ErrorDocument 501 /cgi-bin/crash-recover
ErrorDocument 501 https://www.exemplo.com.br/errors.html
#
# 1xx – Solicitações informativas
# 2xx – Solicitações bem-sucedidas
# 3xx – Redirecionamentos
# 4xx – Erros do lado do cliente
# 5xx – Erros do lado do servidor
#
# 400 Bad request
# 401 Authorization required
# 403 Forbidden
# 404 Not Found
# 405 Method not implemented
# 407 Proxy authentication required
# 408 Request time-out
# 500 Internal server error
# 501 Not implemented
# 502 Bad gateway
# 503 Service unavailable (many requests)
# 504 Gateway time-out
# 505 HTTP version not supported
#
# 200 URL encontrada e transmissão concluída com sucesso.
# 400 Solicitação (request) incompreensível, protocolo inexistente ou tipo incompatível.
# 404 Não foi encontrada a URL solicitada.
# 405 O servidor não suporta o método solicitado.
# 500 Erro desconhecido de natureza do servidor.
# 503 Capacidade máxima do servidor alcançada.
# De 200 até 299: Requisições bem sucedidas
# De 300 até 399: Informações
# 301 - Move Permanently
# 302 - Move Temporarily
# 305 - Use Proxy
# De 400 até 499: Erros de solicitação (request)
# De 500 até 599: Erros do servidor e/ou programação
ServerTokens ProductOnly
ServerSignature Off
TraceEnable Off
#
<IfModule mod_headers.c>
  # Add security and privacy related headers
  # Header always set Access-Control-Allow-Origin "https://www.exemplo.com.br/"
  Header set Content-Security-Policy "upgrade-insecure-requests;"
  Header always set Permissions-Policy "accelerometer=(),autoplay=(),camera=(),encrypted-media=(),fullscreen=*,gyroscope=(),interest-cohort=(),magnetometer=(),microphone=(),midi=(),sync-xhr=*,usb=(),xr-spatial-tracking=(),geolocation=*"
  Header set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
  Header always edit Set-Cookie (.*) "$1; HttpOnly; Secure"
  Header set X-Content-Type-Options "nosniff"
  Header set X-XSS-Protection "1; mode=block"
  Header set Referrer-Policy "strict-origin, strict-origin-when-cross-origin"
  Header always set X-Frame-Options "SAMEORIGIN"
  SetEnv modHeadersAvailable true
</IfModule>
#
<IfModule security2_module>
    Include /etc/modsecurity/crs/*.conf
    Include /etc/modsecurity/modsecurity.conf
</IfModule>
#
# Mod Status
# Você pode acessar as estatísticas do servidor usando um navegador da Web para acessar a página http://your.server.name/server-status:
#<Location "/server-status">
#    SetHandler server-status
#    Require host www.exemplo.com.br
#    Require all granted
#</Location>
#
AddDefaultCharset UTF-8
#LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so
#LoadModule proxy_fcgi_module /usr/lib/apache2/modules/mod_proxy_fcgi.so
# Habilite os módulos:
# a2enmod expires
# a2enmod rewrite
# a2enmod status
# a2enmod mpm_prefork          # para php-fpm precisa desabilitar
# a2enmod headers
# a2enmod ssl
# a2dismod php8.3              # disable modphp (opcional)
# a2dismod mpm_prefork         # para php-fpm, precisa trocar para mpm_event
# a2enmod mpm_event            # enable mpm_event
# a2enmod proxy_fcgi setenvif  # enable proxy_fcgi, precisa para php-fpm
# a2enconf php8.3-fpm          # enable php8.3-fpm
# a2enmod proxy
# a2enmod status
# apt-get install libapache2-mod-evasive
# apt-get install libapache2-mod-security2
# IPv6 2a02:4780:14:2d67::1
# ttps://securityheaders.com/
#
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
#
# Include of directories ignores editors' and dpkg's backup files,
# see README.Debian for details.

# Include generic snippets of statements
IncludeOptional conf-enabled/*.conf

# Include the virtual host configurations:
IncludeOptional sites-enabled/*.conf
#

Tradução do artigo do filósofo Gottfried Wilhelm Leibniz sobre o sistema binário

 

EXPLICAÇÃO DA ARITMÉTICA BINÁRIA

Esta é uma tradução livre do artigo do filósofo Leibniz que pode ser acessado no link ao final na versão em Inglês, sendo que procurei manter o mais próximo da versão em Inglês.
Acredita-se que Leibniz foi o primeiro a utilizar o sistema binário em meados de 1700 (o artigo foi publicado em 1703), alguns dizem que Leibniz foi o inventor do sistema binário, porém, há controvérsias.
O que se sabe é que este artigo de Leibniz é o primeiro documento de que se tem notícia sobre o sistema binário como o conhecemos, onde o próprio Leibniz menciona as figuras chinesas de Fuxi datadas de mais de 4 mil anos atrás.

EXPLICAÇÃO DA ARITMÉTICA BINÁRIA QUE USA APENAS OS CARACTERES 0 E 1 COM ALGUMAS OBSERVAÇÕES SOBRE SUA UTILIDADE E SOBRE A LUZ QUE LANÇA SOBRE AS ANTIGAS FIGURAS CHINESAS DE FUXI

O cálculo normal da aritmética é feito de acordo com a progressão de dezenas. São usados dez caracteres, que são 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, que significam zero, um e os números sucessivos até nove, inclusive. E então, ao chegar a dez, recomeça-se escrevendo dez (10); dez vezes dez ou cem (100); dez vezes cem ou mil (1000); dez vezes mil ou 10 mil (10000) e assim por diante.


Mas em vez da progressão de dezenas, durante muitos anos usei a progressão mais simples de todas, que procede de dois em dois, tendo descoberto que é útil para o aperfeiçoamento da ciência dos números. Assim não utilizo outros caracteres exceto 0 e 1 e ao chegar a dois, começo de novo. É por isso que dois é aqui expresso por "10" e duas vezes dois, ou quatro, por "100", duas vezes quatro, ou oito, por "1000", duas vezes oito, ou dezesseis, por "10000", e assim por diante. Veja a Tabela de Números que pode ser estendida até onde for desejado.

Um olhar torna evidente a razão de uma célebre propriedade da progressão geométrica por dois em números inteiros, propriedade esta que sustenta que se tivermos apenas um desses números para cada grau podemos compor a partir deles todos os outros números inteiros abaixo do duplo do mais alto grau.


Pois aqui é como se disséssemos, por exemplo, que 111, ou 7, é a soma de quatro, dois e um, e que 1101, ou 13, é a soma de oito, quatro e um. Esta propriedade permite aos avaliadores pesar todos os tipos de massas com poucos pesos e pode servir na cunhagem para fornecer vários valores com poucas moedas. Estabelecer esta expressão de números nos permite realizar com muita facilidade todo tipo de operações.


E todas essas operações são tão fáceis que não haveria necessidade de adivinhar ou experimentar nada, como tem de ser feito na divisão comum. Não haveria mais necessidade de aprender nada de cor como acontece no cálculo comum onde é preciso decorar, por exemplo, que 6 e 7 juntos são 13 e que 5 multiplicado por 3 dá 15 de acordo com a Tabela "um vezes um é um" que é chamada Pitagórica(1). Mas aqui, tudo isso é encontrado e provado a partir da fonte, como fica claro nos exemplos anteriores sob os sinais meia-lua e círculo com ponto.

Contudo, não estou de forma alguma recomendando esta forma de contar a fim de introduzi-la no lugar da prática comum de contar até dez. Pois, além de estarmos acostumados com isso, não temos necessidade de decorar o que já aprendemos. A prática de contar até dez é mais curta e os números não são tão longos. E se estivéssemos acostumados a avançar por doze ou dezesseis, haveria ainda mais vantagem. Mas o cálculo por dois, isto é, por 0 e 1, como compensação pelo seu comprimento, é a forma mais fundamental de cálculo para a ciência e oferece novas descobertas que são então consideradas úteis, mesmo para a prática de números e especialmente para geometria.
A razão para isto é que, à medida que os números são reduzidos aos princípios mais simples, como 0 e 1, uma ordem maravilhosa torna-se aparente em todo o processo. Por exemplo, na própria Tabela dos Números fica claro em cada coluna que ela é regida por ciclos que sempre recomeçam. Na primeira coluna é 01, na segunda 0011, na terceira 00001111, na quarta 0000000011111111 e assim por diante. E pequenos zeros foram colocados na tabela para preencher a lacuna no início da coluna e para enfatizar melhor esses ciclos. Além disso, foram traçadas linhas dentro da tabela, o que mostra que o que está contido nas linhas sempre ocorre novamente abaixo delas. E acontece ainda que números quadrados, números cúbicos e outras potências, também números triangulares, números piramidais e outros números de figuras têm ciclos semelhantes de modo que as tabelas deles podem ser escritas imediatamente sem qualquer cálculo. E esta tarefa, demorada no início, mas que então fornece os meios para tornar o cálculo econômico e prosseguir até o infinito por meio de regras é infinitamente vantajosa.

O que é surpreendente neste cálculo é que esta aritmética de 0 e 1 contém o mistério das linhas de um antigo rei e filósofo chamado Fuxi(2), que se acredita ter vivido há mais de 4.000 anos e a quem os chineses consideram como o fundador de seu império e de suas ciências. Existem várias figuras lineares que lhe são atribuídas, todas elas remontando a esta aritmética, mas basta dar aqui a "Figura das Oito Cova", como é chamada, que se diz fundamental, e juntar a elas a explicação que é óbvia, desde que se note, em primeiro lugar, que uma linha inteira (-) significa unidade, ou 1, e em segundo lugar, que uma linha quebrada (--) significa zero, ou 0.



Os Chineses perderam o significado de "Cova" ou "Lineações de Fuxi" talvez há mais de mil anos e escreveram comentários sobre o assunto em que procuraram não sei que significados distantes, de modo que a sua verdadeira explicação vêm dos europeus. Eis como: há pouco mais de dois anos enviei ao Reverendo Padre Bouvet(3), célebre jesuíta francês que vive em Pequim, o meu método de contar por 0 e 1 e nada mais foi necessário para fazê-lo reconhecer que meu método foi a chave que o lembrou das figuras de Fuxi. Escrevendo-me em 14 de novembro de 1701, enviou-me a grande figura deste príncipe filosófico, que vai até 64, e não deixa mais margem para duvidar da veracidade da nossa interpretação de modo que se pode dizer que este Padre decifrou o enigma de Fuxi com a ajuda do que eu havia comunicado a ele. E como estas figuras são talvez o mais antigo monumento da ciência que existe no mundo, esta restituição do seu significado após tão grande intervalo de tempo parecerá ainda mais curiosa.

A concordância entre os números de Fuxi e minha Tabela de Números é mais óbvia quando os zeros iniciais são fornecidos na Tabela; parecem supérfluos, mas são úteis para mostrar melhor os ciclos da coluna, assim como lhes forneci pequenos anéis para distingui-los dos zeros necessários. E este acordo deixa-me com uma opinião elevada sobre a profundidade das meditações de Fuxi, uma vez que o que nos parece fácil agora não o foi naqueles tempos distantes. A aritmética binária ou diádica é, com efeito, muito fácil hoje em dia, exigindo pouca reflexão uma vez que é grandemente auxiliada pelo nosso modo de contar, do qual, ao que parece, apenas o excesso é removido. Mas esta aritmética comum por dezenas não parece muito antiga e pelo menos os Gregos e os Romanos a ignoravam e foram privados de suas vantagens. Parece que a Europa deve a sua introdução a Gerbert, que se tornou Papa sob o nome de Silvestre II(4), que a herdou dos Mouros da Espanha.

Ora, como se acredita na China que Fuxi é mesmo o autor dos caracteres chineses, embora estes tenham sido muito alterados em épocas posteriores, o seu ensaio sobre aritmética leva-nos a concluir que algo considerável poderia mesmo ser encontrado nestes caracteres no que diz respeito aos números e ideias se alguém pudesse descobrir os fundamentos da escrita chinesa, tanto mais que se acredita na China que ele teve consideração pelos números ao estabelecê-los. O Reverendo Padre Bouvet está fortemente inclinado a insistir neste ponto e é muito capaz de o conseguir de várias maneiras. No entanto, não sei se alguma vez houve uma vantagem nesta escrita Chinesa semelhante àquela que necessariamente tem de haver no projeto da Característica I que é que todo raciocínio derivável de noções poderia ser derivado dos caracteres dessas noções por uma forma de cálculo que seria um dos meios mais importantes de ajudar a mente humana.

NOTAS:

1. Leibniz está aqui se referindo à tabuada de multiplicação (Tabuada).
2. Uma figura mitológica, que se diz ter vivido no terceiro milênio a.C.
3. Joachim Bouvet (1656-1730), um missionário jesuíta francês que passou a maior parte da sua vida adulta na China. Ele e Leibniz corresponderam-se entre 1697 e 1707.
4. No seu “Discurso sobre a teologia natural dos chineses” (1716), Leibniz repetiu a sua afirmação de que Gerbert (ou seja, Gerbert d'Aurillac), que foi papa de 999 a 1003, introduziu o sistema decimal para a Europa cristã. Veja Leibniz, Writings on China , trad. e Ed. Daniel J. Cook e Henry Rosemont Jr. (Chicago: Tribunal Aberto, 1994), p135. A afirmação de Leibniz está errada; embora se acredite tradicionalmente que Gerbert introduziu os algarismos arábicos na Europa cristã, ele não introduziu o sistema decimal.

https://www.leibniz-translations.com/binary.htm

terça-feira, 26 de março de 2024

Instalar Google Chrome em algumas Distribuições Linux

Essa instalação adiciona automaticamente o repositório do Google Chrome para que você não tenha mais que se preocupar com atualizações.

O mesmo pacote deb você pode instalar no Ubuntu, Linux Mint e outros derivados do Debian.

No Slackware faz-se necessário converter; no Fedora e OpenSUSE basta fazer o download do pacote rpm e instalar.


DEBIAN e derivados

1- Abra um navegador no Debian;


2- Acesse a página

https://www.google.com/chrome/?platform=linux


3- Clique no link 'Faça o download aqui..';


4- Escolha o download do pacote 64 bits (para Debian/Ubuntu) > Aceitar e instalar;


5- Abra o terminal;


6- Entre na página onde você salvou o pacote, no meu caso:


$ cd /home/usuario/Downloads;


7- Instale as dependências:

$ sudo apt update

$ sudo apt upgrade

$ sudo apt install wget libu2f-udev


8- Instale o Chrome:

$ sudo dpkg -i  google-chrome-stable_current_amd64.deb


9- Crie um lançador (Atalho) na área de trabalho do seu gerenciador de janelas (XFCE, KDE, Gnome, etc).

Aqui é o Xfce:

Clique com o botão direito num espaço vazio na área de trabalho > Criar lançador;

Na janelinha que se abrirá digite o nome Google Chrome;

Comentário é opcional;

Em Comando clique na pasta ao lado e na janela dentro da pasta /usr/bin procure por google-chrome-stable > Selecione > Abrir;

Procure o ícone do Chrome e adicione;

Clique em Criar.


10- Teste clicando duas vezes no ícone, nessa primeira vez abrirá uma janelinha com duas opções: Fazer do chrome o navegador padrão e Enviar estatísticas, caso quise deixe as duas selecionadas ou nenhuma ou somente uma das duas > OK.


SLACKWARE


1- Na mesma página faça o download do pacote rpm 64 bits (para Fedora/openSUSE);


2- Abra o terminal e entre na pasta onde salvou, por exemplo:

$ cd /home/usuario/Downloads;


3- Converta o rpm para txz usando a ferramenta rpm2txz:

$ sudo rpm2txz google-chrome-stable_current_x86_64.rpm

Confira se o pacote foi converido:

$ ls


4- Instale o txz:

$ sudo upgradepkg --install-new google-chrome-stable_current_x86_64.txz


5- Deslogue do sistema e logue de novo;


6- Crie um lançador (Atalho) na área de trabalho do seu gerenciador de janelas (XFCE, KDE, Gnome, etc).

Aqui é o Xfce:

Clique com o botão direito num espaço vazio na área de trabalho > Criar lançador > digite Google Chrome que ele já puxará o nome (Google Chrome) e o caminho do executável (/usr/bin/google-chrome-stable) > marque Usar notificação de inicialização > Criar.


A pasta de ícones é /usr/share/pixmaps, tanto no Debian quanto no Slackware, caso queira personalizar o ícone do Chrome ou qualquer outro.


Para o Fedora e OpenSUSE não precisa converter, basta fazer o download e instalar.

quarta-feira, 24 de janeiro de 2024

CONFIGURAR POSTGRESQL PARA CONECTAR COM SENHA CRIPTOGRAFADA

Para autenticar exigindo senha, devemos antes, colocar como trust, alterar os usuários adicionando senha e somente então voltamos ao pg_hba.conf para pedir senha e reiniciar o PostgreSQL.


Depois de instalado, para configurar senha no PostgreSQL siga os passos abaixo.


1. GARANTA QUE O USUÁRIO POSTGRES SEJA O DONO DELE MESMO E ALTERE O ARQUIVO POSTGRESQL.CONF

Digite o comando:

# chown -R postgres:postgres /etc/postgresql/15/main/

Altere o 15 e/ou o caminho para a tua versão.

Verifique se o Postgres está iniciado e funcionando, se não estiver inicie o Postgres:

# systemctl status postgresql.service # Debian e derivados
# systemctl start postgresql.service

No Debian e derivados o arquivo postgresql.conf está em /etc/postgresql/15/main/postgresql.conf, mas pode procurar na tua distribuição com o comando:

# find / | grep postgresql.conf

E depois use o teu editor de texto preferido:

# vim /etc/postgresql/15/main/postgresql.conf

Procure a linha listen_addresses (está na linha ~60), caso estiver comentada descomente-a e deixe ela assim:

listen_addresses = 'localhost, 127.0.0.1, IP_DO_SEU_SERVIDOR'

Esta linha é o começo da configuração para evitar aquele famigerado erro "o servidor está aceitando conexões TCP/IP?":


Is the server running on host "localhost" (::1) and accepting TCP/IP connections on port 5432? could not connect to server: Connection refused Is the server running on host "localhost" (fe80::1) and accepting TCP/IP connections on port 5432?

2. ALTERE O ARQUIVO PG_HBA.CONF

No Debian e derivados está em /etc/postgresql/15/main/pg_hba.conf:

# vim /etc/postgresql/15/main/pg_hba.conf

Coloque tudo como trust.


# Database administrative login by Unix domain socket
local   all             postgres                                trust #peer

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     trust #peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust #scram-sha-256
host    all             all             12.345.678.900/32       trust
# IPv6 local connections:
host    all             all             ::1/128                 trust #scram-sha-256

# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     trust #peer
host    replication     all             127.0.0.1/32            trust #scram-sha-256
host    replication     all             ::1/128                 trust #scram-sha-256

A linha:

host    all             all             12.345.678.900/32       trust

você acrescenta na posição colocando o IP do teu servidor e coloque /32 no final independentemente se for /20, /24, etc, assim amarramos somente o IP e não a rede toda.

Salve e saia do arquivo.

Reinicie o Elefante:

# systemctl restart postgresql.service

* Debian e derivados com o famigerado systemd.


3. ALTERE OU CRIE O USUÁRIO POSTGRES COM SENHA

Entrando no usuário postgres que deve ter sido criado automaticamente no sistema durante a instalação do Elefante:

# sudo -i -u postgres

* mesmo estando como root use o sudo.

Caso precisar coloque o usuário postgres no arquivo /etc/sudoers abaixo do root:

# vim /etc/sudoers


root    ALL=(ALL:ALL) ALL
postgres ALL=(ALL:ALL) ALL

Salve e saia do arquivo.

Entrando no utilitário psql:

psql postgres=# ALTER USER postgres WITH PASSWORD 'sua_senha';

Dê enter e deverá aparecer ALTER ROLE indicando que você é o cara e fez tudo certo até aqui.

Para sair digite \q.

E saia do usuário postgres:

exit


4. CONFIGURANDO O PG_HBA.CONF

Edite o arquivo:

# vim /etc/postgresql/15/main/pg_hba.conf

Veja o exemplo de um servidor em produção, da parte final que nos interessa:

# Database administrative login by Unix domain socket
local   all             postgres                                md5 #peer

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     md5 #peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            scram-sha-256
host    all             all             12.345.678.900/32       md5
# IPv6 local connections:
host    all             all             ::1/128                 scram-sha-256

# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     md5 #peer
host    replication     all             127.0.0.1/32            scram-sha-256
host    replication     all             ::1/128                 scram-sha-256

Salve e saia do arquivo.

Reinicie o Elefante:

# systemctl restart postgresql.service

* Debian e derivados com o famigerado systemd.

E está terminado. Agora você não precisa mais deixar o Postgresql vulnerável colocando tudo como trust para poder conectar.

Teste com o PgAdmin4 ou teste de outra forma a conexão com o banco digitando a senha que configurou com o comando ALTER USER.

Ao criar ou alterar a senha no psql o Postgres criptografa automaticamente a senha.

Deixamos scram-sha-256 onde estava originalmente como indica a documentação do Postgres e colocamos md5 onde estava peer para dar mais segurança, apesar de que, segundo a documentação do PostgreSQL, para facilitar a transição do método md5 para o método SCRAM mais recente, se for especificado o md5 em pg_hba.conf, mas a senha do usuário no servidor estiver criptografada para SCRAM, então a autenticação baseada em SCRAM será escolhida automaticamente.

REFERÊNCIAS


sexta-feira, 19 de janeiro de 2024

A Pedido - Anitta

   Uma “entidade”, um ser que me assola e me assombra há tempos vinha insistentemente insistindo – não sei exatamente o porquê – para eu escrever sobre a Larissa de Macedo Machado, nascida em 30 de março de 1993, vulgarmente conhecida como Anitta, a “funkeira” Anitta.

   Meu primeiro sentimento foi “prefiro fazer um tratamento de canal dentário à moda antiga e sem anestesia”. Porém, logo após ser tomado por esse pensamento suicida, que me pareceu perfeitamente lógico na hora, lembrei-me de um trecho do livro “A Vida Intelectual, Espírito, Condições, Métodos” do Padre A. D. Sertillanges (Antonin-Gilbert Sertillanges, nascido Antonin-Dalmace Sertillanges), página 159:


“Leibniz utilizava tudo; S. Tomás extraiu dos hereges e dos paganizantes do seu tempo grande número de idéias, sem sofrer de nenhuma. O homem inteligente encontra em toda a parte inteligência, o louco projeta sobre todas as paredes a sombra da sua fronte estreita e inerte. Escolhei o melhor que puderdes; mas procurai que tudo seja bom, largo, aberto ao bem, prudente e progressivo.”


   Passei a pesquisar sobre o objeto de estudo em questão: Larissa.

   Não me desviarei do caminho ainda que seja um périplo auricular e visual, uma via crucis de chicotadas mentais ante à coleção de bobagens proferidas em tais vídeos, mas isso é o que dá fama e dinheiro no Brasil. E não confundam fama e dinheiro com sucesso, este engloba aqueles, mas são coisas diferentes.

   Assistir a seus vídeos com seus “clips” e suas entrevistas até nem foi tão ruim assim, porém, tive que projetar sobre todas as paredes a sombra da minha fronte estreita e inerte para entender como “causa” tanto uma mulher cuja maior façanha é rebolar a excelente protuberância traseira na qual as celulites ali presentes ressaltam o charme e a beleza - apesar de que toda mulher quando meio curvada as celulites somem -, coisa que, em si, não desabona ou dá mérito à Larissa em nada, pois acredito que ela nasceu assim dotada naturalmente daquilo que os jovens chamam atualmente de “raba”.

   No decorrer do texto os leitores perceberão que, durante a presente investigação, tive de aprender algumas palavras desse dialeto parecido com a Língua Portuguesa que os jovens da geração Anitta/Felipe Neto utilizam.

   De todos, da não muita extensa pesquisa que fiz, os vídeos que me chamaram mais atenção foram a entrevista da Larissa no programa Podpah (https://www.youtube.com/watch?v=3BQTpR-_I1g), além de um onde ela conversa com a Gabriela Prioli e outro no qual ela faz uma tatuagem naquela região onde me parece que a cada entrevista ela faz questão de citar, aquela região entremeio às nádegas. Nada contra, pois tal região era bastante citada também pelo filósofo Olavo de Carvalho, com a diferença de que ele referia-se não à sua própria região, mas a de seus desafetos, mandava-os para essa região.

   Até entendo que a Larissa tem a sua linha de perfumes íntimos e faça o seu “jabá”, pois todos temos contas para pagar – apesar de que as contas dela devem ser bem maiores do que as minhas e devem estar sempre em dia – contudo, quando alguém chega no ponto de ter de usar perfume para disfarçar “cheiro de cu” - palavras da Larissa -, tal pessoa deve procurar um médico imediatamente, pois não é normal exalar tal odor a ponto que os outros sintam à distância... ou o ânus deve estar tão lasseado que não consegue mais fechar.

   Brincadeiras à parte, no vídeo onde a Larissa canta com Caetano Veloso e Gilberto Gil percebi um certo talento musical nela, mas também percebi um certo desprezo dos dois em relação à Larissa, coisa feia isso, deselegante até; caso não queriam estar ali era só não estarem ali... como de fato não estavam. Ela estava interpretando a música. Intérprete é isso. Posso estar errado, mas pelo que eu percebi, eles se deram mal e ela foi grande.

   Não sou um “expert” no assunto, sou duro de ouvido, mas escrevo como um ouvinte que gostou e considerou agradável o que ouviu. Talvez ela devesse investir mais nesse estilo; não mudar de estilo – seja lá qual for o estilo dela; ela chama de funk, como se ela fosse um James Brown de saias -, não mudar de estilo, mas cantar às vezes alguma coisa onde não sinta tanta necessidade atávica de rebolar e/ou esfregar a “raba” em alguém, pois a “raba” despenca com a idade e o que fica é o talento musical. E uma mulher balzaquiana como a Larissa tem o seu valor, fisicamente falando... mas sabe como é... o público da Larissa é majoritariamente adolescente, o público dela é praticamente uma comunidade onanista.

   Para não fugir do estilo sugiro à Larissa que grave o funk do Ariano Suassuna: “Rutherford, Bohr, modelos atômicos, um cavalo morto é um animal sem vida, em redor do buraco tudo é beira...”; percebam a musicalidade intrinsecamente natural dessas palavras!

   Esse funk ficaria bem na voz anasalada da Larissa. Eu admiro as pessoas que falam pelo nariz e cantam metade pelo nariz e metade pela boca.

   Um trecho da entrevista no Podpah que eu faço questão de ressaltar é a parte na qual a Larissa discorre sobre o início de carreira dela. Quase fui às lágrimas!

   De novo, brincadeiras à parte, fiquei admirado com a persistência e a resiliência da Larissa. Gostaria de ser assim!

   Gostaria de ter acreditado em mim mesmo na tenra idade e investir no meu talento como ela fez com o seu – se é que tenho algum. Nessa parte da entrevista no Podpah lembrei do Olavo de Carvalho quando ele falava da cultura do “caranguejo no balde”, da cultura da mentira e do fingimento, do “não vai dar certo”, cuja é comum no Brasil

   Por três ocasiões a Larissa acreditou nela mesma; mesmo com a própria família dizendo que “não vai dar certo”. Na primeira, com a música “Menina Má”, na segunda com a música que não me recordo agora (é só ver o vídeo) e na terceira com o “Show das Poderosas”; aí a Larissa virou a Anitta!

   Tem um trecho de um vídeo que circulou nas redes sociais onde a Anitta fala que não queria se meter em política, “eu sou uma cantora”, disse ela, “vocês que me fizeram fazer isso”. Lembrei do Roberto Carlos que durante toda a carreira dele nunca se meteu em grupinhos ideológicos e/ou políticos e nunca ninguém se meteu com ele, pois não deve ser fácil brigar com um cara com a popularidade do Rei. Popularidade esta que a Anitta deveria almejar.

   Está aí uma coisa que eu gostaria de ver: a Larissa ser chamada de Rainha Anitta, mas num reinado conquistado pelo talento musical e não somente por saber rebolar a bunda.

   O Brasil não tem um prêmio Nobel, não tem um cantor, uma cantora, uma banda, um grupo, um esportista, etc, de sucesso mundial. Teve Pelé, Ayrton Senna e incluo Oscar Schimdt, mas é só. Um país como o Brasil deveria ser um celeiro de pessoas de sucesso.

   São três coisas: Talento, Vontade e Esforço. É um equilíbrio entre essas três coisas. O brasileiro acredita que somente o talento basta: nada mais falso. Como exemplo cito o Pelé. Ele depois dos treinos ficava sozinho treinando chutes, cabeçadas, etc, e olha que ele tinha um talento enorme para jogar futebol, nasceu para isso. E teve o apoio do pai dele, o Dondinho. Toda pessoa de talento que tenha vontade, que goste daquilo que faz, ela se esforça, mas precisa do apoio de alguém. E todos nós temos algum talento específico, basta saber qual. Em outro texto discorrerei mais sobre isso.

   No vídeo com a conversa com a Gabriela Prioli onde a Anitta perguntou se “um vereador seria um deputado municipal?” as pessoas debocharam da Anitta, porém, o raciocínio dela estava correto. Um vereador é do poder legislativo municipal, um deputado estadual é do poder legislativo estadual e um deputado federal é do poder legislativo federal. Um vereador poderia se chamar deputado municipal. É uma questão de nomes. A falta de conhecimento em algum assunto não implica em burrice, porque se for assim, eu sou completamente burro no assunto “ter fama e dinheiro”.

   O filósofo Aristóteles começa o tratado Categorias, o primeiro tratado do Organon, a obra Analítica dele, falando do “nome das coisas”. O nome das coisas é importante, mas é uma convenção do ser humano; importante também é o referente: o que a coisa é na realidade, a substância. A Anitta raciocinou de forma correta.

   Lembrando que vereador pode ser chamado de Edil também, pois na antiga Roma, Edil era o funcionário ou magistrado cuja função era observar e garantir o bom estado e funcionamento de edifícios e outras obras e serviços públicos de interesse comum, como ruas e o tráfego, abastecimento de gêneros e de água, condições de culto e prática religiosa etc; nas municipalidades do Império Romano, funcionário administrativo regular. Um prefeito pode ser chamado de Edil também.

   Gostaria de ver e ouvir a Anitta cantando músicas gospel, pois como ela mesmo diz, começou cantando na Igreja. Pessoas como Elvis Presley, Roberto Carlos, Roberta Flack, Madonna, entre vários outros, cantavam/cantam também músicas de Igreja, as chamadas músicas gospel.

   Pessoas de sucesso fazem o que lhes é do seu talento, mas sempre levam em consideração o que outros dizem somente para formar sua opinião. Essa segunda premissa é o meu defeito.

   Termino por aqui. Apesar de a Anitta ter um olhar bordeline, dedos maleáveis que se dobram para trás com uma facilidade impressionante e aquelas unhas que devem ser muito afiadas, fiquei admirado com a capacidade de raciocínio dela. Não apaixonado, mas admirado.

   Para quem já sofreu lanhada nas costas com unhas afiadas de mulher sabe do que estou falando.

   Não virei um fã da Anitta, pois não sou fã de ninguém, nem de mim mesmo, mas a Anitta virou minha considerada, sangue bom!

   Está aí o texto!