Archive

Archive for June, 2010

Configurando CGI no Snow Leopard

June 20th, 2010 No comments

Common Gateway Interface é uma tecnologia que permite criar páginas web dinâmicas com (quase) qualquer linguagem de programação.

Preliminares

Verifique se seu servidor Apache está ativo. Abra um navegador qualquer em http://localhost e deverá aparecer “It works” (no Snow Leopard). A URL http://localhost/~username/ deve mostrar uma página mais bonitinha de título “Your website.” (se você ainda não houver alterado essas páginas).

Se não aparecer nada disso, você tem de ativá-lo. Clique na maçã no canto da tela, vá em System Preferences (Preferências do Sistema) e em Sharing (Compartilhado). Clique em Web Sharing (Compartilhamento Web) e deve aparecer uma bolinha verde indiciando que o servidor está ativo. Aproveite para ver que é mostrado seu IP na rede. É esse endereço que as demais pessoas da rede devem acessar no navegador se quiserem ver o site que você está hospedando na porta 80.

Quando você precisar reiniciar o Apache, você pode desmarcar e marcar novamente o compartilhamento ou pelo comando no terminal (fornecendo a senha root quando solicitada):

sudo apachectl restart

CGI padrão

Costuma-se usar um alias (que encontra-se em /etc/apache2/httpd.conf, linha 328) dos endereços que começam por cgi-bin/ para um diretório restrito onde ficam os arquivos CGI. No Snow Leopard, vc acessa, por exemplo, http://localhost/cgi-bin/script.cgi e o arquivo que será executado será /Library/WebServer/CGI-Executables/script.cgi. Isso evita que, havendo algum erro no servidor, o arquivo seja baixado em vez de executado, o que geraria problemas de segurança (imagine se o arquivo contiver a senha da base da dados).

Essa opção já vem habilitada por padrão, apenas crie um arquivo CGI como os exemplos ao final do post, coloque-o na pasta /Library/WebServer/CGI-Executables/ e dê permissão de execussão do arquivo pelo terminal com o comando:

sudo chmod +x /Library/WebServer/CGI-Executables/meu_arquivo.cgi

Então acesse no navegador http://localhost/cgi-bin/meu_arquivo.cgi para vê-lo rodando.

CGI em Sites/

Mas às vezes você simplesmente precisa de algo mais prático, vamos então habilitar que qualquer arquivo de extensão .cgi na pasta Sites seja executado onde estiver.

Configure o arquivo /etc/apache2/users/username.conf dessa maneira (trocando sempre username pelo seu nome de usuário):

<Directory "/Users/username/Sites/">
    Options Indexes ExecCGI MultiViews FollowSymLinks
    AddHandler cgi-script .cgi
    AllowOverride All
    Order allow,deny
    Allow from all
    <IfModule dir_module>
        # Esse condicional não é necessário, mas é interessante,
        # ele faz com que também index.cgi possa ser índice, isto
        # é, seja a resposta ao solicitar a URL de seu diretório.
        DirectoryIndex index.html index.cgi
    </IfModule>
</Directory>

Virtual host

