sábado, 31 de maio de 2008

O Brasil como um Mercado Emergente na Produção e Exportação de Software Postado em mercado produtor de software às Fevereiro 25, 2008 por José Augusto

Texto extraído integralmente de : http://engenhariasoftware.wordpress.com/2008/02/25/oi-mundo/
O Brasil como um Mercado Emergente na Produção e Exportação de Software
Postado em mercado produtor de software às Fevereiro 25, 2008 por José Augusto Fabri

Achei interessante devido aos dados Brasileiros ..., galera porque não investir na nossa formação ? Somos da única área que a mão de obra é quase que tudo, é difícil hoje imaginar máquinas escrevendo código, no futuro quem sabe ...!

Atualmente, a produção de software no Brasil é, altamente, deficitária se olhada sob a luz da balança comercial. Em 2007 o país importou cerca de US$ 3 bilhões e as exportações chegaram perto dos US$ 250 milhões. Para cada dólar exportado o país importa 10. Em 2005 a situação era pior ainda, neste ano o Brasil importou cerca de US$ 7.41 bilhões e exportou somente US$ 178 milhões. Para efeitos comparativos, países emergentes como a Índia e a Irlanda exportam cerca de 8 vezes o que importam. Analisando os números questiona-se: Como alterar este cenário dentro de nosso país?

Para responder tal questão vamos destacar algumas potencialidades brasileiras dentro das seguintes áreas: ativos de Tecnologia da Informação (investimentos) e engenharia de software:

*
Os grandes investidores em TI continuam sendo os Estados Unidos (US$ 439 bilhões/ano) seguido pelo Japão (US$ 108 bilhões/ano) o Reino Unido e Alemanha completam esta lista.
*
Em 2006 o mundo investiu cerca de US$ 1.16 trilhões em TI. No Brasil os investimentos chegaram à casa de US$ 16.2 bilhões superando Índia, Koreia, Rússia, México e Argentina, países estes classificados como emergentes no cenário econômico mundial.
*
O Brasil é o 12º. no mundo com o maior investimento em TI, o único país emergente na nossa frente é a China.
*
O mercado consumidor brasileiro é extremamente promissor, por exemplo: temos a 5ª. população do mundo, somos os 6º. em números de celulares.
*
Alguns ativos de TI, também, merecem destaque neste contexto:
o
A urna eletrônica: Em 2006, 126 milhões eleitores votaram utilizando tal dispositivo (100% dos eleitores). Cerca de 430.000 urnas foram utilizadas. Cerca de 90% dos votos, para a presidência da república, foram processados em 90 minutos.
o
O Brasil é primeiro país no mundo a informatizar a declaração de imposto de renda. Todos nós sabemos das potencialidades dos processos informatizados da receita federal.
o
O Brasil é um dos líderes em projetos de eGoverment, um exemplo disso é o pregão eletrônico, chamado de comprasNet. Com a implantação deste sistema o governo agilizou em 70% o tempo de compra de um produto licitado. Outros 2.000 serviços governamentais são oferecidos via internet.
*
O poderio de mão de obra brasileiro também merece ser destacado:
o
O país possui a segunda maior base de desenvolvedores Java do mundo (100.000 desenvolvedores).
o
Nos últimos 3 JavaOne (maior evento Java do mundo) um projeto brasileiro venceu a Duke’s Choice Award, categoria esta que seleciona a aplicação mais inovadora desenvolvida em Java.
*
Outro ativo de TI que merece destaque é o sistema bancário brasileiro. Em algumas áreas como: sistema de pagamentos; Internet Banking; cartões e ATMs o Brasil se caracteriza como líder mundial.

O contexto, brasileiro, acima apresentado, não é explorado dentro do mercado mundial de TI, esta afirmação pode ser comprovada com os seguintes dados:

*
Os Estados Unidos agregam 80% das operações de offShore (instalação de uma filial, geralmente, em um país emergente cuja mão de obra é mais barata, para fins de tercerização de bens e serviços) no mundo.
*
Na União Européia, o Reino Unido, a Alemanha e a França congregam grande parte dos 20% restantes.
*
No contexto asiático, o destaque vai para o Japão.

A América Latina exportou 1.8% das necessidades americanas dentro da área de TI. O Brasil “lidera” esse quadro com 1%. Somente a Índia atendeu cerca 84% das necessidades americanas na área de software. É importante ressaltar que a Índia não possui um cenário tão promissor quanto o descrito anteriormente.

Os fatos apresentados nos remetem a sugerir uma segunda questão: Como o Brasil pode utilizar suas potencialidades para se tornar um dos maiores exportadores de serviços de TI no mundo?

É necessário enfatizar todo o cenário tecnológico favorável apresentado anteriormente, mostrar ao mundo, principalmente, aos americanos o que temos de melhor: O SISTEMA BANCÁRIO/FINANCEIRO (SB/F). É importante salientar que grande parte das operações de offShore americana foca, estritamente, o mercado financeiro. Veja alguns fatores que colocaram o Brasil na liderança neste quesito.

A evolução do SB/F ocorreu nas décadas de 1970 e 1980, nesta época o Brasil estava fechado para as importações de bens e serviços caracterizados como TI. Este fato, aliado a instabilidade financeira, a constante mudança de moeda e a um sistema tributário, totalmente, caótico (que ainda existe) levaram os bancos locais a desenvolverem seus próprios sistemas, gerando assim, um profissional extremamente capacitado na área de negócios financeiros.

Dentro do contexto sistêmico bancário, outras informações merecem ser destacadas: O Brasil é o único país do mundo que possui 5 bancos de capital nacional na liderança no mercado interno. Temos a maior plataforma Mainframe instalada no mundo (nota: as grandes operações bancárias nos Estados Unidos ainda continuam utilizando esta plataforma). O Brasil possui milhares de “Coboleiros” com uma vasta experiência, não só na linguagem, mas também no ambiente financeiro. O número de sofisticação e funcionalidades do Internet Banking brasileiro é a maior do mundo. Proporcionalmente, cerca de 40% da população brasileira utiliza Internet Banking, nenhum país possui este número. O sistema de cartão de crédito brasileiro é sólido e dinâmico (tal sistema já existe a 50 anos). Cerca de 40% da população brasileira utilizou cartão de crédito em 2006 e mais de 1 milhão de estabelecimentos aceitam este tipo de cartão. Temos o maior número de ATMs por contas, só para ter uma idéia 10% dos ATMs instalados no mundo estão no Brasil. A BOVESPA possui o maior patrimônio líquido do mundo. O Sistema de Pagamento Brasileiro compensa em menos que 48 horas qualquer cheque emitido no país, somos campões neste quesito.

Outro ponto de destaque é o fuso-horário brasileiro, estamos a 4 horas da Comunidade Européia e de 1 (uma) a 3 horas dos Estados Unidos.

O Brasil possui: uma cultura “ocidentalizada” semelhante à européia e a americana; uma excelente infra-estrutura de comunicação em fibra-ótica, a ligação de várias das grandes cidades é exemplo disso.

Não temos desastres naturais e terrorismo, uma diversidade étnica domina a genética da população brasileira, o país é pacífico por natureza (não temos disputas com nossos vizinhos na América do Sul).

Enfim, não basta somente apresentar ao mundo todas as potencialidades descritas aqui, é necessário que o governo diminua a carga tributária, não podemos pagar cerca de 40% do que arrecadamos para sustento do próprio governo. As empresas, também devem fazer sua parte, se conscientizar que é somente com a qualidade no processo e no produto que poderão atingir mercados internacionais. As universidades e faculdades de tecnologias, também, devem formar profissionais de qualidade para setor produtivo de software.

Prof. Dr. José Augusto Fabri

Fundação Educacional do Município de Assis

Faculdade de Tecnologia de Ourinhos

fabri@femanet.com.br



Fontes de consulta:

Brasilian Association of Information Technology and Communication Companies – www.brasscom.com.br

Ministério de Ciência e Tecnologia, Secretária de Política em Informática – www.mct.gov.br/sepin

Ministério do Desenvolvimento, Indústria e Comércio Exterior http://desenvolvimento.gov.br/portalmdic/sitio/interna/interna.php?area=5&menu=1161

terça-feira, 27 de maio de 2008

Como esse blog é uma mistura de viagem com computação e na grande maioria das vezes os dois juntos, resolvi apenas viajar um pouquinhoa agora ..., o nome viagem da computação, é devido a quase ninguém entender nada quando falo do meu dia-dia, meus pais sempre me mandam calar a boca, quando começo a a falar de estrutura de dados, de alocação dinâmica e olhe lá ..., acabam achando que sou mais um inútil que fica o dia inteiro no msn ..., bem em duas épocas de férias fui realmente assim, mas o tempo passa e a ficha acaba caindo, que assim você só atrai pessoas inúteis, que não te ajudarão em nada no crescimento da vida ...
Logo após a limpa no msn, exclusão do orkut ..., e mandar os amigos que só me atrapalhavam quando queria fazer algo legal para o espaço, eu finalmente começo a aprender computação com outros olhos, e percebo, cara não é que essa viagem toda é maneira e vale a pena ?
Que idiota que eu fui, bixo, nessa área da para ver filme de graça, fazer coisas jamais sonhadas ...
Em fim a viagem da computação é o Sonho que leva os cientistas da computação a viverem ...!
Que forçada hein!

Mas o que eu queria colocar mesmo é a viagem do maluco que fez um prédio show de bola com cartas confira ai em:

youtube

ou em:

segunda-feira, 26 de maio de 2008

Argumento de diagonalização de Cantor

Está ai um negócio que muito provavelmente cairá na prova de Teoria da Computação ...



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


Argumento de diagonalização de Cantor
Origem: Wikipédia, a enciclopédia livre.
(Redirecionado de Argumento da Diagonal de Cantor)
Ir para: navegação, pesquisa
Diagonal usada no argumento de Cantor.
Diagonal usada no argumento de Cantor.

O argumento de diagonalização de Cantor é uma prova matemática imaginada por Georg Cantor para demonstrar que os números reais não são contavelmente infinitos (ou, equivalentemente, não formam um conjunto infinito enumerável).

Ao contrário do que muitos matemáticos acreditam, o argumento de diagonalização não foi a primeira prova de Cantor da não-enumerabilidade dos números reais, que foi publicada três anos antes.

