.Net

abr
19

Javascript:

<script type="text/javascript" language="javascript">

var dataAtual = new Date();

var dia = mydate.getDay();
var mes = mydate.getMonth();
var ano = mydate.getYear();

document.write( dia + "/" + mes + "/" + ano );

var hora = dataAtual.getHours();
var minutos = dataAtual.getMinutes();

var timeValue = hora + ((minutos < 10) ? ":0" : ":") + minutos;

document.write( timeValue );

</script>

 

PHP:

<?php
$data = date('d/m/Y');
echo $data;

$hora = date('h:i');
echo $hora;
?>

Asp.Net (C#):

DateTime agora = DateTime.Now;
String data = agora.ToString("MM-dd-yyyy");
Response.Write(data);

String hora = agora.ToString("HH:mm");
Response.Write(hora);

abr
22
Posted by Felipe V. Rigo at 12:09 pm

No dia 12 saiu a versão RTM do Visual Studio 2010. Ele possui 4 versão: Professional, a mais básica até Ultimate a versão completa.

Olhando sobre o VS2010, o que me chamou a atenção foram os requisitos de hardware para versão mais básica: (mais…)

Estava precisando montar algumas expressões regulares, para mim sempre foi difícil entender e sempre que precisei de algo de novo tinha que ficar pesquisando e consultando referencias, imagino que seja assim para a maioria das pessoas, porém acho q isso vai mudar para mim a partir de hoje, então resolvi compartilhar essa ótima ferramenta que encontrei: (mais…)

Foi um sucesso o evento do Grupo PantaNet realizado dessa vez no SENAC. Tivemos uma grande participação do público que encheu o belo auditório. De 168 inscritos, tivemos a presença de 114 pessoas entre profissionais e estudantes prestigiando o evento. Os temas apresentados foram focados em “Comunidades”, “Segurança” e “Aplicações ASP.Net”.

O Gustavo Malheiros falou sobre a importância da participação nas comunidades como oportunidades de crescimento profissional, baseado numa apresentação de seu amigo Ricardo Guerra e também sobre as novas ações realizadas pelo grupo, como o lançamento do novo Portal, Nova Logotipo, parcerias e sobre o Aniversário do PantaNet. Depois o Odenir Jr. falou sobre as  aplicações WEB onde algumas não possuem mecanismos de segurança eficientes, mostrando o quão vulneráveis os sites das empresas e como melhorar.

Na última palestra eu abordei sobre como construir poderosas aplicações combinando jQuery com ASP.Net AJAX. Para encerrar, tivemos o sorteio de brindes para o público e como parte das novas ações, tivemos a premiação de reconhecimento para os membros do grupo que mais participam ativamente. Foi fundamental o apoio da Microsoft através do CEA (Comunidade em Ação) para realização do evento, que além dos brindes, como novidade, agora propicia certificados de participação para os presentes. (mais…)

mai
20
Posted by Felipe V. Rigo at 7:38 pm

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/



abr
28
Posted by Felipe V. Rigo at 11:25 pm

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: ,,,



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>
mar
31
Posted by Felipe V. Rigo at 11:45 pm

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.

Fique pensando em que tipo de assunto abordar, mas acho que quando se trata de um blog de informática, mais especificamente pra quem desenvolve (assim como eu), penso em postar um tópico que encontramos alguma dificuldade e achamos a solução.

Como não tenho feito muita coisa nova ultimamente, fui buscar nas soluções de problemas básicos e antigos que encontramos em projetos anteriores.
Uma dessas soluções, resolvida basicamente com javascript, é desabilitar um botão logo após este ser clicado, para evitar que um usuário clique várias vezes neste, causando várias requisições ao servidor e quem sabe um problema inesperado.

Nós usamos um método que fica em um namespace separado, chamado Common, em que passamos o botão e o texto do botão após o clique (algo como “Aguarde”), como parâmetros.

Veja abaixo:

public static void DisableOnClick(System.Web.UI.WebControls.Button btn, string Message)
{
  string theScript = "";
  if ( btn.CausesValidation )
  {
     theScript = @"
        if (typeof(Page_ClientValidate) == 'function') 
        { 
           if (Page_ClientValidate() == false )
              return false; 
        }";
   }
   theScript += @"
      this.value = '" + Message + @"';
      this.disabled = true;
      document.getElementById('" + btn.ClientID + @"')
.disabled = true;" +
   btn.Page.ClientScript.GetPostBackEventReference(btn, string.Empty) + @";";
            
   btn.Attributes["onclick"] = theScript;
}

Basicamente o que o método faz é criar um script e anexar ao evento de clique do botão. Este script verifica se o botão faz algum tipo de validação e, caso afirmativo, executa essa função, depois o botão é desabilitado, o novo texto é setado e é feita a chamada de postback que está anexada ao botão.

Exemplo de uso:

private void Page_Load(object sender, System.EventArgs e)
{
    Common.DisableOnClick(btnRegister, "Aguarde...");
}

Simples, prático e útil… Enjoy ;)

Segue abaixo um artigo que comecei a escrever em resposta ao seguinte post:
http://forums.microsoft.com/msdn-br/ShowPost.aspx?postid=565879&siteid=21
e no fim nunca terminei.
Quem quiser ajudar a terminar me escreva que eu compartilho no GoogleDocs.

Implementando Segurança de Acesso ao Código

Segurança de Aceso ao Código, ou simplemente CAS (Code Access Security), é um sistema de segurança que permite administradores e desenvolvedores controlar o acesso das aplicações similarmente como fazem para controlar o acesso dos usuários. O CAS está para as aplicações assim como o role-based security (RBS) está para os usuários. CAS é algo muito grande para ser abordado apenas em um artigo, então aqui tentarei dar uma breve introdução de como ele funciona e como colocar em prática. Para uma abordagem mais profunda acesse:
http://msdn2.microsoft.com/en-us/library/930b76w0(VS.80).aspx

Com o CAS, você pode permitir uma aplicação ler ou gravar no registro enquanto restringe esse acesso a outras aplicações. Mas há um porém, o CAS não pode se sobresair às permissões do usuário (fornecidas pelo RBS). Por exemplo, se o usuário não tem permissão para acessar determinado recurso, a aplicação que o usuário executar também não terá.

Como o CAS você divide as aplicações em 2 grupos:

  • Parcialmente Confiável: A aplicação poderá executar com determinadas permissões, mas sempre verificando se ele tem acesso a determinado recurso.
  • Completamente Confiável: A aplicação não passará por verificação de segurança e poderá acessar todos os recursos que o SO permitir.

As permissões de uma aplicação são determinadas através do que é chamado de Evidência, que nada mais é que dados que identificam a aplicação. Alguns exemplos de evidência da aplicação são o local de onde está sendo executado e seu hash (calculado pelo .Net e que é único para cada versão da aplicação). Baseado na Evidência o .Net enquadra a aplicação em um Grupo de Código. Cada Grupo de Código estará atribuido a um conjunto de permissões, então assim será determinado o que a aplicação pode acessar. Os Grupos de Códigos e os conjuntos de permissões já vêm previamente configurados no .Net e podem ser customizados através da ferramenta de configuração do .Net localizado nas Ferramentas Administrativas do computador.