Habilitar Telnet no Windows 7

Se por algum acaso você precisar de telnet no Windows 7 ou Vista (algo raro hoje em dia) você vai perceber que ele não está acessível no Windows. Mas felizmente ele pode ser ativado. Descobri que ele está apenas desativado.

Para ativar vamos em:

Iniciar > Painel de Controle > Programas e Recursos > Ativar e Desativar Recursos do Windows

Aí é só marcar Cliente Telnet e pronto.

Ubuntu 11.10 + Ruby 1.9.2 + Rails com RVM

RVM, Ruby Version Manager, é um projeto que possibilita você instalar, gerenciar e trabalhar com múltiplos ambientes Ruby (Ruby, JRuby, IronRuby, etc). em uma mesma máquina de forma fácil.

Legal… mas eu não preciso deste monte de ruby’s, pra que vou querer o RVM, ao invés de instalar o ruby pelo apt-get.

Porque pelo RVM você pode trabalhar com a versão mais atualizada do ruby. Ex: Neste momento no apt-get a versão mais nova é a 1.8. E se formos olhar no site do Ruby temos a 1.9.2 (estável) ou então… 1.9.3 (instável). Sem contar que instalando o Ruby pelo apt-get você não instala pacotes necessários como sqlite etc. e o RVM já cuida disso tudo.

Vamos lá então… pra instalarmos é fácil… basta seguir os passos da página de instalação do RVM. Mas lógico, vamos mastigar aqui:

Lá temos duas opções: Instalar para múltiplos usuários ou único usuário. A menos que sua máquina seja um servidor com múltiplos clientes, opte pela opção de um único usuário que é a que eu vou descrever aqui.

Primeiro vamos instalar o que iremos precisar pra instalar o RVM que é o curl e o git:

$ sudo apt-get install curl git-core

Pronto… podemos começar a festa: vamos instalar o RVM:

$ bash < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer )

Pronto... RVM instalado em ~/.rvm

O próximo passo é carregar o RVM no shell como uma função:

$ echo '[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function' >> ~/.bashrc
$source .bashrc

Pronto... vamos ver se tudo está funcionando:

$ type rvm | head -1
rvm é uma função

Se foi esta resposta a obtida, está tudo correto até aqui.

Agora vamos às dependências...

$ rvm requirements

Ele irá mostrar as dependências que cada Ruby necessita, no nosso caso segundo o RVM precisaremos instalar estes pacotes abaixo, então mãos a obra:

$ sudo apt-get install build-essential openssl libreadline6 libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-0 libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev ncurses-dev automake libtool bison subversion

Pronto... já ta tudo OK pra receber o Ruby. Vamos ver quais versões tem pra instalar...

$ rvm list known
# MRI Rubies
[ruby-]1.8.6[-p420]
[ruby-]1.8.6-head
[ruby-]1.8.7[-p352]
[ruby-]1.8.7-head
[ruby-]1.9.1-p378
[ruby-]1.9.1[-p431]
[ruby-]1.9.1-head
[ruby-]1.9.2-p180
[ruby-]1.9.2[-p290]
[ruby-]1.9.2-head
[ruby-]1.9.3-preview1
[ruby-]1.9.3[-rc1]
[ruby-]1.9.3-head
ruby-head

# GoRuby
goruby

# JRuby
jruby-1.2.0
jruby-1.3.1
jruby-1.4.0
jruby-1.6.1
jruby-1.6.2
jruby-1.6.3
jruby[-1.6.4]
jruby-head

# Rubinius
rbx-1.0.1
rbx-1.1.1
rbx-1.2.3
rbx-1.2.4
rbx[-head]
rbx-2.0.0pre

# Ruby Enterprise Edition
ree-1.8.6
ree[-1.8.7][-2011.03]
ree-1.8.6-head
ree-1.8.7-head

# Kiji
kiji

# MagLev
maglev[-26852]
maglev-head

# Mac OS X Snow Leopard Only
macruby[-0.10]
macruby-nightly
macruby-head

# IronRuby -- Not implemented yet.
ironruby-0.9.3
ironruby-1.0-rc2
ironruby-head

Acho que um monte... vou me contentar com a última estável do Ruby (lembrando que você pode ter várias instaladas no sistema simultaneamente).

$ rvm install 1.9.2

Pronto...

