nov 19

Resolvi aprender outra linguagem de programação pra variar um pouco. :-)
Vira e mexe escuto alguém falando de Python, Ruby entre outras linguagens interpretadas e eu nem faço idéia de como se programa ou executa programas feitos nessas linguagens. Bom, não sabia. Andei lendo um pouco e vi que é a coisa é bem simples. Resolvi começar pelo Python. Para aqueles que estão começando do zero como eu, recomendo a leitura do artigo Aprenda a Programar. É uma pena o artigo não ter uma continuidade mas já dá uma boa idéia de com funciona tudo. Explica, por exemplo, como executar o Python no ambiente WEB. Minha surpresa foi que ele roda com o Apache através de um programa em cgi. Seguindo este artigo eu criei o meu primeiro programa em cgi, que a gente tanto houve falar quando se trata de programação web. Bom, fiquei bem animado com a idéia, e daqui pra frente devo publicar alguns posts relacionados ao Python. Aguardem e confiram.


View this Post in: English French Italian Spanish

out 22

Para obter informações de um arquivo tais como data e hora de criação, modificação, acesso entre outros, utilizamos a classe FileInfo. Esta classe, presente no namespace System.IO possui as propriedades CreationTime, LastWriteTime e LastAccessTime que retorna a informação de data e hora que o arquivo foi criado, modificado e aberto. Veja um exemplo de como utilizar a classe

FileInfo file_info = new FileInfo("C:\\meu_arquivo.txt");

string Criado = file_info.CreationTime.ToString("dd/MM/yyyy HH:mm:ss");
string Modificado = file_info.LastWriteTime.ToString("dd/MM/yyyy HH:mm:ss");
string Acessado = file_info.LastAccessTime.ToString("dd/MM/yyyy HH:mm:ss");

Se preferir pode fazer o download do projeto abaixo com um exemplo que mostra estas e outras propriedades da classe FileInfo.
Exemplo de uso da classe FileInfo (6)


View this Post in: English French Italian Spanish

out 20

Avatares são pequenas imagens que identificam uma pessoa em um blog ou forum de discussão. Quem atualizou o Wordpress para a versão 2.5 deve ter reparado nas opções de configuração de avatares no menu “Configurações - Discussão“. Lá existe a opção de “Mostrar avatares“, no entanto é preciso também adicionar uma linha no arquivo de seu template para poder exibi-los.

Para mostrar por exemplo os avatares das pessoas que comentam no se blog, abra o arquivo comments.php e adicione a linha

echo get_avatar( get_comment_author_email(), $size = '36' );

Obs.: Este código deve estar dentro do bloco de código:

foreach ($comments as $comment)

Os avatares serão exibidos baseado no e-mail da pessoa que comentou (get_comment_author_email()). Se ela possuir um registro no site do Gravatar será exibido o seu avatar, caso contrário será exibido a imagem padrão que pode ser uma imagem aleatória, basta configurar no menu do wordpress.

Veja mais sobre avatar no Wordpress em http://weblogtoolscollection.com/archives/2008/03/03/gravatars-and-wordpress-25/ ou
http://codex.wordpress.org/Using_Gravatars


View this Post in: English French Italian Spanish

out 19

Já mostrei aqui como obter o dia da semana por extenso no charp. Para poder escrever a data completa no formato “[dia da semana], [dia] de [mês] de [ano]” basta obter separadamente cada uma das partes como no exemplo a seguir.

        CultureInfo culture = new CultureInfo("pt-BR");
        DateTimeFormatInfo dtfi = culture.DateTimeFormat;

        int dia = DateTime.Now.Day;
        int ano = DateTime.Now.Year;
        string mes = culture.TextInfo.ToTitleCase(dtfi.GetMonthName(DateTime.Now.Month));
        string diasemana = culture.TextInfo.ToTitleCase(dtfi.GetDayName(DateTime.Now.DayOfWeek));
        string data = diasemana + ", " + dia + " de " + mes + " de " + ano;

        Response.Write(data);

O método ToTitleCase da classe TextInfo serve para converter a primeira letra da palavra para maiúsculo e os métodos GetMonthName e GetDayName da classe DateTimeFormatInfo servem para pegar o nome do mês e do dia da semana respectivamente.

No final a variável data conterá o dia por extenso. Por exemplo:

Domingo, 19 de Outubro de 2008

Para os dias menores que 10, se você preferir escreve-los com o zero antes basta aplicar o método ToString a variável dia.

string data = diasemana + ", " + dia.ToString("00") + " de " + mes + " de " + ano;

View this Post in: English French Italian Spanish

out 18


View this Post in: English French Italian Spanish

out 17

Para poder acessar as configurações do roteador “D Link DI 524″, basta entrar com o IP 192.168.0.1 em um navegador web. Por padrão o login de acesso é admin (todo minúsculo) e a senha você deixa em branco. Em alguns casos não revolve você pressionar a tecla enter, tem que clicar no botão mesmo. Se com este usuário e senha você não conseguir acessar tente resetar o roteador. Para resetar basta pressionar com um objeto pontiagudo o buraquinho bem pequeno que tem abaixo dele. Tenha cuidado ao resetar pois todas as configurações feitas serão perdidas e restauradas para o padrão de fábrica incluindo o usuário e a senha de acesso.


