Pesquisar neste blog

sábado, 15 de dezembro de 2012

Morre Norman Woodland, inventor do código de barras

Em junho de 1976, no estado norte-americano de Ohio, uma grande revolução começava com uma simples caixa de chiclete de 67 centavos de dólar. Era a primeira utilização do código de barras, invenção de Norman Woodland que morreu esta semana, vítima de complicações da síndrome de Alzheimer. 

Norman Woodland inventor do código de barras



Hoje utilizado em cinco bilhões de produtos por dia, o invento de "Joe", como era chamado pelos amigos, nasceu em 1949 em parceria com o amigo Bernard Silver -- morto em 1963. Foi ele quem ouviu de um dono de supermercados o que daria origem à ideia. Segundo o empresário, os estudantes de engenharia da Drexel University deveriam pensar numa maneira mais eficiente de listar itens no ato da compra. 


Inquieto com o fato, Woodland pensou em estender verticalmente os pontos e traços do código Morse. Estava criado o código de barras, um sistema de sinais bidimensional. A patente do projeto foi obtida em 1952, mas apenas vinte anos depois o invento ganhou relevância, graças aos avanços da tecnologia do laser. 
Norman Joseph Woodland o inventor do código de barras, morreu aos 91 anos em 9 de dezembro de 2012.

Até então, a ideia já tinha passado por companhias como RCA e Phillips, mas foi a IBM que conseguiu criar a melhor versão do código de barras, o UPC (do inglês, Código Universal de Produto). Atualmente ele é utilizado não só nos supermercados, mas em aeroportos, hospitais, transporte e indústrias em todo o mundo. 
Registro da Patente
[Image credit: IBM / The New York Times]

A invenção de Silver e Woodland lhes garantiu um lugar no Hall da Fama dos Inventores dos Estados Unidos. Ainda assim, de acordo Susan Woodland, seu pai sempre estava em busca de aperfeiçoar seu invento. "Ele adorava falar com as caixas, vendo o que elas gostaria de mudar na ideia", disse ela à agência de notícias Reuters.


Woodland morreu em 9 de dezembro de 2012 em Edgewater, New Jersey.

fonte: http://olhardigital.uol.com.br/produtos/digital_news/noticias/morre-norman-woodland,-inventor-do-codigo-de-barras

sábado, 1 de dezembro de 2012

Start-up Brasil: Programa Nacional de Aceleração de Start-ups de base tecnológica

O MCTI (Ministério da Ciência, Tecnologia e Inovação) lançou o programa START-UP BRASIL no dia 29/11/2012 com o intuito de acelerar o desenvolvimento de empresas nascentes de base tecnológica,o Start-up Brasil, que se iniciará com o foco em empresas de software e serviços, compreenderá a estruturação de uma rede de mentores e investidores, financiamento para Pesquisa, Desenvolvimento e Inovação (P,D&I), consultoria tecnológica e de mercado, infraestrutura, parcerias com universidades, institutos de pesquisa e incubadoras, articulação com grandes companhias nacionais e internacionais, além de programas de acesso a mercado e compras públicas. 

Logomarca do projeto


Assim, esta ação tem como objetivo alavancar a aceleração de um número crescente de start-ups a cada ano, colocando no mercado local e internacional novos produtos e serviços inovadores, conectando nossas empresas de base tecnológica em contato com tendências e mercados globais, bem como construir uma parceria governo e iniciativa privada para a geração de um ecossistema favorável ao empreendedorismo de base tecnológica. 

Cronograma do primeiro grupo


Meta: acelerar 150 start-ups de software e serviços de TI até 2014, sendo 25% de start-ups internacionais localizadas no Brasil. 

RECURSOS PREVISTOS: R$ 40 milhões.

Acesse o site do projeto





Apresentação do secretário Virgilio de Almeida explicando Start-Up Brasil


domingo, 18 de novembro de 2012

Criar e persistir controles dinamicamente em ASP.NET com C#

Uma ideia genial é a criação de controles (objetos) dinamicamente em páginas ASP.NET. Já imaginou criar um cadastro de clientes apenas configurando um conjunto de controles em uma base dados?! Essa é a proposta incipiente deste projeto. Aqui eu, Flávio Barbosa e os desenvolvedores Washington e Anderson lhes oferecemos o caminho das pedras.

Diagrama de Classe


