Notícias

24.9.09

"Disco" de Boot do Vista

Acho que nunca foi tão difícil fazer um "disco" de boot como no Windows Vista.

Primeiro você tem que baixar um ISO de 1.3 Gb e instalar um pacote chamado "Automated Installation Kit (AIK)":
https://www.microsoft.com/downloads/details.aspx?familyid=94BB6E34-D890-4932-81A5-5B50C657DE08&displaylang=en

Após seguir alguns passos meios cabulosos para marinheiros de primeira viagem (entenda-se todas as pessoas que não fizeram curso para serem técnicos no Windows Vista):
http://windowsitpro.com/article/articleid/97797/using-a-usb-flash-drive-to-recover-windows-vista.html

Que fará referencia a este post, que deve ser feito no meio do caminho dos passos anteriores (ou na verdade pode ser feito primeiro):
http://blogs.msdn.com/winre/archive/2006/12/12/creating-winre-using-waik.aspx

E aí finalmente após umas 4h de download e 1 a 2 horas apanhando, você terá um "disco" de boot.



20.5.09

Desligando o computador

Fiz um projeto no codexplex mais para testar como funcionava o esquema lá e coloquei um projetinho q fiz brincando outro dia.

O que o "software" faz é desligar o seu Windows depois de um tempo pré-programado.

Quem quiser me ajudar a melhorar o projeto, a descrição ou somente testar, fiquem a vontade.

Toda ajuda é bem vinda!

Para conferir acesse:
http://winshutdown.codeplex.com/



28.4.09

C# Receita #1

Estou usando o livro C# 3.0 Cookbook que ganhei durante o Pantanet Seminars I e ao procurar algumas receitas, vi que elas não constavam no livro, então resolvi publicar essas receitas nos mesmos moldes do livro. Claro que elas não serão tão didáticas e discutidas como no livro, mas o que vale é a intenção. Então o didatismo e a discussão dependerá dos comentários e dúvidas postados.
Como mesclar 2 vetores
Quando você tem um array e quer mesclar (unir) com outro array, não existe um método para isso como numa Lista, por exemplo, então é necessário fazer uma gambiarra. Nesta receita tenho 2 arrays a1 e a2, e quero uni-los no array a3:
string[] a1 = { "dog", "dock", "deer" };
string[] a2 = { "lion", "tiger" };
string[] a3 = new string[a1.Length + a2.Length];
a1.CopyTo(a3, 0);
a2.CopyTo(a3, a1.Length);
Simples e conciso.
Outro caso poderia ser se você quisesse unir a2 a a1, como no C# não há como redimensionar arrays dinamicamente como no VB.Net, ou você pode atribuir a3 a a1, ou então usar uma função auxiliar para redimensionar a1 e depois copiar os valores de a2 para a1, como abaixo:
int pos = a1.Length;
a1  = RedimArray(a1, a1.Length + a2.Length);
a2.CopyTo(a1, pos);
Abaixo uma função para expandir arrays:
/// <summary>
/// Realoca um vetor com um novo tamanho, e copia seu 
/// conteúdo para o novo vetor.
/// </summary>
/// <param name="oldArray">o vetor antigo, a ser realocado.</param>
/// <param name="newSize">o tamanho do novo vetor.</param>
/// <returns>Um novo vetor com o mesmo conteúdo.</returns>

public static System.Array RedimArray(System.Array vetor, int novoTamanho)
{
    int tamanhoAnt = vetor.Length;
    System.Type tipo = vetor.GetType().GetElementType();
    System.Array novoVetor = System.Array.CreateInstance(tipo, novoTamanho);
    int tamanho = System.Math.Min(tamanhoAnt, novoTamanho);
    if (tamanho > 0)
        System.Array.Copy(vetor, novoVetor, tamanho);
    return novoVetor;
}
Porém caso fosse necessário fazer muitos redimensionamentos é recomendado usar uma Lista ou alguma outra coleção, especialmente se os vetores forem grandes ou com objetos de grande tamanho.

Technorati Tags: ,,,



9.4.09

Como não deixar selecionar data anterior a atual no CalendarExtender

O AJAX Control Toolkit tem um controle chamado CalendarExtender, que exibe um calendário para seleção de data ao clicar em um textbox. Muitas vezes queremos que o usuário selecione somente uma data futura.

Para fazer isso basta adicionar no header a seguinte função javascript:

function checkDate(sender,args)

{
if(sender._selectedDate < new Date()) 
{
            alert("Você não pode selecionar uma data passada!");
            sender._selectedDate = new Date();
            // seleciona a data atual novamente
sender._textbox.set_Value(sender._selectedDate.format(sender._format))
}
}

E adicionar a referencia a esse função no CalendarExtender, como no exemplo abaixo:

<formid="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<div>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<cc1:CalendarExtender ID="CalendarExtender1"
runat="server" OnClientDateSelectionChanged="checkDate" TargetControlID="TextBox1" />
</div>
</form>

31.3.09

Brinquedinhos da Microsoft

Encontrei um software da Microsoft mto útil para backups para usuários comuns, chama-se SyncToy, e pode ser baixado aqui:
http://www.microsoft.com/downloads/details.aspx?familyid=c26efa36-9...

Outras ferramentas Microsoft que tenho testado são o Live Mesh e o Live Sync, onde pelo que vi o segundo perde o sentido devido a existencia do primeiro que faz tudo que o Live Sync faz e muito mais. Bom o Live Sync serve para sincronizar pastas entre computadores diferentes, onde os 2 PCs devem estar ligados para sincronizar, parece óbvio, mas nada prático se vc quiser sincronizar arquivos de casa e do trabalho e ter que lembrar de deixar ligado para poder sincronizar, ruim não? Porém para sincronizar entre duas pessoas (2 usuários com contas "Live") é bom.

Bom, como disse o Live Mesh faz tudo que citei anteriormente com um extra, ele deixa um backup de tudo na internet, você pode logar em mesh.com e acessar todos seus arquivos "sincronizados". Assim ele permite que você sincronize pastas entre 2 computadores sem que os 2 estejam ligados ao mesmo tempo e você ainda tem um backup.

Recentemente andei lendo também sobre o SyncFramework que vem com o SQL Server 2008, parece ser muito legal e evita que os programadores tenham que pensar nas regras de sincronização qdo implementarem clientes desconectados. Acredito que as 3 ferramentas que citei acima usem esse framework.

Share