quinta-feira, 19 de outubro de 2017

Ubuntu - Não me arrependo

A três anos atrás fiz uma troca de Sistema Operacional, o Windows pelo o Ubuntu (por favor, Linux é apenas o Kernel), tive que realizar muitas adaptações nesse tempo. Porém, olhando para trás paro e penso que só tenho um arrependimento não ter feito isso mais cedo. Nessa postagem quero explicar os motivos, não se preocupe pois não pretendo convertê-lo nem dizer que a Microsoft é a vilã na face da terra, aprendi que liberdade é exatamente respeitar as escolhas.



80% do que faço com meus computadores (tenho 3 deles) é desenvolvimento de sistemas, o resto dos 20% é uma distração como assistir filmes ou jogar alguns games (no estilo RPG ou tiro no estilo Doom). No primeiro quisito terei que explicar que como desenvolvedor preciso testar muitos softwares principalmente versões betas de aplicativos e que muitas vezes conseguem danificar o Sistema Operacional, o que mais fazia com o Windows era usar o comando "format c:" (estava tão acostumado que trimestralmente fazia isso).

O Windows foi criado para usuários comuns que compram aplicativos em lojas e essas são versões sólidas e estáveis. Não estou denegrindo o sistema, mas nenhum "usuário avançado" usa ele, é só você assistir a vídeos no YouTube dessas pessoas e reparar que normalmente ou estão usando o MacOS ou alguma distribuição Linux. Pelo simples motivo que citei anteriormente, é muito chato ter que ficar formatando constantemente o sistema.

Optei pelo Ubuntu pois foi a distribuição (ou distro como todo mundo chama) que mais fácil me adaptei (já tinha tentado a Red Hat, a Fedora e o Debian). Não quero dizer que é a melhor, apenas foi a que me adaptei e penso que as pessoas deveriam parar com isso de ficar rotulando se essa é boa ou ruim.

Se tive problemas? sim vários, porém consegui resolver todos eles. Já tive placas de vídeo que não funcionava, vídeo que não tocava, som que não saia, certa vez depois de uma palestra minha resolução de vídeo não retornava e fique um bom tempo em 800x600, entre outras coisas que me aconteceram. E é por essas e outras que penso: "nesse quisito o Windows é bem mais tranquilo, principalmente para um usuário iniciante".





Como disse estou com o Ubuntu a 3 anos, comecei com a versão 14.04 e exatamente hoje mudei o sistema para a versão 17.10. E disse que só me arrependo por não ter trocado mais cedo de sistema foi que, mesmo com todos os problemas que passei, nesse tempo não tive mais que formatar meus computadores uma única vez. Só para que você entenda, até o processo de troca de versão no Sistema Operacional no Ubuntu é feita da seguinte forma: o Sistema me avisa que tem uma nova versão disponível e me pergunta se quero atualizar, digo que sim e pronto começa todo o processo de troca (enquanto ele ocorre continuo trabalhando normalmente).

Toda vez que instalo um aplicativo no sistema por mais beta que seja ele não consegue danificar o sistema, por quê não? Simples, porque ele não tem acesso a isso. Não é que as distros do Linux sejam a prova de vírus, é apenas que o vírus não pode chegar no Kernel do Sistema. No Windows seu usuário é Deus e ali é seu Paraíso, nas distros seu usuário é seu usuário e Deus é o "sudo", ou seja, apenas o "sudo" é que tem permissão de machucar o sistema. E você só usa ele em caso de necessidade.

No Windows você tem duas pastas importantes: "Program Files" e "Windows", a primeira é onde estão os programas instalados e a segunda aonde está o Sistema Operacional em si. Nas distros, existem várias pastas importantes, mas você tem beeeeeemmmm delimitado onde é sua casa, e tudo o que instala com seu usuário está limitado a ela. Ou seja, como corromper um sistema que para ser corrompido tenho que querer isso?

