quinta-feira, 14 de junho de 2018

O fim da NTC - o fiasco de uma startup de sucesso iniciada com financiamento coletivo

#papoNerd

Xiii... Essa madrugada (14/06/2018) tive uma infeliz surpresa ao ficar sabendo do encerramento, em março passado, da NTC (Next Thing Co.), a empresa da "single board computer" C.H.I.P., aquela plaquinha de 9 doletas que foi um dos maiores sucessos (se não foi o maior sucesso) em financiamentos coletivos, ao pedir US$50.000 e receber US$2.071.927.

Imagem da campanha da Single Board Computer C.H.I.P.

Além de não entregar os pedidos feitos na loja on-line ao longo do início de 2018, a empresa também deixou pra trás outro financiamento coletivo de sucesso, que havia captado US$265.331 (sobre US$100.000 inicialmente previstos) que, ao que tudo indica, não está sendo devolvido para os apoiadores pelo site Kickstarter.

Ai me vem a mente diversas questões:

1. Uma startup, mesmo com produto bom, mercado ativo, campanha publicitária de sucesso, não se garante e vai pra estatística das empresas que fecham em menos de 5 anos;

2. A última campanha (produto Voder), que virou calote, arrasta para o lodo a confiabilidade dos sites de financiamento coletivo;

3. O capitalismo perde feio, uma vez que uma brilhante startup vai pro buraco e a concorrente (e detentora absoluta do mercado - Raspberry Pi Foundation) é subsidiada (atividade social - ista) pelo governo inglês (um dos maiores defensores do estado mínimo / liberalismo econômico).

E o que isso tem a ver comigo? Simples: Passei os últimos oito anos defendendo e divulgando makers, startups, empreendedorismo etc. em palestras em faculdades e universidades e um dos maiores expoentes disso tudo virou um gigantesco engodo.

Conclusão: Mais vale a minha piada sobre aquele programa de TV (Pequenas Empresas, Grandes Falências) do que todas as disciplinas, palestras e cursos de empreendedorismo e administração.

sábado, 28 de abril de 2018

O útil, o belo, o inútil e o improdutivo.

#papoNerd #velhoRabugento

Computadores, eletromecânicos e eletrônicos, são ferramentas úteis para cálculos massivos e processamento repetitivo de dados desde sua criação, no início da década de 1940, mas essa utilidade sempre esbarrou na complexidade de seu uso, e ai entra em questão as GUIs (Graphical User Interfaces - interfaces gráficas com o usuário).

As GUIs foram inicialmente pesquisadas por Douglas Engelbart a partir de 1959, dando origem ao projeto NLS, no SRI-ARC, culminando com uma apresentação em dezembro de 1968 usando mouse, ponteiro, cursor, edição de texto em ambiente gráfico e "livechat" sobreposto, denominada atualmente como "The Mother of all Demos".

 
Douglas Engelbart na "The Mother of All Demos", de 1968 .

O mais conhecido spin-off do NLS são as pesquisas do Xerox-PARC, que espalham os conceitos de GUI junto com os computadores Alto ao longo da década de 1970.

Computador Xerox Alto, de 1973.

Na sequência, veio a Apple com o primeiro microcomputador comercial de uso pessoal com GUI, o Lisa, de 1983, que foi criado baseando suas ideias nos desenvolvimentos feitos pela Xerox, que cedeu seu know-how para a Apple.

Computador Apple Lisa, de 1983.

O útil

SRI-ARC, Xerox-PARC, Apple e tantas outras empresas e empreitadas que surgiram a partir do início da década de 1980, buscavam sempre uma coisa: A forma mais produtiva com que o usuário pudesse interagir com o computador, de preferência, com a mais curta curva de aprendizado possível, a mais intuitiva. Revistas especializadas chegavam ao cúmulo de contar quantos cliques eram necessários para realizar operações mais típicas, no objetivo de analisar o quanto uma GUI ou seus aplicativos eram mais produtivos e úteis nas atividades cotidianas de trabalho.

Surgem então os manuais HIG (Human Interface Guidelines - diretrizes para interação humana), que são manuais de como os programas devem se apresentar e interagir com o usuário dentro de determinada GUI, para que sejam, dentro do possível, os mais homogêneos entre si, facilitando o entendimento do usuário que, uma vez que tenha aprendido a usar um aplicativo, sinta-se confortável no uso dos demais e tenha a curva de aprendizado ainda mais reduzida.

