terça-feira, 23 de dezembro de 2014

Futurologia

Como em todos os finais de ano, várias pessoas fazem as suas previssões para o ano seguinte. E eu também vou fazer as minhas baseadas em matérias e artigos de revistas, jornais e blogs da internet. Só lembrando algumas que previsões que fiz há alguns anos:

Em 2011 smartphones e tablets eram coisas raras, e o acesso móvel era sofrível. Não se viam pessoas andando pela rua postando coisas no Facebook. O máximo que o pessoal tinha era um celular com alguns mp3, ou um iPod. A tendência mostrava que a partir de 2012 as coisas iriam mudar, e que a computação móvel via smartphone e tablet seria comum em um ou dois anos. Documentos na nuvem, como no Dropbox, seriam mais usados, mas a rede 3g ainda não permite a adição on-line. Pagamentos via smartphone ainda não é muito utilizado, como imaginei que seria, mas acessar banco via dispositivo móvel é bem comum.

Para 2013 eu previa o aumento da virtualização em nuvem, como muitos servidores sendo migrados para a Amazon e Google. Hoje isso é comum, mas achei que em 2014 isso seria bem mais utilizado. A rede 4g chegou, mas só em alguns lugares, e a velocidade não é assim tão alta como previsto. Achei que a copa do mundo traria mais benefícios tecnológicos para as sedes da copa, mas isso não aconteceu, pelo menos não na medida que eu imaginei. Pelo menos a fibra da Tim chegou em casa com 35Mb! O uso dos desktop diminuiu enquanto o de dispositivos móveis, como tablet, aumentou. A utilização do IPv6 não mudou muito, embora alguns sites já respondem a ele. E o FirefoxOS ficou só na previsão. Já na área espacial, empresas privadas começaram e investir nessa área, mas os pacotes turísticos ainda são um sonho.

Mas aqui vão as minhas previsões para os próximos anos.

Para 2015
  • Todos os municípios brasileiros serão cobertos pela banda larga.
  • O uso de smartphone como meio de pagamento deverá ser mais utilizado.
  • As empresas cada vez mais utilizarão a infraestrutura na nuvem.
  • A Artemis deferá lançar e rede sem fio que promete ser mil vezes mais veloz do que as atuais.
  • O uso da energia aeólica será mais utilizada.
  • Algumas casas produzirão 100% da energia que consomem.
  • A TV digital estará implantada em todo o estado de São Paulo.
  • Começarão os testes com carros que farão baliza automaticamente.
  • A administração da internet começará a passar para a  ONU. 


Em 1 ano
  • O uso da nuvem só crescerá.
  • 1/3 dos usuários terão dados na nuvem.
  • 1/2 das empresas colocarão seus dados na núvem.
  • A banda larga popular promete ser expandida para todo o país.
  • 1/2 dos usuários de computador não vão mais depender do desktop.
  • A maioria das TVs serão smart.
  • O IPv6 deverá estar implantado em toda a internet.
  • Carros sairão de fábrica com GPS.
  • Sondas deverão ser enviadas para Marte e Júpiter.
  • São Paulo terá 400 km de ciclovias, enclusive uma ligando o Ibirapuera ao Morumbi.


Em 2 anos
  • Telas de touchscreen deverão ser substituídas devido a falta do produto Índio.
  • Celulares comuns serão raridades.
  • O sistemas Windows Vista e Redhat 5 deixarão de ser suportados.
  • A realidade aumentada será usada em larga escala.
  • Haverá viajens espaciais turísticas, inclusive em torno da Lua.
  • A China será o maior mercado do mundo, passando os EUA. 
  • São Paulo passará a usar também as águas do rio São Lourenço em seu abastecimento.


Em 5 anos
  • O Governo da China migrará seus servidores e desktops para Linux.
  • O Linux será o principal sistema operacional do mundo.
  • 1/2 dos software adquiridos pelas empresas será livre.
  • A rede 5g entrará em operação
  • 95% das cidades brasileiras terão fibra ótica.
  • Saturação do IPv4 na África. 
  • Fim do suporte ao Windows 7 e do Red Hat 6. 
  • Fim das transmisões de TV analógica no Brasil. 
  • Comercialização de TVs de 8 K. 
  • 30% da energia do país não virá de hidroelétricas
  • A energia solar será usada em larga escala. 
  • O trem bala brasileiro deverá entrar em operações. 
  • Começarão a aparecer os carros elétricos autônomos. 
  • Os Vants serão usados pela polícia. 
  • Novas missões para a Lua.
  • Começará a colonização de Marte com a Mars One enviando a primeiro unidade de moradia. 

Em 10 anos
  • Começam a surgir as redes exclusivamente IPv6. 
  • Maior uso de realidade aumentada inclusive com óculos e lentes projetoras. 
  • Aparecerão os robôs para uso doméstico. 
  • 10% do PIB brasileiro deverá ser investido em educação. 
  • Começam as missões tripuladas a Marte. 
  • 2/3 da população do mundo sofrerá com a falta de água potável.
  • O petróleo começará a faltar.


