quarta-feira, 30 de junho de 2010

Novo Blog

Aê, finalmente decidi postar novamente

Porém... não vai ser nesse blog
Agora meu novo blog é http://brluz.wordpress.com/

Por favor acessem =)

[]'s

quinta-feira, 1 de outubro de 2009

Criar ConnectionString no Windows.

Segue abaixo uma ótima dica sobre criar ConnectionString.

Para testar e obter a string de uma ConnectionString, crie um arquivo de texto:

E renomeie ele para qualquer nome, mas certifique-se de alterar a extensão para udl.
Após confirmar a alteração do arquivo, abra ele.
Você verá o assistente de conexão do windows!


Agora é facil, crie e teste sua conexão. Após a conexão funcionar, clique em Ok.
Altere a extensão do teu arquivo para .txt novamente.

Abra o arquivo e... Surpresa
Você tem a sua string de ConnectionString!


É um facilitador e tanto.

Nova versão do AjaxControlToolKit saiu ontem

Saiu a nova versão!

Existem dois novos controles nessa versão:
Seadragon – Muito legal, é um DeepZoom feito em javascript, muito impressionante. Gostei!
AsyncFileUpload – Permite fazer upload de arquivos sem postback.

Tem um exemplo do Seadragon e um review do AsyncFileUpload aqui:
O seadragon não está funcionando no meu Firefox 3.5, mas no Google Chrome 3.0 e no IE funciona muito bem. :)

quinta-feira, 24 de setembro de 2009

O mistério sobre o fakepath

Hoje fui enviar um email pelo Google Chrome [que esses dias atualizou sozinho para a versão 3 J], mas o bendito estava travando o browser enquanto anexava arquivos no e-mail. Logo abri o IE8 e fui escrever o e-mail e anexar o arquivo.

Quando eu clico no meu arquivo para anexo, eu vejo no browser a seguinte pasta:

fakepath? Eu nem sequer possuo tal pasta no meu computador.

Fui pesquisar sobre tal fato, e me deparei com o com este artigo.

O que ocorre é o seguinte: de acordo com as novas especificações no novo HTML5, o controle de upload de arquivos não deve mais exibir a localização real dos arquivos. Em vez disso, ele exibe o C:\fakepath\.

Essa nova especificação já está implementada no Internet Explorer 8. O site somente mostrará a verdadeira localização do arquivo se ele estiver adicionado na coleção de sites confiáveis do browser.

segunda-feira, 31 de agosto de 2009

Compressão e descompressão de Strings

Compressão de strings é algo muito simples de ser realizado e ajuda muito em diversas situações.
Diminuir o tamanho das mensagens enviadas em redes, chamadas de WebServices, WCF, etc.
Segue abaixo o código para compressão e descompressão utilizando o algoritmo GZip, que já vem dentro do .Net framework.

Comprimir:

Public Shared Function Comprime(ByVal texto As String) As Byte()
Dim mem As MemoryStream = New MemoryStream()
Dim gz As GZipStream = New GZipStream(mem, CompressionMode.Compress)
Dim sw As New StreamWriter(gz)
sw.WriteLine(texto)
sw.Close()
Return mem.ToArray()
End Function


Descomprimir:

Public Shared Function Descomprime(ByVal valor As Byte()) As String
Dim retorno As String = Nothing
Dim mem As New MemoryStream(valor)
Dim gz As GZipStream = New GZipStream(mem, CompressionMode.Decompress)
Dim sr As StreamReader = New StreamReader(gz)
retorno = sr.ReadLine()
sr.Close()
Return retorno
End Function


Simples!
Abs

terça-feira, 25 de agosto de 2009

Salvar Word para PDF.

Para salvar um documento de Word para PDF, a microsoft disponibilizou em seu site um Add-in para o Word 2007 que permite que esta operação seja realizada.

Após a instalação, ao entrar no menu "Salvar como" do menu do word, existirá uma nova opção:


Com a instalação deste Add-in, também fica possível salvar um documento Word em PDF via código.
Obviamente, é necessário tem o Microsoft Word 2007 e o Add-in instalado na máquina que irá salvar o arquivo a ser convertido.
Partindo do princípio, adicione a referência da dll "Microsoft.Officce.Interop.Excel" ao seu projeto dentro do Visual Studio.



Abaixo está o código de uma função que recebe dois parâmetros, o primeiro é o caminho do arquivo de origem (word) e o segundo é o caminho do arquivo PDF que será criado.


''' <summary>
''' Converte um arquivo Word para PDF.
''' </summary>
''' <param name="sourceDocPath">O caminho do arquivo Word.
''' <param name="exportFilePath">O caminho de saída do arquivo PDF. Esse arquivo será criado.
''' <remarks></remarks>
Public Sub TransformarEmPDF(ByVal sourceDocPath As String, ByVal exportFilePath As String)

Dim missing As Object = Type.Missing

