Meu problema era o seguinte, eu queria acessar minha máquina ubuntu via VNC, tentei através do "Area de trabalho remota" e também com o "Terminal Server" e o resultado sempre era o mesmo, eu conseguia acessar e me conectar no computador remoto mas não conseguia controlar o computador pois alterações ocorriam mas a tela não atualizava, ou seja, conectava mas ficava sem feedback, travado na primeira imagem recebida. Após muito pesquisar a solução recebi uma dica através de um forum: http://www.vivaolinux.com.br/topico/vivaolinux/Area-de-trabalho-remota-conecta-mas-nao-controla/
e a solução é simplesmente executar este comando no computador a ser acessado:
metacity --replace
Ele troca o gerenciador/decorador de janelas Compiz nativo do ubuntu pelo Metacity que permite este tipo de conexão com atualização remota.
Espero ter ajudado alguem não perder horas da sua vida pra descobrir algo tão simples de resolver.
Abraço
24 de nov. de 2009
7 de out. de 2009
Exmplo OSG+PhysX
//--------------------------
//Autor: Tiago buriol
//---------------------------
// C++ includes
#include < stdio.h >
#include < sys/time.h >
// OSG includes
#include < osgViewer/Viewer >
#include < osg/Geometry >
#include < osgGA/TrackballManipulator >
#include < osg/Vec3d >
#include < osg/PositionAttitudeTransform >
#include < osg/ShapeDrawable >
// PhysX include
#include "NxPhysics.h"
// Declaracao de variaveis globais para o PhysX
static NxPhysicsSDK* gPhysicsSDK = NULL;
static NxScene* gScene = NULL;
NxActor* box = NULL;
// Inicializa o Physx e define alguns parametros
static bool InitNx()
{
// Inicializa o PhysX SDK
NxPhysicsSDKDesc desc;
gPhysicsSDK = NxCreatePhysicsSDK(NX_PHYSICS_SDK_VERSION);
if (!gPhysicsSDK) return false;
gPhysicsSDK->setParameter(NX_SKIN_WIDTH, 0.001);
// Cria uma cena
NxSceneDesc sceneDesc;
//sceneDesc.simType = NX_SIMULATION_HW;
sceneDesc.simType = NX_SIMULATION_SW;
sceneDesc.gravity = NxVec3(0.0f, -9.81f, 0.0f);
gScene = gPhysicsSDK->createScene(sceneDesc);
// Set default material
NxMaterial* defaultMaterial = gScene->getMaterialFromIndex(0);
defaultMaterial->setRestitution(0.2f);
defaultMaterial->setStaticFriction(0.01f);
defaultMaterial->setDynamicFriction(0.01f);
// Create ground plane
NxPlaneShapeDesc planeDesc;
//planeDesc.skinWidth = 0.01f;
NxActorDesc actorDesc;
actorDesc.shapes.pushBack(&planeDesc);
actorDesc.globalPose.t = NxVec3(0.0, 0.0, 0.0);
gScene->createActor(actorDesc);
// Add a single-shape actor to the scene
NxActorDesc boxActorDesc;
NxBodyDesc boxBodyDesc;
// The actor has one shape, a box, 1m on a side
NxBoxShapeDesc boxDesc;
boxDesc.dimensions.set(1.0, 1.0, 1.0);
//boxDesc.skinWidth = 0.01f;
boxActorDesc.shapes.pushBack(&boxDesc);
boxActorDesc.body = & boxBodyDesc;
boxActorDesc.density = 5.0f;
boxActorDesc.globalPose.M.fromQuat(NxQuat(30.0, NxVec3(1, 0, 0)));
boxActorDesc.globalPose.t = NxVec3(0,5.0,0);
box = gScene->createActor(boxActorDesc);
//printf("altura %f\n",box->getGlobalPosition().y);
return true;
}
int main(int argc, char** argv)
{
double delta_t;
struct timeval tv1, tv2;
// Cria o visualizador
osgViewer::Viewer viewer;
osg::ref_ptr root = new osg::Group;
osg::Sphere* unitSphere = new osg::Sphere(osg::Vec3(0,0,0), 1.0);
osg::ShapeDrawable* unitSphereDrawable = new osg::ShapeDrawable(unitSphere);
unitSphereDrawable->setColor(osg::Vec4(1, 0, 0, 1));
osg::Geode* unitSphereGeode = new osg::Geode();
unitSphereGeode->addDrawable(unitSphereDrawable);
osg::PositionAttitudeTransform* unitSpherePAT = new osg::PositionAttitudeTransform();
unitSpherePAT->setPosition(osg::Vec3(2.0,0.0,1.0));
unitSpherePAT->addChild(unitSphereGeode);
// Cria o cubo a ser renderizado
osg::Box* unitBox = new osg::Box(osg::Vec3(0,0,-0.5), 1.0, 1.0, 1.0);
osg::ShapeDrawable* unitBoxDrawable = new osg::ShapeDrawable(unitBox);
unitBoxDrawable->setColor(osg::Vec4(1, 1, 0, 1));
osg::Geode* unitBoxGeode = new osg::Geode();
unitBoxGeode->addDrawable(unitBoxDrawable);
osg::PositionAttitudeTransform* unitBoxPAT = new osg::PositionAttitudeTransform();
unitBoxPAT->addChild(unitBoxGeode);
// Desenha um plano
osg::Vec3 coords[] = { osg::Vec3(-3.0, 3.0, -0.01),
osg::Vec3(3.0, 3.0, -0.01),
osg::Vec3(3.0, -3.0, -0.01),
osg::Vec3(-3.0, -3.0, -0.01)
};
osg::Vec3Array* vertices = new osg::Vec3Array(4,coords);
osg::Geometry* planeGeometry = new osg::Geometry();
planeGeometry->setVertexArray(vertices);
planeGeometry->addPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::QUADS,0,4));
osg::Vec4Array* colors = new osg::Vec4Array;
colors->push_back(osg::Vec4(0.8f,0.8f,1.0f,1.0f));
planeGeometry->setColorArray(colors);
planeGeometry->setColorBinding(osg::Geometry::BIND_OVERALL);
osg::Vec3Array *shared_normals = new osg::Vec3Array;
shared_normals->push_back(osg::Vec3(0.0f,-1.0f,0.0f));
// use the shared normal array.
planeGeometry->setNormalArray(shared_normals);
planeGeometry->setNormalBinding(osg::Geometry::BIND_OVERALL);
osg::Geode* planeGeode = new osg::Geode();
planeGeode->addDrawable(planeGeometry);
root->addChild(unitSpherePAT);
root->addChild(unitBoxPAT);
root->addChild(planeGeode);
viewer.setSceneData(root.get());
viewer.setUpViewInWindow(0, 0, 800, 600);
viewer.setCameraManipulator(new osgGA::TrackballManipulator());
viewer.realize();
// Initialize physics scene and start the application main loop if scene was created
if (InitNx())
delta_t = 0.001;
// Loop principal da simulacao
while (!viewer.done()) {
// Pega o tempo inicial
gettimeofday(&tv1, NULL);
// Realiza um passo da simulacao para um intervalo de tempo igual a delta_t
gScene->simulate((NxReal)delta_t);
gScene->flushStream();
gScene->fetchResults(NX_RIGID_BODY_FINISHED, false);
// Sincroniza as posicao e rotacao dos cubos simulado e renderizado
unitBoxPAT->setAttitude(osg::Quat(box->getGlobalOrientationQuat().x,
box->getGlobalOrientationQuat().z,
box->getGlobalOrientationQuat().y,
box->getGlobalOrientationQuat().w) );
unitBoxPAT->setPosition(osg::Vec3d(box->getGlobalPosition().x,
box->getGlobalPosition().z,
box->getGlobalPosition().y) );
// Atualiza o frame
viewer.frame();
// Pega o tempo final e calcula o tempo entre um frame e outro
gettimeofday(&tv2, NULL);
delta_t = (tv2.tv_usec - tv1.tv_usec)*0.000001;
}
return 0;
}
//Autor: Tiago buriol
//---------------------------
// C++ includes
#include < stdio.h >
#include < sys/time.h >
// OSG includes
#include < osgViewer/Viewer >
#include < osg/Geometry >
#include < osgGA/TrackballManipulator >
#include < osg/Vec3d >
#include < osg/PositionAttitudeTransform >
#include < osg/ShapeDrawable >
// PhysX include
#include "NxPhysics.h"
// Declaracao de variaveis globais para o PhysX
static NxPhysicsSDK* gPhysicsSDK = NULL;
static NxScene* gScene = NULL;
NxActor* box = NULL;
// Inicializa o Physx e define alguns parametros
static bool InitNx()
{
// Inicializa o PhysX SDK
NxPhysicsSDKDesc desc;
gPhysicsSDK = NxCreatePhysicsSDK(NX_PHYSICS_SDK_VERSION);
if (!gPhysicsSDK) return false;
gPhysicsSDK->setParameter(NX_SKIN_WIDTH, 0.001);
// Cria uma cena
NxSceneDesc sceneDesc;
//sceneDesc.simType = NX_SIMULATION_HW;
sceneDesc.simType = NX_SIMULATION_SW;
sceneDesc.gravity = NxVec3(0.0f, -9.81f, 0.0f);
gScene = gPhysicsSDK->createScene(sceneDesc);
// Set default material
NxMaterial* defaultMaterial = gScene->getMaterialFromIndex(0);
defaultMaterial->setRestitution(0.2f);
defaultMaterial->setStaticFriction(0.01f);
defaultMaterial->setDynamicFriction(0.01f);
// Create ground plane
NxPlaneShapeDesc planeDesc;
//planeDesc.skinWidth = 0.01f;
NxActorDesc actorDesc;
actorDesc.shapes.pushBack(&planeDesc);
actorDesc.globalPose.t = NxVec3(0.0, 0.0, 0.0);
gScene->createActor(actorDesc);
// Add a single-shape actor to the scene
NxActorDesc boxActorDesc;
NxBodyDesc boxBodyDesc;
// The actor has one shape, a box, 1m on a side
NxBoxShapeDesc boxDesc;
boxDesc.dimensions.set(1.0, 1.0, 1.0);
//boxDesc.skinWidth = 0.01f;
boxActorDesc.shapes.pushBack(&boxDesc);
boxActorDesc.body = & boxBodyDesc;
boxActorDesc.density = 5.0f;
boxActorDesc.globalPose.M.fromQuat(NxQuat(30.0, NxVec3(1, 0, 0)));
boxActorDesc.globalPose.t = NxVec3(0,5.0,0);
box = gScene->createActor(boxActorDesc);
//printf("altura %f\n",box->getGlobalPosition().y);
return true;
}
int main(int argc, char** argv)
{
double delta_t;
struct timeval tv1, tv2;
// Cria o visualizador
osgViewer::Viewer viewer;
osg::ref_ptr
osg::Sphere* unitSphere = new osg::Sphere(osg::Vec3(0,0,0), 1.0);
osg::ShapeDrawable* unitSphereDrawable = new osg::ShapeDrawable(unitSphere);
unitSphereDrawable->setColor(osg::Vec4(1, 0, 0, 1));
osg::Geode* unitSphereGeode = new osg::Geode();
unitSphereGeode->addDrawable(unitSphereDrawable);
osg::PositionAttitudeTransform* unitSpherePAT = new osg::PositionAttitudeTransform();
unitSpherePAT->setPosition(osg::Vec3(2.0,0.0,1.0));
unitSpherePAT->addChild(unitSphereGeode);
// Cria o cubo a ser renderizado
osg::Box* unitBox = new osg::Box(osg::Vec3(0,0,-0.5), 1.0, 1.0, 1.0);
osg::ShapeDrawable* unitBoxDrawable = new osg::ShapeDrawable(unitBox);
unitBoxDrawable->setColor(osg::Vec4(1, 1, 0, 1));
osg::Geode* unitBoxGeode = new osg::Geode();
unitBoxGeode->addDrawable(unitBoxDrawable);
osg::PositionAttitudeTransform* unitBoxPAT = new osg::PositionAttitudeTransform();
unitBoxPAT->addChild(unitBoxGeode);
// Desenha um plano
osg::Vec3 coords[] = { osg::Vec3(-3.0, 3.0, -0.01),
osg::Vec3(3.0, 3.0, -0.01),
osg::Vec3(3.0, -3.0, -0.01),
osg::Vec3(-3.0, -3.0, -0.01)
};
osg::Vec3Array* vertices = new osg::Vec3Array(4,coords);
osg::Geometry* planeGeometry = new osg::Geometry();
planeGeometry->setVertexArray(vertices);
planeGeometry->addPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::QUADS,0,4));
osg::Vec4Array* colors = new osg::Vec4Array;
colors->push_back(osg::Vec4(0.8f,0.8f,1.0f,1.0f));
planeGeometry->setColorArray(colors);
planeGeometry->setColorBinding(osg::Geometry::BIND_OVERALL);
osg::Vec3Array *shared_normals = new osg::Vec3Array;
shared_normals->push_back(osg::Vec3(0.0f,-1.0f,0.0f));
// use the shared normal array.
planeGeometry->setNormalArray(shared_normals);
planeGeometry->setNormalBinding(osg::Geometry::BIND_OVERALL);
osg::Geode* planeGeode = new osg::Geode();
planeGeode->addDrawable(planeGeometry);
root->addChild(unitSpherePAT);
root->addChild(unitBoxPAT);
root->addChild(planeGeode);
viewer.setSceneData(root.get());
viewer.setUpViewInWindow(0, 0, 800, 600);
viewer.setCameraManipulator(new osgGA::TrackballManipulator());
viewer.realize();
// Initialize physics scene and start the application main loop if scene was created
if (InitNx())
delta_t = 0.001;
// Loop principal da simulacao
while (!viewer.done()) {
// Pega o tempo inicial
gettimeofday(&tv1, NULL);
// Realiza um passo da simulacao para um intervalo de tempo igual a delta_t
gScene->simulate((NxReal)delta_t);
gScene->flushStream();
gScene->fetchResults(NX_RIGID_BODY_FINISHED, false);
// Sincroniza as posicao e rotacao dos cubos simulado e renderizado
unitBoxPAT->setAttitude(osg::Quat(box->getGlobalOrientationQuat().x,
box->getGlobalOrientationQuat().z,
box->getGlobalOrientationQuat().y,
box->getGlobalOrientationQuat().w) );
unitBoxPAT->setPosition(osg::Vec3d(box->getGlobalPosition().x,
box->getGlobalPosition().z,
box->getGlobalPosition().y) );
// Atualiza o frame
viewer.frame();
// Pega o tempo final e calcula o tempo entre um frame e outro
gettimeofday(&tv2, NULL);
delta_t = (tv2.tv_usec - tv1.tv_usec)*0.000001;
}
return 0;
}
23 de set. de 2009
NVidia PhysX 2.8.1 com o Eclipse 3.5 no Linux Ubuntu 9.04 - Setup and Run
1) Baixando e Instalando o PhysX
Baixar em: http://developer.nvidia.com/object/physx_downloads.html
Então, a partir do diretório de download, descompactar e instalar todos os pacotes. Usuários de sistemas 64 bit precisam forçar a instalação via linha de comando:
Nem todos os exemplos funcionam corretamente. Um dos que funcionam é o
2) Compilando e rodando seu próprio projeto
Agora, para compilar um exemplo usando o Eclipse (neste caso o Galileo, v3.5) fazemos o seguinte:
Primeiramente, em máquinas 64bit certifique-se que você possui as extensões 32bit do gcc instaladas
Em Directories adicione os seguintes caminhos (paths):
Agora, em GCC C++ Linker e em Libraries, adicione as bibliotecas (libs):
64bit: Em Library search path:
Um projeto com as configurações já feitas: SampleBoxesCDT.tar
Você pode rodar esses exemplos com as linhas de comando abaixo:
Fonte: http://about.something.pl/art/howto-setup-physx-sdk-in-linux.html
Baixar em: http://developer.nvidia.com/object/physx_downloads.html
Então, a partir do diretório de download, descompactar e instalar todos os pacotes. Usuários de sistemas 64 bit precisam forçar a instalação via linha de comando:
64bit:Bibliotecas compartilhadas são instaladas em do diretório específico da versão “/usr/lib/PhysX/v2.8.1/”, assim, é preciso likar com “/usr/lib”.
sudo dpkg -i --force-architecture *.deb
Pronto! Tente rodar algum exemplo do diretório “/usr/sbin/PhysX_Samples_2.8.1_FC4/Bin/linux/”.sudo ln -s /usr/lib/PhysX/v2.8.1/libNxCharacter.so.1 /usr/lib/libNxCharacter.so.1sudo ln -s /usr/lib/PhysX/v2.8.1/libNxCooking.so.1 /usr/lib/libNxCooking.so.1sudo ln -s /usr/lib/PhysX/v2.8.1/libPhysXCore.so.1 /usr/lib/libPhysXCore.so.1
Nem todos os exemplos funcionam corretamente. Um dos que funcionam é o
/usr/sbin/PhysX_Samples_2.8.1_FC4/Bin/linux/SampleBoxes
2) Compilando e rodando seu próprio projeto
Agora, para compilar um exemplo usando o Eclipse (neste caso o Galileo, v3.5) fazemos o seguinte:
Primeiramente, em máquinas 64bit certifique-se que você possui as extensões 32bit do gcc instaladas
64bit:Crie um novo projeto C++ vazio (Empty Project) e vá em Propriedades. Vá em Settings e na seção C/C++ Build. Então vamos configurar as flags do g++ para compilar o projeto corretamente: em GCC C++ Compiler, em Preprocessor adicione as seguintes palavras em Definied symbols:
sudo apt-get install g++-multilib lib32stdc++6
LINUX, NX32, CORELIB, NX_DISABLE_FLUIDS
Em Directories adicione os seguintes caminhos (paths):
/usr/include/PhysX/v2.8.1/SDKs/Physics/include64bit: Em Miscellaneous adicione em Other flags
/usr/include/PhysX/v2.8.1/LowLevel/API/include
/usr/include/PhysX/v2.8.1/SDKs/Cooking/include
/usr/include/PhysX/v2.8.1/SDKs/PhysXLoader/include
/usr/include/PhysX/v2.8.1/LowLevel/hlcommon/include
/usr/include/PhysX/v2.8.1/SDKs/Foundation/include
/usr/include/PhysX/v2.8.1/SDKs/NxCharacter/include
64bit:Esta flag irá dizer para o compilador para criar binários 32bit ao invés de 64bit.
-m32
Agora, em GCC C++ Linker e em Libraries, adicione as bibliotecas (libs):
dl, pthread, PhysXLoaderAs bibliotecas GLU, GL, glut são da Glut e OpenGL, necessários para rodar esse exemplo.
GLU, GL, glut
64bit: Em Library search path:
/usr/lib3264bit: Em Miscellaneous:
-m32Bom, agora o ambiente está configurado, experimente rodar os códigos contido em: SampleBoxes.tar
Um projeto com as configurações já feitas: SampleBoxesCDT.tar
Você pode rodar esses exemplos com as linhas de comando abaixo:
g++ -DNX_DISABLE_FLUIDS -DCORELIB -DNX32 -DLINUX -I/usr/include/PhysX/v2.8.1/SDKs/Physics/include -I"" -I/usr/include/PhysX/v2.8.1/LowLevel/API/include -I/usr/include/PhysX/v2.8.1/SDKs/Cooking/include -I/usr/include/PhysX/v2.8.1/SDKs/PhysXLoader/include -I/usr/include/PhysX/v2.8.1/LowLevel/hlcommon/include -I/usr/include/PhysX/v2.8.1/SDKs/Foundation/include -I/usr/include/PhysX/v2.8.1/SDKs/NxCharacter/include -O3 -Wall -c -fmessage-length=0 -m32 -o"SampleBoxes.o" "./SampleBoxes.cpp"
g++ -L/usr/lib32 -m32 -o"physx_test" ./SampleBoxes.o -lPhysXLoader -lGLU -lGL -lglut -ldl -lpthread
Fonte: http://about.something.pl/art/howto-setup-physx-sdk-in-linux.html
Marcadores:
Configuração,
Dicas,
Eclipse,
Linux,
NVidia,
PhysX,
Ubuntu 9.04
28 de ago. de 2009
Instalar o PyCUDA no Ubuntu 9.04
Fonte: http://wiki.tiker.net/PyCuda/Installation/Linux/Ubuntu
1) Instalando o NumPy
$ sudo apt-get install python-numpy -y
2) Baixando, decompactando e instalando PyCUDA
Instalando as bibliotecas necessárias…$ sudo apt-get install build-essential python-dev python-setuptools libboost-python1.37-dev -yBaixando (http://pypi.python.org/pypi/pycuda/0.93rc3) e descompactando PyCUDA
$ tar xzvf pycuda-0.93rc3.tar.gzConfigurando, construindo e instalando
$ cd pycuda-0.93rc3$./configure.py --cuda-root=/usr/local/cuda --cudadrv-lib-dir=/usr/lib/ --boost-inc-dir=/usr/include/ --boost-lib-dir=/usr/lib/ --boost-python-libname=boost_python-mt --boost-thread-libname=boost_thread-mt
$ make -j 4$ sudo python setup.py install
21 de ago. de 2009
Instalando o Subversion com Apache 2 e SSL no Ubuntu 9.04
I) Atualizando e instalando os pacotes utilizados
Para atualizar os repositórios do apt e instalar quaisquer atualizações disponíveis:
$ sudo apt-get update
$ sudo apt-get upgrade
Os pacotes necessários são:
1) subversion – pacote contendo arquivos binários, ferramentas de administração svnadmin e distribuição svnserve;
2) libapache2-svn – módulos mod_dav_svn e mod_authz_svn que permitem o acesso aos repositórios através do protocolo http e https via WebDAV;
3) apache2 – servidor web. Veja mais em: http://pt.wikipedia.org/wiki/Servidor_Apache;
4) ssl-cert – pacote que permite a instalação de outros pacotes que precisam criar certificados SSL. Leia também sobre OpenSSL.
Para instalação desse pacotes:
$ sudo apt-get install subversion libapache2-svn apache2 ssl-cert
II) Abilitando o suporte ao SSL
Para habilitar o suporte a SSL no Apache 2 é necessário criar um certificado digital utilizando o comando make-ssl-cert e um arquivo modelo de configuração. Por padrão o Ubuntu 9.04 já traz este modelo em /usr/share/ssl-cert/ssleay.cnf com o seguinte conteúdo:
Crie o diretório onde o certificado será criado:
$ sudo mkdir /etc/apache2/ssl
Agora, utilizando o make-ssl-cert e o modelo no arquivo ssleay.cnf vamos criar o certificado armazenando-o no arquivo apache.pem:
$ sudo make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/apache.pem
Surgirá uma tela, como a figura abaixo, onde será solicitado o nome do servidor. Você pode preencher com o IP da máquina se desejar.