Em 20 anos
  • As casas terão links de internet com 500 Mb, computadores com 20 Tb e processadores de 1 Thz. 
  • Dinheiro em papel será raro. 
  • Muitos voos comerciais não serão tripulados. 
  • Haverá carros comerciais movidos a água, embora a maioria será movido a eletricidade. 
  • Janelas poderão ser substituídas por monitores. 
  • Dormiremos em conchas acústicas. 
  • Faremos exames simples ao usarmos o banheiro. 
  • Sensores monitorarão nossa saúde, com os dados sendo transmitidos via rede sem fio. 
  • Operações a distância serão comuns. 
  • O etanol será mais usado no Brasil do que a gasolina. 
  • As residências reciclarão o lixo que produzirem. 
  • O mundo deverá chegar a 8 bilhões de habitantes e a a Índia será o país mais populoso
  • A Terra terá um défict de 40% de água potável, 50% de alimentos e 45% de energia.


Em 50 anos
  • Bug do timestamp.
  • Será possível fazer upload e download de/para o cérebro. 
  • Entra a operação a rede 6g. 
  • As residências terão links de internet de 5 Gb, micros com 500 Tb e processadores com 1 Phz. 
  • A população do mundo deverá se estabilizar em torno de 10 bilhões. 
  • 50% da população do mundo consumirá 100% dos recursos naturais. 
  • A temperatura da Terra será 5 graus maior do que em 2010. 
  • Haverá um conselho mundial das democracias na ONU. 
  • Será possível fazer escolhas genéticas. 
  • Haverá prédios com mais de 1 Km de altura. 
  • O Brasil será a quarta economia do mundo, Índia a terceira, EUA segunda e a China primeira. 
  • Haverá uma base em Marte. 
  • A clonagem humana será possível tecnicamente.


Em 100 anos
  • Equipamentos serão controlados pela mente. 
  • Carros terão piloto automático. 
  • A Terra será 6,4 graus mais quente do que em 2000. 
  • O nível do mar deverá subir até 82 cm se comparado com 2005.


quarta-feira, 17 de dezembro de 2014

Trabalhando com File Glob e Expressões Regulares

Muito usado em pesquisa de arquivos, File Glob é uma forma de fazer referência a vários arquivos usando uma única expressão. As mais conhecidas, também usadas na linha de comandos do Windows, são o asterisco "*" e o sinal de interrogação "?".

O "?" substitui um único caracter no nome do arquivo. Por exemplo, vamos supor que você tem uma pasta com os seguintes arquivos:

$ ls
carta1.odt  carta4.odt      carta_ext2.odt  ci1.odt  memorando1.odt
carta2.odt  carta5.odt      carta_ext3.odt  ci2.odt  memorando2.odt
carta3.odt  carta_ext1.odt  carta.odt        ci3.odt  memorando3.odt

Para listar os arquivos "carta1.odt", "carta2.odt", etc, mas não "carta.odt", digite.

$ ls carta?.odt
carta1.odt  carta2.odt  carta3.odt  carta4.odt  carta5.odt

O "*" substitui uma sequência qualquer de caracteres, inclusive nenhum. Para listar todos os arquivos que possuem "memorando" no nome, digite:

$ ls memorando*
memorando1.odt  memorando2.odt  memorando3.odt

Outro exemplo, vamos listar todos os arquivos que começam com "carta".

$ ls carta*
carta1.odt  carta3.odt  carta5.odt        carta_ext2.odt  carta.odt
carta2.odt  carta4.odt  carta_ext1.odt  carta_ext3.odt

Reparem que, ao contrário do "?", o "*" também listou o arquivo carta.odt.

Mas há ainda outras construções que não existem no ambiente Windows. Para listar todas as cartas com número 1 até 3 digite:

$ ls carta[123]*
carta1.odt  carta2.odt  carta3.odt

Essa construção considera todos os caracteres dentro de "[]". Para listar, por exemplo, "menino.txt" e "menina.txt" poderíamos usar "menin[ao].txt".

Outra forma é a seguinte:

$ ls carta[1-3]*
carta1.odt  carta2.odt  carta3.odt

O "-" diz "do primeiro caracter até o último". Se quiséssemos listar todos os arquivos que comaçam com números poderíamos usar "[0-9]*".

Podemos usar a negação "^". Para listar todos os arquivos que NÃO sejam de 1 a 3 digitamos:

$ ls carta[^1-3]*
carta4.odt  carta5.odt  carta_ext1.odt  carta_ext2.odt  carta_ext3.odt  carta.odt

Se eu não quiser "carta_ext", basta incluir o caracter "_" no comando acima.

$ ls carta[^1-3_]*
carta4.odt  carta5.odt  carta.odt

