sexta-feira, 11 de março de 2016

Político Honesto

Bom dia. Meu nome Luis Inácio Lalá Fonseca, mas podem me chamar de Lalá. Gostaria de lançar oficialmente, hoje, a minha candidatura a Presidência da República.
Meu compromisso é com a verdade, dito isto deixarei a minha proposta de governo.
Prometo taxar a população brasileira em 43% (quarenta e três por cento), são apenas cinco meses e meio de seus salários. Devolverei para a população, 20% (vinte e um por cento) do montante arrecadado, montante este, suficiente para pagar os aposentados, o funcionalismo público, os pensionistas, fazer os investimentos necessários em infra-estrutura nas áreas da saúde, saneamento básico, educação e saúde pública.
O restante do dinheiro, será utilizado para pagamento da dívida pública, a compra de voto, o caixa 2 dos partidos, para a compra da minha fazenda no Mato Grosso, meu TRIPLEX em Balneário Camboriú. E prometo também criar uma empresa bilionária em nome do meu filho, e ajeitar a vida financeira de todos os meu amigos e parentes.
Prometo ainda que lutarei pelo direito do povo brasileiro, de pagar duas vezes pela educação, direito de pagar um plano de saúde particular, direito de pagar novamente pelo saneamento básico, de pagar pedágios nas rodovias brasileiras e direito ainda, de se trancarem dentro de suas casas para se protegerem da violência que se encontra este nosso país.
Prometo ainda, dar um pão com mortadela e meia xícara de café para quem marchar em meu nome e defender o meu governo. E por último darei o título de “coxinha” para todos que se manifestarem contrários a nossa proposta.
Povo brasileiro, vocês terão o orgulho de eleger o primeiro político honesto do Brasil.
No dia das eleições vote certo, vote no honesto, Lalá para Presidente. A luta continua!
Por: Jean Carlos Zimermann

quinta-feira, 4 de agosto de 2011

Crônica

Como pedir pizza em 2020 – Luiz Fernando Veríssimo

* Telefonista: Pizza Hot, boa noite! 

* Cliente: Boa noite! Quero encomendar pizzas…

* Telefonista: Pode me dar o seu NIDN?

* Cliente: Sim, o meu número de identificação nacional é 6102-1993-8456- 54632107.

* Telefonista: Obrigada, Sr. Lacerda. Seu endereço é Avenida Paes de Barros, 1988 ap. 02 B, e o número de seu telefone é 5494-2366, certo? O telefone do seu escritório da Lincoln Seguros é o 5745-2302 e o seu celular é 9266-2566.

* Cliente: Como você conseguiu essas informações todas?

* Telefonista: Nós estamos ligados em rede ao Grande Sistema Central.

* Cliente: Ah, sim, é verdade! Eu queria encomendar duas pizzas, uma de quatro queijos e outra de calabresa…

* Telefonista: Talvez não seja uma boa idéia…

* Cliente: O quê?

* Telefonista: Consta na sua ficha médica que o Senhor sofre de hipertensão e tem a taxa de colesterol muito alta. Além disso, o seu seguro de vida proíbe categoricamente escolhas perigosas para a sua saúde.

* Cliente: É você tem razão! O que você sugere?

* Telefonista: Por que o Senhor não experimenta a nossa pizza Superlight, com tofu e rabanetes? O Senhor vai adorar!

* Cliente: Como é que você sabe que vou adorar?

* Telefonista: O Senhor consultou o site ‘Recettes Gourmandes au Soja’ da Biblioteca Municipal,dia 15 de janeiro, às 4h27minh, onde permaneceu conectado à rede durante 39 minutos. Daí a minha sugestão…

* Cliente: OK está bem! Mande-me duas pizzas tamanho família!

* Telefonista: É a escolha certa para o Senhor, sua esposa e seus 4 filhos, pode ter certeza.

* Cliente: Quanto é?

* Telefonista: São R$ 49,99.

* Cliente: Você quer o número do meu cartão de crédito?

