quarta-feira, 22 de fevereiro de 2012

Method Error 500 - Maximum Length Exceeded with AJAX web service call

Eu estava codificando um  clássico formulário de cadastro, e resolvi usar Cascading Dropdown do Ajax Control Toolkit para a seleção de Estados e Cidades.
O conceito é simples: ao selecionar um Estado no ddlEstados o ddlCidades será populado apenas com as cidades desse estado.

O problema se manifestou da seguinte forma: para os estados que continham mais cidades, como MG, o ddlCidades era populado apenas com a mensagem "Method Error 500", porém essa não era uma exception disparada, e não era possível debugar o projeto e encontrar o disparo da exception. (Talvez se eu usasse o source do Ajax Control Toolkit em vez da biblioteca compílada seria possível debugar).

Tudo indicava que a exception estava sendo tratada, e no tratamento ela escrevia esse erro 500 nos itens.

Esse problema é causado porque existe um limite máximo de itens JSON que uma página pode mandar ou receber. Para alterar esse valor deve-se acrescentar as seguintes linhas no web.config:



  
    
       
    
  

Lembre-se que esse 5000000 é um exagero, apenas de exemplo. Dependendo do caso 2000 está de bom tamanho.

Links que podem ser úteis:

http://www.asp.net/ajaxLibrary/AjaxControlToolkitSampleSite/CascadingDropDown/CascadingDropDown.aspx
http://www.asp.net/ajaxLibrary/AjaxControlToolkitSampleSite/Walkthrough/CCDWithDB.aspx
http://harriyott.com/2007/07/method-error-500-maximum-length.aspx

Have Fun ;)

quarta-feira, 15 de fevereiro de 2012

Empregos DEV - Lá e de volta outra vez!


Pois é pessoAll,
Saudades de vocês .... mais ou menos

Passei uns bons 3 ou 4 meses sem postar nada (e com minha vida digital totalmente jogada às traças).

Para me desculpar com meus (poucos) leitroes: é que eu fui demitido. Sim, é frustrante, e pode acontecer com qualquer um. Só que eu fui demitido em uma época em que além de uma fatura medonha de cartão de crédito eu tinha (e ainda tenho) um TCC da pós graduação para fazer.

Fiquei os 45 primeiros dias fazendo de 2 a 3 entrevistas por dia durante o dia, e a noite me candidatanto a TODAS as vagas possíveis.

Depois entrei em uma empresa chamada Lider Telecom, que presta serviço para a Telefônica (sim, eu me tornei aquilo que mais odeio na minha vida, e todo dia me auto flagelo com uma agulha de tricô incandescente direto no fígado.)
Nessa empresa tenho que entrar as 8:00, sair as 18:00 todo dia, sem horário flexível, sem atrasos, sem carnaval, com hora extra na conta do abreu e .... já entendeu né?
Sem contar que a empresa fica a 1:30 h da minha casa. Acordar todo dia as 5:30 para conseguir chegar no trampo as 8:00 pegando a linha vermelha do inferno lotada e o Cidade Tiradentes <-> Metrô Penha é tão agradável quanto uma dose de quimioterapia. (não exagerei na hipérbole, quem me conhece sabe porquê).

Por isso o blog ficou para as cucuias.

Mas isso foi bom, aprendi um monte de coisas nessa busca por emprego, e vou deixar as dicas aqui:

1) Todas as dicas que você já viu em revistas da área de RH, sites etc são válidas, porém nossa área tem umas peculiaridades interessantes.
2) Vestimenta: modéstia e bom juízo sempre. Mesmo se você for um nerd programador jovem que não terá contato com clientes e fornecedores, eu garanto que um terno nunca será a vestimenta errada, peque por excesso. Ainda mais se você for um velho obeso mórbido de 400 quilos como eu, pega mau aparecer de calça jeans e camiseta "nerdpower" ou "bsod" na entrevista, de boa, um terno emagrece.
3) Faça um cartão pessoal. É bom, bonito, elegante, mostra suas habilidades e seu interesse comercial, é um mini-cv e tem os seus contatos sempre à mão. Eu entreguei "uma pá", e como isso é vendido em doses de 1000, eles estão se multiplicando em meu armário.
5) Seja muito atento a listas enumeradas que pulam um número.
6) Não, você não tem inglês fluente, ainda mais se quem for entrevistas você em "inglês" for um argentino, ou um texano.
7) Fuja de PJ, a não ser que você queira mesmo (e muito) abrir uma empresa e tocar seu próprio negócio. Muita dor de cabeça com impostos e compromissos fiscais.
8) Fuja de cooperativas igual o diabo foge da cruz.
9) Tenha um CV em inglês.
10) Tenha um segundo CV resumido. Principalmente se você for entrevistado por várias pessoas da empresa, deixe o CV mais técnico com a equipe técnica ou com quem faz a pré seleção, e o CV resumido, com formação e qualidades pessoais/profissionais você entrega para o pessoal administrativo/RH.
Eu programo em um monte de linguagens (algumas mais outras menos), conheço um monte de tecnologias e bancos de dados, assim como você. Não dá pra colocar tudo isso no CV, polui muito, além disso eu posso programar até em Fortran (que eu nunca tentei) tendo acesso ao google e um bom livro. Além disso tecnologias no CV confundem o pessoal de RH.
Já vi funcionário de RH despensando um CV que constava habilidades em C# porque a empresa estava precisando de .Net (se o cara tivesse escrito .Net em vez de C# estava empregado.) Vi também a mesma pessoa dispensar um cara mestre em Interbase porque ela precisava de alguém fera em Firebird (WTF? o.O). Ou seja, você pode falar qualquer abobrinha para essas pessoas do RH porque elas são totalmente desqualificadas para julgar, avaliar ou medir um profissional de TI, principalmente de desenvolvimento de software.
11) Um portfólio vale mais que um currículo. Se você tiver blog, sites na web, códigos, componentes e programas feitos por você mostre, inclusive o fonte, não deixe de mostrar o seu estilo de codificação. Mesmo que você não seja contratado isso pode render boas sugestões.

Alguns sites que você talvez já conheça e que são bons (ou não) para arranjar emprego.

Monster --> http://inicio.monster.com.br/
O sistema é muito bem feito, mas falta um link para o seu profile, para você poder entregar o link em vez do CV. Falta um http://inicio.monster.com.br/SeuNome/ sabe? Fora isso o CV fica muito bem diagramado nele, ele tem muitas opções e informações para preencher, e muitos campos. Dá um certo trabalho preencher, mas no final você terá um CV em inglês, uma carta de apresentação e por aí vai.

Catho --> http://www.catho.com.br/
Uma droga. Resumindo é isso. Não que o sistema deles seja ruim, muito pelo contrário, o sistema é o melhor, mas é bom para quem quer vagas administrativas, liderança e assim por diante. Na parte técnica/tecnológica tem muitas vagas falsas, e não adianta denunciar.
Já cheguei a pegar vaga oferencendo salário de 13.000 CLT e na hora da entrevista era 4.500 PJ. Ou oferecendo salário de 6.000 CLT e nos campos customizados (que as empresas põe para você preencher dados que elas julgam relevantes e que não tem no cadastro padrão) perguntam qual sua pretenção salarial PJ.
Fora isso a amostra grátis/degustação de 7 dias não rende entrevista nenhuma, e se você esquecer de cancelar você terá de pagar. E quem, em sã consciência, estando fodido desempregado gastaria dinheiro em um serviço que teve 7 dias para mostrar resultados e provou que não funciona? Você pode procurar meu CV lá, está mais apresentável que na Monster.

APInfo --> http://www.apinfo.com/
Esse é legal, é do estilo "se vira, procura, manda e-mail e espera retorno", foi o que mais rendeu entrevistas, mas também foram quase todas entrevistas para PJ, Cooperado, enrolado etc. Quando era CLT os salários eram risíveis, nível estagiário a Júnior.

ProgBr --> http://www.progbr.com
Esse é para nós programadores, mas assim como o APInfo, ele é meio caótico. O gerenciamento de qual vaga você se candidatou, qual não, trocas de mensagens e envio de CV é manual. Melhorou MUITO de uns tempos pra cá, porém dois dos empregos que já tive foram pela APInfo.
O progBr tem perfil http://www.progbr.com/user/index.php?u=vitorrubio

Trabalhando.com --> http://www.trabalhando.com
Bonitinho, com perfil, mas nunca me rendeu uma entrevista sequer. Aliás, para nossa área é o pior de todos. Tem um sisteminha de perfil legal também http://www.trabalhando.com/cvpub/7706j4585cba64429a4e605e82967ab6804040441/vitor-rubio/

http://oportunidades.ixdasp.org
É do Universia Empregos e está integrado ao Trabalhando.com.

Vagas --> http://www.vagas.com.br
Se você quiser trabalhar em um banco como Itaú esse é o caminho. Muitas vagas legais vem daqui, mas são vagas de empresas que tem o processo seletivo engessado e dividido em váaaaaarias etapas. As empresas podem disponibilizar questionários e testes para você responder online. Fiz um teste de inglês (leitura e interpretação de texto) onde você tinha 30 segundos para responder cada questão. Também há testes de matemática e lógica assim (pff, dá só 5 seg. somos todos fodões né?).

