分类‘技术技巧’

使用yarn配置resolutions解决依赖错误

去年3月份,npm圈子发生过这样一件事,一个不过 11 行的工具函数left-pad被作者从npm上撤下,所有直接和间接依赖它的包就这么齐刷刷挂了,包括babel和react-native这样每天安装数万的热门项目。而Azer删除他所有的npm包又是另一个故事:Azer写了一个工具叫kik发布在npm上,这天有个同名的公司律师找上门要求他删掉,Azer不从,这律师就找上npm,npm把包的管理权限转给了这家公司——当然,Azer就怒了,从npm上解放了所有自己发布的包。

事件之后,有人给出了类似问题的解决之道,使用npm的bundledDependencies。不过,很多库作者并不会真的这样用起来,于是,今天又碰到了类似的问题,vue前端界自然是人尽皆知,配套的vue-loader更可谓是必需品,就是在vue-loader里引入的一个库——js-beautify,今天从1.6.14更新到了1.7.0,但是作者似乎写了个bug,于是依赖于node构建的我们,出现了如此异常

Module build failed: Error: Cannot find module './lib/beautify'
//...

官方issue里便出现了如此景象 查看更多...

Jetbrains系IDE同一项目多Git仓库操作

最近项目中涉及同项目下多git仓库的操作,习惯命令行的同事建议写脚本,习惯IDE的我当然是尝试IDE操作咯,稍微模式一番后发现IDE还是没让我失望,下面简单记录下基本操作(以Webstorm为例)。

为了方便演示,建了几个空仓库,demo-root、demo-sub1、demo-sub2、demo-sub3,先拉去demo-root,作为顶层项目:

jetbrains-cvs-demo1

然后拉去第一个子项目放到demo-root下,以demo-sub1为例,依次拉取demo-sub1 查看更多...

使用cPanel主机部署基于composer、laravel的Web应用

因为希望在闲置cPanel主机上部署composer、laravel应用,简单记录一下(并非cPanel使用教程)。

1、登录cPanel,在Domains一栏找到“附加域”,按照常规添加我们要绑定的域名,生成站点目录。
2、SSH登录cPanel主机(ip为主机ip,共享、独享都可以,账户、密码复用cPanel的账户、密码),测试是否有全局安装composer。
3、FTP或者SFTP连接主机,上传必要文件,composer install/update,如果速度过慢,可以参照本地开发时做法,执行composer config -g repo.packagist composer https://packagist.phpcomposer.com,随后继续直至安装完毕。 查看更多...

Windows VPN无法连接、无法删除问题解决小记

家里电脑一直配置有PPTP的VPN连接,最近使用,发现不知什么时候开始不能用了,表现为连接一直进行中,不会出错也不会成功,系统是Win8.1,而且VPN服务器是正常的(因为在其他电脑上一直用着),无奈就想删除连接重建,发现删除不掉。

按照网上的说法,可能是某些服务被禁止运行了,主要有Remote Access Connection Manager(远程访问连接管理器)和Remote Access Auto Connection Manager(远程访问自动连接管理器)

Remote Access Connection Manager服务的启动又要依赖两个服务:SSTPS(secure socket tunneling protocol service)服务、Telephony服务。而Telephony服务常处于启动状态,没有问题。问题是出SSTPS(secure socket tunneling protocol service)服务上,单独启动SSTPS(secure socket tunneling protocol service)服务时会提示:自动停止,直接启动Remote Access Connection Manager服务时又说依赖的服务不能启动。 查看更多...

两行代码绕过基于referrer的防盗链

去年年底,微信公众号对图文消息内的图片做了防盗链设置,但验证发现业务域名下引用微信公众号图文还不受影响,以为做了白名单处理,不料近期发现所有自己网站的页面都不能正常显示图片,而是显示微信的防盗链提示。

由于业务需要,公司产品通过微信公众平台提供的接口创建、维护图文,大概去年8月15号,图文创建接口对非官方图片链接做了过滤,无奈将所有素材上传至微信,与此同时,我们自己也有页面需要显示对应图文信息,面对微信的防盗链屏蔽,想过维护两个图片路径,本地图文显示时替换为本地图片URL,后面感觉这样太影响效率,为了紧急修复图片不能显示的问题,遂通过简单的代码绕过了微信防盗链。

下面是核心代码(PHP) 查看更多...

Virtualbox 安装时发生严重错误[解决]

看到有人发了eclipse che的截图,感觉挺清爽,就打算装上看看,不料安装Virtualbox的时候一直自动回滚,以为是曾经装过Virtualbox卸载不彻底,无意间在网上看到一帖子说是DeviceInstall服务没有开启,打开服务一看,状态果然是已停止,打开后重新安装,顺利成功,这里记录一下,以便有遇到同样问题的童鞋参考。

另外顺便提一句,eclipse che看似不错,不过配套要安装Virtualbox、Git和Docker,略显麻烦,目前还没有玩转,后面有机会分享下试用体验。

网站限制指定地区、来路、时段访问

做网站时,出于某种需要,我们可能需要限制某些地区或者某个时段对网站的访问,下面是一段简单的php脚本,记录、分享下。
查看更多...

基于CSS3 animation实现Marquee效果

最近实现手机端小游戏,看到有同事用到老掉牙的marquee标签,就不说html5已经废弃此标签了,单是性能就已经够呛,于是想换种实现方案,第一想法自然是js实现,当然也是最为灵活的,这里不再赘述。

期间曾看到有相关文章描述overflow实现的Marquee,用法如下:

overflow:-webkit-marquee;

尝试一下并无效果,最后发现30+的chrome版本中,Google已经把这玩意移除了。

另外就是今天的主角——CSS3 animation,依然很简单: 查看更多...

Git push error:dst refspec XXX matches more than one

最近工作中遇到这样的问题,使用的是Git做版本控制,在PUSH代码的时候,出现如下错误:

error: dst refspec XXX matches more than one.
error: failed to push some refs to 'git@xxx.xx:xxx.git'

初步一看,还想,怎么可能,出现两个相同的分支?表示很不解。
查看Git服务器上的分支也只有一个指定名称的分支,最后无意间发现在于服务器上有一个和分支名称相同的tag,安装项目组的习惯,tag一般都是以时间作为名称的,这里怎么会出现这个,好奇中删掉它重试,果然,Git把tag和分支搞在一起了,tag名称不能和分支名称完全相同,不知道这是Git个别版本的bug还是就这样机制。

仅此记录以方便大家。

巧用Fiddler代理调试微信JSSDK

最近开发微信端网页,涉及到使用微信JSSDK提供的分享、照片选择、上传、预览等功能,由于微信官方有安全域名的限制,调试一开始都是通过暴漏在公网的一个测试环境上进行,但是一次次的修改、构建再修改再构建太耽误时间,最后就考虑模拟安全域名,绕过检测。

PC端很方便,直接修改HOST指向微信公众号后台配置的安全域名即可,但是这样也只能使JSSDK通过校验,实际使用中往往会调用手机资源,如分享、上传等。

于是,又找到了我们的前端神器——Fiddler,熟悉前端的都知道,这玩意很强大,具体功能这里不再赘述。我们就说说其代理功能,其实Fiddler默认的拦截形式就是通过代理实现,即所有请求通过127.0.0.1:8888(默认值)中转,而这个地址则是Fiddler处理程序所提供的。 查看更多...