[Progetto] [Olifant] programma antifurto pc!

Iniziative e progetti della comunità legati a Ubuntu.
Regole della sezione
Questa sezione ha lo scopo di raccogliere le iniziative/progetti della nostra Comunità legati ad Ubuntu. I progetti ospitati nascono da iniziative degli utenti o gruppi di utenti. In futuro i progetti potrebbero rimanere iniziative "personali" o essere integrate nella distribuzione, sponsorizzate da Ubuntu o da Canonical a discrezione dei responsabili. All'interno di essa sarà possibile inserire delle discussioni che hanno la funzione di pubblicizzare avvenimenti, iniziative e progetti software su Ubuntu e GNU/Linux in generale. Sarà inoltre possibile per gli utenti proporre lo sviluppo di nuovi software e in questo caso la discussione di richiesta avrà la funzione di generare un requisito funzionale del prodotto da sviluppare.

Sezione I - Iniziative
  • Fanno parte di iniziative, ad esempio, le seguenti categorie: corsi, progetti editoriali, libri.
  • La segnalazione di un'iniziativa avviene creando una discussione con l'annuncio.
  • Una volta effettuata la segnalazione, la discussione viene chiusa dal Gruppo Forum.
  • Se l'iniziativa esposta comporta un costo di adesione o fruizione, questo deve essere esplicitamente riportato all'interno della discussione.
  • È obbligatorio segnalare all'interno della discussione i riferimenti per poter contattare/partecipare all'iniziativa.
Sezione II - Progetti
  • La segnalazione di un progetto software, come per le iniziative, avviene e si sviluppa all'interno di una singola discussione.
  • Sarà consentito l'inserimento di software solo se rilasciati sotto licenza GPL (in tutte le sue versioni) o equivalente FOSS, tale da garantire agli utenti l'utilizzo del prodotto senza restrizioni e agli sviluppatori la proprietà intellettuale del codice prodotto.
  • Nell'oggetto della discussione dovrà essere riportata la categoria (es. [Iniziativa], [Progetto] o [Proposta]) e una semplice descrizione del progetto.
  • Se il progetto ha già un sito che lo ospita sarà a discrezione del Gruppo Forum chiuderla come segnalazione o lasciarla aperta.
  • Se il progetto non ha un sito che lo ospita si potranno aprire due discussioni, una per proporre modifiche/implementazioni (dove nel titolo occorre specificare [sviluppo]) ed una per segnalare problemi (e nel titolo dovrà comparire [supporto]).
  • Non è consentita l'apertura di nuove discussioni in riferimento a versioni superiori o modificate di un prodotto già riportato in precedenza.
  • Se il software oggetto del progetto ha una dimensione non superiore ai 128 kB, per prodotti che non hanno un sito che li ospita, sarà possibile allegarlo alla discussione.
Sezione III - Proposte
  • Una proposta deve essere eseguita e si svilupperà all'interno di una singola discussione.
  • Le proposte dovranno essere inserite direttamente nella sezione "Progetti della Comunità".
  • Dovranno essere specificate le funzionalità che devono essere sviluppate.
  • Non dovranno essere riportate diciture tipo "...deve fare come questo software...", ma indicare nel miglior modo possibile i requisiti.
  • Una volta segnalata la discussione resterà aperta per consentire uno scambio di idee su come sviluppare il codice o finché gli sviluppatori non forniranno una soluzione (da pubblicizzare poi, come visto prima, nella sezione Progetti) che ne soddisfi il requisito.
Per quanto non esposto sopra, si fa comunque riferimento al Regolamento del forum ed al Codice di Condotta della Comunità.
Avatar utente
cristian_c
Accecante Asceta
Accecante Asceta
Messaggi: 23422
Iscrizione: lunedì 29 ottobre 2007, 11:31

Re: [Progetto] [Olifant] programma antifurto pc!

Messaggio da cristian_c »

Ho scoperto che sul pc con il quale avevo testato e lavorato su olifant, ho una configurazione doppia, cioè /sys/class/power_supply (con nomi di sotto-cartelle diverse) e /proc/acpi :o
Scusami se non te l'ho adattato io, sono impegnato questi giorni e non hp nemmeno una gran voglia...
Prometto che appena ce la faccio controllo :)
Ho provato a trovare una soluzione, ma ancora non riesco a tirare nessun coniglio fuori dal cappello :nono:
UP! Unreal Project: il futuro inizia qui. Crusade è tra noi
È scienza!
Avatar utente
davideddu
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1546
Iscrizione: martedì 2 novembre 2010, 20:35
Desktop: Unity
Distribuzione: Ubuntu 14.04 AMD64
Località: Pennsylvania, Stati Uniti
Contatti:

Re: [Progetto] [Olifant] programma antifurto pc!

Messaggio da davideddu »

cristian_c [url=http://forum.ubuntu-it.org/viewtopic.php?p=4451936#p4451936][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:Ho scoperto che sul pc con il quale avevo testato e lavorato su olifant, ho una configurazione doppia, cioè /sys/class/power_supply (con nomi di sotto-cartelle diverse) e /proc/acpi :o
Scusami se non te l'ho adattato io, sono impegnato questi giorni e non hp nemmeno una gran voglia...
Prometto che appena ce la faccio controllo :)
Ho provato a trovare una soluzione, ma ancora non riesco a tirare nessun coniglio fuori dal cappello :nono:
Perdonami per non aver mantenuto la promessa, qui negli USA non lo sto quasi usando il PC...
È probabile che sia così, tu considera entrambi i casi così funziona sia con i kernel nuovi (sys) che con i vecchi (proc).
E butta via tutti gli spaghetti-python ammuffiti! :D :p
Computer HP Probook 4510s CPU Intel Pentium Dual-Core T4400 Video Intel GMA 4500 Tablet ASUS Nexus 7 2013 (Wi-Fi)
Homepage - GitHub - Dropbox Referral - Copy Referral
Capisci di usare troppi editor di testo quando, cadendoti mezzo chilo di zucchero nel caffè, cerchi disperatamente di premere Ctrl+Z per rimediare... :D
Avatar utente
cristian_c
Accecante Asceta
Accecante Asceta
Messaggi: 23422
Iscrizione: lunedì 29 ottobre 2007, 11:31

Re: [Progetto] [Olifant] programma antifurto pc!

Messaggio da cristian_c »

Davideddu, prova il nuovo olifant.py (modificato da me): https://dl.dropboxusercontent.com/u/5162623/olifant.py e fammi sapere :)
È probabile che sia così, tu considera entrambi i casi così funziona sia con i kernel nuovi (sys) che con i vecchi (proc).
In realtà, la doppia configurazione l'ho trovata su pc con kernel 3.2.0 (direi che ormai i kernel delle serie precedenti sono abbastanza obsoleti) :D
UP! Unreal Project: il futuro inizia qui. Crusade è tra noi
È scienza!
Avatar utente
davideddu
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1546
Iscrizione: martedì 2 novembre 2010, 20:35
Desktop: Unity
Distribuzione: Ubuntu 14.04 AMD64
Località: Pennsylvania, Stati Uniti
Contatti:

Re: [Progetto] [Olifant] programma antifurto pc!

Messaggio da davideddu »

