terça-feira, 21 de julho de 2009

Um filme que conta um poquinho a história da Apple X Microsoft

Como o meu Amigo Bruno Marchi vive perguntando sobre a apple e a microsoft ...
Resolvi colocar aqui um filme que conta um pouquinho da história da Apple x Microsoft




Veja diretamente na fonte:


http://video.google.com/videoplay?docid=-5586970724807758201&ei=-tNlSob2NILSrAK22YD6CQ&q=piratas+no+vale+do+sil%C3%ADcio

2 links de animações de como funciona o windows

http://www.blogmind.com.br/wp-content/uploads/2006/05/ios.swf

http://www.blogmind.com.br/wp-content/uploads/2006/05/iosII.swf


Não tem nada a ver, mas para converter depois os vídeos necessitarei desse linK:


Vídeo Editando no Linux com o MEncoder:

http://tobal.cymaho.com/?p=82&lang=pt

Mistureba de vídeos Sobre Hardware e artigos sobre o mesmo ...

Como são feitos os Microprocessadores [em espanhol]
Cómo pueden hacer los microprocesadores:

http://www.youtube.com/watch?v=LzCuW39Tna8




How can they made microprocessors:

O mesmo Vídeo Legendado em Português e falado em Inglês:


http://www.youtube.com/watch?v=a4O5NdO_1II





Video que fala do funcionamento do microprocessador em espanhol

Video que habla del funcionamiento del microprecessador:

http://www.youtube.com/watch?v=zUrsiECSh2o









Aulas de Hardware ..

Processador:

http://www.youtube.com/watch?v=xq593cvYNuY







Como são montadas as placas mães;

http://www.youtube.com/watch?v=-ZyijN7oCYU






Placa Mãe:

http://www.youtube.com/watch?v=pz2Ka2E60Bk





Video em Espanhol com legendas em português Sobre o funcionamento interno de um computador:
video en español con escrituras en português del funcionamiento dentro del computador en español:

http://www.youtube.com/watch?v=0A4CxxJ9h24







O funcionamento de um Hd Propaganda da Seagate, mas o vídeo é muito bom:

http://www.youtube.com/watch?v=9QePnWV7ztE




A evolução dos Processadores:

http://www.youtube.com/watch?v=Wu3eGHXcSys





Artigo na Wikipedia que fala um pouco sobre memória ddr e as memórias ddr específicas para placas de aceleração gráfica:

http://pt.wikipedia.org/wiki/GDDR

Artigo que fala inclusive por que DDR ( bem completo ):

http://www.infowester.com/memddr.php

Um pouco sobre processadores:

http://www.infowester.com/processadores1.php

O que as memórias DDR2 tem a mais que as DDR1

http://www.infowester.com/memddr2.php


Os tipos de memória:

http://www.vivaolinux.com.br/artigo/Memorias


http://www.infowester.com/memoria.php

segunda-feira, 20 de julho de 2009

Um pouco de história do Linux em vídeo no youtube ...

Um pouco de história do Linux em vídeo no youtube ...
Selecionei alguns videos que contam brevemente um poquinho da história do Linux ...
Para quem acha, que linux não é usado, foi utilizado para se fazer os filmes vida de inseto, o senhor dos anéis, titanic ...

http://www.youtube.com/watch?v=CeZMsaPCc9s



Em italiano, mas com legendas em Inglês, para quem entende algum dos dois idiomas, o vídeo é muito bom, pois mostra a história de uma maneira bem completa ...!

http://www.youtube.com/watch?v=2LhOggbwDeQ







http://www.youtube.com/watch?v=JaI-JmWa_ZM






Como tudo começou, principalmente por que começou ...!

Vídeo em Inglês, legendado em Português:

http://www.youtube.com/watch?v=sJKh8yq1Qdg




La historia del Open Source ...

GNU/Linux ou Linux ?

Em minha humilde opinião a popularidade do projeto GNU/Linux se deve as ferramentas desenvolvidas no Projeto GNU.

Observe que as ferramentas indispensáveis no linux, como;
gcc, gdb, bash e até mesmo o

GNOME (acrônimo para GNU Network Object Model Environment - um gerenciador de interfaces gráficas que "roda" sob o x ) são originárias do projeto GNU



Imagine como seria interessante ter um sistema operacional, sem o bash, sem o compilador, sem o depurador, sem a interface gráfica ...!
Talvez pensaria para que serve isso ?
Pois seria necessário desenvolver praticamente tudo, compilador, depurador, interface gráfica ...!
A própria idéia de colaboração entre desenvolvedores é originária do projeto GNU !
Mas se o o projeto GNU teve tamanha importância mencionada, por que o GNU/Linux se chama NU/Linux e não apenas GNU ?
Por que foi o núcleo que Linus Torvalds desenvolveu, que foi capaz de rodar os utilitários desenvolvidos para o projeto GNU, como os líderes do projeto GNU resolveram adotar o Núcleo de Linus e não o núcleo que eles estavam desenvolvendo ( Hurd ( Na verdade esse núcleo ainda está sendo desenvolvido ainda ...)) o Linux se popularizou ...!

Analisando a grosso modo o sistema operacional Linux pegou carona na deficiência de um Projeto enorme desenvolvido no MIT ( O Projeto GNU )

Analisando os aspectos expostos, observa-se que Richard Matthew Stallman pode ser o verdadeiro "pai" do linux e não Linus Torvalds ..., mas em fim como quem desenvolveu o Kernel foi Linus e não Stallman, considera-se que o suposto "pai" do GNU/Linux é Linus ...!


Logo os desenvilvedores da distribuição Debian possuem bons argumentos para chamarem sua distribuição ( distro ) de Debian GNU/ Linux


Para Saber mais sobre GNU/Linux acesse:
http://pt.wikipedia.org/wiki/Linux

Para saber mais sobre as principais distros (distribuições) GNU/Linux acesse:
http://olinux.uol.com.br/pegueolinux/distribuicao/

Para saber mais sobre a popularidade das distros GNU/Linux pelo mundo acesse:
http://www.comunidade-linuxnarede.eti.br/modules/news/article.php?storyid=551

Para saber mais s

sexta-feira, 5 de junho de 2009

Apenas algumas músicas em Hindi hopedadas no Pakistão

Como esse blog é uma mistura de viagem com computação ...!

E ando gostando muito das músicas do colega de profissão o indiano Rajat Chamria, pelo menos as que ele tem colocado lá no http://www.esnips.com/
E ele me passou que posso encontar todas as música em:

http://songs.pk/

Caiu a ficha que para achar as música tenho que procurar no
http://www.google.com.pk/

Bem ai vão as Letras de músicas que amo escutar, que quem sabe algum dia as cante ...!

Lyrics to Mauja Hi Mauja :
Baby When I Look Into You Eyes I See The Stars Shine
Baby Here You Shout,
Your Love Has Made Me So Choosy, Cooll!

Jag Jag Sara Jag Sara Nikhar Gaya
Hud Pyaar Ka Vaadhe Vich Bikhar Gaya
Hud

Jag Jag Sara Jag Sara Nikhar Gaya
Hud Pyaar Ka Vaadhe Vich Bikhar Gaya
Hud

Jag Jag Sara Jag Sara Nikhar Gaya
Hud Pyaar Ka Vaadhe Vich Bikhar Gaya

Jag Jag Sara Jag Sara Nikhar Gaya
Hud Pyaar Ka Vaadhe Vich Bikhar Gaya
Hud

Dil Tera Hoi Jaye Apran Jul Jaye
Mar Udhle Dekho Zikhar Gaya
Hud Mauja Hi Mauja
Sham Savere
Hud Mauja Hi Mauja
Pyar Se Tere
Hud Mauja Hi Mauja
Udthe Badi Hud
Mauja Hi Mauja
Mauja Hi Mauja
Sham Savere
Hud Mauja Hi Mauja
Pyar Se Tere
Hud Mauja Hi Mauja
Udthe Badi Hud
Mauja Hi Mauja

Oh Mahi Mera Sharwat Varga
Oh Mahi Tenu Gat Gat Peela
Oh Mahi Mera Dil Menu Dei De Dil Menu Dei De
Khul Ke Jeela
Oh Mahi Mera Sharwat Varga
Oh Mahi Tenu Gat Gat Peela
Oh Mahi Mera Dil Menu Dei Den Dil Menu Dei Den
Khul Ke Jeela
Mitide Ha Se
Oh Mahi Mere Aase Pase
Oh Mahi Mere Haad Beram Huye
Dil Sare Rang Huye
Dil Mahi Sang Huye Jidhar Gaya
Hud Mauja Hi Mauja
Tera Sahare
Hud Mauja Hi Mauja
Hul Hulare Ud
Hud Mauja Hi Mauja
Jaan Huwa Re Hud
Mauja Hi Mauja
Mauja Hi Mauja
Sham Savere
Hud Mauja Hi Mauja
Pyar Se Tere
Hud Mauja Hi Mauja
Udthe Bhadi Hud
Mauja Hi Mauja

Oh Mahi Mera Sone Varga
Oh Mahi Tenu Cham Cham Rakna
Oh Mahi Mera Dil Menu Dei De Dil Menu Dei De
Rajke Takna
Oh Mahi Mera Sone Varga
Oh Mahi Tenu Cham Cham Rakna
Oh Mahi Mera Dil Menu Dei De Dil Menu Dei De
Rajke Takna
Kol Bhithake, Oh Mahi Tere
Sej Sajake , Oh Mahi
Tere Sang Mere Gal Huye
Har Ek Pal Huye
Dil Be Hal Dehko Bikhar Gaya
Hud

