Saturday, December 31, 2022

Windows 7 does not see other network PCs

Go to Control Panel Network Settings

1. Leave homegroup.

2. "See Full Map" in right upper corner to show network devices.

In VirtualBox go to Settings > Network > Attached to > Bridged Adapter.

ping 192.168.1.1

Reset network settings in cmd, if necessary:

ipconfig /release

ipconfig /renew

ipconfig /flushdns

Saturday, December 10, 2022

USB Internet tethering on Kubuntu not working

Samsung M22 smartphone. Activate USB tethering and share mobile connection with PC. If you can’t connect to Internet, disable PC wired connection (LAN) and leave phone wired connection. Don’t forget to activate PC wired connection after disconnecting phone.

Tuesday, November 29, 2022

Нуль, заземлення, генератор

Сонячний гібридний інвертор із PWM або MPPT працює без проблем із бензогенератором. Якщо інвертор не працює з генератором, можливо затонкі проводи до батарей. Див. інструкцію та поставте товщі проводи. 24 В інвертор, як правило, потребує провід перерізу 12 мм++

Не факт, що перелічене нижче допоможе роботі ББЖ або іншого пристрою.

Найпростіше заземлення для електрогенератора - 1,5 м арматура з болтовим з'єднанням. Ідеально під'єднати до готового заземлення, яке влаштовано в будинку.

Більшість 1-фазних генераторів видають "2 фази". Щоб "зняти" нуль із 1 фази генератора, потрібно зробити друге заземлення. Використовувати заземлення генератора чи будинку не варто.

Добре змонтувати щит на 2-полюсний автомат, до якого підходитимуть заземлення, призначене для "зняття нуля", й обидві фази генератора. Таким чином "додаткове" заземлення нуля буде завжди відключене від загальної мережі та працюватиме лише під час використання генератора.

Заземлення нуля загальної мережі може спричинити вибивання ПЗВ.

Monday, November 21, 2022

You cannot eat money

When the last tree is cut down, the last fish eaten, and the last stream poisoned, you will realize that you cannot eat money.― Alanis Obomsawin 

When the last tree is cut, the last fish is caught, and the last river is polluted; when to breathe the air is sickening, you will realize, too late, that wealth is not in bank accounts and that you can't eat money.― Alanis Obomsawin

Sunday, November 20, 2022

Хто я? Що я? Для чого? Звідки? Куди?

Особистість - збірка уривків пам’яті, стереотипів, звичок, навіяних зовнішніми чинниками, що обумовлюються місцем народження, проживання, навчання…

Яким я знаю себе, ким я сприймаю себе поза особистістю, створеною в цьому житті? Я не тіло, я не пам’ять, я не думки… Хто і що я?

Якби я народився десь інде, не пережив, що було, не спілкувався з тими, з ким маю справу, напевне був би іншим, чи не так?

Завдяки тим чи іншим людям моє тіло виросло, лікується, розвиваються інтелектуальні здібності, є доступ до тих чи інших благ, але де в цьому я? Так чи інакше, оточення спрямовує чи намагається, а подекуди, змушує рухатися в певному напрямку. Де моя свобода та воля? Що моє, що чуже? Які думки мої? Який світогляд мій? Фактично моя особистість, яку я більш-менш знаю, є колекцією даних, при чому, не факт, що вірних даних, інтерпретованих на основі безлічі думок, поглядів, отриманих від інших особистостей...

Каста впливає на світогляд, можливості, швидкість і легкість розвитку тут, чи ні?

Матерія їсть матерію, щоб жити певний період часу. Життя живиться смертю, а смерть пожирає його. В матеріальному світі нема добра - є лише відтінки зла, бо виживання 1 залежить від смерті 2. Відкинувши концепції добра та зла, отримаємо світ такий, просто, такий, який є отаким, без етики, без моралі, без жертв, без правил. Проте, це стосується тваринного світу та природи загалом... Із людиною складніше... Людина далеко не завжди вбиває, щоб вижити. Серед диких тварин таке рідкість, а домашнім притаманне.

