Для получения полного доступа
зарегистрируйтесь


Задача: выбрать новости с id = [2, 10, 3, 88, 23] соблюдая порядок.

SELECT *
FROM news
WHERE id IN (2, 10, 3, 88, 23)
ORDER BY FIELD (id, 2, 10, 3, 88, 23)

Использование (EcmaScript5):

pipe(function(x) { return x + x }).pipe(function(x) { return x*x; }).pipe(function(x) { return x - 3; }).map([1,2,3])

Использование (EcmaScript6):

pipe(x => x + x).pipe(x => x*x).pipe(x => x - 3).map([1,2,3])

Сама функция:

function pipe(func) {
    var callstack = [func];
    return {
        pipe: function(func) {
            if (typeof(func) === "function")
                callstack.push(func);
            return this;
        },
        map: function(data) {
            callstack.forEach(
                function(func) {
                    data = data.map(function(val) {
                        return func(val); });
                });
            return data;
        }
    }
}

Результат — [ 1, 13, 33 ]

Использование

if ($('#subcategories').view()) {
   alert('Виден');
} else {
   alert('Не виден');
}
jQuery.fn.view = function () {
    'use strict';
    if (!this.length) {
        return false;
    }
    var docViewTop = $(window).scrollTop();
    var docViewBottom = docViewTop + $(window).height();

    var elemTop = this.offset().top;
    var elemBottom = elemTop + this.height();

    return ((docViewTop < elemTop) && (docViewBottom > elemBottom));
};

Так твиттер борется со вставкой себя в <iframe>.

if (window.top !== window.self) {
    document.write = "";
    window.top.location = window.self.location;
    setTimeout(function () {
        document.body.innerHTML = '';
    }, 1);
    window.self.onload = function (evt) {
        document.body.innerHTML = '';
    };
}

Сразу покажу демо:

l41m5gGukcDpZa2MU.gif

В качестве фреймворка используем Yii2, для работы с веб-сокетами Ratchet.

Добавляем через composer Ratchet:

composer require cboden/ratchet

Затем, создаём контроллер в папке commands для запуска сервера:

Продолжение

Простой шаблонизатор, когда такие монстры как Twig избыточные

class Templater {
	/** @var array Данные для шаблона */
	public $data = [];
	/** @var string Путь к шаблону */
	public $templatePath = "";

	public function render(){
		ob_start();
		ob_implicit_flush(false);
		if ($this->data) extract($this->data);
		require($this->templatePath);
		return ob_get_clean();
	}
}

Результат: 0dc7ec0c59a544528cde1e8d76d0c3ce.png

Не знал о такой манипуляции с элементами. Если вы до сих добавляете ксс-классы через if-ы, подумайте об использовании этого подхода.

.members .item:nth-child(n+3):nth-child(-n+5) {
    background: #9b59b6;
    color: #fff;
}

В этой простой библитеке доступны следующие методы:

onoffisextendDOM-ready

Если перед вами стоит простая задача, где всё, что нужно — это манипуляция с dom-элементами, нет смысла подключать jQuery.

Пара примеров того, как использовать эту библиотеку:

$(function () {
    $('.btn').on('click', function () {
        alert('I need my balalaika');
    });
});

beab4ff84a9ea9327bd0cc73dee7df86.gif

Продолжение

Мне не нравится как выглядит select в Bootstrap, и при большом кол-ве записей в нём сложно найти нужное значение. С минимальными затратами, вы можете сделать из select в Bootstrap, классную штуку с поиском, например, так: BhkmGTk.png

Сделать это можно при помощи плагина Bootstrap-select, на сайте автора указаны вариации использования плагина.

Подключаем js и css, затем добавляем класс к select-у:

<select class="selectpicker">
  <option value="c">C</option>
  <option value="c#">C#</option>
  ...
</select>

Очень быстрый пример от наших зарубежных коллег http://stackoverflow.com/questions/2524151/php-get-all-subdirectories-of-a-given-directory, как можно обойти все вложенные директории и получить их список.

$iterator = new RecursiveIteratorIterator(
    new RecursiveDirectoryIterator('/home/nepster/www/test.ru'),
    RecursiveIteratorIterator::SELF_FIRST);

foreach($iterator as $file) {
    if($file->isDir()) {
        echo $file->getRealpath(), PHP_EOL;
    }
}