Archive for the ‘Tutoriais’ Category

Mídia Social & Marketing Viral

Olá pessoas, depois de um tempo mexendo com pessoas, agora trabalhando para elas, pensando na alma antes da programação, me interessei muito por mídia social, marketing viral, e coisas do gênero.

Nesse post, pretendo estar explicando um pouco deles, como tirar proveito disso e tudo mais :D

Boa leitura a todos.

Mídia Social:

Mídia Social é, em seu sentido mais básico, uma mudança na maneira como as pessoas descobrem, lêem e compartilham informações, notícias e conteúdos. É uma fusão social e tecnológica, transformando o que até então era um monólogo em um diálogo.

Marketing Viral:

O marketing viral e a publicidade viral referem-se a técnicas de marketing que tentam explorar redes sociais pré-existentes para produzir aumentos exponenciais em conhecimento de marca, com processos similares a extensão de uma epidemia.

Resumindo, agora na Web 2.0, você não pensa em como vender o seu produto, utilizando os meios de mídia já existentes, como redes sociais, Mashups, e coisas assim. Deixe o público vender o seu produto, divulga-lo, dizer o quanto ele é bom, o quanto vale a pena usa-lo, o quanto você deve compra-lo.

Com o advento da Web 2.0, um jeito mais colaborativo de web, com Mashups onde os usuários criam seus conteudos, a blogosfera crescendo, formadores de opinião a solta, as empresas tem que estar preparadas para essa era, principalmente com a criação da Nuvem, o Cloud Computing, onde suas informações não ficam mais armazenas em seu computador, e sim na Web, sendo compartilhadas por milhares de computadores. Usuários querem poder chegar em qualquer canto, com uma conexão à internet e usar o seu e-mail, ver a sua planilha de gastos, interagir com o seu amigo de muito tempo. Além disso tudo, ele quer poder conhecer outras pessoas :)

E por outro lado, as empresas querem ganhar dinheiro, as pessoas querem ganhar dinheiro, por que não usar a popularidade do seu site, para ganhar dinheiro com anuncios de outras empresas? Google Adsense existe para isso! Além é claro, de muitos outros serviços.

A internet móvel chegando no brasil vai ajudar a popularizar a Web, cada vez mais, produtos feitos na Web, e quem sabe, pela Web, vão ser criados. E mais e mais usuários estarão usando, isso tudo num simples “boca-a-boca”.

Marketing barato, mídia já existente e barata, só falta a inspiração e a criação!

Abraços

Posted by Otávio Souza on Fevereiro 14th, 2009 No Comments

Ldap – Usuários, maquinas, tudo num lugar só!

Olá pessoas, depois de um tempinho sem postar, venho aqui para poder dar um tutorial de como usar o maravilhoso OpenLDAP para colocar seus usuários tudo num lugar só, integrando SAMBA e outras coisitas mais. Vou fazer o post por partes, primeiro como instalar e configurar o LDAP, depois disso, como iremos integrar, ferramenta-por-ferramenta, no final das contas, o meu projeto estara concluido :D

As ferramentas a serem integradas são essas:

  • SQUID
  • SAMBA
  • DNS
  • Autenticação PAM
  • Autenticação para scripts PHP
  • Asterisk
  • RADIUS com PPPOE

E que tudo comece!

LDAP é um protocolo maravilhoso, como um banco de dados é uma maravilha, um só banco de dados, com todas as informações necessárias para a autenticação dos mais diversos tipos de sistemas.

Imagine você, que com uma só ferramenta, você insere usuários no banco de dados e eles já podem logar em qualquer canto do seu sistema :D Isso é ótimo!

Mas chega de papo-furado, vamos ao caso!

Não vou ensinar como instalar o LDAP aqui, até pq a Internet esta cheia de tutoriais para isso! Usem o Let me google that for you e achem os tutoriais :P

Ao configurar o LDAP, façam a criação da base de dados, com os seguintes códigos:

dn: dc=kinuxlinux,dc=org
dc: kinuxlinux
objectclass: top
objectclass: domain

dn: ou=Usuarios,dc=kinuxlinux,dc=org
ou: Usuarios
objectclass: top
objectclass: organizationalUnit

dn: ou=Grupos,dc=kinuxlinux,dc=org
ou: Grupos
objectclass: top
objectclass: organizationalUnit

dn: ou=Computadores,dc=kinuxlinux,dc=org
ou: Computadores
objectclass: top
objectclass: organizationalUnit

Vejam o que é cada coisa, as primeiras 4 linhas definem o dominio, o kinuxlinux.org, ou para o LDAP, dc=kinuxlinux,dc=org ;D

Dizemos que ele é um objeto do tipo top, e que é do tipo domain

Após isso, começamos a definir os “bancos de dados”, os Usuários, Computadores e Grupos, ou como são chamados, OrganizationalUnit, Unidade Organizacional :P

Bom, mais pra frente veremos como integrar o PAM :D

Links:

  • http://www.vivaolinux.com.br/artigo/Samba3-+-LDAP-no-ArchLinux
  • http://www.spack.org/wiki/LdapClient

Abraços!

Posted by Otávio Souza on Novembro 21st, 2008 No Comments

Instaladores de distribuições, uma geral!

Olá pessoas, depois de um tempo passado desde o ultimo post, “Como criar uma distribuição Linux”, muitas pessoas perguntaram como fazer isso no Debian, como criar também o instalador e tudo mais.

Por isso nesse post vou dar uma geral do funcionamento de geral dos dois tipos de instaladores, o para Live-CDs e o para CDs de pacotes.

Primeiro, o geral, o que é comum.

Um instalador deve perguntar ao usuário coisas simples, como, partição para se instalar, partição SWAP, nome de usuário para adicionar, senha do usuário root, instalar o gerenciador de boot na MBR e coisas afins ;)

Agora você se pergunta, eu tenho meu Live-CD, como devo fazer a instalação do mesmo?

Bom, basicamente você só precisa copiar a sua “/” do Live-CD todo pro HD, e configurar o boot, só isso, um ex para linux-live:

cd /

for dir in bin etc var usr opt root home srv media;

cp -Rp $dir /mnt/target

done

Basicamente é isso, ele vai copiar pasta por pasta e pronto, a copia é feita pasta por pasta porque não é recomendável se copiar tudo, ex: se você copiar o /mnt para o target, ele vai se copiar nele mesmo, entrando num Loop :D

O proc também, o sys, e por ai vai :D

Bom, alguns instaladores que é sempre bom se olhar o código são:

  1. Anaconda – O instalador do Fedora para o CD de Instalação
  2. Copier – O instalador do KinuX: http://svn.kinuxlinux.org/copier/trunk
  3. Debian-installer – O Instalador do Debian, dahhh :P

Abraços a todos && Tenham um bom dia :]

Posted by Otávio Souza on Setembro 21st, 2008 No Comments

Construindo um firewall básico com Iptables

Decidi fazer o artigo sobre Firewall com Iptables, mas como sempre, tenho muita sorte, mas muita sorte mesmo com o Google e decidi procurar antes algo sobre o assunto, pra ver em que pé estava a Internet, não deu outra, “Construindo um firewall básico com Iptables” no Google me retornou alguns sites, e um deles foi o VivaOLinux, com esse artigo aqui, ótimo por sinal, bem completo, ele fala tudo e mais um pouco, no artigo tem um link para outro, que explica a estrutura do Iptables.

Espero que aproveitem os artigos, eu recomendo ;)

Abraços

Posted by Otávio Souza on Agosto 9th, 2008 No Comments

Uma abordagem do SSH

Olá pessoas, depois de um bom tempo sem postar nada, estava falando com um amigo no mensageiro, e ele me perguntou quando eu ia postar algo, disse que quando tivesse assunto pra postar eu fazia isso, bom, sairam três assuntos da conversa :P

  1. Autenticação SQUID com OpenLDAP
  2. Uma abordagem do SSH
  3. Construindo um firewall básico com Iptables

Bem, escolhi por fazer o segundo artigo primeiro, depois, assim que reuinir as informações, crio os outros artigos :)

Vamos começar

O SSH (Secure Shell) é um protocolo/programa para poder acessar computadores remotamente, a conexão com a maquina é criptografada, permitindo assim um controle tranquilo.

O uso básico do SSH é “ssh nomedousuário@maquina”, com isso ele vai pedir a sua senha e vai executar o comando que está no servidor, ex: “/bin/bash”.

O servidor pode dar para você um shell completo (é claro, com as limitações do seu usuário), como pode dar um micro-shell, somente para que você execute alguns comandos.

Quando você muda a porta do servidor SSH (garantindo assim a segurança do mesmo), você deve usar o switch “-P porta”, ficando então com o comando desse jeito “ssh usuário@host -P porta”.

Certo, com isso você já pode ter um uso básico do SSH.

Mas, o SSH tem outras opções, chamadas Tunelamento e Proxy Reverso, com o Tunelamento você pode dar a saida dos dados por outro servidor.

Ex:

Servidor da Escola com Proxy bloqueando site xxx

Escola ->                        Servidor SSH externo                    -> Site XXX

No caso o que aconteceu foi, você se conectou com o site XXX pelo servidor SSH externo ao servidor da escola, passando por uma conexão criptografada, ao invés de passar pelo proxy.

Atenção, usem isso com cuidado, se a sua escola/instituição/empresa proibe é porque eles devem ter motivos para isso.

Mas afinal, como é que eu vou fazer os programas, como o Firefox, acessar a Web pelo SSH? Simples! Você usa um switch no SSH para poder criar um proxy Socks na sua maquina, assim é só configurar os navegadores para usarem esse proxy Socks

Comando: “ssh usuário@maquina -P porta -D portanamaquinalocal”

Depois é só configurar o navegador para usar proxy socks para aquela porta ;)

Vamos ao proxy reverso!

Situação:

Você esta querendo acessar o computador da sua casa, que está atrás de um router, que por azar do destino, não está routeado :( , e agora? Quem poderá nos salvar? Não, não é o chapolin colorado, é o Proxy Reverso mesmo!

Você faz o seguinte, com alguém na sua casa, você abre um servidor SSH nessa sua maquina que pode ser acessada pela Internet, e manda a pessoa em sua casa se conectar nela, usando o seguinte comando:

“ssh -LPortaDoSshNesseComputador:ComputadorExterno:PortaQueVocêQuerNoComputadorExterno root@ComputadorExterno”

Atenção: Só é possivel fazer isso como usuário root! Ou seja, a pessoa em sua casa tem que saber a senha do root no seu computador ;)

Depois de feito isso, é só você acessar no seu computador assim:

“ssh UsuárioDoComputadorDeCasa@127.0.0.1 -P PortaQueVocêDisse”

Nisso, para terminar a conexão, disconecte no seu computador e mande a pessoa em casa disconectar do seu computador.

Com isso, sejam felizes! O SSh é muito lindo!

Posted by Otávio Souza on Agosto 6th, 2008 6 Comments

Atualizado: Tutorial/Dicas: Usando gStreamer, QT4 e Python para criar um player

Olá pessoas, depois de muito tempo sem passar por aqui para postar nada, decidi postar um pequeno tutorial, ou uma série de dicas para que vocês tenham uma ideia de como usar gStreamer, QT4 e Python na criação de um player :)

Primeiro, o porque do uso do QT4? Simples, não gosto muito do GTK, prefiro QT, sou lunatiKo, dá nisso :P

Depois, o porque do gStreamer? gStreamer é mais prático para quem quer criar um player, tá tudo ali, instala meia-duzia de pacotes e teu sistema toca tudo. Além do mais, dá suporte a efeitos e coisas afins. Numa aplicação QT4 pura, é melhor usar só o gStreamer e não o Phonon

Agora vamos deixar de lorota e começar a codar :D

O gStreamer tem toda uma estrutura de Pipelines, sinks e coisas do gênero, mas para um simples player nos não precisamos nos preocupar tanto assim ;) Basta um simples elemento, chamado playbin, o playbin faz o trabalho de criar o decoder, o sink para a saida de som e tudo mais, tudo automaticamente :D

Vejamos um pequeno código (Atenção, faça isso no interpretador python, afinal o gStreamer usa uma Thread para poder tocar tudo, portanto, o seu programa iria sair assim que chegasse no play :P

import gst

player = gst.Pipeline(’player’)

playbin = gst.element_factory_make(’playbin’)

player.add(playbin)

playbin.set_property(’uri’,'file:///home/…/minhamúsica.ogg’)

player.set_state(gst.STATE_PLAYING)

Viram que não é tão dificil não é :)

Agora analisemos o código:

import gst -> Importa o gStreamer

player = gst.Pipeline(’player’) -> Cria a pipeline

playbin = gst.element_factory_make(’playbin’) -> Cria o elemento playbin

player.add(playbin) -> Adiciona o playbin a pipeline do gStreamer

playbin.set_property(’uri’,'file:///home/…/minhamúsica.ogg’) -> Seta a propriedade uri do playbin para a localização do stream, isso pode ser um stream http, um arquivo local e por ai vai

player.set_state(gst.STATE_PLAYING) -> Muda o estado da pipeline, STATE_PLAYING começa a tocar, STATE_NULL para de tocar, STATE_PAUSED pausa o stream

Adivinhem só, se você colocar um stream de vídeo ai, ele vai mostrar o vídeo numa nova janela :D

Agora você se pergunta, como posso saber o fim do stream? Simples eu digo!

Usamos dbus e pygtk

Vejam só o código:

import gst, gtk

def mensagem(bus, message,player):

if message.type == gst.MESSAGE_EOS:

player.set_state(gst.STATE_NULL) # Vai para o stream na mensagem de fim-de-stream

player = gst.Pipeline(’player’)

bus = player.get_bus() # Pega o elemento do DBUS

bus.add_signal_watch() # Adiciona o watch de sinais

bus.enable_sync_message_emission() # Habilita a emissão de mensagens sync

bus.connect(’message’,message,player) #Conecta o sinal e passa como parametro opcional o player.

playbin = gst.element_factory_make(’playbin’)

player.add(playbin)

playbin.set_property(’uri’,'file:///home/…/minhamúsica.ogg’)

player.set_state(gst.STATE_PLAYING)

gtk.main() #Inicia o GTK para que o dbus funcione…

Isso dai já faz o player em si.

Depois desses códigos, vou deixar que vocês pesquisem um pouco :)

Vou dar logo uma dica, usem o QWidget.winId() (no Windows, int(QWidget.winId())), coloquem o gtk.main numa thread com QThread e criem um qt sinal para o “message” e o “sync-message::element”

 

Além disso, tenho um projeto de player aqui: http://svn.kinuxlinux.org/DJ, é chamado de DeeJay, as deps são gstreamer-python, pygtk, pyqt4 :D

Aproveitem

Links:

  • http://doc.trolltech.com
  • http://pygstdocs.berlios.de
  • http://pygtk.org

Posted by Otávio Souza on Julho 21st, 2008 6 Comments

Como criar uma distribuição Linux?

Olá pessoas, muitos de vocês devem se perguntar, como é que se cria uma distribuição Linux? Bom, não tem receita certa, tudo vai do seu nível de conhecimento e do seu nível de paciência e preocupação com o seu usuário ;)

Mas, vou dar aqui o que eu uso/usei na criação do KinuX Linux <http://kinuxlinux.org> (atualmente passando por um período de decisões =\)

Podemos criar uma distribuição Linux de duas maneiras, uma delas é do modo mais “fácil”, o modo em que você se baseia em outra distribuição e o jeito mais “difícil”, o jeito em que você cria tudo do zero Oo, isso é possível? É, é possível =)

Quando você cria uma distribuição você tem que pensar em alguns aspectos, algumas coisas que vão definir o rumo da sua distribuição, seja o sucesso total ou o fracasso eminente ;)

Vamos lá

  • Tipo de usuários: Iniciantes? Medianos? Avançados?
  • Você tem tempo para desenvolver a distro: Sim? Não?
  • Quer fazer uma distribuição baseada em outra ou em nada: Sim? Não (Veja que se sua distribuição não for baseada em outra, você terá que criar todos os pacotes, tudo que o usuário precisa e até mais um pouco)?
  • Você tem um servidor para disponibilizar a distribuição: Sim? Não?
  • No seu servidor você tem limite de banda?
  • Será que você precisa criar a distribuição toda? Não seria possível criar somente um projeto para fazer as suas personalizações?

Com esses pontos respondidos, você já está apto a continuar o projeto ou não =)

Agora vamos a mais um ponto!

  • Sua distribuição vai ser em LiveCD ou em InstallCD?

Se ela for em LiveCD, você vai criar os scripts para inicialização da mesma ou vai utilizar um projeto?

Se for em InstallCD você vai criar o seu instalador ou vai utilizar um projeto?

Depois de decidido estas coisas, não tenho mais nada a fazer ;)

Os passos para a construção da distro são:

  • Sistema base instalado (Kernel, utilidades e tudo mais)
  • Configura os serviços como HAL, DBUS, UDEV e por ai vai
  • Instalar um servidor X e utiliza um script de detecção de hardware para auto-configurar o Xorg.conf
  • Instalar o ambiente(s) de desktop para que o usuário interaja
  • Escolher as aplicações de acordo com o seu ambiente de desktop
  • Configurar o desktop
  • Configurar o sistema em si, /etc/motd, /etc/hosts.allow e por ai vai ;)
  • Copiar as configurações do usuário para /etc/skel, assim todo usuário adicionado vai ter essas configurações
  • Reiniciar e ver se ainda funciona
  • Empacotar tudo!

Cabou-se, espero que tenham uma boa criação de distro =), abraço!

Links:

  • Linux-Live: http://linux-live.org – Projeto para criação de LiveCD gênerico
  • Slax : http://slax.linux-live.org – Projeto de demonstração do Linux-Live, baseado no Slackware
  • Debian: http://debian.org – Procura por debian-installer (anna) e seu pacote =)
  • Archie – http://archie.dotsrc.org/ – Criação de Live-CDs do Arch
  • Anaconda – http://fedoraproject.org – Procura pelo anaconda
  • LinuxFromScratch – http://www.linuxfromscratch.org

Posted by Otávio Souza on Junho 1st, 2008 4 Comments

Minha opinião de servidor seguro

Olá pessoas, na falta de tutoriais, decidi fazer esse =)

Como vocês sabem, tenho um home-server, desligado no momento, mas não deixo de ter :P e penei um pouco para poder configura-lo deixando nos conformes e com o máximo de segurança possível, isso tirando é claro o firewall, porque server que é server não tem firewall! (Brincando ;) )

Vamos começar a com as configurações da maquina

  • Processador: Celeron D de 2.13GHz
  • Memória atual (Queimada) : 256MB
  • HD: 20GB
  • 2 placas de rede, uma para o Velox e outra para a rede interna =)
  • e etc. etc. etc.

Serviços que rodam nele

  • Apache+PHP+Python
  • PostgreSQL
  • SQUID-cache
  • SSH
  • Bind (Named) (DNS)

Coisas simples, como podem ver ;)

Agora vem o pequeno detalhe! A distribuição escolhida! Slack sempreeeee!!!

Vamos deixar de lorota e começar a mostrar as configurações

Vamos começar pelo SSH, coisa que acho importantíssimo, afinal não tenho teclado, nem mouse na maquina!

Primeira coisa a se modificar no sshd_config (normalmente /etc/ssh/sshd_config – Configuração do servidor SSH)

PermitRootLogin no (Isso ajuda a não quebrarem logo a senha de root, não se esqueça também de tirar o pacote sudo e/ou desconfigura-lo todo)

PermitLogin no (Porquê isso? Simples! Isso tira o login via senha digitavel, substitua esse tipo de login por login via chaves, é bem melhor!)

Port 22 -> Muda a porta para outra, 256, 897, qualquer número, só para não termos um exploit logo de cara =)

Com isso o servidor SSH já está seguro, dai você se pergunta e como posso logar como root? Orás, “su -”, utiliza um usuário normal para se logar e digita su -, só isso!

Vamos passar para o SQUID, uma coisa que tu tem que pensar, vai permitir o acesso ao SQUID via rede externa?

  • Vai: Então coloca uma ACL para que peça requisição de nome de usuário e senha, isso para que pessoas indesejadas não usem seu SQUID
  • Não: Então só bloqueia tudo mesmo!

Squid é coisa simples mesmo, então deixa ele ai, ele já é chato com o acesso mesmo =P

DNS, edita o /etc/hosts.allow e permite somente o acesso do DNS na rede interna, isso garante que não se exploitem o servidor de DNS!

Apache, se você quer que seu Apache seja só na Intranet, modifica ele e manda fazer Listen para o seu hostname, só isso, caso contrário, faz o cadastro no DynDNS, No-ip, qualquer coisa e manda ele fazer listen para esses hostnames =)

PostgreSQL, libera só o acesso na rede local, se for o caso somente no servidor mesmo, é melhor

PHP: Deixa em safe_mode, usa a opção do safe_mode para liberar o acesso aos arquivos do mesmo grupo, caso contrário, só o mesmo dono pode fazer isso, o que é chato em certos ambientes ¬¬’

Se tu vai usar o servidor de e-mails interno, recomendo deixar o acesso somente na rede local, não exponha tudo a Internet =)

Resumindo: Com um pouquinho de trabalho você pode configurar um servidor até que seguro facilmente :)

Abraços!

Posted by Otávio Souza on Maio 31st, 2008 No Comments

Tutorial de C++, Parte 3, POO

Olá pessoas, depois de muito tempo sem um bom artigo sobre C++ aqui, retornei, dessa vez irei explicar o que é POO (Programação Orientada a Objetos) e como podemos fazer POO em C++ ;)

Vamos ao conteudo:

Definição (Retirado da Wikipedia):

“A orientação a objetos, também conhecida como Programação Orientada a Objetos (POO) ou ainda em inglês Object-Oriented Programming (OOP) é um paradigma de análise, projeto e programaçãosoftware baseado na composição e interação entre diversas unidades de software chamadas de objetos. de sistemas de

Na programação orientada a objetos, implementa-se um conjunto de classes que definem os objetos presentes no sistema de software. Cada classe determina o comportamento (definidos nos métodos) e estados possíveis (atributos) de seus objetos, assim como o relacionamento com outros objetos.”

Bom, depois desse conceito básico de POO, vamos ao exemplo em si ;)

Exemplo:

Criação de uma classe:

 class NomeDaClasse {

 public:

NomeDaClasse(); //Esse daqui é o construtor

~NomeDaClasse(); //Esse daqui é destrutor

tipoDeRetorno nomeDaFunção(tipo parametro); //Função arbitrária publica

private:

tipoDeRetorno nomeDaFunção(tipo parametro); //Função arbitrária privada

protected:

tipoDeRetorno nomeDaFunção(tipo parametro); //Função arbitrária protegida

};

Explicações:

  • O tipo public define que as funções ali internas serão acessadas por qualquer um, seja dentro da classe, seja fora dela
  • O tipo private define que as funções só poderão ser acessadas pelos elementos da classe ou pelos “amigos” (friend class)
  • O tipo protected define funções que podem ser acessadas pelos membros da classe e as classes que a inheritam, ninguém mais pode acessa.

O código para poder inicializar a classe é “Classe* variavel = new Classe();”
Podendo também criar uma cópia na memória assim: “Classe variavel = Classe();”
Resumindo: Classes são criadas com o class …, para poder inheritar outras classes faz-se assim: “class Classe : public OutraClasse, MaisOutraClasse,…”, as variáveis podem ser estaticas ou dinamicas, só depende de você ;)

Abraços && Até a próxima :D

Posted by Otávio Souza on Maio 3rd, 2008 No Comments

C++, Parte 2 – Includes!

Vamos à segunda parte do tutorial de C++, as includes!

Mas o que são includes? Includes são arquivos com definições de funções, structs, classes, tipos e tudo mais ;)

É neles que você coloca as definições, sem precisar colocar o código de cada função.

Ex de include:

#include <iostream> //Um include pode incluir outras coisas ;) 
//Definição de classe
class Teste {
	public:
		Teste() ;
}
//Definição de função
void funcao(int parametro);

E por ai vai :D

Alguns includes com suas características:

  • iostream, ifstream, ofstream: Classe para arquivos
  • vector, Classe para vetores
  • string, Classe para strings

Com esses dai já dá pra fazer algo de util.

Alguns links interessantes:

  • http://www.cplusplus.com
  • http://pt.wikipedia.org/wiki/C++

Posted by Otávio Souza on Março 29th, 2008 No Comments