Blog

  • GIF animado no WhatsApp, salve-se quem puder!

    31/08/2016

    Para quem achava que o pior já tinha passado aguarde por esse recurso, quer dizer, já está entre nós.

    Sabe aqueles grupos que você participa que ficam rolando mensagens inúteis, pois bem, inútil vai poder ser considerado um elogio, por que com GIF animado haverá outro adjetivo pior.


  • Análise do smartphone Lenovo Vibe K5

    26/08/2016

    Lenovo Vibe K5

    Depois da semi-morte do meu Samsung Galaxy S4 mini, quebra do vidro (touch) que não justifica pagar mais de 400 reais para a troca do conjunto inteiro, fiquei um tempo com um sofrível lerdo e pior aparelho de celular que já tive em mãos, um Samsung Fame Lite GT S6790l.

    Agradeci bastante pelo empréstimo, mas não indico para ninguém, o pior aspecto foi a lentidão, pense como um usuário com Windows XP e 256MB de RAM rodando Call of Duty se isso fosse possível.

    A vantagem de ser pai é poder ganhar presente no dia dos pais :D, eu havia pesquisado dentre os custo-benefício um Alcatel Idol 3. Em todas as avaliações gostei bastante.

    Alcatel Onetouch Idol 3

    Mas como não encontrei em loja física, quer dizer, minha esposa não encontrou, sobrou dentre outras opções um pouco mais caras o Lenovo Vibe K5 (aqui no Brasil é a versão K5 Plus) e outros dois que não me recordo agora mas o importante é que, pesquisei por N site sobre tech specs e comentário e o Vibe K5 ganhava.

    Sobre o valor, em loja física o Idol 3 também está praticamente o mesmo valor do Vibe K5, mas online, e apenas no Walmart e Shoptime, estava com preços bastante atrativos, na casa dos 650 reais.

    Não vou entrar em detalhes sobre especificações técnicas pois há muitas tabelinhas por aí (ver links de referências no final), meu artigo é para comentar com visão de usuário.

    O Alcatel Idol 3 e o Vibe K5 tem algumas semelhanças técnicas que inicialmente os fazem parecer em patamar parecido, mas não são, vitória do K5.

    Voltando apenas à análise do K5...

    Tela

    Ainda não me adequei a um aparelho de 5", já tinha testado outro aparelho grande há algum tempo também e briguei bastante com ele.

    Tela grande é boa para ler, mas é parrudo demais para manusear devido ao tamanho, eu só utilizo com uma mão então às vezes para alcançar funções tenho que soltar um pouco a pegada firme para deslizar o aparelho e o dedo alcançar um botão em outra extremidade da tela.

    Falando em tela ainda, tem um excelente brilho, na rua eu deixo no automático para compensar o sol direto, mas em ambientes fechados eu quase que zero o nível de brilho.

    Não percebi o problema que alguns reviews dizem sobre o branco ficar amarelado, mas achei a tonalidade de certas cores como o verde (ex.: ícone do WhatsApp) e vermelho mais fortes e em geral um pouco destoantes, algo como vívidas demais tipo um neon ou algo do tipo, de qualquer maneira isso é corrigido via software na Configuração nativa do Lollipop.

    Correção da Tonalidade das Cores

    Som

    Com dois alto-falantes (sistema estéreo) de qualidade excelente em conjunto com o app Dolby Atmos o som tem uma qualidade muito boa - nesse ponto eu gostaria de ter testado o Alcatel Idol 3 para comparar pois ele vem alto-falantes estéreo da JBL.

    O negócio é que o som é bem diferente do que estamos acostumados a ouvir em celulares.

    O fone de ouvido é excelente, mas achei um pouco baixo para algumas situações.

    O volume do auto-falante de ligação telefônica no alto do aparelho - não nos falantes estéreo - achei baixo sempre, não sei se dá para compensar ou está faltando eu configurar algo.

    Microfones

    O Vibe K5 possui um par de microfone permitindo gravar estéreo, mas em uso individual eles atuam de forma diferente.

    Para ligações ok, ninguém nunca reclamou comigo, exceto que o microfone do fone de ouvido capta pouco, mas aí não é do aparelho.

    Eu também utilizo o meu celular para gravar instrumental ao vivo (arranho um pouco no contra-baixo), mas ainda não consegui encontrar a configuração ideal de gravação, e não é porque o som distorce, o normal sobre capturar o áudio desse instrumento, pelo contrário, consigo pegar um som bastante limpo, mas creio que o microfone de baixo (de ligação) contém algo que tem cortado a definição das frequências mais altas, tanto que não distorce mesmo estando bem perto da fonte.

    Estou para testar a opção de usar apenas o microfone traseiro, da câmera de vídeo, que inclusive o app que uso coloca uma observação dizendo que poderá gravar mais alto. Vamos ver no que vai dar.

    Como qualquer Android, é possível também efetuar a gravação através do microfone externo também, mas ainda não pude testar a qualidade disso.

    Vale citar que a gravação não sofre com aqueles chatos efeitos de compressão que alguns aparelhos aplicam, e quando ouvimos é bem perceptível, não dá para perceber nenhum tipo de compressor de áudio atuando, alterando o áudio em tempo real, mesmo com a opção de AGC (controle automático de ganho - de volume) ativada.


    Touch

    Achei bem responsivo o touch, mais que o meu antigo Samsung S4 mini.

    Logo de início pela pegada não tão segura fiquei preocupado mais cuidadoso pelo fato de a tela não ser Gorilla Glass, já li inclusive sobre usuários falando que na primeira queda já quebrou, tanto que já tratei de arrumar um case e uma película, afinal o Gorilla Glass não é apenas contra quebra, mas também evitar riscos.

    Em alguns momento parece que o aparelho não responde como esperado sobre a questão de touch em lugares específicos, a citar quando se puxa de cima para baixo na barra de status para ver as opções disponíveis sobre ativar WiFi e etc, nesse momento parece que dependendo como se pressiona o fato não acontece. Também nos botões capacitivos embaixo.

    Percebi que não é uma falha de touch, mas algo sobre local de pressionamento e/ou tempo de pressão, quanto tempo se aperta considerando que a ação ocorra, então por exemplo, na barra de status eu não tento puxar rápido tentando em qualquer lugar, sei que tenho que puxar de uma posição o mais alto possível e aguardar algo tipo 1 milissegundo para realmente executar a puxada, senão não vai ser percebido.

    Bateria

    Não muito a declarar.

    Atende muito bem mesmo com uso exagerado, ao meu ver, durante o dia.

    Considerando a carga na bateria antes de dormir, somo cerca de 2 a 3 horas de leitura (agregador de notícias e web com internet 3G/4G ativos), grande parte do dia então com WiFi ativo e/ou alternado com 3G/4G basicamente para sincronismos e uso de WhatsApp web, jogo casual por cerca de 1 hora, alguns vídeos, tempo de ligação por volta de 1 hora.

    Com o padrão de uso acima, com poucas variações, a bateria chega com uma sobra no mínimo de 50%, normalmente é mais, na hora em que vou para cama, às vezes prefiro nem carregar, deixo para quando chegar no serviço no dia seguinte.

    Aplicativos Instalados

    O aparelho é bem enxuto seguindo a tendência da Motorola/Lenovo já há algum tempo, não entope de aplicativos inúteis, mesmo os aplicativos embarcados do Google não tem todos instalados, parece algo como a versão mini do GAPPS mas com alguns apps a mais.

    De diferente existe o Lenovo Companion, App Box (atalhos obrigatórios pelo governo a aplicativos nacionais) e um ou outro a mais, o resto é o mínimo normal como Câmera, Gravador e etc.

    Gostei do reconhecimento de fala offline, mas fiz alguma besteira e parou de funcionar assim, só online de novo. :D

    Câmera

    A frontal para selfies tem ótima qualidade, mas percebi que em condições de pouca luz ocorre o odiável efeito de "blur", aquele borrão quando se movimenta a câmera, ou seja, vídeo selfie à noite se prepare para ver borrões e para fotos nada te tentar tirar com movimento.

    A câmera traseira é ótima e não percebi problema de borrões.

    Gostei bastante das possibilidade de foco, mas isso é também o ponto fraco, não por culpa do aparelho, mas por culpa do app de câmera que não sabe em que focar deixando várias vezes imagens simples de pessoas com um pedaço desfocado.

    Sugiro fortemente instalar um outro aplicativo de câmera como o Better Camera, Snap Camera ou Camera Zoom FX.

    Abaixo duas fotos sem flash que aparentemente são iguais, mas uma foi tirada com o Better Camera e outra com o app nativo. Quando se começa a ver detalhe, zoom principalmente, se percebe a qualidade mais baixa.

    Fato que independe do aplicativo utilizado, em condições de pouca luz há ruído, achei até com bastante ruído, mas nada que comprometa considerando que é um aparelho intermediário.

    Compartivo Técnico das Fotos

    Funções Diferenciais

    • Função de desligar e ligar (totalmente!) em horário programado - me parece que não há outro aparelho senão o Vibe A7010 que faça o mesmo no Brasil.
    • USB Host (OTG) - ligar Pen Drives, HDs (com fonte externa), joysticks, teclados e mouse USB direto no aparelho. É um recurso só de séries e modelos mais recentes da Samsung e outros fabricantes.
    • LED indicativo.
    • Botões fora do padrão mas bem dispostos e funcionais.
    • Lanterna que se acessar com um toque ao ligar (sem precisar desbloquear).

    Desempenho

    Ótimo desempenho para uso no dia a dia em diversas funções. Bastante ágil, responde quando solicitado.

    Testei com alguns jogos não tão pesados e rodou bem fluído, mas claro, abusar querendo achar que o Vibe K5 é um Samsung S6 não dá. :)

    Apesar de tudo ótimo nisso há uma situação sobre especificação técnica que meio que tenho que engolir.

    Nessas horas gostaria de ser ignorante, não conhecer e nem tentar investigar, creio que para a maior parte do povo que compra nunca nem saberão que existe isso, mas segundo diversos fóruns há uma "versão" de Vibe K5 vendidos a partir de um determinado lote que, ao que parece, a velocidade da memória interna é maior tanto para leitura, quanto para gravação.

    A velocidade normal é de cerca de 98MB/s para leitura e 13MB/s para escrita.

    Velocidade da Memória Interna "normal"

    Tanto a memória interna, quanto a do "SD 0" é a mesma pois é embutida no aparelho, só muda a forma como é mapeada.

    Em diversos fóruns li sobre a velocidade que a partir de um determinado lote (isso se vê no código de barras da caixa) as memórias por ser até 6 vezes maior para escrita, para leitura apenas um pouco.

    Comentário na Google Play sobre memória

    Várias pessoas de suporte da Lenovo dizem que isso não é possível e que a velocidade que é a do meu é algo de fábrica dentro dos padrões para o desempenho otimizado, que não há aparelhos diferentes sendo vendidos.

    Eu não duvido que realmente os primeiros lotes ainda estão sendo desovados e que lotes seguintes podem até ter chips mais rápidos, também não duvido que eles irão negar isso.

    Atualização para o Android 6 (Marshmallow)

    Até o momento ainda não saiu a atualização, mas que lá fora me parece que já saiu.

    O aparelho tem todos os motivos para ter pelo menos o Marshmallow, idem até mesmo o Nougat, mas não há uma data sobre isso.


    O suporte da Lenovo diz que já está em fase de testes, se é que podemos acreditar.


    Aproveitando, no dia 15 de agosto saiu uma atualização do Lollipop:

    Atualização Lollipop

    Comentários e problemas de outros usuários

    Assinei diversos grupos no Facebook e WhatsApp e vejo que há alguns com problemas com os seus Vibe K5.

    Uma possível solução genérica que vejo considera o reset de fábrica do aparelho, pois ficou parecendo que a Lenovo botou alguns aparelhos para venda sem testarem a instalação direito.

    Também há casos de usuários que não leram as funções que o aparelho realmente oferece e ficam reclamando ou comparando com outros aparelhos que podem estar com Marshmallow ou tem um launcher com funções nativas a mais, mas não é o Vibe K5 que seja ruim, por exemplo a Touchwiz dos Samsung tem algumas funções interessantes que não serão vistas no Lenovo Launcher, que não tem praticamente nada de interessante diga-se de passagem.

    Basicamente dá para separar os problemas que vi nos seguintes tipo:

    • Álbum não renomeia ou não deixa criar - certamente que não vai deixar, o app de galeria é muito básico, basta instalar um melhor.
    • Foto ruim - procure outro aplicativos de câmera como Snap Camera, Better Camera, Camera Zoom FX e outros.
    • Bateria acabando rápido - há algum aplicativo ou serviço rodando de fundo drenando a bateria.
    • Aparelho esquentando - Motivo pode estar relacionado à "bateria acabando" acima (todo Samsung que usei esquenta mais com menos clock e núcleos).
    • Lentidão/engasgos - pode ser sobre algum aplicativo de fundo rodando, senão um reset de fábrica poderia resolver.
    • Wi-Fi caindo - esse parece realmente um bug da instalação do Android que se resolveria - em tese - com o reset de fábrica.

    Bateria não dura nada! (???)

    Celular não aquece sozinho, aquece quando há algum programa executando de fundo ou explicitamente você está utilizando. 

    Se há algum programa sendo executado, então há bateria gastando e há aquecimento, sendo que esse depende de quanto poder de processamento o aplicativo precisa.

    Já li sobre o WiFi não mantendo conexão, nessa condição o sistema entraria num loop de WiFi reconectando e serviços/programas que dependam dele também tentando executar, isso pode gerar execução em sequência dos programas e assim gasto de bateria e aquecimento também.

    Também sobre gasto de bateria, fora os motivos conhecidos gerais a qualquer aparelho e qualquer sistema operacional, na internet há várias explicações, como por exemplo brilho excessivo, rotação ativa, 3G/4G ativos sem haver rede para tal e outros, também podemos considerar as seguintes situações relacionadas a aplicativos de rede social que mantém conexão constante com a Internet:

    • Processo de atualização do feed de notícia do Facebook (isso é fato mesmo no iOS!).
    • Muitos grupos movimentando conversas no WhatsApp e baixando automaticamente conteúdo. 

    Português do Brasil ora, pois!

    A Lenovo tem um sério problema sobre tradução, se encontrar palavra como "ecrã" melhor relevar.






    Referências:


  • LinkedIn lança ferramenta para contratação de freelancers (reprodução)

    25/08/2016

    O LinkedIn está lançando nesta quarta-feira (24) sua primeira ferramenta desde que foi adquirido pela Microsoft em um negócio de US$ 26 bilhões anunciado em junho. Trata-se do ProFinder, um mecanismo de busca voltado exclusivamente para a contratação de freelancers, permitindo que empresas e responsáveis por projetos busquem rapidamente profissionais para a realização de trabalhos pontuais.

    A ideia parece ser uma extensão da mesma funcionalidade que já estava disponível para colaboradores tradicionais, e agora avança para o mercado de freelas, que vem ganhando cada vez mais corpo. Por enquanto disponível apenas nos Estados Unidos, a ferramenta permite que o empregador insira, por exemplo, o orçamento disponível e encontre uma lista de profissionais dentro daquela faixa de preço. As pesquisas também podem levar em conta outras características como a experiência de quem está à disposição para trabalhar e sua localização geográfica.

    Apesar de não se restringir a determinadas áreas de atuação, o LinkedIn afirma que seu mecanismo de pesquisa funciona melhor para trabalhos das áreas de design, tecnologia da informação, consultoria de negócios, fotografia e desenvolvimento de software. Não por acaso, estão também nesses nichos a maioria dos profissionais que utilizam a plataforma como uma parte ativa do mercado de trabalho. Ou seja, esse desempenho melhor tem a ver com o fato de que os currículos de tais profissionais são mais atualizados e disponíveis em maior quantidade.

    A recíproca também é verdadeira, e freelancers também podem buscar na rede por vagas que atendam às suas capacidades profissionais e expectativas. Em ambos os casos, o contato pode ser feito diretamente pela rede social para discussão de preços e condições, antes que a comunicação seja levada para outras redes e o trabalho, efetivamente, comece a acontecer entre os interessados.

    Além disso, o ProFinder conta com um sistema de prioridade nas buscas que privilegia freelancers ou empresas que estejam dentro do rol de conexões de um usuário, uma vez que ele coloca uma vaga ou a si mesmo à disposição. A ideia do LinkedIn, com isso, é trabalhar com uma versão virtual de um sistema de indicações, no qual proximidade e conexões em comum podem não apenas identificar uma afinidade com determinados projetos, mas também a possibilidade de conhecer melhor o perfil dos envolvidos.

    O projeto estava em testes desde 2015 e, somente agora, ficou disponível para todos os usuários nos Estados Unidos. Ainda não há previsão de liberação para outras regiões, mas como a ideia do LinkedIn é incentivar o mercado de freelancers – que a empresa cita como uma parcela considerável de seus usuários –, é de se imaginar que a plataforma não deve demorar a chegar a mais locais.

    Referências:

    • http://corporate.canaltech.com.br/noticia/linkedin/linkedin-lanca-ferramenta-de-contratacao-de-freelancers-77907/
    • https://www.linkedin.com/profinder/blog/linkedin-profinder-expands-nationwide


  • ASP.NET MVC - Retornando um erro 500 com mensagem (explicando quando ocorre status code = 0)

    21/07/2016

    Em desenvolvimento web podemos (devemos!) trabalhar com código protegido no lado do servidor (entre try...catch), para então - também - trabalharmos com mensagens amigáveis ao usuário, para isso para uma exceção gerada no servidor retornamos também a mensagem de erro tratada.

    O exemplo abaixo é só um snippet no contexto MVC considerando método POST no Controller com retorno do tipo ActionResult:

    ‚ÄčEntão no bloco catch temos:

     

    return new HttpStatusCodeResult(HttpStatusCode.InternalServerError, mensagem);  

    Sendo que a variável mensagem tem o valor de "ERROR FORÇADO NO SERVIDOR".

    Como resultado da chamada temos o seguinte retorno:

    Tudo certo, mensagem retornada, status code = 500.

     

     

    RESSALVA!!!

    Em uma outra simulação.

     

    return new HttpStatusCodeResult(HttpStatusCode.InternalServerError, mensagemMuitoGrande);

     

     

    Digamos então que a variável mensagemMuitoGrande tenha um valor grande (não sei precisar o limite), pode ser um log mais completo do erro, não sei, qualquer conteúdo string que extrapole o limite.

     

    Você então irá se deparar com um problema que está relacionado ao tamanho do response e com isso a interceptação da exceção gerada terá um status code = 0, ao invés de 500, e nada de mensagem retornada.

    A informação mais completa no rastreamento da rede (fico devendo a imagem) exibe como "aborted", ou seja, o tal limite atingido faz com que o retorno do request seja "cancelado/abortado".

     


     


  • Tabela de acentos em JavaScript

    20/07/2016

    Quem trabalha com desenvolvimento em Javascript de vez em sempre precisa utilizar frameworks de terceiros (ExtJS, Bootstrap, Jquery, AngularJS, DevExtreme e outras) ou mesmo construir uma própria código nativo.

    Sobre acentuação, em alguns casos a meta tag charset pode não ser suficiente para corrigir problemas de textos exibidos ao usuário com caracteres estranhos.

    Para a situação citada você pode substituir os acentos por códigos.

    Abaixo uma tabela com os tais caracteres e os seus substitutos:

    á = \u00e1

    à = \u00e0

    â = \u00e2

    ã = \u00e3

    ä = \u00e4

    Á = \u00c1

    À = \u00c0

    Â = \u00c2

    Ã = \u00c3

    Ä = \u00c4


    é = \u00e9

    è = \u00e8

    ê = \u00ea

    ê = \u00ea

    É = \u00c9

    È = \u00c8

    Ê = \u00ca

    Ë = \u00cb


    í = \u00ed

    ì = \u00ec

    î = \u00ee

    ï = \u00ef

    Í = \u00cd

    Ì = \u00cc

    Î = \u00ce

    Ï = \u00cf


    ó = \u00f3

    ò = \u00f2

    ô = \u00f4

    õ = \u00f5

    ö = \u00f6

    Ó = \u00d3

    Ò = \u00d2

    Ô = \u00d4

    Õ = \u00d5

    Ö = \u00d6


    ú = \u00fa

    ù = \u00f9

    û = \u00fb

    ü = \u00fc

    Ú = \u00da

    Ù = \u00d9

    Û = \u00db


    ç = \u00e7

    Ç = \u00c7


    ñ = \u00f1

    Ñ = \u00d1


    & = \u0026

    ' = \u0027

    Referências:


  • Monitorando ataques a aplicações Web em ASP.NET

    20/07/2016

    As aplicações que desenvolvi para clientes possuem um mecanismo de log que implementei que também detecta erros na requisição de rotas ASP.NET MVC além de erros de aplicação, validações, regras de negócio e outros.

    Inicialmente quando pensei em fazer isso não imaginava que seria útil para outrs fins, de vez em quando recebo e-mails de requisições de tentativas fúteis em encontrar falhas de segurança na aplicação baseadas em requests lançados a esmo por crackers querendo invadir sites nem que seja apenas para defacing.

    Fúteis pois são como tiro no escuro numa sala vazia, ou seja, nunca acertará nada no meu caso pelo menos, tentam explorar falhas de frameworks ou aplicações em Javascript, JSP ou PHP.

    Uma pequena lista de falhas que tenta explorar:

    • Error: The controller for path '/testproxy.php' was not found or does not implement IController.
    • Error: The controller for path '/menuBcm.js' was not found or does not implement IController.
    • Error: The controller for path '/web-console/ServerInfo.jsp' was not found or does not implement IController.
    • Error: The controller for path '/modules/simpleslideshow/uploadimage.php' was not found or does not implement IController.
    • Error: The controller for path '/license.php' was not found or does not implement IController.
    • Error: The controller for path '/wp-login.php' was not found or does not implement IController.
    • Error: The controller for path '/AdServer/UCookieSetPug' was not found or does not implement IController.

    Estou pensando em realmente entrar na brincadeira simulando a página como a que tentam acessar para extrair a informação que estão tentando submeter.


  • Gestão de Projetos x Gestão de Pessoas (reprodução)

    20/07/2016

    Reprodução de um artigo que achei interessante e retrata uma realidade na minha área de atuação.

    Ao final faço um comentário.

     

    "

    Por Renato Lopes*

    Todo Gestor, seja ele de TI ou não, deveria fazer como segunda faculdade o curso de psicologia. Ou pelo menos fazer um ano de terapia antes de assumir essa função. Afinal, para entender o próximo é preciso entender a si mesmo. O resultado disso são ações muito mais estratégicas e com resultados surpreendentes. Explico.

    Imagine um Gestor de TI com um projeto em mãos, data limite para entrega e com uma mensagem subliminar enfatizando a importância do cumprimento dessa data e sem a mínima hipótese de adiamento. Projeto em mãos é hora de delegar as tarefas. E é nesse ponto que se pode definir o sucesso ou o fracasso de sua execução.

    Passar a tarefa certa para a pessoa certa é mais que um feeling, é um conhecimento amplo da equipe e específico de cada membro dela. O gestor, além das tarefas, deve prestar atenção na ação de cada colaborador no seu dia a dia, desde o modo de dar bom dia, ao comentário do corredor ou do cafezinho. São os pequenos detalhes que fazem com que o Gestor tenha conhecimento de cada um.

    Observe que, ao saudar sua equipe, há uma forma peculiar em todos eles: um olho no olho, uma batida de mão, uns tapinhas nas costas… Marque sua equipe por detalhes bons ou ruins: o mais comunicativo, o mais concentrado, o desligado, o hands on, o pesquisador ou qualquer outro detalhe.

    Feita essa observação, assimile todas elas e cruze com as tarefas que tem a desenvolver no seu projeto. Você verá que há uma grande probabilidade da tarefa ser bem sucedida e de forma mais prazerosa sendo passada a quem tem melhor habilidade para esta execução. Este cruzamento de informações servirá também para escolher o líder do projeto. Líder, esse, que deve variar a cada projeto (salvo se a equipe não tiver essa opção), pois a rotatividade e o ato de arriscar, de forma calculada, são válidos como experiência de resultados e motivação para a equipe.

    Antes de apresentar as tarefas e o líder, fale sobre o projeto de forma macro, o que e a quem vai beneficiar, quais departamentos o projeto apoiará, como é o cenário atual e como ficará. Apresente também a data de entrega desse projeto. Nessa hora, fique atento às reações diversas, tanto físicas quanto comentários. Preste atenção na reação de cada um da equipe. Pode ser que aquele que você escolheu como líder seja o primeiro a franzir a sobrancelha, cruzar os braços ou cochichar algo com o companheiro ao lado. E cabe a você correr o risco de mantê-lo na função ou utilizar uma segunda opção.

    Se possível, busque uma pessoa de outro departamento que irá ser beneficiário direto para participar do projeto. 

    O “pensar fora da caixa” muitas vezes auxilia quem está envolvido a “bits e bytes”.

    Divididas as tarefas em grupos de ações, defina as datas e peça um status semanal ao líder sobre o andamento das equipes. Em momentos distintos, converse informalmente com os outros participantes para cruzar informações e auxiliar subliminarmente. Acompanhe esporadicamente as reuniões como ouvinte para sentir a participação de todos e como o líder se comporta como mediador nas tarefas e discussões. Repare onde sentam os participantes e perceba que os aliados (ou os que estarão mais entrosados) sentarão lado a lado e geralmente o mediador senta na ponta. A ideia é que sua presença não iniba os participantes e que você possa colher o máximo de informação do projeto, bem como de todos os envolvidos.

    Ao falar sobre a apresentação do projeto, informe com antecedência o que deverá ser feito, incluindo como foi o processo e como ficou o produto final. A ideia da apresentação é tomar nota do envolvimento de cada um na execução, bem como o conhecimento do que foi desenvolvido.

    Após as apresentações, parabenize a todos e divulgue o resultado final. Não se esqueça de que o reconhecimento faz parte da melhora do ambiente de trabalho e propicia a sensação de dever cumprido!

    Enfim, quando o Gestor está apto a fazer determinadas análises sobre o grupo, o resultado de suas escolhas e feedbacks são muito mais enriquecedores e auxiliam na melhoria dos pontos fracos do colaborador. E essa escolha acertada vai ficando mais eficiente e fácil a cada projeto executado.

     

    *Renato Lopes é Gestor da área de TI e acredita que a humanização dessa área é a chave para conquistar equipes de alta performance e auto gerenciáveis. Palestrante e Professor Universitário, Renato busca compartilhar técnicas e soluções para formar times vencedores e entusiastas, buscando a qualidade de vida junto à satisfação do trabalho.

     

    "

     

    Meu comentário...

     

    Para quem não conhece leia sobre SCRUM, pois vários pontos abordados no artigo são diretamente ligados e mesmo resolvidos quando se aplica uma metodologia ágil no desenvolvimento e quando a equipe é auto-gerenciável, autônoma em diversos aspectos e cada membro está focado no objetivo temporal em comum que são as entregas, cumprir com cada sprint que foi acordada "olho-no-olho" algumas vezes com o próprio cliente e não um gerente/líder que tem que fazer o papel de testa de ferro.

    Referências:


  • LINQ :: Select().Max() considerando retorno que pode ser nulo

    20/07/2016

    Para quem desenvolve sistemas e trabalha com LINQ e banco de dados, pode existir uma situação em que seja necessário fazer o que utilizando SQL convencional seria um SELECT MAX(campo), sendo que normalmente campo uma chave primária (particularmente eu trabalho com PKs identity ou sequences).

    O objetivo é simples, encontrar o maior valor para um determinado campo.

    A sugestão utilizando LINQ é algo como:

    decimal consultaId = ContextoBD.Query<TipoDominio>()     .Select(x => (decimal?)x.Id)     .Max() ?? 0; var maiorId = (consultaId + 1); return (int)maiorId;

    Mas então a pergunta, "qual o detalhe do código, não seria óbvio só utilizar o método Select() e então Max() diretamente para uma variável Int?".
    Só que isso não funciona em todos os casos!
    O detalhe no código acima está em utilizar um tipo decimal como retorno com um cast nulável da coluna alvo (Id) e um operador de coalescência nula garantindo 0 como retorno.
    O motivo por tal manobra é que o LINQ irá falhar caso exista algum valor nulo (ou coleção vazia) e tentará retornar um valor nulo para um tipo Int, mesmo que você determinei que possa aceitar Int?, pra mim isso é um bug, mas enfim, o código garantirá um valor zero nas condições que de maneira convencional daria um erro em tempo de execução, sim, porque em tempo de compilação não daria erro.
    Referências: