Quantcast
Channel: Библиотека знаний
Viewing all 1318 articles
Browse latest View live

O себе - ↷ Операцией перемещения обновлены ссылки

$
0
0

O себе

  • Активно увлекся программированием в 1990 году. Свое знакомство с WEB начал с интерпритатора Perl, затем плавно перешел на PHP. Огромное кол-во времени провожу за чтением специализированной литературы. Не увлекаюсь соц сетями и не состою ни в каких братствах. Всегда готов помочь любому обратившемуся.
  • Имею не маленький опыт в настройке UNIX/LINUXсерверов и написанию программ на PHP. В качестве основных инструментов разработки использую PHPed + DBG (на платформе Win7), также последнее время работаю на Mac OS, где постоянно применяю ряд программ: Homebrew, PhpStorm IDE for PHPитд (Полный список ПО доступно тут). Cерверную часть предпочитаю развертывать на Debianсистемах. В своих работах использую Yii Framework / YiiFramework 2и Drupal.
  • Также увлекаюсь спортом и люблю слушать качественную музыку.
  • Имею профили: Drupal.ru, YiiFramework, GitHub, Bitbucket
  • Являюсь разработчиком: roof-builder, 1С + Drupal

Vue.Js Framework - [RU]

$
0
0

Vue.Js Framework

В отличие от фреймворков-монолитов, Vue создан пригодным для постепенного внедрения. Его ядро в первую очередь решает задачи уровня представления (view), что упрощает интеграцию с другими библиотеками и существующими проектами. С другой стороны, Vue полностью подходит и для создания сложных одностраничных приложений (SPA, Single-Page Applications)

Документация

Объект VueJs