cristian_c [url=http://forum.ubuntu-it.org/viewtopic.php?p=4453634#p4453634][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:Davideddu, prova il nuovo olifant.py (modificato da me): https://dl.dropboxusercontent.com/u/5162623/olifant.py e fammi sapere :)
È probabile che sia così, tu considera entrambi i casi così funziona sia con i kernel nuovi (sys) che con i vecchi (proc).
In realtà, la doppia configurazione l'ho trovata su pc con kernel 3.2.0 (direi che ormai i kernel delle serie precedenti sono abbastanza obsoleti) :D
Lo puoi pacchettizzare tutto insieme insieme al binario a 64 bit? Non ho voglia di cercare tutto il thread x il download, tu ce l'hai nel PC :)
Comunque do un'occhiata al file py :)

(per pacchettizzare intendo metterlo semplicemente in un tarball, non voglio nessun debian :p )
Computer HP Probook 4510s CPU Intel Pentium Dual-Core T4400 Video Intel GMA 4500 Tablet ASUS Nexus 7 2013 (Wi-Fi)
Homepage - GitHub - Dropbox Referral - Copy Referral
Capisci di usare troppi editor di testo quando, cadendoti mezzo chilo di zucchero nel caffè, cerchi disperatamente di premere Ctrl+Z per rimediare... :D
Avatar utente
davideddu
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1546
Iscrizione: martedì 2 novembre 2010, 20:35
Desktop: Unity
Distribuzione: Ubuntu 14.04 AMD64
Località: Pennsylvania, Stati Uniti
Contatti:

Re: [Progetto] [Olifant] programma antifurto pc!

Messaggio da davideddu »

Ti sconsiglio di tenere un file sempre aperto in lettura... piuttosto salvati il nome del file in un attributo e per comodità usa with per aprirlo, sai come si usa?
[code2=python]with open("/path/to/file", "mode") as f:
f.write("whatever")
# oppure
myvar = f.read()

# no need to close[/code2]

Praticamente cambia questo
[code2=python]def __isCablePlugged(self):
data_ac = self.__f_ac.read()
self.__f_ac.seek(0) #rewinding
return bool(int(data_ac))[/code2]
con questo (aggiusta l'indentazione)
[code2=python]def __isCablePlugged(self):
with open(self.__f_ac.name, "r"):
bool(int(f.read()))[/code2]
Computer HP Probook 4510s CPU Intel Pentium Dual-Core T4400 Video Intel GMA 4500 Tablet ASUS Nexus 7 2013 (Wi-Fi)
Homepage - GitHub - Dropbox Referral - Copy Referral
Capisci di usare troppi editor di testo quando, cadendoti mezzo chilo di zucchero nel caffè, cerchi disperatamente di premere Ctrl+Z per rimediare... :D
Avatar utente
cristian_c
Accecante Asceta
Accecante Asceta
Messaggi: 23422
Iscrizione: lunedì 29 ottobre 2007, 11:31

Re: [Progetto] [Olifant] programma antifurto pc!

Messaggio da cristian_c »

Lo puoi pacchettizzare tutto insieme insieme al binario a 64 bit? Non ho voglia di cercare tutto il thread x il download, tu ce l'hai nel PC :)
Comunque do un'occhiata al file py :-)

(per pacchettizzare intendo metterlo semplicemente in un tarball, non voglio nessun debian :p )
Ecco il tarball con le modifiche: https://dl.dropboxusercontent.com/u/516 ... nt.tar.bz2 ;)
Il binario di libdeviceblock a 64 bit non ce l'ho. Comunque, puoi generarlo tranquillamente tramite lo script in libpower :)
davideddu ha scritto:Ti sconsiglio di tenere un file sempre aperto in lettura... piuttosto salvati il nome del file in un attributo e per comodità usa with per aprirlo, sai come si usa?
[code2=python]with open("/path/to/file", "mode") as f:
f.write("whatever")
# oppure
myvar = f.read()

# no need to close[/code2]

Praticamente cambia questo
[code2=python]def __isCablePlugged(self):
data_ac = self.__f_ac.read()
self.__f_ac.seek(0) #rewinding
return bool(int(data_ac))[/code2]
con questo (aggiusta l'indentazione)
[code2=python]def __isCablePlugged(self):
with open(self.__f_ac.name, "r"):
bool(int(f.read()))[/code2]
Ho capito, ma i file vengono aperti all'interno di __initSystemFiles, non dentro i vari __isSomething**ed (a parte quello relativo alla batteria che viene aperto all'interno di __isBatteryInserted. Ma in questo caso, logicamente, non potevo far altro che spostare l'apertura del file dal metodo di inizializzazione generale a quello specifico) ;)
UP! Unreal Project: il futuro inizia qui. Crusade è tra noi
È scienza!
Avatar utente
davideddu
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1546
Iscrizione: martedì 2 novembre 2010, 20:35
Desktop: Unity
Distribuzione: Ubuntu 14.04 AMD64
Località: Pennsylvania, Stati Uniti
Contatti:

Re: [Progetto] [Olifant] programma antifurto pc!

Messaggio da davideddu »

cristian_c [url=http://forum.ubuntu-it.org/viewtopic.php?p=4455527#p4455527][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:
Lo puoi pacchettizzare tutto insieme insieme al binario a 64 bit? Non ho voglia di cercare tutto il thread x il download, tu ce l'hai nel PC
Comunque do un'occhiata al file py

(per pacchettizzare intendo metterlo semplicemente in un tarball, non voglio nessun debian :p )
Ecco il tarball con le modifiche: https://dl.dropboxusercontent.com/u/516 ... nt.tar.bz2
Il binario di libdeviceblock a 64 bit non ce l'ho. Comunque, puoi generarlo tranquillamente tramite lo script in libpower
davideddu ha scritto:Ti sconsiglio di tenere un file sempre aperto in lettura... piuttosto salvati il nome del file in un attributo e per comodità usa with per aprirlo, sai come si usa?
[code2=python]with open("/path/to/file", "mode") as f:
f.write("whatever")
# oppure
myvar = f.read()

# no need to close[/code2]

Praticamente cambia questo
[code2=python]def __isCablePlugged(self):
data_ac = self.__f_ac.read()
self.__f_ac.seek(0) #rewinding
return bool(int(data_ac))[/code2]
con questo (aggiusta l'indentazione)
[code2=python]def __isCablePlugged(self):
with open(self.__f_ac.name, "r"):
bool(int(f.read()))[/code2]
Ho capito, ma i file vengono aperti all'interno di __initSystemFiles, non dentro i vari __isSomething**ed (a parte quello relativo alla batteria che viene aperto all'interno di __isBatteryInserted. Ma in questo caso, logicamente, non potevo far altro che spostare l'apertura del file dal metodo di inizializzazione generale a quello specifico) ;)
Non mi funziona lo script, mi dice che...

Codice: Seleziona tutto

DeviceLocker.cpp: In member function ‘bool DeviceLocker::lockEmAll()’:
DeviceLocker.cpp:115:16: error: ‘close’ was not declared in this scope
      close(fdev);
                ^
DeviceLocker.cpp: In member function ‘void DeviceLocker::unlockEmAll()’:
DeviceLocker.cpp:161:17: error: ‘close’ was not declared in this scope
    close(pow_dev);
                 ^
DeviceLocker.cpp:166:17: error: ‘close’ was not declared in this scope
    close(key_dev);
                 ^
DeviceLocker.cpp:171:17: error: ‘close’ was not declared in this scope
    close(lid_dev);
                 ^
DeviceLocker.cpp: In function ‘int main(int, char**)’:
DeviceLocker.cpp:195:10: error: ‘sleep’ was not declared in this scope
  sleep(10);
          ^
g++: error: devicelock.o: No such file or directory
rm: cannot remove ‘devicelock.o’: No such file or directory
mv: cannot stat ‘libdevicelock.so’: No such file or directory
Per i file aperti, ecc: beh in pratica (se non ricordo male), la funzione di init non serve a un cavolo! :) È meglio inizializzare i file ogni volta :)
Computer HP Probook 4510s CPU Intel Pentium Dual-Core T4400 Video Intel GMA 4500 Tablet ASUS Nexus 7 2013 (Wi-Fi)
Homepage - GitHub - Dropbox Referral - Copy Referral
Capisci di usare troppi editor di testo quando, cadendoti mezzo chilo di zucchero nel caffè, cerchi disperatamente di premere Ctrl+Z per rimediare... :D
Avatar utente
cristian_c
Accecante Asceta
Accecante Asceta
Messaggi: 23422
Iscrizione: lunedì 29 ottobre 2007, 11:31

Re: [Progetto] [Olifant] programma antifurto pc!

Messaggio da cristian_c »

Non mi funziona lo script, mi dice che...
Sia io che mibofra abbiamo provato con lo stesso tarball che hai usato tu :sisi: Nel caso di mibofra, escono i tuoi stessi errori, mentre nel mio caso la compilazione e la creazione del file .so fila liscia. Potrebbe esserci questa differenza per via del fatto che io uso precise mentre lui usa saucy? ;)

Ho trovato anche questo: http://stackoverflow.com/questions/1215 ... lared-in-t :)
Se provi a sostituire:

Codice: Seleziona tutto

#include <fcntl.h>
con:

Codice: Seleziona tutto

#include <unistd.h>
che cosa succede lanciando nuovamente lo script? :)
Per i file aperti, ecc: beh in pratica (se non ricordo male), la funzione di init non serve a un cavolo! :-) È meglio inizializzare i file ogni volta :-)
Se ritieni migliore e più performante questo tipo di soluzione, puoi procedere modificando il codice esistente (olifant.py) :)
UP! Unreal Project: il futuro inizia qui. Crusade è tra noi
È scienza!
Avatar utente
davideddu
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1546
Iscrizione: martedì 2 novembre 2010, 20:35
Desktop: Unity
Distribuzione: Ubuntu 14.04 AMD64
Località: Pennsylvania, Stati Uniti
Contatti:

Re: [Progetto] [Olifant] programma antifurto pc!

Messaggio da davideddu »

cristian_c [url=http://forum.ubuntu-it.org/viewtopic.php?p=4457123#p4457123][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:
Non mi funziona lo script, mi dice che...
Sia io che mibofra abbiamo provato con lo stesso tarball che hai usato tu :sisi: Nel caso di mibofra, escono i tuoi stessi errori, mentre nel mio caso la compilazione e la creazione del file .so fila liscia. Potrebbe esserci questa differenza per via del fatto che io uso precise mentre lui usa saucy? ;)

Ho trovato anche questo: http://stackoverflow.com/questions/1215 ... lared-in-t :)
Se provi a sostituire:

Codice: Seleziona tutto

#include <fcntl.h>
con:

Codice: Seleziona tutto

#include <unistd.h>
che cosa succede lanciando nuovamente lo script? :)
Per i file aperti, ecc: beh in pratica (se non ricordo male), la funzione di init non serve a un cavolo! :-) È meglio inizializzare i file ogni volta :-)
Se ritieni migliore e più performante questo tipo di soluzione, puoi procedere modificando il codice esistente (olifant.py) :)
Meglio, ma ancora crash (sì, ho saucy):

Codice: Seleziona tutto

DeviceLocker.cpp: In member function ‘bool DeviceLocker::lockEmAll()’:
DeviceLocker.cpp:87:31: error: ‘O_RDONLY’ was not declared in this scope
     fdev = open(path.c_str(), O_RDONLY);
                               ^
DeviceLocker.cpp:87:39: error: ‘open’ was not declared in this scope
     fdev = open(path.c_str(), O_RDONLY);
                                       ^
g++: error: devicelock.o: No such file or directory
rm: cannot remove ‘devicelock.o’: No such file or directory
mv: cannot stat ‘libdevicelock.so’: No such file or directory
olifant.py
http://paste.ubuntu.com/6181417/
Computer HP Probook 4510s CPU Intel Pentium Dual-Core T4400 Video Intel GMA 4500 Tablet ASUS Nexus 7 2013 (Wi-Fi)
Homepage - GitHub - Dropbox Referral - Copy Referral
Capisci di usare troppi editor di testo quando, cadendoti mezzo chilo di zucchero nel caffè, cerchi disperatamente di premere Ctrl+Z per rimediare... :D
Avatar utente
cristian_c
Accecante Asceta
Accecante Asceta
Messaggi: 23422
Iscrizione: lunedì 29 ottobre 2007, 11:31

Re: [Progetto] [Olifant] programma antifurto pc!

Messaggio da cristian_c »

Ciao!
Meglio, ma ancora crash (sì, ho saucy):
Ho fatto testare nuovamente a mibofra. Ma, oltre all'aggiunta del file header indicato, gli ho fatto includere nuovamente fcntl.h. A questo punto, lo script non ha più generato errori :)
Ho guardato il codice e l'ho confrontato con quello in sviluppo. In pratica, hai usato dei 'with open' al posto di open e close, giusto? Ma i file vengono chiusi automaticamente alla fine del blocco with? Ho notato che hai rimosso i seek. Non sono necessari? :) E, inoltre, hai svuotato __closeSystemFiles. Ha senso che, dopo le modifiche, esista ancora? ;)

Comunque, ho scoperto un altro problema. Nella board di supporto un utente ha postato questo:

Codice: Seleziona tutto

ls /sys/class/power_supply/
ADP1  BAT1
Ciò significa che il codice che stavamo sviluppando non è valido in tutti i casi (parlo della parte relativa al cavo di alimentazione, quella riguardante la batteria va bene :) ). Come risolviamo? :D
UP! Unreal Project: il futuro inizia qui. Crusade è tra noi
È scienza!
Avatar utente
davideddu
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1546
Iscrizione: martedì 2 novembre 2010, 20:35
Desktop: Unity
Distribuzione: Ubuntu 14.04 AMD64
Località: Pennsylvania, Stati Uniti
Contatti:

Re: [Progetto] [Olifant] programma antifurto pc!

Messaggio da davideddu »

cristian_c [url=http://forum.ubuntu-it.org/viewtopic.php?p=4465368#p4465368][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:Ciao!
Meglio, ma ancora crash (sì, ho saucy):
Ho fatto testare nuovamente a mibofra. Ma, oltre all'aggiunta del file header indicato, gli ho fatto includere nuovamente fcntl.h. A questo punto, lo script non ha più generato errori
Ho guardato il codice e l'ho confrontato con quello in sviluppo. In pratica, hai usato dei 'with open' al posto di open e close, giusto? Ma i file vengono chiusi automaticamente alla fine del blocco with? Ho notato che hai rimosso i seek. Non sono necessari? E, inoltre, hai svuotato __closeSystemFiles. Ha senso che, dopo le modifiche, esista ancora?

Comunque, ho scoperto un altro problema. Nella board di supporto un utente ha postato questo:

Codice: Seleziona tutto

ls /sys/class/power_supply/
ADP1  BAT1
Ciò significa che il codice che stavamo sviluppando non è valido in tutti i casi (parlo della parte relativa al cavo di alimentazione, quella riguardante la batteria va bene :) ). Come risolviamo? :D
La figata di with è che fa tutto da solo, apre e chiude :)
I seek non sono più necessari perché non devi più dire a Python di tornare indietro, perché riaprendo il file ricomincia dall'inizio.
E sì, __closeSystemFiles si può togliere perché fa tutto with (forse l'ho lasciata per farti notare che non serve, o perché non avevo voglia di controllare dove veniva usata :D )

Cos'è ADP? Non sarà un gruppo di continuità? Oppure è quello che per noi è AC?
Fatti dare la lista del contenuto e eventualmente il contenuto dei file nel primo livello della directory (se entri nelle subdirectory entri in un loop e rimani a fare il coglione girando in tondo nelle stesse directory all'infinito :D )
Computer HP Probook 4510s CPU Intel Pentium Dual-Core T4400 Video Intel GMA 4500 Tablet ASUS Nexus 7 2013 (Wi-Fi)
Homepage - GitHub - Dropbox Referral - Copy Referral
Capisci di usare troppi editor di testo quando, cadendoti mezzo chilo di zucchero nel caffè, cerchi disperatamente di premere Ctrl+Z per rimediare... :D
Avatar utente
cristian_c
Accecante Asceta
Accecante Asceta
Messaggi: 23422
Iscrizione: lunedì 29 ottobre 2007, 11:31

Re: [Progetto] [Olifant] programma antifurto pc!

Messaggio da cristian_c »

La figata di with è che fa tutto da solo, apre e chiude :-)
I seek non sono più necessari perché non devi più dire a Python di tornare indietro, perché riaprendo il file ricomincia dall'inizio.
E sì, __closeSystemFiles si può togliere perché fa tutto with (forse l'ho lasciata per farti notare che non serve, o perché non avevo voglia di controllare dove veniva usata : - D )
Ok, elimino __closeSystemFiles perché viene chiamato soltanto dal distruttore di Olifant (per essere sicuro, ho 'greppato' su tutto il pacchetto :p ). A proposito, che ne facciamo del distruttore? : - D
Cos'è ADP? Non sarà un gruppo di continuità? Oppure è quello che per noi è AC?
Fatti dare la lista del contenuto e eventualmente il contenuto dei file nel primo livello della directory (se entri nelle subdirectory entri in un loop e rimani a fare il co****ne girando in tondo nelle stesse directory all'infinito : - D )
Ho trovato qualche informazione (tralasciando la marea di link commerciali) qui: http://en.wikipedia.org/wiki/USB_On-The-Go :-)
Inoltre, ho chiesto all'utente se può mostrare il contenuto della directory. Aspetto risposta ;)

Nel caso, considerando anche questa situazione, tu come modificheresti il codice di __initSystemFiles? A dir la verità, io sono ancora molto indeciso (sopratutto per quanto riguarda l'utilizzo di un doppio if [if ... else if ...]) :shy: :D

Fammi sapere se, con l'aggiunta di #include <fcntl.h> al file di libpower, scompaiono gli errori durante l'esecuzione dello script :ciao:
UP! Unreal Project: il futuro inizia qui. Crusade è tra noi
È scienza!
Avatar utente
davideddu
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1546
Iscrizione: martedì 2 novembre 2010, 20:35
Desktop: Unity
Distribuzione: Ubuntu 14.04 AMD64
Località: Pennsylvania, Stati Uniti
Contatti:

Re: [Progetto] [Olifant] programma antifurto pc!

Messaggio da davideddu »

cristian_c [url=http://forum.ubuntu-it.org/viewtopic.php?p=4468783#p4468783][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:
La figata di with è che fa tutto da solo, apre e chiude
I seek non sono più necessari perché non devi più dire a Python di tornare indietro, perché riaprendo il file ricomincia dall'inizio.
E sì, __closeSystemFiles si può togliere perché fa tutto with (forse l'ho lasciata per farti notare che non serve, o perché non avevo voglia di controllare dove veniva usata : - D )
Ok, elimino __closeSystemFiles perché viene chiamato soltanto dal distruttore di Olifant (per essere sicuro, ho 'greppato' su tutto il pacchetto : p ). A proposito, che ne facciamo del distruttore?
Cos'è ADP? Non sarà un gruppo di continuità? Oppure è quello che per noi è AC?
Fatti dare la lista del contenuto e eventualmente il contenuto dei file nel primo livello della directory (se entri nelle subdirectory entri in un loop e rimani a fare il co****ne girando in tondo nelle stesse directory all'infinito : - D )
Ho trovato qualche informazione (tralasciando la marea di link commerciali) qui: http://en.wikipedia.org/wiki/USB_On-The-Go : - )
Inoltre, ho chiesto all'utente se può mostrare il contenuto della directory. Aspetto risposta ; )

Nel caso, considerando anche questa situazione, tu come modificheresti il codice di __initSystemFiles? A dir la verità, io sono ancora molto indeciso (sopratutto per quanto riguarda l'utilizzo di un doppio if [if ... else if ...]) : D

Fammi sapere se, con l'aggiunta di #include <fcntl.h> al file di libpower, scompaiono gli errori durante l'esecuzione dello script
Non compila!!

Codice: Seleziona tutto

DeviceLocker.cpp: In member function ‘bool DeviceLocker::lockEmAll()’:
DeviceLocker.cpp:115:16: error: ‘close’ was not declared in this scope
      close(fdev);
                ^
DeviceLocker.cpp: In member function ‘void DeviceLocker::unlockEmAll()’:
DeviceLocker.cpp:161:17: error: ‘close’ was not declared in this scope
    close(pow_dev);
                 ^
DeviceLocker.cpp:166:17: error: ‘close’ was not declared in this scope
    close(key_dev);
                 ^
DeviceLocker.cpp:171:17: error: ‘close’ was not declared in this scope
    close(lid_dev);
                 ^
DeviceLocker.cpp: In function ‘int main(int, char**)’:
DeviceLocker.cpp:195:10: error: ‘sleep’ was not declared in this scope
  sleep(10);
          ^
g++: error: devicelock.o: No such file or directory
rm: cannot remove ‘devicelock.o’: No such file or directory
mv: cannot stat ‘libdevicelock.so’: No such file or directory
Cosa intendi per "distruttore"? __del__? Certo, cosa te ne fai? Una linea in più per le statistiche? :p

ADP, non credo sia quello la... USB OTG è usato nei cellulari (il mio vecchio ce l'ha ma non è attivato nel kernel e non è alimentato, quello nuovo non lo so, lo devo ancora "rootare"...) per attaccare pennette USB attraverso la porta micro USB, con un adattatore. Se quello è un computer sei completamente fuori strada, hai mai visto un computer con una porta micro USB?

E meno male che non ti convince! Come ho fatto a non vederlo??
http://paste.ubuntu.com/6280445/
Innanzitutto mettere la documentazione all'inizio della roba non guasta mai (ricordati di mandarla a capo ogni 75 caratteri (non sono sicuro, era una cosa del genere) altrimenti i tizi di PEP si arrabbiano :D
Poi non capisco dove vuoi arrivare con quelle definizioni delle variabili (che avrai cura di correggerti tu); ripassati i concetti di scopes e name spaces! Stai facendo un casino assurdo! Le variabili definite così, senza niente all'inizio, dentro un metodo, rimangono dentro quel metodo ergo se in un altro metodo chiedi al pitoncello cosa c'è in una di quelle variabili ti dice «oh Cristian, o la finisci o ti mollo un AttributeError che non tocchi neanche per terra!» :D , a meno che non le dichiari prima come globali con lo statement global ;)
Ripassati il 9.1 e il 9.2 ;) http://docs.python.org/2/tutorial/class ... nd-objects
Computer HP Probook 4510s CPU Intel Pentium Dual-Core T4400 Video Intel GMA 4500 Tablet ASUS Nexus 7 2013 (Wi-Fi)
Homepage - GitHub - Dropbox Referral - Copy Referral
Capisci di usare troppi editor di testo quando, cadendoti mezzo chilo di zucchero nel caffè, cerchi disperatamente di premere Ctrl+Z per rimediare... :D
Avatar utente
cristian_c
Accecante Asceta
Accecante Asceta
Messaggi: 23422
Iscrizione: lunedì 29 ottobre 2007, 11:31

Re: [Progetto] [Olifant] programma antifurto pc!

Messaggio da cristian_c »

Non compila!!
Prova con questo:
Spoiler
Mostra

Codice: Seleziona tutto

#include <fcntl.h>
#include <unistd.h>
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <errno.h>
#include <linux/input.h>
#include <dirent.h>
#include <string.h>

using namespace std;

const string ROOT_DEV = "/dev/input";
const int DEV_TO_LOCK = 3;

const string POWER_NAME = "Power";
const string POWER_PHYS = "PNP0C0C";

const string KEYBOARD_NAME = "keyboard";
const string KEYBOARD_PHYS = "isa0060";

const string LID_NAME = "Lid";
const string LID_PHYS = "PNP0C0D";

class DeviceLocker{
	private:
	
	int pow_dev;
	int key_dev;
	int lid_dev;

	bool active; //used for active wait
	
	bool isThisDevice(const int dev,const string devName,const string devPhys){
		char name[256] = "Unknown";
		char phys[256] = "Unknown";

		int res1 = 0;
		int res2 = 0;
		bool result = false;

		res1 = ioctl(dev, EVIOCGNAME(sizeof(name)), name); //getting name of peripheral 
		if ( res1 < 0)
			cerr << "Failed getting name of " << devName << endl;

		res2 = ioctl(dev, EVIOCGPHYS(sizeof(phys)), phys);


		if (res1>=0){
			if( string(name).find(devName) != string::npos ) 
					result = true;
			else if (res2>=0)
				if( string(phys).find(devPhys) != string::npos)
					result = true;

		}

		return result;
	}

	public:

	DeviceLocker(){
		pow_dev = -1;
		key_dev = -1;
		lid_dev = -1;
		active = false;
	}

	
	bool lockEmAll(){
		int fdev = -1;
		int res = 0;
		int size = sizeof(struct input_event);
		struct dirent* de = NULL;
  		DIR* d = NULL;

		//opening directory
		d=opendir(ROOT_DEV.c_str());
 	 	if(d == NULL){
    			cerr << "Couldn't open " << ROOT_DEV << "directory" << endl;
    			return(2);
  		}

		while(de = readdir(d)){
			if(string(de->d_name).find("event") != string::npos){ //we're interested in events
				string path = ROOT_DEV+"/"+de->d_name;
				fdev = open(path.c_str(), O_RDONLY);

				if(isThisDevice(fdev,POWER_NAME,POWER_PHYS)){
					pow_dev = fdev;
					res = ioctl(pow_dev, EVIOCGRAB, 1);
					if(res < 0)
						cerr << "Failed acquiring exclusive lock on power\n";
					
					fdev = -1;
					
				}else if(isThisDevice(fdev,KEYBOARD_NAME,KEYBOARD_PHYS)){
					key_dev = fdev;
					res = ioctl(key_dev, EVIOCGRAB, 1);
					if(res < 0)
						printf("errno = %d, '%s'", errno, strerror(errno));
						perror("\nThe following error occurred");
						cerr << "\nFailed acquiring exclusive lock on keyboard\n";
					
					fdev = -1;
					
				}else if(isThisDevice(fdev,LID_NAME,LID_PHYS)){
					lid_dev = fdev;
					res = ioctl(lid_dev, EVIOCGRAB, 1);
					if(res < 0)
						cerr << "Failed acquiring exclusive lock on lid\n";
					
					fdev = -1;
				}else
					close(fdev);
			}
		}

		
		if(pow_dev == -1)
			cerr << "Couldn't find power device\n";

		if(key_dev == -1)
			cerr << "Couldn't find keyboard device\n";

		if(lid_dev == -1)
			cerr << "Couldn't find lid device\n";

		

		return ( (pow_dev != -1) && (key_dev != -1) && (lid_dev != -1) );

	}


	bool activeLockEmAll(){
		struct input_event ev[64];
		if(lockEmAll()){
			active = true; //active mode
			int result = 0;
			fd_set set;
       			struct timeval timeout;
			FD_ZERO (&set);
       			FD_SET (pow_dev, &set);

			timeout.tv_sec = 0; 
       			timeout.tv_usec = 500; //timeout each 500 usecond

			while(active && (result == 0)){
				result = select(FD_SETSIZE,&set,NULL,NULL,&timeout);
				FD_SET (pow_dev, &set);
			}
			return true;
		}else
			return false;		
	}

	void unlockEmAll(){
		active = false;
		if(pow_dev != -1){
			close(pow_dev);
			pow_dev = -1;
		}

		if(key_dev != -1){
			close(key_dev);
			key_dev = -1;
		}

		if(lid_dev != -1){
			close(lid_dev);
			lid_dev = -1;
		}
	}

	~DeviceLocker(){
		unlockEmAll();
	}

};

extern "C" {
	DeviceLocker* DeviceLocker_new(){ return new DeviceLocker(); }
	bool lock_em_all(DeviceLocker* dl){ return dl->lockEmAll(); }
	bool active_lock_em_all(DeviceLocker* dl){ return dl->activeLockEmAll(); }
	void unlock_em_all(DeviceLocker* dl){ dl->unlockEmAll(); }
	void free_object(DeviceLocker* dl) { delete dl; }
}


//An example
int main(int arcg,char* argv[]){
	DeviceLocker dl = DeviceLocker();
	dl.activeLockEmAll();
	sleep(10);
	dl.unlockEmAll();
}
ADP, non credo sia quello la... USB OTG è usato nei cellulari (il mio vecchio ce l'ha ma non è attivato nel kernel e non è alimentato, quello nuovo non lo so, lo devo ancora "rootare"...) per attaccare pennette USB attraverso la porta micro USB, con un adattatore. Se quello è un computer sei completamente fuori strada, hai mai visto un computer con una porta micro USB?
Ho chiesto all'utente in questione di postare il contenuto della directory in questo topic, ma (ancora) non mi ha fatto sapere nulla :shy:
E meno male che non ti convince! Come ho fatto a non vederlo??
http://paste.ubuntu.com/6280445/
Innanzitutto mettere la documentazione all'inizio della roba non guasta mai (ricordati di mandarla a capo ogni 75 caratteri (non sono sicuro, era una cosa del genere) altrimenti i tizi di PEP si arrabbiano
Ti riferisci alla sostituzione di:

Codice: Seleziona tutto

#opens system files
con:

Codice: Seleziona tutto

"""Initializes the files needed later by the program.
        """
o ad altro? :-)
Poi non capisco dove vuoi arrivare con quelle definizioni delle variabili (che avrai cura di correggerti tu); ripassati i concetti di scopes e name spaces! Stai facendo un casino assurdo! Le variabili definite così, senza niente all'inizio, dentro un metodo, rimangono dentro quel metodo ergo se in un altro metodo chiedi al pitoncello cosa c'è in una di quelle variabili ti dice «oh Cristian, o la finisci o ti mollo un AttributeError che non tocchi neanche per terra!» :D , a meno che non le dichiari prima come globali con lo statement global ;)
Ripassati il 9.1 e il 9.2 ;) http://docs.python.org/2/tutorial/class ... nd-objects
Ho letto con attenzione i due paragrafi che hai indicato. Però non ho capito il problema della definizione delle variabili in quel metodo, dato che vengono utilizzate soltanto all'interno di quello scope :sisi:
UP! Unreal Project: il futuro inizia qui. Crusade è tra noi
È scienza!
Avatar utente
davideddu
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1546
Iscrizione: martedì 2 novembre 2010, 20:35
Desktop: Unity
Distribuzione: Ubuntu 14.04 AMD64
Località: Pennsylvania, Stati Uniti
Contatti:

Re: [Progetto] [Olifant] programma antifurto pc!

Messaggio da davideddu »

Non cito perché non ho voglia di cancellare le faccine :D

1) Ok, ora funziona, però vedi punto 3 perché non ho voglia di correggerlo per te :p

2) Bene, fammi sapere ;)

3) Ok, ti faccio un esempio pratico, è più difficile a dirsi che a farsi ;)