Jag Jag Sara Jag Sara Nikhar Gaya
Hud Pyaar Ka Vaadhe Vich Bikhar Gaya
Jag Jag Sara Jag Sara Nikhar Gaya
Hud Pyaar Ka Vaadhe Vich Bikhar Gaya
Dil Tera Hoi Jaye Apran Jul Jaye
Mar Udhle Dehko Zikhar Gaya
Hud Mauja Hi Mauja
Pyaar Pake
Hud Mauja Hi Mauja
Gul Milake
Hud Mauja Hi Mauja
Everybody Now
Mauja Hi Mauja
Mauja Hi Mauja
Pyar Pake
Hud Mauja Hi Mauja
Gul Milake
Hud Mauja Hi Mauja
Everybody Now
Mauja Hi Mauja
[ Mauja Hi Mauja Lyrics on http://www.lyricsmania.com/ ]


http://www.lyricsmania.com/lyrics/jab_we_met_lyrics_46813/other_lyrics_83493/mauja_hi_mauja_lyrics_824469.html



Lyrics to Yeh Ishq Haaye :
Haan Hai Koi To Wajah
To Jeena Ka Maza Yun Aane Laga

Yeh Hawaon Mein Hai Kya
Thoda Sa Jo Naasha Yun Chane Laga
Pucho Na Pucha Mujhe Kya
Hua Hai Teri Raahon Mein Aakar Pucho Na Pucha Na
Pucho Na Pucha Mujhe Kya
Milega Teri Bahon Mein Aakar

Yeh Ishq Haaye Baithe Bithaye
Jannat Dikhaye Haan
O Raama
Yeh Ishq Haaye Baithe Bithaye
Jannat Dikhaye Haan

Todi Mene Sare Hi Bandhan Zamane Tere
Todongi Na Mein Vada
Aadha Hissa Mere To Dil Ki Kahani Ka Tu
Piya Mein Baaki Aadha

Dekho Na Dekho Mujhe Hua Hai
Teri Yaadhon Mein Kho Kar

Pucho Na Pucha Mujhe Kya
Milega Teri Baton Mein Jeekar

Yeh Ishq Haaye Baithe Bithaye
Jannat Dikhaye Haan
O Raama
Yeh Ishq Haaye Baithe Bithaye
Jannat Dikhaye Haan

Mere Jaise Lakho Mile Honge
Tujhko Piya
Mujhe To Mila Tuu Hi

Tu Hi Mere Hooton Ki Khilti Hui Se Hasi
Gila Bhi Piya Tu Hi

Dekho Na Dekho Mujhe Kya Hua Hai
Tujhe Sapno Mein Lakar Dekho Na Dekho

Pucho Na Pucha Mujhe Kya
Hua Hai Teri Baaton Mein Aakar

Yeh Ishq Haaye Baithe Bithaye
Jannat Dikhaye Haan
O Raama
Yeh Ishq Haaye Baithe Bithaye
Jannat Dikhaye Haan

Haan Hai Koi To Wajah
To Jeena Ka Maza Yun Aane Laga

Yeh Hawaon Mein Hai Kya
Thoda Sa Jo Naasha Yun Chane Laga
Pucho Na Pucha Mujhe Kya
Hua Hai Teri Raahon Mein Aakar Pucho Na Pucha Na
Pucho Na Pucha Mujhe Kya
Milega Teri Bahon Mein Aakar
Yeh Ishq Haaye Baithe Bithaye
Jannat Dikhaye Haan
O Raama
Yeh Ishq Haaye Baithe Bithaye
Jannat Dikhaye Haan

Yeh Ishq Haaye Baithe Bithaye
Jannat Dikhaye Haan
O Raama
Yeh Ishq Haaye Baithe Bithaye
Jannat Dikhaye Haan
[ Yeh Ishq Haaye Lyrics on http://www.lyricsmania.com/ ]




Lyrics to Aao Milo Chalo :
[Hum Jo Chalne Lage
Chalne Lage Hai Yeh Raste
Haaan Haaan
Manzil Se Behtar Lagne Lage Hai Yeh Raste ]2

Aao Kho Jaye Hum
Ho Jaye Hum Yun Lapata
Aaao Milo Chale
Jana Kahan Na Ho Pata

Hum Jo Chalne Lage
Chalne Lage Hai Yeh Raste
Haaan Haaan
Manzil Se Behtar Lagne Lage Hai Yeh Raste

[Baithe Baithe Eshe Kaise Koi
Rasta Naya Sa Mile
Tu Bhi Chale Mein Bhi Chalu
Honge Kam Yeh Tabhi Fasle]2

Aao Tera Mera Na Ho Kisi Se Vasta
Aaao Milo Chale
Jana Kahan Na Ho Pata

Hum Jo Chalne Lage
Chalne Lage Hai Yeh Raste
Haaan Haaan
Manzil Se Behtar Lagne Lage Hai Yeh Raste

[Aankhen Khole Neendein Bole Jane
Kasie Jagi Bekhudi
Yahan Wahan Dekho Kahan
Leke Jaane Lagi Bekhudi]2
Aao Mil Jaye Na Ho Jahan Pe Rasta
Aaao Milo Chale
Jana Kahan Na Ho Pata

Hum Jo Chalne Lage
Chalne Lage Hai Yeh Raste
Haaan Haaan
Manzil Se Behtar Lagne Lage Hai Yeh Raste
[ Aao Milo Chalo Lyrics on http://www.lyricsmania.com/ ]


Lyrics to Aaoge Jab Tum :
Naina Tere Kajraare Hai, Naino Pe Hum Dil Haare Hai
Anjaane Hi Tere Naino Ne Waade Kiye Kayi Saare Hai
Saanson Ki Lay Madham Chalein, Tose Gaye Barasega Saawan
Barsega Saawan Jhoom Jhoomke, Do Dil Aise Milenge
Aaoge Jab Tum Ho Saajana, Angana Phool Khilenge

Chanda Ko Taaku Raaton Ko, Hai Zindagi Tere Haanthon Mein
Palkon Pe Jhilmil Taarein Hain, Aana Bhari Barsaaton Mein
Sapnon Ka Jahaan Hoga Kela Kela Barasega Saawan
Barsega Saawan Jhoom Jhoomke, Do Dil Aise Milenge

(Sargam)
Angana Phool Khilenge - 2 (Sargam)
[ Aaoge Jab Tum Lyrics on http://www.lyricsmania.com/ ]


Lyrics to Nagada Nagada Nagada Baja :
Ho Oye Haaye Oye
Rang Puredi Rang Rangili
Ladaki Chail Chabili
Usade Chanchal Nain Kataar
Are Chanchal Nain Kataar Te Usada
Rup Bana Hathiyaar
Usake Rup Se Katal Hue To
Charcha Shuru Hua
Nagaada Nagaada Nagaada Baja
Nagaada Nagaada Nagaada Baja

O
Rang Puredi Rang Rangili
Chail Chabili Naar
Chanchal Nain Kataar Di
Usada Rup Tej Talavaar
Usake Rup Se Katal Hue To
Charcha Shuru Hua
He....
Nagaada Nagaada Nagaada Baja
Nagaada Nagaada Nagaada Baja
Hoai.....

He He He
Jab Bhi Vo Ladaki, Khidaki Pe Aaye
Koii Usako Dekh Mare
Koii Bin Dekhe Mar Jaaye
Are Gujare Gali Mohalle Se
To Mela Sa Lag Jaata Tha
Har Ek Aashik Iid Manaata
Bhangada Gaata Tha
Khatam Na Hota Divaano Ke
Jalase Shuru Hua
He....
Nagaada Nagaada Nagaada Baja
Nagaada Nagaada Nagaada Baja

Are Bachapan Se Usaka
Ek Divaana Tha
Jisaka Kaam Gali Ke Aashik Pare Hataana Tha
Dil Se Jisako Maan Raha Tha
Apane Dil Ki Raani Vo
Aur Kisi Pe Hi Yaaro Marati Thi Marajaani Vo
Ek Kahaani Khatam To Duja Kissa Shuru Hua
Nagaada Nagaada Nagaada Baja
Nagaada Nagaada Nagaada Baja

O......
Rang Puredi Rang Rangili
Chail Chabili Naar
Chanchal Nain Kataar Te
Usaka Rup Tej Talavaar
Usake Rup Se Katal Hue To
Charcha Shuru Hua
Nagaada Nagaada Nagaada Baja
Nagaada Nagaada Nagaada Baja - 4
Hoai...
[ Nagada Nagada Nagada Baja Lyrics on http://www.lyricsmania.com/ ]




Jab We Met - Tum Se Hi lyrics
Artist: Jab We Met lyrics
Album: Other Song Lyrics
Title: Tum Se Hi Correct Tum Se Hi Lyrics Correct these lyrics

Print Tum Se Hi Lyrics Print these lyrics


Send "Tum Se Hi" Ringtone to your Cell


Lyrics to Tum Se Hi :
Na Hai Yeh Pana
Na Khona Hi Hai
Tera Na Hona Jane
Kyun Hona Hi Hai

Tum Se Hi Din Hota Hai
Surmaiye Shaam Aati
Tumse Hi Tumse Hi

Har Ghadi Saans Aati Hai
Zindagi Kehlati Hai
Tumse Hi Tumse Hi

Na Hai Yeh Pana
Na Khona Hi Hai
Tera Na Hona Jane
Kyun Hona Hi Hai

Aankhon Mein Ankhne Teri
Bahoon Mein Baahein Teri
Mera Na Mujhe Mein Kuch Raha Hua Kya
Baaton Mein Baatein Teri
Raatein Saugatein Teri
Kyun Tera Sab Yeh Ho Gaya
Hua Kya
Mein Kahin Bhi Jata Hoon
Tumse Hi Mil Jata Hoon
Tumse Hi Tumse Hi

Shoor Mein Khamoshi Hai
Thodi Se Behoshi Hai
Tum Se Hi Tum Se Hi

Aadha Sa Wada Kabhi
Aadhe Se Jayada Kabhi
Jee Chahe Karlu Is Trah Wafa Ka
Chode Na Chote Kabhi
Tode Na Tute Kabhi
Jo Dhaga Tumse Jud Gaya Wafa Ka

Mein Tera Sharmaya Hoon
Jo Mein Ban Paya Hoon
Tumse Hi Tumse Hi
Raste Miljate Hai
Manzile Miljati Hai
Tumse Hi Tumse Hi

Na Hai Yeh Pana
Na Khona Hi Hai
Tera Na Hona Jane
Kyun Hona Hi Hai
[ Tum Se Hi Lyrics on http://www.lyricsmania.com/ ]












As letras acima foram extraidas de:

http://www.lyricsmania.com/lyrics/jab_we_met_lyrics_46813/all.html

quinta-feira, 4 de junho de 2009

Lista de TLDs

Por curiosidade estava buscando a página indiana do Youtube, é que o grupo indiano Jab We Met, caiu no meu gosto ..., então queria saber como os indianos enxergam esse grupo ...
Agradeço ao Rajat por ter colocado algumas músicas indianas lá no esnips para baixarmos, muito boas por sinal e com letras divinamente belas ...
Mas me espantei por não ter acesso ao site http://www.youtube.com.in/


É para aqueles que dizem que o mundo está na palma das nossas mãos, estão um pouco enganados, existem muitas legislações e certaas limitações tecnológicas que ainda não nos permite navegar pelo mundo inteiro ...

Ou então a gvt bloqueia esses acessos para fora do continente ...

Mais ai vai a lista de domínios, ou como queiram de TLDs, extraída de:


http://pt.wikipedia.org/wiki/Lista_de_dom%C3%ADnios_de_Internet



quarta-feira, 3 de junho de 2009

terça-feira, 26 de maio de 2009

Resultados de tentar lotar o pendrive com arquivos texto














Atingiu-se objetivo dessa experiência, que era provar que existe uma quantidade limitada de arquivos que podem ser criados em partições FAT32 em pendrives e ou Hds com menos de 3 Gigabytes ( 3 GB )

Para compilar e executar o Programa digite na console:
$ gcc t1.c -w -o t1 ; ./t1 /media/DANILO/ >execucao1.txt ; ls -la /media/DANILO/t2/ >> execucao1.txt

Onde:

t1.c : é o nome do arquivo que contém o código fonte (.c)
t1 : é o nome do executável
/media/ : é o nome do local onde são montadas as mídias no sistema operacional ubuntu 8.04 LTS ( Hds, cdroms, pendrives, no meu caso pendrive)
DANILO/ : DANILO é o nome do meu pendrive

execucao1.txt: é o nome do arquivo que guardará o resultado da execução do código fonte (.c) mencionado
t2 : nome da pasta criada onde serão criados os arquivos .txt

Realizou-se o texte com um mp3 player de 2GB estragado da Napoli o Resultado do comando:

$ sudo lsusb
[sudo] password for danilomatias:
Bus 007 Device 011: ID 10d6:1101 Actions Semiconductor Co., Ltd D-Wave 2GB MP4 Player / AK1025 MP3/MP4 Player


O resultado obtido em tentar lotar o pendrive, que a princípio é formatado com partição FAT32, com arquivos do tipo texto de tamanhos entre 46 e 48 bytes foi:

3330 arquivos do tipo textos criados

Para ser mais exato 9 arquivos de 46 bytes criados
111 arquivos de 47 bytes criados
719 de 48 bytes
2491 de 49 bytes


De maneira que concluiu-se, com base nos resultados obtidos, pelo menos nesse Mp3, que o número máximo de arquivos em uma pasta nesse mp3 é de 3330, estima-se que o motivo de tal limitação, ocorre pela implementação do sistema de arquivos desse mp3 ser estática, com vetores estáticos, como pensava-se anteriormente

gcc t2.c -w -o t21 ; ./t21 /media/DANILO/ >execucao10.txt ; ls -la /media/DANILO/ >> execucao10.txt


Quando criou-se os arquivos na pasta raiz do mp3 foram criadas apaneas 7127 arquivos todos juntos com tamanho de aproximadamente 320 KB, de maneira que verifica-se a limitação do número de arquivos novamente, isso deve-se a muito provavelmente ao número de I-nodes ser limitados conforme a teoria de sistemas operacionais vista em sala de acordo com o autor Tanenbaum

Os Códigos feitos para gerarem os arquivos podem ser visualizados no frame abaixo ou na página:

http://danilomatias.net76.net/sistemasOperacionais/livres/linux/ubuntu/8_0_4LTS/pendrive/index.html
































Os códigos fonte dor arquivos t1.c e t2.c podem ser baixados respectivamente em:

http://danilomatias.net76.net/sistemasOperacionais/livres/linux/ubuntu/8_0_4LTS/pendrive/code/t1.c


http://danilomatias.net76.net/sistemasOperacionais/livres/linux/ubuntu/8_0_4LTS/pendrive/code/t2.c










A saída da console [ shell , como queira ] do programa gerado apartir de t1.c foi colocada no arquivo do tipo texto abaixo:



Para ser mais exato o arquivo gerado pela seguinte linha de comando na console do linux:
$gcc t2.c -w -o t2 ; ./t2 /media/DANILO/ >execucao10.txt ; ls -la /media/DANILO/ >> execucao10.txt










http://danilomatias.net76.net/sistemasOperacionais/livres/linux/ubuntu/8_0_4LTS/pendrive/code/execucao10.html



















Já A saída da console [ shell , como queira ] do programa gerado apartir de t2.c foi colocada no arquivo do tipo texto abaixo:



Para ser mais exato o arquivo gerado pela seguinte linha de comando na console do linux:

$ gcc t1.c -w -o t1 ; ./t1 /media/DANILO/ >execucao2.txt ; ls -la /media/DANILO/t2/ >> execucao2.txt










http://danilomatias.net76.net/sistemasOperacionais/livres/linux/ubuntu/8_0_4LTS/pendrive/code/execucao2.html




































Após o colega Anderson Cornelio Castaldo Junior [ andersoncornelio@ig.com.br ] efetuar alguns textes com o software gerado apartir dos códigos fontes mencionados e executá-los em um HD ( Hard Disk - disco Rígido ) de 2,6 Gigabytes ( 2,6 GB ) e em um pendrive de 4 GB, no sistema operacional ubuntu 8.10, pôde-se obter os seguintes resultados, conforme podem ser confirmados nas figuras que seguem:







As figuras acima provam que o dispositivo de armazenamento utilizado na experiência utilizava partição FAT32 ( vfat )
Em uma execução conseguiu-se criar apenas 8332 arquivos, pois conforme pode-se observar nas figuras acima, ocorreu falha de segmentação.
Essa falha de segmentação ocorreu devido ao limite que existe para a criação de um número máximo de arquivos.
Provavelmente esse limite está relacionado com a tabela de I-Nodes do sistema de gerenciamento de arquivos FAT32, esse número de 8332 foi obtido testando-se no hd, observa-se que é muito próximo ao número de arquivos do mp3 player de 2 GB, porém no caso do HD como porvavelmente a tabela de I-nodes é maior, o número de arquivos também é maior ...
Testou-se criar arquivos no diretório raiz, como criar um diretório e criar os arquivos ali, em ambos os casos verificou-se a limitação quanto ao número de arquivos que podem ser criados









Caro leitor sinta-se a vontade para testar o limite de número de arquivos em uma pasta no seu computador, se desejar mandar os resultados para o danilomatias19@gmail.com, sinta-se a vontade , os códigos fontes utilizados nessa experiência foram feitos em linguam de programação C padrão ANSI, com excessão das chamadas de sistema, que são dependentes do sistema operacional hospedeiro, o código funciona em qualquer computador que tenha o gcc instalado

O código t1.c pode ser testado no seu computador, pois não possui chamadas de sistemas diretas no código através da função system(char *c);

Os códigos podem ser baixados em:

http://danilomatias.net76.net/sistemasOperacionais/livres/linux/ubuntu/8_0_4LTS/pendrive/code/

segunda-feira, 25 de maio de 2009

quarta-feira, 20 de maio de 2009

Link de algumas dicas que julguei necessárias em Wondows XP Sp2

Link de algumas dicas que julguei necessárias em Wondows XP Sp2

Coloquei algumas dicas que julguei necessárias em:

http://danilomatias.net76.net/sistemasOperacionais/proprietrio/windows/xpProSP2/dicas/

Bem devo colocar lá se algo mais me incomodar no Windows XP Sp2

quinta-feira, 5 de fevereiro de 2009

comando no broffice para colocar o símbolo §

É algo meio inútil, mas vive enxendo o saco ir lá em inserir símbolos ..., para inserir o símbolo de parágrafo. Aqui no beroffice 3.0.0, funcionou digitando os comandos [[[alt] + [2][4][4]] + [[← Bacspace]] + [ [alt] +[2][4][5] ] ], ou em outras palavras; [[[[Alt] + [2][4][4]] + [[← Bacspace]] + [ [Alt] +[2][4][5] ] ]= §]

Bem espero que essa dica seja útil para mais alguém além de mim ...!

Tudo de bom ...!

domingo, 1 de fevereiro de 2009

link que usei para conseguir instalar a placa wireless de chipset 8187B no ubuntu 8.04

A seis meses vinha tentando fazer funcionar o wireless aqui no notebook W7645 da Itautec no sistema operacional ubuntu 8.04, mas apenas ha pouco achei o link que deu as instruções corretas
O link é:

http://makelinux.blogspot.com/2008/08/placa-wireless-rtl8187b-no-linux.html




curiosamente é outro blog que recomendo fortemente

quinta-feira, 15 de janeiro de 2009

Gabarito de Função em linguagem c estruturada

Estudando mais profundamente a linguagem de programação C++ acabei chegando a conclusão que ela possui tantos recursos excelentes para facilitar a programação, que no fim acabam atrapalhando, muito se discute que C++ é mais eficiente que a lingaugem de programação JAVA que é multiplataforma, mas estudando bem a estrutura de sistemas e o fato de ser multiplataforma acabei chegando a conclusão que se desejo fazer algo realmente eficiente o farei em c estruturando e usando muito os ponteiros, os recursos adicionais podem ser implementados de outra maneira na linguagem c, através de ponteiros para funções, diretivas de programação e uso de macrofunções. A diferença é que se bem implementado em c, fica muito mais eficiente, sem mencionar o aspecto na previsibilidade que o coloca ainda como uma das linguagens preferidas para o desenvolvimento de sistemas operacionais, como por exemplo o unix, linux, bsd's e por ai vai ...!

Um dos aspectos que mosto que é possível fazer com a linguagem c estruturada, é o uso de gabaritos de funções
Logo abaixo menciono como fazer um gabarito de funções utilizando-se de macrofunções.
No exemplo que colocarei logo mais, a função retornará o maior valor entre três números passados para a função
Utilizando macrofunções basta colocar a mesma condição de maioridade e retornar o maior valor, fiz isso aos pares, devido a definição de comparação se dar aos pares e para ficar mais claro.
Abaixo mostro o código com as linhas:

#define MAIOR2(x, y) ( (y>x)? (y): (x))
#define MAIOR3(x, y, z) ( (MAIOR2(x, y)>MAIOR2(x, z))? (MAIOR2(x, y)): (MAIOR2(x, z)))

Realizando a mesma tarefa que o gabarito de função:
template< class T>
T maximo1( T x, T y, T z)
{
T max = x;
if( y > max )
max = y;
if( z > max )
max = z;
return max;
}

Claro que o fato de possuir sintaxe específica, torna o código em c++ mais legível, entretanto se o motivo de se desenvolver em c++ for a eficiência é bom pensar em desenvolver em c, pois é mais eficiente e previsível

Fiz o código para testar a veracidade que é possível fazer gabaritos de função com macrofunções em três arquivos: são eles respectivamente:
- maximo.cpp
- novomain1.cpp
- maximo.h
Abaixo o código inteiro que fiz para testar:




//Este exemplo apresenta o uso de gabaritos de função em C++.
//Autor: Danilo Matias
//E-mail: danilomatias19@gmail.com


template
< class T>

T maximo1( T x, T y, T z)
{

T max = x;

if
( y > max )
max = y;

if
( z > max )
max = z;

return
max;
}





#line 48
/*
* File: novomain1.cpp
* Author: danilomatias192gmail.com
*
* Created on 15 de Janeiro de 2009, 16:00
*/


#include <stdlib.h>
#include "maximo.cpp"
#include "maximo.h"
#include <c++/4.1.2/iostream>

#include <c++/4.1.2/cstdlib>

/*
*
*/



using
std :: cout;

using
std :: cin;
using
std :: endl;


void
a1();
void
a2();
int
main(int argc, char** argv) {

a1();
a2();
return
(EXIT_SUCCESS);
}

void
a2()
{


int
a=5,b=3,c=8;
float
x=5.002,y=3.005,z=5.0001;

char
s1,s2,s3;
cout <<"Os tres numeros inteiros sao "<< a <<" " << b <<" " << c ;

cout <<"\nO maior numero inteiro eh: " <<MAIOR3(a, b, c)<<endl;

//cout <<"\n\nEntre com 3 numeros reais: ";
//cin >>x >>y >>z;
cout <<"Os tres numeros reais sao "<< x <<" " << y <<" " << z<<endl;

cout <<"\nO maior numero float eh: " <<MAIOR3(x, y, z);
cout <<"\n\nEntre com 3 caracteres: ";

cin >>s1 >>s2 >>s3;
cout <<"\nO maior caracter eh: " <<MAIOR3(s1, s2, s3) <<endl;

}


void
a1()
{

int
a=5,b=3,c=8;

float
x=5.002,y=3.005,z=5.0001;
char
s1,s2,s3;

cout <<"Os tres numeros inteiros sao "<< a <<" " << b <<" " << c ;

cout <<"\nO maior numero inteiro eh: " <<maximo1(a,b,c)<<endl;
//cout <<"\n\nEntre com 3 numeros reais: ";
//cin >>x >>y >>z;

cout <<"Os tres numeros reais sao "<< x <<" " << y <<" " << z<<endl;

cout <<"\nO maior numero float eh: " <<maximo1(x,y,z);
cout <<"\n\nEntre com 3 caracteres: ";

cin >>s1 >>s2 >>s3;
cout <<"\nO maior caracter eh: " <<maximo1(s1,s2,s3) <<endl;

//main1trrx();
}


#line 20
/*
* File: maximo.h
* Author: danilomatias
*
* Created on 15 de Janeiro de 2009, 16:47
*/


#ifndef _MAXIMO_H
#define _MAXIMO_H

#ifdef __cplusplus
extern "C" {/* apenas para indicar explicitamente ao compilador que a linguagem a ser compilada é a c e não a c++*/

#endif

#define MAIOR2(x, y) ( (y>x)? (y): (x))
#define MAIOR3(x, y, z) ( (MAIOR2(x, y)>MAIOR2(x, z))? (MAIOR2(x, y)): (MAIOR2(x, z)))


#ifdef __cplusplus
}
#endif

#endif /* _MAXIMO_H */









Um link que indico é:


http://poghouse.blogspot.com/2010/04/templates-em-c.html"











Bem Espero que ajude ...!
Lembre-se pra fazer o gabarito de função pensa-se na operação coloca ela lá e o q ela deve retornar ...!

Até a próxima!

quarta-feira, 12 de novembro de 2008

Apenas alguns links que estava olhando na tentativa de rodar várias interfáces gráficas diferentes no servidor x, mas pelo jeito não tem jeito ...!

http://www.debian.org/doc/manuals/reference/ch-tune.pt-br.html

http://www.scribd.com/doc/259439/Guia-do-Linux-Desktop-06-Ambientes-Graficos

http://www.docstoc.com/docs/712762/Portuguese-HOWTO

http://www.google.com.br/search?hl=pt-BR&client=firefox-a&rls=com.ubuntu:pt-BR:unofficial&q=comandos+para+o+servidor+x+do+linux+%2Bxinit&start=90&sa=N

Como estou com o icewm, o fluxox, o gnome e o kde instalado no debian queria poder trocar de interface com o ctr + alt +F7 ...

Só que acho que não funciona, o primeiro passo é decobrir como parar o servidor x

Só que não acho nenhum manual em português sobre isso ...!


http://www.google.com.br/search?hl=pt-BR&client=firefox-a&rls=com.ubuntu:pt-BR:unofficial&q=comandos+para+o+servidor+x+do+linux+%2Bxinit&start=90&sa=N

http://www.guiadohardware.net/tutoriais/configurando-servidor-xdmcp/pagina2.html




http://www.vivaolinux.com.br/dica/Iniciando-uma-segunda-interface-grafica-no-Linux


http://www.magnux.org/doc/howto/pt_BR/Portuguese-HOWTO/Portuguese-HOWTO.pt_BR-197.php


http://www.gdhpress.com.br/redeseservidores/leia/index.php?p=cap8-24

http://www.mclink.it/personal/MG2508/nbsdbra/netbsd.html


http://www.mclink.it/personal/MG2508/nbsdbra/preface.html


http://www.mclink.it/personal/MG2508/nbsdbra/chap-misc.html

http://www.mclink.it/personal/MG2508/nbsdbra/chap-x.html

http://focalinux.cipsga.org.br/guia/inic_interm/ch-run.html#s-run-fechando


http://focalinux.cipsga.org.br/guia/inic_interm/ch-x11.html

http://www.mtm.ufsc.br/~krukoski/pub/linux/focalinux1/ch-x11.htm

http://www.gdhpress.com.br/etdl/leia/index.php?p=cap5-2

http://www.freebsd.org/doc/pt_BR.ISO8859-1/books/faq/x.html

http://www.gentoo.org/doc/pt_br/xorg-config.xml

http://www.vivaolinux.com.br/dica/Instalando-e-rodando-multiplas-interfaces-graficas-em-Linux-tipo-Debian

http://wiki.forumdebian.com.br/index.php/X-Window-System

link para baixar o iso do dvd do debian

http://cdimage.debian.org/debian-cd/4.0_r5/i386/iso-dvd/

Dica importante se você
não tem uma placa vídeo decente não invente de querer instalar o xgl, pois quase que tive que reinstalar todo o debian devido a isso, o x simplesmente não funcionava mais e muito menos o xgl, já que a placa nao tem o recurso de aceleração gráfica ...!


Para baixar os dvds do debian stable:

wget -c http://cdimage.debian.org/debian-cd/4.0_r5/i386/iso-dvd/debian-40r5-i386-DVD-1.iso ;
wget -c http://cdimage.debian.org/debian-cd/4.0_r5/i386/iso-dvd/debian-40r5-i386-DVD-2.iso ;
wget -c http://cdimage.debian.org/debian-cd/4.0_r5/i386/iso-dvd/debian-40r5-i386-DVD-3.iso ;
wget -c ;
wget -c http://cdimage.debian.org/debian-cd/4.0_r5/i386/iso-dvd/debian-update-4.0r5-i386-DVD-1.iso

sexta-feira, 7 de novembro de 2008

Fiquei pasmado ao ver o windows inializar mais rápido que o debian linux com o gnome instalado ..!

Fiquei pasmado ao ver o windows inializar mais rápido que o debian linux com o gnome instalado ..!

Fiquei pasmado ao ver o windows inializar mais rápido que o debian linux com o gnome instalado ..!

No modesto desktop aqui em casa o windows xp pro sp2 iniciou em 1 minuto e 24 segundos
já o debian em 1 minuto e 32 segundos, entretanto devido a maneira como o sistema operacional windows foi construido, para eu efetivamente conseguir usar um programa nele demoro uns 4 minutos, já no debian esse tempo cai para menos de 3, em fim, pra quem defende o linux com unhas e dentes, vale a pena uma ressalva, o windows atende muito bem ao propósito que ele foi criado, um sistema operacional intuitivo, que certamente é bem mais tranquilo de aprender a utilizar que os linux da vida, em linux se esqueceu o nome do comando já era, não tem muito jeito a não ser buscar na internet, entretanto existe um fator, que para mim é a seção crítica para preferir usar o debian GNU/Linux ao Windows, embora tenha voltado a utilizar o dual boot, essa seção, ou fator crítico é o fato de ter que se preocupar com os vírus, e não conseguir proteger adequadamente algumas pastas ...!

Mas do jeito que o mercado anda, muito provavelmente a utilização das distribuições baseadas em GNU/Linux tende a aumentar significativamente ...!

Outra grade vantagem do debian é que você pode escolher que interface deseja ter no seu sistema operacional, já em windows não ..., mas pelo menos na minha opinião, o que dificulta e muito a difusão das distribuições é a idéia dos poucos provilegiados, que conhecem bem a língua inglesa e se lembram dos comandos, para realizar alguma tarefa na Shell, enquanto tivermos gente pensando que fazer interface gráfica não compensa já que pela shell é mais rápido, o que é verdade, os novos usuários não se sentirão muito atraídos a utilizarem esse sistema operacional tão fantástico.
Da vontade de dizerm gente ACORDEM NEM TODO MUNDO TEM QUE FICAR LENDO TUTORIAIS OU MANUAIS APENAS PARA REALIZAREM ALGUMAS TAREFAS SIMPLES !
Tudo o que todos queremos é que tenhamos que interagir o mínimo possível com os softwares, e ele meio que adivinhe o que desejamos e retorne as respostas que esperamos, se desenvolvermos softwares assim, as chances de popularização dele são bem maiores, pena que muitos acabam esquecendo que o normal no mundo é ser ignorante, não ter o conhecimento, uma criança nasce totalmente ignorante ..., fato que inclusive se extende a educação, a educação aqui é ruim a beça, por vários motivos e um deles é os mestres não considerarem que o aluno está ali justamente para aprender, se é pré requisito algum conhecimento e ele não tem, de esse conhecimento e continue ensinando, pois para que irmos as escolas se consideram que os alunos sabem quase tudo ?
Outro detalhe importante, linguagem coloquial é feio, só que quase todos entendem, faça um teste pegue uma obra de José de alencar e pegue uma obra menos preocupada com a forma que as coisas serão ditas, umas obra preocupada com o entendimento do autor, por exemplo uma obra no que na minha opinião é o maior escritor, o Machado de Assis, achei o livro do José de Alencar chato por que simplesmente era dificil de entender a linguagem, o do Machado fantástico por que ele se preocupava com a idéia, e que ela fosse entendida ...!

Então em tudo na vida, principalmente no desenvolvimento de software façamos coisas simples, e intuitivas que as chances de sucesso são bem maiores ...!

quarta-feira, 29 de outubro de 2008

Apenas imprimindo em várias páginas em um arquivo .ps

Usei apenas os comandos abaixo:

sudo apt-get install mpage pstops psnup pdf2ps pdftops a2ps xpdf groff psselect


kurumin@negao1986:~/PDF/ pdftops 3.pdf
kurumin@negao1986:~/PDF/naunha$ ls
1.pdf 3.pdf exerc-gerencia-proc.pdf SOP_02_Exerc-GES.pdf
2.pdf 3.ps exerc-ipc.pdf SOP_05_Exerc-GM.pdf

kurumin@negao1986:~/PDF/naunha$ mpage -2 3.ps > 31.ps
O comando acima é o comando que efetivamente imprime 2 páginas por folha do arquivo 3.ps no arquivo 31.ps

kurumin@negao1986:~/PDF/naunha$ pstodf 31.ps
bash: pstodf: command not found
kurumin@negao1986:~/PDF/naunha$ sudo apt-get install pstopdf ps2pdf
Lendo lista de pacotes... Pronto
Construindo árvore de dependências... Pronto
E: Impossível achar pacote pstopdf
kurumin@negao1986:~/PDF/naunha$ ls
1.pdf 3.pdf exerc-ipc.pdf
2.pdf 3.ps SOP_02_Exerc-GES.pdf
31.ps exerc-gerencia-proc.pdf SOP_05_Exerc-GM.pdf
kurumin@negao1986:~/PDF/naunha$ pstopdf 31.ps

kurumin@negao1986:~/PDF/naunha$ mpage -4 3.ps > 41.ps
O comando acima é o comando que efetivamente imprime 4 páginas por folha do arquivo 3.ps no arquivo 41.ps
kurumin@negao1986:~/PDF/naunha$ ps2pdf 41.ps
o comando acima criará um arquivo 41.pdf para o arquivo 41.ps

domingo, 7 de setembro de 2008

Não é possível atualizar mais a página http://br.geocities.com/danilomatias17/

Não é possível atualizar mais a página:
http://br.geocities.com/danilomatias17/

Devido a já possuir os 15 MB que o servidor http: (geocities) disponibiliza aos usuários não posso mais atualizar minha página homepage - hp

Devo colocar alguma coisa apartir da minha página inicial em:

http://br.geocities.com/danilomatias@ymail.com/

Essa é a minha página inicial, só tem o que acesso lá!

Colocando códigos (code2HTML) ; Ada, Awk, C, C++, HTML, Java, JavaScript, m4, Makefile, Pascal, Perl, SQL, ruby e povray em HTML com CODE2HTML



Teve um Autríaco que desenvolveu um código em Pearl capaz de formatar as linguagens de programação; Ada, Awk, C, C++, HTML, Java, JavaScript, m4, Makefile, Pascal, Perl, SQL, ruby e povray em HTML

Coloquei essas informações de maneira melhor organizada em:
http://br.geocities.com/danilomatias@ymail.com/code/code2html/index/123456.html
Ainda é possível conferir o resultado desse script de maneira online no link:

http://www.palfrader.org/code2html/code2html.html

A documentação oficial se encontra em:

http://www.palfrader.org/code2html/manual.html

A página oficial do projeto é:
http://www.palfrader.org/code2html/


Na página:
http://gnu.fyxm.net/directory/devel/conversion/code2html.html

Achei o link para baixar o código fonte e executar em:
http://www.palfrader.org/code2html/all/code2html-0.9.1.tar.gz

Descompatei entrei na pasta que estava o código fonte e testei o programa.

De uma maneira geral:

A sintaxe geral é:

./code2html -nvL lingagem_de_programaçao arquivo.lingagem_de_programaçao arquivo_destino.html

Teste com o exemplo abaixo:
./code2html -nvL c 3.c 3_c.html
Onde:

c é a linguagem [c, java, paskal, pearl, php, ...]
3.c o nome do Arquivo.c
3_c.html o nome do arquivo .html


A página do cara que desenvolveu o código é (Peter Palfrader):

http://www.palfrader.org/

o Resultado (código convertido) foi:


1 #include <stdlib.h>
2 #include <stdio.h>
3 #include <string.h>
4 #define LEITURA 0
5 #define ESCRITA 1
6 #define LEITURAESCRITA 2
7 #define TAMNOME 500
8 #define NR_MAX_OF_CHR_ARQ 20000
9 /*=============================================================*/
10 /*=============================================================*/
11 /*
12 *
13 * ordem das chamadas
14 de funções que estão me
15 dando dor de cabeça:
16 *
17 * prog();
18 ==>>getLinhaISomenteleitura(arq, &i, t7, 3); ==>>
19 gettextoarq1Somenteleitura1(arq); ==>> ==>> ==>>
20 ==>> ==>> ==>> ==>> ==>> ==>>
21 ==>>
22 *
23 * -> prog();
24 ==>>mostraLinhas(arq, 10); ==>>getLinhaISomenteleitura1(arq,
25 3); ==>> t1=gettextoarq1Somenteleitura1(arq); ==>> ==>>
26 ==>> ==>> ==>> ==>> ==>> ==>>
27 ==>> ==>>
28 -> prog();
29 ==>>mostraRespricoes() ==>>[mostraLinhas4(arq);==>>
30 (vet1=get_vetor_string_arq(arq);==>>)==>>nl=getNumeroLinhaStringArquivo(arq);==>>]==>>
31 ==>> ==>> ==>> ==>> ==>> ==>>
32 ==>> ==>> ==>>* */

33 /*=============================================================*/
34 /* 528 - 541*/char *alocarStringA(int tam);
35 /* 542 - 550 */char *alocarStringB(char *str);
36 /* 156 - 184 */char ***alocar_vetor_string_arq(char *arq);
37 /* 309 - 319 */int contachar(char string[], char letra);
38 /* 186 - 200 */int getimaiorStringemArq(char *arq);
39 /* 343 - 386 */char *getLinhaISomenteleitura(char *arq, int *j, char *linha,int I);
40 /* 156 - 184 */char *getLinhaISomenteleitura1(char *arq, int I);
41 /* 156 - 184 */char *gettextoarq(int fd, char *buf, int buf_size, char *texto);
42 /* 518 - 529 */char *gettextoarq1Somenteleitura1A( char *arq, int Numero_de_caracteres_do_nome_do_arquivo, int Numero_de_caracteres_do_arquivo);
43 /* 156 - 184 */char *gettextoarq1Somenteleitura( char *arq, char *texto);
44 /* 156 - 184 */char *gettextoarq1Somenteleitura1( char *arq);
45 /* 156 - 184 */char ***getLinhasSomenteleitura(char *arq, int *j, char ***texto4);
46 /* 156 - 184 */int getNumeroLinhaString(char *str);
47 /* 156 - 184 */int getNumeroLinhaStringArquivo(char *arq);
48 /* 156 - 184 */int get_Strlen_da_maior_String_em_Arq(char *arq);
49 /* 156 - 184 */char ***get_vetor_string_arq(char *arq);
50 /* 156 - 184 */char **getvetorLinhasArg(char *arq);
51 /* 156 - 184 */char **getvetorLinhasArg1(char *arq);
52 /* 156 - 184 */char **getvetorLinhasArg1(char *arq);
53 /* 156 - 184 */void limpaStr(char *Str);
54 /* 156 - 184 */void mostraRespricoes();
55 /* 156 - 184 */void mostraLinhas(char *arq, int j);
56 /* 156 - 184 */void mostraLinhas1(char *arq);
57 /* 156 - 184 */void mostraLinhas2(char *arq);
58 /* 156 - 184 */void mostraLinhas3(char *arq);
59 /* 156 - 184 */void mostraLinhas4(char *arq);
60 /* 156 - 184 */int open1(char *file,int oflag );
61 /* 156 - 184 */void prog();
62 /* 156 - 184 */char *strpdftk(char *arq);
63 /* 156 - 184 */char *substituiEspacoPor_(char *str);
64 /* 156 - 184 */char *subs_str(char *string, char *substring, char *nova);
65
66 /*=============================================================*/
67 /*=============================================================*/
68 /*=============================================================*/
69 char ***get_vetor_string_arq(char *arq)
70 {
71 int l, i, j, k, m, n,o, num_linhas;
72 char ***vet1, **vet;
73
74 vet1=NULL; vet=NULL;
75 vet1=alocar_vetor_string_arq(arq);
76 vet=*vet1;/* tenho o vetor de strings alocadinha basta preenchê-lo*/
77 num_linhas=getNumeroLinhaStringArquivo(arq);
78 for(i=0;i<num_linhas; i++)
79 {
80 sprintf(vet[i] ,"%s", getLinhaISomenteleitura1(arq, i) );
81 }
82 return vet1;
83 }
84 /*=============================================================*/
85 /*=============================================================*/
86 void mostraLinhas4(char *arq)
87 {
88 int l, i, nl;
89 char **vet, ***vet1;
90
91 vet=NULL; vet1=NULL;
92 vet1=get_vetor_string_arq(arq);
93 vet=*vet1;
94 nl=getNumeroLinhaStringArquivo(arq);
95 for(i=0; i <nl;i++)
96 {
97 printf("\n vet[%i]: %s", i, vet[i]);
98 }
99 printf("\n\n ************************************\n\n");
100 }
101 /*=============================================================*/
102 void mostraLinhas3(char *arq)
103 {
104 int l, i;
105 char **vet;
106
107 vet=NULL;
108 vet=getvetorLinhasArg1(arq);
109 if(vet==NULL){printf("\n Deu problema no mostra linha3 ver e nulo !\n");}
110 //t8=getLinhaISomenteleitura1(arq,9);
111 /*printf("\n
112 Passemos a i=getNumeroLinhaStringArquivo(arq);\n");*/

113 i=getNumeroLinhaStringArquivo(arq);
114 //printf("********* Mostrando as %i linhas do arquivo %s ****\n\n", i,arq);
115 printf("Linhas(vet)[%i ]{%i}: %s \n", 0, strlen(vet[0]), vet[0]);
116 printf("Linhas(vet)[%i ]{%i}: %s \n", 1, strlen(vet[1]), vet[1]);
117 /*
118 for(l=0; l < i;l++)
119 {
120 printf("Linhas(vet)[
121 %i ]{%i}: %s \n", l, strlen(vet[l]), vet[l]);
122 }*/

123 printf("\n\n************************************\n\n");
124 }
125 /*===================================================================*/
126 /*===================================================================*/
127 void mostraLinhas2(char *arq)
128 {
129 int l, i;
130 char **vet;
131
132 vet=getvetorLinhasArg(arq);
133 //t8=getLinhaISomenteleitura1(arq,9);
134 i=getNumeroLinhaStringArquivo(arq);
135 //printf("********* Mostrando as %i linhas do arquivo %s ****\n\n", i,arq);
136 for(l=0; l < i;l++)
137 {
138 printf("Linhas(vet)[%i ]{%i}: %s \n", l, strlen(vet[i]), vet[i]);
139 }
140 printf("\n\n************************************\n\n");
141 }
142 /*=============================================================*/
143 int get_Strlen_da_maior_String_em_Arq(char *arq)
144 {
145 int l, i, k, la, bb, maior, idomaior;
146 char **vet, str[TAMNOME];
147
148 k=0;maior=0;
149 for(i=0; i<getNumeroLinhaStringArquivo(arq);i++)
150 {
151 k = strlen(getLinhaISomenteleitura1(arq, i));
152 if(k>=maior){maior=k;idomaior=i;}
153 }
154 return maior;
155 }
156 /*=============================================================*/
157 char ***alocar_vetor_string_arq(char *arq)
158 {
159 int tam1, tam2, i,j;
160 char **vetor, ***vet;
161
162 tam2 =get_Strlen_da_maior_String_em_Arq(arq);
163 tam2=tam2*sizeof(char);
164 tam1=getNumeroLinhaStringArquivo(arq);
165 if((vetor=(char**)malloc(tam1*sizeof(char*)))==NULL)
166 {
167 printf("\n Naofoi possivel alocar as linhas do de vetor de strings para do arquivo\n");
168 return NULL;
169 }
170 for(i=0;i<tam1;i++)
171 {
172 if((vetor[i]=(char*)malloc(tam2))==NULL)
173 {
174 printf("\nNao foi possivel alocar as colunas do vetor de strings para doarquivo \n");
175 for(--i;i>=0;i--)
176 {
177 free(vetor[i]);
178 }
179 free(vetor);
180 return NULL;
181 }
182 }
183 vet=&vetor;
184 return vet;
185 }
186 /*=============================================================*/
187 int getimaiorStringemArq(char *arq)
188 {
189 int l, i, k, la, bb, maior, idomaior;
190 char **vet, str[TAMNOME];
191 k=0;maior=0;
192 for(i=0; i<getNumeroLinhaStringArquivo(arq);i++)
193 {
194 k =strlen(getLinhaISomenteleitura1(arq, i));
195 if(k>=maior){maior=k;idomaior=i;}
196 }
197 return idomaior;
198 }
199 /*=============================================================*/
200 char **getvetorLinhasArg1(char *arq)
201 {
202 int l, i, k, la, bb;
203 char **vet,str[TAMNOME];
204 /* o probela e alocar
205 o vetor para armazenar*/

206 i=getNumeroLinhaStringArquivo(arq);
207 vet=(char**)malloc(i*sizeof(char*));
208 if(vet==NULL)
209 {
210 printf("\nNao foi possivel alocar as linhas do vetor de linhas \n");
211 return NULL;
212 }
213 for(la=0; la < i;la++)
214 {
215 strcpy(str,getLinhaISomenteleitura1(arq, la));
216 k = strlen(str);
217 /*printf("\n k
218 = strlen(str);: %i\n st: %s\n", k, str);*/

219 vet[la]=(char*)malloc(k*sizeof(char));
220 if(vet[la]==NULL)
221 {
222 printf("\n Nao foi possivel alocar as colunas do vetor de linhas \n");
223 free(vet);return NULL;
224 }
225 sprintf(vet[la],"%s", str);
226 for(bb=0; bb<=la;bb++)
227 printf("%s \n", vet[bb]);
228 //strcpy(vet[l],str);
229 // if((l%2)!=0){
230 //printf("%i%%3=%i\nLinhas(vet[%i])[ %i ]: %s \n str : %s \n\n",l, l%3, l,l, vet[l], str);
231 //}
232 }
233 //printf("vet[1-4]: %s %S %s %S \n\n", vet[0], vet[1], vet[2], vet[4]);
234 printf(" Agora vema montagem do vetor vet : %s \n\n", vet);
235 /* for(la=0; la <i; la++)
236 {
237 printf("\nvet[%i]: %s\n ", la, vet[la]);
238 }*/

239 return vet;
240 }
241
242 /*=============================================================*/
243 void mostraLinhas1(char *arq)
244 {
245 int l, i;
246 //t8=getLinhaISomenteleitura1(arq,9);
247 i=getNumeroLinhaStringArquivo(arq);
248 printf("Mostrando as %i linhas do arquivo \n\n", i);
249 for(l=0; l < i;l++)
250 {
251 printf("Linhas[%i ]: %s \n", l, getLinhaISomenteleitura1(arq, l));
252 }
253 printf("\n\n************************************\n\n");
254 }
255 /*=============================================================*/
256 char**getvetorLinhasArg(char *arq)
257 {
258 int l, i, k;
259 char **vet, *str;
260 l=getNumeroLinhaStringArquivo(arq);
261 //printf("Mostrando as %i linhas do arquivo \n\n", l);
262 vet=(char**)malloc(l*sizeof(char));
263 if(vet==NULL)
264 {
265 printf("\nNao foi possivel alocar as linhas do vetor de linhas \n");
266 return NULL;
267 }
268 for(i=0; i < l;i++)
269 {
270 strcpy(str,getLinhaISomenteleitura1(arq, i));
271 k = strlen(str);
272 vet[i]=(char*)malloc(k*sizeof(char));
273 if(vet[i]==NULL)
274 {
275 printf("\nNao foi possivel alocar as colunas do vetor de linhas \n");
276 return NULL;
277 }
278 strcpy(vet[i] ,str);
279 printf("vet[ %i]: %s \n", l, vet[i]);
280 }
281 //printf("\n\n************************************\n\n");
282 return vet;
283 }
284 /*=============================================================*/
285 /*=============================================================*/
286 void mostraLinhas(char *arq, int j)
287 {
288 int l;
289 //t8=getLinhaISomenteleitura1(arq,9);
290 printf("\n\nMostrando as %i linhas do arquivo \n\n", j);
291 for(l=0; l < j;l++)
292 {
293 printf("Linhas[%i ]: %s \n", l, getLinhaISomenteleitura1(arq, l));
294 }
295 printf("\n\n************************************\n\n");
296 printf(" %s \n O Arquivo tem %i linhas", gettextoarq1Somenteleitura1(arq), getNumeroLinhaString(gettextoarq1Somenteleitura1(arq)));/**//**/
297 printf("\n\n************************************\n\n");
298 }
299 /*=============================================================*/
300 void mostraRespricoes()
301 {
302 printf(" 1 - O arquivo arqpdf.txt tem que estar no mesmo diretorio \n ");
303 printf(" 2 - Os arquivos a serem convertidos devem estar no mesmo diretorio \n");
304 printf(" 3 - O arquivo gerado tera o nome de \'PDFTK921_ ...pdf\'\n");
305 printf(" 4 - Os nomes dos arquivos (arquivo ... .pdf) a serem unidos nao podem possuir espacos em branco\n");
306 printf(" 5 - Para o programa funcionar você deve ter a ferramenta pdftk instalada no seu computador, para mais informacoes acesse: \'http://www.vivaolinux.com.br/dica/Manipulando-arquivos-PDF-com-pdftk\'\n");
307 }
308 /*=============================================================*/
309 /*=============================================================*/
310 int contachar(char string[], char letra)
311 {
312 int contador,tamanho, ocorrencia = 0;
313 tamanho =strlen(string);
314 for(contador=1;contador <= tamanho;contador++)
315 if(string[contador] == letra)
316 ocorrencia++;
317 return(ocorrencia);
318 }
319
320 /*=============================================================*/
321 int getNumeroLinhaString(char *str)
322 {
323 /*onde str é a string com várias linhas*/
324 return contachar(str, '\n');
325 }
326
327 /*=============================================================*/
328 int getNumeroLinhaStringArquivo(char *arq)
329 {
330 /*onde str é a string com várias linhas*/
331 int i;
332 char *s1;
333 s1=gettextoarq1Somenteleitura1(arq);
334 i=getNumeroLinhaString(s1);
335 i=i-1;
336 return i;
337 }
338 /*=============================================================*/
339 /* fazer uma função
340 que retorne somente a string da linha,
341
342 * deve-se passar a
343 linha e um ponteiro onde string estara*/

344 char *getLinhaISomenteleitura1(char *arq, int I)
345 {
346 int i;
347 char text[10000],*t1, *t2, charater[500], *ta1;
348 t1=gettextoarq1Somenteleitura1(arq);
349 //t1=gettextoarq1Somenteleitura1A(arq, strlen(arq),/* strlen()*//**/NR_MAX_OF_CHR_ARQ/**/);
350 sprintf(text, "%s",t1);
351 /* agora com a string t1 tendo uma copia em "text"
352 * da pra ficar
353 mais aliviado, pois nao perderemos o
354 * conteudo do
355 arquivo, os nomes dos documentos*/

356 //res = strtok(s,delim);
357 t2=strtok(text,"\n");
358 //sprintf(texto[0],"%s", t2);
359 //printf(" \n O conteudo da variaveis text (antes de retornar a linha) e %s \n Ja o conteudo de t2 e %s \n \n", text, t2);
360 if(I==0)
361 {
362 return t2;
363 }
364 for(i=1;(i<=I)&&(t2 != NULL); i++)
365 {
366 //res =strtok(NULL, delim);
367 t2=strtok(NULL,"\n");
368 sprintf(charater,"%s", t2);
369 //printf("\n O conteudo do arquivo na linha %i e %s \n Ja o conteudo de t2 e %s \n Ja o conteudo de charater e %s \n", i, text, t2,charater);
370 if(i==I)
371 {
372 strcpy(ta1,charater);
373 return t2;
374 }
375 if(t2==NULL)
376 {
377 printf("\n A linha pedida para a funcao e maior que a quanidade de linhas no arquivo! \n Entre com um valor de linha menor que o numero de linhas do arquivo!\n ");
378 return NULL;
379 }
380 }
381 if(i==I)
382 {
383 strcpy(ta1,charater);
384 return t2;
385 }
386 return NULL;
387 }
388 /*=============================================================*/
389 void limpaStr(char *Str)
390 {
391 int i, j;
392 i=strlen(Str);
393 for(j=i-1;j>=0;j--)
394 {
395 Str[j]=' ';
396 /*Str[j]=NULL*//* ;*///strcpy(*(Str+j)," ");
397 }
398 }
399 /*=============================================================*/
400 /* fazer uma função
401 que retorne somente a string da linha,
402
403 * deve-se passar a
404 linha e um ponteiro onde string estara*/

405 char *getLinhaISomenteleitura(char *arq, int *j, char *linha, int I)
406 {
407 int i;
408 char texto[500][500],text[10000], *t1, *t2, charater[500];
409 printf("\n Agora entrarei na funcao t1=gettextoarq1Somenteleitura(arq, t1);\n");
410 t1=gettextoarq1Somenteleitura1(arq);
411 sprintf(text, "%s",t1);
412 /* agora com a string t1 tendo uma copia em "text"
413 * da pra ficar mais aliviado, pois nao perderemos o
414 * conteudo do arquivo, os nomes dos documentos*/

415 t2=strtok(text,"\n");
416 sprintf(texto[0], "%s", t2);
417 *j=i;
418 if(I==0)
419 {
420 if(/**linha==NULL */strcmp(linha,NULL)==0)
421 {/* se estiver passando somente um * ponteiro sem nada , NULL*/
422 linha=texto[0];
423 }
424 sprintf(linha, "%s", texto[0]);
425 return linha;
426 }
427 //printf("*j= %i \t", *j);
428 for(i=1;(i<500)||(t2!=NULL);i++)
429 {
430 t2=strtok('\0',"\n");
431 sprintf(charater,"%s", t2);
432 strcpy(texto[i],charater);
433 *j=i;
434 // printf("*j=%i \t", *j);
435 if(t2==NULL ||strlen(charater)<3)
436 {
437 *j=i;
438 printf("\n A linha pedida para a funcao e maior que a quanidade de linhas no arquivo! \n Retornarei a ultima linha do arquivo\n ");
439 if(/**linha==NULL */strcmp(linha,NULL)==0)
440 { /* se estiver passando somente um
441 * ponteiro sem nada , NULL*/

442 linha=texto[i-1];
443 /*linha = *//*strcpy(linha, texto[i-1]);*/
444 return linha;
445 }
446 sprintf(linha,"%s", texto[i-1]);
447 return linha;
448 }
449 if(i==I)
450 {
451 if(/**linha==NULL */strcmp(linha,NULL)==0)
452 { /* se estiver passando somente um
453 * ponteiro sem nada , NULL*/

454 linha=texto[i];
455 return linha;
456 }
457 sprintf(linha,"%s", texto[i]);
458 return linha;
459 }
460 }
461 return NULL;
462 }
463 /*=============================================================*/
464 char ***getLinhasSomenteleitura(char *arq, int *j, char ***texto4)
465 {
466 int i;
467 char texto[500][500], text[10000], *t1, *t2, charater[500], **texto5;
468 t1=gettextoarq1Somenteleitura(arq,t1);
469 printf("\n entrou em char ***getLinhasSomenteleitura(char *arq, int *j, char ***texto4) \n gettextoarq1Somenteleitura(arq, t1); = %s \n ", t1);
470 sprintf(text, "%s", t1);
471 /* agora com a string t1 tendo uma copia em "text"
472 * da pra ficar mais aliviado, pois nao perderemos o
473 * conteudo do arquivo, os nomes dos documentos*/

474 t2=strtok(text,"\n");
475 sprintf(texto[0], "%s", t2);
476 *j=i;
477 //printf("*j=%i \t", *j);
478 for(i=1;(i<500)||(t2!=NULL);i++)
479 {
480 t2=strtok('\0',"\n");
481 sprintf(charater,"%s", t2);
482 strcpy(texto[i],charater);
483 *j=i;
484 // printf("*j=%i \t", *j);
485 if(t2==NULL ||strlen(charater)<3)
486 {
487 *j=i;
488 /**texto4=&texto[0][0];
489 *texto4= =strdup(texto[0]);*/

490 // strcpy(texto5,texto);
491 *texto4=texto5;
492 return texto4;
493 }
494 }
495 /*
496 *texto4=&texto[0][0];
497 *texto4= =strdup(texto[0]);*/

498 // strcpy(texto5,texto);
499 *texto4=texto5;
500 // return &texto5;
501 return texto4;
502 }
503 /*=============================================================*/
504 char *gettextoarq1Somenteleitura1( char *arq)
505 {
506 int fd, buf_size;
507 char buf[500],buf2[10000], *buf3;
508
509 buf_size=499;
510 fd=open1(arq,LEITURA);
511 buf3=gettextoarq(fd,buf, buf_size,buf2);
512 close(fd);
513 return buf3;
514 }
515 /*=============================================================*/
516
517 char *gettextoarq1Somenteleitura1A( char *arq, int Numero_de_caracteres_do_nome_do_arquivo, int Numero_de_caracteres_do_arquivo)
518 {
519 int fd;
520 char *buf, *buf2, *buf3;
521
522 buf2=alocarStringA(Numero_de_caracteres_do_arquivo);
523 buf=alocarStringA(Numero_de_caracteres_do_nome_do_arquivo);
524 fd=open1(arq,LEITURA);
525 buf3=gettextoarq(fd,buf, Numero_de_caracteres_do_nome_do_arquivo,buf2);
526 close(fd);
527 return buf3;
528 }
529 /*=============================================================*/
530 char *alocarStringA(int tam)
531 {
532 int tam2;
533 char *vetor;
534
535 tam2=tam*sizeof(char);
536 if((vetor=(char*)malloc(tam2))==NULL)
537 {
538 printf("\n Nao foi possivel alocar a string de tamanho %i \n", tam);
539 return NULL;
540 }
541 return vetor;
542 }
543 /*=============================================================*/
544 char *alocarStringB(char *str)
545 { /* str e a string ao qual se desejara copiar em B*/
546 int tam2, tam;
547 char *str2;
548 tam=strlen(str);
549 tam=tam+30;
550 str2=alocarStringA(tam);
551 return str2;
552 }
553 /*=============================================================*/
554 /*=============================================================*/
555 /*=============================================================*/
556 /*=============================================================*/
557 /*=============================================================*/
558 /*=============================================================*/
559 /*=============================================================*/
560 char *strpdftk(char *arq)
561 {
562 int i, j, k, l, m, n,n1;
563 char *arq1, *arq2, *arqout, *out, *ext, *meio;
564 l=getNumeroLinhaStringArquivo(arq);
565 n1=strlen("pdftk");
566 n1=n1+800;
567 out=(char*)malloc(n1*sizeof(char));
568 arq1=(char*)malloc((n1-120)*sizeof(char));
569 arq2=(char*)malloc((n1-120)*sizeof(char));
570 ext=(char*)malloc((n1-500)*sizeof(char));
571 k=0;
572 i=0;
573 m=1;
574 //printf("\nString0: %s\n", out);
575 //limpaStr(out);
576 //printf("\nString1depois: %s\n", out);
577 /*printf("\n\n\n\ngetLinhaISomenteleitura1(arq, 2) : %s \n\n\n",getLinhaISomenteleitura1(arq, 2));*/
578 /*printf("\n\n\n\narquivos0 e arquivo1 arquivo2 respectivamente %s %s %s \n\n\n",getLinhaISomenteleitura1(arq, 0), getLinhaISomenteleitura1(arq, 1),getLinhaISomenteleitura1(arq, 2));*/
579 arq1=getLinhaISomenteleitura1(arq,0);
580 arq2=getLinhaISomenteleitura1(arq,1);
581 sprintf(ext, "pdftk %s %s cat output PDFTK921_%i.pdf ;", arq1, arq2, 0);
582 //printf("\n %s\n", ext);
583 strcat(out, ext);
584 k++;
585 sprintf(ext, "pdftk PDFTK921_%i.pdf %s cat output PDFTK921_%i.pdf ;", k-1,getLinhaISomenteleitura1(arq, 2), k);
586 strcat(out, ext);
587 //printf("\n %s\n\n ", ext);
588 k++;
589 sprintf(ext, "pdftk PDFTK921_%i.pdf %s cat output PDFTK921_%i.pdf ;", k-1,getLinhaISomenteleitura1(arq, 3), k);
590 strcat(out, ext);
591 //printf("\n %s\n\n ", ext);
592 k++;
593 for(i=4; i<l; i++)
594 {
595 sprintf(ext, "pdftk PDFTK921_%i.pdf %s cat output PDFTK921_%i.pdf ;", k-1,getLinhaISomenteleitura1(arq, i), k);
596 strcat(out, ext);
597 //printf("\n\n %s\n\n ", ext);
598 k++;
599 }
600 //printf("\n out= %s\n", out);
601 --k;
602 for(--k;k>=0;k--)
603 {
604 sprintf(ext, "rm pdftk PDFTK921_%i.pdf ; ", k);
605 strcat(out, ext);
606 // printf("\n\n %s\n\n ", ext);
607 }
608 strcat(out, " ls -la ");
609 //printf("\n out = %s\n", out);
610 return out;
611 }
612 /*=============================================================*/
613 /*=============================================================*/
614 /*=============================================================*/
615 /*=============================================================*/
616 /*=============================================================*/
617 /*=============================================================*/
618 /*=============================================================*/
619 /*=============================================================*/
620
621 char *gettextoarq1Somenteleitura( char *arq, char *texto)
622 {
623 int fd, buf_size;
624 char buf[500],buf2[10000], *buf3;
625
626 buf_size=499;
627 fd=open1(arq,LEITURA);
628 printf("\n Agora entrarei na funcao buf3=gettextoarq(fd, buf,buf_size,buf2);\n");
629 buf3=gettextoarq(fd,buf, buf_size,buf2);
630 printf("\n Antes de entrar no If do texto \nO conteudo do arquivo %s e :\n %s \n", arq, buf3);
631 if(/**texto==NULL */strcmp(texto,NULL)==0)
632 {/* se estiver passando somente um * ponteiro sem nada , NULL*/
633 texto=buf3;
634 }
635 sprintf(texto,"%s", buf3);
636 //printf("\n Agora entrarei na funcao close(fd);\n");
637 close(fd);
638 //printf("\n O conteudo do arquivo %s e :\n %s \n", arq, buf3);
639 return buf3;
640 }
641 /*=============================================================*/
642 char *gettextoarq(int fd, char *buf, int buf_size, char *texto)
643 {
644 for(;;)
645 {
646 if(read(fd, buf,buf_size)==0)
647 {
648 sprintf(texto, "%s \n", buf);
649 return texto;
650 }
651 sprintf(texto, "%s \n", buf);
652 }
653 }
654
655 /*=============================================================*/
656
657 int open1(char *file, int oflag )
658 {
659 int fd;
660
661 if((fd=open(file,oflag))==-1)
662 {
663 printf("\n Nao e possivel abrir o arquivo %s \n", file);
664 return fd;
665 }
666 return fd;
667 }
668 /*=============================================================*/
669
670 char *substituiEspacoPor_(char *str)
671 {
672 return subs_str(str," ", "_");
673 }
674 /*=============================================================*/
675 char *subs_str(char *string, char *substring, char *nova)
676 {
677 char *extrai;
678 int tamanho1,tamanho2,contador, a4;
679
680 tamanho1 = strlen(substring);
681 tamanho2 = strlen(nova);
682 a4=strlen(string);
683 if((tamanho1 > tamanho2) || (tamanho2 > tamanho1))
684 return(" ");
685 else
686 {
687 extrai = strstr(string,substring);
688 if(extrai)
689 {
690 for(contador = 0;contador < a4; contador++)
691 string[(extrai - string) + contador] = nova[contador];
692 return(string);
693 }
694 else
695 return(" ");
696 }
697 }
698 /*=============================================================*/
699
700 void prog()
701 {
702 char cmd[400], arq[200], texto[600], **t1, ***t6, *t7, *t10, *t8, tr[200];
703 int i;
704
705 strcpy(tr,"O joao e bacana pra caramba");
706 t7=NULL,t8=NULL;
707 sprintf(arq, "%s","arqpdf.txt");
708 //sprintf(stdout,"%s", "imprimindo na tela, stdout com sprintf");
709 /* printf("************************************");
710 printf("\n\n a string %s sem espacos e : %s \n\n", tr, substituiEspacoPor_(tr));*/

711 printf("************************************");
712 printf("\n Programa que concatenara todos os arquivos .pdf em um \n\n\n ");
713 printf(" Para esse programa funcionar direito e Necessario que: \n ");
714 mostraRespricoes();
715 sprintf(cmd, "for x in *.pdf; do echo %s ", "\"$x\"; done > arqpdf.txt");
716 system(cmd);
717 printf(" \n cmd:\n %s \n ", cmd);
718 t10=strpdftk(arq);
719 printf(" \n cmd:\n %s \n ", t10);
720 system(t10);
721 printf("\n\n");
722 }
723
724 /*=============================================================*/
725 int main()
726
727 {
728 prog();
729 return 1;
730 }