Всякие там плагины типа Butch Move и т.д. отстой, заманаешься клацать. Стандартный интерфейс вордпресса тоже сосет. Надо всего-то

Та-да !!! :)

Перенести в категорию 1250 все, у которых категория 1 и посты раньше даты 2011-05-28 и тип post.

А вот так можно скрыть записи с какой-то даты

Определение термина Ортогональность в ООП. Я же читаю 3-е издание в бумажном виде.

 

1002134878

Ортогональность кода.

Потрясающее сочетание компонентов с чётко определёнными обязанностями наряду с независимостью от более широкой системы иногда называют ортогональностью. Ортогональность способствует повторному использованию кода, поскольку готовые компоненты можно включать в новые системы, не делая ни какой специальной настройки в них.
Такие компоненты должны иметь чётко определённые входные и выходные данные, независимые от какого-либо более широкого контента. В ортогональный код легче вносить изменения, поскольку изменение реализации будет реализовано тем компонентом, в который вносятся изменения. И наконец, ортогональный код безопаснее. Последствия ошибок будут ограничены в определённом контексте. В то же время ошибка в чрезвычайно взаимозависимом коде может легко “ударить” по более широкой системе.

 
PHP объекты, шаблоны и методики программирования. 2-е издание. Мэт Зандстра.

 

По сути это мой процесс разборок с Git. Я решил внедрять его у себя на работе. Поэтому изучаю, т.к. инициатива моя – я должен хорошо разбираться.
Тут копия моего  вопроса с ХэшКода.

————–
Добрый день.
Такая проблема.

Создал репозиторий на bitbucket, залил проект, однако в проекте имелось пару модулей, которые имели внутри себя репозитории Git. В итоге папки этих модулей не открываются на bitbucket.

Я удалил из этих папок Git репозитории в локальном проекте, но они не идут в add и не комитятся. .gitignore нету.

Когда делаю pull с bitbucket то папки которые были со своими Git пустые.

Как можно затереть эти папки и файлы на сервере своими локальными копиями?

Что если я сделаю checkout и укажу удаленную ветку, а потом сделаю git rm для этих папок, сделаю commit. Потом вернусь в master и накачу pull, а потом сделаю add и push, может получится?

Похоже, что нет. Файлы остаются те же. Вопрос остается, выделенный жирным.

———-
тебе нужен git submodule либо git subtree
(56 минут назад)Vladimir Gordeev

———
я прочитал описание по ссылке http://git-scm.com/

Но это не решает мою проблему.
root@:/srv/asb.ru# git submodule init No submodule mapping found in .gitmodules for path ‘modules/minion’ root@:/srv/asb.ru# git submodule update No submodule mapping found in .gitmodules for path ‘modules/minion’

—————
(44 минуты назад)Олег Абражаев

Заработало!!!

Сначала я вернул файлы Git в папки git init.

Потом сделал git rm --cached 'modules/minion'

и для второй папки

а потом

и для второй папки так же

После этого они добавились через commit и стали отображаться на bitbucket

Через git subtree можно будет избавиться от модулей, сделать их каталогами, если надо.

————-
отвечен 27 минут назад

Олег Абражаев
На другом сервере сделался git pull Теперь там нужно сделать

и обновлять модули

В данный момент разрабатываю проект на Kohana. В этом проекте не малую роль играют задания выполняемые через cron. Еще не имея опыта работы с cron и Kohana я думал, что скрипты можно вызывать напрямую, а в контроллере делать проверку Kohana::$is_cli для определения вызова cli. Но как выяснилось существует модуль с версии 3.0, который эволюционировал и в 3.3 стал частью поставки Kohana по умолчанию.
Проблема в том, что Kohana 3.3 внесла некоторые изменения в свой autoload, которые несомненно более удобны. Теперь не обязательно писать классы с заглавной только первой буквой и не обязательно именовать файлы и папки в нижнем регистре. Теперь можно писать так Kohana_CLI, Class_InvalidTask и еще так InvalidTask.php.

Для прикрутки module Minion сначала я хотел было воспользоваться версией для 3.2, которая была загружена Zeelot3k в теги модуля на git. Но там оказалась поделка из более ранней 3.1. В ней используется bash скрипт для вызова index.php с параметрами, когда как в 3.3 minion просто обертка для модуля. Выложенное решение для 3.2 по моему не рабочее, по крайне мере я так и не смог запустить свой task.

После я копировал модуль с 3.3 версии.
Для запуска модуля необходимо переименовать все файлы в директории minion в нижний регистр, включая папки. так же исправить имена файлов и классов по правилам именования Kohana 3.2, т.е. Kohana_CLI на Kohana_Cli и InvalidTask в Invalidtask.
Далее подключить модуль как обычно в Kohana::modules() и исправить index.php в конце на следующий код

И все, должно работать. Создаем в папке /classes/task файл welcome.php с кодом

Далее вызываем.

Темы с вопросами о minion с официального форума:
1
2
3

Так же в решении вопроса мне помог блог участника сообщества biakaveron.
У него можно почитать про модуль подробнее.

GIT REPO: https://github.com/seyfer/minion

UPD: 2014-11-28

Сейчас я пользуюсь стандартным minion для версии 3.2, т.к. у меня возникли некоторые проблемы с совместимостью с другими модулями.
Поэтому я описал пакет вот так

И подключил его в require, а мой портированный с 3.3 удалил. Проект на 3.2. и отлично все работает.

Просто заметка, для сохранения кода и ссылок.

