自己写了个抓取网页图片的脚本(phantomjs和shell)

最近自己写程序的时候经常素材不够用,想去网上扒现成的图片,扒很多的图片,这种重复劳动让我又想偷懒看能不能用程序实现。
找到了比较适合我用的两个工具—— phantomjsshell
phantomjs http://phantomjs.org/ 支持模拟浏览器打开网页,执行脚本用js就可以写,适合前端用。有时候碰到那些不实时渲染img源地址的,还可以在浏览器开发者工具console里跑一下,复用度高。
shell 主要是觉得用wget做下载系统消耗可能少一点,然后用惯了mac偶尔写写脚本也还顺手。想的是用phantomjs拿到图片地址后,存到一个文件里,脚本逐行读然后wget下载就行了,很方便。

ruby on rails使用HTTP认证token实现用户登录验证和会话保持

增加认证(Authentication)

认证的过程是这样的: 用户把用户名和密码通过 HTTP POST 请求发送到我们的 API (在这里我们使用 sessions 端点来处理这个请求), 如果用户名和密码匹配,我们会把 token 发送给用户。 这个 token 就是用来证明用户身份的凭证。然后在以后的每个请求中,我们都通过这个 token 来查找用户,如果没有找到用户则返回 401 错误。

Ruby on rails 自动部署工具 Mina 配置

这两天正在学习 ruby on rails 的项目部署,手里有台国外的vps搭个人网站,系统是 centos7,于是去网上查了一些资料怎么做项目部署。大多文章都推荐使用 Nginx + passenger + mina 的方式。
Mina是一个自动部署的脚本,有点像平常项目上线的一键上线的操作,基于git将本地开发好的项目发布到线上,自动备份不同发布版本,自动将当前版本指向最新版本,对于上线回滚挺有用的。废话不多说,网上相关的文章能查到很多资料,我照着网上提供的 mina 脚本进行部署,结果出现各种错误,主要是提示变量名不对之类。
这个时候还是看Mina官方文档最靠谱。

Ruby on rails 配置使用 mysql 数据库

Ruby on rails 项目初始化后数据库默认配置使用 sqlite3 ,想使用 mysql 数据库的话需要修改配置。

(默认本机 Mysql 已安装,本地开发使用Mac OS)

  1. 安装 mysql2 adapter

    1
    sudo gem install mysql2
  2. 修改 Gemfile ,安装依赖

    1
    gem 'mysql2'

在项目目录执行:

1
bundle install

vue-cli build打包后CSS浏览器兼容前缀自动去除的问题

今天做练手项目部署的时候碰到了个奇怪问题,开发环境里显示得好好的CSS prefixer样式,到production环境就消失了。
我开发环境用的是 scss ,刚开始我还以为是 scss 处理器的问题,后来研究了下 build 脚本,发现人家把CSS统一用一个插件给压缩了,然后追查之下发现这个插件用了 postCSSautoprefixer 插件。
这下问题就清楚了,因为 autoprefixer 插件会针对支持的浏览器进行CSS 前缀的删除和追加。

比如:

1
2
3
4
a {
-webkit-border-radius: 5px;
border-radius: 5px;
}

编译成:

1
2
3
a {
border-radius: 5px;
}

autoprefixer 使用了 browserslist 作为依赖。在项目目录中运行:

1
npx browserslist

可以查看当前项目支持的浏览器列表,这时候只要修改当前项目支持的浏览器就可以了。
vue-cli生成的项目默认支持部分移动端浏览器和最新版本的PC端浏览器。

package.json 中修改 browserslist

1
2
3
4
5
6
7
8
"browserslist": [
"> 1%",
"last 2 versions",
"last 10 Chrome versions",
"last 5 Firefox versions",
"Safari >= 6",
"ie > 8"
]

之后再运行 npm run build 这时生成的代码就有 css prefix 了。

在vuejs项目中使用vue-meta管理HTML head信息

用于管理 Vue 2.0 中页面 meta 信息,支持SSR(服务器端渲染)

vue-meta的官方文档在这里
文档中比较详细地说明了在浏览器端和服务器端如何使用 vue-meta 修改页面头部信息,这里我主要介绍下在SPA项目中管理meta info的使用方法。

Step1. 安装:

1
$ npm install vue-meta --save

node操作mysql数据库学习

突然想研究研究怎么用nodejs操作数据库,目前自己机器上刚好装了mysql,这个数据库我也比较熟悉,所以就找了些网上的教程跟着学习一下怎么操作。

首先在项目目录里需要安装 node-mysql 模块:

1
npm install mysql

在mysql里创建一个测试数据库 node_test,然后建个测试用的数据表 mytable

1
2
3
4
5
6
CREATE TABLE `node_test`.`mytable` ( 
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`firstname` VARCHAR( 20 ) NOT NULL ,
`lastname` VARCHAR( 20 ) NOT NULL ,
`message` TEXT NOT NULL
) ENGINE = MYISAM ;

angular2开发及typescript编译时总是报错 Cannot find name 'require'.

用angular2开发项目时运行 ng serve ,控制台里一直有error报错:

1
2
Error in bail mode: [default] /Users/Virola/code/sites/ng2-app/src/app/app.component.ts:5:14 
Cannot find name 'require'.

虽然一直不知道什么原因,但是因为并不影响开发环境的项目效果所以一直没有理会。

但是到了项目发布的时候,运行 ng build ,这时候就不行了,因为会出现上面这个错误,一直无法部署编译成功。

去网上搜了一下相关帖子,发现实际上是 typescript 编译出的问题。