Planet.DebianPT.org

Graciano TorrãoMorcela com Ananás

Não é bem “Morcela com Ananás”, pois um dos ingredientes não mencionado faz a diferença.

Refiro-me às folhinhas de coentros, que para além do verde, dão uma acabamento delicioso a este trio.

Fruto do acaso, acabei com uma morcela nas mãos e, saltando os comentários mal intencionados que vos possam ter atravessado a mente, não sabia muito bem o que lhe fazer.

Nestas alturas, o Google está para o informático, tal com o bacalhau está para a cozinha Portuguesa, tal é o seu estatuto de fiel amigo.

Depois de iniciada a pesquisa, o mais difícil é escolher, e eu acabei por selecionar esta receita do Chefe João Pronto: http://lifestyle.sapo.pt/sabores/receitas/morcela-com-ananas?r=sabores.sapo.pt

Desde já aviso que é delicioso!

Enquanto faço a digestão, aproveito para deixar a recomendação.

morcelaComAnanasECoentros


ZACHARiASFlash Nexus Factory Images using Ubuntu

lollipop

Firstly install the needed apps, being:

sudo apt-get install android-tools-adb android-tools-fastboot

After that, turn developer options on and check if you have adb and fastboot working properly by typing

adb devices

adb

If you want to keep your apps and files, and having downloaded the image file extract it and find the flash-all.sh file and open it. Go to the bottom of the file and delete -w and save the file.
If you want to completely wipe your device, skip this step.
-w

Now open the terminal on the folder containing the files and type:

./flash-all.sh

Your device will now be flashed

flashing

rebooting

Now your nexus device, is running latest android version.
kudos


Filed under: Android, Linux, Tutorials

ZACHARiASUBUNTU 14.04 LTS | POST INSTALL – part II

trusty

Now, after installing my software of choice, I’m gonna make my experience as smooth and optimal for me.

THIS IS A WiP. So it will be updated according to my need, laziness and findings.

1. Disable Guest Session uppon login screen
To achieve this, one needs to edit the lightdm config file. open your terminal and type:

$ sudo gedit /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf

Now add the following line

allow-guest=false

2. Remove that overlay scrollbar

I simply dont like that overlay bar. It sucks for me. And in elementary, it’s only enable for certain things. so here’s how to completely remove it.

Type this in the terminal and for changes to take efect, just logout and login.

$ sudo apt-get remove scrollbar*

NOTE: by uninstalling the scrollbar, unity-tweak-tool will not work!

3. Configure menubars
Just do as you please.

I turned this

appearance_1

into this

appearance_2

4. Install Numix Theme and Icons

I really like the Numix theming. I really think it’s clean and sharp and well designed. And I do like how it makes ubuntu experience a whole lot better. So let’s get to it.

Let’s add the numix ppa, since it’s the easiest way to have it

sudo add-apt-repository ppa:numix/ppa

Now, let’s update the sources and install that lovely theme vodoo

sudo apt-get update

Fisrt the icon sets

sudo apt-get install numix-icon-theme \
numix-icon-theme-circle numix-icon-theme-bevel

then the GTK theme

sudo apt-get install numix-gtk-theme

This will install al the available numix wallpapers

sudo apt-get install numix-wallpaper*

5. Theming control and stuff

For more control of your dash and theming, I prefer using Unsettings and Gnome Tweak Tool, since after removing scrollbar we can’t use unity-tweak-tool. I’ve also installed Gnome Tweak Tool since Unsettings doesn’t detect numix theming, for some strange reason.

sudo add-apt-repository ppa:diesch/testing
sudo apt-get update
sudo apt-get install unsettings && sudo apt-get install gnome-tweak-tool

6. Edit your dock

This will facilitate a lot your usability. Choose wisely when cleaning your stuff and organizing it. I usually organize it in groups

a) web: browser(s)
b) IM stuff: irc client and pidgin
c) p2p stuff: amule and or torrent client
d) music player
e) handy stuff: terminal and file manager

7. Remove unwanted ubuntu stuff (optional)
I don’t like/use the e-mail application thunderbird, hell, I dont even use Ubuntu’s Software manager. So let’s remove it.

remove thunderbird

sudo apt-get remove thunderbird*

software center

sudo apt-get remove software-center \
&& sudo apt-get --purge remove software-center*

software updater

sudo apt-get remove update-notifier

amazon

sudo apt-get remove unity-webapps-common* \
&& sudo apt-get --purge remove unity-webapps-common*

Filed under: Linux, Tutorials

ZACHARiASUbuntu 14.04 LTS | Post Install – part I

buntu1404