Пользовался в движке не на фреймворке вот этим:

Взято отсюда: http://stackoverflow.com/questions/277224/how-do-i-catch-a-php-fatal-error

Вставил код и автоматически хочу нажать ctrl+f – это форматирование кода в нетбианс. Далее был бы ctrl+s …

Для более продвинутого отлова ошибок можно заценить на примере Kohana в этой теме на kohanaframework.org.
Создавалась мной, хотя ответ был дан в другой теме намного ранее. Не все было понятно.

В двух словах всевозможные ошибки перенаправляются на обработку в свой класс

Ну а далее на контроллер.

Сначала перечисляю сущности.
sуstems – некие системы.
preferences – некоторые настройки, сокращенно pref

pref имеет разные типы, например настройки кеша (cache) и тамаута (timeout). Таким образом pref можно записывать в одну таблицу с полями id, value, type или в две разные таблицы – prefcache и preftimeout с той же структурой. Идем дальше.

Поля таблицы system – id, name. Осуществляется связь многие ко многим через таблицу prefs_systems с полями: id_system, id_pref, type (можно вынести сюда в случае отдельных таблиц prefcache и preftimeout.

И вот зачем две таблицы pref, я хочу на каждую делать свой ORM, т.е. есть базовый ORM_Pref extends ORM и от него наследуются ORM_Prefcache и ORM_Preftimeot. Каждый работает со своей таблицей, а общие настройки в базовом классе.

В этом случае в каждой ORM прописываются связи $_has_many. В случае ORM pref все очевидно, по одной записи связей $_has_many к ORM_System. В случае с описанием ORM_System получается такая конструкция (додумался пока писал).

Вопросы:

  1. Нормально ли я придумал структуру?
  2. Могу ли я базовый класс ORM_Pref объявить абстрактным (т.к. у него нет привязанной таблицы и его не надо создавать) ?
  3. Можно ли как-то улучшить мою структуру? Если все выше правильно, то при добавления нового типа настроек я должен буду прописать связь в ORM_System, это не удобно.

UPD. 02.04.2014

Спустя полтора года мой пост выше кажется мне уже простым вопросом новичка. Решил добавить сюда еще решение по ORM

Получение свойства ORM сразу с UNCOMPRESS.

Проблема: Можно ли как-то через ORM извлекать данные, которые были записаны через COMPRESS () в mysql в BLOB?

В кохановском ОРМ такого нет. Приходится писать функции в ORM типа

Задачу решает, но было бы приятнее просто указать в каких-то правилах как извлекать столбец, как фильтры после извлечения, только эти во время.

Решение нашел коллега. В нужной ORM модели надо переопределить

В данном случае поля request и result сжаты, извлекаются под псевдонимами с распаковкой и будут доступны $model->requestUncompress, например.

Получил задание доработать вывод шаблона с добавлением некоторого функционала.
Как решить знаю, не мог сначала разобраться в некоторых особенностях cms. Работаю с ней первый раз.

Что нужно сделать?
В каталоге добавить возле каждого товара инпут с кол-вом товара. Сначала там нули, и есть + – для увеличения, уменьшения количества. Внизу каталога будет кнопка “Купить выбранные”. По нажатию в корзину добавятся все, где кол-во выбрано 1 и более.
Далее мои рассуждения и решение.

Читать далее

Начну с того, что недавно ip почтового сервера получил бан на gmail, а я получил больную голову на 2 недели от клиентов. В итоге бесконечных переделок конфига Postfix, писем в поддержку гугла и так же после найденного спам листа, в который и попал ip – письма на gmail начали ходить. Но как так вообще произошло, ведь сервер защищен smtp авторизацией (tsl) ???
А виноваты были во всем сами пользователи хостинга…

Читать далее

Люблю развиваться и изучать что-то новое. Недавно был покорен PDO, и сделан на его основе драйвер бд (не окончательная версия) и его синглтон реализация. После я решил простую реализацию шаблонизатора типа

перевести на Smarty и использовать так же его возможности кеширования. Это отняло у меня день жизни.

Читать далее

Вопрос, который я задал в предыдущем посте продублировал на 5 форумов. Все форумы тематические, по PHP. Зачем я это сделал?

  1. Найти ответы.
  2. Проверить эти форумы на активность и юзабельность.

В итоге ответы нашел сам, в чужом коде. А о форумах выводы сделал.

Ответы были крайне просты. Надо было мне внимательнее читать документацию. Последний ид оказался свойством самого класса PDO.
http://ru.php.net/manual/ru/pdo.lastinsertid.php

А кол-во последних измененных строк получаются по методу стейтмента
http://ru.php.net/manual/ru/pdostatement.rowcount.php

Теперь о форумах:

http://www.php.ru/forum/ – не получил ответа. вообще никакого ответа, т.е. низкая активность?
http://phpclub.ru – сначала пытаются троллить, вместо диалога, потом наводками. в итоге ответ написал я сам. так же не понравился дизайн, добавление ответа через аякс.
хотя позже диалог завязался, подтянулись участники, меняю мнение.

Форум Школы Программирования – мертвый.

http://phpforum.ru – тут то и увидел код, натолкнувший на ответ. понравилось у них, особенно дизайн.
http://pyha.ru/forum/ – наверное зе бест. и дизайном и атмосферой. чего только стоит оценка  ответов – ХУЙНЯ, а форум новичков назван “для идиотов”

В итоге я смогу закончить работу над своим драйвером и использовать его постоянно в ядре сайтов.