Resolvendo problemas na impressão da DANFe – ACBr

Esta semana eu e um colega de trabalho passamos um sufoco com a impressão da DANFe com ACBr e Fast Report. Sempre que chamava o método de visualização do pdf, ocorria o erro:

cdsIdentificacao: Missing dataset provider

 

Na primeira ocasião, o problema estava no formulário que estava sendo criado automaticamente na inicialização do projeto. Até aí tudo bem, mas como a tela seria usada num outro módulo o erro voltou a ocorrer.

O que fazer? Simples, na unit ACBrNFeDANFEFRDM.pas, no componente frxReport carregue o arquivo danfe.fr3 e salve. Refaça um build do projeto e estará tudo ok.

Espero ter ajudado 😉

Anúncios

Capturando imagens da webcam com Python

Rapaz, há quanto tempo não posto aqui. 😛

Me surgiu a ideia de capturar pela webcam do notebook a imagem de quem logou no meu computador (futuramente tentarei implementar caso tente logar sem sucesso). Fuçando no google achei este exemplo usando PyGame.

#! /usr/bin/python

import pygame, sys
import pygame.camera
import time

WEBCAM_DIR = "/home/simasware/Imagens/Webcam"

pygame.init()
pygame.camera.init()
cam = pygame.camera.Camera("/dev/video0", (640,480))

# pegando foto da webcam

cam.start()
image = cam.get_image()
cam.stop

timestamp = time.strftime("%d-%m-%Y_%H-%M-%S", time.localtime())
filename = "%s/%s.jpg" % (WEBCAM_DIR, timestamp)

# salvando a imagem
pygame.image.save(image, filename)

print "Salvo"

Pensei em colocar no topo da imagem capturada a data e hora. Pesquisando achei a função blit:


# imprime a data/hora na imagem

font = pygame.font.SysFont("monospace",15) #carrega fonte
label = font.render(timestamp, 1, (255,255,255)) #renderiza
image.blit(label, (16,16)) #imprime o texto na imagem capturada pela webcam

Pra instalar o PyGame no Ubuntu basta rodar no bash:


sudo apt-get install python-pygame

Resultado:

18-10-2014_00-29-04

Resolvendo problema de “variant or safe array is locked” no Delphi

Boa noite!

Pode acontecer em alguns casos ao carregar um arquivo XML pelo Delphi o erro de variant or safe array is locked. O problema ocorre devido o arquivo MIDAS.DLL estar desatualizado.

Caso você atualize o arquivo e mesmo assim o problema persiste, na unit onde você faz uso do Client Data Set com xml basta adicionar a uses midaslib.

Fácil de resolver, porém me levou um certo tempo para descobrir. 😉

Abraços e até a próxima.

Organize seu dia com Any.do, um excelente app de TODO List.

Você é como eu que vive esquecendo as coisas que tem a fazer? Ou precisa lembrar diariamente de tomar seu remédio? Existem muitas apps para Android que podem te ajudar a lembrar você na suas tarefas diárias, semanais ou mensais. Porém a melhor de todas que já testei até hoje é a Any.do.

anydo

Disponível no Google Play (na App Store da Apple também), possui integração com Google Chrome através de extensão que permite adicionar e executar tarefas que são sincronizadas nos seus gadgets que possuem o any.do instalado.

Diferente dos outros apps de TODO list que usei, o any.do avisa no horário que você definiu com um sinal sonoro. Há também uma função que em determinada hora do dia (que você configura) ele pede que você “tire um tempo” para organizar suas tarefas do dia.

Baixar pelo Google Play

Pluralização em PT-BR – Rails

Ao criar-se um model/controller/view no Rails é comum o framework efetuar a pluralização do nome escolhido. Porém como a pluralização padrão segue as regras da língua inglesa, algumas palavras podem sairem erradas.

Para contornar o problema basta adicionar as regras do nosso idioma no arquivo inflections.rb presente nas pasta config/initializers.
Abaixo segue um modelo de inflections que encontrei na web

# Be sure to restart your server when you modify this file.

# Add new inflection rules using the following format
# (all these examples are active by default):
# ActiveSupport::Inflector.inflections do |inflect|
#   inflect.plural /^(ox)$/i, '\1en'
#   inflect.singular /^(ox)en/i, '\1'
#   inflect.irregular 'person', 'people'
#   inflect.uncountable %w( fish sheep )
# end
#
# These inflection rules are supported but not enabled by default:
# ActiveSupport::Inflector.inflections do |inflect|
#   inflect.acronym 'RESTful'
# end
ActiveSupport::Inflector.inflections do |inflect|
inflect.clear

#general rule: add "s" to the end of the word
#casa - casas
inflect.plural /^([a-zA-z]*)a$/i, '\1as'
#pe - pes
inflect.plural /^([a-zA-z]*)e$/i, '\1es'
#no example
inflect.plural /^([a-zA-z]*)i$/i, '\1is'
#carro - carros
inflect.plural /^([a-zA-z]*)o$/i, '\1os'
#pneu - pneus
inflect.plural /^([a-zA-z]*)u$/i, '\1us'

