sexta-feira, 17 de janeiro de 2014

Enviar email com C#

Essa é velha mais estamos sempre precisando .....


MailMessage objMail = new MailMessage("emailfrom@email.com", "maTo@email.com");
objMail.Subject = "ASSUNTO";

StringBuilder mensagem = new StringBuilder();
mensagem.AppendLine("CONTEUDO HTML");

objMail.Body = mensagem.ToString();
objMail.BodyEncoding = System.Text.Encoding.UTF8;
objMail.IsBodyHtml = true;
objMail.Priority = MailPriority.Normal;
SmtpClient objSmtp = new SmtpClient("smtpm.eum.com.br");
objSmtp.Credentials = new NetworkCredential("USUARIO", "SENHA");
objSmtp.Send(objMail);

Pingdom

Serviço de monitoria bem interessante no site https://www.pingdom.com/ que envia SMS quando um site/sistema cadastrado fica inoperante (404), o serviço não é tão caro e ajuda seu site/sistema ficar o maior tempo no ar possível.

quarta-feira, 23 de outubro de 2013

Paginação com jQuery - Como paginar uma table - Passar parametros para um arquivo js

   Esse tópico abrange dois assuntos uma parte (se não quase toda) mostra um script para paginação, e nesse mesmo script há um exemplo de como passar parâmetros para um aquivo .js, para tirarmos a "sujeira" do código e deixar o HTML apenas com o necessário.

   Existem varias maneiras de fazer uma paginação,  muitos componentes, inclusive do próprio .NET com a GridView(aspx) e WebGrid(cshtml), só que no caso eu precisava que não desse o post, então procurei em vários lugares por uma paginação simples de se utilizar, mais não consegui encontrar. Sempre havia varias referencias de .js e .css e o que eu queria era apenas a paginação simples alem disso precisava que o paginador não alterasse o layout da minha Table.

Bom então aqui está, com as seguintes funcionalidades:
1 - A principal paginar rs sem graça;
2 - O desenvolvedor passa por parâmetro a quantidade de itens que vão ser agrupados que posteriormente vão ser mostrados em um input select;
3 - Também são passados como parâmetro se os link's de primeira e ultima e próximo e anterior vão ser exibidas.

Como utilizar: É bem simples
Apos referenciar o arquivo js (Download) e css (Download) em apenas uma chamada o conteúdo da table já vai ser paginada, porem a table tem que estar com uma estrutura especifica:

 <table>
                <tbody id="tablePaginar">
                </tbody>
 </table>
<ul id="ulPaginacao" class="ul-paginacao">
</ul>

O restante do conteúdo (tr e td) podem estar da maneira que o desenvolvedor quiser.

E agora a chamada:

<script type="text/javascript">
   PAGINACAO.init(["tablePaginar", "ulPaginacao", 10, 1, true, true]);

   PAGINACAO.execscript();
</script>

os parâmetros são os seguintes:
{
      1 - Id do table que vai estar sendo paginado;
      2 - Id do ul que vai ser criado a paginação;
      3 - Quantidade de itens que vão ser exibidos na table;
      4 - Quantidade de elementos que vão ser exibidos no ul, sendo que, os dois primeiros e os dois últimos são fixos para grandes quantidades;
      5 - se mostra ou não os link's da primeira e ultima pagina;
      6 - se mostra ou não os link's da Anterior e Próxima pagina;
}

Clique aqui  para ver como fica a paginação.


   Só pra finalizar não é muito performático (se é que essa palavra existe) colocar 300 mil linhas nesse mesmo table, lembrando que ele fica na maquina do usuário e com algumas centenas de registros a pagina já começa a ficar um pouco lenta, então deve ser feito um outro tipo de paginação mais que é assunto para um outro dia!!!

Bom acho que é só isso e espero que ajude alguém ....


sexta-feira, 11 de outubro de 2013

Prompt de comando com C#

Comum para a maioria dos desenvolvedores, temos sempre desafios interessantes as vezes meio que estranhos a fazer, quando precisei fazer a algum tempo achei no minimo esquisito ter que rodar um comando do prompt de comando a partir do C#.

