Accessori per cani: i miei consigli

Da un anno abbiamo adottato nella nostra famiglia un pitbull maschio affettuosissimo che, nei giorni in cui sto scrivendo, ha 1 anno e 1/2.

Un anno in cui ci ha fatto morire dal ridere, ma ci ha anche fatto spendere parecchio. Magari non ve ne accorgete, ma i vostri cani vi fanno spendere parecchio. Dalle mie ultime statistiche io viaggio sui 1500 euro annui comprensivo di vaccinazioni, cibo, accessori…

Dato che la spesa è importante, mi sono permesso di selezionare per voi i miei acquisti ricorrenti per Logan (il nome del mio cane) che ho selezionato nel corso di questo periodo.

La “pappa” prima di tutto

Ho passato in rassegna un sacco di marche in fatto di crocchette. Ne ho veramente selezionate di tutti i tipi, sempre osservando il comportamento del cane (feci, vivacità e pelo) per un periodo di almeno 1 mese. La mia conclusione è che niente è meglio delle Purina One Agnello.

Ovviamente acquistate quello adatto al peso del vostro cane. Perchè agnello? Perchè il pollo, ahimè, è una più probabile fonte di allergia per i nostri cani. Fidatevi, date questo prodotto per 1 mese al vostro cane e non tornerete più indietro.

Guinzaglio

La sicurezza è importante: che il cane sia piccolo o grande è giusto che stia al guinzaglio quando siamo in un’area pubblica. Dopo un’infinita selezione, il mio compagno ideale per le passeggiate con il mio cane è questo:

Permette al cane di sentirsi libero (10 metri di guinzaglio) ma sempre in sicurezza. Il faro è ottimo per le passaggiate notturne (anche se io preferisco averne sempre una di riserva con me dato che vivo in una zona senza illuminazione pubblica).

E’ il 4o che uso (dopo un po’ va cambiato dato che il guinzaglio potrebbe usurarsi correndo tra alberi e rami con punte) e non tornerei più indietro. Ha veramente rivoluzionato le uscite mie e di Logan.

Pettorina, mai più collare

Inizialmente usavo solo il collare per il mio cane. Pensavo che mi permettesse di tenerlo più sotto controllo. Ma mi sbagliavo: oltre a non avere un effetto sul suo controllo, il collare ha creato qualche problema alla cute. Così sono passato definitivamente alla pettorina; più precisamente a questa pettorina.

Il feeling è ottimo, sia per me che per il mio cane. In 2 secondi si infila dalla testa e si chiude dal sicuro moschettone. La maniglia in alto completa la dotazione. Estremamente consigliata.

Raccogliamo gli escrementi dei nostri cani, per piacere

Io odio tutti quelli che non raccolgono le feci dei propri cani: che siano in strada, su un marciapiede o in campagna, le feci vanno raccolte!

Per non sporcarvi le mani con rotture improvvise dei sacchetti (a che non è capitato alzi la mano), io acquisto ormai solo i sacchetti di amazon. Sono robustissimi!

Il mio cane puzza, tu come lo pulisci?

Tutti i cani puzzano, o meglio, hanno un odore diverso dal nostro. Dato che il mio cane vive in casa è giusto che un minimo sia pulito senza alterare la sua copertura cutanea.

Anche in questo caso, dopo aver provato milioni di tipi di salviette, sono caduto su queste.

Robuste e profumate non irriteranno le zampe dei vostri amici a 4 zampe. Logan è abituato che mi porge le zampe per farsele pulire prima di entrare in casa.

Volete altri pareri?

Volete altri pareri su accessori di cui non ho parlato? Fatemi pure domande nei commenti e cercherò di rispondervi e ora spazio a lui, la guest star dell’articolo: LOGAN!

Clonezilla e dd possono fallire nei vostri backup: ma ho la soluzione!

Uso abitualmente Clonezilla per i backup dei miei PC sia a casa che al lavoro e non ho mai avuto grossi problemi (o meglio, quando li ho avuti, di solito li ho sempre capiti e risolti con qualche configurazione adhoc).

In questi giorni ero alle prese con un osso duro invece. Un vecchio PC del 2011 che non ne voleva sapere di farsi backuppare.

La cosa particolare è che nè nei in backup nè nei restore veniva mostrato nessun errore: il risultato era però un sistema restorato (debian 10 su ext4) con file corrotti e inutilizzabili.

Ne ho provate di ogni:

  • ho utilizzato diverse versioni di clonezilla per verificare che non fosse una regression; (sono arrivato fino a versioni del 2011)
  • ho utilizzato varie architetture di iso di clonezilla (amd64, i686-pae e i686);
  • ho provato direttamente “dd”

Ed è proprio questa ultima prova ad avermi indirizzato al problema reale: come è possibile che neanche dd possa funzionare?

Abitualmente lanciavo questa riga di bash per avviare il backup con dd:

dd if=/dev/sda1 status=progress bs=2M | gzip -c > /home/partimage/image.gz 

Notate la parte in grassetto? Non è stata messa a caso. Cercando in giro per stackoverflow a caccia di problemi su dd, mi sono imbattuto in questo thread che mi ha aperto un mondo.

E in effetti, lanciando il backup in questo modo:

dd if=/dev/sda1 status=progress | gzip -c > /home/partimage/image.gz 

Il tutto funziona perfettamente, ovviamente facendo il restore in questo modo:

gunzip -c /home/partimage/image.gz | dd of=/dev/sda1 status=progress 

Ora rimane solo un problema: clonezilla non supporta la possibilità di cambiare il parametro bs passato a dd, e qui ho chiesto allo sviluppatore di abilitare un opzione in merito. Vediamo come andrà a finire.

La mia prima skill con Alexa: facile, con VoiceFlow!

Ero alla ricerca di previsioni del meteo decenti con Alexa. Sì, perchè diciamocelo, il provider meteo di default Alexa fa abbastanza pena in Italia.

E allora ho pensato, perchè non farmi la mia skill personale che mi aiuta nella scelta del mezzo di trasporto adeguato per andare al lavoro? (bici o auto n.d.r.)

Detto, fatto! Meteo Aeronautica Militare per Alexa pronta per voi!

La scelta su come realizzarlo è caduta sui VoiceFlow che permette, tramite un diagramma di flusso, di generare skill in tempi record senza digitare una linea di codice!

Il bello di VoiceFlow è che ti permette l’integrazione con script esterni (come il mio script in python per gestire il provider meteo) e ti consente di pubblicare la skill in modo guidato sul store di amazon!

Veramente stra consigliato!

QNAP non va in standby: capiamolo con lo script blkdevMonitor.sh

Da pochi giorni sono un possessore di un NAS QNAP e mi sono imbattuto il un classico problema: gli HDDs non vanno in standby.

Sui forum QNAP si parla di uno script bash da lanciare via ssh, che ahimè, non è più scaricabile.

Per fortuna, girando nelle pieghe del web (aka google cache), sono riuscito a farlo riemergere dal black hole.

Ed eccolo qui in tutta la sua “splentitudine”:

#!/bin/sh
#================================================================
# Copyright (C) 2008 QNAP Systems, Inc.
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
# 
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#----------------------------------------------------------------
#
# blkdevMonitor_v2.sh
#
#	Abstract: 
#		A program of testing purpose on monitor block device
#
#	HISTORY:
#		2013/05/15	-	Created	- Kent
# 
#================================================================
/sbin/daemon_mgr klogd.sh stop "/etc/init.d/klogd.sh start"
/usr/bin/killall dd 2>/dev/null 1>/dev/null

MD_DEVIVES="md9 md13 md0 md1 md2"
SD_DEVIVES="sda sdb sdc sdd sde sdf sdg sdh"
Do_Log=0
MAXRUN=100
FORCE_STANDBY=0
BLKDEV_LOG=/root/blkdevMonitor_v2.log

analyse_kmsg()
{
	_klog=/.klog
	/bin/touch $_klog
	_standby=1

	# read /proc/kmsg
	while [ 1 ]; do
		/bin/dd if=/proc/kmsg of=$_klog bs=1 count=10240 2>/dev/null 1>/dev/null
		for i in $MD_DEVIVES; do
			/bin/cat $_klog | /bin/grep $i | /bin/grep "dirtied inode"
			if [ $? = 0 ]; then
				/bin/cat $_klog | /bin/grep $i | /bin/grep "dirtied inode" >> $BLKDEV_LOG
				_standby=0
			fi
			/bin/cat $_klog | /bin/grep $i | /bin/grep "block"
			if [ $? = 0 ]; then
				/bin/cat $_klog | /bin/grep $i | /bin/grep "block" >> $BLKDEV_LOG
				_standby=0
			fi
		done
		for i in $SD_DEVIVES; do
			/bin/cat $_klog | /bin/grep $i | /bin/grep "dirtied inode"
			if [ $? = 0 ]; then
				/bin/cat $_klog | /bin/grep $i | /bin/grep "dirtied inode" >> $BLKDEV_LOG
				_standby=0
			fi
			/bin/cat $_klog | /bin/grep $i | /bin/grep "block"
			if [ $? = 0 ]; then
				/bin/cat $_klog | /bin/grep $i | /bin/grep "block" >> $BLKDEV_LOG
				_standby=0
			fi
		done
		if [ $_standby = 0 ]; then
			return 1
		fi
	done
}

_countdown()
{
	/bin/sync;/bin/sync
	/bin/echo -n "Countdown: "
	cntdown=$1
	while [ ${cntdown} -gt 0 ]; do
		/bin/sleep 1
		/bin/echo -n "${cntdown} "
		cntdown=$[$cntdown-1]
	done
	echo
}

