sábado, 31 de março de 2012

Comando do linux para saber qual é o espaço restante na partição atual

$
df -h $PWD |awk '{print $4}' mostra (o ' é aspas simples):
Usad
9,6G


$
df -h $PWD mostra:

Sist. Arq. Tam Usad Disp Uso% Montado em
/dev/sda1 88G 79G 9,6G 90% /media/00B0DD30B0DD2CC2

O que eu faço aqui na verdade é apenas mostrar a liha disponível, no caso a 4 coluna, para isso utilizo o awk '{print $4}'

Para saber a quantidade de Bytes utilizados na partição atual ($PWD - $PWD (Print Working Directory - imPrimir Diretório de tabalho (work) - imprimir o diretório onde você está executando o comando ))

quinta-feira, 29 de março de 2012

Versão com DataInputStream, DataOutputStream e Exception do código java de servidor tcp de echo do livro do Kurose

Como entendi que o código da página 120 do livro Redes de computadores e a internet: uma abordagem top-down. 5. ed - KUROSE, James F; ROSS, Keith W. Redes de computadores e a internet: uma abordagem top-down. 5. ed. São Paulo: Pearson Education, 2011. 614 p. ISBN 9788588639973 (broch.) [
KUROSE, James F; ROSS, Keith W. Redes de computadores e a internet: uma abordagem top-down. 3. ed. São Paulo: Makron Books, c2006. 634 p. ISBN 9788588639188 (broch.). - página 117 ]induz o leitor ao erro por não trabalhar com as exceptions, que não são poucas, bem como usar BufferedReader ao invés de DataInputStream (BufferedReader não é a melhor alernativa se for trabalhar com envio de arquivos) resolvi fazer uma versão dele com exception e utilizando DataInputStream e DataOutputStream.

O código do Cliente TCP do Kurose:

http://presenteperfeito.99k.org/blog/java/kuroseTCPSocket/TCPClientKurose_java.html


O código do Servidor TCP do Kurose:
http://presenteperfeito.99k.org/blog/java/kuroseTCPSocket/TCPServerKurose_java.html


Já o código do meu Cliente TCP
http://presenteperfeito.99k.org/blog/java/kuroseTCPSocket/TCPClientDM_java.html
Apenas lembrando que para funcionar é necessário que tanto o cliente como servidor sejam compilados juntos (javac TCPServer.java TCPClient.java), pois o cliente utiliza a porta e o host definidos no servidor (para mudar o host e a porta apenas no servidor, e garantir que tanto o cliente como servidor terão a mesma porta)

http://presenteperfeito.99k.org/blog/java/kuroseTCPSocket/TCPServerDM_java.html


Estava tentando enviar arquivos via sockts java, só que ocorriam alguns erros intermitentes, após muitas pesquisas descobri através de
http://javafree.uol.com.br/topic-880337-sockets-perdendo-pacotes.html, que realmente pode acontecer, hora funcionar, hora não, se utilizar a tripa de buffers desorganizado, como sugerido pelo código do Kurose.
Resultado terei que implementar novamente toda a minha comunicação para enviar o arquivo, tudo devido a inexperiência e inobservância do detalhe que é recomendada a leitura e escrita de sockets com DataInputStream e DataOutputStream.

Apenas lembrando que o objetivo do código do Kurose é ser didático, não um código bom para servir de base para implementações TCP em java.

Os meus códigos e do Kurose coloquei tudo compactado em .zip em:

http://presenteperfeito.99k.org/blog/java/kuroseTCPSocket/KuroseDM.zip

terça-feira, 27 de março de 2012

Como saber qual é o sistema operacional utilizando java

Para saber qual o sistema operacional basta
colocar a linha:
System.out.println(System.getProperty("os.name"));

Para saber todas as propriedades de um:
System.out.println(System.getProperties());

O Resultado do System.out.println(System.getProperties()); aqui foi:
{
java.runtime.name=Java(TM) SE Runtime Environment,
sun.boot.library.path=/usr/lib/jvm/java-6-sun-1.6.0.26/jre/lib/amd64,
java.vm.version=20.1-b02,
java.vm.vendor=Sun Microsystems Inc.,
java.vendor.url=http://java.sun.com/,
path.separator=:,
java.vm.name=Java HotSpot(TM) 64-Bit Server VM,
file.encoding.pkg=sun.io,
sun.java.launcher=SUN_STANDARD,
user.country=BR,
sun.os.patch.level=unknown,
java.vm.specification.name=Java Virtual Machine Specification,
user.dir=/media/00B0DD30B0DD2CC2/Documents and Settings/dm/Meus documentos/REC/trabalhos/tb1rec/t,
java.runtime.version=1.6.0_26-b03,
java.awt.graphicsenv=sun.awt.X11GraphicsEnvironment,
java.endorsed.dirs=/usr/lib/jvm/java-6-sun-1.6.0.26/jre/lib/endorsed,
os.arch=amd64,
java.io.tmpdir=/tmp, line.separator=
,
java.vm.specification.vendor=Sun Microsystems Inc.,


os.name=Linux,


sun.jnu.encoding=UTF-8,
java.library.path=/usr/lib/jvm/java-6-sun-1.6.0.26/jre/lib/amd64/server:/usr/lib/jvm/java-6-sun-1.6.0.26/jre/lib/amd64:/usr/lib/jvm/java-6-sun-1.6.0.26/jre/../lib/amd64:/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib,
java.specification.name=Java Platform API Specification,
java.class.version=50.0,
sun.management.compiler=HotSpot 64-Bit Tiered Compilers,
os.version=2.6.32-40-generic,
user.home=/home/dm,
user.timezone=,
java.awt.printerjob=sun.print.PSPrinterJob,
file.encoding=UTF-8,
java.specification.version=1.6,
java.class.path=.,
user.name=dm,
java.vm.specification.version=1.0,
sun.java.command=TCPServer,
java.home=/usr/lib/jvm/java-6-sun-1.6.0.26/jre,
sun.arch.data.model=64,
user.language=pt,
java.specification.vendor=Sun Microsystems Inc.,
java.vm.info=mixed mode,
java.version=1.6.0_26,
java.ext.dirs=/usr/lib/jvm/java-6-sun-1.6.0.26/jre/lib/ext:/usr/java/packages/lib/ext,
sun.boot.class.path=/usr/lib/jvm/java-6-sun-1.6.0.26/jre/lib/resources.jar:/usr/lib/jvm/java-6-sun-1.6.0.26/jre/lib/rt.jar:/usr/lib/jvm/java-6-sun-1.6.0.26/jre/lib/sunrsasign.jar:/usr/lib/jvm/java-6-sun-1.6.0.26/jre/lib/jsse.jar:/usr/lib/jvm/java-6-sun-1.6.0.26/jre/lib/jce.jar:/usr/lib/jvm/java-6-sun-1.6.0.26/jre/lib/charsets.jar:/usr/lib/jvm/java-6-sun-1.6.0.26/jre/lib/modules/jdk.boot.jar:/usr/lib/jvm/java-6-sun-1.6.0.26/jre/classes,
java.vendor=Sun Microsystems Inc.,
file.separator=/,
java.vendor.url.bug=http://java.sun.com/cgi-bin/bugreport.cgi,
sun.io.unicode.encoding=UnicodeLittle,
sun.cpu.endian=little,
sun.desktop=gnome,
sun.cpu.isalist=}

Mas digamos que você deseja saber é a versão da JVM (Java Virtual Machine - Máquina Virtual Java)
Basta colocar a linha:
System.out.println(System.getProperty("java.version"));
em algum lugar do seu programa

quinta-feira, 22 de março de 2012

Comando do linux para listar (ls) apenas os 2 arquivos mais recentes

Comando do linux para listar (ls) apenas os 2 arquivos mais recentes

$ls -trl | tail -2

Se deseja apenas os 3 mais recentes:
ls -trl | tail -3

Apenas os 4:
ls -trl | tail -4

Apenas os 20:
ls -trl | tail -20