Então aqui esta um exemplo simples de comando para abrir um Bloco de notas:
System.Diagnostics.Process.Start("notepad");

Ou passando parametro como no exemplo abaixo:
System.Diagnostics.Process.Start("iexplore","google.com");

Assim tambem podemos rodar um arquivo ".bat" executando varias tarefas.


 this is it!!

terça-feira, 8 de outubro de 2013

Formatos de data na sua aplicação - Locale IDs

Bom, um problema que tive nos meados de 2008, mas que ainda é bem comum de acontecer.
Estava desenvolvendo uma aplicação web e local funcionava que era uma beleza, porem quando publicava a mesma não rodava absolutamente nada, analisando notei que a data esta com um formato diferente do que estava esperando e comecei a pesquisar então obtive a seguinte resposta, que quando trabalhamos com servidores que estão localizados em outros local(país) as configurações regionais estão configurados com a formatação de seu país. O LCID permite realizar a formatação de datas e configurações regionais de acordo com o país que o desenvolvedor necessitar, setando o código atribuído para cada país.

um exemplo de como utilizar:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="home.aspx.cs"
    Inherits="Home" LCID="1046" Title="Site Web" %>

Aqui uma "pequena" listagem dos LCID's com referencia do site da Microsoft
Language - Country/RegionLCID HexLCID Dec
Afrikaans - South Africa04361078
Albanian - Albania041c1052
Alsatian04841156
Amharic - Ethiopia045e1118
Arabic - Saudi Arabia04011025
Arabic - Algeria14015121
Arabic - Bahrain3c0115361
Arabic - Egypt0c013073
Arabic - Iraq08012049
Arabic - Jordan2c0111265
Arabic - Kuwait340113313
Arabic - Lebanon300112289
Arabic - Libya10014097
Arabic - Morocco18016145
Arabic - Oman20018193
Arabic - Qatar400116385
Arabic - Syria280110241
Arabic - Tunisia1c017169
Arabic - U.A.E.380114337
Arabic - Yemen24019217
Armenian - Armenia042b1067
Assamese044d1101
Azeri (Cyrillic)082c2092
Azeri (Latin)042c1068
Bashkir046d1133
Basque042d1069
Belarusian04231059
Bengali (India)04451093
Bengali (Bangladesh)08452117
Bosnian (Bosnia/Herzegovina)141A5146
Breton047e1150
Bulgarian04021026
Burmese04551109
Catalan04031027
Cherokee - United States045c1116
Chinese - People's Republic of China08042052
Chinese - Singapore10044100
Chinese - Taiwan04041028
Chinese - Hong Kong SAR0c043076
Chinese - Macao SAR14045124
Corsican04831155
Croatian041a1050
Croatian (Bosnia/Herzegovina)101a4122
Czech04051029
Danish04061030
Dari048c1164
Divehi04651125
Dutch - Netherlands04131043
Dutch - Belgium08132067
Edo04661126
English - United States04091033
English - United Kingdom08092057
English - Australia0c093081
English - Belize280910249
English - Canada10094105
English - Caribbean24099225
English - Hong Kong SAR3c0915369
English - India400916393
English - Indonesia380914345
English - Ireland18096153
English - Jamaica20098201
English - Malaysia440917417
English - New Zealand14095129
English - Philippines340913321
English - Singapore480918441
English - South Africa1c097177
English - Trinidad2c0911273
English - Zimbabwe300912297
Estonian04251061
Faroese04381080
Farsi04291065
Filipino04641124
Finnish040b1035
French - France040c1036
French - Belgium080c2060
French - Cameroon2c0c11276
French - Canada0c0c3084
French - Democratic Rep. of Congo240c9228
French - Cote d'Ivoire300c12300
French - Haiti3c0c15372
French - Luxembourg140c5132
French - Mali340c13324
French - Monaco180c6156
French - Morocco380c14348
French - North Africae40c58380
French - Reunion200c8204
French - Senegal280c10252
French - Switzerland100c4108
French - West Indies1c0c7180
Frisian - Netherlands04621122
Fulfulde - Nigeria04671127
FYRO Macedonian042f1071
Galician04561110
Georgian04371079
German - Germany04071031
German - Austria0c073079
German - Liechtenstein14075127
German - Luxembourg10074103
German - Switzerland08072055
Greek04081032
Greenlandic046f1135
Guarani - Paraguay04741140
Gujarati04471095
Hausa - Nigeria04681128
Hawaiian - United States04751141
Hebrew040d1037
Hindi04391081
Hungarian040e1038
Ibibio - Nigeria04691129
Icelandic040f1039
Igbo - Nigeria04701136
Indonesian04211057
Inuktitut045d1117
Irish083c2108
Italian - Italy04101040
Italian - Switzerland08102064
Japanese04111041
K'iche04861158
Kannada044b1099
Kanuri - Nigeria04711137
Kashmiri08602144
Kashmiri (Arabic)04601120
Kazakh043f1087
Khmer04531107
Kinyarwanda04871159
Konkani04571111
Korean04121042
Kyrgyz (Cyrillic)04401088
Lao04541108
Latin04761142
Latvian04261062
Lithuanian04271063
Luxembourgish046e1134
Malay - Malaysia043e1086
Malay - Brunei Darussalam083e2110
Malayalam044c1100
Maltese043a1082
Manipuri04581112
Maori - New Zealand04811153
Mapudungun04711146
Marathi044e1102
Mohawk047c1148
Mongolian (Cyrillic)04501104
Mongolian (Mongolian)08502128
Nepali04611121
Nepali - India08612145
Norwegian (Bokmål)04141044
Norwegian (Nynorsk)08142068
Occitan04821154
Oriya04481096
Oromo04721138
Papiamentu04791145
Pashto04631123
Polish04151045
Portuguese - Brazil04161046
Portuguese - Portugal08162070
Punjabi04461094
Punjabi (Pakistan)08462118
Quecha - Bolivia046B1131
Quecha - Ecuador086B2155
Quecha - Peru0C6B3179
Rhaeto-Romanic04171047
Romanian04181048
Romanian - Moldava08182072
Russian04191049
Russian - Moldava08192073
Sami (Lappish)043b1083
Sanskrit044f1103
Scottish Gaelic043c1084
Sepedi046c1132
Serbian (Cyrillic)0c1a3098
Serbian (Latin)081a2074
Sindhi - India04591113
Sindhi - Pakistan08592137
Sinhalese - Sri Lanka045b1115
Slovak041b1051
Slovenian04241060
Somali04771143
Sorbian042e1070
Spanish - Spain (Modern Sort)0c0a3082
Spanish - Spain (Traditional Sort)040a1034
Spanish - Argentina2c0a11274
Spanish - Bolivia400a16394
Spanish - Chile340a13322
Spanish - Colombia240a9226
Spanish - Costa Rica140a5130
Spanish - Dominican Republic1c0a7178
Spanish - Ecuador300a12298
Spanish - El Salvador440a17418
Spanish - Guatemala100a4106
Spanish - Honduras480a18442
Spanish - Latin America580a22538
Spanish - Mexico080a2058
Spanish - Nicaragua4c0a19466
Spanish - Panama180a6154
Spanish - Paraguay3c0a15370
Spanish - Peru280a10250
Spanish - Puerto Rico500a20490
Spanish - United States540a21514
Spanish - Uruguay380a14346
Spanish - Venezuela200a8202
Sutu04301072
Swahili04411089
Swedish041d1053
Swedish - Finland081d2077
Syriac045a1114
Tajik04281064
Tamazight (Arabic)045f1119
Tamazight (Latin)085f2143
Tamil04491097
Tatar04441092
Telugu044a1098
Thai041e1054
Tibetan - Bhutan08512129
Tibetan - People's Republic of China04511105
Tigrigna - Eritrea08732163
Tigrigna - Ethiopia04731139
Tsonga04311073
Tswana04321074
Turkish041f1055
Turkmen04421090
Uighur - China04801152
Ukrainian04221058
Urdu04201056
Urdu - India08202080
Uzbek (Cyrillic)08432115
Uzbek (Latin)04431091
Venda04331075
Vietnamese042a1066
Welsh04521106
Wolof04881160
Xhosa04341076
Yakut04851157
Yi04781144
Yiddish043d1085
Yoruba046a1130
Zulu04351077
HID (Human Interface Device)04ff1279

