Mongoose Middleware v3.8.8の補足。 特に保存するときのpre hook。
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
// こんなスキーマがあったとして
var schema = new Schema({
foo: String,
class AngularBase | |
@inject = (args) -> | |
@$inject = args | |
#アノテーションに見えなくもない | |
class FooController extends AngularBase | |
@inject '$scope', '$http' | |
constructor: ($scope, $http) -> | |
# ... |
<radio-group name="fruit" ng-model="fruit"> | |
<radio ng-value="1">apple</radio> | |
<radio ng-value="2">banana</radio> | |
</radio-group> |
<div>{{hoge | zerofill:2}}</div> |
# button or input[submit]で使うように | |
angular.module('foo', []).directive 'clickAndDisable', -> | |
link: (scope, element, attr) -> | |
element.on 'click', -> element.attr 'disabled': true |
// アホすぎ | |
function promisify(fn) { | |
return function() { | |
var d = $.Deferred(); | |
try { | |
d.resolve(fn.apply(this, arguments)); | |
} catch (e) { | |
d.reject(e); | |
} |
Mongoose Middleware v3.8.8の補足。 特に保存するときのpre hook。
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
// こんなスキーマがあったとして
var schema = new Schema({
foo: String,
// underscore使う。 | |
// サロゲートペアに関しては考慮していない。 | |
function createNgramList(text, n) { | |
var list = []; | |
for (var i = 0; i <= text.length - n; ++i) { | |
list.push(text.slice(i, i + n)); | |
} | |
return _.uniq(list); | |
} |
function parseLTSVLog(text) { | |
return JSON.parse( | |
'[' + | |
text | |
.trim() | |
.replace(/([^\t\n\r:]+):([^\t\n\r]*)/g, function(all, k, v) { | |
return '"' + k + '":' + (v == +v ? v : '"' + v + '"'); | |
}) | |
.replace(/(.+)/g, '{$1}') | |
.replace(/[\t\n]/g, ',') + |
いつも使っているOSなので。 VPSコントロールパネルのOS再インストールページからOSを選択して手順通りにインストール。