Ho provato a trovare una soluzione, ma ancora non riesco a tirare nessun coniglio fuori dal cappelloScusami 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
[Progetto] [Olifant] programma antifurto pc!
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.
- 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.
- 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.
- cristian_c
- Accecante Asceta
- Messaggi: 23422
- Iscrizione: lunedì 29 ottobre 2007, 11:31
Re: [Progetto] [Olifant] programma antifurto pc!
- davideddu
- 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!
Perdonami per non aver mantenuto la promessa, qui negli USA non lo sto quasi usando il PC...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
Ho provato a trovare una soluzione, ma ancora non riesco a tirare nessun coniglio fuori dal cappelloScusami 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
È 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!
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...
- cristian_c
- Accecante Asceta
- Messaggi: 23422
- Iscrizione: lunedì 29 ottobre 2007, 11:31
Re: [Progetto] [Olifant] programma antifurto pc!
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)È probabile che sia così, tu considera entrambi i casi così funziona sia con i kernel nuovi (sys) che con i vecchi (proc).
- davideddu
- 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!
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 PCcristian_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
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)È probabile che sia così, tu considera entrambi i casi così funziona sia con i kernel nuovi (sys) che con i vecchi (proc).
Comunque do un'occhiata al file py
(per pacchettizzare intendo metterlo semplicemente in un tarball, non voglio nessun debian )
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...
- davideddu
- 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!
[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]
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...
- cristian_c
- Accecante Asceta
- Messaggi: 23422
- Iscrizione: lunedì 29 ottobre 2007, 11:31
Re: [Progetto] [Olifant] programma antifurto pc!
Ecco il tarball con le modifiche: https://dl.dropboxusercontent.com/u/516 ... nt.tar.bz2Lo 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 )
Il binario di libdeviceblock a 64 bit non ce l'ho. Comunque, puoi generarlo tranquillamente tramite lo script in libpower
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)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]
- davideddu
- 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!
Non mi funziona lo script, mi dice che...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:Ecco il tarball con le modifiche: https://dl.dropboxusercontent.com/u/516 ... nt.tar.bz2Lo 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 )
Il binario di libdeviceblock a 64 bit non ce l'ho. Comunque, puoi generarlo tranquillamente tramite lo script in libpower
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)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]
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
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...
- cristian_c
- Accecante Asceta
- Messaggi: 23422
- Iscrizione: lunedì 29 ottobre 2007, 11:31
Re: [Progetto] [Olifant] programma antifurto pc!
Sia io che mibofra abbiamo provato con lo stesso tarball che hai usato tu 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?Non mi funziona lo script, mi dice che...
Ho trovato anche questo: http://stackoverflow.com/questions/1215 ... lared-in-t
Se provi a sostituire:
Codice: Seleziona tutto
#include <fcntl.h>
Codice: Seleziona tutto
#include <unistd.h>
Se ritieni migliore e più performante questo tipo di soluzione, puoi procedere modificando il codice esistente (olifant.py)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 :-)
- davideddu
- 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!
Meglio, ma ancora crash (sì, ho saucy):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:Sia io che mibofra abbiamo provato con lo stesso tarball che hai usato tu 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?Non mi funziona lo script, mi dice che...
Ho trovato anche questo: http://stackoverflow.com/questions/1215 ... lared-in-t
Se provi a sostituire:con:Codice: Seleziona tutto
#include <fcntl.h>
che cosa succede lanciando nuovamente lo script?Codice: Seleziona tutto
#include <unistd.h>
Se ritieni migliore e più performante questo tipo di soluzione, puoi procedere modificando il codice esistente (olifant.py)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 :-)
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
http://paste.ubuntu.com/6181417/
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...
- cristian_c
- Accecante Asceta
- Messaggi: 23422
- Iscrizione: lunedì 29 ottobre 2007, 11:31
Re: [Progetto] [Olifant] programma antifurto pc!
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 erroriMeglio, ma ancora crash (sì, ho saucy):
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?olifant.py
http://paste.ubuntu.com/6181417/
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
- davideddu
- 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!
La figata di with è che fa tutto da solo, apre e chiudecristian_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!
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 erroriMeglio, ma ancora crash (sì, ho saucy):
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?olifant.py
http://paste.ubuntu.com/6181417/
Comunque, ho scoperto un altro problema. Nella board di supporto un utente ha postato questo: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?Codice: Seleziona tutto
ls /sys/class/power_supply/ ADP1 BAT1
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 )
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 )
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...
- cristian_c
- Accecante Asceta
- Messaggi: 23422
- Iscrizione: lunedì 29 ottobre 2007, 11:31
Re: [Progetto] [Olifant] programma antifurto pc!
Ok, elimino __closeSystemFiles perché viene chiamato soltanto dal distruttore di Olifant (per essere sicuro, ho 'greppato' su tutto il pacchetto ). A proposito, che ne facciamo del distruttore? : - DLa 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 )
Ho trovato qualche informazione (tralasciando la marea di link commerciali) qui: http://en.wikipedia.org/wiki/USB_On-The-Go :-)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 )
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 ...])
Fammi sapere se, con l'aggiunta di #include <fcntl.h> al file di libpower, scompaiono gli errori durante l'esecuzione dello script
- davideddu
- 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!
Non compila!!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: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?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 )
Ho trovato qualche informazione (tralasciando la marea di link commerciali) qui: http://en.wikipedia.org/wiki/USB_On-The-Go : - )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 )
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
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
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
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!» , 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
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...
- cristian_c
- Accecante Asceta
- Messaggi: 23422
- Iscrizione: lunedì 29 ottobre 2007, 11:31
Re: [Progetto] [Olifant] programma antifurto pc!
Prova con questo:Non compila!!
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();
}
Ho chiesto all'utente in questione di postare il contenuto della directory in questo topic, ma (ancora) non mi ha fatto sapere nullaADP, 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?
Ti riferisci alla sostituzione di: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
Codice: Seleziona tutto
#opens system files
Codice: Seleziona tutto
"""Initializes the files needed later by the program.
"""
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 scopePoi 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!» , 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
- davideddu
- 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!
1) Ok, ora funziona, però vedi punto 3 perché non ho voglia di correggerlo per te
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
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
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?
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...
- cristian_c
- Accecante Asceta
- Messaggi: 23422
- Iscrizione: lunedì 29 ottobre 2007, 11:31
Re: [Progetto] [Olifant] programma antifurto pc!
Scusa, ma quale codice avevi usato in precedenza?1) Ok, ora funziona, però vedi punto 3 perché non ho voglia di correggerlo per te :-p
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à :-)2) Bene, fammi sapere ;-)
Ok, ma non ho capito il nesso con il mio caso, dato che le variabili definite all'interno del metodo non vengono utilizzate all'esternoMorale 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.
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 classeQuando 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.
P.S. Non ho ancora capito la storia dei commenti nel codice (cioè, quella relativa a # o """)
P.P.S. È giunta da mibofra la proposta di fare un salto in irc per discutere (sicuramente, riguardo olifant). Che ne dici?
- davideddu
- 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!
Non cito né uso faccine, puoi capire perché... -due punti D-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:Scusa, ma quale codice avevi usato in precedenza?1) Ok, ora funziona, però vedi punto 3 perché non ho voglia di correggerlo per te :-p
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à :-)2) Bene, fammi sapere ;-)
Ok, ma non ho capito il nesso con il mio caso, dato che le variabili definite all'interno del metodo non vengono utilizzate all'esternoMorale 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.
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 classeQuando 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.
P.S. Non ho ancora capito la storia dei commenti nel codice (cioè, quella relativa a # o """)
P.P.S. È giunta da mibofra la proposta di fare un salto in irc per discutere (sicuramente, riguardo olifant). Che ne dici?
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
"""
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-
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...
- cristian_c
- Accecante Asceta
- Messaggi: 23422
- Iscrizione: lunedì 29 ottobre 2007, 11:31
Re: [Progetto] [Olifant] programma antifurto pc!
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
Alla libreria1) A cosa ti riferisci, alla libreria in C o al programma? Io dicevo che la compilazione funzionava, non il programma per intero...
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!
Ho ricontrollato il codice ma non ho trovato tale situazione. Comunque, se dovessero esserci errori di questo tipo che mi sono sfuggiti, chiunque può segnalarmeli4) (ultimo quote) Rileggiti punto 3 -faccina sorridente- , evidentemente non mi riferivo a quello -faccina con occhiolino-
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 tuP.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: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.Codice: Seleziona tutto
class Foo(object): """Descrizione oggetto """ super_attributo = "Miao" """Questo attributo non serve a niente """
Informo solamente che mibofra ti ha inviato un messaggio tramite jabberP.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-
- davideddu
- 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!
Domani provo, è mezzanotte qui... :)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è: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):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
Controllerò anche quello ;)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 ;)
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.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 :)
[/quote]Informo solamente che mibofra ti ha inviato un messaggio tramite jabber :pP.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-
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
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...
- davideddu
- 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!
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!
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...
Chi c’è in linea
Visualizzano questa sezione: 0 utenti iscritti e 16 ospiti