Capa do HIG para o sistema operacional dos computadores Apple Macintosh.

Praticamente todos as GUIs tinham o HIG entre seus manuais de desenvolvimento, com destaque especial para o sistema operacional dos computadores Macintosh.

Computador Apple Macintosh, de 1984.

O belo

Desde suas primeiras versões, o "System" dos computadores Macintosh da Apple apresentavam grande preocupação com a beleza e detalhamento das imagens que compunham sua GUI, mesmo no extremamente restrito monitor dos primeiros modelos (totalmente monocromático - P&B, sem tons de cinza -, com apenas 348 linhas de 512 pontos - isso mesmo, resolução de apenas 512x348).

Captura de tela do sistema operacional do Apple Macintosh, de 1985.

Mas é a partir do início da década de 1990 que, com o aumento do poder de processamento dos microcomputadores pessoais, surgem GUIs com elementos mais coloridos, com detalhamento cada vez maiores: O MS-Windows 3, o Apple System 7, o IBM Workplace Shell (GUI do IBM OS/2), o Unix CDE, o BeOS, etc.

Captura de tela do sistema operacional BeOS, de 2000.

A beleza e as funcionalidades buscam inerentemente a produtividade e o conforto, mas também a satisfação visual do usuário. É interessante observar que, nessa época (meados da década de 1990 a início dos anos 2000), era comum que alguns usuários "desligassem" certos efeitos visuais das GUIs que utilizavam, visando liberar mais poder de processamento para o trabalho a ser efetivamente realizado com o computador, demonstrando que a usabilidade e a produtividade já haviam sido atingidas e que algumas características das GUIs de então já eram supérfluas para o trabalho cotidiano.

O inútil

A partir dos primeiros anos do séc. XXI surgem as GUIs com efeitos complexos, inclusive usando o poder oferecido pelas GPUs, processadores das placas de vídeo que oferecem aceleração para cálculos gráficos em 3D (que, para funcionar, requerem ainda mais processamento da CPU do computador). O Mac OS X da Apple é o pioneiro, seguido pela Microsoft com as versões Xp e Vista do Windows e a criação do projeto open source Compiz para Linux.

Captura de tela do compositor de tela Compiz para Linux, de 2007.

Apesar de, nos primeiros anos, esses efeitos consumirem mais poder de processamento do que os computadores "consumer" pudessem oferecer (levando muitos usuários profissionais a continuar "desligando" efeitos), isso logo foi suplantado pelo poder crescente dos microprocessadores e das GPUs.

O problema é que toda a vasta beleza dos efeitos 3D em altíssima resolução, renderizadas em tempo real por GPUs, pouco ou nada contribuíram para a produtividade. Bem pelo contrário, na maioria dos casos, distrai e atrapalha a execução do trabalho objetivado, reduzindo a produtividade do usuário. Ainda pior, algumas características dos elementos que compõem a imagem da GUI vão na contra mão de mais de 3 décadas de estudo do assunto e que já eram muito bem embasados em sua conceituação e definição.

Isso tudo ocorreu em paralelo a outra novidade de então, a web, que se firma a partir do final da década de 1990, e começa a ditar a tendência de como as GUIs (não) devem ser.

O improdutivo

A web comercial, disponível para usuários pessoais, e os microcomputadores pessoais sendo vendidos como eletrodomésticos, geraram uma massa de consumidores que estão mais acostumados com o apelo publicitário do que efetivamente pela vantagem prática ou produtiva do equipamento. Assim surgiu a busca do novo, do diferente, em detrimento do prático e do produtivo.

Cada novo software, tecnologia web ou moda de design denota uma nova tendência nas GUIs que tem pouco ou nenhum compromisso com o produtivo. No máximo com o comercial, ligado diretamente ao marketing e venda, mas não a produtividade do usuário, além de consumir o oferecido.

Essa tendência da GUI da web acaba por afetar as GUIs dos sistemas operacionais e seus aplicativos, que oferecem novidades gráficas a cada versão lançada (que despreza a produtividade), uma vez que, a cada nova versão, exige toda uma nova curva de aprendizado do usuário apenas para continuar executando as mesmas tarefas. Essa tendência se justifica no fato de que, no séc. XXI, o computador perdeu o foco em ser uma ferramenta de produção de conteúdo e passou a ser um canal de comercialização de produtos, sendo obrigado a se apresentar como algo sedutor para um público que não o necessita como ferramenta de trabalho efetivamente.

