Jestem ciekaw, jak Timing jest w stanie wiedzieć, ile czasu spędzasz w danym pliku. Rozumiem, że potrzebuje uprawnień dostępu, ale po tym, jak jest w stanie wykryć, co jest aktualnie na ekranie, oraz dostęp do ścieżki do danego pliku. Intrygujące jest na przykład to, że wie, że jestem w Xcode, ale skąd wiadomo, że pracuję nad konkretnym plikiem w Xcode?Jak aplikacja Mac OS X Timing może śledzić pliki
Odpowiedz
Nie pracuję nad synchronizacją czasu, więc mogę tylko zgadnąć, w jaki sposób została wdrożona ich aplikacja.
Informacje dotyczące czasu, aby śledzić trzy główne punkty danych: używane aplikacje, odwiedzane witryny i edytowane dokumenty.
W przypadku aplikacji, czas prawdopodobnie oczekuje na powiadomienie NSWorkspaceDidLaunchApplicationNotification
, które zawiera informacje o właśnie uruchomionej aplikacji. Aby sprawdzić aktualnie otwarte aplikacje kiedy Timing jest uruchomiona, to prawdopodobnie sprawdza procesy non-background z systemu zdarzeń, prawdopodobnie tak:
osascript -e 'tell application "System Events" to get name of (processes where background only is false)'
(Źródło Get list of running Apps on Mac OS X in Bash?)
Dla historii, czas może korzystać z HTML5 Historyczny interfejs API z Safari (nie wiem, jakie przeglądarki chroni przed taktowaniem, aby obsłużyć tę funkcję), lub podejmij takie podejście, jak Charles Proxy i monitoruj wszystkie przychodzące i wychodzące pakiety i żądania. Implementacja może się różnić w zależności od tego, czy czas wymaga uprawnień administratora.
Dla dokumentów, Czas może używać polecenia lsof
, jak sugerował Droppy w swoim komentarzu, lub może używać jednego z interfejsów Apple. Pre-El Capitan, Apple podał ostatnie dokumenty w pliku plist na ścieżce ~/Library/Preferences/com.apple.recentitems.plist
. W wersji MacOS nowsze niż El Capitan, można użyć komendy mdfind
i określić wartość kMDItemContentModificationDate
znaleźć pliki zmodyfikowane pomiędzy dwiema datami:
mdfind -onlyin $HOME '((kMDItemContentModificationDate > $time.now(-60m)) && (kMDItemContentModificationDate < $time.now()))' | grep -v /Library/
(Źródło Alfred)
- 1. Czy aplikacja Mac OS X może uniemożliwić dlopen ładowanie biblioteki?
- 2. Aplikacja Java Windows vs Mac OS X
- 3. . Aplikacja .NET do aplikacji Mac OS X?
- 4. W systemie Mac OS X 10.8.x w jaki sposób aplikacja AppStore może zainstalować rozszerzenie jądra?
- 5. Jak odinstalować MySQL z Mac OS X?
- 6. Jak zainstalować mod_jk na Mac OS X
- 7. Łączenie statyczne wxHaskell na Mac OS X
- 8. Jak piszesz program dla Mac OS X?
- 9. Jak skonfigurować libusb na Mac OS X?
- 10. Jak zainstalować wxPython na Mac OS X?
- 11. Mac OS X: Zmiana układu klawiatury przechwytywania
- 12. Synchronizacja danych iOS i Mac OS X
- 13. Odinstalowywanie pakietów w systemie Mac OS X
- 14. Mac OS X libcurl dylib wersja kompatybilności
- 15. Aktualizacje aplikacji w systemie Mac OS X
- 16. boost compile error Mac OS X 10.7.4
- 17. Jaka jest różnica między mapami klawiszy - Mac OS X i Mac OS X 10.5+?
- 18. py2exe mac os x problem instalacyjny
- 19. Maszyna wirtualna z systemem Mac OS X
- 20. Odinstaluj MongoDB na Mac OS X
- 21. Uprawnienia XAMPP na Mac OS X?
- 22. Jak zainstalować złącze MySQL/C na Mac OS X?
- 23. Mac OS X darmowe kompilator C
- 24. Instalacja/aktualizacja gradle na Mac OS X
- 25. Klasa UIDevice dla Mac OS X?
- 26. /proc/uptime w systemie Mac OS X
- 27. Bieganie ddd na Mac OS X 10.7.5
- 28. JNotify w systemie Mac OS X?
- 29. Building Google Breakpad na Mac OS X
- 30. Jak dodać użytkownika do grupy Apache na Mac OS X?
Prawdopodobnie stosując takie same API jak 'lsof' . – Droppy