47 post/s with categoría Programación


Instalar wxpython phoenix no Debian 9 Stretch baixo Python 3

Non logrei que funcionase dentro da contorna virtual, polo que o instalei fora. Para que compile é preciso instalar previamente os seguintes paquetes:

$ sudo apt-get install python3-gst-1.0 gstreamer1.0 
$ sudo apt-get install libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev
$ sudo apt-get install libgtk2.0-dev libwebkitgtk-dev libwebkitgtk-3.0-dev
$ sudo apt-get install mesa-common-dev libglu1-mesa-dev

Logo instalei o pip para python 3:

$ sudo apt-get install python3-pip

E finalmente:

$ sudo pip3 install --upgrade --pre -f https://wxpython.org/Phoenix/snapshot-builds/ wxPython

Instalou!!

user@debianstretch:~$ sudo pip3 install --upgrade --pre -f https://wxpython.org/Phoenix/snapshot-builds/ wxPython
[sudo] password for user: 
Collecting wxPython
  Using cached https://wxpython.org/Phoenix/snapshot-builds/wxPython-4.0.0b2.dev3307+d7cae3f.tar.gz
Requirement already up-to-date: six in /usr/lib/python3/dist-packages (from wxPython)
Building wheels for collected packages: wxPython
  Running setup.py bdist_wheel for wxPython ... done
  Stored in directory: /root/.cache/pip/wheels/84/7f/a5/c8259920ef35976c848549797679223097cb7bd964a492d505
Successfully built wxPython
Installing collected packages: wxPython
Successfully installed wxPython-4.0.0b2.dev3307+d7cae3f
user@debianstretch:~$ python3
Python 3.5.3 (default, Jan 19 2017, 14:11:04) 
[GCC 6.3.0 20170118] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import wx
>>> wx.version()
'4.0.0b2.dev3307+d7cae3f gtk3 (phoenix)'
>>> 
user@debianstretch:~$

Para usar as wxpython dentdro de virtualenv fixen unha ligazón, no meu caso, en debian 9 Stretch, foi:

ln -s /usr/local/lib/python3.5/dist-packages/wx* /home/usuario/.virtualenvs/app-py3/lib/python3.5/site-packages/

warning: implicit declaration of function 'g_sprintf'

Compilando o xfce4-timer-plugin (v 1.6.0), xurdeume este erro. A solución foi engadir esta liña ó principio do documento, debaixo da liña #include

#include <gtk/gtk.h>
// Engádese a liña de abaixo
#include <glib/gprintf.h>  // for gcc's warning: implicit declaration of function 'g_sprintf'

Instalación do certificado Let's Encrypt para o sitio web

Deixo aquí unhas notas de como instalar un certificado de servidor seguro de Let's Encrypt á meu sitio web. Let's Encrypt fornece certificados para os nosos servidores de balde (gratis).

Inicialmente probei o instalador certbot mais non me foi ben, non acababa de verificar o sitio. Logo vendo algún foro de web2py vin que recomendaba o uso de acme que foi o que finalmente empreguei para obter o certificado do sitio web.

Preparación do cartafol para verificar que o sitio é meu

O primeiro que tiven que facer foi crear un cartafol para que Let's Encrypt puidese verificar que o dominio é meu. Normalmente sería indicar o cartafol raíz do sitio web, por exemplo «/var/www/», no meu caso ó usar web2py, a solución pasa por crear un alias no sitio na configuración do apache, no meu caso foi engadir dentro do virtualhost o seguinte alias tal como indican na guía de acme:

Para apache 2.4 en diante:

Alias "/.well-known/acme-challenge/" "/home/www-data/lets_encrypt/"

  AllowOverride None
  Options None
  Require all granted

Para apache 2.2 e anteriores:

Alias "/.well-known/acme-challenge/" "/home/www-data/lets_encrypt/"

  AllowOverride None
  Options None
  # Order allow, deny  OLLO! no meu caso tiven que comentar esta liña
  Allow from all

Instalación de acme

Para elo seguín as instrucións indicadas na guía:

# echo 'deb http://ppa.launchpad.net/hlandau/rhea/ubuntu xenial main' > \
 /etc/apt/sources.list.d/rhea.list
# apt-key adv --keyserver keyserver.ubuntu.com --recv-keys \
9862409EF124EC763B84972FF5AC9651EDB58DFA
# apt-get update
# apt-get install acmetool

Unha vez instalado executei a orde:

# acmetool quickstart
  • Tipo de certificado que queremos: opción 1, live
  • Como imos verificar o sitio: opción 1, WEBROOT
  • Indico a ruta que indiquei no alias (na configuración do apache): /home/www-data/lets_encrypt/

Con isto queda o sitio verificado, o seguinte paso é a solicitude dos certificados, para elo empregase a orde:

# acmetool want www.damufo.com

Se quixese tamén o certificado para o sitio sen as www empregaría a orde:

# acmetool want damufo.com www.damufo.com

Os certificados obtidos son gardados en «/var/lib/acme/live/www.damufo.com/».

Para ver o estado dos certificados solicitados, emprégase a orde:
# acmetool status

Finalmente queda engadir os certificados ó virtualhost seguro do apache (o do porto 443), para elo engádese dentro das etiquetas de dito virtualhost o seguinte:

SSLEngine on  # Isto en teoría xa debería estar
SSLCertificateFile    /var/lib/acme/live/www.damufo.com/cert
SSLCertificateKeyFile /var/lib/acme/live/www.damufo.com/privkey
SSLCertificateChainFile /var/lib/acme/live/www.damufo.com/fullchain

Deixo aquí esta ligazón sobre a configuración do SSL do apache que fornece Mozilla por se é de interese.