Não há acesso a Dados, apenas foram criadas duas classes simulando a configuração, criação e persistência dos objetos dinâmicos em sessão.

Clique aqui para fazer download do projeto (213k).

domingo, 14 de outubro de 2012

Metro inova o conceito de user interface (UI)

O vídeo abaixo, criado por Fernando Martin, apresenta vários conceitos trazidos com o Metro.



* HUB e PANORAMAS
- Não existem tantos cliques, existem vários arrastos para consumir a aplicação;
- Ícones de aplicação são ultrapassados (obsoletos) e foram substituídos por "Tails" que permitem consumir informações da aplicação antes de entrar nela de forma dinâmica.


* Navegação Simplificada
* Nova identidade
* Tipografia, Conteúdo, Layout e Cores (TCLC)
* Metro é muito mais que design, é um conceito totalmente novo.

[]´s Flavio Barbosa.

sábado, 13 de outubro de 2012

"Esta página da web não está disponível", pode ser o arquivo HOSTS

Se estiver recebendo a mensagem "Esta página da web não está disponível" do seu banco na página onde fica a digitação da agência e conta e estiver conectado na internet com java atualizado e funcionando, provavelmente o seu arquivo HOSTS (c:\windows\system32\drivers\etc\hosts) foi modificado por algum malware.

Veja este exemplo:

Arquivo c:\windows\system32\drivers\etc\hosts modificado por malware

Para corrigir o arquivo HOSTS automaticamente você pode executar um aplicativo (precisar ser como administrador do computador) usando o Microsoft Fix it 50267 ou corrigir manualmente verificando o padrão de conteúdo do arquivo HOSTS clicando aqui.

[]´s Flávio Barbosa
www.flaviobarbosa.com.br

sábado, 29 de setembro de 2012

Configuração do Belkin F7D5301 v3 (N150) para Speedy da Telefônica

Primeira coisa: Não precisa atualizar o firmware. Siga os prints abaixo que tu conseguirá configurá-lo para o speedy da Telefônica. VPI = 8 e VCI = 35 Brazil - Telefonica 8 35 PPPoE LLC

Figura 1: Página inicial de configuração

Figura 2: Página inicial de configuração da WAN

Figura 3: Adicionando uma nova conexão Speedy da Telefônica (add) 

Figura 4: Definindo o tipo de conexão

Figura 5: Opções de configuração do IP da WAN

Figura 6: Informando usuário e senha do provedor de acesso

Figura 7: Resumo das configurações definidas

Figura 8: Configurações do servidor de DNS

Figura 9: Configuração dos servidores virtuais (NAT)

Figura 10: Configurações do IGMP Proxy

Não esqueçam de verificar todas essas configurações para que tudo dê certo. 

[]´s Flavio Barbosa.

segunda-feira, 6 de agosto de 2012

Consulte o salário dos servidores do estado de São Paulo

Já precisou de alguma informação de órgãos públicos?
Já se perguntou quanto ganha os funcionários de um determinado órgão público?

Graças a Lei nº 12.527, sancionada pela Presidenta da República em 18 de novembro de 2011, isso está se tornando possível. Essa Lei tem o propósito de regulamentar o direito constitucional de acesso dos cidadãos às informações públicas e seus dispositivos são aplicáveis aos três Poderes da União, Estados, Distrito Federal e Municípios.

Veja o site:
http://www.acessoainformacao.gov.br/acessoainformacaogov/

Consulte as informações públicas disponibilizadas pelo Estado de São Paulo:
http://www.transparencia.sp.gov.br/

Consulte as instituições e salários dos servidores disponibilizadas pelo Estado de São Paulo em conjunto com os órgãos públicos:
http://www.transparencia.sp.gov.br/busca-agentes.html


Se precisar pedir uma informação pública visite o link abaixo:
http://www.acessoainformacao.gov.br/acessoainformacaogov/sic/como-pedir.asp

[]´s

domingo, 29 de julho de 2012

Skype manager

O que é?
O Skype Manager é uma ferramenta de administração pela web que permite administrar o Skype de forma centralizada em empresas de todos os portes.

Recursos:
Possuí recursos como chamada com vídeo em grupo, correio de voz e encaminhamento de chamadas.

Como funciona:

- Crie uma conta
  O Administrador da conta se cadastra
  Existe a possibilidade de adicionar mais de um administrador
- Adicione créditos
  Compra-se uma quantidade de crédito e os distribui
