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 😉

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.