Finalmente queda comprobar que a sintaxe do ficheiro apache está ben, para elo empregase a orde:

# apache2ctl configtest

E se todo está ben, reiniciase o apache coa orde:

# service apache2 restart

Forzar https e uso de www no Apache

Deixo aquí estas notas de como configurar o Apache para forzar ó sitio a usar https e que o emprego de www. antes do nome de dominio.

Para elo fixen uso do módulo Rewrite do Apache.

O primeiro foi engadir dentro de <VirtualHost *:80> as liñas:

 RewriteEngine on
# Forzar o emprego de https
  RewriteCond %{HTTPS} off
  RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [NE,L,R=301]

Con isto, o tráfico é redirixido do porto 80 ó 443 que é o que emprega a conexión segura https.

Logo, queda forzar ó emprego de «www.» no caso de non estar presente antes do nome do dominio, para elo engadín dentro de <VirtualHost *:443> as liñas:

RewriteEngine on
  #Forzar o emprego de www.
  RewriteCond %{HTTP_HOST} ^damufo.com [NC]
  RewriteRule (.*) https://www.%{HTTP_HOST}%{REQUEST_URI}

Se, pola contra, quixese forzar ó NON emprego de «www.» antes do nome do dominio, no canto de engadir o de arriba, o que faría sería engadir:

  RewriteEngine on
  # Forzar o emprego de non-www
  # RewriteCond %{HTTP_HOST} ^www\.(.+) [NC]
  # RewriteRule ^ https://%1%{REQUEST_URI} [L,R=301]

É imporante que dentro do virtualhost estea establecido o nome do servidor, no meu caso:

ServerName damufo.com

wxpython no Ubuntu 16.04 con python3

Para a instalación do wxPython Phoenix no Ubuntu 16.04 dentro dun contorno virtual de Python3. Para elo vasta coa simple orde:

$ pip3 install -U --pre -f https://wxpython.org/Phoenix/snapshot-builds/linux/\
gtk3/ubuntu-16.04  wxPython_Phoenix

Devasa empregando UFW en linux Debian

Deixo aquí uns pasos de como configurar a devasa no servidor Debian.

UFW é unha interface para configurar a devasa IPTables (a cal ten unha configuración máis árida).

O obxectivo é bloquear todo agás as conexións ssh e http/https

Comezo por instalar:

$ sudo apt-get install ufw

Unha vez instalado pode verse o estado das regras coa orde:

$ sudo ufw status

Inicialmente este dará como resultado: “Status: inactive”

Antes de activalo establezo as reglas para asegurarme que sempre teño permitida a conexión ssh, do contrario podería perder o acceso ó servidor.

Comezo por denetar o tráfico de entrada e permitir o de saída:

$ ufw default deny incoming
$ ufw default allow outgoing

Abro o porto para o SSH.

$ ufw allow ssh

Ollo que se teño o ssh noutro porto distinto ó 22 mellor establecelo a man, por exemplo, supoñendo que estea no 2222, quedaría así:

$ ufw allow 2222

No caso de ter mudado o porto ssh a outro porto precisarei eliminar a regra que permitía o acceso ó porto 22 (predeterminado do ssh):

$ sudo ufw delete allow ssh

Abro o porto para o servidor web:

$ ufw allow www

Abro o porto para o servidor web seguro (https):

$ ufw allow 443/tcp

No caso de ter correo podería abrir seu porto así:

$ ufw allow 25/tcp

No caso de ter MySQL, sería:

$ ufw allow 3306/tcp

Abro o porto para o protocolo ntpd:

$ ufw allow ntp

Finalmente activo a devasa:

$ ufw enable

Para ver como quedou executo:

$ ufw status verbose

O normal é que se configure automáticamente para arrarcar ó inicio, pero non está de máis asegurarse, para elo hai que acceder ó ficheiro /etc/ufw/ufw.conf e ver que a opción ENABLED está establecida a «yes» (ENABLED=yes).

Fontes: programarivm, critiantata, websecurity

Percorrer directorios dun cartafol excluindo algúns directorios

#!/bin/bash

echo "proba";
for i in $( ls ); do
	if [ -d $i ];
	then
		if [ "$i" != "compartido" ];
		then
			echo "$i é cartafol.";
		fi
	else
		echo "$i é ficheiro";
	fi
done;

Mutiples variables nun bucle for en bash

for variables in "mazas 1" "peras 2" "pomelos 8" "kiwis 3" 
do
   set $variables
   echo $1 $2
done;

Fonte: www.linuxdevcenter.com

Engadir wxpython a virtualenv

Wx non se pode instalar (polo menos de momento) desde pip nun contorna virtual de python (virtualenv). Máis dangtrinh danos unha solución para este caso.

Trátase de instalar desde apt o paquete wx, no meu caso foi:

 $ sudo apt-get install python-wxgtk3.0

E unha vez instalado faise unha ligazón simbólica á contorna virtual:

$ ln -s /usr/lib/python2.7/site-packages/wx* /home/usuario/.virtualenvs/meu-env/lib/python2.7/site-packages/

Dependendo da distribución ou versión tamén pode ser (por exemplo ubuntu 16.04 e debian stretch):

$ ln -s /usr/lib/python2.7/dist-packages/wx* /home/usuario/.virtualenvs/meu-env/lib/python2.7/site-packages/

Voltímetro (divisor) para Arduino

Deixo aquí esta ligazón, hispavila.com. Trátase dun moi bo manual de como facer un voltímetro (divisor) para CC para Arduino. Isto permite medir voltaxes superiores a 5 volts, no caso do exemplo de 0 a 55V.
Amosando 1 a 10 de 47