14 de out. de 2009
Serviços Bancários pela Internet apenas com Linux
Em sua coluna ele conta a história de duas empresas que perderam entre 100 mil e 450 mil dólares aproximadamente para ladrões "armados" com malwares.
O curioso é que Brian não está sozinho em suas recomendações. O Centro de Analises e Informação Compartilhada de Serviços Financeiros (livre tradução), grupo mantido por alguns dos maiores bancos mundiais, apresentou um relatório em que sugere as empresas a realizarem transações bancárias em computadores onde serviços de e-mail e navegação não sejam possíveis.
Para saber mais
Avoid Windows Malware: Bank on a Live CD
Washington Post Says Use Linux To Avoid Bank Fraud
Ubuntu One
O serviço é simples: armazenamento de dados na web. O serviço estava disponível desde a versão 9.04 do Ubuntu e agora deve ganhar mais notoriedade pois passará ser disponibilizado nativamente no Ubuntu 9.10.
O usuário terá direito a 2 GB de espaço gratuitamente. Caso deseje, poderá realizar o upgrade para 50 GB pagando o valor mensal de U$10,00.
13 de out. de 2009
Lua - Strings - Parte 1
Strings devem estar entre aspas (simpes ou duplas).
local texto1 = 'Ola mundo.'
local texto2 = "Versão Digital"
Funções Báscias
string.byte()
Retorna o valor da tabela ASCII
s = string.byte('A')
print(s)
string.char()
Retorna um caracter a partir do valor numérico da tabela ASCII.
s = string.char(66)
print(s)
string.len()
Retorna o tamanho da string.
s = 'Programar em LUA é muito fácil.'
a = string.len(s)
print(a)
string.lower()
Retorna um string com os caracteres maiúsculos convertidos para minúsculo
s = 'Programar em LUA é muito fácil.'
a = string.lower(s)
print(a)
string.rep()
Retorna uma cadeia de caracteres concatenada N vezes.
s = 'Lua '
a = string.rep(s,3)
print(a)
string.reverse()
Retorna a string invertida
s = 'Programar em LUA e muito facil.'
a = string.reverse(s)
print(a)
string.sub()
Retorna uma substring a partir da string. É necessário informar a posição inicial e a posição final.
s = 'Programar em LUA é muito fácil.'
a = string.sub(s,13,16)
print(a)
string.upper()
Retorna a string com os caracteres minúsculos convertidos para maiúsculo
s = 'Programar em LUA e muito facil.'
a = string.upper(s)
print(a)
No próximo post falaremos sobre mais algumas funções para strings.
Para saber mais
Lua - Variáveis e Estruturas de Controle
Manual de Referência Lua - Strings
16 de set. de 2009
Lua - Operadores
Continuando com nosso tutorial de Lua, falaremos hoje de operadores.
Operadores são classes de operações sobre variáveis ou elementos pré-definidos. Em lua nós temos quatro tipo de operadores: aritiméticos, concatenação, lógicos e relacionais. Vamos a eles.
Operadores Aritiméticos
Operadores aritiméticos são utilizados para realização de cálculos matemáticos. Os operadores válidos são: Soma ( + ), Subtração ( - ), Multiplicação ( * ), Divisão ( / ), Raiz ( ^ ) e Resto ( % ).
local a,b = 10, 3
print('Soma (+): '.. a + b)
print('Subtração (-): '.. a - b)
print('Multiplicação (*): '.. a * b)
print('Divisão (/): '.. a / b)
print('Raiz (^): '.. a ^ b)
print('Resto (%): '.. a % b)
Operador de Concatenação
O operador de concatenação permite juntar duas strings gerando uma nova string. Ele é representado por dois pontos ( .. )
local a,b = 'Maria', 'João'
print(a .. b)
print(a .. ' e ' .. b)
Operadores Lógicos
Operadores lógicos são operadores binários. Possui duas variáveis de entrada resultando em apenas uma variável de saída. Em Lua temos os seguintes operadores: E (and), Ou (or) e Não (not).
Para o operador and, o resultado será verdadeiro apenas se as variáveis de entrada forem verdadeiras, caso contrário o resultado será falso.
Para o operador or, o resultado será verdadeiro caso pelo menos uma das variáveis de entrada seja verdadeira. Se ambas forem falsas, o resultado será falso.
Para o operador not, o resultado será a negação da variável de entrada. Caso seja verdadeiro, o resultado será falso. Se a variável for falsa, o resultado será verdadeiro.
A seguir, temos a tabela verdade para os três operadores.
| v1 | v2 | v1 and v2 | v1 or v2 | not v1 |
| falso | falso | falso | falso | verdadeiro |
| falso | verdadeiro | falso | verdadeiro | verdadeiro |
| verdadeiro | falso | falso | verdadeiro | falso |
| verdadeiro | verdadeiro | verdadeiro | verdadeiro | falso |
local a,b = false, true
print (a and b)
print (a or b)
print (not a)
Operadores Relacionais
Operadores relacionais verificam a relação entre duas expressões ou variáveis. São operadores relacionais: maior que ( > ), menor que ( < ), maior ou igual que ( >= ), menor ou igual que ( <= ), igual ( == ) e diferente ( ~= ).
local a,b = 1, 2
if a == b then
print('a e b são iguais.')
elseif a > b then
print('a é maior que b.')
elseif a < b then
print('a é menor que b.')
end
Para saber mais
11 de set. de 2009
Lua - Tables
Dando continuidade ao nosso tutorial de Lua, hoje falaremos de Tables.
Tables são estruturas multidimensionais que permitem o armazenamento de dados diversos.
Sua declaração é semelhante a de variáveis.
local tabela = { }
O acesso a estes valores na table é feito a partir da utilização de colchetes.
local tabela = { }
tabela[1] = ‘Carro’
tabela[2] = ‘Moto’
local variavel = tabela[1]
print(variavel)
Uma outra forma de atribuir valores a uma table é durante a sua declaração.
local tabela = {‘Carro’ , ’Moto’ , 3.14}
Funções Básicas
table.concat()
Concatena os ítens da tabela.
local tabela = {'amarelo','azul','vermelho'}
local var = table.concat(tabela)
print(var)
table.insert()
Insere um valor na tabela.
local tabela = {'amarelo','azul','vermelho'}
table.insert(tabela,'verde')
print(tabela[4])
É possível ainda, incluir o valor em uma posição determinada da tabela.
local tabela = {'amarelo','azul','vermelho'}
print(tabela[1])
table.insert(tabela,1,'laranja')
print(tabela[1])
print(tabela[2])
Você pode ver que um novo texto foi incluído na primeira posição da table. O texto que originalmente estava na primeira posição passou a segunda posição.
table.maxn()
Retorna o maior índice numérico positivo da tabela. Caso a tabela não possua índice positivo, será retornado zero.
local tabela = {'amarelo','azul','vermelho'}
print(table.maxn(tabela))
table.remove()
Revome da table o último elemento.
local tabela = {'amarelo','azul','vermelho'}
table.remove(tabela)
for i=1, table.maxn(tabela) do
print(tabela[i])
end
É possível ainda informar qual o índice do elemento que deverá ser removido.
local tabela = {'amarelo','azul','vermelho'}
table.remove(tabela,2)
for i=1, table.maxn(tabela) do print(tabela[i])
end
No exemplo anterior, removemos o segundo elemento da table.
table.sort()
Ordena os elementos da table
local tabela = {'verde','amarelo','azul','vermelho'}
table.sort(tabela)
for i=1, table.maxn(tabela) do
print(tabela[i])
end
Algumas destas funções permitem a inclusão de outros parâmetros, aumentando a gama de opções, no entanto, iremos no restringir ao básico para desenvolvimento.
No próximo post, falaremos sobre operadores.
Para saber mais:
Lua – Exercícios - Variáveis e Estruturas de Controle
- Fazer um algoritmo que leia um número inteiro e escreva-o se for diferente de zero.
- Fazer um algoritmo que leia dois números inteiros. Escreva a soma dos números se o primeiro for maior que o segundo, escreva o produto se o segundo for maior que o primeiro, e escreva um deles se os números forem iguais.
As respostas serão postadas na próxima quarta.
== Respostas ==
1.
print('Digite um número: ')
local num = io.read('*number')if num ~= 0 then
print('O numero é diferente de zero.')
else
print('O numero é igual de zero.')
end
2.
local num1, num2
print('Digite o primeiro número: ')
num1 = io.read('*number')print('Digite o segundo número: ')
num2 = io.read('*number')if num1 > num2 then
print('A soma de num1 + num2 é '..num1+num2)
elseif num2 > num1 then
print('O produto de num1 e num2 é '..num1*num2)
else
print('Este é num1 = '..num1)
end
Para mais informações:
Lua - Variáveis e Estruturas de Controle
10 de set. de 2009
Review: XPS-1000 da Proview – Versão 1.6.20
Recentemente escrevi um review do XPS-1000. Hoje, um mês depois da postagem, pude testar uma nova versão do middleware instalado no aparelho e preciso dizer que estou muito surpreso com a evolução entre a versão anterior e a versão atual.
O middleware disponibilizado no XPS está bem pareado com o middleware desenvolvido pela comunidade Ginga NCL. Os módulos canvas e event estão tão funcionais quanto a versão disponibilizada nos STBs virtuais.
Aplicações desenvolvidas totalmente no STB virtual tendem a rodar sem muitos problemas no XPS. Na verdade, dois problemas foram identificados. Na classe key do módulo event o tipo release não está implementado e a codificação de caracteres não permite apresentação de caracteres especiais no módulo canvas.
Segundo a RCASoft, responsável pelo desenvolvimento do middleware, a codificação para caracteres especiais funciona no XPS, no entanto, até a publicação deste post, não tive uma resposta para a aplicação teste para a verificação deste problema.
Ainda segundo a RCA, esta versão do middleware já possui a classe tcp implementada, o que permitirá a utilização do canal de retorno. Assim como a codificação de caracteres, não consegui testar e áté o momento, não tive uma resposta sobre o assunto.
Em resumo, o XPS-1000 deu um grande salto de melhoria e hoje já pode ser considerado como um bom ambiente de testes para aplicações NCLua.