Também tem um tal de Manager.com e http://www.pagepersonnel.com.br. Não testei e particularmente acho que já cadastrei meu CV em lugares demais.

Sempre pegue os nomes das empresas top 10 nas revistas Exame, Info Exame, CerTIficação e Gestão de Carreira etc... Nessas fontes podem vir sugestõs de boas empresas para se enviar CV.

Todos os sites de vagsas podem ter arapucas. Cuidado. Tem esquemas de pirâmide, gente que promete um salário e paga outro, gente que promete um emprego CLT e é PJ e assim por diante. Por falar nisso eu também sou "distribuidor independente" de uma famosa empresa de shakes para emagrecer. Quer perder peso, eu também quero pergunte-me como.

Locais onde fiz entrevista: na casa do chapéu, onde Judas perdeu as meias, Tão Tão distante.
Tempo para encontrar um emprego novo: 45 dias.
Tempo para encontrar em emprego decente igual ao que eu estava antes: 195 dias e contando ......

Não me conformo como foi difícil para um cara, com faculdade, pós graduação, certificação microsoft (tudo bem, só a mcp-zinha, mas ainda assim uma) e inglês, diga-se de passagem, "marromeno" (cursando ainda, mas já fasso entrevistas em inglês, naquelas, mas faço) demorei tanto e/ou tive tanta dificuldade para arrumar emprego.
É, cara, a concorrência está f..., tem sempre alguém melhor que você disposto a ganhar menos que você. Se você tem 30 anos ou mais então, pior ainda, isso é considerado a terceira idade da TI. Estou preocupado, acabei de fazer 29. Não acho trampo assim tão fácil agora. (lembro que os 4 primeiros cairam do céu, praticamente me chamaram).

Dicas em entrevistas e formulários de RH. Quando te perguntarem quais são suas qualidades, seja modesto porém honesto na hora de responder. Quando te perguntarem suas fraquezas, responda "kriptonita" sem hesitar.

Pontos positivos e aprendizado:
O baque me tirou da "zona de conforto" e me deu oportunidade para eu aplicar algumas coisas que eu tinha aprendido, e estudar outras que eu gostaria de aprender. Acabei me envolvendo com nHibernate e adorei. Criei na empresa um pequeno CMS com o nHibernate, com postas, páginas, links etc. Também faz alguns controles da empresa e emite o holerite do funcionário on-line. Estou começando a estudar o C# e o .Net mais a fundo e aprendendo um monte de coisa legal que vou postar aqui.

É isso. Próximo post será sobre SQL. Até lá!

segunda-feira, 24 de outubro de 2011

Formatando datas no SQL e no C#

Muitas vezes é necessário exibir datas em um determinado formato no GridView. Muitos programadores convertem a data para o formato desejado já na consulta SQL ou procedure. Isso não está correto por uma série de motivos, entre os quais podemos citar:

1) A responsabilidade de formatar a data deve ser totalmente da view, ou seja, da camada de apresentação.
2) Datas formatadas pelo SQL não são mais datas, são varchars, e não podem ser ordenados como datas.
3) Trazendo sempre a data integral do banco de dados pode-se fazer qualquer operação desejada com ela.

Veja o link abaixo para tirar qualquer dúvida que você possa ter a respeito.
http://weblogs.sqlteam.com/jeffs/archive/2007/04/13/format-date-sql-server.aspx

Dito isso, algumas considerações interessantes:

Para formatar strings diretamente em uma GridView adicione a coluna (bound column) e defina um valor para a propriedade DataFormatString:


<asp:BoundField DataField="Data" DataFormatString="{0:dd/MM/yyyy}" HeaderText="Data" />
<asp:BoundField DataField="Hora" DataFormatString="{0:HH:mm:ss}" HeaderText="Hora" />

dd - Dia com dois dígitos
MM - Mês com dois dígitos, deve ser maiúsculo
yyyy - Ano com quatro dígitos

hh - Hora no formato de 12 horas (necessário AM e PM)
HH - Hora no formato de 24 horas
mm - Minuto
ss - Segundo

Função para extrair a data de um datetime, com hora 0:00:00


CREATE  function [dbo].[sudf_Common_DateOnly]
(
@dtDateTime DateTime
)
returns datetime
as
begin
    return dateadd(dd, 0, datediff(dd, 0, @dtDateTime))
end

Função para extrair a hora de um datetime, com data 01/01/1900


