<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://blog.shangjiaming.com/backpropagation-algorithm/</loc>
<lastmod>2016-10-29T20:56:49+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/backpropagation-through-time-algorithm/</loc>
<lastmod>2016-10-29T22:18:03+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/neural-network-introduction/</loc>
<lastmod>2016-10-30T17:31:25+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/nodejs-rest-framework/</loc>
<lastmod>2016-11-08T00:00:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/emotion-app/</loc>
<lastmod>2016-12-22T00:00:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/emotion-recognition-notes/</loc>
<lastmod>2016-12-22T00:00:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/docker-compose-link-external-container/</loc>
<lastmod>2017-05-12T00:00:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/run-nodejs-script-in-cron/</loc>
<lastmod>2017-07-01T00:00:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/tmux/</loc>
<lastmod>2017-08-08T00:00:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/scala-tutorial-1/</loc>
<lastmod>2017-08-10T00:00:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/eslint-on-vim/</loc>
<lastmod>2017-11-18T00:00:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/http4s-intorduction/</loc>
<lastmod>2018-01-04T00:00:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/sbt-server-helloworld/</loc>
<lastmod>2018-01-06T00:00:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/kops-k8-introduction/</loc>
<lastmod>2018-01-14T00:00:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/scala-variance-in-inheritance/</loc>
<lastmod>2018-01-15T00:00:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/dynamodb-basic/</loc>
<lastmod>2018-08-24T00:00:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/scala%20tutorial/pattern-match/</loc>
<lastmod>2018-08-24T00:00:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/how-to-set-up-blog/</loc>
<lastmod>2018-08-27T00:00:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/the-problem-of-list-concatenation/</loc>
<lastmod>2018-09-05T00:00:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/scala%20tutorial/implicit/</loc>
<lastmod>2018-09-09T00:00:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/implicits-and-variances/</loc>
<lastmod>2018-10-09T00:00:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/try-is-not-monad/</loc>
<lastmod>2018-10-11T00:00:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/the-vim-command-i-used/</loc>
<lastmod>2018-11-04T00:00:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/cognito/</loc>
<lastmod>2018-12-27T00:00:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/oauth-introduction/</loc>
<lastmod>2019-01-02T00:00:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/review-map-flatmap-from-code/</loc>
<lastmod>2019-01-06T00:00:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/effect-and-side-effect/</loc>
<lastmod>2019-03-23T00:00:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/scala%20tutorial/type-classes/</loc>
<lastmod>2019-12-30T00:00:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/scala%20tutorial/what-is-fp/</loc>
<lastmod>2019-12-31T00:00:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/scala%20tutorial/algebraic-data-type/</loc>
<lastmod>2020-01-01T00:00:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/scala%20tutorial/underscore-in-scala/</loc>
<lastmod>2020-01-02T00:00:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/scala%20tutorial/scala-circe/</loc>
<lastmod>2020-01-20T00:00:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/scala%20tutorial/scala-monad/</loc>
<lastmod>2020-01-30T20:03:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/idea-note/</loc>
<lastmod>2020-02-09T20:35:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/scala%20tutorial/http4s-introduction-2/</loc>
<lastmod>2020-02-12T00:18:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/how-to-play-scala-on-vim/</loc>
<lastmod>2020-02-13T00:02:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/scala%20tutorial/free-monad/</loc>
<lastmod>2020-02-21T17:18:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/idea-note-v-0-0-2/</loc>
<lastmod>2020-02-25T23:53:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/copy-as-markdown-0-0-3/</loc>
<lastmod>2020-03-01T23:38:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/awesome-highlighter/</loc>
<lastmod>2020-03-22T12:00:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/scala%20tutorial/doobie/</loc>
<lastmod>2020-04-16T18:29:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/awesome-highlighter-0-0-2/</loc>
<lastmod>2020-05-02T21:15:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/simple-image-tool-0-0-1/</loc>
<lastmod>2020-05-18T00:15:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/scala%20tutorial/self-type/</loc>
<lastmod>2020-06-18T00:17:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/scala%20tutorial/cake-pattern/</loc>
<lastmod>2020-06-20T21:37:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/scala%20tutorial/reader-monad/</loc>
<lastmod>2020-06-28T23:57:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/scala%20tutorial/reader-pattern/</loc>
<lastmod>2020-07-05T22:35:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/python%20tutorial/python-poetry/</loc>
<lastmod>2020-07-08T21:58:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/scala%20tutorial/scala-practice-in-project/</loc>
<lastmod>2020-11-06T11:26:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/scala%20tutorial/tagless-final/</loc>
<lastmod>2021-06-02T13:20:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/say-goodbye-to-eff/</loc>
<lastmod>2021-07-15T22:43:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/scala3-implicit/</loc>
<lastmod>2021-08-03T22:22:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/google-proxy/</loc>
<lastmod>2021-10-13T22:07:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/nextcloud-solution/</loc>
<lastmod>2021-10-27T23:01:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/publish-scala-lib/</loc>
<lastmod>2021-12-01T23:00:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/project/jlogger/</loc>
<lastmod>2022-01-01T20:43:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/discussion/where-check-list-empty/</loc>
<lastmod>2022-02-13T15:04:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/reactor/reactor-quick-start/</loc>
<lastmod>2022-02-20T23:21:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/junior-code-in-scala/</loc>
<lastmod>2022-04-01T00:06:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/vavr-introduction/</loc>
<lastmod>2022-04-27T20:47:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/list-and-option/</loc>
<lastmod>2022-07-07T21:46:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/trampoline/</loc>
<lastmod>2022-07-24T23:14:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/trust-function-return-type/</loc>
<lastmod>2022-08-08T00:34:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/let-chatgpt-ask-questions/</loc>
<lastmod>2023-06-06T23:20:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/rca-by-chatgpt/</loc>
<lastmod>2023-06-07T23:49:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/shush/</loc>
<lastmod>2023-08-21T21:53:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/team-adopt-cd/</loc>
<lastmod>2024-03-23T20:20:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/how-to-make-a-competent-technical-analysis/</loc>
<lastmod>2024-04-29T00:00:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/how-to-use-gpt-4-to-do-ui-automation-testing/</loc>
<lastmod>2024-05-06T23:09:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/how-to-do-bug-analysis/</loc>
<lastmod>2024-11-19T22:07:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/how-to-handle-unknown-problems/</loc>
<lastmod>2025-03-02T17:37:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/automated-tdd-with-github-copilot/</loc>
<lastmod>2025-05-01T22:13:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/how-to-get-the-team-to-truly-embrace-ai-coding-assistants/</loc>
<lastmod>2025-06-22T22:20:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/i-used-github-copilot-to-develop-a-typing-practice-website/</loc>
<lastmod>2025-07-06T17:20:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/the-80-20-rule-of-ai-assisted-software-development/</loc>
<lastmod>2025-12-15T21:42:00+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/categories/</loc>
</url>
<url>
<loc>https://blog.shangjiaming.com/collection-archive/</loc>
</url>
<url>
<loc>https://blog.shangjiaming.com/</loc>
</url>
<url>
<loc>https://blog.shangjiaming.com/tags/</loc>
</url>
<url>
<loc>https://blog.shangjiaming.com/year-archive/</loc>
</url>
<url>
<loc>https://blog.shangjiaming.com/reveal.js/plugin/markdown/example/</loc>
</url>
<url>
<loc>https://blog.shangjiaming.com/reveal.js/test/simple/</loc>
</url>
<url>
<loc>https://blog.shangjiaming.com/reveal.js/css/theme/</loc>
</url>
<url>
<loc>https://blog.shangjiaming.com/page2/</loc>
</url>
<url>
<loc>https://blog.shangjiaming.com/page3/</loc>
</url>
<url>
<loc>https://blog.shangjiaming.com/page4/</loc>
</url>
<url>
<loc>https://blog.shangjiaming.com/page5/</loc>
</url>
<url>
<loc>https://blog.shangjiaming.com/page6/</loc>
</url>
<url>
<loc>https://blog.shangjiaming.com/page7/</loc>
</url>
<url>
<loc>https://blog.shangjiaming.com/page8/</loc>
</url>
<url>
<loc>https://blog.shangjiaming.com/page9/</loc>
</url>
<url>
<loc>https://blog.shangjiaming.com/page10/</loc>
</url>
<url>
<loc>https://blog.shangjiaming.com/page11/</loc>
</url>
<url>
<loc>https://blog.shangjiaming.com/page12/</loc>
</url>
<url>
<loc>https://blog.shangjiaming.com/page13/</loc>
</url>
<url>
<loc>https://blog.shangjiaming.com/page14/</loc>
</url>
<url>
<loc>https://blog.shangjiaming.com/page15/</loc>
</url>
<url>
<loc>https://blog.shangjiaming.com/reveal.js/demo.html</loc>
<lastmod>2025-12-15T21:47:15+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/reveal.js/</loc>
<lastmod>2025-12-15T21:47:15+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/reveal.js/plugin/markdown/example.html</loc>
<lastmod>2025-12-15T21:47:15+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/reveal.js/plugin/notes-server/notes.html</loc>
<lastmod>2025-12-15T21:47:15+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/reveal.js/plugin/notes/notes.html</loc>
<lastmod>2025-12-15T21:47:15+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/reveal.js/test/examples/barebones.html</loc>
<lastmod>2025-12-15T21:47:15+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/reveal.js/test/examples/embedded-media.html</loc>
<lastmod>2025-12-15T21:47:15+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/reveal.js/test/examples/math.html</loc>
<lastmod>2025-12-15T21:47:15+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/reveal.js/test/examples/slide-backgrounds.html</loc>
<lastmod>2025-12-15T21:47:15+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/reveal.js/test/examples/slide-transitions.html</loc>
<lastmod>2025-12-15T21:47:15+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/reveal.js/test/test-markdown-element-attributes.html</loc>
<lastmod>2025-12-15T21:47:15+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/reveal.js/test/test-markdown-external.html</loc>
<lastmod>2025-12-15T21:47:15+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/reveal.js/test/test-markdown-options.html</loc>
<lastmod>2025-12-15T21:47:15+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/reveal.js/test/test-markdown-slide-attributes.html</loc>
<lastmod>2025-12-15T21:47:15+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/reveal.js/test/test-markdown.html</loc>
<lastmod>2025-12-15T21:47:15+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/reveal.js/test/test-pdf.html</loc>
<lastmod>2025-12-15T21:47:15+08:00</lastmod>
</url>
<url>
<loc>https://blog.shangjiaming.com/reveal.js/test/test.html</loc>
<lastmod>2025-12-15T21:47:15+08:00</lastmod>
</url>
</urlset>
