Criando/Baixando/Listando/Apagando Arquivos no Delphi ASP.NET

Olá pessoal!

Hoje vou mostrar como criar arquivos .txt ou .sql com Delphi ASP.NET em tempo de execução a partir de uma string qualquer, gravar estes arquivos no servidor e descer para o usuário, também vou mostrar como listar os arquivos gerados, apagar e ler os dados de cada arquivo, recomendo a leitura do artigo Trabalhando com Diretórios e Arquivos do Blog Geeks .NET, lá o meu colega Mateus Chies já demonstrou algumas dessas funções da classe System.IO.

Bom, neste exemplo temos uma página que executa SQL diretamente no banco e exibe os resultados em uma gridView, após isso temos uma função que pega estes dados e gera um arquivo SQL com comandos para inserir (INSERT INTO ...) e disponibiliza o arquivo .SQL pra download, vamos primeiramente fazer a procedure que gera a SQL a partir de um dataset e grava o arquivo no servidor.


procedure TExemplo.GerarSQLInsert(ds:dataset);
var
  C,R: Integer;
  sql: StringBuilder;
  caminho, arquivo:string;
  arq: System.IO.FileInfo;
  dir: System.IO.Directory;
  stream: System.IO.StreamWriter;
begin
    {$REGION 'Cria SQL Insert'}
    sql := StringBuilder.Create;
    // Inicia transação na banco
    sql.appendLine('BEGIN TRANSACTION');
    sql.appendLine('GO');
    sql.AppendLine('');
    // Registros Encontrados
    for R := 0 to ds.Tables[0].Rows.Count - 1 do
    begin
      // Inicia comando Insert com Nome da Tabela
      sql.AppendLine('INSERT INTO '+txbNomeTabela.Text+' (');
      // Recupera Campos/Atributos
      for C := 0 to ds.Tables[0].Columns.Count - 1 do
      begin
        // Se não for última coluna precisa vírgula
        if C <> ds.Tables[0].Columns.Count -1 then
          sql.AppendLine(ds.Tables[0].Columns.Item[C].ColumnName+', ')
        else
          sql.AppendLine(ds.Tables[0].Columns.Item[C].ColumnName);
      end;
      // Fecha Atributos
      sql.AppendLine(') ');
      // Dado de cada Atributo
      sql.AppendLine('VALUES (');
      for C := 0 to ds.Tables[0].Columns.Count - 1 do
      begin
        // Se não for última coluna precisa vírgula
        if C <> ds.Tables[0].Columns.Count -1 then
        begin
          if ds.Tables[0].Rows.Item[r].Item[c].ToString().TRIM <> '' then
          begin
            // Verifica se o tipo é double
            if NumeroValido(ds.Tables[0].Rows.Item[r].Item[c].ToString().TRIM) then
              sql.AppendLine(ds.Tables[0].Rows.Item[r].Item[c].ToString().TRIM+', ')
            else  // Se não deve ser string e precisa aspas
              sql.AppendLine(' '''+ds.Tables[0].Rows.Item[r].Item[c].ToString().TRIM+''', ');
          end
          else
            sql.AppendLine('NULL, ');
        end
        else
        begin
          // Verifica se tem valor
          if ds.Tables[0].Rows.Item[r].Item[c].ToString().TRIM <> '' then
          begin
            // Verifica se o tipo é double
            if NumeroValido(ds.Tables[0].Rows.Item[r].Item[c].ToString().TRIM) then
              sql.AppendLine(ds.Tables[0].Rows.Item[r].Item[c].ToString().TRIM)
            else  // Se não deve ser string e precisa aspas
              sql.AppendLine(' '''+ds.Tables[0].Rows.Item[r].Item[c].ToString().TRIM+''' ');
          end
          else
            sql.AppendLine('NULL');
        end;
      end;
      // Fecha Dados
      sql.AppendLine(')');
      sql.AppendLine('GO');
      sql.AppendLine('');
    end;
    sql.AppendLine('');
    // Encerra transação e grava registros
    sql.appendLine('COMMIT');
    sql.appendLine('GO');
    {$ENDREGION}
    // Exibe
//    lblScript.Text := sql.ToString;
    {$REGION 'Cria Arquivo SQL Insert e Desce para o Usuário'}
    try
      caminho := Server.MapPath('.')+'\SQL\';
      arquivo := 'SQL_INSERT_'+txbNomeTabela.Text+'.sql';
      // verifica / cria diretório se não existe
      if dir.Exists(caminho) = False then
        dir.CreateDirectory(caminho);
      // cria arquivo
      arq := System.IO.FileInfo.Create(caminho+arquivo);
      // Insere SQL no arquivo
      stream := System.IO.StreamWriter.Create(caminho+arquivo);
      stream.WriteLine(sql.ToString);
      stream.Close();
      // download do arquivo
      ScriptManager.RegisterStartupScript(Page, Page.GetType(), Guid.NewGuid().ToString(),'window.open("/SQL/'+arquivo+'","downsql","menubar=no,scrollbars=no,WIDTH=15,HEIGHT=15");', true);
    except on ex:exception do
      response.write('Erro durante criação do arquivo.
Detalhes: '+ex.message);
    end;
    {$ENDREGION}
end;

// Função que verifica se o número é válido (é um número ou não)

function TExemplo.NumeroValido(Numero: String): Boolean;
Var
  N: Double;
begin
  Result := False;
  try                
    N := Convert.ToDouble(Numero);
    Result := True;
  Except
    Result := False;
  end;
end;


Bom, no código acima ficou bem comentado o que cada parte faz, então vamos para o próximo passo, exibir os arquivos gerados em uma grid e também ter a opção de exibir o conteúdo dos arquivos em um textBox, excluir os arquivos ou fazer o download novamente.

Exibir os arquivos de um diretório é fácil como você já viu no post od Geeks .NET, mas aquele exemplo temos um problema, ele exibe o caminho completo do arquivo no servidor mas nós queremos ver apenas os nomes dos arquivos, então veja como ficou a procedure abaixo:


procedure TExemplo.ListarArquivos;
var
  caminho, na:string;
  lista: ArrayList;
  i: integer;
begin
  caminho := Server.MapPath('.');
  lista := ArrayList.Create;
  gvSQL.DataSource := System.IO.Directory.Getfiles(caminho+'\sql');
  gvSQL.databind();
  for I := 0 to gvSQL.rows.Count - 1 do
  begin
    na := gvSQL.Rows.item[i].cells[3].Text;
    // Substitui o caminho até o diretório dos arquivos por '' -> nada
    na := na.replace(caminho+'\sql\','');
    lista.add(na);
  end;
  gvSQL.DataSource := lista;
  gvSQL.databind();
end;


Ok, você pode notar que jogamos os nomes dos arquivos dos diretórios na coluna (Cells) 3 da grid, isto porque já temos as funções de ler, excluir e baixar nas três primeiras colunas da grid, veja o código da grid, tire os espaços nas tags.


< asp:gridview backcolor="White" bordercolor="#999999" borderstyle="Solid" borderwidth="1px" cellpadding="3" font-size="Small" forecolor="Black" gridlines="Vertical" id="gvSQL" runat="server">
    < columns>
   < asp:buttonfield commandname="LER" text="Carregar">< /asp:buttonfield>
            < asp:buttonfield commandname="DOWNLOAD" text="Download">< /asp:buttonfield>
            < asp:buttonfield commandname="EXCLUIR" imageurl="~/imagens/exc.gif" text="Excluir">< /asp:buttonfield>
          < /columns>
          < footerstyle backcolor="#CCCCCC">< /footerstyle>
          < pagerstyle backcolor="#999999" forecolor="Black" horizontalalign="Center">< /pagerstyle>
          < selectedrowstyle backcolor="#000099" font-bold="True" forecolor="White">< /selectedrowstyle>
          < headerstyle backcolor="Black" font-bold="True" forecolor="White">< /headerstyle>
          < alternatingrowstyle backcolor="#CCCCCC">< /alternatingrowstyle>
        < /asp:gridview>


Agora já sabemos criar os arquivos, exibir eles em uma grid, vamos a parte de ler e e excluir os arquvos existentes, para isso vamos implementar as funções para cada botão da grid, fazemos isto no evento RowCommand, veja código abaixo:


procedure TExemplo.gvSQL_RowCommand(sender: TObject; e: System.Web.UI.WebControls.GridViewCommandEventArgs);
var
  caminho,arquivo:string;
  arq: System.IO.FileInfo;
  reader: System.IO.StreamReader;
begin
  // Se o comando é EXCLUIR
  if e.commandname = 'EXCLUIR' then
  begin
    // Pega o caminho até o diretório
    caminho := Server.MapPath('.')+'\SQL\';
    // o Nome do arquivo SQL
    arquivo := GVSQL.Rows.Item[convert.ToInt32(e.commandargument)].Cells[3].Text;
    // Cria arquivo
    arq := System.IO.FileInfo.Create(caminho+arquivo);
    // Se arquivo existe -> com certeza existe
    if arq.Exists then
      arq.Delete;  // Deleta
    // Atualiza Lista dos Arquivos
    ListarArquivos;
  end;
  // Se o comando é para baixar o arquivo -> DOWNLOAD
  if e.commandname = 'DOWNLOAD' then
  begin
    // Pega nome arquivo
    arquivo := GVSQL.Rows.Item[convert.ToInt32(e.commandargument)].Cells[3].Text;
    // Redireciona usuário para endereço do arquivo, vai pedir pra baixar...
    Response.redirect('/SQL/'+arquivo);
  end;
  // Se for pra ler -> exibir na textbox conteúdo do arquivo
  if e.commandname = 'LER' then
  begin
    caminho := Server.MapPath('.')+'\SQL\';
    arquivo := GVSQL.Rows.Item[convert.ToInt32(e.commandargument)].Cells[3].Text;
    reader := StreamReader.Create(caminho+arquivo);
    // Lê arquivo até o fim e joga string para textbox
    txbSQL.text := reader.ReadToEnd;
    reader.Close();
  end;
end;


Bom pessoal, basicamente é isto ai, não mostrei como faz .txt né, é só trocar o final do nome do arquivo (Extensão) de .sql para .txt e pronto. Espero que seja útil, hoje também fiz um post no Geeks mostrando como exportar dados de uma grid para o Excel, pode ser muito útil em alguns casos, normalmente o usuário pede também...

Agradecimentos ao Tiago Pasieka que começou a página que me motivou fazer estas funções, valeuu!!

Até!

Witricity: Eletricidade sem fio

Em 2007 vi no Inovação Tecnológica uma matéria sobre eletricidade sem fio, achei muito legal mas desconfiei dos problemas que isso poderia gerar, hoje vi um vídeo demonstrando que não existe risco algum utilizar esta tecnologia, finalmente vamos nos livrar dos fios, eu espero! :D




Encontrei por aqui.

Como se tornar um Hacker

Olá pessoal, recebi a dica do Helton e resolvi compartilhar aqui uma leitura básica pra quem tem interesse em desenvolvimento de softwares, a tradução do manual dos hackers de Eric Steven Raymond. Lá você encontrará alguns conceitos muito importantes para seguir nessa nossa vida louca, veja alguns trechos.

--------------------------------------------------
Existe uma comunidade, uma cultura compartilhada, de programadores experts e magos de redes que traçam sua história desde décadas atrás nos primeiros mini-computadores de tempo compartilhado e nos mais remotos experimentos da ARPAnet. Os membros dessa comunidade originaram o termo 'hacker'. Hackers construiram a Internet. hackers criaram o sistema operacional Unix da forma como ele é hoje. Hackers rodam a Usenet. Hackers fizeram a World Wide Web funcionar. Se você é parte dessa cultura, se você contribuiu para isso e outras pessoas nisto o chamam de hacker, então você é um hacker.
--
Há um outro grupo de pessoas que ruidosamente se auto-entitulam hackers, mas não são. Essas são pessoas (em grande parte adolescentes do sexo masculino) que possuem uma atração por entrar em computadores a força e por burlar o sistema telefônico. Verdadeiros hackers chamam essas pessoas de 'crackers' e não têm nada a ver com eles. Hackers verdadeiros em grande parte pensam que crackers são preguiçosos, irresponsáveis e não tão brilhantes, e sustentam que ser capaz de quebrar segurança não faz de você um hacker mais do que ser capaz de fazer ligação direta em um carro faz de você um engenheiro automotivo. Infelizmente, muitos jornalistas e escritores têm usado enganosamente a palavra 'hacker' para descrever crackers; isso irrita profundamente os verdadeiros hackers.
--
A diferença básica é esta: hackers constroem coisas, crackers as quebram.

CSS não carrega com login ASP.NET

Olá pessoal, esta semana tive um pequeno problema durante o desenvolvimento de um sistema web no VS 2008 SP1 com dotNET 3.5, fiz uma master page com CSS e um diretório com imagens do modelo, criei um novo web form baseado na master page e configurei a web.config para somente permitir visualizar as páginas quem já fez login, conforme código abaixo, após isso as páginas somente carregavam os estilos após o usuário ter feito login.



Após muita pesquisa na Internet consegui resolver o problema adicionando permissão de acesso para todos os usuários nos diretórios das imagens e do CSS, veja código abaixo.



Meu arquivo Web.config completo.



A estrutura dos diretórios e páginas do meu Web Site.


Se alguém passou por uma situacão parecida e encontrou uma outra solução gostaria que postasse nos comentários, abaixo estou anexando o livro onde encontrei esta dica.
Apontamentos ASP Net
Até.

Diferenças no Pensamento entre Ricos, Classe Média e Pobres

Olá a todos!!

Comecei a ler esta semana o livro "Independência Financeira. O Guia do Pai Rico", e achei logo no início uma coisa muito interessante, a diferença no pensamento entre ricos e pobres, acho que vale a pena compartilhar aqui para refletirmos e começarmos a pensarmos como ricos, ou não.


P/CM – Diz: “Nunca vou ficar rico”.
R – Diz: “Sou um homem rico”. E mesmo se estiver quebrado, pois diz: ‘Há uma diferença entre ser pobre e estar quebrado. Estar quebrado é algo temporário; ser pobre é eterno”.
P/CM – Não ligo para dinheiro, ou O dinheiro não é importante. 


R – O dinheiro é poder.
P/CM – Trabalha por dinheiro.
R – O dinheiro trabalha para mim.

P/CM – Adquirem obrigações pensando que são ativos.
R – Adquirem ativos.

P/CM – Compram primeiro artigos de luxo (casas grandes, carros maiores, diamantes, peles, jóias ou barcos).
R – Compram os artigos de luxo por último.

P/CM – O amor ao dinheiro é a raiz de todo mal.
R – A falta de dinheiro é a raiz de todo mal.

P/CM – Não dá para comprar isso.
R – O que posso fazer para comprar isso?
R – Meu cérebro fica mais forte a cada dia porque eu o exercito. Quanto mais forte fica, mais dinheiro ganho.

P/CM – Tem o hábito de colocar o cérebro para dormir quando o assunto é dinheiro. Evita o assunto.
R – Tem o costume de exercitar seu cérebro quando o assunto é dinheiro.

P/CM – Que os ricos deviam pagar mais impostos para atender os menos afortunados.
R –Que os impostos punem os que produzem e recompensam os que não produzem.

P/CM – Estude arduamente, forme-se, para poder arrumar emprego numa boa empresa.
R – Estude arduamente, forme-se, para ficar rico, para entender como funciona o dinheiro e para aprender a faze-lo trabalhar para você, para ser independente financeiramente.

P/CM – Não sou rico porque tenho filhos.
R – Tenho que ser rico por causa de vocês, meus filhos.

P/CM – Proíbe que se fale de negócios durante as refeições.
R – Inventiva as conversas sobre dinheiro e negócios na hora do jantar.

P/CM – Em questões de dinheiro seja cuidadoso, não se arrisque.
R – Aprenda a administrar o risco. Conhecendo a operação, o risco diminui.

P/CM – Nossa casa é nosso maior investimento e nosso maior patrimônio.
R – Minha casa é uma dívida e se sua casa for seu maior investimento, você terá problemas.

P/CM – Paga suas contas no prazo, em primeiro lugar.
R - Paga suas contas no prazo, deixando para a última hora. Primeiro paga a si mesmo.

P/CM – Acredita que a empresa ou o governo deveria cuidar de você e de suas necessidades.
R – Acredita na auto-suficiência financeira, se manifestando contra a mentalidade ‘dos direitos’ e fala que isso cria pessoas fracas e financeiramente necessitadas.

P/CM – Luta para poupar uns poucos reais.
R – Cria investimentos.

P/CM – Ensina a escrever um currículo impressionante para encontrar um bom emprego.
R – Ensina a fazer sólidos planos financeiros e de negócios de modo que possa criar empregos.

Juros Compostos no Lázarus

Olá pessoal!

Depois de algumas aula de matemática financeira, resolvi testar meus conhecimentos e fazer um programa pra cálculos de juros compostos. A idéia é que o usuário veja os campos com os dados necessários para o cálculo e deixe em branco aquele que ele deseja descobrir, por exemplo, pra calcular o montante, informa o capital inicial, taxa e tempo, clica em calcular, o programa verifica que foi deixado em branco o campo Montante e então calcula e exibe o resultado naquele campo.

Como tenho instalado no meu note Ubuntu 9.04 e Lázarus, resolvi fazer nele, já mostrei como instalar ele neste post.

Criação de um Sistema para Controle de Viagens no Delphi com Firebird

Olá pessoal, este é um resumo/tutorial da criação de um sistema para controle de Viagens feito durante as aulas de Programação Comercial do prof. Fauzi Shubeita, durante o desenvolvimento serão usados as ferramentas Case Studio 2.25, IB Expert, Delphi 2007 e o Banco de Dados Firebird 1.5, ele está dividido em duas partes, nesta primeira vamos modelar e criar o banco de dados, na segunda parte será o desenvolvimento no Delphi, talvez não tudo, mas o principal.

Sobre as ferramentas utilizadas:

Case Studio: utilizado principalmente para modelagem de banco de dados, permite a criação de Diagramas de Fluxo de Dados e Diagramas de Entidades e Relacionamentos, tem suporte aos principais banco de dados relacionais. Mais Informações.

IB Expert: segundo Wikipedia, "O IB Expert é um poderoso gerenciador de banco de dados que permite realizar todas as tarefas necessárias para o suporte e manutenção do banco tanto local como remotamente. Com ele é possível administrar o banco criando tabelas, modificando campos, índices, executando scripts SQL e outras funções. O IB Expert realiza a geração do modelo de entidade relacionamento para bancos de dados Interbase e Firebird.". Mais informações e link para download da versão Costumer.

Delphi: segundo próprio site do desenvolvedor, Embarcadero: "Delphi é um dos mais respeitados e amplamente utilizado ambiente Rapid Application Development (RAD). Mais de 1,7 milhões de desenvolvedores em todo o mundo escolheram o Delphi sobre outras ferramentas porque Delphi muda radicalmente as velocidades de trabalho em desktop, workstation, touch, kiosk, e desenvolvimento de aplicações Web sem sacrificar muito tempo de programação ou controle. Os aplicativos criados com o Delphi são rápidos, compacto, fornecem interfaces (UIs) ricas e podem conectar-se a praticamente qualquer fonte de dados ou dados "out-of-the-box". Atualmente já temos a versão 2010, mas neste tutorial estaremos utilizando a 2007.

Firebird: é um banco de dados relacional muito utilizado por ser leve, rápido e de fácil utilização, também roda no Linux, Windows e plataformas Unix. Mais Informações, download Baixaki.

Obs.: Neste resumo não mostrarei passos de como instalar os softwares, apenas utilizar.

Criando Cadastro Rapidamente no Delphi

Aula de Programação Comercial hoje, primeiro exemplo, cadastro de pessoas... segue os passos para criar um cadastro básico no DELPHI, usando Client Data Set e DBNavigator, é muito simples basta seguir os passos:

1 – Criar novo projeto
2 – Adicionar um data Module
3 – Adicionar um Client Data Set da paleta DataAccess no Data Module.
4 – Renomear Data Module para DM
5 – Renomear Client Data Set para CDSPessoas
6 – Clicar com botão direito no CDSPessoas e abrir Field Editor
7 – Criar New Fields -> Campos
8 – Após criar todos os campos, configurar a propriedade "File Name" do CDSPessoas, colocar o nome do arquivo XML para armazenar os dados, pode ser PESSOAS.XML
9 – Clicar botão direito sobre o CDSPessoas e selecionar "Create DataSet"
10 – Manter o Field Editor Aberto e voltar para o Forulário Principal
11 – Selecionar todos os campos do field editor e arrastar sobre formulário.
12 – Adicionar o componente DBNavigator da paleta Data Controls e configurar a propriedade "Data Source" do mesmo, selecione o DataSource1 que foi criado automaticamente quando foram arrastados os campos sobre o formulário.
13 – Salve o Projeto e execute.

Até.

Habilitando uso de Proxy no Internet Explorer 8

A nova versão do navegador da Microsoft, Internet Explorer 8, não funciona em redes com proxy. É necessário alterar um configuração para que ele venha a funcionar nestas condições, segue os passos:

1. Iniciar->Executar-> secpol.msc
2. Navegue até: Local Policies->Security Options->Network Security: LAN Manager authentication level
Configuracoes de seguranca local
3. Dê um duplo clique sobre ele e selecione a opção: Send LM & NTLM – use NTLMv2 session security if negotiated
Configuracoes de seguranca rede
4. Clique em OK, feche a outra janela, abra o IE8, configure o proxy e pronto.

--- Update 20-08-12 ----- Exemplo com Windows em Portugues ---


 
Até.

Instalando Lázarus no Ubuntu 9.04

Olá pessoal, como programo em Delphi atualmente e gosto de usar Linux nas horas vagas, a um tempo queria testar o Lázarus, uma IDE muito semelhante ao Delphi mas que roda em Linux, Windows, Mac... e utiliza o FPC (Free Pascal Compiler) pra compilar os códigos em pascal. Hoje instalei ele e fiz um programa bem simples para testar, foi tranquilo. Segue os três comandos pra instalar.

1. Como sempre...

sudo apt-get update/upgrade
2. Instalar FPC
sudo apt-get install fpc
3. Instalar IDE -> Lazarus
sudo apt-get install lazarus

Agora já pode acessar o programa pelo menu Aplicativos->Programação->Lazarus, o ambiente é muito semelhante ao Delphi 7 mas é bem fácil de usar, para testar pode simplesmente pressionar F9 (compila e executa o programa).


Até.

Editor de códigos online

Olá pessoal, este mes anda meio complicado de sair algum post mais decente então deixo aqui algumas dicas de editores de código online, o primeiro é o Ecoder. Trata-se de um editor de código online de código aberto (http://sourceforge.net/projects/ecoder), ele permite trabalhar com arquivos php, txt, js, html e css, ao criar um novo arquivo ele já monta a estrutura básica dependendo da escolha do formato do arquivo/linguagem, possui também opção de Syntax highlighting (colore as tags), salvar, desfazer, buscar, ir para linha entre outras coisas.

Outro editor online muito bom que conheço é o PasteBin, nele é possível editar códigos em várias linguagens e salvar eles por determinado período de tempo ou então para sempre, feito isso ele cria uma página que você pode compartilhar com seus amigos ou professores (enviar o link) para tentar resolver algum bug ou outros casos que você possa imaginar.

Até.

Desabilitando Teclas com Javascript

Depois de muita pesquisa, teste e adaptação de vários códigos encontrados na Internet, consegui resolver meu problema. Ao pressionar a tecla F1 preciso chamar uma função específica do ASP.NET e não exibir a ajuda padrão dos navegadores, segue o código:



Apenas modificando esta função é possível desabilitar a função de qualquer tecla, basta trocar o código ASCII na variável “tecla” ou ainda pode desabilitar do F1 ao F12, trocando a condição que verifica a tecla pressionada por esta:

if(oEvent.keyCode >= 112 && oEvent.keyCode <= 123) { bRet = false; }

Resolvendo problema som/áudio Ubuntu 9.04

Comprei um notebook HP Pavilion dv3 recentemente que veio com Vista Home Premium, não aguentei muito tempo, pequei o cd do Ubuntu 9.04 e instalei ele. Logo vi que não tinha jeito de fazer funcionar o som, pesquisando no google encontrei algumas soluções e como sempre, deixo aqui a que funcionou pra mim.


1. Abra o terminal
2. Digite
sudo -s
e informe sua senha para ficar como root
3. Execute:
gedit /etc/modprobe.d/alsa-base.conf 
4. Adicione a seguinte linha no final do arquivo
options snd-hda-intel model=hp-m4 enable_msi=1
5. Salve, feche e reinicie.

Pra mim funcionou beleza, sites em que encontrei as dicas:
1. http://ubuntuforums.org/showpost.php?p=7198547&postcount=5
2. http://ubuntuforum-br.org/index.php?PHPSESSID=lpm7p8nqsn4n73ddlsvdtmo7n0&topic=50761.0

APACHE, MYSQL, PHP, PHPMYADMIN e ECLIPSE NO UBUNTU

Breve tutorial da instalação e configuração do Ubuntu para programar com PHP, realizando estes simples passos já é possível iniciar a programar.

1. Atualizar o sistema operacional
apt-get update
apt-get upgrade

2. Instalar Apache/Mysql/PHP
aptitude install apache2 mysql-server-5.0 php5 php5-mysql php5-cli -y
--durante a instalação será necessário definir uma senha para o Mysql.

3. Ir ao diretório virtual
cd /var/www/

4. Criar pagina de teste
vi teste.php

5. Pressione 'i' para poder digitar no vi e adicione o seguinte código
< ? php
      phpinfo();
? > 

6. Pressione ESC e digite ':wq' para salvar e fechar o vi

7. Instalar PhpMyAdmin
aptitude install phpmyadmin

8. Copiar o diretório do phpmyadmin para dentro de /var/www
cp -r /usr/share/phpmyadmin/ /var/www/phpmyadmin
8. Para acessar no seguinte endereço, http://localhost/phpmyadmin, precisa fazer o seguinte:
sudo gedit /etc/apache2/apache2.conf
add esta linha no final do arquivo ou onde desejar
Include /etc/phpmyadmin/apache.conf
e então reiniciar o apache.
/etc/init.d/apache2 restart
Fonte: http://askubuntu.com/questions/19127/how-to-access-phpmyadmin-after-installation


9. Reinicie

10. Abra o navegador e acesse 'http://localhost/' para verificar o funcionamento do apache, depois 'http://localhost/teste.php' para ver as configurações do PHP e depois 'http://localhost/phpmyadmin' para gerenciar facilmente suas bases de dados no Mysql.

11. Baixe o eclipse aqui.

12. Descompacte ele dentro de algum diretório, recomendo /usr/local/

13. Crie um atalho para o Eclipse na Área de Trabalho:
13.1 Clique com o botão direito do mouse e escolha Criar lançador…;
13.2 No campo Nome, digite: Eclipse;
13.3 no campo Comando, digite: /usr/local/eclipse/eclipse
13.4 Clique em OK;

14. Duplo clique no atalho para abrir.

Obs.: É necessário ter JVM instalado para rodar o Eclipse.

Até.

Dicas daqui e daqui.

Delphi Grátis

Olá pessoal, lendo meus feed/RSS hoje vi um artigo interessante sobre licenças e alguns links interessantes, como programo atualmente com Delphi for ASP.NET na empresa, cliquei em um que me chamou a atenção, Delphi Grátis, verifiquei e realmente existe mas o software vem com algumas limitações, ainda assim é possível desenvolver muitas coisas legais. Mais detalhes no site da Code Gear - Turbo e tutoriais na Turbo Explorer.

Pesquisando outras alternativas ao software pirata para quem está habituado com o Delphi encontrei o Lazarus (Win32), que roda em Linux, FreeBSD, MacOSX e Windows, também temos o Free Pascal e o Kylix. Segundo meus colegas Sipmann e Allan, o Lazarus funcionou muito bem no Ubuntu 9.04 e eles recomedaram o uso do mesmo já que o Kylix está descontinuado.

Bom, concluí com esta breve consulta ao oráculo que existem muitas alternativas ao uso de software pirata e que vale a pena utilizálos para garantir a segurança do seu computador e do seu bolso, até.

Fusion Tables: Novo Banco de Dados da Google

A Google disponibilizou mais uma ferramenta no Google Labs, um banco de dados online para os usuários poderem compartilhar grandes quantidades de dados rapidamente, segundo o Discovery Google, o Google Fusion Tables oferece uma plataforma para visualização de grandes conjunto de dados, uma nova opção para empresas que tentam interesse no compartilhamento de banco de dados na nuvem computacional do Google.



Fiz um teste importando um arquivo do Excel e funcionou muito bem, veja as imagens abaixo da sequência de passos.

- Criei o arquivo no Excel pois é possível importar arquivos *xls, *csv e tabelas já armazendas no Google Spreadsheets.



- Importando para o Fusion Tables.



- Permite a seleção das colunas a serem importadas, em seguida pede um nome e descrição para a nova tabela e pronto, todo o processo segue o padrão NNF.



Tabela importada, feito isso, podemos visualizar e editar os dados em diferentes formas, desde formatos bidimensionais até gráficas e em formas de mapas, podendo configurar filtros (WHERE), agrupar dados (GROUP BY) ordenar (ORDER BY) e até podendo contar (COUNT) os dados, tudo muito rápido e fácil. É possível ainda criar as Views e compartilhar com outros usuários na rede, isso o torna muito útil em grandes empresas facilitando o compartilhamento das informações, também pode-se compartilhar os mapas e gráficos em outros Blogs e sites.



Nesta versão de testes, o novo BD suporta até 100MB por tabela e 250MB por usuário, esperamos pra ver novas funções e serviços da Google, quero só ver como vai ser daqui uns 10 anos. Até.


Aprenda a Pesquisar no Google



Por último, mas não menos importante... exemplo de como baixar arquivos mp3 ou outro formato direto do navegador pesquisando no Google:
“Always - Bon Jovi” last modified mp3 “index of” -html -htm -php -asp

Post com mais detalhes: http://bolivarbutzke.blogspot.com.br/2008/12/baixar-arquivos-direto-do-navegador.html

Cabruncado daqui.

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES: Continuação aula sobre Servidores

SMP: Symetric MultiProcessor -> Mais que um processador por placa-mãe, possuem 2 ou mais unidades centrais de processamento compartilhando uma mesma memória.

WWW.Top500.org -> máquinas mais rápidas do mundo.

Cluster: Agrupamento, Aglomerado ou Grupo. Vários servidores ligados em conjunto e dividindo as tarefas. A idéia original de montar cluster veio da IBM em 1994, o primeiro cluster se chamava BeoWolf, era baseado em Linux e usava arquitetura PC. Nos clusters cada máquina é identificada por “nó”, possuindo CPU e memória própria e exclusiva.

Replicação: cópia do servidor em outra máquina, redundância, se um para o outro continua...

MPP: Massive Paralel Processing. Processamento paralelo massivo. Sistema de processamento paralelo com arquitetura de memória compartilhada e centrado. São várias unidades de processamento conectado por rede/switch.

Multicomputador: ambiente computacional composto por mais de um computador CPU. Ex.: Cluster, MPP.

Multiprocessador: Ambiente computacional composto por vários processadores (CPU) compartilhando recursos (memória, disco, ...). Ex.: SMP.

SISTEMAS OPERACIONAIS

- Linux: Beowolf, Open Mosix
- Solaris: Berkeley Now
- NT Cluster
- HP-UX Cluster
- Aix Cluster (IBM)
- Digital VMS Cluster

CONSTRUINDO UM CLUSTER

- Necessidades básicas

1. Espaço físico: local com instalação adequada, sistema de refrigeração, instalação elétrica...
2. Arquitetura de Hardware: selecionar um modelo de processador, tipo e quantidade de memória, preferencialmente iguais em todos os nós.
3. Escolha do S.O.: 90% dos SO são baseados em Linux por uma questão de baixo custo. Outros SO podem ser utilizados sem maiores problemas.
4. Rede de Interconexão: define como os nós irão se comunicar no ambiente. Atualmente busca-se o padrão Gigabit. Além disso, cabos, switch, conectores, etc.
5. Escolha do software de Comunicação: é a parte mais complicada, é um middleware para a passagem de mensagens. Ex.: MPI – Mesage Passing Interface.
6. Escolha do Software de Gerenciamento: é o que faz o controle de tarefas executadas.

Características Importantes em um Multicomputador

1. Visão única do sistema: para quem trabalha em ambientes multicomputador é importante “visualizar” uma estrutura única.
2. Balanceamento de Carga: existem métodos e técnicas para distribuir as tarefas no multicomputador. Essa atitude pode ser manual ou automatizada, escalados pelo SO.

Ubuntu 8.10 e 9.04 com Modem 3G Brt

Pessoal, quero deixar aqui minha experiência com Ubuntu 8.10 e 9.04 no acesso a internet com Modem ZTE MF622 da Brasil Telecom, funciona, mas é necessário reiniciar o sistema para ele ser reconhecido como modem, após ele ser reconhecido basta configurar a conexão como na imagem abaixo.



Resumo da configuração que funcionou pra mim:

TELEFONE: *99***1# ou *99#
USUARIO: brt
SENHA: brt
APN: brt.br

Lugares em que encontrei algumas informações úteis:

ubuntuforum-pt.org/index.php?topic=4465.0
http://christiano.blog.br/2008/10/16/zte-mf622-3g-no-ubuntu-intrepid-funciona-de-primeira/
http://christiano.blog.br/2008/07/06/instalando-modem-zte-mf622-claro-3g-no-ubuntu/

Se alguém souber uma forma de o modem ser reconhecido sem precisar reiniciar a máquina por favor poste aqui, talvez alguém no FISL possa me ajudar, mas isso ainda vai demorar um pouco...

Até.

Primeiras experiências com Ubuntu 9.04


Olá pessoal, instalei esta semana o Ubuntu 9.04 e gostei bastante, veio com novos temas para o ambiente gráfico, o boot ficou mais rápido, veio com Open Office 3 e parece que o Compiz já vem por default, só precisando instalar a parte de gerenciamento dele. Veja algumas telas de como ficou meu ambiente após alguns minutos instalando alguns pacotes e futricando um pouco.



Confesso que esperava melhorias na parte de banda larga móvel, ainda está igual a versão 8.10, onde só funcionava meu modem ZTE da Brt se eu conectava ele antes de ligar a máquina ou reiniciando ela.



Até.

Enviando e-mail no DELPHI for ASP.NET utilizando GMail

Olá pessoal, neste pequeno tutorial pretendo mostrar um exemplo simples de envio de e-mail em ASP.NET utilizando os serviços do Gmail e DELPHI 2007 for .NET, dica do Edinei.

Primeiramente vamos criar uma nova aplicação, File -> New -> ASP.NET Web Application.



Feito isso, adicione três TextBox, um Button e uma Label, renomeie a propriedade ID das textboxes para: txbdestinatario, txbassunto e txbmensagem respectivamente, a Label para lblretorno e o Button para btnenviar, aumente o tamanho das textboxes de acordo com sua preferência e mude a propriedade textMode da txbmensagem para “Multiline”. Apague o que tiver na propriedade Text da lblretorno e mude a propriedade Text do btnenviar para “Enviar E-mail”. O formulário deve ficar parecido com o da imagem abaixo.



O txtdestinatario vai receber o endereço de e-mail que se deseja enviar uma mensagem, txbassunto o assunto e txbmensagem a mensagem, a lblretorno irá mostrar se o e-mail foi enviado com sucesso ou se ocorreu algum erro durante o envio e o btnenviar chamará a função de envio de e-mail.

Para usar as funções de envio de e-mail do .NET, é necessário adicionar as seguintes bibliotecas na uses.


Uses
System.Net.Mail, System.Net.Configuration, System.Text, System.Net;

Feito isso, de um duplo clique no btnenviar e implemente a função que vai enviar o e-mail através do serviço de envio de e-mail da Google, o gmail, veja função abaixo.

procedure TDefault.btnEnviar_Click(sender: TObject; e: System.EventArgs);
var
EmailRemetente: string;
NomeRemetente: string;
Mail: MailMessage;
Client: SmtpClient;
begin
Mail := MailMessage.create;
Client := SmtpClient.create;
EmailRemetente := 'seuEmail@gmail.com'; // O e-mail do remetente
NomeRemetente := 'Seu Nome'; // O nome do remetente
try
Mail.&To.Add(txbDestinatario.text); // Destinatário
Mail.From := MailAddress.create(EmailRemetente, NomeRemetente, System.Text.Encoding.UTF8);
Mail.Subject := txbassunto.text; // Assunto do E-mail
mail.SubjectEncoding := System.Text.Encoding.UTF8;
mail.Body := txbmensagem.text; // Mensagem do e-mail
mail.BodyEncoding := System.Text.Encoding.UTF8;
mail.IsBodyHtml := true;
mail.Priority := MailPriority.High; // Prioridade do E-Mail
client.Credentials := NetworkCredential.create(EmailRemetente, 'AquiSuaSenha'); // usuário e senha do Gmail
client.Port := 587; // Esta porta é a utilizada pelo Gmail para envio
client.Host := 'smtp.gmail.com'; // Definindo o provedor que irá disparar o e-mail
client.EnableSsl := true; // Gmail trabalha com Server Secured Layer
try
client.Send(mail);
lblretorno.text := 'E-mail enviado com sucesso!';
except on erro:exception do
lblretorno.text := 'Erro ao tentar enviar e-mail. '+erro.message;
end;
finally
client.free;
mail.free;
end;
end;

Depois de implementada a função é só compilar e executar (CTRL+SCHIFT+F9) para testar o envio de e-mails.

Até.

Referências: http://www.devmedia.com.br/articles/viewcomp.asp?comp=12520

ERBD: Data Warehouses: Fundamentos, Ferramentas e Tendências Atuais

Prof. Renato Fileto
Departamento de Informática e Estatística (INE)
Universidade Federal de Santa Catarina (UFSC)

Tópicos
 Conceitos básicos
 Sistemas de Suporte à Decisão
 Data Warehouses (DWs)
 OLTP vs. OLAP
 Modelo Dimensional e operadores OLAP (drill-down, roll-up, etc.)
 Planejando, projetando e implementando DWs
 Diretrizes gerais, fases do desenvolvimento e tarefas envolvidas
 Estudo de Caso: DWs para a agricultura
 Padrões e ferramentas para a implementação de DWs
 Principais componentes e padrões para DWs
 Ferramentas abertas e proprietárias para DWs
 Alguns temas de pesquisa atuais em DWs
 DWs com extensões espaciais e temporais
 Semântica em DWs
 Conclusões e referências para estudos adicionais

Pessoal, quem tiver interesse nesta área, baixa este arquivo, é muito bom.

Desenvolvimento de uma aplicação utilizando SOA: um estudo de caso

Minhas anotações sobre a apresentação do artigo "Desenvolvimento de uma aplicação utilizando SOA: um estudo de caso" por Roberto Felipe Caliendo e Daniel Luís Notari durante o V ERBD em Ijuí.

---

SOA: organizar o desenvolvimento de software com base nas regras de negócio da empresa com acesso de forma distribuída.

SOAP: Simple Object Acess Protocol

WSDL: Web Service Description Language

Repositório UDDI: Universal Description, Discovery and Integration

MOTIVAÇÃO

os sistemas existentes hoje não estão aptos a trocar informações automaticamente pois são feitos em linguagens diferentes, com formas de armazenamento diferentes etc.

OBJETIVO

implementar alguns serviços nque pudessem ser reutilizados utilizando RSS (realy simple syndication??), web services abertos ao publico que queira se cadastrar e selecionar suas preferencias de leitura, web service de email e outro de operações diversas...

ARQUITETURA Microsoft
- SQL Server
- turbo delphi for dotnet
- IIS

DESENVOLVIMENTO EM CAMADAS: aplicação - webservice - negócio - BD

CONCLUSÕES

- SOA: necessidade de planejar, definir corretamente interface do serviço, diferentes aplicações consomem o mesmo serviço, trocar informações.
- Dificuldades técnicas para montagem de ambiente de desenvolvimento
- Disponibilidade webservice: CEP - Correios, era grátis passou a ser pago.
- Precisa ser testado em larga escala, viabilidade, problemas com muitos acessos...

E-mails: rfcaliendo@gmail.com, daniel.notari@ucs.br

Até.

Banco de Dados para o Núcleo de Pesquisa e Aplicações de Geotecnologias em desastres naturais e eventos extremos

Fica aqui minhas anotações, ainda do V ERBD, sobre a apresentação de artigos técnicos sobre BDs, a primeira apresentação foi sobre banco de dados para o núcleo de pesquisa e aplicações de geotecnologias em desatres naturais e eventos extremos, com Jolvani Morgan - INPE - CRS.

OBJETIVOS
- Mapeamento de áreas de riscos com imagens de satélites
- Criação de mapas e cartas para monitormanento dinamico

Utilizam PostgreSQL suporta dados espaciais de forma nativa utilizando em conjunto a extenção PostGis

Ferramentas SIG (sistemas de informação geográfica??) para visualização de multipolígonos gravados no banco: quantum GIS

Utilizaram uma ferramenta pra gerar PHP pra desenvolver um sistema web para obter informações de pessoas ao redor do mundo sobre desastres e ver imagens, mapas e dados do banco.

I3Geo - ferramenta para geração de mapas dinâmicos

Home page: http://www.inpe.br/crs/geodesastres
E-mail: jmorgan@inf.ufsm.br

Logo mais resumos dos outros artigos técnicos, até.

ERBD 2009: Funções de similaridade e suas aplicações

Minhas anotações sobre o mini-curso "Funções de similaridade e suas aplicações" ministrado pela Carina F. Dorneles (dorneles@upf.br), durante o V ERBD.

FUNÇÕES DE SIMILARIDADE

- Como calcular a similaridade?
Similaridade é uma coisa subjetiva e o computador te muita dificuldade de definir se é ou não.

- Consulta
Executar consultas sobre várias bases de dados

- Integração
Efetuar integração dos dados

- Data Cleaning
Efetuar a impeza dos dados antes de inserir em uma nova base como por exemplo DWs

Exemplo de consulta SQL utiliazando a função de similaridade levenshtein

select artigo from bdbcomp where levenshtein (autor, 'agma machado traina') > 0,75

// vai buscar artigos de autores com 75% de similaridade no nome 'agma machado traina'.


Exemplo da mesma função para integração...

levenshtein ("league of ... Action","League of ... Sci-Fi") >= 0.78

// integrar aquilo cujo linar de similaridade maior que 78

É bastante usado Data WareHouses na parte de Data Cleaning, limpeza de dados, exemplo:

levenstein('ijuí - RS','ijuí - RGS')
// pra elimiar inconsistências, erros de digitação etc, vai trocar os RGS por RS se não me engano :D

Avaliaçao de uma função
- Revocação
- Precisão
- Discernabilidade

SIMILARIDADE X DISTÂNCIA

A função de similaridade tem dois parametros e retorna um valor, um escore entre 0 e 1, quanto maior for mais similar são entre si.

A função de distância tem dois parametros e retorna um valor, mas o escore vai de zero até o infinito, quanto menor o valor do escore, maior a similariedade.

Fórmula para transformar distância em similaridade:

similaridade = 1 - (valor de distância normalizado)

Ferramenta
- Similarity Metrics Testing Suite

* valores atomicos: strings
- baseadas em caracter
- baseadas em Token

* valores agregados
- uso em expressões algébricas
- uso em algoritmos

SVM - Inteligência artificial - tuplas - faz algoritmos para testar com funções de distancias partes de atributos para saber se os dados sao similares, criando vetores de valores que sao enviados para SVM fazer a comparação e dizer se os dados sao duplicados ou não.

ROTEIRO
- consultas por similaridade
- integração de dados
- data cleaning
- mineração de dados


SGBDs que implemetam funções de similaridade

POSTGRESQL
MYSQL
DB2
ORACLE


FUNÇÕES NO POSTGRESQL

- levenshtein
- soundex
- dmetaphone (fonético tbm)

APLICATIVO WEKA - FREE

www.CS.WAIKATO.AC.NZ/WEKA
Ferramenta de mineração, vários algoritmos para técnicas mais conhecidas, extensível, algoritmos podem ser usados para compor outras aplicações, é necessário

DEMOSTRAÇÃO
queens.db.toronto.edu/project/spider/demo

FERRAMENTA QUE LEVA EM CONSIDERAÇÃO SINONIMOS -> WORDNET??

Classificação

- Funções para valores atomicos

*Lenshtein
*Soundex
*Achronimous

- Função Token, quebra as strings em partes antes de comparar...

*Jaccard

Bom, minhas anotações ficaram meio desconexas porque eram muitas informações e não dava tempo de prestar atenção e anotar tudo ao mesmo tempo, mas o assunto é interessante e pode ter várias aplicações como, antes de cadastrar uma pessoa, verificar se o nome já existe através da fonética e ai por diante, o problema é que isso pode diminuir muito a performance da aplicação, mas fica a dica e é uma área que ainda existem poucas pesquisas...

Link para material do V ERBD.

Até.

TERMINA O X FÓRUM DE INFORMÁTICA DA SETREM

Olá pessoal, o X FÓRUM DE INFORMÁTICA SETREM terminou e foi um sucesso, durante as três noites do evento tivemos o auditório cheio e as palestras foram todas excelentes, deixo aqui links para os materiais diponibilizados durante todo o evento.

Primeira noite

Palestra sobre Cloud Computing com Giani Maldaner da SISNEMA - Porto Alegre, já havia postado o link e resumo aqui, mas fica o link da apresentação novamente e este link com mais material sobre o assunto.



Segunda noite

Mesa redonda sobre os 10 anos de desenvolvimento tecnológico da região noroeste do estado do Rio Grande do Sul, participaram nesta noite as empresas Ricohpel, Migrate Company, Arte.Com, WNL, Automassul e Abase Sistemas e Soluções Ltda, durante a noite as empresas apresentaram um pouco da suas histórias, o perfil dos profissionais que eram contratados no início de suas empresas, o perfil dos profissionais que buscam hoje e qual deverá ser o perfil do profissional do futuro, assim que estiver disponível o link para download das apresentações das empresas coloco aqui, por enquanto só link para as fotos.

Palestra sobre "sofrimento profissional, qual é o seu?" com a psicóloga e professora Evandir Bueno Barasuol (profa Vanda). Nesta palestra foi abordado sobre o que leva as pessoas a sofrerem durante o trabalho... link para download da apresentação.

Última noite do fórum

A melhor noite na minha opinião, tivemos uma excelente palestra sobre negócios na internet, da Web 1.0 para Web 2.0 com Luciano Teixeira - CEO - SAN Internet Corporativa, foi explicado as características e necessidades das gerações, porque alguns negócios na internet dão certo e outros não, qual é o futuro, Web 3.0? Acredito que foi a melhor palestra do X FÓRUM, vou tentar pegar o video dessa palestra e disponibilizar aqui no blog em breve, até lá, aqui está o link para download do material, é meio pesado porque tem 4 videos, mas vale a pena.



Após esta palestra, outra, também muito boa. "Do Storage ao Thin Client - Conhecimento nas nuvens ao alcance de suas mãos" com Fernando Maia, Consultor de Sistemas Advanced Systems Group Dell Brasil, nesta palestra foram esxplicados vários conceitos sobre Blade, Storages, DAS, NAS, SAN e novos produtos da Dell que devem vir a se tornar um padrão de mercado com a computação nas nuvens, download da apresentação.

Após estas últimas palestras, o X FÓRUM DA INFORMÁTICA SETREM foi encerrado com ótimo coquetel e a entrega dos certificados, no dia 14 de agosto de 2009 teremos a segunda etapa do FÓRUM com painéis profissionais com as empresas de TI da região.


Adição,Subtração e Diferença de datas no DELPHI for .NET

Olá pessoal, tive que fazer hoje uma função para diminuir 6 meses de uma data e decidi compartilhar um exemplo disso e outras funções similares que podem ser bastantes úteis.

Abaixo exemplos de procedimentos feitos no DELPHI 2007 for ASP.NET (RAD STUDIO), para executá-los você pode adicionar um button ou no próprio page load chamar estes procedimentos.


procedure Tteste.DiminuirData;
var
data: tdate;
begin
data := convert.ToDateTime(TextBox1.text);
data := data - convert.ToInt32(TextBox3.text);
// a função ToDateTime converto o de TDate para DateTime
// a função ToShortDateString vai retirar as horas, minutos e segundos e exibir no formato brasileiro (dd/MM/yyyy)
TextBox2.text := Convert.ToDateTime(data.tostring).ToShortDateString;
end;


Para somar dias em uma data basta trocar o sinal (-) por (+) :D

Agora procedimento para exibir número de dias em um intervalo de datas.


procedure Tteste.Diferenca;
var
data1, data2: tdate;
dias:integer;
begin
data1 := convert.Todatetime(TextBox1.text);
data2 := convert.Todatetime(TextBox2.text);
dias := convert.ToInt32(data1) - convert.ToInt32(data2);
TextBox3.text := dias.tostring;
end;


No Delphi podemos fazer muitas outras coisas interessantes utilizando a biblioteca DateUtils, basta adicionar na Uses, mas isso fica pra outro artigo, valeu!

Download do exemplo

Da teoria a prática da tecnologia XML


Resumo da oficina sobre XML ministrada pela Profa. Jiani Cardoso (jiani@pucrs.br) durante o V ERBD, breve descrição do assunto e material para download.

A eXtensible Markup Language (XML) é uma meta linguagem de marcação criada pela W3C com o objetivo de trocar e/ou transportar dados de uma aplicação para outra, integrando sistemas de informação.

Por meio de uma estrutura para documentos utilizando tags, a XML oferece ao usuário a oportunidade de criar uma linguagem de marcação específica, de acordo com a sua necessidade.

Estou postando somente agora o material dessa oficina pois estou com pouco tempo livre, ainda tenho mais alguns materiais disponibilizados durante o evento (V ERBD) que pretendo organizar melhor antes de publicar aqui, mas, se você tiver interesse/curiosidade sobre XML este é um bom material.

Clique aqui para baixar todo material da oficina.

Teoria Geral da Administração - Behavior

Estudo do comportamento humano. Surgiu em decorrência da contraposição entre a Teoria Clássica e a Teoria das Relações humanas no sentido de sintetizar as duas.

Douglas McGregor efetuou estudos sobre a relação entre o sucesso da empresa e sua capacidade de prever e controlar o relacionamento humano e conseguiu visualizar duas teorias sobre o comportamento humano, chamando uma de teoria x e outra de teoria y.

Teoria x: o ser humano tem aversão natural ao trabalho. A maioria das pessoas precisa ser controlada. O homem é um ser carente e se esforça pra satisfazer uma hierarquia de necessidades. O ser humano não consegue assumir responsabilidades, é vagabundo, só trabalha se for à marra, um ser totalmente manipulado. O líder adota um estilo AUTOCRÁTICO.

Teoria y: o ser humano vê o esforço físico e mental no trabalho de maneira natural, a maioria das pessoas busca naturalmente se auto corrigir para alcançar objetivos. O compromisso com o objetivo depende da recompensa que se vai obter com o trabalho. O ser humano aceita responsabilidades e buscam se envolver no seu local de trabalho. O líder adota um estilo participativo (DEMOCRÁTICO).

A teoria x é a legítima teoria pra trabalhar com crianças enquanto na teoria y estaríamos conversando sobre adultos, onde você motiva os seus colegas/funcionários e eles buscam se organizar para trabalhar e atingir seus objetivos. Acredito que a melhor forma de fazer com que seus funcionários trabalhem melhor é cobrando os resultados e dando maior liberdade, por exemplo, se um programador prefere trabalhar a noite, porque não deixar que ele passe a noite inteira programando em casa ou no trabalho mesmo e permitir que falte uma manhã de trabalho, desde que entregue o sistema dentro do prazo está tudo bem, assim cada um pode se organizar para trabalhar.

Um dos principais fatores que determinam a vontade de trabalhar é a motivação, embora eu acredite que a cultura/valores também tenha bastante “efeito” na “vontade de trabalhar”, como por exemplo, comparando os gaúchos aos sertanejos, a maioria dos gaúchos são descendentes dos colonizadores europeus que vieram pra cá por conta própria com esperança de uma vida melhor, assim, seus descendentes herdaram a cultura de que é necessário trabalhar para conseguir uma vida melhor, já os habitantes do sertão, são na maioria descendentes de escravos trazidos para trabalhar nos grandes latifúndios, e por isso, preferem aproveitar a liberdade e descansar, pois para eles, trabalho é sinônimo de escravidão

HIERARQUIA DE NECESSIDADES – MASLOW

- Necessidades fisiológicas
- Necessidades de segurança
- Necessidades sociais
- Necessidades de auto-estima (ego)
- Necessidades de auto-realização.

FREDERIC HERZBECK

- Auto-realização
- Auto-estima
- Motivacionais
- Sociais
- Segurança
- Higiênicas
- Fisiológicas

Outros fatores que determinam se o ser humano vai trabalhar são os objetivos, necessidades, valores e comportamento, se a pessoa estiver passando fome ou algo do gênero que gere uma necessidade de ganhar dinheiro para trocar por comida ou algo parecido, terá que trabalhar e então estará motivada para o trabalho, pois assim estará suprindo suas necessidades. Mas se a pessoa não tiver bons valores definidos ou nenhum valor, pode ser que ela passe a vender drogas para ganhar dinheiro e suprir suas necessidades e/ou alcançar objetivos pessoais, como status, dinheiro, casa, carro e assim por diante.

Os líderes nas empresas fazem a diferença porque são motivados por natureza e encontram tempo quando outras pessoas se dizem muito ocupadas para assumir compromissos, não ficam olhando para o relógio, estão sempre disponíveis.

LÍDER AUTOCRÁTICO - Teoria x

- Determina sozinho os planos e métodos
- Disciplina imposta
- Emite ordens de maneira enérgica
- Atua como agente de recompensas e punições
- Orientado para tarefas.

LÍDER LAISSEZ-FAIRE

- Permite que os subordinados façam o que desejam.
- Não estabelece programas ou processos
- Não fixa diretrizes e normas.
- Ambiente de country-club

LÍDER DEMOCRÁTICO - Teoria y

- Trabalha ouvindo e dialogando com o pessoal
- Disciplina compreendida e consentida
- Distribui responsabilidades
- Coordena a tomada de decisão
- Orientado para as pessoas


Bom pessoal, aqui foi o resumo da minha aula de TGA de hoje, semana que vem tem mais, como material auxiliar a leitura deste escrito sobre behavior, recomendo a visualização do video abaixo de Waldez Ludwig sobre o mercado de trabalho, é realmente muito bom.



ERBD 2009: Integração de Dados: Resumo Palestra

Olá pessoal, como já havia comentado em outro post estou participando esta semana do V Escola Regional de Banco de Dados, em Ijuí - RS. Por enquanto vou deixar aqui minhas anotações de uma excelente palestra que tivemos esta noite sobre integração de dados com Bernadette Farias Lóscio.

MOTIVAÇÃO

- Distribuição
- Heterogeneidade
- Autonomia
- Transparência

SISTEMAS DE INTEGRAÇÃO DE DADOS

Ficam entre a aplicação e as fontes de dados

FONTES DE DADOS (governamentais, núcleos de pesquisas, ...) <-> CAMADA DE INTEGRAÇÃO DE DADOS (mediação, data warehouses, p2p, web services, ...) <-> APLICAÇÃO...APLICAÇÃO

- O número de fontes pode aumentar.
- As fontes de dados podem ser estruturados ou não
- Heterogeneidade em diferentes níveis

A área de integração de dados vem evoluindo a muito tempo, passando por vários tipos de sistemas.
1. Aplicação de banco de dados
2. Sistemas de banco de dados multiplos
3. sistemas de mediação
4. sistemas baseados em agentes
5. sistemas baseados em ontologias
6. integração de dados usando web services
7. dataspaces
8. ...

INTEGRAÇÃO DE DADOS É UM PROCESSO

1. Entender: Entender os dados, as propriedades, valores e significados. Metadados são fundamentais.
2. Padronizar: Defniir terminologias, como lidar com objetos e valores inconsistentes, definir esquema integrado.
3. Especificar: Configurar o mecanismo de integração, definir as fontes a serem integradas, mapeamentos entre as fontes locais e o sistema integrado.
4. Executar: Integrar!!!! (materialização x mediação) Os dados são extraídos das fontes, tratados e armazenados em um repositório.

Um esquema integrado é definido pelos requisitos do usuário, por isso fica em constantes atualizações, fontes podem ser adicionadas ou removidas.

O objetivo da área de integração de dados não é criar uma aplicação que automatize todo o processo, mas sim sistemas que facilitem esse trabalho.

ARQUITETURAS DE MEDIADORES

O mediador explora o conhecimento representado em um conjunto ou subconjunto de dados e gera informações para aplicações residentes em uma camada superior. Também podem ter tradutores entre os mediadores e base de dados, que hoje pode ser o XML extraído diretamente das bases de dados relacionais que são heterogeneas, isso facilita para que o sistema de integração seja mais simples e use apenas o XML.

Teóricamente, o mediador recebe uma consulta, repassa na forma correta para os tradutores, cada tradutor vai precisar entender a linguagem da base de dados que estará obtendo as informações para que na hora em que venha uma consulta ele possa consultar na base e retornar os dados em XML para o mediador fazer a integração com os dados recebidos das outras fontes de dados e passar para a aplicação.

Um sistema de integração de dados baseado em mediadores é uma trpla G, S, M onde:
- G é o esquema global: requisitos dos usuários...
- S é o esquema fonte: as fontes de dados...
- M é o mapeamento entre G e S: um mapeamento é necessário para que possa ser transformada uma consulta feita ao mediador em subconsultas para as fontes de dados, são fundamentais para o processo de integração de dados.

Geração dos mapeamentos semanticos
1. identificação de correspondencias (matchings)
2. geração das expressões de mapeamento (mappings)

Após a identificar os dados da consulta nas fontes locais, ou seja, traduzir a consulta original feito na fonte global para que possa ser entedido nas subconsultas e feito essas consultas, surge outro problema, como saber se os dados vindos das fontes locais são equivalentes? Pedro da fonta A é o mesmo Pedro da fonte B?

GAV: Os mapeamentos são feitos das fontes globais para as fonteis locais, facilitando nas consultas.

LAV: Agora você tem os elementos das fontes locais que são associados as visões da fonte global, neste caso é mais fácil a remoção e inserção de fontes mas complica para as consultas.

Exemplos de Soluções/Aplicações

- Projeto Integra (Grupo de Pesquisa em Banco de Dados - UFPE)
Projeto feito para estudos...

- Projeto Speed (Grupo de Pesquisa em Banco de Dados - UFPE)
Super rede p2p com vários mediadores, ontologias para distribuição, evolução do Integra mas virou praticamente outro sistema.

- Projeto FlagelLink (Grupo de Pesquisa em Banco de Dados - UFC & NUGEN - UECE)

INTEGRAÇÃO SEMÂNTICA

Agrupar e combinar dados de diferentes fontes considerando uma semântica explícita

ONTOLOGIAS

As ontologias vem como uma informaçao a mais pra deixar explícita a informação de determinada fonte de dados.

Com as ontologias você pode modelar um domínio através de classes e propriedades e você pode fazer inferência, definido restrições (regras) para criar a estrutura das bases de conhecimentos, onde você pode fazer novas inferências e descobrir informações a partir das informações já conhecidas, isso que diferencia as ontologias das bases de dados relacionais.

Exemplo: CEARA -> faz parte -> BRASIL; BOLÍVAR -> é namorado -> DILÉIA

Abordagens da integração semântica

- uma única ontologia
ontologia global -> fontes de dados

- múltiplas ontologias
(ontologia local -> fonte de dados) <-> (ontologia local -> fonte de dados) <-> (ontologia local -> fonte de dados)

- abordagem híbrida
vocabulário compartilhado -> ontologias locais -> bases de dados

CONTRIBUIÇÕES

- RelOnto: um sistema para geração de ontologias a partir de banco de dados relacionais [Lopes, 2009]
- MeMo: uma estratégia para merging múltiplo de ontologias considerando a similaridade [Araújo, 2009]

DATASPACES

Tentativa de solucionar os problemas de integração de dados de uma forma diferente, com tempos e custo menor.

Utilizar um mecanismo de busca para realizar consultas podem retornar muitas coisas que não correspondem ao que sua consulta realmente queria... google... solução: utilizar um sistema de integração de dados, problema é muito trabalho... um meio termo, ter um sistema não tão preciso que vá aprendendo com o tempo, isso é um dataspace, com resultados desde o início, no início a qualidade é mais baixa mas tende a aumentar com o passar do tempo e p feedback dos usuários... google quando guarda os links mais clicados para determinada consulta...

Diferenças dos dataspaces para outros modelos de sistemas

- mapeamentos semânticos e esquema de mediação serão criados automaticamente (porém podem ser aproximadas)
- diferentes mecanismos de consulta (respostas aproximadas ou parciais)

CONCLUSÕES

- Integração de dados está em todo lugar, é um problema que está em diversas aplicações.
- É um problema antigo.
- Soluções existentes são adaptadas para novos contextos, com a evolução das tecnologas as soluções precisam ser adequadas.
- Difícil prover soluções "automáticas"
- Prover soluções "aproximadas"(???)
- Novos desafios... sempre

Divulgação: evento na área de banco de dados em Fortaleza, de 05 a 09 de Outubro. mais informações no site www.sbbd-sbes2009.ufc.br

Profa. Dra. Bernadette Farias Lóscio
Site pessoal: http://www.lia.ufc.br/~bernafarias
E-mail: bernafariaslia.ufc.br

Participação no V ERBD

E amanhã de manhã, estarei saindo rumo ao V ERBD, em Ijuí - RS.

A Escola Regional de Banco de Dados (ERBD) é um evento anual sem fins lucrativos. Em sua 5ª. Edição, o evento será organizado pela Universidade Regional do Noroeste do Estado do Rio Grande do Sul (UNIJUI), com a promoção da SBC (Sociedade Brasileira de Computação). A ERBD 2009 será realizada na cidade de Ijuí, no campus da UNIJUI, e pretende envolver as diversas faculdades, universidades e empresas da Região Sul do país. A ERBD tem como público alvo estudantes de graduação e pós-graduação, professores, profissionais em bancos de dados e áreas afins. O evento está estruturado em minicursos, oficinas, sessões técnicas e palestras acadêmicas e empresariais.

Em breve posts sobre o evento e resumos das oficinas e mini-cursos que participarei. Até.

Link para o site do evento.

Cursos gratuitos on-line

Com uma rápida pesquisa no google podemos encontrar milhares de sites que oferecem material de estudo para praticamente todas as áreas, então, se você tem uma internet razoalvelmente boa, não tem desculpa para não estudar. Aqui vai alguns links para sites de EAD, sites com outras listas de sites com cursos gratuitos, blogs de professores e fóruns com bons conteúdos.

Universia Cursos - traz cursos de 842 universidades do mundo inteiro, em diversas línguas, separados por temas, como arquitetura e engenharia, nem todos gratuitos.

Site de Dicas
- Links para sites de cursos gratuitos.

Cursos de PHP, Joomla, Drupal, JQuery... bem interessante.

Ideal Grátis Cursos - Cursos Gratuitos Online, Apostilas, ebooks... vários cursos, alguns bem básicos que parecem mais com tutoriais...

Educação SEBRAE - Ambiente voltado para a educação empreendedora com excelente material de estudo e também acompanhamento por profissionais da área, vale muito fazer, mas só faça se realmente tiver tempo pra se dedicar e não tirar a vaga de outros.

Programa Educ@r - Curso on-line de ótica para estudantes de ensino médio.

Curso de Inglês Grátis

Live Mocha - Aprenda conversando com pessoas ao redor do mundo que tem interesse no seu idioma, basicamente um site troca de conhecimentos, você ensina seu idioma e aprende o idioma de outros interessados, muito bom.

FORD - O Homem e a Máquina

Assisti este filme nas aulas de TGA (Teoria Geral da Administração) e achei muito interessante, ele mostra a evolução dos carros, demonstrando paralelamente a evolução dos métodos administrativos das empresas no início do século passado.

Um dos pontos fortes do filme é a criação das linhas de montagens móveis por Henry Ford, diminuindo o tempo para montagem dos carros e possibilitando a diminuição dos custos no processo de fabricação. Junto a isso, Ford percebeu que com a linha de montagem seus funcionários estavam chegando a níveis de stress muito altos, então teve mais uma grande idéia, diminuiu a carga horária dos seus funcionários e dobrou os seus salários, com os preços dos carros diminuindo graças as melhorias no processo de fabricação e seus funcionários com mais dinheiro e tempo para gastar, Ford criou uma nova classe de consumidores e aumentou ainda mais os seus lucros.

O filme também apresenta paralelamente fatos marcantes da história como o grande preconceito nos EUA, a crise de 29 e a quebra da bolsa de Nova York com a falência de vários bancos e muitos problemas de desemprego nas cidades, também aparece alguns movimentos como o comunismo, Hitler, o ataque a Pearl Harbor e as guerras mundiais.

Também é possível ver no filme as grandes mudanças culturais surgidas com a criação dos carros, estradas, desenvolvimento das cidades e indústrias, a total autoritariedade e racionalidade dos empresários durante todo o período da escola clássica de administração, a alienação dos funcionários com a super especialização das atividades nas linhas de montagens, a centralização do poder e falta de aspectos emocionais.

Em resumo, é um filme muito bom para quem quiser conhecer mais sobre história, administração e empresa dos Ford. Até.

Sistemas de Informação Campeão do JOIA 2009

Parabéns para todos os acadêmicos do curso de Sistemas de Informação da SETREM, este ano nós superamos todas as expectativas e mostramos a nossa força, obrigado a todos que participaram e ajudaram na organização. Agora é só comemorar!!!!





Blog Oficial: http://joiaesistemas.blogspot.com/

Javascript para abrir popup centralizada

Para abrir uma nova janela usando javascript podemos utilizar o comando window.open(), passando o endereço da página que queremos exibir, o nome da nova janela e as possíveis formas da janela como tamanho e posição dela na tela do usuário.

Veja o exemplo abaixo.



function AbrePopUp() {
// VARIAVEIS COM A RESULUÇÃO DA TELA DO USUÁRIO
var w=screen.width, h=screen.height;
// VARIÁVEIS COM TAMANHO DA POPUP QUE VOCÊ DESEJA ABRIR
var popW = 500, popH = 400;
// FÓRMULA PRA POSICIONAR A POPUP NO CENTRO
var leftPos = (w-popW)/2, topPos = (h-popH)/2;
// ABRIR A POPUP
window.open('pagina.html', 'NOME_JANELA','width=' + popW + ',height=' + popH + ',top=' + topPos + ',left=' + leftPos);
};


Se as funções screen.width e screen.height não funcionarem você pode tentar definir estes valores manualmente ficando um serviço meia boca ou ainda tentar pegar de outras formas estes valores como por exemplo com o código javascript abaixo.



if (document.all) {
w = document.body.clientWidth;
h = document.body.clientHeight;
}
else if (document.layers) {
w = window.innerWidth;
h = window.innerHeight;
}


Até.

Os 3 últimos desejos de ALEXANDRE O GRANDE

1, Que seu caixão fosse transportado pelas mãos dos médicos da época;

2, Que fosse espalhado no caminho até seu túmulo os seus tesouros conquistado como prata , ouro, e pedras preciosas ;

3, Que suas duas mãos fossem deixadas balançando no ar, fora do caixão, à vista de todos.

Um dos seus generais, admirado com esses desejos insólitos, perguntou a ALEXANDRE quais as razões desses pedidos e ele explicou:

1, Quero que os mais iminentes médicos carreguem meu caixão para mostrar que eles NÃO têm poder de cura perante a morte;

2, Quero que o chão seja coberto pelos meus tesouros para que as pessoas possam ver que os bens materiais aqui conquistados, aqui permanecem;

3, Quero que minhas mãos balancem ao vento para que as pessoas possam ver que de mãos vazias viemos e de mãos vazias partimos.


Pense nisso....

Recebi da Loira.

33 Jogos de alta qualidade para Ubuntu

Não é de hoje e não foram poucas as vezes nas quais ouvi que o problema do Linux é não ter “joguinhos” que rodem neste ambiente. Eu mesmo respondi outras tantas vezes que o Linux foi criado como uma ferramenta para Administração de Redes e Desenvolvimento e que se o objetivo de vida de alguém é jogar, que comprasse um PlayStation ou um Wii, e não um computador tipo PC.
Mas a verdade é que a quantidade de pessoas que curtem os games de computador é imensurável e que se o Linux pretende ser uma opção para o desktop doméstico deve resolver este problema. As empresas de games não têm deixado o Linux de lado, como poderíamos pensar e o resultado é a lista de 33 jogos de alta qualidade, compilada por Blair Mathis para o LaptopLogic.com. Estes “Linux Games” para PC são uma opção aos jogos de console. E como é típico no Linux, é possível fazer o download grátis destes games, muitas vezes pelo método padrão de instalação de programas de sua distribuiçã0.

Vamos à lista

Jogos de Tiros em Primeira Pessoa

* Savage: The Battle for Newerth
* Legends
* Enemy Territory
* America’s Army
* Sauerbraten
* Open Arena
* AssaultCube


Continue lendo...