[editar] Números reais

A prova de Cantor mostra que o intervalo [0,1] não é contavelmente infinito.

A prova por contradição é feita da seguinte forma:

* (1) Assuma (para fins de argumentação) que o intervalo [0,1] é infinito enumerável.
* (2) Então nós podemos enumerar todos os números deste intervalo como uma seqüência, ( r1, r2, r3, ... )
* (3) Nós sabemos que cada um desses números pode ser representado como uma expansão decimal.
* (4) Arranjamos os números em uma lista (eles não precisam estar em ordem). No caso de números com duas expansões decimais, como 0,499... = 0,500..., escolhemos aquele que acaba com noves. Assuma, por exemplo, que as expansões decimais do início da seqüência são como se segue:

r1 = 0 , 5 1 0 5 1 1 0 ...
r2 = 0 , 4 1 3 2 0 4 3 ...
r3 = 0 , 8 2 4 5 0 2 6 ...
r4 = 0 , 2 3 3 0 1 2 6 ...
r5 = 0 , 4 1 0 7 2 4 6 ...
r6 = 0 , 9 9 3 7 8 3 8 ...
r7 = 0 , 0 1 0 5 1 3 5 ...
...

* (5) Nós devemos agora construir um número real x dentro do intervalo [0,1]] considerando o k-ésimo dígito depois da vírgula da expansão decimal de rk.

r1 = 0 , 5 1 0 5 1 1 0 ...
r2 = 0 , 4 1 3 2 0 4 3 ...
r3 = 0 , 8 2 4 5 0 2 6 ...
r4 = 0 , 2 3 3 0 1 2 6 ...
r5 = 0 , 4 1 0 7 2 4 6 ...
r6 = 0 , 9 9 3 7 8 3 8 ...
r7 = 0 , 0 1 0 5 1 3 5 ...
...

Os dígitos que consideraremos estão sublinhados e em negrito, ilustrando por que isso é chamado de argumento de diagonalização.

* (6) A partir desses dígitos nós definimos os dígitos do número x como a seguir.

* se o k-ésimo dígito de rk é 5 então o k-ésimo dígito de x é 4.
* se o k-ésimo dígito de rk não é 5 então o k-ésimo dígito de x é 5.

Para o exemplo anterior, isto resultará na seguinte expansão decimal para x:

x = 0 , 4 5 5 5 5 5 4 ...

* (7) O número x é um número real (nós sabemos que todas as expansões decimais representam números reais) dentro do intervalo [0,1].
* (8) Por isso, devemos ter rn = x para algum n, uma vez que assumimos que ( r1, r2, r3, ... ) enumera todos os números reais no intervalo [0,1].
* (9) No entanto, por causa da maneira como escolhemos os dígitos 4 e 5 no passo (6), x difere na n-ésima posição de rn, então x não está na seqüência ( r1, r2, r3, ... ).
* (10) Essa seqüência portanto não é uma enumeração do conjunto de todos os reais no intervalor [0,1]. Isto é uma contradição..
* (11) Logo, a hipótese (1) de que o intervalo [0,1] é contavelmente finita deve ser falsa.

É um corolário direto deste resultado que o conjunto R de todos os números reais é incontável. Se R fosse contável, poderíamos enumerar todos os números reais em uma seqüência, e então obter uma seqüência enumerando [0,1] através da remoção de todos os números reais fora deste intervalo. Mas nós acabamos de mostrar que esta última lista não pode existir.

Alternativamente, poderíamos mostrar que [0,1] e R são do mesmo tamanho, construindo uma bijecção entre eles. Para o intervalo (0,1) podemos usar a bijecção f\colon (0,1)\rightarrow\mathbb{R} definida por f(x) = \tan\left(\pi\left(x-\frac{1}{2}\right)\right). Para o intervalo [0,1] isto também é possível, embora de forma não tão directa.

[editar] Por que isto não funciona com os inteiros

As pessoas às vezes acham que a prova acima pode ser adaptada para os inteiros para provar que eles também são incontáveis. Eles tentam fazer isso retirando a vírgula decimal nas expansões acima. O problema é que uma seqüência infinita de digitos não-nulos não representa um inteiro. Esta é a razão para o passo (7) acima. De fato, o conjunto de todas as seqüencias infinitas de números inteiros é um conjunto não enumerável.

Teorema fundamental do Cálculo


http://pt.wikipedia.org/wiki/Teorema_Fundamental_do_C%C3%A1lculo



Teorema fundamental do Cálculo
Origem: Wikipédia, a enciclopédia livre.
(Redirecionado de Teorema Fundamental do Cálculo)
Ir para: navegação, pesquisa

Wikipedia:Reciclagem
Esta página precisa ser reciclada de acordo com o livro de estilo.
Sinta-se livre para editá-la para que esta possa atingir um nível de qualidade superior.

O Teorema fundamental do Cálculo é a base das duas operações centrais do cálculo, diferenciação e integração, que são considerados como inversos um do outro. Isto significa que se uma função contínua é primeiramente integrada e depois diferenciada, volta-se na função original. Este teorema é de importância central no cálculo tanto que recebe o nome teorema fundamental para todo o campo de estudo. Uma consequencia importante disto, às vezes chamada de segundo teorema fundamental do cálculo, permite computar integrais utilizando a antiderivada da função a ser integrada. Em seu livro de 2003 (pág.394), James Stewart credita a idéia que conduziu ao teorema fundamental ao matemático inglês Isaac Barrow apesar da primeira prova conhecida deste teorema ser reconhecida ao matemático escocês James Gregory.

O teorema fundamental do cálculo estabelece a importante conexão entre o Cálculo Diferencial e o Cálculo Integral. O primeiro surgiu a partir do problema de se determinar a reta tangente a uma curva em um ponto, enquanto o segundo surgiu a partir do problema de se encontrar a área de uma figura plana. Aparentemente, mas apenas aparentemente, entre os dois problemas parece não existir nenhuma relação.

Barrow, professor de Newton em Cambridge, descobriu que os dois problemas estão intimamente relacionados, percebendo que os processos de diferenciação e integração são processos inversos. Entretanto, foram Newton e Leibniz, independentemente, que exploraram essa conexão e desenvolveram o Cálculo.

Em particular, eles perceberam que o Teorema Fundamental permitia encontrar a área de uma figura plana de uma forma muito fácil, sem a necessidade de se calcular a soma de áreas de um número indefinidamente grande de retângulos, mas sim usando a primitiva da função envolvida.

O teorema afirma que se I for um intervalo de R com mais do que um ponto e se f for uma função contínua de I em R, então, para cada a ∈ I a função F de I em R definida por

F(x)=\int_a^xf(t)\,dt

é derivável e a sua derivada é precisamente a função f. Por outras palavras, F é uma primitiva de f.

Intuição

Intuitivamente, o teorema simplesmente diz que a soma de variações infinitesimais em uma quantidade ao longo do tempo (ou ao longo de outra quantidade) adiciona a variação líquida naquela quantidade.

Para explicar esta afirmação, começaremos com um exemplo. Suponha que uma partícula viaja em uma linha reta com sua posição dada por x(t) onde t é o tempo. A derivada desta função é igual a variação infinitesimal em x pela variação infinitesimal do tempo (é claro, a própria derivada é dependente do tempo). Vamos definir esta variação na distância com o tempo como a velocidade v da partícula. Na Notação de Leibnitz:

\frac{dx}{dt} = v(t)

Rearranjando a equação, fica claro que:

dx = v(t)\,dt

Pela lógica acima, uma variação em x, chamada Δx, é a soma das variações infinitesimais dx. Que também se iguala à soma dos infinitesimais produtos da derivada e do tempo. Esta soma infinita é a integração; a operação de integração permite recuperar a função original a partir de sua derivada. Claramente, este operação funciona como inversa já que podemos diferenciar o resultado de nossa integral para recuperar a função velocidade.

[editar] Formalização

Formalmente, o teorema diz o seguinte:

Considere f uma função contínua de valores reais definida em um intervalo fechado [a, b]. Se F for a função definida para x em [a, b] por

F(x) = \int_a^x f(t)\, dt

então

F'(x) = f(x)\,

para todo x em [a, b].

Considere f uma função contínua de valores reais definida em um intervalo fechado [a, b]. Se F é uma função tal que

f(x) = F'(x)\, para todo x em [a, b]

então

\int_a^b f(x) dx = F(b) - F(a).

[editar] Corolário

Considere f uma função contínua de valores reais definida em um intervalo fechado [a, b]. Se F é uma função tal que

f(x) = F'(x)\, para todo x em [a, b]

então

F(x) = \int_a^x f(t) dt + F(a)

e

f(x) = \frac{d}{dx} \int_a^x f(t) dt.

[editar] Prova

[editar] Parte I

É dado que

F(x) = \int_{a}^{x} f(t) dt

Considere dois números x1 e x1 + Δx em [a, b]. Então temos

F(x_1) = \int_{a}^{x_1} f(t) dt

e

F(x_1 + \Delta x) = \int_{a}^{x_1 + \Delta x} f(t) dt.

Subtraindo as duas equações

F(x_1 + \Delta x) - F(x_1) = \int_{a}^{x_1 + \Delta x} f(t) dt - \int_{a}^{x_1} f(t) dt \qquad (1).

Pode ser mostrado que

\int_{a}^{x_1} f(t) dt + \int_{x_1}^{x_1 + \Delta x} f(t) dt = \int_{a}^{x_1 + \Delta x} f(t) dt .
(A soma das áreas de duas regiões adjacentes é igual a área das duas regiões combinadas.)

Manipulando esta equação obtemos

\int_{a}^{x_1 + \Delta x} f(t) dt - \int_{a}^{x_1} f(t) dt = \int_{x_1}^{x_1 + \Delta x} f(t) dt .

Substituindo a equação acima em (1) resulta em

F(x_1 + \Delta x) - F(x_1) = \int_{x_1}^{x_1 + \Delta x} f(t) dt \qquad (2).

De acordo com o teorema do valor médio para a integração, existe um c em [x1, x1 + Δx] tal que

\int_{x_1}^{x_1 + \Delta x} f(t) dt = f(c) \Delta x .

Substituindo a equação acima em (2) temos que

F(x_1 + \Delta x) - F(x_1) = f(c) \Delta x \,.

