Calourada2010
-
Upload
tiago-maluta -
Category
Education
-
view
377 -
download
0
description
Transcript of Calourada2010
![Page 1: Calourada2010](https://reader036.fdocumentos.com/reader036/viewer/2022081404/5597c6f01a28abca098b47e1/html5/thumbnails/1.jpg)
Software Livredentro daspossibilidades acadêmicas
![Page 2: Calourada2010](https://reader036.fdocumentos.com/reader036/viewer/2022081404/5597c6f01a28abca098b47e1/html5/thumbnails/2.jpg)
Tudo tem um começo...
![Page 3: Calourada2010](https://reader036.fdocumentos.com/reader036/viewer/2022081404/5597c6f01a28abca098b47e1/html5/thumbnails/3.jpg)
E um fim que queremos evitar...
5 anos pra isso?
Head Hunter
![Page 4: Calourada2010](https://reader036.fdocumentos.com/reader036/viewer/2022081404/5597c6f01a28abca098b47e1/html5/thumbnails/4.jpg)
A universidade é um espaço para aprender e experimentar...
![Page 5: Calourada2010](https://reader036.fdocumentos.com/reader036/viewer/2022081404/5597c6f01a28abca098b47e1/html5/thumbnails/5.jpg)
Queria achar uma coisa legal p/ fazer....
Já passou em Cálculo?
Mas com pouco tempo de aula vão perceber...
![Page 6: Calourada2010](https://reader036.fdocumentos.com/reader036/viewer/2022081404/5597c6f01a28abca098b47e1/html5/thumbnails/6.jpg)
Mostrar como o Sofware Livre pode ajudar a entender algumas matérias na graduação e como isso pode te ajudar no futuro.
![Page 7: Calourada2010](https://reader036.fdocumentos.com/reader036/viewer/2022081404/5597c6f01a28abca098b47e1/html5/thumbnails/7.jpg)
Antes de focarmos em argumentos técnicos, precisamos compreender o conceito sobre as liberdades essenciais para um sofware ser considerado livre.
0. A liberdade para executar o programa, para qualquer propósito
1. A liberdade de estudar como o programa funciona, e adaptálo para as suas necessidades
2. A liberdade de redistribuir, inclusive vender, cópias de modo que você possa ajudar ao seu próximo
3. A liberdade de modificar o programa, e liberar estas modificações, de modo que toda a comunidade se beneficie
![Page 8: Calourada2010](https://reader036.fdocumentos.com/reader036/viewer/2022081404/5597c6f01a28abca098b47e1/html5/thumbnails/8.jpg)
E toda jornada tem um começo...
É preciso andar por onde a estrada vai de modo a unir o que você aprende dentro da universidade com o que é praticado fora dela.
![Page 9: Calourada2010](https://reader036.fdocumentos.com/reader036/viewer/2022081404/5597c6f01a28abca098b47e1/html5/thumbnails/9.jpg)
FPGA, SoC, ...
Dataware House
Banco de Dados
Sistemas Embarcados
Compiladores
Virtualização
Jogos
Simulação
Web
Escalabilidade
Sistemas de comunicação
Sistemas Operacionais
RTOS
Arquitetura de Processadores
CAD
Drivers
Office*
A lista de áreas não é pequena...
...nem as soluções oferecidas.
Servidores GUI
![Page 10: Calourada2010](https://reader036.fdocumentos.com/reader036/viewer/2022081404/5597c6f01a28abca098b47e1/html5/thumbnails/10.jpg)
Como eu posso começar então?
![Page 11: Calourada2010](https://reader036.fdocumentos.com/reader036/viewer/2022081404/5597c6f01a28abca098b47e1/html5/thumbnails/11.jpg)
A primeira parte diz respeito a familiarização com as ferramentas básicas.
![Page 12: Calourada2010](https://reader036.fdocumentos.com/reader036/viewer/2022081404/5597c6f01a28abca098b47e1/html5/thumbnails/12.jpg)
Prérequisito
1) Instalar alguma distribuição GNU/Linux.
2) Se familiarizar com a interface da linha de comando.
![Page 13: Calourada2010](https://reader036.fdocumentos.com/reader036/viewer/2022081404/5597c6f01a28abca098b47e1/html5/thumbnails/13.jpg)
Nos primeiro semestres, nas parte que envolvem software temos:
Introdução a Programação Estrutura de Dados Programação Orientada a Objeto (POO)
A primeira coisa é um compilador para executar seus testes. Vale a pena estudar e conhecer as opções do GCC.
A segunda coisa é um depurador para executar seus testes. Vale a pena estudar e conhecer as opções do GDB.
![Page 14: Calourada2010](https://reader036.fdocumentos.com/reader036/viewer/2022081404/5597c6f01a28abca098b47e1/html5/thumbnails/14.jpg)
GNU Compiler Collection
gcc exemplo.c o exemplo.exe
Executável do compilador (gcc ou g++)
Códigofonte (lembrese da extensão)
Este parâmetro idica um nome de saída,se nada for definido o padrão é a.out
Arquivo de saída
![Page 15: Calourada2010](https://reader036.fdocumentos.com/reader036/viewer/2022081404/5597c6f01a28abca098b47e1/html5/thumbnails/15.jpg)
GNU Compiler Collection
gcc Wall ggdb exemplo.c o exemplo.exe
Habilita todas as warnings que alguns usuários consideram questionáveis e que são fáceis de evitar (ou modificar para previnir)
Gera as informações de debug para o GDB
![Page 16: Calourada2010](https://reader036.fdocumentos.com/reader036/viewer/2022081404/5597c6f01a28abca098b47e1/html5/thumbnails/16.jpg)
#include <stdio.h>
int main(int argc, char *argv[]) {
printf(“Olá Mundo!\n”); return 0;}
$ gcc Wall ggdb exemplo.c o exemplo.exe
$ ./exemplo.exe Olá Mundo!
Compilar o programa:
E executar o código:
![Page 17: Calourada2010](https://reader036.fdocumentos.com/reader036/viewer/2022081404/5597c6f01a28abca098b47e1/html5/thumbnails/17.jpg)
E se alguma coisa der errado?
Se você rodar o programa e ele não funcionar da forma como você pretendia?
![Page 18: Calourada2010](https://reader036.fdocumentos.com/reader036/viewer/2022081404/5597c6f01a28abca098b47e1/html5/thumbnails/18.jpg)
GNU Debugger
gdb exemplo.exe
Executável do depurador
Arquivo executável (ELF)
![Page 19: Calourada2010](https://reader036.fdocumentos.com/reader036/viewer/2022081404/5597c6f01a28abca098b47e1/html5/thumbnails/19.jpg)
$ gdb q exemplo.exeReading symbols from /home/maluta/exemplo.exe...done.
GNU Debugger
(gdb) l1 #include <stdio.h>23 int main(int argc, char *argv[]) {456 printf("Olá Mundo!\n");7 return 0;8 }
(gdb) rStarting program: /home/maluta/exemplo.exeOlá Mundo!
http://www.coding.com.br/programacao/basicodeponteiroscomogdb/
![Page 20: Calourada2010](https://reader036.fdocumentos.com/reader036/viewer/2022081404/5597c6f01a28abca098b47e1/html5/thumbnails/20.jpg)
Além disso é preciso entender ferramentas que não se aprendem na escola...
![Page 21: Calourada2010](https://reader036.fdocumentos.com/reader036/viewer/2022081404/5597c6f01a28abca098b47e1/html5/thumbnails/21.jpg)
Dominar algum software que faça o controle de versão do seu código.
Existem vários, vale a pena entender pelo menos:
GIT [git]
Mercurial [hg]
Bazaar [bzr]
Dominar algum software que faça a automatização na construção do seu executável.
Existem vários, vale a pena entender pelo menos:
autotools
cmake
scons
![Page 22: Calourada2010](https://reader036.fdocumentos.com/reader036/viewer/2022081404/5597c6f01a28abca098b47e1/html5/thumbnails/22.jpg)
Python
Bônus
ex.
Parser Visualização
![Page 23: Calourada2010](https://reader036.fdocumentos.com/reader036/viewer/2022081404/5597c6f01a28abca098b47e1/html5/thumbnails/23.jpg)
# -*- coding: utf-8 -*-from pylab import *
N = 100start = 0end = 1
A = rand()B = rand()
x = linspace(start,end,N)y = A*x + By += randn(N)/10
p = polyfit(x,y,1)
figure()
title('Regressao linear')plot(x,y,'o',label='A=%.2f, B=%.2f' % (A,B))plot(x,polyval(p,x),'-',label='A=%.2f, B=%.2f' % tuple(p))legend(loc='best')
show()
Um exemplo comum é fazer uma regressão linear (muito utilizado nas atividades práticas de física)
$ python reglin.py
![Page 24: Calourada2010](https://reader036.fdocumentos.com/reader036/viewer/2022081404/5597c6f01a28abca098b47e1/html5/thumbnails/24.jpg)
![Page 25: Calourada2010](https://reader036.fdocumentos.com/reader036/viewer/2022081404/5597c6f01a28abca098b47e1/html5/thumbnails/25.jpg)
Lá pela metade do curso novidades que irão refinar seu conhecimento aprendido na base.
Design Patterns
Banco de Dados
Redes
Sistemas Operacionais
![Page 26: Calourada2010](https://reader036.fdocumentos.com/reader036/viewer/2022081404/5597c6f01a28abca098b47e1/html5/thumbnails/26.jpg)
Design Patterns
Sua utilização na maioria dos casos será intuitiva, o quanto antes você se acostumar com a prática melhor será seu código. Os padrões de desenvolvimento são utilizados em programas que utilizam Interface Gráfica, acesso a Banco de Dados, ...
Mas também em código estruturais, como o kernel.
![Page 27: Calourada2010](https://reader036.fdocumentos.com/reader036/viewer/2022081404/5597c6f01a28abca098b47e1/html5/thumbnails/27.jpg)
Sistemas Operacionais
Os livros tradicionais que abordam S.O são teóricos, abordam o conceito mas não a prática.
O kernel Linux ao longo do tempo foi sendo aprimorado, são boas fontes de informação:
Source :) Documentation/ Linux Kernel Maillist (lkml) Livro: Linux Kernel Development (Robert Love) Livro: Essencial Linux Device Drivers (Sreekrishnan Venkateswaran)
![Page 28: Calourada2010](https://reader036.fdocumentos.com/reader036/viewer/2022081404/5597c6f01a28abca098b47e1/html5/thumbnails/28.jpg)
Banco de Dados
Conheçer os wrappers de acesso, novamente o Python é um começo.
MySQL é um bom começo, mas infelizmente a industria é voltada também as soluções proprietárias
BD orientado a objeto é uma promessa.
![Page 29: Calourada2010](https://reader036.fdocumentos.com/reader036/viewer/2022081404/5597c6f01a28abca098b47e1/html5/thumbnails/29.jpg)
Redes
Primeiro terreno que o Linux se tornou popular.
Servidor de páginas (ex:. Apache)Servidores de Impressão (ex.: CUPS)Servidores de Arquivos (ex.: proftpd)
O NFS (Network File System) que além se ser uma das melhores maneiras de compartilhar arquivos é utilizado no desenvolvimento de sistemas embarcadose em algumas implementações de clusters.
O 9P (Plan 9 Filesystem Protocol) utilizado no Plan9
O sistemas distribuídos criaram situações onde outras soluções foram propostas,No âmbito geral conhecer CORBA e o DBUS
Servidores de Email (ex.: postfix)
![Page 30: Calourada2010](https://reader036.fdocumentos.com/reader036/viewer/2022081404/5597c6f01a28abca098b47e1/html5/thumbnails/30.jpg)
Tem muitas coisa para nos manter entretidos...
E olha que faltou falar de muita coisa...
![Page 31: Calourada2010](https://reader036.fdocumentos.com/reader036/viewer/2022081404/5597c6f01a28abca098b47e1/html5/thumbnails/31.jpg)
Conclusão
![Page 32: Calourada2010](https://reader036.fdocumentos.com/reader036/viewer/2022081404/5597c6f01a28abca098b47e1/html5/thumbnails/32.jpg)
A universidade vai te ensinar pouca coisa sobre software livre.
![Page 33: Calourada2010](https://reader036.fdocumentos.com/reader036/viewer/2022081404/5597c6f01a28abca098b47e1/html5/thumbnails/33.jpg)
Tente aliar os dois lados: matérias vs. aprendizado prático
![Page 34: Calourada2010](https://reader036.fdocumentos.com/reader036/viewer/2022081404/5597c6f01a28abca098b47e1/html5/thumbnails/34.jpg)
Tenha o espírito hacker.
![Page 35: Calourada2010](https://reader036.fdocumentos.com/reader036/viewer/2022081404/5597c6f01a28abca098b47e1/html5/thumbnails/35.jpg)
Tenha paciência, não é do dia p/ noite que você vai entender as coisas.
![Page 36: Calourada2010](https://reader036.fdocumentos.com/reader036/viewer/2022081404/5597c6f01a28abca098b47e1/html5/thumbnails/36.jpg)
www.twitter.com/maluta
Obrigado pela atenção
www.coding.com.br
Tiago Maluta
Imagens utilizadas em http://www.flickr.com/photos/st3f4n/sets/72157616350171741/