_check_standby()
{
	for i in $SD_DEVIVES; do
		/sbin/hdparm -C /dev/${i} 2>>/dev/null | /bin/grep active
		if [ $? -eq 0 ]; then
			echo /dev/${i}
			echo "Some process was waked up HDD..."
			return 1	# HDD is active
		fi
	done
	return 0
}

/bin/echo "===== Welcome to use blkdevMonitor_v2 on `/bin/date` ====="
case "$1" in
	-h)
	/bin/echo "Usage:"
	/bin/echo "  $0 [N]"
	/bin/echo "  N means that monitor block devices N times and generate N log files.(Default N = 100)"
	exit 0
	;;
esac

/bin/echo "Turn off/on VM block_dump & Clean dmesg"
/bin/echo 0 > /proc/sys/vm/block_dump
/bin/dmesg -c 2>/dev/null 1>/dev/null
/bin/dmesg -c 2>/dev/null 1>/dev/null
/bin/dmesg -c 2>/dev/null 1>/dev/null

_cnt=20
while [ ${_cnt} -gt 0 ]; do
	/bin/sync
	/bin/dmesg -c 2>/dev/null 1>/dev/null
	_cnt=$[$_cnt-1]
done
/bin/echo 1 > /proc/sys/vm/block_dump
/bin/date > /dev/null
_countdown 3
# ignore 10240 bytes
/bin/dd if=/proc/kmsg of=/dev/null bs=1 count=10240 2>/dev/null 1>/dev/null

/bin/echo "Start..."

[ "x$1" != "x" ] && MAXRUN=$1
_cnt=0

# remove log
/bin/rm -f $BLKDEV_LOG

while [ ${_cnt} -lt ${MAXRUN} ]; do
	echo "============= $_cnt/$MAXRUN test, `/bin/date` ==============="
	echo "============= $_cnt/$MAXRUN test, `/bin/date` ===============" >> $BLKDEV_LOG
	if [ $FORCE_STANDBY = 1 ]; then
		_check_standby
		if [ $? != 0 ]; then
			for i in $SD_DEVIVES; do
				# force standby
				/sbin/hdparm -y /dev/${i} 2>/dev/null 1>/dev/null
				if [ $? = 0 ]; then
					echo "Issuing standby command in /dev/${i}"
				else
					echo "/dev/${i} not found"
				fi
			done
		fi
		/bin/sleep 20
	fi
	analyse_kmsg
	_cnt=$[$_cnt+1]
	echo
	echo >> $BLKDEV_LOG
done

/bin/echo "Turn off block_dump"
/bin/echo 0 > /proc/sys/vm/block_dump

Utilizzandolo, ho capito che il mio problema era nell’app di videosorveglianza (che comunque non stavo usando)

Windows CE è morto? Lunga vita a Linux e Wine

(lo stile di scrittura di questo post è volutamente leggero, ma l’argomento è dannatamente serio!)

Ormai sono 18 anni che lavoro come firmwarista in ambito industriale e mi è capitato di vedere di tutto sugli schermi delle povere HMI: sistemi operativi proprietari, Windows 95, 98, XP e anche lo SCOMODISSIMO Windows CE!

Purtroppo, ma che dico, PER FORTUNA, Windows CE è stato finalmente decretato morto dalla Microsoft.

Questo decesso programmato ha portato molte aziende sull’orlo di crisi tecniche.

E ora come sostituiamo Windows CE?

La scelta banale potrebbe essere quella di portare tutto il software sulle moderne versioni di Windows. Peccato però che ci si dimentica spesso di una parolina, o forse di due: REAL-TIME.

Infatti, Windows CE, aveva tanti difetti ma una cosa su tutte faceva abbastanza bene: eseguire codice in tempo reale!

Purtroppo Windows 10 & Co. non gradiscono molto la parte realtime. Si, so quello che state per dire: ma ci sono le estensioni realtime per windows!

Ok, ma le avete provate? Queste estensioni sono dannatamente pesanti e si portano dietro un ulteriore zavorra: UN COSTO DI LICENZA SUPERIORE A QUELLO DI WINDOWS STESSO!

Quindi, vi starete chiedendo, che cosa suggerisce il fenomenale Roberto Viola?

Semplice: LINUX!

O meglio, Linux + Wine + Xenomai!

Nel dettaglio, Xenomai si occuperà della gestione realtime, mentre Wine si occuperà della parte grafica della HMI che sicuramente non vorrete riscrivere!

Signori, in pochi giorni, se non ore, avrete migrato il vostro applicativo da Windows CE a Linux senza più costi di licenza e sopratutto su un kernel al passo con i tempi!

Avete avuto anche voi situazioni simili?

Dai che forse il 2020 sarà l’anno di linux…almeno per quello che riguarda l’ambito industriale!