thegoodfellas/blogset-br huggingface dataset:
de logs do SP. Esse componente pode ser bem simples, onde apenas se escreve o que se quer em um arquivo de log, ou entao pode ser bem complexo definindo niveis dos logs que serao gravados, estrategia de rotate, limite de tamanho e etc. Para essa parte, utilizar um framework de mercado como o log4cxx e uma alternativa bem interessante;Gestor de eventos: o SP e basicamente orientado a eventos, ou seja, ele envia e recebe eventos o tempo todo para poder informar que uma operacao foi concluida ou que um marco foi alcancado no processamento ou ainda que um limite foi atingido;Agendador de requisicoes: o SP tem que ser assincrono conforme os requisitos chaves. Isso quer dizer que qualquer comando que o SP receber devera ser agendado para execucao posterior. Isso e muito importante, pois e preciso prever que um mesmo comando sera chamado varias vezes (varias aplicacoes acessando o SP). Com isso, o agendador precisa implementar uma estrategia de agendamento baseada em fila;Estrutura especifica: Essa parte do SP muda de acordo com a classe de dispositivo e tambem de acordo com a interface do device driver. Essa e a parte do SP que precisa se comunicar efetivamente com o device driver, que e o controlador do dispositivo. Essa parte pode ser projetada de modo que o comportamento especifico da classe XFS seja resolvido junto com a interface do device driver. No entanto, a solucao que mais me agrada e separar as duas coisas; Essa parte do desenvolvimento se concentra inteiramente no documento relativo a classe de dispositivo no qual o SP sera construido. Os componentes mais basicos dessa parte sao:Interface do Device Driver: este e o ponto de acesso ao dispositivo. Entao aqui, em geral, existe uma classe com metodos que dao acesso a funcoes exportadas em uma dll ou lib do device driver que controla o dispositivo;Implementacao da classe de dispositivo XFS: aqui deve ser implementado o comportamento especifico da classe de dispositivo XFS de qual trata o SP. Por exemplo, se o SP for para impressora, entao a classe de dispositivo e a PTR e deve-se entao consultar a especificacao dessa classe no conjunto de documentos XFS. No caso da impressora o documento e CWA13449-3.pdf;CodificacaoAqui a dica e criar um projeto de DLL. Essa DLL precisa exportar as 11 funcoes previstas na especificacao, e toda vez que essas funcoes forem executadas, uma sequencia de acontecimento deve ocorrer no interior do SP. Basicamente a sequencia e a seguinte:Verificar informacoes basicas a cerca dos parametros recebidos e tambem o estado em que se encontra a sessao. Por exemplo, um WFSExecute so pode ser executado apos um WFSOpen. Ainda, se for executado um WFSLock, somente a aplicacao que possui o "lock" podera executar WFSExecute. As demais aplicacoes que nao possuirem o "lock" poderao apenas consultar informacoes, executando, por exemplo WFSGetInfo;Agendar o processamento dessa "solicitacao", armazenando todos os parametros da chamada em uma fila;Retornar WFS_SUCCESS para a chamada da funcao. Obviamente esse retorno significa apenas: "Ok, tudo certo ate aqui, eu posso processar sua requisicao...". Caso nao seja esse o caso, precisa entao
ser retornado um codigo de erro que melhor indique o motivo pelo qual a solicitacao nao pode ser atendida;Assim que possivel, retirar solicitacoes da fila, analisar seus parametros e processa-los de acordo com a especificacao para aquela classe de dispositivo. O resultado do processamento e SEMPRE um evento. Ou seja, mesmo que o resultado do processamento seja um erro, um evento deve ser gerado para o XFS Manager, informando-o desse resultado. Esse evento nada mais e do que uma mensagem windows, direcionada para o handle indicado nos parametros da chamada. Claro que isso aqui e uma aproximacao simplista. De fato, existem mais questoes envolvidas aqui como: verificar se nao foi atingido o timeout para execucao da solicitacao, lancar eventos intermediarios, notificar aplicacoes ouvintes que se registram para receber certo tipos de eventos e etc;TestesBom, para testar o SP e necessario uma aplicacao XFS para a classe de dispositivo em questao. Essa parte e bem mais facil, e e possivel construir rapidamente essa aplicacao de testes. A aplicacao pode ser inclusive construida para operar com uma interface de linha de comando. Para fazer essa construcao basta utilizar o documento 1 da especificacao, buscando informacoes sobre as funcoes WFSXXXX contidas no capitulo 4 (Application Programming Interface (API) Functions). A sequencia basica de comandos para uma aplicacao XFS e a seguinte:WFSStartUp;WFSOpen;A partir dai, e possivel executar os comandos especificos da classe utilizando os comandos WFSExecute e WFSGetInfo.E isso. Te mais!!!
Ola leitores. Hoje vou falar um pouco sobre as tendencias relacionadas ao uso do ATM, em face da grande disseminacao dos servicos bancarios atraves de dispositivos Web (smartphones, TVs e etc), e tambem do dinheiro de plastico (cartoes de debito, credito, beneficios e etc).O primeiro ATM parecido com o que usamos hoje foi criado pela IBM em 1972. Desde essa epoca, o ATM tem ganho novas funcionalidades e servicos o que contribuiu para sua expansao ate aqui. O ATM levou a agencia bancaria para outras localidades: para dentro do shopping, para a esquina das ruas e ate para pequenos comercios e postos de gasolina. Enfim, o ATM se tornou indispensavel para nossas vidas como a conhecemos, e e dificil pensar em algo mais comodo do que essa elegante solucao tecnologica. Sera? Precursor do ATM, inventado por Luther George Simjian e apresentado ao publico em 1961.Estamos vivendo um momento muito excitante de fato, com varias tecnologias convergindo, e a Web 2.0 dirigindo a segunda grande onda da Internet, onde praticamente qualquer dispositivo eletronico, desde TVs, smartphones, passando ate por microondas e geladeiras, saem de fabrica com a capacidade de nos colocar on-line com milhoes de outros usuarios no mundo. O Internet Banking nao poderia deixar de se beneficiar dessa oportunidade de aumentar sua penetracao, e e isso o que de fato esta ocorrendo. No meu ultimo post (CIAB 2011) eu mostrei um grafico da Febraban que mostra como vem aumentando o uso do Internet Banking. Seu crescimento tem sido muito grande, e e provavel que dentro de poucos anos seu uso supere o uso dos ATMs, mostrando entao a importancia desse canal para os bancos, e apontando tambem para onde esses devem direcionar seus investimentos nos proximos anos. Isso e um fato, praticamente todos os bancos alem de manter seu Internet Banking bem atualizado, tambem mantem uma versao para smartphones e tablets (chamado tecnicamente de Mobile Banking), e bancos como o Bradesco agora trazem versoes de seu Internet Banking para as TVs Inteligentes que tem invadido o mercado.Ainda na onda da comodidade maxima, outros meios de pagamento tem enorme destaque, e com importancia cada vez mais crescente. Os cartoes como forma de pagamento estao presentes de diversas formas em nossa vida: credito, debito, alimentacao, refeicao, transporte e etc. Junto com o cheque, todas essas formas do dinheiro diminuem a necessidade de se andar com "dinheiro real" no bolso. Afinal, todos eles sao uma substituicao ao dinheiro em sua forma fisica mais tradicional (cedulas e moedas).E ainda tem mais. Mobile Payment, que e o uso do celular para realizar pagamentos. Essa modalidade tem ganho cada vez mais importancia, e os principais empresarios do setor de meios de pagamento acreditam que Mobile Payment sera amplamente usado dentro dos proximos 4 anos.Isso tudo estabelece o contexto no qual eu defini o titulo deste post. Qual e o futuro do ATM afinal, considerando que tudo aponta para uma perspectiva na qual o uso do dinheiro em especie perdera cada vez mais a importancia? Afinal, sacar dinheiro e um dos poucos servicos que nao e possivel de ser
realizado via Internet Banking, da comodidade de sua poltrona na sala de estar.Novos rumos para o ATM E dificil prever quando o ATM perdera efetivamente o seu papel atual como repositor do nosso dinheiro guardado pelos bancos, mas e provavel que isso ocorrar a partir do momento em que nao mais precisarmos usa-lo em especie. O ponto e que ainda hoje boa parte da populacao recebe seu salario em especie, e o pagamento em especie e ainda o grande preferido da maioria esmagadora da populacao. Com isso, o ATM ainda tem uma boa sobrevida com seus servicos atuais ligados ao saque e deposito de dinheiro ou cheque. Alem disso, comparando com o mundo, ha um amplo espaco de crescimento do numero de ATMs aqui no Brasil. A densidade de ATMs por milhoes de pessoas aqui e cerca de 700 ATMs por milhao de pessoas enquanto nos Estados Unidos esse numero e cerca de 1400.O que parece razoavel que ocorra e um aproveitamento melhor da base instalada de ATMs, para servir a populacao com uma variedade maior de servicos como: Pagamento de contas em qualquer ATM de qualquer banco. Essa e uma funcionalidade tipica de correspondente bancario, e embora existam algumas dificuldades tecnicas, essa e uma funcionalidade possivel de ser implantada;Recarga do Bilhete Unico e similares;Compra de ingressos para cinema e teatro;etc.Os maiores entraves tecnologicos para a ampliacao da oferta de servicos nos ATMs, principalmente, multi-instituicoes, esta ligado a problemas de integracao.Maior InteratividadeO que parece ser ainda mais provavel e o aumento da interatividade das aplicacoes de autoatendimento. Aplicacoes Web (baseadas em Browser), ja sao uma realidade e a tendencia e que se aumente o uso desse tipo de aplicacao, para poder usar recursos avancados de interatividade oferecidos por tecnologias Web como HTM5, CSS, Javascript e etc. Abaixo segue um video do YouTube, de autoria do BBVA do Mexico, mostrando um exemplo de como a aplicacao de autoatendimento poderia ser mais interativa, e ate mesmo o hardware do ATM com bastante mudancas interessantes. Tivemos algo bem parecido com isso tambem na CIAB deste ano:E isso :)
Ola leitores. Hoje trago um projeto simples de placa de sensores e leds, baseado na plataforma Arduino. O bacana desse projeto e que ele pode servir de base para exercitar varios dos conceitos que utilizamos na automacao bancaria. Por exemplo, podemos criar um device driver para controlar essa placa, e depois podemos criar um service provider implementando a classe SIU do XFS.Antes de falar sobre o projeto, vou falar um pouco sobre a plataforma Arduino. Aqueles que gostam de eletronica certamente ja ouviram falar de Arduino. Trata-se de uma plataforma para prototipagem de projetos de eletronica, muito utilizado tambem por entusiastas do "faca voce mesmo". O Arduino e open source e e facil. Existe uma infinidade de versoes de placa Arduino, originais e compativel, que variam basicamente em relacao a quantidade de entradas e saida que a placa pode controlar. Tambem existe uma infinidade de modulo de hardware, como sensores, motores DC e outros tipos de atuadores, que voce acopla a sua placa Arduino facilmente. Na parte da programacao, existem muitas bibliotecas prontas que voce pode reutilizar, e que vao auxilia-lo na codificacao do seu firmware, usando o compilador do Arduino que e simples e bem intuitivo. Talvez a versao de placa Arduino mais comum seja a Arduino Unon da imagem a seguir. Essa e, inclusive, a versao de placa utilizada no nosso projeto.Existem placas Arduino originais (como essas da imagem) e existem tambem aquelas que sao compativeis. Como se trata de um projeto open source, qualquer pessoa um pouco mais habil em eletronica pode criar a sua propria "construcao" de placa Arduino. Assim, existem na Internet uma infinidade de placas compativeis. Pode haver algumas variacoes de qualidade dos materiais e ate mesmo em formato dos conectores, mas as placas compativeis tem basicamente as mesmas capacidades da placa Arduino original. Geralmente elas sao mais baratas, entao a escolha vai de cada um. Eu, por exemplo, preferi comprar a versao original ate como uma forma de incentivo ao projeto Arduino. Dai que minha placa e original e enviada direto da Italia.Pois bem, abaixo exibo o esquema da placa de sensores e leds, mas antes de prosseguirmos fica um alerta: sou apenas um simples entusiasta de eletronica, nao um engenheiro eletronico. Entao, me perdoem por eventuais faltas de otimazacao nesse circuito. O conceito desse esquema e servir a um Terminal de Consulta (kiosk), dotado de uma porta (para acesso ao micro, impressora e demais dispositivos), uma leitora de cartoes, uma impressora termica, sinalizacao luminosa e sonora, sensoriamento de luz, temperatura e nivel.A esquerda do esquema vemos a placa Arduino Uno. O projeto poderia ser feito com outras placas Arduino, inclusive com as versoes menores como a Arduino Nano. Eu escolhi a Arduino Uno porque e esse o modelo que tenho em casa. Os demais componentes do projeto sao:Leds: o objetivo desses leds e a sinalizacao para o usuario. Nesse projeto, eu considero que um desses leds e para indicar a insercao de cartao na leitora e o outro para indicar a saida de papel na impressora termica;Buzzer: sinalizacao sonora para o usuario. Por exemplo:
uma vez para cada carregamento, seja quando a placa e ligada ou quando e resetada. E um bom local para inicializacao de variaveis e configuracoes em geral, ja que sera executado apenas uma vez. No exemplo acima, eu estou configurando os pinos que estarei utilizando, indicando quais serao pinos de entrada e quais serao de saida. Configuro tambem a velocidade da comunicacao Serial e o tamanho do LCD que esta acoplado a placa Arduino; A funcao loop() sera executada eternamente em laco, ou seja, assim que ela terminar sua execucao, o microntrolador a executara novamente desde o inicio. Portanto, e nessa funcao que a inteligencia do firmware devera ser programada. No exemplo acima, eu verifico se ha dados disponiveis na porta serial e os leio. Depois disso utilizo sub-funcoes (nao exibidas ai nesse exemplo), para processar o dado recebido na porta Serial. Por fim, eu escrevo no LCD todas essas informacoes e finalizo o loop processando tarefas que estiverem pendentes. O firmware desse projeto foi programado para responder a seguinte lista de comandos:Basicamente temos:Comando "S": comando de leitura do status dos sensores. A resposta e uma String no formato "Sddddd", onde 'd' pode ser 0 ou 1, de acordo com o estado do sensor. Para os sensores de valores continuos como o sensor de temperatura e luz, foi configurado um valor limite para considerar quando a resposta deve variar entre 0 e 1;Comando "LCd": comando para ligar/desligar LED da leitora de cartao. A posicao 'd' pode ser 0, para desligar, 1 para ligar ou 2 para ligar piscante;Comando "LPd": comando para ligar/desligar LED da impressora termica. A posicao 'd' pode ser 0, para desligar, 1 para ligar ou 2 para ligar piscante;Comando "Ad": comando para ligar/desligar BUZZER. A posicao 'd' pode ser 0, para desligar, 1 para ligar ou 2 para ligar alarme;Acessando o projeto "Sensor and Led's Board" voce consegue visualizar o codigo completo do firmware. Voce consegue tambem executar e simular esse projeto, para exercitar esses comandos e o comportamento dos sensores e atuadores previstos no projeto. Basta cliclar em "Start Simulation", para que o circuito seja "ligado":Clicando em "Code Editor" voce tem acesso ao codigo fonte e tambem ao "Serial Monitor":Por meio do "Serial Monitor" voce pode simular o envio de dados na porta serial da placa. Basta digitar um texto e clicar em "Send". Com isso, voce envia as Strings dos comandos mencionados anteriormente para ver o circuito ganhar vida. Exemplo: envie "S" para obter os status dos sensores. Envie "A2" para ouvir o BUZZER alarmar, e "LC1" ou "LP1" para ligar um dos LEDs. Se voce tiver esses componentes em casa e uma placa Arduino, voce pode tambem baixar o codigo fonte do firmware nesse mesmo link e instala-lo no seu Arduino e dai fazer o teste no teu proprio hardware.Com esses comandos basicos essa placa permite criar, por exemplo, um Service Provider XFS, que poderia ser facilmente integrado em uma aplicacao FrontEnd para um Terminal de Consulta (kiosk). Para isso, basta primeiro criar um Device Driver para controlar essa placa. Ou seja, uma interface de comandos
de alto nivel que possam ser mais facilmente integradas em outro software. Poderiamos ter nesse Device Driver apenas duas funcoes publicas:String readSensor();void setIndicator(int indicatorID, int indicatorValue)Com um device driver pronto, basta escrever um Service Provider XFS da classe SIU (Sensors and Indicator Unit Device), cuja especificacao esta contida no documento CWA 10 de cada versao da especificacao XFS. Essa especificacao pode ser baixada aqui, na sua versao mais recente: CWA 16926-10.E isso. Espero que aproveitem esse projeto e facam suas proprias experiencias.Ate mais!!!
Ola leitores,Estive presente a mais uma edicao do CIAB (Congresso Internacional de Automacao Bancaria), e vou contar um pouco do que vi.O CIAB e principal evento brasileiro para o setor de automacao bancaria. E tao importante, que e quase obrigatorio para uma empresa desse setor, participar do evento, seja com stand proprio, ou via parceria com outras empresas. Ele e promovido pela FEBRABAN (Federacao Brasileira de Bancos), e ocorre todos os anos no mes de Junho no Transamerica Expo Center. Na edicao de 2011 o CIAB trouxe o tema: "A tecnologia alem da Web".A escolha do tema foi acertada, das 56 bilhoes de transacoes bancarias realizadas em 2010, 23% foram realizadas via Internet Banking. Por outro lado, Mobile Banking teve um avanco de 72%, com 2,2 milhoes de contas (clientes que se cadastraram para acessar as contas via celular). Embora o canal de Internet Banking, e suas variacoes, ainda nao seja o canal mais importante, o crescimento que tem sido experimentado sugere que logo ele desbancara o canal ATMs. Vejam o grafico que mostra as transacoes bancarias por origem:Por isso mesmo, muitas empresas levaram e mostraram solucoes para esse canal. Eu vi solucoes para desenvolvimento de aplicacoes para celular, implementacao de seguranca junto a esses dispositivos, e ate como levar essas mesmas aplicacoes para outros dispositivos como a TV de sua sala, explorando bem o conceito de "Internet das Coisas".Uma caracteristica comum que eu notei nas solucoes todas apresentadas nos stands foi: Convergencia Tecnologica. Isso sempre foi desejavel e necessario quando se fala em tecnologia (ja que reinventar a roda nem sempre faz sentido). A novidade agora e a grande quantidade de novas tecnologias em diversas areas, todas elas ligadas a conectividade ou interacao homem-maquina e dai a convergencias dessas coisas todas criou solucoes conceituais que tiveram grande destaque durante o evento. Um exemplo disso foi um ATM exposto pela Itautec, onde o cliente podia controlar a aplicacao sem tocar no ATM. Ou seja, utilizou a nova tecnologia de sensor de movimento introduzida pelos consoles de games (como Kinect e Playstation Move), e criaram um conceito interessante. Ja a Diebold trouxe um "ATM like iPhone", onde a experiencia touch screen foi elevada a um nivel muito maior do que ate entao se via em ATMs, e o cliente podia interagir com uma aplicacao muito mais interativa, em um terminal com um design realmente futurista (voce nao via de onde saia o dinheiro ou onde se introduzia o cartao, ate o momento derradeiro em que esses dispositiviso eram acionados). Muitas dessas coisas que vemos nesse tipo de evento, sao apenas conceitos mas, assim como na industria automobilistica, apresentar conceitos e importante! Pois e a partir desses conceitos e de sua aceitacao junto ao publico, e que novos produtos e solucoes sao efetivamente criados, empacotados e vendidos. Visitei os stands dos principais fornecedores de ATMs do pais que, em geral, mostraram poucas novidades em termos de equipamentos novos. Na verdade, fora a parte de conceitos (no caso da Diebold e Itautec), vi muito do que ja tinha vistos em 8 edicoes anteriores da CIAB
das quais participei, que e uma base de ATMs com funcionalidades que pouco se alteram. O que para uns foi novidade, como equipamentos com a funcionalidade de deposito inteligente e recicladores (equipamentos onde o dinheiro depositado e utilizado na dispensa), na verdade existem ha anos. No Espaco Inovacao foi onde encontrei novidades, como por exemplo, a solucao da DWS Sistemas. Ela criou uma solucao que permite dispensar, simultaneamente, folhas avulsas de cheque, numerario (dinheiro), e outros documentos personalizados para o cliente. Tudo isso usando a base ja instalada de equipamentos, com baixissimo impacto em ajustes de hardware e software para implantacao da solucao. A solucao foi tao inovadora, que eles ganharam o Premio Espaco Inovacao desta edicao.Por fim, nao posso deixar de citar a iniciativa da FEBRABAN, em premiar jovens talentos. Pelo segundo ano consecutivo o evento realizou o Premio CIAB FREBRABAN, que neste ano premiou o trabalho intitulado 2Wish, de Andre Martins (meu colega de curso no IPT). A proposta do sistema concebido pelo Andre, e um extrato bancario associado a uma lista de desejos, o qual ajuda planejar os gastos e planejar os investimentos. Bastante interessante a ideia, e com grande potencial de se transformar em um utilitario das novas versoes de Internet Banking dos principais bancos do pais.Como eu estava a trabalho, eu realmente nao pude visitar cada um dos mais de 136 stands do evento este ano. Mas,o que eu vi me agradou muito.Bem, e isso :)
mesmo hardware periferico utilizado para ainterface do usuario Cliente (ex.: monitor). Quer dizer, em equipamentosdotados de painel do operador, um dispositivo especializado contendo um tecladoe um display, e o responsavel por prover a interface necessaria para o operadoroperar o terminal a partir da de sua parte traseira. Esse tipo de configuracaoe tipico em ambiente de agencia bancaria, onde os terminais ficam posicionadospor traz de um drywall, com apenas sua parte frontal sendo exposta aosclientes. Nessa configuracao, o operador trabalha na parte de traz do drywall,separado do contato com o cliente, mantendo a seguranca da operacao e oconforto dos clientes tambem. Ja quando os terminais estao em ambientes deshoppings ou lojas de conveniencia, e comum que o terminal fique encostado emuma parede, impedindo sua operacao traseira. Nesse tipo de configuracao, nao haum painel adicional e o operador devera realizar suas operacoes por meio damesma tela e teclado operados pelo cliente.E isso. Ate mais.