First things first: you’ll need to update you’re software sources. Feel free to copy mine, for the time being. Don’t forget to update the mirrors as close to your location as you can.

Now, let’s begin…

Flash, java & git

$ sudo apt-get install openjdk-7-jre icedtea-7-jre-jamvm \
gsfonts gsfonts-x11 flashplugin-installer git git-core

TrueType Fonts

eula

$ sudo apt-get install ttf-mscorefonts-installer

Extra suppport for compressing and decompressing files

archive

$ sudo apt-get install unace rar unrar zip unzip p7zip p7zip-full \
p7zip-rar sharutils uudeview arj cabextract

Multimedia

$ sudo apt-get install libbluray-bdj libmad0 mpeg2dec mpegdemux \
libmpeg3-1 libmpeg2-4 liba52-0.7.4 libquicktime2 libmp4v2-2 faad \
lame flac mpeg3-utils icedax vlc

Now note, that w64codecs and libdvdcss2 where only present on medibuntu repository, which has ceased to exist. So I suggest using debian’s multimedia repo for installing these packages.

Add this line to your souce.list file…

deb http://www.deb-multimedia.org jessie main non-free

…and install the packages

$ sudo apt-get update && sudo apt-get install w64codecs libdvdcss2

You’ll get a warning if you want to install it from untrusted sources, just say yes. after that just remove the above mentioned line from your repos, or jus add a # to the beggining of it.

BTW: DEBIAN <3

Internet stuff
Some p2p goodness and Chromium

chromium

Firstly, the p2p goodies and ftp support

$ sudo apt-get install transmission amule filezilla

Then install Chromium

sudo apt-get install chromium-browser


IM Stuff

$ sudo apt-get install pidgin-data pidgin-themes xchat


Firewall

firewall

A very nimble firewall is gufw, frontend for ufw. Simply install it by:

$ sudo apt-get install gufw

Now, check your state/settings…

$ sudo ufw status verbose

…and add some rules

$ sudo ufw deny 5353/udp && sudo ufw deny 5900/tcp && \
sudo ufw deny 22 && sudo ufw deny 25/tcp \
&& sudo ufw deny 135,139,445/tcp \
&& sudo ufw deny 137,138/udp && sudo ufw deny 110 && sudo ufw deny 2049 \
&& sudo ufw deny 143 && sudo ufw deny 21/tcp && sudo ufw deny ssh

If not enable at this point, please run

$ sudo ufw enable

More info & rules at: www.frozentux.net/documents/iptables-tutorial

Image Stuff (optional in my case)

GIMP + extras

$ sudo apt-get install gimp \
&& sudo apt-get install gimp-plugin-registry gimp-data-extras

After this just reboot your machine

$ sudo reboot

Filed under: Linux, Tutorials

ZACHARiASFormat usb stick using command line

Login as root

once in root, plugin the usb stick and run

fdisk -l

you’ll find the usb stick somewhere, mine being as shown.

usb

now if the usb is under 4gb run

mkdosfs -F 16 -I [path to your usb stick]

if it’s larger than 4gb run

mkdosfs -F 32 -I [path to your usb stick]

Filed under: Linux, Tutorials

ZACHARiASHow update your Kernel from backports: Debian Wheezy and Crunchbang Waldorf

Kernel is the most important part of your system. It keeps things running nice and smootlhy and also, keeps things more secure. Debian is, however, very cautious when it comes down to put things into the main branch/mirror, so it uses backports.

Quoting debian backports:

You are running Debian stable, because you prefer the Debian stable tree. It runs great, there is just one problem: the software is a little bit outdated compared to other distributions. This is where backports come in.

+ info here: http://backports.debian.org

Backports are packages taken from the next Debian release (called “testing”), adjusted and recompiled for usage on Debian stable. Because the package is also present in the next Debian release, you can easily upgrade your stable+backports system once the next Debian release comes out. (In a few cases, usually for security updates, backports are also created from the Debian unstable distribution.)

