Временами нужно удалить изображение из google поиска. Вначале нужно удалить изображение из сайта, затем сделать запрос в google. На странице помощи гугл не ясно написано что делать. Там говориться вы должны скопировать ссылку и поместить ее в их удаления форму но это не работает если вы копируете изображения адрес. Вы должны скопироовать ссылку и поместить…
IOS position fixed не работает
На IOS устройствах position fixed не работает. Я получил задание где нужно добавить кнопкувыше клавиатуры. Кнопка прикреплена внизу. И так я сделал такой код. Показать »
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
<script> console.log('1hello world'); window.addEventListener('resize', () => { console.log('window') }) let flag = null var userAgent = navigator.userAgent || navigator.vendor || window.opera; const f = () => { console.log('userAgent = ', userAgent); if (/iPad|iPhone|iPod/.test(userAgent) && !window.MSStream && window.innerWidth < 800 && !flag) { console.log('once'); flag = true document.getElementById('ServiceFilter_1163_MIN').addEventListener('focus', () => {console.log('focus1') setTimeout(() => { document.querySelector('.bx_filter_button_box').style.bottom="calc(50% + 10px)" document.querySelector('.bx_filter_button_box').style.display="block" },1000) }) document.getElementById('ServiceFilter_1164_MIN').addEventListener('focus', () => {console.log('focus1') setTimeout(() => { document.querySelector('.bx_filter_button_box').style.bottom="calc(50% + 10px)" document.querySelector('.bx_filter_button_box').style.display="block" },1000) }) document.getElementById('ServiceFilter_1163_MAX').addEventListener('focus', () => {console.log('focus1') setTimeout(() => { document.querySelector('.bx_filter_button_box').style.bottom="calc(50% + 10px)" document.querySelector('.bx_filter_button_box').style.display="block" },1000) }) document.getElementById('ServiceFilter_1164_MAX').addEventListener('focus', () => {console.log('focus2') setTimeout(() => { document.querySelector('.bx_filter_button_box').style.bottom="calc(50% + 10px)" document.querySelector('.bx_filter_button_box').style.display="block" },1000) }) document.getElementById('ServiceFilter_1163_MAX').addEventListener('blur', () => {console.log('focus1') setTimeout(() => { document.querySelector('.bx_filter_button_box').style.bottom="0px" },0) }) document.getElementById('ServiceFilter_1164_MAX').addEventListener('blur', () => {console.log('focus2') setTimeout(() => { document.querySelector('.bx_filter_button_box').style.bottom="0px" },0) }) document.getElementById('ServiceFilter_1163_MIN').addEventListener('blur', () => {console.log('focus1') setTimeout(() => { document.querySelector('.bx_filter_button_box').style.bottom="0px" },0) }) document.getElementById('ServiceFilter_1164_MIN').addEventListener('blur', () => {console.log('focus2') setTimeout(() => { document.querySelector('.bx_filter_button_box').style.bottom="0px" },0) }) } } setTimeout(() => { console.log('here we are'); f() },0) window.addEventListener("resize", function () { // console.log(window.innerWidth); // console.log('flag = ', flag); console.log('userAgent = ', userAgent); // iOS detection from: http://stackoverflow.com/a/9039885/177"20 f() }); </script> |
И после клика на input кнопка прыгала в любое место. Она не была фиксированой. Не использую position fixed с IOS. Это не работает. Сдесь пример того что…
express.js роутер с регулярными выражениями
Ты можешь создать экспресс роутер что будет обрабатывать несколько страниц portfolio, projects, reviews, используя такую структуру как показано ниже
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 |
const express = require('express'); const router = express.Router(); const DB = require('../../core/my_db/DB.js') // # 1 /* /api/v1/users/:login/portfolio/?user&portfolio */ router.get(/\/(.*)\/(portfolio|projects|reviews)/, function(req, res, next) { let login = req.params[0] const getUser = (login) => { return new Promise((resolve, reject) => { DB.pool.query( `SELECT * FROM `users` WHERE login = ?`, [login], (err, r) => { if (err) throw err if (r.length === 1) { delete r[0].pass return resolve({ user: r[0] }) } return reject({ error: "notFound" }) } ) }) } const getPortfolio = (login) => { return new Promise((resolve, reject) => { DB.pool.query( `SELECT p.* FROM `users` u INNER JOIN `portfolios` p ON p.userId = u.id AND u.login = ?`, [login], (err, r) => { if (err) throw err resolve({ portfolios: r }) } ) }) } const getProjects = (login) => { return new Promise((resolve, reject) => { DB.pool.query( `SELECT p.* FROM `users` u INNER JOIN `projects` p ON p.userId = u.id AND u.login = ?`, [login], (err, r) => { if (err) throw err resolve({ projects: r }) } ) }) } const getReviews = (login) => { return new Promise((resolve, reject) => { DB.pool.query( `SELECT r.*, u2.id as u2_id, u2.login, u2.avatar, u2.firstName, u2.secondName FROM `users` u INNER JOIN `reviews` r ON r.userId = u.id AND u.login = ? INNER JOIN `users` u2 ON r.authorId = u2.id`, [login], (err, r) => { if (err) throw err resolve({ reviews: r }) } ) }) } let requests = [] console.log('req.query = ', req.query); if (req.query.hasOwnProperty('user')) { requests.push(getUser(login)) } if (req.query.hasOwnProperty('portfolio')) { requests.push(getPortfolio(login)) } if (req.query.hasOwnProperty('projects')) { requests.push(getProjects(login)) } if (req.query.hasOwnProperty('reviews')) { requests.push(getReviews(login)) } Promise.all(requests) .then(values => { console.log(values); // [3, 1337, "foo"] res.json(values) }) .catch(err => { res.json(err) }) }); // # 2 /* /api/v1/users/:login/projects/ */ router.get('/:login/projects/', function(req, res, next) { res.json({ hello:'world' }) }) module.exports = router; |
Это очень важно, строка что определяет регулярное выражение должно быть js регулярное выражение. Не строка!
1 |
router.get(/\/(.*)\/(portfolio|projects|reviews)/, function(req, res, next) { |
Как использовать JWT с passportjs
#Содержание: Введение Установка Создаем authentication router Реализация JWT protected router Test JWT authentication и authorization Выводы Несколько слов об https и http Все файлы /routers/auth.js, /routers/users.js, /app/passport.js and app.js Ресурсы #Введение JWT это json web token. Он используется для authentication между сервером и клиентом. Реализовать его в node.js мы будем использовать следующие модули: passport…
Как использовать react-router для нескольких языков
Это часто нужно создать сайт что будет поддерживать несколько языков, для примера я собираюсь создать мультиязычный сайт который будет поддерживать 3 языка пока что. Потом я добавлю еще несколько. И так, я хочуу создать с тремя ua, ru и en. И в этой статье я объясну вам как это реализовать. Как react-router работает с мультиязычными…
Socket.io и Аpache как reverse proxy на CentOS
В этой статье мы рассмотрим socket.io + apache как реверс прокси. CentOS по умолчания поставляется со всеми нужными модулями для работы с реверс прокси. Нам ничего не нужно устанавливать, просто настроить виртуальный хост Прежде всего мы должны открыть порт 3000 Открываем файл где наш <VirtualHost …>…</VirtualHost> размещены. Это может быть разные места в папке /etc/httpd….
Как использовать ref в react
Привет! В этой статье я собираюсь обьяснить вам как использовать react ref правильно и приведу реальный пример из жизни. И так ref это специальный атрибут в React. Мы можем добавить его к любому элементу. Он принимает callback функцию которую React будет вызывать мгновенно. Это использует в основном устанавливать фокус на некоторых элементах, но мы можемиспользовать…
redux-thunk vs redux-saga vs redux-promise
Рассмотрим несколько таких популярных библиотек для асинхронных запросов в redux redus-thunk redux-saga redux-promise Каждая из них делает одну и туже вещь, а именно отправляет асинхронные запросы, но делает их каждая по своему #redux-thunk redux-thunk — это middleware которае позволяет диспатчить функции как экшинс. Это самое простое middleware из всех трех Установка:
1 |
npm i redux-thunk |
…
Перевод wordpress из LTR в RTL фиксим сьехавшие блоки
Перевод wordpress из LTR в RTL бывает баки. у меня был баг некоторые блоки были сьехвавшими. Появляется между ними пустое пространстрво. Скрин. Такое нужно фиксить.
WAMP доступ к локальному серверу через интернет
В этой статье мы попробуем открыть доступ к локальному серверу через интернет. Думал сделать тестовый сервер на моем собственном компьютере. Для этого используем WAMP сервер и нужно дать к нему доступ. Доступ к локальному серверу через интернет Для начала нам нужно открыть доступ на нашем роутере это называется port forwarding. Для этого заходим в настройки нашего…