Every once in a while I have to spin up a postgres dockerize instance to play around, and since 2017 it’s been a pain having to go through the docs just to get things working.
So now this is where I’m going to come back whenever I need to do that.

Creating the Container

docker run \
--name strapi-postgres \
-p 5432:5432 \
-e POSTGRES_PASSWORD=mycustompassword \
-e POSTGRES_USER=mycustomuser -d postgres
-e POSTGRES_DB=mycustomdatabase

Docs doesn’t mention the port, but here we use -p to bind it.

Connecting via psql

sudo apt install postgresql # for ubuntu/debian based

and then

psql -h localhost -p 5432 -U mycustomuser

Notice…


Borrowing

Borrowing is what happens when a reference is passed as parameter to a function. When s goest out of scope in the end of calculate_length_borrow function, s reference is not dropped, because calculate_length_borrow doesn’t have ownership of it. This way, the variable s1 can be used after the function call.
Note that a borrowed value is immutable inside the function.

Mutable References

In order to be able to mutate a value passed as parameter, we have to assign that variable as mutable, using the mut keyword, pass a mutable reference using &mut s1 and declare the parameter as a mutable reference type…


Have you ever asked yourself why the concept of “passing by value” and “passing by reference” exist?

From what I’m learning in Rust by going through the Rust Book, this happens because the memory is divided in two sections: The heap and the stack.

These two words have been something that scared me everytime I hear them, because the C classes given at college were horrible, and made them seem like an awfully complicated topic.

It turns out they are not so scary, and they are actually quite interesting.

The Stack

The stack is a memory space that follows the FILO rule…


Em arquitetura de software, existe o modelo conceitual de três camadas:
1. Presentation Layer
2. Domain Layer
3. Data Source Layer

As três camadas servem como uma forma de criar um vocabulário e segmentar as responsabilidades de um sistema, afim de melhor compreende-lo e discutir sobre ele.

1. Presentation Layer

Se trata da camada que vai servir a aplicação para consumidores do mundo externo. Vamos tomar como exemplo o GitHub. Ele possui três camadas de apresentação: o próprio site, o GitHub CLI e o GitHub Desktop.
Idealmente, na camada de apresentação está toda lógica de interface. Essa camada não conhece regras de negócio ou…


O processo de compilação de um código escrito em .Net é diferente da compilação tradicional, que gera o chamado código de maquina para cada arquitetura especifica.

Por exemplo, um código escrito em C é compilado para uma determinada arquitetura (x86, x64, ARM).
Já um componente escrito em C# não é compilado para uma arquitetura específica, e sim para uma linguagem intermediária (IL).

A IL serve para ser executada no CLR, o Common Language Runtime. Este sim tem o papel de interpretar e compilar o código para o código de maquina da arquitetura em que esta sendo executado.
Portanto, qualquer linguagem que…


Hoje tive um problema no qual o Git estava corrompendo arquivos png na hora do staging.
Ele estava trocando os line endings das imagems de CRLF para LF, e isso quebrava a imagem.

No arquivo .gitattributes, percebi que havia a seguinte diretiva:

* text eol=lf

Depois de pesquisar um tempo, descobri que todos arquivos adicionados tem seus line endings convertios para LF.
Então resolvi da seguinte maneira:

* text eol=lf
*.png -text

Dessa forma, o git entende que arquivos .png não são textos, e que não deve mexer em seus line endings.

Sucesso!

Referencia: https://git-scm.com/docs/gitattributes

Referencia: https://git-scm.com/docs/gitattributes


Quando estamos fazendo uma feature e perdemos acesso ao repositório, precisamos dar um jeito de enviar o código. O que acontece é que a primeira ideia que passa pela cabeça é enviar um .zip da pasta do projeto, na branch da feature, para que alguém que tenha acesso possa subir nossas alterações.

Bom, e se pudessemos enviar somente o que foi alterado?
E, se estivermos no lugar de quem esta recebendo, tivesse um jeito simples de aplicar essas alterações recebidas?

Com git diff podemos salvar as alterações em um arquivo, para então aplica-las com git apply

Vamos ao post!

1. Gerando um diff.txt

Através…


Logo to Typescript

Neste artigo rápido e simples, gostaria de compartilhar uma técnica que remove a necessidade de importar um tipo na hora utiliza-lo no seu código.

Em certas situações, temos tipos ou interfaces que são referenciadas em todo canto da aplicação, o que faz com que muitos modulos declarem explicitamente a dependencia desse tipo através de um import ou require

Através da keyword declare e do sufixo .d.ts , somos capazes de criar tipos que não precisam ser importados para que sejam utilizados.

No meu projeto de pomodoro, tenho o arquivo src/commons.d.ts , onde declaro as duas ITimer e ITimerState:

Repare…

Alex Alonso

Jack Of All Trades

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store