Dica -Twitter Bootstrap
O que é?
O Twitter Bootstrap é uma toolkit voltada para desenvolvimento rápido e prático de aplicações e websites. Ele já vem com tipografia definida, botões, formulários, tabelas, grids, navegação e muito mais.
Suporte
- Última versão do Safari
- Última versão do Chrome
- Firefox 4++
- Internet Explorer 7+
- Opera 11+
Work with Less
O Bootstrap foi construído para ser usado também com o Preboot que funciona em conjunto com o Less, um CSS preprocessor. Veja mais detalhes no site do bootrap.
Javascript Plugins
Além do CSS toolkit o Bootstrap também fornece diversos plugins feitos usando jQuery com recursos bem legais. Dê uma olhada nos plugins no site do bootstrap.
Recomendo à todos que dêem uma olhada e conheçam o site do projeto que na minha opinião é muito bom.
Logo menos posto casos de uso aqui.
Integrando Doctrine 2.1 com CodeIgniter 2.1.0
Requisitos:
- PHP 5.3+
- Apache rewrite_module habilitado
- Short_open_tag habilitado no PHP.
Downloads:
Extraindo o CodeIgniter:
Após o download do Doctrine/CodeIgniter e ter verificado as configurações de seu PHP e Apache, extraia o CodeIgniter em sua pasta /www/ como em uma instalação qualquer.
Em seguida faça o download do Doctrine e siga os passos à seguir.
Extraindo o Doctrine:
Assim que terminar o download do package do Doctrine, o arquivo virá com a basicamente essa estrutura de diretórios:
Você deve copiar o diretório “Doctrine” inteiro para a pasta /application/libraries/ do seu CodeIgniter. Resultando em algo parecido com isto:
Criando o plugin Doctrine:
Após ter feito a extração dos packages, será necessário criar um novo plugin para que possa ser carregado dentro do CodeIgniter.
Crie um novo arquivo PHP chamado Doctrine.php e salve ele dentro da pasta /application/libraries/Doctrine.php com o seguinte conteúdo.
<?php
use Doctrine\Common\ClassLoader,
Doctrine\ORM\Configuration,
Doctrine\ORM\EntityManager,
Doctrine\Common\Cache\ArrayCache,
Doctrine\DBAL\Logging\EchoSqlLogger;
class Doctrine {
public $em = null;
public function __construct()
{
// carrega as configurações do db do ci
require_once APPPATH.'config/database.php';
require_once APPPATH.'libraries/Doctrine/Common/ClassLoader.php';
$doctrineClassLoader = new ClassLoader('Doctrine', APPPATH.'libraries');
$doctrineClassLoader->register();
$entitiesClassLoader = new ClassLoader('models', rtrim(APPPATH, '/'));
$entitiesClassLoader->register();
$proxiesClassLoader = new ClassLoader('Proxies', APPPATH.'models/proxies');
$proxiesClassLoader->register();
// configurando os memcaches
$config = new Configuration;
$cache = new ArrayCache;
$config->setMetadataCacheImpl($cache);
$config->setQueryCacheImpl($cache);
// carregando os drivers
$Doctrine_AnnotationReader = new \Doctrine\Common\Annotations\AnnotationReader($cache);
$Doctrine_AnnotationReader->setDefaultAnnotationNamespace('Doctrine\ORM\Mapping\\');
$driver = new \Doctrine\ORM\Mapping\Driver\AnnotationDriver($Doctrine_AnnotationReader, APPPATH.'models');
$config->setMetadataDriverImpl($driver);
// configuração de proxy
$config->setProxyDir(APPPATH.'/models/proxies');
$config->setProxyNamespace('Proxies');
$config->setAutoGenerateProxyClasses( TRUE );
// Database connection information
$connectionOptions = array(
'driver' => 'pdo_mysql',
'user' => $db['default']['username'],
'password' => $db['default']['password'],
'host' => $db['default']['hostname'],
'dbname' => $db['default']['database']
);
// cria EntityManager
$this->em = EntityManager::create($connectionOptions, $config);
}
}
OH YEAHHH!
Pronto. Seu Doctrine está integrado ao CodeIgniter.
Para usar os recursos como o EntityManager e outros, basta carregar a library dentro do seu controller:
$this->load->library("doctrine");
E em seguinda chamar o EntityManager:
$em = $this->doctrine->em;
Observações:
Existem também outras maneiras de se fazer essa integração, escolhi essa forma pois foi achei ela mais prática e simples. É possível também carregar o Doctrine no autoload do CI, como fazemos com qualquer outro plugin.
Algo interessante a se fazer também é criar sua própria extensão da classe Controller e já deixar o EntityManager pré carregado, pois ter que ficar usando toda vez “$em = $this->doctrine->em;” acaba sendo meio incômodo.
Sem mais, agora é só alegria.
GridFS no MongoDB
Segunda-feira escrevi um post no NoSQL.com.br falando sobre o MongoDB e sobre a classe GridFS.
http://www.nosqlbr.com.br/gridfs-no-mongodb.html
Espero que gostem
O NoSQL MongoDB
Ao desenvolver o escopo de um novo projeto recentemente, dei de topo com um problema que ultimamente tem causado náuseas ha vários desenvolvedores: Como tornar minha aplicação com um enorme volume de dados e acessos, escalável e confiável?
E foi em busca desse “sonho” que acabei me interessando por bancos de dados NoSQL. Entre as diversas opções e tipos de banco NoSQL acabei me interessando cada vez mais pelo MongoDB, que é document-oriented database. Achei fantástico principalmente sua facilidade de uso e velocidade. Parti então para os testes e fiquei ainda mais surpreso. 750 mil transações em 0.9 segundos? É possível isso?
Sim, é perfeitamente possível. Sua estrutura permite gerir com grande eficáncia volumes de dados monstruosos e com uma velocidade impressionante.
Como ainda tive muito pouco tempo para criar uma aplicação completa usando o MongoDB e ir afundo em seus recursos, limito meu post até aqui, mas com base em alguns anos de experiência e muitos socos no estômago afirmo “esses tais NoSQL vieram mesmo pra botar pra quebrar”.
Agradecimentos especiais à toda comunidade NoSQL BR, @osuissa e todos que contribuíram e contribuem atualmente para popularizar os bancos NoSQL. E em breve vou criar mais conteúdo sobre os NoSQL.
Offline
Pessoal, peço desculpa à todos os visitantes do blog pelos links quebrados (praticamente todos). Mas é que infelizmente ando sem tempo de consertá-los e também de postar coisas novas no blog.
Mas eu ainda tenho esperanças de arranjar um tempo!
Manipulando classes com jQuery
Neste breve post vou ensinar como utilizar a jQuery para manipular várias classes ao mesmo tempo.
Mexendo em todas ao mesmo tempo, por exemplo colocando uma cor de fundo em cada elemento com a classe “minha_classe”.
$(".minha_classe").css({ backgroundColor: "#000" });
Agora, suponha que temos um menu qualquer do site com os links home e contato.
E queremos que a cada vez que o usuário clicar em dos links, troque-se a cor do mesmo, e ao mesmo tempo, quando o usuário clicar no outro, este volte ao normal e a cor do fundo do outro seja modificada.
$(".classeDoLink").click(
function(){
// aqui, voltamos as cores de fundos de TODOS links para
// para a cor padrão, que é amarelo
$(".classeDoLink").css({ backgroundColor:"yellow" })
// agora vamos pegar somente o link que realizou o evento
// para que somente ele fique com a cor vermelha
$(this).css({ backgroundColor: "red" })
}
)
Market Share, Agosto de 2008
Browsers: (top 5)
1- I.E. 7 (46,79%) {-}
2- I.E. 6 (25,17%) {-}
3- Firefox 2.0 (11,51%) {-}
4- Firefox 3.0 (7,74%) {++}
5- Safari 3.1 (4,80%) {+}
Global Search Engines: (top 5)
1- Google (79,03%) {+}
2- Yahoo (11,58%) {-}
3- MSN (3,46%) {+}
4- AOL (2,27%) {-}
5- MS. Live Search (1,54%) {-}
Global Operating Systems: (top 5)
1- Windows (90,66%) {-}
2- Mac (7,86%) {+}
3- Linux (0,93%) {+}
4- iPhone (0,30%) {+}
5- Playstation (0,04%) {=}
Legenda:
{+} => Subiu até 1%*
{++} => Subiu em 2% ou mais*
{-} => Caiu em até 1%*
{–} => Caiu em 2% ou mais*
{=} => Permaneceu no mesmo patamar*
*em relação à pesquisa do mês anterior
Market Share, Julho de 2008
Pesquisa Market Share realizada no mês de julho, com acessos mundiais.
Browsers: (top 5)
1- Internet Explorer 7.0 (47,10%)
2- Internet Explorer 6.0 (25,74%)
3- Firefox 2 (13,02%)
4- Firefox 3 (5,67%)
5- Safari 3.1 (4,39%)
Representando no total 95,92% dos acessos.
Search Engines Global: (top 5)
1- Google (78,16%)
2- Yahoo (12,03%)
3- MSN (2,86%)
4- AOL (2,45%)
5- Microsoft Live Search (2,34%)
Representando no total 97,84% das buscas realizadas na internet.
Operation Systems: (top 5)
1- Windows (91,02%)
2- Mac (7,76%)
3- Linux (0,82%)
4- iPhone (0,19%)
5- Playstation (0,04%)
Representando no total 99,83% dos acessos à internet
Um item interessante a se observar, é que nesta última pesquisa o engine search da AOL acabou superando o Live Search, da Microsoft e assumindo a quarta posição no ranking mundial. Pois é Microsoft, nem pagando (saiba o porquê aqui, quando a Microsoft conseguir voltar o site ao ar ;)
À procura de um nerd?
Belo texto retirado do Nerd fêmea.
Excelente texto Viviane, vale a pena a leitura. Segue o link.
Obrigado pela contribuição à nossa cultura. =)
Postado ao som de: Avenged Sevenfold – Afterlife
Pensamento #2
Bom, estive meio afastado do blog ultimamente por diversos motivos. Um deles (e o pior) é a falta de tempo, ou talvez a má administração dele, isso eu ainda não sei.
Enfim, fica um pensamento.
Pouco conhecimento faz com que as pessoas se sintam orgulhosas. Muito conhecimento, que se sintam humildes.
Leonardo da Vinci



