У меня на сервере стоит MySQL база данных, на ней висят 2 сайта с маленькой посещалкой (500-700 человек в сутки), так вот эта база съедает 500-600 мб памяти сервера и как мне объяснили, это слишком много и мне необходимо базу оптимизировать.
Но вот я поднял Nodejs сервер с самым стандартным api c CRUD на борту. Посмотрел сколько съедается памяти и обомлел, больше 1000 мб занимает Nodejs сервер, которые в данный момент даже запросы не обрабатывает, он просто запущен для личного использования.
let files = fs.readdirSync(base).sort(); // Получаешь отсортированный список по имени
let files = fs.readdirSync(base).reverse(); // Получаешь отсортированный
// список по имени в обратном порядке
var path = require('path');
path.exists('foo.txt', function(exists) {
if (exists) {
// do something
}
});
if (path.existsSync('foo.txt')) {
// do something
}
fs.stat('foo.txt', function(err, stat) {
if(err == null) {
console.log('File exists');
} else if(err.code == 'ENOENT') {
// file does not exist
fs.writeFile('log.txt', 'Some log\n');
} else {
console.log('Some other error: ', err.code);
}
});
var http = require('http');
http.createServer(onRequest).listen(3000);
function onRequest(client_req, client_res) {
console.log('serve: ' + client_req.url);
var options = {
hostname: 'www.google.com',
port: 80,
path: client_req.url,
method: 'GET'
};
var proxy = http.request(options, function (res) {
res.pipe(client_res, {
end: true
});
});
client_req.pipe(proxy, {
end: true
});
}
http://127.0.0.1:3000/
получаешь работоспособный google. var rx=/(.+)/;
var emptyFn=function(){};
bot.sendMessage(this.userId, 'Where do you want to know the weather forecast?')
.then(() => {
this.onText(rx, msg => {
console.log(msg);
this.onText(rx, emptyFn);
});
});
var links = [];
var casper = require('casper').create();
function getLinks() {
var links = document.querySelectorAll('h3.r a');
return Array.prototype.map.call(links, function(e) {
return e.getAttribute('href');
});
}
casper.start('http://google.fr/', function() {
// Wait for the page to be loaded
this.waitForSelector('form[action="/search"]');
});
casper.then(function() {
// search for 'casperjs' from google form
this.fill('form[action="/search"]', { q: 'casperjs' }, true);
});
casper.then(function() {
// aggregate results for the 'casperjs' search
links = this.evaluate(getLinks);
// now search for 'phantomjs' by filling the form again
this.fill('form[action="/search"]', { q: 'phantomjs' }, true);
});
casper.then(function() {
// aggregate results for the 'phantomjs' search
links = links.concat(this.evaluate(getLinks));
});
casper.run(function() {
// echo results in some pretty fashion
this.echo(links.length + ' links found:');
this.echo(' - ' + links.join('\n - ')).exit();
});
$ casperjs googlelinks.js
20 links found:
- https://github.com/casperjs/casperjs
- https://github.com/casperjs/casperjs/issues/2
- https://github.com/casperjs/casperjs/tree/master/samples
- https://github.com/casperjs/casperjs/commits/master/
- http://www.facebook.com/people/Casper-Js/100000337260665
- http://www.facebook.com/public/Casper-Js
- http://hashtags.org/tag/CasperJS/
- http://www.zerotohundred.com/newforums/members/casper-js.html
- http://www.yellowpages.com/casper-wy/j-s-enterprises
- http://local.trib.com/casper+wy/j+s+chinese+restaurant.zq.html
- http://www.phantomjs.org/
- http://code.google.com/p/phantomjs/
- http://code.google.com/p/phantomjs/wiki/QuickStart
- http://svay.com/blog/index/post/2011/08/31/Paris-JS-10-%3A-Introduction-%C3%A0-PhantomJS
- https://github.com/ariya/phantomjs
- http://dailyjs.com/2011/01/28/phantoms/
- http://css.dzone.com/articles/phantom-js-alternative
- http://pilvee.com/blog/tag/phantom-js/
- http://ariya.blogspot.com/2011/01/phantomjs-minimalistic-headless-webkit.html
- http://www.readwriteweb.com/hack/2011/03/phantomjs-the-power-of-webkit.php
под данные о текущих боях (расположение кораблей, ходы) сделал просто глобальный объект с массивами
app.locals
, res.locals
; есть много реализаций сессий.matrix[i] = Array('','','','','','','','','','');
matrix[i] = ['','','','','','','','','',''];
// { name: { $exists: true }}
Thing.where('name').exists()
Thing.where('name').exists(true)
Thing.find().exists('name')
// { name: { $exists: false }}
Thing.where('name').exists(false);
Thing.find().exists('name', false);