Codice: Seleziona tutto

>>> myvar = "Hello World!"
>>> print myvar
Hello World!
>>> def funzione():
...     myvar = "Ciao Mondo!"
...     print myvar
... 
>>> funzione()
Ciao Mondo!
>>> print myvar
Hello World!
>>> def funzione2():
...     global myvar
...     myvar = "Ma la volpe col suo balzo ha raggiunto il quieto Fido"
...     print myvar
... 
>>> funzione2()
Ma la volpe col suo balzo ha raggiunto il quieto Fido
>>> print myvar
Ma la volpe col suo balzo ha raggiunto il quieto Fido
>>> def funzione3():
...     myvar2 = "The quick brown fox jumps over the brown lazy dog"
...     print myvar2
... 
>>> funzione3()
The quick brown fox jumps over the brown lazy dog
>>> print myvar2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'myvar2' is not defined
Morale della favola: anche se una variabile esiste al di fuori di una funzione, le modifiche rimangono all'interno della funzione, a meno che non dici all'inizio della funzione (o del programma) che quella variabile deve essere considerata come globale. Idem, se definisci una variabile dentro una funzione e provi ad accederci dall'esterno, Python ti morde il gatto.

Altro esempio:

Codice: Seleziona tutto

>>> class IlMioOggetto(object):
...     myattr = "Il mio super-attributo"
...     
...     def __init__(self):
...             myvar = "Ciao"
...             self.printmyvar()
...             print myvar
...             
...             myattr = "Cane"
...             self.printmyattr()
...             self.printselfmyattr()
...             self.myattr = "Gatto"
...             self.printmyattr()
...             self.printselfmyattr()
...             print myattr
...             print self.myattr
...     
...     def printmyvar(self):
...             try:
...                     print myvar
...             except:
...                     print "Non c'è nessuna myvar da queste parti..."
...     
...     def printmyattr(self):
...             try:
...                     print myattr
...             except:
...                     print "Non c'è nessun myattr da queste parti..."
...     
...     def printselfmyattr(self):
...             # So già che c'è quindi mi risparmio il try :​D
...             print self.myattr
... 
>>> 
>>> a = IlMioOggetto()
Non c'è nessuna myvar da queste parti...
Ciao
Non c'è nessun myattr da queste parti...
Il mio super-attributo
Non c'è nessun myattr da queste parti...
Gatto
Cane
Gatto
Morale della favola: again, la roba delle funzioni rimane nelle funzioni; e se metti global all'inizio la variabile diventa globale, non resta dentro l'oggetto né dentro la funzione!
Quando usi self.attributo stai creando/modificando/leggendo un attributo (così come una funzione dentro un oggetto si chiama metodo, anche una variabile dentro un oggetto si chiama attributo) dentro l'oggetto. E tu ti chiederai, perché? Ricordi la storia del gatto e del cane al posto di self nella definizione della funzione? Quando esegui un metodo di un oggetto, python è così gentile da passarti l'istanza in esecuzione dell'oggetto stesso come primo argomento. In pratica, vedi quel "a = IlMioOggetto()" alla fine? Ecco, è come se ti stesse passando la variabile a. Non IlMioOggetto, ma a, non so se è chiara la differenza.
Comunque, stavo dicendo che py ha fatto da bravo e ti ha passato l'istanza dell'oggetto, che tu hai memorizzato come self. Eseguendo self.attributo = qualcosa gli stai dicendo «python, mi faresti la cortesia di prendere quest'istanza di IlMioOggetto che io ho chiamato self e di aggiungerci l'attributo "attributo"?»

