Quantcast
Viewing all 1318 articles
Browse latest View live

Настройка deploy on github - [Настройка deploy on github]

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

Настраимваем github для работы с Deploy keys.

  • username - github user name / Имя пользователя на github
  • reponame - github repository name / Наименование репозитория

Шаг 1

Проверяем наличие настроек удаленого доступа

$ git remote-v
origin  git@github.com:foo/bar.git (fetch)
origin  git@github.com:foo/bar.git (push)

Шаг 2: Удаляем удаленые настройки

$ git remoterm origin

Шаг 3

Устанавливаем настройки на репозитоий username/reponame.git github.

$ git remote add origin git@username.github.com:username/reponame.git

Шаг 4: Проверяем наличие установленных настроек

$ git remote-v
origin  git@username.github.com:username/reponame.git (fetch)
origin  git@username.github.com:username/reponame.git (push)

Шаг 5: Генерируем ключ для github

Генерируем для репозитория на github username/reponameключ id_rsa-reponame.

$ ssh-keygen-t rsa -f ~/.ssh/id_rsa-username -C https://github.com/username/reponame

Шаг 6: Добавляем настройки ключа к локальному репозиторию

nano ~/.ssh/config

Host username.github.com
Hostname github.com
IdentityFile ~/.ssh/id_rsa-username

Проверка

Далее запускаем git pullиз репозитория, при запуске этой команды будет прочитан наш созданный ~/.ssh/configфайл

$ git pull

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

  • man ssh_config

Sabma 4 config

Sabma 4 config

$ testparm -S
$ adduser share
# Global parameters
[global]
        server string = %h NAS Server
        workgroup = HOME
        os level = 99
        log file = /var/log/samba/log.%m
        max log size = 1000
        panic action = /usr/share/samba/panic-action %d
        usershare allow guests = Yes
        load printers = No
        name resolve order = wins host bcast
        map to guest = Bad User
        obey pam restrictions = Yes
        pam password change = Yes
        passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
        passwd program = /usr/bin/passwd %u
        security = USER
        server role = standalone server
        unix password sync = Yes
        username map = /etc/samba/smbusers
        dns proxy = No
        wins support = Yes
        idmap config * : backend = tdb
        acl allow execute always = Yes
        invalid users = root bin daemon adm sync shutdown halt mail news uucp operator

[User]
        comment = Home Directories
        path = /home/%U
        read only = No
        valid users = %U

[Home]
        path = /home
        comment = Home Directories
        valid users = share
        read only = no
        browseable = yes
        available = yes
        create mask = 0664
        directory mask = 0775
        force user = share
        force group = www-data

[DISK1]
        comment = mediafiles
        path = /mnt/1
        create mask = 0664
        directory mask = 0775
        guest ok = Yes
        read only = No


[DISK2]
        comment = mediafiles
        path = /mnt/2
        create mask = 0664
        directory mask = 0775
        guest ok = Yes
        read only = No

Создание редиректа на домен с www

Widgets - создано

Коллекции Yii2 Extensions (лучших расширений) на github

Коллекции Yii2 Extensions (лучших расширений) на github

Коллекции большого спектра расширений для фреймворка yii2, начиная от, виджетов и заканчивая полноценными системами CRM

Демонстранция

Репозитории

Мой репозиторий

Остальные

Yii2 Framework extensions / Расширения - старая версия восстановлена (2017/07/14 04:08)

Yii2 Framework extensions / Расширения

Создание

Обязательным требование для расширения является наличие типа
"type": "yii2-extension" Пример

Коллекции виджетов

Widgets

bootstrap

Editors

Upload / File input

Tags / Select / Select2 / Autocomplete

Карты / Maps / GEO

Editable / Table / Tables / Grids

EAV

Tree / Draggable / Sortable

Flags

Pajx

Charts / Графики

Pickes

Дата / Время Date picker

Pagination

Panels / Boxes / Div

Мобильные устройства

Навигация

ExtJs

Extension

User

Rest

  • yii2-rest

Excel

Shops

Cart

Log

Localization

Backup

Markdown

Fonts

Console

APP / Template

API

APNS / GSM

OAuth/OpenID

User/Auntification

RBAC

Image

File

Assets

Sort

Rules/Validator

Relation

Behavior

Scroll page

Notifications

GEO

  • willdurand/geocoder

WebSocket

Chat

Легенда

  • yiisoft/yii2-authclient - так обозначаются пакеты composer

Loaders

SMS

Switch

Sliders

Удаленные хранилища

Social

Events

Queuing

Plugins

Проекты для начала разработки на Yii2

Webapp-Template

Модули

Theme / Темы

Angular

O себе

O себе

  • Активно увлекся программированием в 1990 году. Свое знакомство с WEB начал с интерпритатора Perl, затем плавно перешел на PHP. Огромное кол-во времени провожу за чтением специализированной литературы. Не увлекаюсь соц сетями и не состою ни в каких братствах. Всегда готов помочь любому обратившемуся.
  • Имею не маленький опыт в настройке UNIX серверов и написанию программ на 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

Красивые клипы для души - [Эпидемия]

Красивые клипы для души

Chanels

Amaranthe

XANDRIA

Within Temptation

DELAIN

UNLEASH THE ARCHERS

BATTLE BEAST

EPICA

Nightwish

Tarja (Nightwish)

Концерты

Studio

PHANTASMA

ARCH ENEMY

IGNEA

EXIT EDEN

Эпидемия

Последнее Испытание

Остальные


Yii2 Framework projects / Проекты - [CMF / CMS / CRM]

Yii2 Framework projects / Проекты

Github

Списоки проектов)

CMF / CMS / CRM

Ticket

Hosting panels

Social

Ecom / Shop

Компании / Разработчики

Themes

Статистика

Torrent

Установка PHP71-FPM - [Установка]

Установка PHP71-FPM

Установка

brew install php71 php71-igbinary php71-intl php71-lua php71-mcrypt php71-mongodb php71-pcntl php71-redis php71-xdebug php71-ssh2 php71-yaml

Удвление

brew uninstall php71-igbinary php71-intl php71-lua php71-mcrypt php71-mongodb php71-pcntl php71-redis php71-xdebug php71-ssh2 php71-yaml

CURL - [Multipart + progress]

CURL