quinta-feira, 29 de março de 2018

Raspberry Pi, evolução do hardware: Mais erros do que acertos?

Com a entrada no mercado da Raspberry Pi 3 modelo B+, fica evidente que a evolução do hardware da principal representante das placas SBC-SoC-GPIO sempre causa alguma frustração. É certo que suas limitações de hardware são balizadas principalmente pelo preço final do produto, limitado em US$35, mas se comparado à placas concorrentes, parece sempre haver restrições em demasia. Some-se a isso alguns aparentes erros de planejamento e projeto, fica a falsa impressão de que há mais erros do que acertos durante esses mais de 7 anos de existência dessa família de placas.

Faço a seguir um levantamento das características da "linha principal" da Raspberry Pi (a família de placas tem algumas variantes de formato físico, focado em aplicações mais específicas, geralmente baseando suas características nessa "linha principal"):

Quando o primeiro modelo (Pi 1, model A, rev. 1) entrou no mercado em 2012, a baixa quantidade de memória (apenas 256MiB), UCP lenta (700MHz single-core), ausência dos componentes da porta ethernet, soquete de cartão SD no formato grande (com metade do cartão ficando exposto), carregamento do sistema operacional apenas pelo cartão SD (ignorando dispositivos na porta USB), apenas uma porta USB, baixíssima capacidade de corrente, tanto para os dispositivos USB quanto para circuitos conectados aos pinos de GPIO e alto consumo de energia (mesmo em estado de espera), tornavam seu uso limitado (pouco poder de processamento), caro (é necessário adquirir fonte de alimentação, cartão SD, hub USB com alimentação externa, adaptador USB para ethernet ou WiFi, teclado e mouse) e desajeitado. A única vantagem evidente era o baixo custo, de apenas US$25.

O segundo modelo (Pi 1, model B, rev. 1), apesar de vir com os componentes da porta ethernet (ao custo de 40% a mais no preço, subindo de US$25 para US$35), trouxe novo pacote de frustrações: o formato físico elimina os furos de fixação e alguns pinos de GPIO e as demais limitações (pouca velocidade, pouca memória, cartão SD grande, baixa capacidade corrente, alto consumo etc) foram mantidas.

O terceiro modelo (Pi 1, model B, rev. 2), resolveu os problemas acrescentados pelo modelo anterior, trazendo de volta os furos de fixação e os pinos extras de GPIO, além de aumentar a memória para 512MiB, até então, uma das características mais limitantes do projeto.

O quarto modelo (Pi 1, model B+) apresentou um novo formato físico, com furos de fixação melhor posicionados e conector de GPIO expandido e com melhor disposição, soquete para cartão microSD e 4 portas USB com capacidade de corrente aumentada, mas manteve a UCP de baixa velocidade. É claramente uma versão transitória para as gerações seguintes de placas, que efetivamente trouxeram grandes melhorias.

O quinto modelo (Pi 2, model B+), de 2015, foi a grande evolução nos quesitos mais ansiados pelos usuários: Processador muito mais rápido (quad-core de 900MHz) e 1GiB de RAM.

O sexto modelo (Pi 3, model B), de 2016, marcou a transição para o processador de 64-bit, com aumento significativo do clock (para 1,2GHz), WiFi e Bluetooth embutidos e a possibilidade de carregamento do sistema operacional através de porta USB, excelentes novidades, mas duas características foram frustrantes: Não haver outras conexões para dispositivos de armazenamento (USB 3.0 e/ou SATA) e a memória continuar com apenas 1GiB (programas escritos em arquitetura 64-bit, apesar de serem mais rápidos, consomem mais memória para fazer o mesmo que em 32-bit).

O sétimo modelo (Pi 3, model B+) traz algumas novidades como maior clock (1,4GHz), WiFi mais rápida, Bluetooth de baixo consumo, Gigabit ethernet, PoE (pode ser energizada pelo cabo de rede) e ser certificada pelo FCC para baixas emissões de ruídos eletromagnéticos, mas o fato de manter as demais limitações (1GiB de RAM, ethernet via USB 2.0 e ausência de conexões físicas mais rápidas) evidenciam que a "3B+" é muito mais uma versão intermediária do que uma evolução real, que pouco resolve qualquer expectativa anterior dos usuários (mais memória, ethernet "sem gargalo" e conexões rápidas - USB 3.0 e/ou SATA).

Enfim, apesar da lenta evolução, em especial, nos quesitos que mais saltam aos olhos dos usuários menos técnicos, há sempre melhorias entre os modelos (em alguns casos, em grande quantidade). O mais impressionante é que as principais propostas da placa são mantidas, especificamente o custo baixo (limitado a US$35,00) e o tamanho reduzido, apesar dos avanços contínuos em desempenho e funcionalidades.

A seguir, apresento uma tabela com os modelos e suas vantagens e desvantagens em relação aos modelos anteriores:

Modelo Características
Raspberry Pi 1 modelo A
Fonte: Wikipedia
Fonte: RasPi.TV
Fonte: raspberrypi.org
Ano: 2012

Vantagens em relação aos concorrentes:
- Preço: US$25.

Desvantagens em relação aos concorrentes:
- Processador lento (single-core de 700MHz);
- Pouca memória (256MiB);
- Sem conexão de rede (ethernet ou WiFi);
- Soquete para cartão SD "grande" e em posição ruim;
- Boot apenas pelo cartão SD;
- Apenas uma porta USB;
- Baixa capacidade de corrente para a porta USB;
- Consumo de energia alto.
Raspberry Pi 1 modelo B rev. 1
Fonte: raspberrypi.org
Ano: 2012

Vantagens em relação ao modelo anterior:
- Duas portas USB;
- Ethernet 10Mbps on-board.

Desvantagens em relação ao modelo anterior:
- Aumento do preço para US$35;
- Ausência de furos de fixação;
- Menos pinos de GPIO.

Problemas que continuam:
- Processador lento (single-core de 700MHz);
- Pouca memória (256MiB);
- Soquete para cartão SD "grande" e em posição ruim;
- Boot apenas pelo cartão SD;
- Baixa capacidade de corrente para as portas USB;
- Consumo de energia alto.
Raspberry Pi 1 modelo B rev. 2
Fonte: raspberrypi.org
Ano: 2012

Vantagens em relação ao modelo anterior:

- Ethernet 100Mbps on-board;
- Memória de 512MiB;
- Volta dos furos de fixação;
- Volta dos pinos de GPIO removidos.

Problemas que continuam:
- Processador lento (single-core de 700MHz);
- Soquete para cartão SD "grande" e em posição ruim;
- Boot apenas pelo cartão SD;
- Baixa capacidade de corrente para as portas USB;
- Consumo de energia alto.
Raspberry Pi 1 modelo B+
Fonte: raspberrypi.org
Fonte: raspberrypi.org
Fonte: The Register
Ano: 2014

Vantagens em relação ao modelo anterior:
- Novo layout;
- Quatro portas USB;
- Maior capacidade de corrente para as portas USB;
- Soquete para cartão microSD;
- Melhor disposição dos furos de fixação;
- Barra de pinos GPIO melhorada e expandida;
- Unificação do conector de áudio e vídeo composto.

Problemas que continuam:
- Processador lento (single-core de 700MHz);
- Boot apenas pelo cartão SD;
- Consumo de energia alto.
Raspberry Pi 2 modelo B
Fonte: raspberrypi.org
Ano: 2015

Vantagens em relação ao modelo anterior:
- Processador mais rápido (quad-core de 900MHz);
- 1GiB de memória;
- Maior capacidade de corrente para as portas USB.

Problemas que continuam:
- Boot apenas pelo cartão SD;
- Consumo de energia alto.
Raspberry Pi 3 modelo B
Fonte: Wikipedia
Ano: 2016

Vantagens em relação ao modelo anterior:
- Processador mais rápido (quad-core 64-bit de 1,2GHz);
- Wireless on-board (WiFi e Bluetooth);
- Permite boot pela USB.

Desvantagens em relação ao modelo anterior:
- 1GiB de RAM (pouco para arquitetura de 64-bit).

Problemas que continuam:
- Consumo de energia alto.
Raspberry Pi 3 modelo B+
Fonte: Wikipedia
Ano: 2018

