wall
можно получить только с редиректом на https://oauth.vk.com/blank.html
. Так ВК борется со спамом, когда у пользователя один раз получают разрешение, и потом спамят от имени его аккаунта.Данное право доступа по умолчанию недоступно для сайтов (игнорируется при попытке авторизации для приложений с типом «Веб-сайт» или по схеме Authorization Code Flow).
blank.html
:не делайте так!
Попросить у пользователя скопировать адресную строку окна и вставить в форму на вашем сайте-_
не могут встречаться в base64. Может, это разделитель?src
и потом вы добавляете свойство srcAssets
.const X = {...}
сначала правая часть – создаётся объект без имени с указанными свойствами; потом ссылка на этот объект записыватся в константу X
. Поэтому в правой части рано использовать X
– он ещё не определён.X
с известными и независимыми свойствами, а позже задать ему ещё свойства:const PATHS = {
src: 'src'
};
PATHS.srcAssets = PATHS.src + '/assets';
http://oauth.vk.com/blank.html
c токеном в хэше, вытащить его вы сможете только, будучи «над» браузером пользователя. Web extension, установленный в браузере пользователя или целиком ваше приложение на каком-нибудь Electron с компонентом браузера смогут получить такие данные. В обычном браузере этого никак не сделать: чужой домен.users.get()
с этим токеном: вернёт данные пользователя, выдавшего токен. (x, y, z)
.(0, 0)
и смотрит точно на (0, 0, 0)
трехмерного мирка. У экрана ось X
вправо, ось Y
вверх. В мирке ось x
влево, ось y
вверх, ось z
вдаль.x
точно так же добавит X
'у экранному. Y
чуть меньше из-за угла в 45°. Т.е. y домножим на корень-из-2 пополам.z
.X = x;
Y = (y + z) * 0.7071;
-1..1
. Одинаковые seed
и x, y
всегда вернут одинаковое значение. в каких случаях использовать тернарные операторы
0 1
1 0
https://vash-site.com/proxy/google.com
– а все запросы к /proxy/*
будут проксироваться на указанный после слеша домен.// меняет два элемента массива in-place
function swap(arr, a, b) {
arr[a] = arr.splice(b, 1, arr[a])[0];
}
const Twelve = [1, 2, 3, 4, 5, 6, 7, 8 ,9 ,10 ,11 ,12];
swap( Twelve, 2, 5); // индексы считаются от 0
swap( Twelve, 7, 11);
swap( Twelve, 9, 4);
Twelve // [1,2,6,4,10,3,7,12,9,5,11,8]
function isAscending(arr) {
if (arr.length < 2) return true;
let prev = arr[0];
for (let i = 1; i < arr.length; i++) {
if (arr[i] < prev) return false;
prev = arr[i];
}
return true;
}
isAscending([1,2,3,4,5]) // true
isAscending([1,2,1,4,5]) // false