Você pode querer também listar todos os arquivos "carta" e "memorando". Para isso, use o "{}".

$ ls {carta,memorando}*
carta1.odt  carta2.odt  carta3.odt  carta4.odt  carta5.odt  carta_ext1.odt  carta_ext2.odt carta_ext3.odt  carta.odt  memorando1.odt  memorando2.odt  memorando3.odt

Reparem que "ci" não foi mostrado.

Essas regras podem ser misturadas. Por exemplo, para mostrar todos os arquivos "carta" ou "memorando" mas que sejam de 3 até 5, digite:

$ ls {carta,memorando}[3-5]*
carta3.odt  carta4.odt  carta5.odt  memorando3.odt

A tabela abaixo resume as opções de File Glob

*
Qualquer coisa
*.txt
?
Um caractere qualquer
arquivo-??.zip
[...]
Qualquer um dos caracteres listados
[Aa]rquivo.txt
[^...]
Qualquer um caractere, exceto os listados
[^A-Z]*.txt
{...}
Qualquer um dos textos separados por vírgula
arquivo.{txt,html}

Já as expressões regulares, ou REGEX, são expressões usadas para referenciar várias sentenças. São muito parecidas com o FileGlob, mas são usadas para pesquisa de texto. Por exemplo, o ponto (.) é usado para substituir um caracter. Já a barra invertida (\) diz que o próximo carcter deve ser interpretado literalmente. Por exemplo, para listar todos os sites dos tribunais regionais estaduais você pode fazer a seguinte regex:

trt\...\.gov\.br

Em outras palavras a regex acima diz para trazer qualquer texto que tenha a string "trt" seguida de um ponto literal (\.) seguida de dois caracteres quaisquer (..) seguida de outro ponto literal (\.) seguida do texto "br".

trt.sp.gov.br
trt.rj.gov.br
trt.ms.gov.br

Se eu quiser apenas os tribunais do Mato Grosso e do Mato Grosso do Sul posso usar o [] para referenciar todos os caracteres que podem aparecer na posição.

trt\.m[st]\.gov\.br

Se quisermos todos os tribunais menos os do Distrito Federal e do Ceará usamos o caracter de negação (^).

trt\.[^cd].\.gov\.br

Uma regex que uso bastaste é para omitor as linhas em branco de um arquivo texto . Para isso uso os posicionadores "^" (começo de linha) e o "$" (fim de linha).

grep -v ^$ arquivo.txt

No comando acima estou pedindo para o grep listar todas as linhas do arquivo "arquivo.txt"" com excessão (-v) daquelas que começam (^) e logo em seguida terminam ($), ou seja, as linhas em branco.

Em meus filtros de conteúdo eu costumo bloquear todos os sites que são acessados por IP. Para isso posso usar a regex {}. Por exemplo, para se referir a qualquer número de 0 a 999, uso a seguinte expresão.

grep -E '^[0-9]{1,3}' arquivo.txt

A regex {a,b} nos diz que a sequência anterior deverá se repetir pelo menos "a" vezes e no máximo "b" vezes. Se quisermos um número com exatos 3 algarismos, podemos usar [0-9]{3,3}. Se quisermos 3 ou mais vezes usamos [0-9]{3,}

Logo, para fazer referência a um endereço IP no começo da URL eu posso usar o seguinte:

^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}

Abaixo segue um resumo das expressões regulares.

Meta Nome Descrição
. Ponto Curinga de um caractere
[] Lista Casa qualquer um dos caracteres listados
[^] Lista negada Casa qualquer caractere, exceto os listados
? Opcional O item anterior pode aparecer ou não (opcional)
* Asterisco O item anterior pode aparecer em qualquer quantidade
+ Mais O item anterior deve aparecer no mínimo uma vez
{,} Chaves O item anterior deve aparecer na quantidade indicada {mín,máx}
^ Circunflexo Casa o começo da linha
$ Cifrão Casa o fim da linha
\b Borda Limita uma palavra (letras, números e sublinhado)
\ Escape Escapa um metacaracter, tirando seu poder
| Ou Indica alternativas (usar com o grupo)
() Grupo Agrupa partes da expressão, é quantificável e multinível
\1 Retrovisor Recupera o conteúdo do grupo 1
\2 Retrovisor Recupera o conteúdo do grupo 2 (segue até o \9)
.* Curinga Casa qualquer coisa, é o tudo e o nada
?? Opcional NG Idem ao opcional comum, mas casa o mínimo possível
*? Asterisco NG Idem ao asterisco comum, mas casa o mínimo possível
+? Mais NG Idem ao mais comum, mas casa o mínimo possível
{}? Chaves NG Idem às chaves comuns, mas casa o mínimo possível
Para saber mais sobre esse assunto eu recomendo o site http://aurelio.net/shell/canivete e o livro Programação Shell Script de Julio Cezar Neves.