Para definir a permissão ao arquivo.
$ sudo chmod 660 /etc/apache2/ssl/apache.pem
III) Configurando Apache 2 e habilitando o SSL
Verifique se o Apache 2 para que seja habilitada o suporte a porta 443. Para isso visualize o arquivo ports.conf no diretório do Apache 2:
$ gedit /etc/apache2/ports.conf
Seu arquivo deverá estar como mostro abaixo:
Para habilitar o módulo de suporte ao SSL no Apache 2 é necessário utilizar o script a2enmod. O a2enmod criará um link simbólico no diretório /etc/apache2/mod-enabled. Para desabilitar um módulo utilize o script a2dismod. A linha de comando é:
$ sudo a2enmod ssl
O último passo da configuração do Apache 2, para o perfeito funcionamento do SSL, consiste em criar o arquivo svn em /etc/apache2/sites-available, este arquivo deve conter as configurações para a porta 443, ou seja, a porta ao qual definimos como responsável pelo SSL.
Para isso vamos copiar o arquivo default que está em /etc/apache2/sites-available para o arquivo svn.
$ sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/svn
Agora edite o arquivo utilizando, por exemplo, o gedit:
$ sudo gedit /etc/apache2/sites-available/svn
Altere a linha VirtualHost *:80 para VirtualHost *:443 e logo abaixo adicione as linhas:
1) SSLEngine on – Ativa se definida como “on” a utilização do protocolo SSL/TLS;
2) SeverSignature On – Ativa ou desativa a exbição da assinatura do servidor, ou seja, a linha que exibe as configurações do Apache. Por exemplo: Apache/2.2.9 (Ubuntu) DAV/2 SVN/1.5.1 PHP/5.2.6-2ubuntu4.1 with Suhosin-Patch mod_ssl/2.2.9 OpenSSL/0.9.8g Server at 192.168.0.30 Port 44. Na influencia no funcionamento do servidor;
3) SSLCertificateFile – Define o caminho para certificado.
Após a criação do arquivo svn, então é necessário habilitá-lo no Apache 2. Para isso utilize o script a2ensite. Este script habilita arquivos que contenham o bloco no Apache2. Para desabilitar um arquivo de configuração utilize o script a2dissite. A linha de comando é esta:
Reinicialize o Apache 2 com o comando:
Caso ocorra algum erro, então consulte o arquivo de log do Apache 2. Este arquivo está localizado em /var/log/apache2/error.log.
Teste seu servidor, digitando no navegador o endereço IP precedido por https, por exemplo: https://200.45.202.123.
Você poderá ver uma página como a da figura abaixo. Fique tranquilo! Essa mensagem não reflete um problema em seu servidor. Na verdade a mensagem é exibida, pois você configurou um certificado próprio (auto-assinado) e não foi emitido por uma autoridade certificadora, como é o caso de sites que utilizam certificado homologado pela VeriSign. Apenas clique no link “você pode adicionar uma exceção” e depois no botão “Adicionar exceção…”. Aparecerá seu endereço IP. “Clique em verificar certificado” e logo em seguida, clique no botão “Confirmar exceção de segurança”. Pronto.

Importante, este comando serve apenas para quando se está criando o primeiro usuário, para outros usuários deve ser utilizado o mesmo comando sem a opção -c , pois ela faz a criação do arquivo, deve ser utilizado apenas a opção -m para que a senha armazenada seja com HASH MD5
Repare que no final da linha, após o caminho, existe o nome de usuário utilizado, ou seja, admin. Após executado comando acima, será solicitada uma senha. Evite esquecer a senha.
Após a definição da senha, então devemos editar o arquivo dav_svn.conf para habilitar o WebDAV e o SVN no Apache 2.
Entendendo as linhas de configuração:
1)Como o repositório deve aparecer no navegador, no caso irá aparecer https://ip-do-servidor/svn;
2) DAV svn – habilita o repositório;
3) SVNParentPath – utilizado para múltiplos repositórios;
4) AuthType Basic – define o método de autenticação de usuário. É possível inclusive utilizar LDAP para habilitar Single sign-on. Prometo que farei um post sobre essa configuração;
5) AuthName – serve apenas como descritivo;
6) AuthUserFile – caminho do arquivo criado pelo comando htpasswd;
7) Require valid-user – confi guração para que apenas usuários autenticados tenham acesso ao repositório. É possível tornar o servidor acessível à usuários anônimos, porém eu não acho uma boa prática;
8) SSLRequireSSL – obriga que a comunicação com o servidor de controle de versão seja feita sobre o protocolo SSL.
Após configurado o arquivo de integração entre o Subversion e o Apache 2, então é necessário reinicializar o Apache 2:
$ sudo /etc/init.d/apache2 force-reload
Acesse, através do seu navega dor, o endereço https://ip-do-servidor/svn/teste. Assim você estará testando seu novo servidor de controle de versão com Subversion. Caso ele esteja funcionando corretamente, após a autenticação, será exibida uma página como abaixo:

Pronto. O servidor de controle de versão com Subversion, Apache 2 com SSL no Ubuntu Intrepid Ibex está funcionado. O próximo post virá com dicas de utilização.
Fontes:
1) http://andreferraro.wordpress.com/2009/04/05/linux-instalando-o-subversion-com-apache-2-e-ssl-no-ubuntu-intrepid-ibex-ubuntu-810/
2) https://help.ubuntu.com/9.04/serverguide/C/subversion.html
3) http://moisesfontana.blogspot.com/2007/09/mover-repositrio-do-svn-entre.html
4) https://help.ubuntu.com/9.04/serverguide/C/subversion.html
5) http://linuxieu.blogspot.com/2009/06/ubuntu-subversion.html
Para atualizar os repositórios do apt e instalar quaisquer atualizações disponíveis:
$ sudo apt-get update
$ sudo apt-get upgrade
Os pacotes necessários são:
1) subversion – pacote contendo arquivos binários, ferramentas de administração svnadmin e distribuição svnserve;
2) libapache2-svn – módulos mod_dav_svn e mod_authz_svn que permitem o acesso aos repositórios através do protocolo http e https via WebDAV;
3) apache2 – servidor web. Veja mais em: http://pt.wikipedia.org/wiki/Servidor_Apache;
4) ssl-cert – pacote que permite a instalação de outros pacotes que precisam criar certificados SSL. Leia também sobre OpenSSL.
Para instalação desse pacotes:
$ sudo apt-get install subversion libapache2-svn apache2 ssl-cert
II) Abilitando o suporte ao SSL
Para habilitar o suporte a SSL no Apache 2 é necessário criar um certificado digital utilizando o comando make-ssl-cert e um arquivo modelo de configuração. Por padrão o Ubuntu 9.04 já traz este modelo em /usr/share/ssl-cert/ssleay.cnf com o seguinte conteúdo:
#Não há problemas caso você não faça nenhuma modificação neste modelo.
# SSLeay example configuration file.
#
RANDFILE = /dev/urandom
[ req ]
default_bits = 1024
default_keyfile = privkey.pem
distinguished_name = req_distinguished_name
prompt = no
policy = policy_anything
Crie o diretório onde o certificado será criado:
$ sudo mkdir /etc/apache2/ssl
Agora, utilizando o make-ssl-cert e o modelo no arquivo ssleay.cnf vamos criar o certificado armazenando-o no arquivo apache.pem:
$ sudo make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/apache.pem
Surgirá uma tela, como a figura abaixo, onde será solicitado o nome do servidor. Você pode preencher com o IP da máquina se desejar.

