Problema: como verificar se um diretório existe antes de criá-lo. Uma solução simples é usar o stat. Neste código não existe o tratamento de exceções.
void criarDiretorio(std::string nome) {
struct stat st;
if(stat(nome.c_str(),&st) == 0)
{
std::cout << "Diretorio " << nome.c_str() << " existe \n";
}
else
{
mkdir(nome.c_str(), S_IRWXU);
}
}
O objetivo deste blog é apresentar soluções para os problemas que vou encontrando utilizando as ferramentas do Linux.
Mostrando postagens com marcador linux. Mostrar todas as postagens
Mostrando postagens com marcador linux. Mostrar todas as postagens
segunda-feira, 20 de dezembro de 2010
sexta-feira, 17 de dezembro de 2010
[SO] Visualização de Processos PID e PPID
Ei.. vamos falar um pouco sobre processos. No Linux os processos possuem vários atributos, dentre eles, existem o PID (Identificação do Processo) e o PPID (Identificação do Pai do Processo). Estes identificadores são valores numéricos e servem para identificar o processo e o processo que originou este processo.
Para visualizar informações completas sobre todos os processos você pode utilizar o seguinte comando:
vivas@musashi:~$ ps -aef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 07:50 ? 00:00:01 /sbin/init
root 2 0 0 07:50 ? 00:00:00 [kthreadd]
root 3 2 0 07:50 ? 00:00:01 [ksoftirqd/0]
Podemos também visualizar informações específicas, isto é, filtrar alguns parâmetros:
vivas@musashi:~$ ps -e -o pid,ppid,command
PID PPID COMMAND
1 0 /sbin/init
2 0 [kthreadd]
3 2 [ksoftirqd/0]
4 2 [migration/0]
5 2 [watchdog/0]
6 2 [migration/1]
7 2 [ksoftirqd/1]
8 2 [watchdog/1]
9 2 [migration/2]
10 2 [ksoftirqd/2]
11 2 [watchdog/2]
12 2 [migration/3]
Para visualizar informações completas sobre todos os processos você pode utilizar o seguinte comando:
vivas@musashi:~$ ps -aef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 07:50 ? 00:00:01 /sbin/init
root 2 0 0 07:50 ? 00:00:00 [kthreadd]
root 3 2 0 07:50 ? 00:00:01 [ksoftirqd/0]
Podemos também visualizar informações específicas, isto é, filtrar alguns parâmetros:
vivas@musashi:~$ ps -e -o pid,ppid,command
PID PPID COMMAND
1 0 /sbin/init
2 0 [kthreadd]
3 2 [ksoftirqd/0]
4 2 [migration/0]
5 2 [watchdog/0]
6 2 [migration/1]
7 2 [ksoftirqd/1]
8 2 [watchdog/1]
9 2 [migration/2]
10 2 [ksoftirqd/2]
11 2 [watchdog/2]
12 2 [migration/3]
quinta-feira, 16 de dezembro de 2010
[BROFFICE] Calcular Dia da Semana
Para calcular o dia da semana que cai em uma determinada data usei as seguintes funções. =ESCOLHER(DIA.DA.SEMANA(A1:A1);"Dom";"Seg";"Ter";"Qua";"Qui";"Sex";"Sab")
A1:A1 -> na célula A1 fica a data (ex. 23/02/2011). Pronto!
Agora é terminar de fazer o cronograma para o próximo semestre.
A1:A1 -> na célula A1 fica a data (ex. 23/02/2011). Pronto!
Agora é terminar de fazer o cronograma para o próximo semestre.
Marcadores:
broffice,
data,
dia da semana,
linux,
ubuntu
quarta-feira, 15 de dezembro de 2010
Programação Avançada no Linux
Ei Colegas, existe uma boa referência para quem deseja aprender aspectos mais avançados de programação no Linux: Advanced Linux Programming. O livro está disponível para download na Web no site:
http://www.advancedlinuxprogramming.com/alp-folder
Segue o sumário do livro:
Chapter 01 - Advanced Unix Programming with Linux
Chapter 02 - Writing Good GNU/Linux Software
Chapter 03 - Processes
Chapter 04 - Threads
Chapter 05 - Interprocess Communication
Chapter 06 - Mastering Linux
Chapter 07 - The /proc File System
Chapter 08 - Linux System Calls
Chapter 09 - Inline Assembly Code
Chapter 10 - Security
Chapter 11 - A Sample GNU/Linux Application
Appendix A - Other Development Tools
Appendix B - Low Level I/O
Appendix C - Table of Signals
Appendix D - Online Resources
Appendix E - Open Publication License Version 1.0
Appendix F - The GNU General Public License
http://www.advancedlinuxprogramming.com/alp-folder
Segue o sumário do livro:
Chapter 01 - Advanced Unix Programming with Linux
Chapter 02 - Writing Good GNU/Linux Software
Chapter 03 - Processes
Chapter 04 - Threads
Chapter 05 - Interprocess Communication
Chapter 06 - Mastering Linux
Chapter 07 - The /proc File System
Chapter 08 - Linux System Calls
Chapter 09 - Inline Assembly Code
Chapter 10 - Security
Chapter 11 - A Sample GNU/Linux Application
Appendix A - Other Development Tools
Appendix B - Low Level I/O
Appendix C - Table of Signals
Appendix D - Online Resources
Appendix E - Open Publication License Version 1.0
Appendix F - The GNU General Public License
segunda-feira, 13 de dezembro de 2010
Tux Guitar sem som Ubuntu 10.10
Prezados Amigos, hoje fui verificar a instalação do programa similar ao guitar pro no ubuntu. O tux guitar é um ótimo programa para que gosta de música e é compatível com a maioria das versões do Guitar pro. Entretanto ao instalar o programa verifiquei que ele ficou sem som. Para resolver o problema basta seguir os seguintes procedimentos:
1. Instale o tuxguitar (se ele ainda não tenha sido instalado)
2. Instale o pacote tuxguitar-jsa

