Blog

  • Sensação Estética

    Olá Pessoal! Falando novamente sobre estética visual, desta vez vamos tratar de alguns elementos básicos para sua composição.

    Assim como dito no último artigo, o uso de diversas técnicas pode ser aplicado ao processo de criação. Não podemos desviar das sensações do espectador perante a obra, independente de qual seja.

    Para definir totalmente a estética é preciso falar da relação entre um sujeito e um objeto, juntamente com o estudo do belo. O sujeito possui suas próprias crenças e estas irão influência-lo na interpretação do objeto.

    Cada mente pensante é única. Isso permitiu novos questionamentos, pensamentos e julgamentos por parte dos outros pensadores, além de influenciar a sociedade. É aí onde encontramos a preocupação em se agradar a grande massa.

    Linhas Horizontais

    Quando trabalhamos com linhas horizontais, logo nos deparamos com a linha do horizonte. Exemplo: Em uma praia, a visão dela pode nos trazer a sensação de repouso e quietude, o som do mar soa como musica aos ouvidos.

    Esse tipo de sensação depende diretamente do conhecimento do espectador, sua bagagem emocional e cultural ajuda neste processo, se ele gosta de poesias ou é um grande apreciador da boa música.

    Esse tipo de sensação pode ser existente quando as predominâncias de linhas horizontais estão presentes. A sensação de espaço e amplitude também pode ser considerada como sinal de liberdade.

    Linhas Verticais

    Elegância e formalidade são presentes quando estão sendo aplicadas em um trabalho. A sensação de altura é evidente, principalmente pela associação com prédios e construções.

    A direção do foguete, o hasteamento da bandeira, o fator queda, etc. Todos estão associados às linhas verticais.

    A sensação que as linhas verticais podem trazer com relação à altura é muito presente na moda, assim como as linhas horizontais podem representar facilmente a largura de algo.

    Essas linhas representam muito as construções, desperta a memória emocional do espectador aos ambientes em que está acostumado. Igrejas exibem com elegância essas linhas, já que são marco forte em sua decoração.

    Junção das linhas verticais e horizontais

    Quando apresentamos essas linhas cruzadas, levamos ao apreciador uma atmosfera rude ou inflexível. Elas lembram as grades de prisões e malhas de rede.

    A real sensação do que cruza/interrompe, ou o cruzamento de linhas que revelam a cruz, podem ser abordagens significativas para a estética de um trabalho onde o que se vê faz diferença mediante ao que se lê na mente.

    Estas associações estão ligadas a diversas culturas. É de costume fazer associações a diferenciados modos: cruzar cheque, animais que cruzam a rua, cruzar o lago.

    Com uso disso, podemos ter como referência o ato de cruzar e as linhas cruzadas como ferramenta causadora de estímulos para o espectador.

    Percepção Estética

    A estética está diretamente ligada, no processo de criação, aos processos internos da mente humana. Pelo lado do artista, podemos analisar sua obra mediante sua visão, sendo esta uma visão do íntimo de seu autor; a conclusão para definição de sua obra é praticamente infinita. Já pelo lado do designer, temos maior facilidade de entendimento do seu trabalho, pois este se mantém direcionado a atender um bem comum.

    A percepção visual, que é o produto final da visão, se mostra como um conhecimento teórico, descritivo, relacionado à forma e suas expressões sensoriais mediante a estética apresentada pelo criador.

    Psicologia e Estética

    Podemos citar a psicologia de Gestalt perante a psicologia experimental, que faz análise de um determinado objeto por sua projeção geométrica, cor, textura, tamanho e formato. Ela se mostra como a junção de partes essenciais, a ponto de expor uma única unidade independente.

    Ainda podemos observar na psicologia o “comportamento ou conduta”, relacionado ao Behaviorismo que é nada mais do que a idéia de disposição comportamental ou tendências comportamentais ante a apresentação de objetos.

    Isso se mostra nas sensações do espectador mediante ao o que ele enxerga e o que é estimulado, juntamente com processos de tensão ou excitação. Entende-se, então, que é possível o controle das sensações do espectador com uma obra.

    A psicologia procura explicar, prever e modificar os comportamentos.

    A visão da Psicanálise de Sigmund Freud trouxe grandes avanços, também, para o design devido ao “consciente” e “inconsciente”. Estes são explorados na criação estética de diversos segmentos da moda, indústria musical, perfumaria, embalagens de cosméticos, equipamentos eletroeletrônicos, rótulos, etc.

    Muitos elementos estudados na psicanálise são utilizados também na arte, onde se faz referência constante aos sonhos, paixões, instintos e impulsos. O irreal sendo usado frequentemente, a mente não possuí limites.

    Princípios de avaliação

    Uma avaliação estética pode levar certo tempo. O avaliador deve ter uma cultura estética coesa, dotada de imaginação e bom senso. Ser influenciado pela criação é de grande ajuda, tentar ser influenciado pode ser um erro.

    1. Objetivismo: A forma representando a realidade. A natureza do valor estético é que caracteriza o objeto.

    2. Subjetivismo: O ponto de vista do observador para com a apreciação do objeto. Todos são livres para acreditar no que quiserem com influência cultural ou não, acreditar no que quer ou deseja.

    3. Na junção do objetivismo e subjetivismo: O valor estético está relacionado com sujeito e objeto, o que é material ou o que é espiritual.

    Nesse processo de avaliar a estética, tendências e gostos se misturam. Isso faz com que nenhuma forma de avaliação fique fora das influências da estética.

    Ainda temos mais coisas a tratar deste assunto… Continuaremos em breve.

    Grande abraço a todos!

  • URL Rewriting: no IIS com ASP, ASP.NET ou PHP

    Olá Pessoal. Mais uma vez a técnica URL Rewriting vem à tona, não apenas para reforçar que esta técnica traz ótimos benefícios e competitividade a suas URLs, mas sim para aumentar o seu leque de aplicação, focando sua instalação em outros servidores web.

    No artigo anterior foi bem focado o seu conceito, utilidade e sua aplicação voltada ao servidor web Apache, com a utilização do módulo Mod_rewrite. Mas existe a necessidade de expandir esta técnica em outros servidores, possibilitando assim a sua aplicação em outras linguagens.

    Nativamente o servidor Apache não roda as linguagens Microsoft ASP e ASP.NET, inviabilizando a utilização do URL Rewriting para tais tecnologias. Desta forma, foi necessário buscar métodos ou tecnologias para suprir esta necessidade, tendo em vista, que o alvo desse estudo seria o servidor Microsoft IIS (Internet Information Services), por ser o servidor web recomendado para tais linguagens.

    Com base na necessidade, foi executada uma busca por aplicações que executassem a tarefa de re-escrita de URLs de forma satisfatória, chegando ao conhecimento das seguintes tecnologias: IIS Rewrite da QwerkSoft (software pago); ISAPI Rewrite da Helicon Tech (software pago); URL Replacer da Motobit.com (software livre); IIRF – Ionic’s ISAPI Rewrite Filter (software livre e com código fonte aberto); e dentre outros não citados.

    Dentre este leque de tecnologias, foram adotadas algumas exigências para a seleção do melhor software para a exemplificação neste artigo, dentre elas estão: Utilizar Expressão Regular para filtrar as páginas e parâmetros, se possível semelhante ao do Mod_rewrite; Ser de fácil instalação e configuração; Possuir licença de utilização livre, ou seja, não precisar pagar para utilizar; Tenha uma equipe para corrigir bugs e lançar novas versões, tornando compatíveis com novas versões do IIS; E que funcione corretamente.

    Foi escolhido o IIRF dentre todos os outros softwares, por cumprir com todas as exigências impostas.

    Antes de iniciar a falar sobre esta tecnologia, só para titulo de conhecimento, é importante frisar que todos os softwares mencionados, são filtros ISAPI’s. Através do ISAPI (Internet Server Application Programming Interface) é possível criar softwares escritos em C++, para filtrar as chamadas de páginas e prover funcionalidades adicionais ao IIS.

    Instalando o IIRF

    Para iniciar, clique aqui e navegue no site do IIRF para baixar a versão atual (source and binary for v1.2.10) do software, para que seja iniciado o tutorial de instalação.

    Após baixar o arquivo “IonicIsapiRewriter-1.2.10.zip”, descompacte-o em qualquer diretório do seu computador. Neste arquivo estão disponíveis todos os códigos fontes do IIRF, que poderá ser alterado e compilado livremente por você (lembrando que você deve saber o que está fazendo) através dos programas Microsoft Visual Studio 2005 ou Microsoft VC++ 2005 Express.

    Existem apenas dois arquivos que serão utilizados realmente, que é a DLL (Dynamically Linked Library) do projeto e o arquivo que irá armazenar as instruções de re-escrita. Os dois se chamam “IsapiRewrite4.dll” e “IsapiRewrite4.ini”. Outro arquivo importante que poderá ser complemento a este tutorial, é o “Readme-1.2.txt” que possui todas as informações necessárias para a instalação e configuração do IIRF.

    Antes de registramos a DLL no IIS será necessário copiar os dois arquivos para um diretório que o usuário padrão (IUSR_hostname) do IIS tenha permissão de acesso (se não tiver, será necessário dar permissão). É recomendado que seja copiado para o diretório de instalação do ISS, que normalmente é o “c:\windows\system32\inetsrv”. Mas no caso de haver mais de um website configurado no servidor, é importante saber que para cada website (lembrando que diretório virtual não é website) é necessário registrar a DLL no ISAPI e que estas devem estar em diretórios separados para possibilitar a criação de instruções separadas por website. Desta forma, neste tutorial estes arquivos serão colocados em um diretório dentro do website principal (mas fique livre para colocar em qualquer lugar).

    Siga os seguintes passos:

    Dentro da pasta do website principal, que neste caso é o “C:\Inetpub\wwwroot\” crie o seguinte diretório “BinUrlRewriting” e copie os arquivos “IsapiRewrite4.dll” e “IsapiRewrite4.ini” para dentro do mesmo.

    Feito isso, agora será necessário registrar esta DLL no ISAPI do IIS. Abra o IIS através do “Painel de Controle”, “Ferramentas administrativas” e “Internet Information Services”. Clique em “Propriedades” do “Site da Web padrão”.

    Clique sobre a aba “Filtros ISAPI”, que irá mostrar todos os filtros instalados, mas que neste momento não existe nenhum. Clique no botão “Adicionar” para inserir o filtro IIRF no website padrão.

    Clique sobre a aba “Filtros ISAPI”, que irá mostrar todos os filtros instalados, mas que neste momento não existe nenhum. Clique no botão “Adicionar” para inserir o filtro IIRF no website padrão.

    Neste momento, o filtro IIRF foi inserido, mas para que ele possa entrar em funcionamento será necessário reiniciar o IIS. Para isso clique em “Parar item” e depois em “Iniciar item”. Após este procedimento abra propriedades novamente, selecione a aba filtros ISAPI e verá no status uma seta verde, que simboliza o funcionamento do filtro.

    Agora o IIS está pronto para colocar em prática o URL Rewriting, em que as instruções de re-escrita irão ficar dentro do arquivo “IsapiRewrite4.ini”, que obrigatoriamente deve estar localizada no mesmo diretório onde a DLL foi instalada.

    Na Prática

    Foi mostrado até o momento como instalar o filtro IIRF no IIS. Agora será necessário criar as instruções de re-escrita conforme suas necessidades. Neste caso será mostrado um exemplo de como aplicar esta técnica nas linguagens ASP, ASP.NET e PHP.

    Será utilizado as seguintes URLs para a criação das instruções, em que para cada URL será informado um parâmetro especifico (ex-aspx, ex-asp e ex-php) que irá identificar qual a página e linguagem que será executada.

    http://localhost/ex-aspx/noticia/1234/testando-url-rewriting-no-iis.html|

    http://localhost/ex-asp/noticia/1234/testando-url-rewriting-no-iis.html|

    http://localhost/ex-php/noticia/1234/testando-url-rewriting-no-iis.html|

    Abra o arquivo “IsapiRewrite4.ini”, remova todas as linhas que estiverem dentro e em seguida copie e cole as seguintes instruções.

    RewriteRule ^/ex-aspx/noticia/([0-9]+)(/[a-zA-Z0-9_-]+)?(.html)?$ /noticia.aspx?id=$1|

    RewriteRule ^/ex-php/noticia/([0-9]+)(/[a-zA-Z0-9_-]+)?(.html)?$ /noticia.php?id=$1|

    RewriteRule ^/ex-asp/noticia/([0-9]+)(/[a-zA-Z0-9_-]+)?(.html)?$ /noticia.asp?id=$1|

    Veja que a sintaxe é idêntica a utilizada no Mod_rewrite no artigo passado. O código “RewriteRule” inicia uma linha de instrução, posteriormente vem a expressão regular que filtra a chamada da página e por último vem a URL original que será executada, juntamente com seus parâmetros.

    Como dito no artigo anterior, é necessário ter experiência em expressões regulares, para poder identificar e filtrar as informações corretas. Neste exemplo, as expressões “^…$ ” indicam o inicio e fim da instrução. O trecho “/ex-aspx/noticia/” identifica a página e o seu tipo (por linguagem), respectivamente. O trecho “([0-9]+)” filtra um valor inteiro, que por estar entre “()” é identificado como um parâmetro ($1), que será utilizado na chamada da página original. Por fim, o trecho “(/[a-zA-Z0-9_-]+)?(.html)?” é opcional, podendo ser utilizado ou não, devido a expressão “?”. Neste momento é importante colocar palavras chaves que destacam o texto, para facilitar a identificação e uma posterior recuperação das informações por mecanismos de busca.

    Existem duas coisas que foram detectadas que diferem do Mod_rewrite do Apache, que são: não é necessário ter a linha que inicia (RewriteEngine on) o módulo de re-escrita, porque o arquivo .ini possui unicamente a finalidade de re-escrita; E a outra diferença é que é necessário informar na expressão regular e na URL original o diretório virtual, que neste caso é simbolizado pela “/” no início, que representa o root do website. Isso ocorre basicamente porque o arquivo de configuração é utilizado por todo o website onde o ISAPI foi configurado, incluindo diretórios virtuais, diferente do Mod_rewrite que para cada diretório do website você pode definir instruções diferentes.

    Foram criados alguns arquivos exemplos, simbolizando cada linguagem diferente, que pode ser baixado, juntamente com a DLL e INI.

    Cada arquivo pega as informações passadas por Query String (id) pela URL original e exibe na tela. Veja o resultado da execução destas páginas.

    Execução da página em ASP.NET (utilizando parâmetro ex-aspx):

    Execução da página em ASP 3 (utilizando parâmetro ex-asp):

    Execução da página em PHP (utilizando parâmetro ex-php):

    Viu a simplicidade em utilizar, através do IIRF, várias páginas codificadas em linguagens diferentes ao mesmo tempo, tornando transparente para o usuário do site, qual tecnologia ou estrutura de arquivos estão sendo utilizados. Essa é uma das características boas da técnica URL Rewriting, que foram mais bem explicadas no artigo anterior.

    E Por Fim

    O foco deste artigo foi mostrar que também é possível executar a técnica de URL Rewriting no servidor web IIS, possibilitando a utilização de outras linguagens como ASP e ASP.NET. Viabilizando assim, que sua aplicação web também desfrute das vantagens do URL Rewriting, que é a possibilidade de criar URLs mais seguras, apresentáveis, acessíveis e conseqüentemente mais competitivas.

    Obrigado pela leitura e em caso de dúvidas, estarei disponível para ajudá-lo (a) na medida do possível. E aguarde novos artigos.

    Referências

    URL Rewriting: Criando URLs competitivas!

    http://www.imasters.com.br/artigo/5382/webstandards/url_rewriting_criando_urls_competitivas/

    IIS

    http://cheeso.members.winisp.net/IIRF.aspx

    http://www.qwerksoft.com/products/iisrewrite/

    http://www.isapirewrite.com/

    http://www.motobit.com/help/url-replacer-rewriter/iis-mod-rewrite.asp

    ISAPI

    http://en.wikipedia.org/wiki/ISAPI

    Expressão Regular

    http://guia-er.sourceforge.net/

    É isso, espero que tenham gostado. Até a próxima!

  • Data Guard na versão 10g Release 2 (10.2) – Parte 01

    Esse artigo descreverá como configurar o Data Guard na versão 10g Release 2 (10.2).

    O Data Guard é uma feature do Oracle, utilizado muito como plano de contingência de banco. Sua nomenclatura é constituída por um banco primário e um ou mais bancos secundários.

    O banco secundário pode ser físico ou lógico. A diferença entre os dois é de conceito.

    O banco secundário físico é mais utilizado quando se deseja manter uma cópia integra do banco primário, pois ele é utilizado apenas em READ-ONLY ou com o banco no estado montado.

    Já o banco secundário lógico é muito utilizado pra replicação de dados com o intuito de atualização automática de uma base que deve se manter idêntica a produção, podemos citar com exemplo uma base de treinamento.

    Há várias maneiras de configuração do Data Guard, utilizaremos um tipo de configuração baseado em “Role Transition” e “Primary Role”.

    Figura 1.0- Primário e Físico Standby Database com regras de transação:

    Conforme a Figura 1.0 iremos configurar tanto o banco primário como o secundário (Banco físico), sendo que no nosso exemplo os banco terão os seguintes nomes:

    Primário: Ao invés de Boston será Primary

    Secundário: Ao invés de Chicago será Standy

    Passo a Passo – Criando Physical Standby

    1º ) No Primary Database ative a feature “FORCE LOGGING”:

    ALTER DATABASE FORCE LOGGING;

    Isso fará que todas as alterações gerem logs.

    2º) Crie os Standby logs para que mais tarde possamos utilizar a feature Real Time, que nada mais é que as alterações serão aplicadas em tempo real no banco secundário:

    ALTER DATABASE ADD STANDBY LOGFILE GROUP 4
    ('/home/oracle/primary/oradata/log1c.rdo','/home/oracle/primary/oradata/log2c.rdo') SIZE 10M;
    
    ALTER DATABASE ADD STANDBY LOGFILE GROUP 5
    ('/home/oracle/primary/oradata/log1d.rdo','/home/oracle/primary/oradata/log2d.rdo') SIZE 10M;
    
    ALTER DATABASE ADD STANDBY LOGFILE GROUP 6
    ('/home/oracle/primary/oradata/log1f.rdo','/home/oracle/primary/oradata/log2f.rdo') SIZE 10M;
    

    3º) Nesse ponto, após a criação dos Standby logs, altere o arquivo de parâmetro do banco primário da seguinte forma:

    DB_NAME=primary|
    DB_UNIQUE_NAME=primary|
    LOG_ARCHIVE_CONFIG='DG_CONFIG=(primary, standy)'|
    LOG_ARCHIVE_DEST_1=|
     'LOCATION=/home/oracle/primary/arch1/|
      VALID_FOR=(ALL_LOGFILES,ALL_ROLES)|
      DB_UNIQUE_NAME=primary'|
    LOG_ARCHIVE_DEST_2=|
     'SERVICE=standy LGWR ASYNC|
      VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)|
      DB_UNIQUE_NAME=standy'|
    LOG_ARCHIVE_DEST_STATE_1=ENABLE|
    LOG_ARCHIVE_DEST_STATE_2=ENABLE|
    REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE|
    LOG_ARCHIVE_FORMAT=%t_%s_%r.arc|
    LOG_ARCHIVE_MAX_PROCESSES=30|
    FAL_SERVER=standy|
    FAL_CLIENT=primary|
    DB_FILE_NAME_CONVERT='/home/oracle/standy/oradata','/home/oracle/primary/oradata'|
    LOG_FILE_NAME_CONVERT=|
    '/home/oracle/standy/oradata','/home/oracle/primary/oradata'|
    STANDBY_FILE_MANAGEMENT=AUTO

    OBS: Note que os parâmetros DB_FILE_NAME_CONVERT e LOG_FILE_NAME_CONVERT servem para que o banco automaticamente altere a caminho dos datafiles e redos no controlfile quando alterado para modo Standby, diferentemente da versão 9i, que era necessário modifica-lo manualmente com o comando “ALTER DATABASE RENAME FILE”.

    4º) Ative o arquivamento no banco Primary:

    SQL> SHUTDOWN IMMEDIATE;|
    SQL> STARTUP MOUNT;|
    SQL> ALTER DATABASE ARCHIVELOG;|
    SQL> ALTER DATABASE OPEN;

    5º) Faça um backup frio do banco primário:

    SQL> SHUTDOWN IMMEDIATE;
    $ cp -r /home/oracle/primary/oradata/*.* /home/oracle/standy/oradata

    6º) Inicie o banco primário no modo MOUNT pra criar o standby controlfile:

    SQL> STARTUP MOUNT;
    SQL> ALTER DATABASE CREATE STANDBY CONTROLFILE AS '/home/oracle/standy/oradata/logical_standy.ctl';
    SQL> ALTER DATABASE OPEN;
    
    [codigo]$ cp -r logical_standy.ctl standy1.ctl|
    $ cp -r logical_standy.ctl standy2.ctl

    7º) Crie o arquivo de parâmetro pra o banco Standy conforme o Primary:

    CREATE PFILE='?/dbs/intistandy.ora' from spfile;

    8º) Altere o arquivo de parâmetro do banco Standy:

    DB_NAME=primary|
    DB_UNIQUE_NAME=standy|
    LOG_ARCHIVE_CONFIG='DG_CONFIG=(primary, standy)'|
    DB_FILE_NAME_CONVERT='/home/oracle/primary/oradata','/home/oracle/standy/oradata'|
    LOG_FILE_NAME_CONVERT=|
    '/home/oracle/primary/oradata','/home/oracle/standy/oradata'|
    LOG_ARCHIVE_FORMAT=log%t_%s_%r.arc|
    LOG_ARCHIVE_DEST_1=|
     'LOCATION=/home/oracle/standy/arc/|
      VALID_FOR=(ALL_LOGFILES,ALL_ROLES)|
      DB_UNIQUE_NAME=standy'|
    LOG_ARCHIVE_DEST_2=|
     'SERVICE=primary LGWR ASYNC|
      VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)|
      DB_UNIQUE_NAME=primary'|
    LOG_ARCHIVE_DEST_STATE_1=ENABLE|
    LOG_ARCHIVE_DEST_STATE_2=ENABLE|
    REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE|
    STANDBY_FILE_MANAGEMENT=AUTO|
    FAL_SERVER=primary|
    FAL_CLIENT=standy

    OBS: Atente que o DB_UNIQUE_NAME é Standy, esse parâmetro que diferencia os dois bancos no modo Físico.

    9º) Configure o tnsnames e os listeners. Nesse caso foi colocado um listener pra cada banco, um na porta 1521 e o outro na 1522.

    Listener

    LISTENER =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS_LIST =
            (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
          )
          (ADDRESS_LIST =
            (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.4) (PORT = 1521))
          )
        )
      )
    
    standy =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.4)(PORT = 1522))
          (CONNECT_DATA =
            (SERVER = DEDICATED)
            (SERVICE_NAME = standy)
          )
        )
    
    INBOUND_CONNECT_TIMEOUT_listener=0
    
    SID_LIST_LISTENER =
      (SID_LIST =
          (SID_DESC =
          (GLOBAL_DBNAME = primary)
          (ORACLE_HOME = /home/oracle/10gR2)
          (SID_NAME = primary)
        )
      )
    
    SID_LIST_STANDY =
        (SID_LIST =
          (SID_DESC =
            (GLOBAL_DBNAME = standy)
            (ORACLE_HOME = /home/oracle/10gR2)
            (SID_NAME = standy)
    
    Tnsnames
    
    # tnsnames.ora Network Configuration File: /home/oracle/10gR2/network/admin/tnsnames.ora
    # Generated by Oracle configuration tools.
    
    primary =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.4)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SERVICE_NAME = primary)
          (SERVER = DEDICATED)
        )
      )
    
    standy =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.4)(PORT = 1522))
        )
        (CONNECT_DATA =
          (SERVICE_NAME = standy)
          (SERVER = DEDICATED)
        )
      )

    10º) Inicie os listeners:

    $ lsnrctl start|
    $ lsnrctl start standy

    11º) Inicíe o banco standy:

    SQL> STARTUP MOUNT;

    12º) Nesse momento, colocaremos o banco secundário pra receber os archive logs do banco primário. Para isso Inicie o Redo Apply da seguinte forma no banco secundário:

    Alter Database Recover Managed Standby Database Disconnect From Session;

    Para testar se está funcionado, entre no banco primário e crie uma tabela.

    Ex:

    
    Create table t1 as select * from dba_users;
    
    Alter system switch logfile;

    Veja se o banco Standy está recendo os archive logs:

    SQL> SELECT SEQUENCE#, FIRST_TIME, NEXT_TIME
    2>	FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;
    
    SEQUENCE# FIRST_TIME         NEXT_TIME
    
             8 11-JUL-02 17:50:45 11-JUL-02 17:50:53
             9 11-JUL-02 17:50:53 11-JUL-02 17:50:58
            10 11-JUL-02 17:50:58 11-JUL-02 17:51:03
            11 11-JUL-02 17:51:03 11-JUL-02 18:34:11

    E verifique se estão sendo aplicados:

    SQL> SELECT SEQUENCE#,APPLIED FROM V$ARCHIVED_LOG
      2  ORDER BY SEQUENCE#;
    
    SEQUENCE# APP
    
            8 YES
            9 YES
           10 YES
           11 YES
    

    Caso estejam, a replicação esta funcionando.

    Espero ter ajudado. Na próxima matéria iremos configurar o Data Guard no modo lógico. Abraço!

  • Fique atento às ferramentas que auxiliam o desenvolvedor – Parte 02

    Como havia mencionado na 1ª parte desta matéria, nesta 2ª etapa mostrarei o que podemos desenvolver com o editor de aplicações CodeCharge. A princípio, vamos entender quais as linguagens que o CodeCharge suporta.

    O CodeCharge está disponível e duas versões: CodeCharge Studio e CodeCarge Studio Personal Edition.

    Uma breve comparação entre as duas:

    Bem, como vocês puderam observar, o CodeCharge suporta as linguagens mais utilizadas pelos desenvolvedores, além de trabalhar com grandes bancos de dados, como SQLServer, MySQL, Oracle, Interbase, etc.

    Mas, o que podemos desenvolver com este Editor?

    Como havia dito: desde simples aplicações Web à complexas soluções de e-business.

    Um exemplo:

    Vocês conseguem ler esta matéria, certo? Quanto trabalho teríamos se fizéssemos para cada novo artigo uma nova página .html, .php, .asp, etc…? Trabalhoso não? Bem, para que não haja um gasto de tempo desnecessário, existe uma página administrativa onde podemos inserir novos artigos. Por esta página mandamos todas as informações para a base de dados que por sua vez são selecionadas nesta página que estamos visualizando agora, mais conhecida como página front-end.

    Está aí um exemplo simples do que podemos fazer com o CodeCharge. Por ele podemos desenvolver a página administrativa que envia as informações para o banco.Criamos de maneira fácil a conexão com a base de dados e escolhemos as tabelas e campos que iremos utilizar.

    Após isso, ele gera automaticamente os arquivos .ccp (extensão CodeCharge) de cadastro, edição, exclusão e listagem. Este é o padrão de projeto. Detalhe: ele cria isso sem nenhum “esforço”.

    A partir disso podemos manipular o nosso projeto como bem entendermos adicionando páginas ou arquivos que atenderão nossa necessidade. Após criarmos a página administrativa pelo CodeCharge, criamos então o front-end, preferencialmente na “unha”, para facilitar, afinal fica mais fácil para trabalharmos em cima de nosso layout. Além disso, esta página receberá apenas os SELECTs que teríamos que desenvolver.

    Bem, está aí uma simples solução Admin criada pelo CodeCharge. Podemos desenvolver vários módulos por ele.

    Que tal uma página de notícias que preencherão nosso site? Ou então uma agenda da semana onde poderemos colocar eventos que acontecerão, um CMS para editarmos o conteúdo do site, um módulo newsletter onde teremos controle de usuários cadastrados para receber notícias, um módulo de enquete onde poderemos adicionar pergunta e repostas, e assim por diante.

    O CodeCharge vai além. Ele pode criar grandes aplicações VB.NET, C#, entre outras linguagens, e se bem desenvolvidas podem virar um ótimo produto de venda.

    Ressalto apenas que os códigos gerados por este desenvolvedor de aplicações são um pouco diferentes dos que estamos acostumados a ver, porém não fogem tanto do contexto das linguagens. Na verdade o que o CodeCharge realmente cria por trás daqueles aplicativos inteligentes e funcionais muitas vezes parecem incógnitas.

    Aconselho àqueles que pretendem usar esta ferramenta a estudá-lo bem, afinal a manutenção destes aplicativos, se tornará mais complexa, caso não esteja bem familiarizados com o editor.

    Primeiramente aprenda a linguagem que pretende trabalhar, se familiarize, estude e acima de tudo se empenhe em adquirir conhecimento.Apesar de parecer simples criar aplicações tão funcionais, isso é apenas o começo.O bom desenvolvedor é aquele que desenvolve bem até no bloco de notas.

    Mas uma ajudazinha de vez em quando é boa não é?

    Caso queriam ver uma aplicação desenvolvida no CodeCharge, entre no site www.codecharge.com.br e observem que o site foi inteiramente criado em cima dele, até mesmo o fórum.

  • Ócio como combustível para a inovação

    Quando nos lembramos do grande Charlie Chaplin, no filme “Tempos Modernos”, imaginamos uma indústria que não pára, onde os empregados trabalham arduamente do momento que chegam até a hora da saída e onde também as máquinas não podem passar um segundo paradas. Elas devem cuspir produtos o tempo todo, pois assim estarão trabalhando no máximo de sua eficiência, sem que tempo nenhum seja perdido.

    E até pouco tempo atrás, a indústria pensava exatamente isso. A melhor indústria é aquela que consegue o maior nível de eficiência, quanto menos tempo os empregados ou as máquinas passarem sem produzir, mais tempo eles vão produzir e consequentemente mais vai ser produzido. Ou era assim que eles esperavam que acontecesse.

    Na realidade, quando uma indústria atinge o nível de eficiência em que praticamente todo o tempo que existe é utilizado simplesmente para produzir, ela está entrando em uma fase perigosa da sua existência, a fase em que ela não é mais capaz de inovar, criar, reinventar a si mesma. A empresa chegou a um momento no qual ela tornou-se simplesmente incapaz de mudar.

    Pressão na direção errada?

    Como toda a pressão existente está sendo direcionada para fazer com que as pessoas produzam mais e em menos tempo aqueles produtos que já haviam sido desenvolvidos, o investimento e a busca por novos produtos ou opções fica estagnada. As pessoas não têm mais tempo para pensar sobre o que estão fazendo, sobre como melhorar o seu trabalho ou sobre qualquer outra coisa. São impelidos pelos seus superiores a simplesmente fazer o que lhes é mandado, da forma que já é conhecida e conforme o cronograma que foi definido.

    Em um mundo que também é estático, onde as necessidades não estão em constante mudança, uma empresa nessa fase de sua existência vai atingir níveis de prosperidade nunca vistos, já que ela produz com o máximo de eficiência aquilo que é necessário para o mercado. Infelizmente, o nosso mundo não é estático, e as idas e vindas do mercado são tão comuns quanto o vai-vem das ondas do mar. E é em um momento de mudança que a empresa “estática” vai enfrentar a sua maior dificuldade, responder rapidamente aos requisitos alterados do seu mercado.

    Eficiência como inimiga da evolução

    Segundo Tom DeMarco, em seu livro “Slack”:

    “It’s possible to make an organization more efficient without making it better. That’s what happens when you drive out slack. It’s also possible to make an organization a litle less efficient and improve it enomously. In order to do that, you need to reintroduce enought slack to allow the organization to breathe, to reinvent itself, and to make necessary change.”

    Slack, ou “ócio”, em uma tradução livre, é o que faz com que uma empresa possa evoluir naturalmente no seu espaço. E nós não precisamos nem ir muito longe para perceber o quanto isso é importante no desenvolvimento de novas idéias e na criação de novos mercados. O Orkut, site de relacionamentos desenvolvido no “tempo livre” de um dos empregados do Google, é uma das grandes redes de relacionamento do planeta e a mais utilizada no Brasil. Ele utilizou o seu tempo “ocioso” para desenvolver novas idéias, criar um novo produto que tomou proporções absurdas dentro da empresa na qual ele trabalha.

    Em muitos casos, atingir a eficiência total de um recurso não é a melhor maneira de utilizá-lo. Vejamos a utilização de uma rodovia. Se nós fossemos utilizá-la até o seu máximo de eficiência, com carros cobrindo toda a sua extensão, ela seria praticamente inútil, já que viveríamos em um eterno engarrafamento, com carros andando devagar e muitos motoristas estressados. A melhor utilização das rodovias acontece quando existe espaço suficiente para que os carros possam andar em alta velocidade e ultrapassar outros veículos, ou seja, quando existe capacidade ociosa.

    Ocupando demais a equipe

    Imagine que você tem uma equipe de designers de sistemas. A cada vez que você desenvolve um sistema, você coloca esses designers para aplicar sobre a estrutura básica um design específico para cada cliente da empresa. Você chega na equipe de design e vê que eles passam um bom tempo navegando na internet, olhando um site ou outro, nos tempos livres que eles tem entre a criação e aplicação de designs.

    Pensando um pouco no assunto, se eles estão com tempo livre, não estão sendo eficientes ao máximo, temos que começar a aproveitar melhor o tempo deles para que não sobre nenhum tempo livre. Você olha o histórico de tempo necessário para fazer um design e começa a calcular o quanto de tempo livre eles tem e como você vai poder ocupar esse tempo de forma produtiva.

    Primeiro, tem muita gente na equipe, você começa por realocar ou simplesmente demitir um dos membros da equipe. Vai ser um recurso a menos que não vai fazer diferença, não estava produzindo no seu máximo. Agora, com uma pessoa a menos, a equipe de design foi otimizada, está trabalhando no máximo da sua eficiência, tanto que está até começando a se montar uma fila de trabalho para a equipe.

    Em pouco tempo, os designs começaram a não agradar mais os clientes, eles reclamam da falta de personalidade, de imagens de baixa qualidade ou até mesmo de erros corriqueiros que estão passando despercebidos. Você estranha, isso nunca havia acontecido com a equipe de design, pelo contrário, eles sempre haviam sido vistos como uma das melhores equipes da empresa.

    Mas então, o que foi que aconteceu?

    Quando foi planejado o aumento de eficiência da equipe de design removendo o tempo livre que eles tinham, na verdade foi removido o tempo que eles tinham para conhecer novas técnicas de design, descobrir e adicionar novas imagens ao catálogo interno de fotos, discutir entre a própria equipe sobre o que estava sendo produzido e a reavaliação que acontecia no fim da iteração de desenvolvimento de design, para validar se tudo realmente estava correto.

    Mas não foi apenas isso, a equipe viu, pela primeira vez, uma pilha de trabalho atrasado se amontoando em suas mesas. A equipe de desenvolvimento continuava produzindo freneticamente o seu produto, mas a equipe de design não conseguia mais acompanhar o ritmo e isso foi frustrando os seus membros ao ponto em que eles simplesmente começaram a liberar os produtos mais rápido só que com menos qualidade para não ter que aguentar a pressão da gerência pelo atraso na entrega dos artefatos.

    Então, procuramos aumentar a eficiência da produção e acabamos criando um gargalo que vai é diminuir drasticamente a produtividade do processo de desenvolvimento como um todo.

    Respondendo a mudanças

    Em uma empresa de desenvolvimento de software esse estado de estática é ainda mais perigoso por causa da natureza volátil do mercado e da tecnologia. Rapidamente, oportunidades e ferramentas tornam-se obsoletas, e a empresa tem que estar pronta para mover-se nas novas direções que forem ditadas pelo mercado.

    Uma empresa onde a eficiência vem antes da evolução, vai sofrer um baque grande quando acontecer uma mudança no mercado na qual ela está inserida, pois ela vai ter que correr atrás de todo o tempo que foi perdido desde a última vez que conseguiu se reinventar.

    Introduzir um pouco de ócio no processo de desenvolvimento vai enxertar uma nova vida na equipe de desenvolvimento. Eles vão ter mais tempo para conhecer novas ferramentas, manterem-se atualizados nas mudanças que estão acontecendo e nas tendências que o mercado está apresentando.

    Essa evolução constante vai terminar se refletindo no aumento da produtividade graças a um entendimento melhor do trabalho que precisa ser feito e de uma melhor utilização das ferramentas que estão à disposição, já que eles agora tem tempo para conhecer as novidades que estão surgindo, em vez de manterem-se sempre repetindo o que já foi feito milhares de vezes e do mesmo jeito por não conhecer nenhuma maneira melhor de resolver o problema.

    Com uma equipe de desenvolvimento antenada no que está acontecendo, você, garantidamente, vai ultrapassar os resultados que poderia obter com a aplicação da eficiência bruta, sem a preocupação de dar passos a frente, pois os membros da equipe vão ter tempo para pensar sobre o que eles estão fazendo e como eles podem melhorar o seu trabalho para executa-lo mais rápido ou de forma a gerar ganhos maiores.

    As pessoas, assim como as empresas, precisam se reinventar, mas pra isso elas precisam de espaço para crescer. Se nós não colocamos os nossos servidores pra funcionar sempre em sua capacidade máxima, por que, então, achamos que podemos fazer isso com as pessoas?

    As vezes as respostas para os problemas estão tão próximos, que não conseguimos enxergar.

    Citando mais uma vez DeMarco em “Slack”:

    “Slack at all levels is necessary to make the organization work effectively and to grow. It is the lubricant of change. Good companies excel in the creative use of slack. And bad ones can only obsses about removing it.”DeMarco

  • Preencha a Esquerda com Zero ou a Direita com Branco em Java

    Para Quem vai gerar TXT para exportação ou importação em outro Sistema!

    Num sistema interno usado na UFPA precisei exportar registros extraídos de um banco para um arquivo .txt obedecendo determinados critérios como: preencher com zero a esquerda ou branco a direita. Então, para facilitar o meu trabalho, adaptei um método para esta finalidade e compartilho esta solução com vocês num exemplo Ready to Use!

    Pré-Requisitos:

      ->Java SE 5 (1.5) plenamente instalado e configurado

      ->NetBeans 5.5 ou a IDE de sua Preferência

    Preenchendo com zero a esquerda

    ao executar o código abaixo a resposta no console terá que ser “00000000532835”

    Listagem 01. Classe Main.

    package artigo2; 
    
    public class Main { 
    
        public static void main(String args[]){
    
            Utils util = new Utils();
    
            System.out.println(util.preencheCom("532835" , "0" , 14 , 1));
    
        }
    
    } 

    Explicando: conforme você verificou este método precisa de 4 parâmetros:

      ->A String “532835” representa A Linha ou texto a ser preenchido

      ->A String “0” representa A Letra ou Número que será inserido

      ->O Integer 14 representa o tamanho total que a String a ser preenchida precisa ter

      ->O Integer 1 informa ao método que a String “0” será preenchida a Esquerda

    OBS: 1 preenche a Esquerda, 2 preenche a direita ok.

    A Listagem 02 abaixo apresenta a classe util referenciada acima:

    package artigo2; 
    
    public class Utils {
    
       
    
        public static String preencheCom(String linha_a_preencher, String letra, int tamanho, int direcao){
    
            //Checa se Linha a preencher é nula ou branco
    
            if (linha_a_preencher == null || linha_a_preencher.trim() == "" ) {linha_a_preencher = "";}
    
           
    
            //Enquanto Linha a preencher possuir 2 espaços em branco seguidos, substitui por 1 espaço apenas
    
            while (linha_a_preencher.contains("  ")) {linha_a_preencher = linha_a_preencher.replaceAll("  "," ").trim();}
    
           
    
            //Retira caracteres estranhos
    
            linha_a_preencher = linha_a_preencher.replaceAll("[./-]","");
    
            StringBuffer sb = new StringBuffer(linha_a_preencher);
    
            if (direcao==1){ //a Esquerda
    
                for (int i=sb.length() ; i<tamanho ; i++){
    
                    sb.insert(0,letra);
    
                }
    
            } else if (direcao==2) {//a Direita
    
                for (int i=sb.length() ; i<tamanho ; i++){
    
                    sb.append(letra);
    
                }
    
            }
    
            return sb.toString();
    
        }
    
    } 

    Preenchendo com Espaço em Branco a Direita

    Ao executar o código abaixo a resposta no console terá que ser “Fulano de Tal ” com espaço em branco a direita até completar 20 caracteres. Vejam que duplo espaço em branco é substituído por apenas 1(um) espaço em branco

    Listagem 3:

    package artigo2; 
    
    public class Main { 
    
        public Main() {
    
        } 
    
        public static void main(String args[]){
    
            Utils util = new Utils();
    
            System.out.println(util.preencheCom("Fulano  de   Tal" , " " , 20 , 2));
    
        }
    
    }

    Até a próxima.

    Para Baixar o Código-Fonte Deste Artigo Clique Aqui. Ou http://br.geocities.com/consubr/artigos/Artigo2_Preenche_Com.zip

    OBS: Este artigo, bem como o código-fonte, é de livre divulgação, desde que, citada a fonte

  • Players de games reclamam do Vista: Jogos tem problemas para rodar

    Os gráficos do Windows Vista estão dando dor de cabeça aos players de jogos. Um pequeno número, mas significativo de games feitos para o Windows XP não funciona apropriadamente no novo sistema, reportaram gamers em fóruns.

    A maioria dos problemas está em jogos de tiros como CounterStrike, Half-Life 2, Doom 3 e F.E.A.R, que exigem maior poder gráfico do computador.

    A principal reclamação dos usuários do Vista é que a velocidade das imagens fica lenta, atrapalhando a jogabilidade, sem contar os casos em que o jogo fecha sozinho.

    Especialistas no assunto culpam os drivers, a complexidade do Vista e a ausência de cartões de vídeo otimizados para a nova tecnologia gráfica do Vista, o DirectX 10 – apesar das promessas da Microsoft de que o Vista seria compatível com o mecanismo gráfico do XP, o DirectX 9, e que suportaria os jogos atuais.

    Ao mesmo tempo, os jogos otimizados para DirectX 10 vem chegadno lentamente no mercado. Um executivo da Nvidia prevê que esses jogos devem se tornar mais populares apenas a partir de meados de 2008.

    A Microsoft diz que a coisa não é tão grave. Chris Donahue, gerente de Windows para a área de games, diz que a empresa testou mais de mil jogos nos últimos cinco anos e a maioria funciona com o Vista.

    O DirectX 10 é uma reformulação do sistema gráfico do Windows, fazendo com que os jogos rodem com maior rapidez e melhor textura que o DirectX 9. A Microsoft diz que os principais fornecedores de jogos estão se apressando em produzir títulos otimizados para o novo padrão, embora até agora a empresa só tenha apresentado uma dezena de jogos, com melhorias bastante sutis.

    Os fabricantes de chips gráficos – como Nvidia, Intel e ATI -, estão sendo criticados pela falta de agilidade em oferecer drivers para os cartões gráficos existentes rodando seus chips.

    Além disso, a Intel e a ATI ainda não apresentaram melhorias de chips gráficos para o DirectX 10. A Nvidia lançou um processador para o DirectX 10, o GeForce 8800, mas seus drivers ainda estão em faze de teste.

    Usuários irritados com o problema criaram um site ameaçando processos. Em resposta, a Nvidia criou um site que permite aos usuários reportar problemas

  • Gecko DOM Code Hints para o Dreamweaver

    Olá a todos. Gostaria de, antes de iniciar este artigo, desejar um ótimo carnaval a todos vocês e lembrá-los de divertir com segurança e proteção.

    Hoje falaremos sobre Code Hints no Dreamweaver (DW) e de uma extensão que desenvolvi (e ainda estou incrementando) para adicionar novas funcionalidades ao Code Hints padrão do DW.

    Os Code Hints disponibilizados pelo Dreamweaver nos ajudam a realizar uma codificação rápida e sem erros. Eles são utilizados/exibidos exclusivamente no modo de visualização Code View. Para todos os tipos de documentos que você estiver trabalhando, o DW exibirá um Code Hints específico ao tipo de documento em questão.

    Ultimamente tenho codificado muito em JavaScript e DOM e acredito que outros desenvolvedores web que utilizam dessa ferramenta também. Com isso, senti a falta de Code Hints específicos ao JavaScript e o DOM; o que me levou a criação de uma extensão para o Dreamweaver intitula como Gecko DOM Code Hints.

    Então, posso lhe dizer que a Gecko DOM Code Hints é uma iniciativa minha em oferecer Code Hints ao se trabalhar com o JavaScript/DOM no Dreamweaver. A versão atual (no momento em que escrevo este artigo) é a 0.3 e ela oferece suporte a todos os métodos e propriedades do objeto document. Além de uma tooltip para alguns dos métodos.

    Faça o download da Gecko DOM Code Hints (versão 0.3)

    Nota: na versão inicial – 0.1 – dessa extensão os Code Hints funcionavam apenas em documentos do tipo JavaScript, a partir da versão 0.3, os Code Hints são exibidos em qualquer tipo de documento. Portanto, toda sugestão será muito bem-vinda.

    Uma vez instalado a extensão, o Dreamweaver estará apto a exibir os Code Hints referente ao objeto document. Ao iniciar a sua codificação em JavaScript/DOM e digitar o seguinte pattern: “document.” (sem aspas) será exibido um Code Hints com os métodos e propriedades referente a esse objeto. Observe na imagem abaixo um exemplo:

    Nesse menu popup exibido após a digitação do pattern: “document.” (sem aspas), você poderá navegar entre os métodos/propriedades com as teclas para cima e para baixo do seu teclado. Após a escolha tecle enter que o Dreamweave irá completar a codificação para você 🙂

    Para alguns métodos do objeto document será exibido uma tooltip com os parâmetros referente à função, como demonstrado na imagem abaixo:

    Se um método em específico possuir mais de um parâmetro a ser informado, à media em que você for adicionando as vírgulas para informar o parâmetro posterior o menu é atualizado; sempre exibindo em negrito o parâmetro em questão.

    Bom, é isso aí. Espero que tenham gostado e que a extensão seja útil para vocês, como tem sido para mim.

    Lembrando que toda e qualquer sugestão será bem-vinda e poderá ser utilizada para a melhoria da extensão. Até o momento, como você percebeu, os Code Hints são referetes ao objeto document. Os demais serão incluídos em versões futuras da Gecko DOM Code Hints. Por isso, acompanhe o meu blog pessoal e meu laboratório onde lhe informarei sobre atualizações da extensão aqui abordada.

    Se você é usuário da freeDOM.js – fiz uma abordagem sobre ela no artigo Codifique menos. Viva mais. – pode ser interessante conhecer a freeDOM.js inside Dreamweaver – uma extensão semelhante a Gecko DOM Code Hints.

  • Planeta Água

    Olá pessoal. Espero poder contribuir com vocês com esse artigo, elaborando um efeito charmoso, bonito e de fácil criação. Vamos chamá-lo de Planeta Água.

    Vamos lá:

    Passo 1:

    Crie uma camada com 500 x 500 pixels

    Passo 2:

    Vamos agora criar um degrade, que puxe de um azul mais escuro para um azul mais claro:

    Passo 3:

    Vamos aplicar esse degrade ao nosso documento: então vamos posicionar o mouse e puxarmos como a imagem a seguir:

    a imagem será essa:

    Passo 4:

    Feito o degrade de acordo com a imagem, vamos agora criar uma camada nova e utilizarmos a ferramenta Elliptical Marquee Tool:

    Segurando o Shift, vamos criar uma seleção como a imagem a seguir e pintarmos ela de preto:

    Passo 5:

    Feito a seleção e a bola já pintada, vamos retirar a seleção (ctrl d). A próxima etapa séra no Blending Options:

    Dentro do Blending Options, vamos deixar marcado essas propriedades:

    Passo 6:

    Dentro da janela do Blending Options, vá na opção ao lado Outer Glow e configure como a imagem. Obs: colocamos a cor do brilho como branca.

    Passo 7:

    Na mesma janela, sem você fechar, vamos aplicar um brilho interno, o Inner Glow, e configuramos a seguir:

    Passo 8:

    Com nossa bola já feita, vamos aplicar um efeito de luz. Seria o Lens Flare: Filter -> Render -> Lens Flare: e aplicamos como a seguir: posicione a luz na parte superior da bola como mostra a imagem e damos ok..

    A imagem ficará assim:

    Passo 9:

    Para finalizarmos e aplicarmos o efeito final, vamos aplicar uma máscara, ou melhor, uma Layer Mask.

    Volte ao degrade, e vamos utilizar o degrade padrão, do preto para o branco, como a imagem a seguir:

    Posicione o mouse como na imagem e vamos puxá-lo:

    Nossa imagem final ficará assim:

    Com algumas modificações:

    Bem pessoal, espero que tenham gostado. Abraços e até a próxima!

  • Tratando videos no GNULinux

    Atualmente a produção e edição de vídeos caseiros está cada vez mais acessível a população. Muitos equipamentos de uso doméstico estão a venda e os preços apresentam uma queda acentuada.

    Se você utiliza o GNU/Linux, também pode editar seus vídeos neste sistema operacional. Apesar da fama desta tarefa ser complicada e limitada, o sistema do pinguim pode oferecer uma boa alternativa para quem quer se tornar um novo Spielberg.

    O Cinelerra é uma ferramenta bastante completa para edição não linear de vídeo. Com ele você vai conseguir capturar, montar e editar seus vídeos e respectivos áudios. No site http://cvs.cinelerra.org/ você ainda vai encontrar muitas dicas de utilização, documentação e a lista de discussão sobre o produto. Tudo para você ficar por dentro das novidades.

    Outro utilitário importante é o Kino. Através de sua excelente integração com a interface Firewire (IEEE-1394), você vai poder capturar seus vídeos diretamente da câmera para o micro e posteriormente editá-los. O Kino pode exportar o vídeo editado nos seguintes formatos: AVI, frames isolados, WAV, MP3, Ogg Vorbis, MPEG-1, MPEG-2, e MPEG-4. Uma excelente opção.

    Se você possui aquelas fitas antigas gravadas no formato VHS e quer passá-las para DVD então o Xawdecode é o utilitário indicado. Ele vai permitir que você capture a imagem de um reprodutor de VHS e armazene em formato digital no disco rígido.

    O DeVeDe é um aplicativo para criação de vídeo DVDs e CDs (VCD, sVCD or CVD) compatíveis com tocadores de DVD domésticos. Ele funciona como uma interface gráfica para outros utilitários como o Mplayer e o Mencoder.

    Lembre-se que para editar seus vídeos é preciso de um computador com processador rápido, memória extra (igual ou acima de 1GB), e bastante área em disco. É bom ter um acesso em banda larga para poder fazer o download e upload de seus vídeos.

    Faça como os grandes estúdios que estão rapidamente adotando o Linux em seus ambientes de animação. Agora é mão na câmera e muitos filmes para fazer.

    Um forte abraço!