Para verificar quais versões estão instaladas:

$ ruby -v

Para selecionar uma delas (no nosso caso a 1.9.2):

$ rvm use 1.9.2

E para verificar se eu estou usando realmente esta:

$ which ruby

Vamos deixar por padrão esta versão para usarmos em todas as novas shells:

$ rvm use 1.9.2 --default

Pronto... até aqui trata o RVM e o ruby já está instalado...

Agora vamos instalar o rails:

$ gem install rails

Pronto... ruby on rails ultima versão :D (ruby 1.9.2 e rails 3.1.1)

$ rails -v
Rails 3.1.1

Vamos testar com um simples programa:

$ rails new teste
      create
      create  README
      create  Rakefile
      create  config.ru
      create  .gitignore
      create  Gemfile
      create  app
      create  app/assets/images/rails.png
      create  app/assets/javascripts/application.js
      create  app/assets/stylesheets/application.css
      create  app/controllers/application_controller.rb
      create  app/helpers/application_helper.rb
      create  app/mailers
      create  app/models
      create  app/views/layouts/application.html.erb
      create  app/mailers/.gitkeep
      create  app/models/.gitkeep
      create  config
      create  config/routes.rb
      create  config/application.rb
      create  config/environment.rb
      create  config/environments
      create  config/environments/development.rb
      create  config/environments/production.rb
      create  config/environments/test.rb
      create  config/initializers
      create  config/initializers/backtrace_silencers.rb
      create  config/initializers/inflections.rb
      create  config/initializers/mime_types.rb
      create  config/initializers/secret_token.rb
      create  config/initializers/session_store.rb
      create  config/initializers/wrap_parameters.rb
      create  config/locales
      create  config/locales/en.yml
      create  config/boot.rb
      create  config/database.yml
      create  db
      create  db/seeds.rb
      create  doc
      create  doc/README_FOR_APP
      create  lib
      create  lib/tasks
      create  lib/tasks/.gitkeep
      create  lib/assets
      create  lib/assets/.gitkeep
      create  log
      create  log/.gitkeep
      create  public
      create  public/404.html
      create  public/422.html
      create  public/500.html
      create  public/favicon.ico
      create  public/index.html
      create  public/robots.txt
      create  script
      create  script/rails
      create  test/fixtures
      create  test/fixtures/.gitkeep
      create  test/functional
      create  test/functional/.gitkeep
      create  test/integration
      create  test/integration/.gitkeep
      create  test/unit
      create  test/unit/.gitkeep
      create  test/performance/browsing_test.rb
      create  test/test_helper.rb
      create  tmp/cache
      create  tmp/cache/assets
      create  vendor/assets/stylesheets
      create  vendor/assets/stylesheets/.gitkeep
      create  vendor/plugins
      create  vendor/plugins/.gitkeep
         run  bundle install
Fetching source index for http://rubygems.org/
Using rake (0.9.2)
Using multi_json (1.0.3)
Using activesupport (3.1.1)
Using builder (3.0.0)
Using i18n (0.6.0)
Using activemodel (3.1.1)
Using erubis (2.7.0)
Installing rack (1.3.5)
Using rack-cache (1.1)
Using rack-mount (0.8.3)
Using rack-test (0.6.1)
Using hike (1.2.1)
Using tilt (1.3.3)
Installing sprockets (2.0.3)
Using actionpack (3.1.1)
Using mime-types (1.16)
Using polyglot (0.3.2)
Using treetop (1.4.10)
Using mail (2.3.0)
Using actionmailer (3.1.1)
Using arel (2.2.1)
Using tzinfo (0.3.30)
Using activerecord (3.1.1)
Using activeresource (3.1.1)
Using ansi (1.3.0)
Using bundler (1.0.21)
Using coffee-script-source (1.1.2)
Using execjs (1.2.9)
Using coffee-script (2.2.0)
Using rack-ssl (1.3.2)
Using json (1.6.1)
Installing rdoc (3.11)
Using thor (0.14.6)
Using railties (3.1.1)
Using coffee-rails (3.1.1)
Using jquery-rails (1.0.16)
Using rails (3.1.1)
Using sass (3.1.10)
Using sass-rails (3.1.4)
Using sqlite3 (1.3.4)
Using turn (0.8.3)
Installing uglifier (1.0.4)
Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.

Podemos ver que está tudo ok levantando o servidor