Podemos aproveitar e configurar um virtual host (um endereço [DNS], no caso http://devel, que é acessível por você e para quem você estiver servindo). No caso, usaremos apenas para o desenvolvimento local de websites em CGI. Crie um arquivo de nome qualquer (com extensão .conf) na mesma pasta do arquivo anterior, por exemplo /etc/apache2/users/devel.conf com o seguinte conteúdo:

<Virtualhost *:80>
    # Onde o root do site se encontra no sistema:
    DocumentRoot /Users/username/Sites/devel
    # Endereço URL pelo qual será acessível:
    ServerName devel
</Virtualhost>

E para que esse endereço seja visto como local, edite o arquivo /etc/hosts com seu editor preferido adicionando ao final:

# Desenvolvimento http://devel
127.0.0.1	devel

Para abrir o arquivo no editor padrão use o comando:

open /etc/hosts

Será requerida a senha de root ao salvar. Teste com um arquivo .html ou .cgi em http://devel.

Exemplos de arquivos CGI

Lembre-se de alguns detalhes:

  • Se a linguagem usada for interpretada, a primeira linha deve apresentar o caminho para o interpretador (ou com env) precedido de #!
  • Você deve sempre imprimir primeiramente o header (como o Content-Type) seguido de duas quebras de linha antes do conteúdo
  • Você deve tornar o arquivo executável (chmod +x)

[Os exemplos a seguir não estão otimizados, são apenas ilustrativos].

Bash

#!/bin/bash
# hello_bash.cgi

echo "Content-Type: text/html"
echo
echo "<html>"
echo "<body>"
echo "<h1>Hello Bash!</h1>"
echo "</body>"
echo "</html>"

Ruby

#!/usr/bin/env ruby
# hello_ruby.cgi

puts "Content-Type: text/html"
puts
puts "<html>"
puts "<body>"
puts "<h1>Hello Ruby!</h1>"
puts "</body>"
puts "</html>"

C

#include <stdio.h>

int main (void)
{
	printf("Content-Type: text/html\r\n");
	printf("\r\n");
	printf("<html>\n");
	printf("<body>\n");
	printf("<h1>Hello C!</h1>\n");
	printf("</body>\n");
	printf("</html>\n");
	return 0;
}

Go

package main 

import "os"

func main() {
	s := "Content-Type: text/html\r\n"
	s += "\r\n"
	s += "<html>\n"
	s += "<body>\n"
	s += "<h1>Hello Go!</h1>\n"
	s += "</body>\n"
	s += "</html>\n"
	os.Stdout.WriteString(s)
}

Divirta-se!

Categories: Informática Tags:

Academia vs Emancipação Educacional

June 12th, 2010 No comments

Em vias de terminar minha graduação, sinto-me impelido a louvar o fim. Digo, não porque terminei, eu, o curso, mas porque acabou-se, ela, a educação acadêmica. Faliu, ruiu, “findou-se a finalidade”, expirou-se a validade, pulverizaram-se as justificativas para esse monumento ao suplício intelectual. Queria meu dinheiro de volta, meus cinco anos de volta ou uma indenização por danos intelectuais. Se pudesse voltar no tempo, haveria investido em ensino a distância, pois quem sabe manter distância do ensino me resguardasse de seus danos. Mas dessa vez, não me refiro a nosso propriamente lastimável paisinho ou a uma local instituição, mas a um absurdo global.

Quando a Academia fundou-se em Platão, foi formulada de maneira a tornar o saber mais acessível do que sem ela (tanto o já conhecido como o que se haveria de desvelar) com os recursos de sua época. Ouso dizer que se Platão tivesse diante de si um computador com Internet, não hesitaria em fazer dele bom uso e promover uma dialética global. Mas a intenção de sua Academia degenerou-se… Agora ela é um lugar onde o saber é sofrido em vez de aprendido: deixou de ser o melhor acesso disponível ao saber e tornou-se um rito de passagem para a vida mercadológica; mergulhou-se numa falsa burocracia por conta da qual o homem nunca esteve tão distante de um saber tão próximo por outras vias.

A fim de garantir a mais-valia, a academia não só deixa de proporcionar o melhor acesso ao saber e ao pensar, mas também milita contra a emancipação da educação pela Internet. Não apenas deixa de usar os melhores recursos para disseminação das informações (computador, data show, intra e internet) como também não incentiva ou mesmo desqualifica projetos Wiki (Wikipédia, Wikicionário, Wikilivros, Wikiversidade) e afins.

Mas é claro que já que a emancipação é um tanto inevitável, uma tendência, digamos, “teleológica” do saber, é preciso fingir que os novos recursos foram apropriados pela academia, ou ficaria óbvio seu papel anti-educacional. Por outro lado, se os novos recursos fossem legitimamente assimilados, aí ficaria óbvio que os alunos não precisam mais de academia alguma senão para conseguir certificação legal e reconhecida no mercado do saber. Ou seja, que a certificação acadêmica é só uma outra versão do papel-moeda… E é. É preciso inflacionar o capital financeiro e deflacionar o capital intelectual, pois é no primeiro que se baseia nosso atual sistema econômico e os que dele mais se beneficiam (e o regem, é óbvio). [Vale lembrar que Economia é de bens e serviços, não a reduza ao plano financeiro].

Fique claro, meu discurso não é Maxista (detesto sua subjetividade pré-definida e monetizada felicidade), mas sou favorável à socialização do saber. Afinal, custaria tanto para o Estado dispor na Internet o material de estudo de todos os cursos acadêmicos? Por que tem isso de ficar a cargo da iniciativa privada?

Gostaria que houvesse uma instituição que só desse certificação sem “tentar ensinar” nada, sério. Imagine você poder estudar do seu jeito (mas com a referência da bibliografia base definida pela instituição) e então ir só fazer a prova (ou outras formas de avaliação) e ganhar o diploma?

“Ah, mas assim é muito fácil!” Porra, é essa a idéia! Não é pra ser difícil, é pra garantir que você sabe, apenas isso. Tá vendo como é rito de passagem? A gente acha cruel aquelas tribos que botam adolescentes pra mexer em colmeias para levar picadas e se tornarem “adultos”, mas não acha cruel colocar crianças e jovens décadas a fio em ruínas educacionais, aprendendo de maneira extremamente ineficaz, sendo punidas quando não se adequam, quando poderia ser fácil e divertido como um videogame, e ainda brigar com eles quando preferem ficar no computador em vez de estudar… Fala séeeerio!

Atualização 29/10/2010

O reitor (Doutor em direito João Grandino Rodas) da Universidade de São Paulo (USP), uma notável instituição de ensino do país, dá entrevista à Veja, concordando muito, a meu ver,  o com o conteúdo desse post e aponta alguns outros problemas sérios…

As universidades Brasileiras parecem amarradas pelos sindicalistas ou, quando não, pela ideologia subjacente a esses. Essa tradição pseudo-marxista luta de toda forma contra o desenvolvimento por entender a “meritocracia” como algo ruim e qualquer tentativa da universidade de se afinizar com o mercado é vista como “ameaça de privatização” (como aquele terrorismo no horário eleitoral). Assim, impedida de angariar investimento privado para promover a pesquisa, continua se apoiando desnecessariamente em impostos, no suor do contribuinte que muitas vezes nem está ligado à instituição. Trata-se dos idiotas de sempre… Diabolizam qualquer interesse empresarial e não concebem a possibilidade de o investimento em pesquisa ser algo bom para todo mundo. Cara, não há interesse do mercado destruir a Academia… (Eles querem gente qualificada). Ela própria parece estar perseguindo esse fim, obstinadamente, a ponto de o mercado ter de ignorar o diploma em favor de outros parâmetros.

Sabemos disso. No meu período no IFCS pude perceber a quantidade de gente medíocre em meio a poucos gênios (os quais considero realmente admiráveis) que fazem nada senão ficar encaixando velhas falácias socialistas em todos os eventos que se lhe apresentam e falar mal de qualquer um, em exercício ou ainda meramente capaz, de liderar ou promover qualquer ação efetiva no mundo real que não possa ser convertida num aforismo ridículo. E como toda boa religião, o socialismo se contorce à vontade em paradoxos tentando neutralizar ou se esquivar de qualquer evidência de eu erro em vez de aprimorar-se até mesmo jogando-se jocosamente das bordas da cognoscibilidade na falta de recurso último. Dogmáticos para umas coisas e céticos para outras… isto é, cínicos, desonestos.

[Aliás aproveito para dizer que não sou socialista ou capitalista (nem de centro), porque meu foco é outro. Ambos são sistemas econômicos - e não políticos - orietados ao capital financeiro. Mas economia e a política só fazem sentido se orientadas a idéias, recursos e valores (como entidades necessárias da ontologia da coisa). É uma ideia que eu gostaria de discutir melhor num post futuro, mas em linhas gerais traz ao gerenciamento do capital como algo inerente, mas secundário em vista o exercício pleno da atividade humana, propriamente humana. Não se trata de capitalizar ou distribuir o dinheiro, ele é sempre uma ficção útil (sempre orientado ao bem de alguém, de algum grupo ou, preferencialmente, da sociedade, e não "gera desigualdade", mas a evidencia), são ações do Estado, isto é, uma representação essencialmente relacional  da disposição de um indivíduo/grupo/instituição para com os demais e vice-versa. (Não é um pleonasmo, as representações são, em muito, socialmente relacionais, mas nem sempre consiste nisso sua essência. E há inclusive representações psicológicas não sociais). Basta notar que ele muda de valor a depender da disposição para obtê-lo (e da quantidade de unidades em giro) e também que sempre há uma ética (provavelmente hoje equivocada e caduca) pressuposta na economia. Não seria uma utopia ingênua... explico depois.]

Em suma, os inimigos da Academia transcendem a esfera acadêmica. Ao que parece, situação e oposição são o inimigo (até porque agora são o mesmo). É hora de mudar a forma de aprender, ensinar, pesquisar (mas certificar com rigor) por uma educação de escopo aberto, autônoma, acessível a todos via Internet e tecnologia. Eis o mar aberto… para além dos tentáculos do presidente molusco avesso à razão.

Categories: Filosofia, Informática, Psicologia Tags: