


[{"content":"","date":"Jul 4, 2026","externalUrl":null,"permalink":"/en/tags/codex/","section":"Tags","summary":"","title":"Codex","type":"tags"},{"content":"","date":"Jul 4, 2026","externalUrl":null,"permalink":"/en/tags/game-development/","section":"Tags","summary":"","title":"Game Development","type":"tags"},{"content":"Keep sowing, keep hoping, and sometimes harvest.\n","date":"Jul 4, 2026","externalUrl":null,"permalink":"/en/","section":"Home","summary":"","title":"Home","type":"page"},{"content":"I previously built a SpriteSheet Editor, but after actually using it, the workflow still felt too tedious. I had to talk to ChatGPT one image at a time, wait for each result, go back and forth to revise it, and then do post-processing in the editor. In the AI era, there had to be a smarter way.\nThen I saw the underlying SpriteSheet that Codex Pet had generated for me.\nThat immediately gave me an idea:\nCodex can generate images. Codex can generate images in a standardized format. Wouldn\u0026rsquo;t that mean Codex could generate game assets too?\nI tried exactly that in a recent game demo. By having Codex reference OpenAI\u0026rsquo;s Hatch-Pet Skill, it was able to generate the character animations I needed, which made me even more convinced this path could work.\nBased on what I had learned so far, I started by building a Game-Tileset-Generator skill specifically for tilesets.\nIf you want to make something like Stardew Valley, this skill can generate tilesets directly and let you import them into tools like Tiled, greatly reducing the manual cleanup, rearranging, and rework that usually happens after GPT image generation.\nThe skill is already open source, Github, and I also put together a simple intro page.\nTo be honest, it is still far from perfect. The tiles GPT generates are not always exactly what I want. But compared with spending hours hunting for assets or drawing them myself, it is already much more convenient.\nIn this post, I want to share what inspired me in Hatch-Pet and how the Game-Tileset-Generator skill came together.\nBreaking Down the Hatch-Pet Skill # The goal of Hatch-Pet is to generate pet animations that work with Codex Pet.\nUnder the hood, everything is just one SpriteSheet:\nThere are nine action groups in total. Besides the running action above, there are also idle, running-right, running-left, waving, jumping, failed, waiting, and review. The animation frames for each action need to stay as consistent as possible in facial features, proportions, materials, color tone, and accessories. Each frame has a fixed size of 192x208 pixels. The background must be cleanly transparent. With that many actions and constraints, expecting GPT Image to generate everything in one shot from prompts alone is basically unrealistic. Prompt tuning is painful enough on its own, and GPT still cannot control dimensions precisely. That was also the reason I previously built the SpriteSheet Editor.\nHatch-Pet gives up on the fantasy of generating everything in one shot. Instead, it breaks the whole workflow into several steps:\nGenerate a base pet character. Generate the frame sequence for each action group separately. Extract the pet from each action sequence and standardize every frame. Stitch all frames into one large sheet. Run QA and patch local issues if needed. There are plenty of details inside that workflow, but I will not unpack everything here. The two parts that inspired me most were:\nhow Hatch-Pet standardizes each frame how Hatch-Pet structures the workflow About Standardization # The most valuable part of the whole skill, to me, is this standardization method.\nWhat \u0026ldquo;standardization\u0026rdquo; really means is taking a GPT-generated action sequence like this:\nand turning it into something like this, where every frame is 192x208 pixels with a fully transparent background:\nThe core ideas are:\nlayout guidance transparency processing subject extraction 1. Layout Guidance # When Hatch-Pet generates each action group, it does not just provide an action prompt and the base character image. It also provides a layout guide image as reference.\nCompared with an abstract text description, a layout guide makes it much easier for the model to understand how many frames belong in a sequence, how they should be arranged, and how each pose should sit inside its intended cell at a consistent size.\n2. Transparency Processing # Right now GPT cannot directly generate images with transparent backgrounds, and framed action images with solid backgrounds cannot be used in Codex Pet. So the background has to be converted to transparency in code by turning those pixels into RGBA(0,0,0,0). RGB represents a pixel\u0026rsquo;s color, while the A in RGBA is the alpha channel, which controls transparency.\nThe core idea is basically the same as a green screen, or chroma key, in visual effects. You pick a background color that will not collide with the subject. Here the chosen color is purple / magenta: #FF00FF.\nTo make transparency processing easier, the prompt also includes specific constraints: every pixel must either belong to the pet or belong to removable chroma-key background, and the pet\u0026rsquo;s colors must not get too close to the chroma-key color.\nThe code cannot simply remove every pixel equal to #FF00FF, because if you inspect GPT-generated images with a color picker, you will always find color variation. So the code also needs to calculate the RGB distance between each pixel and the chroma-key color, then remove pixels that fall within a threshold range.\n3. Character Extraction # Beyond RGBA issues, GPT still cannot control dimensions precisely. For example, the waiting action needs 6 frames, and each frame is 192x208, so the target size should be 1152x208.\nBut even with a layout guide at that size, the generated image still came out as 2172x724, which does not match the target. So the character has to be extracted, and each frame then has to be scaled into 192x208.\nThere are three extraction methods:\nSlots: split the image into equal-width cells directly For example, the waiting sequence has 6 frames in a 2172x724 image:\nSplit the width evenly: 2172 / 6 = 362, so each frame becomes 362x724 Compare the aspect ratio to 192x208 and calculate the scale factor with min(192/362,208/724)=0.2873 Scale proportionally to get 104x208 Center the result and fill the missing width with transparent pixels This method is especially useful when GPT follows the layout guide closely. It is simple and stable.\nBut if GPT shifts the poses even slightly, the resulting animation will shift during playback as well.\nComponents: extract non-transparent connected subjects This method builds on the transparency step above. Once the background becomes fully transparent, the remaining connected pixels form the character subject. You can wrap each connected subject using a bounding box defined by its top, bottom, left, and right edges, and then scale that bounding box proportionally into a 192x208 cell.\nThis works especially well for irregular GPT outputs.\nBut if some pixels remain after transparency processing, they become visual noise, so you also need an area threshold to filter out those tiny leftovers.\nHowever, if the pet has an effect element, such as a thinking bubble floating on the right, the bounding box for that frame becomes different. Since this method scales each bounding box independently, different bounding-box sizes lead to different pet sizes after scaling into 192x208, and the animation starts popping larger and smaller between frames.\nTo avoid that, Hatch-Pet explicitly constrains transparency and effects: do not add shadows, floating props, or decorative elements that are detached from the pet body or unrelated to the action itself.\nThis method works best for actions with relatively small bounding-box variation, such as subtle waving, breathing, or blinking.\nBut for larger motions, the bounding boxes can vary a lot, and for jumping actions, this bottom-aligned extraction also fails to preserve the sense of vertical movement.\nStable-Slots: use a unified viewport This is an improvement over the Components method. If independently scaled bounding boxes cause size jumps and jitter, then use one consistent viewport for the whole action sequence, extract the subject through that window, and then scale into 192x208.\nFor example, consider a jump sequence:\nFind the highest and lowest points across all bounding boxes to get a height that can contain the entire sequence Compare the widths of all bounding boxes and take the maximum width Add some transparent padding around the result to form one unified window This method preserves the relative movement between frames as much as possible. But because the window includes more blank space, the pet may end up slightly smaller after proportional scaling than in other actions.\nAbout Workflow Design # Workflow design is basically about connecting the standardization pipeline into one coherent flow. But beyond the process itself, three things matter most:\ntarget division of labor validation 1. Define a Concrete Target Spec # Only with a clear and explicit target spec can the output be measured and programmatically validated.\nHatch-Pet defines the target spec from the very beginning through scripts:\nWhat should the final image size be? 1536x1872, with a 192x208 cell size and a total grid of 8x9 Which action belongs on which row, how many frames it needs, what its width and height should be, and how much safe margin is required. For example, row 7 is waiting, it needs 6 frames, each cell is 192x208, so the row is 1152x208, and it also needs an 18px horizontal and 16px vertical safe margin 2. Clear Worker Roles # Context affects how an agent makes decisions. If a single agent does everything and carries all the context, later decisions can easily get polluted by earlier information.\nHatch-Pet uses a multi-agent design with these roles:\nRole Responsibility Parent Agent Infer the pet identity, define the target, assign work to other workers, schedule tasks and track progress, and run post-processing scripts and fixes Base Worker Generate only the base character Row Worker Each Row Worker generates only one action group Visual QA Worker Evaluate each action GIF and the final combined contact sheet against the target Each role gets its own specific task and context.\n3. Validation and Repair # Every intermediate output in Hatch-Pet goes through its own QA checks.\nAfter standardizing one action group, code checks the frame count, size, transparent edges (safe margins), background residue, whether pixel area stays inside a safe range, and so on After the full sheet is assembled, it checks dimensions, transparency, and other properties again But code can only understand pixels. It cannot judge whether the image itself is visually reasonable. So Hatch-Pet also generates GIF previews and a contact sheet for visual QA by a large model. If problems show up, it tries to repair them by either regenerating the action group or re-running standardization.\nEven so, Hatch-Pet can only do its best to satisfy the requirements. In the end, a human still needs to decide whether the result is actually good enough.\nWhat I Learned While Making Game-Tileset-Generator # Once I understood Hatch-Pet\u0026rsquo;s standardization flow, it became obvious that the same general approach could be combined with GPT image generation and applied to many other image-processing workflows.\nMore than the technical details, what I really want to share are a few lessons outside the technical side.\nHow the Skill Evolved # 1. From Broad Ambition to Focus # After seeing Hatch-Pet work inside a game demo, my first instinct was to build a general-purpose game asset generation skill. After all, the standardization pipeline looked broadly similar: users describe the assets they want, and the model generates them through a standardized processing flow.\nSo I had Codex try to build that skill by referencing Hatch-Pet.\nIt did not work.\nTrying to use one method for every asset type Game assets are too diverse. There are character animations, tilesets, props, and more. Different asset types have completely different goals and constraints, so their prompts and standardization methods also need to be specialized. But the \u0026ldquo;general game asset generation skill\u0026rdquo; Codex produced was trying to solve every scenario with one generic pattern.\nTake terrain tiles as an example. If you apply the character-animation approach, use a layout guide with safe margins, extract non-transparent subjects via components, and then stitch them back together, you quickly end up with jagged transparent edges around every terrain tile.\nWhat terrain tiles really need is a layout guide without safe margins plus a slots-based equal split.\nThe limitation of character animation generation Right now, GPT-generated motion sequences still have a hard limitation: leg motion between frames is often inconsistent. I tried a lot of prompting strategies. I even borrowed the layout-guide idea and used GPT to generate a motion skeleton image as reference. Still, I could not get a satisfying animation sequence.\nSo the conclusion was simple:\nIf you try to do too much at once, every scenario ends up handled badly. Different asset types need different skills. And if a character-animation skill cannot solve the core motion problem, then compared with Hatch-Pet it does not really add much. So I narrowed the scope and focused only on a tileset-generation skill.\n2. From Beginner to \u0026ldquo;Proficient\u0026rdquo; # Before building this skill, I had basically no experience in image processing or game development. My only related experience was casually exploring how to build games with Codex in my spare time, mostly by tossing it game ideas without worrying too much about implementation.\nSo when I first used Codex to write a tileset-generation skill, I was really just an outsider trying to direct an expert. The only things I could do were:\ngive it a one-line request: \u0026ldquo;reference Hatch-Pet and write a tileset-generation skill\u0026rdquo; when I found problems, say things like: \u0026ldquo;look at Hatch-Pet and fix this part\u0026rdquo; or \u0026ldquo;figure out a better way for that part\u0026rdquo; One of the pleasures of vibecoding is that the demo often exists before the requirements are even fully clear. One of the pains is that even after many rounds of letting it debug itself, the problems still remain. That gets frustrating fast.\nAnd if you open SKILL.md, you can immediately see how many phrases inside it exist only to patch specific problems. Calling it a messy document would be fair. Messy code is sometimes tolerable if you do not need to look at it and the business logic still works. But a messy skill prompt is different. You have no idea which phrase will later show up in context and start affecting the model\u0026rsquo;s behavior.\nThat is what led to the Hatch-Pet analysis earlier in this post. Without understanding how Hatch-Pet actually works, and without learning at least some basic image-processing concepts, it would have been very hard to build this skill.\nThankfully, AI also changes how quickly you can learn. I did not need to finish a whole beginner curriculum first. Whenever I ran into a problem during the build, I could just ask Codex and learn while making.\nAt the same time, to avoid losing control, SKILL.md also needed staged human review: first confirm the structure, then let Codex fill it in section by section.\nA Guided Flow for Clarifying Requirements # Most frustrating rework in agent collaboration comes from one thing: the requirements were never clearly defined in the first place.\nHatch-Pet has a very clear job. It creates SpriteSheets that can be used in Codex Pet. The user only needs to describe what kind of pet they want. The rest of the target specification is already defined inside the skill.\nTilesets are different. Different game types need different tile sizes. Some need 32x32, some need 64x64. Some need terrain, some need placeable props. The view might be top-down or side-view. A professional game developer might be able to describe everything in one go, but they would probably still miss details. Most of the time, user requests are inherently fuzzy. For beginners, they may not even know how to phrase what they want.\nWithout a clear target spec, a skill can hardly produce the result you expect.\nSo at the start of the workflow, the agent first translates the user\u0026rsquo;s request into the spec format supported by the skill, then proposes a recommendation that fits the request and asks the user to confirm it. For example:\nHelp me generate 12 ground materials for a Stardew Valley style game: grass, dirt, tilled soil, and so on.\nThe skill would respond with something like this:\nRecommended spec:\ntile size Recommend 64x64 Reason: your previous two sets already use 64x64, so keeping the same size makes later mixing much easier. If you want something closer to the original game\u0026rsquo;s density, 32x32 is also possible, but you will lose some detail.\npixel style Recommend full Reason: grass, dirt, and tilled soil are full-tile surface materials and should fill the entire tile.\nview Recommend top-down Reason: that matches the way Stardew-style farm ground is visually read.\nobject layout size Recommend all 1x1 Reason: 12 single-tile ground variations are the easiest format for map editing and random mixing.\natlas content Recommend terrain I suggest these 12 terrain tiles:\ngrass_light: light grass grass_dark: dark grass grass_worn: lightly worn grass grass_patchy: patchy grass soil_plain_light: light bare soil soil_plain_dark: dark bare soil soil_hoed_dry_a: tilled dry soil A soil_hoed_dry_b: tilled dry soil B soil_hoed_watered_a: tilled wet soil A soil_hoed_watered_b: tilled wet soil B field_transition_soft: soft grass-to-soil transition tile field_path_worn: worn path tile for field crossings This set covers grass, soil, tilled land, and transition pieces, enough to build a basic farm ground layer.\nrepeatability Recommend both Reason: terrain like this should tile seamlessly both horizontally and vertically.\natlas layout Recommend 4 columns x 3 rows Reason: that fits exactly 12 tiles.\nrun directory Suggest: [project path]/game-tileset-generator/stardew-ground-mix-64\nIf this version looks good, just reply:\nGenerate with this spec\nIf you want changes, just say what to adjust, for example: Change it to 32x32 Remove the path and replace it with more grass variations Use a lower-saturation palette closer to the original game\nThe user can keep iterating until the spec is confirmed. Once that spec is locked in, the rest becomes much easier, because the workflow can route the request into a known processing path.\nFinal Thoughts # I have run this skill several times now, and it has been fairly stable, so I decided to release it in its current form. It is already open source, Github.\nIf you are making a game, have looked everywhere for the tileset assets you want, still cannot find them, and are not going to draw them yourself, this skill might be worth trying. Feedback is very welcome.\n","date":"Jul 4, 2026","externalUrl":null,"permalink":"/en/2026/07/04/after-deep-into-codex-pet-i-make-skill-to-generate-game-tileset/","section":"Posts","summary":"","title":"Inspired by Codex Pet, I Built a Skill for Generating Game Tilesets with Codex","type":"posts"},{"content":"","date":"Jul 4, 2026","externalUrl":null,"permalink":"/en/posts/","section":"Posts","summary":"","title":"Posts","type":"posts"},{"content":"","date":"Jul 4, 2026","externalUrl":null,"permalink":"/en/tags/skills/","section":"Tags","summary":"","title":"Skills","type":"tags"},{"content":"","date":"Jul 4, 2026","externalUrl":null,"permalink":"/en/tags/","section":"Tags","summary":"","title":"Tags","type":"tags"},{"content":"","date":"2026/07/04","externalUrl":null,"permalink":"/tags/%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91/","section":"标签","summary":"","title":"游戏开发","type":"tags"},{"content":"","date":"May 25, 2026","externalUrl":null,"permalink":"/en/tags/chatgpt-image/","section":"Tags","summary":"","title":"ChatGPT Image","type":"tags"},{"content":"Recently, I\u0026rsquo;ve been exploring how to build 2D web games with Codex and tell stories through gameplay.\nMy idea is to use different mechanics for different parts of the story. For example, the first level could be a chase-and-escape scene where the player dodges AI enemies in a confined space and survives for a while to clear the stage. The next level could shift into a completely different mechanic to match the new plot beat. Before I could really think through the story or gameplay, though, I got stuck on a much earlier problem: making the game map.\nFollowing ChatGPT\u0026rsquo;s suggestion, I started learning Tiled. During that process, I realized ChatGPT Image 2 can actually generate pretty decent 2D map assets. The problem is that once you import those assets into Tiled, they are usually not directly usable.\nTo make those generated SpriteSheets work in Tiled, I built a small web tool tailored to the Tiled workflow: SpriteSheet Editor\nHere is the full story.\nWhat Tiled Needs # Tiled is an open-source 2D map editor. In Tiled, N fixed-size tiles arranged together become a layer, and multiple layers stacked together become a map.\nIt can slice an imported image into a tileset based on the grid size you provide. For example, after importing an image, you can pick individual tiles from the asset panel on the right and paint them onto the map area on the left.\nSo the key is getting the right source image, such as a SpriteSheet: one image that contains many assets in a grid. If the assets are aligned to a consistent grid and Tiled slices them correctly, the image can serve as a usable tileset. Once you have a good tileset, you can build the map you want.\nConcept Simple explanation Tile A small square on the map, such as 64x64 pixels Tileset A library made of many tiles SpriteSheet One image containing characters, props, and terrain assets Layer A map layer, such as ground, obstacles, or decoration Tiled An editor for building 2D maps with tiles and tilesets Generating a SpriteSheet with ChatGPT Image 2 # To get a SpriteSheet, you can either draw one yourself or download assets shared by other people on sites like itch.io. But finding assets with a style you actually like is not easy. In the AI era, the most attractive option for a beginner with no art background is obviously to generate them with AI.\nFor example, a prompt like this can produce a sheet:\nCat and mouse chase game SpriteSheet,\nIncluding cat, mouse, land, grass, flowers, and some obstacles,\nStardew Valley inspired cozy pixel art style,\nstrict evenly aligned grid layout,\n64x64 tiles,\ntransparent background,\nisolated tiles,\nclean tile spacing,\nsuitable for Tiled tileset and 2D game asset workflow\nAt first glance, the result looks great, but in practice it is not usable.\nProblem What it looks like Why it hurts Opaque background White blocks or color patches appear after import Layers cover each other and the map looks messy Grid misalignment Elements do not sit cleanly inside 64x64 cells Tiled slices broken or incomplete tiles Stuck-together elements Multiple objects appear inside one cell You cannot select assets independently Even after many prompt tweaks, I still could not reliably generate high-quality SpriteSheets that were ready to use. So to make the cleanup easier, I built a small web tool: SpriteSheet Editor.\nSpriteSheet Editor # It can:\nRemove backgrounds in one click Let you freely crop the elements you want Rearrange them into a clean SpriteSheet Export transparent PNG files After processing, the result can be imported into Tiled and used directly.\nMy Current Workflow # So this became my current workflow for AI-generated SpriteSheets:\nUse ChatGPT Image 2 to generate a source image containing characters, terrain, and obstacles Import the original image into SpriteSheet Editor Remove the background, manually select the useful elements, rearrange them into a SpriteSheet, and export a PNG Import that PNG into Tiled as a tileset Build the map with multiple layers This custom workflow is probably not very general, and it is still far from a professional game development pipeline. But for me, it feels like a real first step toward making games with AI.\nThanks to AI, a lot of things that once felt completely out of reach now feel worth trying.\n","date":"May 25, 2026","externalUrl":null,"permalink":"/en/2026/05/25/use-spritesheet-gen-by-chatgpt-with-sprite-sheet-editor/","section":"Posts","summary":"","title":"I Built a SpriteSheet Editor to Use ChatGPT-Generated 2D Game Assets","type":"posts"},{"content":"","date":"May 25, 2026","externalUrl":null,"permalink":"/en/tags/tools/","section":"Tags","summary":"","title":"Tools","type":"tags"},{"content":"","date":"May 25, 2026","externalUrl":null,"permalink":"/en/tags/workflow/","section":"Tags","summary":"","title":"Workflow","type":"tags"},{"content":"","date":"2026/05/25","externalUrl":null,"permalink":"/tags/%E5%B7%A5%E4%BD%9C%E6%B5%81/","section":"标签","summary":"","title":"工作流","type":"tags"},{"content":"","date":"2026/05/25","externalUrl":null,"permalink":"/tags/%E5%B7%A5%E5%85%B7/","section":"标签","summary":"","title":"工具","type":"tags"},{"content":"","date":"2026/04/25","externalUrl":null,"permalink":"/tags/%E4%BA%A4%E6%98%93%E7%B3%BB%E7%BB%9F/","section":"标签","summary":"","title":"交易系统","type":"tags"},{"content":"","date":"2026/04/25","externalUrl":null,"permalink":"/tags/%E5%A4%8D%E5%BC%8F%E8%AE%B0%E8%B4%A6/","section":"标签","summary":"","title":"复式记账","type":"tags"},{"content":"过去几年都在做平台型交易系统，处理订单交易背后的资金流，比如电商平台，平台方需要撮合用户，商家，物流三方的交易，就需要在用户支付时收款，在商家发货/物流履约之后进行结算。这样的场景下就面临一个问题：怎么快速判定，整个系统当前的每一笔资金处理都是正确的？\n这里的正确性指：\n从用户收款的时候，钱不会多收、错收、漏收 给商家/物流结算的时候，钱也不会多打、错打、漏打 最终一致性及其局限 # 一般情况下，交易平台的订单、账务清结算、支付的数据都分布在不同的业务系统，甚至还会跨团队。所以最开始，我以为正确性判断这个问题，应该是一个典型的分布式系统数据一致性问题，对电商平台业务来说，因为CAP定理1的存在以及业务高可用性的要求，BASE2已经成为了一种基本的设计哲学，也有TCC、Saga及相关变种的成熟最终一致性方案，我们用的最多的，就是通过引入中间状态，通过幂等+重试来保证不重不漏。\n比如支付流程，下单时会创建一个支付单，置为「待支付」，然后等第三方支付机构/系统确认收款成功之后回调，然后更新支付单状态为「已支付」，再继续后续流程。这样通过状态机来保证数据达成最终一致的方式在系统里随处可见\n这样的场景处理多了，就会产生一种思维惯性，认为只要计算正确，并维护数据达成最终一致，那么这个交易的处理就是正确的。而且本身交易系统离钱近，比较敏感，上线前的开发测试都会比较谨慎，工程纪律良好的情况下一般不会出现问题。但随着时间的推移，系统变得越来越复杂，人员犯错概率上升，也越来越容易故障。\n我们系统就出现过这样一次资损事故，用于保证幂等的规则因为业务需求变更而修改，正常链路已经做好了兼容，但是重试的链路被忽视，导致正常流程结算了之后，重试的流程又重复结算了一遍。最终一致性只能保证系统在异步、失败和重试之后，最终收敛到某个状态，但如果重试/补偿机制本身出了问题，那么系统也可能稳定地收敛到一个错误结果。\n而且故障来源各种各样，没有工程师能保证系统100%不出问题，软件系统的故障是一种必然，工程师能做的，就是尽早发现，尽早修复。要发现问题，就需要增加对账能力。但最终一致性的设计偏向也让局部对账没那么实时。考虑到重试一般是小时或者天的级别，所以对账一般也是离线T+1去拉数据来进行比对。\n有没有更加实时的方法？最终一致性的设计，本质上是允许数据在不同时间节点上达成一致，显然无法解决时效的问题。\n复式记账与业务数据建模 # 时间维度无法回答这个问题，空间维度上有没有解法呢？复式记账法3或许是其中一个手段。复式记账强调的是：有借必有贷，借贷必相等。任意时刻通过校验会计恒等式来判断，一旦出现不相等说明系统在钱的处理上必定有问题。\n之前我一直以为电商交易系统和银行系统不一样，只有银行系统才需要遵循这个规则，但电商平台本质上也是撮合交易，交易的背后是钱和商品/服务的交换，这套处理钱的记账法发展了500年足见普适性和可靠，所以电商平台应该可以，或者说也应该要遵循这个规则。\n比如\n流程 业务数据 复式记账 用户下单 商品 100，运费 10，优惠券 20，用户实付 90 用户虚拟账户资金 -90\n平台营销账户 -20\n平台待清分账户 +110 商家履约 订单状态流转 商家应付账户 +80；平台佣金应收 +20；平台待清分资金 -100 物流履约 订单状态流转 物流应付账户 +10；平台待清分资金 -10 平台结算 商家应得80、物流应得10、平台佣金20 商家应付账户 -80，商家可提现账户 +80；\n物流应付账户 -10，物流可提现账户 +10 商家/物流提现 商家提现80， 物流提现10 商家可提现账户 -80，平台银行存款 -80；\n物流可提现账户 -10，平台银行存款 -10 其实就是把交易环节的业务数据建模成一套账本，每一次账户余额的变更，都对应一次A账户余额到B账户的转移，总体上金额是恒等的。这样\n用户虚拟账户 + 平台营销账户 = 平台清分账户 = 商家应付账户 + 物流应付账户 + 平台佣金应收 = 商家可提现账户 + 物流可提现账户 + 平台佣金账户\n把中间环节消除最后就得到：用户虚拟账户 + 平台营销账户 = 商家可提现账户 + 物流可提现账户 + 平台佣金账户\n即 用户虚拟账户 - 商家可提现账户 - 物流可提现账户 = 平台佣金账户 - 平台营销账户\n这样假如某次逻辑出现问题，比如又出现了一次重复结算，那么商家应付账户余额会增加，而用户账户没有对应的余额，公式不相等，马上发现问题并介入结算过程进行拦截。 这样就不需要等到T+1才能发现，否则可能钱都已经提走了\n理想与现实的差距 # 账本模型非常合理，然而事实上，我们并没有这么做：\n核心原因在于业务从0-1的时候，初始产研团队缺乏这种财务的专业视角，大家关注的重点还是业务的核心流程本身，关心的还是业务能不能跑起来。所以最开始的版本，几乎没有专门抽象出“账户”，只把流程中需要的字段给记录到业务单据上。\n比如\n流程 业务数据 业务单据 用户下单 商品 100，运费 10，优惠券 20，用户实付 90 创建订单/支付单，记录\n用户实付 90（商品 100，运费 10，平台优惠券 20） 商家履约 订单状态流转 - 物流履约 订单状态流转 - 平台结算 商家应得80、物流应得10、平台佣金20 创建商家/物流结算单\n记录结算给商家80\n记录结算给物流10 商家/物流提现 商家提现80， 物流提现10 创建商家/物流提现单\n记录商家提现的80\n记录物流提现的10 这也应该是绝大多数业务起步时正常的模样——面向业务流程开发，不会面向资金建模。这样的模式，在快速迭代的时候也非常方便，需求来了就把相关金额字段都堆到业务单据上，比如又加了什么优惠，就订单上加一个优惠字段。当需要从财务视角算钱的时候，再通过SQL去把相应的业务单据拉出来算出原本隐含着的数据，流程能跑起来，但在资金视角，确实也不是一个好的数据模型\n更大的问题在于，当业务和产研都基于这个模式形成了自己的认知和SOP，习惯了现状之后，就没有人有想法和动力去扭转这种模式，特别是这种短期成本大于收益，长期收效不明显的改动。这里也包括我，也是偶然突发奇想，和ChatGPT询问下业界的实现，才把自己的认知扭转过来\n在认知没有到位的时期，就做出了很多能跑起来，但总觉得差点意思儿的方案，比如\n票据系统，需要把相关金额信息都收集起来开票，因为缺乏一个统一的账本，在排期压力下就想着去各个业务单据上去取数，捞数据做聚合的逻辑就变得很重 对账系统，因为只有业务单据，所以对账的目标，也是根据单据的状态和信息是否匹配，来判断是否能达成最终一致性 如果有账本模型 # 如果有了账本模型，比如还是这个流程\n流程 业务数据 业务单据 复式记账 用户下单 商品 100，运费 10，优惠券 20，用户实付 90 创建订单/支付单，记录\n用户实付 90（商品 100，运费 10，平台优惠券 20） 用户账户资金 -90\n平台营销账户 -20\n平台待清分账户 +110 商家履约 订单状态流转 - 商家应付账户 +80；平台佣金应收 +20；平台待清分资金 -100 物流履约 订单状态流转 - 物流应付账户 +10；平台待清分资金 -10 平台结算 商家应得80、物流应得10、平台佣金20 创建商家/物流结算单\n记录结算给商家80\n记录结算给物流10 商家应付账户 -80，商家可提现账户 +80；\n物流应付账户 -10，物流可提现账户 +10 商家/物流提现 商家提现80， 物流提现10 创建商家/物流提现单\n记录商家提现的80\n记录物流提现的10 商家可提现账户 -80，平台银行存款 -80；\n物流可提现账户 -10，平台银行存款 -10 有账户表\n账户类型枚举 账户类型 账户ID user 用户账户 user_1 merchant_payable 商家应付账户 merchant_payable_2 merchant_withdraw 商家可提现账户 merchant_withdraw_2 shipping_payable 物流应付账户 shipping_payable_3 shipping_withdraw 物流可提现账户 shipping_withdraw_3 plarform_clear 平台待清分账户 plarform_clear platform_commission 平台佣金账户 platform_commission platform_promotion 平台营销账户 platform_promotion platform_bank 平台银行存款账户 platform_bank 假如有这么一个订单order_001，对应就会有这些账本记录，资金流向：贷方-\u0026gt;借方\n业务流程 记录ID 交易单据类型 交易单据ID 账户类型 账户ID 借方金额 贷方金额 交易时间 描述 用户下单 1 订单 order_001 用户账户 user_account_a 90 2026-04-25 10:01:00 用户实付 用户下单 2 订单 order_001 平台营销账户 platform_promotion 20 2026-04-25 10:01:00 平台优惠券 用户下单 3 订单 order_001 平台待清分账户 plarform_clear 110 2026-04-25 10:01:00 平台待清分 商家履约 4 订单 order_001 商家应付账户 merchant_payable_2 80 2026-04-25 10:01:00 商家应得 商家履约 5 订单 order_001 平台佣金账户 platform_commission 20 2026-04-25 10:01:00 佣金收入 商家履约 6 订单 order_001 平台待清分账户 plarform_clear 100 2026-04-25 10:01:00 平台待清分 物流履约 7 订单 order_001 物流应付账户 shipping_payable_3 10 2026-04-25 10:01:00 物流应得 物流履约 8 订单 order_001 平台待清分账户 plarform_clear 10 2026-04-25 10:01:00 平台待清分 平台结算 9 订单 order_001 商家应付账户 merchant_payable_2 80 2026-04-25 10:01:00 平台结算 10 订单 order_001 商家可提现账户 merchant_withdraw_2 80 2026-04-25 10:01:00 平台结算 11 订单 order_001 物流应付账户 shipping_payable_3 10 2026-04-25 10:01:00 平台结算 12 订单 order_001 物流可提现账户 shipping_withdraw_3 10 2026-04-25 10:01:00 提现flow也是类似这样流程，不再赘述\n因为资金数据粒度已经具体到了费用项，所以\n票据系统，直接根据账户id 就可以把特定账户指定时间段内，需要的费用项的信息拉出来，给特定的用户开票 对账系统，关注焦点也从业务单据的状态费用两两是否一致，转移到了账本数据SUM(借方) == SUM(贷方)是否恒等， 更符合对账这一概念本身 回到最初的问题：怎么快速判定，整个系统当前的每一笔资金处理都是正确的？目前的答案是账本模型，本质上只是把业务单据里横行扩展的资金数据，改成了纵向扩展的账本数据，极大地提高系统灵活性的同时，也满足了资金系统的要求，经过推演，愈发认为这才是正确的处理方式。\n小结：\n以上则是过去这段时间的一些思考与整理，ChatGPT在这个过程中提供了不少助力。以前是Google一个问题后，需要自行理解多篇文章，然后纠结这些内容怎么和我的想法关联起来，时不时就被差异给卡住，卡顿感极其明显，以至于老早就知道复式记账，但始终没能理解如何正确融合进系统里\nChatGPT的一大改变是，它能顺着我的想法来推演，在不断追问的过程中，把一些卡顿的思路捋顺。在AI时代，学习方式也发生了彻底的颠覆\nCAP定理：任何一个分布式系统不能同时保证一致性（Consistency）、可用性（Availability）和分区容忍性（Partition tolerance）\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n基本可用（Basically Available）、软状态（Soft State）、最终一致性（Eventual Consistency）\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n1494年，意大利数学家、教士卢卡·帕西奥利（Luca Pacioli）在威尼斯出版《算术、几何、比例和比率概要》，在其中全面系统地阐述了这个记账系统\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n","date":"2026/04/25","externalUrl":null,"permalink":"/2026/04/25/trading-system-correctness/","section":"全部文章","summary":"","title":"用复式记账重建交易系统的正确性","type":"posts"},{"content":"","date":"2026/04/25","externalUrl":null,"permalink":"/tags/%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B/","section":"标签","summary":"","title":"软件工程","type":"tags"},{"content":"","date":"2026/01/19","externalUrl":null,"permalink":"/tags/ai-coding/","section":"标签","summary":"","title":"AI Coding","type":"tags"},{"content":" \u0026ldquo;看完一篇文章，感觉就和没看一样\u0026rdquo;\n如果你也有这种感觉，这个插件或许能帮到你。这是一个基于LLM（大语言模型）辅助阅读的浏览器插件，可以把当前的网页文章变成完形填空。比如在看这篇LLM领域经典论文《Attention is All You Need》的论文解读，就可以一键生成题目，然后边看边做\n做完后提交可以看答案，插件会根据是否和原文一致计算得分\n核心理念是通过这种填空的方式，在阅读过程中增加一点摩擦，来帮助你加深阅读时的印象\n使用流程 # 插件开源，目前已上架Chrome/Edge扩展商店，搜索cloze-reading即可安装体验，也可点击Google扩展和Edge扩展直达\n如何使用？\n在文章页面点击扩展图标，打开右上角浮动面板 选择 API Provider / 模型提供者，填写对应的 API Key / 模型名。(需自备API,目前支持Ollama、AI Studio和Qwen） 点击 开始生成 / Start 按钮 在正文中直接选择答案，点击 提交答案 / Submit 查看结果和解析 点击 恢复原文 / Restore 可以还原整篇文章 灵感来源 # 面对\u0026quot;看完一篇文章，好像就和没看一样\u0026quot;这个问题，感觉还是看的过程过于丝滑，眼睛动了脑子还没跟上。都说要“带着问题去阅读”，但这个“问题”也不是那么好想的，还有什么轻量一点的方法可以让脑子多停留一会儿？\n多年应试教育的拷打让我想到了完形填空，以前学英语做完形填空，会反复的推敲和斟酌上下文，然后选出一个合理的答案，这样的小摩擦似乎是会比眼睛简单过一遍要更能理解原文。于是很自然就诞生这样的想法，能不能把在看的每一篇文章都变成完形填空！\n以当前的互联网内容生产速度，人工出题的方式基本不可能，依托技术手段，可能要用到一些复杂的NLP算法去分词，然后识别关键词，即便识别出来，生成具有迷惑性的干扰项应该也不简单，对于没算法背景的人来说，这也属实天方夜谭\n好在，现在有LLM，这个想法似乎有了可能。既然AI能很好的实现全文摘要，那为何不让AI也试试出题？抱着这样的想法，Vibe Coding出了这个插件\nLLM应用开发体感 # 之前学习《从零开始构建智能体》，了解到LLM应用开发，本质上就是在Prompt中要求LLM根据特定格式输出内容，然后代码里解析这个格式，提取内容进行处理。\n所以这个插件开发过程也不复杂，其实就是全文识别，丢给LLM让它出题，最后在原文中匹配关键词，然后做UI交互。整体效果取决于模型本身有多“听话”，能不能按特定格式要求返回。\n强烈建议LLM应用开发都直接用云服务的API。 一开始不懂事，高估了16G M4 Mac Mini的机器性能，用Ollama部署qwen3:8b来验证效果，差点因为生成速度太慢放弃这个idea（文章都看完了，题目都还没出来）。后来尝试了下用云服务的API，同一篇文章总体耗时大概从7分钟缩短到1分钟，模型更强出题率也高，虽然觉得还是有点慢，但通过分批处理，也能让出题速度比阅读的速度快，长文阅读的体验会好很多\n关于API，意外发现阿里Qwen API的新人免费额度真的量大管饱，几乎每个模型都有100M token随便用，开发期间用qwen-turbo和qwen-plus反复调试，调到现在还算满意的状态后也还剩很多 而Google AI Studio里的免费额度，一分钟居然只能请求5次，一下子就超了，连一篇长文都处理不完 因为qwen目前能很好的满足开发和使用诉求，其他厂商的API就没有测试了，所以目前插件也仅支持Ollama、Qwen、Gemini，后续看情况可能会支持更多\n关于LLM应用的未来 # 从应用开发的角度，现在对LLM不太满意的点还是生成的速度，毕竟不是所有场景都追求“高精尖”的，像cloze-reading这种场景，并不追求90分的质量，如果可以更快，只有60分也ok。不过以现在AI惊人的发展趋势，说不定再过一两年就能变得又快又好\n如果真能更快，很多实时互动场景，都可以像cloze-reading这样把看到的内容都用LLM来重塑一下，感觉还蛮有发展空间的。\n","date":"2026/01/19","externalUrl":null,"permalink":"/2026/01/19/cloze-reading-experience/","section":"全部文章","summary":"","title":"Cloze-Reading: 让你拥有完形填空般的阅读体验","type":"posts"},{"content":"","date":"2026/01/19","externalUrl":null,"permalink":"/tags/llm/","section":"标签","summary":"","title":"LLM","type":"tags"},{"content":"","date":"2026/01/19","externalUrl":null,"permalink":"/tags/%E6%95%88%E7%8E%87%E5%B7%A5%E5%85%B7/","section":"标签","summary":"","title":"效率工具","type":"tags"},{"content":"","date":"2026/01/19","externalUrl":null,"permalink":"/tags/%E6%B5%8F%E8%A7%88%E5%99%A8%E6%8F%92%E4%BB%B6/","section":"标签","summary":"","title":"浏览器插件","type":"tags"},{"content":"","date":"2025/12/20","externalUrl":null,"permalink":"/tags/cursor/","section":"标签","summary":"","title":"Cursor","type":"tags"},{"content":"","date":"2025/12/20","externalUrl":null,"permalink":"/tags/hexo/","section":"标签","summary":"","title":"Hexo","type":"tags"},{"content":"","date":"2025/12/20","externalUrl":null,"permalink":"/tags/hugo/","section":"标签","summary":"","title":"Hugo","type":"tags"},{"content":"","date":"2025/12/20","externalUrl":null,"permalink":"/tags/%E5%8D%9A%E5%AE%A2%E5%BB%BA%E8%AE%BE/","section":"标签","summary":"","title":"博客建设","type":"tags"},{"content":"花了点时间，把blog从hexo迁移到了hugo，这下终于舒服了\n动机 # 过去一段时间都在用P.A.R.A方法来管理我的所有资料，用坚果云来跨设备同步，但一直有个编外Project，就是这个博客站。\nhexo很方便，但基于node.js的项目都会有一个node_modules文件夹用于存放模块依赖，如果把整个博客项目文件夹放进我的P.A.R.A体系，坚果云就会开始同步文件夹内所有的文件，包括这个node_modules\u0026hellip;洁癖作祟，我不希望我的P.A.R.A体系被node_modules这种环境依赖污染。\n一开始在想，坚果云应该有类似于gitignore的配置，可以忽略特定的文件/文件夹。搜索发现mac下有个配置文件：~/.nutstore/db/customExtRules.conf可以满足这个需求，但官方链接已经404，咨询客服，回应说为了客户端同步稳定性已经把功能关闭，担心引发意料之外的问题，放弃这种方式。\n于是目光投向了Hugo，\n对比维度 Hexo（基于 Node.js） Hugo（基于 Go） 构建速度 ⚠️ 中等偏慢：文章数量多时（\u0026gt;1000 篇）生成耗时较长 ✅ 极快：万级页面秒级生成，Go 并发优势显著 上手难度 ✅ 简单：命令直观，YAML 配置友好，适合新手 ⚠️ 较高：需学习 Go 模板语法（如 {{ range }}），逻辑稍复杂 主题生态 ✅ 极其丰富：大量高质量中文/英文主题，高度可定制 ⚠️ 相对较少：主题精美但数量有限，部分功能需自行实现 插件支持 ✅ 插件生态成熟：SEO、评论、统计、搜索等插件齐全 ⚠️ 插件机制弱：多数功能需通过模板或自定义脚本实现 本地预览 ✅ 支持热更新，写作体验流畅 ✅ 同样支持热更新，且启动更快 部署便捷性 ⚠️ 依赖 Node.js + npm，换环境需重装依赖，可能有版本冲突 ✅ 零依赖：单个可执行文件，跨平台即用，部署极简 社区与文档 ✅ 中文社区活跃，教程丰富，问题易解决 ⚠️ 英文文档完善，但中文资料较少，社区相对小众 适用场景 个人博客、中小型站点、注重外观与功能扩展的新手用户 大型博客、技术文档站、性能敏感型用户、追求高效与简洁的开发者 维护成本 ⚠️ 较高：需管理 Node 环境和 npm 包，长期维护可能遇到兼容性问题 ✅ 极低：无外部依赖，升级只需替换二进制文件 让AI列出了表格对比，显然在依赖管理这方面，Hugo更能解决我的痛点，其他问题在AI时代都已经不是问题了 采用Github Pages的项目站点 # 软件工程上，要保证迁移过程的平滑，不影响正常访问，其实不外乎几步\n新起一个项目， 内容迁移到新项目， 准备就绪后，把访问路由到新的项目 一直在用github pages，足够方便还想继续用，但就会和正在用的域名起冲突。搜索才发现，原来github pages还分用户站点和项目站点，即username.github.io 以及username.github.io/repository。（这下终于知道为什么偶尔刷到一些网站，有着同样的username.github.io但不同的路径却有不一样的功能了，估计用的都是项目站点）。显然，项目站点能保证迁移的平滑，我只需要在项目站点准备好之后，把域名改成项目站点即可。\n还有一个需求，github pages要求代码仓库是public的，付费才可以用private仓库来发布pages，如果我想保持源内容私有，只公开hugo生成的静态网页，又不想付费怎么办？答案是Github Action，可以配置在提交代码的时候，往另一个仓库写入内容\n# .github/workflow/.deploy.yml name: Deploy Hugo site to GitHub Pages on: push: branches: [\u0026#34;master\u0026#34;] workflow_dispatch: # 手动触发也可以 permissions: contents: read pages: write id-token: write concurrency: group: \u0026#34;pages\u0026#34; cancel-in-progress: false jobs: build: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 with: submodules: recursive - name: Setup Hugo uses: peaceiris/actions-hugo@v3 with: hugo-version: \u0026#34;latest\u0026#34; extended: true - name: Build run: hugo --minify - name: Deploy to public repo run: | cd public git init git config user.name \u0026#34;github-actions[bot]\u0026#34; git config user.email \u0026#34;github-actions[bot]@users.noreply.github.com\u0026#34; git add . git commit -m \u0026#34;Deploy from private source repo\u0026#34; git branch -M gh-pages # 或者 gh-pages，看你用哪个分支做 Pages git remote add origin https://x-access-token:${{ secrets.HUGO_GITHUB_PAGES }}@github.com/username/repository.git git push -f origin gh-pages 注意：@github.com/username/repository.git需要调整，也得配置访问另一个仓库的Tokensecrets.HUGO_GITHUB_PAGES。（其实都是让Cursor写的）\n使用Cursor轻松完成迁移 # 接下来就是内容迁移环节了，迁移文章，最重要的是保持seo权重，还有各种front matter 以及内部文章引用语法等等，搜索自然能找到对应的教程，但自己研究细节并且逐篇修改，费时费力。AI时代，当然交给AI，这也是整个迁移过程最惊喜的地方！\n把两个博客站点文件夹加到同一个workspace里，跟Cursor说，这是个Hexo博客目录，帮我迁移到这个Hugo博客目录中，去刷个牙回来，Cursor居然就迁移完了？！而且还会自己写python脚本来处理每一篇文章。结果很完美，文章永久链接这种该有的都有了，甚至，把文章以及配图等本地文件引用都放到同一个slug目录下，这种超出预期的行为都有了，过程丝滑的毫无体验感，真香！\n而且之前一直嫌弃给文章打标签太麻烦，现在完全可以让Cursor来打标签呀，于是三两下，标签也有了\u0026hellip;最多再根据自己喜好改改。用了BlowFish主题，有些个性化配置例如网站favicon等不知道怎么弄，直接问Cursor就给出了方案\u0026hellip;\n嗯，基本离不开Cursor这类AI工具了\n","date":"2025/12/20","externalUrl":null,"permalink":"/2025/12/20/hexo-blog-migrate-to-hugo/","section":"全部文章","summary":"","title":"博客迁移，从hexo到hugo","type":"posts"},{"content":"这是一款浏览器插件形式的小工具，用于管理每一次买入场外基金份额的收益，轻量、数据存在本地\n开发这个工具主要用来辅助我个人的投资操作，如果您也有类似的需求，欢迎体验👏\nChrome扩展安装 Edge扩展安装 我的交易策略 # 我刚开始投资基金的时候，用的是“定投”的策略，主流基金APP都支持，操作简单，定期定额买入，很适合工薪族，每个月发工资就买上一笔，就当存钱了，没什么不妥。但后来逐渐冒出一些问题：什么时候卖？每次卖多少？是大涨的时候一波清仓？是跌了按捺不住认亏离场？又或者坚定持有直到需要用钱的时候？不管怎么操作，看上去都显得没有章法。怎么卖？“定投”这两个字没有答案\n后来跟投「长赢指数投资计划」，这个计划的买卖操作单位都是一份，买入时有多少份额，算作一份，卖出时直接卖出这一份，完事。这样的操作策略很好的解答了我怎么卖的困惑。于是我的交易策略就变成了：买入时记录对应的份额，每天更新收益，等达到特定收益率就卖出这些份额。\n策略挺简单，但除了跟投长赢计划，似乎没有基金APP能直接支持这样的操作，或许是需求小众吧。用Excel倒是可以记录买入的份额，但要更新每一份的最新收益也挺麻烦的，而且还有很多老早之前定投一直没卖的份额，用这种策略重新管理起来也非常费事，总不能逐个点开交易详情看有多少份额吧\n有需求就要满足，所以开发了这个工具\n功能与使用流程 # 视频演示：\n您的浏览器不支持视频播放。 目前支持的功能：\n✅ 支持(批量)添加基金买入信息，通过买入时间\u0026amp;金额，自动换算\u0026quot;确认净值\u0026quot;与\u0026quot;确认份额\u0026quot;（已考虑节假日）\n✅ 支持部分/全部卖出份额，通过卖出时间\u0026amp;份额，自动换算卖出的\u0026quot;确认净值\u0026quot;与\u0026quot;卖出收益\u0026quot;（确认逻辑同买入）\n✅ 支持分红收益，但只会计算分红登记日时持有份额对应的分红收益（如有卖出，则计算剩余份额对应的分红），忽略后续的现金分红/红利再投\n✅ 数据本地保存在浏览器，支持导出备份与导入恢复。（建议多导出备份，避免插件误操作等导致数据丢失）\n✅ 支持买入卖出时记录想法\n✅ 支持重新编辑买入信息和卖出信息\n操作流程如下，以支付宝为例：\n1.打开某基金的交易记录列表，列表页有基金代码，也有买入时间和买入金额。录入时直接填入买入时间\u0026amp;金额。\n2.工具会自动请求天天基金，获取相关数据计算净值\u0026amp;份额，以及分红信息（已自动处理节假日）\n3.等刷新完成，列表会展示持有收益和固定收益（含手续费，分红和卖出收益等）\n4.当持有收益达到预期，可选择卖出，并录入卖出信息。只需卖出时的手续费和卖出日期，同样会自动计算卖出确认净值\n5.如果录入的买入卖出信息有误，可以编辑更新，保存后会刷新\n6.（可选）批量录入完成，建议导出备份\n本插件还支持CSV格式的批量导入，现在大模型技术相对成熟，可将基金交易记录截图，发给大模型让它整理出符合要求格式的数据，然后复制粘贴到CSV格式输入框，可节省繁琐的一一录入（但亲测大模型整理会有少许错漏，还是建议逐一核对）\nQ\u0026amp;A # 除了浏览器插件，还有没有其他app、网站，可多端同步并查看收益 本人追求数据本地优先，也不想维护服务器，做成app和网站都很重，浏览器插件是比较轻量的选择，所以短期内不会有其他形式的入口，也不支持多端同步。后续版本倒是有考虑支持webdav备份，这样就不用手动导入导出备份了\n为什么不支持直接上传交易记录截图，还得繁琐的手动录入 一开始确实想直接一步到位，上传交易记录截图后，插件直接解析计算数据。但是实测下来大模型效果不一定100%准确，也有成本。另外从投资的角度来说，繁琐一点也不一定是坏事，有点摩擦能加强对本次交易的印象\n最后 # 如有问题想要反馈，欢迎邮件jerrymakes2026@gmail.com\n如果插件碰巧也解决了您的需求，想要鼓励我的创作，也欢迎请我喝杯瑞幸\n","date":"2025/08/09","externalUrl":null,"permalink":"/2025/08/09/a-tool-for-fund-shares-management/","section":"全部文章","summary":"","title":"基不可失:一款场外基金买入份额管理工具","type":"posts"},{"content":"","date":"2025/08/09","externalUrl":null,"permalink":"/tags/%E5%9F%BA%E9%87%91/","section":"标签","summary":"","title":"基金","type":"tags"},{"content":"","date":"2025/08/09","externalUrl":null,"permalink":"/tags/%E6%8A%95%E8%B5%84/","section":"标签","summary":"","title":"投资","type":"tags"},{"content":"AI编程火起来好久了，但之前没想着实现些什么。直到最近基于自身需求萌生出一个想法，而市面上似乎没有合适的工具，才用起AI编程，花了点时间用vscode+copilot折腾了一个简单的桌面应用（注，本文的AI编程全都指向vscode+copilot）。\n总的来说，从0到1的过程确实很惊艳，简单几句话描述就能生成一个可以跑起来的桌面应用，关键页面UI样式也不丑，但从1开始不断加功能，不断打磨的过程也很折磨，折腾了几次AI都改不出让我满意的效果，还引入了新的bug，让它自己解决问题，试了好几次依然没改对，只好放弃折腾（我自己也改不动），推倒重来。\n不过，在重新开始之前，还是有必要总结一下使用经验的。一开始听信各种自媒体吹捧，以至于让我对现阶段的AI编程有了过高的期待，然而目前看来问题蛮多，不过这也不是AI的问题，在实际生活中，需求的澄清和理解，也是一个反复的过程，人和人都不一定能沟通清楚，何况是人与AI？所以，与其调教AI成为好员工，时不时被气的不行，不如调教我自己成为使用AI的熟练工\nAI编程对我的价值 # 目前AI编程对我最大的价值，在于快速验证一些小想法，做出来的东西不完美，但不讲究的话也确实能用\n毕业6年多一直从事后端开发，前端懂点皮毛，但如果要从头开始做一个前端项目，直接就能把我劝退。不找队友的情况下，不仅要学前端，还要有点设计和审美，以至于之前即便有想法，一想到做交互页面需要找人或者自己学，想法直接就搁浅了，可能学不到一半就放弃了，而现在AI编程的出现，确实降低了想法落地的门槛，验证阶段不用再去找人，或者花时间学习，用AI就能快速看到效果，节省不少时间。到时觉得效果还不错，想加大投入的时候，再去认真学也不迟\n举个例子，在做桌面应用之前，是先用AI做的微信小程序。花了一两晚用AI生成代码，然后用小程序开发工具直接打开，调试效果，就发现\n需要对外发请求获取公开数据，但代码里的http header在小程序对外请求时会自动替换，而这个关键header参数又决定了能不能拿到数据 说是可以用云函数，然而小程序测试号不支持，又注册了一个正式号，等注册完，果然还得花钱才能用云函数 还没花钱，就发现：小程序对外请求需要添加白名单，但测试号可以加的域名，在正式号里一直添加不了，小程序后台提交的时候审核不通过，没有具体的原因，结合可能的原因列表推测，大概率是域名没有备案？ 还不确定花钱用云函数能不能绕过限制，也不确定后续还会有哪些坑，微信生态庞大，但限制也很多，不如直接弃坑 这要是没有AI，从0开始接触小程序开发，到发现这些坑，估计就不是一两晚的事情了。后续就转向用Electron开发桌面应用，数据都存本地，没有服务器成本，还支持跨平台。给AI说了下，AI也是二话不说直接生成代码，出来一个桌面应用。当有一个半成品放在眼前，总会冒出更多的想法，这里改一下，那里优化一下 ，于是就发现了一些问题\n发现的问题 # 有问题，但不一定是AI编程的问题，也有可能是我使用方式不对。\n1. 无法自己调试 # AI编程目前侧重于生成代码，实际运行效果如何，得依靠我去把项目启动起来，才能验证。于是整个流程就变成了\n我告诉AI想要什么，AI根据自己的理解生成一大段代码 开始debug，发现问题，直接把错误信息发给AI，AI直接修复 继续debug，确认当前功能正常。继续循环上述步骤，进一步增加/调整功能 持续改进的过程中，我就是一个产品+测试，AI就是那些写了逻辑直接提测从不自测的开发，经常改出问题而不自知。一些功能问题还好，比如按钮点击不生效啥的很快就能修复，麻烦的是UI问题，后面选择放弃也是因为UI改坏了，各种css样式和js代码相互影响，仅靠AI已经改不好了。而且AI编程好像遵循的是追加代码的思路， 同一个组件的CSS样式存在不少的重复，让它把重复代码删掉吧，等它改完代码还在，一点都不听劝。这里有点好奇，明明AI能阅读整个项目的代码，为什么不在原来的基础上改，而是追加不少新代码呢？难道学会了人类开发在屎山上堆屎的倾向？\n2. 响应越来越久 # 起初功能简单，响应还挺快的，但持续加逻辑之后，代码文件越来越长。而每次AI处理文件，都是先阅读整个文件，然后再重写整个文件。一来一回需要的时间蛮久，如果改一次就能改对，那倒是能原谅它。问题是改了很多次依然没解决，此时我就像我的领导，丝毫不理解一个“简单”的bug为什么需要改怎么久。\n也萌生过一个想法，把逻辑拆到不同的文件中， 响应会不会快一些？还没实验过，后续可以试试，但可以想到的是，拆成多个小文件，AI不可避免的也要阅读多个文件，最后总体的阅读量好像差不多？不阅读所有的代码，再加上不自测，到头来同样也会改出各种问题。或许这就是非本地大模型的局限性，并不适合处理整个项目，毕竟把所有代码传到远端，阅读理解一番，再把改动传回来，重写相关文件，费时是必然的，但无疑还是比人脑处理快多了，但人估计一遍就能改对，而现阶段还不能对AI编程有这样的期望\n3. 让使用者产生依赖 # AI的正确率无法保证，但用的时候还是按捺不住想要偷懒的心。想加的功能，直接扔给AI，发现的问题也丢给AI，想起之前摘录的内容\n我长期使用 AI，靠它帮助编程，已经不能在没有 AI 帮助的情况下解决问题了。\n我不再阅读文档。既然 AI 可以立即解释一切，为什么还要费心阅读呢？\n我的调试技能日益生疏。我甚至不再阅读报错消息，只是把它们复制并粘贴到 AI，让 AI 解读。\n我已经成为了一个人肉剪贴板，仅仅是代码和 AI 之间的中介。\n以前，每条报错都会让我学到一些东西。现在呢？AI 提供了解决方案，我却什么也没学到。实时答案带来的多巴胺刺激，取代了真正理解的满足感。\n另一个受到影响的地方是深度理解。以前，我花费数小时来理解某个解决方案为何有效，现在，我只是照着 AI 建议实施。如果这些建议不起作用，我会改进提示的上下文，再次询问 AI。这种循环使得我对 AI 的依赖性不断增加。\n我的情绪也受到影响。以前，解决新问题是编程乐趣的一部分。现在，如果 AI 不能在五分钟内给出解决方案，我就会感到沮丧。\n我该怎么办？我不想采取任何激进的措施，比如完全放弃 AI，这是不现实的。我打算每周实行一天\u0026quot;无 AI 日\u0026quot;。\n我的感觉是，AI 不会让我们成为10倍效率的程序员，只会让我们对它的依赖程度增加10倍。\n每当我们让 AI 解决我们自己可以解决的问题时，我们就是用短期生产力换取长期理解，我们以牺牲明天的能力为代价来完成今天的效率。\n\u0026mdash;- 科技爱好者周刊（第 336 期）：面对 AI，互联网正在衰落\n深有同感，AI编程的过程中不仅依赖AI解决问题，也不去看AI写出来的代码，每次得到结果都是无脑accept，然后debug看效果。以至于后来真的遇到AI解决不了的问题了，由于不熟悉代码，也没有在这个过程中，去看AI写出来的代码，有点无从下手的感觉。就是想让它改，也说不出一个前端领域内的专有名词来让它理解我的诉求，只会说类似于，这个框大一点，这个圆小一点之类的提示词\n当然啦，在选择重开之前，还是花了大半天去看代码尝试解决问题的，只是后来觉得，与其优化一个不太满意的雏形，倒不如拿这个时间来琢磨更好的设计，完善一下想法，然后再来一遍\n几点建议 # 后续用AI编程的一些建议\n做好版本控制，得到一个稳定版本，就可以考虑用git commit一次。后续让AI改问题，越改越乱的时候，可以考虑回退版本，重新开始。vscode的copilot也支持回退变更，可以适当用起来，也许回退版本重新开始比一股脑让AI改来改去要快得多 边做边学，学习AI写出来的代码，知道有哪些组件，命名是什么。顺带去了解出现的新概念，技术组件，专有名词等等。 要清晰的指挥AI，离不开精准的描述 考虑付费使用高级模型，即便花钱也比找人便宜。一些觉得AI蠢的case，或许会在高级的模型中得到改善。 目前免费的claude 3.5 sonnet preview，确实没有那么聪明的样子。 ","date":"2025/03/15","externalUrl":null,"permalink":"/2025/03/15/ai-coding-experience/","section":"全部文章","summary":"","title":"AI编程初体验","type":"posts"},{"content":"这周部门年会上谢幕之后，终于结束这段下班苦练，周末联排的生活节奏，算下来好像也没花太多时间，两首歌，和乐队小伙伴一起彩排加起来也不到10个小时(2+2+2+3)，平时下班自己练练可能也5个小时左右(0.5 x 10)。时间不长，但这段时间摸索的感觉比几个月的课学的都多，最重要的是：时隔一年多，超额完成当初报名学钢琴的目标，不仅和同事们组乐队一起玩，还上台表演了。很有意思的经历，值得记录下\n起初学钢琴的理由很简单，音乐是可以玩一辈子的事情。早在2022年元旦就上了节体验课，当时还在犹豫。过了一年多，到了2023年10月底，估计是客服KPI，说有免费体验，又激起了我的兴趣，总觉得现在再不学，以后就不会学了。上完体验课就报名，想不到两个多月后就在部门年会上被拉壮丁，solo了一段入门级别的《卡农》钢琴独奏，又菜又怂。不过这确实是一个重要节点，在那之后，就和几个同事开玩笑的拉了个群，组乐队预定今年的年会，还怂恿一个同事去现学架子鼓。热闹过后又沉寂了许久，直到24年11月部门开始征集年会节目了，这件事才被翻出来，这会儿钢琴课早已懈怠，一时脑子发热买的编曲键盘也吃上了一层灰，平常也不怎么练，水平大概是带点结巴的弹完《梦中的婚礼》，其中一个同事也已经离职了，剩下我们四个，个个都说可以整，那就整活儿。\n也正是筹备的时候，才发现从钢琴独奏到乐队键盘挺不一样的，以前只需要识谱，练右手、练左手，再合手，差不多就得了。乐队的话，得魔改原曲，最基本的就是移调，想弹出原曲的感觉还得扒音色，刚接触这些真的一个头两个大，而且刚学完《梦中的婚礼》就换老师了，还去了别的校区，有点远，新老师还不怎么熟，所以都没怎么请教老师，全是靠自己摸索的野路子，摸索完发现以前零散的知识点一下子就融会贯通了\n下面是过程\n定调 # 我们选了好几首歌，最后敲定了《霓虹甜心》和《突然的自我》，在一起排练之前，都是各自练习。然后在第一次合的时候，才发现需要移调，我也是这会才知道移调这个概念，因为我们的主唱是女生，这两首歌都是男声，原调不太合适，得换个调。例如伍佰版本的《突然的自我》，但是主唱更想要黄小琥的版本，唱起来更舒服，原版是E调，得改成B调的。\n关于调，新手入门基本都是C大调，也就是CDEFGAB 对应do re mi fa so la si\nE调的话，do是从E开始的，结合全音半音规律（大调），也就是E、F#、G#、A、B、C#、D#对应do re mi fa so la si ，谱子上就是4个# 依次类推，B调即B、C#、D#、E、F#、G#、A#对应do re mi fa so la si，有五个#， 所以不同的调，升号是不一样的，对于键盘来说，弹的黑键也不一样了，和弦和旋律指法全变了，相当于之前白练\u0026hellip;另外有个口诀4152637(fa do so re la mi si)\n只有一个#，F全部变成# 有两个#，F和C都变成# …… 有五个#，F、C、G、D、A （41526）都变成#，相当于黑键全用上了 然后《霓虹甜心》也要从马赛克的原版G调，改成王心凌/黄绮珊版的D调，一开始还不确定D调，扒了下王心凌/黄绮珊版《霓虹甜心》开头的旋律\n5 7 #4 3 2 #1\n5 3 #1 2 5 7 #4 3 6 #4\n只有两个#，大概率是D调了， 后来在无限循环旋律的时候，发现QQ音乐有查看乐谱的功能，直接就出来D调\u0026hellip;. 找谱子 # 以前都是拿到谱子直接上手，现在改了调，和弦和旋律全都变了，之前找的谱子都不能用了。得重新找，对于《突然的自我》来说还比较简单，我主要弹和弦（真练不动旋律了，留给有经验的吉他手），有个「有谱么」的APP，可以直接一键移调，并提示最新的指法，都不用动脑子\n但是有了和弦，也有点犯难。如开头的旋律，弹B之后，G#m到底在左边还是右边？弹完G#m了，C#m7又是弹左边还是右边？这会儿我意识到了，这属于和弦进行的问题。上B站搜了下和弦进行，但此刻还是不知道该怎么弹，好像没有和弦进行是从7（B）开始的，突发奇想，谱子移到C调，和弦就变成了162536251，突然顿悟\u0026hellip;原来经典的和弦进行，都指的C调\n《突然的自我》还算简单，《霓虹甜心》就麻烦了，因为谱子是在B站，小红书上找专门扒谱的买的原调PDF文件，并不能像有谱么一样，一键移调到D调。还好整首歌基本是好几个旋律不断重复，所以我主旋律和和弦直接扔给AI，让AI帮我移调，\n不得不吐槽一下Kimi，扔给ChatGPT和Perplexity都是一下子得出结果了，kimi我得反复给他纠正。拿到旋律，没有谱子\u0026hellip;依然是一个问题，之前习惯看着谱子弹，现在没有谱子\u0026hellip;\n于是又开始去找打谱软件，发现了MuseScore，技能树又点亮了，不过时间有限,最后也没折腾出谱子，右手基本就两三段旋律，练多了直接记住了\u0026hellip;左手和弦的部份有点复杂，这首歌速度还快，每次换和弦手都跟不上，然后研究了下转位和弦，基本可以做到每次换和弦只需要动两根手指（我可真是个天才）。\n不过以后还是得打个谱子，事实证明在台上一紧张，很容易就忘记弹到哪了，这次我的左手就很多直接没弹\u0026hellip;\n配音色 # 折腾音色，感觉是最难的部份了，把KORG PA600的音色都试了一个遍，都听不出原版的感觉。后来去B站找了下\n才发现居然叠了三个音色，然后还得在曲子进行中不断切换\u0026hellip;好家伙，好在键盘支持performance预设，可以预设4组音色配置，一键切换，又现学现卖的研究了一下，过程中不断挖掘一些键盘功能\n折腾完这些，后面基本就是靠自己练熟练度了。\n其他 # 在排练室的时候就发现，我们的速度太不稳定了，两首歌一首快的一首慢的，先快后慢，后一首会不自觉地变快，先慢后快，后一首就被拖慢了。本来还挺期待给《突然的自我》找的背景视频的现场笑果的 后面担心到时候舞台上我们速度不稳定卡不到点，就放弃了。事实我们第二首《突然的自我》确实不由自主的快了\n另外才发现原来乐队表演，排练的时间大多数都是在调乐器音量\u0026hellip;这里踩了一个坑\u0026hellip;给四组音色配音量的时候，音量没调好，一组声音大一组声音小。导致现场切音色的时候，声音忽大忽小，还得不断的调音量，听起来也不够好\n其他的好像没啥了，键盘手速成，真的只需要一个年会\n","date":"2025/01/18","externalUrl":null,"permalink":"/2025/01/18/to-be-a-keyboard-player/","section":"全部文章","summary":"","title":"一个乐队键盘手的从0到1","type":"posts"},{"content":"","date":"2025/01/18","externalUrl":null,"permalink":"/tags/%E5%B9%B4%E4%BC%9A/","section":"标签","summary":"","title":"年会","type":"tags"},{"content":"","date":"2025/01/18","externalUrl":null,"permalink":"/tags/%E6%96%B9%E6%B3%95%E8%AE%BA/","section":"标签","summary":"","title":"方法论","type":"tags"},{"content":"","date":"2025/01/18","externalUrl":null,"permalink":"/tags/%E9%9F%B3%E4%B9%90/","section":"标签","summary":"","title":"音乐","type":"tags"},{"content":"之前刷即刻发现这份SEO 初学者指南，看完觉得对小白确实友好，也理解了一些现象\n独立博客之间求友链的行为，原来都是为了增加backlinks，希望提高在搜索引擎上的权重 在阮一峰的《科技爱好者周刊》中上榜，时间久不一定被遗忘，以《科技爱好者周刊》的权威度，也能极大提升SEO排名，持续带来潜在的搜索流量 SEO做的怎么样，是可以用工具衡量和优化的 研究竞争对手是怎么做的，是小白高效找到努力方向的技巧（不仅仅是SEO，很多事情亦如此 跃跃欲试想给博客做一下SEO优化，按照指南尝试ahrefs网站功能的时候才发现，更有价值的功能都需要付费，能理解但30美元一个月的Starter plan对0基础小白来说相对贵了一些，还是先用免费功能完成从0到1的过程\n以Google为例，做SEO需要\n把网站提交给Google 持续优化提升在Google中的排名 对于优化排名，指南介绍了4个方面：a.关键词研究 b.页面SEO c.链接建设 d.技术性SEO。大概就是先分析高潜关键词，然后专门为关键词打造产品/服务/内容页面，接着增加外链提高在搜索引擎的权威度，最后优化一些影响浏览体验的技术指标\n博客场景有点不同，已经发布的文章，改是完全不想改了，顶多优化一下cd两项；对于新文章，倒是可以参考一下方法步骤，但总觉得顺着关键词分析这样一套流程下来就有点迎合市场的意味了，不一定是我想写的内容，丧失了博客本身我手写我心的本意，到头来就只做了基础优化，如下\n提交Sitemap到Google # 之前Google不出博客，后来居然可以了，可是在这之前并没有进行任何sitemap生成和提交的操作，用ahrefs的工具扫了一下，大概率是因为之前把博客主页发到即刻上产生了一条外链，被挖掘出来了\n所以，即便不提交sitemap，只要网络上留有链接，迟早能被Google发现，但也仅限于能链接到的网页，如果想要所有文章都能被Google检索，最好还是主动给博客里所有文章生成sitemap，并提交到Google上\n对于Hexo博客来说，这需要两步：\n下载和配置插件hexo-generator-sitemap，配置完成后能在执行hexo g时自动生成sitemap.xml 进入Google search console(也就是GSC)，提交可访问的sitemap.xml路径 这里面有个小坑，要保持生成的sitemap.xml里url的域名和提交给Google的域名一致，如果博客有自定义域名，则需要修改hexo的配置文件_config.yml里的url配置为自定义域名，然后再用hexo g生成，否则对应不上无法生效\n提交完需要等2天左右才有数据\n另外也会提示一些问题，但几乎都没有意义，例如\n都用https了，还在提示http的网页是重复的 网页url之类的都改过了，还提示404 …… 技术性SEO # 注册ahrefs网站，提交博客域名，会需要验证网站所有权，方法之一就是根据指引下载特定文件，并上传到该域名可访问的url路径上。提交成功几分钟后会有一份问题列表，技术性SEO实际上就是优化这些问题\n图片压缩 # 之前发布游记的时候就发现，照片数量多、体积大，真的很影响阅读体验，文字看完了图还没加载出来，压缩一下体验好很多，想不到还是有几张图片被ahrefs列出来了，看起来超过1M就会被当成issue，再用工具压一下\n推荐utools里的插件——图片压缩，压缩完还能直接覆盖原图，都不用逐个配图换url，很实用。就是压缩算法不支持多次压缩，只压了1张，另外3张之前压过的，试了下不传原图发到微信，重新下载还是同样的大小，连微信都压不动了，这倒是没想到，也就几张照片，不纠结了\n其他忽略项 # xxx short/long/low: 文本长短之类的，忽略 Open Graph tags incomplete: 社交媒体分享的时候可以展示特定信息，暂时没有这需求，忽略 Missing alt text: 看了下是hexo配置的网站logo没有alt text，好像也不支持设置，忽略 Pages to submit to IndexNow: 会自动把网页变更同步给搜索引擎，不用等搜索引擎定期扫描，更实时一点，初步看是一项付费服务，也先忽略吧 Indexable page not in sitemap: 我的sitemap生成实际上是扫描之后做的，所以这里会扫出来，忽略 Page and SERP titles do not match: 看了下文章标题和搜索结果的优化标题，只是多了一个网站的后缀，问题也不大，忽略 文章排名优化探索 # 基础优化做完，想试着优化文章的排名，更多的是摸索一下方向，现在写过的文章中，我还是觉得我的网格交易策略实践 比较有价值，我设想的是，当用户Google「网格交易」时，结果页里有我这篇文章，所以搜索关键词为「网格交易」。\n没付费，只好玩下ahrefs的免费工具（这里有个小坑，地区不能选China，会没有数据，还是得用默认的United States），先用关键词生成器看下，这个关键词怎么样\n搜索量比较低，不是一个热门词，而且大部分和加密货币关联在一起，难度（KD）Easy，然后用关键词排名检查看下，还没有排名\n会发现排名靠前的都是科普文章，而且前三名的数据不会高的离谱，不知道是不是因为地区选择美国但是关键词是中文所以数据样本不够大的关系，不过改成香港和台湾这些中文语境的地区看了下也差不多。看来难度不高\nGSC的结果也是写过的文章里表现最好的一个（虽然寥寥无几），还能怎么提升排名？本质上来说，越贴近用户搜索意图，越权威的网页，排名越高。\n从top文章基本是科普文章这点来看，搜索意图基本是「是什么」和「怎么做」，这两点我的文章也算涵盖，看得出来外链差Top1挺多的，但其他的网页没啥外链居然也能排Top，好奇ing，但想深入分析关键词、评分这些人有我无的相关SEO指标差距的话，都需要付费，目前也不想到处发外链，好像只能先这样了\n另外不知道为什么，有条自然搜索关键词记录，「coolshell」能检索到我的文章coolshell文章整理（一），在这个时间点，没有提交sitemap，也没有专门发过文章链接，真不知道是怎么匹配上的🤷，或许就是好运眷顾吧\n","date":"2024/12/15","externalUrl":null,"permalink":"/2024/12/15/seo-for-hexo-blog/","section":"全部文章","summary":"","title":"Hexo博客SEO优化实践","type":"posts"},{"content":"","date":"2024/12/15","externalUrl":null,"permalink":"/tags/seo/","section":"标签","summary":"","title":"SEO","type":"tags"},{"content":"整理以前的素材，翻出了几篇文章，程序员如何把控自己的职业、使用简单的逻辑方法进行独立思考、如何超过大多数人…… 都是coolshell里不可多得的好文，可惜的是，耗子叔已经离开，coolshell再也不会有更新了。一度担心某一天网站再也不能访问，很多人也一样，于是他们整理了这个项目：haoel-articles，看得出来，耗子叔是一大批技术人的明灯\n简单翻翻coolshell，印象里只读过几篇热门，还有好多没有读过，心血来潮想都看一遍，看看还有没有错过的宝藏，于是有了这篇文章，主要是个人对coolshell文章的索引，方便自己以后重温。读起来才意识到想要一次性看完所有文章不现实，读完后面忘前面，目前读完了2016-2023年的文章，2016年我上大三，也是这一年脱离学生社团活动，开始认真学技术，蛮合适的一个时间节点，先整理一轮\n值得多看几遍的好文 # 如果以问题为导向去看文章，那么coolshell里绝大多数技术文章估计都不会有被发现的机会。但总有一些命题，与技术无关，而且我们也常常会感到困惑以及迷茫，不知所措的时候看看这些文章，也许有不一样的想法\n文章 想法 如何超过大多数人 个人认为这篇是全站最佳。核心是要我们提升认知、掌握知识、锻炼技能，具备领导力，但更有特色的是，文章列举了非常多具体的生活现象，是可以“避坑”的程度。真的常看常新 别让自己“墙”了自己 没有太多的大道理，列举了好几个人的小故事，告诉我们，不要自己给自己设限，拥抱更大的可能性 技术人员的发展之路 技术能做多久，什么阶段应该干什么，不同阶段的人生可以是怎么样的，文章有非常好的解答 程序员如何把控自己的职业 告诉我们要认识规律和自己，打牢基础，提升效率，并且对这些命题都给出了比较细致的说明 谈谈我的“三观” 透露自己的世界观、人生观、价值观，非常值得学习 使用简单的逻辑方法进行独立思考 一些更符合逻辑的思考方式 原来还能这样 # 世界很大，有很多东西如果没有别人的介绍，我们可能永远不得而知，就像井底之蛙。collshell里有不少文章，有助于开阔眼界，知晓一些和日常不一样的玩法\n文章 想法 聊聊 nostr 和 审查 email居然是很难封禁和审查的 聊聊团队协同和协同工具 环境孕育文化，文化滋生工具 MegaEase的远程工作文化 高效率的远程工作，是怎么样的 关于我”极客时间“的专栏 《左耳听风》的番外，突然觉得专栏的价格特别的值 我看绩效考核 绩效考核的不是人，而是提高组织效率 什么是工程师文化？ 对这种工程师文化非常憧憬和向往 我做系统架构的一些原则 好的系统架构，长什么样 如何做一个有质量的技术分享 介绍一些做分享的技巧 “努力就会成功” 要更聪明，知道自己是不是在用蛮力，要拒绝劳动密集型 从Gitlab误删除数据库想到的 运维能力强弱 == 自动化程度 这多年来我一直在钻研的技术 耗子叔相对全面的介绍了自己的技术背景，突然能理解为什么耗子叔能写出这些技术文章了 是微服务架构不香还是云不香？ 全站最后一篇更新，而且很能说明大多数人没有独立思考能力的现象，\n还顺带看到了一篇讲Amazon和Google轶事的文章，蛮有趣SteveY对Amazon和Google平台的吐槽 一些奇奇怪怪的科普 # 文章 想法 源代码特洛伊木马攻击 居然能利用字符集来攻击 计时攻击 Timing Attacks 居然能利用接口响应时间来推测逻辑 50年前的登月程序和程序员有多硬核 如标题，过于硬核 Linux PID 1 和 Systemd linux社区的故事也挺狗血的，而且近期linus因俄乌战争在linux贡献者里面剔除俄罗斯开发者的新闻，更加让人败好感 其他 # 还有很多其他有意思的文章，只是此刻没能引发我个人的兴趣，或许将来也会有重温的一天\n","date":"2024/11/04","externalUrl":null,"permalink":"/2024/11/04/read-coolshell-round-one/","section":"全部文章","summary":"","title":"coolshell文章整理（一）","type":"posts"},{"content":"","date":"2024/11/04","externalUrl":null,"permalink":"/tags/%E4%B8%AA%E4%BA%BA%E6%88%90%E9%95%BF/","section":"标签","summary":"","title":"个人成长","type":"tags"},{"content":"","date":"2024/11/04","externalUrl":null,"permalink":"/tags/%E7%B2%BE%E9%80%89/","section":"标签","summary":"","title":"精选","type":"tags"},{"content":"","date":"2024/11/04","externalUrl":null,"permalink":"/tags/%E8%81%8C%E4%B8%9A%E5%8F%91%E5%B1%95/","section":"标签","summary":"","title":"职业发展","type":"tags"},{"content":"","date":"2024/10/13","externalUrl":null,"permalink":"/tags/%E5%A4%9A%E5%9B%BE%E9%A2%84%E8%AD%A6/","section":"标签","summary":"","title":"多图预警","type":"tags"},{"content":"","date":"2024/10/13","externalUrl":null,"permalink":"/tags/%E6%97%85%E8%A1%8C/","section":"标签","summary":"","title":"旅行","type":"tags"},{"content":"","date":"2024/10/13","externalUrl":null,"permalink":"/tags/%E6%B3%89%E5%B7%9E/","section":"标签","summary":"","title":"泉州","type":"tags"},{"content":"","date":"2024/10/13","externalUrl":null,"permalink":"/tags/%E6%BC%B3%E5%B7%9E/","section":"标签","summary":"","title":"漳州","type":"tags"},{"content":"国庆，和对象去了福建的漳州和泉州，想躲人从众，搜冷门景点刷到的，离深圳也很近。去了才发现惊喜比一开始了解的更多，特别是泉州：年代久远的古建筑、各路神仙庙宇、别出心裁的雕刻艺术、多元的宗教遗址等等，在2021年还申遗成功进入了《世界遗产名录》，对人文历史感兴趣的都非常推荐去看看。\n行程是3号一大早出发坐高铁，然后7号一大早高铁返程，差不多4天多的时间，先去漳州，然后再去泉州\n漳州 # 漳州的土楼建筑比较有名（福建土楼在2008年就进入了《世界遗产名录》），不过看着交通都不太方便，我们就没去。漳州还有一个东山岛，因为觉得海岛都差不多也没去。所以漳州基本就是市区附近逛了下\n高铁一到站就直接打车到漳州三馆（漳州市博物馆、艺术馆、城市展示馆），逛完博物馆都中午了，本来还想看下城市展示馆，刚好国庆前几天闭馆\u0026hellip;美术馆没去，又饿又困，吃饭睡午觉，等傍晚没那么热，出发去漳州古城。\n漳州古城 # 漳州古城还可以，特色小吃好多！\n必须推荐麻糍，今晚最佳。还顺带试了下沙茶里脊肉、四果汤，还有片仔癀甘蔗汁，才知道片仔癀是漳州的企业\n路过一家店，不得不说真是广告鬼才，看看这个门面，让人浮想联翩，上楼一看，居然是卖东西的特产小超市，套路太深了，忍不住拍照存档，还在门口等了一会会才没那么多人。（还好我们不是唯一被骗进去的\u0026hellip;\n最后在小红书上找了一个机位，拍了个俯瞰图，然后去远处那个塔下面拍了个照就撤了\n泉州 # 第二天高铁去泉州，打车到梧林传统村落\n梧林传统村落 # 这个村落有很多以前下南洋的华侨赚到钱后回来“起大厝”造的洋楼、番仔楼（突然有种以前下南洋都好赚钱的错觉），一开始还以为下南洋是亚洲四小龙经济腾飞那会儿的事情，搜了一下才知道原来早在明清时期就开始下南洋了\u0026hellip;\n路上还看到不少娘惹服装租赁和商拍，这种服饰之前也有看到过，但才知道这种风格叫娘惹（华人和马来西亚融合形成的一种文化），既然来了，顺带吃下特色的娘惹菜，有点离谱，逛之前取了个号，逛完了都还没排到，最后还得和人拼桌才能吃上饭，而且上菜还有点慢（起码不是预制菜）\n炸鸡太干了感觉比不上KFC的口感，但这个咖喱浇到饭上一起吃是真的香\n本来吃完准备去看海上佛国——洛伽寺，但是看小红书最新的帖子，全是人而且阴天也不好看就被劝退了。节假日看实时人流的话小红书还是蛮好用的，打车去草庵的时候，司机说洛伽寺要么早上9点前，要么下午4点后，人会少一点，其他时间车进去了都堵的出不来。来都来了，约了明天一大早的顺风车去洛伽寺。\n然后接着逛草庵\n草庵 # 草庵寺，是中国仅存的摩尼教遗址，也是世界现存唯一的摩尼教寺庙遗址。摩尼教之前没听过，但这也是金庸《倚天屠龙记》里面提到的明教（虽然我也没看过）。据说当年朱元璋借着明教的势力建立起了大明王朝，后来担心明教威胁统治转而官方打压禁止，而这个草庵伪装成佛教而逃过一劫。\n这片地方也就这一个庙，附近也没其他东西了，路过看看还行，专门打卡大可不必。\n看完草庵回酒店休息，晚上骑小电动去五店市传统街区逛逛，建筑风格和梧林传统村落差不多，然而晚上基本看不清啥。随便逛逛吃点就回了，还踩雷了这边一家店，极其难吃的酱油浇到了土笋冻上，写这个游记的时候，嘴里都觉得有那股儿味\n洛伽寺 # 来得早，9点多就到了，人不多，还有一点蓝天，色彩搭配起来还蛮好看的。这边商业拍摄也多得离谱，后面看到一个机位有好多人在排队\u0026hellip;\n快中午的时候逛到观音像这边已经阴天了，这还是调过色的，实际更加灰暗。远看整座寺庙就在海上，确实有点特色，网上还有好多好看的航拍图\n回到泉州古城区先吃了顿牛肉火锅，这个牛肉汤好好喝。吃饱喝足再去闽台缘\n闽台缘博物馆 # 主要讲闽台两岸的历史文化的，内容挺多，拍了几个觉得有意思的\n这个三寸金莲鞋，对比太强烈了\n以前的报纸原来是这样的\n因为还约了傍晚的泉州木偶戏（在附近），看完紧接着就去看泉州木偶戏\n泉州木偶戏 # 拼运气抢到了第三排，看得好清楚！非常推荐，艺人们对木偶操作的精细程度超出预期，居然都能操纵木偶拿起酒杯喝酒，最震撼的还是几个木偶一秒变装（全场惊呼的那种），可惜没拍到，小红书上搜索有视频，不过更推荐现场看（先看视频再去现场感觉就没惊喜了）。\n看完顺带吃了个姜母鸭，也是比较有名的特色，口感不错，炖的嫩嫩的\n海上交通博物馆 # 最后一天，从海交馆开始，这个馆的主题就是非遗的《泉州：宋元中国的世界海洋商贸中心》，非常幸运，赶上了10点半的公益讲解，小小的一个馆居然都讲了1个半小时，听过的为数不多的高质量讲解。感觉来泉州的第一站都得先到这个馆了解一下这里有什么可看的\n讲解讲了非常多的内容，随便列一下记住的一些，不排除记忆模糊有错漏\n在泉州这里有中国唯一的印度教痕迹（搜了下：泉州开元寺是中国唯一拥有印度教遗存的佛教寺庙）。为什么是泉州呢？主要是来纹身的，当时的泉州纹身行业比较发达，就跟韩国整容业一样 郑和下西洋，不仅烧了很多钱，还买了好多辣椒回来（当时的辣椒非常昂贵），后来没钱了也是用辣椒来发工资，然后大家拿去换钱 为什么妈祖传播这么广泛？ 因为每个出海的人上岸后都要延续妈祖的香火，所以传遍世界各地沿海地区 为什么泉州这边有这么多的庙和神？以出海为例，每次大型出海，官员都会搞各种仪式，不仅是利用宗教信仰来统治老百姓，更是为了招商引资 …… 当时出海经商都是要各种通关公憑的，而且出去多少人，带走多少武器都得记录在案。回来之后多了少了都需要解释，有问题的话，所有人都要连坐。本身出海风险就高，那时候船的唯一动力就是风，能不能安全回来都是未知数，这高风险大家还肯去出海，唯一的解释就是收益是真的大，可能跑几趟下半辈子就不用愁了\n还有几座古石桥，也是当时为了通商方便，大户人家朝廷官员出钱建的，当时的造桥技术也很发达，人们居然懂利用潮汐力搬运，涨潮的时候运石头到指定的位置，退潮的时候石头就卡到指定位置了，真牛\n海交馆这边还有一个展厅，是各种宗教的石碑，基督教、印度教等等，简单看看就走了。可惜的是，刚好《玉漱公主》在这里展出，之前没看到消息错过了现场！！！\n这工艺，看图片都觉得非常有质感（网上盗个图，就当是看到了吧，越想越亏）\n泉州古城 # 看完海交馆，吃了顿牛肉羹。这边的牛肉感觉一点都不踩雷，今天吃的这两家质地比在深圳太多数店吃的都要好\n吃完开逛，古城区有非常多的庙，半城烟火半城仙，网上有很多citywalk路线，因为从下午才开始逛，时间有限，只逛了几个感兴趣的地方，\n天后宫 海内外妈祖庙宇中年代最早、规格最高的古建筑\n关岳庙 不知道是不是轮到今天拜关公了，人流比天后宫的多太多了\n清净寺 是阿拉伯穆斯林在中国创建的现存最古老的伊斯兰教寺\n文庙 开元寺 宋元时期泉州规模最大、官方地位最突出的佛教寺院\n进去了才知道门口这个金光闪闪的是佛像！是目前我见过的最大的金色佛像了\n逛完有点后悔，没注意看开元寺的关闭时间，来得太晚了，应该把开元寺放到第一个的。在这个位置拍了好久的《黑神话·悟空》同款视角，不知不觉都天黑了，另一个塔还没逛就被驱离了，还有一些造型有趣的石雕也没找到，有点可惜\n泉州古城这个地方，真的是神仙打架，每个人生阶段都能找到信仰，读书时去文庙拜孔子，工作或者做生意了去关岳庙拜财神爷，出海了去天后宫拜妈祖，信佛的还能来开元寺礼佛\u0026hellip;太包容了\n从开元寺出来，再逛完西街，顺便找了一个店吃海蛎煎，行程结束完结撒花\n后记 # 总体来看，这两个城市吃的都挺不错的，能看的东西也非常多，至今仍惊讶于：在这么一个小城市里居然有这么多种文化，还能如此包容\n","date":"2024/10/13","externalUrl":null,"permalink":"/2024/10/13/travel-zhangzhou-quanzhou/","section":"全部文章","summary":"","title":"漳州与泉州游记","type":"posts"},{"content":" 国庆节前发布的重磅政策引爆了市场情绪\n猫笔刀｜乡亲们，村里真的发金条啦 孟岩｜A股与闪电 4个月的跌幅仅用了4天就涨回来了，太疯狂了\u0026hellip;只是我从18年毕业开始定投到现在的基金，还没回本，目前亏损幅度已大幅缩窄。而且随着行情的火热，我试验性的网格交易策略也已经全部收网，应该总结一下(仅个人学习笔记，不构成任何投资建议)\n网格交易启蒙与踩坑 # 经过这几年的持续亏损，我愈发觉得A股市场里，网格交易比起定投更加适合我，它解决了我的一个核心问题：什么时候卖？\n18年刚开始基金定投的时候，行情是上涨的，一直定投一直涨，盈利好像都30%-40%了也没有卖，坚定持有总想着能涨更多，后来就迎来了持续下跌，不仅盈利跌没了，本金也亏了不少。也不舍得割肉，“相信长期持有”一直到现在。定投两字，只说了怎么买，并没有说怎么卖，完全就是凭感觉，毫无策略可言 网格策略，每一笔买入都设定好了什么时候卖出，例如我100买，等涨到了120就卖出100块，留20块在市场里继续吃涨幅。关键这部分是纯利润，跌没了都没有亏本金心疼。想赚多少完全看自己设定的盈利比例，然后就是耐心的等。这样起码能实现落袋为安，不至于凭感觉交易，高了不舍得卖想赚多点，跌了不舍得割肉，然后本金一直在市场里出不来 然而一开始实践网格策略也踩了个大坑，跟某大V学做中概互联网ETF的网格，follow他的策略（先建底仓，然后设置上涨下跌的条件单），以当时的价格一下子建了厚厚的底仓。如果后续的行情是上涨的，我一定对他的方法论深信不疑，然而一切相反，持续的下跌到现在涨了好几天了也还亏30%+，让我觉得建底仓完全就是一个错误的操作，错的离谱。经历塑造信念，这话不假\n本来踩了坑之后就不相信网格了，但是看到也谈钱｜钱不多，但感觉挣了一个亿聊起了网格，又想再试试，不一样的是，这次选择了E大，建了一个试验性的网格策略，经过这轮上涨全部收网，体验真的很舒服（虽然都是网格交易，但具体操作区别也太大了）\n在这里强烈推荐学习E大策略原文\n# 波段策略.网格之一：写在前面、体系以及策略 # 波段策略.网格之二：网格策略基础/1.0版 # 波段策略.网格之三：网格策略进阶/2.0版 经过这次行情，我对A股市场又有了新的理解，A股市场行情政策导向太夸张了，究其原因，可能如开头孟岩文章里的数据，和美国居民财富里权益资产占35-40%相比，中国居民权益资产仅占10%，一有政策风向，大家就开始储蓄搬家。本来觉得网格策略只是长期策略的一个补充，现在觉得A股里网格策略才是正道，所谓长期策略无非是收益设置得更大的网格而已。一定得学会卖，而不是定投那样傻乎乎的不知道到底要定投到猴年马月。十年前是A股3000点保卫战，十年后依然是3000点保卫战\u0026hellip;\n不过，如果哪天国民财富中权益资产成为主流，大家也不会动不动就储蓄搬家，等到这时候，估计就能安心长期持有了，期待有这么一天吧\n网格交易实操 # 具体的网格交易操作，在E大的文章中有很详细的操作说明，操作前最好读多几遍，大概如下\n确定交易品种 列出网格表格 做压力测试 设置交易提醒 按照交易提醒进行交易 1. 确定交易品种 # E大给出的交易品种底线：不会死。就是不会像个股那样有朝一日会退市\n比较好的就是指数ETF，这次试验性网格选择了券商ETF，波动大的同时还可以作为市场行情的信号灯，牛市来了大家都在讨论，券商热度升高，容易触发卖出，熊市来了大家都在装死，券商热度降低，容易触发买入。比如这轮行情，连续两天触发卖出，看到提醒就觉得大的要来了\n2. 列出交易网格 # E大有说明的项有，交易价格、交易金额、交易日期。\n关于交易日期，这里我感觉作用不大，因为没有办法预测哪天能到达目标的价位，如果只是单纯为了记录达成交易的时间，券商APP也能做到。所以就不列了\n关于交易价格，这个细节和我最开始的理解有点出入。根据当时的价位0.857，差不多就是0.85这个档买入，我原以为卖出的价格会是价格的5%，也就是0.85 + 0.85 * 0.05 = 0.8925 ，然后如果在0.8925买入的话，那么再乘上5%，也就是0.8925 + 0.8925 * 0.05 = 0.937125。每一网格的大小都是妥妥的5%。但根据E大的表格，以1为基准算5%就是0.05，每一个网格都是0.05的差值，如果是0.85买入，卖出价格会是在0.9，收益5.8%，1.2买入的话，卖出价1.25，收益4.1%。这样的设置意味着不同的买入价位，实际收益率都不会是5%。这就是和我最开始对网格收益大小理解有出入的地方，实践下来发现E大的价格条件设置更方便，没那么多复杂的计算\n然后是关于交易的金额，因为5%左右的网格大小，1000块其实也只能赚50块左右，想赚多少就增加多少的资金，例如一次想赚100块，那每次就交易2000块，其中只卖出2000块是为了把利润留在市场中，因为收回本金之后剩下的都是纯利润，亏了也不会太心疼，而且还有机会跟着行情持续做大收益。\n翻出了当时学着做的表格，大概就长这样\n现在觉得，最主要就是档位和买卖金额两项，因为APP可以自动根据金额确认买卖的份额，后来都没怎么关心份额\n3. 压力测试 # 经过这轮下跌，真觉得压力测试非常重要。通过压力测试，我可以对我的资金情况有初步的判断，我完全不知道最大的下跌幅度会到哪里，但是可以参考历史的最高/最低\n可以查到券商ETF，历史最高1.335，历史最低0.584，中点则是0.9595，当时的价位是0.857，还算便宜\n下跌30%即到达历史最低附近 上涨55%到达历史最高 最坏情况下跌40%，到达0.5142，假设0.05一网，一网2000块，最后一网价格在0.5，共买入8网，需要资金1.6w。也就是说最坏情况，一直买入8网，然后像中概那样一瘸不振，我无法想象下跌40%时我的真实感受，但从资金量的角度也只是被套牢1.6w资金，也还可以接受。\n(注意，如果增大资金，也就意味着长期下跌的话需要投入的资金会更多，能够判断自己的资金占用情况是否能够接受，这也是压力测试的意义所在）\n4. 设置交易提醒和交易 # 因为是挂的条件单，程序会自动监控执行，省很多事\n基本是\n每买入一格，就设置卖出以及低一格的买入 每卖出一格，就设置低一格的买入 然后等就完事了，后面发现价格一直在上下波动，直接从条件单的历史记录重新创建就好了，也很方便\n网格交易的延伸 # 现在再看E大的长赢指数投资计划，简直就是复杂版的网格交易，如果交易品种是场外基金，\n需要记录每一份的份额。（因为卖出的单位都是份额 需要自己判断价格操作买入卖出。（场外基金都是当天计算净值，没有实时价格 除了操作不太一样，思路是类似的，甚至还能延伸到其他的品种\u0026hellip;是一个不错的交易策略\n","date":"2024/10/09","externalUrl":null,"permalink":"/2024/10/09/my-grid-trading-strategy-practice/","section":"全部文章","summary":"","title":"我的网格交易策略实践","type":"posts"},{"content":"","date":"2024/10/09","externalUrl":null,"permalink":"/tags/%E7%BD%91%E6%A0%BC%E4%BA%A4%E6%98%93/","section":"标签","summary":"","title":"网格交易","type":"tags"},{"content":" 为什么弃用Stellar主题 # 在写《八次危机》大事年表的时候，需要展示表格，然后发现了stellar主题的表格存在内容不能自动换行的问题，右边那列长长的一行字需要左右滑动才能看，阅读体验太差\n看了一圈文档发现没有配置项，issue里倒是有提到相关的问题\n而且也突然意识到\n对于文章来说，左右两个侧栏的信息太多了，对阅读也是一种干扰，还是更偏向于只有文章本身这样更简单一点的页面\n想着自己diy吧，stellar功能太丰富了，之前没接触过博客主题都不知道怎么入手，研究stellar的代码逻辑和配置，感觉好浪费精力，还不如直接换一个简洁的主题，找了一圈，还是觉得cactus更符合我的需要。\n页面简单，功能不多，上手改的门槛相对低一点 深色模式下的配色还是挺符合我的审美的。一直觉得界面设计里最难的是配色，无论自己怎么diy，估计都整不出好看的配色 于是就切换到了cactus\n修改cactus主题的样式 # 切换到cactus之后，也有地方不满意，想要魔改，但是一直干后端开发，只懂一点html、css、js，也是无从下手。看了下官方文档以及Easy Hexo|编写自己的 Hexo 主题 ,了解到\nhexo配置项是同名覆盖的逻辑，也就是说我可以新建一个配置文件_config.[theme_name].yml来覆盖原生cactus主题的默认配置 ejs模板文件怎么获取配置 其他相关逻辑 准备动手，这里还有一个地方，就是有些主题安装是推荐npm install的方式安装的，这种会直接安装到node_modules里面，根本改不动。最好还是像这样,fork一下原来的repo到自己的repo中，然后git clone到hexo的theme目录下，这样就可以自己魔改然后还能通过git保存变更。\n好在cactus原生的功能比较简单，基本只需要改一下css样式就够了，但是不熟悉代码，时间都浪费在找代码位置上了，后来用比较粗暴的方法\n通过浏览器F12查看页面元素找到对应的\u0026quot;header-post\u0026quot;这样的元素名字，然后在代码里搜索具体的关键字，逐一排除找到具体的代码位置然后再改，相比上来就看cactus源码要快很多\n改了几个地方\n表格行与行之间的线和间距 侧边栏目录的字体大小 去掉了文章分享按钮 看上去还凑合，暂时先这样吧，精力还是应该多放在内容上\n","date":"2024/09/28","externalUrl":null,"permalink":"/2024/09/28/change-theme-to-cactus/","section":"全部文章","summary":"","title":"切换hexo-theme-cactus主题","type":"posts"},{"content":"这几年感觉国内的经济形式有点严峻，特意看了《八次危机》，才知道新中国成立以来已经经历过许多次危机了。书里面详细介绍了每次危机的前因后果，也给了一些分析，觉得分析的挺到位的，也了解不少历史，非常值得一看。\n看的时候总想总结一下，但无从下手，怎么总结都觉得不如直接看书里面列出来的大事年表更有价值。干脆就把这个大事年表给复制出来，整理成表格。\n这里值得一说的是kimi还真蛮好用的，直接告诉kimi规则，就能把原文整理成markdown表格的样式，节省了巨量的时间。然后我再用颜色突出了下危机的条目，就成了下面的样子\n年份及事件 描述 1949年 土地革命，缓解通胀 “均分制”的土地革命体现了几千年传统的农民的基本诉求，战争推进了对世界最大规模的农民人口参与国家政治建设的动员。但中华民国自1937年以来长达12年的恶性通胀仍是最大难题。恰是同期全国恢复了传统的小农村社制，让占总人口88%的农民对城市资本经济“去依附”才缓解了百年中国都得面对的饥饿和通胀两大困扰……但“均分制”土改遗留的问题是：乡土中国分散且兼业化的亿万小农与城市发展工业化亟需的资本原始积累形成对立矛盾。 1950年 朝鲜战争爆发，中国得到苏联援助和军事工业投资 朝鲜北方完成土改而南方对抗土改激化其国内矛盾引发朝鲜半岛战争，遂使中国出兵参战和纳入苏联地缘战略体系，也使中国城市工业摆脱危机进入战时经济，并且带来第一次“苏联外资”催生了中国以军事工业为主的“国家工业化”。但中国人那时候还不懂“外资势必转化为国家主权负债和政府赤字危机”由此一般后发国家势必堕入发展陷阱的基本规律。二战以后西方最大的变化，在于从列强纷争改为双寡头垄断的对抗格局。从此，世界进入美苏两个超级大国地缘控制和“麦卡锡主义”加剧的冷战竞争导致二战后美苏分别开展“雁阵式”产业资本输出一—－苏联援助中国和东欧的工业项目与美国援助西欧和日本的战后复兴计划在形式上如出一辙。 1951年 国家号召2000万农民进城支援工业化建设 “一五计划”开始编制。这种以苏联输入设备形成的国家工业化内在的以“资本增密排斥劳动”的军、重工业为主，尽管上千万青壮年农民被国家动员进城支援工业，但主要从事的是劳动密集的基本建设城市“三通一平”需要“简单劳动”。于是，“纯粮食需求”陡然增加。这一年，受战后美国地缘控制及产业开始复兴的日本得以发展核电及相关技术，这也为60年后的福岛核危机埋下了伏笔。 1952年 国家计委正式成立 第一个五年计划在苏联专家指导下出台，原在东北局配合苏联军工战时投资组建的“小计委”进京，演变成“国家计划经济委员会”。农村很多地方产生以“插犋换工”为主的互助组。初级合作社起步。 1953年 朝鲜停战。斯大林去世 “斯大林模式”在中国方兴未艾，表现为“地缘战略”约束下国家工业化“路径依赖”——“社会主义过渡时期总路线”对“新民主主义路线”的战略替代，其实质内容是国家资本对民族资本的改造。国家“统购统销”政策与高度分散的4亿农民之间难以“交易”——毛泽东解决“交易费用”的措施是“满头乱发没法抓，编成辫子就好抓”借机发动合作化运动，把4亿农民纳入400万个初级社，支撑了统购统销。同样完成土地“均分制”恢复小农经济的东亚，在不同政治体制下以不同名义开展了农村合作社运动。随之是日本的自民党上台，与中国“高级社”形似而权益内容相反的“综合农协”（JA）成为自民党长期票仓。 1955年 两个重要会议和两个重要事件 这一年有两个载入史册的会议：一是苏共二十大上，赫鲁晓夫作批评斯大林的秘密报告，这意味着苏联进入产业资本扩张和对外交换阶段，客观上需要与西方市场“接轨”。二是万隆会议上，中国战略性地参与“不结盟运动”，初步作出突破二战之后美苏两个超级大国地缘控制的努力。这一年有两个关乎中国转型的重要事件：一是5月25日苏联从战略利益出发，撤回旅顺港驻军，中国实现收回主权的百年之梦；二是6月21日，美国国务院公布了赫鲁晓夫秘密报告全文——赫鲁晓夫对中国共产党的指责，为中苏两党分歧和随后苏联撤资埋下伏笔。12月，毛泽东主持讨论“全盘苏化”倾向，召开34个部委负责人会议。 1956年 服务于国家资本的“农业现代化”和私人资本改造 中央政府在工业部门“大型工业产品下乡”的迫切要求下提出“农业现代化”实质是“集体化＋机械化”同步推进——建立以乡为单位的高级社实现土地规模经营，配合建设拖拉机站和农机修造厂推进农业机械化——实现内含价格剪刀差的“工农两大部类交换”。同期，国家资本完成对私人资本改造，国家工业化的高增长表明资本原始积累短期见效。但工业资本在城市的积聚意味着风险同步集中，潜在危机也在规律性地孕育之中。 1957年 “二五计划”中辍，“反右运动”开始 由国家主权对外承担负债责任，通过大规模的外部投资拉动国家工业化高增长，很快在全盘苏化的党政军部门构建的上层建筑意识形态领域形成“制度惯性”。中苏之间在涉及主权问题及意识形态上的矛盾导致苏联停止投资。中国“二五计划”外部援助性的整体投资中辍，这一年的财政占比“中央坐滑梯，地方坐飞机”，潜在危机云谪波诡，各界意见此起彼伏。很多人“被右派”其言行多是反对剥夺农民和工人的权益，反对“全盘苏化”干部中的官僚主义和教条主义。 1958年 调动地方积极性的“大跃进”与服务国家工业化的农村公社化 中央在1月“郑州会议”上提出调动“地方积极性”，一方面发动地方投资接续国家工业化，另一方面建设综合性多功能的人民公社，以劳动替代资本，转换依赖外资的发展方式。主因还是苏联中辍对“二五”援助使得由中央财政投资的国家工业化难以为继。但不到一年，11月的第三次郑州会议，中央就得纠正地方工业化毫无经验地推进的“大跃进”、“大炼钢铁”和人民公社化冒进等错误。问题的实质，却是各地政府陡然得到资本原始积累的机会而迫使有限资源在短期内粗放地“资本化”。 1959年 经济高增长转向赤字危机 苏联减少专家和援助，中苏两党分歧。对苏联这样的“陆权国家”而言，是“雁阵战略”断掉了一侧，不能像美国那样完成对西欧、日本的雁阵式产业转移，实现地缘战略控制，由此埋下30年后败于美国的伏笔。对中国而言则标志着危机的爆发——建国后第一次外资带动的工业化突然发生“资本趋零”使国家财政竭泽而渔维持资本密集型工业化投资——赤字危机代价初现。 1960年 第一次城市资本危机代价向“三农”转嫁 本源于20世纪50年代先民族资本、后国家资本的两种原始积累代价造成的第一次危机大爆发——各级地方政府加快工业化形成财政巨额赤字的累积，反过来导致投资拉动型的、集中于大城市的国家资本主义工业化难以为继。于是中央政府发起第一次城市失业青年“上山下乡”运动，靠农村的集体化承载了1000万以上的城市过剩劳动人口。政府开始对苏联还账，虽然同期连续灾荒造成农产品短缺，但仍然主要用农产品还债。 1961年 经济萧条阶段的政策调整 整个50年代工业化的资本原始积累造成的巨大代价全面显现。虽然还没有超越意识形态化的对危机和萧条的反思，但却已经有了政府遭遇危机的对应性的调整措施；在中央“七千人大会”上的争论、为克服三年自然灾害的困难提出的“三自一包”（自留地、自由市场、自负盈亏、包产到户），以及各地救灾亟需统筹等情况迫使中央上收部分财政权。 1962年 国内经济复苏但周边地缘环境趋于恶化 中央政府财政收权和农村部分恢复小农村社制的政策调整见效，经济初显复苏迹象。但同期中国遭遇两个超级大国地缘控制下的全面封锁，周边地缘环境“环形恶化”。例如：中苏论战造成国家关系全面恶化；中印爆发边境冲突；西方介入东南亚区域战争；退守台湾的蒋介石政权“反攻大陆”付诸行动；美国军机和军舰数百次入侵中国领空和领海…… 1963年 放弃“三五计划”与四个现代化提出 试图贯彻“农轻重比例协调”的计划经济思想的“第三个五年计划”虽然准备就绪，但却因遭遇全面封锁和周边战争威胁，不得不转向战备建设而胎死腹中，国家计委也随之被搞战备建设的“小计委”顶替。同时，领导人在“两会”上宣布中国要实现“四个现代化”的伟大目标。 1964年 三线建设展开，国家工业化成本陡然上升 在地缘环境极度紧张的压力下，国家工业迫不得已从沿海和大城市向内陆山区作“空间平移”实行“大分散小集中”但这不仅不能创造增加值，还客观上增加了国家工业化成本，加上对外对内的“还债”以及加强战备的开支，种下了中国的第二次财政赤字危机的种子。 1966年 “文化大革命”爆发与城市工业下滑 李先念宣布中国从此没有外债－－仅用5年就还清了包括朝鲜战争开支在内的对苏联负债。苏式上层建筑本质性地不适于中国发动群众重建经济基础所内含的长期矛盾——沿用革命党意识形态则屡次称之为“路线斗争”——终于在城市以“文化革命”为表象集中爆发，并且规律性地反作用于经济基础，致使由国家垄断资本控制的城市工业停摆。 1967年 财政赤字增加，第二次工业化危机孕育 三线建设和军事工业（包括核武器研发）集中占用了大量资源，城市工业化投资下降、就业严重不足。但同期城市进入“文化大革命”使政府转而投资于农田水利基本建设，发动农民以“成规模的劳动力”投入替代过于稀缺的资本要素——这是“农业学大寨”运动的宏观背景。此后，随着灌溉面积增加，粮食产量增加。中国第一次以援助的形式带动工业产品输出——中国政府和坦桑尼亚、赞比亚两国政府在北京签订关于修建坦桑尼亚——赞比亚铁路的协定。 1968年 中国第二次赤字型经济危机爆发，代价仍向“三农”转嫁 偿还外资转化的国家债务，以及三线投资和军事战备，都属于财政长期高投入，因而不可能对应民间消费需求发展生产，遂导致累积赤字危机第二次发生。于是，向农村转嫁上千万过剩城市劳动力的第二次“上山下乡”运动开始，城市危机再次“软着陆”​。 1969年 周恩来宣布既无内债也无外债 中国成为第三世界“去依附”的榜样。美国扶持的发展中国家出现符合其地缘战略的军人政权分布规律。第三世界维护国家主权斗争风起云涌，遂有超越两个超级大国地缘战略控制的毛泽东思想广泛传播。一些拒绝跟从的欧洲国家如法国开始与中国建立外交关系。鉴于中苏边境冲突，周恩来安排陈毅、叶剑英、聂荣臻、徐向前四位元帅研究国际形势，四位元帅认为中国20年无大战。这一结论虽与军界主流的认识不同，却对毛泽东作出缓和与调整的决策起了重大作用。 1971年 一个对中国与世界都重要的年份：布雷顿森林体系解体 中国启动乒乓外交。建立于1944年的因确保美元纸币兑换黄金比率不变而有利于美元成为世界储备货币的布雷顿森林体系，被美国单方面放弃。客观上成为“西方世界的中央银行”的美国因得以占有货币化收益而率先进入金融资本阶段，由“政治金融”主导西方币缘战略的新时代从此开始。毛泽东约见基辛格，美国在尼克松访华之前半年宣布解除对华封锁。 1972年 中国第二次引进外资的“四三计划”由周恩来提出、毛泽东认可 中国缓和与西方的紧张关系引发国际形势巨大变化，毛泽东认同周恩来提出的从西方国家引进设备的“四三计划”借助西方资本改造原来苏联投资形成的“军重偏斜”的工业结构，势必随之改变包括管理体制在内的上层建筑。后来领导者则顺势“从苏化向西化演变”​。同年，美国开始了从贸易顺差到贸易逆差的转变。 1973年 第四次中东战争爆发，形成世界性的能源危机 第四次中东战争爆发，石油价格大幅度上涨，形成世界性的能源危机。与此同时，石油输出国积累了大量美元，那时的人们误以为世界货币进入了“石油本位”的时代。 1974年 中国第三次财政赤字危机爆发，代价仍向“三农”转嫁 中国加大西方设备引进力度和国内配套投资都造成财政赤字增加，很快突破百亿大关，中央不得不治理整顿。同年启动最后一次“上山下乡”向农村集体化输送了约1000万过剩劳动力。由于连续两年气候异常造成的世界性粮食歉收，加上苏联大量抢购谷物，全球出现粮食危机，加之石油危机引发西方国家大量耗费能源的实体经济危机严重，从而西方国家更多向外转移产业。美国削减对拉美的援助贷款。 1975年 中国财政赤字危机连年突破100亿 如同1950—1960年全面引进苏联装备制造业造成过高负债和赤字危机，导致上层建筑意识形态领域一系列“路线斗争”​，1972—1974年大规模引进西方设备也造成类似高负债和赤字危机，连带引发被称之为“批林批孔”和“批邓反击右倾翻案风”的政治运动。 1976年 唐山地震。周恩来、毛泽东相继去世。地方工业化再度起步 华国锋和邓小平萧规曹随地继续“以外资改造国内工业结构”的路径依赖，提出更大规模引进外资的“八二方案”​。余秋里、谷牧主持国家计委讨论外贸创汇最多的江苏省管理体制改革。出于国家还外债的需要，允许江苏省财政体制从1977年开始试行比例包干，这类似于1958年的“放权让利”​。此后，包括“社队工业”在内的地方工业化得以再度起步。 1977年 “八二方案”和“洋跃进”促进高增长，财政赤字再次突破百亿 中央领导集体提出引进82亿美元西方设备的“八二方案”​。毛泽东继任者要求石油部门为创建十来个“大庆”而奋斗，后来被批为“洋跃进”​。大规模外部引进与国内追加投资拉动高增长，但累积赤字同步大幅度提高。第三次危机在孕育之中。 1978年 中国经济面临崩溃边缘 “上山下乡”转为“知青回城”​。中央领导人增加引进西方设备的同时国家外汇已经严重赤字。于是，发展外贸换汇成为优选扶持领域。胡耀邦年底在京西宾馆预言家式地指出中国遭遇危机：中国经济已经到了崩溃边缘，党风问题到了生死存亡的地步。 1979年 中国第四次危机爆发，年度赤字相当于50年代累积赤字总额 中国整个70年代处于国家工业化结构调整时期，路径依赖地采取“负债增长”​。本年所形成的年度财政赤字接近200亿。危机促使对外贸易体制进一步转变——凡有利于减轻对外还贷压力的项目都可以上。同时，开始价格双轨制改革——对同值的标的物实行按计划的垄断性定价和按市场定价两种不同的定价机制。 1980年 农村集体化趋于解体，第一次城市“硬着陆”触发的大调整被称为“改革”​ 乡土中国30年向国家工业化贡献了过多剩余，加之中央财政的赤字压力迫使政府减少财政支农投入也意味着“政府退出”最不经济的农业。于是，​“财政甩包袱”式的改革从农业起步。并且，恰因集体化解体才使这次城市资本经济30年来最严重的危机没有顺畅地向农村转嫁制度成本。农民终于得以“休养生息”​。 1981年 大萧条中的“待业青年”与“两个严打”​ 城市资本危机“硬着陆”在城市：企业“关停并转”引发大规模失业——约4000万被称为“待业青年”的过剩劳动力滞留城市，社会治安随之严峻。政府发起两个“严打”运动——严厉打击“刑事犯罪”和“经济犯罪”​。中美关系进入蜜月期。英美联手推进金融自由化，西方产业资本阶段的传统地缘战略向金融资本阶段的“币缘战略”转变。 1982年 中国改革：​“财政甩包袱”与农村“大包干”​ 中央政府在财政严重赤字压力下，出台一系列体现“财政甩包袱”的改革政策：一方面是城市企业“拨改贷”​、​“利改税”​；另一方面，第一个中共中央国务院“一号文件”允许家庭承包——与1950年土改类似，再次按人口分地到户，此后连续5个“一号文件”其中30多个“可以可以也可以，允许允许也允许”属于典型的国家资本允许“小农经济”回归传统的让步政策——其实是把农业生产力基本要素还给农户和村社。 1983年 政府靠“单位制”化解城市危机 政府迫于“维稳”压力要求国企打开大门吸纳就“5个人的饭10个人吃”​。同时要求“机关办三产”干部子女纷纷进公司。于是，初期的“官倒公司”横空出世，利用“价格双轨制”倒买倒卖，捞到“第一桶金”但也从内部扰乱了“价格改革”以来的市场秩序。 1984年 “财政分灶吃饭”促使地方再工业化内向型原始积累“异军突起”​ 集体化体制坰塌之后的乡村上层建筑无力维持，遂发生“撤社建乡，撤队建村”之后涉农领域进一步“政府退出”农村“七所八站”几乎倒闭，其中的经济单位如信用社、供销社、粮食局等全面亏损，直接转为农业金融部门坏账。同期，中央地方之间“财政分灶吃饭”实现地方分权，导致地方再工业化和农村制度空白的特殊条件下大办乡镇企业带动的第一轮圈地高潮——超额地租直接转为企业收入。就在这一时期，乡镇企业被媒体和政治家称之为“异军突起”​。 1985年“时代广场协定”力推日元升值。中国确定“先富”战略 西方国家联手促日本接受“时代广场协定”力推日元翻倍升值，日本劳动力密集型的低端产品生产线丧失竞争力，遂加快梯度转移。同期，中国兰州召开的“西部会议”强调率先发展沿海和部分地区先富的“梯度理论”​。沿海各地率先开放，得以借加工贸易引入外资生产线，挤占国内上游设备制造业市场。 1986年 中国加快改革开放促进沿海经济增长，官倒围积与腐败泛滥并行 中国经济高速增长导致经济关系全面紧张——通货膨胀凸显，宏观调控乏力。相对于长时期的高通胀形成“金融深度负利率”条件下的普遍寻租，官倒公司围积居奇更加扰乱市场价格体系。腐败泛滥，民怨沸腾。但同期乡镇企业发展导致城乡收入差别迅速缩小到历史最低。 1987年 财政甩包袱与对外高负债带来的高增长被媒体归功于改革 政策界讨论的价格财政税收联动配套改革的“大方案”的全面性，远甚于此后苏联采行的“500天私有化计划”​，只是在中国领导人那里没被批准。其间，市场与股份孰先孰后也在经济理论界引起争议。中央政府部分地出于国家产业资本回避竞争的垄断利益要求，推出了沿海地区和乡镇企业“大进大出”的进一步开放战略。 1988年 中国第五次危机：物价闯关失败，诱发抢购挤兑和高通胀 全年CPI超过18%的高通胀不是价格改革失败的标志。危机原因在于，一方面是诞生于改革、正在捞“第一桶金”的“官倒公司”大量围积居奇加剧“改革危机”将初步完成“国家资本集团化占有”的原始积累制度代价尽可能甩给社会！另一方面，政府由于已经把改革意识形态化而并无改革失败的应对预案，危机调控反应滞后，而且为了遏制民众挤兑而简单化地骤然大幅度提高存款利率，立刻使银行因深度负利率造成的亏损直接转化成为高达500亿的巨额财政赤字。 1989年 中国“三角债”全面爆发与“生产停滞”​ 政府在大幅度提高存款利率数月之后迫于银行亏损而不得不大幅度提高贷款利率，致使全社会陡然遭遇“官方高利贷”致使所谓“三角债”在全国爆发。恶性通胀旋即与生产停滞伴生，形成经典理论意义的“滞胀危机”​。随之而来的萧条期间，这种滞胀形态的全面危机诱发了反“官倒”和反腐败的群众抗议浪潮，是为政治风波。 1990年 中国城市资本危机代价转移，影响农村 中国经济在滞胀危机爆发后处于萧条阶段。农产品和乡镇企业产品全面滞销，使农民现金收入从此连续3年增速下降。但1984年财政甩包袱时期设立的县以下“预算软约束”的农村上层建筑却呈现“开支刚性”​，导致农民必须以现金支付的负担加重，农民群众中广泛流传一句话：​“头税轻，二税重，收费是个无底洞。​”已经显著缩小的城乡收入差别再次拉大。 1991年 苏联东欧地缘政治格局解体，同时国家金融体系坰塌 长期停滞于产业资本阶段、拒绝经济货币化的苏联垄断资本集团，却因受困于西方意识形态攻势而实行政治改革优先，致使只能依托主权创造货币信用的苏东国家金融体系全面崩溃，完整结构的产业资本遂因恶性通胀加上分散私有化，造成产业链内部交易成本爆发性地大幅度增加。这种上层建筑的制度变迁代价直接向经济基础转嫁的“反作用”​，遂致行业解体与企业破产同步。朝鲜早就先于中国实现了70%的城市化率，但其农业现代化依靠的是拖拉机和石油，随着苏联解体失去供给来源，此后遭遇西方封锁下的粮食和能源危机，国家转向“先军政治”​。 1992年 邓小平南方谈话。中国的“货币化元年”​ 中国研判苏东解体。中共十四大提出社会主义市场经济新体制的目标。实践过程中，政府迫于财政赤字压力取消了粮票等几乎一切票证，中国人开始有了真正作为一般商品等价物的货币，由此而不期然地启动了“经济货币化”进程，改出了苏联换货贸易模式。由于取消票证消费，农民流动不再受限，出现农民工在全国范围的大规模流动。顺势于货币化的启动，证券、期货和房地产这三个富有投机性的资本市场开放。经济随即进入高涨。但与之矛盾的是，中国还没有真正意义的商业银行！财政赤字增加势必继续从银行透支，吃空了银行的资本金后接着吃存款。 1993年 中国第六次危机：三大赤字同步爆发 中央政府虽然强调了宏观调控，但货币化和三大“投机性吸金市场”所推动的经济高涨难以逆转，随之而来的是财政、外汇、金融三大领域均发生严重赤字，国家综合性负债超过GDP的一倍以上。通货膨胀拉动粮价高攀，中央要求省长“米袋子”市长“菜篮子”的地方补贴制度。四川仁寿县谢安乡农民张德安率群众抵制该县修公路摊派过重，这是改革以来农村第一起群体性事件。 1994年 这是一个对世界很重要的年份。中国出台三大改革 这一年，世界贸易组织CWTO）因纳入了农业与金融等战略产业的自由化而取代关税及贸易总协定（GATT）​，被称为世界进入全球化的标志，但1月1日问世的北美自由贸易区（NAFTA）和欧盟（EU）​，却表明世界进入的是强权国家主导的区域一体化！就在当天，墨西哥恰帕斯州的土著游击队武装起义，​“打响反全球化第一枪”​。这一年，陈希同被双规。中央宏观调控得到贯彻，但严重的危机已经爆发——CPI攀升至24%，恶性通胀甚于1988年的“物价闯关”​。在政府综合债务大于年度GDP的压力下，城市资本危机“硬着陆”引发三大改革：一是本币名义汇率一次性贬值57%的“外汇并轨”同时大幅度增发国债和货币扩张政府信用；二是把财政“分灶吃饭”进一步制度化为中央与地方之间实行“分税制”＼促使地方政府兴起第二轮“以地生财”的圈地运动，致社会群体性事件显著增加；三是彻底放弃“单位制”推行国有企业“下岗分流，减员增效”​，致近4000万人失业。 1996年 中国财政总收入/GDP下降到历史最低，教育、医疗等公共事业“被产业化”​ 中央政府遏制通胀的宏观调控措施显著加强。投资和内需双下降，经济对外依存度急升。同期，地方政府财政赤字和公共负债都大幅度增加，基层干部向农民转嫁代价导致农村税费负担加重。城乡社会群体性事件迅速增加。 1997年 中国第七次危机。主要特征是受东南亚金融危机影响发生“输入型通缩” 政府总理刚宣布宏观经济实现“软着陆”就遭遇东南亚金融危机。这是中国第一次遭遇外部输入型危机。随之进入连续4年的通货紧缩。由于粮食产量突破1万亿斤的大丰收连带价格下降，加上大部分乡镇企业在完成私有化改制后普遍体现“资本增密排斥劳动”的规律，致使农民收入从此连续4年增速下降。中共十五大报告历史性地公开使用了“资本”这一概念，并在银行坏账大幅度增加的压力下提出国有银行与金融资本制度接轨的市场化改制。 1998年 中国启动国债投资应对危机，力保GDP“七上八下”​ 长江流域特大洪水，中央调集全国各类军队参加抢险，彰显政治权威得以有效继承。中国首次主要依靠扩张性财政手段有效调控输入型危机：出口显著下降，紧急启动积极财政政策增加国债拉动内需，维持至少7%的GDP增长率，减缓新增就业压力；政府要求高校作为劳动力蓄水池而扩招，遂致教育产业化与学校过度负债同步。政府应对措施还有：大力推动住房货币化，把粮食统购与农行资金联动“封闭运行”延长农户土地承包期，加快中国加入WTO的谈判进程，等等。 1999年 欧元启动与巴尔干危机同步，中国大使馆被炸震醒中国 从1月1日起，欧元在11个欧元区国家正式使用。接着科索沃战争和巴尔干冲突，中国驻南斯拉夫大使馆被炸震醒中国民众。纳入北约的欧盟国家以财政支付了72天的轰炸，造成米洛舍维奇的政治垮台与欧元失去政治合法性的“双输”​。欧元兑美元汇率跌幅超过23%（1欧元兑换1.07美元变为1欧元兑换0.82美元）​。不论是否阴谋论，巴尔干冲突客观上迫使欧元区国家突破了要求各国财政赤字低于3%的合法底线。这一年叶利钦辞职，普京上台，俄国重新崛起。 2000年 中国在世纪之交告别百年短缺，进入“生产过剩”​ 中国在萧条阶段遭遇通货紧缩。千种商品供求统计显示，需求大于供给的一种也没有。马洪、林毅夫相继提出中国进入产业过剩阶段。政府针对性地强调“以人为本”在已经启动西部大开发、天然林保护工程等大规模国债项目的同时，决定增加总额超过2万亿元人民币的国债投资用于基本建设，维持投资拉动的GDP增长。 2001年 中国加入WTO。美国遭遇“9·11”​，发起以反恐为名的区域战争 中国在正式加入WTO之际，勉力保住了国家货币主权和资本市场控制权。同年，中央领导人认识到“三农”问题形势严峻。东南亚金融危机向其他区域蔓延。多国相继遭遇金融危机。美国IT泡沫破灭。​“9·11”事件爆发，恐怖分子劫持的4架客机摧毁包括纽约地标性建筑世贸双塔在内的许多建筑，五角大楼也遭袭击。10月7日美国采取报复行动，发起阿富汗战争。中国加入国际反恐行动，但随即面对“双重标准”​。 2002年 中国提出全面小康。中国的“商业银行元年”​ 中共十六大提出在21世纪头20年全面建设小康社会的新目标和统筹协调的发展方针。政府启动“东北老工业基地振兴”投入1万亿元以上的国债项目，化解设备老化和资源枯竭等城市的遗留问题。中国四大国有银行的商业化改制基本完成，在脱离票证后10年，终于有了独立于政府财政的商业银行。 2003年 中国提出“三农问题重中之重”​。美国攻打伊拉克 胡锦涛总书记在中央农村工作会议上首次提出把解决好“三农”问题作为全党工作的重中之重。出现基本建设投资拉动型的宏观经济过热。结合全球产业过剩促推的国外直接投资大量涌入，出现中国重化工业外资占主要份额。银行在完成商业化改制之后渐次异化于没有流动性的实体经济。地方政府“以地套现”向银行争取信贷支持的第三轮圈地运动进入高潮，群体性事件明显增加。美国“莫须有”地出兵伊拉克，向世界展示其“同时打赢两场战争”的单边军事强权。 2004年 中国提出“和谐社会”​。提出取消农业税 中央年末召开四中全会提出“和谐社会”​，开始宏观调控，但各地仍在高涨过热中。中央严查铁本事件（江苏常州市铁本钢铁有限公司未经审批开建800万吨钢铁项目，违法占地近6000亩，4000多农民被迫搬迁）​，标志着对地方政府公司化的第三轮“圈地运动”敲山震虎。 2005年 中国提出新农村建设国家战略 体现中央民生新政思想的“科学发展观”​、​“和谐社会”​，与国务院提出的宏观调控政策均难以贯彻。各地追求GDP与派生的群体性事件都继续维持高增长。中央清理黑龙江韩桂芝“窝案”和政治局委员陈良宇被双规，终于使宏观调控得到贯彻。中国开始建立石油储备体系。 2006年 股市大跌销蚀7000亿社会投资 国家十一五计划8个重大战略正式启动，其中以国债为主的“三农”投资大幅度增加。农村完成取消农业税的改革，基层累积公共负债问题暴露出来。重庆大旱凸显“水利私有化”弊端。人民币汇率体制改革。 2007年 中国提出生态文明发展理念。美国发生“次贷”危机 中共十七大提出生态文明，要求基本形成节约能源资源和保护生态环境的产业结构、增长方式、消费模式。​《农民专业合作社法》千呼万唤始出台。美国房市下跌引发的“次贷”危机捅破了虚拟资本的经济泡沫。 2008年 华尔街金融海啸爆发 中国遭遇“输入型通胀”。美国采取扩张型政策增加信用规模应对金融危机，救市代价迅疾向实体经济转嫁——全球粮食、能源、原材料和贵金属价格暴涨，引发37国粮荒。中国亦因石油价格大涨大跌而致两大油企巨亏。同期，“中国威胁论”蔓延。北京奥运会火炬在西方遇截，但仍成功举办。汶川大地震，中央从全国调军抢险。陈良宇案审结。中共中央十七届三中全会确立2020年两型农业目标，呼应十七大提出的生态文明，但当期发生了三聚氮胺奶粉事件，食品安全问题受到空前关注。 2009年 中国发生第八次危机 全球经济危机爆发，中国政府4万亿巨资救市。中国沿海数万企业因全球危机打击而倒闭，致2500万打工者失业。中国接受10年前应对东南亚金融危机的经验教训，​“化危为机”借力调整经济增长结构：继续加大中西部和农村的基本建设投资，使失业农民工返乡得到创业和就业机会；把用于刺激出口的退税补贴中的13%转用做补贴农民，以扩大内需。商务部涉外法规某司长因受贿和谋私被捕，媒体疑与外企超国民待遇优惠制度有关；次年中国引资目录调整，引进外资条件生“七五事件”境内外“三股势力”支持“疆独”​。 [^41^] 2010年 全球危机深化为西方现代化的综合性危机 中国保持高增长。上海举办世界博览会。中国外汇储备超过3万亿美元，成为美国第一大债权国，国内为“对冲”增发货币成为通胀基础。依赖于稳定的中国对美债投资，美国遂行“量化宽松”对外转嫁代价，导致全球能源、粮食价格持续上涨。食品进口依存度过高的国家遭遇输入型通胀危机，演化为国外势力支持的社会、民族（部落）等不同背景的街头政治。在缺乏统一财政的欧盟国家，欧债危机深化。 [^44^] 2011年 中国基本实现宏观调控 美国击毙本·拉登。始于纽约的代表99%民众的街头政治在全球多个城市陆续发生。泛地中海各国相继爆发街头冲突，表明世界上两类国家难以化解美国金融资本向全球转嫁的危机代价：一是长期受殖民化控制的依赖单一经济的后发国家，如突尼斯、埃及、利比亚等相继发生政权解体或者国家动乱；二是老牌殖民主义宗主国，如西班牙、葡萄牙、希腊、爱尔兰、意大利等相继爆发街头冲突。上述两类国家大致构成“地中海危机圈”​。 ","date":"2024/09/24","externalUrl":null,"permalink":"/2024/09/24/after-reading-eight-crises/","section":"全部文章","summary":"","title":"《八次危机》大事年表","type":"posts"},{"content":"","date":"2024/09/24","externalUrl":null,"permalink":"/tags/%E5%8D%B1%E6%9C%BA/","section":"标签","summary":"","title":"危机","type":"tags"},{"content":"","date":"2024/09/24","externalUrl":null,"permalink":"/tags/%E5%8E%86%E5%8F%B2/","section":"标签","summary":"","title":"历史","type":"tags"},{"content":"","date":"2024/09/24","externalUrl":null,"permalink":"/tags/%E7%BB%8F%E6%B5%8E/","section":"标签","summary":"","title":"经济","type":"tags"},{"content":"","date":"2024/09/24","externalUrl":null,"permalink":"/tags/%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0/","section":"标签","summary":"","title":"读书笔记","type":"tags"},{"content":"","date":"2024/09/19","externalUrl":null,"permalink":"/tags/%E5%8C%97%E4%BA%AC/","section":"标签","summary":"","title":"北京","type":"tags"},{"content":"近期去了趟北京，主要是带爸妈去旅游，写写这次北京旅游的印象吧。这次行程还是蛮临时的，出发两三周前，二姐看到有这条旅游团路线，大姐说这个时间和价格非常合适，我则看了下手头的工作，不算紧急，休了几天假，就确定了由我陪着爸妈到北京圆梦\n还得是跟团 # 对上年纪的父母来说，去北京跟旅游团还是比自由行更好一点。虽然旅行团有诸多弊端，比如大景点只挑精华段、比如带你去购物点以及各种路上推销，还有为了增加名目多收钱捆绑一些不跟团压根不会体验的项目，但北京的一些特殊性，让我觉得旅行社在交通和景点预约上都有很大的优势\n先看交通，对爸妈来说北京可能是这辈子去0次和1次的区别，难得来一趟，如果只去几个地方总觉得可惜，但要是去的景点多了，交通就成了最大的问题，总不能带爸妈挤公交地铁吧，打车感觉不便宜，自驾停车也麻烦，还得是旅游大巴，方便省心。但北京的旅游大巴还是让我震惊，天安门周边特殊不能随便停车可以理解，但是能停大巴的地方也太远了，走长长一段路才能走到入口\u0026hellip;而且每次停车也不能停太久，逛完景点出来也得走很远，走到上车点人齐才让大巴过来接\n其次北京好多景点都得预约，故宫，毛主席纪念堂等等，自己逐个预约看时间非常麻烦。好巧不巧，这次赶上了中非合作论坛，一有重大活动，天安门广场戒严，毛主席纪念堂4-6号临时闭馆，小红书上看到好多人跑空了。对爸妈来说毛纪可是行程的重中之重啊，上小程序看毛纪的预约情况，全是满的完全看不到有票的可能\u0026hellip;好在旅行社能改到7号毛纪开放的时候再去，还得是旅行社的渠道靠谱。而且在故宫听到一些游客讨论，约了好久的故宫都约不到，才选择报的团\n另外跟团还有一个好处，就是没给爸妈评价自由行行程好坏的机会，对他们来说，吃住行样样得花钱，花多了觉得浪费，花少了体验又差强人意。报旅行团，他们只会觉得子女肯花钱，好孝顺，旅程中的任何不满都可以甩锅给旅行社的安排不合理，吃的完全不符合口味，住的这也不行那也不行，路上还要走这么久\n一趟下来，更加觉得带爸妈跟团游是非常明智的选择，不过多少有点后悔没对比不同旅游团的路线，北京景点的面积比地图的观感还要大得多，这个团行程太密集了，连我都觉得腿要废了，带父母应该更休闲一点的。最后跟完了全程但也真的累坏了，好在想看的都看到了也算圆满了\n此前我也从未去过北京，这趟逛了天安门广场，升旗，毛主席纪念堂，故宫，景山公园，天坛，长城，恭王府，什刹海公园，纪晓岚故居，鸟巢，水立方，颐和园，圆明园。还顺带去了下天津，逛了周恩来邓颖超纪念馆，还有意大利风情街等等，几天下来也有一些蛮新鲜的旅游体验\n(多图预警，无图展示或许加载中)\n旅游记录 # Day1 # 前一天晚上航班延误，到酒店都快1点了，行程的第一天居然要6点半出发，叠加失眠都没睡够1个小时。在北京，旅游团的出发时间好像都特别早，一方面想要赶在早高峰之前，另一方面想要尽可能排在人流前面。其实现在9月份淡季算好了，7、8月份旺季出发的时间更早。\n今天主要走前门大街-\u0026gt;天安门-\u0026gt;故宫-\u0026gt;景山公园-\u0026gt;天坛公园，本来还有毛主席纪念堂，但重大活动临时闭馆，只能从国家博物馆那边绕到天安门城楼进到故宫\n前门大街 # 其实就是一条商业街，来得早，人流没有那么多\n国家博物馆 # 还是挺想进国博看看的，可惜行程里没有安排，下次自由行再来看\n天安门城楼 # 毛主席宣布新中国成立以及阅兵的地方，可惜碰上重大活动，没法上去看同款视角。穿过天安门城楼，就到故宫了\n故宫 # 这上面的装饰是有学问的，然而没记住导游是怎么说的\n这个正大光明听到导游讲到了个有意思的，皇子们经常发生抢皇位的事情，然后忘记是哪位皇帝想了个法子，就是不立太子了，把继位的皇子名字写一张纸，就放在这个正大光明的牌子后面。等皇帝死了之后，朝廷重臣就当着满朝文武的面取出这张纸，宣布下一任皇帝。这样就没有太子这个靶子了\n穿过前殿，就到了后宫。当年溥仪就生活在后宫，之前看《末代皇帝》的时候就不是很理解，为什么说出了宫溥仪就不再是皇帝了？原来袁世凯当总统的时候就和当时的隆裕太后做了交易，许诺皇帝和太后仍能生活在后宫，每年还提供白银维持生活，但是要放弃皇位，前殿给袁世凯用来办公。所以溥仪只能算是后宫里的小皇帝\n到了后宫，脑子里各种熟悉的影视剧，逛了下《甄嬛传》里面年妃在的翊坤宫，还有慈禧住过的储秀宫，再绕过御花园就出去了。感觉还没看够，故宫真的太太太太太大了，可惜旅游团就是这样的走马观花\n现在再看地图，这趟基本属于“速通”了，下次还要再来逛个够。其实还有故宫讲解，听导游讲了好多小故事，包括午门怎么走、每个殿用来做什么，太监宫女怎么值班等等\u0026hellip;然而最后基本没记住\n从故宫出来，就能看到景山公园\n景山公园 # 这里有俯瞰故宫的视角，是给故宫挖护城河的时候，把所有挖出来的泥土垒起来，形成的一个小山坡。当年明朝崇祯皇帝还在景山公园这边某棵树上吊自缢\n走了大半天，从前门大街一条线走到景山公园，腿都快走废了。吃了中饭后去看秦乐宫杂技表演（捆绑项目），有两三个确实蛮惊艳的，但大多数普普通通，好处是能坐着歇歇腿。看完继续逛天坛\n天坛 # 天坛也好大，是祭祀的地方。报团只包含外围的大门票，近距离看祈年殿（即图上的那个）还得另外买票，不贵，但看了一天古建有点疲劳，而且阴天不太好看，没买票只在外围绕了一圈，还下大雨，没逛多久就准备回去了，但是小红书上看到很多人拍的祈年殿都好好看，羡慕。\n看完天坛，今天的行程就结束了，北京真的遍地古建筑\n天安门：最初建于明朝，明永乐十八年（1420年）建成，当时称为“承天门”。清顺治八年（1651年），清世祖爱新觉罗·福临下令在原废墟上进行大规模改建，并更名为“天安门”。 故宫：始建于1406年明永乐四年，建成于1420年明永乐十八年。故宫的建造历时14年，由100万民工共同完成。 景山公园：景山在辽代已有瑶屿行宫的建设，元代时被辟为皇家“后苑”，明代永乐年间，明成祖朱棣在北京大规模营建城池、宫殿和园林时，将挖掘紫禁城筒子河和太液、南海的泥土堆积在景山，形成五座山峰，称为“万岁山”。清顺治十二年（1655）将“万岁山”改称“景山”。 天坛：始建于明永乐十八年（1420年），当时称为天地坛。明嘉靖九年（1530年），改名为天坛。清乾隆十六年（1751年），乾隆帝改大享殿为祈年殿，大享门为祈年门，并对天坛进行了一系列的修建和改造。 居然全是永乐大帝的杰作，看来永乐年间是真的辉煌（有钱），对明朝的印象不多，高中时看的《明朝那些事儿》都忘了，现在的印象基本是和嘉靖有关的《大明王朝1566》，是一部不可多得的历史剧（从缺钱开始的）。这些古建距今都600年了，还能保存的如此完好，还好当年国共内战和平解放北平，不然这些历史遗迹现在可能就看不到了。\n可惜的是，回程路上经过二环，导游提起了建国后为了发展经济拆掉的古城墙（现在的二环路），不知道还好，知道了真觉得很可惜，再也感受不到古代的“北京城”了\nDay2 # 5点半出发\u0026hellip;去长城。长城距离北京很远，然后八达岭长城那边有4个停车场，每一个停车场都会离景区入口越来越远，去晚了，就需要走更远的路才能到景区入口。现在淡季，这个时间出发去能赶上第一个或第二个停车场，行程相对舒适一些。车上补觉，睡醒就到了，还好是淡季，赶上了第一个停车场\n长城 # 长城上的刻字也太多了，多到都要立牌子提醒“严禁刻字”。到了登城口有南北两边，似乎旅游团都建议北边，风景最好，当然了人也最多，长城上有很多个塔楼，一般都从北一爬到北八，然后折返。踏上长城，才发现有几段路比想象中还要陡，感觉古人在这巡逻都是在锻炼身体，时间有限，爸妈走到北四就差不多了得折返了，毕竟长城这个地方，重点是来过，没特殊情况，估计也不会有下次了\n可能是工作日的关系，长城上看到的上年纪的中老年人比年轻人还要多，大多数年轻人也是带家人来的，极少见年轻人抱团。还是毛主席的“不到长城非好汉”在父母辈流传深远\n从长城回来，吃过饭。继续逛恭王府\n恭王府 # 恭王府是目前保存最完好的一座清朝王府，见证了清朝的盛转衰，素有“一座恭王府，半部清朝史”的说法。住过两位大人物，一位就是巨贪和珅，另一位则是恭亲王奕䜣。 都知道和珅贪，导游说当年乾隆死后，嘉庆抄家，抄出来的家产价值堪称世界首富，整个王府的建造规格在当时都算是逾制的。不过看故宫看多了，感觉这个王府的建筑风格也差不多，才发现连照片都没拍。 后来还走散了，都没听到多少导游讲的故事\n倒是记住了一个点，为什么康熙一直留着何珅？首先肯定是和珅有用，作为皇上，总得有一个在自己想要铺场浪费的时候替自己说话吧，如果全是纪晓岚那样的清官，估计想法说出口就被上奏说劳民伤财了，也需要人制衡一下官场上的清流；其次就是一个贪官比一百个贪官好管，而且一个人能花的钱终究有限，大部分带不走，朝廷缺钱的时候也知道和珅这里可以拿。佩服，帝王之术，最主要的还是这种驾驭下属的能力。\n另外事实证明，只要千古留名，不管是好名声还是坏名声，在死后甚至还能继续创收\n出了恭王府，就是什刹海公园\n什刹海 # 不得不说虽然只是一个公园，但是风景确实不错啊。冬天还可以在湖面上滑冰\n路上看到了一个卖豆汁的，久闻大名，今日一试，果真喝不下去，走的时候直接留在酒店里都没带走。逛完什刹海，今天的行程就结束了，早上起太早，在外面都呆10多个小时了\nDay3 # 今天7点出发，终于晚点出发了，感觉都被调教好了，7点都觉得晚了。去鸟巢水立方，附近还有一个同仁堂\n鸟巢\u0026amp;水立方 # 白天的鸟巢水立方没啥可看的，从门口走了好长一段路进来，只是看一眼外观，真心觉得大可不必，不知道夜景怎么样。顺带去同仁堂看了一眼（其实就是购物点，一颗安宫牛黄丸好贵，860一颗，感觉这品牌溢价太厉害了，关键是急救用的，平常用不到，也不知道是不是真的像风评一样有效，紧急情况都马上120了，都不一定记得吃这个，好难证伪）\n好巧不巧，今天附近好像要开会，各种封路，大巴车停在这门口都不给上路，随后马路上陆续看了好几辆挂着中国和非洲国旗的黑色桥车路过，在这光等了好久，只能临时去附近吃饭，差不多吃完的时候，刚好也放行了，但是不知道什么时候又会封路，赶紧上车离开，去颐和园和圆明园\n颐和园 # 颐和园的风景还真挺不错的，但总感觉挺罪恶的。之前看《走向共和》，开头就是慈禧要修园子安享晚年，然而整个清政府缺钱，没办法挪了北洋水师的经费，导致军备跟不上。而且在导游的解说下，慈禧一天的吃喝用度就抵得上普通老百姓两三年，是极度的铺场浪费了，如果没有慈禧或许清朝还能多存在几年\n在颐和园，还有一处小房子，周边都被石头封起来了，只留了一个门口，这个小房间就是慈禧在颐和园的时候囚禁光绪的地方，好惨，从出生开始光绪皇帝就逃不出慈禧的手掌心，好不容易快要熬到慈禧去世了，终于要熬出头了结果还提前非自然死亡，光绪慈禧前后去世间隔不超过12个小时，光绪人生也太悲惨了\n顺带提一下听到的科普，以前修房子好像比较少窗，而且大多是用砖木做的，木头受潮就容易坏，怎么防潮呢？就是墙上留几个通风口，让室内空气流通，延伸出一句古话，“世界上没有不透风的墙”。\n颐和园也好大，皇家园林都大的离谱，怪不得达官贵人们都得配轿子，自己走估计得累死，走马观花听讲解看完了几个精华点，就去圆明园\n圆明园 # 圆明园曾经被三次破坏，现在只剩下些石柱子了，好可惜，铭记历史，落后就要挨打\n另外，12生肖的兽首居然是一个钟，最开始以为只是个普通装饰来着\n逛完圆明园，今天的行程就结束了，还算休闲，然而明天早起看升旗，4:15出发\u0026hellip;晚上9点多就直接躺床上睡觉了，这要是放平时肯定睡不着，这几天挺累，睡得蛮好\nDay4 # 本来今天是直接去天津的，但前几天毛主席纪念堂闭馆，今天开放，而且和升旗是在同一个地方，就都凑今天了。\n升旗 # 关于升旗的记忆，还得回到小学，好像还有什么国旗下演讲，印象中是7点左右？所以当听到天安门5点多升旗的时候惊呆了，而且来得再早，也赶不上前排，有很多人都是在附近席地而坐通宵抢前排的，这怎么抢的过？\n下着大雨，丝毫没有浇灭游客们“来都来了”的热情，看完的时候都淋湿了，还没到6点，人群开始慢慢散去。之前这一带是封闭的，今天终于开放了，但是下雨也没有到处逛逛拍照的心思，就近找了个地方躲雨，顶着湿透的鞋子硬等了2个多小时，一直等到8点半毛主席纪念堂开放。\n这一点觉得旅行社安排就不是很OK，大家的鞋子都湿透了，步行+坐车来回酒店换拖鞋太耗时间，那也可以看看附近有没有超市啥的可以买拖鞋，再不行买保鲜袋套脚上隔着鞋袜也行呀。跟导游提了但是被敷衍了事，光这一点就可以给个差评\n毛主席纪念堂 # 8点半开放，但估计前几天没有成行的团客都挤今天了，早早的在门口排起了队，还是等到快10点才可以瞻仰。只可惜时间太短，不能停留，跟着队伍从进门到出来感觉都不到1分钟\n虽然短，但还是觉得挺值。我爸现在还常常看红军解放战争的影视剧，我妈年轻那会儿唱歌都唱毛主席，而我看《毛泽东选集》后就成为了迷弟，也惊讶于读书时就率领200名学生志愿军缴械3000北洋正规军的真实故事。走出来还看到一个老奶奶在孙女的搀扶下对着留言板喃喃自语，还有人出来时眼睛都红了，真就全民偶像了\n看完毛主席出来，就集合去纪晓岚故居，也在附近，就顺带看一下\n纪晓岚故居 # 和和珅的府邸相比，作为清流的纪晓岚的家也太寒碜了，10分钟左右就逛完出来，不听讲解更快。主要就是卖书，不过在这之前真不知道《四库全书》是纪晓岚主持编撰的，而且还写了一本《阅微草堂笔记》，不知道有生之年还会不会读到\n快速逛完出来，快中午了，启程去天津\n天津 # 逛了一圈下来，好像没啥著名景点，有一个周恩来邓颖超纪念馆还不错，然后去了一下意大利风情街，吃了下狗不理包子，就结束了。按导游的话说，天津这个地方，外地人基本不会特意来旅游，去北京就近去一下天津，也算多打卡一座城市，听着好像也有那么点道理。\n不过从早上鞋子湿了到现在也没法换，逛天津时都没啥好心情，只想快点结束，回到北京，行程结束\n后续 # 肉眼可见爸妈这一趟下来特别的开心，我爸头像都换成了和天安门的自拍，我姐托我妈去送礼给一个我妈不认识的人，就连那个人都知道了我妈从北京玩完回来\u0026hellip;感觉全国这么多的地方，带爸妈出游，还得是北京\n","date":"2024/09/19","externalUrl":null,"permalink":"/2024/09/19/take-parents-to-travel-beijing/","section":"全部文章","summary":"","title":"带爸妈到北京旅游","type":"posts"},{"content":"一时兴起，又再次折腾起了博客\n已经记不清这是第几轮了，陷入了 搭建博客 -\u0026gt; 只写了几篇 -\u0026gt; 陷入沉寂 的循环中。每次看到还不错的独立博客，并且还在更新，就会感慨自己不够持久，但又自我感觉良好，觉得我也可以。“这次肯定不一样”，抱着这样的想法，改头换面，把一切推倒重来\n好在搭建的过程并不耗时，没去折腾复杂的自定义配置，在hexo里选了一款顺眼的主题，跟着官方文档，小几个小时就能搭好并部署到github pages上，还挺方便的。(不过要是太复杂，估计也不会有再来一次的冲动)\nhexojs/hexo: A fast, simple \u0026amp; powerful blog framework, powered by Node.js. (github.com)\nxaoxuu/hexo-theme-stellar: 内置文档系统的简约商务风Hexo主题，支持大量的标签组件和动态数据组件。 (github.com)\n","date":"2024/08/24","externalUrl":null,"permalink":"/2024/08/24/build-my-blog-again/","section":"全部文章","summary":"","title":"再次折腾博客","type":"posts"},{"content":"","externalUrl":null,"permalink":"/en/authors/","section":"Authors","summary":"","title":"Authors","type":"authors"},{"content":"","externalUrl":null,"permalink":"/en/series/","section":"Series","summary":"","title":"Series","type":"series"}]