Arquivo

Archive for the ‘Dicas / Tips’ Category

O que ninguém te contou sobre o MacBook Pro e o Mac OS

04 - 17 6 comentários

Estou há 7 dias usando o famoso MacBook Pro 15″ 512SSD I7 2.7 16 GB RAM TOUCH ID E TOUCH BAR (de agora pra frente denominado somente MBP) recém adquirido. Sempre ouvi falarem bem do equipamento, e resolvi conhecer, testar. Não antes de muita pesquisa, leitura, e assistir muitos reviews no youtube.

Quanto as portas do note, eu já sabia que ia ter que comprar adaptadores, mas me convenci que portas USB-C eram mesmo o futuro. Inclusive ironicamente, o iPhone usa lightning, enquanto vários androids do mercado já vem de fábrica com portas USB-C.

No processo de escolha, considerei um Dell Latitude Quad Core vendido no Brasil, um Avell B115, ou um DELL XPS 15 (importado). Me interessei mais pelo DELL XPS 15, mas a fabricante não cobre garantia de equipamentos importados, então optei pelo APPLE.

Sou um programador .NET, e pensei que o MBP seria a máquina definitiva para desenvolvimento tanto windows (Bootcamp), quanto mobile (IOS/Android), pois é preciso uma máquina com MacOS para desenvolver para iOS. Minha idéia era usar o BOOTCAMP para ter todo o poder de fogo da máquina no ambiente windows, e trocar para MACOS quando quisesse usar recursos específicos do Mac, combinando com Parallels para usar o Windows dentro do Mac. Um recurso bem legal inclusive do Parallels, que virtualiza minha partição do bootcamp, permitindo um mix interessante, mas como você poderá ler a frente, meus planos não deram tão certo.

No meu dia-a-dia:

  • Programo em Windows Forms + ASP NET MVC + PostgreSql com Visual Studio 2015.
  • Programo em Web com ASP.NET CORE + DOCKER + DocumentDB / RavenDB on Azure com Visual Studio 2017.

Equipamentos que utilizo:

  • No meu HomeOffice: teclado Wireless Microsoft / monitor 24″ LG
  • No meu escritório: teclado genérico OEX / monitor ultra wide LG / impressora multi-funcional samsung

Equipamentos adicionais que possuo:

  • Microsoft Arc Touch Bluetooth: comprei um cinza para utilizar no meu MacBook. Mas se tornou um peso de papel, pois tem sérios problemas de pareamento com MacOs (funciona bem em Linux e Windows). Toda vez que: computador entra em suspensão, mouse entra em modo de economia de energia, ou fica parado por alguns minutos, o pareamento é invalidado, e tenho que refazer o pareamento, segurando o botão de pareamento do mouse por 10 segundos, abrindo a tampa do notebook (pois uso 100% do tempo com um segundo monitor) para usar o trackpad, indo na área de bluetooth do sistema e refazendo tudo.

    MacOs_PareamentoMicrosoftArcTouch.jpg

    Tendo que refazer o pareamento constantemente, graças a um bug do MacOs que não faço idéia como contornar. Acabei desistindo de usar o mouse.

Minhas percepções sobre o hardware do MacBook Pro:

Prós:

  • Ótimo acabamento, aparência metalizada é agradável.
  • A tela é linda. Profissionais da área gráfica devem fazer bom proveito.
  • Saída de ar fica na parte de trás, não joga o ar quente na nossa perna caso usemos no colo.
  • Creio que a dobradiça seja melhor que do meu antigo Dell Inspiron, meu Dell Inspiron começou a quebrar a dobradiça da tela com 2 anos de uso, consegui reparar, mas não ficou como o original.
  • Como ele carrega via USB-C eu consigo escolher a porta em qual vou carregar o aparelho. Se a tomada está do seu lado direito, troque o cabo de energia pra porta que está do lado direito, se a tomada está do lado esquerdo, idem.

Contras:

  • apesar da saída de ar estar bem posicionada, em várias ocasiões, ele esquenta ao ponto de cozinhar um ovo, ficando impossível utilizar no colo.
  • Como o super-aquecimento fica na região da bateria, a durabilidade dela vai ser muito menor. Espero que só a bateria se degrade rápido, pois tudo nesse computador é soldado, aumentando as probabilidades dele se tornar um peso de papel muito caro ao longo do tempo.
  • Fonte dele é branquinha, bonitinha, mas não deixa de ser um trambolho pesado, mais pesado que o notebook eu arrisco dizer.
  • Posição da tecla Ctrl no teclado não ficou boa. Um ctrl+tab pra trocar de aba no browser exige um certo “malabarismo”.