* Telefonista: Lamento, mas o Senhor vai ter que pagar em dinheiro. O limite do seu cartão de crédito já foi ultrapassado.

* Cliente: Tudo bem, eu posso ir ao Multibanco sacar dinheiro antes que chegue a pizza.

* Telefonista: Duvido que consiga! O Senhor está com o saldo negativo no banco.

* Cliente: Meta-se com a sua vida! Mande-me as pizzas que eu arranjo o dinheiro. Quando é que entregam?

* Telefonista: Estamos um pouco atrasados, serão entregues em 45 minutos. Se o Senhor estiver com muita pressa pode vir buscá-las, se bem que transportar duas pizzas na moto não é aconselhável, além de ser perigoso…

* Cliente: Mas que história é essa, como é que você sabe que eu vou de moto?

* Telefonista: Peço desculpas, mas reparei aqui que o Sr. não pagou as últimas prestações do carro e ele foi penhorado. Mas a sua moto está paga, e então pensei que fosse utilizá-la.

* Cliente: @#%/§@&?#>§/%#!!!!!!!!! !!!!

* Telefonista: Gostaria de pedir ao Senhor para não me insultar… Não se esqueça de que o Senhor já foi condenado em julho de 2006 por desacato em público a um Agente Regional.

* Cliente: (Silêncio)

* Telefonista: Mais alguma coisa?

* Cliente: Não, é só isso… Não, espere… Não se esqueça dos 2 litros de Coca-Cola que constam na promoção.

* Telefonista: Senhor, o regulamento da nossa promoção, conforme citado no artigo 3095423/12, nos proíbe de vender bebidas com açúcar a pessoas diabéticas…

* Cliente: Aaaaaaaahhhhhhhh! !!!!!!!!! Vou me atirar pela janela!!!!!

* Telefonista: E machucar o joelho? O Senhor mora no andar térreo!

sexta-feira, 11 de fevereiro de 2011

Definição datasource postgresql com configuração de pool de conexão no JBOSS

Pessoal depois de tanto quebrar a cabeça com problemas de conexão no PostgreSQL no JBOSS, resolvi publicar como resolvi usando pool de conexão. Segue o xml de configuração do datasource no JBOSS:

<?xml version="1.0" encoding="UTF-8"?>

<!-- $Id: mysql-ds.xml 63175 2007-05-21 16:26:06Z rrajesh $ -->
<!--  Datasource config for MySQL using 3.0.9 available from:
http://www.mysql.com/downloads/api-jdbc-stable.html
-->

<datasources>
  <xa-datasource>
<jndi-name>SaberlivreDS</jndi-name>
<xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class>
<xa-datasource-property name="ServerName">localhost</xa-datasource-property>
<xa-datasource-property name="PortNumber">5432</xa-datasource-property>
<xa-datasource-property name="DatabaseName">kursar</xa-datasource-property>
<xa-datasource-property name="User">windi</xa-datasource-property>
<xa-datasource-property name="Password">windi</xa-datasource-property>
<track-connection-by-tx />
<min-pool-size>5</min-pool-size>
<max-pool-size>20</max-pool-size>
</xa-datasource>
</datasources>

A versão do JBOSS que estou usando é a 4.3.3.

sexta-feira, 14 de janeiro de 2011

Como programadores matam os dragões