- Cadastre os membros
- Distribua os créditos entre eles
- Atribua os recursos que cada um poderá usar

Quanto Custa:
- Taxa de conexão para aparelhos fixos e celulares 
   (Clique aqui e veja a taxa de conexão com valores atualizados)
- Assinatura pré-pago 
- Assinatura mensal 
- Enviar SMS 

Interface de autenticação:
Com a sua própria conta do skype é possível fazer login no Skype Manager e administrar a utilização do skype na sua empresa ou na sua casa.


Painel:
A página inicial, que possuí um vídeo muito interessante sobre o efeito do skype na sua organização, é denominada "painel".


Membros:
Através desta interface é possível associar os membros que farão parte do Skype Manager e distribuir créditos para cada um deles.



Relatórios:
Existem diversos relatórios de controle que lhe permitem inclusive dimensionar a utilização de créditos para o futuro.



Conclusão:
O Skype Manager pode lhe trazer alguma economia, mas principalmente ele lhe trará controle do custo de comunicação para sua organização.




quinta-feira, 19 de julho de 2012

Exemplo de arquivo MS-batch (.bat) para fazer backup semanal

Quem não se lembra do velho e bom arquivo batch (.bat)?!

Arquivos batchs são conjuntos de comandos do Microsoft Disk Operational System (MS-DOS) executados "sequencialmente". Bem, "sequencialmente" está entre aspas porque esses arquivos permitem comando "GOTO" que direcionam para blocos específicos dentro do arquivo.

Abaixo, segue um exemplo de arquivo batch (.bat) para realizar backup em uma determinada unidade por dia da semana.

----------------------------------------------------------------------------------------------------
rem Copie e cole dentro de um arquivo com a extensão .bat as linhas abaixo até encontrar o FIM

@echo off


:GETINPUT
cls
set /p semana=Informe as 3 primeiras letras do dia da semana: 
set /p drive=Informe a letra do drive onde o backup será gravado: 
set destino=%drive%:\%semana%
echo O backup será gravado em "%destino%"
set /p confirmacao=Confirma o destino do backup [s/n]?:
if /I "%confirmacao%"=="" (GOTO GETINPUT)
if /I "%confirmacao%"=="n" (GOTO abandonar)
if /I "%confirmacao%"=="s" (GOTO backup) else (GOTO sair)


goto sair


:abandonar
 set /p abandonar=Abandonar o backup (s/n)?
 if /I "%abandonar%"=="s" (GOTO sair) else (GOTO GETINPUT)



:backup
%drive%:
cd\
@echo on
xcopy c:\Users\fbarbosa\Documents\* %destino%\Users\fbarbosa\Documents\* /D /Y 
xcopy c:\Users\fbarbosa\Music\* %destino%\Users\fbarbosa\Music\* /D /Y /E
xcopy c:\Users\fbarbosa\Pictures\* %destino%\Users\fbarbosa\Pictures\* /D /Y /E
goto sair




:sair
echo fim


rem o FIM.
----------------------------------------------------------------------------------------------------


Veja um print do arquivo em execução:



terça-feira, 27 de março de 2012

Convergindo suas contas de e-mail com Gmail

CENÁRIO
Um cenário bastante comum são empresários que precisam acessar seus e-mail de fora da empresa que administram, mais que isso, que em um único "lugar" (interface eletrônica) consigam visualizar seus e-mails de negócios e também seus e-mails particulares.

Este cenário se ampliou com a disseminação dos dispositivos móveis como smartphones (iphone, por exemplo) e tablets (ipad, por exemplo).

SOLUÇÃO
Para resolver esse problema existe uma solução bastante simples e gratuita proposta pelo Gmail e, também por outros webmails como Windows Live da Microsoft, que é a importação de contas POP3, ou seja, a importação das suas contas de e-mail.


COMO IMPLANTAR A SOLUÇÃO USANDO O GMAIL
Segue abaixo um vídeo produzido por nós que mostra como configurar e usar o Gmail para integrar, convergir, suas contas de negócio e pessoais.


quinta-feira, 8 de março de 2012

Instalação da ROM: Universal WM8650 Uberoid v11 BETA3 HcH

Baixe o PDF com o tutorial completo clicando aqui.

ROTEIRO DO TUTORIAL:
1. Download
2. Instalação
3. Configuração

