Sono curioso di sapere come Timing è in grado di conoscere la quantità di tempo che trascorri in un determinato file. Capisco che sia necessario il permesso di accessibilità, ma dopo, come è in grado di rilevare ciò che è attualmente sullo schermo, oltre ad accedere al percorso di un determinato file. Trovo intrigante, ad esempio, che sappia che sono su Xcode, ma come fa a sapere che sto lavorando su un file specifico, all'interno di Xcode?Come l'applicazione di sincronizzazione di Mac OS X può tracciare i file
risposta
Non lavoro su Temporizzazione, quindi posso solo fare un'ipotesi su come è stata implementata la loro app.
Il tempismo richiede di tenere traccia di tre punti dati principali: le app utilizzate, i siti Web visitati e i documenti modificati.
Per le applicazioni, il tempo probabilmente ascolta la notifica NSWorkspaceDidLaunchApplicationNotification
, che contiene informazioni sull'applicazione appena avviata. Per controllare le applicazioni attualmente aperte quando Timing è lanciato, probabilmente controlla i processi non-fondo da eventi di sistema, forse in questo modo:
osascript -e 'tell application "System Events" to get name of (processes where background only is false)'
(Fonte Get list of running Apps on Mac OS X in Bash?)
Per la storia, Timing potrebbe utilizzare l'HTML5 API di cronologia con Safari (non so quali browser supporti che Timing supporterà con questa funzione), o prendere un approccio come Charles Proxy e monitorare tutti i pacchetti e le richieste in entrata e in uscita. L'implementazione può variare a seconda se il Timing richiede i privilegi di amministratore.
Per i documenti, il cronometro potrebbe utilizzare il comando lsof
come suggerito da Droppy nei propri commenti, oppure potrebbe utilizzare una delle interfacce Apple. Pre-El Capitan, Apple ha elencato i documenti recenti in un file plist sul percorso ~/Library/Preferences/com.apple.recentitems.plist
. Nelle versioni più recenti di MacOS El Capitan, è possibile utilizzare il comando mdfind
e specificare il valore kMDItemContentModificationDate
per trovare i file modificati tra due date:
mdfind -onlyin $HOME '((kMDItemContentModificationDate > $time.now(-60m)) && (kMDItemContentModificationDate < $time.now()))' | grep -v /Library/
(Fonte Alfred)
- 1. Sincronizzazione dati iOS e Mac OS X
- 2. Makefile per i manichini? Mac OS X
- 3. Come ottenere il tipo di file su Mac OS X?
- 4. Decomprimi automaticamente i file nelle cartelle [mac os x]
- 5. Errore di fusione Mac OS X 10.10
- 6. JNotify su Mac OS X?
- 7. Mac OS X Visualizza swapping
- 8. ca-certificates Mac OS X
- 9. Postgresql: Come trovare il file pg_hba.conf utilizzando Mac OS X
- 10. SetWindowsHookEx per Mac OS X?
- 11. Divisione di un file tramite AWK su Mac OS X
- 12. Come installare mod_jk su Mac OS X
- 13. Disinstallare pacchetti in Mac OS X
- 14. Come installo wxPython su Mac OS X?
- 15. API di sintesi vocale di Mac OS X. Come?
- 16. Alternativa di CADisplayLink per Mac OS X
- 17. ldconfig per Mac OS X
- 18. Come rimuovere l'installazione di MySQL su Mac OS X
- 19. Come enumerare i volumi su Mac OS X?
- 20. Come rilevare SSD in Mac OS X?
- 21. Autorizzazioni XAMPP su Mac OS X?
- 22. Come configurare libusb su Mac OS X?
- 23. Dove NSUserDefaults memorizza i dati su Mac OS X?
- 24. Python unicode in Mac terminale OS X
- 25. Collegamento statico wxHaskell su Mac OS X
- 26. Dove è il mio file .emacs su Mac OS X
- 27. mac os x access framebuffer dati grezzi
- 28. Errore Apache su Mac OS X Lion
- 29. Modello icona documento Mac OS X?
- 30. Java FileChannel.tryLock funziona su Mac OS X?
Probabilmente utilizzando le stesse API come 'lsof' . – Droppy