$ cd teste
$ rails server

E veremos a página Welcome aboard You’re riding Ruby on Rails! no nosso endereço http://localhost:3000

Vamos melhorar o teste com o famoso exemplo do post:

$ rails generate scaffold post titulo:string conteudo:text
      invoke  active_record
      create    db/migrate/20111019135414_create_posts.rb
      create    app/models/post.rb
      invoke    test_unit
      create      test/unit/post_test.rb
      create      test/fixtures/posts.yml
       route  resources :posts
      invoke  scaffold_controller
      create    app/controllers/posts_controller.rb
      invoke    erb
      create      app/views/posts
      create      app/views/posts/index.html.erb
      create      app/views/posts/edit.html.erb
      create      app/views/posts/show.html.erb
      create      app/views/posts/new.html.erb
      create      app/views/posts/_form.html.erb
      invoke    test_unit
      create      test/functional/posts_controller_test.rb
      invoke    helper
      create      app/helpers/posts_helper.rb
      invoke      test_unit
      create        test/unit/helpers/posts_helper_test.rb
      invoke  assets
      invoke    coffee
      create      app/assets/javascripts/posts.js.coffee
      invoke    scss
      create      app/assets/stylesheets/posts.css.scss
      invoke  scss
      create    app/assets/stylesheets/scaffolds.css.scss

E criaremos o banco de dados para a aplicação:

$ rake db:migrate
==  CreatePosts: migrating ====================================================
-- create_table(:posts)
   -> 0.0021s
==  CreatePosts: migrated (0.0023s) ===========================================

E podemos testar levantando nosso servidor novamente:

$ rails server

E ao acessarmos a página http://localhost:3000/posts veremos nosso primeiro exemplo!

OPs! Deu erro aqui!

ExecJS::RuntimeError in Posts#index
(...)

Monte de coisa feia... mas não se preocupe... já descobri como resolveremos isso...
vamos acrescentar 2 gems pra tratar de javascript ao arquivo Gemfile:

$ gedit Gemfile

Adicionaremos 2 gems ao arquivo Gemfile:

gem 'execjs'
gem 'therubyracer'

E rodaremos novamente o bundle install:

$ bunble install

Pronto...

Só subir o servidor e agora tudo estará funcionando perfeitamente

$ rails server

Só conferir em http://localhost:3000/posts

Ubuntu 11.10 + Notebook Vostro 3500 + nVidia GeForce 310M Hybrid

Pois então… Depois do longo inverno de 1 ano sem Linux no PC pessoal (só rodando no servidor) resolvi voltar a ativa. A questão era… voltava pro bom, rápido e velho Slackware, ou para o preguiçoso Ubuntu. Como eu não estou precisando fazer algumas simulações que irão durar mais de semana, e é pra uso pessoal apenas… a preguiça venceu.

E aqui estamos… aproveitei o lançamento do Ubuntu 11.10, baixei o 64bit, instalei… tudo funcionou beleza… quase tudo… apesar dos drivers proprietários da nVidia que o Ubuntu instala e oferece pela opção de Drivers Adicionais das Configurações do Sistema, não fui feliz quando tentei rodar algum joguinho com GL, ou seja… a placa de vídeo não tava legal…

Fuçando pela internet pela minha configuração Hibrida (meu notebook tem 2 placas, uma Intel onBoard e uma nVidia 310M  que no Windows eu seleciono via software qual das duas eu quero rodar) eu descobri que a nVidia tem uma tecnologia nova chamada Optimus, inteligente, que seleciona apenas a placa de vídeo nVidia quando for rodar algo pesado (jogo etc), economizando bateria dos notebooks.

E o que é mais legal ainda… nesta onda eu descobri o projeto Bumblebee que deixa sua placa onBoard rodando e sempre que você precisar rodar algo pesado você chama a placa de vídeo nVidia. Melhor impossível!

Primeiramente você precisa checar se seu notebook/placa de vídeo já é atendido pelo projeto neste link.

E neste site você encontra instruções para a instalação.

Mas vamos mastigar pro Ubuntu 11.10:

Primeiro… vamos baixar e executar o cleanup script, que irá remover os hardwares atuais do Ubuntu:

$ wget https://raw.github.com/Bumblebee-Project/Bumblebee/master/cleanup
$ chmod +x cleanup
$ sudo ./cleanup

Uma vez eliminados os drivers que vieram no Ubuntu, vamos instalar os repositórios dos novos drivers, do Bumblebee e instalar tudo:

$ sudo add-apt-repository ppa:ubuntu-x-swat/x-updates
$ sudo add-apt-repository ppa:bumblebee/stable
$ sudo apt-get update
$ sudo apt-get install bumblebee

Para que o nosso usuário utilize o bumblebee vamos adicionar o usuário (no meu caso thomaz) no grupo bumblebee:

$ sudo usermod -a -G bumblebee thomaz

Para garantir que tudo correu bem, vamos reinciar o X (ou o Ubuntu).

Agora podemos testar se está tudo certo:

Com a placa Intel:

$ glxspheres
Polygons in scene: 62464
Visual ID of window: 0x94
Context is Direct
OpenGL Renderer: Mesa DRI Intel(R) Ironlake Mobile
21.049653 frames/sec - 23.491413 Mpixels/sec
20.240169 frames/sec - 22.588028 Mpixels/sec
20.142029 frames/sec - 22.478505 Mpixels/sec
20.207463 frames/sec - 22.551529 Mpixels/sec
19.627151 frames/sec - 21.903900 Mpixels/sec
19.833370 frames/sec - 22.134041 Mpixels/sec

Com a placa nVidia:

$ optirun glxspheres
Polygons in scene: 62464
Visual ID of window: 0x21
Context is Direct
OpenGL Renderer: GeForce 310M/PCI/SSE2
93.382746 frames/sec - 104.215144 Mpixels/sec
95.676153 frames/sec - 106.774586 Mpixels/sec
91.443163 frames/sec - 102.050570 Mpixels/sec
91.774609 frames/sec - 102.420463 Mpixels/sec
87.949329 frames/sec - 98.151451 Mpixels/sec
94.208294 frames/sec - 105.136457 Mpixels/sec
94.770254 frames/sec - 105.763604 Mpixels/sec
91.754944 frames/sec - 102.398518 Mpixels/sec

Ou seja… sempre que quisermos rodar um jogo ou um programa na placa nVidia basta rodar pelo comando optirun: ex: $ optirun firefox

Resumo do post: Esta solução é ótima e melhor que o Windows. Lá eu preciso ficar fazendo a troca de placa via software, o que as vezes eu preciso fechar alguns programas, troco pra nVidia, jogo alguma coisa… esqueço de tirar… e fica ela la consumindo mais bateria e esquentando o notebook. Aqui eu posso rodar apenas a aplicação, e assim que ela fechar… a placa se desativa junto.

Um viva ao Bumblebee!

Informação adicionada em 22/10/2011: Como a placa nVidia é ativada pelo comando optirun, não é possível utilizar os efeitos do Compiz utilizando sua placa nVidia. Ela funcionará apenas para jogos e programas (inclusive jogos via wine). Caso queira os efeitos no desktop, você terá que configurar a sua Intel para isso (só não sei se ficará rápido o suficiente).

Rock’n Rails – Primeiro evento de Rails do Espírito Santo

Só pra constar, não fui no Rock’n Rio por falta de tempo ($), mas este tá mais em conta. Eu vou!

Doode – Sua rede LINUX de amigos

Bom…

Um camarada chamado Vitor Micillo Junior resolveu fazer uma rede social voltada para usuários linux, que acabou de completar 1 mês e um dia de vida e já se encontra com 1389 membros (neste exato momento). Apesar do assunto redes sociais estar bem batido e termos diversas por aí, esta é uma iniciativa nova (linux) e voltada para um público alvo. Acho que será o local ideal para trocarmos experiências e encontrarmos colaboradores para projetos. A rede ainda está engatinhando, mas pelo que estou acompanhando o site, ele promete! Vale a pena conferir o Doode.

 

 

 

 

Servidor Subversion Linux + Clientes Subversion Windows

Bom… tenho um servidor linux para algumas tarefas e uma delas será guardar um repositório de códigos fontes com controle de versões (Subversion)  para que posssam ser trabalhados por uma ou mais pessoas através de máquinas Windows.

No lado do servidor (linux) usaremos um Ubuntu server 11.04 rodando o subversion+apache2 e do lado dos clientes (Windows) usaremos o TortoiseSVN v1.6.16 (atual no momento deste tutorial).