segunda-feira, 7 de outubro de 2013

JSFIDDLE - IDE JavaScript HTML Online

Essa semana vi no fórum da MSDN um desenvolvedor que postou sua duvida com um link apontando para o site jsfiddle, com o html ja todo desenvolvido achei bem interessante,  para quem quer começar a aprender html, css, javascript e jquery uma ótima ferramenta!

Aqui um exemplo do como utilizar: http://jsfiddle.net/WKu3r/1/

Utilizando API Google Maps

Há alguns dias atrás estive utilizando a API do google maps, achei bem legal e tive algumas dificuldades como por exemplo adicionar vários markers pois o marker pegava sempre o ultimo content e outras coisas que não me lembro .. rs

Bom para quem for desenvolver algo com a API estou disponibilizando um fonte com as seguintes funcionalidades:


1ª - Busca o local do navegador utilizando o navigator.geolocation.getCurrentPosition (apesar de as vezes não funcionar muito bem).


2ª - Adicionar vários Marker's que são adicionados conforme o zoom no mapa.


3ª - Autocomplete para busca de locais.


4ª - infowindows as informações que são contents em html



e não podendo se esquecer também do cálculo da distância utilizando latitude e longitude e tempo de percurso utilizando a API do GMaps também. Aqui está um exemplo de como o get pode ser utilizado, e que pode ser recuperado em json ou xml.




