sábado, 17 de abril de 2010

Mobile in motion

PessoALL,
Se lembram da época que meia dúzia de pessoas abriam uma empresa para criar um site na internet criando um produtinho para vender pela rede e tentar "dominar" o mundo. Parece que esta época está voltando, mas para uma outra área carente, aplicação mobile. Quantas aplicações mobile imaginamos que poderíamos vender como produto, quantas aplicações existem atualmente que sejam interessantes ?
Outra facilidade é o mercado que podemos atingir que gira em torno de 120 milhões, daqui a pouco os recém nascidos vão ganhar um celular ao acabar de sair de suas mães.
O grande desafio é ter uma aplicação que ao mesmo tempo rode em um número maior de tipos de terminais e utilize o máximo de recursos que a plataforma nos fornece. Por isso, as 3 grandes de telefonia em um evento na Espanha (Telefonica + TIM, Portugal Telecom e America Movil) estão se juntando para criar uma plataforma e canal de sitribuição que facilite a nossa vida, mas também combater principalmente a Apple (iPhone) e Android que comercializam milhões através de seus canais proprietários e não repassam nada para as operadoras (no meu ponto de vista as operadoras tinham que ganhar sobre a utilização da rede).
Existem várias forças nas operadoras e fabricantes de celular para primeiramente combater a Apple e sua Apple store criando várias aplicações para tentar diminuir o gap entre os celulares, não sei o que isso vai dar mas a briga é boa. Se eu fosse conselheiro na Apple o que falaria seria todos que tentaram dominar o mundo se deram mal, ou seja, provavelmente você será mais um.
Outra coisa importante é que cada vez os celulares vão ser barateados, principalmente por causa da pressão chinesa e cada vez estão mais rápidos em processamento e transmissão de dados.
Vamos nos ligar nas oportunidades pois isso acontece a cada 10 anos, que todos estejam preparados.

Segue uns vídeos/links interessantes

Vivo campus party
http://www.youtube.com/campusparty
http://www.youtube.com/watch?v=U8Sf2g26FEM
http://www.youtube.com/watch?v=f0kKn7NUv_g

Terminais
http://odia.terra.com.br/portal/digital/html/2010/4/vivo_lanca_celular_zte_com_tv_digital_por_r_199_75472.html
http://www.gizmodo.com.br/conteudo/htc-evo-4g-e-forte-candidato-ao-titulo-de-melhor-telefone-celular

Veja
"10% das empresas listadas no ranking global Fortune 2000 já lançaram aplicativos para smartphones, segundo a consultoria research2guidance. Esta empresa estima que o mercado de aplicativos móveis cresça 807% nos próximos quatro anos, passando de 1,411 bilhões de euros em 2010 para 11,496 bilhões de euros em 2013.

A pesquisa realizada pela Mowa avaliou que o setor com maior presença móvel é a indústria de Telecomunicações: 31,25% das empresas deste segmento possuem iniciativas nas três frentes avaliadas. Em seguida aparecem as áreas de Eletroeletrônicos (26,32%), Farmacêutica (10%), Indústria Digital (9%) e Automotiva (7,7%)."

terça-feira, 13 de abril de 2010

testes de performance mysql com engine=memory

PessoALL,
Estava testando o uso da persistência in memory do mysql e fiquei muito impressionado com os valores alcançados. Segue eles.
A única coisa ruim é que a mesma não guarda os dados, mas para isso estou colocando e uma base MyISam que é alimentada após a postagem de uma mensagem no apache activemq (em torno de 3.000 tps) por nó. E no reestart do mysql recoloco os dados na memória.


tempo de insert para 40 milhoes de linhas (procedure) - 9 min - 74.000 tps
tempo para 40 milhoes de consultas aleatorias pela PK - 21 min - 31.000 tps
tempo para 40 milhoes de atualizacoes - 17 min - 39.000 tps

Segue o sql
SET max_heap_table_size = 10000000000;
CREATE TABLE tb_sico (cd_ip_addr_v4 char(11)not null, cd_mdn char(12) not null, INDEX USING HASH (cd_ip_addr_v4), INDEX USING HASH (cd_mdn)) ENGINE = MEMORY;


drop procedure prc_popula_sico;
delimiter $$
create procedure prc_popula_sico()
BEGIN
DECLARE V_CONTADOR int DEFAULT 0;
DECLARE V_CONTADOR_BLOCO int DEFAULT 0;
DECLARE V_CONTADOR_MAXIMO int DEFAULT 40000000;

SELECT V_CONTADOR_MAXIMO-count(1)
into V_CONTADOR_MAXIMO
from tb_sico;