Options: (H) means HTTP/HTTPS only, (F) means FTP only
     --anyauth       Pick "any" authentication method (H)
 -a, --append        Append to target file when uploading (F/SFTP)
     --basic         Use HTTP Basic Authentication (H)
     --cacert FILE   CA certificate to verify peer against (SSL)
     --capath DIR    CA directory to verify peer against (SSL)
 -E, --cert CERT[:PASSWD]  Client certificate file and password (SSL)
     --cert-type TYPE  Certificate file type (DER/PEM/ENG) (SSL)
     --ciphers LIST  SSL ciphers to use (SSL)
     --compressed    Request compressed response (using deflate or gzip)
 -K, --config FILE   Read config from FILE
     --connect-timeout SECONDS  Maximum time allowed for connection
 -C, --continue-at OFFSET  Resumed transfer OFFSET
 -b, --cookie STRING/FILE  Read cookies from STRING/FILE (H)
 -c, --cookie-jar FILE  Write cookies to FILE after operation (H)
     --create-dirs   Create necessary local directory hierarchy
     --crlf          Convert LF to CRLF in upload
     --crlfile FILE  Get a CRL list in PEM format from the given file
 -d, --data DATA     HTTP POST data (H)
     --data-ascii DATA  HTTP POST ASCII data (H)
     --data-binary DATA  HTTP POST binary data (H)
     --data-urlencode DATA  HTTP POST data url encoded (H)
     --delegation STRING  GSS-API delegation permission
     --digest        Use HTTP Digest Authentication (H)
     --disable-eprt  Inhibit using EPRT or LPRT (F)
     --disable-epsv  Inhibit using EPSV (F)
     --dns-servers   DNS server addrs to use: 1.1.1.1;2.2.2.2
     --dns-interface  Interface to use for DNS requests
     --dns-ipv4-addr  IPv4 address to use for DNS requests, dot notation
     --dns-ipv6-addr  IPv6 address to use for DNS requests, dot notation
 -D, --dump-header FILE  Write the headers to FILE
     --egd-file FILE  EGD socket path for random data (SSL)
     --engine ENGINE  Crypto engine (use "--engine list" for list) (SSL)
 -f, --fail          Fail silently (no output at all) on HTTP errors (H)
 -F, --form CONTENT  Specify HTTP multipart POST data (H)
     --form-string STRING  Specify HTTP multipart POST data (H)
     --ftp-account DATA  Account data string (F)
     --ftp-alternative-to-user COMMAND  String to replace "USER [name]" (F)
     --ftp-create-dirs  Create the remote dirs if not present (F)
     --ftp-method [MULTICWD/NOCWD/SINGLECWD]  Control CWD usage (F)
     --ftp-pasv      Use PASV/EPSV instead of PORT (F)
 -P, --ftp-port ADR  Use PORT with given address instead of PASV (F)
     --ftp-skip-pasv-ip  Skip the IP address for PASV (F)
     --ftp-pret      Send PRET before PASV (for drftpd) (F)
     --ftp-ssl-ccc   Send CCC after authenticating (F)
     --ftp-ssl-ccc-mode ACTIVE/PASSIVE  Set CCC mode (F)
     --ftp-ssl-control  Require SSL/TLS for FTP login, clear for transfer (F)
 -G, --get           Send the -d data with a HTTP GET (H)
 -g, --globoff       Disable URL sequences and ranges using {} and []
 -H, --header LINE   Pass custom header LINE to server (H)
 -I, --head          Show document info only
 -h, --help          This help text
     --hostpubmd5 MD5  Hex-encoded MD5 string of the host public key. (SSH)
 -0, --http1.0       Use HTTP 1.0 (H)
     --http1.1       Use HTTP 1.1 (H)
     --http2         Use HTTP 2 (H)
     --ignore-content-length  Ignore the HTTP Content-Length header
 -i, --include       Include protocol headers in the output (H/F)
 -k, --insecure      Allow connections to SSL sites without certs (H)
     --interface INTERFACE  Use network INTERFACE (or address)
 -4, --ipv4          Resolve name to IPv4 address
 -6, --ipv6          Resolve name to IPv6 address
 -j, --junk-session-cookies  Ignore session cookies read from file (H)
     --keepalive-time SECONDS  Wait SECONDS between keepalive probes
     --key KEY       Private key file name (SSL/SSH)
     --key-type TYPE  Private key file type (DER/PEM/ENG) (SSL)
     --krb LEVEL     Enable Kerberos with security LEVEL (F)
     --libcurl FILE  Dump libcurl equivalent code of this command line
     --limit-rate RATE  Limit transfer speed to RATE
 -l, --list-only     List only mode (F/POP3)
     --local-port RANGE  Force use of RANGE for local port numbers
 -L, --location      Follow redirects (H)
     --location-trusted  Like '--location', and send auth to other hosts (H)
     --login-options OPTIONS  Server login options (IMAP, POP3, SMTP)
 -M, --manual        Display the full manual
     --mail-from FROM  Mail from this address (SMTP)
     --mail-rcpt TO  Mail to this/these addresses (SMTP)
     --mail-auth AUTH  Originator address of the original email (SMTP)
     --max-filesize BYTES  Maximum file size to download (H/F)
     --max-redirs NUM  Maximum number of redirects allowed (H)
 -m, --max-time SECONDS  Maximum time allowed for the transfer
     --metalink      Process given URLs as metalink XML file
     --negotiate     Use HTTP Negotiate (SPNEGO) authentication (H)
 -n, --netrc         Must read .netrc for user name and password
     --netrc-optional  Use either .netrc or URL; overrides -n
     --netrc-file FILE  Specify FILE for netrc
 -:  --next          Allows the following URL to use a separate set of options
     --no-alpn       Disable the ALPN TLS extension (H)
 -N, --no-buffer     Disable buffering of the output stream
     --no-keepalive  Disable keepalive use on the connection
     --no-npn        Disable the NPN TLS extension (H)
     --no-sessionid  Disable SSL session-ID reusing (SSL)
     --noproxy       List of hosts which do not use proxy
     --ntlm          Use HTTP NTLM authentication (H)
     --oauth2-bearer TOKEN  OAuth 2 Bearer Token (IMAP, POP3, SMTP)
 -o, --output FILE   Write to FILE instead of stdout
     --pass PASS     Pass phrase for the private key (SSL/SSH)
     --post301       Do not switch to GET after following a 301 redirect (H)
     --post302       Do not switch to GET after following a 302 redirect (H)
     --post303       Do not switch to GET after following a 303 redirect (H)
 -#, --progress-bar  Display transfer progress as a progress bar
     --proto PROTOCOLS  Enable/disable PROTOCOLS
     --proto-redir PROTOCOLS  Enable/disable PROTOCOLS on redirect
 -x, --proxy [PROTOCOL://]HOST[:PORT]  Use proxy on given port
     --proxy-anyauth  Pick "any" proxy authentication method (H)
     --proxy-basic   Use Basic authentication on the proxy (H)
     --proxy-digest  Use Digest authentication on the proxy (H)
     --proxy-negotiate  Use HTTP Negotiate (SPNEGO) authentication on the proxy (H)
     --proxy-ntlm    Use NTLM authentication on the proxy (H)
 -U, --proxy-user USER[:PASSWORD]  Proxy user and password
     --proxy1.0 HOST[:PORT]  Use HTTP/1.0 proxy on given port
 -p, --proxytunnel   Operate through a HTTP proxy tunnel (using CONNECT)
     --pubkey KEY    Public key file name (SSH)
 -Q, --quote CMD     Send command(s) to server before transfer (F/SFTP)
     --random-file FILE  File for reading random data from (SSL)
 -r, --range RANGE   Retrieve only the bytes within RANGE
     --raw           Do HTTP "raw"; no transfer decoding (H)
 -e, --referer       Referer URL (H)
 -J, --remote-header-name  Use the header-provided filename (H)
 -O, --remote-name   Write output to a file named as the remote file
     --remote-name-all  Use the remote file name for all URLs
 -R, --remote-time   Set the remote file's time on the local output
 -X, --request COMMAND  Specify request command to use
     --resolve HOST:PORT:ADDRESS  Force resolve of HOST:PORT to ADDRESS
     --retry NUM   Retry request NUM times if transient problems occur
     --retry-delay SECONDS  Wait SECONDS between retries
     --retry-max-time SECONDS  Retry only within this period
     --sasl-ir       Enable initial response in SASL authentication
 -S, --show-error    Show error. With -s, make curl show errors when they occur
 -s, --silent        Silent mode (don't output anything)
     --socks4 HOST[:PORT]  SOCKS4 proxy on given host + port
     --socks4a HOST[:PORT]  SOCKS4a proxy on given host + port
     --socks5 HOST[:PORT]  SOCKS5 proxy on given host + port
     --socks5-hostname HOST[:PORT]  SOCKS5 proxy, pass host name to proxy
     --socks5-gssapi-service NAME  SOCKS5 proxy service name for GSS-API
     --socks5-gssapi-nec  Compatibility with NEC SOCKS5 server
 -Y, --speed-limit RATE  Stop transfers below RATE for 'speed-time' secs
 -y, --speed-time SECONDS  Trigger 'speed-limit' abort after SECONDS (default: 30)
     --ssl           Try SSL/TLS (FTP, IMAP, POP3, SMTP)
     --ssl-reqd      Require SSL/TLS (FTP, IMAP, POP3, SMTP)
 -2, --sslv2         Use SSLv2 (SSL)
 -3, --sslv3         Use SSLv3 (SSL)
     --ssl-allow-beast  Allow security flaw to improve interop (SSL)
     --stderr FILE   Where to redirect stderr (use "-" for stdout)
     --tcp-nodelay   Use the TCP_NODELAY option
 -t, --telnet-option OPT=VAL  Set telnet option
     --tftp-blksize VALUE  Set TFTP BLKSIZE option (must be >512)
 -z, --time-cond TIME  Transfer based on a time condition
 -1, --tlsv1         Use => TLSv1 (SSL)
     --tlsv1.0       Use TLSv1.0 (SSL)
     --tlsv1.1       Use TLSv1.1 (SSL)
     --tlsv1.2       Use TLSv1.2 (SSL)
     --trace FILE    Write a debug trace to FILE
     --trace-ascii FILE  Like --trace, but without hex output
     --trace-time    Add time stamps to trace/verbose output
     --tr-encoding   Request compressed transfer encoding (H)
 -T, --upload-file FILE  Transfer FILE to destination
     --url URL       URL to work with
 -B, --use-ascii     Use ASCII/text transfer
 -u, --user USER[:PASSWORD]  Server user and password
     --tlsuser USER  TLS username
     --tlspassword STRING  TLS password
     --tlsauthtype STRING  TLS authentication type (default: SRP)
 -A, --user-agent STRING  Send User-Agent STRING to server (H)
 -v, --verbose       Make the operation more talkative
 -V, --version       Show version number and quit
 -w, --write-out FORMAT  Use output FORMAT after completion
     --xattr         Store metadata in extended file attributes
 -q                  Disable .curlrc (must be first parameter)

GET

$ curl -X GET -L http://

Бесшумное

$ curl -s-X GET -L http://

POST

$ curl -X POST -L http://

или

$ curl --request POST -L http://

Fields

$ curl -X POST --data"param1=value1&param2=value2"-L http://

Multipart (Fields + File)

$ curl -X POST --form"fileupload=@my-file.txt"--formparam1=value1 --formparam2=value2 -L http://

Multipart + progress

$ curl --tr-encoding-X POST -v -# -o output -T filename.dat -L http://file-download.dat

Proxy

$ curl -x my.proxy.com:3128-O http://example.net/myfile.zip

Добавить header

Для открытия xml документа

$ curl -X POST --header"Content-Type:text/xml"-L http://

Для открытия json документа

$ curl -X POST --header"Content-Type:application/json"-L http://

NET::ERR_CERTIFICATE_TRANSPARENCY_REQUIRED - [Причины]

NET::ERR_CERTIFICATE_TRANSPARENCY_REQUIRED

Причины

  • Внешне сайт может быть вменяемым, но создан как копия популярного существующего, при открытии такого адреса — скачается «левый» сертификат и будут похищены ваши данные.
  • Сайт не использует SSL-сертификат. Так же распространенная ошибка, Вы могли по ошибке вместо http указать версию сайта https, что выховет ошибку «ERR_CERT_AUTHORITY_INVALID» — данный сертификат безопасности не будет обнаружен и браузер начнет ругаться.
  • Err_cert_date_invalid — ошибка возникает при неправильной дате на компьютере. Нажмите на часы в правом нижнем углу и выберете пункт «Настройка даты и времени». Внимательно проверьте год, число, а так же локальное время. При несовпадении выбирайте «Изменить дату и время» и установите правильные дату и время.
  • Еще одной причиной может быть антивирус. Он может блокировать определенные подключения с неизвестными или подозрительными SSL сертификатами. Для быстрой проверки кликните по иконке антивируса и найдите пункт «Приостановить», «Отключить» защиту (только для проверки). Если открывается — придется покопаться в настройках, либо подумать о замене антивирусной программы.

В дополнение можно отключить предупреждающие сообщения, наберите «chrome:flags» в адресной строке Google Chrome или Хромиума и нажмите энтер. Вы попадете в меню, где можно провести тонкую настройку браузера, уведомлений и прочего.

PHP отладчик XDebug - [Console XDebug]

PHP отладчик XDebug

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

Image may be NSFW.
Clik here to view.

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

; 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_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

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

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

Image may be NSFW.
Clik here to view.

  • 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
  • Установить уникальный ключ для хоста.

Image may be NSFW.
Clik here to view.
Image may be NSFW.
Clik here to view.

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

Image may be NSFW.
Clik here to view.

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());
?>

Подробнее

Yii2 шаблоны - [Themes / Темы]

Yii2 шаблоны

Менеджеры

    • AdminLte - yii2-theme-adminlte
    • Agency - yii2-theme-agency
    • DataServ - yii2-theme-dataserv
    • Flat - yii2-theme-flat
    • Hyde - yii2-theme-hyde
    • Obaju - yii2-theme-obaju
    • Yii2 original - yii2-theme-original
    • Sailor - yii2-theme-sailor
    • Twenty Fifteen - yii2-theme-twentyfifteen

Themes / Темы

Semantic-UI

Статьи / Ссылки

Системные утилиты анализа (iotop, htop итд) - [lvan]

Системные утилиты анализа (iotop, htop итд)

Цвета могут принимать значения

  • Светло-серый \033[0;37m
  • Серый \033[1;30m
  • Черный \033[0;30m
  • Красный \033[0;31m
  • Светло-красный \033[1;31m
  • Зеленый \033[0;32m
  • Светло-зеленый \033[1;32m
  • Коричневый \033[0;33m
  • Желтый \033[1;33m
  • Синий \033[0;34m
  • Светло-синий \033[1;34m
  • Сиреневый \033[0;35m
  • Светло-сиреневый \033[1;35m
  • Голубой \033[0;36m
  • Светло-голубой \033[1;36m
  • Белый \033[0m

Универсальные консольные программы

dstat & sar

iostat, vmstat, ifstat and much more in one.

Image may be NSFW.
Clik here to view.

Установка
apt-get install dstat

slurm

Visualizes network interface traffic over time.

Image may be NSFW.
Clik here to view.

Установка
apt-get install slurm

vim & emacs

The real programmers' editors.

Image may be NSFW.
Clik here to view.

Установка
apt-get install vim

screen, dtach, tmux, byobu

Keep your terminal sessions alive.

Image may be NSFW.
Clik here to view.

Установка
apt-get install screen

multitail

See your log files in separate windows.

Image may be NSFW.
Clik here to view.

Установка
apt-get install multitail

tpp

Presentation ("PowerPoint") tool for terminal.

Image may be NSFW.
Clik here to view.

Установка
apt-get install tpp

xargs & parallel

Executes tasks from input (even multithread).

Image may be NSFW.
Clik here to view.

Установка
apt-get install xargs

duplicity & rsyncrypto

Encrypting backup tools.

Image may be NSFW.
Clik here to view.

Установка
apt-get install duplicity

nethack & slash'em

Still the most complex game on the planet.

Image may be NSFW.
Clik here to view.

Установка
apt-get install nethack

lftp

Does FTPS. Can mirror, kinda like rsync.

Image may be NSFW.
Clik here to view.

Установка
apt-get install lftp

ack

A better grep for source code.

Image may be NSFW.
Clik here to view.

Установка
apt-get install ack

calcurse & remind + wyrd

Calendar systems.

Image may be NSFW.
Clik here to view.

Установка
apt-get install calcurse

newsbeuter & rsstail

Command line RSS readers.

Image may be NSFW.
Clik here to view.

Установка
apt-get install newsbeuter

powertop

Helps conserve power on Linux.

Image may be NSFW.
Clik here to view.

Установка
apt-get install powertop

htop & iotop

Process, memory and io monitoring.

Image may be NSFW.
Clik here to view.
Image may be NSFW.
Clik here to view.

Подробнее

Установка
apt-get install htop

ttyrec & ipbt

Record and play back terminal sessions.

Image may be NSFW.
Clik here to view.

Установка
apt-get install ipbt

mtr

traceroute 2.0.

Image may be NSFW.
Clik here to view.

Установка
apt-get install mtr

socat & netpipes

Directing stuff easily in and out of sockets.

Image may be NSFW.
Clik here to view.

Установка
apt-get install socat

iftop & iptraf

To see where your traffic goes.

Image may be NSFW.
Clik here to view.

Установка
apt-get install iftop

siege & tsung

Command line load test tools.

Image may be NSFW.
Clik here to view.

Установка
apt-get install siege

ledger

Terminal-based accounting package.

Image may be NSFW.
Clik here to view.

Установка
apt-get install ledger

taskwarrior

Todo management in the terminal.

Image may be NSFW.
Clik here to view.

Установка
apt-get install taskwarrior

curl

Everybody's favorite HTTP toolbox.

Image may be NSFW.
Clik here to view.

Установка
apt-get install curl

rtorrent & aria2

Command line torrent downloaders.

Image may be NSFW.
Clik here to view.

Установка
apt-get install rtorrent

ttytter & earthquake

Nice trendy Twitter clients :)

Image may be NSFW.
Clik here to view.

Установка
apt-get install ttytter

vifm & ranger

Alternatives to the midnight commander.

Image may be NSFW.
Clik here to view.

Установка
apt-get install vifm

cowsay & sl

I just couldn't resist. :o)

Image may be NSFW.
Clik here to view.

Установка
apt-get install cowsay

Fail2ban

Image may be NSFW.
Clik here to view.

Установка
apt-get install fail2ban

ncdu

Image may be NSFW.
Clik here to view.
Image may be NSFW.
Clik here to view.

Установка
apt-get install ncdu

saider

Image may be NSFW.
Clik here to view.

saider -c
Установка
apt-get install saider

w

w

Image may be NSFW.
Clik here to view.

lvan

Image may be NSFW.
Clik here to view.

Утилита для удобного поиска по лог файлу

watch

watch -n1 ls -la ./

Elasticsearch plugins

Elasticsearch plugins

kopf

elasticsearch version branch latest version
0.90.X 0.90 v0.90
1.X 1.0 v1.6.1
2.X 2.0 v2.1.1
$ elasticsearch-plugin install lmenezes/elasticsearch-kopf/{branch|version}

elasticsearch-inquisitor

Image may be NSFW.
Clik here to view.

$ elasticsearch-plugin install polyfractal/elasticsearch-inquisitor

elasticsearch-HQ

$ elasticsearch-plugin install royrusso/elasticsearch-HQ

elasticsearch-head

$ elasticsearch-plugin install mobz/elasticsearch-head

Клиент для выполнения базовых операций https://mobz.github.io/elasticsearch-head/

elasticsearch-gui

$ elasticsearch-plugin install jettro/elasticsearch-gui 

elasticsearch-analysis-icu - ICU Analysis for Elasticsearch 17

$ elasticsearch-plugin install elasticsearch/elasticsearch-analysis-icu/2.7.0

elasticsearch-analysis-morphology - Morphological Analysis Plugin for ElasticSearch

ElasticSearch 17
$ elasticsearch-plugin install analysis-morphology -url http://dl.bintray.com/content/imotov/elasticsearch-plugins/org/elasticsearch/elasticsearch-analysis-morphology/1.2.1/elasticsearch-analysis-morphology-1.2.1.zip
ElasticSearch 2.3.1
$ elasticsearch-plugin install http://dl.bintray.com/content/imotov/elasticsearch-plugins/org/elasticsearch/elasticsearch-analysis-morphology/2.3.1/elasticsearch-analysis-morphology-2.3.1.zip

elasticsearch-mapper-attachments - Mapper Attachments Type for Elasticsearch

$ elasticsearch-plugin install elasticsearch/elasticsearch-mapper-attachments/3.1.2

elasticsearch-action-updatebyquery

$ elasticsearch-plugin install com.yakaz.elasticsearch.plugins/elasticsearch-action-updatebyquery/2.6.0
|Update By Query Action Plugin  | ElasticSearch          |
├───────────────────────────────┼────────────────────────┤
│                               │ 2.0.0-beta1            │
├───────────────────────────────┼────────────────────────┤
│ 2.6.0                         │ 1.6.0 ─► (1.7.4)       │
├───────────────────────────────┼────────────────────────┤
│ 2.5.x                         │ 1.5.0 ─► (1.5.2)       │
├───────────────────────────────┼────────────────────────┤
│ 2.4.0                         │ 1.4.0 ─► (1.4.5)       │
├───────────────────────────────┼────────────────────────┤
│ 2.3.0                         │ 1.4.0.Beta1            │
├───────────────────────────────┼────────────────────────┤
│ 2.2.0                         │ 1.3.0 ─► (1.3.8)       │
├───────────────────────────────┼────────────────────────┤
│ 2.1.1                         │ 1.2.3                  │
├───────────────────────────────┼────────────────────────┤
│ 2.1.0                         │ 1.2.0 ─► 1.2.2         │
├───────────────────────────────┼────────────────────────┤
│ 2.0.x                         │ 1.1.0 ─► 1.1.2         │
├───────────────────────────────┼────────────────────────┤
│ 1.6.x                         │ 1.0.0 ─► 1.0.2         │
├───────────────────────────────┼────────────────────────┤
│ 1.5.x                         │ 1.0.0.Beta1            │
├───────────────────────────────┼────────────────────────┤
│ 1.4.x                         │ 0.90.10 ─► (0.90.13)   │
├───────────────────────────────┼────────────────────────┤
│ 1.4.0                         │ 0.90.6 ─► 0.90.9       │
├───────────────────────────────┼────────────────────────┤
│ 1.3.x                         │ 0.90.4 ─► 0.90.5       │
├───────────────────────────────┼────────────────────────┤
│ 1.2.x                         │ 0.90.3                 │
├───────────────────────────────┼────────────────────────┤
│ 1.1.x                         │ 0.90.0.beta1 ─► 0.90.2 │
├───────────────────────────────┼────────────────────────┤
│ 1.0.x                         │ 0.20.0 ─► 0.20.4       │
└───────────────────────────────┴────────────────────────┘

Elasticsearch - поисковая система - [Устанока]

Elasticsearch - поисковая система

Устанока

nano ~/elasticsearch-install.sh

#!/usr/bin/sh 
VERSION=2.4.0
 
apt-get install openjdk-8-jdk
rm/etc/alternatives/javaln-s/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java/etc/alternatives/java 
exportJAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
exportPATH=$JAVA_HOME/bin:$PATH 
if[!-f elasticsearch-$VERSION.deb ]; thenwget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-$VERSION.deb
fi 
sudodpkg-i elasticsearch-$VERSION.deb
 
# be sure you add "action.disable_delete_all_indices" : true to the config!! 
# start scriptsudo/etc/init.d/elasticsearch restart
 
if[-f/usr/bin/plugin ]; thenrm/usr/bin/plugin
fi 
sudoln-s/usr/share/elasticsearch/bin/elasticsearch-plugin /usr/bin/elasticsearch-plugin
 
# ------------------------------------------------------------------------------------ 
# if you want to remove it:#sudo dpkg -r elasticsearch 
# binaries & plugin#/usr/share/elasticsearch/bin 
# log dir#/var/log/elasticsearch 
# data dir#/var/lib/elasticsearch 
# config dir#/etc/elasticsearch 
# prepare ElasticSearch UI#sudo apt-get install apache2#sudo mkdir /var/www/ui#sudo chown -R ubuntu.www-data /var/www# now copy ES-HEAD to /var/www/ui

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

  • Установите максимальный размер открытых дескрипторов файла для пользователя от 32k до 64k

nano /etc/sysctl.conf

vm.max_map_count = 262144
  • Если возможно, отключите свопинг памяти для процессов Elasticsearch. Обратите внимание, что в виртуальных средах это может привести к неожиданным результатам.
  • Установите значение -Xms равным -Xmx (то же самое что установить значение переменной среды ES_HEAP_SIZE).
  • Оставьте некоторое количество памяти, чтобы кеш операционной системы мог использовать его для Lucene.
Elasticsearch JVM не должен занимать больше половины всего объема памяти.

Подробнее...

Проверка работоспособности сервера

$ curl -XGET http://localhost:9200/_stats/?pretty
$ curl -XGET http://localhost:9200/_nodes/?pretty
$ curl --silent-XGET"http://localhost:9200/_snapshot/_all"
$ curl --silent-XGET"http://localhost:9200/_cat/nodes?pretty"
mbp-mirocow 192.168.1.147 11786.88 d * Mirocow

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

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

nano /usr/local/etc/elasticsearch/elasticsearch.yml

path.repo: ["/usr/local/var/elasticsearch/snapshot"]

Регистрация

$ curl -XPUT'http://localhost:9200/_snapshot/backup'-d'{
    "type": "fs",
    "settings": {
        "location": "/usr/local/var/elasticsearch/snapshot",
        "compress": true
    }
}'
  • где:
    • backup - название репозитория
    • /usr/local/var/elasticsearch/snapshot - папка с содержанием самого репозитория

Проверка регистрации

$ curl -XGET"http://localhost:9200/_snapshot/_all?pretty"

ответ от elasticsearch

{
  "backup" : {
    "type" : "fs",
    "settings" : {
      "compress" : "true",
      "location" : "/usr/local/var/elasticsearch/snapshot/backup"
    }
  }
}

Проверка целостности

$ curl -XPOST"http://localhost:9200/_snapshot/backup/_verify

ответ от elasticsearch

{"nodes":{"zKsDO_G3SlCdbLlhVmgLKA":{"name":"Vapor"}}}

Создание snapshot / Backup

$ curl -XPUT"http://localhost:9200/_snapshot/backup/my_index/?wait_for_completion=true"

Где my_index является существующим индексом.

Проверить наличие инднеса можно командой

$ curl --silent-XGET"http://localhost:9200/_stats?pretty"|grep my_index

Удаление регистрации репозитория

$ curl -XDELETE'http://localhost:9200/_snapshot/backup'

Восстановление / Restore

Настройка

Если ранее небыл зарегистрирован.

$ curl -XPUT'http://localhost:9200/_snapshot/_restore?wait_for_completion=true'-d'{
    "type": "fs",
    "settings": {
        "location": "/usr/local/var/elasticsearch/snapshot",
        "compress": true
    }
}'
  • где:
    • backup - название репозитория
    • /usr/local/var/elasticsearch/snapshot - папка с содержанием самого репозитория

Проверка

$ curl -XPOST http://localhost:9200/_snapshot/backup/_verify?pretty

Восстановление

$ curl -XPOST http://localhost:9200/_snapshot/backup/_restore?pretty

Запрос поиска

Способы запроса

GET

Вывод всех документов из индекса

$ curl -XGET'localhost:9200/test/_search?q=*&pretty'

REST

Вывод всех документов из индекса

$ curl -XPOST'localhost:9200/1vse/_search?pretty'-d'
{
  "query": { "match_all": {} }
}'
Доступные параметры для REST запросов
$ curl -XPOST'localhost:9200/1vse/_search?pretty'-d'
{
  "query": { "match_all": {} },
  "size": 1
}'
$ curl -XPOST'localhost:9200/1vse/_search?pretty'-d'
{
  "query": { "match": { "title": "Thomson T50E10DHU-01B" } },
  "_source": ["title", "category", "brand"]
}' 
$ curl -XPOST'localhost:9200/1vse/_search?pretty'-d'
{
  "query": { "match_phrase": { "category": "телевизоры" } },
  "_source": ["title", "category", "brand"]
}' 
$ curl -XPOST'localhost:9200/bank/_search?pretty'-d'
{
  "query": {
    "bool": {
      "must": [
        { "match": { "age": "40" } }
      ],
      "must_not": [
        { "match": { "state": "ID" } }
      ]
    }
  }
}'

Поиск по регулярным выражениям

$ curl -XGET'http://localhost:9200/_search'-d'{
    "filter": {
        "bool": {
            "should": [
                {
                    "regexp": {
                        "word": "мульт.*"
                    }
                },
                {
                    "regexp": {
                        "word": "фильм.*"
                    }
                }
            ],
            "must_not": {
                "terms": {
                    "word": ["видео", "скачать"]
                }
            }
        }
    }
}'

Подробнее...

Примеры запросов / Query DSL

$ curl -XGET http://localhost:9200/1vse/product/_search/-d'{
  "size": 10,
  "query": {
    "bool": {
      "should": [
        {
          "function_score": {
            "weight": 100,
            "query": {
              "match": {
                "product.title": "samsung"
              }
            }
          }
        },
        {
          "function_score": {
            "weight": 80,
            "query": {
              "match_phrase_prefix": {
                "product.title": "samsung"
              }
            }
          }
        }
      ]
    }
  }
}'
  • где:
    • 1vse - название БД
    • product.title - название таблицы

Создание индексов

Данная операция создаст инжекс test

$ curl -XPUT"http://localhost:9200/test?pretty"{"acknowledged" : true}

Получить список созданых индексов

$ curl --silent-XGET"http://localhost:9200/_cat/indices?pretty"

ответ от elasticsearch

yellow open 1vse      511477850 197.3mb 197.3mb
yellow open 1vse_logs 514399140   1.6gb   1.6gb
$ curl --silent-XGET"http://localhost:9200/_cat/indices?v"

ответ от elasticsearch

health status index     pri rep docs.count docs.deleted store.size pri.store.size
yellow open   1vse        511477850    197.3mb        197.3mb
yellow open   1vse_logs   514399140      1.6gb          1.6gb

Фильтры

Фильтр worddelimiter

Фильтр worddelimiter разбивает слова на несколько частей. Небольшой пример: представьте, что вы допустили опечатку в предложении “To be or not to be.That is the question”. Если вы обратите внимание, то заметите отсутствие пробела после точки. Без этого фильтра Elasticsearch проиндексирует “be.That” как одно слово - “bethat”. При помощи этого фильтра мы указываем ему индексировать эти слова по отдельности - “be” и “that”.

Примеры:

 

Фильтр stopwords

Фильтр stopwords состоит из списка слов запрещенных к индексированию. Например он исключает такие слова, как “and”, “a”, “the”, “to” и т.д. Конечно этот список уникален для каждого языка, но существует довольно много заготовок, которые вы можете использовать.

Примеры:

 

Фильтр snowball

Фильтр snowball используется для группировки слов по их основе. Фильтр применяет набор правил для правильного определения основы слова. Это означает, что разные настройки могут выдавать разные результаты. Например слова “indexing”, “indexable”, “indexes”, “indexation” и т.д. получать основу “index”. Хотелось бы отметить, что вы получите результат “Make my string indexable”, запросив “Indexing string”.

Примеры:

 

Фильтр elison

Фильтр elison имеет большее значения для некоторых языков (например французский) и не так важен для других (например английский). Он исключает маловажные слова перед индексированием, например “j’attends que tu m’appelles” (Я жду вашего звонка) проиндексируется как “attends que tu appelles” (наконце слова “que” и “tu” будут исключены фильтром stopwords). Как вы видите слова “j’” и “m’” (Я) были удалены из-за настройки фильтра elison.

Примеры:

 

Фильтр lowercase

Фильтр asciifolding

Заменяет все Unicode символы, не входящие в латинский алфавит на их ascii эквивалент.

Лексеры

nGram

Роль лексера nGram очень высока. Например, наш поиск “funny pony” был разбит на несколько частей. Вот два примера:

Пример 1
"min_gram" : "2",
"max_gram" : "3"
Результат:
fu, fun, un, unn, nn, nny, po, pon, on, ony, ny
2-ой пример с лучшей настройкой:
Пример 2
"min_gram" : "3",
"max_gram" : "20"

Результат:
fun, funn, funny, unn, unny, nny, pon, pony, ony

Анализаторы

По умолчанию в Eldsticseach включен регистрозависимый анализатор поиска. Для его отключения используем ниже следующие настройки в конфигурационом файле elasticsearch.yml

            settings:
                index:
                    analysis:
                        analyzer:
                            string_lowercase:
                                tokenizer: keyword
                                filter: lowercase

Мапинг

$ curl -XGET"http://localhost:9200/1vse_logs/_mapping?pretty=true"

Примеры индексов

            settings:
                index:
                    analysis:
                        analyzer:
                            app_analyzer:
                                type: custom
                                tokenizer: nGram
                                filter   : [stopwords, app_ngram, asciifolding, lowercase, snowball, worddelimiter]
                            app_search_analyzer:
                                type: custom
                                tokenizer: standard
                                filter   : [stopwords, app_ngram, asciifolding, lowercase, snowball, worddelimiter]
                        tokenizer:
                            nGram:
                                type: "nGram"
                                min_gram: 2
                                max_gram: 20
                        filter:
                            snowball:
                                type:     snowball
                                language: English
                            app_ngram:
                                type: "nGram"
                                min_gram: 2
                                max_gram: 20
                            worddelimiter :
                                 type: word_delimiter
                            stopwords:
                                 type:      stop
                                 stopwords: [_french_]
                                 ignore_case : true

Работа с документом

Подокументно

Получение документа

$ curl -XGET"http://localhost:9200/test/external/key1?pretty"

ответ от elasticsearch

{
  "_index" : "test",
  "_type" : "external",
  "_id" : "key1",
  "_version" : 4,
  "found" : true,
  "_source":
{
  "body": {
      "name": "test test",
      "description": "Description"
   }
}
}

Добавление документа / Заполенение индекса

$ curl -XPUT"http://localhost:9200/test/external/key1?pretty"-d'
{
  "body": {"name": "test"}
}'

ответ от elasticsearch

{
  "_index" : "test",
  "_type" : "external",
  "_id" : "1",
  "_version" : 1,
  "created" : true
}

Обновление документа

$ curl -XPOST"http://localhost:9200/test/external/key1?pretty"-d'
{
  "body": {
      "pice_id": 3,
      "name": "test test",
      "description": "Description"
   }
}'

ответ от elasticsearch

{
  "_index" : "test",
  "_type" : "external",
  "_id" : "1",
  "_version" : 1,
  "created" : true
}

Частичное обновление документа

$ curl -XPUT"http://localhost:9200/test/external/key1?pretty"-d'
{
  "body": {
     "doc": {
       "name": "test test"
      }
  }
}'

ответ от elasticsearch

{
  "_index" : "test",
  "_type" : "external",
  "_id" : "1",
  "_version" : 1,
  "created" : true
}

Обновление документа с учетом параметров

> v 2.3
$ curl -XPOST'http://localhost:9200/test/external/_bulk'-d'
{
  "update": {
      "_index": "myindex",
      "_type": "type",
      "_id": "myid"
  }
}{
  "doc": {
      "field": "new value"
  }
}'
v 2.3 >
$ curl -XPOST'http://localhost:9200/test/external/_update_by_query'-d'
{
  "query": {
    "filtered": {
      "filter": {
        "bool": {
          "must": [
            {
              "term": {
                "url": "stackoverflow.com"
              }
            },
            {
              "missing": {
                "field": "category"
              }
            }
          ]
        }
      }
    }
  },
  "script" : "ctx._source.category = \"10\";"
}'

Получение документа из индекса по ID

$ curl -XGET"http://localhost:9200/test/external/1?pretty"

ответ от elasticsearch

{
  "_index" : "test",
  "_type" : "external",
  "_id" : "1",
  "_version" : 3,
  "found" : true,
  "_source":
{
  "name": "test"
}
}

Удаление документа из индекса

Удаление по индексу

$ curl -XDELETE'localhost:9200/customer/external/2?pretty'

Мы также имеем возможность удалить несколько документов совпавших с условием запроса. Данный пример показывает как удалить все документы из индекса customers, содержащие «John»:

$ curl -XDELETE'localhost:9200/customer/external/_query?pretty'-d'
{
  "query": { "match": { "name": "John" } }
}'

Работа с частичными данными документа

Настройки elasticsearch.yml

script.update: on
script.mapping: on
script.engine.groovy.file.aggs: on
script.engine.groovy.file.mapping: on
script.engine.groovy.file.search: on
script.engine.groovy.file.update: on
script.engine.groovy.file.plugin: on
script.engine.groovy.indexed.aggs: on
script.engine.groovy.indexed.mapping: on
script.engine.groovy.indexed.search: on
script.engine.groovy.indexed.update: on
script.engine.groovy.indexed.plugin: on
script.engine.groovy.inline.aggs: on
script.engine.groovy.inline.mapping: on
script.engine.groovy.inline.search: on
script.engine.groovy.inline.update: on
script.engine.groovy.inline.plugin: on

Создание массива

$ curl -s-XPOST'localhost:9200/1vse/product_for_mapping/1/_update'-d'{
    "script" : "if(ctx._source.aliases.size() == 0){ctx._source.aliases = [];}"
}'

Добавление в массив

$ curl -XPOST'localhost:9200/1vse/product_for_mapping/1/_update'-d'{
    "script" : "ctx._source.aliases += alias",
    "params" : {
        "alias" : "Manfrotto MV-M500A"
    }
}'

Удаление из массива

$ curl -s-XPOST'localhost:9200/1vse/product_for_mapping/1/_update'-d'{
    "script" : "for (int i = 0; i < ctx._source.aliases.size(); i++){if(ctx._source.aliases[i] == value){ctx._source.aliases.remove(i);}}",
    "params" : {
        "value" : "Manfrotto MVM500A XXX"
    }
}'

Пакетная обработка документов

$ curl -XPOST'localhost:9200/customer/external/_bulk?pretty'-d'
{"index":{"_id":"1"}}
{"name": "John Doe" }
{"index":{"_id":"2"}}
{"name": "Jane Doe" }'

Данный пример обновляет первый документ (с ID равным 1) и затем удаляет второй документ (с ID равным 2) в одной массовой операции:

$ curl -XPOST'localhost:9200/customer/external/_bulk?pretty'-d'
{"update":{"_id":"1"}}
{"doc": { "name": "John Doe becomes Jane Doe" } }
{"delete":{"_id":"2"}}'

Параметры выдачи

  • _source -
  • _score - Оценка - это числовое значение, которое является относительной мерой того, насколько документ совпадает с поисковым запросом, который мы создали. Большие значения оценки показывают более релевантные (более полно совпадающие) документы, меньшие значение - менее релевантные.

Агрегация

Плагины / Plugins

Ошибки / Errors

  • snapshot_missing_exception:
    {"type": "no_such_file_exception","reason/usr/local/var/elasticsearch/snapshot/snap-snapshot.dat"}

  • SnapshotMissingException:
    {"error":"SnapshotMissingException[[backup:snapshot] is missing]; nested: FileNotFoundException[/usr/local/var/elasticsearch/snapshot/snapshot-snapshot (No such file or directory)]; ","status":404}

    snapshot не найден, так как дамп создавался с отличным названием снапшота от snapshot

  • Data too large, data for [@timestamp] would be larger than limit
    $ curl -XPOST'http://localhost:9200/_cache/clear'

Клиенты

Yii2

Дискусии/Форумы

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

Autocomplete / Shingles

Видео

Презентации

MySql - [Настройка, оптимизация и обслуживание]

MySql

Установка

MariaDB 10:

$ apt-get install libmariadbclient18 libmysqlclient18 mariadb-client mariadb-client-10.0 mariadb-client-core-10.0 mariadb-common  mariadb-server

Percona 5.6:

$ install percona-server-common-5.6 percona-server-server percona-server-client

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

dpkg-reconfigure mysql-server-5.1 - установка root пароля
mysql_upgrade -u root -p --force - ремонт баз данных
mysqlcheck -uroot -p --auto-repair --check --optimize --all-databases - ремонт баз данных

mysql_install_db - создание mysql database
mysql_install_db --rpm --user=mysql
mysql_install_db --defaults-file=/etc/mysql/my.cnf
mysql_install_db --no-defaults --basedir=/usr --datadir=/var/lib/mysql
mysql_install_db --defaults-file=/etc/mysql/my.cnf --force --basedir=/usr --datadir=/var/lib/mysql --user=mysql

Настройка, оптимизация и обслуживание

Клиенты / Утилиты

Описаие движков и их особенностей

Ссылки / Документация / Примеры

Примеры

Ссылки / Документация

Восстановление пароля - [MySql - Восстановление пароля]

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

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

Открывем 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;

Система резервного копирования и восстановления данных для MySql - [Система резервного копирования и восстановления данных для MySql]

Система резервного копирования и восстановления данных для MySql

mysql_utils shell script!

Система написана на shell скрипте bash. Для создания резервных копий используется mysqldump. Для создания архивов используется bz2.

https://github.com/Mirocow/mysql_utils

Установка

Настройка

Для debian систем настройка будет выполнена автоматически. Для остальных необходимо создать файл.

  • # nano /etc/mysql/debian.cnf
# Automatically generated for Debian scripts. DO NOT TOUCH!
[client]
host     = localhost
user     = debian-sys-maint
password = master-password
socket   = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
host     = localhost
user     = debian-sys-maint
password = master-password
socket   = /var/run/mysqld/mysqld.sock
basedir  = /usr

Сохранение всех баз

По умолчанию упаковывается bzip2 c параметром --compress=bzip2

# cd ~
# cd mysql_utils
# bash backup.sh --compress=bzip2 --exclude="mysql"

Запуск справки по скрипту

# bash backup.sh --help
usage: backup.sh options
 
This script buckup all databases.
 
Usage: backup.sh <[options]>
 
Options:
   -e= | --exclude=                     Exclude databases
   --exclude-tables=                    Exclude tables
   -c= | --compress=                    Compress with gzip or bzip2
   -v  | --verbose                      Add verbose into output
   -l  | --lifetime=                    Lifetime for dump files
   --config=                            Config file of Debian format
   --dir=                               Backup directory
   -h  | --help                         This text
 
Examples:
        backup.sh --verbose --compress=
        backup.sh --verbose --compress=zgip
        backup.sh --verbose --compress=bzip2
        backup.sh --verbose --compress= --exclude="mysql"
        backup.sh --verbose --compress= --exclude="mysql" --lifetime="3 day ago"
        backup.sh --verbose --config="/etc/mysql/debian.cnf" --exclude="mysql" --lifetime="1 day ago"
        backup.sh --verbose --dir="/var/backups/mysql" --config="/etc/mysql/debian.cnf" --exclude="mysql" --lifetime="1 day ago"
        backup.sh --verbose --dir="/home/backups/mysql" --exclude="mysql" --lifetime="1 day ago"
        backup.sh --verbose --dir="/home/backups/mysql" --exclude="mysql" --exclude-tables="tbl_template" --lifetime="1 day ago"

Восстановление баз за указанную дату

По умолчанию запакован c параметром --compress=bzip2

# cd /var/backups/mysql/[some date]
# bash ~/mysql_utils/restore.sh

Восстановление выбранной БД

По умолчанию запакован c параметром --compress=bzip2

# cd /var/backups/mysql/[some date]/[some db name]
# bash ~/mysql_utils/restore_db.sh

Установка заданий в cron

nano /etc/default/db_backup

START=yes

nano /etc/cron.daily/db_backup

#!/bin/sh
 
. /etc/default/db_backup
 
if [ "$START" = "yes" ]; then
    logger "Start databases backup system..."
    /bin/bash /root/scripts/mysql_utils/backup.sh --exclude="some_exclude_database"
fi

Проверка работы скрипта

# tail -f /var/log/syslog
    May 23 12:25:34 db1 logger: BACKUP:   ** Dump tecdoc.2013.ALI_COORD
    May 23 12:25:35 db1 logger: BACKUP:   ** set perm on tecdoc.2013/AL
    May 23 12:25:35 db1 logger: BACKUP:   ** bzip2 tecdoc.2013/ALI_COOR
    May 23 12:25:35 db1 logger: BACKUP:   ** Dump tecdoc.2013.ARTICLES
    May 23 12:25:43 db1 logger: BACKUP:   ** set perm on tecdoc.2013/AR
    May 23 12:25:43 db1 logger: BACKUP:   ** bzip2 tecdoc.2013/ARTICLES
    May 23 12:25:43 db1 logger: BACKUP:   ** Dump tecdoc.2013.ARTICLES_
    May 23 12:25:43 db1 logger: BACKUP:   ** set perm on tecdoc.2013/AR
    May 23 12:25:43 db1 logger: BACKUP:   ** bzip2 tecdoc.2013/ARTICLES
    May 23 12:25:43 db1 logger: BACKUP:   ** Dump tecdoc.2013.ARTICLE_C
Viewing all 1318 articles
Browse latest View live