path
Jin's Lab
코드로 실험하고 기록하는 개발 일지 · J.Lab

Jin's Lab

코드로 실험하고 기록하는 개발 일지. 커리어와 삶의 방향을 탐색하며 기록하는 공간입니다

Blog-Sorting

Blogger 목록 정렬 오류? 피드 API로 밝혀낸 반전의 원인

J.Lab ·
목차

    블로그를 운영하다 보면 가끔 내 눈을 의심하게 되는 순간이 있다. 최근 내 블로그 목록을 보는데, 최신 글 사이에 뜬금없이 아주 오래전에 작성한 듯한 인사말 스타일의 글이 섞여 있는 것을 발견했다. 마치 글 목록이 무작위로 섞인 것처럼 보여 심한 혼란을 느꼈다.

    대체 왜 Blogger 목록 정렬이 엉망이 된 건지 원인을 찾아 해결해야만 했다. 처음에는 템플릿 테마 자체에 정렬 오류가 있거나 내가 코드를 잘못 건드린 줄 알았다. 곧바로 문제 해결을 위해 분석에 착수했다.

    테마 소스 분석과 정렬 태그의 부재

    가장 먼저 의심한 것은 블로그 테마의 XML 소스코드였다. 구글 Blogger는 기본적으로 글을 발행일순 내림차순으로 정렬하여 보여주는 것이 기본 스펙이다. 혹시 내가 커스텀 테마를 적용하면서 정렬을 뒤흔드는 코드가 삽입된 것은 아닐까 걱정이 앞섰다.

    곧바로 테마 HTML 편집 창을 열고 전체 XML 코드를 샅샅이 뒤지기 시작했다. shuffle, random, sort, orderby 같은 정렬 관련 키워드를 하나하나 검색해 보았다. 하지만 정렬을 무작위로 섞거나 순서를 바꾸는 코드는 단 하나도 존재하지 않았다. 즉, 테마 차원에서는 지극히 정상적으로 기본 정렬 방식을 따르고 있다는 뜻이었다.

    XML 소스코드를 분석하며 정렬 태그를 확인하는 개발자의 일러스트

    피드 API 데이터를 통한 팩트 체크

    단순히 테마 코드만 보고 넘어가기엔 찝찝함이 남았다. 내 눈앞에 보이는 목록은 분명 뒤죽박죽이었기 때문이다. 이를 확실하게 검증하기 위해 Blogger가 제공하는 백엔드 날것의 데이터를 직접 확인해 보기로 했다.

    웹 브라우저 주소창에 블로그의 라이브 피드 주소인 /feeds/posts/default?alt=json 을 입력하여 데이터를 호출했다. 출력된 JSON 데이터를 열어 실제 각 포스트의 발행일을 하나하나 뜯어보았다. 피드 API 데이터를 정밀하게 분석한 결과는 꽤나 충격적이었다.

    데이터상에서는 정렬 오류가 전혀 없었다. 피드 내부의 모든 포스트가 소수점 단위의 시간까지 아주 정확하게 최신순 내림차순으로 정렬되어 있었다. 그렇다면 왜 화면에서는 특정 옛날 글이 최상단에 올라와 정렬 오해를 불러일으켰을까?

    피드 API로 수신한 JSON 데이터를 분석하는 모습을 표현한 기술 일러스트

    알고 보니 정렬 버그가 아니었던 반전의 실체

    의문은 피드 데이터 속 '최신 글'로 분류된 그 옛날 글의 실제 발행일을 보며 풀렸다. 화면상에서 아주 오래된 글처럼 보였던 것은 예전에 다른 프롬프트로 작성해 두었던 연습용 인사말 스타일의 글이었다.

    기억을 되짚어 보니, 최근 블로그 설정을 테스트하는 과정에서 임시 저장되어 있던 예전 글을 무심코 '발행' 버튼을 눌러 공개 상태로 전환했던 것이다. 내용은 영락없는 과거의 인사말이었지만, Blogger 시스템 입장에서는 방금 막 발행된 아주 따끈따끈한 새 글이었다.

    결국 시스템은 오작동 없이 아주 정확하게 일하고 있었던 셈이다. 내가 작성한 글의 내용과 겉모습만 보고 혼자 삽질을 한 격이었다. 범인은 시스템이 아니라 바로 나 자신이었다.

    버그의 진짜 원인을 찾아내고 해결책을 깨달은 순간을 나타낸 일러스트

    이번 삽질을 통해 깨달은 데이터의 정직함

    컴퓨터는 거짓말을 하지 않는다는 개발자들의 격언을 다시금 뼈저리게 느끼는 하루였다. 겉으로 드러나는 현상만 보고 템플릿 코드를 뜯어고쳤다면 오히려 멀쩡한 블로그를 더 망가뜨릴 뻔했다.

    이번 경험을 통해 데이터의 원본을 보여주는 피드의 유용함을 다시 한번 깨달았다. 혹시 여러분도 블로그 정렬이 이상하다고 느껴진다면, 섣불리 코드를 건드리기 전에 원본 피드 데이터를 먼저 확인해 보기를 권장한다. 답은 언제나 정직한 데이터 속에 들어있다.

    Blog-Sorting Blogger Blogger-Tips Feed-API Troubleshooting Web-Development
    ← 이전 글
    최근 게시물
    다음 글 →
    이전 게시물
    ≡ 글 목록으로
    소개
    path
    J.Lab

    커리어와 삶의 방향을 탐색하며
    기록하는 공간입니다

    카테고리
    403 Forbidden Error 1 AdSense 1 AdSense Bot Detection 1 AI Automation 1 AI Image Generation 1 ai-automation 2 AI-Prompting 1 AIBlogAutomation 1 AICodeLog 1 AIContentGeneration 1 AIImageGeneration 1 AIWritingErrors 1 API Automation 2 API Retry Design 1 api-automation 1 API-Deprecation 1 api-error 1 api-fallback 1 api-retry-strategy 1 api-troubleshooting 1 APIDebugging 1 APIError 1 APIErrorHandling 1 APIIntegration 1 APITokenRenewal 1 AppsScript 1 appsScriptAutomation 1 AutomatedBlogging 1 automation 1 Automation 2 AutomationTroubleshooting 1 Backoff Algorithm 1 Base64Encoding 1 BatchProcessing 1 blog-automation 1 blog-customization 1 blog-migration 3 Blog-Sorting 1 blog-strategy 1 blog-theme-customization 1 blog-workflow 1 blogautomation 1 BlogAutomation 2 Blogger 4 Blogger API 2 Blogger Automation 1 Blogger SEO 1 blogger-api 3 blogger-automation 1 blogger-error-400 1 blogger-labels 1 blogger-seo 1 blogger-tips 1 Blogger-Tips 1 BloggerAPI 3 BloggerBypath 1 BloggerCustomization 2 BloggerFavicon 1 BloggerTemplate 1 BloggerTemplateEditing 1 BloggerTheme 1 BloggerThemeCustomization 1 BloggerXMLStructure 1 Blogging-Automation 1 BloggingTools 1 BlogQuality 1 BlogSpot 1 BWidgetBIncludable 1 CardClickHandler 1 CDATA 1 clamping-text 1 Code Integration 1 codelog 1 CodeLog 1 codeRefactoring 1 contentsequencing 1 cost-reduction 1 CSSOverlay 1 data-parsing 1 DatabaseDesign 1 DataRecovery 1 DateInjection 1 Debugging 2 dev-journey 1 DeveloperJourney 2 DevJourney 1 display-none-seo 1 dom-manipulation 1 dynamic-menu 1 Error-Handling 1 ErrorHandling 1 Execution Timeout 1 ExecutionLimit 1 exponential-backoff 1 FactChecking 1 FaviconEmbedding 1 Feed-API 1 filesystem 1 Flat Illustration 1 FluxModel 1 FreeAIImage 1 FrontEndDev 1 FrontendTips 1 GAS Blogger API 1 gas-automation 1 gas-optimization 1 gas-trigger 1 GASTimeout 1 gasTriggerManagement 1 GCP Project Linkage 1 Gemini 1 Gemini API 1 gemini-api 1 GeminiAPI 1 GeminiPrompt 1 GeminiPromptEngineering 1 GmailRestrictions 1 Google Apps Script 7 Google Discover 1 google-apps-script 3 Google-Apps-Script 1 google-blogger 1 googleAppsScript 1 GoogleAppsScript 6 googlesapps-script 1 hero-image 1 HTMLWidgetBlogger 1 http-429 1 HuggingFace 1 HuggingFaceAPI 1 ico-generator 1 Image Optimization 1 image-automation 1 image-optimization 1 In-App Browser 1 invalid-argument 1 javascript 3 JavaScript 2 javascript-automation 1 javascript-toc 1 jlab-codelog 1 JLabDevLog 1 json-schema 1 label-length-limit 1 linux 1 meta-description 1 Negative Prompt 1 notion-api 1 notion-database 1 notion-gas-integration 1 NotionAPI 1 NotionAutomation 1 notionintegration 1 NotionIntegration 1 OAuth Scope 1 pagination 1 payload-validation 1 permalink-management 1 PersonaDesign 1 pil-image-processing 1 Pinterest 1 Pollinations 1 Pollinations Flux 1 pollinations-api 1 PollinationsAI 1 PositionAbsolute 1 Prompt Design 1 Prompt Engineering 1 prompt-engineering 1 Prompt-Engineering 1 PromptEngineering 1 publishorder 1 python-favicon 1 queue-stuck 1 RandomDelay 1 rate-limiting 1 Refactoring 1 rfc3339 2 Robots Meta Tag 1 RSS Feed 1 scriptNotFound 1 Search Engine Optimization 2 Search-Engine-Optimization 1 SEO Tips 1 seo-optimization 4 SEO-Optimization 1 seriesmanagement 1 SidebarLinks 1 SNSMarketing 1 SVGIcon 1 table-of-contents 1 TechJournal 1 Template 1 ThreadsAPI 1 tistory-migration 1 transparent-favicon 1 triggerCleanup 1 Troubleshooting 1 unzip 1 URL Slug 1 vanilla-js 1 Web Development 1 Web Publishing 2 Web Security 1 web-development 1 Web-Development 1 web-development-tips 1 web-performance 1 web-scraping 1 WebAccessibility 1 WebDevelopment 3 WebDevelopmentTips 1 WebDevJourney 1 windows 1 WorkflowAutomation 1 XMLParser 1 XMLSpecialCharacters 1 XMLTheme 1 zip 1
    인기 글
    GAS에서 Blogger API 403 오류 완전 정복 — appsscript.json 스코프와 GCP 프로젝트 연결
    GAS에서 Blogger API 403 오류 완전 정복 — appsscript.json 스코프와 GCP 프로젝트 연결
    Google Apps Script 실행 시간 6분 제한 — Gmail 계정 함정과 랜덤 딜레이 설계
    Google Apps Script 실행 시간 6분 제한 — Gmail 계정 함정과 랜덤 딜레이 설계
    Blogger 테마 XML 직접 뜯어봤더니 알게 된 것들
    Blogger 테마 XML 직접 뜯어봤더니 알게 된 것들
    다른 블로그
    IssueLog
    IssueLog
    issuelog.jinbytes.com
    KidStory
    KidStory
    kidstory.jinbytes.com
    IT Story
    IT Story
    jinbytes.com
    © Jin's Lab · J.Lab · All Rights Reserved
    jinbytes.com · Powered by Blogger