<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[sunq1982的博客]]></title><description><![CDATA[boke]]></description><link>https://blog.youkuaiyun.com/sunq1982</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; sunq1982]]></copyright><item><title><![CDATA[chatgpt给我的linux通用的解压缩bash函数]]></title><link>https://blog.youkuaiyun.com/sunq1982/article/details/130361240</link><guid>https://blog.youkuaiyun.com/sunq1982/article/details/130361240</guid><author>sunq1982</author><pubDate>Tue, 25 Apr 2023 11:30:05 +0800</pubDate><description><![CDATA[这个函数可以根据后缀名自己判断用什么解压缩方式。]]></description><category></category></item><item><title><![CDATA[用vscode远程登陆服务器编辑文件]]></title><link>https://blog.youkuaiyun.com/sunq1982/article/details/128759117</link><guid>https://blog.youkuaiyun.com/sunq1982/article/details/128759117</guid><author>sunq1982</author><pubDate>Wed, 25 Jan 2023 00:54:56 +0800</pubDate><description><![CDATA[vscode远程登陆服务器编辑文件]]></description><category></category></item><item><title><![CDATA[POST status code: 405 Method Not Allowed, 但是GET 方法可行，折腾两天，问题居然是...]]></title><link>https://blog.youkuaiyun.com/sunq1982/article/details/110532965</link><guid>https://blog.youkuaiyun.com/sunq1982/article/details/110532965</guid><author>sunq1982</author><pubDate>Thu, 03 Dec 2020 16:00:57 +0800</pubDate><description><![CDATA[这是我学习http的详细踩坑经历，只为伯君一笑:
我希望用axios来发起一个POST请求，但是老是报错 status code: 405 Method Not Allowed 。但是奇怪的是GET就可以。
我反复调试各种参数，
是不是url不对，相对路径换成绝对路径?
是不是请求头不对，尝试各种content-type?
我甚至用Jquery 的ajax， 以及原生xhr 都尝试了一遍还是没有用，一样的问题。
既然客户端不对，那是不是服务端有问题？
是不是windows PC 用来做服务端有什么限制?
于]]></description><category></category></item><item><title><![CDATA[学习行为树的心得，以及如何使用BehaviorTree.js]]></title><link>https://blog.youkuaiyun.com/sunq1982/article/details/108222025</link><guid>https://blog.youkuaiyun.com/sunq1982/article/details/108222025</guid><author>sunq1982</author><pubDate>Mon, 31 Aug 2020 14:44:08 +0800</pubDate><description><![CDATA[首先给大家推荐两篇个人认为最好的，讲行为树的文章。
行为树原理
还有Unreal引擎的这篇，应该算是进阶版
行为树进阶
然后自己在github上面找了一个相对比较受欢迎的行为树框架
BehaviorTree.js
README.md 中有两种方法

方法一：一个个建立节点 BehaviorTree.register()
用BehaviorTreeImporter 一次性导入json格式的行为树

第一种方法
举个例子：

...]]></description><category></category></item><item><title><![CDATA[fitflex: CSS布局就是这么简单]]></title><link>https://blog.youkuaiyun.com/sunq1982/article/details/105986966</link><guid>https://blog.youkuaiyun.com/sunq1982/article/details/105986966</guid><author>sunq1982</author><pubDate>Fri, 08 May 2020 09:37:16 +0800</pubDate><description><![CDATA[您是否还在为如何实现DOM元素的垂直居中对齐而挠头呢?别担心,朋友。Fitflex为您提供了一种只需少量Javascript代码和配置就能轻松实现响应式布局的方法。还有一件事，它可以适应各种屏幕尺寸的手机、平板电脑、台式电脑……你对此感到兴奋吗?
github
npm
让我们现在就盘它吧!
UI交互的例子
大致看完文档后，你可以盘下这个例子，挺有意思的，绝对让你对CSS布局有更新的认识。
盘它吧，...]]></description><category></category></item><item><title><![CDATA[Webpack4两种加载第三方模块的方法:ProvidePlugin和 DllPlugin]]></title><link>https://blog.youkuaiyun.com/sunq1982/article/details/105953581</link><guid>https://blog.youkuaiyun.com/sunq1982/article/details/105953581</guid><author>sunq1982</author><pubDate>Wed, 06 May 2020 17:21:00 +0800</pubDate><description><![CDATA[第一种方法
这种方法比较简单。就是用  webpack.ProvidePlugin  这个插件
plugins: [
         new webpack.ProvidePlugin({
             $:'fitflex',
             watchInDepth:'watch-in-depth'
         }),
        }),  
    ],

