Блог Михаила Крамера. PHP и JS
Последние публикации
Бывает так, что случайно добавился конфиг или какой-то левый файл в гит, но заметил это только когда уже запушил. Вот решение проблемы. (постоянно забываю этот приём). Оригинал на английском
Иногда бывает необходимо получить через @ViewChild() ссылку на блок/компонент, который в шаблоне закрыт на *ngIf, т.е. по определённому условию появляется и исчезает. К счастью, сделать это достаточно просто.
Бэкенд этого блога написан на фреймворке NestJS с использованием TypeORM. По началу я был почти в восторге от последней, особенно порадовала поддержка сохранения древовидных структур разными методами, в том числе с использованием любимых мной Nested Sets. Но, к сожалению, поддержка деревьев сделана неполно. При удалении не пересчитывались left и right, не реализованы ни перестановка элементов, ни перенос элементов из одной ветки в другую и т.п. Пришлось переписать модуль для работы с Nested Sets с php.
Недавно я решил поиграться с фреймворками для NodeJS. После первого тестового проекта на express захотелось поискать что-то более серьёзное и удобное. Наткнулся на NestJS. Для теста написал на нём бэкенд для этого блога
Предположим вам нужно разработать компонент какой-нибудь панели, которая повторяется много раз в дизайне. У неё есть заголовок, у неё есть футер, у неё есть контент. Как сделать это оптимальным образом
Иногда необходимо отобразить рекурсивную структуру данных: меню, дерево каталогов, структуру организации. В ангуляре для этого можно эффективно использовать ng-template. Статья написана на основе аглоязычной статьи Playing With Recursive Ng-Template References In Angular 6.1.10
В этой статье я хочу рассказать об о возможности Angular, которая впечатляет лично меня больше всего - это тег ng-template, который фактически позволяет передавать кусок вёрстки вместе со всеми обработчиками событий из одного компонента в другой. Такие пакеты, как ng-bootstrap активно пользуются этой возможностью для реализации модальных окон, а сегодня мы рассмотрим, как этим воспользоваться самим
28.05.2020
Для извращенцев вроде меня, которые ещё используют апач периодически. basename врёт, когда в именах файла русские буквы
27.04.2015
Написать этот пост меня побудили вопросы на эту тему на форуме php.ru. Итак, нужно при задании фильтров каких-то объектов (например, товаров) динамически формировать where. Сейчас я покажу, как это делается в построителях запросов известных мне фреймворкоа. Возьмём простой случай, когда все поля для фильтрации в одной таблице, и не требуется join-ов.
Для удаления дубликатов записей можно использовать следующие команды:
21.04.2015
Проверка, входит ли IP в заданную подсеть
04.03.2015
Ещё одна функция из разряда "маленький полезный пустячок". Задача - подставить правильное окончание для количества чего-нибудь. К примеру, 1 комментарий, 2 комментария и т.п.
Задача такая: выдать все строки таблицы с id, входящим во множество (13, 15, 14, 29, 11), и к тому же именно в таком порядке. Недавно обнаружил, что в MySQL есть оператор, решающий именно эту задачу
14.01.2015
Практически во всех фреймворках реализована очень удобная работа с формами, позволяющая легко сделать валидацию вводимых данных. А что, если проект не настолько крупный, чтоб использовать целый фреймворк, но формы для ввода данных все равно хочется проверять. Сегодня я хочу показать, как на php можно написать достаточно универсальный класс валидации данных.
Плагин jQuery Form существует достаточно давно, но я им начал пользоваться относительно недавно. Отправка формы по AJAX - задача, в принципе, не сложная, и я обычно программировал её сам. Но недавно решил попробовать этот плагин, и понял, что это гораздо удобнее.
10.12.2014
Возникла задача - сравнить временные промежутки, проверить, пересекаются ли они.
20.08.2014
Достаточно долго в моих проектах разбиение на слова делалось очень простой регуляркой, но понадобилось сделать разбиение слов для азербайджанского языка
Итак, заказчик попросил на сайте, где уже была сделана традиционная пагинация, сделать т.н. бесконечную прокрутку - т.е. чтоб при скроллинге до конца страницы подгружались данные со следующих страниц. Ничего сложного, но переписывать код было лень. И тут на помощь пришёл скриптик jScroll
23.06.2014
Алгоритм не сложный, но так не хочется каждый раз его сочинять