Що таке людина? Що таке мавпа? Що таке досконалість і чи існує вона?

Смерть звільнить мене від тіла й земної особистості, а де буду я?

Емоції, психологічний стан, настрій завжди викривляють сприйняття дійсності.

Індивідуальність, притаманна конкретній істоті, визначає риси особистості? Індивідуальність - душа, інтуїція чи набір генетично-психічних особливостей?

У більшості випадків люди діють, як роботи, але кожен має ті чи інші індивідуальні ознаки і мова не про фізичну унікальність. Тобто я отой індивід, який у тілі та поза думками, поглядами, звичками особистості - суспільної маски?

Інтуїція - голос духу чи душі? Є певне відчуття, яке постійно змагається з інтелектом або розумом. А мудрість що? Явно не розум і не інтелект. Інтелектуальні здібності дають змогу прокачувати розум, пам’ять, але розумний - не мудрий. Мудрість - адекватна дія в незнайомій і невідомій ситуації? Мудрість не залежить від освіти, навчання, практики, чи не так? Мудрість - складова інтуїції, душі, індивідуальності?

Add spelling dictionary to LibreOffice

 Tools > Extensions Manager... (Ctrl + Alt + E) > Add > dict.oxt

Tuesday, November 1, 2022

Server error messages in Node.js

 //

app.use((err, req, res, next) => {
console.log(err);
err.statusCode = err.statusCode || 500;
err.status = err.status || 'error';
res.status(err.statusCode).json({
status: err.status,
message: err.message,
}); // {"status":"fail","message":"Page / not found!"}
next();
});

//

Express req request Node.js

Show Express req content:

app.all('*', (req, res, next) => {
console.log(req);
});

Monday, October 31, 2022

Jest testing framework for React & Node.js

https://jestjs.io/docs/getting-started

{
"name": "project",
"version": "1.0.0",
"description": "API",
"main": "src/server.js",
"scripts": {
"test": "jest",
"test-watch": "jest --watchAll",
"start": "node src/server.js",
"watch": "nodemon src/server.js"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"cors": "^2.8.5",
"csv-parse": "^5.3.1",
"express": "^4.18.2",
"morgan": "^1.10.0"
},
"devDependencies": {
"jest": "^29.2.2",
"supertest": "^6.3.1"
}
}

npm i jest --save-dev

npm i supertest --save-dev

Portable anonymous Linux for privacy & security

GNOME Disks (gnome-disk-utility) equivalent in KDE: Startup Disk Creator (usb-creator-kde)

https://tails.boum.org/install/linux/index.en.html


Sunday, October 30, 2022

Run client & server in separate folders

Node.js server and React client:

"scripts": {
"install-server": "cd server && npm install",
"install-client": "cd client && npm install",
"install": "npm run install-server && npm run install-client",
"server": "cd server && npm run watch",
"client": "cd client && npm start",
"watch": "npm run server & npm run client",
"test": "echo \"Error: no test specified\" && exit 1"
},

Node.js server and React client:

"scripts": {
"install-server": "npm install --prefix server",
"install-client": "npm install --prefix client",
"install": "npm run install-server && npm run install-client",
"server": "npm run watch --prefix server",
"client": "npm start --prefix client",
"watch": "npm run server & npm run client",
"deploy": "npm run build --prefix client && npm start --prefix server",
"test": "npm test --prefix server & npm test --prefix client"
},

//

Thursday, October 27, 2022

http Node.js module status codes

node > http

