Format number using Javascript

fevereiro 26th, 2010 por Daniel No comments »

   A simple php like function called “number_format” to format a number :) in javascript…

   Is so simple to use it; just call in your code supplying some parameters:

@value is a float number being formated

@dec is a number of decimals point

@decsep is a character to use as a decimal point

@milsep is a character to use as a thousands separator

   Now, here is the code, just copy and past to your .js library.

function number_format(value, dec, decsep, milsep){
   dec=(typeof(dec)=='undefined'?2:dec);
   decsep=(typeof(decsep)=='undefined'?',':decsep);
   milsep=(typeof(milsep)=='undefined'?'.':milsep);
   //
   value=value.toFixed(dec)
   //
   var localValue=value.toString();
   var arr=localValue.split('.');
   if (arr.length>1)
      arr[1]=(decsep+arr[1]);
   var re=/(\d+)(\d{3})/;
   while (re.test(arr[0]))
      arr[0]=arr[0].replace(re, '$1'+milsep+'$2');
   return arr[0]+arr[1];
}

That’s all folks.
Nice javascripting…

São as piores situações que nos trazem os melhores ensinamentos.

junho 28th, 2009 por Daniel No comments »

São as piores situações que nos trazem os melhores ensinamentos

Durante o curso da vida experimentamos todos os tipos de sabores que ela nos impõe. Vivemos momentos doces de satisfação e momentos amargos de dor e sofrimento. Não há controle sobre determinadas situações bem como não há formas de prevê-las e prevenir-se. Muitos acontecimentos são conseqüências de escolhas feitas ao longo da vida e outros são absolutamente circunstanciais; não há dinheiro nem poder que consiga controlar a estabilidade neste âmbito. Todos, sem exceção, estão sujeitos a estes sentimentos.

O que temos e podemos escolher é a postura diante destas situações e isto sim está em nossas mãos, porém, a moeda não é dinheiro e muito menos poder mas, maturidade espiritual. Aprendi que: a maneira de encaramos estes acontecimentos determinará se nossa viagem por esta vida será de dor, sofrimento e consequentemente vã e vazia ou de paz, humildade, serenidade e consequentemente edificante. Em suma como é dito em uma antiga e conhecida frase: “A dor é inevitável mas o sofrimento é opcional”.

Por mais estranho que isso possa soar, as dificuldades nos trazem crescimento espiritual e emocional quando as encaramos como grandes oportunidades de aprendizado. Na conferência geral de novembro de 2008 de “A Igreja de Jesus Cristo dos Santos dos Últimos Dias”, o hoje falecido Élder Joseph B. Wirthlin, apóstolo moderno do Salvador Jesus Cristo nos deixou um grande ensinamento em seu discurso entitulado “Aconteça o Que Acontecer, Desfrute”; o profeta nos ensina que “A maneira como reagimos à adversidade pode ser um fator preponderante para o sucesso e a felicidade na vida”. O Élder Wirthlin ainda nos ensina que todas as experiências devem ser vividas em sua plenitude, sejam elas boas ou ruins e que devemos desfrutar do aprendizado que cada uma destas situações pode acrescentar em nossas vidas.

Quando menciono vida não me refiro somente a nossa vida mortal e terrena. As escrituras sagradas nos ensinam claramente que esta vida mortal é somente um momento de nossa existência, um instante diante da eternidade de nossa alma. Somos muito mais do que este corpo que, apesar de ser uma máquina fantástica, é corruptível, imperfeito e falho. Somos seres compostos de um espírito eterno e perfeito. Confiemos nestas verdades e seremos muito mais capazes de compreender o curso de nossas vidas.

Eu sei com toda convicção que Deus é nosso Pai, que Ele vive e nos ama com um amor que não podemos compreender. Eu sei que Jesus Cristo vive, Ele é nosso salvador e nosso redentor. E eu sei com toda certeza que: se confiarmos nossas vidas a Deus e fizermos o que Ele nos ensina, através de seus profetas antigos e modernos, alcançaremos maturidade espiritual e seremos plenamente felizes nesta vida terrena e teremos paz e felicidade eterna.

Apple Wireless Mighty Mouse no Windows XP

março 11th, 2009 por Daniel No comments »

Esta é rápida.