Como os programadores matam os dragões…
Java
Chega, encontra o dragão. Desenvolve um framework para aniquilamento de dragões em múltiplas camadas.
Escreve vários artigos sobre o framework, mas não mata o dragão.
.NET
Chega, olha a idéia do Javanês e a copia, tenta matar o dragão, mas é comido pelo réptil.
ASP
Os componentes necessários para levantar a espada são proprietários e caros. Outros tantos componentes proprietários para achar a localização do dragão, e mais outros tantos a localização da princesa. Chama então seu amigo programador de PHP.
C
Chega, olha para o dragão com olhar de desprezo, puxa seu canivete, degola o dragão. Encontra a princesa, mas a ignora para ver os últimos checkins no cvs do
kernel do linux.
C++
Cria um canivete básico e vai juntando funcionalidades até ter uma espada complexa que apenas ele consegue entender … Mata o dragão, mas trava no meio da ponte por causa dos memory leaks.
COBOL
Chega, olha o dragão, pensa que tá velho demais para conseguir matar um bicho daquele tamanho e pegar a princesa e, então, vai embora de volta ao seu
mundinho.
Pascal
Se prepara durante 10 anos para criar um sistema de aniquilamento de dragão… Chegando lá descobre que o programa só aceita lagartixas como entrada.
VB
Monta uma arma de destruição de dragões a partir de vários componentes, parte pro pau pra cima do dragão e, na hora H, descobre que a espada só funciona
durante noites chuvosas…
PL/SQL
Coleta dados de outros matadores de dragão, cria tabelas com N relacionamentos de complexidade ternária, dados em 3 dimensões, OLAP, demora 15 anos para processar a informação. Enquanto isso a princesa virou lésbica.
PHP
Pesquisa bancos de scripts e acha as classes de construção de espada, manuseio da espada, localização da princesa e dragão. Remenda tudo e coloca umas firúlas próprias.
Mata o dragão e casa com a princesa. Como tudo foi feito com gambiarras, o dragão um dia vai ressuscitar e comer os dois.
Ruby
Chega com uma p*t* fama, falando que é o melhor faz tudo, quando vai enfrentar o dragão mostra um videozinho dele matando um dragão … O dragão come ele de tédio.
Smalltalk
Chega, analisa o dragão e a princesa, vira as costas e vai embora, pois eles são muito inferiores.
ASSEMBLY
Acha que está fazendo o mais certo e enxuto, porém troca um A por D, mata a princesa e transa com o dragão.
Shell
Cria uma arma poderosa para matar os dragões, mas na hora H, não se lembra como usá-la.
Shell (2)
O cara chega no dragão com um script de 2 linhas que mata, corta, stripa, pica em pedacinhos e empalha o bicho, mas na hora que ele roda, o script aumenta,
engorda, enfurece e coloca álcool no fogo do dragão.
Fortran
Chega desenvolve uma solução com 45000 linhas de código, mata o dragão vai ao encontro da princesa …
mas esta o chama de tiuzinho e sai correndo atrás do programador java que era elegante e ficou rico.
FOX PRO
Desenvolve um sistema para matar o dragão, por fora é bonitinho e funciona, mas por dentro está tudo remendado. Quando ele vai executar o aniquilador de
dragões lembra que esqueceu de indexar os DBF’s.
CLIPPER
Monta uma rotina que carrega um array de codeblocks para insultar o dragão, cantar a princesa, carregar a espada para memória, moer o dragão, limpar a sujeira, lascar leite condensado com morangos na princesa gostosa, transar com a princesa, tomar banho, ligar o carro, colocar gasolina e voltar pra casa. Na hora de
rodar recebe um “Bound Error: Array Access” e o dragão come ele com farinha.
ANALISTA DE PROCESSOS
Chega ao dragão com duas toneladas de documentação desenvolvida sobre o processo de se matar um dragão genérico, desenvolve um fluxograma super complexo para libertar a princesa e se casar com ela, convence o dragão que aquilo vai ser bom pra ele e que não será doloroso. Ao executar o processo ele estima o esforço e o tamanho do estrago que isso vai causar, consegue o aval do papa, do Buda e do Raul Seixas para o plano, e então compra 2 bombas nucleares, 45 canhões, 1 porta aviões, contrata 300 homens armados até os dentes, quando
na verdade necessitaria apenas da espada que estava na sua mão o tempo todo.

terça-feira, 19 de outubro de 2010

Plagiando os mineiros chilenos...

Plagiando os mineiros chilenos... [Desconheço o autor mas é bem humorado]
Um grupo de 33 mineiros BRASILEIROS fica preso em uma mina a 700
metros de profundidade. (Versão abrasileirada)