1. Install if (#! already has it installed) aptitude

sudo apt-get intall aptitude

2. Check tha latest kernel image available from the repos you have by

aptitude search linux-image

kernel


As you can see the latest image available for may system is linux-image-3.16-0.bpo.3-amd64. For further updates and newer images, just change the image name.

3. So let’s install it by:

sudo apt-get install -t wheezy-backports linux-image-3.16-0.bpo.3-amd64

4. Reboot your system and then check your system info:

sudo reboot
uname -o -s -r -v

And you should be getting something like this:

kernel_updated

NOTE: keep checking once in a while for any updates on the backports

Source: http://goo.gl/5V4lod

kudos!


Filed under: Linux, Tutorials

Graciano TorrãoExemplo C++ – Validar o tipo de dados recebido via cin

Quando estamos a escrever pequenos programas, que utilizam o objeto cin para fazer a leitura de valores, é frequente depararmos com situações deste tipo:

#include <iostream>
using namespace std;
int main()
{
    int nota;
    cin >> nota;
    if(nota<0 || nota>20)
        cout << "Inseriu uma nota inválida" << endl;
    else
        if(nota<10)
            cout << "O aluno foi reprovado" << endl;
        else
            cout << "O aluno foi aprovado" << endl;
    return 0;
}

Se repararem, o programa funciona muito bem se o utilizador for “educadinho”, ou seja, se fornecer apenas números inteiros.

No caso de este ser distraído, ou malandreco, em vez de um número inteiro, os resultados podem ser imprevisíveis. Experimentem e vejam o que acontece para os seguintes exemplos de input:

  • t
  • Z
  • x

Pois é! Todos reprovados, mesmo sem se saber a nota. Nem uma satisfação!

Uma forma muito simples de contornar esta limitação é a seguinte:

#include <iostream>
using namespace std;
int main()
{
    int nota;
    if(!(cin >> nota) || nota<0 || nota>20)
        cout << "Inseriu uma nota inválida" << endl;
    else
        if(nota<10)
            cout << "O aluno foi reprovado" << endl;
        else
            cout << "O aluno foi aprovado" << endl;
    return 0;
}

Atendendo a que nota é uma variável do tipo int, cin >> nota irá devolver o valor lógico falso caso não receba um número inteiro (int).

Assim sendo, basta adicionais mais uma condição ao nosso if!


Graciano TorrãoComo converter um documento do Word no formato pdf (pdf printer)

Gravei este vídeo apenas para ensinar como podem converter os documentos do office para o formato pdf.

Também apresento a possibilidade de instalação de uma impressora pdf (ver).

Vejam o vídeo:

<iframe allowfullscreen="true" class="youtube-player" frameborder="0" height="385" src="http://www.youtube.com/embed/videoseries?list=UUmShiA3OXTlY43LsUQB7nrg&amp;hl=en_US" type="text/html" width="630"></iframe>


Graciano TorrãoConstrução de algoritmos em Pseudocódigo – enquanto … fazer … fimfazer

Trata-se de uma estrutura de repetição, controlada pela avaliação do valor lógico de uma condição.

Este tipo de estruturas são geralmente designadas por “ciclos“.

enquanto &lt;condição&gt;
fazer
    instrução 1
    instrução 2
    . . .
    instrução n
fimfazer

Assim temos:

  • <condição> é uma expressão lógica que, sendo verdadeira, determina que se voltem a executar as instruções contidas no ciclo. Caso esta expressão tenha o valor lógico falso, o controlo passa para a instução seguinte, sendo o ciclo abandonado.
  • instrução 1 … instrução n  corresponde ao bloco de instruções que vão ser executados em cada iteração (entenda-se iteração como uma “volta”, tendo presente a noção de cliclo).

Este tipo de estrutura tem infinitas aplicações mas, em termos genéricos, podemos afirmar que se utiliza sempre que:

  • pretendermos repetir 0 bloco de instruções um número indeterminado de vezes;
  • o número de iterações, ou seja, o número de vezes que se repete o ciclo, depende do valor lógico da candição;
  • fazendo variar os valores das variáveis que são utilizadas na condição permite controlar o respetivo valor lógico, consequentemente, continuar a iterar ou terminar.

Vamos pensar, a título de exemplo, no seguinte problema:

“Dada uma sequência de números, terminada por um número negativo, calcular a média dos seus elementos.”

Algoritmo em pseudocódigo

Nome MédiaN
Descrição
    Dada uma sequência de números, cujo fim é assinalado por um número
    negativo, este algoritmo calcula a respetiva média.
Variáveis
    contar: Inteiros
    num, soma, média: Real
Início
    contar ← 0
    soma ← 0
    ler (num)
    enquanto ( num >= 0 )
    fazer
        contar ← contar + 1
        soma ← soma + num
        ler (num)
    fimfazer
    média ← soma / contar
    escrever (média)
fim

Seguem-se uma implementação deste problema.

Em linguagem C++

#include <iostream>
using namespace std;
int main()
{
    int contar;
    double num, soma, media;
    contar = 0;
    soma = 0;
    cin >> num;
    while(num >=0)
    {
        contar = contar + 1;
        soma = soma + num;
        cin >> num;
    }
    media = soma/contar;
    cout << media;
    return 0;
}
Anterior Índice Seguinte

Graciano TorrãoConstrução de algoritmos em Pseudocódigo – selecionar caso … fimselecionar

Depois de alguns exercício a aplicar a estrutura se… então… senão… fimse, provavelmente acabamos por concluir que, em certos casos específicos, não é muito prática a sua utilização.

Vamos pensar, a título de exemplo, no seguinte problema:

“Dado um número inteiro, compreendido entre 1 e 4, representando os quatro trimestres do ano, vamos fazer corresponder a sua descrição por extenso.”

Algoritmo em pseudocódigo

Nome Trimestres
Descrição
    Dado um número inteiro, compreendido entre 1 e 4, representando
    os quatro trimestres do ano, este programa faz corresponder a
    sua descrição por extenso.
Variáveis
    trimestre: Inteiro
Início
    ler (trimestre)
    se trimestre = 1
    então   escrever("Primeiro trimestre")
    senão   se trimestre = 2
            então   escrever("Segundo trimestre")
            senão   se trimestre = 3
                    então   escrever("Terceiro trimestre")
                    senão   se trimestre = 4
                            então   escrever("Quarto trimestre")
                            senão   escrever("ERRO!")
                            fimse
                    fimse
            fimse
    fimse
fim

Neste ponto já somos convidados a pensar como ficaria esta estrutura encadeada para outros exemplos como:

  • os dias da semana;
  • os meses do ano;
  • os signos;

Felizmente existe uma estrutura de escolha múltipla, ou de seleção, que se adequa melhor a estas situações.

Trata-se da estrutura “selecionar caso … fim caso“.

Esta estrutura representa-se assim em pseudocódigo:

    selecionar caso <variável>
        <valor1>: <instruções a executar quando ocorre o valor 1>
        <valor2>: <instruções a executar quando ocorre o valor 2>
        <valor3>: <instruções a executar quando ocorre o valor 3>
         ...
        [senão  : <instruções a executar quando falham todos os valores acima previstos>]

Assim temos:

  • <variável> é uma variável cujo valor pretendemos selecionar.
  • <valor1> trata-se de um valor que, no caso de coincidir com o conteúdo da variável, determina a execução das instruções associadas.
  • [ … ] a parte do comando relativa ao senão, ou seja, quando todos os valores previstos falharem, é executada esta. A sua utilizaçao é opcional.

O algoritmo ficaria então com este aspeto:

Nome Trimestres
Descrição
    Dado um número inteiro, compreendido entre 1 e 4, representando
    os quatro trimestres do ano, este programa faz corresponder a
    sua descrição por extenso.
Variáveis
    trimestre: Inteiro
início
    ler (trimestre)
    selecionar caso trimestre
        1:  escrever("Primeiro trimestre")
        2:  escrever("Segundo trimestre")
        3:  escrever("Terceiro trimestre")
        4:  escrever("Quarto trimestre")
        senão
            escrever("ERRO!")
    fimselecionar
fim

Seguem-se uma implementação deste problema.

Em linguagem C++

#include <iostream>
using namespace std;
int main()
{
    int trimestre;
    cin >> trimestre;
    switch(trimestre)
    {
        case 1:
            cout << "Primeiro trimestre" << endl;
            break;
        case 2:
            cout << "Segundo trimestre" << endl;
            break;
        case 3:
            cout << "Terceiro trimestre" << endl;
            break;
        case 4:
            cout << "Quarto trimestre" << endl;
            break;
        default:
            cout << "ERRO!" << endl;
    }
    return 0;
}

 

Anterior Índice Seguinte

Graciano TorrãoConstrução de algoritmos em Pseudocódigo – se… então… senão… fimse

Vamos avançar para a utilização de estruturas de decisão.

Em primeiro lugar vamos abordar a estrutura se… então… senão… fimse.

Para o efeito vamos considerar o problema seguinte:

“Dado um número inteiro, verificar se este é par ou ímpar.”

Algoritmo em pseudocódigo

Nome ParOuImpar
Descrição
    Dado um número inteiro, este algoritmo permite verificar se é par ou ímpar.
Variáveis
    nr: Inteiro
Início
    ler (nr)
    se nr % 2 = 0
    então   escrever (&amp;quot;O número é par.&amp;quot;)
    senão   escrever (&amp;quot;O número é ímpar&amp;quot;)
    fimse
Fim

Para saber se o número é par, utilizeio o operador %, conforme expliquei aqui, embora já numa abordagem em linguagem C++.

Em termos genéricos, esta estrutura representa-se assim em pseudocódigo:

    se <condição>
    então   <bloco de instruções a executar se a condição for Verdadeira>
    [senão  <bloco de instruções a executar se a condição for Falsa>
    fimse]

Assim temos:

  • <condição> é uma expressão que, depois de avaliada, resulta num valor lógico (V/F).
  • <bloco de instruções a executar se a condição for Verdadeira> nesta secção escrevemos o comando, ou bloco de comandos, que temos que executar quando a condição é verdadeira.
  • <bloco de instruções a executar se a condição for Falsa> nesta secção escrevemos o comando, ou bloco de comandos, que temos que executar quando a condição é falsa.
  • [ … ] a parte do comando relativa ao senão, ou seja, quando a condição é falsa, é opcional. Isto significa que, consoante o problema em causa, pode ou não ser necessária.

Seguem-se uma implementação deste problema.

Em linguagem C++

#include <iostream>
using namespace std;
int main()
{
    int nr;
    cin >> nr;
    if (nr % 2 == 0)
        cout << "O número é par" << endl;
    else
        cout << "O número é ímpar" << endl;
    return 0;
} 

No Scratch

http://scratch.mit.edu/projects/31054570/

Anterior Índice Seguinte

Bruno MiguelUma inspiração deliciosa para o Dia das Bruxas

chocolate skulls

Ruth e Sira Garcia são duas artistas espanholas com talento e bastante criatividade. O duo criou um doce em forma de caveira com o cérebro representado por uma noz ou amora, que pode ser preparado com vários ingredientes.

Uma excelente alternativa à tradicional coca – ou Jack-o’-lantern, como é conhecida nos Estados Unidos – que pelo menos vai fazer as vossas delícias.

via

Bruno Miguel31

Graciano TorrãoDivisão inteira em linguagem C++

DivisaoI

Observa o seguinte programa.

Exemplo 1

#include <iostream>
using namespace std;
int main()
{
    int A = 15;
    cout << A/3 << endl;
    cout << A/2 << endl;
    cout << A/30 << endl;
    return 0;
}

Output do Exemplo 1

5
7
0

Comentários ao Exemplo 1

  • o facto de A ser do tipo int, conjugado com a divisão por uma constante do mesmo tipo, força o resultado a ser também do tipo int (inteiro);
  • a parte fracionária do quociente é descartada;
  • é obtido o quociente da divisão, mas perdemos o resto.

 

Vamos agora trocar o operador ‘/’ pelo operador ‘%’.

Exemplo 2

#include <iostream>
using namespace std;
int main()
{
    int A = 15;
    cout << A%3 << endl;
    cout << A%2 << endl;
    cout << A%30 << endl;
    return 0;
}

Output do Exemplo 2

0
1
15

Comentários ao Exemplo 2

  • para cada uma das operações, obtivemos o respetivo resto;
  • o operador ‘%’ permite então calcular o resto de uma divisão inteira;
  • está contornada a limitação resultante do exemplo anterior, transformada agora nuva vantagem;
  • são inúmeras as aplicações deste operador … ;

Exemplo 3

Agora já é possível controlar a operação aritmética da divisão envolvendo o seu dividendo, divisor, quociente e resto.

#include <iostream>
using namespace std;
int main()
{
    int dividendo, divisor, quociente, resto;
    cout << "Dividendo? ";
    cin >> dividendo;
    cout << "Divisor? ";
    cin >> divisor;
    quociente = dividendo / divisor;
    resto = dividendo % divisor;
    cout << "Quociente = " << quociente << endl;
    cout << "Resto = " << resto << endl;
    cout << "Prova real: " << dividendo << " = " << divisor
         << " x " << quociente << " + " << resto << endl;
    return 0;
}

 


Bruno MiguelUm trio de casas na árvore

Desde muito novo que gosto do conceito de casa na árvore, e ainda hoje gostava de ter uma – assim tenha jardim para tal. Nem me recordo porque começou, mas talvez se tenha mantido por nunca ter conseguido construir uma igual às que via na televisão.

O ambientalista norte-americano Peter Bahouth, residente em Atlanta, desenhou e construiu um trio de casas na árvore, que apelidou de “Mind”, “Body” e “Spirit” (“Mente”, “Corpo” e “Espírito”).

As casas estão interligadas por pequenas pontes e distribuídas como divisões. Uma delas é o quarto e tem uma cama que desliza para forma por forma a permitir uma melhor vista das três construções.

A inspiração de Peter terá sido a sua própria infância, em que teve presente casas na árvores.

Desde muito novo que gosto do conceito de casa na árvore, e ainda hoje gostava de ter uma – assim tenha jardim para tal. Nem me recordo porque começou, mas talvez se tenha mantido por nunca ter conseguido construir uma igual às que via na televisão. E agora quero três como estas.

Footnotes