quarta-feira, 15 de outubro de 2008

Como Instalar o Internet Explorer 6 no Linux

Apesar do Software Livre estar ganhando espaço no mercado, infelizmente ainda esbarramos em certos inconvenientes que tentam nos empurrar software proprietário.

Atualmente existem o equivoco de desenvolvimento de páginas e testa-la apenas em plataforma proprietário, quando deveria ser dado o poder de escolha ao usuário, e este decidir pela melhor ferramenta.

Levando-se em consideração a segurança, e de conhecimento que plataformas proprietárias apresentam um maior número e gravidade de falhas, além de em alguns casos levarem muito tempo para disponibilizarem a correção, o que com o software livre não acontece, pois é uma comunidade que desenvolve, portanto mais “técnicos” estão
à mão para corrigir eventuais erros.

“Mas eu uso Linux... e agora???” Felizmente hoje temos uma solução que é o ies4linux, que instala o IE6 em sua máquina Linux. Assim, caso necessite acessar aquele(s) site(s) que não abria(m) em seu Firefox, agora poderá fazê-lo.

Detalhe importante:

este tutorial foi elaborado para distribuições Linux
derivadas do Debian, no nosso caso, o Ubuntu.
Mãos na massa:

-Abra um terminal :
(Alt+F2 → digite: gnome-terminal)

No terminal:

Primeiramente torne-se
root (administrador do sistema):

$ → Linha de
comandos executados como usuário comum

# → Linha de
comandos executados como root

