Tagged: tutorial RSS Toggle Comment Threads | Keyboard Shortcuts

  • davi 1:36 pm on December 2, 2011 Permalink | Reply
    Tags: , , , tutorial,   

    Trabalhando com contadores utilizando o ActiveRecord no Yii Framework 

    Vamos supor, por exemplo, que você está desenvolvendo um blog ou algum outro tipo de CMS e quer registrar o número de vezes que cada post foi acessado (talvez para mostrar uma lista dos mais visitados).

    A maneira mais fácil de fazer isso é adicionar uma coluna na tabela de posts, que será utilizada para armazenar o número de visitas para aquele item. Cada vez que um post for exibido o valor dessa coluna será aumentado em 1. O código para fazer isso é algo parecido com isso:

    public function actionView($id) {
        $post = Post::model()->findByPk($id);
        $post->visitas += 1;
        $post->save();
        $this->render('view', array('post' => $post));
    }
    

    Essa abordagem tem dois problemas. Queremos atualizar apenas a coluna visitas, mas todo o registro do post será atualizado. Além disse, caso o argumento false não seja passado para o método save, todo o processo de validação será executado.

    Desde a versão 1.1.8, a classe CActiveRecord tem um método que pode nos ajudar com isso. Trata-se do método CActiveRecord::saveCounters() e a sua utilização é muito simples:

    public function actionView($id) {
        $post = Post::model()->findByPk($id);
        $post->saveCounters(array('visitas'=>1));
        $this->render('view', array('post' => $post));
    }
    

    Com isso, somente a coluna visitas será atualizada e a validação não será disparada.

    Caso você ainda não utilize a versão 1.1.8, você pode utilizar o método CActiveRecord::updateCounters():

    public function actionView($id) {
        $post = Post::model()->findByPk($id);
        $post->updateCounters(
            array('visitas'=>1),
            array('condition' => "id = :id"),
            array(':id' => $this->id),
        );
        $this->render('view', array('post' => $post));
    }
    

    O trecho de código acima faz exatamente o mesmo que o saveCounters. Note que o método updateCounters tem dois parâmetros a mais. Depois de informar a coluna utilizada para contar, é preciso passar uma condição que diz qual registro deverá ser atualizado. Se você utilizou algum parâmetro nessa condição (como o “:id”), você também deve informar o valor dele, utilizando o terceiro argumento do método.

    Importante: Se você não informar nenhuma condição, todos os registros serão atualizados.

     
  • davi 11:04 pm on December 1, 2011 Permalink | Reply
    Tags: , , tutorial,   

    Working with counters using the ActiveRecord in Yii Framework 

    Let’s say, for example, that you are developing a blog or some kind of CMS and you want to track the number of times each post was viewed (maybe to show a list of the most viewed ones).

    The easier way to do that is by adding a column to the post table, which will be used to store the number of visits of that item. Each time the post is displayed the value of this column will be increased by 1. The code for this would be something like:

    public function actionView($id) {
        $post = Post::model()->findByPk($id);
        $post->visits += 1;
        $post->save();
        $this->render('view', array('post' => $post));
    }
    

    We have two problems with this approach. All we want is to update the visits column, but the entire record will be updated. Also, if we didn’t pass the false argument to the save method, all the validation process will be executed.

    Since 1.1.8, the CActiveRecord class has a method that can help us with this task. It’s the CActiveRecord::saveCounters() method and its usage is pretty simple:

    public function actionView($id) {
        $post = Post::model()->findByPk($id);
        $post->saveCounters(array('visits'=>1));
        $this->render('view', array('post' => $post));
    }
    

    With this, only the visits column will be updated and the validation will not be triggered.

    If you’re not using the 1.1.8 yet, there’s the CActiveRecord::updateCounters() method:

    public function actionView($id) {
        $post = Post::model()->findByPk($id);
        $post->updateCounters(
            array('visits'=>1),
            array('condition' => "id = :id"),
            array(':id' => $this->id),
        );
        $this->render('view', array('post' => $post));
    }
    

    The piece of code above does exactly the same that saveCounters does. Note that updateCounters has two additional parameters. After the column used to count, we pass a condition to tell which record(s) should be updated. If you used any paramater in this condition (like the “:id”), you should pass the parameter value in the third argument of the method.

    Important: If you do not pass a condition, all records will be updated.

     
  • davi 12:05 am on March 31, 2010 Permalink | Reply
    Tags: backup, dropbox, incron, , rsync, tutorial   

    Backup simples com Incron+rsync+Dropbox 

    Eu ja perdi um HD cheio de coisas importantes. Foi assim que aprendi a importância do backup; o que não quer dizer que eu o faça.

    Contudo, recentemente o disco do meu notebook começou a dar sinais de que está agonizando. Na verdade, não sei se trata-se apenas de problemas no sistema de arquivos ou um falha de hardware iminente, mas os constantes erros me trouxeram más lembranças e me deixaram com medo.

    Desde a perda do primeiro HD, tenho procurado uma solução simples e eficiente para backups. Tenho pensando bastante em um NAS, com suporte a RAID ou um PC Mini-ITX. Enquanto o dinheiro não vem, e os erros aumentam, encontrei uma solução mais simples para o backup de meus arquivos, composta dos seguintes itens:

    (More …)

     
    • Eduardo 4:47 pm on December 23, 2011 Permalink

      Amigo,

      Gostei muito da sua dica, estou utilizando o GRSYNC pra sincronizar meu HD externo com a pasta do Dropbox, pois estou deixando todos meus arquivos lá!
      Será que tem como eu colocar no INCRONTAB pra toda vez que o HD externo for montado ele roda o comando sincronizando.
      Pois eu acho que se colocar da forma com esta no seu tutorial irei ter problema quando o HD externo não estiver plugado no sistema.

    • davi 9:51 pm on December 29, 2011 Permalink

      Não sei se o incron monitora algum evento relacionado a montagem de discos internos. No seu caso, eu criaria um script que seria executado pelo incron. Nesse script, antes de executar o grsync, basta verificar se o disco de destino está montado.

  • davi 12:57 am on November 12, 2009 Permalink | Reply
    Tags: , GO, , , tutorial   

    Let’s GO! (Instalando o GO) 

    O Google acaba de lançar sua própria linguagem de programação, a GO.

    Trata-se de uma liguagem “meio frankestein”, com uma sintaxe com características de C/C++, Python, Ruby e alguma outra coisa que eu não consigo identificar.

    GO é uma linguagem compilada e, até o momento, existem compiladores apenas para ambientes *nix. Acabo de instalar aqui no meu Xubuntu e o processo foi bastante simples.

    (More …)

     
    • Sardinha 8:43 am on November 12, 2009 Permalink

      tu ta cada dia mais nerd heim..rsrs

  • davi 1:02 am on March 8, 2009 Permalink | Reply
    Tags: , , notebook, tutorial   

    Instalando o Ubuntu 8.10 no notebook Kennex U50SA 

    Acabo de comprar um notebook. O modelo escolhido foi o Kennex U50SA.

    Como a Kennex, em um raro momento de sabedoria, não considera a troca de sistema operacional um procedimento que viola a garantia do produto, a primeira coisa que fiz foi remover o Insigne Linux que vem instalado no notebook e instalar o Windows 7 em dual boot com o Ubuntu 8.10.

    A instalação do Windows 7 ocorreu sem nenhum problema. Tudo funcionando perfeitamente nesse sistema. Ao término da instalação somente foi necessário instalar os drivers da placa de rede com e sem fio.

    Já para a instalação do Ubuntu são necessárias algumas configurações.

    (More …)

     
    • Marcelo 11:12 am on March 24, 2009 Permalink

      Cara, bem legal esse blog!!!
      Parabéns!

      Eu tenho o mesmo notebook que você, um U50SA, mas estou tendo probremas com os drivers, ao acionar o botao de volume de som o sistema trava, o wireless mostra um sinal inferior ao que deveria ser, e o drive de video não sei se é o mais adequado.

      Você teve estes problemas?

      Agradeço desde já!
      Até mais

    • davi 10:37 pm on March 24, 2009 Permalink

      Cara, o problema com os botões de volume eu notei essa semana. Dei uma fuçada por ai, mas ainda não encontrei uma solução.

      Sobre o wireless, ele realmente tem o sinal meio fraco. O mesmo acontece com minha placa wireless no desktop, onde também tenho o Ubuntu. Por isso acredito que talvez o problema seja software, provavelmente o driver. Estou tentando arrumar um tempinho pra fazer alguns testes e descobrir de onde vem o problema.

      Para o vídeo, eu instalei o fglrx que é o driver oficial da ATI. Aqui está funcionando sem problemas, com desempenho de acordo com o esperado. Estou com o Compiz ativado e os efeitos funcionam normalmente.

      []‘s

    • Marcelo 11:52 pm on March 25, 2009 Permalink

      Brigadão Davi!
      É que eu sou iniciante em linux e nao manjo nada.
      Mas assim que vc tiver alguma resposta para o botão e o wireless posta ai!
      Tem um monte de gente procurando por essas charadas nos foruns de Ubuntu.

      Vlw!

  • davi 12:22 pm on October 18, 2008 Permalink | Reply
    Tags: flash, , tutorial   

    Instalando o Flash Player 10 no Ubuntu 

    Durante essa semana, sem muito alarde, foi lançada a versão 10 do Flash Player, da Adobe. Entre as novidades disponíveis nesta versão está o tão esperado suporte à transparências no Linux.

    Além disto diversos outros recursos bem interessantes estão disponíveis. Entre eles:

    • Geração dinâmica de som;
    • Melhor utilização dos recursos da VGA;
    • Novo suporte a manipulação de 3D;
    • Suporte à novos filtros e efeitos visuais;
    • E vários outros.

    Para instalar a nova versão do player vá para a página de download do Flash Player 10, clicando aqui. Lá você encontra versões .deb, .tar.gz, .rpm, yum e apt. Durante as tentativas que fiz, a versão APT não estava funcionando, portanto nesse post falarei da instalação a partir do pacote .deb.

    Para baixar o pacote, selecione a versão .deb para Ubuntu 8.04+ e clique em “Concordar e Instalar Agora”. Ao fim do download, execute o arquivo baixado (install_flash_player_10_linux.deb). Será exibida a janela do instalador de pacotes. Para instalar basta clicar em “Instalar pacote”. Aguarde o término da instalação.

    Pronto, seu novo Flash Player está instalado. Após o término da instalação pode ser necessário reiniciar seu navegador.

    Para experimentar alguns dos novos recursos, fique com esses dois links:

    • Pixel Blender Viewer – Demo dos novos recursos de filtros e efeitos. Repare na capacidade de aplicar filtros em videos em tempo real.
    • Hobnox Audiotool – Uma poderosa ferramenta para criação e edição de audio da Hobnox. Edita, mixa e cria audio utilizando a nova API de som do Flash Player 10.
     
c
compose new post
j
next post/next comment
k
previous post/previous comment
r
reply
e
edit
o
show/hide comments
t
go to top
l
go to login
h
show/hide help
shift + esc
cancel