Vue.use({
    install:function(Vue, options){ 
        Vue.mixin({ 
        }); 
},{
    createComputed:true}); 
var app =new Vue({// Используется в раннем связывании
    el:'#app',
    name:'nameApp',//
    props:[],//
    data(){},//
    methods:{},//
    computed:{},//
    watch:{},//
    components:{},// Событие перед созданием компонента
    beforeCreate(){},// Событие после создания компонента
    created(){},// 
    beforeMount(){},});

Глобальная конфигурация

Vue.config - это объект, содержащий глобальные конфигурации Vue. Вы можете изменить свои свойства, перечисленные ниже, перед загрузкой приложения:

  • Vue.config.silent = true
  • Vue.config.devtools = true
  • Vue.config.errorHandler = function (err, vm, info) { ... }
  • Vue.config.warnHandler = function (msg, vm, trace) { ... }
  • Vue.config.ignoredElements = [
    /^ion-/,
    'another-web-component' ]
  • Vue.config.keyCodes = {}

Конструкции html (атрибуты)

  • v-bind, : - Связывает HTMLатрибут с переменными или методом (:href, :src), также можно применять java-script выражения
  • v-on, @ - Методы (click, change, blur, etc) или в нативной декларации (onClick, onChange, onBlur)
  • v-model - Связывает входной параметр value и событие input (двусторонняя привязка)
  • v-for - Конструкциия for для массива или для массива возвращенного методом
    <div :v-for="method in methods"></div>
  • v-if - Конструкция if значение переменной или переменая возращаемоя методом (скрывает или показывает тэг)
  • v-html - Вывод HTML
  • v-show -
  • :is - наименование компонента, если по какой-либо причине нельзя испозовать тег в качестве названия компонента
    <div :is="com1"><div><!-- или --><com-1></com-1>

Свойства объекта

  • data: {}
  • methods: {}
  • computed: {} - Отслеживает переменные внутри методов декларированных в computed (возвращает значение)
  • props: [] - Аналогично объявлению входящих в функцию параметрах
  • wath: {} - Отслеживает изменение именованных как метод переменных
  • template: "" -
  • model: {}
  • components: {} - Список копонентов
  • filters: {} - Применяются для обработке в выводе {{ | filterName}}
  • directives: {} - Методы представляют из себя директивы v-todo-focus, имена методов указываются без v-
    • Пример
      <inputclass="edit"type="text" v-model="todo.title" v-todo-focus="todo == editedTodo" @blur="doneEdit(todo)" @keyup.enter="doneEdit(todo)" @keyup.esc="cancelEdit(todo)">
  • mountend: {} -

Методы объекта

  • this.$emit() - Вызов метода дочернего компанента
  • this.$el - виртуальный дом
  • this.$mount(selector) - При этом необходимо из app удалить указание елемента el
  • this.$refs - Ссылки на реальный дом елементы
    • <element-name ref="">
  • this.$resource - Сторонний модуль vue-resource (не входит в vuejs)
  • this.$slots - Позмоляет передавать HTML, в качестве строки (В шаблоне необходимо использовать тэг <slot>, так - же он может быть именован <slot name="myslot">)

События

  • beforeCreate
  • created
  • beforeMount
  • mounted
  • beforeUpdate
  • updated
  • beforeDestroy
  • destroyed
  • activated
  • deactivated
  • errorCaptured

Хуки

  • created - Компанент собран, но не помещен в дом

Расширения / Компоненты / Процессоры

Ссылки

Обучение / Трюки / Статьи

Видео

RU

En

Восстановление настроек коробочки - [Восстанавливаем ключи для запуска через vagrant]

$
0
0

Восстановление настроек коробочки

Иногда случается так, что случайно или намеренно была удалена папка .vagrant, содержащая настройки для подключения к ранее созданной виртуальной машине.

Восстанавливаем конфигурацию

$ vagrant up

При этом будет создана новая виртуальная машина с настройками по умолчанию. В данном случае мы рассматриваем виртуальную машину на базе Virtualbox. Для восстановления нужных нам настроек мы открываем Virtualbox.app находим вновь созданную машину и останавливаем ее. Далее находим папки содержащие старые и новые файлы конфигурации виртуальной машины и жесткого диска. Как правило это файл с расширение vmdk.

Допустим старая машина называлась workshop_y2aa_1019854008234_12823 и ее файлы конфигурации находились в папке

/Users/imac/VirtualBox VMs/workshop_y2aa_1019854008234_12823/contrib-stretch.vmdk

Где contrib-stretch.vmdk - это название виртуального жесткого диска, состоящее из название установленного дистрибутива. Описанного в конфигурационном файле Vagrantfile. К примеру для Debian 9 contrib это будет -

config.vm.box = 'debian/contrib-stretch64'

Копируем из старой папки только файл - образа жесткого диска. Для MacOS, он находится в папке по адресу /Users/imac/VirtualBox VMs/

Пример:

$ cp/Users/imac/VirtualBox VMs/workshop_y2aa_1019854008234_12823/contrib-stretch.vmdk /Users/imac/VirtualBox VMs/workshop_y2aa_1519853008354_63852/contrib-stretch.vmdk

Затем запускаем машину и логинимся как обычно, или с помощью ключа или пароля. Запускать машину необходимо через Virtualbox.app, так как vagrant устанавливает седенение с хост машиной с использованием rsa ключа, который на данный момент у нас отсутствует.

Восстанавливаем ключи для запуска через vagrant

Логинимся под стандартным пользователем vagrant c паролем vagrantили без пароля. Предварительно в настройках ssh сервера виртуальной машины должно быть разрешено подключение с использованием пароля.

Переходим на страницу с заранее созданными ключами https://github.com/hashicorp/vagrant/tree/master/keys (благодарим hashicorp), или создаем ключи с помощью утилиты ssh-keygen (varant работает только с RSA ключами).

Прописываем приватный ключ https://raw.githubusercontent.com/hashicorp/vagrant/master/keys/vagrantдля vagrant в файл

.vagrant/machines/y2aa/virtualbox/private_key

И затем заходим на виртуальную машину и там прописываем ключ https://raw.githubusercontent.com/hashicorp/vagrant/master/keys/vagrant.pub

~/.ssh/authorized_keys

Затем перезапускает нашу виртуальную машину через vagrant

$ vagrant halt
$ vagrant up
Все должно работать без проблем.

PHP отладчик XDebug - [Основный настройки]

$
0
0

PHP отладчик XDebug

Подключение и настройка

nano ./xdebug.ini

zend_extension=xdebug.so

[debug]
xdebug.auto_trace=0
xdebug.collect_includes=1
xdebug.collect_params=1
xdebug.collect_return=0
;xdebug.default_enable=1
xdebug.extended_info=1
xdebug.show_local_vars=1
xdebug.show_mem_delta=1
xdebug.max_nesting_level=100
xdebug.cli_color=1
xdebug.scream=0

; Limits
xdebug.var_display_max_depth = 5; -1 No limit
xdebug.var_display_max_children = 256; -1 No limit
xdebug.var_display_max_data = 1024; -1 No limit

; trace
xdebug.trace_format=0
xdebug.trace_output_dir= "/var/log/php5-fpm/php-fpm-xdebug-trace"
xdebug.trace_options=0
xdebug.trace_output_name=timestamp

; debugger settings
xdebug.remote_autostart=0; 1 - Не требует XDEBUG_SESSION = xdebug в параметрах или куках, 0 - требует
xdebug.remote_enable=1
xdebug.remote_connect_back = 1
xdebug.remote_handler=dbgp
xdebug.remote_host=127.0.0.1; - отладка на локальной машине
xdebug.remote_host=192.168.1.6; - отладка на удаленной машине
xdebug.remote_mode=req
;xdebug.remote_mode = JIT
xdebug.remote_port=9000
xdebug.remote_log="/var/log/php5-fpm/php-fpm-xdebug-remote"
xdebug.idekey=xdebug

; profiler settings
xdebug.profiler_append=0
xdebug.profiler_enable=0
xdebug.profiler_enable_trigger=1
xdebug.profiler_output_dir= "/var/log/php5-fpm/php-fpm-xdebug-profiler"
xdebug.profiler_output_name=profile.out

; Request
;xdebug.dump.GET=*
;xdebug.dump.REQUEST =*
;xdebug.dump.SERVER=HTTP_HOST, SERVER_NAME

Основные настройки

  • xdebug.remote_autostart
  • xdebug.remote_host
  • xdebug.var_display_max_depth = 5; -1 No limit
  • xdebug.var_display_max_children = 256; -1 No limit
  • xdebug.var_display_max_data = 1024; -1 No limit

Web XDebug

XDEBUG_SESSION_START=xdebug
XDEBUG_SESSION=xdebug

Console XDebug

$ exportPHP_IDE_CONFIG="serverName=www.host-name.ztc"&&exportXDEBUG_CONFIG="remote_host=192.168.1.6 idekey=xdebug"&& php7.0 ./yii

Где:

  • PHP_IDE_CONFIG - Наименование сервера из "Settings / Preferences | Languages & Frameworks | PHP | Servers"
    • Так-же желательно установить маппирование путей (локальных и на удаленном сервере)
  • XDEBUG_CONFIG
    • remote_host - IP Хоста, производящего отладку
    • idekey - Ключ, устанавливаемый в списке серверов "Settings / Preferences | Languages & Frameworks | PHP | Servers", "Ide key(session id)"

Хелпер для более одного отладчика

Если на сервере стоит более одного отладчика и в консоли по умолчанию, те в php.ini найденой по php -i, стоит другой отладчик в параметре zend_extension.

nano ~./.bashsrc

function phpx(){
export PHP_INI_SCAN_DIR=/etc/php5/cli-xdebug/conf.d && php -c /etc/php5/cli-xdebug/php.ini -q "$@";
}

и далее вызываем наш скрипт

phpx sample.php

Мульти соеденения

  • apt-get install php5-xdebug
  • cd /opt
  • mkdir pydbgpproxy
  • cd pydbgpproxy
  • wget https://github.com/Mirocow/pydbgpproxy/archive/master.zip ./ - Установить прокси (Python Remote Debugging Client)
  • unzip master.zip ./
  • echo "export PYTHONPATH=\${PYTHONPATH}:/opt/bin/pydbgpproxy/pythonlib" » ~/.bashrc
  • ln -s $(pwd)/pydbgpproxy /usr/local/bin/pydbgpproxy
  • запустить /usr/loca/bin/pydbgpproxy -i 0.0.0.0:9001 -d 9000
  • Установить уникальный ключ для хоста.

  • Зарегистрировать на сервере

nano ./xdebug.ini

; configuration for php xdebug module
; priority=20
zend_extension=xdebug.so

[debug]
xdebug.auto_trace=0
xdebug.collect_includes=1
xdebug.collect_params=1
xdebug.collect_return=0
;xdebug.default_enable=1
xdebug.extended_info=1
xdebug.show_local_vars=1
xdebug.show_mem_delta=1
xdebug.max_nesting_level=100

; trace
xdebug.trace_format=0
xdebug.trace_output_dir= "/var/log/php5-fpm/php-fpm-xdebug-trace"
xdebug.trace_options=0
xdebug.trace_output_name=timestamp

; debugger settings
xdebug.remote_autostart=0; 1 - Не требует XDEBUG_SESSION = xdebug в параметрах или куках, 0 - требует
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
;xdebug.remote_mode = JIT
xdebug.remote_port=9000
xdebug.remote_log="/var/log/php5-fpm/php-fpm-xdebug-remote"

; profiler settings
xdebug.profiler_append=0
xdebug.profiler_enable=0
xdebug.profiler_enable_trigger=1
xdebug.profiler_output_dir= "/var/log/php5-fpm/php-fpm-xdebug-profiler"
xdebug.profiler_output_name=profile.out

Скрипт загрузки

nano /etc/init.d/pydbgpproxy.sh

#! /bin/sh
### BEGIN INIT INFO
# Provides:          Python Remote Debugging Client
# Required-Start:    $remote_fs dbus udev
# Required-Stop:     $remote_fs dbus udev
# Should-Start:      $syslog
# Should-Stop:       $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Python Remote Debugging Client
# Description:       Python Remote Debugging Client.
### END INIT INFO

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DESC="Python Remote Debugging Client"
NAME="pydbgpproxy"
DAEMON=/usr/local/bin/pydbgpproxy
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/pydbgpproxy.sh
DAEMON_OPTS="-i 0.0.0.0:9001 -d 9000"
DAEMON_LOG=/var/log/$NAME.log


# Gracefully exit if the package has been removed.
test -x $DAEMON || exit 0

. /lib/lsb/init-functions

test -f /etc/default/pydbgpproxy && . /etc/default/pydbgpproxy

#
#       Function that starts the daemon/service.
# --background
d_start() {
        start-stop-daemon --oknodo --make-pidfile --start --quiet --pidfile $PIDFILE \
                --exec $DAEMON -- $DAEMON_OPTS 1>$DAEMON_LOG 2>&1 &
        return "$?"
}

#
#       Function that stops the daemon/service.
#
d_stop() {
        start-stop-daemon --stop --quiet --pidfile $PIDFILE
        return "$?"
}


case "$1" in
  start)
        if [ -f $PIDFILE ]; then
                echo "$NAME is running."
                exit 0
        fi
        log_daemon_msg "Starting $DESC" "$NAME"
        d_start
        case "$?" in
                0) log_end_msg 0 ;;
                1) log_progress_msg "already started"
                   log_end_msg 0 ;;
                *) log_end_msg 1 ;;
        esac
        ;;
  stop)
        log_daemon_msg "Stopping $DESC" "$NAME"
        d_stop
        case "$?" in
                0) log_end_msg 0 ;;
                1) log_progress_msg "already stopped"
                   log_end_msg 0 ;;
                *) log_end_msg 1 ;;
        esac
        if [ -f $PIDFILE ]; then
                rm $PIDFILE
        fi
        ;;
  restart|force-reload)
        $0 stop
        $0 start
        ;;
  status)
        status_of_proc -p $PIDFILE $DAEMON $NAME && exit 0 || exit $?
        ;;
  *)
        echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload|status}" >&2
        exit 1
        ;;
