segunda-feira, 13 de fevereiro de 2017

Node.js no Ubuntu 16.04LTS sem sudo

O  Node.js vem com o npm que é um gestor de pacotes para instalar e publicar pacotes. Até onde eu sei qualquer um pode publicar pacotes sem grandes restrições. Para instalar um pacote npm no modo "global" é necessário usar o sudo. Isso levanta algumas dúvidas a cerca da segurança.
Os pacotes mais utilizados normalmente não há problema porque há mais pessoas a ver o código e facilmente se detectava alguma coisa fora do normal. Alem disso os pacotes mais populares são normalmente desenvolvidos por programadores com uma boa reputação.

Para evitar de instalar pacotes npm com o sudo em "modo global" é possível fazer uma instalação manual do Node.js na pasta do "USER".

Primeiro é preciso baixar e descompactar o Node.js na pasta do "USER". https://nodejs.org

Depois de extrair o pacote node-vxxx-linux.tar.xz temos de exportar a localização do node para o .bashrc

CTRL+ALT+T para abrir uma linha de comando e para editar o .bashrc utilize o comando:

gedit .bashrc

Ou utilize o editor de texto de sua preferencia.
No fim do arquivo adicione as seguintes linhas:


export PATH=~/node-v.xxx-linux/bin:$PATH
export PATH=~/npm-global/bin:$PATH

Nota: Não esqueça de trocar o xxx pelo numero da versão do Node.js

Agora crie a pasta .npm-global onde irá ser instalado os pacotes npm.

mkdir ~/.npm-global

Agora é só configurar o npm para utilizar a pasta criada.

npm config set prefix '~/.npm-global'

O Node.js está pronto a ser utilizado e os pacotes instalados no modo global já não precisam de premisão do "sudo".




Programas em ingles numa instalação pt-BR ou pt-PT

Tem instalado o Ubuntu em pt_PT ou pt_BR e não gosta da tradução para português de algum programa?

Por exemplo gostava de usar o Gimp em en_US?
Abra um terminal Ctrl+Alt+T e execute o comando:

LANGUAGE=en_US gimp

Exemplo para o inkscape.

LANGUAGE=en_US inkscape

Para que estas alterações fiquem guardadas basta adicionar um alias no .bashrc
Abra o .bashrc no editor de texto gedit.

gedit .bashrc

Adicione no final o seguinte:

alias inkscape='LANGUAGE=en_US inkscape'


terça-feira, 12 de abril de 2016

Imprimir declaração de IRS no Ubuntu 16.04

Já alguma vez tentou usar o botão Imprimir na aplicação da AT no Linux?
Não funciona. E porque?

A Aplicação da AT  invoca um comando no sistema para imprimir documentos através do browser.
Em "erro.log" é possível ver a mensagem de erro.

"Could not invoke browser, command=netscape -remote openURL(http://www.portaldasfinancas.gov.pt/)"

Netscape? Segundo a Wikipedia o Netscape foi descontinuado desde 2008. E mesmo que ainda tivesse suporte nada garante que o browser A, B ou C está instalado no sistema.

O ideal seria invocar o browser assim:
xdg-open http://www.portaldasfinancas.gov.pt/

A vantagem de usar o xdg-open é que ele abre sempre o programa "default" instalado no sistema. Seja ele qual for, Firefox, Chrome, Icewasel, Opera etc...

Outro problema e que os "documentos" em html que a aplicação da AT manda imprimir não tem codificação unicode utf-8. Isso faz com que apareçam caracteres estranhos no Linux.

Para "resolver" estes dois problemas comece por criar uma pasta como o nome de bin dentro da pasta do utilizador. Não precisa do sudo.

mkdir -p ~/bin

Dentro da pasta bin crie um shell script com o seguinte conteúdo:

#!/bin/bash
#Tweak para a aplicação de IRS da AT "imprimir" documentos

URL=`echo $2 | cut -d\( -f2 | cut -d\) -f1`

#Resolvendo o problema da codificação de caracteres
URL2=`echo $URL | cut -d/ -f3-`
[ `echo $URL | grep 'file:////'` ] && [ `echo $URL | grep '.html'` ] && sed -i '/<head>/a <meta http-equiv="Content-Type" content="text/html;charset=utf-8">' $URL2

xdg-open $URL

exit

Grave com o nome de netscape dentro da pasta bin. Não se esqueça que o nome do shell script tem de ser "netscape" sem aspas.
De permissão para executar o ficheiro.


chmod +x ~/bin/netscape

Esta "solução" é um tweak, para que a aplicação da AT chame este script que vai abrir o browser "default" e utiliza o segundo parâmetro como url. Além disso o script utiliza o comando sed para inserir a codificação utf-8, caso se trate de um ficheiro html. Se for um pdf o xdg-open encarrega-se de abrir o programa de leitura de pdf default. Depois e só utilizar o botão imprimir desse programa.
A verdadeira solução era a AT actualizar a aplicação do IRS passando a utilizar codificação unicode utf-8 nos "documentos" em html que manda imprimir. e utilizar o xdg-open.

segunda-feira, 22 de fevereiro de 2016

How to try Unity8 (xenial) in "live session mode"

1 - Open a terminal in your ubuntu "live session"
ctrl + alt + t

2 - Define password for "ubuntu" user (we need a password to logout, and login again in "live session" mode).

passwd

3 - Add repository multiverse and install the package unity8-desktop-session-mir

sudo apt-add-repository multiverse

sudo apt-get update && sudo apt-get dist-upgrade

sudo apt-get install unity8-desktop-session-mir

4 - Logout

5 - At login screen choose "unity8" session and login as user "ubuntu", with password defined in the step 2.

If doesn't work, press...
ctrl + alt + F1

Login in terminal as user "ubuntu"
then...

sudo service lightdm restart

At login screen choose "ubuntu" user, and enter password define in the step 2.


Have fun :)

 Tip:

quinta-feira, 14 de janeiro de 2016

Como autocompletar código no editor de texto geany

Dica simples para o editor de texto geany.
Exemplo para auto completar "tags" da Framework do cocos2d-x .

Entre na pasta principal do cocos2d-x e procure o arquivo "header" principal, que no caso do cocos2d-x e o cocos2d.h

Abra um terminal e execute o comando...

geany -g cocos2d-x.cpp.tags cocos2d.h

cocos2d-x.cpp.tags foi o nome que eu escolhi para o arquivo de configuração, ma fica ao seu critério.

Agora guarde o cocos2d-x.cpp.tags dentro da pasta...

~./config/geany/tags

mv cocos2d-x.cpp.tags ~./config/geany/tags

E pronto a sua produtividade vai aumentar :)