Blog

  • Laravel/Vite Remote Development Setup With NGINX

    ⚙️ Laravel/Vite Remote Development Setup
    This guide provides the necessary steps to configure your remote Nginx server and your Laravel/Vite application to enable Hot Module Replacement (HMR) for a seamless remote development experience over HTTPS.

    1. Configure Vite for Remote HMR

    You must tell Vite to use your public domain and the secure WebSocket protocol (wss) for HMR, and to listen on all interfaces.

    Edit your project’s vite.config.js file:

    JavaScript

    // vite.config.js

    import { defineConfig } from 'vite';
    import laravel from 'laravel-vite-plugin';
    
    export default defineConfig({
        plugins: [
            laravel([
                'resources/css/app.css',
                'resources/js/app.js',
            ]),
        ],
        server: {
            // 1. Listen on all interfaces so the outside world can connect
            host: '0.0.0.0', 
            port: 5173,
            // 2. CRUCIAL: Tell the browser the public address for HMR
            hmr: {
                // Replace with your actual remote domain (e.g., saladeformacao.pt)
                host: 'yourdomain.com',  //neste caso saladeformacao.pt
                // Use WSS because your Nginx is serving over HTTPS
                protocol: 'wss',        
            },
        }
    });
    

    2. Start Vite Dev Server and Clean Up

    On your remote server, run these commands via SSH:

    Remove the development marker file (if it exists). This forces Laravel to use the new HMR configuration when it creates the file again.

    Bash

    rm -f public/hot
    Start the development server. Keep this terminal window open while you are developing.

    Bash

    npm run dev

    3. Configure Nginx Reverse Proxy

    Nginx must be configured to act as a reverse proxy, redirecting all requests for Vite assets and WebSockets (HMR) from the public port 443 to the internal Vite server on port 5173.

    Add the following location block inside your Nginx server block that listens on 443 ssl:

    Nginx

    server {
        listen 443 ssl;
        server_name yourdomain.com;
        # ... other SSL/root configuration ...
    
        # ----------------------------------------------------
        # NGINX PROXY FOR VITE DEVELOPMENT ASSETS AND HMR (PORT 5173)
        # ----------------------------------------------------
        location ~ ^/(resources/|@vite/|node_modules/) {
            # The internal address where Vite is running
            proxy_pass http://localhost:5173; 
    
            # Standard headers
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-Proto $scheme;
    
            # **CRITICAL: WebSocket headers for HMR**
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
        }
    
        # ... Your existing PHP/Laravel root location ...
        location / {
            try_files $uri $uri/ /index.php?$query_string;
        }
    }
    

    Apply Nginx Changes
    Test and reload the Nginx configuration:

    Bash

    sudo nginx -t
    sudo systemctl reload nginx
    

    4. Firewall Check (Important)

    Ensure your server’s firewall (e.g., UFW) or cloud security settings (e.g., AWS Security Groups) allows incoming connections on port 5173. If this port is closed, the browser cannot connect to the Vite server.

    Bash

    #  Example for UFW to allow access from any IP
    sudo ufw allow 5173
    
  • Windows 10/11 – Intel VLAN

    A configuração de VLANs em Windows 10 e 11 com placas Intel exige procedimentos manuais.

    1. Instalar os drives fornecidos pela Intel. https://www.intel.com/content/www/us/en/download/18293/intel-network-adapter-driver-for-windows-10.html?product=82185
    2. Importar o módulo de comandos PowerSell. Import-Module -Name “C:\Program Files\Intel\Wired Networking\IntelNetCmdlets\IntelNetCmdlets” <- Pasta padrão.
    3. Adiciobar o Interface com a tag desejada. Add-IntelNetVLAN -ParentName “Intel(R) Ethernet Connection I219-V” -VLANID 100.
    4. Criar o Interface “sem marca” untagged . Add-IntelNetVLAN -ParentName “Intel(R) Ethernet Connection I219-V” -VLANID 0. Este Interface tem que ser criado depois de haver um Interface com tag.

    Nota: A numeração acima é feita com o interface I219-V. Deve ser alterado para o nome parente respetivo.

    Nota2: À data deste artigo os Interfaces não conseguem ser ativos.

  • Protegido: Categoria Aberta de Piloto Remoto – A1 + A3

    Este conteúdo está protegido. Para aceder, por favor insira a senha abaixo.

    Páginas: 1 2 3

  • WordPress – Temas Filho

    O que é um Tem Filho (Child Theme)

    Um tema filho no WordPress é um conjunto de recursos que permite fazer alterações no aspeto e funcionalidades do site sem afetar o tema principal, o tema Pai.

    O que é Tema Pai (Parent Theme)

    É o tema que contem todos os ficheiros necessário para que site seja apresentado corretamente em todo o seu aspeto e funcionalidades.

    Porque usar um tema filho?

    • Manter uma cópia intacta do tema;
    • Uma atualização ao tema Pai não reverte alterações no tema Filho. No entanto o tema Filho pode herdar novas funcionalidades do tema Pai;
    • Permite comutar entre temas alterados e desenvolver alternativas sem grandes modificações;

    Criar um tema Filho

    1. Criar a pasta do tema Filho

    Dentro da raíz da instalação do wordpress criar uma pasta em wp-content/themes com o nome <nome-do-tema-pai>-child.

    Exemplo: storefront-child
    Nota: O tema Pai tem que estar instalado para que tudo funcione.

    1. Criar uma folha de estilo: style.css
    /*
     Theme Name:   Storefront Child
     Theme URI:    https://woocommerce.com/storefront/
     Description:  Storefront Child Theme
     Author:       Raul Ramos
     Author URI:   http://raulramos.pt
     Template:     storefront
     Version:      1.0.0
     License:      GNU General Public License v2 or later
     License URI:  http://www.gnu.org/licenses/gpl-2.0.html
     Tags:         e-commerce, two-columns, left-sidebar, right-sidebar, custom-background, custom-colors, custom-header, custom-menu, featured-images, full-width-template, threaded-comments, accessibility-ready, rtl-language-support, footer-widgets, sticky-post, theme-options, editor-style
     Text Domain:  storefrontchild
    */
    

    Informações necessárias:

    • Theme Name – Nome do tema. Deve ser exclusivo.
    • Template – Modelo. O nome da diretoria do tema pai. O tema pai no exemplo é o storefront, logo, o Template será storefront.
    1. Processar folhas de estilos

    Fonte: https://developer.wordpress.org/themes/advanced-topics/child-themes/

  • Pureftpd Instalação no Debian

    Resumo

    Instalar:
    apt-get install pure-ftpd-common pure-ftpd

    Criar grupo local:
    groupadd ftpgroup

    Criar utilizador local com o grupo criado no passo anterior:
    useradd -g ftpgroup -d /dev/null -s /etc ftpuser

    Criar utilizador teste1:
    pure-pw useradd test1 -u ftpuser -d /home/ftpusers/test1

    Sempre que houver alteração nos utilizadores atualizar a base de dados:
    pure-pw mkdb

    Alterar pass do utilizador teste1:
    pure-pw passwd test1
    pure-pw mkdb

    Remover utilizador teste1:
    pure-pw userdel test1
    pure-pw mkdb

    Desenvolvimento

    Fonte: https://www.debianhelp.co.uk/pureftp.htm

  • As principais responsabilidades de um administrador de base de dados

    O trabalho principal de um administrador de base de dados (ABD) é garantir que os dados estejam disponíveis, protegidos contra perda e corrupção e facilmente acessíveis conforme necessário. Abaixo estão algumas das principais responsabilidades que compõem o trabalho do dia-a-dia de um ABD.

    1. Instalação e manutenção de software

    Um ABD frequentemente colabora na instalação e configuração inicial de uma nova base de dados. O administrador do sistema configura o hardware e implementa o sistema operativo para o servidor da base de dados, o ABD instala o software de base de dados e o configura-o. Como atualizações são necessárias, o ABD lida com essa manutenção de forma contínua.

    2. Extração, transformação e carregamento de dados

    Conhecida como ETL (ETC em pt), extração, transformação e carregamento de dados referem-se à importação eficiente de grandes volumes de dados que foram extraídos de vários sistemas para um ambiente de data warehouse. Estes dados externos são limpos e transformados para caber no formato desejado para que possam ser importados para um repositório central.

    3. Tratamento especializado de dados

    As bases de dados de hoje podem ser enormes e conter tipos de dados não estruturados, como imagens, documentos ou ficheiros de som e vídeo. Gerir uma base de dados muito grande (VLDB) pode exigir habilidades especializadas para a monitorização e ajustes adicionais mantendo-a eficiênciente.

    4. Backup e recuperação de base de dados

    Os ABDs criam planos e procedimentos de backup e recuperação com base nas melhores práticas do setor e, em seguida, certifique-se de que as etapas necessárias sejam seguidas. Os backups custam tempo e dinheiro, portanto o ABD pode ter que persuadir a gerência a tomar as precauções necessárias para preservar os dados.

    5. Segurança

    Um ABD precisa conhecer as fraquezas potenciais do software de base de dados e do sistema geral da empresa e trabalhar para minimizar os riscos. Nenhum sistema é cem por cento imune a ataques, mas implementar as melhores práticas pode minimizar os riscos. No caso de uma falha de segurança ou irregularidade, o ABD pode consultar os logs de auditoria para ver quem fez e o quê com os dados. Trilhas de auditoria também são importantes ao trabalhar com dados regulamentados.

    (mais…)
  • CPU – Escala de frequências

    cpupower

    Verificar se o software está instalado

    cpupower

    Se aparecer:

    -bash: cpupower: command not found

    É porque é necessário instalar o cpupower:

    apt install linux-cpupower

    Verificar informalçao:

    cpupower frequency-info
    
    analyzing CPU 0:
    driver: intel_pstate
    CPUs which run at the same hardware frequency: 0
    CPUs which need to have their frequency coordinated by software: 0
    maximum transition latency: Cannot determine or is not supported.
    hardware limits: 1.60 GHz - 3.40 GHz
    available cpufreq governors: performance powersave
    current policy: frequency should be within 1.60 GHz and 3.40 GHz.
    The governor "powersave" may decide which speed to use
    within this range.
    current CPU frequency: Unable to call hardware
    current CPU frequency: 3.04 GHz (asserted by call to kernel)
    boost state support:
    Supported: yes
    Active: yes
    3200 MHz max turbo 4 active cores
    3300 MHz max turbo 3 active cores
    3300 MHz max turbo 2 active cores
    3400 MHz max turbo 1 active cores

    Em available cpufreq governors temos: performance e powersave.

    Para alterar para performance, usamos o comando:

    cpupower frequency-set -g performance

    Ou para economia de energia:

    cpupower frequency-set -g powersave

    Fonte: https://wiki.debian.org/CpuFrequencyScaling

  • E-mail: Para, Cc, Bcc

    Uma visão geral dos campos dos destinatários de e-mail ao entrar na conta e começar a compor um novo e-mail ou clicar para responder a um e-mail recebido, encontrará três campos separados para inserir os endereços de e-mail dos destinatários. Os três campos são Para, Cc e Bcc/Cco e isso aplica-se a todos os clientes de e-mail, seja uma conta do Gmail ou o MS Outlook. Em baixo está uma captura de ecrã de uma conta do MS Outlook que mostra os três campos. Em alguns clientes os campos “Cc” e “Bcc” estão, por padrão, ocultos, clicar nas palavras “Cc” e “Bcc” para que os respetivos campos se tornarem visíveis.

    Inserir os endereços de e-mail aleatoriamente num dos 3 campos ou usar só o “Para” não é o que devemos fazer. As informações a seguir vão ajudar a entender o motivo.

    Usar o campo “Para”:

    O campo “Para” é, de acordo com as regras de etiqueta de e-mail, destinado ao(s) principal(s) destinatário(s). Mais precisamente, este campo deve ser usado para incluir os destinatários que precisam executar uma ação em resposta ao e-mail. São as pessoas cujos nomes inclui na saudação do e-mail ou os membros do grupo ou da equipe para quem enviou o e-mail. É importante observar que não há limite máximo para o número de destinatários que pode incluir no campo “Para”. Se houver 10 ou até 20 pessoas para quem a mensagem é diretamente relevante para executar a informação, inclua-as todas no campo “Para”.

    Usar o campo “Cc”:

    Cc” significa Carbon Copy ou em Português Com Cópia. O campo é usado para se referir ao conceito de cópia a papel químico, pois envia cópias adicionais de um único e-mail para um ou mais destinatários.

    Os campos “Para” e “Cc” geralmente são usados de forma intercambiável porque, independentemente de qual campo usar, há pouca diferença na maneira como os destinatários recebem e vêm o e-mail. No entanto, a prática geral é usar o campo “Cc “para enviar uma cópia do e-mail para as pessoas apenas para mantê-las informadas. A etiqueta de envio de e-mails diz que não se espera que as os endereços das pessoas que são colocadas no campo “Cc” executam alguma ação ou respondam à mensagem.

    Nos e-mails empresariais, o campo “Cc” é usado para mostrar ao destinatário que outras pessoas importantes estão cientes do e-mail e que o e-mail requer uma leitura urgente e precisa ser levado a sério.

    Usar o campo Bcc/Cco:

    Bcc“significa Blind Carbon Copy e em Português podemos encontrar “Cco” que significa “Com Cópia Oculta”. Envia cópias do e-mail para vários destinatários, a única diferença é que nenhum dos destinatários é informado de quem mais o recebeu. Pode haver muitos cenários em que o campo “Bcc”/”Cco” pode ser usado e o objetivo pode ser o desejo de manter em anonimato os nomes dos destinatários para proteger a privacidade dos destinatários. A aplicação mais comum é enviar um e-mail para uma longa lista de pessoas que não se conhecem, como listas de endereços para Marketing (NewsLetters) .

    Concluindo:

    Usar o “Para” se quisermos que alguém necessite de tomar ações quanto ao conteúdo do e-mail. “Cc” para enviar uma cópia para informar que os destinatários do “Para” vão tomar medidas quanto ao conteúdo do respetivo e-mail e o “Bcc” para enviar um e-mail ou cópia para múltiplos recipientes ocultando os restantes destinatários informando de um produto, desejos num evento, como na época Natalícia, etc…

    E-mails continua a ser um meio de comunicação elegante e com boas funcionalidades. Usem-no!

    Alterações a fazer: Arranjar uma imagem dos campos Para, Cc e Bcc.

  • Som/carrilhão de início dos Apple Mac

    Som do carrilhão de inicialização, executar este comando no Terminal:

    sudo nvram StartupMute=%00

    Reverter para o padrão:

    sudo nvram StartupMute=%01