...]]></description><category></category></item><item><title><![CDATA[怎样设置javascript的私有变量]]></title><link>https://blog.youkuaiyun.com/sunq1982/article/details/87936311</link><guid>https://blog.youkuaiyun.com/sunq1982/article/details/87936311</guid><author>sunq1982</author><pubDate>Tue, 26 Feb 2019 15:40:58 +0800</pubDate><description><![CDATA[众所周知，javascript没有私有变量。
在常规的编程范式里面只有一种约定俗成的方法。用下划线。
比如
function Book(title) {
  this. _title = title;  //用下划线告诉大家这是私有变量。
}
Book.prototype = {
 display: () =&amp;amp;amp;amp;gt;{
 ```
 ｝
 ```
}

但是这需要所有程序员都是道德高尚，听话的人。万...]]></description><category></category></item><item><title><![CDATA[webpack4 optimization.splitChunks的注意点]]></title><link>https://blog.youkuaiyun.com/sunq1982/article/details/81511848</link><guid>https://blog.youkuaiyun.com/sunq1982/article/details/81511848</guid><author>sunq1982</author><pubDate>Wed, 08 Aug 2018 17:12:13 +0800</pubDate><description><![CDATA[写了个chunk，没有办法实现代码分离。 
搞了一个多小时，最后发现官方文档的这句话，吐血了！



webpack will automatically split chunks based on these conditions:

New chunk can be shared OR modules are from the node_modules folder
New chunk wou...]]></description><category></category></item><item><title><![CDATA[webpack4利用import动态加载的一些说明]]></title><link>https://blog.youkuaiyun.com/sunq1982/article/details/80540548</link><guid>https://blog.youkuaiyun.com/sunq1982/article/details/80540548</guid><author>sunq1982</author><pubDate>Fri, 01 Jun 2018 17:16:02 +0800</pubDate><description><![CDATA[最近开始学习webpack4, 有一个新功能，是可以用import做动态加载。 
ES6的import语法告诉我们，模块只能做静态加载。 
所谓静态加载，就是你不能写成如下形式：



let filename  = 'module.js';
import {mod} from './' + filename. 

也不能写成如下形式：



if(condition) {
import {mod...]]></description><category></category></item><item><title><![CDATA[讲拖拽（draggable）的不错的文章 和范例]]></title><link>https://blog.youkuaiyun.com/sunq1982/article/details/80243592</link><guid>https://blog.youkuaiyun.com/sunq1982/article/details/80243592</guid><author>sunq1982</author><pubDate>Tue, 08 May 2018 18:03:16 +0800</pubDate><description><![CDATA[]]></description><category></category></item><item><title><![CDATA[CSS 布局解决方案之延伸篇]]></title><link>https://blog.youkuaiyun.com/sunq1982/article/details/79868590</link><guid>https://blog.youkuaiyun.com/sunq1982/article/details/79868590</guid><author>sunq1982</author><pubDate>Wed, 18 Apr 2018 16:42:13 +0800</pubDate><description><![CDATA[看到了一篇比较好的CSS布局解决方案的文章。 
https://segmentfault.com/a/1190000013565024

然后自己做一点延伸，再把代码敲出来，加深下印象。



水平居中：inline-block + text-align

CSS：



 &amp;lt;style&amp;gt;
        .child1 {
            display: inline-bl...]]></description><category></category></item><item><title><![CDATA[用proxy写一个递归来监听嵌套对象甚至JSON]]></title><link>https://blog.youkuaiyun.com/sunq1982/article/details/79470948</link><guid>https://blog.youkuaiyun.com/sunq1982/article/details/79470948</guid><author>sunq1982</author><pubDate>Wed, 07 Mar 2018 14:41:54 +0800</pubDate><description><![CDATA[之前的这篇文章 
[http://blog.youkuaiyun.com/sunq1982/article/details/79354755]

其实那个监听方式有个大bug，当不停的update 监听对象以后就会导致内存泄漏。因为每次在调用get的时候都会生成一个新的proxy,后来才知道是多傻。

经过我一天时间的思考，用了一个递归的方法去解决嵌套对象的监听问题。

下面是代码：



//传递两个参数，...]]></description><category></category></item><item><title><![CDATA[原型链详解]]></title><link>https://blog.youkuaiyun.com/sunq1982/article/details/79459096</link><guid>https://blog.youkuaiyun.com/sunq1982/article/details/79459096</guid><author>sunq1982</author><pubDate>Tue, 06 Mar 2018 15:32:44 +0800</pubDate><description><![CDATA[js最难理解的就是原型链，之前对原型链的理解一直很模糊，知道做了一些项目以后才渐渐的清晰起来，接下来我就试图来解释一下。首先是为什么需要“原型链”，我的理解就是两个字”共享”。 打个比方如果 A1 instanceof A,  A2 instanceof A1,  那么A1可以用A.prototype上面所有的方法，而A2可以用 A1.prototype, 以及A.prototype上面所有的方法。]]></description><category></category></item><item><title><![CDATA[对于ES6 Proxy 用法的理解以及实例]]></title><link>https://blog.youkuaiyun.com/sunq1982/article/details/79354755</link><guid>https://blog.youkuaiyun.com/sunq1982/article/details/79354755</guid><author>sunq1982</author><pubDate>Fri, 23 Feb 2018 16:53:04 +0800</pubDate><description><![CDATA[学了proxy以后，感觉这是一个很有用的东西。一个最大的功能应该就是能实现对于对象的监听。自己写了一个类，来实现这个功能。下面是代码。class Watch { // 生成一个watch类
    constructor() {
        this.emit = dispatchEvent.bind(document); 
        this.on = addEventListener...]]></description><category></category></item><item><title><![CDATA[阮一峰 自定义元素教程中的一些疏漏]]></title><link>https://blog.youkuaiyun.com/sunq1982/article/details/79004377</link><guid>https://blog.youkuaiyun.com/sunq1982/article/details/79004377</guid><author>sunq1982</author><pubDate>Mon, 08 Jan 2018 16:28:29 +0800</pubDate><description><![CDATA[最近突发奇想，想自己写一些html元素方便以后重复调用，所以参照了阮大神的下面这篇文章，跟着敲了下代码，发现无法运行。
  http://www.ruanyifeng.com/blog/2017/06/custom-elements.html
