ಕಚ್ಚಾ ಸಂಭಾಷಣೆಯ ಲಾಗ್ಗಳು (Raw conversation logs) ದೊಡ್ಡ ಪ್ರಮಾಣದಲ್ಲಿ ಸಂಗ್ರಹವಾದಾಗ ಓದಲು ಅಸಾಧ್ಯವಾಗುತ್ತವೆ. ಕೆಲವು ತಿಂಗಳ ತೀವ್ರ ಬಳಕೆಯ ನಂತರ, ನೀವು ಲಕ್ಷಾಂತರ ಸಾಲುಗಳ ಸಂಭಾಷಣೆಯನ್ನು ನೋಡಬೇಕಾಗುತ್ತದೆ. ಅವುಗಳನ್ನು ಹುಡುಕುವುದು ನಿಧಾನ; ಓದುವುದು ಅಸಾಧ್ಯ. ಇದಕ್ಕೆ ವ್ಯತಿರಿಕ್ತವಾಗಿ, Obsidian vault ನಿಮಗೆ ರಚನಾತ್ಮಕ ದೀರ್ಘಕಾಲೀನ ನೆನಪನ್ನು ನೀಡುತ್ತದೆ: ದ್ವಿಮುಖ ಲಿಂಕ್ಗಳು (bi-directional links), ಟ್ಯಾಗ್ಗಳು ಮತ್ತು ಸಂಪರ್ಕಗಳನ್ನು ಎತ್ತಿ ತೋರಿಸುವ ಗ್ರಾಫ್ ವ್ಯೂ (graph view). ಇವೆರಡರ ನಡುವಿನ ವ್ಯತ್ಯಾಸವು ಸ್ಪಷ್ಟವಾಗಿದೆ. ಇದನ್ನು ಸರಿಪಡಿಸಲು ಆಟೊಮೇಷನ್ (automation) ಅಗತ್ಯವಿದೆ.
ಪ್ರತಿದಿನ ರಾತ್ರಿ ಈ ಅಂತರವನ್ನು ಕಡಿಮೆ ಮಾಡಲು ನಾನು ಒಂದು ಸಣ್ಣ ಪೈಪ್ಲೈನ್ ಅನ್ನು ನಿರ್ಮಿಸಿದ್ದೇನೆ. ಇದು ಯಾವುದೇ ಮಾನವ ಹಸ್ತಕ್ಷೇಪವಿಲ್ಲದೆ ಮೂರು ಹಂತಗಳನ್ನು ಅನುಕ್ರಮವಾಗಿ ನಡೆಸುತ್ತದೆ. ಮೊದಲನೆಯದಾಗಿ, ಇದು ಇತ್ತೀಚಿನ ಸಂಭಾಷಣೆಯ ಎಕ್ಸ್ಪೋರ್ಟ್ಗಳನ್ನು ಸಂಗ್ರಹಿಸುತ್ತದೆ ಮತ್ತು ಅವುಗಳನ್ನು ಪ್ರಸ್ತುತ ಸ್ಥಿತಿಗೆ ನವೀಕರಿಸುತ್ತದೆ. ಎರಡನೆಯದಾಗಿ, ಇದು Claude ಮೂಲಕ ಕಳೆದ 28 ಗಂಟೆಗಳ ಕಚ್ಚಾ ಸಂಭಾಷಣೆಯನ್ನು ಸಂಕ್ಷಿಪ್ತಗೊಳಿಸಿ, ರಚನಾತ್ಮಕ ಸಾರಾಂಶಗಳನ್ನು ನೇರವಾಗಿ Obsidian vault ಗೆ ಸೇರಿಸುತ್ತದೆ. ಈ 28 ಗಂಟೆಗಳ ಕಾಲಾವಧಿಯನ್ನು ಉದ್ದೇಶಪೂರ್ವಕವಾಗಿ ಆಯ್ಕೆ ಮಾಡಲಾಗಿದೆ; ಇದು ಹಿಂದಿನ ಇಡೀ ದಿನವನ್ನು ಮತ್ತು ವಿಳಂಬಗಳಿಗಾಗಿ ಸ್ವಲ್ಪ ಸಮಯವನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ. ಮೂರನೆಯದಾಗಿ, ಇದು ಎಲ್ಲಾ ಬದಲಾವಣೆಗಳನ್ನು ಒಂದು ಖಾಸಗಿ ರೆಪೊಸಿಟರಿಗೆ (private repository) ಕಮಿಟ್ ಮತ್ತು ಪುಶ್ ಮಾಡುವ ಮೂಲಕ ಬ್ಯಾಕಪ್ ಮಾಡುತ್ತದೆ, ಇದು ಆಫ್ಲೈನ್ ಸ್ಟೋರೇಜ್ ಮತ್ತು ಅಕಸ್ಮಾತ್ ಡಿಲೀಟ್ ಆಗುವುದರಿಂದ ರಕ್ಷಣೆ ನೀಡುತ್ತದೆ. ಇಡೀ ಪ್ರಕ್ರಿಯೆಯು ಸರಳ ಮತ್ತು ವಿಶ್ವಾಸಾರ್ಹವಾಗಿರಬೇಕು. ಬೋರಿಂಗ್ ಆಟೊಮೇಷನ್ (Boring automation) ಎಂಬುದು ನನ್ನ ಗುರಿ.
macOS ನಿಮ್ಮ ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಮೌನವಾಗಿ ಕೊಲ್ಲುವಾಗ
ರಾತ್ರಿ ನಡೆಯುವ ಕೆಲಸದ ದೊಡ್ಡ ಶತ್ರು ನಾಟಕೀಯವಾಗಿ ಕ್ರ್ಯಾಶ್ ಆಗುವುದು ಎಂದಲ್ಲ. ಅದು ಮೌನ.
macOS ನಲ್ಲಿ, Documents ಫೋಲ್ಡರ್ TCC ಎಂಬ ಗೌಪ್ಯತೆ ಉಪವ್ಯವಸ್ಥೆಯ (privacy subsystem) ರಕ್ಷಣೆಯಲ್ಲಿದೆ, ಇದು ಸೂಕ್ಷ್ಮ ಸ್ಥಳಗಳ ಪ್ರವೇಶವನ್ನು ನಿಯಂತ್ರಿಸುತ್ತದೆ. ನೀವು ನಿಮ್ಮ ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು launchd ಮೂಲಕ ನಿಗದಿಪಡಿಸಿದರೆ, ನೀವು ಗಮನಿಸಬಹುದಾದ ಯಾವುದೇ ದೋಷವನ್ನು ತೋರಿಸದೆ ಸಿಸ್ಟಮ್ ಪ್ರಕ್ರಿಯೆಯನ್ನು ತಡೆಹಿಡಿಯಬಹುದು. ನಿಮ್ಮ ಲಾಗ್ ಫೈಲ್ ಖಾಲಿಯಾಗುತ್ತದೆ. ನಿಮ್ಮ ವಾಲ್ಟ್ ಎಂದಿಗೂ ಅಪ್ಡೇಟ್ ಆಗುವುದಿಲ್ಲ. ಕೆಲಸ ವಿಫಲವಾಗಿದೆ, ಆದರೆ ನಿಮ್ಮ ಟಿಪ್ಪಣಿಗಳು ಹಳೆಯದಾಗಿವೆ ಎಂದು ತಿಳಿದಾಗ ಮಾತ್ರ ನೀವು ಇದನ್ನು ಗಮನಿಸುತ್ತೀರಿ.
ನಾನು ಇದನ್ನು ಕಟ್ಟುನಿಟ್ಟಾದ ಪ್ರಿಫ್ಲೈಟ್ ರೂಟೀನ್ (preflight routine) ಮೂಲಕ ನಿರ್ವಹಿಸುತ್ತೇನೆ. ಮುಖ್ಯ ಕೆಲಸ ಪ್ರಾರಂಭವಾಗುವ ಮೊದಲು, ಸ್ಕ್ರಿಪ್ಟ್ ಗುರಿ ಡೈರೆಕ್ಟರಿಯೊಳಗೆ ಒಂದು ಸಣ್ಣ ಬರವಣಿಗೆಯ ಪ್ರಕ್ರಿಯೆಯನ್ನು (write operation) ಪ್ರಯತ್ನಿಸುತ್ತದೆ. ಒಂದು ವೇಳೆ macOS ಅದನ್ನು ನಿರಾಕರಿಸಿದರೆ, ವಿಫಲತೆಯನ್ನು ತಕ್ಷಣವೇ ಪತ್ತೆಹಚ್ಚಲಾಗುತ್ತದೆ ಮತ್ತು ಡೆಸ್ಕ್ಟಾಪ್ ನೋಟಿಫಿಕೇಶನ್ ನೀಡಲಾಗುತ್ತದೆ. ಇದು ಮೌನವಾಗಿ ಮುಕ್ತಾಯಗೊಳ್ಳುವುದಿಲ್ಲ. ಮುಂದೆ, ಶೆಲ್ ಇಂಟರ್ಪ್ರೆಟರ್ (shell interpreter) ಗೆ System Settings ಒಳಗೆ Full Disk Access ನೀಡಬೇಕಾಗುತ್ತದೆ. ಆ ಅನುಮತಿಯು ತುಂಬಾ ಕಟ್ಟುನಿಟ್ಟಾದದ್ದು, ಆದ್ದರಿಂದ ನಾನು ಎಲ್ಲಾ ಆಟೊಮೇಷನ್ ಸ್ಕ್ರಿಪ್ಟ್ಗಳನ್ನು ಸಂರಕ್ಷಿತ Documents ಫೋಲ್ಡರ್ನಿಂದ ಹೊರಗೆ ಇರಿಸುವ ಮೂಲಕ ಅಪಾಯವನ್ನು ಕಡಿಮೆ ಮಾಡುತ್ತೇನೆ. ಅವು ಬೇರೆಡೆ ಇರುವ ಪ್ರತ್ಯೇಕ ಡೈರೆಕ್ಟರಿಯಲ್ಲಿರುತ್ತವೆ ಮತ್ತು ವಾಲ್ಟ್ ಪಾತ್ ಅನ್ನು ಸ್ಪಷ್ಟವಾಗಿ ಉಲ್ಲೇಖಿಸಲಾಗುತ್ತದೆ. ಆರಂಭಿಕ ಪತ್ತೆ, ಶಬ್ದ ಮಾಡುವ ಎಚ್ಚರಿಕೆಗಳು ಮತ್ತು ಎಚ್ಚರಿಕೆಯ ಫೋಲ್ಡರ್ ವಿನ್ಯಾಸದ ಈ ಸಂಯೋಜನೆಯು ಮೌನ ವಿಫಲತೆಯ ಸನ್ನಿವೇಶವನ್ನು ಸರಿಪಡಿಸುತ್ತದೆ.
ನಿದ್ರೆ, ಟೈಮೌಟ್ಗಳು ಮತ್ತು ಫ್ರೀಜ್ ಆದ ಕೆಲಸಗಳಿಗಾಗಿ ವಿನ್ಯಾಸಗೊಳಿಸುವುದು
ಲ್ಯಾಪ್ಟಾಪ್ಗಳು ಸ್ಲೀಪ್ (sleep) ಆಗುತ್ತವೆ. ನೆಟ್ವರ್ಕ್ಗಳು ಅಸ್ಥಿರವಾಗುತ್ತವೆ. API ಕರೆಗಳು ಹ್ಯಾಂಗ್ (hang) ಆಗುತ್ತವೆ. ಒಂದೇ ಒಂದು ಫ್ರೀಜ್ ಆದ ಕೆಲಸವು ಇಡೀ ವ್ಯವಸ್ಥೆಯನ್ನು ಅನಿರ್ದಿಷ್ಟಕಾಲದವರೆಗೆ ನಿಲ್ಲಿಸಬಾರದು.
ಪೈಪ್ಲೈನ್ ಅನ್ನು ಸ್ಥಿರವಾಗಿಡಲು ನಾನು ನಾಲ್ಕು ಪ್ರಾಯೋಗಿಕ ವಿಧಾನಗಳನ್ನು ಬಳಸುತ್ತೇನೆ.
Multiple time slots. ಮುಂಜಾನೆಯ ಒಂದೇ ಒಂದು ರನ್ ಮೇಲೆ ಅವಲಂಬಿತವಾಗುವ ಬದಲು, ಶೆಡ್ಯೂಲರ್ ದಿನವಿಡೀ ವಿವಿಧ ಸಮಯಗಳಲ್ಲಿ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸುತ್ತದೆ. ಮುಂಜಾನೆ ಯಂತ್ರವು ಮುಚ್ಚಲ್ಪಟ್ಟಿದ್ದರೆ, ಮಧ್ಯಾಹ್ನದ ಸಮಯವು ಅದನ್ನು ಪತ್ತೆಹಚ್ಚುತ್ತದೆ.
Done markers. ಒಂದು ರನ್ ಯಶಸ್ವಿಯಾದಾಗ, ಅದು ಸ್ಪಷ್ಟವಾದ ಗುರುತನ್ನು (breadcrumb) ಬಿಡುತ್ತದೆ. ಮುಂದಿನ ನಿಗದಿತ ಪ್ರಯತ್ನವು ಮೊದಲು ಆ ಮಾರ್ಕರ್ ಅನ್ನು ಪರಿಶೀಲಿಸುತ್ತದೆ. ಕೆಲಸ ಈಗಾಗಲೇ ಪೂರ್ಣಗೊಂಡಿದ್ದರೆ, ಅದು ಸೆಕೆಂಡುಗಳ ಒಳಗೆ ಸುಗಮವಾಗಿ ಹೊರಬರುತ್ತದೆ. ಇದು ಅನಗತ್ಯ API ಕರೆಗಳು ಮತ್ತು ಪುನರಾವರ್ತಿತ ಪ್ರಕ್ರಿಯೆಯನ್ನು ತಡೆಯುತ್ತದೆ.
File locks through mkdir. ಓವರ್ಲ್ಯಾಪಿಂಗ್ ಎಕ್ಸಿಕ್ಯೂಷನ್ಗಳನ್ನು ತಪ್ಪಿಸಲು, ನಾನು ಡೈರೆಕ್ಟರಿ ಆಧಾರಿತ ಲಾಕ್ ಅನ್ನು ಬಳಸುತ್ತೇನೆ. ಲೋಕಲ್ ಫೈಲ್ಸಿಸ್ಟಮ್ಗಳಲ್ಲಿ ಡೈರೆಕ್ಟರಿಯನ್ನು ರಚಿಸುವುದು ಅಟಾಮಿಕ್ (atomic) ಆಗಿದೆ, ಆದ್ದರಿಂದ ಎರಡು ಏಕಕಾಲಿಕ ಕೆಲಸಗಳು ಒಂದೇ ಲಾಕ್ ಪಾತ್ ಅನ್ನು ಪಡೆಯಲು ಸಾಧ್ಯವಿಲ್ಲ. ಒಂದು ವೇಳೆ ಡೈರೆಕ್ಟರಿಯು ಈಗಾಗಲೇ ಅಸ್ತಿತ್ವದಲ್ಲಿದ್ದರೆ, ಎರಡನೇ ಇನ್ಸ್ಟೆನ್ಸ್ ತಕ್ಷಣವೇ ಸ್ಥಗಿತಗೊಳ್ಳುತ್ತದೆ. ಮೊದಲನೆಯದು ಮುಗಿದಾಗ, ಅದು ಡೈರೆಕ್ಟರಿಯನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ. ಇದು PID ಫೈಲ್ಗಳಿಗಿಂತ ಹಗುರವಾಗಿದೆ ಮತ್ತು harder
