打造一个可国内访问的Blogger(Blogspot)方法 发布于 六月 24, 2022 Blogger,一个干爽、免费的博客发布平台,作为主流的发布,提供免费的托管,免去了Typecho&Wordpress高昂的服务器费用,避免了Hexo&Jekyll静态博客无后台的缺陷,与CSDN、简书相比,可以绑定域名,界面干净,无广告【当然可以自己放自己的广告】。 实际上,当今写博客的软件数不胜数,主要分为一下三类: 服务器部署:典型代表:Wordpress\Typecho 无服务器托管:典型代表:Hexo\Jek… 阅读全文
百度站长平台中接入Blogger博客 发布于 六月 24, 2022 一、百度收录一直不更新 博客从wordpress换到blogger后,原主机空间的内容一直保留着,原文章的网址也没有完全失效。一个多月过去了,百度搜索中的收录情况全是以前的网址,转换成blogger博客后的文章链接几乎没有任何收录。 用了blogger自然顺带用上了谷歌的网站分析,相对百度统计而言,谷歌网站分析功能强大几个数量级的说。各种角度给你彻头彻尾的分析,地域上是全球的范围统计,不仅仅只看国内访问情况。有了这个,便对百度统计等不在意了。 二、百度站长平台接入blogger方法 这几天我在想,百度搜索中收录的为何一直都是以前的网址,怎样将以前基于WP程序生成的网址给消除掉呢?我想到了… 阅读全文
WordPress网站与Google Blogger数据互相导入 发布于 六月 21, 2022 WordPress网站数据导入到Google Blogger 可以将博文和评论从 WordPress 网站导入到Google Blogger。具体操作步骤如下: 1、首先从WordPress站点导出 XML 文件( Tools → Export → Download Export File )。 2、然后登录到Google Blogger。 3、选择您要导入博文和评论的目标博客。 4、在左侧的菜单中,点击 设置 → 其他 。 5、在“ 导入和备份 ”部分,点击 导入内容 。 6、从计算机上选择 .xml 文件。 7、点击 发布 。 注意:导入的博客没有文件大小限制,但Google Blogger会限制一天内导入的博客数量。如果文章数量较… 阅读全文
领导可以是你的朋友吗——纵向关系与横向关系 发布于 六月 20, 2022 1 我曾经在英国访问过一家欧洲公司。在会议室中,双方隔桌而坐,回顾合作,展望未来,聊的颇为开心。 半个小时后,双方的咖啡和茶水已经见底,这时候发生的一幕,显示出了东西方文化的差异。 老外那边,职务最高的VP起身,给还在侃侃而谈的下属们倒上了咖啡,还询问是否加奶加糖。 而中国人这边,职位最高的副总还在应答如流,资历最浅的年轻人起身接过了老外递过来的保温壶,给领导们的茶杯续水。 一边是大领导给大家服务,一边是小兵端茶倒水,看似仅仅隔着一个会议桌,实际距离还很遥远。 我当时感慨:大学时上的课,谈及领导力的时候告诉我们,要做一个“servant leader”(服务型领导者)。工作后,我觉得那是胡说八道,没见哪… 阅读全文
使用GPG Key来证明github每次commit的所有权 发布于 六月 20, 2022 起因 这件事情还要从我校为毕业生收拾行李开始讲起。今年六月末北京疫情复发,这一波直接让我们北京高校毕业生无法返校,个人行李物品必须由学校老师代为整理快递回家。这件事情让同级的同学们非常不满,于是微博知乎节奏飞起。当然这件事情是北京统一的行为,其中不光有我校学生自己不满,其他北京的学校听说有些处理的比我校更要糟糕,所以这件事情我们暂且不做评价。但从事情开始,就有「好事」的同学除了在知乎等平台上进行回答评论、表达意见,还直接在 GitHub 上面直接整理记录时间线。 一个目录,暂时不放具体仓库与地址 我被牵扯进去了? 为什么这个仓库引起了我的注意呢?首先,对于收拾行李这件事情来说,我所在学院做的其实不错… 阅读全文
nodequery删除脚本 发布于 七月 03, 2019 nodequery删除脚本 rm -R /etc/nodequery && (crontab -u nodequery -l | grep -v "/etc/nodequery/nq-agent.sh") | crontab -u nodequery - && userdel nodequery 阅读全文
awk查看与统计nginx访问日志 发布于 六月 08, 2019 切割日志 查找7月16日访问log导出到17.log文件中: cat web_access.log | egrep "17/Jul/2017" | sed -n '/00:00:00/,/23:59:59/p' > /tmp/16.log 查看访问量前10的IP awk '{print $1}' web_access.log | sort | uniq -c | sort -nr | head -n 10 查看访问前10的URL awk '{print $11}' web_access.log | sort | uniq -c | sort -nr | head -n 10 查询访问最频繁的URL awk '{print $7}' web_access.log | sort | uniq -c | sort -n -k 1 -r | more 查询访问最频繁的IP awk '{print $1}' web_access.log | sort | uniq -c | sort -n -k 1 -r | more 根据访问IP统计UV awk '{print $1}' web_access.log | sort | uniq -c | wc -l 统计访问URL统计PV awk '{print $7}' web_access.log | wc -l 根据时间段统计查看日志 cat web_access.log | sed -n '/17\/Jul\/2017:12/,/17\/Jul\/2017:13/p' | more https://blog.csdn.net/zhengholien/article/details/78006887 阅读全文
百度网盘资源搜索网站大全 发布于 六月 02, 2019 https://www.h2ero.com/ [闪电云] https://www.aisouziyuan.com/ [爱搜资源] http://www.pansoso.com/ [盘搜搜] https://www.yunpanjingling.com/ [云盘精灵] https://www.52sopan.com/ [我爱搜盘] https://yunpanem.com/ [云盘恶魔] http://www.xiaobaipan.com/ [小白盘] https://nyaso.com/ [喵搜动漫] https://www.fqsousou.com/ [番茄搜搜] http://www.shiyue.org/ [十月搜索] http://www.sopanba.com/ [搜盘吧] https://www.xiaobd.net/ [小不点搜索] http://www.panduoduo.net/ [盘多多] http://www.slimego.cn/ [史莱姆] http://www.kengso.com/ [坑搜网] http://www.repanso.com [热盘搜] http://www.panmeme.com/ [盘么么] http://wx01.51caichang.com/ [51网盘] http://wx.haogow.com/ [西部维度] http://wx.xingtuhua.com/ [商务中国]... 阅读全文
ELK实时分析之php的laravel项目日志 发布于 八月 13, 2020 最近因公司项目增多,且环境也越来复杂,开发人员找我查看错误日志越来越频繁,心里便念想到ELK,心之所想,念之所达,快来get一项新技能吧 1、系统架构组成 laravel日志:日志源通过filebeat将日志写进redis中间件 logstsh:logstash通过input将redis数据拿来分析,通过其filter模块分析所需要的语句,然后输出到elasticsearch 3.elasticsearch 接收logstash发送过来的数据,并提供了一个分布式多用户能力的全文搜索引擎 Kibana是一个优秀的前端日志展示框架,它可以非常详细的将日志转化为各种图表,为用户提供强大的数据可视化支持。 二、各个服务的ip地址 laravel: 172.18.109.227 redis: 172.18.215.207 elasticsearch: 172.18.215.207 kibana: 172.18.215.207 复制代码 三、laravel日志服务器配置: 配置filebeat yum源文件 [elastic-5.x] name=Elastic repository for 5.x packages baseurl=https://artifacts.elastic.co/packages/5.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type =rpm-md 复制代码 安装filebeat yum install filebeat 复制代码 配置filebeat配置文件 ... #写入源 - input_type: log paths: - /var/www/html/*/storage/logs/laravel-2018-12-29.log ... #输出至redis output.redis: # Array of hosts to connect to. hosts: [ "172.18.215.207:6379" ] password: "***********" db: 0 timeout: 5... 阅读全文
服务器部署GO开发的WebDav秒变私人云 发布于 九月 10, 2021 之前介绍过Nginx模块实现是Webdav 这次介绍一个由Go语言编写的WebDav服务端搭建过程,个人感觉比其他众方式都简单实用,单文件可执行,不需要额外配置。 服务器选用腾讯云香港轻量,回国线路优秀,30M带宽足够使用,部署好Webdav,挂载在手机上不要太爽。 正文: 首先放上本次的主角,github链接如下 https://github.com/hacdias/webdav 它支持各个系统及平台,windows端部署也是大同小异,毕竟只需要一个可执行文件以及一个配置文件即可 首先先建立一个运行目录,并下载服务端 mkdir /home/webdav #尽量不在root目录,以避免权限问题 wget https://github.com/hacdias/webdav/releases/download/v4.1.0/linux-amd64-webdav.tar.gz tar -xzvf linux-amd64-webdav.tar.gz #解压文件 然后新建下配置文件,配置文件支持yaml json toml等配置文件,注意编码一定要为utf-8 使用vi vim nano等文本编辑工具编辑config.yaml粘贴以下内容,并修改相应的内容 # Server related settings address: 0.0.0.0 port: 51234 auth: true tls: false cert: cert.pem key: key.pem # Default user settings (will be merged) scope: . modify: true rules: [] users: - username: user1 password: user1 scope: /home/webdav - username: user2 password: user2 scope: /home/webdav 同时密码支持 bcrypt加密具体看github说明去,这里提供一个在线生成 bcrypt加密的地址https://bcrypt-generator.com/ 好的,现在你可以尝试使用以下命令开启你的服务端了 webda... 阅读全文
MySQL纪录一次left join一对多关系而引起的BUG 发布于 四月 10, 2021 BUG背景 我们有一个 订单表 和 一个 物流表 它们通过 订单ID 进行一对一的关系绑定。但是由于物流表在保存订单信息的时候没有做判断该订单是否已经有物流信息, 这就变成同一个订单id在物流表中存在多条数据,也就变成了本来订单表只有100条纪录,而left join 物流表后,所查询的订单数据远远大于100条。 总结 趁着上面这个问题,自己来复习下 join语句 和 distinct 关键字,同时说明如何解决就算关联是一对多,但我还是想只显示100条订单数据的方法。 一、理论 先再讲下关联表查询的几种表达式,网上找了一张图,通过这张图就能理解所有关联查询的含义。 left join(左联接) 返回包括 左表 中的所有记录和右表中联结字段相等的记录 。 right join(右联接) 返回包括 右表 中的所有记录和左表中联结字段相等的记录。 inner join(等值连接) 只返回两个表中联结字段相等的行。 二、left join一对一和一对多 1、一对一关联表查询 业务逻辑1 有两张表,一张商品表、一张商品订单表回显订单列表的时候需要订单表关联商品表,如下 1)商品表 DROP TABLE IF EXISTS `t_product` ; CREATE TABLE `t_product` ( `product_id` char ( 32 ) NOT NULL DEFAULT '' COMMENT '主键ID' , `pro_name` varchar ( 64 ) DEFAULT NULL COMMENT '商品名称' , `cash` double ( 10 , 2 ) DEFAULT '0.00' COMMENT '商品价格' , `pro_code` varchar ( 32 ) DEFAULT NULL COMMENT '商品编号' , PRIMARY KEY ( `product_id` ) ) ENGINE = InnoDB DEFAULT CHARSET =utf8 COMMENT = '商品表... 阅读全文
领域驱动设计在优惠中心重构中的实践 发布于 一月 24, 2022 前言 正如领域驱动设计之父 Eric Evans 所著一书的书名所述,领域驱动设计(Domain Driven Design)是一种软件核心复杂性应对之道。 在我们解决现实业务问题时,会面对非常复杂的业务逻辑。即使是同一个事物,在多个子业务单元下代表的意思也是不完全一样的。比如「商品」这个词,在商品详情页语境中,是指「商品基本信息」;在下单页语境中,是指「购买项」;而在物流页面语境中,又变成了「被运送的货物」。 DDD 的核心思想就是让正确的领域模型发挥作用。所谓「术业有专攻」,DDD 指导软件开发人员将不同的子业务单元划分为不同的子领域,在各个子领域内部分别对事物进行建模,来应对业务的复杂性。 一、重构优惠中心的背景 我们在实际的开发过程中都遇到过这种情况,最初因为业务逻辑比较单一,为了快速实现功能, 以及对成本、风险等因素的综合考虑,我们会为业务统一创建一个大的模型,各个模块都使用这同一个模型。但随着业务的发展,各子领域的逻辑越来越复杂,对这个大模型的修改就会变成一种灾难,有时明明是要改一个 A 子领域的逻辑,却莫名其妙影响到了 B 或者 C 子领域的线上功能。 优惠中心就是一个例子。优惠中心主要负责马蜂窝各业务线商品的优惠活动管理,以及计算不同用户的优惠结果。「商品管理」和「优惠管理」作为两个不同的业务单元,在初期被设计为共用一个商品模型,由商品模块统一管理。 出现的问题 随着业务的发展,优惠的形式不断推陈出新,业务形态逐渐多样,业务方的需求也越来越个性化,导致后期的优惠中心无论从功能上还是系统上都出现了一些具体的问题: 1. 功能上来说,不够灵活 优惠信息是作为商品信息的一个属性在商品管理模块配置的。比如为了引导用户使用 App 需要设置 A 类型优惠,就通过在商品信息的编辑页面增加一个 A 类型优惠配置项实现;如果某个商品的 A 类型优惠需要在 0:00 分生效,业务同学就必须在电脑前等到 0:00 更新商品信息来上线优惠活动。 另外,如果想要创建针对所有商品都适用的优惠,按照之前的模式,所有的商品都要设置一遍,这几乎是不可接受的。 2. 从系统层面看,不易扩展 优惠信息存储在商品信息中,优惠信息是通过商品管理模块的接口输出的。如果要新增一种优惠类型,商品信息相关的表就要增加字段,商品的表会越来越大;如果要迭代一个优惠的逻辑,就... 阅读全文
微信小程序小总结 发布于 十月 30, 2019 微信小程序使用起来感觉像写h5一样,对于新手估计会有比较多疑惑,如果撇去这些想法应该是很快就能上手的一套开发方案。 但是它自身的限制也比较大,如不提供window对象会导致一些功能实现起来比较麻烦。我这次开发的小程序就遇到了,虽然比较快找到解决办法(可能都是比较标准化的东西),希望之后不会有其他大坑。 需要其实比较简单,就是两页文章列表及文章详情页,刚上手却遇到下面的坑: 无法利用window对象解析xml 不支持HTML标签的使用 怎样兼容Promise和generator异步 刚开始一脸懵逼...后来赶紧去github看看各大牛例子及一些工具就解决了。 解析xml问题 由于比较多的解析插件都是基于 window.DOMParser 处理的,在小程序却无用武之地。找到问题就好解决,我要的是 DOMParser 而不是window找找应该有代替品,然后找到这个 xmldom 引入代替掉 DOMParser 就解决,然后把xml转成json处理了。 评论有问道如何改,这里我已经把这个整合到 这库 了。 解析html问题 现在比较成熟的是 wxParse 这货,的确大部分的html标签均能解析渲染,但是我这边程序录入的富文本内容却掺杂了些奇奇怪怪的标签,解析时还是会出错,内容解析到一半就停了...既然它做不到忽略,咋整?那把那些垃圾都过滤掉吧!!!马上用上 js-xss 这个来处理问题,能控制过滤的标签及标签能拥有的属性,方便得很。 const xss = require ( '../lib/js-xss/xss' ) const WxParse = require ( '../../lib/wxParse/wxParse.js' ) //把style及class添加到白名单。 Object .keys(xss.whiteList).forEach( name => xss.whiteList[name] = xss.whiteList[name].concat([ 'style' , 'class' ])) let content = xss( '<div>HTML文本</div>' , ... 阅读全文
Tailscale 开源版中文部署指南(支持无限设备数、自定义多网段 、自建中继等高级特性) 发布于 六月 15, 2022 目前国家工信部在大力推动三大运营商发展 IPv6,对家用宽带而言,可以使用的 IPv4 公网 IP 会越来越少。有部分地区即使拿到了公网 IPv4 地址,也是个大内网地址,根本不是真正的公网 IP,访问家庭内网的资源将会变得越来越困难。 部分小伙伴可能会选择使用 frp 等针对特定协议和端口的内网穿透方案,但这种方案还是不够酸爽,无法访问家庭内网任意设备的任意端口。更佳的选择还是通过 VPN 来组建大内网。至于该选择哪种 VPN,毫无疑问肯定是 WireGuard,WireGuard 就是 VPN 的未来。 我已经不止一次向大家推荐使用 WireGuard 了,我累了,不想再讲了,你爱 JB 用辣鸡 OpenVPN 之类的就用吧,你开心就好。 WireGuard 相比于传统 VPN 的核心优势是没有 VPN 网关,所有节点之间都可以点对点(P2P)连接,也就是我之前提到的 全互联模式(full mesh) ,效率更高,速度更快,成本更低。 WireGuard 目前最大的痛点就是上层应用的功能不够健全,因为 WireGuard 推崇的是 Unix 的哲学,WireGuard 本身只是一个内核级别的模块,只是一个数据平面,至于上层的更高级的功能(比如秘钥交换机制,UDP 打洞,ACL 等),需要通过用户空间的应用来实现。 所以为了基于 WireGuard 实现更完美的 VPN 工具,现在已经涌现出了很多项目在互相厮杀。笔者前段时间一直在推崇 Netmaker ,它通过可视化界面来配置 WireGuard 的全互联模式,它支持 UDP 打洞、多租户等各种高端功能,几乎适配所有平台,非常强大。然而现实世界是复杂的,无法保证所有的 NAT 都能打洞成功,且 Netmaker 目前还没有 fallback 机制,如果打洞失败,无法 fallback 改成走中继节点。Tailscale 在这一点上比 Netmaker 高明许多,它支持 fallback 机制,可以尽最大努力实现全互联模式,部分节点即使打洞不成功,也能通过中继节点在这个虚拟网络中畅通无阻。 没错,我移情别恋了,从 Netmaker 阵营转向了 Tailscale,是渣男没错了。 Tailscale 是什么 Tailscale 是一种基于 WireGuard 的虚拟组网工具,和 Netmaker... 阅读全文
详解 Kubernetes StatefulSet 实现原理 发布于 五月 28, 2020 在 Kubernetes 的世界中, ReplicaSet 和 Deployment 主要用于处理无状态的服务,无状态服务的需求往往非常简单并且轻量,每一个无状态节点存储的数据在重启之后就会被删除,虽然这种服务虽然常见,但是我们仍然需要有状态的服务来实现一些特殊的需求,StatefulSet 就是 Kubernetes 为了运行有状态服务引入的资源,例如 Zookeeper、Kafka 等。 这篇文章会介绍 Kubernetes 如何在集群中运行有状态服务,同时会分析这些有状态服务 StatefulSet 的同步过程以及实现原理。 概述 StatefulSet 是用于管理有状态应用的工作负载对象,与 ReplicaSet 和 Deployment 这两个对象不同,StatefulSet 不仅能管理 Pod 的对象,还它能够保证这些 Pod 的顺序性和唯一性。 与 Deployment 一样,StatefulSet 也使用规格中声明的 template 模板来创建 Pod 资源,但是这些 Pod 相互之间是不能替换的;除此之外 StatefulSet 会为每个 Pod 设置一个单独的持久标识符,这些用于标识序列的标识符在发生调度时也不会丢失。 apiVersion : apps/v1 kind : StatefulSet metadata : name : web spec : serviceName : "nginx" replicas : 2 selector : matchLabels : app : nginx template : metadata : labels : app : nginx spec : containers : - name : nginx image : k8s.gcr.io/nginx - slim : 0.8 volumeMounts : - name : www mountPath : /usr/share/nginx/html volumeClaimTemplat... 阅读全文