- Верстка: отображаем пользовательский контент
- Где всё сложно с переносами строк. Вот все CSS- и HTML-хитрости для этого
- Передряги при переносах
- Florian Rivoal. line-breaking
- A new terminal-style line breaking with CSS Text
- wrapping-long-words-css-html
- Неизведанные глубины CSS: метрики шрифта, line-height и vertical-align
- Deep Dive into Text Wrapping and Word Breaking
| // (c) Anika Henke. | |
| // https://github.com/selfthinker/dokuwiki_template_writr/blob/master/js/skip-link-focus-fix.js | |
| (function($) { | |
| jQuery.extend(jQuery.expr[':'], { | |
| focusable: function(el, index, selector){ | |
| var $element = $(el); | |
| return $element.is(':input:enabled, a[href], area[href], object, [tabindex]') && !$element.is(':hidden'); | |
| } |
Last major update: 21.10.2019
Аутентификация(authentication, от греч. αὐθεντικός [authentikos] – реальный, подлинный; от αὐθέντης [authentes] – автор) - это процесс проверки учётных данных пользователя (логин/пароль). Проверка подлинности пользователя путём сравнения введённого им логина/пароля с данными сохранёнными в базе данных.
Авторизация(authorization — разрешение, уполномочивание) - это проверка прав пользователя на доступ к определенным ресурсам.
Например после аутентификации юзер sasha получает право обращатся и получать от ресурса "super.com/vip" некие данные. Во время обращения юзера sasha к ресурсу vip система авторизации проверит имеет ли право юзер обращатся к этому ресурсу (проще говоря переходить по неким разрешенным ссылкам)
| const path = require('path') | |
| const fs = require('fs').promises | |
| async function walk(fsPath, callback) { | |
| const node = { | |
| path: fsPath, | |
| stat: await fs.stat(fsPath) | |
| } | |
| const stack = [node] | |
| let item |
| # https://www.innoq.com/en/blog/rails-frontend-components/ | |
| # app/helpers | |
| module ComponentHelper | |
| def component(name, data: {}, &block) | |
| render_component("#{name}/#{name}", { data: data }, &block) | |
| end | |
| private | |
| def render_component(name, locals, &block) |
| const crypto = require('crypto'); | |
| const fs = require('fs'); | |
| /** | |
| * @typedef {object} HashFileOptions | |
| * @prop {string} [algorithm = 'md5'] алгоритм хеширования | |
| * @prop {crypto.HexBase64Latin1Encoding} [encoding = 'hex'] предствалние конечного хеша | |
| */ | |
| /** |
| <!--[if gte MSO 9]> | |
| <table width="200"><tr><td> | |
| <![endif]--> | |
| <table align="center" width="100%" style="max-width: 200px;"> | |
| <tr> | |
| <td align="center" style="text-align: center"> | |
| <img src="//link.com" alt="" width="200" height="140" style="display: block; border: 0; width: 100%; height: auto;"> | |
| </td> | |
| </tr> | |
| </table> |
node.js line number stream.
https://2ality.com/2019/11/nodejs-streams-async-iteration.html, https://github.com/deanhume/streams
Thomas Barrasso A practical guide to Javascript Proxy (ES6 Proxy) https://blog.bitsrc.io/a-practical-guide-to-es6-proxy-229079c3c2f0
Gergo Bogdan https://github.com/gergob/jsProxy
- Default / "Zero Values"
const withZeroValue = (target, zeroValue) => new Proxy(target, {