All Posts

Ruby 学习笔记

Class variable class Network def self.get(url, options) @@result = :test_result end end Instance variable class Network def self.get(url, options) @result = :test_result end end Temporary attribute on ApplicationRecord class Tester < ApplicationRecord attr_accessor :name # for read and write end Method nameing def available? end def update! end Class method class User def self.validate! end end class User class << self def validate! end end end def User.

如何在 dva 中使用 sass

安装 sass-loader 和 node-sass 之后,在 webpack.config.js 中 webpackConfig.module.loaders.forEach(function(loader, index) { 之上(其实只要在这个 function 里面都可以),添加以下代码: webpackConfig.module.loaders.push({ test: /\.module\.sass$/, loader: path.join(path.dirname(require.resolve('extract-text-webpack-plugin')), 'loader.js') + '?{"remove":true}!css?sourceMap&modules&localIdentName=[local]___[hash:base64:5]&-autoprefixer!' + 'postcss-loader!'+ 'sass-loader?sourceMap' }); 然后在 webpackConfig.module.loaders.forEach(function(loader, index) { 之下添加以下代码即可: if (typeof loader.test === 'function' && loader.test.toString().indexOf('\\.sass$') > -1) { loader.include = /node_modules/; loader.test = /\.sass$/; } if (loader.test.toString() === '/\\.module\\.sass$/') { loader.exclude = /node_modules/; loader.test = /\.sass$/; }

如何在 angular2-webpack-starter 中使用 font-awesome

如果你跟我一样是用 angular2-webpack-starter 作为 Angular2 的脚手架的话,就可能在整合 font-awesome 时遇到问题。 因为此脚手架的设定是用 raw-loader 来载入 CSS: /* * Raw loader support for *.css files * Returns file content as string * * See: https://github.com/webpack/raw-loader */ { test: /\.css$/, loader: 'raw-loader' }, 而 font-awesome 因为资源文件需要导入的原因就要用到 css-loader 和 style-loader,用 raw-loader 就载入不了图标了。 解决方案 首先安装 css-loader 和 style-loader: cnpm install -D css-loader style-loader 因为 raw-loader 的匹配正则被设置为 \.css$, 所以我们可以把 ? 问号加在行尾来 bypass 此正则,即使用以下代码来载入 font-awesome: require('style-loader!css-loader!font-awesome/css/font-awesome.css?'); 然后图标就可以正常显示了:

Raspbian 的国内源配置

很多国外的源在国内连接的速度十分感人,所以基本上安装好 RPI 后的第一件事情就是寻找 Raspbian 的国内镜像,然后发现阿里云镜像站就有提供。 但是现在 Raspbian 除了系统的源之外还会用到基金会源,也就是 archive.raspberrypi.org,阿里云镜像站并没有提供这个源,幸好还有中科大的镜像站。 所以只要把 /etc/apt/sources.list 的内容修改为如下即可: deb http://mirrors.aliyun.com/raspbian/raspbian/ wheezy main contrib non-free rpi deb-src http://mirrors.aliyun.com/raspbian/raspbian/ wheezy main contrib non-free rpi deb http://mirrors.ustc.edu.cn/archive.raspberrypi.org/debian/ wheezy main

升级 Windows 10 后 Git 因无权限无法 commit

我习惯用 Git 来备份 Windows 上面一些软件的配置文件,这两天刚升上 Windows 10,安装了 Github Desktop 之后却发现无法 commit 了,查看错误日志: 2015-08-30 20:37:35.1597|WARN|thread: 1|StandardUserErrors|Showing user error Failed to create a new commit. GitHub.IO.ProcessException: error: Unable to append to .git/logs/refs/heads/master: Permission denied fatal: cannot update HEAD ref 发现 Git 因为权限问题无法提交,当即到属性 - 安全 - 高级选项里面一看,发现所有者是 S-1-5-21 开头的无法识别的用户,看来升级的时候权限并没有自动处理好。这时点开所有者边上的更改,输入当前我们的 Windows 帐号名,可以只输入一部分,点击检查名称后会自动补全,最后点确定。 然后勾选底部的 使用可从此对象继承的权限项目替换所有子对象的权限项目,再点确定,问题即修复,可以正常 commit 啦。

NodeJS 和 Ghost 的 Dockerfile

虽然在 Docker Hub 看到有标注 OFFICIAL REPOSITORY 的 Dockerfile,但是我还是想自己写一个,因为他们的 Dockerfile 里有一个叫 docker-entrypoint.sh 的文件包含以下内容: if [ ! -e "$GHOST_CONTENT/config.js" ]; then sed -r ' s/127\.0\.0\.1/0.0.0.0/g; s!path.join\(__dirname, (.)/content!path.join(process.env.GHOST_CONTENT, \1!g; ' "$GHOST_SOURCE/config.example.js" > "$GHOST_CONTENT/config.js" fi 这里会把所有 config.js 里的 127.0.0.1 替换为 0.0.0.0 以允许外网访问,却并没有提供数据库的自定义设置。我不想用 SQLite,所以希望能自定义一下 config.js,干脆自己动手。 NodeJS 首先写一个 NodeJS 环境的 Dockerfile,这样下次要用到 NodeJS 我可以直接引用它: FROM ubuntu:latest MAINTAINER Evlos <[email protected]> ADD sources.list /etc/apt/sources.list RUN apt-get update && \ apt-get -y upgrade && \ DEBIAN_FRONTEND=noninteractive apt-get -y install curl && \ curl --silent --location https://deb.

Hello World

以下内容生成自 Lorem Ipsum,用以抒发我复杂的思想感情: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse nulla ante, iaculis et dignissim at, condimentum vitae augue. Donec quis ante vitae orci aliquet aliquam. Nunc ut arcu neque. Fusce non scelerisque augue, at maximus erat. Maecenas quis lorem sed mi ornare molestie. Pellentesque dictum purus cursus dui ornare, nec convallis elit iaculis. Morbi in consectetur orci. Quisque augue massa, convallis vitae ullamcorper non, laoreet at risus.