1) O Governo Brasileiro cria uma comissão supra-partidária para
iniciar o resgate, incluindo 25 membros da situação e 19 da oposição.
Cada membro com direito a 5 assessores e dois secretários. Os
trabalhos atrasaram três meses, porque não houve acordo para nomear o
presidente da comissão.

2) Como as despesas não estavam previstas, o Governo criou uma CPMF
(Contribuição Provisória para Mineiros Soterrados), que, embora
provisória, tem vigência prevista até 2020.

3) O Chile ofereceu-se paraprestar os equipamentos utilizados no
salvamento daquele pais, mas a carga ficou retida na alfândega
brasileira por mais de três meses. O chefe da fiscalização somente os
liberou após o pagamento de propina.

4) Depois, os equipamentos ficaram parados na estrada brasileira por
quase dois meses, pois o MST havia feito uma invasão e bloqueado a
rodovia.

5) O consulado brasileiros em Santiago demorou dois meses para
conceder visto de entrada no Brasil aos chilenos operadores do
guindaste e da cápsula de salvamento, pois eles não puderam comprovar
fonte de renda no Brasil.

6) Quando finalmente tudo foi “regularizado”, o Sindicato Brasileiro
dos Operadores de Máquinas entrou na Justiça com uma liminar proibindo
o trabalho dos chilenos, pois eles não eram sindicalizados.

7) Como a Justiça brasileira é bastante ágil, a liminar foi
"prontamente" derrubada em seis meses e foi permitido o trabalho dos
chilenos.

8) Quando o guindaste desce a cápsula de salvamento, o cabo de aço se
rompe, pois haviam comprado um cabo de terceira qualidade, embora a
preço de ouro.

9) Criou-se uma CPI para levantar as responsabilidades. Depois de
quatro meses de discussão, acabou sendo arquivada pelo Conselho de
Ética do Senado.

10) FINALMENTE, depois de dois anos e meio, chegou o dia do primeiro resgate.
SURPRESA!!!! O resgatado é o único que ficou preso na mina, pois os
outros 32 eram funcionários “fantasmas” e nunca tinham entrado nela.

terça-feira, 30 de março de 2010

Tutorial: Script para criar uma pasta específica em todas as pastas de usuário /home

Ontem um amigo aqui do Gene que está dando um curso de banco de dados, precisava criar uma pasta chamada firebird em cada pasta de usuário. Dava mais ou menos umas 50 pastas. Ele ia fazer na mão coitado, daí fiz um script pra ele e funcionou, ele ficou feliz da vida.

Resolvi compartilhar com os leitores do blog. Espero que seja útil.  

Tutorial

Primeiramente precisamos obter todas as pastas de /home. Esta é a parte mais fácil, um comando ls resolve. Mas como percorrer estas pastas? Para isso podemos usar o comando for. Fica mais ou menos assim:
cd /home
for $arquivo in $(ls) 
do
done
 Em cada iteração do loop a variável arquivo é alimentada com o arquivo corrente. Agora precisamos saber se esse arquivo é realmente um diretório. Para isso podemos usar o comando test, assim:
if test -d $aquivo 
then
   
fi
A opção -d do comando test verifica se determinado arquivo é um diretório. Com isso conseguimos fazer o nosso script, que fica assim:

cd /home
for numero in $(ls) do
  if test -d $numero
  then
    mkdir $numero/firebird
    chown firebird $numero/firebird echo "Criado diretorio: $numero/firebird com permissão para firebird"
  fi
done

Legal né? E se a pasta firebird já existir em algum diretório? Blz, podemos resolver adicionando mais um if, assim:
cd /home
for numero in $(ls)
do
    if test -d $numero
    then
       if test ! -d $numero/firebird
       then
          mkdir $numero/firebird
          chown firebird $numero/firebird
          echo "Criado diretorio: $numero/firebird com permissão para firebird"
       fi
    fi