Para definir a permissão ao arquivo.
$ sudo chmod 660 /etc/apache2/ssl/apache.pem
III) Configurando Apache 2 e habilitando o SSL
Verifique se o Apache 2 para que seja habilitada o suporte a porta 443. Para isso visualize o arquivo ports.conf no diretório do Apache 2:
$ gedit /etc/apache2/ports.conf
Seu arquivo deverá estar como mostro abaixo:
NameVirtualHost *:80
Listen 80
# SSL name based virtual hosts are not yet supported, therefore no
# NameVirtualHost statement here
Listen 443
$ sudo a2enmod ssl
O último passo da configuração do Apache 2, para o perfeito funcionamento do SSL, consiste em criar o arquivo svn em /etc/apache2/sites-available, este arquivo deve conter as configurações para a porta 443, ou seja, a porta ao qual definimos como responsável pelo SSL.
Para isso vamos copiar o arquivo default que está em /etc/apache2/sites-available para o arquivo svn.
$ sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/svn
Agora edite o arquivo utilizando, por exemplo, o gedit:
$ sudo gedit /etc/apache2/sites-available/svn
Altere a linha VirtualHost *:80 para VirtualHost *:443 e logo abaixo adicione as linhas:
SSLEngine onVamos entender cada uma das três linhas acima:
ServerSignature On
SSLCertificateFile /etc/apache2/ssl/apache.pem
1) SSLEngine on – Ativa se definida como “on” a utilização do protocolo SSL/TLS;
2) SeverSignature On – Ativa ou desativa a exbição da assinatura do servidor, ou seja, a linha que exibe as configurações do Apache. Por exemplo: Apache/2.2.9 (Ubuntu) DAV/2 SVN/1.5.1 PHP/5.2.6-2ubuntu4.1 with Suhosin-Patch mod_ssl/2.2.9 OpenSSL/0.9.8g Server at 192.168.0.30 Port 44. Na influencia no funcionamento do servidor;
3) SSLCertificateFile – Define o caminho para certificado.
Após a criação do arquivo svn, então é necessário habilitá-lo no Apache 2. Para isso utilize o script a2ensite. Este script habilita arquivos que contenham o bloco
$ sudo a2ensite svn
$ sudo /etc/init.d/apache2 force-rel oad
Teste seu servidor, digitando no navegador o endereço IP precedido por https, por exemplo: https://200.45.202.123.
Você poderá ver uma página como a da figura abaixo. Fique tranquilo! Essa mensagem não reflete um problema em seu servidor. Na verdade a mensagem é exibida, pois você configurou um certificado próprio (auto-assinado) e não foi emitido por uma autoridade certificadora, como é o caso de sites que utilizam certificado homologado pela VeriSign. Apenas clique no link “você pode adicionar uma exceção” e depois no botão “Adicionar exceção…”. Aparecerá seu endereço IP. “Clique em verificar certificado” e logo em seguida, clique no botão “Confirmar exceção de segurança”. Pronto.