CREATE function [dbo].[sudf_Common_TimeOnly]
(
      @dtDateTime datetime
)
returns datetime
as
begin
    return dateadd(day, -datediff(day, 0, @dtDateTime), @dtDateTime)
end
Fonte:
http://www.lazerwire.com/2011/10/ms-sql-date-only.html
http://www.lazerwire.com/2011/10/ms-sql-time-from-datetime.html

Melhor fonte de informação sobre esses formatos:
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.boundfield.dataformatstring.aspx

Funções para lidar com datas:
http://msdn.microsoft.com/en-us/library/aa258863(v=sql.80).aspx

Conversão de datas com Convert no SQL Server:
http://www.sql-server-helper.com/tips/date-formats.aspx


Have fun ;)

segunda-feira, 12 de setembro de 2011

Factory Reset do Samsung Galaxy S

Neste endereço http://www.clangsm.com.br/vb/android-os/9802-aparelhos-android-hard-reset.html também há um procedimento para resetar o Galaxy S e apagar tudo, servindo para desbloqueá-lo.

Reproduzindo:
Para hard reset seu Samsung I9000 Galaxy S:

1. Desligue o aparelho. Se o seu celular Samsung Galaxy S está congelado, retire a bateria e recoloque-a.
2. Segure o botão Diminuir Volume.
3. Pressione e solte o botão Power.
4. Você está agora confrontado com um menu que permite Fastbook, recuperação Clear Storage, e Simlock.
5. Selecione Clear Storage, pressionando o botão Diminuir Volume.
6. Pressione e solte o botão Power.
7. Agora, basta confirmar a sua decisão: Volume para cima para confirmar e Volume para baixo para negar a ação.

Se SIM for selecionada, todos os dados, incluindo aplicações de terceiros serão apagados do seu Samsung I9000 Galaxy S. Uma vez que a limpeza for concluída, o telefone irá reiniciar a suas configurações de fábrica.

ou

-Botão do volume para cima+botão home+power
-Espere piscar I9000, solte o power (continue segurando home +volume)
-Com o botão do e volume selecione wipe data/factory.reset
-Home para confirmar
-Com o botão do volume vá até : yes - delete all user data
-Home para confirmar novamente
-Espere voltar e reboot system now
-Home para confirmar


É isso. Usei esse menu para outras coisas, como acesso de root, mas não para resetar. É por sua conta e risco.

segunda-feira, 15 de agosto de 2011

Criando um lookup que chame uma de suas forms

Um leitor deu a dica de fazer um lookup que chame uma das forms do projeto. Há várias maneiras de se fazer isso, mas uma que encontrei foi usar formulários registrados com RegisterClass. Depois é só usar FindClass para encontrar o formulário, e FindComponent para encontrar o componente onde reside o valor a ser trazido. Se o componente for um TPersistentField, melhor ainda. Ele pode ser achado, e com um typecast para TField seu valor (o valor encontrado e escolhido no formulario de procura/cadastro padrão) pode ser trazido para o keyvalue.

Abaixo um exemplo de como isso pode ser feito. Primeiro o registro do formulario:
initialization

  RegisterClass(TfrmConsulta);

Depois a chamada dele. Repare que ele é desconhecido para o formulário principal: não está no uses.
procedure TfrmPrincipal.Button1Click(Sender: TObject);
var
  NewFormClass: TFormClass;
  NewForm: TForm;
begin
  NewFormClass := TFormClass(FindClass( 'TFrmConsulta' ));
  //detalhe: esse  string 'TFrmConsulta' pode vir de um campo, edit, banco de dados, arquivo de configuração etc
  try
    NewForm := NewFormClass.Create(nil);
    NewForm.ShowModal;
  finally
    FreeAndNil(NewForm);
  end;
end;

Esse exemplo mostra como registrar formularios e chamá-los sem colocar no uses e sem que o "cliente" saiba da sua existencia.
Assim que tiver um tempo coloco isso encapsulado em um lookup.

quinta-feira, 11 de agosto de 2011

Bancos de dados gratuitos parte 2

Saiu na Clube Delphi 132 a parte 2 do artigo sobre bancos de dados gratuitos. Espero que todos gostem.

Esta edição ainda traz um artigo sobre Nota Fiscal Eletrônica 2.0, muito útil.

Não se esqueça que agora os códigos GTIN (códigos de barra a serem preenchidos nos campos cEAN e cEANTrib) agora são obrigatórios.

Um artigo que eu lerei com bastante curiosidade é o artigo sobre Morfik, que permite desenvolvimento par Web com Object Pascal, semelhante ao Delphi. Mas com o Morfik você também desenvolve código "client-side".

Espero que todos tenham boa leitura!

Postagens populares