Dois programas que são quase nativos do Ubuntu e que agradam a maioria dos desenvolvedores (não que eles não possam ser instalados em outras distros), o Git e o Docker. O primeiro para publicar seus códigos na Internet e o segundo para a criação de contâineres. Resultado, quero testar um banco novo, como o  RethinkDB (um NoSQL), em pouquíssimos passos tenho um contâiner criado com ele e numa área totalmente delimitada, sendo impossível que faça algo no meu sistema que não permita (não me agradou? Mato o contâiner e pronto). Meus códigos? Boa parte está no Git assim não tenho como perdê-los. Outro aplicativo que o Ubuntu interage muito bem é com o Dropbox. E isso porque não estou tratando que linguagens como Python, Perl, Java e Assembly já fazem parte do pacote básico do sistema e que o npm é possível instalar com uma única linha de comando.

Então pergunto, o que mais posso querer como desenvolvedor?

Obrigado e até a próxima
Fernando Anselmo

Deseja saber mais sobre o sistema? Então baixe aqui meu livro gratuitamente "Instalei o Ubuntu e agora?" e talvez você veja que a mudança pode ser algo muito proveitoso.

quinta-feira, 12 de outubro de 2017

Aprendizado - Sabe programar em BASIC?

Neste "Dia das Crianças" queria lembrar um pouco minha infância, me tornei programador por paixão, na verdade foi depois de ter visto no cinema ao filme "Tron" (1982). Meu primeiro computador veio apenas alguns anos depois através de um TK-83C que era um clone do ZX81, resultado a primeira linguagem que aprendi foi Basic (como muita gente da minha geração).

Meu desejo de consumo sempre foi o de comprar um ZX Spectrum oficial, mas as finanças não me permitiram tal luxo. O tempo passou, as máquinas evoluiram, tive vários computadores e o desejo ficou guardado na gaveta.

Em 2014 comecei a usar o Ubuntu e através dele descobri várias coisas que podia fazer, entre elas retornar a meu antigo desejo. Então neste artigo você descobrirá como ter um ZX Spectrum (muita coisa que fizer aqui poderá ser adaptada para outros Sistemas Operacionais) que a partir de agora vou abreviar para ZX.

Instalação do Emulador

O ponto mais importante é o Emulador que é um programa que traduz as instruções para o sistema operacional, escolhi o FUSE por ser gratuito e bem compatível com o ZX. No Ubuntu existem os pacotes oficiais através dos seguintes comandos:
$ sudo apt install fuse-emulator-common
$ sudo apt install libspectrum
O primeiro comando instala o FUSE propriamente dito e o segundo a biblioteca necessária para executar o ZX.

+3 BASIC

Próximo passo é achar o programa para excutar a linguagem BASIC (Beginners All-Purpose Symbolic Instruction Code), escolhi o compilador +3 BASIC.

Para isso baixe o disco aqui e com o FUSE instalado basta clicar neste para que o +3 Basic seja executado e carregado. Na primeira vez pode apresentar um erro, não se preocupe basta esperar um pouco e quando aparecer a mensagem do Loader: "To cancel - press BREAK twice" pressione a Barra de Espaços duas vezes para entrar no menu.


Agora basta selecionar a opção +3 BASIC para entrar no editor. No menu principal do FUSE selecione "Machine | Reset" (ou pressione F5) e devemos voltar para o mesmo Menu. Saia e entre novamente do FUSE e verá que este programa será carregado por padrão.

Passos Iniciais


Primeiro detalhe que devemos conhecer é que o teclado possui algumas teclas completamente diferente do teclado tradicional do PC (principalmente os brasileiros), então veja a seguinte imagem:


Observe que a aspas duplas (") se encontra em cima da letra P, ou os dois pontos (:) na letra Z, para conseguí-los use a combinação Ctrl+P ou Ctrl+Z.

Segundo detalhe é como criar, salvar e ler um programa?

Precisamos criar um drive de disco, no menu superior do FUSE acesse "Media |  Disk | +3 | Drive A: | Insert New...", agora precisamos formatá-lo, para fazer isso no editor digite o seguinte comando:
format "a:" 
Se tudo ocorrer bem receberá a mensagem "No data, 0:1" (aperte barra de espaço para retornar ao editor), digite o comando "cat" para ver os arquivos existentes no disco. Agora vamos proceder um pequeno teste digite a seguinte codificação:
10 LET a = 10
20 PRINT a
Para executar digite o comando "run", se tudo der certo verá o valor 10 na tela e a mensagem "0 OK, 20:1". Conseguiu perceber o que o programa faz? A linha 10 cria uma variável a com o valor 10 e a segundo mostra o valor dessa variável.

Pronto agora que temos nosso programa devemos salvá-lo, para isso digite o comando:
save "prog01.bas"
E após receber a mensagem de OK digite novamente o comando "cat" para verificar que está tudo OK.


Agora pressione F5 para "resetar" o editor. Entre novamente no editor e digite o comando:
load "prog01.bas" e o programa salvo retornará ao editor.

Indo mais além

Em 1985 surgiu uma das melhores revistas de informática para minha geração, na verdade eram livrinhos, chamada Micro Aventura.


Para minha tristeza só durou 10 edições. Cada edição além da história trazia vários programas a serem executados e ao final a explicação de cada um. E foi assim que me aperfeiçoei com o BASIC e realmente comecei a me tornar um programador. É possível baixar os livros neste site (ou comprá-los no Mercado Livre como Edição de Colecionador) e aproveitar tudo o que essa linguagem tem para oferecer.

Quer explorar mais? Então veja esses dois livros:

Understanding Mathematics and Logic Using BASIC Computer Game
Basic Computer Games - Microcomputer Edition

Obrigado e até a próxima
Fernando Anselmo

Dica, quer mais programas para esse emulador? Então não deixe de visitar esse site.


segunda-feira, 2 de outubro de 2017

Divertimento - Brincando com Papel

Uma das artes que mais adoro é chamada de Papercraft (acredito que a palavra japonesa para isso seja Pepakura), e realizar objetos nessa técnica envolve os seguintes passos: Criar (ou localizar) um modelo em 3 dimensões, imprimir, recortar e montar. Ou seja, não é preciso de nenhum material ou habilidade especial apenas tesoura, cola e um bom nível de paciência.

Assim como o Origami (que é a arte dobradura em papel) essa arte teve sua origem no Japão (ou China - existe uma boa discussão sobre isso) e foi popularizada após a II Grande Guerra trazida para os EUA. É diferente no que se refere ao uso de tesoura ou cola. Mas ambos surgiram como um passatempo que virou arte na mão de modelistas profissionais.

Para introduzí-lo nessa arte escolhi um modelo que me apaixonei a primeira vista, assistindo a um documentário sobre o Festival das Lanternas de Peixes Dourados de Yanai.


Fiquei louco com esse peixe e corri atrás até conseguir o modelo em PaperCraft para montá-lo. Até que finalmente encontrei.


Recomendo-lhe apenas 2 coisas, primeiro imprima em uma boa impressora colorida e segundo não use uma folha A4 comum e sim um papel de gramatura maior (mais grosso, preferencialmente entre 120 a 200 grs - O papel normal tem 75) que pode ser encontrado em qualquer boa papelaria.

Aqui está o modelo para impressão: Baixe aqui o PDF

Bom Relaxamento e até a próxima
Fernando Anselmo

PS. Já falei sobre Papercraft nesse blog em um outro artigo.

sábado, 19 de agosto de 2017

Linux - Gravar de Vídeos de Forma Livre vale a pena?

Para disponibilizar os vídeos para meu canal no YouTube utilizo basicamente 2 programas, o primeiro, para gravar, é chamado de SimpleScreenRecord e o segundo, para editoração OpenShot Video Editor. Ambos gratuitos e ambos rodam perfeitamente bem em vários sistemas operacionais incluindo meu Ubuntu.
O que eu acho mais engraçado nas pessoas é que elas acham que é necessário gastar uma grana em softwares (ou que apenas o Mac faz isso) para gerar vídeos de qualidade e que aplicativos gratuitos não prestam. Hoje enquanto estava gerando a segunda aula para meu curso de Spring com JSon aconteceu algo bem inusitado, bem no final (após gravar quase uma hora e meia de vídeo) aconteceu uma queda de energia. Qual o pensamento? Perdi tudo, desisto, vai ficar sem aula e deixa para amanhã. Mas após religar o computador descubro que o vídeo estava lá. Porém, e obviamente, estava corrompido, e lá vem o pensamento de novo: "Perdi tudo, desisto..." (e toda a choradeira comum) só que me lembrei que estava no Ubuntu.

Isso mesmo estava em um sistema operacional que me oferecia várias manipulações de arquivos então a solução foi abrir o terminal e digitar uma simples linha comando para recuperar meu vídeo:
$ ffmpeg -err_detect ignore_err -i arquivo.mkv -c copy resolvido.mkv
Se estivesse em qualquer outro sistema provavelmente estaria, procurando por um software que resolvesse meu problema e, pagando ou realizando alguma espécie de pirataria (atrás de uma versão craqueada). Fico maravilhado como o simples fato de usar um sistema livre me faz pensar em soluções livres.

Não estou falando que todo mundo que usa outro sistema não pensa assim, mas para quem é aficionado pelo Windows ou Mac quando foi a última vez que usou algo livre? Ou pensou em usar, é quase automático, quem usa esses ambientes quando querem um Editor Profissional pensam logo no Photoshop e torcem o nariz para o Gimp ou Krita. Quando querem uma suíte escritório correm para o MS-Office (que agora é Office 365) e esquecem completamente que existe o Libre-Office que faz exatamente a mesma coisa.

Existem excelentes soluções abertas e consigo produzir tudo que quero com elas, não vejo a menor necessidade (pelo menos até o momento) de recorrer a qualquer software "alternativo" que no máximo irá encher meu computador de vírus.

Obrigado e até a próxima
Fernando Anselmo








terça-feira, 15 de agosto de 2017

Instalação do Scratch 2.0 no Ubuntu 17.04

Desde que a Adobe Air abandonou o Linux começou a dar problemas para atualizar a versão do Scratch 2.0 no Ubuntu, a coisa desandou de vez quando instalei a versão 16.10. Depois de muito sufoco finalmente consegui um passo a passo de como instalar e nunca mais ter problemas pois bastará apenas copiar uma nova versão do arquivo .AIR para a pasta.


 Então vamos a um passo a passo, vou dividí-lo em três partes.

1ª Parte - Instalação das bibliotecas i386

# Instalar as bibliotecas i386 necessárias
$ sudo apt-get install libgtk2.0-0:i386 libstdc++6:i386 libxml2:i386 libxslt1.1:i386 libcanberra-gtk-module:i386 gtk2-engines-murrine:i386 libqt4-qt3support:i386 libgnome-keyring0:i386 libnss-mdns:i386 libnss3:i386

# Disponibilizar o keyring para o Adobe Air
$ sudo ln -s /usr/lib/i386-linux-gnu/libgnome-keyring.so.0 /usr/lib/libgnome-keyring.so.0
$ sudo ln -s /usr/lib/i386-linux-gnu/libgnome-keyring.so.0.2.0 /usr/lib/libgnome-keyring.so.0.2.0

2ª Parte - Instalação do Adobe AIR SDK

# Download do Adobe Air
$ cd ~/Downloads
$ wget http://airdownload.adobe.com/air/lin/download/2.6/AdobeAIRSDK.tbz2
$ sudo mkdir /opt/adobe-air-sdk
$ sudo tar jxf AdobeAIRSDK.tbz2 -C /opt/adobe-air-sdk

# Download Air runtime/SDK do Archlinux
$ wget https://aur.archlinux.org/cgit/aur.git/snapshot/adobe-air.tar.gz
$ sudo tar xvf adobe-air.tar.gz -C /opt/adobe-air-sdk
$ sudo chmod +x /opt/adobe-air-sdk/adobe-air/adobe-air

3ª Parte - Instalação do Scratch na última versão disponível

# Pegar a última versão do Scratch em https://scratch.mit.edu/scratch2download/
$ sudo mkdir /opt/adobe-air-sdk/scratch
$ wget https://scratch.mit.edu/scratchr2/static/sa/Scratch-456.0.4.air
$ sudo cp Scratch-456.0.4.air /opt/adobe-air-sdk/scratch/
Um detalhe, aqui você pode abrir o arquivo "Scratch-456.0.4.air" com o com "Compactador de arquivos e retirar o ícone "icons/AppIcon128.png" e copiá-lo para a mesma pasta que foi colocado o arquivo Scratch-XXX.X.Xair.
$ sudo cp /tmp/icons/AppIcon128.png /opt/adobe-air-sdk/scratch/scratch.png
Por fim agora basta criar um arquivo em "/usr/share/applications" chamado "Scratch2.desktop" e adicionar as seguintes configurações nele:
[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
Exec=/opt/adobe-air-sdk/adobe-air/adobe-air /opt/adobe-air-sdk/scratch/Scratch-456.0.4.air
Icon=/opt/adobe-air-sdk/scratch/scratch.png
Terminal=false
Name=Scratch 2
Comment=Programming system and content development tool
Categories=Application;Education;Development;ComputerScience;
MimeType=application/x-scratch-project
Dar permissão de execução para este arquivo:
$ sudo chmod +x /usr/share/applications/Scratch2.desktop
E pronto, agora basta executar e desfrutar deste ambiente de lógica e programação.


Agora quando surgir uma nova versão basta copiar para a pasta "scratch" e modificar no arquivo desktop e fim dos problemas.

Obrigado e até a próxima
Fernando Anselmo

domingo, 2 de julho de 2017

Finanças - Data Science em Python

O termo Data Science é novo e antigo, novo porque parece que só agora com o advento do Big Data (esse é totalmente novo) começa a ser realmente aplicado e a aparecer profissionais especializados. Antigo pois este termo se refere a cobrir onde e como obter, classificar e organizar automaticamente dados algo que o Analista de Sistemas (esse é bem antigo) já deveria fazer a muito tempo.


Existem várias formas de fazer Data Science, neste Blog, há um bom tempo atrás, mostrei como usar a HP-12C em benefício da extração e manipulação de dados, veja alguns artigos:
Mas com a evolução de vários produtos as linguagens de programação alcançaram níveis incríveis de busca e localização de dados. Por exemplo podemos utilizar APIs de sites financeiros para retornar os dados do preço histórico para o símbolo do ticker que especificamos e para o período de tempo que pedimos. Uma vez de posse dos dados, iremos montar gráficos de comparação para melhor representar e manipular toda essa informação. A minha única dúvida é? Sabe fazer isso?

Resolvi usar os benefícios da linguagem Python para auxiliar todos aqueles que se interessam em descobrir esse novo mundo, e o melhor, de forma totalmente gratuita através do meu canal no YouTube. Assista aqui o vídeo introdutório:



Junte-se a mim e não fique para trás, descubra semanalmente o que é Data Science. Já foi dada a largada e provavelmente as empresas vão começar a procurar profissionais que utilizam e dominam a Ciência dos Dados.

Obrigado e até a próxima
Fernando Anselmo


sábado, 24 de junho de 2017

Sails.js - Eis o motivo que optei por esse Servidor

Chegou no momento da minha vida que resolvi fazer um trabalho de pesquisa (significa que não estava fazendo nada para melhorar sua carreira e resolvi ver o que o mundo podia me oferecer, não confunda isso com trabalho de faculdade) sobre um Servidor (padrão Node.js) que poderia me prover serviços. Depois de algum tempo optei pelo Sails.js.

Cheguei nesse resultado após ficar tendencioso entre quatro servidores (cortei a extensão js para simplificar): Express, Restify, Hapi e Sails (por favor não entenda que os outros são ruins apenas não me adaptei a eles). Agora não tinha mais escolha o máximo que poderia fazer era um teste de campo com cada um e ver qual deles me atendia.

A lista abaixo de prós e contras representam as observações que tive sobre cada um deles, não é uma regra geral ou uma opinião formada pelo mundo.

Express

Prós:
  • Bom ponto de partida
  • Baixa curva de aprendizado
  • Próximo ao padrão Node.js para Web Middleware
  • Totalmente customizável
  • Alvo no navegador e template
Contras:
  • Todos os endpoints devem ser criados manualmente
  • Sem padrão ou prescrição, tipo DIY (Do it yourself - Faça você mesmo)

Restify

Prós:
  • Boa estabilidade
  • DTrace automático e suporte para todo handlers ou plataformas
  • Construído em throding
  • Suporte SPDY*
  • Estrita API com total controle sobre as interações HTTP
  • Visibilidade dentro das características da App
Contras:
  • Todos os endpoints devem ser criados manualmente
  • Sem padrão ou prescrição, tipo DIY
  • Pouca documentação

Hapi

Prós:
  • Suportado pelo Labs Walmart
  • Controle granular
  • Detalhada referencia da API com suporte para geração da documentação
  • Significantemente mais funcional para construção de Web Servers
  • Pseuda prescrição com abordagem para configuração cêntrica
  • Caching, Autenticação e validação de dados
  • Bom conjunto de Plugins, com base em arquitetura escalável 
  • Boa construção de blocos, mas deixa para você seis próprios dispositivos para padrões de projeto
Contras:
  • Esconde módulos específicos
  • Todos os endpoints devem ser criados manualmente

Sails

Prós:
  • MVC - possibilidade de fazer Visão e Serviços em um só lugar
  • Rápido desenvolvimento RESTful API
  • Convenção sobre a configuração (estende o Express)
  • Construído sobre modelos de uso (ORM)
  • Suporte a RPC, Web e Mobile SDK
  • Conectores de dados
  • Totalmente configurado quando necessário.
  • Extensa documentação
  • Suporte comercial e fulltime ao projeto (Loopback)
  • Serviços Mobile (Push, Geo, Storage, Sync, Offline, File, Device, User)
  • Autenticação, validação e autorização
  • Endpoints são criados através de geração automática
Contras:
  • Alta curva de aprendizado
  • Deve obrigatoriamente seguir o modelo prescrito (fiquei na dúvida se colocava isso como um pró ou contra)
Não escolhi o Sails.js por ter poucos contras (inclusive você pode encontrar muito mais coisas contras), foi o servidor que mais rápido me adaptei e o que atendeu as minhas necessidades. Recomendo que ao escolher um Servidor reduza sua lista a um número aceitável e teste cada um deles vendo o que melhor lhe atende. Nunca parta de opiniões formadas.

Deseja aprender mais sobre o Sails.js? Baixe aqui uma apostila gratuita que criei.

Obrigado e até a próxima
Fernando Anselmo

* SPDY (pronunciado speedy) é um protocolo de rede desenvolvido principalmente pela Google para transporte de dados pela internet. Apesar de não ser atualmente um protocolo padrão, o grupo que está desenvolvendo o SPDY está trabalhando em direção a uma padronização cuja última versão é o spdy/4 (Wikipédia).