insert_loop: LOOP
IF ( V_CONTADOR > V_CONTADOR_MAXIMO ) THEN
LEAVE insert_loop;
END IF;

insert into tb_sico values (V_CONTADOR,V_CONTADOR);

SET V_CONTADOR_BLOCO = V_CONTADOR_BLOCO + 1;
IF (V_CONTADOR_BLOCO >= 10000) THEN
SELECT 'carga', now();
SET V_CONTADOR_BLOCO = 0;
END IF;

SET V_CONTADOR = V_CONTADOR + 1;
END LOOP insert_loop;
END
$$
delimiter ;



delimiter ;

drop procedure prc_verifica_sico;
delimiter $$
create procedure prc_verifica_sico()
BEGIN
DECLARE V_CONTADOR int DEFAULT 0;
DECLARE V_CONTADOR_BLOCO int DEFAULT 0;
DECLARE V_CONTADOR_MAXIMO int DEFAULT 40000000;
DECLARE V_RANDOM int DEFAULT 0;
DECLARE V_CD_IP_ADDR_V4 CHAR(11);
DECLARE V_COUNT int DEFAULT 0;

select_loop: LOOP
IF ( V_CONTADOR > V_CONTADOR_MAXIMO ) THEN
LEAVE select_loop;
END IF;

SET V_RANDOM = TRUNCATE(RAND()*V_CONTADOR_MAXIMO, 0);
SET V_CD_IP_ADDR_V4 = V_RANDOM;

SELECT count(1)
into V_COUNT
from tb_sico
WHERE CD_IP_ADDR_V4 = V_CD_IP_ADDR_V4;

SET V_CONTADOR_BLOCO = V_CONTADOR_BLOCO + 1;
IF (V_CONTADOR_BLOCO >= 10000) THEN
SELECT 'verifica', now();
SET V_CONTADOR_BLOCO = 0;
END IF;

SET V_CONTADOR = V_CONTADOR + 1;
END LOOP select_loop;
END
$$
delimiter ;



delimiter ;

drop procedure prc_atualiza_sico;
delimiter $$
create procedure prc_atualiza_sico()
BEGIN
DECLARE V_CONTADOR int DEFAULT 0;
DECLARE V_CONTADOR_BLOCO int DEFAULT 0;
DECLARE V_CONTADOR_MAXIMO int DEFAULT 40000000;
DECLARE V_RANDOM int DEFAULT 0;
DECLARE V_CD_IP_ADDR_V4 CHAR(11);
DECLARE V_CD_MDN CHAR(12);

update_loop: LOOP
IF ( V_CONTADOR > V_CONTADOR_MAXIMO ) THEN
LEAVE update_loop;
END IF;

SET V_RANDOM = TRUNCATE(RAND()*V_CONTADOR_MAXIMO, 0);
SET V_CD_IP_ADDR_V4 = V_RANDOM;
SET V_CD_MDN = V_RANDOM;

update tb_sico
set cd_mdn = V_CD_MDN
WHERE CD_IP_ADDR_V4 = V_CD_IP_ADDR_V4;

SET V_CONTADOR_BLOCO = V_CONTADOR_BLOCO + 1;
IF (V_CONTADOR_BLOCO >= 10000) THEN
SELECT 'atualiza', now();
SET V_CONTADOR_BLOCO = 0;
END IF;

SET V_CONTADOR = V_CONTADOR + 1;
END LOOP update_loop;
END
$$
delimiter ;

quarta-feira, 7 de abril de 2010

open ldap no Redhat AS 5

-------------
-- Berkley DB
cd /root/
wget http://download.oracle.com/berkeley-db/db-4.6.21.zip
unzip db-4.6.21.zip
cd db-4.6.21

cd build_unix/
./dist/configure
make
make install

cd /root
rm -rf /root/db-4.6.21

----------------
-- OPEN LDAP
wget ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/openldap-2.4.21.tgz
tar zxvf openldap-2.4.21.tgz
cd openldap-2.4.21
export CPPFLAGS="-I/usr/local/BerkeleyDB.4.6/include"
export LDFLAGS="-L/usr/local/BerkeleyDB.4.6/lib -R/usr/local/BerkeleyDB.4.6/lib"
export LD_LIBRARY_PATH="/usr/local/BerkeleyDB.4.6/lib:${LD_LIBRARY_PATH}"
./configure --with-whatever-your-options
make
make install

cd /root
rm -rf /root/openldap-2.4.21

----------------
-- CONFIG
vi /usr/local/etc/openldap/slapd.conf

----------------
-- start LDAP
su root -c /usr/local/libexec/slapd