Configurando o Subversion
Vamos criar um repositório de teste para que possamos garantir a correta instalação (e na sequência vamos finalizar a instalação). Para criarmos um repositório é necessário criar um diretório e a partir dele, alterarmos o “proprietário” do diretório e definir as permissões. Após estes passos, então poderemos adicioná-lo ao Subversion com o comando svnadmin. Com o svnadmin é possível manipular usuários, projetos, repositórios e acessos.Agora vamos habilitar a autenticação no Apache 2. O htpasswd é o responsável pela criação e atualização de arquivos que armazenam o nome de usuário (login) e a senha para autenticação via HTTP.$ sudo mkdir /var/svn/teste
$ sudo chown -R www-data:www-data /var/svn/teste
$ sudo chmod -R g+ws /var/svn/teste
$ sudo svnadmin create /var/svn/teste
$ sudo htpasswd -c -m /etc/apache2/dav_svn.passwd admin
Importante, este comando serve apenas para quando se está criando o primeiro usuário, para outros usuários deve ser utilizado o mesmo comando sem a opção -c , pois ela faz a criação do arquivo, deve ser utilizado apenas a opção -m para que a senha armazenada seja com HASH MD5
Repare que no final da linha, após o caminho, existe o nome de usuário utilizado, ou seja, admin. Após executado comando acima, será solicitada uma senha. Evite esquecer a senha.
Após a definição da senha, então devemos editar o arquivo dav_svn.conf para habilitar o WebDAV e o SVN no Apache 2.
Agora altere o arquivo dav_svn.conf para a estrutura como mostrada abaixo:$ sudo gedit /etc/apache2/mods-available/dav_svn.conf
DAV svn
SVNParentPath /var/svn
AuthType Basic
AuthName "Repositorio da Logica Digital"
AuthUserFile /etc/apache2/dav_svn.passwd
Require valid-user
SSLRequireSSL
1)
2) DAV svn – habilita o repositório;
4) AuthType Basic – define o método de autenticação de usuário. É possível inclusive utilizar LDAP para habilitar Single sign-on. Prometo que farei um post sobre essa configuração;
5) AuthName – serve apenas como descritivo;
6) AuthUserFile – caminho do arquivo criado pelo comando htpasswd;
7) Require valid-user – confi
8) SSLRequireSSL – obriga que a comunicação com o servidor de controle de versão seja feita sobre o protocolo SSL.
Após configurado o arquivo de integração entre o Subversion e o Apache 2, então é necessário reinicializar o Apache 2:
$ sudo /etc/init.d/apache2 force-reload
Acesse, através do seu navega