DOWNLOAD:
Faça o download da ROM Universal_WM8650_Uberoid_v11_BETA3-HcH-[TechKnow.T0xic.nl] através do link:
http://search.4shared.com/q/CCAD/1/Universal_WM8650_Uberoid_v11_BETA3-HcH-%5BTechKnow.T0xic.nl%5D.7z

INSTALAÇÃO:
1.Após o download descompacte a ROM para pasta:
–Universal_WM8650_Uberoid_v11_BETA3-HcH-[TechKnow.T0xic.nl]
   (se não possuir um descompactador baixe e instale o winrar)

Arquivo descompactado
2.Execute o arquivo CHANGER.bat clicando duas vezes sobre ele:
Programa batch responsável por configurar a instalação da ROM



3. Ao executar o CHANGER.bat um menu de opções será aberta. Para o ibak784, digite 30 e pressione enter;
Menu de opções da ROM Uberoid


4. Você quer copiar a ROM para o Cartão de Memória (SD) ?
  - Se já estiver com o cartão formatado e conectado no computador pressione “Y”;
Pergunta se a instalação será gravada diretamente no cartão de memória



5. Qual a letra do drive onde está o seu cartão de memória?
  - Digite a letra correspondente ao drive e pressione enter;
Pergunta qual a letra do drive onde está o cartão de memória

6. Os arquivos serão copiados para o cartão de memória. Quando terminar insera o cartão de memória no tablet e ligue-o.


Veja abaixo uma foto da instalação do Uberoid no ibak 784:
Instalação Uberoid v11 - beta 3
Baixe o tutorial completo e saiba como:
1.Calibrar o touch;
2.Mudar o idioma para português Brasil;
3.Configurar a rede sem fio (wifi);
4.Atualizar data e hora;
5.Configurar conta de sincronização do Google;

Google Play, o antigo android market.

O Google Play é o antigo Android Market.

Bem, nem tão antigo assim, porque do dia para noite ele virou Google Play no Brasil. Por quê?

Dois, são os motivos principais para "Google Play" e não "Android Market":

1. Diferenciação Mercadológica:
Quem já comprou um tablet que não é de uma marca famosa sabe que o Android Market que aparece nem sempre é o oficial, existe um Market App que vem em chines, por exemplo;

2. Mais do que uma loja de aplicativos:
Fora do Brasil, o Google Play, oferece mais do que aplicativos para Android ele permite a divulgação e compra de livros e músicas.

Mas, como usar o Google Play?

A idéia é muito simples, você se autentica no Google Play com a sua conta vinculada ao seu smartfone ou tablet, escolhe o que deseja instalar e, pronto! Em poucos instantes o download e a instação é efetuada no seu Android, seja ele celular ou tablet.

Veja abaixo alguns snapshots do que acontece no seu Android quando pede para instalar algum aplicativo pelo Google Play:

Alguns instantes depois de solicitar a instalação do Messenger WithYou ele já estava sendo baixado no dispositivo.




Mais alguns instantes e o Messenger WithYou estava instalado no dispositivo.

O dispositivo utilizado trata-se de um tablet iBak 784 com Android 2.2 e ROM Universal WM8650 Uberoid v11 BETA3 HcH-[TechKnow.T0xic.nl].

Veja o vídeo ensinando como usar o Google Play:



Como desinstalar um aplicativo do Android 2.2?

Para desinstalar um aplicativo do Android 2.2 siga os seguintes passos:

1. Clique no ícone "Configurações";
3. Selecione a opção "Aplicativos -> Gerenciar Aplicativos";
3. Escolha o arquivo que deseja desinstalar;
4. Clique no botão "Desinstalar" e confirme.

Veja o vídeo que demonstração a desinstalação de um aplicativo:




quinta-feira, 16 de fevereiro de 2012

Rotina de validação de CNS e Número Provisório ORACLE (PL/SQL)


Segue abaixo os scripts para criação de 3 functions no ORACLE para validação de número CNS (Cartão Nacional de Saúde) definitivo e provisório a saber:

1. FCN_CNS_CHECAR_DEFINITIVO;

2. FCN_CNS_CHECAR_PROVISORIO;

3. FCN_CNS_CHECAR;




O único detalhe é que a function "FCN_CNS_CHECAR" deve ser criada por último, já que ela faz referência as outras duas functions.





create or replace function FCN_CNS_CHECAR_DEFINITIVO(P_NUM_CNS IN VARCHAR2) 
  return boolean is