esac

exit 0
# chmod 775 /etc/init.d/pydbgpproxy.sh
# chkconfig pydbgpproxy.sh on

Запуск в коде

ini_set('xdebug.profiler_enable', 1);
xdebug_enable();
xdebug_disable();
<?php
    xdebug_start_code_coverage();

    function a($a) {
        echo $a * 2.5;
    }

    function b($count) {
        for ($i = 0; $i < $count; $i++) {
            a($i + 0.17);
        }
    }

    b(6);
    b(10);

    var_dump(xdebug_get_code_coverage());
?>

Подробнее

Vagrant - [Пакеты]

$
0
0

Vagrant

Установка

$ apt install-f
$ apt --fix-brokeninstall
$ apt install ruby-dev vagrant
$ apt install virtualbox virtualbox-ext-pack
$ modprobe -a vboxguest vboxsf vboxvideo
$ modprobe vboxnetadp
$ modprobe vboxnetflt

Коробочки

Плагины

Системы управления конфигурацией

Docker - по сути это некий контейнер в который вы можете засунуть операционную систему, свой софт и базу данных и запустить его. У контенеров есть слои, ОС - нижний слой, софт выше слой, и ваше приложение и данные - верхний слой. Контенеры удобны для переноса приложения и сопровождающего окружения на сервер или в облако. Docker не создает виртуальную систему, а только эмулирует ее пробрасывая системные вызовы и работает стабильно только в Linux. С недавнего времени появилась версия для MacOS. Обычно сброка бокса описана в файле Dockerfile.