Para acessar: http://www.rmmetecnologia.com/maps
Download da Solution: http://sdrv.ms/18Kn75L




Espero ter ajudado...

quarta-feira, 2 de outubro de 2013

ViewBag vs ViewData vs TempData

Quando comecei a trabalhar com o plataforma MVC da microsoft, me deparei com um problema como passar os dados de uma ActionResult para a uma View, foi ai que descobri a  ViewBag só que também descobri a ViewData e TempData entao veja quais são suas diferenças para utilizar a que melhor te atende.


TempData - parecida com uma sessão de servidor, só que de curta duração, Porem possui um tempo de vida maior que o ViewBag e ViewData, o TempData dura desde sua criação até que seja chamado, então quando houver um request do TempData, ele se torna nulo. Uma dado criado em uma TempData atribuida em uma Controller persiste após um redirect entre actions que pode ser exibido em uma View. 

ViewData e ViewBag - são bem parecidas, porque são utilizadas para persistir dados entre a Controller e a View correspondente. A duração é apenas entre o envio através da Controller e a exibição na View, depois disso tornam-se nulas novamente e no caso de um redirect se tornam nulas. e suas diferenças são que a ViewData é acessada utilizando o nome entre chaves ViewData["ID_CLIENTE"] e a ViewBag é dinamica ViewBag.IdCliente, a ViewData necessita de conversão quando é de um tipo complexo e a ViewBag não necessita.


terça-feira, 17 de setembro de 2013

Borda arredondada IE7 / IE8

De vez em quando precisamos fazer alguns jobs com o alto nível de chatice, e quase sempre tem alguem que já enfrentou esses mesmos problemas.

Nesse caso PIE(progressive internet explorer) nos ajuda a tornar o Internet Explorer do 6-9 capaz de processar algumas propriedades do CSS3.

baixe aqui o exemplo ou acesse o site http://css3pie.com/


















colaboração: Gustavo gaigher

terça-feira, 7 de maio de 2013

DropDownList Personalizado TwiterBootstrap

Personalizei um DropDownMenu para um DropDownList utilizando o framework do Bootstrap.
ficou bem legal vale a pena postar.