/*******************************************************************************/
/* Objetivo.........: Checa se o número CNS definitivo é válido                */
/* Autor............: Flavio Barbosa                                           */
/* Parametros.......: P_NUM_CNS = Número do CNS a ser validado                 */
/* Retorno..........: True (1), se for válido; False (0), se for inválido      */        
/* Documento de Base: http://cartaonet.datasus.gov.br/downloadsNovo.asp        */
/* Visite também....: http://www.ciaware.com.br                                */
/*******************************************************************************/
  v_num_cns varchar2(16) := '';
  pis       varchar2(16) := '';
  resto     integer := 0;
  dv        integer := 0;
  soma      number := 0;
  resultado varchar2(16) := '';
  result    boolean := true;
begin

  v_num_cns := trim(P_num_cns);
  
  if ( length( v_num_cns )=15) then
    pis := substr( V_NUM_CNS,1,11);
    soma:=  ( ( to_number( substr( pis, 1, 1 ) ) ) * 15 ) +
            ( ( to_number( substr( pis, 2, 1 ) ) ) * 14 ) +
            ( ( to_number( substr( pis, 3, 1 ) ) ) * 13 ) +
            ( ( to_number( substr( pis, 4, 1 ) ) ) * 12 ) +
            ( ( to_number( substr( pis, 5, 1 ) ) ) * 11 ) +
            ( ( to_number( substr( pis, 6, 1 ) ) ) * 10 ) +
            ( ( to_number( substr( pis, 7, 1 ) ) ) * 9 ) +
            ( ( to_number( substr( pis, 8, 1 ) ) ) * 8 ) +
            ( ( to_number( substr( pis, 9, 1 ) ) ) * 7 ) +
            ( ( to_number( substr( pis, 10, 1 ) ) ) * 6 ) +
            ( ( to_number( substr( pis, 11, 1 ) ) ) * 5 );

    resto:= soma mod 11;
    dv     := 11 - resto;

    if dv = 11 then
       dv:= 0;
    end if;

    if dv = 10 then
      soma:=  ( ( to_number( substr( pis, 1, 1 ) ) ) * 15 ) +
              ( ( to_number( substr( pis, 2, 1 ) ) ) * 14 ) +
              ( ( to_number( substr( pis, 3, 1 ) ) ) * 13 ) +
              ( ( to_number( substr( pis, 4, 1 ) ) ) * 12 ) +
              ( ( to_number( substr( pis, 5, 1 ) ) ) * 11 ) +
              ( ( to_number( substr( pis, 6, 1 ) ) ) * 10 ) +
              ( ( to_number( substr( pis, 7, 1 ) ) ) * 9 ) +
              ( ( to_number( substr( pis, 8, 1 ) ) ) * 8 ) +
              ( ( to_number( substr( pis, 9, 1 ) ) ) * 7 ) +
              ( ( to_number( substr( pis, 10, 1 ) ) ) * 6 ) +
              ( ( to_number( substr( pis, 11, 1 ) ) ) * 5 ) + 2;
      resto:= soma mod 11;
      dv     := 11 - resto;
      resultado:= pis || '001' || to_char( dv );
    else
      resultado:= pis || '000' || to_char( dv );
    end if;
    result := (V_NUM_CNS = resultado);
  end if;
  
  return(Result);
end FCN_CNS_CHECAR_DEFINITIVO;
/

create or replace function FCN_CNS_CHECAR_PROVISORIO(P_NUM_CNS IN VARCHAR2) 
  return boolean is
/*******************************************************************************/
/* Objetivo.........: Checa se o número CNS provisório é válido                */     
/* Autor............: Flavio Barbosa                                           */          
/* Parametros.......: P_NUM_CNS = Número do CNS a ser validado                 */       
/* Retorno..........: True (1), se for válido; False (0), se for inválido      */          
/* Documento de Base: http://cartaonet.datasus.gov.br/downloadsNovo.asp        */          
/* Visite também....: http://www.ciaware.com.br                                */          
/*******************************************************************************/
  v_num_cns varchar2(16) := '';
  resto     integer := 0;
  soma      number := 0;
  result    boolean := false;
