Image Image Image Image Image
Scroll to Top

Topo

windows

25

nov
2011

Sem Comentários

Em Blog

Por Allison

PyPy 1.7: o mais rápido interpretador de Python, ainda mais rápido

Em 25, nov 2011 | Sem Comentários | Em Blog | Por Allison

Foi lançado nesta semana, o PyPy 1.7, nova versão do interpretador da linguagem Python escrito inteiramente em Python. O principal foco desta versão foi o aumento de desempenho de bibliotecas, em relação ao CPython e ao próprio PyPy 1.6.

O PyPy é uma alternativa a outros interpretadores como CPython (o padrão), Jython e IronPython, e de acordo com os diversos benchmarks publicados, o mais rápido entre eles. Segundo os desenvolvedores do projeto, “se alguma implementação for mais lenta que o interpretador CPython, então é um bug”.

A performance excepcional do PyPy se deve principalmente ao seu compilador JIT. O interpretador já é suportado em Linux 32/64, MacOS 32/64, mas o atual release (com JIT) ainda não foi concluído para o Windows.

Algumas funcionalidades estão em fase avançada de desenvolvimento, mas ainda não ficaram prontas para este release:

  • Implementação especializada de listas: Está já em fase de testes a implementação de listas de inteiros/float/string compactadas como um array de arrays, o que deve aumentar a perfomance e reduzir o consumo de memória de algumas aplicações.
  • Duas novas implementações do compilador JIT direcionadas aos processadores PowerPC e ARM

Para conhecer mais sobre o PyPy, fazer o download ou ajudar nos testes da plataforma, visite a página oficial do projeto.

Fonte: Rafael Nunes/InfoQ

Tags | , , , , , , , ,

20

nov
2011

Sem Comentários

Em Blog

Por Allison

Incorporando funções nativas do Windows em seu projeto .NET

Em 20, nov 2011 | Sem Comentários | Em Blog | Por Allison

Hoje gostaria de mostrar como importar algumas funções nativas do Windows em seu aplicativo usando C#.NET e mostrar como utilizar using de maneira diferente.

Muitas pessoas precisam acessar funções nativas do sistema operacional Windows e para isso é necessário fazer algumas importações acima do método. Mas antes de começar a mostrar, é necessário usar algumas classes do Framework.NET.

using System;
using System.Globalization;
using System.Runtime.ConstrainedExecution;
using System.Runtime.InteropServices;
using System.Security.Principal;
using System.Text;

Junto desses “using” descritos acima, existe uma maneira nova de criar variável local que assume os dados da classe. Primeiro se coloca o nome igualando ao da classe que deseja usar:

using SysComTypes = System.Runtime.InteropServices.ComTypes;

Note que a classe de System.Runtime.InteropServices.ComTypes foi atribuída para a variável SysComTypes. Essa variável pode ser usada dentro da classe em qualquer lugar. É uma maneira interessante para uso de variáveis locais.

Passando agora para a parte de importação nativa do sistema operacional, você precisa colocar no mínimo três linhas de código para cada importação dependendo do método. Em exemplo, para verificar se o login do usuário precisa do código abaixo:

//
// advapi32.dll
//
[DllImport("advapi32", CharSet = CharSet.Unicode, SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
internal static extern bool LogonUser(string lpszUsername, string lpszDomain, string lpszPassword, LogOnType dwLogonType, LogOnProvider dwLogonProvider, out IntPtr phToken);
[DllImport("advapi32", CharSet = CharSet.Unicode, SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
internal static extern bool LogonUser(string lpszUsername, string lpszDomain, IntPtr lpszPassword, LogOnType dwLogonType, LogOnProvider dwLogonProvider, out IntPtr phToken);

A dll nativa é a advapi32 do Windows. Existem outras interfaces disponíveis dessa dll, porém não são muito utilizadas.

Para a dll kernel32 existem outros métodos específicos como pegar a informação do HD local, verificar o status da thread, encontrar arquivo, pegar a memória da máquina e muito mais. Veja alguns exemplos abaixo:

 
//
// kernel32.dll
//
[DllImport("kernel32", BestFitMapping = false, CharSet = CharSet.Unicode, SetLastError = true, ThrowOnUnmappableChar = true)]
[return: MarshalAs(UnmanagedType.Bool)]
internal static extern bool GetVolumeInformation(string lpRootPathName, StringBuilder lpVolumeNameBuffer, int nVolumeNameSize, out int lpVolumeSerialNumber, out int lpMaximumComponentLength, out int lpFileSystemFlags, StringBuilder lpFileSystemNameBuffer, int nFileSystemNameSize);
[DllImport("kernel32", SetLastError = true)]
internal static extern ExecutionState SetThreadExecutionState(ExecutionState esFlags);
[DllImport("kernel32", BestFitMapping = false, CharSet = CharSet.Auto, SetLastError = true, ThrowOnUnmappableChar = true)]
[return: MarshalAs(UnmanagedType.Bool)]
internal static extern bool FindNextFile(SafeFindFileHandle hndFindFile, [In, Out] FindData lpFindFileData);
[DllImport("kernel32", CharSet = CharSet.Auto, SetLastError = true)]
internal static extern void GlobalMemoryStatus(NativeMemoryStatus lpBuffer);
[DllImport("kernel32", CharSet = CharSet.Auto, SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
internal static extern bool GlobalMemoryStatusEx(NativeMemoryStatusEx lpBuffer);

Bom, o objetivo foi mostrar apenas como colocar a chamada de funções ou métodos nativos do sistema operacional. Em um próximo artigo posso mostrar como usar esses métodos específicos.

Além dessas dlls, existem outras como oleaut32, setupapi, shell32, shlwapi e ole32.dll. Todas essas existem métodos próprios para uso na linguagem C#.NET ou qualquer outra do framework .NET.

Espero que tenha gostado e qualquer dúvida pode entrar em contato pelo site.

Fonte: Maurício Júnor/IMasters

Tags | , , ,

17

nov
2011

8 Comentários

Em Blog

Por Allison

Fedora Linux 16 em detalhes: foco em cloud computing

Em 17, nov 2011 | 8 Comentários | Em Blog | Por Allison

A comunidade Fedora lançou a versão 16 da popular distribuição do Linux. Entre as principais novidades, estão o suporte ao Kernel 3.1, Gnome 3.2 e KDE Plasma 4.7, além de várias melhorias em relação ambientes de nuvem e virtualização.

Embora seja tradicionalmente voltada para desenvolvedores de projetos open source, oferecendo as últimas atualizações (potencialmente instáveis) destes projetos, a distribuição Fedora vem também sendo reconhecida como uma boa distribuição para usuários domésticos e corporativos. A nova versão foi dedicada pela comunidade a Dennis Ritche, um dos criadores da Linguagem C e do Unix.

Recursos para nuvem

Vários recursos de cloud computing estão embutidos no novo Fedora, com destaque para:

  • Aeolus Conductor – Interface web para gerenciamento de ambientes de nuvem de vários fornecedores, públicos e privados, por exemplo Amazon EC2, Rackspace, VMWare VSphere e Eucalyptus.
  • OpenStack e Condor Cloud – Duas opções que fornecem infraestrutura completa para criação nuvens privativas.
  • HekaFS – Antigo GlusterFS, é um sistema de arquivos de cluster com recursos de multitenancy para nuvem e criptografia OpenSSL.
  • pacemaker-cloud – Extensão do pacemaker (para do Red Hat Cluster Suite) para gerenciar disponibilidade e fail-over de aplicações e recursos em nuvem.
  • Matahari – Coleção de APIs e agentes para monitoramento e gerenciamento de sistemas.

Virtualização e mudanças para o administrador de sistemas

O Fedora é a base para o desenvolvimento do RHEL (Red Hat Enterprise Linux) e suas distribuição derivadas, como o CentOS. Assim o administrador de sistemas corporativo (também conhecido como sysadmin) tem no Fedora uma prévia do que virá em versões futuras destas distribuições; por exemplo:

  • Capacidade de inspecionar o conteúdo de arquivos em imagens de VM (read-only), e o conteúdo do Windows Registry armazenado nestas imagens.
  • Suporte a Dom0 do Xen (parte do kernel 3.1), de modo que não é mais necessário usar um kernel modificado com o Xen Server da Cytrix, Oracle VM e outros produtos baseados no Xen. O Dom0 é o domínio que realiza todas as operações de entrada e saída, para os demais domínios (VMs); ou seja, é ele quem fornece os drivers para o hypervisor.
  • Mudanças no processo boot, que agora usa Grub2, permite particionamento utilizando GPT em lugar do antigo MBR do MS-DOS (fim dos limites de tamanho das partições!) e suporta o Trusted Boot da Intel, quando disponível no hardware. O antigo subsistema HAL para detecção de novo hardware foi descontinuado, sendo substituído pelo udev e serviços relacionados.
  • Chrony, novo servidor NTP mais tolerante a relógios imprecisos de PCs e sistemas que passam longo tempo desconectados da internet, como notebooks e VMs que ficam suspensas frequentemente.
  • Ike (Shrew Soft VPN Client), novo cliente VPN que facilita o uso do IPsec.

Também há suporte ao compartilhamento de dispositivos USB 2.0 do host com máquinas virtuais KVM. Isso, somado ao suporte a SPICE, torna o Fedora Linux uma plataforma melhorada para virtualização de desktop. Um dispositivo USB também pode ser compartilhado com outras máquinas em rede.

Novidades para o desenvolvedor

O Fedora Linux traz recursos importantes para o desenvolvedor corporativo. É a distribuição do Linux com suporte mais abrangente ao Eclipse e outros recursos para desenvolvimento Java, PHP, Python e Ruby.

Entre as novidades do Fedora 16 para desenvolvedores, podemos destacar:

  • BE (Bugs Everywhere) – Um bug tracker integrado a sistemas de controle de versões distribuídos, para simplificar a gerência e o rastreamento de mudanças.
  • btparser – Ferramenta para análise de backtraces do gdb.
  • D2 – Nova linguagem que tenta reunir as vantagens de Java e C++.
  • WSO2 – Framework de Web Services SOA e WS-* para C++.

O OpenJDK 7 também é oferecido, mas apenas como Technology Preview. O Eclipse, o Tomcat e outras aplicações Java continuam sendo compiladas com o Open JDK 6. O motivo é a falta de um TCK (kit oficial de testes de compatibilidade/aderência) para o Java 7, de modo que empresas que usam o Fedora em produção podem preferir usar os downloads (proprietários) da Oracle. (Também foram descobertas diversas pequenas incompatibilidades entre bibliotecas Java populares e o Java 7, que não puderam ser resolvidas a tempo para o lançamento do Fedora 16.)

Novidades para usuários finais

Para usuários finais, a grande novidade é a inclusão do Gnome 3.2, que continua despertando reações ame-ou-odeie pela sua nova interface com desktop limpo e suporte a tablets. Um destaque é o gerenciamento integrado de contas de serviços internet (Google, Facebook, Jabber etc.) e de serviços de armazenamento em nuvem.

Entre as novas aplicações inclusas no Fedora 16, podemos citar:

  • Routino – Navegação via OpenStreetMaps.
  • WriteType – Ajuda crianças a escrever corretamente, com predição de palavras, autocorreção e suporte a voz para leitura.
  • Ease – Software de apresentações baseado no Cutter, integrado ao Gnome 3 e com interface otimizada para tablets.

Obtendo e instalando o Fedora 16

É possível baixar imagens ISO para mídias live em CD ou pendrive, ou então baixar um DVD (.iso) contendo os principais pacotes para servidores e desenvolvimento. É possível também usar uma mídia para instalação a partir da internet. Além disso, já estão disponíveis imagens prontas para nuvens Amazon.

Quem já tem o Fedora 15 ou versões anteriores, pode fazer uma atualização diretamente pelo gerenciador de atualizações gráfico da distribuição, ou pela ferramenta preupgrade.

É importante lembrar que o Fedora não inclui softwares proprietários, como alguns drivers para placas Wi-Fi e vídeo NVidia, ou codecs para MP3. Mas estes são facilmente instalados usando o EasyLife (que em breve estará atualizado para o Fedora 16), ou então o repositório RPM Fusion (já atualizado). Usuários habituados ao Debian e Ubuntu podem consultar este Guia de Transição do Ubuntu para Fedora.

Fonte: Fernando Lozano/InfoQ

Tags | , , , , , , , , , , , , , ,

08

nov
2011

Sem Comentários

Em Blog

Por Allison

Oracle propõe tornar o JavaFX open source

Em 08, nov 2011 | Sem Comentários | Em Blog | Por Allison

Recentemente, na conferência JavaOne, a Oracle disse que tem a intenção de tornar o JavaFX uma plataforma open source. Agora, a empresa está propondo formalmente que a toolkit JavaFX seja open source sob o projeto OpenJDK e está quer que ela seja incorporada ao Java 9. O arquiteto desktop da Oracle, Richard Bair, ao fazer a proposta, disse que a empresa já vinha conversando a respeito há muito tempo, “mas finalmente estão preparados para atuar nessa área”.

JavaFX foi criado pela Sun como uma tecnologia independente, com sua própria linguagem de script. Mas desde a aquisição da Sun pela Oracle, ela foi reposicionada como uma toolkit Java com uma moderna arquitetura, dando suporte para, por exemplo, aceleração de hardware e estilização utilizando CSS.

O projeto se chamará JFX e a Oracle espera que durante o processo uma comunidade se desenvolva em torno dele; o projeto inclui mais de 6 mil membros de APIs públicas, 11.500 unidades de testes, bibliotecas core, efeitos, suporte a CSS e a aceleração de hardware e controle UI e gráficos. Eles também esperam que a transparência vinda dos códigos open source irá melhorar a aceitação. O código já existe para portar uma camada que suporta Linux, Mac OS X e Windows.

Bair espera que existirá um JSR para JFX a tempo do Java 9, que incluiria JFX como “uma parte adequada do JDK”.A proposta dele formalizada por Iris Clark, que foi quem colocou a proposta para votação. Inicialmente, o projeto – que será liderado por Bair – terá o código JavaFX publicado pela Oracle, começando pelos controles UI. Ao longo dos meses, o código completo será publicado. O OpenJFX não dependerá dos binários por muito tempo. A votação deve ser concluída até o dia 16 de novembro.

Plano a longo prazo da Oracle é ver o JavaFX superar o toolkit UI já existente, como o Swing. Mas não há planos de remover o Swing do Java e é possível usar os dois em um aplicativo. O código fonte para o JavaFX deve ser lançado sob a GPLv2 com a exceção do Classpath.

Com informações de The H

Fonte: IMasters

Tags | , , , , , , , ,

07

nov
2011

Sem Comentários

Em Blog

Por Allison

Node v0.6.0 é lançado

Em 07, nov 2011 | Sem Comentários | Em Blog | Por Allison

A equipe de desenvolvimento do Node anunciou o terceiro branch estável do Node v0.6. Segundo os desenvolvedores, eles congelarão JavaScript, C++ e interfaces binárias para todos os releases v0.6.

As maiores diferenças entre as versões v0.4 e v0 são: suporte nativo para Windows usando I/O Completion Ports para sockets; equilíbrio de carregamento integrado entre múltiplos processos; melhor suporte para IPC entre instâncias do Node; melhor linha de comando do debugger; ligação integrada ao zib para compressão; e atualização do v8 3.1 para 3.6.

Para dar suporte ao Windows, os desenvolvedores retrabalharam grande parte da arquitetura principal. Havia o receio de que isso prejudicasse a performance em sistemas UNIX, mas esse não foi o caso.

Na última versão do Node, a v0.4, os desenvolvedores só conseguiram rodar o Node no Windows com Cygwin. Entretanto, eles conseguiram importantes melhorias ao focar nas APIs nativas.

Por enquanto, usuários não têm acesso a um bom caminho para construírem módulos de aplicativos em Visual Studio – isso será feito em releases futuros.

Para aqueles que atualizarem suas bases de código da v0.4 para v0.6, há uma documentação disponível que mostra a maioria dos problemas com os quais eles terão que lidar. Apesar da longa lista de mudanças, a maior parte da API permaneceu intocável.

Além disso, os desenvolvedores informaram que o ciclo de liberação de versões do Node será bem apertado agora. Eles esperam liberar uma nova versão estável em janeiro e desejam sincronizar a liberação de releases com a do Chrome e a do V8, que é de 6 semanas.

Mais detalhes sobre as mudanças da v0.5.12 para a v0.6.0 e benchmarks podem ser encontrados aqui. O download do Node v0.6.0 pode ser feito através deste link e sua documentação está disponível aqui.

Fonte: IMasters

Tags | , , , , , ,

21

out
2011

Sem Comentários

Em Blog

Por Allison

Microsoft libera preview do “Roslyn”

Em 21, out 2011 | Sem Comentários | Em Blog | Por Allison

A Microsoft lançou nesta semana uma versão preview do “Roslyn”, um novo tipo de compilador baseado no conceito de “Compiler-as-a-Service” (CaaS). Ele foi apresentado pela empresa durante a conferência BUILD, realizada em setembro deste ano.

O Roslyn foi criado para ser um compilador mais aberto, permitindo que os desenvolvedores acessem e utilizem os dados que ele gera durante a compilação do código VB ou C#.

No momento, o Roslyn ainda não é um produto “standalone”. Essa versão preview é uma extensão que deve ser instalada no Visual Studio 2010 SP1.

Requisitos de Sistema

  • Sistemas Operacionais Suportados: Windows 7, Windows Server 2008 R2

Faça o download do Microsoft “Roslyn” aqui.

Informações postadas originalmente Baboo

Fonte: IMasters

Tags | , , , , ,

11

out
2011

Sem Comentários

Em Blog

Por Allison

Microsoft mostra detalhes da redução do uso de memória no Windows 8

Em 11, out 2011 | Sem Comentários | Em Blog | Por Allison

Um dos grandes sucessos do Windows 7 foi a promessa da entrega de menor uso de memória que seu antecessor, o Vista, e se mostrou até mais rápido.

E o Windows 8 pretende continuar essa ‘tradição’. Na conferência //build/, Steven Sinofsky, presidente da Divisão Windows, impressionou os participantes com uma screenshot com o gerenciador de tarefas rodando Windows 7 e Windows 8. O netbook, o mesmo usado na demonstração do pré-beta do Windows 7 há três anos, teve uma redução de quase 120 MB no uso de RAM.

A redução impressiona quando levado em consideração que o Windows 8 inclui o Microsoft Security Essentials integrado a um novo Windows Defender.

Entre as técnicas que a equipe da Microsoft utilizou para atingir essa redução elas estão:

Compartilhar porções de memória em diferentes processos: o gerenciador de memória do Windows tenta remover bloqueios do sistema de memória que já são duplicados em outros programas executados. As porções “únicas” de memória são aquelas relatadas no gerenciador de tarefas, na coluna “Memória”, dos Windows 7 e 8.

Colocar mais serviços carregamento sob demanda ou na inicialização manual: comparado com o Windows 7, os serviços Plug and Play, Windows Update, e User PnP Framework são carregados sob demanda no Windows 8. Ou seja, eles são ativados por um gatilho e continuam sendo executados para completar uma tarefa requisitada antes de serem desligados. O Windows 8 também tem novos serviços no novo suporte para o sistema operacional, mas eles são carregados sob demanda ou configurados para uma inicialização manual.

Mais detalhes podem ser vistos no blog Building Windows 8.

Informações originalmente publicadas em Neowin

Fonte: IMasters

Tags | , , , , ,

07

set
2011

Sem Comentários

Em Blog

Por Allison

Windows ganha instalador de MySQL

Em 07, set 2011 | Sem Comentários | Em Blog | Por Allison

A Oracle anunciou que já está disponível um novo instalador do MySQL para o Windows. Usando o GUI-based, os usuários podem instalar todos os produtos do MySQL ao mesmo tempo – um sistema de atualização integrado para todos os produtos instalados já está incluído. A empresa afirma que o instalador do banco de dados de códigos abertos para o Windows irá simplificar e reduzir o tempo do processo de instalação.

Ao mesmo tempo, a Oracle confirmou que terminou a certificação da Enterprise Edition do MySQL para o Windows Server 2008 R2 Clustering Failover, permitindo que os usuários do Windows instalem aplicativos que exijam altos níveis de disponibilidade.

A companhia irá realizar um seminário online para demonstrar suas novas ferramentas no dia 15 de setembro, às 11h, no horário de Brasília. Mais informações e detalhes no site do seminário.

Fonte: The H

Tags | , , ,

04

set
2011

Sem Comentários

Em Blog

Por Allison

Bazaar 2.4 Apresenta Suporte à Longo Prazo

Em 04, set 2011 | Sem Comentários | Em Blog | Por Allison

Desenvolvedores que trabalham com o sistema distribuído de controle de versão Bazaar, lançaram uma nova edição, que inclui suporte à longo prazo. As atualizações para o ramo de desenvolvimento 2.4.x irão, a partir de agora, ser limitadas a correções de bugs, com novos recursos para a versão 2.5. Esse suporte à longo prazo implementado, será executado até fevereiro de 2013.

Bazaar 2.4 é compatível com versões anteriores; dessa forma, a equipe de desenvolvimento aconselha os usuários a atualizar para a nova versão. Lembrando que o o sistema de controle de versão distribuído não é limitado para o Linux, pois a instalação dos pacotes está disponível para outros sistemas operacionais, incluindo Windows, Mac OS X, Solaris e BSD.

Fonte: Under-Linux

Tags | , , , , , ,

03

set
2011

Sem Comentários

Em Blog

Por Allison

TrueCrypt 7.1 com Suporte Completo à Mac OS X Lion

Em 03, set 2011 | Sem Comentários | Em Blog | Por Allison

O projeto TrueCrypt anunciou a chegada da versão 7.1 da sua ferramenta de código aberto, multi-plataforma e destinada à criptografia de disco. TrueCrypt 7.1, a nova versão estável do projeto, dentro de um período de quase um ano, é uma atualização de manutenção que acrescenta compatibilidade total com sistemas de 32 e 64-bit (versões do Mac OS X 10.7 Lion).

Os desenvolvedores ressaltam que várias melhorias realizadas e algumas correções de falhas, (que afetam todas as plataformas suportadas) também estão incluídas neste release. Todos os detalhes sobre o TrueCrypt 7.1, podem ser encontraoas no seu histórico de versões. Além disso, ele está disponível para download para sistemas Windows, Mac OS X e Linux, e um tutorial para iniciantes também está sendo disponibilizado.

Fonte: Under-Linux

Tags | , , , , ,

31

ago
2011

Sem Comentários

Em Blog

Por Allison

Versão 3.4.3 do LibreOffice é lançada e corrige vários bugs

Em 31, ago 2011 | Sem Comentários | Em Blog | Por Allison

A Document Foundation lançou a versão 3.4.3 do LibreOffice, que traz várias correções de bugs na suíte de software livre.

De acordo com o wiki do projeto, o quarto release da série 3.4.x não adiciona novas funcionalidades. Ele oferece correções no processador de textos Writer, no programa de planilhas Calc e no gerenciador de apresentação Impress, e em bugs em filtros e em bibliotecas. Entretanto, os desenvolvedores alertam que ainda há alguns problemas na atualização, incluindo um classificado como crítico e que será corrigido na versão 3.4.4, esperada para o início de outubro.

Mais detalhes sobre a atualização podem ser vistos nas notas de lançamento, na página da nova versão e no post do blog da Document Foundation. O LibreOffice 3.4.3 está disponível para download para Windows, Mac OS X e Linux.

Fonte: H-online

Tags | , , , , , ,

28

ago
2011

Sem Comentários

Em Blog

Por Allison

Vulnerabilidade XSS no Skype permite injeção de código malicioso

Em 28, ago 2011 | Sem Comentários | Em Blog | Por Allison

De acordo com um pesquisador alemão, uma falha Cross-Site Scripting (XSS) na última versão do Skype ( 5.5.0.113) para sistemas Windows pode permitir que crackers injetem um código malicioso em sessões de telefone dos usuários, podendo até sequestrar seus computadores.

O problema acontece devido a uma falta de validação e sanitização output relacionada ao perfil para número de casa, do escritório e números de telefones móveis, segundo o pesquisador. Apesar de todas essas evidências, o Skype negou que a vulnerabilidade realmente exista.

O pesquisador insistiu na veracidade de suas descobertas, afirmando que a empresa usa HTML para incorporar todas as entradas no perfil dos usuários do Skype. O “parser” não estaria validando a entrada, então houve a possibilidade de injetar código HTML.

Além disso, ele disse que o ataque é executado quando um usuário faz check-out em um perfil, com o código malicioso embutido nas entradas do perfil em questão. O código injetado pode ser um comando JavaScript malicioso ou um hyperlink para um site. A partir desse momento, o usuário é infectado.

Fonte: Under-Linux

Tags | , , , , ,