Primeiro vamos ao servidor e a criação do repositório.

O primeiro passo é instalar o subversion (supondo que você ja tenha um servidor apache2 rodando):

$ sudo apt-get install subversion libapache2-svn

O Próximo passo é configurar onde ficarão os repositórios dos projetos. (no meu caso escolhi o diretório /var/lib/svn

$ sudo mkdir /var/lib/svn

O próximo passo é configurar o apache para apontar para este diretório no http://dominio/svn/

para isso vamos configurar o modulo dav_svn

$ sudo vim /etc/apache2/mods-available/dav_svn.conf

Ele deve ficar parecido com isso:

O Próximo passo é criar os usuários que irão acessar os projetos (Detalhe… use a opção -c só para o primeiro usuário, pois isso cria o arquivo):

$sudo htpasswd -cm /etc/apache2/dav_svn.passwd usuario1
New password:
Re-type new password:
Adding password for user usuario1

$sudo htpasswd -m /etc/apache2/dav_svn.passwd usuario2
New password:
Re-type new password:
Adding password for user usuario2

$sudo htpasswd -m /etc/apache2/dav_svn.passwd usuario3
New password:
Re-type new password:
Adding password for user usuario3

… E mais quantos usuários for necessário.

Agora iremos definir quais projetos cada usuário pode acessar criando o arquivo dav_svn.authz:

$ sudo vim /etc/apache2/dav_svn.authz

E ele ficará com algo parecido com isso:

[projeto1:/]
@grupo1 = rw

[projeto2:/]
@grupo2 = rw

[groups]
grupo1 = usuario1,usuario2
grupo2 = usuario2,usuario3

Pronto. Desta forma o usuário1, e o usuário2 podem apenas acessar o repositorio do projeto1 e o usuário2 e o 3 podem acessar o repositório do projeto2. reparem que o usuário2, pode acessar todos os repositórios.

criados os usuários… definidos os grupos e quais repositórios de projetos cada um podem acessar, falta apenas criar os repositórios:

$ sudo mkdir /var/lib/svn/projeto1
$ sudo svnadmin create /var/lib/svn/projeto1

$ sudo mkdir /var/lib/svn/projeto2
$ sudo svnadmin create /var/lib/svn/projeto2

Como iremos gerenciar os repositórios através do apache, vamos mudar o dono dos repositórios para o usuário www-data:

$ sudo chown -R www-data /var/lib/svn/projeto1
$ sudo chown -R www-data /var/lib/svn/projeto2

e… pra testar tudo… vamos reiniciar o servidor apache:

$ sudo service apache2 restart

Se tudo correu bem, você pode acessar seu repositório pelo navegador através da url http://dominio/svn/projeto1 ou projeto2 e logar com um dos usuários cadastrados neste repositório.

Você verá algo como:

projeto1 - Revision 0: /

Powered by Subversion version 1.6.12 (r955767).

Tudo correu bem…

Você pode criar quantos mais repositórios, usuários e grupos forem necessários…

Vamos agora ao lado dos clientes Windows.

O primeiro passo é instalar o TortoiseSVN.

Uma vez instalado… vamos criar uma estrutura básica de repositório SVN com as pastas trunk, branches e tags.

Esta estrutura pode ser criada em uma pasta temporária que depois será apagada. Ela servirá apenas para fazermos o upload da estrutura básica para o servidor.

Uma vez criada esta estrutura, vamos importa-la para o servidor… só clicar c o botão direito e ir na opção TortoiseSVN > Import…

Se tudo correr bem ele vai pedir o login e senha, e vamos receber a seguinte msg de sucesso:

Command    Import C:\temp to http://meudominio.com.br/svn/projeto1
Adding     C:\temp\trunk
Adding     C:\temp\branches
Adding     C:\temp\tags
Completed  At revision: 1

É sinal que seu repositório está funcional e já possui a estrutura básica (você pode conferir pelo navegador no endereço http://meudominio.com.br/svn/projeto1

O próximo passo será sincronizar a pasta onde estará o código do seu programa no seu computador com a pasta trunk (pasta de trabalho) do repositório SVN.

Supondo que o meu projeto ficará na pasta C:\projetos\projeto1\codigo

Você deve clicar com o botão direito e selecionar a opção SVN Checkout… neste ponto é muito importante não esquecer de adicionar a pasta trunk no servidor que é onde seu repositório será sincronizado.

Uma vez sincronizada, a pasta terá um pequeno sinal de informação em seu icone indicando que está sincronizada.

Sempre que for adicionar um novo arquivo a esta pasta, você deve clicar com o botão direito no arquivo e selecionar a opção TortoiseSVN > Add…. Se atualizarmos o explorer (F5) perceberemos um pequeno sinal de + azul indicando que este arquivo foi adicionado ao repositório e neste momento nossa pasta de código do projeto (C:\projetos\projeto1\codigo) estará com um icone com exclamação em vermelho indicando que precisa ser sincronizada ao repositório do servidor, pois foram realizadas mudanças.

Nesta hora precisamos clicar com botão direito na pasta de código e enviar as modificações para o repositório. Vamos utilizar a opção SVN Commit…

Abrirá uma janela para você escrever uma mensagem… Especificando o que você mudou… e os arquivos que foram alterados… tem opção de dar clique duplo para verificar diferenças entre versões etc… mas simplemente devemos enviar para o servidor inicialmente… e a partir daí começarmos a trabalhar.

Nas outras máquinas os outros usuários no caso devem criar uma pasta onde ficará o código do projeto e simplesmente dar um SVN Checkout. na pasta trunk do servidor como fizemos anteriormente. E está pronto.

Nem Jesus aguentaria ser professor nos dias de hoje…

Aproveitando a deixa do post anterior…

O Sermão da montanha
(*versão para educadores*)

Naquele tempo, Jesus subiu a um monte seguido pela multidão e, sentado sobre uma grande pedra, deixou que os seus discípulos e seguidores se aproximassem.
Ele os preparava para serem os educadores capazes de transmitir a lição da Boa Nova a todos os homens.
Tomando a palavra, disse-lhes:

– “Em verdade, em verdade vos digo:
Felizes os pobres de espírito, porque deles é o reino dos céus.
Felizes os que têm fome e sede de justiça, porque serão saciados.
Felizes os misericordiosos, porque eles….”

Pedro o interrompeu:
– Mestre, vamos ter que saber isso de cor?

André perguntou:
- É pra copiar?

Filipe lamentou-se:
- Esqueci meu papiro!

Bartolomeu quis saber:
– Vai cair na prova?

João levantou a mão:
– Posso ir ao banheiro?

Judas Iscariotes resmungou:
– O que é que a gente vai ganhar com isso?

Judas Tadeu defendeu-se:
- Foi o outro Judas que perguntou!

Tomé questionou:
- Tem uma fórmula pra provar que isso tá certo?

Tiago Maior indagou:
– Vai valer nota?

Tiago Menor reclamou:
- Não ouvi nada, com esse grandão na minha frente.

Simão Zelote gritou, nervoso:
– Mas porque é que não dá logo a resposta e pronto!?

Mateus queixou-se:
– Eu não entendi nada, ninguém entendeu nada!

Um dos fariseus, que nunca tinha estado diante de uma multidão nem ensinado nada a ninguém, tomou a palavra e dirigiu-se a Jesus, dizendo:

– Isso que o senhor está fazendo é uma aula?
Onde está o seu plano de curso e a avaliação diagnóstica?
Quais são os objetivos gerais e específicos?
Quais são as suas estratégias para recuperação dos conhecimentos prévios?

Caifás emendou:
- Fez uma programação que inclua os temas transversais e atividades integradoras com outras disciplinas?
E os espaços para incluir os parâmetros curriculares gerais?
Elaborou os conteúdos conceituais, processuais e atitudinais?

Pilatos, sentado lá no fundão, disse a Jesus:

– Quero ver as avaliações da primeira, segunda e terceira etapas e reservo-me o direito de, ao final, aumentar as notas dos seus discípulos para que se cumpram as promessas do Imperador de um ensino de qualidade.

Nem pensar em números e estatísticas que coloquem em dúvida a eficácia do nosso projeto.

E vê lá se não vai reprovar alguém!

Lembre-se que você ainda não é professor titular…

Autor desconhecido (se for você me avise)

A Evolução da Educação

Acabei de receber este texto por e-mail e resolvi postar pois é a pura realidade do país.

Antigamente se ensinava e cobrava tabuada, caligrafia, redação, datilografia…
Havia aulas de Educação Física, Moral e Cívica, Práticas Agrícolas, Práticas Industriais e cantava-se o Hino Nacional, hasteando a Bandeira Nacional antes de iniciar as aulas…

Leiam o relato de uma Professora de Matemática:
Semana passada, comprei um produto que custou R$ 15,80. Dei à balconista R$ 20,00 e peguei na minha bolsa 80 centavos, para evitar receber ainda mais moedas. A balconista pegou o dinheiro e ficou olhando para a máquina registradora, aparentemente sem saber o que fazer.
Tentei explicar que ela tinha que me dar 5,00 reais de troco, mas ela não se convenceu e chamou o gerente para ajudá-la. Ficou com lágrimas nos olhos enquanto o gerente tentava explicar e ela aparentemente continuava sem entender. Por que estou contando isso?
Porque me dei conta da evolução do ensino de matemática desde 1950, que foi assim:

1. Ensino de matemática em 1950:
Um lenhador vende um carro de lenha por R$ 100,00. O custo de produção é igual a 4/5 do preço de venda. Qual é o lucro?

2. Ensino de matemática em 1970:
Um lenhador vende um carro de lenha por R$ 100,00. O custo de produção é igual a 4/5 do preço de venda ou R$ 80,00. Qual é o lucro?

3. Ensino de matemática em 1980:
Um lenhador vende um carro de lenha por R$ 100,00. O custo de produção é R$ 80,00. Qual é o lucro?

4. Ensino de matemática em 1990:
Um lenhador vende um carro de lenha por R$ 100,00. O custo de produção é R$ 80,00. Escolha a resposta certa, que indica o lucro:
( )R$ 20,00 ( )R$ 40,00 ( )R$ 60,00 ( )R$ 80,00 ( )R$ 100,00

5. Ensino de matemática em 2000:
Um lenhador vende um carro de lenha por R$ 100,00. O custo de produção é R$ 80,00. O lucro é de R$ 20,00.
Está certo?
( )SIM ( ) NÃO

6. Ensino de matemática em 2009:
Um lenhador vende um carro de lenha por R$ 100,00. O custo de produção é R$ 80,00.Se você souber ler, coloque um X no R$ 20,00.
( )R$ 20,00 ( )R$ 40,00 ( )R$ 60,00 ( )R$ 80,00 ( )R$ 100,00

7. Em 2010 é assim:
Um lenhador vende um carro de lenha por R$ 100,00. O custo de produção é R$ 80,00. Se você souber ler, coloque um X no R$ 20,00. (Se você é afro descendente, especial, indígena ou de qualquer outra minoria social não
precisa responder)
( )R$ 20,00 ( )R$ 40,00 ( )R$ 60,00 ( )R$ 80,00 ( )R$ 100,00

E se um moleque resolver pichar a sala de aula e a professora fizer com que ele pinte a sala novamente, os pais ficam enfurecidos pois a professora provocou traumas na criança. Em 1969 os Pais do aluno perguntavam ao “aluno”: “Que notas são estas…???” Em 2009 os Pais do aluno perguntam ao “professor”: “Que notas são estas…???”

Autor desconhecido (se for você me avise para os créditos)

Visualizando o Changelog de um pacote no ubuntu

Meu servidor ubuntu é acessado só via ssh, e regularmente eu faço atualizações no mesmo via apt-get. O problema é que sempre que eu atualizava, eu tinha que entrar no diretório /usr/share/doc/<nome do pacote> e ler o changelog com o vim pra saber o que mudou nos pacotes que eu atualizei, e o que é pior… você só descobre o que mudou depois que atualizou.

Claro… se quiser verificar antes de atualizar é só dar uma olhada na net… mas da muito trabalho.

Uma boa opção é usar o aptitude:

$aptitude changelog <nome do pacote>

Ele faz o download do changelog atual e mostra, isso é util pois dá pra ver o que mudou antes de atualizar o pacote.

 

 

Atualizando o Cache DNS do Windows…

Sabe aquela hora que o windows não abre página alguma (ou apenas algumas poucas páginas) mas você está conectado? Pode ser alguma bixeira no cache de DNS do windows…

Pra resolver só abrir o prompt de comando (Windows… Executar… cmd) e digitar o seguinte comando:

ipconfig /flushdns

E provavelmente depois disso os sites irão abrir novamente (caso o problema seja local).