Agora vamos as minhas percepções sobre o software do computador (Mac OS Sierra 10.12.4) :

Prós:

  • O SO estimula bastante o uso de múltiplas áreas de trabalho (mesas), de forma que abramos telas no formato full screen, e nos concentremos em uma atividade de cada vez. Windows também oferece múltiplas áreas de trabalho, mas o maximizar do windows não cria uma desktop exclusiva pro aplicativo.
  • Observei que alguns aplicativos que uso no windows, tem uma estética ainda melhor no MacOS.
  • Shortcuts, muitos atalhos de teclado para diversas funções. Acho que dominar os atalhos é essencial nessa plataforma.
  • Integração com iPhone: quando o telefone toca, posso atender pelo computador, usando meu fone de ouvido. Acho ótimo evitar a radiação que o celular emite em nosso cérebro quando o utilizamos próximo a cabeça. É mais saudável. 🙂

Contras:

  • Não funciona bem com teclados externos (acentos mudam de lugar, algumas teclas não são reconhecidas)
  • Mac Os Sierra não funciona direito com o Microsoft Arc Bluetooth Mouse (detalhe: funciona bem até no linux). Comprei esse mouse pra usar quando meu macbook chegasse, e ele se tornou um peso de papel de R$ 350,00.
  • Atalho: arrastar arquivo com o botão direito do mouse, e soltar para colar uma cópia, não existe no MacOS.
  • MacOs não te dá a mesma liberdade que o windows ao lidar com múltiplos monitores. É necessário fechar a tampa do notebook, conectado na energia, pra ele entender que eu só quero usar o monitor externo. No windows, a combinação WINDOWS+P, exibe o menu de projeção. Não sou obrigado a cumprir o mesmo “ritual” que o mac me obriga.

    Windows_MenuDeProjecao.png

    Consigo definir com facilidade minha estratégia de utilização de um segundo monitor, através do atalho windows+p.

  • Ainda na linha de múltiplos monitores, se eu estou usando meu monitor ultra-wide, e volto para o monitor do notebook, o macos não reorganiza minhas janelas. Já o windows re-organiza as janelas, de forma que elas respeitem a borda da tela. É um pequeno detalhe, incomoda pouco. A questão é: cadê a atenção aos detalhes da Apple? É de propósito ser assim?

Minha experiência com Apple Bootcamp:

  • Wifi caindo e voltando sem parar. UM HORROR! Reinstalei o bootcamp 2 vezes, excluindo a partição e começando do zero com ISO’s diferentes do Windows. Essa foi a principal razão que me fez abandonar o bootcamp.
    Veja essa busca no google sobre problemas no Wifi com Bootcamp
  • Computador esquenta muito mais que o normal, navegando na internet. Fazendo atividades simples. E detalhe, se eu reinicio a máquina e volto pra MacOS, navegando nos mesmos sites, a máquina se resfria. Parece até boicote da Apple.
    Detalhe:

    Apple_AtendimentoBootcamp.png

    Atendimento obtido via chat da apple. Em azul minhas mensagens, em cinza mensagens do atendente apple.

  • Trackpad não funciona com mais de 3 toques simultâneos. Driver porco da Apple, mal feito. Não tiveram capricho. Por sorte tem um software paralelo que melhora a compatibilidade do Trackpad com windows.
  • Bluetooth não funcionou. Meu Microsoft Arc Bluetooth, não funcionou com o driver de bluetooth que o bootcamp instala. Nem reconheceu o mouse para pareamento.

Aplicativos para MACOS:

Algumas coisas me impressionaram na AppStore do Mac, como carência de aplicativos de qualidade, e coisas que o windows oferece built-in, é cobrado aqui nesse ambiente.

Utilitários para descompactação – BAD

Você usa 7zip, WinRar? Esqueça isso no MAC. Até agora não encontrei um utilitário de descompactação que me permitisse extrair arquivos pré-selecionados. Os que encontrei me obrigam a extrair tudo, e depois excluir o que eu não quero.