begin


  v_num_cns := trim(P_num_cns);
  
  if ( length( v_num_cns )=15) then




    soma:=  ( ( to_number( substr( V_NUM_CNS, 1, 1 ) ) ) * 15 ) +
            ( ( to_number( substr( V_NUM_CNS, 2, 1 ) ) ) * 14 ) +
            ( ( to_number( substr( V_NUM_CNS, 3, 1 ) ) ) * 13 ) +
            ( ( to_number( substr( V_NUM_CNS, 4, 1 ) ) ) * 12 ) +
            ( ( to_number( substr( V_NUM_CNS, 5, 1 ) ) ) * 11 ) +
            ( ( to_number( substr( V_NUM_CNS, 6, 1 ) ) ) * 10 ) +
            ( ( to_number( substr( V_NUM_CNS, 7, 1 ) ) ) * 9 ) +
            ( ( to_number( substr( V_NUM_CNS, 8, 1 ) ) ) * 8 ) +
            ( ( to_number( substr( V_NUM_CNS, 9, 1 ) ) ) * 7 ) +
            ( ( to_number( substr( V_NUM_CNS, 10, 1 ) ) ) * 6 ) +
            ( ( to_number( substr( V_NUM_CNS, 11, 1 ) ) ) * 5 ) +
            ( ( to_number( substr( V_NUM_CNS, 12, 1 ) ) ) * 4 ) +
            ( ( to_number( substr( V_NUM_CNS, 13, 1 ) ) ) * 3 ) +
            ( ( to_number( substr( V_NUM_CNS, 14, 1 ) ) ) * 2 ) +
            ( ( to_number( substr( V_NUM_CNS, 15, 1 ) ) ) * 1 );


    resto:= soma mod 11;


result := (resto=0);

  end if;
  
  return(Result);
end FCN_CNS_CHECAR_PROVISORIO;
/



CREATE OR REPLACE FUNCTION FCN_CNS_CHECAR (V_Num_Cns in Varchar2)
    Return Boolean
/*******************************************************************************/
/* Objetivo.......: Checa se o n. CNS é definitivo ou provisório e se é válido */
/* Autor..........: Flavio Barbosa                                             */
/* Parametros.....: P_NUM_CNS = Número do CNS a ser validado                   */
/* Retorno........: True (1), se for válido; False (0), se for inválido        */
/* Documento Base.: http://cartaonet.datasus.gov.br/downloadsNovo.asp          */
/* Visite também..: http://www.ciaware.com.br                                  */        /*******************************************************************************/
As
  Soma    number;
  Result  boolean := false;
Begin


  If ((Trim(V_Num_Cns) Is Not Null) And (Length(Trim(V_Num_Cns)) = 15)) Then
    IF (SUBSTR( TRIM(V_NUM_CNS), 1, 1) IN ( '8', '9' )) THEN
       Result := FCN_CNS_CHECAR_PROVISORIO( V_NUM_CNS );
    ELSE
       Result := FCN_CNS_CHECAR_DEFINITIVO( V_NUM_CNS );
    END IF;
  End If;


  Return( Result );
  
Exception When Others 
    Then Return (False);
End FCN_CNS_CHECAR;
/










Rotina de validação de CNS e Número Provisório C# (CSharp)

Segue abaixo a classe estática CartaoNacionalSUS para validação de número CNS (Cartão Nacional de Saúde) definitivo e provisório.
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Inicio


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

/// <summary>
/// A classe estática "CartaoNacionalSUS" foi criada por Flávio Barbosa 
/// Objetivo: Validar o número do Cartão Nacional de Saúde (CNS)
/// Documento base: http://cartaonet.datasus.gov.br/downloadsNovo.asp
/// Visite também: http://www.ciaware.com.br
/// </summary>
public static class CartaoNacionalSUS
{

    /// <summary>
    /// Verifica se o número CNS informado é definitivo ou provisório e se ele é válido [FB]
    /// </summary>
    /// <param name="cns">Número de CNS a ser checado</param>
    /// <returns>True, se o número é válido; False, se for inválido.</returns>
    public static bool chkNumeroCNS(string cns)
    {
        bool result = false;

        cns = cns.Trim();


        if ((cns.Substring(0, 1) == "8") || (cns.Substring(0, 1) == "9"))
        {
            result = CartaoNacionalSUS.chkNumeroProvisorio(cns);
        }
        else
        {
            result = CartaoNacionalSUS.chkNumeroDefinitivo(cns);
        }

        return result;
    }


