dezembro 29, 2007
dezembro 10, 2007
Error Gems: SSL Not Installed
$ sudo gem update –system
Attempting remote update of rubygems-update
ERROR: While executing gem … (Gem::Exception)
SSL is not installed on this system
$ sudo apt-get install libcurl3-openssl-dev libopenssl-ruby
Depois te instalar os pacotes:
$ sudo gem update –system
Aqui funcionou legal.
🙂
novembro 30, 2007
webdesigners primatas, felizmente ou infelizmente?
Atualmente faço um curso na Microlins, que diz ser um centro profissionalizante.
Na minha opinião, primeiro os docentes deveriam ser profissionais, pelo menos na unidade em que estudo não parece que existe uma formação. É ridículo as colocações do educador.
Bom! Tudo realmente começou em 2005, quando apareceu a oportunidade de fazer um curso de web. Quando iniciei o curso eu era o único – sem contar o professor – que sabia programação. De início foi bacana, pois conheci o HTML de outra forma, digamos que conhecia o HTML de forma grosseira.
Seguindo do HTML veio Dreamweaver, Fireworks, Corel, Photoshop e Flash – um mais ruim que o outro. 😛
Nesse curso de 2005 eu fui o único que pegou o certificado simbólico, porém deixei de ir nas últimas aulas. Mudaram o horário e ficou muito péssimo! Enfim, não ganhei o certificado e esse ano voltei pra concluir, vou fazer mais uns 2meses e pegar o certificado.
No meio do curso de Web da Microlins eu já me interessava por Tableless. Até perguntei certa vez ao meu professor se ele conhecia Padrões Web. E…! A resposta dele foi:
– Não. Nunca ouvi falar!
Sempre visitava o site do tableless e o forum e depois de um tempo que anunciaram o curso online de tableless eu me inscrevi. Se não me engano no final de 2006 ou no início de 2007; não me recordo exatamente da data. Enfim, nesse período eu fiz o curso pela Visie e que foi muito gratificante. Claro que já sabia formatações habituais, mais a minha mente abriu muito com esse curso da Visie.
Quando cheguei no curso eu vi que o pessoal estava no final do Dreamweaver e então comuniquei a ele que não se preocupasse, eu conseguiria acompanha-los e ressaltei que meu estilo de design era tableless.
Ele fez uma cara, tipo: ã?!
Deixei quieto, sentei em um computador e na primeira aula cheguei aonde eles estavam. ^^
Fiquei ouvindo ele dizer cada coisa ridícula:
– “Gente, frame é muito bom!”;
– “Dreamweaver faz tudo pra você, você só usa o mouse”;
– “Vocês viram? Não precisa saber HTML.”;
Agora ele terminou de “explicar” CSS.
“Ensinou”:
– formatar links, daquele jeito do dreamweaver: Seleciona o texto e seleciona o estilo…
– …e colocar cor no fundo.
Ai vem a parte boa! O cidadão me fala na sala: “É pra isso que serve CSS, só pra isso gente!!”
Caramba, já ia esquecendo!
Certa vez na aula eu fiz uma colocação tentando abrir a cabeça dele e fazê-lo pesquisar mais sobre o assunto, porém não deu certo.
Eu comentei que é muito mais rápido, fácil e pratico construir uma estrutura sem tabela e formatando no css. Ele ponderou:
– Não, não… conheço esse método…
– Será que conhece mesmo professor. – falei, meio que desafiando ele.
– Cara! – disse ele – Eu já cheguei no extremo disso dai e no extremo de tabela. Conheço muito.
Realmente eu fiquei sem argumentos e ele ainda colocou mais.
– Olha só. Quando um cliente chega “doidão” pra você e diz quero um site pra “ontem”! Você vai la no dreamweaver, pá, monta tudo legalzinho, ctrl+c ctrl+v no conteúdo que vai aparecer no frame do meio, altera e ta pronto. Viu como é simples?!
Nessa mesma hora veio em minha cabeça: cuitado do cliente dele.
Bom! Eu não havia mais o que dizer, até porque explicar o processo de construção em padrões web com uma pessoa que não quer entender é impossível.
Então disse:
– Ta bom professor, deixa pra lá. O assunto é complexo.
Até o momento somente nossas vozes ecoavam na sala, os outros não sabiam nem aonde estavam.
Posso dizer que fico muito feliz, porque é menos concorrência. Entretando é triste ver que existem pessoas com “formação” e sem informação. (Belo trocadilho, não?! ;-))
novembro 17, 2007
Giro de Temas no VIM
Achei um código bacana para o vim.
Este código altera o tema instantaneamente ao precionsar um atalho – no nosso caso F8.
sudo pico /usr/share/vim/vimrc
(usei o pico pra não acontecer de dar algum erro. Nada de mais, só prevenção mesmo. ;-))
let themeindex=0
function! RotateColorTheme()
let y = -1
while y == -1
let colorstring = "#blue.vim#elflord.vim#evening.vim#koehler.vim#murphy.vim#pablo.vim#ron.vim#"
let x = match(colorstring,"#",g:themeindex)
let y = match(colorstring,"#",x+1)
let g:themeindex = x+1
":echo x y g:themeindex
if y == -1
let g:themeindex = 0
else
let themestring = strpart(colorstring,x+1,y-x-1)
echo("Setting Theme to-> ".themestring)
return ":so $VIMRUNTIME/colors/".themestring
endif
endwhile
endfunction
Aqui vai o nosso atalho.
map <F8> :execute RotateColorTheme()
http://www.vim.org/tips/tip.php?tip_id=211
outubro 7, 2007
Serials
AOE III
MDJV4-XHPKD-DY22X-G29H4-8282G
K8BDT-6BQGR-6CV9F-4GW93-2JPPJ
PCWVY-HGK3T-P8PKQ-Q29BW-M86CM
W987Y-6PWK3-CDDTC-R9DPX-4PMTD
F472F-X2GDG-RK73V-4M4RV-2JT8W
AOE III – War Chiefs
WPXD8-7XYFR-4828Q-FV88X-7DGDJ
setembro 11, 2007
Ruby com MySQL (Básico)
Primeiramente tenha o módulo do mysql instalado. Caso não tenha:
gem install mysql
Agora algo bem simples.
Nada mais simples de início como uma conexão com o banco. 🙂
require “mysql”
#Como de custume vamos instanciar algumas variáveis com os valores ‘usuário’, ‘senha’ e ‘host’.
user_mysql = “root”
pass_mysql = “pass”
host_mysql = “localhost”
database_mysql = “nome-da-database”
#Criando uma variável chamando a classe do MySQL.
mydb = Mysql.new(user_mysql, pass_mysql, host_mysql)
#Se você já tem uma database criada, para seleciona-la use:
selecionar = mydb.select_db(database_mysql)
#Caso contrário pode cria-la:
novadb = mydb.query(“CREATE DATABASE #{database_mysql}”)
#Agora o essencial do banco de dados: a listagem.
#Vou colocar com todos os passos já citados.
mydb = Mysql.new(user_mysql, pass_mysql, host_mysql)
selecionar = mydb.select_db(database_mysql)
sqllistar = mydb.query(“SELECT * FROM tabela“)
listar = sqllistar.fetch_fields
listar.each do |lista|
puts lista.name
end
mydb.close
De início, simples e fácil.
🙂
(Essa merda de editor do wordpress acaba com toda minha identação)
setembro 6, 2007
RoR: Sistema simples de autenticação
Model
1) script/generate model user
1.1) edite o arquivo db/migrate/XXX_create_users.rb
class CreateUsers < ActiveRecord::Migration
def self.up
create_table :users do |t|
t.column :firstname, :string
t.column :lastname, :string
t.column :username, :string, :null => false
t.column :password, :string, :null => false
t.column :hashed_password, :string, :limit => 40, :null => false
t.column :admin, :boolean, :default => 0
end
end
def self.down
drop_table :users
end
end
1.2) edite o app/models/user.rb
require ‘sha1’
class User < ActiveRecord::Base
attr_accessor :password
attr_protected :hashed_password
validates_presence_of :password, :password_confirmation
validates_uniqueness_of :username
validates_confirmation_of :password, :on => :create,
:if => lambda { |user| user.new_record? or not user.password.blank? }
validates_length_of :password, :within => 5..40,
:if => lambda { |user| user.new_record? or not user.password.blank? }
def self.hashed(str)
SHA1.new(str).to_s
end
def self.authenticate(user_info)
user = find_by_username(user_info[:username])
if user && user.hashed_password == hashed(user_info[:password])
return user
end
end
before_save :hashed_password
before_update :hashed_password
def hashed_password
if not password.blank?
self.hashed_password = self.class.hashed(password)
end
end
end
Controller
2) script/generate controller user index login process_login logout update_password
2.1) edite o arquivo app/controllers/user_controller.rb
class UserController < ApplicationController
before_filter :login_required, :only => :my_account
def index
render :action => “login”
end
def login
@user = User.new
@user.username = params[:username]
end
def process_login
if user = User.authenticate(params[:user])
session[:user] = user.id
redirect_to session[:return_to] || “/”
else
flash[:error] = “Invalid login.”
redirect_to :action => “login”, :username => params[:user][:username]
end
end
def logout
session[:user] = nil
flash[:message] = “Logout successfully.”
redirect_to :action => “login”
end
def update_password
if request.post?
#Store password fields
password = params[:user][:password]
password_confirmation = params[:user][:password_confirmation]
@user = User.find(session_user.id)
if @user
if password == password_confirmation
if password.blank? or password_confirmation.blank?
flash[“error”] = “Password and/or Password Confirm is blank.”
else
@user.password_confirmation = password_confirmation
@user.update_attribute(“password”, password)
if @user.save
flash[“message”] = “Password was successfully changed.”
end
end
else
flash[“error”] = “Password and/or Password Confirm invalid.”
end
end
redirect_to :action => “my_account”
end
end
def my_account
end
end
3) agora edite o app/controllers/application.rb
class ApplicationController < ActionController::Base
before_filter :set_user
helper_method :session_user
User.content_columns.each do |column|
in_place_edit_for :user, column.name
end
def set_user
@user = User.find(session[:user]) if @user.nil? && session[:user]
end
def session_user
@session_user ||= User.find(:first, :conditions => [“id = ?”, session[:user]])
end
def login_required
return true if @user
access_denied
return false
end
def access_denied
session[:return_to] = request.request_uri
flash[:error] = “Oops. You need to login before you can view that page.”
redirect_to :controller => “user”, :action => “login”
end
end
Views
<!– app/views/user/login.rhtml –>
<% if @flash[:message] %><div><%= @flash[:message] %></div><% end %>
<% if @flash[:error] %><div><%= @flash[:error] %></div><% end %>
<%= form_tag :action => ‘process_login’ %>
Username: <%= text_field “user”, “username” %>
Password: <%= password_field “user”, “password” %>
<%= submit_tag %>
<%= end_form_tag %>
<!– app/views/user/my_account.rhtml –>
<h2>Account Info</h2>
<%= error_messages_for “user” %>
<% if flash[“error”] %><p><%= flash[“error”] %></p><% end %>
<% if flash[“message”] %><p><%= flash[“message”] %></p><% end %>
<h3>Hello! <%= session_user.lastname %>, <%= session_user.firstname %></h3>
<cite>P.S: If you want edit some field, click on value.</cite>
<p><strong>Firstname:</strong> <%= in_place_editor_field :user, :firstname %></p>
<p><strong>Lastname:</strong> <%= in_place_editor_field :user, :lastname %></p>
<p><strong>Username:</strong> <%= in_place_editor_field :user, :username %></p>
<p>
<%= form_tag :action => “update_password” %>
<strong>New password:</strong>
<br />
<%= password_field “user”, “password” %>
<br />
<strong>Confirm:</strong>
<br />
<%= password_field “user”, “password_confirmation” %>
<br /><br />
<%= submit_tag “Change my password” %>
<%= end_form_tag %>
</p>
Layouts
4) crie ou edite o app/views/layouts/application.rhtml
<html>
<head>
<title>título</title>
<%= javascript_include_tag :defaults %>
</head>
<body>
<div id=”all”>
<div id=”header”>
<h1>header</h1>
</div>
<div id=”contents”>
<%= yield %>
</div>
</div>
</body>
</html>
setembro 4, 2007
RoR: in place editor
Hoje quando estava criando a parte de ‘Account Info’ resolvi colocar um ‘ajax in place editor’ para facilitar a edição dos campos. Pra falar a verdade eu nunca havia usado essa propriedade do ajax, apesar de achar muito bacana.
Eu não costumo – apesar que a partir de agora eu posso dizer: não costumava – usar javascript pelo motivo da acessibilidade do usuário final.
Mais em vista que sites de grande porte não se preocupa tanto com essa parte de javascript não-obstrutivo, porquê eu preocupar? Partindo disso eu fui atrás de algum código que facilitasse a inserção do ‘in place editor’ no Ruby On Rails.
E não é que eu achei algo?! 🙂
O código é o seguinte:
Primeiramente você adiciona a linha abaixo no app/views/layouts/application.rhtml (caso não exista o arquivo, pode criar, sem problemas).
<%= javascript_include_tag :defaults %>
Obs: Insira essa linha entre a tag <head></head>.
Agora, vá em app/views/user/arquivo.rhtml e insira este código:
<% for column in User.content_columns %> <p> <b><%= column.human_name %>:</b> <%= in_place_editor_field :user, column.name %> </p> <% end %>
Caso você queira usar:
<%= in_place_editor_field :user, :username
Pode usar, não há problema.
E no arquivo app/controllers/application.rhtml insira:
User.content_columns.each do |column| in_place_edit_for :user, column.name end
Obs: Aonde está negrito quer dizer que você terá que adaptar.
agosto 24, 2007
Encontrar mp3 pelo Google
Retirado do site: http://www.undergoogle.com
“Os robôs do Google indexam todo o conteúdo livre que acham pela frente. Assim, além de páginas web e vários formatos de arquivos, o motor consegue indexar pastas inteiras com mp3, filmes, livros e documentos.
Muitas pessoas têm diretórios em seus servidores somente para armazenar e compartilhar mp3. Como o Google vasculha tudo, ele acaba encontrando esses diretórios e indexando-os. Para achá-los, basta usar os parâmetros certos, e discografias inteiras de alguns artistas podem ser encontradas pelo buscador.
O parâmetro a seguir encontra justamente essas fontes de mp3. Basta substituir o nome da banda citado aqui pela de sua preferência, ou então pelo nome da música a ser procurada. Pode-se trabalhar na busca também para que o buscador exiba filmes e outros tipos de documentos.”
Instalando Ruby on Rails (Ubuntu 7.04 Feisty Fawm)
A instalação é muito mais simples do que tenho olhado em vários links por ai. 🙂
1° Passo
Instalando o Ruby
sudo apt-get install ruby rdoc ri irb libyaml-ruby libzlib-ruby ri ruby1.8-dev
2° Passo
Instalando RubyGems
2.1) Download rubygems
wget http://rubyforge.org/frs/download.php/11289/rubygems-0.9.0.tgz
2.2) Descompactando
tar zxvf rubygems-0.9.0.tgz
2.3) Entrando no dir
cd rubygems-0.9.0
2.4) Instalando
sudo ruby setup.rb
2.5) Atualizando gem
gem update –system
3° Passo
Instalando Rails
sudo gem install rails –include-dependencies
4° Passo
Instalando a lib de ligação com o MySQL
sudo apt-get install libmysql-ruby
5° Passo
Instalando mongrel
sudo gem install mongrel –include-dependencies