mirror of
				https://github.com/Mabbs/mabbs.github.io
				synced 2025-11-04 20:57:01 +05:30 
			
		
		
		
	Update 24 files
- /css/gitalk.css - /js/aes.js - /js/gitalk.min.js - /js/jquery.min.js - /js/main.js - /js/rss-feed-preview.js - /js/simple-jekyll-search.min.js - /assets/css/gitalk.css - /assets/js/rss-feed-preview.js - /assets/js/main.js - /assets/js/jquery.min.js - /assets/js/simple-jekyll-search.min.js - /assets/js/aes.js - /assets/js/gitalk.min.js - /assets/js/instant.page.js - /_layouts/post.html - /_layouts/encrypt.html - /_layouts/default.html - /search.html - /aes.html - /_posts/2025-04-08-feed.md - /links.md - /blogroll.opml - /jump.html
This commit is contained in:
		
							parent
							
								
									c7cabd991a
								
							
						
					
					
						commit
						91dd8a34ea
					
				@ -11,7 +11,7 @@
 | 
				
			|||||||
  <link rel="stylesheet" href="{{ "/assets/css/style.css?v=" | append: site.github.build_revision | relative_url }}">
 | 
					  <link rel="stylesheet" href="{{ "/assets/css/style.css?v=" | append: site.github.build_revision | relative_url }}">
 | 
				
			||||||
  <!--[if !IE]> -->
 | 
					  <!--[if !IE]> -->
 | 
				
			||||||
  <link rel="stylesheet" href="/Live2dHistoire/live2d/css/live2d.css" />
 | 
					  <link rel="stylesheet" href="/Live2dHistoire/live2d/css/live2d.css" />
 | 
				
			||||||
  <script src="/js/jquery.min.js"></script>
 | 
					  <script src="/assets/js/jquery.min.js"></script>
 | 
				
			||||||
  <!-- <![endif]-->
 | 
					  <!-- <![endif]-->
 | 
				
			||||||
  <!--[if lt IE 9]>
 | 
					  <!--[if lt IE 9]>
 | 
				
			||||||
    <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js"></script>
 | 
					    <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js"></script>
 | 
				
			||||||
@ -49,7 +49,7 @@
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  </script>
 | 
					  </script>
 | 
				
			||||||
  <script src="//instant.page/5.2.0" type="module" integrity="sha384-jnZyxPjiipYXnSU0ygqeac2q7CVYMbh84q0uHVRRxEtvFPiQYbXWUorga2aqZJ0z"></script>
 | 
					  <script src="/assets/js/instant.page.js" type="module"></script>
 | 
				
			||||||
</head>
 | 
					</head>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<body>
 | 
					<body>
 | 
				
			||||||
@ -134,7 +134,7 @@
 | 
				
			|||||||
  </div>
 | 
					  </div>
 | 
				
			||||||
  <script src="{{ "/assets/js/scale.fix.js" | relative_url }}"></script>
 | 
					  <script src="{{ "/assets/js/scale.fix.js" | relative_url }}"></script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  <script src="/js/main.js"></script>
 | 
					  <script src="/assets/js/main.js"></script>
 | 
				
			||||||
  <!--[if !IE]> -->
 | 
					  <!--[if !IE]> -->
 | 
				
			||||||
  <script src="/Live2dHistoire/live2d/js/live2d.js"></script>
 | 
					  <script src="/Live2dHistoire/live2d/js/live2d.js"></script>
 | 
				
			||||||
  <script src="/Live2dHistoire/live2d/js/message.js"></script>
 | 
					  <script src="/Live2dHistoire/live2d/js/message.js"></script>
 | 
				
			||||||
 | 
				
			|||||||
@ -2,7 +2,7 @@
 | 
				
			|||||||
layout: post
 | 
					layout: post
 | 
				
			||||||
---
 | 
					---
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<script src="/js/aes.js"></script>
 | 
					<script src="/assets/js/aes.js"></script>
 | 
				
			||||||
<script>
 | 
					<script>
 | 
				
			||||||