Vagrant, же, напротив - базируется на системах виртуализации (VirtualBox, libvirt, xen). С самого начала он создает полноценную виртуальную машину, выполняет скрипт provision, который устанавливает все окружение и настраивает его. Vagrant работает на всех операционных системах в силу своей природы.

  • Shell — старые добрые shell-скрипты. В XXI веке уже не интересно.
  • Ansible— молодая, набирающая обороты, система управления конфигурацией.
  • Chef— про него, пожалуй, слышали все. Поддерживается standalone (Chef Solo) и серверная (Chef Client) версии.
  • Docker— модная в последнее время система, поддерживающая концепцию Immutable Server.
  • Puppet— одна из наиболее распространенных систем управления конфигурацией. Поддерживается standalone и серверная версия.
  • Salt — система управления конфигурацией Salt Stack.

Системы виртуализации

Создание коробки из рабочей виртуальной машины

У нас есть виртуальная машина с наименованием "vm". В отключено состоянии выполняем команду от root. Где /Users/mirocow/vagrant/vm.box является путем до создаваемой коробки.

$ rm/Users/mirocow/vagrant/vm.box
$ vagrant package --base vm --output/Users/mirocow/vagrant/vm.box

Запуск локальных коробок

$ vagrant box add foo-box /path/to/vagrant-box.box
$ vagrant init foo-box
$ vagrant up

On-line конфигураторы

Рецепты

Yii2

Wordpress

Остальные

Пакеты

Сатьи / Сайты / Документация

Шаблонизаторы / HTML helpers - ↷ Страница перемещена из back-end:templates в develop:back-end:templates

PHP - ↷ Операцией перемещения обновлены ссылки

$
0
0

Node.JS - ↷ Страница перемещена из nodejs:start в develop:nodejs:start

