diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/2/index.html b/2/index.html new file mode 100644 index 0000000..f2d5a33 --- /dev/null +++ b/2/index.html @@ -0,0 +1 @@ +
${i(30)}
+${i(40)}
+RX 6600 RX 6600 XT RX 6800 RX 6800 XT RX 6900 XT
RX 5500 RX 5500 XT RX 5600 RX 5600 XT RX 5700 RX 5700 XT RX 5700 XT 50周年纪念版 如遇到黑屏,需要boot参数agdpmod=pikera才能正确显示
Radeon VII
Vega 64 Liquid Vega 64 Vega 56 Vega Frontier Edition Radeon Pro WX 9100 Radeon Pro WX 7100 ## Polaris架构10和20系列 从Sierra开始支持 400系列:
RX 480 RX 470D RX 470 RX 460 RX 590 RX 580X RX 580 RX 570X RX 570 RX 560X RX 560 WX 5100 WX 4100 E9550
还有些同Polaris核心的 rx550
R9 Fury X R9 Fury R9 Nano R9 390(需要FakeID) R9 290X / 390X R9 290/390(需提供FakeID) R9 280x / 380x(不一定成功) R9 280/380(需要FakeID) R9 270X / 370X R7 270/370(需提供FakeID) R7 265 R7 260x / 360x R9 260/360(根据型号可能需要FakeID) R9 255 R7 250X R7 250(需提供FakeID) R7 240(需要FakeID)
HD 8740 HD 8760 HD 8770 HD 8850 HD 8870 HD 8890 HD 8950 HD 8970
Dual AMD FirePro D300 Dual AMD FirePro D500 Dual AMD FirePro D700 FirePro W5100(FakeID needed) FirePro W7000 FirePro W9000 HD 7700 HD 7730 HD 7750 HD 7770 HD 7790 HD 7850 HD 7870 HD 7870 XT HD 7950 HD 7970 HD 7990
ChatGPT
是由 OpenAI
开发的一个人工智能聊天机器人程序,于 2022 年 11 月推出,基于 GPT-3.5 架构的大型语言模型并通过强化学习进行训练,在这款软件中用户们可以与 AI 人工智能进行多种的对话工作,目前,有部分地区(例如中国大陆
、香港
)无法使用此项服务
ChatGPT
技术开发商OpenAI
斥巨资买下AI.com
域名,现在访问AI.com直接跳转到ChatGPT官网。 2024年AI.com已经跳转到google Gemini的官网了
国内用户想要注册 ChatGPT,首先需要有一个网络环境,例如美国
;然后,需要一个可以接收短信验证码的手机号码,之后就可以打开 ChatGPT 的网站注册 ,邮件验证,电话号码验证等等。
如果出现如下的界面,则证明你的网络所在地区无法注册访问ChatGPT。
注意:
如果无法搞定上述必要条件的话,可以尝试 搭建一个梯子 x-ui:支持多协议多用户的 xray 面板
1、点击打开 https://chat.openai.com/auth/login 页面中的 Sign up
进行相应的账号注册(注意网络环境不能是香港
,澳门
等地区,不然会提示不能在当前国家服务)。
2、在新的页面可选择注册 ChatGPT
账号的方式,可以使用邮箱(国内邮箱也可以,建议使用国外邮箱),,或者有谷歌账号的邮箱,或者用 Microsoft Account 注册也可以。
使用邮箱注册ChatGPT时,输入邮箱地址,点击Continue
,之后输入密码,进入下一步骤。
使用 Microsoft Account 注册ChatGPT时,可以使用Microsoft账号登录,如果有Github账号的话,可点击登录选项
,然后选择使用Github账号 注册。
使用 Google 账号注册ChatGPT时,输入Google账号地址及密码,然后进入下一步骤。
3、以使用邮箱注册ChatGPT为例,输入邮箱需要在邮箱收到的邮件内点击验证,
4、然后继续在ChatGPT注册页面填入信息
5、填写ChatGPT手机短信验证码
需要使用中国以外的手机号码进行验证,例如美国、印度等,可以在俄罗斯的接码平台sms-activate
来完成,该网站支持中文/英文显示界面,支持支付宝,使用俄罗斯卢布计费。
1、现在就需要用到注册的第三方接码平台了,访问 https://sms-activate.org/。
2、注册完成后需要充值(按照 1 美元兑换 73 卢布),点击右上角**“ 余额充值 ”,使用支付宝充值 1 美元即可(sms-activate.org平台规则发生变化,少于10美元充值,需最低充值2美元<2023.3.22>)**。
3、在平台左侧搜索 OpenAI ,然后在国家那里找到Indonesia(印度尼西亚),点击选择国家后面的加入购物车即可。
4、然后等一会出现如下界面,这里的手机号拷贝出来,输入到上一步中注册OpenAI的界面上,然后点击 Send code按钮,在下图的界面中等待验证码短信发送。
注意:
有效期是20分钟,需要快速操作,若两三分钟没有收到短信验证码,可点击旁边的删除按钮,然后再次选择别的手机号码,未收到验证不扣费。
账号注册完成了,就可以尽情的使用ChatGPT来玩耍了,重新登录ChatGPT官网,然后访问Chat,这时你就可以开始尽情和机器人聊天了。
使用ChatGPT示例,如何写一个吸引人的 标题
以上是为你介绍的国内注册 ChatGPT 的方法,希望对你了解 ChatGPT 有所帮助,如有问题,欢迎联系我们。
全球付 http://www.globalcash.hk/ 在线申请,可充值,微信支付,开卡简单。
爱汇旅之卡 http://www.ihui.com/ 此卡是目前最方便容易获得,并大量获得的实体mastercard实体卡,可以直接联系客服大量拿卡,一次上百张甚至是数百张,该卡支持paypal、amazon、google等网站。
Tap&go 拍住赏 http://tapngo.com.hk/ 可以支持微信,amazon、applepay 国际阿里云 GCE aws paypal等大部分网站,需要认证,买卡可以去香港总部或者某宝,最低100余额 充值可在香港便利店充值或者网上找人代充!
三三金融: https://cards.33finance.com 需要到香港公司进行开卡,也可以找某宝,开出来的卡适用于大部分网站,包括欧贝通/amazon/阿里云/paypal/等等等等,充值也需要到香港便利店或者是到公司充,也可以找人代充。
Tierrapay www.tierrapay.com卡段4665 注册要用欧洲地址,比如英国,需要用pm或者是wmz充值,无需认证即可成功开卡。
通汇香港 https://www.transforex.hk/ 此卡要携带护照和身份证前往香港开通,该公司有礼品卡,固定金额每天限购买3张,经测试,此卡适用于paypal amazon ebay等平台
Uphold www.uphold.com 需要护照和地址证明申请,支持银行 比特币进行充值
Payeer http://www.zhesui.com/payeer/ 目前需要用欧洲国家的资料注册,
Advcash 目前需要用欧洲国家的资料注册
Wirexapp http://www.zhesui.com/wirex-app-visa/ 4665卡段,目前需要用欧洲国家地址注册申请。没认证只能比特币充值。
Payoneer派安盈 附带美国 日本 英国和欧洲银行账户 http://www.payoneer.com/
okpay 需要用护照通过实名认证才能开卡。
Qiwi https://qiwi.com/ 需要俄罗斯电话卡注册成功才能开卡 (俄罗斯卡可以去淘宝买一个)
ecoPayz http://www.zhesui.com/ecopayz-card/ 目前需要认证,该卡支持大部分网站,可以无限移除替换卡片。
浦发E-GO卡(需要有浦发实体卡) http://www.zhesui.com/e-go/ 该卡可以开出银联 mastercard visa AME 四种卡片
Yandexmoney money.yandex.ru 以上虚拟卡渠道基本都是国外电子钱包发行的,类似于国内的支付宝,不同的是除开少数几个支持人民币和国内银行充值的之外,其他基本都需要使用国外银行卡或者是电子钱包、信用卡充值,如果没有的话我们可以通过兑换的方式为该网站充值,具体兑换商可参照电子货币兑换网中国上面所说的兑换网站以及方法:电子货币兑换网中国:http://currencyexchange.net.cn/
VirtualCards(支持支付宝充值) https://VirtualCards.us 50美元起充,注册成功无需充值既可出卡号
payweb http://payweb.com (需要付费、只有实体卡)可以用银联进行充值!
Solid Trust Pay http://SolidTrustPay.com
Skrill(需要注册国外账户) http://www.skrill.com 要注册欧洲国家的资料才有开卡选项。
Neteller(需要注册国外账户) www.neteller.com
v-preca(需要日本ip注册 少数中国卡能够充值) http://vpc.lifecard.co.jp
mun-prepaid(需要日本ip注册) 日元卡或者日本便利店充值 www.mun-prepaid.com
Giftcardmall www.giftcardmall.com 此网站要美国信用卡或者是借记卡进行购买
netspend(需翻墙 国外身份认证) www.Netspend.com
vanilla(实体卡、需要国外身份或者是便利店购买) 也可以找我们进行购买。 www.vanilla.com
通汇香港 https://www.transforex.hk/ 此卡支持amazon googleplay paypal 等网站需要携带护照和身份证到香港总公司进行开卡!用身份证就能通过认证,可以开实体卡和虚拟卡
Entropay 欧贝通 www.Entropay.com 不认证可以开五张卡,4067卡段,该卡可以用三三金融卡进行充值,可以自定义充值金额,认证过的账户可以开出10张卡片,可以自由决定充值的金额。欧贝通充值可以用 tapngo卡和三三金融进行充值,经本人测试是中国用户目前最好使的充值方法,tapngo和三三金融可以自行在香港购买。
payoneer payoneer是目前非常不错的虚拟卡平台,身份证即可申请下来,遗憾的是申请到收到卡需要一个月左右的时间,值得一提的是payoneer更吸引我们的是他有美国银行账户、美元、欧元、日元、英镑银行账户可供我们申请选择,非常值得拥有。
Mmvpaymmvpay 是新加坡的虚拟卡平台可以开出mastercard 虚拟卡,需要新加坡手机号码注册!经过测试,账户不用认证,甚至是不用充值,一个账户直接可以获取5张卡片信息,包含卡号,有效期和卡密信息
paypal mastercard https://www.paypal.com/us/webapps/mpp/paypal-prepaid-mastercard 此卡是paypal美国发行的mastercard,支持大部分网站消费,绑定以及验证,但是需要美国护照、身份和银行卡信息申请,并且是需要真实的
amazon mastercard https://www.amazon.co.jp/ 三井住友カード株式会社-amazon-mastercardゴード/dp/b0092vb6vkAmazon mastercard是amazon日本网站发行的mastercard虚拟卡账户,同样是需要日本身份证护照地址证明才能申请下来,专门针对日亚的mastercard。
Cryptopaycryptopay 是一个数字交易平台同属4665卡段的虚拟卡,不认证可以开出虚拟卡,但是前提是必须用欧洲国家的地址以及资料进行注册!
Capitalistcapitalist 是一个俄罗斯的电子钱包工具,目前不认证一个账户可以开2张mastercard虚拟卡,分别是一张欧元的一张,一张美元的,认证过后可以开通四张卡片,两张实体卡和两张虚拟卡。
Unichangeunichange 是一个电子货币兑换平台,该平台提供欧元和美元两种币种的虚拟卡。Unichange.me如果你没有某些资料,某些材料,那么万能的商人一定可以满足的了你!
PayzaPayza 也是一个电子钱包工具,类似于paypal之类的电子 钱包,这边主要介绍payza发行的mastercard虚拟卡,申请虚拟卡需要身份证和信用卡认证,可以用预付卡能看得到自己姓名的信用卡。
mycard2go mycard2go是一个德国的虚拟卡,发卡行为wire bank ag卡种为visa,注册账户无需身份认证,但是需要进行充值了才能开卡,充值成功后自动开通卡片,卡种为欧元,需要用KLARNA网银或者是当地现金进行充值,也可以进行网银。
Vandle https://app.vandle.jp/ vandle是一家日本的虚拟卡提供平台,它提供mastercard虚拟卡片,需要再日本的便利店进行充值,也可以用日本的信用卡网银进行充值
Chocom http://www.chocom.jp/index.html Chocom也是一家日本的虚拟卡,可以在日本的便利店,或者是日本信用卡以及Chocom电子钱包进行充值。
Docomokouza docomokouza为日本docomo发行的visa虚拟信用卡,甚至是注册无需审查即可申请visa虚拟卡,最短有效期仅10天,还有一种则为3年需要日本的电子货币或者是信用卡对其进行充值。 https://docomokouza.jpmastercard借记卡
Nttsmarttrade nttsmarttrade是一家日本的在线虚拟卡平台,支持中文界面,非常方便,需要用日本信用卡段进行充值,中国和日本以外的mastercard无法进行充值。http://www.nttsmarttrade.co.jp/mastercardnet/cn/
使用插件构建的观影页面有点不那么喜欢,所以我决定自己写一个。
所使用的的项目地址 https://github.com/bigfa/douban-cf-worker
首先根据https://github.com/bigfa/douban-cf-worker 中的步骤创建接口
在博客的根目录下新建一个名为 movies
的文件夹,然后在 movies
文件夹下新建一个名为 index.md
的文件,在文件中写入以下内容:
---
+title: 观影
+date: 2024-09-11 13:00:56
+---
+<link rel="stylesheet" href="/movies/movies.css">
+<div class="masonry" id="movieContainer">
+ <!-- 电影项目将被 JavaScript 动态添加到这里 -->
+</div>
+<script defer src="/movies/movies.js"></script>
+
+
movies.js
文件,在文件中写入以下内容: // 创建电影项目的HTML
+ function createMovieItem(movie) {
+ return `
+ <div class="item">
+ <div class="image-container">
+ <img src="${movie.poster}"
+ alt="${movie.name}"
+ onerror="this.onerror=null; this.src='placeholder.jpg';">
+ </div>
+ <div class="item-content">
+ <div class="item-title">
+ <a href="${movie.link}" target="_blank" rel="noopener noreferrer">${movie.name}</a>
+ </div>
+ <div class="item-info">${movie.card_subtitle}</div>
+
+ <div class="item-score">豆瓣评分: ${movie.douban_score}</div>
+ </div>
+ </div>
+ `;
+ }
+
+ // 从API获取数据并渲染页面
+ async function fetchAndRenderMovies() {
+ try {
+ const response = await fetch('https://db.imsun.org/list');
+ const data = await response.json();
+
+ // 按豆瓣评分排序(降序)
+ data.results.sort((a, b) => b.douban_score - a.douban_score);
+
+ const container = document.getElementById('movieContainer');
+ data.results.forEach(movie => {
+ container.innerHTML += createMovieItem(movie);
+ });
+ } catch (error) {
+ console.error('Error fetching movie data:', error);
+ document.getElementById('movieContainer').innerHTML = '<p>加载电影数据时出错,请稍后再试。</p>';
+ }
+ }
+
+ // 页面加载时获取并渲染电影数据
+ fetchAndRenderMovies();
+
movies
文件夹下新建一个名为 movies.css
的文件,在文件中写入以下内容:
+.masonry {
+ column-count: 4;
+ column-gap: 20px;
+}
+@media (max-width: 1200px) {
+ .masonry {
+ column-count: 3;
+ }
+}
+@media (max-width: 900px) {
+ .masonry {
+ column-count: 2;
+ }
+}
+@media (max-width: 600px) {
+ .masonry {
+ column-count: 1;
+ }
+}
+.item {
+ position: relative;
+ overflow: hidden;
+}
+
+.image-container {
+ position: relative;
+ width: 100%;
+ padding-top: 150%; /* 2:3 宽高比 */
+ overflow: hidden;
+}
+
+.image-container img {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ object-fit: cover;
+ transition: transform 0.3s ease-in-out;
+}
+
+.item-content {
+ position: absolute;
+ font-size: 12px;
+ bottom: 0;
+ left: 0;
+ width: auto;
+ background-color: rgba(0, 0, 0, 0.7);
+ color: white;
+ padding: 10px;
+ transform: translateY(100%);
+ transition: transform 0.3s ease-in-out;
+}
+
+.item:hover .item-content {
+ transform: translateY(0);
+}
+
+.item:hover .image-container img {
+ transform: scale(1.1);
+}
+
+.item-title a {
+ color: white;
+ text-decoration: none;
+ font-size: 20px;
+}
+
+.item-title a:hover {
+ text-decoration: underline;
+}
+
如此即可大功告成了
上文提到
2023.10.23更新以适用于memos v0.16.1版本 把’.resource-wrapper’替换为’.gap-2’
2023.10.17更新memos0.16版本
把’.resource-wrapper’替换为’.memo-wrapper’
隐藏评论数
.text-sm.text-gray-500.ml-1{display:none !important;}
+
// 用 JS 向页面中插入 JS
+function addArtalkJS() {
+ var memosArtalk = document.createElement("script");
+ memosArtalk.src = `https://unpkg.com/artalk/dist/Artalk.js`;
+ var artakPos = document.getElementsByTagName("script")[0];
+ artakPos.parentNode.insertBefore(memosArtalk, artakPos);
+};
+// div
+function startArtalk() {
+ start = setInterval(function(){
+ var artalkDom = document.getElementById('Comments') || '';
+ var memoAt = document.querySelector('.memo-wrapper') || '';
+ var memoLoading = document.querySelector('.action-button-container') || '';
+ var memoLoadingA = document.querySelector('.action-button-container a') || '';
+ if(window.location.href.replace(/^.*\/(m)\/.*$/,'$1') == "m" && memoLoadingA){
+ memoLoading.innerHTML = "评论加载中……"
+ }
+ if(window.location.href.replace(/^.*\/(m)\/.*$/,'$1') == "m" && !artalkDom){
+ addArtalkJS()
+ if(memoAt){
+ clearInterval(start)
+ var cssLink = document.createElement("link");
+ cssLink.rel = "stylesheet";
+ cssLink.href = "https://unpkg.com/artalk/dist/Artalk.css";
+ document.head.appendChild(cssLink);
+ memoAt.insertAdjacentHTML('afterend', '<div id="Comments"></div>');
+ setTimeout(function() {
+ Artalk.init({
+ el: '#Comments',
+ pageKey: location.pathname,
+ pageTitle: document.title,
+ server: 'https://artalk.loliko.cn',
+ site: 'memos',
+ darkMode: 'auto'
+ });
+ Artalk.on('list-loaded', function() {
+ // console.log('评论加载完成');
+ memoLoading.innerHTML = ''
+ startArtalk();
+ });
+ }, 1000);
+ }
+ }
+ //console.log(window.location.href);
+ }, 1000)
+}
+startArtalk();
+
a.time-text:after { content: ' 评论 💬 '; }
+.atk-main-editor { margin-top: 20px; }
+
+
代码来自于@林木木
2023.10.23更新脚本以适用于memos v0.16.1
// Memos v0.16.1 单条页面插入 Twikoo 评论
+var twikooENV = 'https://你的.com/'
+function addTwikooJS() {
+ var memosTwikoo = document.createElement("script");
+ memosTwikoo.src = `https://cdn.staticfile.org/twikoo/1.6.22/twikoo.all.min.js`;
+ var tws = document.getElementsByTagName("script")[0];
+ tws.parentNode.insertBefore(memosTwikoo, tws);
+};
+function startTwikoo() {
+ startTW = setInterval(function(){
+ var nowHref = window.location.href;
+ var twikooDom = document.querySelector('#twikoo') || '';
+ if( nowHref.replace(/^.*\/(m)\/.*$/,'$1') == "m"){
+ if(!twikooDom){
+ addTwikooJS()
+ setTimeout(function() {
+ var memoTw = document.querySelector('.gap-2') || '';
+ memoTw.insertAdjacentHTML('afterend', '<div id="mtcomment"></div>');
+ twikoo.init({
+ envId: twikooENV,
+ el: '#mtcomment',
+ path: nowHref.replace(/^.*=?(http.*\/m\/[0-9]+).*$/,'$1'),
+ onCommentLoaded: function () {
+ startTwikoo();
+ }
+ })
+ }, 1500)
+ }else{
+ clearInterval(startTW)
+ }
+ }
+ }, 2000)
+}
+startTwikoo();
+
2023.10.17更新脚本
适用于0.16版本
//Memos v0.16 添加 Twikoo 评论 v2023.10.06
+var twikooENV = '' //你的 https://xxxx/
+function addTwikooJS() {
+ var memosTwikoo = document.createElement("script");
+ memosTwikoo.src = `https://cdn.staticfile.org/twikoo/1.6.22/twikoo.all.min.js`;
+ var tws = document.getElementsByTagName("script")[0];
+ tws.parentNode.insertBefore(memosTwikoo, tws);
+};
+function startTwikoo() {
+ startTW = setInterval(function(){ //定时执行 1秒/次
+ var nowHref = window.location.href;
+ var twikooDom = document.querySelector('#twikoo') || '';
+ if( nowHref.replace(/^.*\/(m)\/.*$/,'$1') == "m"){//单条页面
+ if(!twikooDom){
+ //console.log('评论未加载');
+ addTwikooJS() //加载评论 js
+ setTimeout(function() { //延迟 1秒 执行
+ var memoTw = document.querySelector('.resource-wrapper') || '';
+ memoTw.insertAdjacentHTML('afterend', '<div id="mtcomment"></div>');
+ twikoo.init({
+ envId: twikooENV,
+ el: '#mtcomment',
+ path: nowHref.replace(/^.*=?(http.*\/m\/[0-9]+).*$/,'$1'), //v2023.08.09 正则更新
+ onCommentLoaded: function () {
+ startTwikoo()
+ //console.log('再次开启定时执行');
+ }
+ })
+ }, 900)
+ }else{
+ //console.log('清除定时执行');
+ clearInterval(startTW)
+ }
+ }
+ }, 2000)
+}
+startTwikoo();
+
由于官方已经有评论图标所以CSS不再添加图标
2023.9.26 更新.memos升级0.15.1版本后以下无法使用
//添加 twikoo 评论 v2023.06.10
+var twikooENV = 'https://twikoo.jiong.us/'
+function addTwikooJS() {
+ var memosTwikoo = document.createElement("script");
+ memosTwikoo.src = `https://cdn.staticfile.org/twikoo/1.6.16/twikoo.all.min.js`;
+ var tws = document.getElementsByTagName("script")[0];
+ tws.parentNode.insertBefore(memosTwikoo, tws);
+};
+function addComIcon(){
+ var memoTwIcons = document.querySelectorAll('.time-text') || '';
+ if(memoTwIcons){
+ for(var i=0;i < memoTwIcons.length;i++){
+ //if(memoTwIcon[i].hasChildNodes == false){
+ memoTwIcons[i].insertAdjacentHTML('afterbegin', '<div class="twicon"><svg class="icon" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M896 138.667H128c-38.4 0-64 25.6-64 64v544c0 38.4 25.6 64 64 64h128v128c83.2 0 166.4-44.8 256-128h384c38.4 0 64-25.6 64-64v-544c0-38.4-25.6-64-64-64zm0 608H486.4l-19.2 19.2c-51.2 51.2-102.4 83.2-147.2 96v-115.2H128v-544h768v544z" fill="#8a8a8a"/><path d="M256 477.867a64 64 0 1 0 128 0 64 64 0 1 0-128 0zM448 477.867a64 64 0 1 0 128 0 64 64 0 1 0-128 0zM640 477.867a64 64 0 1 0 128 0 64 64 0 1 0-128 0z" fill="#8a8a8a"/></svg></div>');
+ //}
+ }
+ }
+};
+function startTwikoo() {
+ start = setInterval(function(){
+ var twikooDom = document.getElementById('twikoo') || '';
+ var memoTw = document.querySelector('.memo-wrapper') || '';
+ var memoLoading = document.querySelector('.action-button-container') || '';
+ var memoLoadingA = document.querySelector('.action-button-container a') || '';
+ var memoTwIcons = document.querySelectorAll('.time-text .twicon') || '';
+ var nowHref = window.location.href;
+ if( nowHref.replace(/^.*\/(m)\/.*$/,'$1') == "m" && memoLoadingA){
+ memoLoading.innerHTML = "评论加载中……"
+ }
+ if( nowHref.replace(/^.*\/(m)\/.*$/,'$1') == "m" && !twikooDom){
+ addTwikooJS()
+ if(memoTw){
+ clearInterval(start)
+ memoTw.insertAdjacentHTML('afterend', '<div id="mtcomment"></div>');
+ setTimeout(function() {
+ twikoo.init({
+ envId: twikooENV,
+ el: '#mtcomment',
+ path: nowHref.replace(/^(.*\/m\/[0-9]+).*$/,'$1'),
+ onCommentLoaded: function () {
+ //console.log('评论加载完成');
+ memoLoading.innerHTML = ''
+ startTwikoo()
+ }
+ })
+ }, 1000)
+ }
+ }
+ if(nowHref.replace(/^.*\/(explore).*$/,'$1') == "explore" || nowHref.replace(/^.*\/(u).*$/,'$1') == "u"){
+ memoTwIcons.forEach(memoTwIcon => {memoTwIcon.remove();});
+ addComIcon()
+ //console.log('图标添加成功');
+ }
+ //console.log(window.location.href);
+ }, 1000)
+}
+startTwikoo();
+
#twikoo{padding: 1rem;background-color: rgb(63,63,70);margin: 1rem 0;border-radius: .5rem;color: #fff !important;}
+.twicon{position: absolute;right: 1rem;}
+.btns-container.space-x-2{margin-right:1.5rem;}
+.action-button-container{color: #e5e7eb;}
+.action-button-container a{display:none !important;}
+
阿里悟空服务宣布于2016年10月31号正式下线,基于阿里悟空的phpwind移动版,基本上也可以宣告死亡了。 实际上phpwind早在两年前已经停止更新维护,目前的社区论坛程序discuz也处于停止更新维护的状态,伴随了广大草根站长走过十年岁月的两大社区程序也算是完成了自己的使命。 一直对社交网络不死心的阿里也放弃了pw是不是意味着社区论坛就此消亡。或者说,在将来不再会有个人草根站长了?毕竟网站开发维护的成本对于非IT人员来讲实在太过于高昂
上文使用Docker快速部署一个memos的QQ机器人介绍了QQ机器人的部署方法
本次将介绍如何使用QQ机器人接收Artalk的评论通知 实现原理是利用Artalk的Webhook功能
确保QQ机器人的管理页面开启了HTTP服务,且端口为3000
访问IP:3000 出现以下页面则说明QQ机器人已经开启了HTTP服务
{
+ "status": "failed",
+ "retcode": 200,
+ "data": null,
+ "message": "不支持的api ",
+ "wording": "不支持的api ",
+ "echo": null
+}
+
源码:https://github.com/songquanpeng/message-pusher
部署方法:https://github.com/songquanpeng/message-pusher/blob/master/README.md
如果不想部署可直接使用我部署的服务, 地址:https://msg.jkjoy.cn 不保证长期有效
进入消息推送服务的通道
配置页面,添加新的通道
名称 QQ机器人
通道类型 选择 OneBot协议
服务器地址填写 机器人的IP地址:3000
默认推送目标填写接收通知的QQ号码
进入消息推送服务的接口
配置页面,添加新的接口
名称 Artalk评论通知
通道 选择 QQ机器人
提取规则填写
{
+ "id": "comment.id",
+ "name": "comment.nick",
+ "time": "comment.date",
+ "content": "comment.content",
+ "site": "comment.site_name",
+ "url": "comment.page_url"
+}
+
构建规则填写
{
+ "content": " $name 在 $site 上评论啦 \n 内容:$content \n 时间:$time \n 链接:$url?atk_comment=$id"
+}
+
提交之后 点击复制webhook地址
在Artalk的后台管理页面,进入设置
->多元推送
->Webhook
填入之前复制的webhook地址
如此即可在artalk有人评论时QQ机器人通知你的QQ啦!
cpu:魔改qhpw 2.2g hz 主板:华硕b150m-et m2 内存:8g ddr4 2133mhz 硬盘:nvme 256gb ssd 显卡:肥猫家rx560 4gb 网卡:bcm94360cd 电源:长城额定300w 机箱:乔思伯c2黑色
乔思伯这个机箱是个大闷罐,但是显卡功耗低,双烤温度最高75摄氏度
关闭 CSM兼容性 关闭 VT-D 关闭 串口 打开 USB handoff 关闭 CFG LOCK
声卡 网卡 显卡 电源管理 显卡加速
三星
PM961
/ PM981
/ PM981a
/ PM991
会导致 macOS 无法安装或正常运行
三星
983ZET
无法安装 macOS;
2019 年 5 月以前出厂的 三星
970 EVO Plus
可能存在和 PM9x1
系列类似的问题,但可以通过在Windows环境升级官方固件解决 macOS 兼容问题;
镁光
2200S
无法安装或稳定运行 macOS;
爱国者
P2000 256GB
无法通过 10.15、11.x、12.x 任何一个版本的正常安装流程,但不排除个例的可能;
macOS 不支持使用 Intel
傲腾
(Optane Memory)或镁光
3D XPoint
进行加速的笔记本电脑;
英特尔
600P/660P/760P 系列
金士顿
A2000
:配置 S5Z42105
控制器的版本必须搭配NVMeFix.kext 1.0.8
及以上,也可能完全无法安装;
海力士
PC601/PC611/PC711/BC501
:主要见于联想和戴尔笔记本,部分批次正常部分会卡住;
技嘉
GIGABYTE M.2 PCIe SSD
(比如 GP-GSM2NE8512GNTD
)
威刚
剑鱼 ADATA Swordfish 2 TB M.2-2280
海力士
SK Hynix HFS001TD9TNG-L5B0B
海力士
SK Hynix P31
镁光
Micron 2200V MTFDHBA512TCK
-移速的256G
同样使用的镁光颗粒无法安装;
阿斯加特
Asgard AN3+ (STAR1000P)
朗科
Netac NVME SSD 480
西部数据
SN550/570/730/750/850
都能正常安装和运行 macOS;
三星
970EVO/Pro/Plus
(升级固件后)和 980/980 Pro
都能正常安装和运行 macOS,但是此系列存在 TRIM
支持问题;
海盗船
MP400/MP600
系列均能正常安装运行 macOS;
绝大部分常见的 SATA 接口固态盘都能正常安装和运行 macOS;
TRIM
(主要影响特定条件下的写入速度,什么是 TRIM?),但安装运行正常的型号:三星
Samsung 950 Pro
三星
Samsung 960 Evo/Pro
三星
Samsung 970 Evo/Pro
「重要提示」在 macOS 12.0
及以上版本中,OpenCore 无法再修改 APFS 文件系统的 TRIM
超时数值,部分执行 TRIM
相对较慢的固态硬盘(主要是三星的控制器)将没有足够的时间执行 TRIM
操作。 不正确的设置可能导致进入系统缓慢,因此对 macOS TRIM
支持度不佳的硬盘建议将 SetApfsTrimTimeout
值改成 0 以关闭 TRIM
,或 -1 以关闭该功能。此现象在 12.3
及以上的版本中尤其明显。
西部数据
SN5xx/7xx 系列(未完全测试)
英睿达
Crucial P1 1TB NVME(SM2263EN,未完全测试)
金典
KingDian S280(SATA)
浦科特
PLEXTOR M5Pro(SATA)
三星
Samsung 850 PRO(SATA,未完全测试)
三星
Samsung 870 EVO(SATA,未完全测试)
在yum makecache
时,停在Determining fastest mirrors
,一直在判断最快镜像,由于已经指定了yum源,所以不需要些插件,可以用动禁用。
解决方法:
修改/etc/yum/pluginconf.d/fastestmirror.conf
里面的enabled=0
;
修改/etc/yum.conf
里面的plugins=0
问题解决。
Could not retrieve mirrorlist http://mirrors.elrepo.org/mirrors-elrepo.el7 error was 12: Timeout on http://mirrors.elrepo.org/mirrors-elrepo.el7: (28, ‘Connection timed out after 30001 milliseconds’)
镜像列表http://mirrors.elrepo.org/mirrors-elrepo.el7 的地址无法访问
解决方法
更新ELRepo 软件仓库镜像 首先按照官网的安装说明,配置 ELRepo:
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
+
按照你的系统版本,运行:
yum install https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
+
接下来是换源,建议先备份 /etc/yum.repos.d/elrepo.repo
:
cp /etc/yum.repos.d/elrepo.repo /etc/yum.repos.d/elrepo.repo.bak
+
然后编辑/etc/yum.repos.d/elrepo.repo
文件,在 mirrorlist=
后的地址替换为
https://mirrors.tuna.tsinghua.edu.cn/elrepo
+
最后,更新软件包缓存
yum makecache
+
一、时间修改 远程连接到centos 或者直接登录系统
date
+
查看系统时间
date -s
+
修改时间 看下面的例子
date -s 03/04/2013
+
(将系统日期设定为2013年03月04日)
date -s 110:38
+
(将系统时间设定为上午 10:38)
二、时区修改
先查看时区
date -R
+
修改时区: (将Asia/shanghai-上海时区写入当前时区)
cp -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
+
提示是否覆盖,输入Y回车, 然后
date
+
查看时区和时间(CST,中国时区)
支持 离线下载 BT和磁力链接和边下边播 的老司机坐骑 —— Cloud Torrent 声明:本文章仅提供 BT/磁力链接 下载工具的安装方法和说明,任何使用此工具 下载版权侵权文件或导致任何经济损失,皆和本人无任何关系!如果你不同意或有异议,请关闭这个网页!
系统需求 CentOS / Debian / Ubuntu 都可以,因为是 Go语言写的
脚本版本: Ver: 1.0.3
Cloud Torrent特点 支持 BT下载 支持 磁力链接下载 支持 搜索磁力链接 支持 离线下载 支持 边下边播( 格式限制:mp4/wbem/ogg,同时需要手动输入链接) 可视化界面 Web UI
安装步骤
wget -N —no-check-certificate https://www.xuanlove.download/sh/cloudt.sh && chmod +x cloudt.sh && bash cloudt.sh
下载运行完毕脚本,就会直接开始安装 Cloud Torrent ,安装过程中如果出现让你选择Y和N的,都选Y。 安装完成之后,就会提醒你,输入要开放的端口(推荐:默认 8000) 启动后,访问 http://VPS_IP:8000 即可看到Web UI界面了。
脚本使用说明
bash cloudt.sh #可以直接输入这个命令,会自动判断是否需要 安装/启动/停止 Cloud Torrent bash cloudt.sh install #安装 Cloud Torrent bash cloudt.sh start #启动 Cloud Torrent bash cloudt.sh stop #停止 Cloud Torrent bash cloudt.sh tail #查看 Cloud Torrent 日志 bash cloudt.sh uninstall #卸载 Cloud Torrent
Cloud Torrent使用说明 Cloud Torrent可以直接在输入中输入 磁力链接 或者 在线的BT种子(不支持本地上传),点击下面的 蓝色的按钮,就会开始解析资源。
成功解析后,就会显示如下的界面,开始下载。 Files 是查看正在下载的文件列表, Start 是启动下载(默认解析后直接启动下载), Stop 是停止下载。 还有,如果你下载完毕或者点了 Stop 停止下载,那么 Stop 就会变成 Remove 删除任务的按钮了。
Cloud Torrent支持搜索磁力链接,在输入栏中直接输入你要搜索的文件名称,同时点击 绿色的按钮 选择一个搜索源,然后点击 蓝色的Search 按钮就可以搜索了。 注意:Cloud Torrent是国外人写的,所以这些搜索源均是国外的磁力链接网站,搜索到的资源基本没有中文的,所以非特殊需求的这个功能就没什么卵用了。
BT和磁力链接的速度是和, 磁力链接/BT 的用户上传共享量 和 中心服务器的宽带质量,以及你下载 磁力链接/BT 的VPS的宽带有关系。 这种软件在某些程度上比不上 国内的迅雷,毕竟迅雷 用户了很大共享了很多的上传速度,而且还有缓存的中心服务器,所以才会那么快。 如果你是国外的VPS,特别是美国的,一定要注意下载 BT/磁力链接 容易遇到蜜罐,然后被投诉封VPS。建议使用欧洲的罗马尼亚,那里的VPS无视版权,当然拉回本地,速度肯定也不会多快
可能是防火墙规则的问题,使用下面这个命令来开放端口
iptables -I INPUT -p tcp --dport 端口 -j ACCEPT
+
这里使用到的是Python 的库:fonttools
使用最新版 Python
的 pip 命令安装即可在 Shell 中使用:
pip install fonttools
+
常用汉字大约有3500字 我使用的是这个现代汉语常用 3500 字.txt 中文常用字库项目https://github.com/DavidSheh/CommonChineseCharacter
使用以下命令即可对字体文件取子集
fonttools subset "$input_file" --text-file="$text_file" --output-file="$output_file"
+
其中 $input_file
:输入的字体文件。 $text_file
:定义保留字符的纯文本文件路径。 $output_file
:输出的字体文件路径。
取完子集完成之后字体从11M压缩到1.7M左右
安装模块brotli
pip install brotli
+
使用命令
fonttools ttLib.woff2 compress "$input_file" -o "$output_file"
+
其中 $input_file
:输入的字体文件。 $output_file
:输出的字体文件路径。
再次压缩为 woff2 字体格式 大约840kb
此处以Windows安装为例
pwsh -Command "iwr https://fly.io/install.ps1 -useb | iex"
+
flyctl launch
+
按照提示创建一个app 选择N
会跳出网页要求填写 APP name
自己设置 port
为5244 RAM
选择256MB
flyctl volumes create alist_data --region hkg --size 1
+
参照以下内容编辑
app = "alist"
+primary_region = "hkg"
+
+[build]
+ image = "xhofe/alist:latest"
+
+[env]
+ PUID = "0"
+ PGID = "0"
+ UMASK = "022"
+
+[[mounts]]
+ source = "alist_data"
+ destination = "/opt/alist/data"
+
+[http_service]
+ internal_port = 5244
+ force_https = true
+ auto_stop_machines = false
+ auto_start_machines = true
+ min_machines_running = 0
+ processes = ["app"]
+
+[[vm]]
+ cpu_kind = "shared"
+ cpus = 1
+ memory_mb = 256
+
flyctl deploy
+
等待完成,会得到一个网址
进入SSH
flyctl ssh console
+
执行
./alist admin set NEW_PASSWORD
+
NEW_PASSWORD
为自己设置的密码
GoToSocial 是一个十分轻量(轻量到甚至没有用户界面,需要使用第三方程序登录、兼容 Mastodon 应用进行使用)的 ActivityPub 联邦社交网络程序,自建 GoToSocial 可以避免您的信息因为所在实例倒闭、不可抗力等原因化为乌有。
curl -L https://fly.io/install.sh | sh
+
curl -L https://fly.io/install.sh | sh
+
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
+
powershell -Command "iwr https://fly.io/install.ps1 -useb | iex"
+
flyctl auth login
+
+# 若登录失败使用
+# flyctl auth login -i
+# 输入账号密码进行登录
+
YOURAPPNAME
更改为自己希望设置的名称
flyctl launch --name YOURAPPNAME --image=superseriousbusiness/gotosocial:latest --region hkg --no-deploy
+
flyctl volumes create social_data --region hkg --size 1
+
编辑根目录下的 fly.toml
配置文件,参考下方
app = "gotos" ## 自定义名称
+primary_region = "hkg" ##服务器节点,当前为香港
+
+[experimental]
+ vm = true
+
+[build]
+ image = "superseriousbusiness/gotosocial:latest"
+
+[env]
+ GTS_DB_ADDRESS = "/gotosocial/storage/sqlite.db"
+ GTS_DB_TLS_MODE = "enable"
+ GTS_DB_TYPE = "sqlite"
+ GTS_HOST = "GTS的域名"
+ GTS_LETSENCRYPT_ENABLED = "false"
+ GTS_STORAGE_BACKEND = "s3"
+ GTS_STORAGE_S3_BUCKET = "BUCKET名称"
+ GTS_STORAGE_S3_ENDPOINT = "#S3 API"
+ GTS_STORAGE_S3_ACCESS_KEY = "#api-tokens"
+ GTS_STORAGE_S3_SECRET_KEY = "#api-tokens"
+ GTS_STORAGE_S3_PROXY = "true"
+ # 添加时区为UTC+8
+ TZ = "Asia/Chongqing"
+
+[[mounts]]
+ source = "social_data"
+ destination = "/gotosocial/storage"
+
+[http_service]
+ internal_port = 8080
+ force_https = true
+ auto_stop_machines = false
+ auto_start_machines = true
+ min_machines_running = 1
+ processes = ["app"]
+
以上配置中GTS_STORAGE_S3_ENDPOINT
不需要带https:
和最后的/BUCKET名称
flyctl deploy
+
启动成功后会显示一个URL,能成功访问则代表部署成功。
在 fly.toml
文件目录执行
flyctl ssh console
+
/gotosocial/gotosocial admin account create --username YOUR_USERNAME --email YOUR@EMAIL.COM --password 'SOME_VERY_GOOD_PASSWD'
+
YOUR_USERNAME
为用户名 YOUR@EMAIL.COM
为邮箱 SOME_VERY_GOOD_PASSWD
为密码,需设置足够复杂,太简单会提示密码不够安全,需重新设置
/gotosocial/gotosocial admin account promote --username YOUR_USERNAME
+
在 fly.toml
文件目录执行
flyctl sftp get /gotosocial/storage/sqlite.db
+
众所周知Fly.io
是一个免费的SAAS平台 提供三个内存为256MB的服务器,总3G硬盘空间. 为防止滥用,需要绑定信用卡.
安装官方的命令行工具flyctl
flyctl launch
+
根据提示创建一个app
1G的硬盘用来储存评论数据绰绰有余了
flyctl volumes create artalk_data --region hkg --size 1
+
#根据自动生成的FLY.TOML文件修改
+app = "atim"
+primary_region = "hkg"
+
+[build]
+ image = "artalk/artalk-go"
+
+[http_service]
+ internal_port = 23366
+ force_https = true
+ auto_stop_machines = true
+ auto_start_machines = true
+ min_machines_running = 0
+ processes = ["app"]
+
+[[mounts]]
+ source = "artalk_data"
+ destination = "/data"
+
+[experimental]
+ vm = true
+
flyctl ssh console
+
创建一个管理员账号
./artalk admin
+
如需重启则执行
flyctl apps restart
+
centos7.9
git clone https://github.com/yukimochi/Activity-Relay.git -b v2.0.0
+
进入Activity-Relay
目录
cd Activity-Relay
+cp config.yml.example config.yml
+
修改相关配置
vim config.yml
+
ubuntu使用
openssl genrsa -traditional | tee actor.pem
+
centos使用
openssl genrsa -out actor.pem 1024 | tee actor.pem
+
赋予权限600
chmod 600 actor.pem
+
docker-compose build
+docker-compose up -d
+
docker-compose ps
+
docker-compose down
+
docker-compose配置
version: "2.3"
+services:
+ redis:
+ restart: always
+ image: redis:alpine
+ healthcheck:
+ test: ["CMD", "redis-cli", "ping"]
+ volumes:
+ - "./redisdata:/data"
+
+ worker:
+ container_name: worker
+ build: .
+ image: yukimochi/activity-relay
+ working_dir: /var/lib/relay
+ restart: always
+ init: true
+ command: relay worker
+ volumes:
+ - "./actor.pem:/var/lib/relay/actor.pem"
+ - "./config.yml:/var/lib/relay/config.yml"
+ depends_on:
+ - redis
+
+ server:
+ container_name: relay
+ build: .
+ image: yukimochi/activity-relay
+ working_dir: /var/lib/relay
+ restart: always
+ init: true
+ ports:
+ - "8080:8080"
+ command: relay server
+ volumes:
+ - "./actor.pem:/var/lib/relay/actor.pem"
+ - "./config.yml:/var/lib/relay/config.yml"
+ depends_on:
+ - redis
+
+
Nginx设置
upstream relay {
+ server 127.0.0.1:8080;
+ }
+ server {
+ server_name relay.example.com;
+
+ location / {
+ root /var/lib/relay;
+ try_files $uri $uri/index.html =404;
+ }
+
+ location /inbox {
+ rewrite ^/inbox(.*) /$1 break;
+ proxy_pass http://relay/;
+ proxy_pass_request_headers on;
+ proxy_set_header Host $http_host;
+ }
+
+ location /actor {
+ rewrite ^/inbox(.*) /$1 break;
+ proxy_pass http://relay/;
+ proxy_pass_request_headers on;
+ proxy_set_header Host $http_host;
+ }
+
+ }
+
+
很多人在向Astro
转移,咱也跟风一波. 主要是很喜欢fuwari
的这个主题模板,曾经也移植到了Typecho
平台.
Astro
从这个模板生成一个新的存储库或分叉这个存储库。 https://github.com/saicaca/fuwari/generate
要在本地编辑你的博客,克隆你的存储库,运行
pnpm install
+
pnpm add sharp
+
安装依赖项。如果你没有安装pnpm 则执行
npm install-g pnpm
+
编辑配置文件src/config.ts
以自定义你的博客。
创建一个新帖子 运行
pnpm new-post <filename>
+
并在src/content/post/
中进行编辑。
Vercel
、Netlify
、GitHub Pages
等。部署前需要在astro.config.mjs
中编辑站点配置。
由于HEXO
和Astro
的Front-matter
存在差异会导致无法正常生成页面 所以就利用deepseek
写了个python
的脚本用以实现以下功能
wordpress
转过来时留下的.date
为published
.由于hexo的使用过程中有很多种譬如时间戳 譬如 YYYY-MM-DD这一种在HEXO下本来兼容的现在到了Astro
下就都报错了.如果出现无法转换则使用默认日期.避免转换过程中出现中断.category
与 tags
https://gist.github.com/jkjoy/459deed2048a432f8147abde2a334082
脚本 122 行posts_dir = '_posts'
为hexo文章路径.
把转换好的文章 复制进 src/content/post/
下.
可以上传到Vercel
、Netlify
、GitHub Pages
这些都不赘述了.
玩过Hexo
基本都知道怎么操作了
Astro
的Front-matter
太骚了.
几乎每个模板的定义还不一样.
https://github.com/hu3rror/memos-on-fly
<keyId>
和<applicationKey>
Install flyctl 以WINDOWS为例
pwsh -Command "iwr https://fly.io/install.ps1 -useb | iex"
+
其他系统请参照官方
初始化
flyctl launch
+
按照提示选择会生成一个FLY.TOML文件
添加以下
[build]
+ image = "ghcr.io/hu3rror/memos-litestream:latest"
+#如果不需要备份数据库则可以选择官方的docker镜像ghcr.io/usememos/memos:latest
+#使用官方镜像可以删掉env的部分
+[env]
+ # Details see: https://litestream.io/guides/backblaze/
+ LITESTREAM_REPLICA_BUCKET = "B2C桶名称" # change to your litestream bucket name
+ LITESTREAM_REPLICA_ENDPOINT = "s3.us-east-005.backblazeb2.com" # change to your litestream endpoint url
+ LITESTREAM_REPLICA_PATH = "memos_prod.db" # keep the default or change to whatever path you want
+
+[[mounts]]
+ source = "memos_data"
+ destination = "/var/opt/memos"
+
+[http_service]
+ internal_port = 5230
+ force_https = true
+ auto_stop_machines = false
+ auto_start_machines = true
+ min_machines_running = 0
+
flyctl volumes create memos_data --region hkg --size 1
+
将B2存储的密钥添加到fly的密钥存储中,使用官方镜像可以忽略此步骤
flyctl secrets set LITESTREAM_ACCESS_KEY_ID="<keyId>" LITESTREAM_SECRET_ACCESS_KEY="<applicationKey>"
+
flyctl deploy
+
用SSH登录软路由
ssh root@192.168.1.1
+
然后输入
sed -i 's/\tdetect_package/\t# detect_package/g' /koolshare/scripts/ks_tar_install.sh
+
再安装科学上网插件即可
在windows下 右键点击开始菜单,选择终端(管理员)
Reg add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_DWORD /d 1
+
回车搞定!重启试试!
在测试SForum
程序中使用到的部分关于数据库的操作
apt install mariadb-server-10.6
+
mysql_secure_installation
+
mysql -u root -p
+
CREATE DATABASE bbs;
+
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
+
username
:数据库访问的账户;localhost
:数据库的访问方式,外网访问的时候用%替换localhost即可;password
:数据库访问密码,此处输入密码明文;
给用户分配所有的权限,并且通过localhost访问
GRANT ALL ON bbs.* to username@'localhost' IDENTIFIED BY 'password';
+FLUSH privileges;
+
GRANT insert,delete,select,update ON test.* to username@'%' IDENTIFIED BY 'password';
+FLUSH privileges;
+
GRANT ALL ON test.* to username@'%' IDENTIFIED BY 'passowrd' WITH GRANT OPTION;
+FLUSH privileges;
+
CPU QHPW 2.2Ghz 四核心八线程I7es魔改 主板NEC 内存8GB DDR4 2666Mhz 硬盘512GB SSD 无线网卡BCM943224pcieBT拆机 有线网卡INTEL 声卡ALC235
U盘 16G以上 解锁CFG LOCK工具 ami BIOS提取工具 opencore OCAT
在WINDOWS系统下通过工具提取出BIOS. 通过UEFI TOOL
打开提取出的BIOS文件,查找cfg lock
安装之前要解锁cfglock
思路就是用一个U盘格式化成FAT32格式
把oc引导复制在U盘中。
在BIOS中把U盘启动设为第一启动项
这样做得好处是不用修改BIOS直接使用nvme的固态提升读写速度
坏处就是占用一个USB口
笔记本黑苹果的难点就在于注入edid。
我的做法是在clover下安装好macos之后再用hackintool注入EDID,然后再转为opencore引导。
其他都很简单我就不多说了。
附上EFI文件,三码自己改
显卡 声卡 网卡 (已更换DW1820A) 读卡器 USB 触摸板
使用纯净的Ubuntu系统安装,推荐配置双核心四线程.
sudo apt update; sudo apt full-upgrade -y; sudo reboot
+
wget https://raw.githubusercontent.com/joinmisskey/bash-install/main/ubuntu.sh -O ubuntu.sh; sudo bash ubuntu.sh
+
按照提示输入内容
更新 Misskey 的脚本不会升级运行环境。 对于脚本的更新内容,另请参阅 “更新日志”
wget https://raw.githubusercontent.com/joinmisskey/bash-install/main/update.ubuntu.sh -O update.sh
+
sudo bash update.sh
+
cd /opt
+git clone -b master https://github.com/misskey-dev/misskey.git
+cd misskey
+git checkout master
+
cp .config/example.yml .config/default.yml
+cp .config/docker_example.env .config/docker.env
+cp docker-compose.yml.example docker-compose.yml
+
url
设置为实例域名 db:host
设置为db
redis:host
设置为redis
docker compose build
+docker compose run --rm web yarn run init
+
完成之后
docker compose up -d
+
参考以下
map $http_upgrade $connection_upgrade {
+ default upgrade;
+ '' close;
+}
+
+proxy_cache_path /tmp/nginx_cache levels=1:2 keys_zone=cache1:16m max_size=1g inactive=720m use_temp_path=off;
+
+server {
+ listen 80;
+ listen [::]:80;
+ server_name misskey.example.com;
+ client_max_body_size 0;
+
+ location / {
+ proxy_pass http://127.0.0.1:3000;
+ proxy_set_header Host $host;
+ proxy_http_version 1.1;
+ proxy_redirect off;
+
+ proxy_set_header X-Real-IP $remote_addr;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ proxy_set_header X-Forwarded-Proto https;
+
+ proxy_set_header Upgrade $http_upgrade;
+ proxy_set_header Connection $connection_upgrade;
+
+ proxy_cache cache1;
+ proxy_cache_lock on;
+ proxy_cache_use_stale updating;
+ add_header X-Cache $upstream_cache_status;
+ }
+}
+
在我们常用的PC系统上,比如Windows/Mac/Linux等系统平台,V2ray官方并没有发布图形化的桌面客户端。
V2rayN和Qv2ray等一些第三方工具,在V2ray官方内核的基础上,为我们提供了图形化界面支持,使用起来会更加方便。
其中Qv2ray除了支持V2ray的vmess协议外,还可以通过安装插件的方式,额外增加对SS/SSR/Trojan等代理协议的支持,可作为V2ray/SS/SSR/Trojan客户端使用。
Vmess(V2ray) SS(Shadowsocks) SSR(ShadowsocksR) Trojan Trojan-go NaiveProxy Vless
https://github.com/Qv2ray/Qv2ray/releases
老孙在闲鱼淘了一块二手的SSD,本来准备用来安装黑苹果使用。 刚开始安装挺顺利,安装的是OSX 12.13.6,分区格式APFS。 笔记本没有息屏就上班去了。 下班回来一看界面卡死。于是只有强行关机重启。 这下问题来了,识别不了硬盘了。 百度出的原因就是固态硬盘掉盘。是二三线固态厂商的通病。再次建议大家还是买大厂的产品。 有教程说30分钟拯救固态。试了一晚上不行。 看了第二种方法就是去开卡量产。 摸索了一晚上终于成功了!!!
硬盘盒(USB转接卡) 螺丝刀(拆硬盘用) 开卡软件(文章末尾下载) 1 首先把硬盘拆开 拆开硬盘发现主控是慧荣sm 2246XT(其实百度也可以百度到,如果是正品的话……) 图是网上找的,主控型号一般会印在主控芯片上,也就是那个小的。 2 短接JP1,PCB上一般会有标注,如果和我的硬盘一样的话就短接最上面两个(懒 没有作图 网图) 3 接上硬盘盒 打开开卡软件sm2246XT_MPTool_O1224H 4 识别到port1之后 不用短接 5 此时应该在Parameter里面选择一个合适的flash型号,直接开卡就会成功
参考教程链接
http://www.upantool.com/jiaocheng/ssd/2017/10569.html http://bbs.mydigit.cn/read.php?tid=2367269
memos的webhook
功能从v0.18 版本开始加入. webhook
也为memos
带来了不一样的玩法.
前段时间从Typecho
主题icefox
上直接CTRL
+C
了CSS布局,做了一个基于memos
的单页面,类微信朋友圈.
然后使用webhook
自动保存json到本地目录,快速加载. 解决跨域问题
创建一个memos.sh
文件
#!/bin/bash
+
+# API地址
+API_URL="https://memos.ee/api/v1/memos"
+
+# 过滤参数
+FILTER="visibilities == ['PUBLIC'] && creator == 'users/1'"
+PAGE_SIZE="200"
+
+# Authorization 头部
+AUTH_HEADER="Bearer token"
+
+# 目标文件
+OUTPUT_FILE="/config/memos.json"
+
+# 使用 curl 发送 GET 请求并将结果保存到文件
+curl -G "${API_URL}" \
+ --data-urlencode "filter=${FILTER}" \
+ --data-urlencode "pageSize=${PAGE_SIZE}" \
+ -H "Authorization: ${AUTH_HEADER}" \
+ -H "Accept: application/json" \
+ -o "${OUTPUT_FILE}"
+
+# 检查是否成功
+if [ $? -eq 0 ]; then
+ echo "JSON 数据已成功保存到 ${OUTPUT_FILE}"
+else
+ echo "获取 JSON 数据失败"
+fi
+
这个脚本用于获取最近200条的memos
自行更改以上的API_URL
token
以及过滤参数
当然我们也可以 使用
php
获取json 或者使用宝塔webhook
获取json 这样就不需要部署webhook镜像 可以跳过以下部署webhook镜像的部分
可直接复制bash代码到宝塔的webhook中
其中目标位置OUTPUT_FILE
需要使用绝对路径
点击查看密钥
宝塔WebHook使用方法: GET/POST: https://ip:18888/hook?access_key=9EkgLRL4NbZOC7TSfiIyCE3rUQo3yEYfu7XPW6BX3Qjuobwt¶m=aaa
把以上链接填入memos的webhook中
<?php
+$url = 'https://memos.ee/api/v1/memos'; //api url
+$filter = "visibilities == ['PUBLIC'] && creator == 'users/1'"; //筛选参数visibilities == ['PUBLIC']公开,creator == 'users/1' 用户UID为1
+$pageSize = "200"; //memos数量
+$authHeader = "Bearer token"; //token
+
+$ch = curl_init();
+
+curl_setopt($ch, CURLOPT_URL, $url);
+curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
+curl_setopt($ch, CURLOPT_HTTPHEADER, array(
+ 'Content-Type: application/json',
+ 'Authorization: ' . $authHeader,
+ 'filter: ' . $filter,
+ 'pageSize: ' . $pageSize
+));
+
+$response = curl_exec($ch);
+
+curl_close($ch);
+
+$data = json_decode($response, true);
+
+if (json_last_error() === JSON_ERROR_NONE) {
+ file_put_contents('memos.json', json_encode($data, JSON_PRETTY_PRINT)); //保存为memos.json
+} else {
+ echo 'The response is not a valid JSON string.';
+}
+?>
+
把以上保存为memos.php,放在可执行的网站目录中
访问地址即可在同级目录下生成memos.json的文件
此处使用一个webhook
的DOCKER镜像
此Docker镜像是我根据官方dockerfile增加了中文支持编译而成. 推荐使用docker-compose部署 编辑docker-compose.yaml
内容为
services:
+ webhook:
+ image: jkjoy/webhook
+ container_name: webhook
+ command: -verbose -hooks=hooks.yml -hotreload
+ environment:
+ - TZ=Asia/Chongqing #中国时区
+ - LANG=C.UTF-8 #中文支持
+ volumes:
+ - ./:/config:rw
+ ports:
+ - 9000:9000
+ restart: always
+
创建hooks.yml
文件并编辑内容为
- id: memos
+ execute-command: "/config/memos.sh"
+ command-working-directory: "/"
+
然后运行
docker compose up -d
+
即可
hooks.yaml为webhook的配置文件
其中的execute-command为容器中的可执行脚本目录 webhook的访问地址格式为 服务器 ip:端口/hooks/id
访问http://127.0.0.1:9000/hooks/memos 即可触发执行bash /config/memos.sh
在memos的webhook设置中填入http://127.0.0.1:9000/hooks/memos
的webhook地址, 即可
创建一个名为 api.domain.com
的网站 在网站的根目录下创建 docker-compose.yaml
hooks.yaml
memos.sh
的文件 运行
docker compose up -d
+
创建一个反向代理 使 127.0.0.1:9000 代理到 api.domain.com 的 /webhook/ 目录 访问api.domain.com/webhook/hooks/memos 此时会在网站根目录下生成memos.json
访问api.domain.com/memos.json 此时在memos的webhook地址中填入api.domain.com/webhook/hooks/memos
实现在memos更新时自动更新memos.json文件
想把xiuno
bbs数据转换成SForum
,由于最新版本的SForum
没有转换工具支持 于是采用Sforum
v2.2.2测试
sforum v2.2.2
xiuno2sforum v2.2.2
需要使用 PPA 源安装:
sudo apt install software-properties-common -y
+sudo add-apt-repository ppa:ondrej/php
+sudo apt-get update
+
apt install php8.0
+
apt install -y php8.0-dev
+
apt install php8.0-curl php8.0-xml php8.0-gd php8.0-mbstring php8.0-redis php8.0-swoole php8.0-bcmath php-intl -y
+
php -v
+
查看拓展
php -m
+
update-alternatives --config php
+
切换到
update-alternatives --set php /usr/bin/php8.0
+
上传压缩包提示500错误,打开日志发现是缺少组件
./configure --with-php-config=/www/server/php/73/bin/php-config
+
ZipArchive
cd ~
+wget http://pecl.php.net/get/zip
+tar -zxvf zip
+cd zip-x.x.x
+phpize
+./configure
+make
+make install
+
类似
Installing shared extensions: /www/server/php/8/lib/php/extensions/no-debug-non-zts-20180731/
+
extension=/www/server/php/8/lib/php/extensions/no-debug-non-zts-20180731/zip.so
+
或 在php.ini
中添加
extension=zip.so
+
checking for libzip... not found
libzip
wget https://libzip.org/download/libzip-1.3.2.tar.gz
+tar xvf libzip-1.3.2.tar.gz
+cd libzip-1.3.2
+./configure
+make
+make install
+export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig/"
+
所以使用cpmposer安装
composer require catfan/Medoo
+
导入sql备份文件
进入数据库
mysql -uroot -p
+
使用数据库bbs
use bbs
+
导入sql路径
source /root/bbs.sql;
+
apt install redis-server
+
apt install nginx
+
apt install git zip unzip
+curl -sS https://getcomposer.org/installer | php
+mv composer.phar /usr/local/bin/composer
+chmod +x /usr/local/bin/composer
+
composer create-project zhuchunshu/sforum=v2.2.2 sforum
+
进入安装目录,
cd sforum
+
按照提示,连续执行命令即可完成安装(启动服务也是此命令):
php CodeFec CodeFec
+
vim /etc/ssh/sshd_config
+
按i编辑插入 找到 UseDNS
去掉前面的#号 改为 no
GSSAPIAuthentication
改为 no
然后:wq
保存退出
systemctl restart sshd
+
重启
以root
账号登陆 用ip addr
命令查看网络参数。 打开eth0
网卡的配置文件
vi /etc/sysconfig/network-scripts/ifcfg-eth0
+
把NOBOOT
参数no
,修改为yes
重启网络或者重启服务器都可
基于Typecho插件CommentsByQQ修改 一直想让qq来通知评论消息。毕竟邮箱之类的还是不太方便。 原作者的插件QQ机器人已经挂了。所以我自己搭建了一个基于go-http的QQ机器人 由于本人也是菜鸟,没有后续
添加qq机器人153985848为好友 在后台设置中填写接收消息的qq号即可
Pleroma 是一个去中心化的社区程序,其基于 ActivityPub 协议。 而 ActivityPub 包括 Mastodon(Pawoo 等)、Misskey(misskey.io 等)、Pleroma 等等。 在这些开源产品中,Pleroma 实机上部署环境步骤复杂繁琐。 但它是对服务器性能要求最低的微博客工具,它的配置要求多低呢? 现在 docker 的出现大大简化了部署的方式,只需要简单三步即可轻松搭建实例。
本文将介绍如何使用 docker 构建 Pleroma 实例。 以宝塔面板为例
在应用商店中查找docker并安装
git clone https://git.pleroma.social/pleroma/pleroma-docker-compose.git
+cd pleroma-docker-compose
+
接下来所有操作(除 nginx 配置)如果没有加以说明都在这个目录下进行。
打开./enviroments/pleroma/pleroma.env
,修改其中的配置:
DB_USER=pleroma # 数据库用户名
+DB_PASS=pleroma # 数据库密码
+DB_HOST=pleroma-db # 数据库地址
+DB_NAME=pleroma # 数据库名
+INSTANCE_NAME=Pleroma # 实例名
+ADMIN_EMAIL=admin@ops.pleroma.social # 管理员邮箱
+NOTIFY_EMAIL=pleroma+admin@ops.pleroma.social # 通知邮箱
+DOMAIN=s.pwq.app # 实例域名
+PORT=4000 # 实例运行端口
+
只需要修改域名和邮箱即可 打开./volumes/pleroma/config.exs
在下面添加
import Config
+config :pleroma, configurable_from_database: true
+
随后运行
docker-compose up -d
+
启动容器。
#PROXY-START/
+
+location ^~ /
+{
+ # 4000 是你的实例容器运行端口,如果你修改过,记得改成你的端口。
+ proxy_pass http://127.0.0.1:4000;
+ proxy_set_header Host $host;
+ proxy_set_header X-Real-IP $remote_addr;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ proxy_set_header REMOTE-HOST $remote_addr;
+ proxy_set_header Upgrade $http_upgrade;
+ proxy_set_header Connection $connection_upgrade;
+ # proxy_hide_header Upgrade;
+}
+
docker exec -it pleroma ./opt/pleroma/bin/pleroma_ctl user new admin 邮箱 --admin
+
运行后会出现一个链接,复制在浏览器即可重置密码.
/root/pleroma-docker-compose/volumes/pleroma
下的uploads
权限设置为777
当然如果你用S3协议的对象存储则不需要修改 直接在后台设置S3即可.
前言:本文介绍了如何使用Docker快速部署一个QQ机器人,并通过对接Nonebot实现Memos机器人的功能。
此处使用Nonebot2作为框架,自己撸的Nonebot2的插件nonebot_plugin_memos
对接Memos机器人。
我打包编译的镜像jkjoy/qq2memos:latest
如需源码参考 https://www.imsun.org/archives/1668.html
首先创建一个docker-compose.yml文件,内容如下:
services:
+ memos:
+ container_name: memos
+ environment:
+ - MEMOS_API=https://memos.imsun.org/api/v1/memo #Memos的API地址,自行修改
+ image: jkjoy/qq2memos:latest
+ volumes:
+ - "./data:/app/data"
+ restart: always
+ ports:
+ - 8080:8080
+
** 此处的MEMOS_API支持memos v0.15.0以上使用token认证的版本,端口地址根据版本情况自行更改 ** 例如 v0.18.1版本 使用/api/v1/memo
v0.20.0版本以上使用/api/v1/memos
然后运行
docker-compose up -d
+
端口根据情况自行更改,在填写WS地址时,请使用此处设置的端口
此处以docker-compose的方式部署,其他方法自行搜索。
首先创建一个docker-compose.yml文件,内容如下:
services:
+ napcat:
+ environment:
+ - ACCOUNT=10000 #QQ机器人号码,自行修改
+ - WS_ENABLE=true
+ - NAPCAT_UID=0
+ - NAPCAT_GID=0
+ ports:
+ - 3001:3001
+ - 6099:6099
+ - 3000:3000
+ restart: always
+ image: mlikiowa/napcat-docker:latest
+ volumes:
+ - "./QQ:/app/.config/QQ"
+ - "./config:/app/napcat/config"
+ network_mode: host #使用host的原因是为了方便对接宿主机的nonebot框架
+
然后运行docker-compose up -d
即可。
访问WEBUI地址 http://ip:6099/webui/login.html
登录所使用的token
在docker-compose.yaml
所在目录下的config
中的webui.json
中
可选择扫码登录
在设置页面中添加反向 WS 地址,地址为
ws://127.0.0.1:8080/onebot/v11/ws
+
这里的 8080
是 NoneBot 输出的端口号,根据情况自行更改
/onebot/v11/ws
是 NoneBot onebot 适配器默认的路径
点击保存,容器日志提示通讯成功即可.
在聊天对话框输入任何内容会提示绑定
按照提示进行绑定即可
在绑定成功后,在聊天对话框输入任何内容都会转发到Memos 且 默认为公开内容.
暂不支持发送图片等其他内容.
直接使用docker compose部署是不可行的,需要按照步骤进行
mkdir -p /home/mastodon/mastodon
+
cd /home/mastodon/mastodon
+
docker pull ghcr.io/mastodon/mastodon
+
wget https://raw.githubusercontent.com/mastodon/mastodon/main/docker-compose.yml
+
修改docker compose
文件中的版本号
docker run --name postgres14 -v /home/mastodon/mastodon/postgres14:/var/lib/postgresql/data -e POSTGRES_PASSWORD=设置数据库管理员密码 --rm -d postgres:14-alpine
+
进入数据库
docker exec -it postgres14 psql -U postgres
+
创建用户名mastodon的密码
CREATE USER mastodon WITH PASSWORD '数据库密码(最好和数据库管理员密码不一样)' CREATEDB;
+
停止docker
docker stop postgres14
+
在/home/mastodon/mastodon
根文件夹中创建空白.env.production
文件
cd /home/mastodon/mastodon
+touch .env.production
+
运行引导
docker-compose run --rm web bundle exec rake mastodon:setup
+
按照提示进行操作 Below is your configuration, save it to an .env.production file outside Docker:
之后会出现配置文件的数据,复制下来 写入.env.production
中
启动Mastodon
docker-compose down
+docker-compose up -d
+
文件夹赋权
chown 991:991 -R ./public
+chown -R 70:70 ./postgres14
+docker-compose down
+docker-compose up -d
+
创建管理员
docker exec mastodon-web-1 tootctl accounts create USERNAME --email EMAIL --confirmed --role Owner
+
至此完成
Github Actions 可以很方便实现 CI/CD 工作流,类似 Travis 的用法,来帮我们完成一些工作,比如实现自动化测试、打包、部署等操作。当我们运行 Jobs 时,它会创建一个容器 (runner),容器支持:Ubuntu、Windows 和 MacOS 等系统,在容器中我们可以安装软件,利用安装的软件帮我们处理一些数据,然后把处理好的数据推送到某个地方。
1.您已经创建了hexo博客 2.您已经注册了github的账户 3.您已经创建了github项目并上传了hexo源码
在项目根目录下创建.github/workflows/main.yml
1.点击此处申请 Personal access tokens (classic)
2.在Settings
-secrets and variables
-Actions
下设置HEXOBLOG
为上一步得到的Personal access tokens
3.可以把以下内容粘贴进去
run-name: Deploy
+
+on:
+ push:
+ branches:
+ - main
+
+ release:
+ types:
+ - published
+
+ workflow_dispatch:
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v2
+ with:
+ ref: main
+
+ - name: Setup Node
+ uses: actions/setup-node@v1
+ with:
+ node-version: "18.x"
+
+ - name: Install Hexo
+ run: |
+ npm install hexo-cli -g
+
+ - name: Cache Modules
+ uses: actions/cache@v1
+ id: cache-modules
+ with:
+ path: node_modules
+ key: ${{runner.OS}}-${{hashFiles('**/package-lock.json')}}
+
+ - name: npm Install
+ run: |
+ npm install
+
+ - name: Generate
+ run: |
+ hexo clean
+ hexo generate
+ hexo deploy
+
+ - name: Deploy
+ uses: peaceiris/actions-gh-pages@v3
+ with:
+ personal_token: ${{ secrets.hexoblog }}
+ PUBLISH_BRANCH: gh-pages
+ PUBLISH_DIR: ./public
+ commit_message: ${{ github.event.head_commit.message }}
+
在hexo项目main
分支有更新时,会自动更新仓库下分支gh-pages
新建一个页面
hexo new page Memos
+
修改Memos/index.md
内容为
---
+title: Memos
+comments: false
+date: 2023-06-07 14:17:13
+---
+<link href="https://blogcdn.loliko.cn/memos/css/memo.css?0.0.5" rel="stylesheet" />
+<div id="bber"></div>
+<script type="module" src="https://immmmm.com/emaction.js?v=230811"></script>
+<script src="https://fastly.jsdelivr.net/npm/marked/marked.min.js"></script>
+<script src="https://fastly.jsdelivr.net/gh/Tokinx/ViewImage/view-image.min.js"></script>
+<script src="https://fastly.jsdelivr.net/gh/Tokinx/Lately/lately.min.js"></script>
+<script src="https://cdn.staticfile.org/twikoo/1.6.32/twikoo.all.min.js"></script>
+<script type="text/javascript">
+ var bbMemos = {
+ memos : 'https://memos.loliko.cn/',//修改为自己部署 Memos 的网址,末尾有 / 斜杠
+ limit : '20',//默认每次显示 10 条
+ creatorId:'1' ,//早期默认为 101 用户,新安装是 1; https://demo.usememos.com/u/101
+ domId: '',//默认为 bber
+ twiEnv:'https://t.loliko.cn',//启开 twikoo 评论,默认 https://metk.edui.fun/
+ }
+</script>
+<script src="https://blogcdn.loliko.cn/memos/js/memo.js?0.0.2"></script>
+
即可~
代码来源于网络~
vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令。 由于对Unix及Linux系统的任何版本,vi编辑器是完全相同的,因此您可以在其他任何介绍vi的地方进一步了解它。 Vi也是Linux中最基本的文本编辑器,学会它后,您将在Linux的世界里畅行无阻。
1、vi的基本概念
基本上vi可以分为三种状态,分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:
控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode。
只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。
将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号……等。 不过一般我们在使用时把vi简化成两个模式,就是将底行模式(last line mode)也算入命令行模式command mode)。
2、vi的基本操作
a) 进入vi 在系统提示符号输入vi及文件名称后,就进入vi全屏幕编辑画面: $ vi myfile 不过有一点要特别注意,就是您进入vi之后,是处于「命令行模式(command mode)」,您要切换到「插入模式(Insert mode)」才能够输入文字。初次使用vi的人都会想先用上下左右键移动光标,结果电脑一直哔哔叫,把自己气个半死,所以进入vi后,先不要乱动,转换到「插入模式(Insert mode)」再说吧!
b) 切换至插入模式(Insert mode)编辑文件 在「命令行模式(command mode)」下按一下字母「i」就可以进入「插入模式(Insert mode)」,这时候你就可以开始输入文字了。
c) Insert 的切换 您目前处于「插入模式(Insert mode)」,您就只能一直输入文字,如果您发现输错了字!想用光标键往回移动,将该字删除,就要先按一下「ESC」键转到「命令行模式(command mode)」再删除文字。
d) 退出vi及保存文件
在「命令行模式(command mode)」下,按一下「:」冒号键进入「Last line mode」,例如:
w filename (输入 「w filename」将文章以指定的文件名filename保存)
wq (输入「wq」,存盘并退出vi)
q! (输入q!, 不存盘强制退出vi)
3、命令行模式(command mode)功能键
1). 插入模式 按「i」切换进入插入模式「insert mode」,按“i”进入插入模式后是从光标当前位置开始输入文件; 按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字; 按「o」进入插入模式后,是插入新的一行,从行首开始输入文字。
2). 从插入模式切换为命令行模式 按「ESC」键。
3). 移动光标 vi可以直接用键盘上的光标来上下左右移动,但正规的vi是用小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格。 按「ctrl」+「b」:屏幕往“后”移动一页。 按「ctrl」+「f」:屏幕往“前”移动一页。 按「ctrl」+「u」:屏幕往“后”移动半页。 按「ctrl」+「d」:屏幕往“前”移动半页。 按数字「0」:移到文章的开头。 按「G」:移动到文章的最后。 按「$」:移动到光标所在行的“行尾”。 按「^」:移动到光标所在行的“行首” 按「w」:光标跳到下个字的开头 按「e」:光标跳到下个字的字尾 按「b」:光标回到上个字的开头 按「#l」:光标移到该行的第#个位置,如:5l,56l。
4). 删除文字 「x」:每按一次,删除光标所在位置的“后面”一个字符。 「#x」:例如,「6x」表示删除光标所在位置的“后面”6个字符。 「X」:大写的X,每按一次,删除光标所在位置的“前面”一个字符。 「#X」:例如,「20X」表示删除光标所在位置的“前面”20个字符。 「dd」:删除光标所在行。 「#dd」:从光标所在行开始删除#行
5). 复制 「yw」:将光标所在之处到字尾的字符复制到缓冲区中。 「#yw」:复制#个字到缓冲区 「yy」:复制光标所在行到缓冲区。 「#yy」:例如,「6yy」表示拷贝从光标所在的该行“往下数”6行文字。 「p」:将缓冲区内的字符贴到光标所在位置。注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。
6). 替换 「r」:替换光标所在处的字符。 「R」:替换光标所到之处的字符,直到按下「ESC」键为止。
7). 回复上一次操作 「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次“u”可以执行多次回复。
8). 更改 「cw」:更改光标所在处的字到字尾处 「c#w」:例如,「c3w」表示更改3个字 9). 跳至指定的行 「ctrl」+「g」列出光标所在行的行号。 「#G」:例如,「15G」,表示移动光标至文章的第15行行首。
4、Last line mode下命令简介 在使用「last line mode」之前,请记住先按「ESC」键确定您已经处于「command mode」下后,再按「:」冒号即可进入「last line mode」。
A) 列出行号 「set nu」:输入「set nu」后,会在文件中的每一行前面列出行号。
B) 跳到文件中的某一行 「#」:「#」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15,再回车,就会跳到文章的第15行。
C) 查找字符 「/关键字」:先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往后寻找到您要的关键字为止。 「?关键字」:先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往前寻找到您要的关键字为止。
D) 保存文件 「w」:在冒号输入字母「w」就可以将文件保存起来。
E) 离开vi 「q」:按「q」就是退出,如果无法离开vi,可以在「q」后跟一个「!」强制离开vi。 「qw」:一般建议离开时,搭配「w」一起使用,这样在退出的时候还可以保存文件。
5、vi命令列表
1、下表列出命令模式下的一些键的功能: h 左移光标一个字符 l 右移光标一个字符 k 光标上移一行 j 光标下移一行 ^ 光标移动至行首 0 数字“0”,光标移至文章的开头 G 光标移至文章的最后 $ 光标移动至行尾 Ctrl+f 向前翻屏 Ctrl+b 向后翻屏 Ctrl+d 向前翻半屏 Ctrl+u 向后翻半屏 i 在光标位置前插入字符 a 在光标所在位置的后一个字符开始增加 o 插入新的一行,从行首开始输入 ESC 从输入状态退至命令状态 x 删除光标后面的字符 #x 删除光标后的#个字符 X (大写X),删除光标前面的字符 #X 删除光标前面的#个字符 dd 删除光标所在的行 #dd 删除从光标所在行数的#行 yw 复制光标所在位置的一个字 #yw 复制光标所在位置的#个字 yy 复制光标所在位置的一行 #yy 复制从光标所在行数的#行 p 粘贴 u 取消操作 cw 更改光标所在位置的一个字 #cw 更改光标所在位置的#个字
2、下表列出行命令模式下的一些指令 w filename 储存正在编辑的文件为filename wq filename 储存正在编辑的文件为filename,并退出vi q! 放弃所有修改,退出vi set nu 显示行号 /或? 查找,在/后输入要查找的内容 n 与/或?一起使用,如果查找的内容不是想要找的关键字,按n或向后(与/联用)或向前(与?联用)继续查找,直到找到为止。
对于第一次用vi,有几点注意要提醒一下:
1、用vi打开文件后,是处于「命令行模式(command mode)」,您要切换到「插入模式(Insert mode)」才能够输入文字。
切换方法:在「命令行模式(command mode)」下按一下字母「i」就可以进入「插入模式(Insert mode)」,这时候你就可以开始输入文字了。
2、编辑好后,需从插入模式切换为命令行模式才能对文件进行保存,切换方法:按「ESC」键。
3、保存并退出文件:在命令模式下输入