Функция, принимающая другую функцию в качестве аргумента

let years = [2006, 2001, 1982, 1980];

function calculateAge(arr, fn) {
let arrRes = [];
for(let i = 0; i<arr.length; i++) {
arrRes.push(fn(arr[i]));
}
return arrRes;
}

function ageCalc(el) {
return 2018 - el;
}

function isFullAge(el) {
return el>=18;
}

let ages = calculateAge(years, ageCalc);
let fullAges = calculateAge(ages, isFullAge);
console.log(ages);
console.log(fullAges);

Module pattern

let budgetController = (function () {
 
    let x=23; //Приватное свойство
    let add = function(a) { // Приватный метод
        return x+a;
    }
    return { //возвращает объект публичных методов
        publicTest: function(b) { //Публичный метод
        console.log(add(b));
    }
}
 
})();
 
budgetController.publicTest(5); // 28

Логические задачки, которые задают на собеседованиях

Здесь я буду собирать задачки, которые задают мне на собеседованиях на веб-разработчика.

Задача про корзину с яблоками и друзей.

Есть корзина с 5 яблоками и 5 друзей. Нужно дать каждому другу по яблоку, но одно должно быть в корзине.

Решение: 4 друзьям даем по яблоку, пятому даем корзину с последним яблоком.

Задачи про переливание воды из ведра в ведро.

1 задача — есть два ведра 3  и 5 литров. Нужно при помощи переливаний воды получить в одном ведре ровно 4 литра воды.

Эта задача была в фильме Крепкий орешек 3 —  про ограбления золотовалютных резервов США.

Решение.

  1. 5вл (5л)  -> 3вл = 5лв — 2л и 3вл (3л)
  2. 5вл (2л ) — > 3вл =  3лв — 2л и 1л пусто
  3. 5вл (1л) -> 3вл = 5лв —  4л  и 3вл — 3л

2 задача — есть два ведра 5 литров  и 9 литров. Нужно набрать 3 литра воды

  1. 5лв -> 9лв = 9лв(5л)
  2. 5лв -> 9лв (5л) = 5лв(1л)
  3. 5лв(1л) -> 9лв (пустое) = 9лв (1л)
  4. 5лв(5л) -> 9лв(1л) = 9лв(6л)
  5. 5лв(5л)-> 9лв(6л) = 5лв(2л)
  6. 5лв(2л) -> 9лв(пустое) = 9лв(2л)
  7. 5лв(5л) -> 9лв(2л) = 9лв(7л)
  8. 5лв(5л)-> 9лв(7л) = 5лв(3л)

Задачи про мешки с монетками и весы

Задача 1 — есть 8 мешков с монетами, в одном мешке монеты фальшивые и весят меньше чем настоящие. За два взвешивания на аптекарских весах нужно выяснить в каком мешке монеты фальшивые.

Решение. Берем по монете из каждого мешка и как-то их подписываем. Раскладываем монеты в три кучки. Взвешиваем две кучки по три монеты. Если кучки весят одинаково — фальшивой нет.  Тогда взвешиваем две монеты из 2 кучки. Если фальшивая монета в одной из кучек по 3 монеты — берем две монеты из этой кучки и взвешиваем. Если монеты весят одинако —  фальшивая третья монета.

Задача 2  — есть 10 мешков с монетами. В одном мешке монеты фальшивые. Есть обычные напольные весы. Взвешивать можно 1 раз. Известно, что настоящая монета весит 2 грамма, а фальшивая — 1 грамм.

Нумеруем мешки. Из первого берем одну монету, второго две, третьего — три  т.д. Взвешиваем все монеты сразу и по полученному значению высчитываем — в каком мешке монеты.

Полезные ресурсы и библиотеки js

Как сделать иконку для сайта favicon.ico

Простой  онлайн-сервис по созданию иконок — http://www.favicon.cc

Загружаете свою картинку, скачиваете готовую иконку.

Что бы установить иконку на сайт, нужно между тегами <head></head> прописать код

<link rel=»icon» href=»favicon.ico» type=»image/x-icon»>
<link rel=»shortcut icon» href=»favicon.ico» type=»image/x-icon»>

а саму иконку загрузить в корневую директорию сайта.

Как поменять иконку в joomla

Загружаем свою favicon.ico через ftp в папку шаблона, установленного по умолчанию (templates/ваш шаблон/)

WordPress и старые версии php

В последней версии wordpress начал ругаться на мою 5.4 версию php. Пришлось мигрировать на версию 7.3. В связи с этим столкнулась с рядом ошибок. Первая ошибка возникла с файлом wp-config.php, выдавало Cannot modify header information — headers already sent by (output started at wp- config.php in 1). Помогло сохранение этого файл без BOM.

Другие ошибки были связаны с jetpack. В одном случае помогло переустановить плагин из консоли, а в другом случае были множественные ошибки и я не могла зайти в консоль. Пришлось заходить через ftp, переименовав папку с плагином, и только так исчезли ошибки и я смогла зайти в консоль и переустановить плагин.