Graças a essa carência, veja qual é o 4o aplicativo mais vendido na loja, e quanto estão pagando:

MacOs_Winzip30dolares

Skitch by Evernote – GOOD

Foi uma grata surpresa encontrar na AppStore esse aplicativo que eu adoro. Me ajuda a destacar pontos em imagens, e fazer pequenas montagens. #recomendo

Captura de Tela 2017-04-27 às 21.31.39

Parallels – VERY GOOD

  • Aplicativo de virtualização muito bem feito.
  • Integração com sistema de arquivos do Mac é ótima. Salvo os arquivos da máquina virtual direto no sistema de arquivos do Mac, facilitando o trabalho simultâneo.
  • Pelo computador ser quad-core, não observei perca de performance utilizando o windows virtualizado, óbvio que tem percas, mas não pude perceber.

Conclusões:

  • Gostaria que de ouvir opiniões, dicas, se possível me ajude nos comentários a achar mais pontos positivos nessa plataforma, e que me ajudem a ser mais produtivo.
  • Espero conseguir vendê-lo e comprar um Surface Book ou um notebook gamer windows.

[Atualizado 27/04/2017] Faço um comparativo sobre aplicativos.

[ Links ] Reddit Bluetooth problems

Abraço.

Evolua o MessageBox com TaskDialog

Olá Pessoal.

Neste post lhes apresento o Task Dialog. Perfeito para o cenário Windows Forms + C#, onde você precisa transmitir uma mensagem em tela para o operador do seu sistema.

Na versão Windows Vista em diante, a microsoft incluiu uma API de mensagens a TaskDialog, que expande muito as possibilidades de apresentação de mensagens em tela.

Você está limitado as possibilidades abaixo?

aparência de um message box

aparência de um message box

Porquê não expandir suas possibilidades de customização para isto?

Demonstrativo com todas as opções de customização da task dialog

Demonstrativo com todas as opções de customização da task dialog

Veja que você pode adicionar Radio Buttons, Botões de Comando, área expansível, para exibir detalhes da mensagem, mensagem de rodapé com ícone, etc.

Vai melhorar a legibilidade das suas mensagens, facilitando o entendimento, e criando a possibilidade do seu operador executar ações diretamente na mensagem.

API com Task Dialog: https://msdn.microsoft.com/en-us/library/windows/desktop/bb787471%28v=vs.85%29.aspx

Para não se preocupar com os detalhes da invocação desta API seguem 2 dicas:

Wrapper para Windows Vista ou superior: http://www.codeproject.com/Articles/17026/TaskDialog-for-WinForms

Wrapper que funciona também em versões anteriores do windows: http://www.codeproject.com/Articles/21276/Vista-TaskDialog-Wrapper-and-Emulator 

Valeu pessoal.

Abraço.

Entity Framework 6, WCF e Detached Entities

Esse artigo irá ajudar outros programadores que estejam trabalhando com entity framework 6 em um cenário de inserção/alteração de entidades desatachadas.

Estou trabalhando em um sistema com o seguinte cenário:
Clients: Windows Forms e ASP NET MVC
Backend: WCF + EF6 + Azure Sql Database

No meu domínio, minhas entidades herdam desta BaseEntity abaixo:

    public class BaseEntity
    {
        public DateTime DataCadastro { get; set; }
        public DateTime DataAlteracao { get; set; }
        public virtual OperadorSistema OperadorCadastro { get; set; }
        public virtual OperadorSistema OperadorAlteracao { get; set; }
    }

E estou tentando persistir a entidade Empresa:

    public class Empresa : BaseEntity
    {
        public int EmpresaId { get; set; }
    }

Tendo apresentado o domínio, imaginem que na minha aplicação client, na tela de Edição de dados da Empresa, coleto os dados e envio para o método GravarEmpresa, no meu WCF.
No meu serviço, eu instancio um novo contexto do entity framework, e tento atachar a entidade recebida pelo WCF ao contexto:

   this._dbSet.Attach(entity);

O cadastro da empresa chegou da seguinte forma:

Tenho um usuário “Admin” cadastrado, ao gravar alterações na “Empresa”, imaginem que tanto na propriedade OperadorCadastro quanto na OperadorAlteracao, o operador “Admin” está associado, com a mesma Primary Key, mas com referências de memória diferentes.

