{"id":24623152,"url":"https://github.com/ppabam/learning-log","last_synced_at":"2026-04-07T16:32:08.859Z","repository":{"id":273642683,"uuid":"920399190","full_name":"ppabam/learning-log","owner":"ppabam","description":"Tracking the progress of my learning journey with topics such as Vim and Pandas 10-minute guide. / 🍴 forked from dMario24/flag123","archived":false,"fork":false,"pushed_at":"2025-01-24T02:09:26.000Z","size":117037,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-26T12:53:08.780Z","etag":null,"topics":["cafe-coding","learning","pandas","vim"],"latest_commit_sha":null,"homepage":"https://vim.sunsin.shop","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ppabam.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-01-22T04:38:33.000Z","updated_at":"2025-01-24T02:09:30.000Z","dependencies_parsed_at":null,"dependency_job_id":"1eafba49-4677-4012-8836-57212188dda5","html_url":"https://github.com/ppabam/learning-log","commit_stats":null,"previous_names":["ppabam/learning-log"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/ppabam/learning-log","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ppabam%2Flearning-log","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ppabam%2Flearning-log/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ppabam%2Flearning-log/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ppabam%2Flearning-log/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ppabam","download_url":"https://codeload.github.com/ppabam/learning-log/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ppabam%2Flearning-log/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31520488,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T16:28:08.000Z","status":"ssl_error","status_checked_at":"2026-04-07T16:28:06.951Z","response_time":105,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cafe-coding","learning","pandas","vim"],"created_at":"2025-01-25T03:33:47.813Z","updated_at":"2026-04-07T16:32:08.838Z","avatar_url":"https://github.com/ppabam.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🚩  learning journey\n- Tracking the progress of my learning journey with topics such as Vim and Pandas 10-minute guide.\n- forked from https://github.com/dMario24/flag123/releases/tag/251.21.3\n\n### 📝 Initial Data \u0026 DBMS\n- [use vercel-postgres](https://vercel.com/docs/storage/vercel-postgres)\n    \u003cdetails\u003e\n        \u003csummary\u003emake dummy data\u003c/summary\u003e\n\n        ```sql\n        SELECT version();\n        PostgreSQL 15.10 on x86_64-pc-linux-gnu, compiled by gcc (Debian 10.2.1-6) 10.2.1 20210110, 64-bit\n        -- https://hub.docker.com/layers/library/postgres/15.10/images/sha256-6bd528fd9ed2ca50c0dd7c85c1bc20d0150c63418a04d8d3973cab95f63f9567\n\n        -- CREATE TABLE =\u003e postgres_init/1-create-table.sql\n\n        \\d+ flags\n\n\n        INSERT INTO flags (name, latitude, longitude, img_url) VALUES\n        ('#BRAT impeachment and it’s completely different but also still impeachment', \n        37.525307 + (37.530139 - 37.525307) * RANDOM(), \n        126.919467 + (126.922896 - 126.919467) * RANDOM(), \n        '/dummy/d1.webp')\n\n        INSERT INTO flags (name, latitude, longitude, img_url) VALUES\n        ('#BRAT impeachment and it’s completely different but also still impeachment', 37.525307 + (37.530139 - 37.525307) * RANDOM(), 126.919467 + (126.922896 - 126.919467) * RANDOM(), '/dummy/d1.webp'),\n        ('Korean branch of the Jedi Federation', 37.525307 + (37.530139 - 37.525307) * RANDOM(), 126.919467 + (126.922896 - 126.919467) * RANDOM(), '/dummy/d2.webp'),\n        ('Rapping Rabbit Federation', 37.525307 + (37.530139 - 37.525307) * RANDOM(), 126.919467 + (126.922896 - 126.919467) * RANDOM(), '/dummy/d3.webp'),\n        ('National Carrot Alliance Loving Rabbits', 37.525307 + (37.530139 - 37.525307) * RANDOM(), 126.919467 + (126.922896 - 126.919467) * RANDOM(), '/dummy/d4.webp'),\n        ('Flags World Championship', 37.525307 + (37.530139 - 37.525307) * RANDOM(), 126.919467 + (126.922896 - 126.919467) * RANDOM(), '/dummy/FWC.png');\n\n\n        SELECT id,name,img_url FROM flags ORDER BY id DESC;\n\n        SELECT\n            id,\n            flag_id,\n            delta_cnt,\n            created_at AT TIME ZONE 'Asia/Seoul' AS created_at_kst\n        FROM \n            flag_like_history\n        ORDER BY \n            id DESC;\n\n        SHOW TIME ZONE; -- GMT\n\n        SELECT CURRENT_TIMESTAMP;\n\n        -- 쪼인\n        SELECT \n            f.id,\n            f.name,\n            f.img_url,\n            COALESCE(SUM(fl.delta_cnt), 0) AS like_count\n        FROM \n            flags f\n        LEFT JOIN \n            flag_like_history fl\n        ON \n            f.id = fl.flag_id\n        GROUP BY \n            f.id, f.name, f.img_url\n        ORDER BY \n            f.id DESC\n        ```\n\n    \u003c/details\u003e\n\n- Alternatively, you can use the local DBMS using the Dockerizing part below. The setting file DATABASE_CLIENT needs to be changed.\n\n\n### 🌱 Env\n- Rename env.dummy to .env.local. Make sure the file is not pushed to the public GitHub repository.\n- To avoid using analytics and statistics by connecting to Google Firebase, delete analytics.ts.\n- Refer to the [Vercel  CLI](https://vercel.com/docs/cli/env) to sync variables for database connection.\n- I used https://api.imgbb.com/ for image uploads. In your case, you should obtain a new API key\n\n### 💻 Local Run\n- ested on WSL Ubuntu 22.04.4 LTS and macOS. ( node : v20.17.0 ||  v22.12.0, nextjs : 14.2.19)\n```\n$ npm install\n$ npm run dev\n```\n\n### Dev Python\n```bash\n$ pyenv global\n3.10.12\n# $ python -m venv venv\n$ source venv/bin/activate\n# $pip install -r requirements.txt\n$ uvicorn api.index:app --reload\n```\n\n\n### Test\n```bash\n$ npx jest -t \"should correctly join URL parts into a complete URL\"\n PASS  __tests__/utils.test.ts (5.773 s)\n-----------------|---------|----------|---------|---------|----------------------------------------------------\nFile             | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s                                  \n-----------------|---------|----------|---------|---------|----------------------------------------------------\nAll files        |   22.42 |      100 |    9.09 |   22.42 |                                                    \n app/lib         |   54.54 |      100 |       0 |   54.54 |                                                    \n  getClientId.ts |   54.54 |      100 |       0 |   54.54 | 7-11                                               \n lib             |   18.75 |      100 |      10 |   18.75 |                                                    \n  utils.ts       |   18.75 |      100 |      10 |   18.75 | 5-7,9-16,18-23,25-27,29-40,44-72,74-82,84-87,89-92 \n-----------------|---------|----------|---------|---------|----------------------------------------------------\n\nTest Suites: 1 skipped, 1 passed, 1 of 2 total\nTests:       3 skipped, 1 passed, 4 total\nSnapshots:   0 total\nTime:        6.379 s, estimated 10 s\nRan all test suites with tests matching \"should correctly join URL parts into a complete URL\"\n\n$ npm test\n```\n\n### 🤝 Contribution\n- Contributions are open, though I don’t expect anyone to take an interest. I’ll gratefully accept any small advice or help. Thank you. Best regards. 😊👍\n\n### 🚀 Deploy \u0026 Connect DB\n- https://vercel.com/docs/deployments/overview\n- https://vercel.com/docs/storage/vercel-postgres#vercel-postgres\n- https://vercel.com/docs/cli/env\n\n### ⚓ Dockerizing\n- The .env.local file DATABASE_CLIENT needs to be changed.\n    ```bash\n    # docker compose down --volumes --remove-orphans\n    # sudo rm -rf postgres_data\n\n    $ docker compose up -d db adminer\n    $ docker compose build web\n    $ docker compose up -d web\n    ```\n\n### 🔖 Ref\n- https://medium.com/@alexandre.penombre/file-upload-with-next-js-14-app-router-6cb0e594e778\n- https://nextjs.org/docs/14/app/api-reference/functions/unstable_cache\n- https://nextjs.org/docs/app/api-reference/config/next-config-js/headers\n- https://medium.com/@aleksej.gudkov/how-to-disable-cache-in-next-js-a-comprehensive-guide-a1603559483e\n- https://nextjs.org/docs/pages/building-your-application/configuring/debugging\n- https://nextjs.org/docs/app/api-reference/functions/generate-metadata#metadata-fields\n- [로컬 데이터베이스가 있는 Next.js 튜토리얼: 빠른 시작 가이드](https://medium.com/@dekadekadeka/next-js-tutorial-with-local-database-quick-start-guide-394d48a0aada)\n- [nextjs edit page](https://nextjs.org/learn/dashboard-app/mutating-data#updating-an-invoice)\n- [nextjs authentication](https://nextjs.org/learn/dashboard-app/adding-authentication)\n- [authentication with nextjs 14](https://medium.com/@rishipardeshi/authentication-with-nextjs-14-and-next-auth-b10fe7eb6407)\n- [세선 정보 받기 - 로그인 체크](https://authjs.dev/getting-started/session-management/get-session)\n- [한글 자음 모음 분리 자바스크립트 라이브러리 Hangul.js](https://github.com/e-/Hangul.js/)\n- [한글 맞춤법 검사기](https://www.npmjs.com/package/hanspell)\n- [ETRI Open AI API/Data Service, Supported by MSIT](https://aiopen.etri.re.kr/keyCreation)\n\n### Errors\n- Application error: a client-side exception has occurred (see the browser console for more information).\n- Error: Cannot find module '/home/ppabam/code/flag123/node_modules/.pnpm/bcrypt@5.1.1/node_modules/bcrypt/lib/binding/napi-v3/bcrypt_lib.node'\n    ```bash\n    $ npm rebuild bcrypt\n    ```\n- Clear Cache and Rebuild\n    ```bash\n    $ rm -rf node_modules package-lock.json .next\n    $ npm install\n    $ npm run build\n    ```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fppabam%2Flearning-log","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fppabam%2Flearning-log","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fppabam%2Flearning-log/lists"}