done
O ! no comando test serve como negação, o comando -d além de verificar se é um diretório serve pra gente saber se o diretório realmente existe. Bom essa foi a dica. Espero ter ajudado! T+

terça-feira, 23 de março de 2010

Criar e usar um repositório no SVN

Geralmente quando necessito criar um novo repositório no servidor SVN recorro a uma página na net que contém o passo a passo de como fazer.Resolvi duplicar um artigo aqui no blog para que essa importante dica não seja perdida.
Subversion é um software muito usado para controle de versões de sistemas. Muitas vezes desenvolvemos um projeto e precisamos ter um bom controle do seu versionamento, nesse caso o svn é uma ferramenta muito interessante.
Nesse documento estão descritas algumas maneiras de configurar um servidor svn e alguns comandos úteis para usá-lo.
Os pacotes necessários para a instalação e configuração são os seguintes:
  • httpd ou apache ou apache2 (depende da distribuição)
  • subversion
  • mod_dav_svn ou subversion-server ou libapache2-svn (depende da distribuição)
Partiremos do princípio que os pacotes necessários já estão instalados na máquina que será o servidor svn.

Criar um repositório svn no servidor

Nos passos abaixo usaremos um repositório chamado /svn, mas se desejar criá-lo em /home/usuario/svn, ou em qualquer outro local desejado, basta trocar /svn pelo qual será usado em seu servidor.
Antes de criar o repositório precisamos ter o diretório correspondente no sistema, por isso, use o comando abaixo para criá-lo:
# mkdir /svn
Agora vamos executar o comando necessário para criar o repositório /svn, vale lembrar que o comando abaixo deve ser executado em um diretório vazio, porém, já existente no sistema, pois o subversion irá apenas criar toda a estrutura necessária para o controle de versões, então execute o comando abaixo para tal procedimento:
# svnadmin create /svn
Vale uma observação aqui, até a versão 1.1 do subversion, o tipo de repositório padrão era o Berkeley DB, mas a partir da versão 1.2 o padrão passou a ser o FSFS. O suporte FSFS apareceu na versão 1.1. Na 1.0 apenas o Berkeley DB era suportado.
Para especificar o tipo do repositório pode-se usar o argumento --fs-type:
# svnadmin create --fs-type fsfs /svn
  # svnadmin create --fs-type bdb /svn
O repositório criado estará vazio e começará a contar a partir da revisão 0 (zero), a qual corresponderá à sua criação.
Para mais informações sobre o tipo do repositório acesse http://svnbook.red-bean.com/nightly/en/svn.reposadmin.html

Configurar o apache

O apache é usado porque além de ser o servidor http mais usual, através do módulo mod_dav_svn.so ele consegue acessar um repositório svn e torná-lo acessível para clientes que usam o protocolo WebDAV/DeltaV, (é o caso do comando svn, o qual veremos ainda neste documento), ele é uma extensão do protocolo HTTP.
Onde o arquivo de configuração, do subversion, é armazenado pode variar de distribuição para distribuição. Por exemplo, ele pode estar tanto em /etc/httpd/conf.d/subversion.conf, como em /etc/apache/conf/conf.d/subversion.conf, ou até mesmo em outro diretório.
Muitas vezes é possível localiza-lo através do comando locate:
# locate subversion.conf
Por isso, neste documento, trataremos o arquivo de configuração apenas por: subversion.conf.
Vamos abordar duas formas de configuração, são elas:
  • acesso irrestrito para leitura e escrita (sem senha)
  • acesso irrestrito para leitura e acesso restrito para escrita (com senha)
Antes de tudo faça um backup do arquivo de configuração original:
# cp subversion.conf subversion.conf.orig

Ajustar o dono do svn

Como vamos configurar o apache para o gerenciamento do repositório, é importante configurarmos o seu dono, pois estaremos lendo e escrevendo no svn através do protocolo HTTP.
Mude o dono do diretório /svn de root para apache:
# chown -R apache.apache /svn
Essa modificação é necessária para que o svn fique acessível via http. Caso o usuário root continuasse como dono do diretório e dos demais arquivos, o apache não teria permissões para acessá-los. Em algumas distribuições o usuário chama-se www ao invés de apache, verifique o nome do usuário do apache antes de executar esse comando.

