-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathatom.xml
More file actions
65 lines (65 loc) · 16.9 KB
/
atom.xml
File metadata and controls
65 lines (65 loc) · 16.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<author>
<name>lewis</name>
</author>
<generator uri="https://hexo.io/">Hexo</generator>
<id>https://lewisbyte.github.io/</id>
<link href="https://lewisbyte.github.io/" rel="alternate"/>
<link href="https://lewisbyte.github.io/atom.xml" rel="self"/>
<rights>All rights reserved 2026, lewis</rights>
<title>保持好奇心</title>
<updated>2026-04-10T07:51:59.508Z</updated>
<entry>
<author>
<name>lewis</name>
</author>
<category term="图数据库" scheme="https://lewisbyte.github.io/tags/%E5%9B%BE%E6%95%B0%E6%8D%AE%E5%BA%93/"/>
<content>
<![CDATA[<h2 id="概述"><a href="#概述" class="headerlink" title="概述"></a>概述</h2><h2 id="图数据"><a href="#图数据" class="headerlink" title="图数据"></a>图数据</h2><h2 id="图本体(强、弱schema)"><a href="#图本体(强、弱schema)" class="headerlink" title="图本体(强、弱schema)"></a>图本体(强、弱schema)</h2><h2 id="BIBFRAME的特殊性"><a href="#BIBFRAME的特殊性" class="headerlink" title="BIBFRAME的特殊性"></a>BIBFRAME的特殊性</h2><h2 id="图数据保存BIBFRAME-RDF的困难挑战"><a href="#图数据保存BIBFRAME-RDF的困难挑战" class="headerlink" title="图数据保存BIBFRAME-RDF的困难挑战"></a>图数据保存BIBFRAME-RDF的困难挑战</h2><h2 id="图数据的运营成本"><a href="#图数据的运营成本" class="headerlink" title="图数据的运营成本"></a>图数据的运营成本</h2><h2 id="国产化"><a href="#国产化" class="headerlink" title="国产化"></a>国产化</h2><h2 id="强schema、弱schema"><a href="#强schema、弱schema" class="headerlink" title="强schema、弱schema"></a>强schema、弱schema</h2><h2 id="选型对比清单"><a href="#选型对比清单" class="headerlink" title="选型对比清单"></a>选型对比清单</h2>]]>
</content>
<id>https://lewisbyte.github.io/2026/04/10/20260410/</id>
<link href="https://lewisbyte.github.io/2026/04/10/20260410/"/>
<published>2026-04-10T07:47:25.000Z</published>
<summary>
<![CDATA[<h2 id="概述"><a href="#概述" class="headerlink" title="概述"></a>概述</h2><h2 id="图数据"><a href="#图数据" class="headerlink" title="图数据"></a>图数据</h2><h]]>
</summary>
<title>BIBFRAME书目框架与图数据库选型</title>
<updated>2026-04-10T07:51:59.508Z</updated>
</entry>
<entry>
<author>
<name>lewis</name>
</author>
<category term="BIBFRAME" scheme="https://lewisbyte.github.io/tags/BIBFRAME/"/>
<content>
<![CDATA[<h2 id="BIBFRAME-总览"><a href="#BIBFRAME-总览" class="headerlink" title="BIBFRAME 总览"></a>BIBFRAME 总览</h2><ul><li>美国国会图书馆基于BIBFRAME编目,开源了很多相关生态的基础组件,我在这里梳理、总结一下整个美国国会图书馆的开源组件生态,尝试将主要的开源组件把玩一下,测试一下其组件基础的能力,并尝试集成一下各组件,验证能否形成一个完整的业务生态闭环。</li></ul><h3 id="BIBFRAME编辑器"><a href="#BIBFRAME编辑器" class="headerlink" title="BIBFRAME编辑器"></a>BIBFRAME编辑器</h3><ul><li>源码地址:<a href="https://github.com/lcnetdev/marva-quartz">https://github.com/lcnetdev/marva-quartz</a></li></ul><h4 id="使用方法:"><a href="#使用方法:" class="headerlink" title="使用方法:"></a>使用方法:</h4><ul><li><ol><li>执行以下shell脚本,编译运行</li></ol></li></ul><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">git <span class="built_in">clone</span> https://github.com/lcnetdev/marva-quartz.git</span><br><span class="line"><span class="built_in">cd</span> marva-quartz</span><br><span class="line">npm install</span><br><span class="line">npm run dev-external</span><br></pre></td></tr></table></figure><ul><li><ol start="2"><li>本地访问:<a href="http://localhost:4444/bfe2/quartz/">http://localhost:4444/bfe2/quartz/</a></li></ol></li></ul><h3 id="编辑器后端服务"><a href="#编辑器后端服务" class="headerlink" title="编辑器后端服务"></a>编辑器后端服务</h3><ul><li>地址:ttps://github.com/lcnetdev/marva-backend</li></ul><h4 id="核心后端服务组件"><a href="#核心后端服务组件" class="headerlink" title="核心后端服务组件"></a>核心后端服务组件</h4><ol><li><p><strong><code>util</code></strong> (Util Service)</p><ul><li><strong>角色</strong>: <strong>业务管家</strong></li><li><strong>功能</strong>:<ul><li>不仅是“胶水层”,它更像是整个应用的大脑。</li><li>负责处理复杂的业务动作,比如“发布”(将数据从暂存区推送到正式区或外部系统)。</li><li>提供辅助功能,如 MARC 格式预览、Git 数据同步。</li></ul></li><li><strong>关键点</strong>: 它直接连接数据库,并协调其他服务。</li></ul></li><li><p><strong><code>ldpjs-staging</code></strong> (Staging Data Service)</p><ul><li><strong>角色</strong>: <strong>草稿箱存储服务</strong></li><li><strong>功能</strong>:<ul><li>专门负责存储<strong>正在编辑中、未完成</strong>的编目数据。</li><li>数据存放在 <code>resourcesStaging</code> 集合中。</li><li>允许频繁的读写操作,主要服务于编辑器的“保存草稿”功能。</li></ul></li></ul></li><li><p><strong><code>ldpjs-production</code></strong> (Production Data Service)</p><ul><li><strong>角色</strong>: <strong>正式库存储服务</strong></li><li><strong>功能</strong>:<ul><li>专门负责存储<strong>已发布、生效</strong>的编目数据。</li><li>数据存放在 <code>resourcesProduction</code> 集合中。</li><li>作为数据的“最终归宿”,供查询和对外发布使用。</li></ul></li></ul></li><li><p><strong><code>scriptshifter</code></strong> (Translation Service)</p><ul><li><strong>角色</strong>: <strong>多语言转写助手</strong></li><li><strong>功能</strong>:<ul><li>在编目过程中,实时将非拉丁语系文字(如中文标题)转写为拉丁字母拼音。</li><li>是一个纯粹的工具服务,无状态。</li></ul></li></ul></li><li><p><strong><code>dctap-dancer</code></strong> (Profile Editor Backend)</p><ul><li><strong>角色</strong>: <strong>规则模板管理器</strong></li><li><strong>功能</strong>:<ul><li>管理“编目规则”(Profile)。</li><li>编目员通过它来定义:在录入某类书时,哪些字段是必填的,哪些字段需要下拉菜单。</li><li>这些规则定义了 <code>ldpjs</code> 中数据的形状。</li></ul></li></ul></li><li><p><strong><code>database</code></strong> (MongoDB)</p><ul><li><strong>角色</strong>: <strong>数据中心</strong></li><li><strong>功能</strong>:<ul><li>物理存储所有数据,包括:草稿数据 (<code>resourcesStaging</code>)、正式数据 (<code>resourcesProduction</code>)、用户信息、配置信息等。</li></ul></li></ul></li><li><p><strong><code>reverse</code></strong> (Nginx Gateway)</p><ul><li><strong>角色</strong>: <strong>前台接待</strong></li><li><strong>功能</strong>:<ul><li>统一入口,根据请求类型将用户引导到不同的服务窗口(是存草稿?还是查正式记录?还是修改模板?)。</li></ul></li></ul></li></ol><h4 id="组件关系图解"><a href="#组件关系图解" class="headerlink" title="组件关系图解"></a>组件关系图解</h4><p><img src="/2026/02/03/20260203/01.png" alt="flow-chart"></p><h4 id="详细启动步骤:"><a href="#详细启动步骤:" class="headerlink" title="详细启动步骤:"></a>详细启动步骤:</h4><p><strong>步骤一:初始化代码仓库</strong><br>由于项目依赖多个 Git 子模块 (<code>ldpjs</code>, <code>scriptshifter</code>, <code>dctap-dancer</code>),首次启动前必须初始化它们,否则构建会失败。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git submodule update --init --recursive</span><br></pre></td></tr></table></figure><p><strong>步骤二:配置环境变量 (.env)</strong><br>项目根目录缺少 <code>.env</code> 文件,这是启动必须的。请在项目根目录 (<code>d:\repo\marva-backend\</code>) 创建一个名为 <code>.env</code> 的文件,并填入以下配置(根据 <code>server.js</code> 和 <code>docker-compose.yml</code> 分析得出):</p><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># --- 数据库配置 ---</span></span><br><span class="line"><span class="comment"># MongoDB 内部连接使用,通常不需要修改</span></span><br><span class="line">MONGO_INITDB_DATABASE=bfe2</span><br><span class="line"></span><br><span class="line"><span class="comment"># --- 外部服务认证 (MarkLogic / API) ---</span></span><br><span class="line"><span class="comment"># 请根据实际情况填写,本地开发如果无真实服务可尝试填入占位符</span></span><br><span class="line">MLUSER=your_ml_user</span><br><span class="line">MLPASS=your_ml_password</span><br><span class="line">MLUSERSTAGE=your_stage_user</span><br><span class="line">MLPASSSTAGE=your_stage_password</span><br><span class="line"></span><br><span class="line"><span class="comment"># --- 服务 URL 配置 ---</span></span><br><span class="line">STAGINGPOSTURL=http://example.com/stage/post</span><br><span class="line">PRODUCTIONPOSTURL=http://example.com/prod/post</span><br><span class="line">STAGGINGccURL=http://example.com/stage/cc</span><br><span class="line">PRODUCTIONccURL=http://example.com/prod/cc</span><br><span class="line">VALIDATIONURL=http://example.com/validate</span><br><span class="line"></span><br><span class="line"><span class="comment"># --- NACO 服务存根 ---</span></span><br><span class="line">STAGINGNACOSTUB=http://example.com/stage/naco</span><br><span class="line">PRODUCTIONNACOSTUB=http://example.com/prod/naco</span><br><span class="line"></span><br><span class="line"><span class="comment"># --- WorldCat OAuth 配置 ---</span></span><br><span class="line">WC_CLIENTID=your_worldcat_client_id</span><br><span class="line">WC_SECRET=your_worldcat_secret</span><br><span class="line"></span><br><span class="line"><span class="comment"># --- 功能开关 ---</span></span><br><span class="line">LCAP_SYNC=<span class="literal">false</span></span><br><span class="line">RECORD_HISTORY=<span class="literal">true</span></span><br><span class="line">BFORGMODE=<span class="literal">false</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># --- Scriptshifter 配置 ---</span></span><br><span class="line">TXL_FLASK_SECRET=1234567890</span><br></pre></td></tr></table></figure><blockquote><p><strong>注意</strong>:上述 <code>your_...</code> 和 <code>http://example.com/...</code> 是占位符。如果您没有真实的后端凭据,本地启动可能无法连接外部 API,但容器本身应该能成功运行。</p></blockquote><p><strong>步骤三:启动服务</strong><br>在项目根目录下运行 Docker Compose 命令构建并启动所有服务:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker-compose up --build -d</span><br></pre></td></tr></table></figure><ul><li><code>--build</code>: 强制重新构建镜像(确保子模块代码被正确打包)。</li><li><code>-d</code>: 后台运行。</li></ul><h4 id="4-验证与访问"><a href="#4-验证与访问" class="headerlink" title="4. 验证与访问"></a>4. 验证与访问</h4><p>启动完成后,您可以通过以下方式验证:</p><ol><li><p><strong>检查容器状态</strong>:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker-compose ps</span><br></pre></td></tr></table></figure><p>确保所有容器(尤其是 <code>reverse</code>, <code>util</code>, <code>database</code>)的状态为 <code>Up</code>。</p></li><li><p><strong>访问应用</strong>:<br>项目通过 Nginx 暴露在 <strong>9400</strong> 端口。</p><ul><li><strong>主页/编辑器</strong>: <a href="http://localhost:4444/bfe2/quartz/">http://localhost:4444/bfe2/quartz/</a></li><li><strong>Util API</strong>: <a href="http://localhost:9400/util/">http://localhost:9400/util/</a></li></ul></li></ol>]]>
</content>
<id>https://lewisbyte.github.io/2026/02/03/20260203/</id>
<link href="https://lewisbyte.github.io/2026/02/03/20260203/"/>
<published>2026-02-03T02:40:43.000Z</published>
<summary>
<![CDATA[<h2 id="BIBFRAME-总览"><a href="#BIBFRAME-总览" class="headerlink" title="BIBFRAME 总览"></a>BIBFRAME 总览</h2><ul>
<li>美国国会图书馆基于BIBFRAME编目,开源了很多相关生]]>
</summary>
<title>BIBFRAME 开源组件</title>
<updated>2026-04-10T07:46:26.677Z</updated>
</entry>
<entry>
<author>
<name>lewis</name>
</author>
<category term="SEO" scheme="https://lewisbyte.github.io/tags/SEO/"/>
<content>
<![CDATA[<h3 id="什么是外部链接、反向链接"><a href="#什么是外部链接、反向链接" class="headerlink" title="什么是外部链接、反向链接"></a>什么是外部链接、反向链接</h3><p>例如现在有2个网站地址是:a网站:<code>a.org</code> 、b网站:<code>b.org</code>,a网站里面包含了指向b网站的地址,那么:</p><ul><li>对于a网站来说,b网站就是一个<code>外部链接 - Outbound Link</code></li><li>对于b网站来说,a网站就是一个<code>反向链接 - Inbound Link / Backlink</code></li></ul><p>介绍这个有啥用呢,咱们可以基于外部链接和反向链接,来分析网站之间的关联关系。semrush是一个常见seo分析工具,可以分析网站的链接,可以统计互联网的外链和反向链接的数据信息。</p><h3 id="什么是stripe"><a href="#什么是stripe" class="headerlink" title="什么是stripe"></a>什么是stripe</h3><p>如果把支付宝、微信支付看作中国互联网的收款工具,那么 Stripe 就是海外互联网产品用的支付宝/微信支付。它可以让网站或 App 快速接入信用卡、借记卡甚至跨境支付,把用户的钱安全地收进商家账户里。</p><h3 id="反向链接"><a href="#反向链接" class="headerlink" title="反向链接"></a>反向链接</h3><p>输入你想要分析的网站,然后点击[外链建设]-[反向链接分析]-[反向链接],就可以查询到和这个网站相关的反向链接,在这个链接的基础上, 还可以继续筛选出你感兴趣的链接地址。</p><p>例如这里筛选出:<code>/pricing</code> 相关的外链,可以找到相关网站的定价页面.</p><p><img src="/2025/12/17/20251217/20251217_01.png" alt="semrush"></p><p>基于这个思路,可以挖掘到有哪些网站会有定价页面,并且接入了stripe这个支付系统。说明这个系统本身具有一定的业务和市场价值可以挖掘分析。</p>]]>
</content>
<id>https://lewisbyte.github.io/2025/12/17/20251217/</id>
<link href="https://lewisbyte.github.io/2025/12/17/20251217/"/>
<published>2025-12-17T07:24:47.000Z</published>
<summary>
<![CDATA[<h3 id="什么是外部链接、反向链接"><a href="#什么是外部链接、反向链接" class="headerlink" title="什么是外部链接、反向链接"></a>什么是外部链接、反向链接</h3><p>例如现在有2个网站地址是:a网站:<code>a.org</]]>
</summary>
<title>外部链接与反向链接:用 SEO 视角理解网站之间的关系</title>
<updated>2026-04-10T07:46:26.673Z</updated>
</entry>
</feed>