Ele ficou com essa aparência

O Codigo ficou bem simples










e o jquery para mudar o item principal.




Obs: ja que o objeto não é um input é necessário um jquery para pode pegar o valor dele e atribuir para algum input para podermos recuperar o valor dele no CodeBehind, como mostrado no exemplo.

segunda-feira, 29 de abril de 2013

Visualizando TO DO's no visual studio

As vezes ao desenvolver um sistema não possuímos a especificação do sistema por completa, sabendo pelo menos as funcionalidades do sistemas conseguimos desenvolver as métodos principais. Um desenvolvedor no minimo organizado deve comentar seus códigos e também comentar tarefas que não foram possíveis concluir por algum motivo com o "TODO".


Agora a parte legal, o Visual Studio mostra pra você todos os "Afazeres" que temos no projeto indo em: View -> Task List -> Selecionar no combo Comments






sábado, 27 de abril de 2013

Scrum no Visual Studio

Artigo muito bom sobre como aplicar Scrum com o Visual Studio.

Explica passo a passo de como criar os PBI's (Product Backlog Itens) e fazer o gerenciamento do projeto utilizando o TFS (Team Foundation Server).

http://imasters.com.br/artigo/24388/visual_studio/planejamento-agil-no-visual-studio-2012-usando-scrum/




Framework's CSS

Esse artigo é sobre algo que venho utilizando para deixar o desenvolvimento do layoult de sites mais ágeis e mais bonitos.

O 1º Framework TwiterBootstrap, um BootTheme que permite personalização do estilo CSS, alem de deixar o site muito legal com estilização de botões, icones e muito mais.

O 2º ainda não utilizei mais em breve vou testar é o MetroUiCSS que personaliza seu site no estilo do Windows Phone e Windows 8.

Tem ainda o wrap bootstrap que tem vários templates pra bootstrap pagos e gratuitos.



Valew




quarta-feira, 26 de setembro de 2012

Exportando um Relatório simples em PDF

Esse Post é feito para quem precisa extrair um relatório de uma pagina Html simples apenas com estilos nas fontes com fundo de imagens etc.

Lembrando que o relatório vai sair igual a sua pagina, caso queira uma imagem no relatório é necessário colocar o caminho inteiro da imagem no seu Html ao invés de apenas referencias a partir do projeto.


Para criarmos o relatório basta referenciar a Dll itextsharp no projeto











 e criarmos o método a seguir:





...

quarta-feira, 12 de setembro de 2012

Problemas com caracteres especias na hora de extrair um Excel

Essa semana tivemos um problema no trabalho que os caracteres com acento entre outros caracteres, estavam ficando com caracteres especiais bem estranhos rs.


Bom a resolução para o problema foi colocar ResponseEnconding="iso-8859-15" no @Page (Parte de definições de atributos da pagina) em que o relatório ia ser extraído.


Li em outros posts que o response acaba funcionando apenas nas informações do HTML , mas dados que vão para o banco eram armazenados com caracteres especiais estranhos, não consegui simular o erro, mas li que se jogar a tag globalization da maneira abaixo com o FileEncondign e o Response e Request Encoding funciona.

globalization fileEncoding="iso-8859-15" requestEncoding="utf-8" responseEncoding="utf-8" culture="pt-BR" uiCulture="pt-BR"





quarta-feira, 1 de agosto de 2012

Ferramenta de Identação de código

Ferramenta online bem legal para você identar seus códigos, principalmente SQL, já que dificilmente as ferramentas de desenvolvimento não ajudam.

http://www.dpriver.com/pp/sqlformat.htm




Referência: http://emilaneze.com.br

Formato de Datas

Estou criando esse post porque existem vários tipos de formatos de data que são utilizados na programação esse arquivo ja uso a algum tempo e me ajuda muito quando acabo esquecendo quando preciso.
o Code é utilizado no SQL Server e o Format pode ser utilizado por exemplo no Oracle.


quinta-feira, 12 de julho de 2012

