SaaS இல்லாமல் Bluesky பதிவுகளை நான் எவ்வாறு திட்டமிடுகிறேன்
நான் GitHub Actions மற்றும் ஒரு JSONL கோப்பைப் பயன்படுத்தி ஒவ்வொரு நாளும் மூன்று Bluesky பதிவுகளைத் திட்டமிடுகிறேன். நான் எந்தவொரு வெளிப்புறத் திட்டமிடல் சேவையையும் (scheduling service) பயன்படுத்துவதில்லை.
இந்த அமைப்பு ஒரு ஒற்றைக் கோப்பைப் பயன்படுத்திச் செயல்படுகிறது: content/bluesky-queue.jsonl.
இந்தக் கோப்பில் உள்ள ஒவ்வொரு வரியும் ஒரு JSON object ஆகும்.
- பதிவிடப்படாத வரிகளில் உரை (text) மட்டுமே இருக்கும்.
- பதிவிடப்பட்ட வரிகளில் ஒரு timestamp மற்றும் ஒரு post URI ஆகியவை இருக்கும்.
இந்த ஸ்கிரிப்ட் கோப்பை மேலிருந்து கீழாக வாசிக்கும். timestamp இல்லாத முதல் வரியைக் கண்டறிந்து, அதைத் பதிவிட்டு, பின்னர் அந்த வரியைப் புதுப்பிக்கும்.
தரவுத்தளத்திற்கு (database) பதிலாக நான் ஏன் JSONL-ஐப் பயன்படுத்துகிறேன்:
- Git-இல் மாற்றங்களைக் கண்காணிப்பது எளிது.
- எந்தவொரு CI job-உம் கோப்பில் ஒரு புதிய வரியைச் சேர்க்க முடியும்.
- இது அமைப்பை எளிமையாகவும் இலவசமாகவும் வைக்கிறது.
Bluesky API தேவைகளைக் கையாளுதல்
Bluesky இணைப்புகள் (links) மற்றும் ஹேஷ்டேக்குகளுக்கு (hashtags) "facets" தேவைப்படுகிறது. நீங்கள் வெறும் உரையை மட்டும் அனுப்ப முடியாது. இந்த கூறுகளுக்கான துல்லியமான byte நிலைகளை (byte positions) நீங்கள் வழங்க வேண்டும்.
இந்த நிலைகளைக் கணக்கிட நான் ஒரு ஸ்கிரிப்டைப் பயன்படுத்துகிறேன். UTF-8 byte offsets-களைப் பெற நான் TextEncoder-ஐப் பயன்படுத்துகிறேன். இது நீங்கள் emojis பயன்படுத்தும்போது ஏற்படும் பிழைகளைத் தடுக்கிறது. எழுத்துக்களும் (characters) bytes-களும் ஒன்றல்ல.
GitHub Actions-ஐ மேம்படுத்துதல்
நீங்கள் வேலைகளை (jobs) ஒரு மணிநேரத்தின் தொடக்கத்தில் திட்டமிட்டால், GitHub Actions பெரும்பாலும் தாமதமாக இயங்கும். இதைச் சரிசெய்ய, நான் ஒரு off-minute offset-ஐப் பயன்படுத்துகிறேன். 00:00 என்பதற்குப் பதிலாக, நான் 23:37 என்பதைப் பயன்படுத்துகிறேன். இது தாமதங்களைக் குறைக்கிறது.
பதிவிடுவதற்கு முன்பு 0 முதல் 5 நிமிடங்கள் வரை ஒரு சீரற்ற காலதாமதத்தையும் (random delay) நான் சேர்க்கிறேன். இது பதிவிடும் முறையை மனிதர்கள் செய்வது போலக் காட்டும். சில அல்காரிதம்கள் (algorithms) கண்டறியக்கூடிய இயந்திர நேரத்தைத் (machine timing) தவிர்க்க இது உதவுகிறது.
முடிவிலா சுழற்சிகளைத் (Infinite Loops) தடுத்தல்
ஸ்கிரிப்ட் வரிசையைப் (queue) புதுப்பிக்கும்போது, அது மாற்றத்தை மீண்டும் களஞ்சியத்திற்கு (repository) commit செய்கிறது. இது workflow-ஐ மீண்டும் இயக்கக்கூடும்.
இதை நான் ஒரு commit message guard மூலம் தீர்க்கிறேன்:
- ஸ்கிரிப்ட் commit message-இல்
[skip bluesky-queue]என்பதைச் சேர்க்கிறது. - workflow இந்தத் டேக்-கிற்காக (tag) சரிபார்க்கிறது.
- அந்த டேக் இருந்தால், workflow இயங்காது.
இந்த அமைப்பு AI-மூலம் தொகுக்கப்பட்ட (AI-curated) தளங்களுடனான நீண்டகால சோதனையின் ஒரு பகுதியாகும். இது எளிமையாகவும், மலிவாகவும் மற்றும் நம்பகமானதாகவும் உள்ளது.