后来又是搜索了很多资料，发现下面这篇文章是讲得最清楚的，而且其代码可以运行成功
  https://segmentfault.com/a/1190000011]]></description><category></category></item><item><title><![CDATA[理解 Vue.js中的v-for功能]]></title><link>https://blog.youkuaiyun.com/sunq1982/article/details/78771383</link><guid>https://blog.youkuaiyun.com/sunq1982/article/details/78771383</guid><author>sunq1982</author><pubDate>Mon, 11 Dec 2017 12:09:47 +0800</pubDate><description><![CDATA[我们如果用html去写一个表格是很麻烦的一件事情，需要写很多的tr, th, td, 但是如果我们用了vue.js以后一切就变得如此简单。下面是pug形式的html: table#example2(border='1' cellspacing='0')
            tr
                th(v-for='head in heads' :style='{width:tWi]]></description><category></category></item><item><title><![CDATA[node.js+redis+express 实现发布订阅功能]]></title><link>https://blog.youkuaiyun.com/sunq1982/article/details/78490873</link><guid>https://blog.youkuaiyun.com/sunq1982/article/details/78490873</guid><author>sunq1982</author><pubDate>Thu, 09 Nov 2017 16:09:58 +0800</pubDate><description><![CDATA[var redis = require('redis');
var express = require('express');
var app = express();//这里建立了三个redis的客户端，为什么是3个呢？
//一个是发布，一个是订阅，一个是处理正常的req,res
//本来是想用订阅的client来处理的req,res,但是却报错
//后来查了以后才知道，原来如果此客户端订阅就不能]]></description><category></category></item><item><title><![CDATA[在express 模板引擎的路由中加载socket.io]]></title><link>https://blog.youkuaiyun.com/sunq1982/article/details/78332252</link><guid>https://blog.youkuaiyun.com/sunq1982/article/details/78332252</guid><author>sunq1982</author><pubDate>Tue, 24 Oct 2017 17:39:05 +0800</pubDate><description><![CDATA[看了很多socket.io结合express的例子，只是一些单一的demo。很少有提到在express模板引擎中如何加载socket.io，今天琢磨了半个下午，好不容易搞出来了，这里分享给大家。首先我们要知道的是，socket.io是基于http的。 也就是说http之上，有一个app，也有一个io。如果我希望在某个路由中用socket.io，那么就需要把io挂载到router上export出来，然]]></description><category></category></item><item><title><![CDATA[Mongoose中间件入门示例]]></title><link>https://blog.youkuaiyun.com/sunq1982/article/details/78172053</link><guid>https://blog.youkuaiyun.com/sunq1982/article/details/78172053</guid><author>sunq1982</author><pubDate>Sat, 07 Oct 2017 22:06:19 +0800</pubDate><description><![CDATA[Mongoose的中间件功能很强大，可以把复杂的异步程序，诸如各种数据验证的方法，拆分后按照同步顺序执行，这里就举一个简单的中间件用法\\前面的代码都是范式，在基础入门已经提过了
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:28001/test');
var db = mongoose.conne]]></description><category></category></item><item><title><![CDATA[mongoose的基础用法]]></title><link>https://blog.youkuaiyun.com/sunq1982/article/details/78167353</link><guid>https://blog.youkuaiyun.com/sunq1982/article/details/78167353</guid><author>sunq1982</author><pubDate>Fri, 06 Oct 2017 21:53:49 +0800</pubDate><description><![CDATA[下面是根据官网文档quick start的范例敲了一遍代码，然后附加一些解释//首先npm下载mongoose并且保证mongodb已经下载，服务器已经运行
//接下来是获取mongoose模块
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:28001/test');
var db = mongoo]]></description><category></category></item></channel></rss>