Vantagens em relação ao modelo anterior:
- Processador mais rápido (quad-core 64-bit de 1,2GHz);
- WiFi 802.11ac;
- Gigabit ethernet;
- PoE (Power over Ethernet);
- Bluetooth low energy BLE 4.0;
- Certificado pelo FCC para baixa emissão;
- Permite boot pela rede.

Desvantagens em relação ao modelo anterior:
- Conexão USB 2.0 entre o SoC e chip ethernet;

Problemas que continuam:
- 1GiB de RAM (pouco para arquitetura de 64-bit);
- Consumo de energia alto.

domingo, 18 de fevereiro de 2018

Cadê a nova geração de nerds?

"Hashtagueando" como nas redes sociais pós-web 2.0:
#papoNerd #velhoRabugento

Publiquei uma opinião (textaum) no Facebook concordando com um artigo da tnw, baseado num relatório da HackerHank e, pela extensão do meu texto, tem que ser uma publicação aqui no blog (pra não virar mais uma opinião perdida nessas redes sociais voláteis, onde você nunca re-encontra o que foi lido ou escrito (conteúdo publicado em rede social só serve para a própria rede social... Mas isso é assunto para uma publicação própria). Segue um copiar+colar do meu texto no fb:

"Basta olhar pra média etária frequentadora dos hackerspaces / makerspaces. São quase exclusivamente clubes adultos (quando não idosos). A "minha turma", hj na faixa dos 45, começou a programar com idade entre 10 e 15 anos. Hj, quando aparece algum garoto programando, é destaque a ponto de virar palestrante em grandes eventos, vide os meninos Pedro e Matheus (não vou linka-los. Quem está "no meio" os conhece e sabem de quem estou falando).

A tentativa de reviver a programação entre crianças e adolescentes feita pela fundação Raspberry Pi é outro fracasso, vide a média etária dos autores de artigos nas revistas disponibilizadas pela própria fundação e pelos inúmeros sites DIY pela web (afirmo categoricamente que o Arduino, apesar de não ter esse objetivo, é muito mais efetivo nesse sentido do que os SBC-SoC PCs).

A Campus Party é outro termômetro: A garotada estava lá exclusivamente para jogar (mega lan house) e mostrar PCs tunados. Os espaços hackers/makers/DIY e de divulgação de conhecimento tecnológico (palestras, oficinas etc) se compunham só de adultos. Quem "virou" alguma madrugada acordado viu: Durante as madrugadas, onde os "nerds" aficcionados costumam mergulhar no desenvolvimento de algo, com o silêncio e concentração reinante, era de um vazio assombroso, já que praticamente todo mundo se retirava para o camp ou ia embora. Nem ciclo de palestras madrugada adentro houve. A própria direção do evento preferiu evitar esse o público nerd com a eliminação das áreas de conforto (praças de sofás) para os não-camp, forçando os nerds a irem embora por não terem um local pra cochilar durante a madrugada."

domingo, 16 de abril de 2017

Servidor? Que servidor?

Um colega da faculdade me perguntou se eu tinha algum material sobre configuração de servidores. Eu retruquei perguntando sobre de qual tipo de servidor ele queria informações. A resposta singela foi “Servidor, uai… Linux… Windows… Coisa desse tipo”. Foi então que me dei conta de que os conceitos de servidor não costumam ser apresentados de forma objetiva. Então vamos lá:

Servidor? Que servidor?

Numa definição simples, servidor é um computador rodando um ou mais softwares que disponibiliza(m) recurso(s) ou serviço(s) através de uma rede. Tendo isso em mente, pode-se perguntar: Qual serviço? Com qual protocolo? Com qual software? Com qual sistema operacional? Em que hardware? Like Jack, vamos por partes:

É possível criar servidores com praticamente qualquer computador, de um antigo micro 8-bit da década de 1970 até um poderoso cluster com múltiplas CPUs e hardware hot-swap, passando por smartphones, single board computers, notebooks, computadores desktop, até plataformas microcontroladas como Arduino e ESP8266. Tudo depende do que se pretende oferecer, a que custo e com quais níveis de requisitos não funcionais (desempenho, confiabilidade, disponibilidade, segurança etc.).

Claro, alguns serviços simplesmente exigem algum nível mínimo de requisito que pode não ser atendido por um hardware mais simples ou antigo como, por exemplo, não ser possível fazer um servidor web com JavaEE rodando num microcomputador da década de 1970.

Em outros casos, há serviços que podem ser feitos por hardware simples e dedicado (NAS, servidores de impressão, roteadores, entre outros).

É interessante observar que, dependendo do caso, nem é necessário que um servidor seja um computador dedicado. No caso de redes ponto a ponto, o computador de qualquer um conectado a rede pode prover serviços como servidor de arquivos ou de impressão.

Mas quando o serviço exige níveis mais qualificados de requisitos não funcionais, o hardware começa a ser pensado como um equipamento ou um conjunto dedicado a esse tipo de tarefa. No ambiente profissional, com QoS e SLA exigentes, o hardware para servidores costuma ter características muito específicas como ser hot swap (poder ter partes substituídas sem precisar desligar o equipamento), ser redundante (ter múltiplos dispositivos iguais, que entram em funcionamento quando há falha no dispositivo em uso), ter sistemas de fornecimento de energia ininterrupta (no-breaks, grupos geradores), ter ambiente e instalações controladas (temperatura, fornecimento de energia, acesso físico, equipamento contra incêndio etc.).

Sistema Operacional

O mercado profissional atual é dominado por Windows Server e Linux, mas assim como no caso de hardware, pode-se montar servidores diversos a partir de praticamente qualquer sistema operacional, como CP/M, ProDOS, MS-DOS, FreeDOS, IBM-OS/2, BSDs, OS-X, Unixes, Android, iOS, entre muitos outros.

Uma vez determinado o sistema operacional, diversos detalhes (configurações de protocolo, aplicativos de gerenciamento, configurações de desempenho) passam a ser características muito específicas e seu domínio determina a qualificação do profissional que o administra. Vale notar que é comum que o software servidor (o aplicativo que disponibiliza determinado serviço ou recurso) seja específico para o sistema operacional, apesar de existirem muitos aplicativos multiplataforma.

Protocolo

Apesar de IP, TCP e UDP serem quase hegemônicos, configurá-los sobre a camada física e sob os serviços e aplicações, requer conhecimento específico e aprofundado.

Os serviços também possuem protocolos próprios, em camadas acima do IP/TCP/UDP, tais como compartilhamento de arquivos (SMB, FTP, FTPS, TFTP, NFS), e-mail (pop3, imap, smtp), web (http, https), terminal remoto (SSH, telnet) etc. A maioria exige configurações que se adequam a necessidades diversas.

Serviço

Existe uma quantidade razoavelmente grande de possíveis serviços a serem oferecidos por servidores: Servidor de arquivos, de impressão, de banco de dados, de web estática, de web dinâmica, de e-mail, de aplicação, de jogos, de mensagem instantânea, de comunicação (gateway, roteador, firewall), de processamento, de controle de versionamento, entre outros.

No ambiente profissional, normalmente usa-se uma CPU ou conjunto de CPUs (cluster) dedicados para cada serviço, com o intuito de que a disponibilidade e o desempenho se tornem maiores.

E, o que aparentemente pode parecer um único serviço, na verdade pode ser composto de diversos serviços interdependentes. Um exemplo é o servidor de web dinâmica, tipicamente composto por servidor web propriamente dito, servidor de aplicações, servidor de banco de dados e servidor de arquivos.

Como escolher

Sendo que existe uma quantidade muito grande de serviços e tecnologias para servidores, é necessário definir os objetivos (qual serviço) e os meios (quais tecnologias – protocolo, aplicação, sistema operacional e hardware), para que se possa saber com o que será necessário lidar.

Para determinar serviços e tecnologias, basta responder as perguntas propostas no início deste artigo. A cada pergunta respondida, surge uma nova pesquisa para determinar quais as tecnologias disponíveis e que melhor se adequam as necessidades.

Em alguns casos, nem há pergunta. Você, com o conhecimento que já possui, o cliente, o chefe ou mesmo a tecnologia já adotada na empresa determina qual o conjunto a ser implantado ou utilizado.

Alguns exemplos (considerando apenas software) para prover web dinâmica com:
  • Windows Server 2016 + ASP.NET + MS-SQL Server;
  • Windows + Apache + JavaEE com JBoss (EJB + Hibernate) + Oracle RDBMS;
  • Linux + Apache + Node.js (JavaScript) + PostgreSQL.

Na prática

Um conjunto servidor para web dinâmica muito comum para a disponibilização de sites é o pacote conhecido como LAMP (Linux + Apache + MySQL + PHP). O Linux como sistema operacional com o protocolo TCP/IP. O aplicativo Apache como servidor web (usando os protocolos HTTP e HTTPS), o MySQL como servidor de banco de dados e o PHP como servidor de aplicações.

É possível instalar tudo numa máquina virtual em um computador de uso pessoal. Ou simplesmente (mas pouco aconselhável) instalar tudo no sistema operacional do próprio computador pessoal.

Dependendo das exigências de desempenho, instala-se o pacote ou mesmo cada software num computador separado, Apache em um, PHP em outro, o MySQL em outro e até a base de dados (o arquivo controlado pelo MySQL) em um  computador próprio atuando como servidor de arquivos.

Conclusão

Enfim, um servidor não é apenas um computador rodando determinado sistema operacional, mas sim, um equipamento provendo algum serviço ou recurso através de rede e, para se estudar “servidores”, primeiro precisa-se saber “servidor de quê”. Uma vez determinados serviços e tecnologias, resta se aprofundar em cada um deles… E ai o assunto se torna longo.

domingo, 19 de março de 2017

Painel de LEDs e chaves para o projeto Sofia.

Um dos objetivos do projeto Sofia (em búlgaro, София) é evitar o uso de tecnologias atuais, especialmente emuladores e cross-compilers. A questão é: como colocar alguma coisa na memória de um computador sem ele ter software que permita editar sua memória?

Uma solução é construir um painel de LEDs e chaves controlado apenas com circuitos integrados discretos (nada de processadores, microcontroladores, PLDs ou FPGAs), que acessem a memória do computador, usando DMA de forma concorrente com o processador.

Vou documentar essa etapa do projeto Sofia no site hackaday.io como um projeto específico, uma vez que ele deve servir aos demais computadores homebrew que pretendo montar.

terça-feira, 9 de fevereiro de 2016

Arduino - Introdução: O que é para que serve.

Esse tipo de informação já foi publicado a exaustão em tudo quanto é site pela web, mas vou publicar a minha interpretação do assunto aqui, baseada nas aulas que tenho dado...

O Arduino é uma plataforma microcontrolada para computação física, provavelmente a que obteve o melhor êxito comercial no mundo.
Arduino Uno R3 da empresa Arduino.
Foi criada em 2005 no Instituto de Projetos Interativos de Ivrea, na Itália, visando ter baixo custo e uso simplificado, para ser facilmente utilizado por pessoas leigas nas áreas de programação e eletrônica.

Fisicamente o Arduino é uma placa de circuito eletrônico com um microcontrolador, alguns pouquíssimos componentes simples e, na maioria dos modelos mais comuns, um segundo circuito integrado para fazer a comunicação via porta USB.
Pouco maior que um cartão de crédito.
O microcontrolador, o componente central de plataformas microcontroladas, incluindo o Arduino, é um circuito integrado (um tipo de componente eletrônico) que tem diversas partes de um computador normal num único componente: Processador; Memória para armazenar programa e variáveis; Periféricos (controladores de comunicação, temporizadores, contadores etc); E, principalmente, conversores analógicos e pinos de entrada e saída, onde são conectados os sensores e atuadores.
Microcontrolador - múltiplas funções em um único componente.
Outra característica do microcontrolador é que ele é bem menos poderoso do que um computador típico e normalmente é utilizado no controle de pequenos processos específicos como, por exemplo, controlar a iluminação do cômodo de uma casa, o "vidro elétrico" da janela de um carro, um aparelho de ar condicionado, uma máquina de lavar roupas etc, enquanto um computador típico é usado em diversas tarefas, geralmente simultâneas, como navegar na internet, editar um texto ou uma imagem, tocar música ou um vídeo etc.

A aplicação típica do Arduino é a computação física, que consiste em obter informações do mundo físico através de chaves e sensores (se um acesso está aberto ou fechado, qual a temperatura, a umidade ou luminosidade de um ambiente, o fluxo de água através de um cano etc) e controlar essas características físicas através de atuadores (a trava de uma porta, um aquecedor, lâmpadas, um motor etc).
Computação física - sensores e atuadores.
Apesar dessa orientação a computação física, o Arduino também é utilizado em atividades que vão de um computador comum, como tocar MP3, a funções de vídeo game, rodando jogos.