È chiaro ora? ;)
Computer HP Probook 4510s CPU Intel Pentium Dual-Core T4400 Video Intel GMA 4500 Tablet ASUS Nexus 7 2013 (Wi-Fi)
Homepage - GitHub - Dropbox Referral - Copy Referral
Capisci di usare troppi editor di testo quando, cadendoti mezzo chilo di zucchero nel caffè, cerchi disperatamente di premere Ctrl+Z per rimediare... :D
Avatar utente
cristian_c
Accecante Asceta
Accecante Asceta
Messaggi: 23422
Iscrizione: lunedì 29 ottobre 2007, 11:31

Re: [Progetto] [Olifant] programma antifurto pc!

Messaggio da cristian_c »

1) Ok, ora funziona, però vedi punto 3 perché non ho voglia di correggerlo per te :-p
Scusa, ma quale codice avevi usato in precedenza? :D
2) Bene, fammi sapere ;-)
Dato che l'utente non si è fatto più vivo e preso atto dell'impossibilità di verificare cosa sia contenuto all'interno della cartella, ho pensato che potremmo lasciare le cose come sono. Nel caso si presentasse una circostanza analoga, la verificheremo e procederemo alla modifica del codice per tenere conto anche di tale eventualità :-)
Morale della favola: anche se una variabile esiste al di fuori di una funzione, le modifiche rimangono all'interno della funzione, a meno che non dici all'inizio della funzione (o del programma) che quella variabile deve essere considerata come globale. Idem, se definisci una variabile dentro una funzione e provi ad accederci dall'esterno, Python ti morde il gatto.
Ok, ma non ho capito il nesso con il mio caso, dato che le variabili definite all'interno del metodo non vengono utilizzate all'esterno :sisi:
Quando usi self.attributo stai creando/modificando/leggendo un attributo (così come una funzione dentro un oggetto si chiama metodo, anche una variabile dentro un oggetto si chiama attributo) dentro l'oggetto. E tu ti chiederai, perché? Ricordi la storia del gatto e del cane al posto di self nella definizione della funzione? Quando esegui un metodo di un oggetto, python è così gentile da passarti l'istanza in esecuzione dell'oggetto stesso come primo argomento. In pratica, vedi quel "a = IlMioOggetto()" alla fine? Ecco, è come se ti stesse passando la variabile a. Non IlMioOggetto, ma a, non so se è chiara la differenza.
Nel paste, self.__f_ac e self.__f_lid sono attributi (dell'istanza) che creo/modifico/leggo. Non riesco a capire quale sia il problema, dato che essi possono (e devono) essere utilizzati anche in altri metodi della classe ;)

P.S. Non ho ancora capito la storia dei commenti nel codice (cioè, quella relativa a # o """) :nono:

P.P.S. È giunta da mibofra la proposta di fare un salto in irc per discutere (sicuramente, riguardo olifant). Che ne dici? :p
UP! Unreal Project: il futuro inizia qui. Crusade è tra noi
È scienza!
Avatar utente
davideddu
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1546
Iscrizione: martedì 2 novembre 2010, 20:35
Desktop: Unity
Distribuzione: Ubuntu 14.04 AMD64
Località: Pennsylvania, Stati Uniti
Contatti:

Re: [Progetto] [Olifant] programma antifurto pc!

Messaggio da davideddu »

cristian_c [url=http://forum.ubuntu-it.org/viewtopic.php?p=4481561#p4481561][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:
1) Ok, ora funziona, però vedi punto 3 perché non ho voglia di correggerlo per te :-p
Scusa, ma quale codice avevi usato in precedenza? :D
2) Bene, fammi sapere ;-)
Dato che l'utente non si è fatto più vivo e preso atto dell'impossibilità di verificare cosa sia contenuto all'interno della cartella, ho pensato che potremmo lasciare le cose come sono. Nel caso si presentasse una circostanza analoga, la verificheremo e procederemo alla modifica del codice per tenere conto anche di tale eventualità :-)
Morale della favola: anche se una variabile esiste al di fuori di una funzione, le modifiche rimangono all'interno della funzione, a meno che non dici all'inizio della funzione (o del programma) che quella variabile deve essere considerata come globale. Idem, se definisci una variabile dentro una funzione e provi ad accederci dall'esterno, Python ti morde il gatto.
Ok, ma non ho capito il nesso con il mio caso, dato che le variabili definite all'interno del metodo non vengono utilizzate all'esterno :sisi:
Quando usi self.attributo stai creando/modificando/leggendo un attributo (così come una funzione dentro un oggetto si chiama metodo, anche una variabile dentro un oggetto si chiama attributo) dentro l'oggetto. E tu ti chiederai, perché? Ricordi la storia del gatto e del cane al posto di self nella definizione della funzione? Quando esegui un metodo di un oggetto, python è così gentile da passarti l'istanza in esecuzione dell'oggetto stesso come primo argomento. In pratica, vedi quel "a = IlMioOggetto()" alla fine? Ecco, è come se ti stesse passando la variabile a. Non IlMioOggetto, ma a, non so se è chiara la differenza.
Nel paste, self.__f_ac e self.__f_lid sono attributi (dell'istanza) che creo/modifico/leggo. Non riesco a capire quale sia il problema, dato che essi possono (e devono) essere utilizzati anche in altri metodi della classe ;)

P.S. Non ho ancora capito la storia dei commenti nel codice (cioè, quella relativa a # o """) :nono:

P.P.S. È giunta da mibofra la proposta di fare un salto in irc per discutere (sicuramente, riguardo olifant). Che ne dici? :p
Non cito né uso faccine, puoi capire perché... -due punti D-

1) A cosa ti riferisci, alla libreria in C o al programma? Io dicevo che la compilazione funzionava, non il programma per intero...

2) Pazienza! Fai così!