View this Post in: English French Italian Spanish

out 16

Esta é apenas uma curiosidade. Hoje quando fui entrar no Orkut vi a seguinte mensagem logo abaixo das dicas de segurança:

“Uau, você está usando o Google Chrome! Cuide dele direitinho”

he he… Uma forma de incentivar o uso do Chrome???


View this Post in: English French Italian Spanish

out 15

Depois de alguns dias pesquisando, encontrei algumas soluções viáveis para enviar um arquivo diretamente para a impressora (sem abrir janelas de diálogo), cada uma com suas limitações.


Solução 1: Fazer uma cópia do arquivo para o local da impressora

 

No prompt do DOS basta utilizar o comando:

copy nome_arquivo nome_impressora

O equivalente em C# é:

System.IO.File.Copy(nome_arquivo , nome_impressora);

Onde nome_arquivo é o nome físico completo do arquivo e nome_impressora é o nome do compartilhamento da impressora composto pelo IP ou nome da máquina mais o nome do compartilhamento.

Limitação: Imprime somente arquivos texto e a impressora deverá estar compartilhada.


Solução 2: Utilizar o comando print do windows.

Esta foi a melhor solução que encontrei. A idéia é utilizar o comando “print” do shell do Windows. Ao executar o comando, o Windows irá abrir o programa padrão estabelecido pelo tipo do arquivo e imprimir automaticamente, fechando o programa após a impressão.

Em Delphi utiliza-se o comando ShellExecute para executar um comando shell.

ShellExecute(Handle, 'print',PChar('arquivo'), nil,nil,SW_SHOW);

No Framework .Net não existe esta função, no entanto ela está implementada na dll shell32.dll do Windows. Para utiliza-la em C#, VB6 ou VB .Net devemos criar uma referência para a mesma.

[DllImport("shell32.dll", EntryPoint = "ShellExecute")]
public static extern int ShellExecuteA(int hwnd, string lpOperation,
     string lpFile, string lpParameters, string lpDirectory, int nShowCmd);

Para utilizar a directiva DllImport é preciso referênciar o namespace System.Runtime.InteropServices.
Veja o exemplo a seguir utilizado em um projeto do tipo Windows Application.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace ImprimeArquivo
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();
            if (ofd.ShowDialog() == DialogResult.OK)
            {
                Form1.ShellExecuteA(this.Handle.ToInt32(), "print", ofd.FileName, null, null, 0);
            }
        }

        [DllImport("shell32.dll", EntryPoint = "ShellExecute")]
        public static extern int ShellExecuteA(int hwnd, string lpOperation,
              string lpFile, string lpParameters, string lpDirectory, int nShowCmd);
    }
}

Solução 3: http://support.microsoft.com/kb/322091/pt-br


View this Post in: English French Italian Spanish

out 06

Para saber a versão de uma dll criada a partir de um projeto do tipo Class Library basta utilizar o código:

typeof(NomedaSuaClasse).Assembly.GetName().Version;

Ou, se você chamar a instrução de dentro da classe, poderá fazer:

this.GetType().Assembly.GetName().Version;

Esses métodos retornam um objeto do tipo Version, que pode ser utilizado para pegar separadamente cada tipo de versão. Por exemplo, a versão de compilação, a maior verão, a menor versão, etc…

O código abaixo exemplifica o uso destes métodos em uma classe que pode ser chamada por exemplo em uma aplicação Web ou WinForm.

public class Info
{
    public static Version GetVersion()
    {
        return typeof(Info).Assembly.GetName().Version;
    }

    public static string GetVersionString()
    {
        Version version = Info.GetVersion();
        string versionstring = version.Major + "." + version.Minor +
            "." + version.Build + "." + version.Revision;
        return versionstring;
    }
}

Para chamar este método em sua aplicação faça por exemplo:

label.Text = "Versão:" + Info.GetVersionString();

Se estiver trabalhando com WinForms, você poderá usar o código abaixo para saber a versão do exe de sua aplicação:

Assembly.GetEntryAssembly().GetName().Version

Da mesma maneira que no exemplo anterior com a dll, poderá ser criado uma classe somente para retornar esta informação.

Obs.: Para alterar a versão da dll basta ir nas propriedades do projeto e na guia Application clique no botão “Assembly Information” como na figura abaixo.


View this Post in: English French Italian Spanish

out 05

Para pegar o valor de uma string de conexão do Web.Config basta utilizar a classe ConfigurationManager. Veja um exemplo:

string cs = ConfigurationManager.ConnectionStrings["strConn"].ConnectionString;

Onde strConn é o nome dado a sua string de conexão no Web.Config. Veja um exemplo do Web.Config:

<?xml version="1.0"?>
<configuration>
    <connectionStrings>
       <add name="strConn"
	connectionString="Data Source=192.168.0.1;Initial Catalog=Banco;
User ID=Usuario;Password=Senha;"
	providerName="System.Data.SqlClient"/>
    </connectionStrings>   
</configuration>

Se você se deparar com o erro “The name ‘ConfigurationManager’ does not exist in the current context” é porque provavelmente você está tentando pegar o valor desta string em um projeto do tipo Class Library. Para solucionar este problema basta referenciar no seu projeto a dll System.configuration.


View this Post in: English French Italian Spanish