function getByteLen(val) {
 | 
					function getByteLen(val) {
 | 
				
			||||||
    var len = 0;
 | 
					    var len = 0;
 | 
				
			||||||
 | 
				
			|||||||
@ -126,8 +126,8 @@ $.get(BlogAPI + "/suggest?id=" + blogurl + "&update=" + lastUpdated.valueOf(), f
 | 
				
			|||||||
</div>
 | 
					</div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<!--[if !IE]> -->
 | 
					<!--[if !IE]> -->
 | 
				
			||||||
<link rel="stylesheet" href="/css/gitalk.css">
 | 
					<link rel="stylesheet" href="/assets/css/gitalk.css">
 | 
				
			||||||
<script src="/js/gitalk.min.js"></script>
 | 
					<script src="/assets/js/gitalk.min.js"></script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<div id="gitalk-container"></div>
 | 
					<div id="gitalk-container"></div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -24,7 +24,7 @@ tags: [JavaScript, RSS, Feed, AI]
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  随后我就开始让它编写代码了。接下来就能看到AI在浏览器和编辑器中切换,不停的进行编写和调试,等了一段时间,它把第一版代码写好了。不过也许我说的不够清楚,这个CORS代理的用法和其他的CORS代理不太一样,代理链接和被代理的链接之间需要使用“?”分开,另外第一版我也没说清楚RSS/Atom源的链接在哪,所以它选择遍历常见的几种订阅源的路径,这样有点不太好,除了速度慢,对我的CORS代理消耗也比较大。所以我告诉它代理的正确用法,以及让它假设超链接中包含“data-feed”属性,其中包含订阅源的链接,并且随便挑了个网站拿给它作为示例。   
 | 
					  随后我就开始让它编写代码了。接下来就能看到AI在浏览器和编辑器中切换,不停的进行编写和调试,等了一段时间,它把第一版代码写好了。不过也许我说的不够清楚,这个CORS代理的用法和其他的CORS代理不太一样,代理链接和被代理的链接之间需要使用“?”分开,另外第一版我也没说清楚RSS/Atom源的链接在哪,所以它选择遍历常见的几种订阅源的路径,这样有点不太好,除了速度慢,对我的CORS代理消耗也比较大。所以我告诉它代理的正确用法,以及让它假设超链接中包含“data-feed”属性,其中包含订阅源的链接,并且随便挑了个网站拿给它作为示例。   
 | 
				
			||||||
  随后就能看到它继续改改改,改了几次之后我把最后生成的JS复制到浏览器上执行了一下,效果还不错,于是就把它放到我的博客上了。   
 | 
					  随后就能看到它继续改改改,改了几次之后我把最后生成的JS复制到浏览器上执行了一下,效果还不错,于是就把它放到我的博客上了。   
 | 
				
			||||||
  它的水平还是挺不错的,至少正确的实现了功能。不过我有点担心它的代码会不会不太可靠,毕竟要从其他网站上获取数据,得避免出现XSS之类的问题,于是我把代码丢给DeepSeek-R1让它检查了一下,果不其然Devin.ai写的代码似乎有XSS的隐患,如果链接列表中标题有html标签似乎就会解析(虽然我没试过),于是根据DeepSeek的提示修改了一下,增加了一个过滤特殊字符的函数,改完又放到博客上,最终的代码就是:[rss-feed-preview.js](/js/rss-feed-preview.js)。   
 | 
					  它的水平还是挺不错的,至少正确的实现了功能。不过我有点担心它的代码会不会不太可靠,毕竟要从其他网站上获取数据,得避免出现XSS之类的问题,于是我把代码丢给DeepSeek-R1让它检查了一下,果不其然Devin.ai写的代码似乎有XSS的隐患,如果链接列表中标题有html标签似乎就会解析(虽然我没试过),于是根据DeepSeek的提示修改了一下,增加了一个过滤特殊字符的函数,改完又放到博客上,最终的代码就是:[rss-feed-preview.js](/assets/js/rss-feed-preview.js)。   
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# 感想
 | 
					# 感想
 | 
				
			||||||
  让AI全自动写代码感觉还挺方便,有种当产品经理的感觉了🤣,像这种AI就是Agent吧,这也算是我头一次使用Agent了,感觉用起来还挺不错的。不过从这次尝试来看确实AI也有一定的局限性,像是直接写出来的代码可能存在一些安全性问题,除非单独让AI检查,不然很有可能会写出功能正常但是存在漏洞的代码,所以还是得人看着点,AI搞出事故可是**不负责**的啊😇~   
 | 
					  让AI全自动写代码感觉还挺方便,有种当产品经理的感觉了🤣,像这种AI就是Agent吧,这也算是我头一次使用Agent了,感觉用起来还挺不错的。不过从这次尝试来看确实AI也有一定的局限性,像是直接写出来的代码可能存在一些安全性问题,除非单独让AI检查,不然很有可能会写出功能正常但是存在漏洞的代码,所以还是得人看着点,AI搞出事故可是**不负责**的啊😇~   
 | 
				
			||||||
							
								
								
									
										2
									
								
								aes.html
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								aes.html
									
									
									
									
									
								
							@ -2,7 +2,7 @@
 | 
				
			|||||||
 <head> 
 | 
					 <head> 
 | 
				
			||||||
  <title>AES加解密</title>
 | 
					  <title>AES加解密</title>
 | 
				
			||||||
  <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> 
 | 
					  <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> 
 | 
				
			||||||
  <script src="js/aes.js"></script>
 | 
					  <script src="/assets/js/aes.js"></script>
 | 
				
			||||||
  <script>
 | 
					  <script>
 | 
				
			||||||
 function getByteLen(val) {
 | 
					 function getByteLen(val) {
 | 
				
			||||||
    var len = 0;
 | 
					    var len = 0;
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										2
									
								
								assets/js/instant.page.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								assets/js/instant.page.js
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,2 @@
 | 
				
			|||||||
 | 
					/*! instant.page v5.2.0 - (C) 2019-2023 Alexandre Dieulot - https://instant.page/license */
 | 
				
			||||||
 | 
					let t,e,n,o,i,a=null,s=65,c=new Set;const r=1111;function d(t){o=performance.now();const e=t.target.closest("a");m(e)&&p(e.href,"high")}function u(t){if(performance.now()-o<r)return;if(!("closest"in t.target))return;const e=t.target.closest("a");m(e)&&(e.addEventListener("mouseout",f,{passive:!0}),i=setTimeout(()=>{p(e.href,"high"),i=void 0},s))}function l(t){const e=t.target.closest("a");m(e)&&p(e.href,"high")}function f(t){t.relatedTarget&&t.target.closest("a")==t.relatedTarget.closest("a")||i&&(clearTimeout(i),i=void 0)}function h(t){if(performance.now()-o<r)return;const e=t.target.closest("a");if(t.which>1||t.metaKey||t.ctrlKey)return;if(!e)return;e.addEventListener("click",function(t){1337!=t.detail&&t.preventDefault()},{capture:!0,passive:!1,once:!0});const n=new MouseEvent("click",{view:window,bubbles:!0,cancelable:!1,detail:1337});e.dispatchEvent(n)}function m(o){if(o&&o.href&&(!n||"instant"in o.dataset)){if(o.origin!=location.origin){if(!(e||"instant"in o.dataset)||!a)return}if(["http:","https:"].includes(o.protocol)&&("http:"!=o.protocol||"https:"!=location.protocol)&&(t||!o.search||"instant"in o.dataset)&&!(o.hash&&o.pathname+o.search==location.pathname+location.search||"noInstant"in o.dataset))return!0}}function p(t,e="auto"){if(c.has(t))return;const n=document.createElement("link");n.rel="prefetch",n.href=t,n.fetchPriority=e,n.as="document",document.head.appendChild(n),c.add(t)}!function(){if(!document.createElement("link").relList.supports("prefetch"))return;const o="instantVaryAccept"in document.body.dataset||"Shopify"in window,i=navigator.userAgent.indexOf("Chrome/");i>-1&&(a=parseInt(navigator.userAgent.substring(i+"Chrome/".length)));if(o&&a&&a<110)return;const c="instantMousedownShortcut"in document.body.dataset;t="instantAllowQueryString"in document.body.dataset,e="instantAllowExternalLinks"in document.body.dataset,n="instantWhitelist"in document.body.dataset;const r={capture:!0,passive:!0};let f=!1,v=!1,g=!1;if("instantIntensity"in document.body.dataset){const t=document.body.dataset.instantIntensity;if(t.startsWith("mousedown"))f=!0,"mousedown-only"==t&&(v=!0);else if(t.startsWith("viewport")){const e=navigator.connection&&navigator.connection.saveData,n=navigator.connection&&navigator.connection.effectiveType&&navigator.connection.effectiveType.includes("2g");e||n||("viewport"==t?document.documentElement.clientWidth*document.documentElement.clientHeight<45e4&&(g=!0):"viewport-all"==t&&(g=!0))}else{const e=parseInt(t);isNaN(e)||(s=e)}}v||document.addEventListener("touchstart",d,r);f?c||document.addEventListener("mousedown",l,r):document.addEventListener("mouseover",u,r);c&&document.addEventListener("mousedown",h,r);if(g){let t=window.requestIdleCallback;t||(t=(t=>{t()})),t(function(){const t=new IntersectionObserver(e=>{e.forEach(e=>{if(e.isIntersecting){const n=e.target;t.unobserve(n),p(n.href)}})});document.querySelectorAll("a").forEach(e=>{m(e)&&t.observe(e)})},{timeout:1500})}}();
 | 
				
			||||||
							
								
								
									
										11
									
								
								blogroll.opml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								blogroll.opml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,11 @@
 | 
				
			|||||||
 | 
					---
 | 
				
			||||||
 | 
					---
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<opml version="2.0">
 | 
				
			||||||
 | 
					    <head>
 | 
				
			||||||
 | 
					        <title>Mayx Blogroll</title>
 | 
				
			||||||
 | 
					    </head>
 | 
				
			||||||
 | 
					    <body>{% for link in site.data.links %}
 | 
				
			||||||
 | 
					        <outline text="{{ item.description | xml_escape }}" title="{{ item.title | xml_escape }}" {% if item.feed_url %}xmlUrl="{{ item.feed_url }}"{% endif %} htmlUrl="{{ item.link }}" />{% endfor %}
 | 
				
			||||||
 | 
					    </body>
 | 
				
			||||||
 | 
					</opml>
 | 
				
			||||||
							
								
								
									
										12
									
								
								jump.html
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								jump.html
									
									
									
									
									
								
							@ -1 +1,11 @@
 | 
				
			|||||||
<script>location.href="/";</script>
 | 
					<!DOCTYPE html>
 | 
				
			||||||
 | 
					<html lang="en-US">
 | 
				
			||||||
 | 
					  <meta charset="utf-8">
 | 
				
			||||||
 | 
					  <title>Redirecting…</title>
 | 
				
			||||||
 | 
					  <link rel="canonical" href="/">
 | 
				
			||||||
 | 
					  <script>location="/"</script>
 | 
				
			||||||
 | 
					  <meta http-equiv="refresh" content="0; url=/">
 | 
				
			||||||
 | 
					  <meta name="robots" content="noindex">
 | 
				
			||||||
 | 
					  <h1>Redirecting…</h1>
 | 
				
			||||||
 | 
					  <a href="/">Click here if you are not redirected.</a>
 | 
				
			||||||
 | 
					</html>
 | 
				
			||||||
							
								
								
									
										6
									
								
								links.md
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								links.md
									
									
									
									
									
								
							@ -8,9 +8,11 @@ tags: [links]
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
| Link | Description |
 | 
					| Link | Description |
 | 
				
			||||||
| - | - |
 | 
					| - | - |
 | 
				
			||||||
{% for item in site.data.links %}| <a href="{{ item.link }}" target="_blank" rel="noopener" data-feed="{{ item.feed_url }}">{{ item.title }}</a> | {{ item.description }} |
 | 
					{% for item in site.data.links %}| <a href="{{ item.link }}" target="_blank" rel="noopener" {% if item.feed_url %}data-feed="{{ item.feed_url }}"{% endif %}>{{ item.title }}</a> | {{ item.description }} |
 | 
				
			||||||
{% endfor %}
 | 
					{% endfor %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[订阅链接](/blogroll.opml)   
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Links申请
 | 
					## Links申请
 | 
				
			||||||
请在下面留言或者直接[修改Links](https://github.com/Mabbs/mabbs.github.io/edit/master/_data/links.csv)并发起PR   
 | 
					请在下面留言或者直接[修改Links](https://github.com/Mabbs/mabbs.github.io/edit/master/_data/links.csv)并发起PR   
 | 
				
			||||||
请在申请之前加上本站友链   
 | 
					请在申请之前加上本站友链   
 | 
				
			||||||
@ -27,4 +29,4 @@ tags: [links]
 | 
				
			|||||||
头像:<https://avatars0.githubusercontent.com/u/17966333>   
 | 
					头像:<https://avatars0.githubusercontent.com/u/17966333>   
 | 
				
			||||||
Logo:<https://mabbs.github.io/favicon.ico>
 | 
					Logo:<https://mabbs.github.io/favicon.ico>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<script src="/js/rss-feed-preview.js"></script>
 | 
					<script src="/assets/js/rss-feed-preview.js"></script>
 | 
				
			||||||
@ -6,7 +6,7 @@ title: 搜索
 | 
				
			|||||||
<h1>搜索</h1>
 | 
					<h1>搜索</h1>
 | 
				
			||||||
<p>Keyword: <input type="text" id="search-input" placeholder="Search blog posts.."> <img src="/images/loading.svg" id="search-loading" style="width:22px;vertical-align: bottom"></p>
 | 
					<p>Keyword: <input type="text" id="search-input" placeholder="Search blog posts.."> <img src="/images/loading.svg" id="search-loading" style="width:22px;vertical-align: bottom"></p>
 | 
				
			||||||
<ul id="results-container"></ul>
 | 
					<ul id="results-container"></ul>
 | 
				
			||||||
<script src="/js/simple-jekyll-search.min.js"></script>
 | 
					<script src="/assets/js/simple-jekyll-search.min.js"></script>
 | 
				
			||||||
<script>
 | 
					<script>
 | 
				
			||||||
const urlParams = new URLSearchParams(window.location.search);
 | 
					const urlParams = new URLSearchParams(window.location.search);
 | 
				
			||||||
const mykeyword = urlParams.get('keyword')?.trim();
 | 
					const mykeyword = urlParams.get('keyword')?.trim();
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user