$
0
0

Node.JS

Установка nodejs + npm

Debian

Пакетный менеджер npm

с репозитория

Исправление ошибок

  • installing from npm fails
npm config set registry http://registry.npmjs.org/

Демонизируем Node.Js / Forever

forever - модуль разработанный nodejitsu, - нужен для того, чтобы запускать приложения в виде демона (режиме постоянного выполнения - отсюда и название модуля). Если приложение по каким-то причинам прекращает свое выполнение, то forever его перезапускает. Также, данный модуль имеет API, так что вы можете использовать его в коде своих проектов.

forver может быть установлен при помощи npm:

sudo npm -g install forever

Отладка

Документация

Библиотеки

Парсинг / Web console (webkit)

Статьи

Видео

Ссылки

Проекты


Python - ↷ Страница перемещена из python:python в develop:python:python

$
0
0

Python

Debian - установка

  • apt-get install python python-dev python-support python-lxml, python-gevent openssl python-gevent-socketio python-psutil python-reconfigure python-daemon python-passlib python-requests python-dbus python-imaging stunnel apt-show-versions python-catcher python-exconsole
  • easy_install pip

Установка pip

Установка pip пакетов (зависимостей)

Ключи:

  • -v -
  • -I, --ignore-installed - игнорирует предыдущую версию

Установка пакетов из разных источников

REPO

$ pip install csvkit

GIT

$ pip installgit+https://github.com/wireservice/csvkit.git

ZIP

pip installgit+https://github.com/wireservice/csvkit/archive/master.zip

Обновление pip пакетов

Обновление пакета

$ pip install-U csvkit

Обновление всех пакетов

$ pip freeze --local|grep-v'^\-e'|cut-d = -f1|xargs-n1 pip install-U
$ pip freeze --local|grep-v'^\-e'|cut-d = -f1|xargs-n1 pip install--upgrade

Отладка

ORM

FrameWork/Библиотеки

Софт

PHP2Python

Сообщества

Документация / Книги / Статьи / Инструменты для изучения языка

Книги

  • Django. Подробное руководство

А. Головатый

  • Django. Разработка веб-приложений на Python

Джефф Форсье, Пол Биссекс, Уэсли Дж. Чан

  • Django: Практика создания Web-сайтов на Python

Владимир Дронов

  • Элемент ненумерованного списка * Элемент ненумерованного спискаPython 3 и PyQt 5. Разработка приложений

Николай Прохоренок, Владимир Дронов

  • Python 3. Самое необходимое

Николай Прохоренок, Владимир Дронов

  • Python в системном администрировании UNIX и Linux

Ноа Гифт, Джереми М. Джонс

  • Python и анализ данных

Уэс Маккинни

  • Python на практике

Марк Саммерфилд

  • Python на примерах. Практический курс по программированию

А. Васильев

  • Python. К вершинам мастерства

Лучано Рамальо

  • Python. Карманный справочник

Марк Лутц

  • Python. Подробный справочник

Дэвид Бизли

  • Python. Самое необходимое (+ Видеокурс на DVD)

Николай Прохоренок

  • Python: создание приложений. Библиотека профессионала

Уэсли Дж. Чан

  • Автоматизация рутинных задач с помощью Python: практическое руководство для начинающих

Эл Свейгарт

  • Изучаем Python

Марк Лутц

  • Построение систем машинного обучения на языке Python

Ричарт В., Коэльо П.Л.

  • Программирование компьютерного зрения на Python

Ян Эрик Солем

  • Программирование на Python 3. Подробное руководство

Марк Саммерфилд

  • Программирование на Python для начинающих

Майк МакГрат

  • Программирование на Python. Том 1

Марк Лутц

  • Программирование на Python. Том 2

Марк Лутц

  • Программируем на Python

Майкл Доусон

  • Простой Python. Современный стиль программирования

Билл Любанович

  • Разработка веб-приложений с использованием Flask на языке Python

Мигель Гринберг

  • Секреты Python. 59 рекомендаций по написанию эффективного кода

Бретт Слаткин

  • Скраппинг веб-сайтов с помощью Python

Митчелл Р.

Видеоуроки

RUS

ENG

HTTP/REST Clients - ↷ Страница перемещена из developing:rest-clients в develop:rest-clients

SQL Запросы к Базам Данных (MySql, Postgre, MariaDB) - ↷ Страница перемещена из sql:sql в develop:sql:sql

Rhodecode - ↷ Операцией перемещения обновлены ссылки

$
0
0

Rhodecode

http://www.python-blog.com/

  • paster make-config RhodeCode production.ini - создание конфигурационного файла
  • nano ./production.ini
  • apt-get install python-mysqldb
  • paster setup-app production.ini - создание бд
  • paster serve production.ini - запуск сервера
  • paster make-index production.ini -f
  • paster make-index production.ini --index-only=vcs,rhodecode

Установка и настройка

Ссылки / Аналогичные проекты - ↷ Операцией перемещения обновлены ссылки

$
0
0

Ссылки / Аналогичные проекты

Интересное

Ссылки

Форумы

Сайты по операционным системам

Остальные

Ссылки

Сайты/Блоги/Статьи

Web development

Ruby

Социальные сети

Проекты / Репозитории

Словари

Заголовок

Алгоритмы

Электронные книги

PDF, DJVU

fb2

Программы

Коныерторы

Фильмы

PHP

Почтовые сервисы

Взлом паролей

Программы

Хеши

Видео каналы

Java-Script

РИФ

Заголовок

Информация по авиа рейсам

В реальном времени

WebRTC

Billing

Payment processing libraries

Gateways

Merchants

Bills

Фильмы

PostrgeSQL - ↷ Страница перемещена из postgresql в develop:postgresql

$
0
0

PostrgeSQL

Создание БД

Настраиваем доступ пользователю postgresql
$ echo"ALTER USER postgres WITH ENCRYPTED PASSWORD 'postgres';"|sudo-u postgres psql
$ echo"CREATE DATABASE fias WITH OWNER postgres;"|sudo-u postgres psql

Создание дампа / Backup create

$ pg_dump -U postgres -d fias > fias.sql
$ pg_dump -U postgres -d fias |gzip> fias.gz
$ pg_dumpall > outfile.sql
$ pg_dump --host 127.0.0.1 --port5432--username"postgres"--no-password--format plain --no-owner--no-privileges--no-tablespaces--verbose--no-unlogged-table-data--file"/dump3""test"
$ sudo-u postgres pg_dump -U postgres -d fias -n public >/tmp/fias.sql
$ sudo-u postgres pg_dump -U postgres -d fias -n public --schema-only

Восстановление из дампа / Restore

# psql park < ./park.sql
# psql -h localhost -f dump2 -U postgres test2
# psql –h localhost –p 5432 --dbname=park --username=mirocow < park2.20151018_142522/park2.sql
# gunzip < ./fias.gz | psql -U postgres -h localhost fias

Клиенты

Документация

Компаненты / Настройка

Книжки/Статьи

Ссылки

Восстановление пароля - ↷ Страница перемещена из mysql в develop:mysql

$
0
0

Восстановление пароля

Восстановление пароля

Открывем 2 консоли и в одной запускаем сервекр без привелегий, а в другой выполняем вход в БД пользователем root.

console 1:

$ service mysql stop
$ /usr/bin/mysqld_safe --skip-grant-tables--user=mysql
$ /etc/init.d/mysql restart

console 2:

$ mysql -u root
$ UPDATE mysql.user SET Password=PASSWORD('newpwd') WHERE User='root';
$ FLUSH PRIVILEGES;
$ EXIT;
$ pkill -9 mysql

Если пользователь отсутствует

$ mysql --user=root mysql
mysql> GRANT ALL PRIVILEGES ON *.* TO root@localhost IDENTIFIED BY 'password' WITH GRANT OPTION;
mysql> GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY 'password' WITH GRANT OPTION;
mysql> GRANT RELOAD,PROCESS ON *.* TO root@localhost;
mysql> GRANT USAGE ON *.* TO root@localhost;

Если пользователь debian-sys-maint отсутствует

Если запущен mysqld --skip-grant-tables

shell> mysql --user=root mysql
mysql> INSERT INTO user VALUES('localhost','root', PASSWORD('password'),'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',1000,1000,1000,1000,'','','N','N');
mysql> INSERT INTO user SET Host='localhost', User='root', Reload_priv='Y', Process_priv='Y';
mysql> INSERT INTO user (Host,User,Password) VALUES('localhost','root','');
mysql> FLUSH PRIVILEGES;

Shell - Часто применяемые команды - ↷ Страница перемещена из shell в develop:shell

$
0
0

BASH, SH - ↷ Страница перемещена из shell:bash в develop:shell:bash

$
0
0

BASH, SH

Переменные и конфиг файлы

Согласно мануалу по bash, .bash_profile исполняется для оболочек, осуществляющих авторизацию пользователя. .bashrc исполняется для интерактивных оболочек, не авторизующих пользователя.

Документация

Программирования

Видео уроки

Применить настройки

  • source ~/.bashrc

Примеры конфигурационных файлов

Примеры

Замена текста в файлах с возможностью рекурсии

find ./ -type f -exec sed -i 's/CHARSET=utf8/CHARSET=cp1251/g' {} \;

Прогрессбар

Видео уроки

RUS

ENG

Composer (php) - ↷ Страница перемещена из php:composer в develop:php:composer

$
0
0

Composer (php)

Установка

$ curl -sS https://getcomposer.org/installer | php
$ mv composer.phar /usr/local/bin/composer

Установка с параметрами

Устанока пакетов из composer.json