Lendo um XML de uma URL utilizando o XmlReader

   Muitas vezes nos deparamos com vários tipos de leitura de dados, seja por banco de dados, arquivos txt, arquivos xls e etc. Nesse artigo irei mostrar como ler um arquivo XML, o mesmo estando em uma URL de uma forma bem simples.

Criando o projeto.

1) Crie um projeto no caso do exemplo utilizarei um Console Application


2) A seguir utilizaremos o seguinte exemplo para leitura.


da ULR http://api.facebook.com/restserver.php?method=links.getStats&urls=globo.com

Visualização do arquivo


3) Utilizaremos o código abaixo.

Obs: o foreach utilizado é para ler cada linha do DataTable.

4) A imagem a segui mostra como a estrutura do arquivo ficou em um DataTable.



quarta-feira, 11 de julho de 2012

Dynamic Data Entities Web Site



Utilizado para criar aplicações web simples ele utiliza o banco de dados como referencia. Assim voce pode criar um cadastro ou uma consulta em pouco tempo de desenvolvimento.


Além do banco de dados para criar um projeto Dynamic Data Entities Web Site é necessário o arquivo de mapeamento das entidades do banco no caso do exemplo iremos utilizar o LinqToSQL.




Criando o projeto.


1) No VisualStudio ir para New, Web Site, Dynamic Data Entities Web Site.






2) Abra as propriedades do projeto vá em Add, New Item.








3) Selecione o Linq to SQL Classes.






4) Adicione as tabelas que ira utilizar.






5) Abra o arquivo Global.asax.








6) Encontre a linha que esta comentada, descomente e altere o nome YourDataContextType para o nome do seu arquivo de mapeamento, no caso do exemplo DataClassesDataContext.


//model.RegisterContext(typeof(YourDataContextType), new ContextConfiguration() { ScaffoldAllTables = false });






Pronto seu  Dynamic Data Entities Web Site esta pronto, agora é só executar .....





sábado, 21 de maio de 2011

Tenha Boas Praticas Nomenclatura

Antes de começar a desenvolver vamos falar sobre um assunto muito importante nomenclatura.

Quando você começa em uma empresa e seus respectivos analistas começam a lhe passar atividades certifique-se com seus colegas de serviço se existe alguma documentação de nomenclaturas de objetos.

Uma coisa que é muito ruim é quando você vai fazer alguma alteração em um projeto e existe uma variável com o nome de teste quem nunca pegou isso!

Estou disponibilizando uma documentação que ja uso faz algum tempo.

Download Nomenclatura

Normalmente após o uso da nomenclatura eu criaria um Textbox assim: txtDataNasc



Para Banco de Dados

Sempre que estou em um projeto tento seguir essas nomeclaturas porque tento, nem sempre é possível deixar tudo no padrão depende do tempo que você tem para desenvolver o projeto.


OBJETOS DE BANCO


Procedure: SP_nm_Proc
Function: FC_nm_Funçao
Dts: DTS_nm_Dts
Package: PC_nm_Pack
Tabelas: TB_nm_Tabela

Obs.: Sempre coloque no nome o assunto em que você esta trabalhando por exemplo: SP_CADASTRO_CLIENTES

em objetos de banco de preferência nunca coloque espaços, assentos entre outros caracteres especiais.

Variáveis e Parâmetros para procedures e functions e queries:

VC_... - Variável Caractere
VD_... - Variável data
VN_... - Variável Numérica
C_... - Variável Cursor
PEC_... - Parâmetro de entrada do tipo Caractere
PED_... - Parâmetro de entrada do Tipo Data
PEN_... - Parâmetro de entrada do tipo Numérico
PSC_... - Parâmetro de saída do tipo Caractere
PSD_... - Parâmetro de saída do Tipo Data
PSN_... - Parâmetro de saída do tipo Numérico

Utilizando nomenclaturas podeter certeza que você facilita um codigo de manutenção para outros desenvolvedores e para você mesmo pois eu duvido que você vai lembrar de algo que desenvolveu a um ano atras.

Abs..... até o proximo.