Skip to content

Instantly share code, notes, and snippets.

View igorpronin's full-sized avatar

Igor Pronin igorpronin

View GitHub Profile
@igorpronin
igorpronin / txt
Last active May 30, 2017 08:56
xDebug, настройки php.ini
# http://www.jetbrains.com/help/phpstorm/2017.1/configuring-xdebug.html
[Xdebug]
zend_extension="<path to php_xdebug.dll>"
xdebug.remote_enable=1
xdebug.remote_port="<the port for Xdebug to listen to>" (the default port is 9000)
xdebug.profiler_enable=1
xdebug.profiler_output_dir="<AMP home\tmp>"
@igorpronin
igorpronin / gist:d1cdea867adc091668e78e5a6eba0a00
Last active January 12, 2023 22:38
Как делать код-ревью, статья понравилась
https://toster.ru/q/276441
Отсюда, есть и другие рекомендации от др авторов.
Я когда делаю Code Review критерии следующие:
* Безопасность:
- Каждый аргумент метода простого типа должен проверяться на тип в случае его проксирования и на граничные значения в случае обработки. Чуть что не так - бросается исключение. Если метод с кучкой аргументов на 80% состоит из поверки из аргументов - это вполне норм))
- Никаких trigger_error, только исключения.
- Исключения ДОЛЖНЫ быть человеко-понятны, всякие "Something went wrong" можно отдавать пользователю, но в лог должно попасть исключение со стектрейсом и человеко-понятным описанием, что же там пошло не так.
- Каждый аргумент (объект) метода должен быть с тайпхинтингом на этот его класс, или интерфейс.
@igorpronin
igorpronin / php, regexp
Last active May 30, 2017 08:56
Возврат подстроки, которая начинается с определенной строки и заканчивается определенной строкой без их включения в результат, preg_match
$str = 'the result inside big string';
preg_match("/(?<=the )(.*)(?= inside)/", $str, $result_arr);
echo $result_arr[0]; // result
/*
(?<=) - с чего начинается искомая строка
(?=) - чем заканчивается искомая строка
(.*) - искомая строка содержит любое количество любых символов
PS: хороший конструктор регулярных выражений - http://www.phpliveregex.com/
@igorpronin
igorpronin / html
Created March 17, 2017 09:56
target blank
target="_blank" rel="noopener noreferrer"
@igorpronin
igorpronin / php
Created March 6, 2017 11:12
генерация уникальной случайной строки php
<?php
/**
*
* @var Получаем текущее время в миллисекундах и случайное число
* и хэшируем полученную строку
*
*/
$hashe = md5( microtime() . mt_rand() );
# Выводим хэш
@igorpronin
igorpronin / postgres
Created January 23, 2017 11:51
Удаление дубликатов из таблицы c primary key
-- http://stackoverflow.com/questions/1746213/how-to-delete-duplicate-entries
-- Given table table, want to unique it on (field1, field2) keeping the row with the max field3:
DELETE FROM table USING table alias
WHERE table.field1 = alias.field1 AND table.field2 = alias.field2 AND
table.max_field < alias.max_field
-- For example, I have a table, user_accounts, and I want to add a unique constraint on email, but I have some duplicates. Say also that I want to keep the most recently created one (max id among duplicates).
@igorpronin
igorpronin / postgresql, sql, postgres, psql
Last active May 30, 2017 08:57
Копировать выборочно данные из одной таблицы в другую
--example 1
INSERT INTO cheap_books (id, note)
SELECT id, 'Was in use'
FROM Books WHERE id > (SELECT MAX(id) FROM Books) - 3
--example2
INSERT INTO public.table1 (id_user, id_operator, status)
@igorpronin
igorpronin / sql, postgres, psql
Created November 30, 2016 17:11
Копировать структуру таблицы
CREATE TABLE table2 AS SELECT * FROM table1 WHERE 1=2;
(This creates the structure only -- no data will be transferred because
1 will never equal 2). :)
@igorpronin
igorpronin / sql, postgres, psql
Created October 20, 2016 08:08
Функции PostgreSQL
COUNT(X) - количество величин аргумента Х, со значением не равным NULL
SUM(X) - сумма величин в аргументе Х
MIN(X) - минимум Х
MAX(X) - возвращает максимум Х
ROUND(X) - возвращает Х округленный до ближайшего целого
RANDOM() - возвращает случайную величину от 0 до 1
LENGTH(X) - длина строки Х
TRIM(X) - удаляет пробелы в начале и конце строки
LOWER(X) - приводит строку к нижн регистру
@igorpronin
igorpronin / txt
Created October 19, 2016 16:12
psql для пользователей Windows
psql создан как «консольное приложение». Поскольку в Windows консольные окна используют
кодировку символов отличную от той, что используется для остальной системы, нужно проявить
особую осторожность при использовании 8-битных символов. Если psql обнаружит проблемную
кодовую страницу консоли, он предупредит вас при запуске. Чтобы изменить кодовую страницу
консоли, необходимы две вещи:
• Задать кодовую страницу, выполнив cmd.exe /c chcp 1251. (1251 это кодовая страница для
России, замените на ваше значение.) При использовании Cygwin, эту команду можно записать
в /etc/profile.
• Установите консольный шрифт в Lucida Console, потому что растровый шрифт не работает с
кодовой страницей ANSI.