O entity framework faz um processamento sequencial atachando a entidade root, e as entidades associadas, e dispara o seguinte erro:  “Attaching an entity of type failed because another entity of the same type already has the same primary key value.”

Para solucionar o erro, usei a biblioteca GraphDiff.

A biblioteca GraphDiff tem uma interface fluente, e facilita bastante o attach de objetos no contexto.

Conclusão:

=> Antes:

    public override void Update(Empresa entity)
    {
        this.context.Empresas.Attach(entity);
    }

=> Depois:

    public override void Update(Empresa entity)
    {
        context.UpdateGraph(entity, map => map.AssociatedEntity(ent => ent.OperadorAlteracao));
    }

Referências:
Introduzindo biblioteca GraphDiff http://blog.brentmckendrick.com/introducing-graphdiff-for-entity-framework-code-first-allowing-automated-updates-of-a-graph-of-detached-entities/

Atachando entidade desconectada http://www.entityframeworktutorial.net/EntityFramework5/attach-disconnected-entity-graph.aspx

How to pass any number of parameters into a method in C# .NET

Ótima dica.

Exercises in .NET with Andras Nemes

You must have come across built-in methods in .NET where you can send any number of arguments into a method. E.g. string.Format has an overload where you can pass in a format string and then an array with the “params” modifier.

There’s nothing stopping you from using the same keyword to write a similar method, here’s an example:

Ver o post original 124 mais palavras

Categorias:Dicas / Tips

Criando Script para facilitar a instalação de Windows Service

Fala pessoal. Desenvolvi um Windows Service, e fui procurar as melhores formas de acelerar o processo: compila/desinstala versão anterior/instala versão nova, no ambiente de desenvolvimento. Pois ao desenvolver um Windows Service, para debugar temos que enfrentar essa rotina de registrar no S.O. 1ª abordagem: Tentei usar os “post-build” events, que podem ser configurados direto no Visual Studio, para que, sempre que eu compilasse, o VS já fizesse automaticamente este trabalho de desinstalar a versão anterior e instalar a nova. Problema: Precisa executar em modo administrador os comandos do Post-Build, o que me fez desistir de encontrar uma solução nesse sentido. 2ª abordagem: Criei um .BAT no Notepad++. O motivo de eu ter criado o .BAT fora do visual studio? Tudo que é criado no editor do visual studio, pega o encoding UTF-8, o que gera problemas na execução do batch. Justamente por isso, criei no notepad++, lembrando de colocar o encoding para ASCII. Problema: * Eu não sabia como obter o path do .bat, e não queria definir um path absoluto no script, pois dessa forma o script não serviria para outros desenvolvedores rodarem em suas máquinas. Solução: Usei como exemplo o seguinte código encontrado no stackoverflow: http://stackoverflow.com/questions/13934063/install-windows-service-as-easy-as-possible-with-visual-studio-2012 Com o .BAT criado, adicionei o arquivo no projeto com as seguintes propriedades: Copy to Output Directory = Copy always Build Action = None Dessa forma, sempre que o Build for executado, o .bat vai ser copiado para a pasta de output, ficando pronto para ser executado. Até a próxima.

WebService para consultar Cep Correios

04 - 14 2 comentários

Agilidade no preenchimento de dados cadastrais é muito útil e indispensável em certos momentos.

O preenchimento do endereço muitas vezes é trabalhoso, caso o cadastro não seja feito acompanhado de um comprovante de endereço.

Nesse caso, quando o usuário do sistema dispõe de menos informações para o preenchimento, é muito útil um serviço de busca de endereços a partir do logradouro ou do CEP.

Para descobrir um determinado endereço a partir de um CEP/logradouro podemos:

* Usuário Consultar manualmente no site do Correios:

Consulta a partir do Logradouro/Cep: http://www.buscacep.correios.com.br/servicos/dnec/index.do

Consulta a partir dos dados do endereço: http://www.buscacep.correios.com.br/servicos/dnec/menuAction.do?Metodo=menuLogradouro#

* Consultar um Web Service:

-> Correios: não fornece web service.

-> BuscarCep: muito bom, retorna o Tipo do Logradouro em um campo separado, o que é útil para enxugar endereços. Trabalha com plano pago. http://www.buscarcep.com.br/

-> Postmon API: Uma API para consultar endereços e encomendas a partir do CEP ou código de rastreio. Não retorna o tipo do logradouro em um campo separado.

