var path = 'public/uploads/file.txt',
buffer = new Buffer("some content\n");
fs.open(path, 'w', function(err, fd) {
if (err) {
throw 'error opening file: ' + err;
}
fs.write(fd, buffer, 0, buffer.length, null, function(err) {
if (err) throw 'error writing file: ' + err;
fs.close(fd, function() {
console.log('file written');
})
});
});
fs.open(filepath, 'r', function(err, fd) {
fs.fstat(fd, function(err, stats) {
var bufferSize=stats.size,
chunkSize=512,
buffer=new Buffer(bufferSize),
bytesRead = 0;
while (bytesRead < bufferSize) {
if ((bytesRead + chunkSize) > bufferSize) {
chunkSize = (bufferSize - bytesRead);
}
fs.read(fd, buffer, bytesRead, chunkSize, bytesRead);
bytesRead += chunkSize;
}
console.log(buffer.toString('utf8', 0, bufferSize));
fs.close(fd);
});
});
// Convert a binary buffer into a "binary" encoded string.
function binaryEncode(buffer) {
var string = "";
for (var i = 0, l = buffer.length; i < l; i++) {
string += String.fromCharCode(buffer[i]);
}
return string
}
// Convert a "binary" encoded string into a binary buffer.
function binaryDecode(string) {
var length = string.length;
var buffer = new Buffer(length);
for (var i = 0; i < length; i++) {
buffer[i] = string.charCodeAt(i);
}
}
client.on('stream', function(stream, meta){
var bufs = [];
stream.on('data', function(data){
bufs.push(data);
});
stream.on('end', function(){
var buf = binaryEncode(Buffer.concat(bufs));
fs.writeFile(__dirname + "/tmp/"+meta.frame+".dat", buf, "binary", function(err) {
if(err) {
console.log(err);
} else {
console.log("The file was saved!");
}
});
});
}
// Linux
...
"scripts": {
"build": "export NODE_ENV=production webpack --config ./webpack.prod.config.js --progress --colors",
"start": "node ./app.js"
},
...
// Windows
...
"scripts": {
"build": "set NODE_ENV=production webpack --config ./webpack.prod.config.js --progress --colors",
"start": "node ./app.js"
},
...
router.route('/:user')
.get(function (request, response) {
var userName = req.params.user;
userService.findUserByName(userName)
.then(onUserSuccess, function (err) {
errorHandle(err, reponse);
})
.then(onProviderSuccess, function (err) {
errorHandle(err, reponse);
});
});
function errorHandle(err, reponse) {
return reponse.status(200).json({
error: false
});
}
$ git add .
$ git commit -m "Commit"
$ git push origin master
/*
Есть модель Пользователи (Users)
Есть модель Цвета (Colors)
Есть модель Статусы (Statuses)
Есть модель Отзывы (Reviews).
Каждый отзыв может иметь несколько статусов, связь - models.Reviews.belongsToMany(models.Statuses, {through: 'reviews_statuses'});
*/
var statuses = [1,3,5]; // - статусы с идентификатором 1, 3 и 5
var description = "text"; // - текст, которые содержится в Reviews.description
var colors = [2,4]; // - цвета с идентификаторами 2 и 4,
var user = 1; // - идентификатор пользователя
Reviews.findAll({
where: {
description: {
$like: description
}
},
include: [{
model: Statuses,
attributes: ['id'],
where: {
reviews_statuses: {
$in: statuses
}
}
},
{
model: Colors,
attributes: ['id'],
where: {
color_id: {
$in: colors
}
}
},
{
model: Users,
attributes: ['id'],
where: {
id: user
}
}]
});
# обновляемся
sudo apt-get update
# ставим нужные пакеты
sudo apt-get install build-essential libssl-dev
# ставим nvm
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.1/install.sh | bash
source ~/.profile
# смотрим список доступных версий ноды
nvm ls-remote
# ставим нужную
nvm install <version>
var mysql = require('mysql');
var pool = mysql.createPool({
connectionLimit : 15,
host: 'localhost',
database: 'node',
user: 'node',
password: '123'
});
var Tasks = {
list: function(callback){
pool.getConnection(function(err, connection) {
connection.query(
'SELECT * FROM tasks',
function(err, rows) {
connection.release();
callback(rows);
});
});
},
edit: function(){}
};
module.exports = Tasks;
var tasks = require('./tasks');
tasks.list(function(list){
console.log(list);
});
user www-data;
worker_processes auto;
pid /run/nginx.pid;
events {
worker_connections 1024;
multi_accept on;
}
http {
sendfile on;
access_log /root/projects/logs/domen.ru/access.log;
error_log /root/projects/logs/domen.ru/error.log crit;
gzip on;
gzip_disable "msie6";
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;
server {
listen 80;
server_name domen.ru www.domen.ru;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name domen.ru www.domen.ru;
keepalive_timeout 60;
keepalive_requests 50;
ssl_certificate /root/domen.ru.ssl/domen.ru.crt;
ssl_certificate_key /root/domen.ru.ssl/domen.ru.key;
ssl_session_cache shared:SSL:30m;
ssl_session_timeout 1h;
ssl_stapling on;
resolver 8.8.8.8;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 SSLv2 SSLv3;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA !RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS";
ssl_dhparam /root/domen.ru.ssl/domen.ru.dh4096.pem;
add_header Strict-Transport-Security 'max-age=604800';
location / {
proxy_pass http://localhost:8080;
#proxy_http_version 1.1;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
client_max_body_size 10m;
client_body_buffer_size 256k;
proxy_connect_timeout 120;
proxy_send_timeout 120;
proxy_read_timeout 120;
proxy_buffer_size 128k;
proxy_buffers 32 128k;
proxy_busy_buffers_size 128k;
proxy_temp_file_write_size 128k;
}
}
}