Dividindo ambos os lados por Δx temos

\frac{F(x_1 + \Delta x) - F(x_1)}{\Delta x} = f(c) .
Note que a expressão do lado esquerdo da equação é o coeficiente diferencial de Newton para F em x1.

Considere o limite com Δx → 0 em ambos lados da equação.

\lim_{\Delta x \to 0} \frac{F(x_1 + \Delta x) - F(x_1)}{\Delta x} = \lim_{\Delta x \to 0} f(c)

A expressão do lado esquerdo da equação é a definição da derivada de F em x1.

F'(x_1) = \lim_{\Delta x \to 0} f(c) \qquad (3) .

Para encontrar o outro limite, usaremos o teorema do sanduíche. O número c está no intervalo [x1, x1 + Δx], então x1 ≤ c ≤ x1 + Δx.

Também, \lim_{\Delta x \to 0} x_1 = x_1 e \lim_{\Delta x \to 0} x_1 + \Delta x = x_1.

Assim, de acordo com o teorema do sanduíche,

\lim_{\Delta x \to 0} c = x_1.

Substituindo em (3), temos

F'(x_1) = \lim_{c \to x_1} f(c).

A função f é contínua em c, então o limite pode ser inserido na função. Assim, temos

F'(x_1) = f(x_1) \,.

que completa a prova.

(Leithold et al, 1996)

[editar] Parte II

Esta é uma prova limite por Soma de Riemann.

Considere f contínua no intervalo [a, b], e F a antiderivada de f. Comece com a quantidade

F(b) - F(a)\,.

Considere os números x1 a xn tal que a = x_0 < x_1 < x_2 < \ldots < x_{n-1} < x_n = b. Que leva a

F(b) - F(a) = F(x_n) - F(x_0) \,.

Agora, somamos cada F(xi) juntamente com sua inversa aditiva, de forma que a quantidade resultante é igual:

\begin{matrix} F(b) - F(a) & = & F(x_n)\,+\,[-F(x_{n-1})\,+\,F(x_{n-1})]\,+\,\ldots\,+\,[-F(x_1) + F(x_1)]\,-\,F(x_0) \, \\ & = & [F(x_n)\,-\,F(x_{n-1})]\,+\,[F(x_{n-1})\,+\,\ldots\,-\,F(x_1)]\,+\,[F(x_1)\,-\,F(x_0)] \, \end{matrix}

A quantidade acima pode ser escriva como a seguinte soma:

F(b) - F(a) = \sum_{i=1}^n [F(x_i) - F(x_{i-1})] \qquad (1)

Aqui, aplicamos o teorema do valor médio. Como anteriormente, é o seguinte:

Considere f contínua no intervalo fechado [a, b] e diferenciável no intervalo aberto (a, b). Então existe um c em (a, b) tal que

f'(c) = \frac{f(b) - f(a)}{b - a}.

Segue que

f'(c)(b - a) = f(b) - f(a) \,.

A função F é diferenciável no intervalo [a, b]; logo, ela é também diferenciável em cada intervalo xi-1. Logo, de acordo com o teorema do valor médio (acima),

F(x_i) - F(x_{i-1}) = F'(c_i)(x_i - x_{i-1}) \,.

Substituindo a equação acima em (1), temos