    /// <summary>
    /// Verifica se um número CNS provisório é válido [FB]
    /// </summary>
    /// <param name="cns">Número de CNS a ser checado</param>
    /// <returns>True, se o número é válido; False, se for inválido.</returns>
    public static bool chkNumeroProvisorio(string cns)
    {
        bool result = false;

        try
        {
            cns = cns.Trim();

            if (cns.Trim().Length == 15)
            {



                float resto, soma;

                soma=  ( ( Convert.ToInt64( cns.Substring(0, 1 ) ) ) * 15 ) +
                        ((Convert.ToInt64(cns.Substring(1, 1))) * 14) +
                        ((Convert.ToInt64(cns.Substring(2, 1))) * 13) +
                        ((Convert.ToInt64(cns.Substring(3, 1))) * 12) +
                        ((Convert.ToInt64(cns.Substring(4, 1))) * 11) +
                        ((Convert.ToInt64(cns.Substring(5, 1))) * 10) +
                        ((Convert.ToInt64(cns.Substring(6, 1))) * 9) +
                        ((Convert.ToInt64(cns.Substring(7, 1))) * 8) +
                        ((Convert.ToInt64(cns.Substring(8, 1))) * 7) +
                        ((Convert.ToInt64(cns.Substring(9, 1))) * 6) +
                        ((Convert.ToInt64(cns.Substring(10, 1))) * 5) +
                        ((Convert.ToInt64(cns.Substring(11, 1))) * 4) +
                        ((Convert.ToInt64(cns.Substring(12, 1))) * 3) +
                        ((Convert.ToInt64(cns.Substring(13, 1))) * 2) +
                        ((Convert.ToInt64(cns.Substring(14, 1))) * 1);

                resto = soma % 11;

                result = (resto == 0);
            }

        }
        catch (Exception)
        {
            result = false;
        }


        return result;
    }


    /// <summary>
    /// Verifica se um número CNS definitivo é válido [FB]
    /// </summary>
    /// <param name="cns">Número de CNS a ser checado</param>
    /// <returns>True, se o número é válido; False, se for inválido.</returns>
    public static bool chkNumeroDefinitivo(string cns)
    {
        bool result = false;

        try
        {
            if (cns.Trim().Length == 15)
            {

                float resto, soma, dv;

                string pis = string.Empty;
                string resultado = string.Empty;

                pis = cns.Substring(0, 11);

                soma = ((Convert.ToInt64(pis.Substring(0, 1))) * 15) +
                        ((Convert.ToInt64(pis.Substring(1, 1))) * 14) +
                        ((Convert.ToInt64(pis.Substring(2, 1))) * 13) +
                        ((Convert.ToInt64(pis.Substring(3, 1))) * 12) +
                        ((Convert.ToInt64(pis.Substring(4, 1))) * 11) +
                        ((Convert.ToInt64(pis.Substring(5, 1))) * 10) +
                        ((Convert.ToInt64(pis.Substring(6, 1))) * 9) +
                        ((Convert.ToInt64(pis.Substring(7, 1))) * 8) +
                        ((Convert.ToInt64(pis.Substring(8, 1))) * 7) +
                        ((Convert.ToInt64(pis.Substring(9, 1))) * 6) +
                        ((Convert.ToInt64(pis.Substring(10, 1))) * 5);


                resto = soma % 11;
                dv = 11 - resto;

                if (dv == 11)
                {
                    dv = 0;
                }

                if (dv == 10)
                {
                    soma = ((Convert.ToInt64(pis.Substring(0, 1))) * 15) +
                            ((Convert.ToInt64(pis.Substring(1, 1))) * 14) +
                            ((Convert.ToInt64(pis.Substring(2, 1))) * 13) +
                            ((Convert.ToInt64(pis.Substring(3, 1))) * 12) +
                            ((Convert.ToInt64(pis.Substring(4, 1))) * 11) +
                            ((Convert.ToInt64(pis.Substring(5, 1))) * 10) +
                            ((Convert.ToInt64(pis.Substring(6, 1))) * 9) +
                            ((Convert.ToInt64(pis.Substring(7, 1))) * 8) +
                            ((Convert.ToInt64(pis.Substring(8, 1))) * 7) +
                            ((Convert.ToInt64(pis.Substring(9, 1))) * 6) +
                            ((Convert.ToInt64(pis.Substring(10, 1))) * 5) + 2;

                    resto = soma % 11;
                    dv = 11 - resto;
                    resultado = pis + "001" + Convert.ToString(Convert.ToInt16(dv)).Trim();
                }
                else
                {
                    resultado = pis + "000" + Convert.ToString(Convert.ToInt16(dv)).Trim();
                }


                result = cns.Equals(resultado);

            }
        }
        catch (Exception)
        {
            result = false;
        }


        return result;
    }

 

}

/// Fim

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



terça-feira, 31 de janeiro de 2012

NOSSO env_uboot PARA O IBAK784

Em resposta ao Alysson que fez o seguinte comentário:


"Baixei,coloquei no cartao de memoria,reiniciei o tablet,instalo ele ai pediu para retirar o cartao de memoria,apareceu uma abelha azul ai saiu dela e apareceu uma tela roxa se desfazendo e nao sai dissu oq devo fazer??"


Resolvemos postar aqui o env_uboot (arquivo que configura os parâmetros de inicialização da ROM) que utilizamos como tentativa de resolver esse problema. Porém, pode ser que a ROM que deu certo para nosso IBAK não dê certo para ti Alysson, ou para outros leitores, isso porque os chips e configurações internas do IBAK não são iguais para todos os aparelhos.

Para substituir o arquivo env_uboot:
1. Acesse a pasta "\FirmwareInstall\env" no seu cartão de memória SD onde está a ROM a ser instalada;
2. Renomei o arquivo "env_uboot" para "env_uboot.bak"
3. Baixe o arquivo "env_uboot-ibak784ciaware.zip" deste link ;
4. Descompacte o arquivo "env_uboot" que está dentro do arquivo compactado "env_uboot-ibak784-ciaware.zip" (esse que acabou de baixar) e o salve  na pasta "\FirmwareInstall\env" no seu cartão de memória SD;
5. Coloque o SD no seu tablet e verifique se deu certo.

Estamos todos torcendo por você Alysson, e por todos aqueles que como nós, adentraram nesse mundo pouco explorado dos tablets IBAKs.

[]´s Flavio Barbosa

terça-feira, 24 de janeiro de 2012

Livro: Excel Avançado

Recentemente nos perguntaram um bom livro de Excel, que não seja tão básico e nem tão avançado que seja impossível de se entender, então segue a dica:

  • Título:  Excel Avançado
  • Autor:  Antonio Fernando Cinto, Wilson Moraes Goes
  • Editora:  NOVATEC
  • Ano de Edição:  2005
  • Nº de Páginas:  254


Clique aqui para comparar preços

terça-feira, 17 de janeiro de 2012

Microsoft Excel: Gerando uma pasta de trabalho a partir de outra pasta de trabalho existente


Conteúdo do PDF:
  • Abrindo uma a pasta de trabalho (.xls) 
  • Conceitos (pasta de trabalho, planilha e célula) 
  • Criando uma coluna calculada 
  • Selecionando os dados (auto-filtro) 
  • Criar e renomear uma planilha 
  • Copiar e Colar 
  • Excluindo, ocultando e reexibindo colunas 
  • Copiando planilha para outra pasta de trabalho (arquivo) 
  • Salvando a nova pasta de trabalho (arquivo)
Baixe o PDF aqui

Veja o vídeo:


sexta-feira, 13 de janeiro de 2012

Não foi possível carregar arquivo ou assembly 'Ext.Net' ou uma de suas dependências.

Não foi possível carregar arquivo ou assembly 'Ext.Net' ou uma de suas dependências. Parâmetro incorreto. (Exceção de HRESULT: 0x80070057 (E_INVALIDARG)) (C:\...\web.config line 82)

Se recebeu esse erro a solução pode ser apenas apagar os arquivos temporários do Framework.NET em:

Windows (S.O.) de 64 bits:

Framework.NET 2.0 a 3.5:
  C:\Windows\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET Files

Framework.NET 4.0:
  C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files




Windows (S.O.) de 32 bits:

Framework.NET 2.0 a 3.5:
  C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files

Framework.NET 4.0:
  C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files



[]´s Flavio Barbosa
Diretor de TI CIAw@re
www.ciaware.com.br

quinta-feira, 5 de janeiro de 2012

Inicialização do IBAK-784 com a ROM Universal Uberoid WM8650 1.5.5 HoneyCombMOD v10.1 e GO Launcher EX (português) instalados

Demonstração da inicialização do ibak 784 com a ROM Universal Uberoid WM8650 1.5.5 HoneyCombMOD v10.1 e GO Launcher EX (português) instalados.


A inicialização demora cerca de 2 minutos.