Imagem

Postmon API

http://postmon.com.br/

Neste artigo recomendo a Postmon Api, que é código aberto, desenvolvido em Python, e pode ser incorporado na sua infra-estrutura existente para reduzir o tempo de resposta dos endereços consultados.

O código está disponível no GITHUB.

As respostas da API são retornadas em formato XML ou JSON.

Zappier – Integrando sistemas

Após conhecer a ferramenta TypeForm que cria os mais incríveis formulários de preenchimento que já conheci, vi no blog da equipe typeform, que havia uma integração com Zappier.

Então fui conhecer o que era o Zappier, e descobri que é uma ótima ferramenta para integrar sistemas no modelo:
Quando isso acontecer -> Faça isso!!!

E o melhor: Você não precisa entender nada de programação para programar essas ações!

Exemplo de ações que o Zappier pode executar:

  • Quando eu receber um novo e-mail no Gmail, envie-me um SMS para o smartphone.
  • Sempre que um novo formulário for preenchido no TypeForm, envie-me um e-mail.
  • E assim por diante.
Exemplo de um Zap

Exemplo de um Zap

Preços da plataforma

Tabela de Planos e Preços

Amostra de serviços populares compatíveis com Zappier

Amostra de serviços populares compatíveis com Zappier

Tenho certeza que em breve vou encontrar várias aplicações práticas no meu dia-a-dia para a ferramenta.

Typeform – Reinventando os formulários

Recentemente acessei um convite para responder uma pesquisa de faculdade de alguém.

Já esperava um link com o costumeiro: Google Docs, e suas enquetes.

Mas não. Tive a grata surpresa de encontrar algo totalmente diferente!

Se chama: TypeForm, e o mote do serviço é: Goodbye forms, hello typeforms → Build a Typeform

Mudou totalmente o meu conceito de formulários.

Recomendo a todos conhecerem a ferramenta!

Da próxima vez que precisar perguntar algo pra alguém de forma eletrônica, vou usar TypeForm com certeza!

 

SpinKit – Indicador de carregamento em CSS

Por acaso encontrei essa biblioteca na web. Feita por um dos funcionários do GitHub.

SpinKit  https://github.com/tobiasahlin/SpinKit

Substitui os tradicionais GIFs nas telas de carregamento, por um design minimalista feito em CSS3.

Exemplo:

Imagem estatica da animação de "loading"

Clique para visualizar a animação

Categorias:Dicas / Tips Tags:, , ,

Hospedagem grátis de código fonte – Team Foundation Service

05 - 13 1 comentário

TFS Grátis

Isso mesmo.

A microsoft está oferecendo gratuitamente, por tempo indeterminado, hospedagem grátis de projetos no TEAM FOUNDATION SERVICE, serviço de hospedagem de source code, que funciona totalmente online.

Incluso:

* Até 5 usuários.

* Número ILIMITADO de projetos.

* Versionamento com (TFVC ou GIT)

* Rastreamento de work itens

* Ferramentas de planejamento ágil.

* Gerenciamento de feedback.

* Build (ainda em preview)

* Gerenciamento de testes (ainda em preview)

-> Com um preço especial para assinantes MSDN no caso de optarem por um plano pago.

Assine já GRÁTIS.

 

Achei a solução perfeita para hospedar aqueles nossos projetos pessoais, ou projetos que envolvam um número pequeno de colaboradores.

Show!

Lembrando que também existe o Assembla, com seus repositórios privados free, e repositórios pagos, com várias ferramentas integradas. Vale a pena conferir: https://www.assembla.com/home

dotnettips.wordpress.com/

Helping Programmers Since 1994

Viagem e Voo

Dicas para viagens, férias e voos nacionais e internacionais

Ivan Guimarães Meirelles

Analista Desenvolvedor

Void Podcast

Vazio e sem retorno de valor

Elemar DEV

Negócios, tecnologia e desenvolvimento

2,000 Things You Should Know About WPF

Everything a WPF Developer Needs to Know, in Bite-Sized Chunks

blog

so long

Fernando Franzini Blog

Engenharia de Software e Arquitetura Ágil

Gabriel RB.net

Blog técnico, com dicas, códigos, novidades e problemas do dia-a-dia programando.

Alexandre Valente's Blog

Experiências em tecnologia e assuntos diversos

%d blogueiros gostam disto: