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


dashboard.png

Простой сервер непрерывной интеграции с открытым исходным кодом для PHP проектов, форк PHPCI.

Удобен тем, что из коробки умеет работать с библиотеками для тестирования кода (PHPUnit, Atoum, Behat, Codeception, PHPSpec), а так же с утилитами для проверки PHP-кода (PHP Parallel Lint, Pdepend, PHP Code Sniffer, PHP Cpd, PHP Cs Fixer, PHPLoc, PHPMessDetect).

Умеет собирать проекты из различных источников (Github, Bitbucket, Gitlab, Git, Mercurial, SVN), хранить и отображать статистику сборок, а так же показывать динамику ошибок.

Так же имеет множество плагинов, не относящихся напрямую к проверке, включая, например, оповещения о сборке (Email, XMPP, Slack, IRC, Flowdock, HipChat).

Проект на Github-е

API которое описанное в этом сниппете будет следовать следующим правилам:

  • Возвращает только JSON
  • Для любого запроса клиент должен пройти аутентификацию
  • Аутентификация производится через OAuth2, Grant Type = password.
  • Разные версии API будут храниться на поддоменах (например v1.api.example.com)

Для написания API было использовано php + Symfony 3 + следующие бандлы:

Продолжение

Эта библиотека проста в использовании, имеет удобный API, небольшой вес, множество локализаций. Далее мы разберём пример её использования.

Продолжение

К своему стыду обнаружил, что в классе Controller, фреймвока Symfony 3, есть следующие полезные методы. Если вы про это знаете, то листайте дальше, тут ничего нового не будет :)

json

Если нужно отдать Response в JSON, нам достаточно выполнить код:

$data = ['hello' => 'world'];
return $this->json($data);

file

Этот метод понадобиться, когда вам нужно отдать файл для скачивания:

return $this->file('/path/to/file.doc');

Продолжение

Мы хотим поделиться с вами вдохновляющими адаптивными прайс-таблицами сделанными на флексбоксе. Прайс-таблицы являются основной частью лендингов и сайтов на которых предлагают цифровые или другие платные услуги.

Продолжение

Во время тестирования REST API, вам приходит строка JSON, на вид не читабельная, особенно если вам нужно скинуть этот JSON своему коллеге. Что бы упростить эту задачу, можно воспользоваться jq

Продолжение

GitHub

Описание

Пакет создан для стандартизации всех сервисов по разгадыванию капч. У каждого сервиса есть свои особенности и теперь Вам надо будет всего лишь взглянуть на документацию конкретного сервиса чтобы правильно всё сделать. Так же пакет покрывает всю функциональсть сервисов. Если же Вам будет чего-то нехватать или будут предложения, я буду только рад их услышать.

Особенности

  • Подходит для всех сервисов по распознаванию капч
  • Можно легко добавить новый сервис, используя уже готовый движок
  • Быстрая и интуительно понятная настройка
  • Распознавание как по пути до файла, так и по ссылки
  • ReCaptcha v2 без браузера
  • Полная документация
  • Покрыт тестами

Продолжение

Для начала задаём сам шаблон прямо в HTML страницы:

<script type="html/tpl" id="my-template">
<div class="item">
    <h1>{title}</h1>
    <p class="description">{description}</p>
</div>
</script>

Далее реализовываем сам метод получения строки с заменёнными плейсхолдерами:

function renderTemplate(name, data) {
    var template = document.getElementById(name).innerHTML;

    for (var property in data) {
        if (data.hasOwnProperty(property)) {
            var search = new RegExp('{' + property + '}', 'g');
            template = template.replace(search, data[property]);
        }
    }
    return template;
}

Использовать можно так:

var html = renderTemplate('my-template', {
    title: "My cool thing",
    description: "It is really cool, isn't it?"
});

Стоит отметить, что экранирование спецсимволов не делается, так что будьте осторожны.

function removeURLParameter(url, parameter) {
    //prefer to use l.search if you have a location/link object
    var urlparts= url.split('?');   
    if (urlparts.length>=2) {

        var prefix= encodeURIComponent(parameter)+'=';
        var pars= urlparts[1].split(/[&;]/g);

        //reverse iteration as may be destructive
        for (var i= pars.length; i-- > 0;) {    
            //idiom for string.startsWith
            if (pars[i].lastIndexOf(prefix, 0) !== -1) {  
                pars.splice(i, 1);
            }
        }
        
        if(pars.length > 0) {
            url= urlparts[0]+'?'+pars.join('&');
        } else {
            url= urlparts[0];
        }

        return url;
    } else {
        return url;
    }
}


var url = 'https://jsfiddle.net/?test=123123&qwe=er24';

alert(removeURLParameter(url, 'qwe')); // https://jsfiddle.net/?test=123123

SWAP – это специальный раздел на диске или файл в который операционная система перемещает отдельные блоки оперативной памяти в случае когда оперативной памяти не хватает для работы приложений.

На VPS с небольшим объемом ОЗУ swap-файл бывает полезен, когда нет возможности создать раздел swap. Создается он следующим образом:

1) Для начала необходимо создать сам файл подкачки (/swap) необходимого объема (1GB) с помощью dd.

dd if=/dev/zero of=/swap bs=1024 count=1024K

2) С помощью утилиты mkswap записываем в файл /swap системную информацию, которую операционная система будет использовать при работе.

mkswap /swap 

3) Если Вы будете активировать SWAP вручную, т.е. каждый раз после загрузки операционной системы, то можно воспользоватся командой swapon

swapon /swap 

4) Для того, чтоб SWAP автоматически активировался при загрузке операционной системы, необходимо указать его в автоматическую загрузку через /etc/fstab

echo "/swap swap swap defaults 0 0" | tee -a /etc/fstab

Для проверки состояния SWAP:

cat /proc/swaps 

Для удаления SWAP файла необходимо деактивировать SWAP файл подкачки, затем удалить сам SWAP файл подкачки, а так же не забыть удалить запись из /etc/fstab

swapoff /swap rm /swap