Obs.: Esses caracteres
(“$” e “#”) não deverão ser
digitados, considerar somente o que vier após os mesmos em
cada linha

$ sudo su

(digite sua senha)

# cd /tmp

# wget -q http://wine.budgetdedicated.com/apt/387EE263.gpg -O- sudo
apt-key add -

# wget http://wine.budgetdedicated.com/apt/sources.list.d/hardy.list -O /etc/apt/sources.list.d/winehq.list

# apt-get update

# apt-get install cabextract wine

# exit

$ cd /tmp

$ wget http://www.tatanka.com.br/ies4linux/downloads/ies4linux-latest.tar.gz

$ tar zxvf ies4linux-latest.tar.gz

$ cd ies4linux-*

$ ./ies4linuxSurgirão as seguintes telas:


Início da instalação


Dê Ok




Fim da Instalação

Aguarde até baixar tudo o que é requerido.


Criando um atalho


Na área de trabalho: botão direito → “Criar lançador...” :




Criação de atalho

Agora é só testar clicando no ícone recém criado.

Plugins


É recomendável acessar sites que usam plugins Flash e Java e conforme as
solicitações do próprio navegador instalar o que
for pedido.





IE6
rodando sob Linux


Eventuais Problemas


Em testes efetuados foi notado em sites que usam flash há um pequeno inconveniente, em que, as animações ficam piscando. Porém, nada de realmente relevante quando pensamos no maior benefício que é estar sob um sistema seguro (Linux).


Conclusão


A Internet é para TODOS, ou seja, usuários de software livre ou proprietário. Não é justo que sejamos obrigados a adotar um lado ou outro, pois temos liberdade de escolha e devemos exercer esse sagrado direito. Para quem usa Linux não
seria diferente.

quinta-feira, 25 de setembro de 2008

Participem do CONISLI

Em sua sexta edição, o CONISLI (Congresso Internacional de Software Livre)
primará pela qualidade e pela troca de informações, por intermédio de
palestras, tutoriais e mini-cursos instrutivos.

Realizado em São Paulo, um estado com aproximadamente 40 milhões de habitantes,
sendo o mais populoso e com representatividade 20% de pessoas que habitam
o país, porém com uma pequena porção destas pessoas inseridas no contexto
tecnológico, o evento tentará trazer as pessoas da tecnologia, utilizando
o "Software Livre". O grande objetivo será demonstrar como obter melhores
resultados com o Software Livre. O CONISLI 2008 será, antes de tudo, um
evento de conteúdo técnico e instrutivo, com o seu foco em desenvolvimento de
software, infra-estrutura e segurança, a fim de cada vez mais colaborar para o
fortalecimento da Comunidade de Usuários e Desenvolvedores de Software Livre.
Ocorrendo desde 2003, o mesmo busca trazer as últimas novidades sobre o
mundo do Software Livre e dar também um ambiente onde a comunidade possa
trocar idéias e receber novos membros para compartilharem estas idéias.

Custo da inscrição:

Período 17-07-2008 à 31-07-2008 - R$ 30.00
Período 01-08-2008 à 15-08-2008 - R$ 45.00
Período 16-08-2008 à 10-09-2008 - R$ 60.00
Período 11-09-2008 à 15-09-2008 - R$ 75.00

AVISO AOS ESTUDANTES A organização do evento concede 50% de desconto na inscrição para os estudantes.
Além disso, relembramos:

- Carteiras de Estudante não substituem documento de identidade.
- Carteiras de Estudante sem prazo de validade não comprovam a condição efetiva de estudante.
- Cursos de idiomas também não se qualificam para obtenção de meia-entrada.
- Apresentar o boleto pago juntamente com sua carteira de estudante na secretaria do evento para retirada da credencial.

Referência: Diptec

Data: 18/10/2008 à 19/10/2008
Local: FIAP - Faculdade de Informática e Administração Paulista
Endereço: Av. Lins de Vasconcelos, 1264.
Bairro: Aclimação
Cidade: São Paulo SP
Faça sua Inscrição no Conisli

quarta-feira, 24 de setembro de 2008

Maker

Atualizando o conteúdo do Blog, após o belo tutorial do nosso amigo Eduardo, venho aqui pra apresentar a vocês uma ferramenta de desenvolvimento que a algum tempo estamos utilizando. A ferramenta se chama Maker, mas o que é o Maker ?

O Maker é uma IDE de desenvolvimento de aplicações que surgiu da idéia de deixar o processo de "produção" mais fácil e rápido.

A metodologia de trabalho do Maker agrega recursos como o uso de fluxogramas(seu grande diferencial) para representar as regras de negócios, o que facilita muito para o real entendimento do funcionamento do sistema, além de disponibilizar assistentes para a construção rápida e visual de formulários e relatórios(WYSWYG). Outra grande vantagem do Maker é a quantidade de componentes já prontos para o uso (mascaras, fórmulas, validações, etc) , reduzindo tempo de desenvolvimento da aplicação.

O Maker trabalha com os principais SGBD's existentes (PostgreSQL,MySQL,Oracle, Interbase/Firebird,MS-Sql Server) e as regras de negócio criadas podem ser compiladas para as 3 camadas (Cliente, Servidor e Banco de Dados) e em diversas linguagens como JavaScript, Java, SQL etc.
Na minha visão, uma grande vantagem do Maker é que os sistemas desenvolvidos nele são web, ou seja, roda em qualquer sistema operacional.
A aplicação desenvolvida pode ser acessada de qualquer outra máquina, desde que a mesma possua um Browser, lembrando que o browser que esta homologado ainda é só o IE, mas testes já foram feitos com outros navegadores e as aplicações abriram sem nenhuma dificuldades ( mas como ainda não estão homologadas, alguns erros podem acontecer ).

Enfim, uma poderosa ferramenta de desenvolvimento que esta crescendo e aparecendo no mercado, vale a pena dar uma pesquisada mais a fundo, já que acredito que grande parte das aplicações desenvolvidas futuramente usarão deste formato.

Gostou ?? Para mais informações acesse o site www.softwell.com.br/maker.

Visite também o nosso site : www.diptec.com.br breve com maiores novidades.

Acesse também a nossa comunidade no Orkut www.orkut.com.br/Community.aspx?cmm=62539085.

Texto por:

Emerson F. Santos.

terça-feira, 19 de agosto de 2008

Executando uma procedure dinâmica usando o PREPARE e o EXECUTE no MYSQL e PHP.


Olá galera,

 Em algum momento, tenho certeza que vocês precisaram ou precisarão fazer uma procedure dinâmica, seja para fazer um múltiplo insert, seja para uma lógica só sua, aquela que dentro de um mês você vai olhar e se perguntar: “Que zorra, essa zorra faz?” ou ainda “No que eu estava pensando quando eu fiz isso?”. Só abrindo um parenteses, quando eu procurei o material para escrever este artigo eu me fiz a primeira pergunta, fecha parenteses.

 Mas em fim a dica está documentada, dada e vamos a ela.

 Um problema que me deparei quando eu precisei desse mecanismo,  é que usando o comando mysql_query do php, não conseguia executar a procedure com o prepare e excute, onde o erro retornado é “PROCEDURE artigo.pdteste can't return a result set in the given context”. No entanto se fosse executado o mesmo código na linha de comando do mysql, funcionava normalmente. Perdi algumas valiosas horas para resolver, mas resolvi.

 O ambiente onde foi rodado esse exemplo:

  • sistema operacional : linux/windows 

  • php : PHP Versão 5.2.6 

  • apache :  Apache 2.2.8

  • mysql : 5.0.67-community-nt 

 Vamos resumir o que faremos, criaremos uma tela com um campo onde colocaremos o código que completa a procedure de inserção no banco, não necessariamente nessa mesma ordem.

 Iniciaremos pelo PHP, o qual não tem nenhum segredo e está devidamente comentado. Só gostaria de chamar a atenção para uma questão no código, estamos utilizando a mysqli_connect ao invés do mysql_connect.

Segue abaixo o código PHP (teste.php): 


<?php 

 

         // endereço da máquina que está o mysql

         $hostac = 'localhost';

        // usuário do mysql

        $userac = 'root';

        // senha do mysql

        $senhaac = '';

        // o banco a ser utilizado do mysql

        $bancoac = 'artigo';

        // pega o valor do campo

        $strsql = $_GET['campo'];

       

        // se o valor do campo tiver tamanho maior que 5 caracter tenta executar

        if (strlen($strsql)>5) {

                // cria a conexão com o banco

                $conn = @mysqli_connect($hostac, $userac, $senhaac,$bancoac);

                 

                // verifica se deu erro na conexão com o banco

        if (mysqli_connect_errno()){

                // mostra a mensagem de erro

                echo "sem conexão ".mysqli_connect_errno() ;

                // retorna, ou seja pára a execução do script, podia ser exit.

                return;

        }

       

        // monta o comando sql para executar a procedure usando o campo de texto da tela.

        $strsql = "CALL pdteste(\"".$strsql."\");";

       

        // mostra o comando a ser executado.

        echo $strsql."<br>";

               

                // Executa o comando sql, que retorna verdadeiro ou falso. Já verifica, se for verdadeiro mostra a mensagem de sucesso

                if(mysqli_multi_query($conn,$strsql)){

                       

                        // mensagem de sucesso

                        echo "Procedure executada com Sucesso";

                // se for falso, mostra a mensagem de erro.       

                }else{

                       

                        // mensagem de erro

                        echo "Erro na execução da procedure";

                        // pára de executar o script.

                        exit;

                }

               

                // fecha a conexão com o banco.

                mysqli_close($conn);

        }

       

        /*Abaixo segue o formulário html que é constituido de uma linha para mostrar as mensagens.

        * Outra linha com o campo onde será colocado a parte que completa o comando sql.

        * Outra com o botão para a execução da procedure.

        */

       

?> 

<html> 

        <head>

                <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

                <title>Incluir </title>

        </head>

 

        <body>

                <form actino="teste.php">

                           <table>

                                <tr>

                                         <td>

                                                  <?=$strsql;?>

                                          </td>

                                </tr>

                                <tr>

                                         <td>

                                                  <input type="text" name="campo" id="campo" value="" size="40"/>

                                          </td>

                                </tr>                 

                                <tr>

                                         <td>

                                                  <input type="submit" name="teste" id="teste" value="executar"/>

                                          </td>

                                </tr>    

                         </table>

                </form>

        </body>

</html> 

 A nossa tela está pronta, acrescentando uma observação na linha $strsql = "CALL pdteste(\"".$strsql."\");" nota-se a \ (barra invertida) que indica que o caractere que segue logo após a mesma deve ser interpreta como sendo parte da string do php, e não finalizando a string, dessa forma ao montar a query teremos as aspas(“) que indica uma string do sql e dentro das aspas teremos a apóstrofe (') que indica um campo varchar.

 Vamos para o mysql, vamos criar o banco, a tabela e a procedure, assim:


CREATE DATABASE `artigo`; 

 

USE artigo; 

 

DELIMITER $$ 

 

DROP TABLE IF EXISTS tabela $$ 

 

CREATE TABLE `artigo`.`tabela` ( 

  `idtabela` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,

  `nome` VARCHAR(45) NOT NULL,

  `numero` INTEGER UNSIGNED NOT NULL,

  PRIMARY KEY (`idtabela`)

ENGINE = InnoDB 

CHARACTER SET utf8 COLLATE utf8_unicode_ci;$$ 

 

DROP PROCEDURE IF EXISTS pdteste $$ 

 

CREATE PROCEDURE `pdteste`( 

        IN valoresparam TEXT

BEGIN 

 

   SET @novo = CONCAT("insert into tabela(nome, numero) values ", valoresparam);

 

   PREPARE stm FROM @novo;

 

   EXECUTE stm;

   

   DEALLOCATE PREPARE stm;

 

END $$ 

DELIMITER ; 

 Calma! Não deprime! vou explicar por partes.


 Cria a tabela

 CREATE DATABASE `artigo`;


 Define o banco que iremos trabalhar, que nada mais justo que seja o que acabamos de criar.

 USE artigo;


 O delimitador de comando padrão do mysql é o “;”, mas se utilizarmos esse, teremos vários erros pois ele vai tentar executar os comandos que estão no corpo da procedure. Portanto iremos trocar o delimitador para $$.

DELIMITER $$  


 Agora iremos criar a tabela dentro do banco que já criamos e selecionamos. Para uma questão de evitar problemas, se a tabela existir a gente apaga, só por garantia.

 DROP TABLE IF EXISTS tabela $$


 Ai sim criamo-a novamente.

 CREATE TABLE `artigo`.`tabela` (


 A tabela possui um campo id do tipo inteiro, auto-incremental e que é a chave da tabela, um campo nome e um campo numero

  `idtabela` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,

  `nome` VARCHAR(45) NOT NULL,

  `numero` INTEGER UNSIGNED NOT NULL,

  PRIMARY KEY (`idtabela`)


 Dizemos de que tipo é essa tabela

ENGINE = InnoDB 


 E dizemos qual o encode dessa tabela, basicamente é para caracteres acentuados.

CHARACTER SET utf8 COLLATE utf8_unicode_ci;$$ 


Até aqui temos o banco e a tabela que precisamos, e tá tudo lindo. A parti deste ponto será criada a procedure. Tal como para tabela, por questão de segurança se a procedure existir a gente apaga. 

DROP PROCEDURE IF EXISTS pdteste $$ 


 Cria-se a procedure novamente.

CREATE PROCEDURE `pdteste`( 


  Essa procedure só tem um parametro de entrada, que é justamente o complemento do código de inserção, o qual será digitado no campo do formulário.

       IN valoresparam TEXT


 Iniciaremos o corpo da procedure.

BEGIN 


 Criaremos uma variável na qual concatenaremos a parte do código de inserção com o parâmetro passado pela tela.

   SET @novo = CONCAT("insert into tabela(nome, numero) values ", valoresparam);


 Criaremos um statement usando o prepare com o código a ser executado.

   PREPARE stm FROM @novo;


 Executamos o statement.

   EXECUTE stm;


 Desalocamos o statement.

DEALLOCATE PREPARE stm; 


finalizamos a procedure. 

END $$ 


E por último restabelecemos o delimitador padrão 

DELIMITER ; 

E ai temos todo o circo armado para executar a procedure. É só publicar a página teste.php no servidor apache devidamente configurado e acessar.


Ao acessar a página, por exemplo http://localhost:81/teste.php, o conteúdo do campo deve ser algo como:

  • ('teste_web', 12)  

  •  ou ('teste1_web', 13) ,('teste2_web', 14) ,('teste3_web', 15) ,('teste4_web', 15)


“Se tudo deu certo e nada deu errado” no primeiro caso insere um registro, e no segundo insere vários registro de uma só vez no banco. Lembrando que esse tipo de inserte, da forma como foi mostrada só funciona no mysql.

Bem!! Para o momento é só, até um novo artigo




Referências:

http://www.kinghost.com.br/php/mysqli.multi-query.php
http://dev.mysql.com/doc/refman/5.1/en/sql-syntax-prepared-statements.html
http://rpbouman.blogspot.com/2005/11/mysql-5-prepared-statement-syntax-and.html