Ativando mod_rewrite no Apache2.2 (Debian/Ubuntu)
May/102
Há algum tempo, tive problemas com o mod_rewrite e, como sempre fui acostumado a ativar da forma old school, me perdi; não achei a lista módulos no httpd.conf pra remover o comentário e ativar no Apache2.
Estudei essa estrutura (incomum pra mim) do Apache e descobri como ativar.
(Lembre-se de já ter instalado com o apt-get: apt-get install apache2)
Antes de tudo, verifique se você tem o módulo "mod_rewrite" (somente para ter certeza que você não o excluiu): locate mod_rewrite.so
Provavelmente ele será encontrado em "/usr/lib/apache2/modules".
Verifique se o arquivo "rewrite.load" está na pasta "/etc/apache2/mods-enabled". Caso não estiver, copie do mods-available: sudo cp /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/.
Execute os comandos:
cd /etc/apache2/mods-enabled
touch rewrite.load
sudo gedit rewrite.load
E cole a linha no arquivo: LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so
Agora, edite o arquivo /etc/apache2/sites-available/default (ou 000-default)
E procure o seguinte:
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
E mude o AllowOverride para "All": AllowOverride All
Após todos esses cansativos passos, reinicie o apache: service apache2 restart ou /etc/init.d/apache2 restart
Pronto, agora seu mod_rewrite está ativo.
Novo site FACE Digital
Apr/100
Lançado ontem (07/04/10) o novo site da FACE Digital. Agora muito mais interativo, simples e direto.
No canto da tela, você pode ter o auxílio do Isy. Ele ajudará na navegação do site explicando cada sessão. Por isso é importante que você esteja com o áudio ligado.
A idéia principal do site é explicar cada sessão em que atuamos usando as respectivas tecnologias.
Web
Desenvolvido por Thaynã Moretti, usando as tecnologias: PHP5, MySQL, JavaScript (JQuery), xHTML/CSS2 e FaceCMS (Content Management System, desenvolvido por Andrei Rosseti).
E-Learning
Desenvolvido por Claudney Wilbert: e-learning interativo com uma questão no final do teste para verificarmos se você capturou informações da apresentação.
Multimídia
Desenvolvido por Claudney Wilbert.
Relacionamento
Parte visual desenvolvida por Claudney Wilbert (efeitos e etc) e XML (organização de dados do banco) desenvolvido por Andrei Rosseti e finalizado por Thaynã Moretti.
Obs.: A voz do Isy foi gravada e editada por Claudney Wilbert.
Visite o site e confira: http://www.facedigital.com.br/
Lançamento do 'Nosso Bairro Tem'
Mar/101
O Nosso Bairro Tem é um novo serviço ligado ao Portal Joinville. Trata-se de um guia de utilidade pública que traz para os usuários do portal uma lista completa de lojas, bares, restaurantes, oficinas, escolas e outros estabelecimentos comerciais e de serviços espalhados por Joinville.
Acesse já: http://www.portaljoinville.com.br/nossobairrotem
Linguagens e técnicas usadas para o desenvolvimento: PHP5, MySQL5, JavaScript/Ajax+JQuery, xHTML+CSS2, CodeIgniter+DataMapper.
Codificação:
- Thaynã Moretti
- Andrei Rosseti
Desenvolvimento do layout:
- Juliano Rocha
NDE / No Default Emoticons
Oct/098
Numa tarde vazia com um tédio tenebroso, decidi criar algum script para o MSN Plus!. Como nunca fui a favor dos emoticons padrões serem fixos (sem possibilidade de editar/remover/whatever), comecei a codar desenvolver o NDE (No Default Emoticons).
Na primeira versão, era apenas para uso pessoal e a funcionalidade principal era enviar todos os emoticons padrões em texto. Mas como alguns amigos gostaram da idéia e da funcionalidade do Script, resolvi criar uma interface gráfica (GUI) para o usuário ter mais liberdade e assim, selecionar quais emoticons devem ser stripado .
Caso alguém não tenha entedido ainda o funcionamento, segue alguns exemplos:
Um emoticon padrão sendo enviado como texto:

Janela de configuração:

Emoticons personalizados + Emoticons padrões:

Bom, inicialmente é isso. O script ainda está em processo de desenvolvimento e, por enquanto, somente a janela de configurações funciona perfeitamente (ou não). Ainda não é possível desativá-lo (somente se você remover todos os emoticons da lista).
O NDE é EXTREMAMENTE Beta: "É por sua conta em risco".
* Versão 0.6b:
- Bug em emoticons com "-" (ex.: :-O) [OK]
- A janela "Sobre" não está com problemas; ela somente está incompleta.
* Versão 0.7b:
- Global replacement. Ou seja, todos os emoticons repetidos e que estão na sua lista (ex.:
), serão transformados em texto. Bug reportado por vms. [OK]
* Versão 0.8b:
- Se não houvesse nenhum emoticon na lista, ao enviar a mensagem o script retornava "undefined". Bug reportado por ezquimo. [OK]
Quem está usando a versão 0.7 ou inferior, por favor, atualize!
Baixe aqui (v0.8).
Camaleão h4x0r
Mar/091
Todos sabemos que camaleões mudam de cor instantaneamente, mas ver isso em um vídeo em que o dono (?) coloca o bichinho em cima de óculos com cores diferentes e o camaleão muda a sua cor na hora, é inacreditável.
Fake?
Novo Portal Joinville
Jan/090
O Portal Joinville agora está com uma nova roupagem e com muito mais interatividade para o usuário.
Acesse agora e cadastre-se pelo endereço: http://www.portaljoinville.com.br/
Conexão via socket com o Orkut
Jan/090
Esse código eu fiz há muito tempo atrás, só fiz algumas alterações e coloquei algumas frases em inglês pra ficar mais bonito. Mas vamos explicar um pouco antes de mostrar o código.
A conexão com o Orkut é beeem fresca, você precisa capturar 2 cookies: Auth & orkut_state.
Pegando o Auth
Faça uma conexão normal (porta 80) com www.google.com.
GET https://www.google.com/accounts/ClientLogin?Email=seu-email&Passwd=sua-senha&service=orkut HTTP/1.1
Caso tenha dado tudo certo, retornará algo mais ou menos assim:
HTTP/1.1 200 OK
Content-Type: text/plain
Cache-control: no-cache, no-store
Pragma: no-cache
Expires: Mon, 01-Jan-1990 00:00:00 GMT
Date: Wed, 07 Jan 2009 21:01:12 GMT
X-Content-Type-Options: nosniff
Content-Length: 563
Server: GFE/1.3
Connection: Close
SID=DQAAAHYAAADowNeryYp…
LSID=DQAAAHgAAABYeM3q3a…
Auth=DQAAAHgAAABYeM3q3a…
Salve o valor do Auth e faça uma nova conexão.
Pegando o orkut_state
Abra conexão com o www.orkut.com e mande o GET:
GET /RedirLogin.aspx?auth=valor-do-auth HTTP/1.1
Retornará o orkut_state, nosso segundo cookie-mor.
HTTP/1.1 302 Moved Temporarily
Cache-control: no-cache, must-revalidate, no-cache="Set-Cookie", private
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Pragma: no-cache
Set-Cookie: orkut_state=ORKUTPREF=ID=5495970435752129405:INF=0:SET=33642447:LNG=79:CNT=10:RM=0:USR=bW9yZXR0eUBnbWFpbC5jb20=:...
Domain=www.orkut.com; Path=/; HttpOnly
Set-Cookie: S=neworkut_borg=ADTzEmsvDlBZ4Rh...; Path=/; HttpOnly
Content-Type: text/html; charset=UTF-8
Navegando no Orkut
E agora, finalmente, você poderá fazer uma conexão direta com a Home.aspx, por exemplo… Tendo o orkut_state, você pode navegar em qualquer página do Orkut.
GET /Home.aspx HTTP/1.1
Cookie: orkut_state=valor-do-orkut_state
Código de exemplo feito por mim
sockclose orkutCookie
sockopen orkutCookie www.google.com 80
hadd -m userSettings logIn $1
hadd userSettings passWd $2-
}
on *:sockopen:orkutCookie: {
echo -a -> Connecting… Getting Auth, LSID and SID cookies from Google.
var %l = sockwrite -n $sockname
%l GET https://www.google.com/accounts/ClientLogin?Email= $+ $hget(userSettings, logIn) $+ &Passwd= $+ $hget(userSettings, passWd) $+ &service=orkut HTTP/1.1
%l Host: www.google.com
%l Connection: Close
%l
}
on *:sockread:orkutCookie: {
sockread %b
if ($regex(%b,^(\w+)=(.+)$)) hadd -m orkutCookies $regml(1) $regml(2)
}
on *:sockclose:orkutCookie:{
echo -a -> Done! Send Auth cookie to Orkut.
sendOrkutCookie
}
;sending auth cookie
alias sendOrkutCookie {
sockclose sendOrkutCookie
sockopen sendOrkutCookie www.orkut.com 80
}
on *:sockopen:sendOrkutCookie: {
var %l = sockwrite -n $sockname
%l GET /RedirLogin.aspx?auth= $+ $hget(orkutCookies, Auth) HTTP/1.1
%l Host: www.orkut.com
%l Connection: Close
%l
}
on *:sockread:sendOrkutCookie: {
sockread %b
if ($regex(%b,^Set-Cookie: orkut_state=(.+)$)) { hadd -m orkutCookies state $regml(1) }
}
on *:sockclose:sendOrkutCookie: {
echo -a -> OK! Orkut state caught! Now, connecting with orkut_state cookie on Orkut.com.
orkutCall
}
alias orkutCall {
sockclose orkutCall
sockopen orkutCall www.orkut.com 80
}
on *:sockopen:orkutCall: {
var %l = sockwrite -n $sockname
%l GET /Home.aspx HTTP/1.1
%l Host: www.orkut.com
%l Cookie: orkut_state= $+ $hget(orkutCookies,state)
%l Connection: Close
%l
}
on *:sockread:orkutCall: {
sockread %b
if ($regex(%b,JSHDF\['uid'\] = '(\d+)')) hadd -m orkutData profileUid $regml(1)
}
on *:sockclose:orkutCall: {
echo -a -> Profile Uid data saved.
echo -a -> author: Thaynã Moretti.
}
Sistema de tradução
Jan/090
Hoje, andei falando com o Skull_BoY e ele me pediu para fazer um sistema de tradução em mIRC Scripting: tudo que fosse digitado em um certo canal em inglês, fosse traduzido para português e enviado para outro canal.
Eu fiz o sistema, apesar de estar totalmente enferrujado em relação à MS.
alias x { return $replace($1-,",",>,>,',',<,<) }
on $*:text:/(.+)/iS:#: if ($chan == $t($hget(translate, channels), 1)) { translate $strip($1-) }
alias translator {
if $regex($1,^off$) { hfree translate channels | halt }
if !$2 || $regex($1-2,/(#\w+)/g) < 2 {
echo -ga › sintáxe: /translator #canal1 #canal2 (onde " #canal1 " é o canal de onde o texto será capturado para tradução)
if ($hget(translate, channels)) { echo -ga › canais ativos/registrados no momento: $v1 }
halt
}
hadd -m translate channels $1-2
echo -ga › ok! $1 e $2 registrados com sucesso!
}
alias translate {
set %rand $r(1,1000)
hadd -m $+(translate_,%rand) texto $1-
sockopen $+(translate_,%rand) translate.google.com 80
}
on *:sockopen:translate_*: {
var %w = sockwrite -n $sockname, %s = $+(sl=en&tl=pt&text=,$hget($sockname, texto),&btnTrTxt)
%w POST /translate_t HTTP/1.1
%w Host: translate.google.com
%w Connection: Close
%w Content-Type: application/x-www-form-urlencoded; charset="utf-8"
%w Content-Length: $calc($len(%s) + 1)
%w
%w %s
}
on *:sockread:translate_*: {
sockread %q
;echo -ga -> %q
if $regex(%q,/wrap=SOFT dir="ltr" rows=5 id=suggestion>(.+)<\/textarea>/iS) { msg $t($hget(translate, channels), 2) tradução › $x($regml(1)) | sockclose $sockname }
}
on *:sockclose:translate_*: { hfree $sockname }
Sintáxe: /translator #canal-para-capturar #canal-para-enviar.
Aplicativos para o Orkut
Dec/081
Se você é desenvolvedor (principalmente web), saiba que você pode criar aplicativos sociais para o Orkut. O Orkut oferece suporte para uma sandbox na qual é possível criar aplicativos usando o OpenSocial, um conjunto comum de APIs, HTML e JavaScript.
No momento, o Orkut suporta apenas a versão 0.7 da API do OpenSocial.
Criando sua primeira API
Primeiro, crie um arquivo XML. Escolha o nome e coloque a formatação padrão do XML (com utf-8). Veja um exemplo a seguir:
<?xml version="1.0" encoding="UTF-8"?>
<Module>
<ModulePrefs title="Testando">
<Require feature="opensocial-0.7"/>
</ModulePrefs>
<Content type="html">
<![CDATA[
Testando!
]]>
</Content>
</Module>
Salve e suba o arquivo em algum FTP. Para você exportar essa API para o Orkut, siga os passos abaixo.
Acesso ao SandBox
Caso você tenha interesse, cadastre-se para ter acesso à sandbox aqui. É um formulário rápido, apenas quatro fields.
Após o cadastro, entre no Orkut pelo link: http://sandbox.orkut.com/ (caso a URL mude automaticamente para http://orkut.com/, provavelmente ocorreu algum erro no seu cadastro).
Caso tenha ocorrido tudo certo…
Vá em "Editar" no menu de Aplicativos.
Após aberto, note que agora há uma caixa de texto para você exportar a sua API. Veja na imagem:
Coloque o link do seu arquivo e clique em "Adicionar aplicativo" e siga os passos padrões. Após adicionado, o seu aplicativo ficará mais ou menos assim:
Bom, é isso. No próximo post, darei exemplos de API's importando arquivos JS e etc…
Agradecimentos: ffelipe (edição de imagens)











