sábado, 23 de fevereiro de 2013

GitWeb + Dav

Salve galera,

Não vou fazer um tutorial sobre como instalar o Gitweb com o módulo Dav no Apache, até por que tem um monte de bons tutorias por ai, como esse:

http://ballen.co.uk/2012/07/23/installing-a-git-server-using-apache-webdav-on-ubuntu-server-12-04/

Mas o lance, é que nunca funciona como queremos ou imaginamos =/ Então, aqui vai algumas dicas:


O usuário dono da pasta onde estão armazonados os repositórios deve ser www-data:

chown www-data.www-data /var/www/repository -R

Outra coisa que não consegui, foi criar um repositório fora do diretório do Apache /var/www, mesmo dando todas as permissões do mundo pro diretório. Então, recomendo que esse repositório fique dentro dos "domínios" do Apache, e que você controle a segurança da pasta através das diretivas do Apache.

Segue aqui os arquivos de configuração prontos:

/etc/gitweb.conf

 /etc/apache2/conf.d/git


 /etc/apache2/conf.d/gitweb


Um detalhe interessante na primeira imagem, o arquivo /etc/gitweb.conf é para configuração


@git_base_url_list = ('http://mydomain.com/git');

É a configuração que define a url que vai ser apresentada na pagina do repositório. Ou seja, para um repositório chamado system, ele vai mostrar:

URL http://mydomain.com/git/system

Para gear o arquivos de senhas do apache, o comando é:


sudo htpasswd  -c /etc/apache2/pass/gitpass user

Lembrando que o parametro -c é de create new file, e deve ser adicionado só na criação do primeiro usuário.

Acho são esses detalhes que sempre esqueço quando tenho que configurar um novo servidor de repositório, o que não é muito comum no meu dia-a-dia.

Até a próxima!

git error: Unable to find - Cannot obtain needed

Salve galera,

Já faz um certo tempo que eu vinha enfrentando alguns problemas com repositórios git no Linux quando acessados pelo Windows via http. Volta e meia eu me deparava com a seguinte mensagem:

error: Unable to find a47058d09b4ca436d65609758a9dba52235a75bd under http://mygitweb.com/git/myapp
Cannot obtain needed blob a47058d09b4ca436d65609758a9dba52235a75bd
while processing commit 041d57dd5bed9d6c75fe7cce944b2b2904ae3a62.
error: Fetch failed.

E por muito tempo, minha solução fou usar o protocolo ssh no lugar de http. Mas isso não me deixava satisfeito. Então, depois de muito "google" descobri um comando que resolvia meus problemas quando esse erro acontecia. Temos que entrar no repositório no servidor e executar o comando:

$ git gc

Depois de execurar, consegui fazer o clone w pull dos repositórios sem problemas. Esse comando executa uma limpeza na base do repositório:

fonte http://www.kernel.org/pub/software/scm/git/docs/git-gc.html
git-gc - Cleanup unnecessary files and optimize the local repository

Ou seja, é recomendado executar esse comando de vez em quando, seja no respositório no servidor ou no repositório local.

Até a próxima.

quinta-feira, 14 de fevereiro de 2013

Slackware + Placa de Videos

Salve galera,

Aqui dois comandos que ajudam a ver se a placa de video está sendo reconhecida e configurada corretamente no Slackware:


lspci | grep VGA #Mostra se a placa de video está sendo reconhecida


glxgears #Se a acelaração 3D estiver funcionando, vai abrir uma tela com uns desenhos 3D se movimentando


Só isso! flws

i386 architecture of input file is incompatible with i386:x86-64 output

Salve galera,

Aqui um problema apresentado ao usar o linker ld no slackware 64 bits.  Ao compilar uma programa Assembly:

nasm -f elf -g debug.asm 



E depois usar o ld para fazer a linkagem do código objeto para o executavel, como o seguinte comando:



ld -o debug debug.o

Recebemos a mensagem:

ld: i386 architecture of input file `debug.o' is incompatible with i386:x86-64 output

Para resolver, temos que informar pra qual processador será compilado. Como no meu caso, uso o Slackware 64 bits emulando 32 bits, informo:

ld -m elf_i386 -o  debug debug.o

E resolvido. Agora a linkagem funciona.

Até a próxima.

sexta-feira, 8 de fevereiro de 2013

Na Medida - Ambientes Planejados

Salve galera,

Nesse post venho divulgar um aplicativo muito interessante e diria até que inovador, pois não se encontra muita coisa do tipo para esse fim. 

O aplicativo Na Medida destina-se a empresas ou profissionais autônomos que trabalham com ambientes planejados, ou móveis so medida. Seu recuro mais interessante é a possibilidade de, através de fotos tiradas de um ambiente em seu tablet, marcar suas medidas como se um rascunho fosse, e também fazer "montagens" com imagens de objetos (móveis) para conseguir uma real visão de espaço e disposição dos objetos dentro de um ambiente. 

Além do seu principal recurso, você ainda conta com o gerenciamento de projetos, onde pode cadastrar seus clientes, projetos, ambientes e anexos de documentos digitais. O aplicativo é composto por uma versão para Tabltes, compativel com Android 3.0 ou superior, e por uma versão Web, onde de qualquer lugar você pode acessar o sistema e facilmente fazer o gerenciamento dos clientes e projetos. Você ainda pode disponibilizar acesso ao seu cliente, que através da Web pode visualizar os recursos de seus projetos, como imagens e documentos. Segue a lista completa de recursos do aplicativo: 
  • Objetos podem ser adicionados no ambiente para você poder ter uma ideia de como ele ficará. 
  • Integração com google maps para localização de clientes.
  • Sincronização de dados entre aplicativo móvel e web. 
  • Controle de clientes, projetos, ambientes, objetos e imagens dos ambientes. 
  • Funciona off-Line. 
  • Documentos podem ser anexados aos projetos. 
  • Os clientes podem visualizar seus projetos, imagens e documentos. 
  • As imagens podem ser enviadas diretamente por e-mail sem a necessidade da criação de um projeto. 

Você pode baixar gratuítamente no Google Play -Na Medida uma versão de demonstração, que pode ser usada com recursos limitados no fim do periôdo de 15 dias. Após baixar a versão para Tablet, você pode solicitar uma versão de demonstração para ter acesso completo a aplicação Web, acessando www.mobilemind.com.br/namedida.

Nesse link Na Medida - Primeiros Passos você pode encontrar informações tecnicas e explicações de uso do aplicativo.

 Alguns dos beneficios que estão escondidos atrás da ideia do aplicativo Na Medida são:
  1. Maior credibilidade e segurança na entrega de seus projetos, pois uma imagem vale mais que mil palavras.
  2. A tecnologia chama a atenção e o interesse de quem olha.
  3. A tecnologia deixa seu cliente mais perto de sua empresa.

Certamente esse tipo de tecnologia traz credibilidade e um poderoso diferencial competitivo para as empresas, que passam a se destacar com sua marca inovadora, despertando a atenção do mercado em que atuam. 

Com isso podemos concluír que o custo em se ter uma aplicativo desse nível é insignificante se comparado aos seus benefícios, por isso, solicite sua versão de demonstração ou entre em contato com a Mobile Mind para obter mais informações, acessadno www.mobilemind.com.br 

Por hora é só pessoal, até a próxima!


quarta-feira, 6 de fevereiro de 2013

Custom Paginator in Grails

Salve galera,

Nesse poste irei disponibilizar o código de uma TagLib de paginação customizada, que fiz para suprir minhas necessidades. O código está comentado e é de facil customização.

Obs: Para esse exemplo usei o framework de css fundation. Link http://foundation.zurb.com

Essa é a tag lib:


package br.com.mobilemind

class PaginatorTagLib{
 
 private static final log = org.apache.commons.logging.LogFactory.getLog(this)

 def paginator = { attrs, body -> 


  def max = request['max'] ?: 10
  def offset = request['offset'] ?: 0
  def totalCount = request['totalCount'] ?: 0
  def url = request.forwardURI + "?uuid=$params.uuid" + "&max=$max"


  if(totalCount > max){ // exibe apenas se tiver mais que uma página
   def html = "
" html += "
    " if(offset == 0){ //back link html += '
  • «
  • ' }else{ def backUrl = url + "&offset=" + (offset - max) html += "
  • «
  • " } int rows = totalCount / max // contagem de paginas def mod = totalCount % max // resto da contagem paginas def begin = false, end = false //se unavailable já foi inserido no fim ou no início def availableMax = 5 // maximo de paginas exibida. Se exceder, é mostrado ...(unavailable) if(mod > 0){ rows++ } for(c in (0.. availableMax){ if(currentOffset > (offset + (max * availableMax))) { if(!end){ html += '
  • ' } end = true continue } if(currentOffset < (offset - (max * availableMax))) { if(!begin){ html += '
  • ' } begin = true continue } } def currentUrl = url + "&offset=$currentOffset" if(currentOffset == offset){ html += "
  • ${c}
  • " }else{ html += "
  • ${c}
  • " } } if((offset + max) >= totalCount){ // next link html += '
  • »
  • ' }else{ def nextUrl = url + "&offset=" + (offset + max) html += "
  • »
  • " } html += "
" html += "
" out << html } } }

Para usar:

    

O controller deve retornar os parametros para a taglib, como:



def list(){
   def max = params.int('max') ?: 10
   def offset = params.int('offset') ?: 0
   def items = Produto.findAll([max: max, offset: offset])
   def totalCount = items.totalCount
   [items: items, max: max, offset: offset, totalCount: totalCount]
}

Espero que seja útil para alguém como foi pra mim.

Até a próxima!

terça-feira, 5 de fevereiro de 2013

Slackware 64 + Firefox + FlashPlayer

Salve galera,

Nessa breve postagem vamos ver como atualizar o firefox e instalar o plugin do flash no Slackware 64 bits.

Sempre que instalamos a versão 64 bits do Slackware temos que atualizar o firefox manualmente, pois não sei por que carcas d'agua, ele vem com uma versão antiga e que não parece saber disso, logo, não atualiza automáticamente.

Bom, depois da explicação vamos lá.

Para remover a versão antiga, execute:


ls /var/log/packages/ | grep fire


Pegue a saída do comando e passe como parametro para o removepgk. Vai ficar algo como:

removepkg mozilla-firefox-15.0.1-x86_64-1


Para baixar uma versão atualizada do firefox compativel com o Slackware 64 bits, você deve procurar em:

ftp://ftp.slackware.com/pub/slackware/

Entrando nesse link, você terá que escolher sua versão do Slackware. No meu caso, é a versão 14, então o link é:

ftp://ftp.slackware.com/pub/slackware/slackware64-14.0/slackware64/xap/mozilla-firefox-15.0.1-x86_64-1.txz

Para instalar, usamos o tradicional installpkg. Algo mais ou menos assim:


installpkg mozilla-firefox-15.0.1-x86_64-1


Ok, já está instalado! Agora vamos instalar o plugin do flash. No link abaixo você deve pegar a versão para seu SO:

http://taper.alienbase.nl/mirrors/people/alien/slackbuilds/flashplayer-plugin/pkg64/

No meu caso ficou:

installpkg flashplayer-plugin-11.2.202.261-x86_64-1alien.txz


Agora você já pode ver seus videos no youtube ;)

Até a próxima!