Acesso irrestrito para leitura e escrita

Abaixo segue um exemplo de configuração do arquivo subversion.conf para o acesso sem senha. Use-o caso deseje configurar um servidor svn sem senha.
# inicio do arquivo subversion.conf
  
  LoadModule dav_svn_module     modules/mod_dav_svn.so
  LoadModule authz_svn_module   modules/mod_authz_svn.so
  
  
  DAV svn
  SVNPath /svn
  # desliga senha
  SVNPathAuthz off
  
  
  # fim do arquivo subversion.conf

Acesso irrestrito para leitura e acesso restrito para escrita

Abaixo segue um exemplo de configuração do arquivo subversion.conf para o acesso com senha. Use-o caso deseje configurar um servidor svn com senha para escrita.
# inicio do arquivo subversion.conf
  
  LoadModule dav_svn_module     modules/mod_dav_svn.so
  LoadModule authz_svn_module   modules/mod_authz_svn.so
  
  
  DAV svn
  SVNPath /svn
  # autenticando um usuario
  AuthType Basic
  AuthName "Subversion repository"
  AuthUserFile /etc/svn-passwd
  # qualquer operacao que nao seja leitura requer um  usuario valido
  
  Require valid-user
  
  
  
  # fim do arquivo subversion.conf
Mais informações sobre como configurar o arquivo subversion.conf

Criar o arquivo de senha

Se o svn foi configurado com senha, como em um dos exemplos acima, será necessário criar o arquivo /etc/svn-passwd, ou o correspondente da sua configuração, onde serão armazenados os usuários, os quais terão acesso de escrita no repositório /svn e suas respectivas senhas.
Ele pode ser criado por meio do seguinte comando:
# htpasswd -c /etc/svn-passwd root
O comando acima cria o arquivo /etc/svn-passwd e pede que a senha do usuário root seja informada.
Para adicionar um novo usuário pode-se usar o comando abaixo:
# htpasswd /etc/svn-passwd andre
O usuário digita a senha e o arquivo é automaticamente atualizado. Ou o usuário executa o seguinte comando:
# htpasswd -n andre
Envia o resultado do comando para o administrador do svn e ele inclui o usuário e a sua respectiva senha no arquivo correspondente.

Iniciar/Reiniciar o apache

Para efetivar as configurações e tornar o svn acessível através da url: http://nome_do_servidor/svn, precisamos iniciar o apache caso ele esteja parado ou reiniciá-lo, se ele já estiver sendo executado na máquina.
O comando abaixo reinicia o apache estando ele ligado ou desligado:
# service httpd stop && service httpd start
Observe que o comando pode ser diferente dependendo da distribuição que estiver sendo usada, ou seja, ao invés de httpd pode ser apache ou até mesmo apache2.
Agora o seu repositório svn já pode ser acessado, usando um navegador qualquer, através do link:
http://servidor/svn
Se o servidor svn foi configurado em sua rede, em casa, e não há nenhum dns configurado, para responder pelos nomes das máquinas, pode-se usar apenas o ip do servidor:
http://ip_do_servidor/svn

Alguns comandos úteis para manusear projetos no svn configurado

Após criarmos um repositório svn é interessante conhecermos alguns comandos que possibilitam o manuseio desta ferramenta.
Se uma das variáveis de ambiente $SVN_EDITOR, $VISUAL ou $EDITOR não estiverem definidas, provavelmente uma mensagem de erro, semelhante a que segue abaixo, será exibida ao tentar efetuar uma alteração no svn.
svn: Could not use external editor to fetch log message; consider setting the $SVN_EDITOR environment variable or using the --message (-m) or --file (-F) options svn: None of the environment variables SVN_EDITOR, VISUAL or EDITOR is set, and no 'editor-cmd' run-time configuration option was found
Para definir o editor de texto padrão, o qual será usado para escrever os logs dos commits, pode-se usar a seguinte linha de comando:
# export SVN_EDITOR='vim'
Acima definimos que o editor padrão será o vim.
Para que todos os usuários tenham essa variável configurada, basta adicionar a linha de comando acima no arquivo /etc/profile.