composer --prefer-dist install

Ключи

Справка

  • composer install -h
  • composer update -h
  • composer require -h
  • composer update -vvv

install

--prefer-source            Forces installation from package sources when possible, including VCS information.
      --prefer-dist              Forces installation from package dist even for dev versions.
      --dry-run                  Outputs the operations but will not execute anything (implicitly enables --verbose).
      --dev                      Enables installation of require-dev packages (enabled by default, only present for BC).
      --no-dev                   Disables installation of require-dev packages.
      --no-custom-installers     DEPRECATED: Use no-plugins instead.
      --no-autoloader            Skips autoloader generation
      --no-scripts               Skips the execution of all scripts defined in composer.json file.
      --no-progress              Do not output download progress.
      --no-suggest               Do not show package suggestions.
  -o, --optimize-autoloader      Optimize autoloader during autoloader dump
  -a, --classmap-authoritative   Autoload classes from the classmap only. Implicitly enables `--optimize-autoloader`.
      --ignore-platform-reqs     Ignore platform requirements (php & ext- packages).
  -h, --help                     Display this help message
  -q, --quiet                    Do not output any message
  -V, --version                  Display this application version
      --ansi                     Force ANSI output
      --no-ansi                  Disable ANSI output
  -n, --no-interaction           Do not ask any interactive question
      --profile                  Display timing and memory usage information
      --no-plugins               Whether to disable plugins.
  -d, --working-dir=WORKING-DIR  If specified, use the given directory as working directory.
  -v|vv|vvv, --verbose           Increase the verbosity of messages: 1for normal output, 2formore verbose output and 3for debug

update

Установка пакета

php composer.phar require --prefer-dist yiisoft/yii2-gii "*"
php composer.phar require --prefer-dist kop/yii2-scroll-pager "dev-master"
php composer.phar require -vvv --prefer-dist webcreate/jquery-ias "dev-master"
  • --prefer-dist - Удаляет папку .git из модулей

Удаление пакета

php composer.phar remove skeeks/cms-shop

Флаги

  • --prefer-dist - Не заливать репозиторий а взять из архива

Установка пакета через конфиг

"kop/yii2-scroll-pager": "dev-master"

Установленные пакеты

php composer.phar show -i

Обновление пакетов

php composer.phar update

Отключение кеша или его очистка

Отключение

COMPOSER_CACHE_DIR=/dev/null composer install

Очистка

rm -rf "`composer config cache-dir`"

Возникающие ошибки

The "https://asset-packagist.org/packages.json" file could not be downloaded: SSL operation failed with code 1.
https://asset-packagist.org could not be fully loaded, package information was loaded from the local cache and may be out of date 
$ php -i|grep-i ssl
Registered Stream Socket Transports => tcp, udp, unix, udg, ssl, sslv2, tls, tlsv1.0, tlsv1.1, tlsv1.2
SSL => Yes
SSL Version => OpenSSL/1.0.2l
OpenSSL support => enabled
core SSL => supported
extended SSL => supported
openssl
OpenSSL support => enabled
OpenSSL Library Version => OpenSSL 1.1.0f  25 May 2017
OpenSSL Header Version => OpenSSL 1.1.0e  16 Feb 2017
Openssl default config =>/usr/lib/ssl/openssl.cnf
openssl.cafile => no value => no value
openssl.capath => no value => no value
Native OpenSSL support => enabled

Расширения

Видеоуроки

Git - распределённая система управления версиями. - ↷ Страница перемещена из git в develop:git

$
0
0

Git - распределённая система управления версиями.

Инструкции

Инициализация / init

$ git init
$ git config--global user.name "John Doe"
$ git config--global user.email johndoe@example.com

Linux/Unix/Macos

global
$ git config--global core.filemode false
local
$ git config core.filemode false

Windows

global
$ git config--global core.filemode false
$ git config--global core.preloadindex true
$ git config--global core.fscache true
$ git config--global gc.auto 256
$ git config--global status.submoduleSummary false
local
$ git config core.filemode false
$ git config core.preloadindex true
$ git config core.fscache true
$ git config gc.auto 256
$ git config status.submoduleSummary false

Конфигурация

Вывод установленных параметров

$ git config--local-l

Установка параметров

$ git config--local core.filemode true

Актуализация изменений

$ git checkout-- . &&git pull&&git submodule update --init--recursive

Локальное хранилище / stage

  • Добавление в индекс
    • git add <имя_файла>
    • git add *
    • git add .
    • git add -A - Добавить в индекс только удаленные файлы
  • Удаление из индекса
    • git rm <имя_файла>
    • git rm *.php
    • git reset - Отменить индексацию последних изменений
    • git rm --cached <ИМЯ_ФАЙЛА> - Удалить из индекса файл и добавить в игнор. Файл останется в каталоге.
    • git reset HEAD benchmarks.rb - Отменить индексацию файла benchmarks.rb