Pronto. O servidor de controle de versão com Subversion, Apache 2 com SSL no Ubuntu Intrepid Ibex está funcionado. O próximo post virá com dicas de utilização.
1) http://andreferraro.wordpress.com/2009/04/05/linux-instalando-o-subversion-com-apache-2-e-ssl-no-ubuntu-intrepid-ibex-ubuntu-810/
2) https://help.ubuntu.com/9.04/serverguide/C/subversion.html
3) http://moisesfontana.blogspot.com/2007/09/mover-repositrio-do-svn-entre.html
4) https://help.ubuntu.com/9.04/serverguide/C/subversion.html
5) http://linuxieu.blogspot.com/2009/06/ubuntu-subversion.html
Marcadores:
Apache2,
Configurações,
Dicas,
Linux,
Subversion,
Ubuntu 9.04
10 de ago. de 2009
Como fazer o checkout (SVN) de um projeto utilizando o Eclipse subversion
Versões de software utilizadas:
Ubuntu (Jaunty)
Eclipse Galileo
Subeclipse 1.4.x
Baixe o Eclipse
http://www.eclipse.org/downloads/download.php
Como esta versão não precisa ser instalada, descompacte em uma pasta e execute o eclipse.
Instale o Subeclipse
Vá em Windows -> Preferences -> Install/Update -> Avaliable Software
clique em Add, e digite:
Name: Subversion
Location: http://subclipse.tigris.org/update_1.4.x
Agora vá em Help -> Install New Software
Em Work with selecione Subversion como na imagem abaixo

Check os 3 ítens referentes ao subversion e clique em next -> next -> finish
Pronto, o subeclipse está instalado
Existem duas formas de iniciar um projeto de software utlizando o subeclipse:
1) Criar um novo projeto SVN diretamente apartir do repositório SVN
Clique File -> New -> Project -> SVN - > Checkout Projects from SVN
Selecione create a new repository location, digite o endereço do repositório
A seguir aparecerá o conteúdo do repositório, selecione a pasta do programa, aquela que contem os arquivos e diretórios do sistema (src, Debug, etc).
Selecione Check out as a project in the workspace, você alterar o nome do projeto que aparecerá na sua máquina, next -> finish.
2) Importar um projeto local já "checkado"
Caso você já tenha feito o ckeckout do seu projeto na sua máquina local. OBS: Isso pode ser feito através de programas svn client como o Tortoise (para windows) ou o rapidSVN (para linux).
Altere o workspace para o diretório no qual está contido o seu projeto: File -> Switch Workspace
Vá em File -> Import -> General -> Existing projects into workspace
Agora clique em Browse e selecione a pasta do projeto, o diretório aparecerá checkado como na figura abaixo, clique em Finish.

Se tudo ocorreu bem você terá o seu projeto já devidamente configurado e com os ícones personalizados assim como na imagem abaixo.

Sucesso a todos
Matheus Rosendo
Ubuntu (Jaunty)
Eclipse Galileo
Subeclipse 1.4.x
Baixe o Eclipse
http://www.eclipse.org/downloads/download.php
Como esta versão não precisa ser instalada, descompacte em uma pasta e execute o eclipse.
Instale o Subeclipse
Vá em Windows -> Preferences -> Install/Update -> Avaliable Software
clique em Add, e digite:
Name: Subversion
Location: http://subclipse.tigris.org/update_1.4.x
Agora vá em Help -> Install New Software
Em Work with selecione Subversion como na imagem abaixo

Check os 3 ítens referentes ao subversion e clique em next -> next -> finish
Pronto, o subeclipse está instalado
Existem duas formas de iniciar um projeto de software utlizando o subeclipse:
1) Criar um novo projeto SVN diretamente apartir do repositório SVN
Clique File -> New -> Project -> SVN - > Checkout Projects from SVN
Selecione create a new repository location, digite o endereço do repositório
A seguir aparecerá o conteúdo do repositório, selecione a pasta do programa, aquela que contem os arquivos e diretórios do sistema (src, Debug, etc).
Selecione Check out as a project in the workspace, você alterar o nome do projeto que aparecerá na sua máquina, next -> finish.
2) Importar um projeto local já "checkado"
Caso você já tenha feito o ckeckout do seu projeto na sua máquina local. OBS: Isso pode ser feito através de programas svn client como o Tortoise (para windows) ou o rapidSVN (para linux).
Altere o workspace para o diretório no qual está contido o seu projeto: File -> Switch Workspace
Vá em File -> Import -> General -> Existing projects into workspace
Agora clique em Browse e selecione a pasta do projeto, o diretório aparecerá checkado como na figura abaixo, clique em Finish.

Se tudo ocorreu bem você terá o seu projeto já devidamente configurado e com os ícones personalizados assim como na imagem abaixo.