3) (Morale della favola) Ora non il codice tra le mani, ma mi ricordo che definivi delle variabili dentro una funzione senza metterci il selfetto davanti e poi cercavi di accedervi da fuori, come se fossero globali. Ricontrolla il codice e provalo! Se vuoi un consiglio ti direi di usare Sublime Text (sì, lo so, è proprietario, ma è fighissimo e comodissimo: puoi premere Ctrl+B per eseguire lo script internamente al programma (teoricamente servirebbe per compilarlo, ma con Py lo esegue normalmente)

4) (ultimo quote) Rileggiti punto 3 -faccina sorridente- , evidentemente non mi riferivo a quello -faccina con occhiolino-

P.S.) I commenti # Python non li considera proprio. Se vuoi spiegare a cosa serve una funzione, mettici una stringa sotto la definizione. Vale anche per l'intero script (all'inizio dello script), per le funzioni, oggetti, attributi definiti subito dopo la definizione dell'oggetto
esempio:

Codice: Seleziona tutto

class Foo(object):
    """Descrizione oggetto
    """
    super_attributo = "Miao"
    """Questo attributo non serve a niente
    """
In questo modo se qualcuno dovesse usare Sphynx per creare la documentazione, o importare il tuo modulo nella shell e usare la funzione help, Python sfornerà la documentazione creata in questo modo.

P.P.S) Non so quanto sia fattibile... non sto seguendo molto il forum, e a questo si aggiunge il fatto che sono negli Stati Uniti ergo hai 6 ore in più di me, e considerando che torno a casa da scuola verso le 3 e in genere accendo il PC alle 4... se sei disponibile alle 10 di notte per me va bene -faccina felice-
Computer HP Probook 4510s CPU Intel Pentium Dual-Core T4400 Video Intel GMA 4500 Tablet ASUS Nexus 7 2013 (Wi-Fi)
Homepage - GitHub - Dropbox Referral - Copy Referral
Capisci di usare troppi editor di testo quando, cadendoti mezzo chilo di zucchero nel caffè, cerchi disperatamente di premere Ctrl+Z per rimediare... :D
Avatar utente
cristian_c
Accecante Asceta
Accecante Asceta
Messaggi: 23422
Iscrizione: lunedì 29 ottobre 2007, 11:31

Re: [Progetto] [Olifant] programma antifurto pc!

Messaggio da cristian_c »

Ciao, qualcosa si muove :D

Ho modificato il codice, dopo aver ricontrollato olifant.py. Quindi, ho eseguito l'applicazione e ho applicato alcune piccole correzioni. Sono quindi ritornato al problema iniziale, cioè:

Codice: Seleziona tutto

