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

Yii Framework 3 - [Пакеты]

$
0
0

Yii Framework 3

Схема работы приложений

Instalation / Установка

В данной ветке содержатся только стабильные версии пакетов. Установка производится из готового шаблона проекта "yiisoft/yii-base-web"

Устанавливаем композер
curl -s http://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
chmod 755 /usr/local/bin/composer
Устанавливаем зависимый пакет композера и создаем типовой проект из готового шаблона yii-project-template
composer create-project --prefer-dist --stability=dev yiisoft/yii-project-template ./app

Пакеты


Laravel

JQuery UI

jquery ajax to retrieve JSON data from remote URL

$
0
0

jquery ajax to retrieve JSON data from remote URL

1

test.json

<scripttype="text/javascript">
function getJSON(json) {
    alert("Got JSON!");
    // do something with json
}
</script><scripttype="text/javascript"src="http://192.168.99.68/test.json?callback=getJSON" async="true"></script>

2

<divid="images"> 
</div>
$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?",{
    tags:"gulmarg",
    tagmode:"any",
    format:"json"},function(data){
    $.each(data.items,function(i,item){
      $("<img/>").attr("src", item.media.m).appendTo("#images");if( i ==5)returnfalse;});});

3

$.jsonp({"url": target_url+"ping.php?callback=?","success":function(data){// print out data},"error":function(d,msg){// error}});
<?phpecho$_GET['callback'].'('."{'response' : 'success'}".')';?>

https://github.com/jaubourg/jquery-jsonp

Triks

$
0
0

Triks

  • Клонирование file type='input' http://jsfiddle.net/E8DBZ/2/
    • CSS
      #modal {
          padding: 10px;
          background: #eee;
      }
    • Views
      <formid="frm"><!-- form can contain plenty of inputs --></form> 
      <divid="modal"><h2>Modal</h2><divid="file-input-wrapper"><inputid="modal-file-input"type="file"name="file"/></div><br/><br/><inputid="submit-modal"type="submit"value="submit modal"/></div>
    • JS
      $('body').on('click', '#submit-modal', function(e) {
          e.preventDefault();
          var $form = $('#frm');
          var $fileInput = $('#modal-file-input');
          var $fakeInput = $fileInput.clone();
       
      	$form.append($fileInput);
          $('#file-input-wrapper').append($fakeInput);
      });

Ссылки

Models

Laravel - ↷ Страница перемещена из laravel в php:laravel

$
0
0

Laravel

Запросы на чтение

$user= User::findOrFail($id);$user= User::firstOrCreate(['email'=>$email]);$user= User::find(1);$users= User::find([1,2,3]);
$media= Media::find($id);$categories= Category::lists('category','id');return view('medias.edit-media')->with('media',$media)->with('categories',$categories);

IN

Game::whereIn('games.id',$roomList)->get();

Column

Game::whereIn('id',$roomList)->pluck('id')->toArray();

Select fields

Table::select('name','surname')->where('id',1)->get();

AsArray

Game::select('games.id as id')->whereIn('games.id',$roomList)->get()->toArray();

NotNull

Model::whereNotNull('sent_at'); 
DB::table('table_name')->whereNotNull('sent_at')->get();

Group where

$results= DB::table('table')->where(function($query)use($starttime,$endtime){$query->where('starttime','<=',$starttime);$query->where('endtime','>=',$endtime);})->orWhere(function($query)use($otherStarttime,$otherEndtime){$query->where('starttime','<=',$otherStarttime);$query->where('endtime','>=',$otherEndtime);})->orWhere(function($query)use($anotherStarttime,$anotherEndtime){$query->where('starttime','>=',$anotherStarttime);$query->where('endtime','<=',$anotherEndtime);})->get();

Sub query

$sub= Abc::where(..)->groupBy(..);// Eloquent Builder instance 
$count= DB::table( DB::raw("({$sub->toSql()}) as sub")) 
    // ->where(..) wrong 
    ->mergeBindings($sub->getQuery())// you need to get underlying Query Builder 
    // ->where(..) correct 
    ->count();
DB::query()->fromSub(function($query){$query->from('abc')->groupBy('col1');},'a')->count();

Запросы на добавление/обновление

$friend= Friend::updateOrCreate(['user_id'=>$friendId,'friend_id'=>$userId],['status'=> Friend::STATUS_ACCEPTED]);

# https://laravel.com/docs/5.3/eloquent#inserting-and-updating-models

Update all

YourModelName::where(['siteView'=>6])->update(['siteView'=>7]);
YourModelName::where('siteView',6)->update(['siteView'=>7]);
YourModelName::query()->update(['siteView'=>8]);

Заполнение/обновление/проверка пивот таблиц

$room->games()->attach($gameId);$owner->rooms()->attach($room->id,['is_admin'=>true]);$user->roles()->updateExistingPivot($roleId,$attributes); 
$post->comments()->saveMany([new App\Comment(['message'=>'A new comment.']),new App\Comment(['message'=>'Another comment.']),]); 
$user->roles()->attach($roleId);$user->roles()->attach($roleId,[‘expires’ =>$expires]); 
App\User::find(1)->roles()->save($role,['expires'=>$expires]); 
$user->roles()->toggle([1,2,3]); 
$messages= Message::where('message_id',$id)->get();foreach($messagesas$message){$message->users()->updateExistingPivot($user,array('status'=>1),false);} 
$items=$invoice->items->pluck('name','id')->toArray();foreach($itemsas$key=>$item){$invoice->items()->updateExistingPivot($key,['quantity'=>$request->quantity]);} 
$user->rooms()->get()->contains($room->id)

Increment

$article= Article::find($article_id);$article->increment('read_count'); 
Article::find($article_id)->increment('read_count');
Article::find($article_id)->increment('read_count',10);// +10
Product::find($produce_id)->decrement('stock');// -1

Запросы на удаление

$ids=array(10,20,30);
DB::table('table_name')->whereIn('id',$ids)->delete(); 
MyModel::truncate(); 
\App\Model::query()->delete(); 
DB::statement("SET foreign_key_checks=0");
Model::truncate();
DB::statement("SET foreign_key_checks=1"); 
DB::table('table_name')->truncate(); 
DB::table('table_name')->delete(); 
Model::whereRaw('1=1')->delete(); 
User:where('id','like''%%')->delete(); 
DB::table('users')->whereIn('id',$ids_to_delete)->delete();

Transactions

app('db')->beginTransaction();
app('db')->commit();
app('db')->rollBack();

Back-end / Разработка приложений на стороне сервера - [Back-end / Разработка приложений на стороне сервера]

$
0
0

Back-end / Разработка приложений на стороне сервера

Back-end database / Разработка и настройка баз данных

Серверное программирование и утилиты

Front-end / Разработка приложений для сайтов

App / Разработка приложений под разные платформы

Системы анализа и статистики


JQuery - [JQuery]

Models - создано

Java-Script - [Документация]

$
0
0

robots.txt - создано

$
0
0

robots.txt

Установка вывода в конфиге

server {
...
    location = /robots.txt {
       add_header Content-Type text/plain;
       return 200 "User-agent: *\nDisallow: /\n";
    }
}

Настройка NGINX

$
0
0

Настройка NGINX

Рецепты

Скрипт создания настроек сайта для Nginx

Я очень давно разрабатываю web проекты и для их публикации использую nginx web сервер. За это время скопилось много рецептов использования этого замчательного web сервера. Но из за лени каждый раз писать настройки заново я создал скрипт позволяющий ускорить и упростить это муторное занятие.

Параметры сервера

  • client_max_body_size
  • keepalive_timeout

Встроенные переменные

Конструкции и их применение

Модули / Modules

Рекомендации

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

Правила использования версионности - [Сокращения]

$
0
0

Правила использования версионности

Сокращения

Constraint Internally
1.2.3 =1.2.3.0-stable
>1.2 >1.2.0.0-stable
>=1.2 >=1.2.0.0-dev
>=1.2-stable >=1.2.0.0-stable
<1.3 <1.3.0.0-dev
<=1.3 <=1.3.0.0-stable
1 - 2 >=1.0.0.0-dev <3.0.0.0-dev
~1.3 >=1.3.0.0-dev <2.0.0.0-dev
1.4.* >=1.4.0.0-dev <1.5.0.0-dev
^1.4.3 >=1.4.3 <2.0.0

Подробнее: https://getcomposer.org/doc/articles/versions.md#writing-version-constraints

*

Объявление номера версии с помощью *— одно из худших решений, которое может прийти вам в голову. В такой ситуации у вас нет совершенно никакого контроля над тем, что вы получите. Это может быть абсолютно любая версия, которая соответствует вашей минимальной стабильности и другим требованиям.

Настройка SSH тунеля - [SSH]

$
0
0

Настройка SSH тунеля

Строим тунель из сети в мир.

ssh

$ ssh-f-N-R2222:10.11.12.13:22 username@99.88.77.66
$ ssh-p345-v-N-R3307:10.11.12.13:3306 username@99.88.77.66

Если ssh запущен на нестандартном порту -p 345

$ ssh-p2222 localhost - мы попадём на хост 10.11.12.13
$ nc localhost -p3307 - попадем на MySql хоста 10.11.12.13

Ключи

  • -f
  • -N
  • -v
  • -p - Порт
  • -R позволяет удаленные обращения (remote) направлять на (local) сервер.
$ ssh-f-N-R2080:10.11.12.14:80 username@99.88.77.66

Введя на хосте 99.88.77.66:

$ w3m -dump http://localhost:2080

Строим тунель из мира в сеть.

SSH

$ ssh-f-N-L4080:192.168.0.10:80 nameuser@88.77.66.55
$ ssh-p345-v-N-L3307:localhost:3306 username@99.88.77.66
$ ssh-L8080:remote-host-which-wait-connect.com:443 username@99.88.77.66

Ключи

  • -f
  • -N не выполнять команды, поднимает только тунель
  • -L позволяет локальные обращения (Local) направлять на удалённый сервер.
  • -v
  • -p - Порт

Аналогично, вводим на своём хосте:

$ w3m -dump http://localhost:4080

и получаем доступ к web-ресурсу узла 192.168.0.10, который находится за хостом 88.77.66.55.

SOCKS5

$ ssh-p22 username@99.88.77.66 -v-N-D3128

Статьи


Коллекции Yii2 Extensions / Репозитории

$
0
0

Коллекции Yii2 Extensions / Репозитории

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

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

Репозитории

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

Поиск

Остальные

Redis - [Клиенты]

$
0
0

Redis

  • redis-cli

Настройка

sysctl.conf

vm.overcommit_memory = 1

Пример конфига redis.conf

daemonize yes

databases 30

# Bind:
bind 127.0.0.1
port 6379

tcp-backlog 511
tcp-keepalive 0

timeout 0

# PID:
pidfile /var/run/redis/redis-server.pid

# Socket:
unixsocket /var/run/redis/redis.sock
unixsocketperm 666

# Log:
loglevel warning
logfile /var/log/redis/redis-server.log

# Save:
save 900 1
save 300 10
save 60 10000

appendfsync everysec
appendonly no

maxclients 1000000

repl-disable-tcp-nodelay no
repl-diskless-sync no

Ключи

  • --rdb /usr/local/var/db/redis/dump.rdb

Dump / Дамп БД

Опция save сохраняет БД redis в указанный в конфигурационном файле файл /usr/local/var/db/redis/dump.rdb

redis-cli save

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

Восстановление БД отсутствует как таковое. Для восстановления достатоно переписать файл БД Redis dump.rdb из восстанавливаемой БД.

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

$ redis-cli -n 1 KEYS "session:*" | xargs redis-cli -n 1 DEL
  • -n - ID БД Redis
for key in `echo 'KEYS session:*' | redis-cli | awk '{print $1}'`
 do echo DEL $key
done | redis-cli
$ echo 'KEYS session:*' | redis-cli | awk '{print $1}
$ redis-cli KEYS "session:*" | xargs redis-cli DEL

Поиск и удаление из множества

$ redis-cli -n 1 ZRANGE sn:email 0 100|grep email@gmail.com
$ redis-cli -n 1 ZREM sn:email email@gmail.com

Клиенты

Мониторинг

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

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

Ссылки

Lumen

Elasticsearch 2.x.x

$
0
0

Elasticsearch 2.x.x

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://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/deb/elasticsearch/$VERSION/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/plugin /usr/bin/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
Viewing all 1318 articles
Browse latest View live