STATUS_CODES: {
   '100': 'Continue',
   '101': 'Switching Protocols',
   '102': 'Processing',
   '103': 'Early Hints',
   '200': 'OK',
   '201': 'Created',
   '202': 'Accepted',
   '203': 'Non-Authoritative Information',
   '204': 'No Content',
   '205': 'Reset Content',
   '206': 'Partial Content',
   '207': 'Multi-Status',
   '208': 'Already Reported',
   '226': 'IM Used',
   '300': 'Multiple Choices',
   '301': 'Moved Permanently',
   '302': 'Found',
   '303': 'See Other',
   '304': 'Not Modified',
   '305': 'Use Proxy',
   '307': 'Temporary Redirect',
   '308': 'Permanent Redirect',
   '400': 'Bad Request',
   '401': 'Unauthorized',
   '402': 'Payment Required',
   '403': 'Forbidden',
   '404': 'Not Found',
   '405': 'Method Not Allowed',
   '406': 'Not Acceptable',
   '407': 'Proxy Authentication Required',
   '408': 'Request Timeout',
   '409': 'Conflict',
   '410': 'Gone',
   '411': 'Length Required',
   '412': 'Precondition Failed',
   '413': 'Payload Too Large',
   '414': 'URI Too Long',
   '415': 'Unsupported Media Type',
   '416': 'Range Not Satisfiable',
   '417': 'Expectation Failed',
   '418': "I'm a Teapot",
   '421': 'Misdirected Request',
   '422': 'Unprocessable Entity',
   '423': 'Locked',
   '424': 'Failed Dependency',
   '425': 'Too Early',
   '426': 'Upgrade Required',
   '428': 'Precondition Required',
   '429': 'Too Many Requests',
   '431': 'Request Header Fields Too Large',
   '451': 'Unavailable For Legal Reasons',
   '500': 'Internal Server Error',
   '501': 'Not Implemented',
   '502': 'Bad Gateway',
   '503': 'Service Unavailable',
   '504': 'Gateway Timeout',
   '505': 'HTTP Version Not Supported',
   '506': 'Variant Also Negotiates',
   '507': 'Insufficient Storage',
   '508': 'Loop Detected',
   '509': 'Bandwidth Limit Exceeded',
   '510': 'Not Extended',
   '511': 'Network Authentication Required'
 },

https://nodejs.org/api/http.html

Tuesday, October 25, 2022

Using local JSON file without database in Node.js

 //

////////////////////////////////////////////////////////
// JSON WITHOUT DATABASE
// //////////////////////////////////////////////////////
const fs = require('fs');
////////////////////////////////////////////////////////
const cards = JSON.parse(fs.readFileSync(`${__dirname}/data/card-data.json`));
////////////////////////////////////////////////////////
exports.checkId = (req, res, next, val) => {
if (req.params.id * 1 > cards.length) {
return res.status(404).json({
status: 'fail',
message: 'Invalid ID',
});
}
next();
};
////////////////////////////////////////////////////////
exports.getAllCards = (req, res) => {
res.status(200).json({
status: 'success',
time: req.requestTime,
result: cards.length, // if sending array!!!
data: { images: cards },
});
};
////////////////////////////////////////////////////////
exports.getCard = (req, res) => {
const id = req.params.id * 1; // convert String into Number
const card = cards.find((el) => el.id === id); // console.log(req.params);
res.status(200).json({
status: 'success',
time: req.requestTime,
data: {
card: card, // or just card instead of card: card
},
});
};
////////////////////////////////////////////////////////
exports.postCard = (req, res) => {
// solution to work without database
const newId = cards[cards.length - 1].id + 1;
const newCard = Object.assign({ id: newId }, req.body); // console.log(req.body);
cards.push(newCard);
fs.writeFile(
`${__dirname}/../data/card-data.json`,
JSON.stringify(cards),
(err) => {
res.status(201).json({
status: 'success',
data: { images: newCard },
});
}
); // use asynchronous writeFile
};
////////////////////////////////////////////////////////

//

Monday, October 24, 2022

Request logger for Node.js server

@desc    Logs request to console

const logger = (req, res, next) => {
console.log(
`${req.method} ${req.protocol}://${req.get('host')}${req.originalUrl}`
);
next();
};

module.exports = logger;

Morgan - HTTP request logger middleware for node.js

https://www.npmjs.com/package/express-requests-logger

https://github.com/expressjs/morgan

npm i morgan