Локальный репозиторий

    • Фиксация изменений
      • git commit -m "Описание коммита"
      • git checkout <hash-коммита> - Переключиться на определенный коммит
      • git commit --amend - Удаление последнего коммита
    • Восстановление файлов из репозитория
      • git checkout <branch> # Перемещение указателя HEAD на комит или ветку
      • git reset --hard HEAD~n # Перемещение указателя HEAD на комит
      • git checkout -- <имя_файла> - восстановление файла из репозитория
      • git reset --hard origin/master - удалить все локальные изменения и коммиты
      • git reset --hard origin/master
      • git reset --hard HEAD^ # Сбросить все локальные измеения до текущего состояния
    • Перемещение комитов
      • git rebase -i HEAD~n # Позволяет переупорядочивать, менять комменты, выборочно удалять и прочее
    • Ветвление branch
      • git branch bug1Создать ветку bug1
      • git branch -d bug1Удалить ветку bug1
    • Пересадка веток / rebase
      • git rebase master
        1. git checkout master # переключаемся на бранч master
        2. git rebase bug1 # пересаживаем историю изменений ветки bug1 в master
      • или
        1. git checkout bug1
        2. git rebase master
        3. git checkout master
        4. git merge bug1 # При этом произойдет fast-forward merge

Отмена коммитов

До комита
  • git reset --hard HEAD
После комита
  • git reset --hard ORIG_HEAD
Документация

Временное хранилище / Stash

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

Вместо git reset --hard, можно сначала файлы сохранять во временное хранилище, затем применять изменения.

  • git stashПоместить файлы во временное хранилище
  • git stash applyПрименить последнее изменение из стека / лога к текущей рабочей копии
  • git stash dropУдалить последнее изменение в стеке / лога
  • git stash listПоказать все изменения в стеке / логе
  • git stash showПоказать последнее измененеие в стеке / логе (патч)
  • git stash popПрименить последнее изменение из стека к текущей рабочей копии и удалить его из стека
  • git stash clearОчистить стек изменений

Удаленный репозиторий / origin

  • Синхронизация
    • git push origin master
    • git remote add origin <адрес_сервера>

Submodule / Субмодули

  • git submodule add git@github.com:Mirocow/express-chat.git
  • git submodule update –init [express-chat]
  • git submodule update --init --recursive - обновить все зависимые модули (репозитории)
  • git rm -r yii2-mongodb - Удалить сабмодуль yii2-mongodb
  • git rm -r yii2-redactor - Удалить сабмодуль yii2-redactor :!:
  • git submodule add -- /to/path/git/dir - Добавить локальный модуль (Необходимо указывать только полный путь до папки) :!:

Как вынести код в отдельный репозитоий

Дано:

  • Основной репозиторий app/
  • Необходимый код лежит тут app/vendor/mirocow/yii2-redactor
  • копируем код в отдельную папку и создаем репозитоий путь-до-репозитория/yii2-redactor
  • удаляем если есть уже ранее созданный модуль git rm -rf yii2-redactor
  • обязательно переходим в добавляемую папку app/vendor/mirocow
  • добавляем модуль как отдельный репозитоий из папки git submodule add -f путь-до-репозитория/yii2-redactor/

Отладка

GIT_CURL_VERBOSE

$ GIT_CURL_VERBOSE=1git clone htps://...

GIT_TRACE

Принимает значаения 1, 2 или true

$ GIT_TRACE=2git clone htps://...

Настройка

  • git config color.ui true - использовать цветной вывод в терминале

http://marklodato.github.io/visual-git-guide/index-ru.html?no-svg

Настройка deploy on github

Настройка github для работы с Deploy keys

Ошибки

Ошибка: There is no tracking information for the current branch

При возникновении ошибки вида

$ git pull
There is no tracking information for the current branch.
Please specify which branch you want to rebase against.
See git-pull(1)for details
 
    git pull<remote><branch> 
If you wish to set tracking information for this branch you can do so with:
 
    git branch--set-upstream-to=origin/<branch> master

следует выполнить

$ git pull origin master
$ git branch--set-upstream-to=origin/master master
$ git pull

Видеоуроки

Документация

Сервер

Клиенты

Code Review

Ссылки

LUA - ↷ Страница перемещена из languages:lua в develop:languages:lua

$
0
0

LUA

Lua — это интерпретируемый язык со слабой динамической типизацией данных, поддерживающий программирование в императивном, функциональном и объектно-ориентированном (с прототипным наследованием) стилях. В нём есть замыкания, сопрограммы, а функции, соответственно, объекты первого класса. У языка имеется очень хорошо описанная «оборотная сторона»: достаточно удобный C-интерфейс, позволяющий свободно передавать данные между C и Lua частями программы, делать вызовы C-функций из Lua и наоборот

Что нового

Viewing all 1318 articles
Browse latest View live