The following error occurred: Dispositivo o risorsa occupata
errno = 16, 'Dispositivo o risorsa occupata'
Failed acquiring exclusive lock on keyboard

The following error occurred: Dispositivo o risorsa occupata

Failed acquiring exclusive lock on keyboard
Quindi, dopo aver risolto (almeno per il momento) i problemi relativi alle directory di batteria e alimentazione esterna, ti allego il nuovo olifant.py (occorre rimuovere l'estensione .txt):
olifant.py.txt
olifant.py
(10.14 KiB) Scaricato 124 volte
1) A cosa ti riferisci, alla libreria in C o al programma? Io dicevo che la compilazione funzionava, non il programma per intero...
Alla libreria :D
3) (Morale della favola) Ora non il codice tra le mani, ma mi ricordo che definivi delle variabili dentro una funzione senza metterci il selfetto davanti e poi cercavi di accedervi da fuori, come se fossero globali. Ricontrolla il codice e provalo!
4) (ultimo quote) Rileggiti punto 3 -faccina sorridente- , evidentemente non mi riferivo a quello -faccina con occhiolino-
Ho ricontrollato il codice ma non ho trovato tale situazione. Comunque, se dovessero esserci errori di questo tipo che mi sono sfuggiti, chiunque può segnalarmeli ;)
P.S.) I commenti # Python non li considera proprio. Se vuoi spiegare a cosa serve una funzione, mettici una stringa sotto la definizione. Vale anche per l'intero script (all'inizio dello script), per le funzioni, oggetti, attributi definiti subito dopo la definizione dell'oggetto
esempio:

Codice: Seleziona tutto

class Foo(object):
    """Descrizione oggetto
    """
    super_attributo = "Miao"
    """Questo attributo non serve a niente
    """
In questo modo se qualcuno dovesse usare Sphynx per creare la documentazione, o importare il tuo modulo nella shell e usare la funzione help, Python sfornerà la documentazione creata in questo modo.
Ok, per adesso ho impostato i commenti """ solo per il metodo __initSystemFiles. Non so quanto sia utile trasformare anche i commenti degli altri metodi (quelli in #), considerato che sono abbastanza 'telegrafici' ed 'autoesplicativi'). Fammi sapere tu :)
P.P.S) Non so quanto sia fattibile... non sto seguendo molto il forum, e a questo si aggiunge il fatto che sono negli Stati Uniti ergo hai 6 ore in più di me, e considerando che torno a casa da scuola verso le 3 e in genere accendo il PC alle 4... se sei disponibile alle 10 di notte per me va bene -faccina felice-
Informo solamente che mibofra ti ha inviato un messaggio tramite jabber :p
UP! Unreal Project: il futuro inizia qui. Crusade è tra noi
È scienza!
Avatar utente
davideddu
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1546
Iscrizione: martedì 2 novembre 2010, 20:35
Desktop: Unity
Distribuzione: Ubuntu 14.04 AMD64
Località: Pennsylvania, Stati Uniti
Contatti:

Re: [Progetto] [Olifant] programma antifurto pc!

Messaggio da davideddu »

cristian_c [url=http://forum.ubuntu-it.org/viewtopic.php?p=4485712#p4485712][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:Ciao, qualcosa si muove :D

Ho modificato il codice, dopo aver ricontrollato olifant.py. Quindi, ho eseguito l'applicazione e ho applicato alcune piccole correzioni. Sono quindi ritornato al problema iniziale, cioè:

Codice: Seleziona tutto

The following error occurred: Dispositivo o risorsa occupata
errno = 16, 'Dispositivo o risorsa occupata'
Failed acquiring exclusive lock on keyboard

The following error occurred: Dispositivo o risorsa occupata

Failed acquiring exclusive lock on keyboard
Quindi, dopo aver risolto (almeno per il momento) i problemi relativi alle directory di batteria e alimentazione esterna, ti allego il nuovo olifant.py (occorre rimuovere l'estensione .txt):
olifant.py.txt
Domani provo, è mezzanotte qui... :)
Ho ricontrollato il codice ma non ho trovato tale situazione. Comunque, se dovessero esserci errori di questo tipo che mi sono sfuggiti, chiunque può segnalarmeli ;)
Controllerò anche quello ;)

Ok, per adesso ho impostato i commenti """ solo per il metodo __initSystemFiles. Non so quanto sia utile trasformare anche i commenti degli altri metodi (quelli in #), considerato che sono abbastanza 'telegrafici' ed 'autoesplicativi'). Fammi sapere tu :)
Apri semplicemente un modulo built-in, tipo os, con l'editor di testo, e guarda le funzioni, e capirai cosa è il caso rendere una documentazione o lasciare un commento.
P.P.S) Non so quanto sia fattibile... non sto seguendo molto il forum, e a questo si aggiunge il fatto che sono negli Stati Uniti ergo hai 6 ore in più di me, e considerando che torno a casa da scuola verso le 3 e in genere accendo il PC alle 4... se sei disponibile alle 10 di notte per me va bene -faccina felice-
Informo solamente che mibofra ti ha inviato un messaggio tramite jabber :p
[/quote]
Spiacente, non uso jabber! :) Mi trovate solo su Google+, Facebook, Whatsapp e email (modulo invio email anti-spam: http://davideddu.org/contact.php ). Se mi mandate un messaggio privato mi dovrebbe arrivare l'email dal forum, e in genere i MP li guardo perché mi incuriosiscono :D
Computer HP Probook 4510s CPU Intel Pentium Dual-Core T4400 Video Intel GMA 4500 Tablet ASUS Nexus 7 2013 (Wi-Fi)
Homepage - GitHub - Dropbox Referral - Copy Referral
Capisci di usare troppi editor di testo quando, cadendoti mezzo chilo di zucchero nel caffè, cerchi disperatamente di premere Ctrl+Z per rimediare... :D
Avatar utente
davideddu
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1546
Iscrizione: martedì 2 novembre 2010, 20:35
Desktop: Unity
Distribuzione: Ubuntu 14.04 AMD64
Località: Pennsylvania, Stati Uniti
Contatti:

Re: [Progetto] [Olifant] programma antifurto pc!

Messaggio da davideddu »

Ho provato lo script. Mi piace la struttura del programma, tuttavia Olifant non ha bisogno di essere un thread, dato che le operazioni threadizzate le esegui già in un altro thread.

Tuttavia non capisco neanche io perché non blocchi la tastiera - forse perché la stà già usando Xorg? Boh!
In ogni caso non ti posso nemmeno aiutare perché come sai non conosco il C++ (ma lo vorrei imparare, o quello o Java). Per quello devi vedere tu :)
Ho provato anche a attivare il blocco via USB e nemmeno quello funzia...

Devi controllartela tu quella roba, mi dispiace!
Computer HP Probook 4510s CPU Intel Pentium Dual-Core T4400 Video Intel GMA 4500 Tablet ASUS Nexus 7 2013 (Wi-Fi)
Homepage - GitHub - Dropbox Referral - Copy Referral
Capisci di usare troppi editor di testo quando, cadendoti mezzo chilo di zucchero nel caffè, cerchi disperatamente di premere Ctrl+Z per rimediare... :D
Scrivi risposta

Ritorna a “Progetti della Comunità”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 16 ospiti