Dim paramExportFormat As WdExportFormat = WdExportFormat.wdExportFormatPDF
Dim paramExportOptimizeFor As WdExportOptimizeFor = WdExportOptimizeFor.wdExportOptimizeForPrint
Dim paramExportRange As WdExportRange = WdExportRange.wdExportAllDocument
Dim paramExportItem As WdExportItem = WdExportItem.wdExportDocumentContent
Dim paramCreateBookmarks As WdExportCreateBookmarks = WdExportCreateBookmarks.wdExportCreateWordBookmarks

Dim paramOpenAfterExport As Boolean = False
Dim paramStartPage As Integer = 0
Dim paramEndPage As Integer = 0
Dim paramIncludeDocProps As Boolean = True
Dim paramKeepIRM As Boolean = True
Dim paramDocStructureTags As Boolean = True
Dim paramUseISO19005_1 As Boolean = False
Dim paramBitmapMissingFonts As Boolean = True

Dim wordApplication As ApplicationClass = New ApplicationClass()
Dim document As Word.Document = Nothing

Try
Dim paramFileName As Object = DirectCast(sourceDocPath, Object)

' abre o documento.
document = wordApplication.Documents.Open(paramFileName, missing, missing, missing, _
missing, missing, missing, missing, missing, missing, _
missing, missing, missing, missing, missing, missing)

' salva como um arquivo PDF.
document.ExportAsFixedFormat(exportFilePath, paramExportFormat, paramOpenAfterExport, _
paramExportOptimizeFor, paramExportRange, paramStartPage, _
paramEndPage, paramExportItem, paramIncludeDocProps, paramKeepIRM, _
paramCreateBookmarks, paramDocStructureTags, paramBitmapMissingFonts, _
paramUseISO19005_1, missing)

Catch ex As Exception
Throw ex

Finally

' fecha o documento word e os discarta da memória
If Not document Is Nothing Then
document.Close(missing, missing, missing)
document = Nothing
End If

If Not wordApplication Is Nothing Then
wordApplication.Quit(missing, missing, missing)
wordApplication = Nothing
End If

GC.Collect()
GC.WaitForPendingFinalizers()
GC.Collect()
GC.WaitForPendingFinalizers()

End Try

End Sub

Para que o código desta função funcione é necessário adicionar os "imports":

Imports Microsoft.Office.Interop
Imports Microsoft.Office.Interop.Word

Assim, ao chamar a função TransformarEmPDF("c:/word.doc", "c:/arquivogerado.pfd") o arquivo word.doc será lido e um novo arquivo idêntico à ele será criado em c:/arquivogerado.pfd já no formato PDF.

Abs.

segunda-feira, 24 de agosto de 2009

SyntaxHighlighter - Instalação no Blogger/Blogspot

Assim com meu amigo Mário Guedes, eu também passei por uma pequena dor de cabeça para fazer o SyntaxHighlighter funcionar no blogspot.

Para fazer o SyntaxHighlighter funcionar aqui, é necessário adicionar as seguintes referências Javascript no layout de seu blog (eu adicionei estas referências antes da tag </body>)


<link href="http://flash-host.com.br/blog/sh/SyntaxHighlighter.css" rel="stylesheet" type="text/css"/>
<script language="javascript" src="http://syntaxhighlighter.googlecode.com/svn-history/r57/trunk/Scripts/shCore.js"></script>
<script language="javascript" src="http://syntaxhighlighter.googlecode.com/svn-history/r57/trunk/Scripts/shBrushCSharp.js"></script>
<script language="javascript" src="http://syntaxhighlighter.googlecode.com/svn-history/r57/trunk/Scripts/shBrushVb.js"></script>
<script language="javascript" src="http://syntaxhighlighter.googlecode.com/svn-history/r57/trunk/Scripts/shBrushXml.js"></script>
<script language="javascript" src="http://syntaxhighlighter.googlecode.com/svn-history/r57/trunk/Scripts/shBrushPython.js"></script>
<script language="javascript" src="http://syntaxhighlighter.googlecode.com/svn-history/r57/trunk/Scripts/shBrushJScript.js"></script>
<script language="javascript" src="http://syntaxhighlighter.googlecode.com/svn-history/r57/trunk/Scripts/shBrushDelphi.js"></script>
<script language="javascript" src="http://syntaxhighlighter.googlecode.com/svn-history/r57/trunk/Scripts/shBrushPhp.js"></script>
<script language="javascript" src="http://syntaxhighlighter.googlecode.com/svn-history/r57/trunk/Scripts/shBrushSql.js"></script>
<script language="javascript">
dp.SyntaxHighlighter.BloggerMode();
dp.SyntaxHighlighter.HighlightAll('code');
</script>


Para escrever um trecho de código é simples, crie uma tag dentro do tipo "pre" e sete o atributo name para "code", e no atributo class é onde escolhe o tipo da linguagem, ex: <pre name="code" class="csharp">, depois é só colocar o seu código e depois fechar a tag pre com <pre>. e pronto, já está ok para visualização.
Ex:
<pre name="code" class="csharp">
public void Stuff() { }
<pre>.