Criar um diretório no svn

Antes de adicionarmos um projeto em nosso repositório precisamos criar o diretório onde ele ficará armazenado. Pode-se fazer isso através do seguinte comando:
# svn mkdir http://servidor/svn/projeto

Importar um projeto para o svn

Algumas vezes já temos um projeto em algum canto de nossa máquina; Importe-o para o svn usando a linha de comando abaixo:
# svn import /tmp/projeto http://servidor/svn/projeto
O comando acima importará todos os arquivos do diretório /tmp/projeto para o repositório projeto em http://servidor/svn/
Uma outra maneira de executar o procedimento acima é acessar o diretório e então importá-lo para o svn:
# cd /tmp/projeto
  # svn import http://servidor/svn/projeto

Baixar um projeto do svn

Quando for preciso efetuar modificações em um projeto que já está no svn, antes é preciso fazer o checkout, ou seja, efetuar o download dos arquivos correspondentes ao projeto.
Efetuando o checkout:
# svn co http://servidor/svn/projeto

Efetivar alterações em um projeto do svn

Depois de concluídas as modificações necessárias precisamos colocar a nova revisão do projeto no svn, para isso precisamos efetuar um commit.
De dentro do diretório principal do projeto efetue o commit:
# svn commit

Listar arquivos de um projeto

Depois de efetuar várias mudanças em um projeto baixado do svn, é importante poder listar o seu conteúdo e saber quais arquivos estão armazenados e quais não estão no seu respectivo repositório no svn.
Para isso, execute o seguinte comando no diretório principal do projeto:
# svn list

Adicionar arquivos a um projeto

No decorrer de um projeto novos arquivos surgem e precisam ser adicionados no repositório svn.
Para efetuar essa operação pode-se usar o seguinte comando:
# svn add projeto.c
Quando o commit for efetuado, o arquivo projeto.c será adicionado à árvore correspondente do projeto em que estava trabalhando.

Remover arquivos de um projeto

A medida que arquivos vão sendo incluso no projetos, há a necessidade de excluir alguns.
Use o seguinte comando para efetuar tal operação:
# svn rm projeto.c
É possível remover um projeto inteiro do svn, para isto basta executar:
svn rm http://servidor/svn/projeto
Quando o commit for efetuado, o arquivo projeto.c será removido da árvore onde ele era armazenado e na nova revisão ele não fará mais parte do projeto.

Verificar as alterações antes de efetuar um commit

Na maioria das vezes é interessante, antes de efetuar o commit, verificar quais são as modificações. Para isso usamos o svn diff. Porém, se existirem muitas modificações, é preciso jogar a saída do comando para um editor de texto, sendo assim possível analisar todo o diff gerado.
Executando apenas o svn diff:
svn diff
Jogando a saída para um editor de texto, no caso o vim:
svn diff | vim -
Lembrando que o comando acima mostra as diferenças do diretório onde foi executado e o seu correspondente no svn. Para verificar todas as modificações de um projeto, basta executá-lo na raiz principal dele.

Verificar o log de um projeto

Muitas vezes esquecemos o que fizemos, por isso, ao efetuar um commit o svn sempre pede uma mesagem para ser adicionada ao log do projeto.
Para verificar os logs de um determinado projeto: efetue o checkout dele, acesse o diretório onde ele foi baixado e execute o seguinte comando:
svn log

Obter ajuda dos próprios comandos

Para verificar os comandos disponíveis use:
svn help
Uma série de comandos, possíveis, será listada. Para obter informções sobre um comando em específico use:
svn comando --help
Copiado na íntegra de: http://www.dicas-l.com.br/dicas-l/20050909.php