Ir para o conteúdo

Rankings


Conteúdo Popular

A mostrar o conteúdo com mais reputação desde 13-05-2012 em todas as áreas

  1. 16 pontos
    Conforme demos a entender há algum tempo atrás, o P@P decidiu mudar o software que suporta o fórum. Depois de um longo período de testes, esta mudança foi efectuada! Esta mudança coincide também com uma mudança de domínio principal do P@P, que passa agora a ser www.portugal-a-programar.pt! Depois de vários anos a usar o SMF, o P@P passa agora a usar o IPBoard, que para além do fórum, também inclui o blog, e uma nova plataforma de downloads, que esperamos que venha a ser bastante útil aos utilizadores da nossa comunidade, promovendo a partilha de recursos. Para além de várias melhorias ao nível de administração e moderação, o novo software trará também algumas melhorias para os utilizadores, das quais destacamos: Tema para dispositivos móveis Sistema de tags bastante funcional Integração com redes sociais Melhor sistema de pesquisa e de visualização de novos conteúdos Sistema de notificações bastante mais funcional Novos funcionalidades ao nível de mensagens privadas Sistema de avaliação de tópicos e de mensagens Temos consciência que nem todos utilizadores vão gostar da mudança, e que muito irão estranhar esta nova plataforma, mas acreditamos que a longo prazo a generalidade dos utilizadores irá reconhecer as vantagens desta nova opção. Sublinhamos também que uma mudança destas é um processo complexo, sujeito a erros. Apesar de todos os cuidados na preparação desta migração, é natural que notem alguns problemas, sobretudo nestes primeiros dias, até porque há ainda algumas arestas a limar nos próximos dia/semanas. Adicionalmente, os utilizadores devem rever as suas configurações, através do Painel de Controlo, de modo a garantir que tiram partido de todas as funcionalidades oferecidas pelo IPBoard, ou para corrigir alguma configuração que não tenha sido correctamente migrada. Da parte do staff, tentaremos resolver os problemas encontrados o mais rapidamente possível.
  2. 7 pontos
    Conforme demos a entender há algum tempo atrás, o P@P decidiu mudar o software que suporta o fórum. Depois de um longo período de testes, esta mudança foi efectuada! Esta mudança coincide também com uma mudança de domínio principal do P@P, que passa agora a ser www.portugal-a-programar.pt! Depois de vários anos a usar o SMF, o P@P passa agora a usar o IPBoard, que para além do fórum, também inclui o blog, e uma nova plataforma de downloads, que esperamos que venha a ser bastante útil aos utilizadores da nossa comunidade, promovendo a partilha de recursos. Para além de várias melhorias ao nível de administração e moderação, o novo software trará também algumas melhorias para os utilizadores, das quais destacamos: Tema para dispositivos móveis Sistema de tags bastante funcional Integração com redes sociais Melhor sistema de pesquisa e de visualização de novos conteúdos Sistema de notificações bastante mais funcional Novos funcionalidades ao nível de mensagens privadas Sistema de avaliação de tópicos e de mensagens Temos consciência que nem todos utilizadores vão gostar da mudança, e que muito irão estranhar esta nova plataforma, mas acreditamos que a longo prazo a generalidade dos utilizadores irá reconhecer as vantagens desta nova opção. Sublinhamos também que uma mudança destas é um processo complexo, sujeito a erros. Apesar de todos os cuidados na preparação desta migração, é natural que notem alguns problemas, sobretudo nestes primeiros dias, até porque há ainda algumas arestas a limar nos próximos dia/semanas. Adicionalmente, os utilizadores devem rever as suas configurações, através do Painel de Controlo, de modo a garantir que tiram partido de todas as funcionalidades oferecidas pelo IPBoard, ou para corrigir alguma configuração que não tenha sido correctamente migrada. Da parte do staff, tentaremos resolver os problemas encontrados o mais rapidamente possível.
  3. 6 pontos
    O valor do trabalho é aquele que as pessoas estão dispostas a pagar por ele. Se temos um trabalho que precisa de uma pessoa, e há 10 pessoas disponíveis para o fazer, é pouco relevante se é necessário uma licenciatura para o fazer. Um dos erros do nosso país foi achar que era dando uma licenciatura a toda a gente que se punha as pessoas a ganhar mais. Na verdade, isso faz é com que a oferta de trabalho qualificado aumente, pondo toda a gente a ganhar menos (e baixando o preço dos produtos pelo meio, o que é benéfico para o consumidor). Parece-me normal que as pessoas comecem a trabalhar por salários mais baixos, pois tal tem tendência a aumentar o trabalho (pago) disponível (redução do custo/aumento da procura). Chamam exploradores ao empresários, mas ainda não ouvi chamarem exploradores aos consumidores, quando compram produtos a preços ridiculamente baixos. Uma pessoa que acha que produz mais do que o que recebe, resolvia o problema trabalhando por sua conta (e obviamente assumindo os riscos da actividade). É claro que ou fica a trabalhar no mercado paralelo, ou está lixado com as burocracias e impostos. E diria que este é o principal problema do nosso país. Falta quem crie emprego, quer devido à burocracia, quer devido aos impostos, quer devido aos incentivos (subsídios) para que não se produza, quer devido à cultura de que os empresários são exploradores.
  4. 5 pontos
    Revista PROGRAMAR Edição 38 - Dezembro de 2012 (clica para download) Nesta edição continuaremos também a premiar os autores dos três melhores artigos, dado o sucesso nas edições anteriores. E os leitores devem dar a sua opinião para que possamos premiar correctamente. Para isso vote em http://tiny.cc/ProgramarED38_V Assim nesta edição trazemos até si, como artigo de capa, um artigo de Introdução à Programação em Compute Unified Device Architecture (CUDA) de Patricio Domingues. Nesta 38ª edição pode ainda encontrar os seguintes artigos: Accionamento de Led e Arduino Através de Interface Gráfica em Processing (Nuno Santos) PostgreSQL como alternativa de SGBD (Ricardo Trindade) Custo Efetivo de uma Solução na Nuvem em Ambiente Windows Azure (Edgar Santos) Rápido e bem? A programação web tem! (Sérgio Laranjeira) Introdução à Programação em CUDA (Patrício Domingues) Visual (NOT) Basic - Organismos! Do zero ao mercado (2/2) (Sérgio Ribeiro) Enigmas de C#: Foreach (Paulo Morgado) Core Dump: Core Dump [8] - Fora de Horas (Fernando Martins) Review do livro Introdução ao Design de Interfaces (Sérgio Alves) Review do livro Exercícios em Java – Algoritmia e Programação Estruturada (Carlos José Dias) Viagem da Informação (Rita Peres) “Camaleão! De que cor?” (Sara Santos) Verifica regularmente os ficheiros Javascript do seu site? (David Sopas) Entrevista a Tiago Andrade e Silva Projecto em Destaque na Comunidade Portugal-a-Programar: Taggeo
  5. 5 pontos
    Sim, mas aí nem falámos, pois não era o caso... Então vamos lá... Fizeram uma série de perguntas sobre o programa, se é opensource, se tenho os direitos de autor, essa coisada toda. Depois, passámos à análise dos documentos que enviei. Daqui se ressalvou que: - Documentos que não sejam assinados, também não levam menção nenhuma do tipo "Processado por computador". Eu estava a por, é para tirar. - Facturas manuais ou de reintegração não devem ter mencionadas essas características. Ex.: Em vez de Factura Manual, deve chamar-se apenas Factura. - Facturas manuais não devem apresentar hora no documento, pois a hora não será a do documento original, e sim do manual. Deve mostrar-se apenas a data, que será a do doc. manual. - Facturas manuais: InvoiceDate deve ser o do documento manual, e não o do dia actual - Confirma-se de uma vez por todas a história fo Factura/Recibo e seu código: É mesmo FR - Facturas sempre em duplicado, a não ser FS - Documentos internos, em circunstância alguma devem ter na descrição a palavra "Factura" - Eu tinha uma "Factura de Fornecedor", para dar entrada das compras, fizeram-me prometer que mudava aquilo sem falta, pois pode ser considerado documento falso. - Uns ajustes no report de Contagem de Stock, nomeadamente não aparecer o resumo de IVA (mas porque raio é que eu o tinha lá?) - Tenho um documento do tipo GT chamado Devolução a Fornecedor. Muda-se o nome para Guia de Transporte, podendo meter por baixo, se quiser, Devolução a Fornecedor. - Carga/Descarga: Estou a escrever só estas palavras, mas deve ser escrito mesmo Local de Carga e Local de Descarga. - Hash mais acima, como já tinha referido - Nas Notas de Crédito, a referência ao documento de origem deve incluir a descrição (eu estava a por apenas Tipo Serie/Numero) - Gostaram do meu controle de reposição da base de dados baseado no número de documentos, mas disseram para incluir também um controle idêntico baseado em CheckSum. - Casas decimais: Internamente, quantas mais melhor, para minimizar erros de arredondamento. Preços unitários pode ser configurável, preços finais sempre com 2 casas. Recomendaram-me ainda que lesse o Art. 5º do DL 198/90, mais as alterações feitas a este no OE 2014. - Ainda não faço ideia do que é, mas entretanto vou ver. Depois passámos ao programa propriamente dito... A análise incidiu principalmente em: - Anulações: Anulações só podem ser feitas se tiver o documento original em mão - Notas de Crédito - Parciais e totais (Total de quantidades creditadas nunca superior às do documento original) - Preços não podem ser alterados (ou pelo menos os meus não deixo alterar, e disseram-me que estava bem) - Data de Caixa (que não pode andar muito longe da data de sistema - no meu caso só permito no máximo 1 dia de diferença). - Descrição de artigos não alterável - NIF não alterável - Entidades: Se derem para anular (é o meu caso), não podem desaparecer completamente, muito menos os documentos passados a essa entidade. - Cópias de segurança: Métodos de controle e salvaguarda da informação - Gestor de DB: Nunca pode estar instalado na máquina de produção (Ex. HeidiSQL) - Configuração do programa: Estiveram a ver que tipo de configurações o programa deixa fazer - Permissões de utilizadores: Que tipo de permissões se podem activar e desactivar para cada utilizador - Controle de número de impressões - 2ª Via a partir da segunda impressão - Documentos pendentes de um dia para o outro - Insistiram neste ponto - no meu caso não é possível manter nada pendente nem quando sai e volta a entrar na aplicação - qualquer documento tem de ser finalizado - Recibos; Normais e RIC - Normais não podem levar a tag TAX, os RIC têm de ter uma linha por cada taxa, bem como a tag TAX - Gaveta: Abertura de gaveta sempre com documento de suporte (deduzo que não seja obrigatória a sua impressão, desde que ele seja gerado) - Taxas de IVA: A taxa Isenta deve ser uma só. As isenções serão atribuídas ao artigo que use taxa 0%, e não à taxa em si E pronto, acho que não me esqueço de nada! Ah, esqueci sim... Dois pontos que causaram por aqui algum debate: - Tipo de documento na impressão: Tem de aparecer - Hash na mudança de período: Primeiro estavam-me a falar que o hash estava mal, pois não estava a usar do do documento anterior (de dezembro). Eu disse que até tinha a por, mas por causa do OC50001/2013 que mete lá o famoso "OU", tinha tirado essa parte. Concordaram com isso, e fica assim mesmo. Aparentemente, antes não era assim, e este ofício é que trouxe essa novidade.
  6. 5 pontos
    E está feito... Aveiro, aqui vou eu. Meia dúzia de pormenores para ajustar, e um "mantenha o programa assim que está bom" na hora da despedida... 2 senhores, de trato cordial e bem disposto, que estiveram a analisar tudo o que tinham na checklist, mais o que se foram lembrando durante o decorrer da entrevista. Ainda me perdoaram a fenomenal gafe de estar a imprimir para pdf mas gerar extensão html (é no que dá fazer alterações de última hora e testar pela metade). Mais tarde faço um relato mais pormenorizado!
  7. 5 pontos
    Agora que está tudo mais calmo... Na realidade, as tags dos elementos html, head e body podem ser omitidas salvo algumas excepções (consultem a especificação oficial da W3C para saberem quais). No entanto, e agora dirijo-me a ti, alex9099, omitir essas tags é (como já disseram) uma má prática. Quando omites informação, o browser dá o seu melhor para tentar construir a página da forma que ele acha que tu queres, mas nem sempre acerta. Com HTML5 estes comportamentos estão mais definidos, mas não deixa de ser má ideia omitir essas tags. Vou mais adiante, ao ponto de dizer que é pouco profissional omitir essas tags (mas também fica bem saber que podem ser omitidas). Repara ainda que ao omitires as tags mencionadas, tens que ter em mente todos os casos nos quais elas não podem ser omitidas (sim, porque há excepções!) e saber essas excepções todas é bem pior que simplesmente incluir as tags em todos os documentos, não concordas? De resto, vi que és um rapaz novo que está metido nas tecnologias ligadas à Web: parabéns pela iniciativa! Agora resta-te estar a par de como se fazem as coisas actualmente.
  8. 5 pontos
  9. 5 pontos
    Ainda em relação ao mail/carta para o pessoal da AT e afins, e apesar de não estar metido nesta alhada de softwares de facturação, deixo a minha sugestão. Em vez de cada um enviar um mail em nome próprio e ou da empresa, escrevam um mail/carta aberta assinada por todos os membros aqui que têm estado a ter dificuldades por causa dos motivos que já apresentaram. E digo "carta aberta" no sentido de a fazerem chegar à comunicação social, de forma a que o país fique a saber que há dezenas, centenas de programadores neste país que estão a bater com a cabeça na parede à conta das famosas leis e despachos e whatever escritos em Código Ambiguoum. Façam ouvir a vossa voz, o pensamento "não adianta de nada" é um dos grandes alimentos desta gente que está lá a decidir as coisas ao pequeno-almoço, pensando "ah, aqueles gajos desenrascam-se".
  10. 5 pontos
    Uma LUZINHA? Queres dizer... NÓS... os beta-testers e escravos do sistema! Foram muitas dezenas de emails de recomendações enviados, problemas reportados, sugestões... Não era dificil de prever que as coisas não iriam correr da melhor forma. Também foi fácil de prever que as coimas teriam de ficar suspensas até nova ordem.. Sistemas desta "envergadura" necessitam de uma grande análise prévia, e de feedback, tanto das empresas como das software houses. Deveria ter sido criada uma plataforma colaborativa para contacto directo entre a AT e os produtores de software, bem como com as empresas, onde as dúvidas, problemas, sugestões, pudessem ser abertas e comentadas, até serem resolvidas ou abandonadas. Aliás, tal como DITO AQUI (e passo a citar): http://info.portaldasfinancas.gov.pt/NR/rdonlyres/07A23F83-95A0-43F3-8988-F88A74484C6C/0/Comunicado.pdf Gostava de saber QUAIS foram as empresas (e software houses???) que foram as PRIVELIGIADAS nesse PROCESSO de COLABORAÇÃO! Onde está a transparência do sistema?? :-\
  11. 5 pontos
    Não sei o que diz a lei portuguesa em relação ao direito de resposta, nada? Para mim é mais uma questão de ética. Ser um artigo de opinião não torna o direito de resposta desadequado, ates pelo contráio. São os artigos de opinião que são mais susceptíveis de gerar situação de recurso ao direito de resposta. Dito isto, pedir direito de resposta a uma review feita a um livro, e com a extensão de uma página, na qual o autor aponta alguns aspectos negativos segundo o seu ponto de vista... é ser mais papista que o papa. Se cada vez que se dá uma opinião sobre o trabalho de alguem, se andasse a dar direito de resposta, então a imprensa escrita desapareceria num ápice. Para tudo há um limite do razoável. Parece-me que uma review destas não é nenhum ataque pessoal nem sequer nenhuma tentativa de bota-abaixo. O tom em que erros ortográficos e uma ou outra incorrecções são apontadas é completamente desproporcionado, e acaba por dar origem a uma situação ridícula porque a resposta tem ela própria erros ortográficos. A conclusão que eu tiro é que a autora do livro se quis distanciar do autor da review tentando deixar claro que se trata de uma pessoa que está no ensino superior e que por isso está em posse de recursos tecnicos superiores aos do autor da review. Da minha perspectiva, a única coisa que conseguiu apenas criar uma situação embaraçosa para si própria. Se supostamente o desnível tecnico que tenta passar por debaixo da sua resposta é tão grande, então por que motivo dá importância sequer à crítica ao ponto de lhe responder tão formalmente? A revista programar teve origem neste fórum, o qual frequento desde 2005, daqui a mais há uma década. É um projecto que já durou mais do que muitos cursos superiores que já começaram, e acabaram, depois de de 2005. Pode haver aqui no portugal-a-programar alguma falta de rigor tecnico, o que acaba por se reflectir na revista. Mas uma coisa posso eu afirmar com toda a convicção: a forma como o portugal-a-programar aceita e aprende com a crítica é incomparavelmente mais profissional do que aquela que é de esperar da maior parte das pessoas ligadas ao ensino superior.
  12. 5 pontos
    pegas no player que tens (que é em flash), fazes um embrulho muito bonito, e envias para Jaula dos ursos Jardim Zoológico de Lisboa Estrada de Benfica, 158-160 1549-004 Lisboa depois vais a net e pesquisas por : "html5 audio player" sacas um player muito bonito mas agora que não use flash colocas no teu site toda a gente fica feliz, mesmo as pessoas que visitam o teu site porque não necessitam do flash !!
  13. 5 pontos
    Olhando para os teus tópicos, vejo que só num caso não tens respostas. Por outro lado, parece que as tuas mensagens estão restritas aos teus tópicos. Será que andas a descriminar os outros, não respondendo aos seus tópicos? Pois, não custa nada vir cá acusar os outros de não responderem aos nossos tópicos. Mas tendo em conta que a maior parte dos teus tópicos foram respondidos, mesmo quando a maior parte está fora das áreas essenciais do fórum (electrónica e hardware), espero ver-te por cá também a responder às questões dos outros. Já agora, olhando para os tópicos notei uma coisa "desagradável", o facto de muitas vezes não responderes aos utilizadores que te tentaram ajudar.
  14. 5 pontos
    O Portal de Downloads da comunidade Portugal-a-Programar destina-se a promover a partilha de conteúdos relativos à programação e áreas similares, que podem incluir materiais usados por estudantes nos seus ciclos de estudos (e.g., apontamentos, exercícios, testes), ou outros materiais desenvolvidos pelos utilizadores que podem ser úteis a outros utilizadores (e.g., tutoriais, scripts, bibliotecas, aplicações). Tem por objectivo criar um repositório de conteúdos, que permite a sua melhor organização e catalogação, facilitando assim o trabalho de pesquisa dos utilizadores. Qualquer utilizador registado pode submeter conteúdos, desde que sejam da vossa autoria, ou que o autor tenha decidido dispobilizá-los publicamente. É possível submeter ficheiros directamente, ou indicar um link para um ficheiro externo. (Caso seja o autor dos ficheiros, é preferível enviar directamente o ficheiro, para evitar links quebrados. Caso não seja o autor, pode indicar o link onde o autor disponibiliza os conteúdos. Por favor não use links para sites como Rapidshare e afins.) Para submeter ficheiros, devem escolher uma categoria apropriada, seleccionar os ficheiros a enviar (ou indicar os links para os ficheiros), e fornecer a seguinte informação: Nome do Ficheiro (obrigatório) Deve permitir aos utilizadores ter uma ideia do conteúdo dos ficheiros, nomeadamente do tema a que dizem respeito (e.g., Exercícios de Java, Slides sobre Algoritmos de Ordenação, Apontamentos de Teoria de Números, Exercícios de Criptografia). Se forem materiais de uma cadeira, também têm que identificar pelo menos a instituição de ensino, e opcionalmente a cadeira, curso (podem usar acrónimos, para o nome não ficar demasiado grande). Versão do Ficheiro (opcional) Identifica a versão do ficheiro. No caso de bibliotecas/código pode ser a versão (e.g. 1.0, 2.1), e no caso de ficheiros como tutoriais, exercícios e afins, que não tenham versão, pode ser a data (e.g. 2011/12). Tags do Ficheiro (obrigatório) Palavras-chava que descrevem os conteúdos submetidos (e.g., c, pascal, bases de dados, algoritmos de ordenação). Change Log (opcional) Registo de alterações introduzidas numa nova versão. Descrição (obrigatório) Devem dar os detalhes dos conteúdos aqui. Deve conter, pelo menos, um pequeno parágrafo com um resumo dos conteúdos. Caso o conteúdo a submeter disponha de índice, também é conveniente colocá-lo aqui. Adicionalmente, nos casos de materiais de uma cadeira, também devem indicar a cadeira, curso e instituição. Caso estejam a submeter conteúdos que não são da vossa autoria, é também conveniente que indiquem o autor. Licença (opcional) Licença dos conteúdos. Se os conteúdos forem da vossa autoria, indiquem a licença que quiserem. Se não forem, devem respeitar a licença que o autor escolheu (se não a souberem, deixem em branco). Submetido pelo Autor (obrigatório) Indica se o utilizador que submeteu o ficheiro é o autor dos conteúdos. Website (opcional) Pode ser um website sobre os conteúdos (ou onde estes também possam ser descarregados), ou o website do autor, por exemplo. Sempre que possível, comprima os ficheiros antes de os enviar. Em particular no caso de submeter mais do que um ficheiro, deve juntá-los num único arquivo comprimido. Desta forma permite que se poupe espaço e largura de banda. (Caso não o faça, o staff reserva-se no direito de comprimir os ficheiros, sempre que tal pareça adequado.) Os ficheiros estão sujeitos a moderação, e só ficarão disponíveis publicamente depois de revistos pelo staff. Esta área está sujeita as regras do P@P, que promovem o respeito pelos direitos de autor. Contudo, nem sempre será possível obter informação precisa/correcta sobre os direitos de autor dos conteúdos. Assim, caso encontre no nosso portal conteúdos seus que não autoriza a que sejam disponibilizados, por favor use a link "Denunciar Ficheiro" para notificar o staff de tal situação. A moderação destina-se também a garantir que os conteúdos correspondem à descrição (embora tal não seja possível garantir totalmente para ficheiros externos), ou que a descrição fornece um nível de informação adequado, e também para normalizar a informação disponibilizada. Depois de o ficheiro ser submetido, será criado automaticamente um tópico no fórum, onde os conteúdos poderão ser discutidos. Na página do ficheiro irá existir um link para o tópico. (Caso já exista um tópico no fórum a abordar o conteúdo, por favor notifique o staff de tal situação, para evitar a duplicação de discussões.) O link "Denunciar Ficheiro" pode também ser usado para denunciar links quebrados, ou ficheiros que representem riscos para utilizadores (e.g., malware). O staff procurará analisar as denúncias o mais rapidamente possível. (Estas normas serão revistas regularmente, de modo a se adaptarem ao comportamento dos utilizadores. Recomenda-se a leitura regular das mesmas.)
  15. 5 pontos
  16. 4 pontos
    Revista PROGRAMAR Edição 37 - Outubro de 2012 (clica para download) Nesta edição continuaremos também a premiar os autores dos três melhores artigos, dado o sucesso nas edições anteriores. E os leitores devem dar a sua opinião para que possamos premiar correctamente. Para isso vote em http://tiny.cc/ProgramarED37_V Assim nesta edição trazemos até si, como artigo de capa, um artigo sobre Makefiles de António Pedro Cunha para conhecer melhor esta poderosa ferramenta. Nesta 37ª edição pode ainda encontrar os seguintes artigos: Interface Gráfica - Termometro Usando Arduino e LM335A (Nuno Santos) Algoritmos de Path Find : Princípios e Teorias (João Ferreira) SEO: Search Engine Optimization - Introdução Parte III (Miguel Lobato) Profilers Usar ou não usar… Os 5 minutos que mudam a experiência! (António Cunha Santos) CodeDump -Core Dump [8] - Fora de Horas (Fernando Martins) Kernel Panic A importância da formação no ensino superior numa carreira dentro da área de segurança informática (Tiago Henriques) Enigmas do C#: Async/Await e Threads (Paulo Morgado) Organismos! Do zero ao mercado (1 de 2) Sérgio Ribeiro) Review do livro HTML5 2ª Edição (Marco Amado) Review do livro Sistemas Operativos (Fábio Domingos) Review do livro Desenvolvimento em iOS iPhone, iPad, iPod Touch (Sara Santos) Análise: O que faz de nós um bom programador? (Rita Peres) Falácias da Computação na Nuvem (Edgar Santos) As reais ameaças de segurança não são os APT (David Sopas) Entrevista - João Barreto Projeto em Destaque na Comunidade Portugal-a-Programar: NotíciasPT E em parceira com as comunidades PtCoreSec e Comunidade netPonto: Introducao-Auditoria-Passwords (PtCoreSec) BizTalk360 uma ferramenta de suporte e monitorização para a plataforma BizTalk Server (NetPonto)
  17. 4 pontos
    E é oficial, estou certificado com o número 1849/AT. Atenção, não é publicidade, que o programa não está à venda, pelo menos para já! É só mesmo constatação de um facto à comunidade que ajudou o programa a chegar aqui.
  18. 4 pontos
    Mas depois há isto: http://info.portaldasfinancas.gov.pt/pt/informacao_fiscal/codigos_tributarios/civa_rep/iva39.htm
  19. 4 pontos
    Estou 100% de acordo contigo. Obviamente o que interessa é o que já foi aqui discutido. E que não deixemos "baldar" para o processo de certificação. Quem é que no seu bom-senso vai mudar softwares para poder emitir faturas de 1 ou 2 semanas de Janeiro?! NINGUEM. Obviamente que nós não mandamos, mas não é lógico multarem ABC por ter emitido vendas até (p.ex) 15 de Janeiro, porque o processo de Certificação demorou etc etc etc. Quem precisar de certificar, que mande a papelada a tempo e horas, e o resto que "deixe andar"... porque os Senhores da AT, devem estar preocupados com cadeias ENORMES de retalho, Stapples, RadioPopular, MediaMarkt etc etc etc que usam software pra uso próprio. Esses sim, terão "prioridade" pois na cabeça de muita gente, não podem parar... Ja imaginaram o que era a MediaMark não abrir lojas 15dias em Janeiro por causa de não ter o Certificado? Quem paga o prejuizo? A culpa é de quem, uma vez que o cliente cumpre os prazos?? (Além disso, já pensaram no IVA €€€ que o estado perde pelos dias destas lojas fechadas?!?) Ninguem vai levar multas desde que cumpram com os prazos pra mandar a papelada pra Lisboa, e aguardem por um telefonema... Agora parar por causa de não ter Certificado?! NAO FAZ SENTIDO.
  20. 4 pontos
    Bem, para além de que com o avançar do tempo estamos sempre a detetar novas situações, eu acho que existe aqui uma evidente falta de informação e esclarecimentos, por parte da AT. Esta, para além da pouca documentação disponibilizada, que claramente é ambígua, não responde às solicitações efetuadas, o que é grave pois ignora quem realmente implementa os requisitos que eles definem. De forma a demonstrarmos a nossa insatisfação, eu acho que deveriamos preparar e uniformizar um texto que, posteriormente, pudesse, por cada um de nós, ser enviado, por email, à AT. Nesse texto: Demonstrariamos o nosso desagrado, Reclamariamos por uma fonte de informação adequada, atempada e precisa, Enumeravamos uma série de pontos a esclarecer. Se fizermos lá chegar uns quantos emails pode ser que nos dêm a atenção devida e lancem uma FAQ com os esclarecimentos aos pontos enumerados. Caso contrário, meus amigos..., estaremos completamente entalados, quer pela AT, quer pelos nossos chefes e quer pelos nossos clientes. Duas semanas não dá margem para planear, desenvolver, testar e distribuir as nossas aplicações. A AT tem de perceber que por detrás de um software está todo um processo de engenharia que não pode/deve ser ignorado só porque são eles a definir os requisitos.
  21. 4 pontos
    A crítica parece ser dirigida a mim, por isso quero apenas referir que ao contrário do mencionado, break não termina a execução numa parte indeterminada do programa (muito pelo contrário). O meu conhecimento (que nada tem a ver com o facto de ser moderador) permite-me dizer isso. De facto, ser moderador ou não nada tem a ver com o código que escrevo, por isso falemos como se eu fosse (e sou, acima de tudo) um utilizador como qualquer outro. Aqui fica então: É estúpido (muito estúpido) aprendermos Pascal sem aprendermos a função das keywords de saída precoce de ciclos e as situações em que devem ser utilizadas. Um bom professor tem isso em conta e faz questão de munir os seus alunos destas ferramentas (o lema do bom programador, já agora, é utilizar a ferramenta correcta para cada trabalho). Um papagaio simplesmente repete a propaganda que lhe foi ensinada sobre como os programas devem ser escritos em situações que dificilmente representam a realidade. Como resultado, não ensinam Pascal, mas sim dec(Pascal), um Pascal incapacitado e ligeiramente mais lento (porque lhe cortam as pernas). E já agora, relativamente a "então seria melhor eles ensinarem java" -- não compreendi. Dizes isto porque Java é uma linguagem que depende bastante de break e continue? (não é, nem por sombras!) tl;dr: Aquele break está ali muito bem. A alternativa traria muito ruído sintáctico, pois implicaria mais um if, mais um nível de indentação, e mais uma bifurcação no código (os dois ramos do if). É pena que hoje em dia ninguém pense na legibilidade (e performance!) do código. Especialmente os tais professores.
  22. 4 pontos
    Trabalho como freelancer desde 2008, com uma paragem entre o fim de 2012 e meio de 2013, é um modelo que me agrada bastante quer pela liberdade de horários quer por oferecer uma visão diferente do processo de desenvolvimento, especialmente quando somos responsáveis por todos os aspectos do desenvolvimento (orçamento, análise de sistema, desenvolvimento, comunicação com o cliente). Não é para todos, é preciso uma grande força para manter horas de trabalho, e a falta de horário definido pode ser um problema, pelo que sugiro que definas um horário para ti com todas as pausas e horas de trabalho bem definidas e o tentes cumprir à risca. Oferece algumas dificuldades se não tiveres empresas com as quais colaborares e tiveres de andar sempre à procura de projectos. Posso falar apenas pela minha experiência. Não faço "contratos" por fora, passo sempre recibo dos projectos que faço e pago os impostos devidos, estou registado como trabalhador independente desde 2008, altura em que comecei a dar formação profissional. Portanto, na prática deverás estar registado como trabalhar independente e passar recibos sobre os projectos e valores que recebes. Inicialmente procurava projectos em sites dedicados ou comunidades de programação (como aqui o P@P), muitos dos meus projectos iniciais vieram daqui, um dos projectos levou a que a empresa em questão passasse apenas a querer o meu trabalho (dica: ser profissional, honesto e entregar produtos com qualidade ajuda mais que ter preços baixos), neste momento tenho várias empresas para as quais desenvolvo projectos e já não procuro novos projectos de forma tão activa. Faço os contratos para os projectos com indicação explicita do que é feito e do que não é, se não está no contrato ou é cobrado à parte ou não é desenvolvido, isto evita o abuso comum dos clientes que querem "apenas mais um botão" ou "só ter estes dados em PDF" e evita que percas dinheiro. Claro que por vezes aceito uma ou outra funcionalidade que não estava prevista, mas a primeira resposta é quase sempre um não a funcionalidades que não estão no papel. É também comum ter projectos com penalizações para atrasos ou para incumprimento, para ambas as partes (ex. se o cliente quer 100€ por dia de atraso, eu também quero o mesmo por atrasos dele). Tipicamente os projectos são orçamentados para várias fases, com pagamento de 25% do valor total antes do projecto arrancar e entrega de todo, e é mesmo todo, o material que foi criado. Os projectos são propriedade dos clientes e entrego sempre tudo, mesmo quando o cliente não tem conhecimentos para usar o código. Prefiro que um cliente que não fique satisfeito com o trabalho saia sem ressentimentos, pior que um cliente que não gosta do trabalho é um que além de não gostar ainda fica chateado porque dificultamos a mudança para outro freelancer. A parte mais complicada quando se começa é estimar o prazo dos projectos e angariar projectos e clientes, aqui ajuda colaborar com outros freelancers ou começar com projectos mais pequenos. O preço é sempre complicado de definir, e os clientes por um lado vão tentar baixar o valor, por outro muitos querem apenas uma forma barata de ter um produto e não querem pagar o valor que uma empresa de desenvolvimento pede, daí virarem-se para um freelancer por acharem que é mais barato, a grande maioria não tem noção do custo real de desenvolvimento. Apanhei alguns projectos onde facilitei uma descida do valor hora e nunca mais o consegui voltar a valores normais, a minha solução para isto foi cortar simplesmente com o cliente após o projecto entregue, um cliente que apenas quer baixar o preço nunca vai pagar o valor justo. Nem todos os projectos correm bem, muitos vão correr mal de uma maneira ou de outra. Tenho projectos que foram cancelados porque os intermediários não eram profissionais, e eu é que acabei por ter problemas; tenho projectos que foram entregues e abandonados, neste caso mesmo que não tenhas culpa é muito provável que não venhas a colaborar mais com a empresa; tenho projectos que foram mal pensados pelo cliente, constantemente alterados e que no fim não correspondem ao que o cliente devia ter; enfim, prepare-te para situações desagradáveis, quer estejas a lidar directamente com os clientes, quer tenhas um intermediário. A situação de "carreira" em empresas também não oferece segurança nenhuma, até podes entrar para os quadros e quando a empresa fecha ou quando a redução de pessoal é necessária, vais para a rua como qualquer outro, e a indemnização não compensa nada se não tiveres meia vida de trabalho na empresa, mesmo aí duvido que ajude. Mas podes ter vínculos criando contratos que impeçam a empresa de simplesmente cancelar o projecto ou rescindir com os teus serviços. Se trabalhas como freelancer cabe a ti promover essas oportunidades e valorização profissional. Quer com desenvolvimento de projectos variados, execução de cursos para especialização ou até desenvolvimento de projectos próprios. Ficar parado, em qualquer caso, é uma péssima opção. De qualquer forma, tudo o que posso dizer já foi dito em inúmeros estudos, artigos de opinião e blogs pela Internet fora .
  23. 4 pontos
    Imports System.Net Imports System.Security.Cryptography.X509Certificates Imports System.Text Imports System.IO Imports System.Security.Cryptography Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load EncryptAT("PASS_DO_NOSSO_USER", "CAMINHO_DO_FICHEIRO_CER") Dim soap As String = GenerateSoapFile("NIF/ID") rtb_teste.Text = GetATGTCode(soap, "https://servicos.portaldasfinancas.gov.pt:701/sgdtws/documentosTransporte", "https://servicos.portaldasfinancas.gov.pt:701/sgdtws/documentosTransporte/", "CAMINHO_DO_FICHEIRO_PFX", "TESTEwebservice") End Sub Dim strEncryptPasswordAT As String, strEncryptCreatedAT As String, strEncryptNonceAT As String Private Sub EncryptAT(ByVal pPwdAT As String, ByVal pPathCertf As String) Try Dim CaminhoChavePublica As String = pPathCertf ' Variaveis a encriptar Dim PassFinancas As String = pPwdAT 'Dim DataCriacao As String = DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss") + "Z" Dim DataCriacao As String = DateTime.UtcNow.ToString("s") & "Z" ' Carregar chave pública Dim certCP As New System.Security.Cryptography.X509Certificates.X509Certificate2 certCP.Import(CaminhoChavePublica) Dim ChavePublica As String = certCP.PublicKey.Key.ToXmlString(False) ' Gerar Chave Simétrica para o envio da informação ' Esta chave tem que ser diferente em todos os envios, pelo que deverão arranjar um método de ser sempre diferente ' Comprimento: 16 ' Exemplo 'Dim ChaveSimetrica As Byte() = {&H1, &H2, &H3, &H4, &H5, &H6, &H7, &H8, &H9, &H10, &H11, &H12, &H13, &H14, &H15, &H16} 'Dim ChaveSimetrica() As Byte = GerarChaveSimetrica() Dim aleatorios As New Random() Dim ChaveSimetrica(15) As Byte aleatorios.NextBytes(ChaveSimetrica) ' Inserir Chave Simetrica nos parametros de encriptação Dim rijn As System.Security.Cryptography.SymmetricAlgorithm = System.Security.Cryptography.SymmetricAlgorithm.Create() rijn.Key = ChaveSimetrica rijn.IV = ChaveSimetrica rijn.Mode = System.Security.Cryptography.CipherMode.ECB rijn.Padding = System.Security.Cryptography.PaddingMode.PKCS7 ' Encriptar password das financas Dim msPassFinancas As New System.IO.MemoryStream Dim csPassFinancas As New System.Security.Cryptography.CryptoStream(msPassFinancas, rijn.CreateEncryptor(rijn.Key, rijn.IV), System.Security.Cryptography.CryptoStreamMode.Write) Using swPassFinancas As New System.IO.StreamWriter(csPassFinancas) swPassFinancas.Write(PassFinancas) End Using ' Encriptar data de criação Dim msDataCriacao As New System.IO.MemoryStream Dim csDataCriacao As New System.Security.Cryptography.CryptoStream(msDataCriacao, rijn.CreateEncryptor(rijn.Key, rijn.IV), System.Security.Cryptography.CryptoStreamMode.Write) Using swDataCriacao As New System.IO.StreamWriter(csDataCriacao) swDataCriacao.Write(DataCriacao) End Using ' Converter de bytes para string Dim PassFinancasEncriptada As String = Convert.ToBase64String(msPassFinancas.ToArray()) Dim DataCriacaoEncriptada As String = Convert.ToBase64String(msDataCriacao.ToArray()) ' Encriptar a chave simetrica com o algoritmo RSA e com a chave pública Dim AlgRSA As New System.Security.Cryptography.RSACryptoServiceProvider AlgRSA.FromXmlString(ChavePublica) Dim Chave() As Byte = AlgRSA.Encrypt(ChaveSimetrica, False) Dim ChaveSimetricaEncriptada As String = Convert.ToBase64String(Chave) strEncryptPasswordAT = PassFinancasEncriptada strEncryptCreatedAT = DataCriacaoEncriptada strEncryptNonceAT = ChaveSimetricaEncriptada Catch ex As Exception strEncryptPasswordAT = "" strEncryptCreatedAT = "" strEncryptNonceAT = "" End Try End Sub Private Function GenerateSoapFile(ByVal pUserAT As String) As String Try Dim strSoap As String GenerateSoapFile = "" strSoap = "" strSoap = "<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/' xmlns:doc='https://servicos.portaldasfinancas.gov.pt/sgdtws/documentosTransporte/'>" strSoap = strSoap & "<soapenv:Header>" strSoap = strSoap & "<wss:Security xmlns:wss='http://schemas.xmlsoap.org/ws/2002/12/secext'>" strSoap = strSoap & "<wss:UsernameToken>" strSoap = strSoap & "<wss:Username>" + pUserAT + "</wss:Username>" strSoap = strSoap & "<wss:Password>" + strEncryptPasswordAT + "</wss:Password>" strSoap = strSoap & "<wss:Nonce>" + strEncryptNonceAT + "</wss:Nonce>" strSoap = strSoap & "<wss:Created>" + strEncryptCreatedAT + "</wss:Created>" strSoap = strSoap & "</wss:UsernameToken>" strSoap = strSoap & "</wss:Security>" strSoap = strSoap & "</soapenv:Header>" strSoap = strSoap & "<soapenv:Body>" strSoap = strSoap & "<doc:envioDocumentoTransporteRequestElem>" strSoap = strSoap & "<TaxRegistrationNumber>NIF</TaxRegistrationNumber>" strSoap = strSoap & "<CompanyName>Teste</CompanyName>" strSoap = strSoap & "<CompanyAddress>" strSoap = strSoap & "<Addressdetail>Rua de testes</Addressdetail>" strSoap = strSoap & "<City>Aveiro</City>" strSoap = strSoap & "<PostalCode>3830-134</PostalCode>" strSoap = strSoap & "<Country>PT</Country>" strSoap = strSoap & "</CompanyAddress>" strSoap = strSoap & "<DocumentNumber>GT 1/Z</DocumentNumber>" 'Uma de 3 opções: N-Normal, T-Por conta de terceiros, A-Anulada strSoap = strSoap & "<MovementStatus>N</MovementStatus>" strSoap = strSoap & "<MovementDate>" & Date.Now.ToString("yyyy-MM-dd") & "</MovementDate>" 'Uma de 5 opções: GR-Guia de remessa, ' GT-Guia de transporte, ' GA-Guia de movimentação de ativos próprios, ' GC-Guia de consignação, ' GD-Guia ou nota de devolução afetuada pelo cliente. strSoap = strSoap & "<MovementType>GT</MovementType>" strSoap = strSoap & "<CustomerTaxID>NIF</CustomerTaxID>" 'strSoap = strSoap & "<SupplierTaxID>?</SupplierTaxID>" strSoap = strSoap & "<CustomerAddress>" strSoap = strSoap & "<Addressdetail>Rua dele</Addressdetail>" strSoap = strSoap & "<City>Aveiro</City>" strSoap = strSoap & "<PostalCode>3800-000</PostalCode>" strSoap = strSoap & "<Country>PT</Country>" strSoap = strSoap & "</CustomerAddress>" strSoap = strSoap & "<CustomerName>Gajo qualquer</CustomerName>" strSoap = strSoap & "<AddressTo>" strSoap = strSoap & "<Addressdetail>Rua do Cliente</Addressdetail>" strSoap = strSoap & "<City>Aveiro</City>" strSoap = strSoap & "<PostalCode>3800-000</PostalCode>" strSoap = strSoap & "<Country>PT</Country>" strSoap = strSoap & "</AddressTo>" strSoap = strSoap & "<AddressFrom>" strSoap = strSoap & "<Addressdetail>Rua da Empresa</Addressdetail>" strSoap = strSoap & "<City>Aveiro</City>" strSoap = strSoap & "<PostalCode>3800-000</PostalCode>" strSoap = strSoap & "<Country>PT</Country>" strSoap = strSoap & "</AddressFrom>" strSoap = strSoap & "<MovementEndTime>2013-04-11T13:00:00</MovementEndTime>" strSoap = strSoap & "<MovementStartTime>" & Date.Now.ToString("yyyy-MM-ddTHH:mm:ss") & "</MovementStartTime>" strSoap = strSoap & "<VehicleID>12-ZZ-34</VehicleID>" strSoap = strSoap & "<Line>" strSoap = strSoap & "<ProductDescription>Artigo de testes</ProductDescription>" strSoap = strSoap & "<Quantity>2</Quantity>" strSoap = strSoap & "<UnitOfMeasure>UN</UnitOfMeasure>" strSoap = strSoap & "<UnitPrice>1.00</UnitPrice>" strSoap = strSoap & "</Line>" strSoap = strSoap & "</doc:envioDocumentoTransporteRequestElem>" strSoap = strSoap & "</soapenv:Body>" strSoap = strSoap & "</soapenv:Envelope>" GenerateSoapFile = strSoap Catch ex As Exception GenerateSoapFile = "" End Try End Function Private Function GetATGTCode(ByVal pSoapFile As String, ByVal pWebService As String, ByVal pServiceAction As String, ByVal pCertifPath As String, ByVal pCertifPassword As String) Dim EnderecoWebService As String = pWebService Dim CaminhoCertificado As String = pCertifPath Dim SenhaCertificado As String = pCertifPassword Try Dim request As HttpWebRequest = CType(HttpWebRequest.Create(EnderecoWebService), HttpWebRequest) request.Headers.Add("SOAPAction", pServiceAction) Dim cert As New X509Certificate2 cert.Import(CaminhoCertificado, SenhaCertificado, X509KeyStorageFlags.DefaultKeySet) request.ClientCertificates.Add(cert) request.Method = "POST" request.ContentType = "text/xml; charset=utf-8" request.Accept = "text/xml" Dim postData As String = pSoapFile Dim byteArray As Byte() = Encoding.UTF8.GetBytes(postData) request.ContentLength = byteArray.Length Dim dataStream As Stream = request.GetRequestStream dataStream.Write(byteArray, 0, byteArray.Length) dataStream.Close() Dim response As HttpWebResponse = CType(request.GetResponse(), HttpWebResponse) dataStream = response.GetResponseStream Dim reader As New StreamReader(dataStream) Dim responseFromServer As String = reader.ReadToEnd reader.Close() dataStream.Close() response.Close() Return "OK|" & responseFromServer Catch ex As WebException If ex.Status = WebExceptionStatus.ProtocolError Then Dim resp As WebResponse = ex.Response Dim sr As StreamReader = New StreamReader(resp.GetResponseStream()) Return "NOK|" & sr.ReadToEnd Else Return "NOK|" & ex.Message End If End Try End Function End Class
  24. 4 pontos
    Eu também nunca tinha ouvido falar... Nada como um cliente aos berros ao telefone logo pela manhã para aprendermos estas coisas...
  25. 4 pontos
    Isso apenas acontece porque assim o mundo da programação o quer e acha que é uma linguagem fraca, IMO Muito eu aprendo aqui no P@P. Desconhecia por completo que, para programar, era preciso saber coisas como o facto da coalescência das orbitais pi num anel benzénico criar um tal impedimento estereoquímico que é impossível os halogenetos de felino sofrerem uma reacção do tipo SN2... ele há com cada uma...
×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.