Aplicação web com upload direto para S3 e SQS

Exemplo prático de como usar a SDK em JavaScript da AWS para fazer upload direto de arquivos, a partir do navegador para o serviço Amazon Simple Storage (S3). A principal vantagem de fazer um upload direto para o S3, sem passar por algum tipo de servidor intermediário é diminuir o gargalo que um pré-processamento poderia gerar.

Este exemplo foi apresentado como atividade na disciplina de Tópicos em Engenharia de Software lecionada pelo Dr. Gabriel Costa Silva. Os códigos de upload são idênticos ao exemplo já disponível pela própria Amazon (https://docs.aws.amazon.com/pt_br/sdk-for-javascript/v2/developer-guide/s3-example-photo-album.html), só que ao invés de ser um álbum de fotos, esse sistema funciona como se fosse um simples gerenciador de arquivos apelidado de “cenourinha files”.

Screenshot da Aplicação
Screenshot da Aplicação
Continue lendo “Aplicação web com upload direto para S3 e SQS”

Unix completa 50 anos

O Unix é um dos sistemas operacionais mais importantes da historia, você pode não ter interagido diretamente com um, mas com certeza já usou algo que estava usando esse sistema.

No verão de 1969, Ken Thompson e Dennis Ritchie criaram a primeira implementação do Unix, a motivação inicial do Ken Thompson era criar um sistema operacional que executasse o jogo (chamado de Space Travel [5]) que ele estava desenvolvendo de forma eficiente. Dennis Ritchie se inspirou em alguns projetos anteriores de sistemas operacionais como o Multics[4] da Bell Labs.

Depois do desenvolvimento inicial do Unix, ele começou a se tornar popular tanto no mercado quanto academicamente, logo mais, foram se criando sistemas operacionais que usavam ele como base, dentre as “sub-famílias” mais populares: MacOS, Linux e BSD.

Histórico do sistema Unix e dos sistemas operacionais derivados dele
Histórico do sistema Unix e dos sistemas operacionais derivados dele

Referências, curiosidades e história completa do Unix em:

  1. https://www.bell-labs.com/var/articles/invention-unix/
  2. https://www.bell-labs.com/unix50/
  3. https://www.bell-labs.com/usr/dmr/www/hist.html
  4. https://en.wikipedia.org/wiki/Multics
  5. https://en.wikipedia.org/wiki/Space_Travel_(video_game)

Corrigindo as horas no Arch Linux e outras distros

É normal que seu computador fique com o relógio bem impreciso, ainda mais quando você recém instala o seu Sistema Operacional.

Alguns sistemas operacionais já vem com algum programa que implementa o protocolo NTP para sincronizar o relógio da sua máquina automaticamente. O protocolo NTP além de sincronizar seu computador com vários outros servidores, ele também é preparado para lida com a latência¹ que ocorrer na comunicação com outros servidores e com outros fatores que podem afetar a precisão do relógio do seu computador.

Continue lendo “Corrigindo as horas no Arch Linux e outras distros”

Deixando o JQuery: toggleClass em puro JavaScript

O toggleClass() é um método do jQuery que adiciona ou remove uma classe CSS de um determinado elemento, o seu uso mais comum eu diria que é para renderizar ou não determinado elemento HTML, esse efeito conhecido como hide/show funciona adicionando e removendo uma classe com um display: none, mas o toggleClass() é útil para qualquer efeito de mudanças de CSS.

Continue lendo “Deixando o JQuery: toggleClass em puro JavaScript”

Metas para 2019

Aqui vai a algumas metas para o meu 2019 acadêmico/profissional e um pouco pessoal.

  1. Me sentir confortável com algum framework moderno JavaScript: O desafio disso é escolher, afinal: é melhor aprender algo que está mais consolidado na indústria como React ou Angular ou tentar aprender algo novo mas promisso como o Vue?, Na real, vale a pena “aprender” frameworks? isso me incomoda um pouco.
  2. Para esse blog: Criar um tema esqueleto [x], personalizar esse tema esqueleto[em progresso], não utilizar biblioteca pesadas como jQuery ou Bootstrap no frontend[x], utilizar lazy-loading nas imagens, comprimir as imagens, fixar uma rotina de postagens(1-5 posts por semana).
  3. Concluir a faculdade(Atualmente faltam 7 Matérias, TCC1 e 2, Estágio e atividades complementares), essa vai ser difícil concluir nesse ano.
  4. Ler mais, principalmente pela experiência, ultimamente só tenho lido para me informar/aprender algo ou porque sou obrigado, e eu já não era um grande leitor. 😕
  5. Usar algum método para acompanhar essas metas.

Aparentemente estou fazendo isso de metas atrasado
(já é 12/02?) mas a ideia é ir verificando o progresso e adicionando/retirando coisas conforme o ano se passa.

Cadê o shift + enter do novo editor de texto do WordPress?

Uma das minhas metas nesse ano é passar a escrever mais nesse blog, eu utilizo o WordPress para isso por dois motivos: comodidade e por que ele me da um sistema de discussão(que dependeria de terceiros se eu utilizasse algum tipo de sistema de gerador de páginas estáticas, por exemplo).

Então, desde 2017 o time de desenvolvimento core do WordPress está focado em desenvolver um editor de texto(chamado de Gutenberg) que viria para facilitar a escrita. Na prática parece que ele piorou a experiência de escrita para muita gente, abaixo da pra ver que boa parte da comunidade odiou o editor:

Página de reviews do plugin Gutenberg
Página de reviews do plugin Gutenberg
Continue lendo “Cadê o shift + enter do novo editor de texto do WordPress?”

Instalando imagick no Debian como extensão PHP

O ImageMagick® é um software que permite editar, criar, converter e trabalhar com imagens bitmap em mais de 200 diferentes formatos (PNG, JPEG, TIFF, GIF, etc), ele tem uma licença de distribuição Apache 2.0 que permite a distribuição dele como binário ou em softwares com código aberto ou proprietário.

Como extensão PHP, o ImageMagick ou imagick provê as classes: Imagick, ImagickDraw, ImagickPixel, ImagickPixelIterator e ImagickKernel. Particularmente nunca trabalhei puramente com as classes dessas extensão, mas segundo o WordPress no sistema deles a extensão melhora a qualidade das imagens adicionadas na biblioteca, adiciona um redimensionamento inteligente de imagens pequenas e o suporte as miniaturas de PDF.

Instalar a extensão no Debian e derivados é bem fácil, só exige o restart do Servidor/FastCGI Process Manager do PHP, no meu ambiente com Debian e PHP 7.3 é como no exemplo:

sudo apt-get update
sudo apt-get install php-imagick
sudo nginx -s reload
sudo /etc/init.d/php7.3-fpm restart

Para verificar a instalação do imagick basta criar um arquivo PHP com a função phpinfo();.

Se a extensão tiver sido carregada corretamente ela vai aparecer na listagem de extensões

Opinião: Sobre o notebook Lenovo 330

Depois de bastante pesquisa resolvi comprar um Lenovo 330, meus principais critérios foram o preço e as características de hardware descritas logo abaixo:

Imagem de divulgação do Lenovo 330.
  • Modelo: Lenovo Ideapad 330
  • Processador: Intel Core i5-8250u
  • Memória primária: 8GB
  • Placa gráfica dedicada: Geforce MX150 com 2GB
  • Placa gráfica integrada: Intel 620
  • Armazenamento:  1TB 
  • Monitor: Tela HD 15,6″
  • Sistema Operacional: Windows 10

Imagem de divulgação da Lenovo.

Continue lendo “Opinião: Sobre o notebook Lenovo 330”

Ferramentas e métodos de análise de Cross Browser Issue(XBI)

Com a popularidade das aplicações web e a possibilidade de execução nos mais diferentes tipos de dispositivos e browsers, é comum encontrar diferenças entre a renderização de uma mesma aplicação em diferentes ambientes, essas diferenças são conhecidas como Cross Browser Issue(XBI).

Principais Navegadores(Browsers) do Mercado

Essas diferenças podem ser classificadas em problemas visuais(e.g. diferentes: margens, tamanhos, cores e visibilidade de um elemento) ou funcionais(e.g. um menu drop down que deixa de funcionar, uma caixa de diálogo que não abre).

A maioria das ferramentas existentes hoje são criadas pelos próprios autores de artigo sobre o tema ou por empresas.

[ Atenção: Essa postagem é um rascunho, as informações podem estar incompletas ou incorretas. Deixe um feedback. ]

Continue lendo “Ferramentas e métodos de análise de Cross Browser Issue(XBI)”