Há algum tempo eu adquiri um “MacBook”. Apesar de suprir absolutamente todas as minhas necessidades eu mantive meu “Sony Vaio”, instalei  ”Windows XP” e o utilizo para estudo e desenvolvimento com “.NET” e outras ferramentas para “Win32″.

Recentemente eu quis utilizar meu “Apple Wireless Mighty Mouse” neste PC e tive algumas dificuldades para tornar isto possível. O mouse usa “Bluetooth” para conexão com o PC e este solicita uma senha para emparelhar com o mouse. Agora, como vc vai fornecer uma senha no seu mouse? Parece absurdo, mas é o comportamento do “Windows XP”, mesmo com este tipo de equipamentos bluetooth.

O segredo é simples, quando o PC pedir a tal senha digite “0000″ e vualá, o mouse está ativo.

Vale ressaltar que no “Windows Vista” eu não tive este problema.

Paz de espírito.

janeiro 25th, 2009 por Daniel No comments »
O Salvador nos abraça com ternura e amor.

Nada como estar bem consigo mesmo.

Passamos a vida buscando felicidade e paz nas coisas, nos hábitos, procurando encontrar maneiras de obtermos alegria e satisfação. Alguns consomem vorazmente coisas que lhe dêm prazer, outros compram carros novos e/ou não se satisfazem enquanto não têm seus objetos de desejo. Outros são viciados em ter e ter e ter e nunca estão satisfeitos com o que têm, enfim. Fazem de suas vidas um eterno “ter” e esquecem de “ser”… Infelizmente a sociedade em que vivemos está cada vez mais atrelada a estes prazeres momentaneos e cada vez menos preocupada com a felicidade real e duradoura.  Vêm tudo que está a sua volta, percebem cada detalhe das roupas, cada milímetro de tudo que os cercam no anseio de descobrirem se estão ou não adequados a determinados padrões adotados pela maioria. Enquanto assim lutam, não se dão conta de que esta paz está dentro de si mesmos. Dentro de seus corações e mentes.

A felicidade plena e absoluta está em anular-se por completo, deixar de lado todos os seus anseios em busca da alegria do seu próximo; pais, irmãos, esposa, filhos, vizinhos, o mundo. Somente assim entramos em contato com a essência do viver e do propósito de nossa existência, amar com mais e mais vigor todos aqueles que nos cercam. Somente assim seremos plenos de felicidade e de satisfação duradouras. Quando conseguirmos nos desligar de nós mesmos passaremos a enxergar a alegria e o sorriso de nosso semelhante com compaixão e ternura. Quando alcançamos e experimentamos um pouco desta felicidade, finalmente o nosso espírito tomará o controle de nossas vidas e a paz, alegria e satisfação realmente importantes e duradouras serão despertas e nossos corações não mais serão abalados pelas inseguranças e incertezas que tanto nos perturbam nos dias atuais.

Não se consegue esta transformação do dia para a noite, porém o início deste processo é muito simples de ser alcançado:

  • Com um sorriso sincero estampado no rosto você fará uma grande diferença na vida de uma infinidade de pessoas que encontrará pelo caminho.
  • No trânsito, no trabalho, na escola, etc… Não se deixe abalar pelas situações, por mais chatas e complicadas que sejam, retribua com um sorriso sereno e sincero.
  • Pequenas coisas em casa, se você é marido ou filho pode, por exemplo, lavar a louça para sua esposa ou mãe. Apesar de simples demonstrará seu amor.
  • Abrace pelo menos uma vez por dia, com ternura e carinho. Com desejo sincero de transmitir este sentimento para a pessoa abraçada.
  • Não critique as pessoas. Nunca faça isto! Só trará tristeza a seu coração e por mais que você tenha razão, não fará a pessoa criticada mudar. Mude a si mesmo, mude sua atitude. Isto você tem poder para transformar; o seu interior.
  • Seja empático com todos a sua volta, vale a pena. Tente sempre olhar as situações com os olhos do seu semelhante, tenha certeza de que não irá magoa-lo com palavras duras.
  • Não seja áspero, seja amável e caridoso. Mesmo quando tenha que repreender alguém, faça-o com cuidado e demonstre amor sincero.
Estas são apenas sugestões, não são regras.
Nascemos com uma luz que brilha quando fazemos o bem, portanto a regra é: siga a voz do seu coração, faça o bem e não espere nada em troca. A vida mudará. A paz de espírito crescerá vertiginosamente e a felicidade será plena.
A minha vida tem mudado dia a dia, meu desejo foi de compartilhar esta felicidade. Espero que tenha gostado, com amor e humildade desejo muita paz e alegria.

Instalando um novo disco rígido no NetBSD

outubro 22nd, 2008 por Daniel No comments »

Em primeiro lugar é necessário particioná-lo com o comando “disklabel”:

# disklabel -i -I sd1

O “-i” faz o “disklabel” entrar no modo interativo e o “-I” faz com que se o “disklabel” não consiga ler informações diretamente no dispositivo, busque no “kernel”. A seguir é criada a partição “e” utilizando todo o espaço:

partition> e
Filesystem type [?] [4.2BSD]: 4.2BSD
Start offset ('x' to start after partition 'x') [0c, 0s, 0M]: 0s
Partition size ('$' for all remaining) [26316.9c, 71687370s, 35003.6M]: $
partition> W
Label disk [n]? y
Label written
partition> P
#       size offset   fstype   [fsize bsize cpg/sgs]
 e: 71687370      0   4.2BSD        0     0     0   # (Cyl. 0 - 26316*)
partition> Q

O modo interativo do disklabel dispõe do comando “?” para ajuda.

Agora pode-se dar um formato à esta partição, criando um “sistema de arquivos” com o comando “newfs”:

# newfs /dev/rsd1e
/dev/rsd1e: 35003.6MB (71687368 sectors) block size 16384, fragment size 2048
        using 190 cylinder groups of 184.23MB, 11791 blks, 23296 inodes.
super-block backups (for fsck_ffs -b #) at:
32, 377344, 754656, 1131968, 1509280, 1886592, 2263904, 2641216, 3018528, 3395840, 3773152,
...............................................................................................

A partição está pronta para ser utilizada no sistema. Adicione-a na tabela de partições, editando o arquivo “/etc/fstab”:

# vi /etc/fstab
# NetBSD /etc/fstab
# See /usr/share/examples/fstab/ for more examples.
/dev/sd0a               /               ffs     rw               1 1
/dev/sd0b               none            swap    sw               0 0
/dev/sd0d               /var            ffs     rw               1 2
/dev/sd0e               /home           ffs     rw               1 2
/dev/sd0g               /usr            ffs     rw               1 2
/dev/sd0b               /tmp            mfs     rw,-s=525760
/dev/sd1e               /home/share     ffs     rw               1 2
kernfs          /kern   kernfs          rw
procfs          /proc   procfs          rw,noauto
~
~
~
~
~
:wq

Neste caso a partição “sd1e” será montada no diretório “/home/shared”. Este diretório deve ser criado manualmente. Isto feito, pode-se montar a partição:
# mount -a

Para certificar-se de que tudo está funcionando use o comando “df”:

# df -h
Filesystem    Size      Used     Avail Capacity  Mounted on
/dev/sd0a     124M       26M       92M    22%    /
/dev/sd0d     3.0G       13M      2.8G     0%    /var
/dev/sd0g     3.0G      497M      2.3G    17%    /usr
/dev/sd0e     1.3G       24K      1.3G     0%    /home
mfs:305       249M      1.0K      236M     0%    /tmp
/dev/sd1e      34G       14K       32G     0%    /home/share
kernfs        1.0K      1.0K        0B   100%    /kern

O novo disco está disponível e pronto para receber dados.

Minha fonte de informações foi o site do NetBSD: www.netbsd.org

Brasil: Um País De Tolos

outubro 20th, 2008 por Daniel No comments »

Era uma vez um coitado que descobriu que era roubado pelo seu próprio governo na boca da bomba de combustível!

COMPOSIÇÃO DO PREÇO DA GASOLINA (em reais)

Gasolina “A” 800ml (pura, vendida pela Petrobrás) = R$ 0,80

Álcool anidro 200 ml (20% misturado à gasolina) = R$ 0,24

TOTAL = R$ 1,04 por Litro

+

CIDE – PIS/COFINS (Imposto Federal) = R$ 0,44

ICMS (Imposto Estadual) = R$ 0,64

TOTAL DE IMPOSTOS (104% do Preço Bruto) = R$ 1,08

TOTAL (CUSTO + IMPOSTOS) = R$ 2,12

+

LUCRO DA DISTRIBUIDORA (Média por Litro) = R$ 0,08

FRETE (Média por Litro) = R$ 0,02

LUCRO DO POSTO (Média por Litro) = R$ 0,25

FINALIZANDO:

VALOR NA BOMBA COM IMPOSTOS = R$ 2,47

VALOR NA BOMBA SEM IMPOSTOS = R$ 1,39

Portanto, se você consome 200 litros de gasolina por mês, o bolo fica dividido assim:

DONO DO CARRO (1o. otário – Nós, no caso) GASTA: R$ 494,00

DONO DO POSTO (2o. otário) GANHA: R$ 50,00

DONO DO CAMINHÃO – RESPONSÁVEL PELO FRETE (3o. otário) GANHA: R$ 4,00

PETROBRÁS (já não tão otária assim) GANHA: R$ 16,00

GOVERNO (nada otário) GANHA: R$ 216,00

Deveríamos comemorar a “auto-suficiência” em roubo. Nós produzimos em casa nossos próprio corruptos!

Consistência de CNPJ com JavaScript

outubro 16th, 2008 por Daniel No comments »

Algoritmo explicativo para consistir números de CNPJ usando JavaScript. Para usá-lo basta copiar a função “cnpj()” para seu código e usar os métodos de formulário HTML.

// Consistência de CNPJ by Daniel R. Antunes
function cnpj(cnpj){
  // Verifica o formato fornecido
  if (!cnpj.match(/^\d{2}\.\d{3}\.\d{3}\/\d{4}\-\d{2}$/)){
    alert('Formato do CNPJ inválido !\n\nUtilize o formato "nn.nnn.nnn/nnnn-nn"');
    return FALSE;
  }
  // Tira os separadores deixando somente os números
  cnpj=cnpj.replace(/[\.\/\-]/g,'');
  // Cada número/posição do CNPJ será multiplicado pelo correspondente/
  // posição na string 'multipliers'
  var multipliers='543298765432';
  // Cálculo do PRIMEIRO dígito
  //
  // As multiplicações do multiplicando pelo multiplicador são armazenadas
  // no inteiro 'sum'
  var sum=0;
  // Os números do CNPJ serão acumulados na string 'str' para cálculo do
  // segundo dígito
  var str='';
  // Acumulo das multiplicações e dos números/posições do CNPJ
  for (n=0;n<12;n++){
    sum+=(parseInt(cnpj.substr(n,1))*parseInt(multipliers.substr(n,1)));
    str+=cnpj.substr(n,1);
  }
  // O primeiro dígito é o resultado do resto da divisão da soma das
  // multiplicações acumuladas por onze. Se este resto for menor que
  // dois, o dígito é fixado em zero
  var dig1=parseInt(sum%11);
  dig1=(dig1<2?0:11-dig1);
  // Cálculo do SEGUNDO dígito
  //
  // Acrescenta-se o primeiro dígito ao número parcial (sem os dígitos
  // fornecidos) do CNPJ,  acumulado na string 'str' durante o cálculo
  // anterior
  str+=String(dig1);
  // Como acrescentou-se o dígito, é necessário acrescentar uma posição
  // aos multiplicadores
  multipliers='6'+multipliers;
  // As multiplicações do multiplicando pelo multiplicador são armazenadas
  // no inteiro 'sum' novamente
  sum=0;
  // Acumulo das multiplicações no inteiro 'sum'
  for (n=0;n<13;n++)
    sum+=(parseInt(str.substr(n,1))*parseInt(multipliers.substr(n,1)));
  // O segundo dígito é o resultado do resto  da divisão da soma das
  // multiplicações acumuladas por onze. Se este resto for menor que
  // dois, o dígito é fixado em zero
  var dig2=parseInt(sum%11);
  dig2=(dig2<2?0:11-dig2);
  // Compara-se com o CNPJ fornecido
  if (cnpj.substr(-2,2)!=(String(dig1)+String(dig2))){
    alert('CNPJ inválido !');
    return FALSE;
  }
  // Tudo certo!
  return TRUE;
}

Configurando o NetBSD para conectar-se usando DHCP.

setembro 29th, 2008 por Daniel No comments »

Edite o arquivo /etc/rc.conf:

# vi /etc/rc.conf
Adicione as linhas:
hostname="sun4u_nodeB"
dhclient=YES
dhclient_flags="hme0"

Onde “hostname” é o nome da maquina na rede e “dhclient_flags” é a identificação da placa de rede que receberá o IP via DHCP. Para saber a identificação da placa de rede use o comando dmesg. O dhclient será ativado na reinicialização, para ativá-lo imediatamente use o comando:

# /etc/rc.d/dhclient start

O equipamento está na rede.

Notas sobre a instalação e configuração do NetBSD

setembro 29th, 2008 por Daniel No comments »

A instalação foi feita em um equipamento Sun Ultra 1 usando processador Ultra Sparc II de 143 Mhz, 512 Mb de RAM e dois discos rígidos (8.9 GB e 4.7 Gb SCSI 10.000 RPM). Após a instalação do NetBSD é preciso configurar praticamente tudo manualmente. Diferente de outros BSD’s o Net é pouco amigável. Não existem interfaces, a instalação é crua, limpa e rápida, mesmo porque, ele não trás absolutamente nada além do básico para operar o sistema, compilar pacotes e ou instalar pacotes binários.

O NetBSD é um sistema fantástico, levíssimo e robusto. Ele tornou uma antiga estação Sun em um poderoso servidor DNS e Apache (com Mod_Perl/PHP/MySQL).

Liberando espaço no “/var” do Solaris

agosto 3rd, 2008 por Daniel No comments »

O diretório ou partição, “/var” no Solaris incha facilmente. Isto acontece devido aos diretórios abaixo de “/var/sadm” serem constantemente alimentados com informações de pacotes e atualizações. Quando se tem um bom espaço físico disponível para o “/var”, esta característica não é um problema, pelo contrário; o sistema, silenciosa e providencialmente, mantém cópias de segurança nos diretórios “/var/sadm/pkg/*/save”, isto para que, caso algum update ou patch não funcione adequadamente, o administrador tem a possibilidade de restaurar o ambiente do jeito que estava antes destes terem sido aplicados. Porém, quando se tem o Solaris instalado em máquinas mais antigas (como é o caso da minha Ultra Sparc 10) com o espaço para a partição/diretório “/var” limitado, esta característica atrapalha. Uma forma de contornar este esgotamento constante do recurso em questão é dar uma “limpada” nestas pastas:

  1. Verifique a pasta “/var/sadm/spool”; ali estão os patchs que devem ser aplicados manualmente e os arquivos ali contidos podem e devem ser eliminados após a instalação.  Isto já libera um montante considerável de espaço.
  2. Limpe as pastas “/var/sadm/pkg/*/save” apagando os arquivos “undo.Z” e “obsolete.Z”, da seguinte forma:
root@sun4u_nodeF:~# find /var/sadm/pkg -name obsolete.Z -exec rm {} \;
root@sun4u_nodeF:~# find /var/sadm/pkg -name undo.Z -mtime +90 -exec rm {} \;

No primeiro comando busquei arquivos obsolete.Z que é um backup do backup undo.Z. Este arquivo é gerado quando um patch ou update já tenha sido feito anteriormente; portanto, é dispensável. No segundo “find” busquei os arquivos undo.Z que são as cópias de segurança das quais falei há pouco. Busquei os arquivos que foram gerados há noventa dias ou mais e os eliminei. Se em noventa dias não houve problemas, muito provavelmente o path/update é estável.

Pode-se colocar estes comandos no “cron” e executá-los mensalmente, assim constantemente haverá espaço disponível para novas atualizações.

Bom, estas foram duas soluções que eu encontrei fuçando na net para um problema chato que estava tendo, caso queira utilizar, faça-o por sua conta e risco. Infelizmente as informações sobre estes arquivos mencionados “obsolete.Z” e “undo.Z”, estão disponíveis somente para usuários que pagam suporte técnico para a Sun; eu na qualidade de usuário doméstico do Solaris não tenho/tive acesso à informações mais precisas.