#if word ends in "r" or "z", add "es"
#luz - luzes
#flor - flores
#arroz - arrozes
inflect.plural /^([a-zA-z]*)r$/i, '\1res'
inflect.plural /^([a-zA-z]*)z$/i, '\1zes'

#if word ends in "al", "el", "ol", "ul": trade "l" with "is"
#farol - farois
#hospital - hospitais
#telemovel - telemoveis
#pincel - pinceis
#anzol - anzois
inflect.plural /^([a-zA-z]*)al$/i, '\1ais'
inflect.plural /^([a-zA-z]*)el$/i, '\1eis'
inflect.plural /^([a-zA-z]*)ol$/i, '\1ois'
inflect.plural /^([a-zA-z]*)ul$/i, '\1uis'

#if word ends in "il" and has tónic accent in last syllable, trade "il" with "is"
#cantil - cantis
inflect.plural /^([a-zA-z]*)il$/i, '\1is'

#TODO
#if word ends in "il" and has tónic accent in penultimate syllable, trade "il" with "eis"
#no example

#if word ends in "m", trade "m" with "ns"
#armazem - armazens
#portagem - portagens
inflect.plural /^([a-zA-z]*)m$/i, '\1ns'

#TODO
#if word ends in "s" and has one silable, trade "s" with "es"
#no example
#inflect.plural /^([a-zA-z]*)e$/i, '\1es'

#TODO
#if word ends in "x" stays the same
#no example... professor X, maybe?
#inflect.plural /^([a-zA-z]*)x$/i, '\1x'

#if word ends in "ão", there are three ways of plural: ãos, ães, ões
#NOTE: hard to detect, so I'll use the most common case
#and then use irregular cases for the others. if someone knows of
#more cases please add to the list & mail me. thanks!
#
#cão - cães
#colchão - colchões
#portão - portões
#pão - pães
#alemão - alemães
#chão - ?
#pilhão - pilhões
#canhão - canhões
#bidão - bidões
#mão - mãos
inflect.plural /^([a-zA-z]*)ao$/i, '\1oes'
inflect.irregular 'cao', 'caes'
inflect.irregular 'pao', 'paes'
inflect.irregular 'mao', 'maos'
inflect.irregular 'alemao', 'alemaes'
inflect.irregular 'perfil_permissao', 'perfil_permissoes'

############################
#singularize rules #
############################

#pes - pe
#carros - carro
#pneus - pneu
inflect.singular /^([a-zA-z]*)as$/i, '\1a'
inflect.singular /^([a-zA-z]*)es$/i, '\1e'
inflect.singular /^([a-zA-z]*)is$/i, '\1i'
inflect.singular /^([a-zA-z]*)os$/i, '\1o'
inflect.singular /^([a-zA-z]*)us$/i, '\1u'

#luzes - luz
#flores - flor
#arrozes - arroz
inflect.singular /^([a-zA-z]*)res$/i, '\1r'
inflect.singular /^([a-zA-z]*)zes$/i, '\1z'

#cantis - cantil
inflect.singular /^([a-zA-z]*)is$/i, '\1il'

#farois - farol
#hospitais - hospital
#telemoveis - telemovel
#pinceis - pincel
#anzois - anzol
inflect.singular /^([a-zA-z]*)ais$/i, '\1al'
inflect.singular /^([a-zA-z]*)eis$/i, '\1el'
inflect.singular /^([a-zA-z]*)ois$/i, '\1ol'
inflect.singular /^([a-zA-z]*)uis$/i, '\1ul'

#armazens - armazem
#portagens - portagem
inflect.singular /^([a-zA-z]*)ns$/i, '\1m'

#cães - cão
#colchões - colchão
#portões - portão
#pães - pão
#alemães - alemão
inflect.singular /^([a-zA-z]*)oes$/i, '\1ao'
inflect.singular /^([a-zA-z]*)aes$/i, '\1ao'
inflect.singular /^([a-zA-z]*)aos$/i, '\1ao'

# inflect.plural /^(ox)$/i, '\1en'
# inflect.singular /^(ox)en/i, '\1'
# inflect.irregular 'person', 'people'
# inflect.uncountable %w( fish sheep )
end

Espero que lhe seja útil 😀

Abraço e até a próxima.

Aumentado o volume dos seus mp3 com Easy MP3 Gain

Com certeza você já deve ter feito o download de algum mp3 que toca legal no computador mas quando toca no celular/mp3 player/ipod/whatever fica quase inaudível?

Pois bem, para contornar este problema, temos o easy mp3 Gain, que é um frontend do mp3gain – software que é usado para aumentar ou diminuir o volume de seus arquivos mp3.
Continuar lendo

Criando threads com Delphi

Fala galera! Irei iniciar 2014 com um post sobre threads. Mas o que são threads?

Segundo a Wikipedia, threads são “uma forma de um processo dividir a si mesmo em duas ou mais tarefas que podem ser executadas concorrentemente”. Legal, mas no que uma thread pode me ajudar?

Usos

Threads geralmente são utilizadas para executar uma tarefa que possa demandar muito tempo, podemos utilizar como exemplo o backup de uma base de dados.

A vantagem de se utilizar uma thread é que ela executa enquanto você pode utilizar outras funções da sua aplicação, diferente das vias normais onde você teria de esperar o seu programa executar toda a ação.
Continuar lendo