3. Abre o menu -> Ferramentas -> Plugins

4. Desabilite a opção "Alsa output plugin" e OSS output plugin (se existir). No meu caso eu mantive o OSS output plugin. Tente as duas opções com o OSS e sem o OSS
5. Habilite a opção Java sound API Plugin

6. Reinicie o Aplicativo.
Achei esta solução no seguinte link: http://www.guiadohardware.net/comunidade/tuxguitar-som/995542/
1. Instale o tuxguitar (se ele ainda não tenha sido instalado)
2. Instale o pacote tuxguitar-jsa

3. Abre o menu -> Ferramentas -> Plugins

4. Desabilite a opção "Alsa output plugin" e OSS output plugin (se existir). No meu caso eu mantive o OSS output plugin. Tente as duas opções com o OSS e sem o OSS
5. Habilite a opção Java sound API Plugin

6. Reinicie o Aplicativo.
Achei esta solução no seguinte link: http://www.guiadohardware.net/comunidade/tuxguitar-som/995542/
Marcadores:
guitar pro,
linux,
som,
tux guitar,
ubuntu,
Ubuntu 10.10
quinta-feira, 22 de julho de 2010
Script para converter vídeo no formato rmvb para avi
Este script converte todos os arquivos (todos com formato rmvb) para formato avi.
1. crie um documento texto chamado converte.sh
2. copie o script para ele
#!/bin/bash
for a in *; do
if [ -f "$a" ]; then
b="${a%.rmvb}" #retira a extensao do arquivo
mencoder $a -oac mp3lame -lameopts preset=128 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=1200 -ofps 25 -of avi -o $b.avi
fi
done
3. dê permissão de execução
chmod u+x converte.sh
4. para executar basta
./converte.sh
1. crie um documento texto chamado converte.sh
2. copie o script para ele
#!/bin/bash
for a in *; do
if [ -f "$a" ]; then
b="${a%.rmvb}" #retira a extensao do arquivo
mencoder $a -oac mp3lame -lameopts preset=128 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=1200 -ofps 25 -of avi -o $b.avi
fi
done
3. dê permissão de execução
chmod u+x converte.sh
4. para executar basta
./converte.sh
quinta-feira, 15 de julho de 2010
Palm + Evolution + Ubuntu
Depois de um grande tempo sem usar meu Palm hoje tentei resolver novamente o problema no Ubuntu 10.04. Instalei o programa gnome-pilot com as seguintes configurações:
1. na aba de dispositivos usei USB com device: usb
2. na aba PDA adicionei meu dispositivo (com o mesmo nome do palm)
3. na aba de conduits coloquei: habilitei Backup e EAddress, Ecalendar, EMemos, Etodo, Expense como sincronização.
Estava dando uns erros, pois o nome que coloquei no dispositivo era diferente do que realmente estava no meu Palm.
Depois só apertei o Hotsync e pronto. O interessante é que as tarefas aparecem no calendário do desktop do computador. Achei isso muito interessante. Enfim.. posso usar meu Palm
1. na aba de dispositivos usei USB com device: usb
2. na aba PDA adicionei meu dispositivo (com o mesmo nome do palm)
3. na aba de conduits coloquei: habilitei Backup e EAddress, Ecalendar, EMemos, Etodo, Expense como sincronização.
Estava dando uns erros, pois o nome que coloquei no dispositivo era diferente do que realmente estava no meu Palm.
Depois só apertei o Hotsync e pronto. O interessante é que as tarefas aparecem no calendário do desktop do computador. Achei isso muito interessante. Enfim.. posso usar meu Palm
Marcadores:
evolution,
linux,
Palm,
sincronização,
ubuntu
quarta-feira, 23 de junho de 2010
Tabelas em Latex com BR-Office
Você pode fazer uma tabela no br-office (calc) e exportar diretamente para o código em latex. Para
isso você pode usar o seguinte programa:
http://calc2latex.sourceforge.net/
Dica do Vinicius
isso você pode usar o seguinte programa:
http://calc2latex.sourceforge.net/
Dica do Vinicius
terça-feira, 25 de maio de 2010
Habilitando Daytime no Linux
Para você habilitar o serviço daytime no linux basta seguir os seguintes passos:
Instale xinetd
a. sudo aptitude install xinetd
Reinicialize o xinetd
b. sudo invoke-rc.d xinetd reload
Agora vá no arquivo
c. sudo gedit /etc/xinetd.d/daytime
Altere disable = yes para disable = no
antes:
service daytime
{
disable = yes
type = INTERNAL
id = daytime-stream
socket_type = stream
protocol = tcp
user = root
wait = no
}
# This is the udp version.
service daytime
{
disable = yes
type = INTERNAL
id = daytime-dgram
socket_type = dgram
protocol = udp
user = root
wait = yes
}
após alteração:
service daytime
{
disable = no
type = INTERNAL
id = daytime-stream
socket_type = stream
protocol = tcp
user = root
wait = no
}
# This is the udp version.
service daytime
{
disable = no
type = INTERNAL
id = daytime-dgram
socket_type = dgram
protocol = udp
user = root
wait = yes
}
Reinicialize o serviço
c. sudo invoke-rc.d xinetd reload
Pronto..
para testar use telnet localhost 13
Instale xinetd
a. sudo aptitude install xinetd
Reinicialize o xinetd
b. sudo invoke-rc.d xinetd reload
Agora vá no arquivo
c. sudo gedit /etc/xinetd.d/daytime
Altere disable = yes para disable = no
antes:
service daytime
{
disable = yes
type = INTERNAL
id = daytime-stream
socket_type = stream
protocol = tcp
user = root
wait = no
}
# This is the udp version.
service daytime
{
disable = yes
type = INTERNAL
id = daytime-dgram
socket_type = dgram
protocol = udp
user = root
wait = yes
}
após alteração:
service daytime
{
disable = no
type = INTERNAL
id = daytime-stream
socket_type = stream
protocol = tcp
user = root
wait = no
}
# This is the udp version.
service daytime
{
disable = no
type = INTERNAL
id = daytime-dgram
socket_type = dgram
protocol = udp
user = root
wait = yes
}
Reinicialize o serviço
c. sudo invoke-rc.d xinetd reload
Pronto..
para testar use telnet localhost 13
sábado, 1 de maio de 2010
Backup(2): Sincronização com HD Externo
Dica do Reginaldo.. se você quer sincronizar seus dados com um HD externo basta instalar uma ferramenta chamada Grsync. Ele é bem fácil de usar e na primeira vez ela copia todos os dados para seu HD externa. Nas próximas ela só copia as informações que foram alteradas e atualiza seu HD externo.
Ela usa como base o comando rsync (http://everythinglinux.org/rsync/). Com ele você pode até sincronizar dados com servidores externos.
Ela usa como base o comando rsync (http://everythinglinux.org/rsync/). Com ele você pode até sincronizar dados com servidores externos.
terça-feira, 27 de abril de 2010
Ipod + Ubuntu
Tenho um Ipod Shuffle e estou usando para sincronizar o Rhythmbox. Ele é para o ambiente Gnome e isso para Ubuntu é perfeito. Realmente é bem tranquilo usá-lo e bem fácil o processo de instalação (automático para o Ubuntu). Tenho outros players, mas não tive sucesso em usá-los com Ipod
Marcadores:
ipod,
linux,
shuffle,
sincronização,
ubuntu
quarta-feira, 21 de abril de 2010
Desligando a máquina em um horário específico
Para desligar a máquina em um horário específico você pode usar o comando shutdown. Isso é muito útil quando você esta baixando alguma coisa e não quer que seu computador fique ligado a noite toda. Geralmente uso isso quando preciso carregar o Ipod, relógio ou coisa similar. Para desligar em uma hora específica (exemplo 23:00) basta digitar.
sudo shutdown -h 23:00
sudo shutdown -h 23:00
segunda-feira, 12 de abril de 2010
LaTeX Error: Cannot determine size of graphic (no BoundingBox)
Hoje tive o azar de encontrar o erro no latex: LaTeX Error: Cannot determine size of graphic (no BoundingBox). Fiz de tudo para tentar arrumar o problema, mas não tive sucesso. A minha única solução partiu do site http://infoblogs.com.br/view.action?contentId=35392&LaTeX-Incluir-imagens-PNG-e-JPG-bounding-box.html.
Fiz o seguinte coloquei como pacotes \usepackage[dvipdfm]{graphicx} e usei o comando para converter as figuras.. tinha uma chamada figura1.jpg assim usei ebb figura1.jpg. Fiz isso para todas as figuras.
Após isso executei meu arquivo usando o comando latex mesmo e depois converti o dvi para pdf com dvipdfm tarefa3.dvi.
Sinceramente.. hoje apenas resolvi o problema.. depois volto nele e resolvo de uma maneira melhor.
Fiz o seguinte coloquei como pacotes \usepackage[dvipdfm]{graphicx} e usei o comando para converter as figuras.. tinha uma chamada figura1.jpg assim usei ebb figura1.jpg. Fiz isso para todas as figuras.
Após isso executei meu arquivo usando o comando latex mesmo e depois converti o dvi para pdf com dvipdfm tarefa3.dvi.
Sinceramente.. hoje apenas resolvi o problema.. depois volto nele e resolvo de uma maneira melhor.
quarta-feira, 7 de abril de 2010
Processos em execução - Comando Top
Para verificar quais processos estão em execução você pode usar dois comandos - top e ps. O primeiro é o top (entre no terminal e digite top) que é um aplicativo que fica rodando continuamente monitorando a execução.
Para sair do top basta digitar q. Se você tem duas CPUS digite 1 ao entrar no top e ele mostrará a carga das duas CPUs

Para sair do top basta digitar q. Se você tem duas CPUS digite 1 ao entrar no top e ele mostrará a carga das duas CPUs
Verificar tamanho de pastas em um diretório
Para verificar o tamanho de todas as pastas em um diretório basta usar o comando du
du -kh --max-depth=1
1,1M ./dev
648M ./lib
11G ./backup
Com isso dá para saber o tamanho de cada pasta em um formato legível.
du -kh --max-depth=1
1,1M ./dev
648M ./lib
11G ./backup
Com isso dá para saber o tamanho de cada pasta em um formato legível.
Convertendo todos arquivos .eps em um diretório para .jpg
Hoje tive um problema no latex e precisei converter todas as figuras de .eps para .jpg. Achei algumas referências interessantes:
Conversão de figuras:
http://fourforces.wordpress.com/2008/03/27/covert-eps-files-to-jpg-in-linux/
Acessando todos os arquivos em um diretório
http://www.linuxquestions.org/questions/programming-9/bash-script-access-all-files-directory-283582/
Juntando os dois:
#!/bin/bash
for a in *; do
if [ -f "$a" ]; then
b="${a%.eps}" #retira a extensao do arquivo
gs -sDEVICE=jpeg -dJPEGQ=100 -dNOPAUSE -dBATCH -dSAFER -r300 -sOutputFile=$b.jpg $a
mogrify -trim -resize 800x600 $b.jpg
fi
done
Salve o script em um arquivo com a extensão .sh . Depois disso dê permissão de execução no arquivo com chmod u+x script.sh. Para executar... ./script.sh
Conversão de figuras:
http://fourforces.wordpress.com/2008/03/27/covert-eps-files-to-jpg-in-linux/
Acessando todos os arquivos em um diretório
http://www.linuxquestions.org/questions/programming-9/bash-script-access-all-files-directory-283582/
Juntando os dois:
#!/bin/bash
for a in *; do
if [ -f "$a" ]; then
b="${a%.eps}" #retira a extensao do arquivo
gs -sDEVICE=jpeg -dJPEGQ=100 -dNOPAUSE -dBATCH -dSAFER -r300 -sOutputFile=$b.jpg $a
mogrify -trim -resize 800x600 $b.jpg
fi
done
Salve o script em um arquivo com a extensão .sh . Depois disso dê permissão de execução no arquivo com chmod u+x script.sh. Para executar... ./script.sh
Assinar:
Postagens (Atom)