Categories
Uncategorized

Destructuring em JavaScript

Trata-se de uma sintaxe que permite “desembrulhar” valores de um objeto ou um array antes de atribuí-los à variáveis.

O exemplo a seguir “desembrulha” os valores de um array em duas variáveis.

> const [ peso, idade ] = [ 70, 36 ];
> console.log(peso)
70
> console.log(idade)
36

Outro exemplo usando arrays.

> const [ peso, idade, ...resto ] = [ 70, 36, 170, 1984 ]
> console.log(peso)
70
> console.log(idade)
36
> console.log(resto)
[ 170, 1984 ]

Também é possível “desembrulhar” propriedades de objetos.

> const { peso, idade } = { peso: 70, idade: 36 }
> console.log(peso)
70
> console.log(idade)
36

Mais um exemplo usando objetos.

> const { peso, idade, ...resto } = { "peso": 70, "idade": 36, "altura": 170, "nascimento": 1984 }
> console.log(peso)
70
> console.log(idade)
36
> console.log(resto)
{ altura: 170, nascimento: 1984 }

É possível ainda construir novos arrays “desembrulhando” valores de outros arrays.

> const array1 = [ 70, 36 ]
> const array2 = [ "setenta", "trintaeseis" ]
> const array3 = [...array1, ...array2 ]
> console.log(array3)
[ 70, 36, 'setenta', 'trintaeseis' ]

Da mesma forma é possível construir novo objetos “desembrulhando” valores de outros objetos.

> const obj1 = { "idade": 36, "peso": 70 }
> const obj2 = { "nome": "Fabio" }
> const obj3 = { "funcao": "Piloto", ...obj1, ...obj2 }
> console.log(obj3)
{ funcao: 'Piloto', idade: 36, peso: 70, nome: 'Fabio' }

A sintaxe de destructuring também serve para passagem de parâmetros para funções.

> f = function([idade, peso]) {
    console.log("idade", idade);
    console.log("peso", peso);
  }
> f([ 36, 70 ])
idade 36
peso 70

O mesmo do exemplo acima, mas usando um objeto.

> f = function ({ idade, peso }) {
    console.log("peso", peso);
    console.log("idade", idade);
  }
> f({ "peso": 70, "idade": 36 })
peso 70
idade 36

Referências

  • https://cursos.alura.com.br/destructuring-em-js-c308
    • Aula da https://github.com/juunegreiros
  • https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment
Categories
Uncategorized

Criando um arquivo swap no linux

Primeiro deve-se criar um arquivo com o tamanho de swap desejado. O passo abaixo cria um arquivo de 1Gb.

sudo dd if=/dev/zero of=/swap1 bs=1M count=1000

É necessário que este arquivo seja acessível somente pelo root. Se essa restrição não for atendida, o arquivo pode não ser montado corretamente.

sudo chmod 600 /swap1

O comando abaixo formata o arquivo como swap

sudo mkswap /swap1

Para que este arquivo esteja sempre montado através de inicializações é necessário adicionar uma linha em /etc/fstab.

sudo sed -i -e '$a/swap1    none    swap    defaults 0 0' /etc/fstab

Finalmente é possível ativar o swap no arquivo criado através do comando abaixo.

swapon /swap1
Categories
Uncategorized

Ajustando fuso horário no PHP

Algumas aplicações precisam saber o fuso horário para realizar algumas ações específicas e pode ser uma boa ideia ajustar o date.timezone[1] nas configurações do PHP para essas aplicações.

Se o comando abaixo não exibir nenhuma saída, provavelmente o date.timezone não está configurado.

$ php -r "echo ini_get('date.timezone');"
>>>

É possível verificar a string que será exibida pela aplicação com o comando date[2] e o corrente fuso horário usando o comando abaixo.

$ php -r "echo date('r');"
>>> Fri, 22 Nov 2019 14:28:03 +0000

O +0000 indica que o fuso horário atual é o UTC, que é padrão do PHP quando o date.timezone não está configurado.

Depois de pegar uma opção de fuso horário a partir da documentação[3] do PHP, o teste para verificar se esta opção dará o resultado esperado pode ser feito com o comando abaixo, supondo que a opção escolhida seja America/Sao_Paulo.

$ php -d date.timezone=America/Sao_Paulo -r "echo date('r');"
>>> Fri, 22 Nov 2019 11:35:38 -0300

O -0300 indica o fuso horário America/Sao_Paulo. Para persistir esta configuração devemos definir date.timezone no arquivo php.ini. O lugar deste arquivo pode variar conforme a distro usada.

No Archlinux, todos os arquivos com extensão .ini presentes no diretório /etc/php/conf.d vão fazer parte do php.ini. O comando abaixo adiciona a configuração de fuso horário às configurações do PHP.

# echo date.timezone=America/Sao_Paulo >> /etc/php/conf.d/my-customs.ini

Feito isto, é possível rodar os mesmos comandos acima para verificar se as configurações de fuso horário estão funcionando corretamente.

$ php -r "echo ini_get('date.timezone');"
>>> America/Sao_Paulo

$ php -r "echo date('r');"
>>> Fri, 22 Nov 2019 11:51:25 -0300

Referências

  1. https://www.php.net/manual/en/datetime.configuration.php#ini.date.timezone
  2. https://www.php.net/manual/en/function.date.php
  3. https://www.php.net/manual/en/timezones.php