Веб-программинг

Интересное и полезное про PHP, JS, Jquery, Angular, Bootstrap, MySQL, PostgreSQL, Docker, Git, Trello, Nginx и Apache, API Яндекса, Google, PayPal, Fb, Vk, GeoNames, Robokassa...

Ctrl + ↑ Позднее
3 сентября   --delete   git

Разрешить вводить в input только цифры

Например, если поле для ввода номера телефона, без спец.символов, при этом если не нужно создавать поле с type=number.

Вот вполне рабочий вариант:

<input type="text" oninput="this.value = this.value.replace(/[^0-9.]/g, ''); this.value = this.value.replace(/(\..*)\./g, '$1');" >

при этом все неразрешенные символы будут просто игнорироваться

29 августа   input   oninput   regexp   [^0-9.]

Импорт csv-файла и обработка в php

$csvFile = file('/home/oleg/data.csv');
$array = array_map(function($input) {return str_getcsv($input, ";");}, $csvFile );

foreach ($array as $item) {
    $object = new CustomClass();
    $object->name = (string) $item[0];
    $object->title = (string) $item[1];
    $object->price = (float) $item[2];
    $object->save();
}

Что из себя представляет функция str_getcsv — посмотрите в документации

28 августа   csv   php   str_getcsv

Permission denied (publickey) при ssh-подключении

Если вы пытаетесь подключиться к серверу и такой командой:

ssh root@ip-address

и такой командой:

ssh root@ip-address -o 'IdentitiesOnly=yes'

а в ответ получаете ошибку:

Permission denied (publickey).

То попробуйте прописать ключ напрямую следующей командой:

ssh -v -i ~/.ssh/id_rsa root@ip-address
24 августа   Permission denied   publickey   ssh

Exception: DateTimeZone::__construct(): Unknown or bad timezone (Europe/Saratov)

Если поймали такую ошибку, а при этом вы открываете сайт php.net и там такой часовой пояс есть, значит необходимо проверить timezonedb на сайте.

Откройте phpinfo() и увидите что-то подобное:

Нас интересует «Olson» Timezone Database Version

1) Если PECL на сервере не установлен, то:

sudo apt-get install php-pear

2) В зависимости от версии php необходимо, чтобы было установлено php-dev.
У меня 7.1, потому я сделаю так:

sudo apt install php7.1-dev

3) Делаем апдейт:

sudo pecl upgrade timezonedb

4) В результате увидим:

5) Значит необходимо открыть php.ini и прописать extension=timezonedb.so

sudo nano /etc/php/7.1/apache2/php.ini

Добавляем в конце файла, сохраняем изменения и сделаем рестарт апача:

sudo service apache2 restart

6) Проверяем phpinfo() и видим изменения:
«Olson» Timezone Database Version 2018.4

Наслаждаемся!

2018   linux

Как исправить ошибку Could not parse version constraint >=~2: Invalid version string «~2»

Вот так делаешь composer update (или install), а получаешь такую ошибку:

[UnexpectedValueException]
Could not parse version constraint >=~2: Invalid version string "~2"

Необходимо выполнить следующее:

php composer.phar global update

а после уже можно выполнить update или install:

php composer.phar update
2018   composer   php

Как в Git перенести commit из одной ветки в другую?

Укажу ссылку на оригинал статьи Как в Git перенести commit из одной ветки в другую?

У меня возникла такая необходимость, нашел данную статью, где все удобно и подробно расписано.

Рассмотрим ситуацию на примере. Мы находились в master и сделали в него случайно коммит. Тогда чтобы вынести его в отдельную ветку и отправить на merge request нам потребуется выполнить следующие команды:

1). Смотрим историю изменений и запоминаем хэш коммита , соответствующего правильному состоянию ветки master, то есть когда ещё в неё не было добавлено лишних коммитов по ошибке.

git log

2). Также следует запомнить хэш коммита , который был лишним в ветке master. Иногда бывает, что лишними оказываются сразу несколько коммитов, тогда если они расположены последовательно друг за другом следует запомнить самый давний и самый последний .

3). Перейдём на найденный коммит . Другими словами переходим на то состояние ветки master, от которого нам нужно создать новую ветку.

git checkout 

4). Создадим новую ветку, в которую планируется вынести неверно расположенный коммит, и перейдем на неё.

git checkout -b 

5). Переносим коммит в новую ветку.

git cherry-pick 

В случае, когда необходимо перенести последний коммит ветки master, можно вместо хэша коммита просто написать master, поскольку в данный момент указатель master ссылается на последний коммит.

git cherry-pick master

Если же нужно перенести не один, а несколько подряд идущих коммитов от  до , то это делается похожим образом.

git cherry-pick ..

Если же вы хотите, чтобы при переносе изменений коммит не создавался, то используйте параметр -n (—no-commit):

git cherry-pick -n d112ecf96

Как и при операции git rebase в процессе переноса коммита могут возникнуть конфликты. Как и при обычном git merge их следует разрешить, добавить изменения в индекс с помощью git add, а затем продолжить запустив git cherry-pick —continue.

6). Теперь когда коммиты перенесены в ветку , следует удалить их из ветки master. Поэтому переключаемся на ветку master

git checkout master

Смещаем указать master на коммит

git reset --hard 

Спасибо автору за подробную статью

2018   git

Поиск по массиву в jsonb поле в PostgreSQL

Например, если в jsonb храним массив ['Berlin', 'Moscow', 'London'], то осуществить поиск по таблице можно следующей командой:

SELECT * FROM "table_name" WHERE column_title ?& array['London'];
2018   jsonb   PostgreSQL

Сброс значения auto_increment в PostgreSQL

Если вы получили подобную ошибку:

Unique violation: 7 ERROR:  duplicate key value violates unique constraint "my_table_pkey"
DETAIL:  Key (id)=(12) already exists

это означает, что primary key — поле, то, которое автоинкриментится при добавлении новых строк в БД «сломалось». И не может определить следующий id.
Для данной таблицы можно перезапустить sequence:

ALTER SEQUENCE my_table_id_seq RESTART WITH 13;

Где 13 — это число, с которого должен пойти новый отсчет SERIAL колонки, той, что автоинкриментится.

Ctrl + ↓ Ранее