Sucesso a todos
Matheus Rosendo
Como configurar o OSG em Linux
Este tutorial foi escrito utilizando as seguintes versões de sistemas:
Eclipse Galileo
Ubuntu (Jaunty) 9.04
OpenSceneGraph 2.8.2
Cmake 2.6
Instale o compilador g++ e o CMake
Use o seguinte comando:
#apt-get install g++
#apt-get install cmake
instale a OpenGl Utility Toolkit
#apt-get install freeglut-dev
Instale as dependencias do OSG:
#apt-get install libtiff4-dev
#apt-get build-dep openscenegraph
Instale o OSG
Baixe o arquivo OpenSceneGraph-2.8.2.zip em http://www.openscenegraph.org/projects/osg/wiki/Downloads
Crie uma pasta chamada osg e descompacte o arquivo nesta pasta
Entre na pasta osg e rode o CMake
#cd osg
#ccmake OpenSceneGraph-2.8.2
Pressione "t" para ver a lista completa de variáveis
vá até o item OPENGL_glu_LIBRARY e coloque ao lado a seguinte path: /usr/lib/libGLU.so
Para que as bibliotecas sejam instaladas no diretório padrão vá até o item CMAKE_INSTALL_PREFIX e coloque ao lado: /usr
Pressione "c" para configurar e então pressione o "g" para gerar o Makefile.
Volte para o terminal com o diretorório corrente "osg"
Agora rode o comando make para compilar a biblioteca e instalá-la no sistema.
#make
#make install (caso ocorra algum erro por falta de privilegios de administrador digite #sudo make install)
Reinicie o computador
Instale o java
Obs: Caso ainda não tenha instalado (necessário para rodar o Eclipse)
#apt-get install sun-java6-jre
Instale e configure o Eclipse
Como no momento em que este artigo foi escrito a versão do eclipse estava desatualizada no repositório do debian, utilizaremos a última versão do eclipse cdt para desenvolvedores C++ disponível em http://www.eclipse.org/downloads/download.php. Esta versão não precisa ser instalada, apenas descompacte o conteúdo do arquivo (pasta eclipse), entre na pasta eclipse e rode o arquivo eclipse
Crie um novo projeto C++
Vá em File -> New -> C++ Project, digite "osgteste" em Project Name, Finish.
Adicione as bibliotecas OSG
Entre em GCC C++ Linker-> Libraries, para cada biblioteca clique no botão Add e entre com o nome. Nesta versão (2.8.2) são elas:
OpenThreads, osgAnimation, osgFX, osgManipulator, osgShadow, osgTerrain, osgUtil, osgVolume, osg, osgDB, osgGA, osgParticle, osgSim, osgText, osgViewer, osgWidget
Rode um exemplo
Substitua o conteúdo do arquivo osgteste.cpp criado pelo eclipse pelo conteúdo de um dos exemplos osg, como por exemplo, o osganimationmakepath. Este e mais vários outros exemplos estão disponíveis para download em
http://www.openscenegraph.org/projects/osg/wiki/Support/UserGuides/Examples. Com o projeto selecionado vá em Project -> Build Project para compilar e então pressione Ctrl + F11 para rodar o exemplo.
Pronto! Se tudo deu certo você verá uma bolinha se movimentando pela tela.
Sucesso a todos!
Matheus Rosendo
Eclipse Galileo
Ubuntu (Jaunty) 9.04
OpenSceneGraph 2.8.2
Cmake 2.6
Instale o compilador g++ e o CMake
Use o seguinte comando:
#apt-get install g++
#apt-get install cmake
instale a OpenGl Utility Toolkit
#apt-get install freeglut-dev
Instale as dependencias do OSG:
#apt-get install libtiff4-dev
#apt-get build-dep openscenegraph
Instale o OSG
Baixe o arquivo OpenSceneGraph-2.8.2.zip em http://www.openscenegraph.org/projects/osg/wiki/Downloads
Crie uma pasta chamada osg e descompacte o arquivo nesta pasta
Entre na pasta osg e rode o CMake
#cd osg
#ccmake OpenSceneGraph-2.8.2
Caso ocorra o erro: "ccmake: command not found", instale o cmake-curses-gui e tente de novo
# apt-get install cmake-curses-gui
Pressione "t" para ver a lista completa de variáveis
vá até o item OPENGL_glu_LIBRARY e coloque ao lado a seguinte path: /usr/lib/libGLU.so
Para que as bibliotecas sejam instaladas no diretório padrão vá até o item CMAKE_INSTALL_PREFIX e coloque ao lado: /usr
Pressione "c" para configurar e então pressione o "g" para gerar o Makefile.
Volte para o terminal com o diretorório corrente "osg"
Agora rode o comando make para compilar a biblioteca e instalá-la no sistema.
#make
#make install (caso ocorra algum erro por falta de privilegios de administrador digite #sudo make install)
Reinicie o computador
Instale o java
Obs: Caso ainda não tenha instalado (necessário para rodar o Eclipse)
#apt-get install sun-java6-jre
Instale e configure o Eclipse
Como no momento em que este artigo foi escrito a versão do eclipse estava desatualizada no repositório do debian, utilizaremos a última versão do eclipse cdt para desenvolvedores C++ disponível em http://www.eclipse.org/downloads/download.php. Esta versão não precisa ser instalada, apenas descompacte o conteúdo do arquivo (pasta eclipse), entre na pasta eclipse e rode o arquivo eclipse
Crie um novo projeto C++
Vá em File -> New -> C++ Project, digite "osgteste" em Project Name, Finish.
Adicione as bibliotecas OSG
Entre em GCC C++ Linker-> Libraries, para cada biblioteca clique no botão Add e entre com o nome. Nesta versão (2.8.2) são elas:
OpenThreads, osgAnimation, osgFX, osgManipulator, osgShadow, osgTerrain, osgUtil, osgVolume, osg, osgDB, osgGA, osgParticle, osgSim, osgText, osgViewer, osgWidget
Rode um exemplo
Substitua o conteúdo do arquivo osgteste.cpp criado pelo eclipse pelo conteúdo de um dos exemplos osg, como por exemplo, o osganimationmakepath. Este e mais vários outros exemplos estão disponíveis para download em
http://www.openscenegraph.org/projects/osg/wiki/Support/UserGuides/Examples. Com o projeto selecionado vá em Project -> Build Project para compilar e então pressione Ctrl + F11 para rodar o exemplo.
Pronto! Se tudo deu certo você verá uma bolinha se movimentando pela tela.
Sucesso a todos!
Matheus Rosendo
Marcadores:
Configuração,
Dicas,
Eclipse,
Linux,
OpenSceneGraph,
Ubuntu 9.04
9 de ago. de 2009
Dicas para instalar drivers da nVidia no Linux
Para instalar os drivers de placas gráficas da nVidia no Linux (no meu caso Ubuntu 9.04), às vezes, é preciso "derrubar" a interface gráfica antes. Isso pode ser feito facilmente com os comandos descritos a seguir.
Inicialmetne é preciso baixar os drivers no site da nVidia (www.nvidia.com). Para o driver da placa, acesse este link. Se desejar instalar também os drivers para CUDA, use este link. Observe que será necessario, para o CUDA, instalar: (1) o driver, (2) o toolkit e (3) o SDK. nessa ordem.
Feito os downloads, abra um terminal e digite
$sudo /etc/init.d/gdm stop
para derrubar a inteface gráfica.
Depois pressione Alt+F2 para voltar ao prompt. Faça o login novamente se for solicitado. Então, a partir do diretório onde foram salvos os drivers baixados, use algo como
$sudo sh nome-do-arquivo-do-driver-baixado.run
para rodar o instalador.
Bom, aí o programa de instalação irá fazer algumas perguntas, possivelmente vai compilar o núcleo do driver, vai perguntar se você quer que ele atualize o arquivo de configuração xorg.config,etc.
De forma semelhante, você pode instalar os driver para CUDA, o Toolkit e o SDK.
Depois de finalizado, use
$sudo /etc/init.d/gdm restart
para reiniciar a interface gráfica.
Fui!
Marcadores:
Configuração,
CUDA,
Dicas,
NVidia,
Ubuntu 9.04
Assinar:
Postagens (Atom)