F(b) - F(a) = \sum_{i=1}^n [F'(c_i)(x_i - x_{i-1})].

Esta consideração implica que F'(ci) = f(ci). Também, xi − xi − 1 pode ser expressado como Δx de partição i.

F(b) - F(a) = \sum_{i=1}^n [f(c_i)(\Delta x_i)] \qquad (2)

Uma sequência convergente de somas de Riemann. Os números na parte superior direita são as áreas dos retângulos cinzentos. Convergem para o integral da função.
Uma sequência convergente de somas de Riemann. Os números na parte superior direita são as áreas dos retângulos cinzentos. Convergem para o integral da função.

Note que estamos descrevendo a área de um retângulo, como o produto de sua largura pelo comprimento, e somando as áreas obtidas. Cada retângulo, por virtude do Teorema do Valor Médio, descreve uma aproximação da seção da curva traçada. Note também que Δxi não precisa ser o mesmo para qualquer valor de i, ou em outras palavras que as larguras dos retângulos podem diferir. O que temos de fazer é aproximar a largura da curva com n retângulos. Agora, com o tamanho das divisões cada vez menor e n aumentando, resultando em maior número de partições para cobrir o espaço, chegaremos mais e mais perto da real área da curva.

Tomando-se o limite da expressão com a norma das partições tentendo a zero, chegamos na Integral de Riemann. Que quando, tomamos o limite quando a mais larga das partições aproxima-se de zero em tamanho , então temos que todas as outras partições são menores e o número de partições se aproxima do infinito.

Então, tomamos o limite em ambos lados de (3). Que resulta

\lim_{\| \Delta \| \to 0} F(b) - F(a) = \lim_{\| \Delta \| \to 0} \sum_{i=1}^n [f(c_i)(\Delta x_i)]\,dx

Nem F(b) nem F(a) são dependentes de ||Δ||, então o limite do lado esquerdo fica F(b) - F(a).

F(b) - F(a) = \lim_{\| \Delta \| \to 0} \sum_{i=1}^n [f(c_i)(\Delta x_i)]

A expressão do lado direito da equação define a integral ao longo de f de a até b. Logo, obtemos

F(b) - F(a) = \int_{a}^{b} f(x)\,dx

que completa a prova.

[editar] Exemplos

Como um exemplo, suponha que precisamos calcular

\int_2^5 x^2\, dx

Aqui, f(x) = x2 e podemos usar F(x) = (1 / 3)x3 como a antiderivada. Logo:

\int_2^5 x^2\, dx = F(5) - F(2) = {125 \over 3} - {8 \over 3} = {117 \over 3} = 39.

[editar] Generalizações

Não precisamos assumir a continuidade de f em toda a extensão do intervalo. A Parte I do teorema diz que: se f é uma função integral de Lebesgue qualquer em [a,b] e x0 é um número em [a,b] tal que f é contínuo em x0, então

F(x) = \int_a^x f(t)\, dt

é diferenciável para x = x0 com F'(x0) = f(x0). Podemos tirar ainda mais restrições de f e supor que ela é pelo menos localmente integrável. Neste caso, podemos concluir que a função F é diferenciável quase em toda sua extensão e F'(x)=f(x) em quase toda sua extensão. Isto é geralmente conhecido como Teorema da diferenciação de Lebesgue.

A Parte II do teorema é verdadeira para qualquer função integral de Lebesgue f que possui uma antiderivada F (nem todas a funções integrais possuem, entretanto).

A versão do teorema de Taylor que expressa o termo erro como uma integral pode ser visto como uma generalização do teorema fundamental.

Há uma versão do teorema para funções de números complexos: suponha que U é um conjunto aberto em C e f: U -> C é uma função que tem uma antiderivada holomórfica F em U. Então para cada curva γ : [a, b] -> U, a curva integral pode ser computada como

\oint_{\gamma} f(z) \,dz = F(\gamma(b)) - F(\gamma(a)).

O teorema fundamental pode ser generalizado para curvas e superfícies integrais em maiores dimensões e em manifolds.

E a mais poderosa declaração neste direção é o Teorema de Stokes.

Lema de Zorn

Lema de Zorn - http://pt.wikipedia.org/wiki/Lema_de_Zorn
Origem: Wikipédia, a enciclopédia livre.
Ir para: navegação, pesquisa

O Lema de Zorn é um axioma da Teoria dos Conjuntos, normalmente apresentado como:

Se, em um conjunto não-vazio e parcialmente ordenado, todo subconjunto totalmente ordenado tem uma quota superior, então o conjunto tem um elemento maximal.

O Lema de Zorn é equivalente ao axioma da escolha.

O nome faz referência ao matemático Max Zorn, mas sua primeira formulação se deve ao matemático polonês Kazimierz Kuratowski.

[editar] Exemplo de uma aplicação

Como um exemplo simples de uma aplicação do Lema de Zorn, vamos provar que todo espaço vetorial possui uma base. Para isto, basta mostrar que todo espaço vetorial contém um conjunto de vetores linearmente independentes (basta tomar um conjunto unitário de um vetor não nulo), e que todo conjunto linearmente independente é um subconjunto de uma base.

Esta segunda parte será provada pelo Lema de Zorn. Seja L um conjunto linearmente independente de vetores de um espaço vetorial V. O trabalho é:

* Construir um conjunto e definir uma relação de ordem parcial. Como desejamos aumentar um conjunto linearmente independente, torna-se natural definir X = \{ x \in P(V) | L \subseteq x \land \mbox{x linearmente independente} \} \,. Sendo X um conjunto de conjuntos, a ordem parcial natural em X é a relação x \subseteq y\,. X não é vazio, porque L \in X\,.
* Provar que todo subconjunto totalmente ordenado de X tem uma quota superior. Em detalhes, isso é feito assim:
o Seja T \subseteq X, T \ne \varnothing\, totalmente ordenado pela relação \subseteq\,.
o Q = \bigcup_{x \in T} x\,, obviamente, satisfaz x \in T \implies x \subseteq Q\,
o Como L é um subconjunto de todo elemento de X, então L é um subconjunto de todo elemento de T. Logo, L \subseteq Q\,
o A prova de que Q é linearmente independente é simples mas trabalhosa:
+ Seja \alpha_1 v_1 + \alpha_2 v_2 + \ldots \alpha_n v_n = 0\, uma combinação linear de elementos distintos de Q.
+ Como Q é uma união de conjuntos, temos que \forall i, 1 \leq i \leq n, \exists Q_i \in T, v_i \in Q_i\,.
+ Como T é totalmente ordenado, dentre os Q_i\, existe um deles Qmax que é superconjunto de todos os outros.
+ Então temos que \forall i, v_i \in Q_{max}\,, portanto \alpha_1 v_1 + \alpha_2 v_2 + \ldots \alpha_n v_n = 0\, é uma combinação linear de vetores de Q_{max}\,.
+ Como, por construção, Q_{max}\, é um conjunto linearmente independente, temos que \forall i, \alpha_i = 0\,.
+ Ou seja, provou-se que Q é linearmente independente.
o Como Q é linearmente independente e é um superconjunto de L, Q \in X\,. Como Q é a união dos elementos de T, \forall x \in T, x \subseteq Q\,. Logo Q é uma quota superior de T
* Agora aplica-se o Lema de Zorn ao conjunto X. Seja B um elemento maximal. Devemos provar que B é uma base:
o L \subseteq B\,
o B é linearmente independente
o Devemos provar que B gera V
+ Seja x \in V, x \notin B, x \ne 0.
+ Como B é maximal, o superconjunto próprio de B definido por B \cup \{ x \}\, é linearmente dependente.
+ Ou seja, existe uma combinação linear \alpha_1 v_1 + \ldots + \alpha_n v_n + \beta x = 0\, em que nem todos coeficientes são zero.
+ \beta \ne 0\,, caso contrário B não seria linearmente independente.
+ Portanto, temos que x = \frac {- \alpha_1} {\beta} v_1 + \ldots + \frac {- \alpha_n} {\beta} v_n\,.
o Ou seja, B gera V.
* A conclusão: todo conjunto linearmente independente de V é subconjunto de uma base de V.

Conjectura de Goldbach

Conjectura de Goldbach - extraído de http://pt.wikipedia.org/wiki/Conjectura_de_Goldbach
Origem: Wikipédia, a enciclopédia livre.
Ir para: navegação, pesquisa
Ilustração da conjectura de Goldbach.
Ilustração da conjectura de Goldbach.

A conjectura de Goldbach, proposta pelo matemático prussiano Christian Goldbach, diz que todo número par maior que 4 é a soma de dois primos.

Por exemplo: 4 = 2 + 2; 6 = 3 + 3; 8 = 5 + 3; 10 = 3 + 7 = 5 + 5; 12 = 5 + 7; etc.

Verificações por computador já confirmaram a conjectura de Goldbach para vários números. No entanto, a efetiva demonstração matemática ainda não ocorreu.

O melhor resultado até agora foi dado por Olivier Ramaré em 1995: todo número par é a soma de até 6 números primos.

A conjectura original de Goldbach, em uma carta para Leonhard Euler, era de que todo inteiro maior que 2 pode ser escrito como uma soma de 3 primos (e ele incluía 1 como um número primo). Essa conjectura também ainda não foi provada.

Ai acima vem uma série de coisas que podem ser solucionadas, ou demonstradas apenas com o auxílio dos computadores

Ai acima vem uma série de coisas que podem ser solucionadas, ou demonstradas apenas com o auxílio dos computadores.
Entretanto, de acordo com o teorema da incompletude de Gödel (para mais informações consulte a minha página em: http://br.geocities.com/danilomatias17/UDESC/Materias/LFM_Linguagens_Formais_deMaquinas/TEC.html Olhe na Tabela que está dentro de outra tabela, desctacado com fundo verde: TEOREMA DE GÖDEL, acesse aqueles links ali) nem todas as "informações" verdadeira são possíveis de provar sua veracidade ...!

Para as demais, quando o problema é decidível, é possível utilizar um computador para auxiliar na prova de um teorema ...!
Está agarrado na bóia ?
Se limite a entender que nem tudo um computador consegue resolver, é devido a isso que nós aspirantes a cientistas da computação nos matamos em provar que determinados problemas não são decidíveis, ou em outras palavras um computador não pode resolver ...!
Resolvi selecionar algumas coisas que os computadores puderam auxiliar na prova ...! Essas coisas estão ai em cima!

Último Teorema de Fermat

Último Teorema de Fermat - Artigo apenas espelhado de http://pt.wikipedia.org/wiki/%C3%9Altimo_Teorema_de_Fermat
Origem: Wikipédia, a enciclopédia livre.
Ir para: navegação, pesquisa
Pierre de Fermat
Pierre de Fermat

O Último teorema de Fermat, ou teorema de Fermat-Wiles, afirma que não existe nenhum conjunto de inteiros positivos x, y, z e n com n maior que 2 que satisfaça

x^n+y^n=z^n \,\! .

O teorema deve seu nome a Pierre de Fermat, que escreveu às margens de uma tradução de Arithmetica de Diofanto, ao lado do enunciado deste problema:

"Cuius rei demonstrationem mirabilem sane detexi. Hanc marginis exiguitas non caperet."
"Encontrei uma demonstração verdadeiramente maravilhosa disto, mas esta margem é estreita demais para contê-la."

Após ter sido objeto de fervorosas pesquisas durante mais de 300 anos (a nota acima insinuava que uma demonstração elementar era possível — o que atiçou a curiosidade de todos), ele foi finalmente demonstrado em 1994 pelo matemático britânico Andrew Wiles. A grande maioria dos matemáticos acredita hoje que Fermat estava enganado: a prova utiliza ferramentas matemáticas bastante elaboradas da Teoria dos números — abrangendo curvas elípticas, formas modulares e representações galoisianas (termo derivado de Évariste Galois, matemático francês) — as quais ainda não existiam na época em que viveu Fermat.

Mais precisamente, Wiles provou um caso particular (para curvas ditas semi-estáveis) da Conjectura de Shimura-Taniyama-Weil, pois sabia-se já havia algum tempo que este caso implicava o teorema.

Este teorema não tem aplicação nenhuma per se: ele toma um valor importante, no entanto, devido às idéias e às ferramentas matemáticas que foram inventadas e desenvolvidas para prová-lo. Pode-se entender este teorema graficamente considerando-se a curva da equação xn + yn = 1 quando n > 2, essa curva não passa por nenhum ponto com coordenadas racionais diferentes de zero.


Observação

Sendo costume que se dê a um teorema o nome daquele que fez sua demonstração, o título «Teorema de Fermat» pode não ser apropriado. Dever-se-ia falar ou de uma conjectura de Fermat ou do teorema de Wiles.

[editar] Extensão do Teorema de Pitágoras?

Para os primeiros dois valores de n inteiro existe uma infinidade de soluções: o caso n = 1 é evidente, o caso n = 2 — conhecido como teorema de Pitágoras — admite, entre outras, a solução clássica 42 + 32 = 52 que utiliza o método do círculo. Outras soluções podem ser encontradas usando-se o esquema:

\left({a^2-b^2}\right)^2+\left({2ab}\right)^2=\left({a^2+b^2}\right)^2 \,\! ,

para todos a, b inteiros primos entre si, sendo que outras soluções são encontradas multiplicando-se a e b por um número inteiro. Os números que satisfazem o Teorema de Pitágoras são chamados de trios pitagóricos (ou ternos pitagóricos).

[editar] O Último Teorema de Fermat e a Literatura

Propiciando notáveis avanços em vários ramos da matemática, a saga de 359 anos de tentativas, erros e acertos está admiravelmente descrita no livro “O Último Teorema de Fermat”[1] , do autor britânico Simon Lehna Singh, com 324 páginas.

Máquinas Virtuais apenas linkando um link para um blog que fala do virtual BOX

Virtual Box - instalando máquinas virtuais
Virtual Box - instalando máquinas virtuais

Pesquisa no Google que estava fazendo a respeito desse assunto ...

domingo, 25 de maio de 2008

Apenas Linkando o Artigo: Shared Object Híbrido, Java e Ruby

Esse cara muito malucão como eu resolveu criei uma solução híbrida, uma biblioteca compatível com Ruby e Java.

O artigo é muito 10 devido a se tratar de duas linguagens utilizadíssimas na empresas, principalmente o java, entretanto com cofome a figura:




Rubby é uma linguagem com muitas coisas "prontas", então facilita a beça, programar nela ...!

Essa figura tirei do Galoá (Felipe Galois / inutilidades)

Faça um ótimo proveito lendo o artigo:

Shared Object Híbrido, Java e Ruby (
http://www.hashcode.eti.br/?cat=16)


http://www.hashcode.eti.br/?cat=16

sábado, 24 de maio de 2008

Implementação da Função malloc da linguagem C no UNIX Versão 6

Para você que como eu, sempre teve curiosidade de saber como é implementada a função de alocação dinâmica da linguagem C , void *malloc (unsigned int num);
E seu proferssor de linguagem de Programação (Linguagem C), não fazia a mínima idéia de como o Sistema Operacional implementa a alocação Dinâmica, ai vai um exemplo de alocação dinâmica do Sistema operacional Unix versão 6:






2500: #
2501: /*
2502: */

2503:
2504: /*
2505: * Structure of the coremap and swapmap
2506: * arrays. Consists of non-zero count
2507: * and base address of that many

2508: * contiguous units.
2509: * (The coremap unit is 64 bytes,
2510: * the swapmap unit is 512 bytes)
2511: * The addresses are increasing and
2512: * the list is terminated with the

2513: * first zero count.
2514: */
2515: struct map
2516: {
2517: char *m_size;
2518: char *m_addr;

2519: };
2520: /* --------------------------- */
2521:
2522: /*
2523: * Allocate size units from the given
2524: * map. Return the base of the allocated

2525: * space.
2526: * Algorithm is first fit.
2527: */
2528: malloc(mp, size)
2529: struct map *mp;

2530: {
2531: register int a;
2532: register struct map *bp;
2533:
2534: for (bp = mp; bp->m_size; bp++) {

2535: if (bp->m_size >= size) {
2536: a = bp->m_addr;
2537: bp->m_addr =+ size;
2538: if ((bp->m_size =- size) == 0)

2539: do {
2540: bp++;
2541: (bp-1)->m_addr = bp->m_addr;
2542: } while ((bp-1)->m_size = bp->m_size);

2543: return(a);
2544: }
2545: }
2546: return(0);
2547: }
2548: /* --------------------------- */

2549:
2550: /*
2551: * Free the previously allocated space aa
2552: * of size units into the specified map.
2553: * Sort aa into map and combine on

2554: * one or both ends if possible.
2555: */
2556: mfree(mp, size, aa)
2557: struct map *mp;
2558: {
2559: register struct map *bp;

2560: register int t;
2561: register int a;
2562:
2563: a = aa;
2564: for (bp = mp; bp->m_addr<=a && bp->m_size!=0; bp++);

2565: if (bp>mp && (bp-1)->m_addr+(bp-1)->m_size == a) {
2566: (bp-1)->m_size =+ size;
2567: if (a+size == bp->m_addr) {

2568: (bp-1)->m_size =+ bp->m_size;
2569: while (bp->m_size) {
2570: bp++;
2571: (bp-1)->m_addr = bp->m_addr;

2572: (bp-1)->m_size = bp->m_size;
2573: }
2574: }
2575: } else {

2576: if (a+size == bp->m_addr && bp->m_size) {
2577: bp->m_addr =- size;
2578: bp->m_size =+ size;

2579: } else if (size) do {
2580: t = bp->m_addr;
2581: bp->m_addr = a;

2582: a = t;
2583: t = bp->m_size;
2584: bp->m_size = size;
2585: bp++;
2586: } while (size = t);

2587: }
2588: }
2589: /* --------------------------- */



Observe que a alocação não passa de uma simples manipulação de estrutura de dados, onde vai se incrementando o endereço de memória, até se achar uma região de memório com o tamanho que se deseja (size), disponível ...

O cara que colocou isso na net é um japonês, se desejar de uma conferidinha no arquivo do malloc em: www.tom-yam.or.jp
Se dejar ver os outros arquivos .c que ele colocou lá veja a página:
http://www.tom-yam.or.jp/2238/src/
Se Desejar ver onde ele linkou isso veja: http://www.tom-yam.or.jp/2238/"

Agora você finalmente pode dizer a seu professor de linguagem de programação como é que se implementa um malloc da vida ...!
Oserve que é algo relativamente simples ...!
Bom, abração a todos e se cuidem!

Acabei percebendo que uma galerinha ficou boiando na declaração dessa função malloc, devido a não conhecer os estilo clássico de declaração de funções, lembrando que esse código acima é da década de 70, logo é velho para burro!


Esse texto abaixo foi extraído integralmente sem alterações de:

http://br.geocities.com/sdiasneto/c_int/funcoes.htm

8.4 Parâmetros

Existem duas formas de declaração de parâmetros em funções: a forma clássica e a forma moderna.

A forma clássica tem a seguinte sintaxe:







TIPO NOME(PARÂMETRO1, PARÂMETRO2, ... , PARÂMETROn)
TIPO DO PARÂMETRO1;
TIPO DO PARÂMETRO2;
...
...
TIPO DO PARÂMETROn;
{
CORPO DA FUNÇÃO
}




Já a forma moderna tem a seguinte sintaxe:






TIPO NOME(TIPO PARÂMETRO1, TIPO PARÂMETRO2, ... , TIPO PARÂMETROn)
{
CORPO DA FUNÇÃO
}




Abaixo segue um exemplo de função com os dois tipos de declaração de parâmetros.









/* Com declaração clássica */
int soma(a, b)
int a;
int b;
{
int resultado;
resultado = a + b;
return(resultado);
}



/* Com declaração moderna */
int soma(int a, int b)
{
int resultado;
resultado = a + b;
return(resultado);
}




Atualmente utiliza-se a forma moderna, porém, em programas mais antigos você encontrará a forma clássica.

Fim do comentário dextraído da página mencionada.

Repare que na declaração clássica, dentro dos parêntesis "(" e ")", vão apenas os nomes dos parâmetos ("variáveis"), os respectivos tipos dela são declarados logo após o fecha parêntesis")" e antes do símbolo, abre chaves "{", o símbolo que indica onde começa a função.

Na função malloc acima mp é u ponteiro que aponta para uma estrutura do tipo map (a estrutura do tipo map possui, dois ponteiras para char )
Size deve ser definido em uma diretiva de compilação, aqueles # no cabeçalho do arquivo, mas infelizmente ele não está nessa parte do código para saber ...
Então .., observe que no laço for, você anda alguns endereços de memória até achar uma área de memória livre com um tamanho maior ou igual ao que necessita, nesse caso o tamanho é bp->m_size, e o tamanho que vc necessita é size.
Se você achar você vai indicar ao Sistema operacional que aquela região de memória será ocupada através da operação: bp->m_addr =+ size;
ai você retorna um valor inteiro, que supostamente seria a região de memória alocada ...!

Esse algoritmo acima é o First-fit, ou seja o primeiro que encontrar, podem existir implementações com algoritmos best-fit, worst-fit, FCFS ..., mas esses algoritmos ai o professor Rafael Obelheiro ensina bem lá na Disciplina de Sistemas Operacionais na UDESC, se voc acha que não ensina pelo menos ele cobra bem ..., você tem que saber ...!
Quando fizer a disciplina de SOP com ele entenderá melhor isso ai acima ...!

convertendo arquivos. pdf em .html com o pdftohtml no debian linux

Caso você não tenha o pdftohtml instalado no seu debian linux, basta executar a linha de comando abaixo:

#sudo apt-get install pdftohtml

para usar vá até a pasta que está o arquivo que deseja converter, utilizando o comando cd e digite:

#pdftohtml NomedoArquivo.pdf NomedoArquivo.html

Onde o NomedoArquivo.pdf é nome do arquivo .pdf que deseja converter para .html
e NomedoArquivo.html é o nome do arquivo que o arquivo convertido .html terá

Fácil e simples não ?

sexta-feira, 23 de maio de 2008

Download the Book: UNIX OPERATING SYSTEM SOURCE CODE LEVEL SIX

Mais informações sobre um dos únicos, se não o único livro com o código de um Sistema Operacional Não didático Comentado (UNIX versão 6)( o MINIX do Tanenbaum é com código Didático )
Na minha página em:

UNIX OPERATING SYSTEM SOURCE CODE LEVEL SIX

Writing GNOME Applications

http://developer.gnome.org/doc/books/WGA/
Writing GNOME Applications

Link de uma hp que fala como instalar o kile (LaTEX)

Kile

Diretório da IBM, muitas coisas sobre COBOL

Para quem não sabe, essa linguagem antiga, ainda é usada nos poderosos mainframes da IBM, para quem não sabe o que é um mainframe
"Um mainframe é um computador de grande porte, dedicado normalmente ao processamento de um volume grande de informações." - pt.wikipedia
A Página que possui pelo menos duas apostilas sobre o cobol é:
cobol ( IBM )

segunda-feira, 19 de maio de 2008

Dicas para programar melhor

Artigo extraído na íntegra de : www.michelazzo.com.br



Dicas para programar melhor
Enviado por admin em qui, 30/08/2007 - 04:38.
Categorias:

* Artigos
* Programação
* Desenvolvimento

Está começando agora a programar e não sabe como fazer? Precisa de dicas de como executar determinada função ou código e não tem onde achar? Este artigo não responde estas perguntas mas fornece várias dicas para programar melhor em qualquer linguagem.

Há muito tempo recebo mensagens de pessoas que querem começar a programar e desejam dicas de como fazer isso, seja para uma linguagem específica, seja para a área da programação.

Infelizmente não posso dar dicas para todas as linguagens pois não as conheço para escrever sobre. Entretanto, algumas por serem genéricas, podem ser fornecidas e servem como base para toda a área e não somente para esta ou aquela linguagem. É disto que este artigo trata: dicas de como programar melhor. Vamos lá?

Aprenda com os outros
Existem programadores que não suportam imaginar sua “grande invenção” sendo copiada por outros. Para estes, é uma verdadeira heresia compartilhar o conhecimento e o código com outras pessoas. Infelizmente estes programadores estão, em sua maioria, fadados a fracasssar pois vão viver inevitavelmente em uma ilha, isolados.

O ser humano chegou em seu estágio de desenvolvimento porque compartilha seu conhecimento e descobertas. Isso acontece em todas as áreas, sejam exatas, humanas ou biológicas. Assim é um equívoco gigantesco pensar que a descoberta de uma nova estrela ou ainda de um novo remédio é um fato isolado e feito por uma pessoa. São dezenas de pessoas em dezenas de instituições diferentes que juntas fazem “o sucesso”.

A melhor forma de aprender é tomar exemplos daqueles que já fizeram. Não digo que a criatividade deve ser colocada fora da questão, pelo contrário. Bom é aquele que consegue ver algo e melhorá-lo, levando à excelência. Assim, obtenha código de terceiros e compreenda como o autor chegou em determinado resultado. Compare com o que você já sabe e peneire aquilo que é valioso para você. Muitas vezes a leitura de um código pode resultar na descoberta de uma solução totalmente diferente e que cai como uma tábua de salvação no seu problema.

Lendo o código de outros programadores também aprende-se como NÃO FAZER (inclusive acredito que é por isso que muitos não divulgam o que fazem). Falta de identação, criação sistemática de variáveis, loops infinitos e todo o tipo de aberração pode ser encontrada em códigos mal feitos. Lendo estes códigos e comparando com aquilo que já conhece, certamente poderá identificar o que é utilizável e o que é “> /dev/null”.

Pense antes de fazer
O número de programadores que começa a fazer um software pelo código é tão grande quanto a quantidade de cimento usado para construir as torres Petronas na Malásia. Seja por falta de conhecimento, seja por desespero do cliente ou empregador ou ainda por ego, eles começam a fazer uma casa pelo telhado e não pelo alicerce. Aí meu amigo, a casa cai, literalmente.

Os melhores softwares que conheço são aqueles onde o tempo “gasto” na sua idealização é muito maior que 70% do tempo total para finalizá-lo. Código, qualquer um faz, basta a leitura de um livro, dois tutoriais e um guia de referência à mão que ele sai. Agora, pensar como ele deve ser feito e como ele deve se comportar é algo que poucos fazem mas atitudes que separam o bom do mau software.

Pense no que a aplicação vai fazer. Execute testes de mesa, faça fluxogramas, pense nas tabelas do banco de dados. Considere as variáveis existentes e as não existentes e como a aplicação deve responder para cada uma delas. Imagine o que o usuário é capaz de fazer (cada coisa!) e como contornar as idéias mais mirabolantes possíveis. Levando tudo isso em consideração, seu software está sujeito a ter menos erros e não se tornar uma colcha de retalhos dentro em breve (como alguns sistemas que conhecemos).

Documente
A esmagadora maioria dos programadores não consegue criar um parágrafo de texto com nexo. Conheço vários exímios programadores que não se aventuram em escrever um livro ou um artigo sobre o que conhecem por não conseguirem ser expressar além de parênteses, colchetes e sinais de igualdade. Outros até tentam e depois que percebem o erro que fizeram, abominam a idéia e fogem dela como o diabo da cruz.

Mas feliz ou infelizmente (para você), mais cedo ou mais tarde terá que parar e escrever a documentação do que está fazendo. Ela é imprescindível não somente para aquele que paga pelo seu trabalho, mas também para que você possa, em caso de necessidades futuras, saber o que foi feito, como foi feito e onde está cada parte de seu software. É trabalhoso, é cansativo, é chato e principalmente, maçante. Mas acredite, tem que ser feito e o quanto antes. Se no meio do caminho você se perder, poderá saber onde está e para onde vai.

O método correto é começar a documentação ANTES do desenvolvimento do software. Fluxogramas, dicionários e modelos de dados são o mínimo esperado de um programador que vai começar a fazer um sistema. Se começa sem isso, já começa errado e vai certamente dar com os burros n'água logo adiante.

Arme-se com ferramentas produtivas
Em minha última viagem comprei um daqueles afamados canivetes suíços. Uma ferramenta que acho imprescindível em todos os sentidos. Mas ao contrário do que pode pensar, não comprei um “turbo canivete” com mais de cem funções. Comprei um que possui somente aquilo que preciso, ou seja, duas lâminas de corte, uma tesoura, uma pinça, um alicate e uma chave com pontas intercambiáveis que retira qualquer parafuso dos computadores e notebooks atuais, inclusive aqueles com cabeças em estrela usados em disco rígidos. Poderia comprar um super canivete? Sim, mas para quê? Carregar peso desnecessário, pagar mais caro e nunca usar a maioria de suas funções?

Na programação acontece a mesma coisa. Existem ferramentas e “ferramentas” para tudo. Editores de código, gerenciadores de bancos de dados, documentadores e assim por diante. Uns melhores que os outros, sejam em recursos, em funcionalidades e também em preços.

Um bom editor que faça highlight de código, uma identação decente e que forneça acesso rápido à sintaxe das linguagens que usa é extremamente útil e produtivo. Da mesma forma, gerenciadores de bancos de dados são extremamente importantes a fim que possa executar comandos diretamente no mesmo para comparar os valores com o que obtém no código e também, vez em quando, alterar suas propriedades.

Fuja de ferramentas com muitos recursos ou “gordas”. A maioria destes recursos você nunca irá usar e se tornarão um peso em sua máquina, além de deixá-lo frustrado por não saber usar tudo o que existe. Prefira uma ferramenta que faz efetivamente o que deseja e que você se sinta confortável com ela. É muito melhor saber usar completamente uma ferramenta mais simples do que não saber usar uma com todos os recursos possíveis e imagináveis.

Não teste, peça para outros testarem
Tudo o que fazemos repetitivamente torna-se mecânico e não percebemos. Exemplos são: dirigir, andar de bicicleta e respirar (ou você pensa para respirar?). Com o teste de software acontece a mesma coisa. Estamos tão inseridos em seu desenvolvimento e conhecemos todas as vírgulas que elas se tornam um problema para o programador que, na hora dos testes, passa por cima de pequenos erros sem perceber e libera uma versão “bugada”, ou ainda perde horas para descobrir que falta um ponto dentro de uma operação matemática.

Sempre peça para terceiros testar o que está fazendo e, preferencialmente, que seja um futuro usuário do software. Como ele não está inserido no processo de desenvolvimento e na maioria das vezes pouco conhece de programação, poderá encontrar erros que você simplesmente não percebeu, seja uma imagem deslocada, um pixel a mais numa área da tela ou ainda uma mensagem sem motivo de lá estar (principalmente quando é um palavrão). Fazendo isso, as chances de erros é muito menor (por isso existem beta testes).

Páre e descanse
A programação de software é uma área extenuante. Horas e horas diante de uma tela sentado em cadeiras que não atendem em absoluto a ergonomia de seu corpo. Muitos programadores passam o dia inteiro assim e a grande maioria reclama, depois de alguns anos, que não aguenta mais, seja pela pressão de fazer mais em menos tempo, sejam pelos olhos cansados ou pelas dores nos pulsos.

Se você entrar na onda do “estouro de boiada” e passar dez, doze, quatorze horas diárias sem pausas diante de um código, terá, além dos problemas já citados, um outro comum: lapso de memória. É comum quando estamos em uma situação de estresse psicológico sermos “desligados”. Isso não é seu ou meu, mas sim da genética do corpo humano. Ele se “desliga” para isolar-se de situações que possam causar risco à sua sobrevivência. Exemplos são as pessoas que desmaim diante de um estresse grande como um seqüestro ou ainda a perda de um ente querido. E não adianta ir contra isso, se forçar, vai ter um reboot em breve (só espero que não seja um shutdown!).

Sempre faça pausas durante o trabalho. Levante-se, vá até o bebedouro (ou geladeira), beba água, caminhe, converse com alguém. Claro que não é para fazer isso a cada meia hora e tampouco pausas de duas horas. Mas sempre dê tempo ao tempo e principalmente à você. Use esta dica com regularidade para manter seu corpo e suas faculdades mentais em dia. E por favor, jogue no lixo aquelas bolinhas ridículas usadas para massagear as mãos. Elas servem somente como desculpa para que fique sentado com seu traseiro na cadeira e produza o máximo possível. Lembre-se, produção não é volume, é qualidade.

Não se prostitua
Claro que não estou falando de favores sexuais em troca de qualquer coisa. Não é nada disso. Estou dizendo que você não deve se vender por qualquer coisa, para qualquer um. Infelizmente um dos maiores problemas da área de programação é o ato da prostituição laboral onde o programador, por motivos mil, vende seu trabalho a qualquer preço, fazendo com que ele mesmo toda a categoria seja prejudicada.

Você pode advogar que a vida está difícil ou que precisa comer. Claro que sim, todos precisamos. Mas será que precisa ser tão barato? Muitas vezes os programadores são comparados com pessoas que estão começando na profissão mas levando em conta somente a parte financeira, ou seja, o valor de A é muito menor que B, não mensurando a experiência daquele que está há anos fazendo software.

Seja honesto consigo mesmo. Se você é um iniciante na programação, cobre o que é correto pela sua experiência. Entretanto se você é um “macaco velho”, não se sujeite aos ditames pré-existentes. Na maioria das vezes isso é ruim para você, ruim para o contratante e ruim para todos nós. Acredite, ainda existem contratantes que sabem o quanto vale um bom programador. Se ele te oferece pouco, certamente é porque seu trabalho para ele vale pouco. Se vale pouco, para que ser escravizado?

A melhor forma de escapar desta armadilha é o planejamento. Muitas vezes somos obrigados a aceitar qualquer coisa que colocam em nossa frente porque não temos um planejamento financeiro adequado e nos vemos numa situação que é pegar ou largar. Não vou aqui ensinar regras de economia pessoal para você mas acredito que seria muito bom ler alguma coisa sobre o assunto e praticar. Com isso não precisa passar por apertos e pode ser valorizado como deve realmente.

Finalmente, como última dica; Seja humilde
Ninguém sabe tudo! Quando você toma uma postura como esta, mantém os braços abertos para receber novas informações e aprender mais, principalmente com aqueles que sabem algo diferente de você. Isso inclusive deve ser usado não somente relacionado com a metodologia ou linguagem que usa, mas sim em toda a área da programação. Muitas vezes você pode ter a solução de um problema baseando-se no conhecimento de outra pessoa que programa em linguagem diferente da sua ou que usa métodos diferentes dos seus.

Obs: agradecimentos ao leitor Luiz Pedro Jr. pela pergunta que resultou neste artigo.

Como matar um dragão

Como matar um dragão
Enviado por admin em qua, 05/03/2008 - 12:14.
Categorias:

* Blog
* Programação
* Fun

Mais uma daquelas "infames". Como programadores de diversas linguagens fazem para matar um dragão (com participação especial da princesa):

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 ideia do Javanês e a copia, tenta matar o dragão, mas é comido pelo réptil.

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 ternaria, dados em 3 dimensões, OLAP, demora 15 anos para processar a informação. Enquanto isso a princesa virou lésbica.

Ruby
Chega com uma puta fama, falando que é o melhor faz tudo e 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.

Shell
Cria uma arma poderosa para matar os dragões, mas, na hora H, não se lembra como usá-la.

Shell versão 2
Chega no dragão com um script de 2 linhas que mata, corta, stripa, empala, 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.

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.

Fortran
Chega, desenvolve uma solução com quarenta e cinco mil linhas de código, mata o dragão vai ao encontro da princesa… mas esta o chama de tiozinho 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 é bunitinho e funciona, mas por dentro está tudo remendado. Quando 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.

A melhor de todas: analistas 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 elee que não será doloroso. Ao executar o processo ele estima o esforço e o tamanho do estrago que isso vai causar, a assinatura 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.

Copiado na Íntegra de:

www.michelazzo.com.br

domingo, 18 de maio de 2008

Semana sem postagens

Semana sem postagens
Essa semana não pretendo postar nada aqui, muito menos atualizar a homepage:
danilomatias17

sábado, 17 de maio de 2008

baixando maquinas com SO instalado para usar no VMPlayer

Posarei decentemente isso a hora que for fazer, mas existe um site como vmplayer com sistemas operacionais instalados...
o site é :

vmware.


nesse site você cria a máquina on-line e baixa ela ...!
easyvmx.

sexta-feira, 16 de maio de 2008

Gerando arquivo objeto com cc

Para dividir um arquivo em .h e .c, normalmente utiliza-se arquivos .o, arquivos ojetos.

Dividi o arquivo 2.c em 2 um, 2.c e outro 2.h

o arquivo 2.h é:














/* arquivo 2.h*/


#include "stdio.h"

#include "stdlib.h"

void *calloc2(int multiplicador, int Nbytes);




e o arquivo 2.c é:

#include "2.h"

void *calloc2(int multiplicador, int Nbytes)
{/* Retorna um ponteiro com multiplicador*Nbytes bytes alocados */
void *p;
p = (void*)calloc(multiplicador, Nbytes);
if(p == NULL)
{
printf("!!!ERRO FALHA NA ALOCAÇÃO!!! ");
return NULL;
}

else
//printf("\n calloc2\n");
return p;
}


int main()
{

printf("\n Alocando memória no 2.c \n ");
int *p = (int*)calloc2(1,sizeof(int));
if(p == NULL)
exit(1);
printf("\n Memoria alocada! \n\n ");
printf("\n Liberando a memoria! \n\n ");
free(p);
printf("\n Memoria liberada! \n\n\n\n ");

p = (int*)calloc(1,sizeof(int));
if(p == NULL)
{
printf("!!!ERRO FALHA NA ALOCAÇÃO!!!");
exit(1);
}
printf("\n Memoria alocada! \n\n ");
printf("\n Liberando a memoria! \n\n ");
free(p);
printf("\n Memoria liberada! \n\n\n\n ");

printf("\n Alocando memória \n ");
p = (int*)calloc2(1,sizeof(int));
if(p == NULL)
exit(1);
printf("\n Memoria alocada! \n\n ");
printf("\n Liberando a memoria! \n\n ");
free(p);
printf("\n Memoria liberada! \n\n\n\n ");

return 0;
}


dei um:

# cc -o 2a 2.c

# ./2a


E o resultado foi:



Alocando memória no 2.c

Memoria alocada!


Liberando a memoria!


Memoria liberada!




Memoria alocada!


Liberando a memoria!


Memoria liberada!




Alocando memória

Memoria alocada!


Liberando a memoria!


Memoria liberada!



Para grar o arquivo 2.o :

# cc -c 2.c

Top 10 coisas que podemos fazer com Linux que não podemos com outros sistemas

De acordo com Tecnologic.wordpress
As top 10 coisas que podemos fazer com Linux que não podemos com outros sistemas operacionais são:

"
1 - Obter e manter atualizado um sistema completo legalmente sem pagar nada.
"
De acordo com: Mercado Livre a licença do Windows Xp SP2 custa R$ 1499,00, enquanto a Licença do Linux é Livre


"2 - Poder rodar diferentes interfaces gráficas caso você não goste da que veio por padrão ou por ela não se adequar as suas necessidades."

Existem interfaces mais "leves" como o Fluxbox, por exemplo que exige menos hardware para funcionar.
Existem interfaces em três dimensões como o: Looking Glass, para os que possuem hardware menos modesto

E finalmente existem interfaces muito poulares como o K Desktop Environment e o GNOME


"3- Ter total controle sobre o hardware do computador "

A vantagem é auto-explicativa, é impossível ter controle total utilizando software proprietário simplesmente porque não é você que adequa as aplicações as suas necessidades e sim você que se adequa as aplicações




"4 - Não sentir falta de desfragmentar o disco-rígido, nunca."

Os sistemas de arquivos utilizados pelo Linux não se fragmentam. Um exemplo de sistema de arquivo assim é o ext3

"5 - Experimentar diferentes programas, decidir os que não gosto, desinstalá-los e saber que não há lixo em um registro que pode deixar minha máquina lenta."

É o fim do incômodo de ter que formatar sua máquina a cada seis meses!


"
6 - Usar o SO sem necessidade de usar antivírus nem nenhum outro tipo de software anti-malware "

No linux por mais que existam vírus, você simplesmente não executa eles, pois para executar é necessário dar o comando ./nome_do_executavel, e você raramente fará isso em algo que não conhece!
Dar duplo clique é algo que você faz sem pensar !

"
7 - Personalizar o que quiser, legalmente, incluindo meus programas favoritos. Eu posso perguntar aos mantenedores, propor idéias e participar do processo de desenho e programação do software que quiser."

Com software proprietário é possível colaborar com o desenvolvimento, para que as aplicações sejam feitas de acordo com sua necessidade ?

"
8 - Usar o mesmo hardware durante mais de 5 anos até que realmente precise substituí-lo. "

O motivo pelo qual, quase todo estudante universitário gosta de usar linux, é por que você não tem que tirar dinheiro de áreas realmente importantes para investir em equipalmentos, durante um bom tempo ...!


"
9 - Receber ajuda de centenas de usuários, especialistas e novatos de maneira gratuita e
desinteressada.
"


Com software proprietário, não raro você necessita gastar dinheiro com cursos e mais cursos, para aprender a utilizar as ferramentas, com linux você aprende com quem quer colaborar com você!


"10 - Ter um desktop com efeitos espetaculares, e muito superiores ao do Windows Vista em um computador de 3 anos atrás. "


Tenha uma pequena noção vendo o vídeo abaixo:
Mas antes se pergunte quando um software proprietário materá sempre a última tendência ?



Os sete hábitos do usuário Linux eficiente

Para Cida Andrade sete hábitos do usuário Linux eficiente são:



1. Nunca permanecer logado como “root”

2. Forneça nomes convenientes a seus arquivos

3. Mantenha o diretório /home em uma partição distinta

4. Gerencie eventuais travamentos

5. Teste até se encontrar

6. Adote a Interface em Linha de Comando (modo texto)

7. Esteja sempre pronto para utilizar o Linux

8. Um passo além


Ainda de acordo com


: Wordpress

"
8. Usarás a linha de comando.
Especialmente para configurações. Use a interface gráfica para que o seu sistema funcione perfeitamente, mas tente conhecer a opção também na linha de comando. Em alguns casos, a linha de comando é a única forma de usar algumas das tantas características avançadas do Linux.
9. Não tentarás recriar o Windows.
O Linux não tenta ser clone do Windows. É diferente. Aceite e aprecie as diferenças.
10. Não se darás por vencido.
Tente com diferentes distribuições até encontrar a que mais goste. Instale outras versões de vez em quando. Tente com diferentes programas que sirvam para um mesmo propósito antes de fazer sua escolha (amarok, xmms, beep, exaile para música; azureus, ktorrent, deluge para bittorrent). Se não gosta dos programas “de fábrica”, lembre-se que você quase sempre pode mudar para um mais adequado.

"

Tomando os cuidados acima, certamente você sentirá menos receio ao utilizar o GNU/linux

terça-feira, 13 de maio de 2008

Mais um blog de software livre (softmodem no linux):

Mais um blog de software livre:

http://infosucata.blogspot.com/


Lá nesse blog tem o artigo:



Linkoteca: soft-modems em Linux (modem) Parte I: Introdução

o que é computação Reconfigurável ?

Já imaginou um computador de uso geral, que de acordo com algoritmo a ser executado muda o hardware ?
Exitem pesquisadores na Universidade de São Paulo tentando desenvolver tal computador, apenas salientando que quando digo computador, me refiro ao hardware dele.
Esses Pesquisadores estão mais especificamente no Laboratório de Computação Reconfigurável - LCR

Mas iremos as Referências ...



Computação reconfigurável, é um processamento computacional de alta velocidade e muito flexível.
Tem como característica, suas "auto- mudanças" de caminho de dados e o controle do fluxo.

O termo “Computação Reconfigurável”, existe desde 1960, por uma proposta de um computador feito de um padrão de processadores com hardware reconfigurável.
Um processador principal deveria controlar o comportamento dos hardwares reconfiguráveis. Esses hardwares são adaptados para executar uma tarefa, e após o termino dessa tarefa, por exemplo, eles poderiam ser ajustados para realizar alguma outra tarefa.

Isso resultou em um computador de estrutura híbrida, que combina flexibilidade do software e a velocidade do hardware. - Arquitetura de Computadores II - Monografia (filipedumont)



Em termos básicos, a computação reconfigurável combina a velocidade do hardware com a flexibilidade do software. A tecnologia da computação reconfigurável consiste na habilidade de se modificar o hardware da arquitetura do sistema em tempo real para se adequar à aplicação; e isto deve ser realizado com o chip energizado.

Os sistemas de computação reconfigurável são plataformas onde a arquitetura pode ser modificada em tempo real para melhor se adequar à aplicação que será executada, Deste modo, o processador reconfigurável passa a trabalhar com uma arquitetura desenvolvida exclusivamente para aquele determinado tipo de aplicação, permitindo uma eficiência muito maior do que a normalmente encontrada em processadores de uso geral. Isto ocorre porque o hardware é otimizado para executar os algoritmos necessários para aquela aplicação específica; ou seja, para se obter um melhor desempenho de um algoritmo, este deve ser executado num hardware específico para ele. Acentuados ganhos de desempenho podem ser obtidos com a utilização deste hardware específico. - eletronica.org




Tradicionalmente, quando pensamos em computadores de uso geral, pensamos em um microprocessador executando um programa seqüencial. Entretanto, uma característica simples que define um processador de uso geral seria a de um pedaço de silício, configurado após a fabricação como um Circuito Integrado (CI), para resolver qualquer tarefa computacional. Isso significa, que até por motivos econômicos muitas aplicações poderiam ser executadas sobre um único CI, e também que o mesmo CI poderia resolver problemas diferentes em diferentes instantes de tempo. Significando ainda que as pessoas poderiam programar esses componentes para fazerem coisas que o produtor original do CI nunca teria imaginado fazer.

Computação Reconfigurável, compartilha todas essas características de "computador de uso geral", mas organiza a computação de maneira muito diferente. Ao invés de computar uma função sequencial através de um conjunto de instruções de tempo, igual a um processador, as arquiteturas reconfiguráveis geralmente computam a função através de unidades funcionais configuradas no espaço (unidades em diferente blocos dentro dos FPGAs). Temos portanto, computação paralela envolvendo diferentes unidades funcionais que geram e consomem resultados intermediários. A diferença portanto está na computação totalmente temporal/sequencial das tarefas versos computação totalmente espacial/paralela. - www.icmc.usp.br


Observa-se que a computação tem muito a ganhar com as pesquisas na área da Computação Reconfigurável, pois umas das grandes limitações dos sistemas operacionais se deve ao hardware, muitos algoritmos são extremamente dependentes do hardware que estão sendo executados, se extendermos a idéia de reconfiguração para uma arquitetura unica onde todos os algoritmos fossem implementados para uma arquitetura, e internamente o chip se encarregasse de configurar a arquitetura para aquela que é mais adequada ao algoritmo certamente os programadores de sistemas operacionais teriam mais tempo de se preocupar com questões, que infelizmente, não raro são, meio que deixadas de lado, pois atualmente é necessário o programador conhecer as instruções de manipulação de Discos Rígidos, tipos de memória, tipos de controladoras de CDROM, tipos de teclado ...

Tendo em vista que a diversidade de fabricantes de periféricos de computadores, celulares, palms ... é enorme, coitado do programador que tem que aprender como funcionam os dispositivos de cada fabricante...
Se todos seguissem apenas um padrão, ajudaria e muito ...!


Não é atoa que boa parte dos programadores odeia programar sistemas operacionais!
Obviamente, os programadores, analistas, arquitetos, ... mais folgados que só querem trabalhar com ferramentas RAD - Rapid Application Development, não fazem idéia do trabalho que da programar um SO - Sistema Operacional (claro exclui a galerinha que trabalha com linguagens multiplataforma, onde faz-se necessário conhecer mais linguagem, nesses casos é óbvio que é melhor fazer as coisas nos IDE's da vida, agora C Builder, que é isso ? )

Quase ia esquecendo ...
Achei um video legal relacionado ao assunto ...



Mas, a idéia é apenas imaginar o que será posível no futuro ...!

Linux-instalando e configurando o modem adsl e dial-up no linux

De acordo com um e-mail do meu amigo Reginaldo de Matias .




PASSOS
Instalação de Modem ADSL PPPoE

1.
Abra Konsole indo em KMenu->Sistema->Konsole - Terminal Programa.
2.
No prompt de comando digite sudo pppoeconf e pressione Enter.
3.
Um programa baseado em texto irá guiá-lo através dos passos seguintes, que são:
1.
Confirme que sua placa Ethernet está detectada.
2.
Entre com seu nome de usuário fornecida pelo seu ISP.
3.
Entre com sua senha fornecida pelo seu ISP.
4.
Se você já tem uma conexão PPPoE configurada, você será perguntado se ela pode ser modificada.
5.
Quando perguntado se você quer a noauth e a defaultroute e quer remover a nodetach , escolha Sim.
6.
Quando perguntado se você quer usar peer DNS, escolhaSim.
7.
Quando perguntado se você quer Limited MSS, escolha Sim.
8.
Quando perguntado se você quer conectar na inicialização, selecione Yes para habilitar a conexão na inicialização, ou Não para conectar manualmente.
9.
Quando perguntar se você quer se conectar imediatamente, selecione a resposta apropriada.
4.
Para iniciar sua conexão ADSL sob a demanda pon servidor-dsl pressione Enter.
5.
Para interromper sua conexão ADSL digite poff dsl-provider e pressione Enter.


Mais Informações em:

http://doc.ubuntu.com/kubuntu/network/pt_BR/network-connect-modems.html

e

http://www.guiadohardware.net/dicas/instalando-softmodems-linux-junho-2006.html

Principais diferenças entre Linux e Windows - Zuação:

Principais diferenças entre Linux e Windows - Zuação:



Veja
2 aqui as Principais diferenças entre Linux e Windows


domingo, 11 de maio de 2008

Fime: O cacador de pipas legendado -Baixe o filme O cacador de pipas legendado dividido em 131 arquvios .rar

Fime: O cacador de pipas legendado -Baixe o filme O cacador de pipas legendado dividido em 131 arquvios .rar
descompacteos os 131 arquivos na mesma pasta simultaneamente e assita o filme ...!


Baixe os 131 arquivos na Pasta
Esta pasta contém o Filme o Caçador de Pipas Legendado dividido em 131 arquivos .rar de 5 MB cada Baixe os 131 arquivos, após ter os 131 arquivos completos, extraia os 131 arquivos simultaneamente usando o programa rar ou winrar no windows se não tiver o codec para assistir arquivos .avi, baixe o codec e assista o filme. Boa sorte para baixar os arquivos ...! Bom filme para Você!



Após baixar os 131 arquivos todos em uma pasta exclusiva para eles, abra a console do debian linux na pasta que estao unica e exclusivamente os 131 arquivos .rar

digite na shell

# rar x -v -y caçador_de_pipas.part131.rar


Espere descompactar o arquivo e assista o filme no arquivo gerado pela decompactacao!

Tenha otimos dwnloads e bom fime!

RMVB - Como Visualizar arquivos de vídeo .rmvb no Debian Linux

Para quem não sabe a extensão rmvb é a extensão do real player ou:>



O Formato RMVB

RMVB é a abreviação para RealMedia Variable Bitrate, uma extensão de arquivos multimídia com a taxa de bits variável. Em média, cada arquivo em RMVB tem a metade do tamanho do que a de um vídeo em DivX/XviD, porém com qualidade semelhante. Tal formato provém do original RM (RealMedia) e sua tecnologia é capaz de variar a taxa de dados em relação à complexidade da imagem disposta em cada quadro.


Para poder visualizar esse formato de arquivo é necessário ter as "bibliotecas" libc6 e a w32codecs

Para instalar essas duas Biliotecas abra a Shell (console)

# sudo apt-get install libc6


Vá respondendo sim, ou yes as perguntas.
Após intalada a bilbioteca libc6, instale a biblioteca w32codecs digitando na console o comando:

# sudo apt-get install w32codecs

Apenas Curta a Música e depois caia na gargalhada com a Zuação




In Loving Memory
Alter Bridge

Composição: Mark Tremonti


Thanks for all you've done
I've missed you for so long
I can't believe you're gone and
You still live in me
I feel you in the wind
You guide me constantly

I never knew what it was
To be alone...no
Cause you were always
There for me
You were always waiting
But now I come home
And I miss your face so
Smiling down on me
I close my eyes to see
And I know
You're a part of me
And it's your song
That sets me free
I sing it while
I feel I can't hold on
I sing tonight
Cause it comforts me

I carry the things
That remind me of you
In loving memory of
The one that was so true
You were as kind as you could be
And even though you're gone
You still mean the world to me

I never knew what it was
To be alone...no
Cause you were always
There for me
You were always waiting
But now I come home
And it's not the same no
It feels empty and alone
I can't believe you're gone
And I know
You're a part of me
And it's your song
That sets me free
I sing it while
I feel I can't hold on
I sing tonight
Cause it comforts me

I'm glad He set you free from sorrow
But I'll still love you more tomorrow
And you'll be here
With me still
All you did you did with feeling
And you always found a meaning
And you always will
And you always will
And you always will

And I know
You're a part of me
And it's your song
That sets me free
I sing it while
I feel I can't hold on
I sing tonight
Cause it comforts me



In Loving Memory (tradução)
Alter Bridge

Composição: Mark Tremonti

Em Lembrança de

Obrigado por tudo que você fez
Eu senti sua falta por tanto tempo
Eu não posso acreditar que você tenha ido e
Você ainda vive em mim
Eu sinto você no vento
Você me guia constantemente

Eu nunca soube o que era
Estar sozinho... não
Porque você sempre estava
Lá para mim
Você estava sempre lá esperando
Mas agora eu vou para casa
E eu apenas perco seu rosto Sorrindo para mim
Eu fecho meus olhos para ver

E eu sei
Você é uma parte de mim
E esta é sua canção
Que me deixa livre
Eu canto ela enquanto
Eu sentir que eu não posso mais segurar
Eu canto hoje à noite
Porque ela me conforta

Eu levo as coisas
Que me fazem lembrar de você
Em memória amorosa da
Única que era tão real
Você era tão amável quanto você podia ser
E embora você tenha ido
Você continua sendo como o mundo para mim

Eu nunca soube o que era
Estar sozinho... não
Porque você sempre estava
Lá para mim
Você estava sempre lá esperando
Mas agora
Eu vou para casa e não é o mesmo, não
Eu sinto ela vazia e só
Eu não posso acreditar que você tenha ido

Eu estou alegre, ele deixou você livre da tristeza
Eu ainda lhe amarei mais amanhã
E você estará aqui
Ainda comigo

E o que você fez, você fez com sentimento
E você sempre achou o significado
E você sempre vai
E você sempre vai
E você sempre vai



Zuação:



sábado, 10 de maio de 2008

Apenas relaxe e curta a música: Chris Brown - With You ( Tradução ) *OFFICIAL*

Apenas relaxe e curta a música: Chris Brown - With You ( Tradução

Chris Brown - With You ( Tradução ) *OFFICIAL*

ou em:

Chris Brown - With You
With You
Chris Brown

Composição: Chris Brown

I need you boo
I gotta see you boo
And there's hearts all over the world tonight
Said there's hearts all over
the world tonight
I need you boo
I gotta see you boo
And there's hearts all over the world tonight
Said there's hearts all over the world tonight

Hey lil’ mama, ooh you're a stunner
Hot little figure, yes you a winner, and
I'm so glad to be yours
You're a class of your own and
Ooh little cutie, when you talk to me
I swear the whole world stops
You're my sweetheart and
I'm so glad that you're mine
You are one of a kind, and
You mean to me what I mean to you
And together baby there is nothing we won't do

'Cause if I got you
I don't need money
I don't need cars
Girl you're my all

And oh, I'm into you and
Girl no one else would do
With every kiss and every hug
You make me fall in love
And now I know I can't be the only one
I bet there's hearts all over the world tonight
With the love of their life who feel
What I feel when I'm with you, with you, with you, with you, with you... girl
With you, with you, with you, with you, with you... Oh girl

I don't want nobody else
Without you there's no one left, and
You're like Jordans on Saturday
I gotta have you and I cannot wait now
Hey lil’ shorty, say you care for me
You know I care for you
You know that I will be true
You know that I won't lie
You know that I will try
Be your everything

'Cause if I got you
I don't need money
I don't need cars
Girl you're my all

Oh, I'm into you and
Girl no one else would do
With every kiss and every hug
You make me fall in love
And now I know I can't be the only one
I bet there's hearts all over the world tonight
With the love of their life who feel
What I feel when I'm with you, with you, with you, with you, with you... ohhh
With you, with you, with you, with you, with you... Yeah

And I will never try
To deny that you are my whole life
'Cause if you ever let me go
I would die so I won't run
I don't need another woman
I just need you or nothing
'Cause if I got that
Then I'll be straight
Baby you're the best part of my day

I need you boo
I gotta see you boo
And there's hearts all over the world tonight
Said there's hearts all over the world tonight
They need their boo
They gotta see their boo
Said there's hearts all over the world tonight
Hearts all over the world tonight

And oh, I'm into you and
Girl no one else would do
With every kiss and every hug
You make me fall in love
And now I know I can't be the only one
I bet there's hearts all over the world tonight
With the love of their life who feel
What I feel when I'm with you, with you, with you, with you, with you... ohhh(girl)
With you, with you, with you, with you, with you... ohhh
With you, with you, with you, with you, with you...
With you, with you, with you, with you, with you...
Baby yeah