Node.js | Segmentation Fault
Ошибка сегментации возникает, когда программа пытается получить доступ к области памяти, к которой ей не разрешен доступ, или недопустимым способом.
Когда вы можете столкнуться с этим в Node:
- Когда вы используете собственные дополнения ( C++ addons, пакеты ), если они несовместимы с вашей версией Node, вы часто будете получать сбои.
- Если вы изменяете встроенные объекты, модули Node.
- Когда в самой Node.js где-то есть ошибка.
Как это исправить?
- Перекомпилируйте все ваши собственные модули node с помощью
- Установите модуль Segfault-Handler
- Убедитесь, что все ваши модули обновлены.
- Большинство ошибок описаны по ссылке Node issue tracker
Ошибка сегментации возникает, когда программа пытается получить доступ к области памяти, к которой ей не разрешен доступ, или недопустимым способом.
Когда вы можете столкнуться с этим в Node:
- Когда вы используете собственные дополнения ( C++ addons, пакеты ), если они несовместимы с вашей версией Node, вы часто будете получать сбои.
- Если вы изменяете встроенные объекты, модули Node.
- Когда в самой Node.js где-то есть ошибка.
Как это исправить?
- Перекомпилируйте все ваши собственные модули node с помощью
npm rebuild .- Установите модуль Segfault-Handler
npm install segfault-handler для подробной информации об ошибке.- Убедитесь, что все ваши модули обновлены.
- Большинство ошибок описаны по ссылке Node issue tracker
PHP | Include and Require Files
Операторы include() иrequire() позволяют включать код, содержащийся в файле PHP, в другой файл PHP.
Если файл отсутствует оператор
Рекомендуется использовать оператор
Операторы include() иrequire() позволяют включать код, содержащийся в файле PHP, в другой файл PHP.
include("path/to/filename"); -Or- include "path/to/filename";
require("path/to/filename"); -Or- require "path/to/filename";
В чем их отличие?Если файл отсутствует оператор
include() будет генерировать только предупреждение, но позволит продолжить выполнение скрипта, тогда как оператор require() сгенерирует фатальную ошибку и остановит выполнение скрипта.Рекомендуется использовать оператор
require(), если вы включаете файлы библиотеки или файлы, содержащие функции и переменные, которые необходимы для запуска вашего приложения, например файл конфигурации базы данных.JS | Call stack
Стек выполнения - это LIFO ( last in, first out ) -стек, который используется для хранения контекстов выполнения, создаваемых в ходе работы кода.
Механизм работы Call-stack:
- JS-движок начинает обрабатывать скрипт.
- При обнаружении команды вызова функции движок добавляет ее в начало стека.
- Выполняет функцию в верхней части стека.
- Oтработанная функция извлекается и выполняется нижняя.
- Если стек переполнен, то будет ошибка ("stack overflow" error).
Стек выполнения - это LIFO ( last in, first out ) -стек, который используется для хранения контекстов выполнения, создаваемых в ходе работы кода.
Механизм работы Call-stack:
- JS-движок начинает обрабатывать скрипт.
- При обнаружении команды вызова функции движок добавляет ее в начало стека.
- Выполняет функцию в верхней части стека.
- Oтработанная функция извлекается и выполняется нижняя.
- Если стек переполнен, то будет ошибка ("stack overflow" error).
function first(){
console.log("Hello from firstFunction");
}
function second(){
first();
console.log("The end from secondFunction");
}
second();
// Hello from firstFunction
// The end from secondFunction
По ссылке потренируйтесь с call-stack-ом. И выполните код выше на платформе, если не совсем поняли почему такой вывод.This media is not supported in your browser
VIEW IN TELEGRAM
CSS | Flexbox
Наглядное пособие по CSS-Flexbox
Автор сделал интерактивными самые популярные свойства:
Наглядное пособие по CSS-Flexbox
Автор сделал интерактивными самые популярные свойства:
flex-shrink, flex-grow, align-items, flex-wrap и другие.Как сформировать уникальный временный каталог в Node.js?
Anonymous Quiz
14%
fs.mkdtemp
53%
fs.mkdirTemp
11%
fs.rmdir
21%
fs.tempdirUnic
PHP | Поиск файлов
При работе с каталогом и файловой структурой иногда может потребоваться найти определенные типы файлов в каталоге ( *.text ,* .png )
PHP glob() - Находит файловые пути, совпадающие с шаблоном и возвращает массив найденных файлов.
Код PHP в следующем примере будет искать в каталоге documents и выводить все файлы с расширением .txt. Поиск в подкаталогах не выполняется.
При работе с каталогом и файловой структурой иногда может потребоваться найти определенные типы файлов в каталоге ( *.text ,* .png )
PHP glob() - Находит файловые пути, совпадающие с шаблоном и возвращает массив найденных файлов.
Код PHP в следующем примере будет искать в каталоге documents и выводить все файлы с расширением .txt. Поиск в подкаталогах не выполняется.
<?php
foreach(glob("documents/*.txt") as $file){
echo basename($file) . " (size: " . filesize($file) . " bytes)" . "<br>";
}
?>SQL | Трюки от DBA
Лайфхаки от опытного администратора БД
- Обновляйте лишь то, что нужно обновить
- При больших загрузках отключайте ограничения и индексы
- Для промежуточных данных используйте UNLOGGED-таблицы
- Реализуйте процессы целиком с помощью WITH и RETURNING
- В колонках с низкой избирательностью избегайте индексов
- Используйте частичные индексы
- Всегда загружайте отсортированные данные
- Колонки с высокой корреляцией индексируйте с помощью BRIN
- Делайте индексы «невидимыми»
- Не планируйте начало длительных процессов на начало любого часа
В статье подробно разобран каждый пункт с примерами
Лайфхаки от опытного администратора БД
- Обновляйте лишь то, что нужно обновить
- При больших загрузках отключайте ограничения и индексы
- Для промежуточных данных используйте UNLOGGED-таблицы
- Реализуйте процессы целиком с помощью WITH и RETURNING
- В колонках с низкой избирательностью избегайте индексов
- Используйте частичные индексы
- Всегда загружайте отсортированные данные
- Колонки с высокой корреляцией индексируйте с помощью BRIN
- Делайте индексы «невидимыми»
- Не планируйте начало длительных процессов на начало любого часа
В статье подробно разобран каждый пункт с примерами
CSS | Центрирование
ГОРИЗОНТАЛЬНОЕ ЦЕНТРИРОВАНИЕ:
- Центрирование строк текста.
- Отформатировать блок как ячейку таблицы
ГОРИЗОНТАЛЬНОЕ ЦЕНТРИРОВАНИЕ:
- Центрирование строк текста.
p { text-align: center; }
- Центрирование блока с фиксированной шириной.p.blocktext {
margin: auto;
width: 6em; }
- Центрирование изображенияimg.displayed {
display: block;
margin: auto; }
ВЕРТИКАЛЬНОЕ ЦЕНТРИРОВАНИЕ:- Отформатировать блок как ячейку таблицы
div.outer {
height: 300px;
display: table-cell;
vertical-align: middle; }
<div class="outer">
<p>Этот параграф отцентрирован вертикально.</p>
</div>
- С использованием абсолютного позиционированияdiv.outer p {
margin: 0;
position: absolute;
top: 50%;
transform: translate(0, -50%) }
- 'flex' для свойства 'display'div.outer {
height: 10em;
display: flex;
align-items: center }Node.js | Passport
Passport.js - npm пакет, который поддерживает аутентификацию с помощью имени пользователя и пароля от аккаунтов Facebook, Twitter, и так далее. Работает в любом приложении на основе Express.
Преимущества :
- Более 300 стратегий аутентификации
- Простая обработка успешных и неудачных результатов
- Облегченная база кода
Passport.js - npm пакет, который поддерживает аутентификацию с помощью имени пользователя и пароля от аккаунтов Facebook, Twitter, и так далее. Работает в любом приложении на основе Express.
Преимущества :
- Более 300 стратегий аутентификации
- Простая обработка успешных и неудачных результатов
- Облегченная база кода
Какая PHP функция предотвратит внедрение JS скрипта и преобразует его в тест?
Anonymous Quiz
48%
htmlspecialchars()
15%
trim()
13%
stripslashes()
24%
convert_uuencode()
HTML | PRELOAD & PREFETCH
Preload - говорит браузеру как можно скорее загрузить и кэшировать ресурс (например, скрипт или таблицу стилей). Это полезно, когда ресурс понадобится через несколько секунд после загрузки страницы — и вы хотите ускорить процесс.
Preload - говорит браузеру как можно скорее загрузить и кэшировать ресурс (например, скрипт или таблицу стилей). Это полезно, когда ресурс понадобится через несколько секунд после загрузки страницы — и вы хотите ускорить процесс.
<link rel="preload" href="/style.css" as="style" />prefetch - просит браузер загрузить и кэшировать ресурс (например, скрипт или таблицу стилей) в фоновом режиме. Загрузка происходит с низким приоритетом, поэтому не мешает более важным ресурсам. Это полезно, если ресурс понадобится на следующей странице, а вы хотите заранее его кэшировать.
<link rel="prefetch" href="/style.css" as="style" />Браузер ничего не делает с ресурсом после загрузки. Скрипты не выполняются, таблицы стилей не применяются. Ресурс просто кэшируется и немедленно предоставляется по запросу.
JS | Fetch
Fetch API - это более простая и удобная версия
Fetch API - это более простая и удобная версия
XMLHttpRequest. Fetch позволяет работать с REST API с дополнительными параметрами, такими как кэширование данных и многое другое. Основное отличие состоит в том, что Fetch работает с promise, а не callback.fetch('https://api...')
// Handle success
.then(response => response.json()) // convert to json
.then(json => console.log(json)) //print data to console
.catch(err => console.log('Request Failed', err)); // Catch errors
Также можно передавать заголовки, используя свойство «headers»fetch('https://jsonplaceholder.typicode.com/posts', {
method: "POST",
body: JSON.stringify(_data),
headers: {"Content-type": "application/json; charset=UTF-8"}
})Как задать эффект плавного изменения только для свойства width?
Anonymous Quiz
46%
transition-property: width;
19%
transition-only: width;
30%
transition-width: 2s;
5%
transition: all;
Node.js | Обработка асинхронных ошибок
Если ошибка не обработана, то ваше приложение находится в неопределённом состоянии.
Некоторые способы обработки асинхронных ошибок:
- Прослушиваем все сообщения об ошибках (on error).
Если ошибка не обработана, то ваше приложение находится в неопределённом состоянии.
try/catch c синхронными ошибками работает замечательно, но в Node.js лучше всего писать асинхронный код, чтобы не блокировать thread.Некоторые способы обработки асинхронных ошибок:
- Прослушиваем все сообщения об ошибках (on error).
server.on('error', function (err) {
console.error(err)
process.exit(1)})
- Прослушиваем uncaughtException в объекте process.process.on('uncaughtException', function (err) {
console.error('uncaughtException: ', err.message)
console.error(err.stack)
process.exit(1)})
В статье вы найдете больше практик для обработки ошибок.PHP | Files mode
Функция fopen() - принимает вторым параметром режим работы с файлом.
- 'r' - Открывает файл только для чтения; помещает указатель в начало файла.
- 'r+' - Открывает файл для чтения и записи; помещает указатель в начало файла.
- 'w' - Удаляет содержимое файла. Если файл не существует - пробует его создать.
- 'w+' - Открывает файл для чтения и записи. Удаляет содержимое файла. Если файл не существует - пробует его создать.
- 'a' - Открывает файл только для записи; помещает указатель в конец файла. Если файл не существует - пытается его создать.
- 'a+' - Открывает файл для чтения и записи; помещает указатель в конец файла. Если файл не существует - пытается его создать.
Функция fopen() - принимает вторым параметром режим работы с файлом.
fopen("\resource.txt", "r");
Основные режимы:- 'r' - Открывает файл только для чтения; помещает указатель в начало файла.
- 'r+' - Открывает файл для чтения и записи; помещает указатель в начало файла.
- 'w' - Удаляет содержимое файла. Если файл не существует - пробует его создать.
- 'w+' - Открывает файл для чтения и записи. Удаляет содержимое файла. Если файл не существует - пробует его создать.
- 'a' - Открывает файл только для записи; помещает указатель в конец файла. Если файл не существует - пытается его создать.
- 'a+' - Открывает файл для чтения и записи; помещает указатель в конец файла. Если файл не существует - пытается его создать.
Как в MySQL выбрать только 3 первых записи?
SELECT * FROM table ...
SELECT * FROM table ...
Anonymous Quiz
21%
WHERE TOP 3
56%
LIMIT 3
16%
WHERE ROWNUM <= 3
7%
ONLY 3
JS | Moment.js
Moment.js - библиотека для форматирования даты в нужном вам формате. Работает в браузере и с Node.js. Легко подключается и настраивается и при этом работает динамично со всеми временными зонами.
Поддерживает:
- Текущие даты
Moment.js - библиотека для форматирования даты в нужном вам формате. Работает в браузере и с Node.js. Легко подключается и настраивается и при этом работает динамично со всеми временными зонами.
Поддерживает:
- Текущие даты
moment().format("MMM Do YY"); // авг. 27-го 20
moment().format('YYYY [escaped] YYYY'); // 2020 escaped 2020
- Относительныеmoment().endOf('day').fromNow(); // через 10 часов
moment().startOf('hour').fromNow(); // 13 минут назад
- Календарныеmoment().calendar(); // Сегодня, в 14:12- Локальные
moment().add(1, 'days').calendar(); // Завтра, в 14:12
moment.locale(); // ru
moment().format('LT'); // 14:12