Базовый контроллер и его методы

На прошлом занятии мы набросали основу нашего ядра, а сегодня нам предстоит воспользоваться преимуществами ООП и написать базовый контроллер, от которого будут наследоваться все остальные.

Зачем это нужно? Да, хотя бы, затем, чтобы не прописывать одни и те же методы в каждом контроллере. Написать один общий, а потом менять только нужные части. Это гораздо правильнее и удобнее.

К тому же, чем меньше дублируется кода, тем больше гарантий, что этот код работает всегда одинаково. Отсюда следует простой вывод, что дублирования кода быть вообще не должно.
Если вы в двух местах пишете один и тот же метод — у вас проблема с логикой работы приложения.

Итак, приступаем.

Читать дальше

Основы ООП и контроллеры страниц

На этом занятии мы начнём писать ядро нашего сайта и заложим основу для работы контроллеров страниц.

Ядро — это один основной класс, с общими для всех контроллеров методами. А контроллеры — это другие php классы, которые будут отвечать за функционал какого-то раздела сайта.

Контроллеры будут лежать в специальной директории, откуда их запустит основной класс. Запрос приходит на index.php, тот инициализирует основной класс и просит обработать запрос. Ядро определяет, к какому разделу сайта обращён запрос и загружает его контроллер, передавая ему все полномочия на генерацию ответа.

Дальше контроллер проверит параметры запроса и выдаст результат, или редирект на страницу с ошибкой. Позже мы научим наши контроллеры обрабатывать запросы и выдавать ответы через Ajax.

Логическая цепочка выходит такая: index.php -> Сore -> Controllers_Page.

Читать дальше

Вводное занятие

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

На этот раз мы познакомимся с работой на чистом PHP, без уютной админки и набора готовых инструментов. Мы напишем свой собственный мини-движок, который будет уметь разбирать запросы от пользователей и выводить страницы сайта. Конечно, мы будет стараться писать его красиво и логично, чтобы наш движок можно было расширять.

Хочу предупредить вас сразу, что я не считаю себя экспертом в программировании. По образованию я врач-эпидемиолог, и программирование в медицинской академии не преподавали. Всё, что я знаю, я освоил сам по книжкам и «методом тыка».

Люди, уже программирующие на PHP, из этих уроков ничего нового не вынесут (ну, может что-то и подсмотрят любопытное, но не факт), так что курс будет интересен исключительно новичкам. Я рассчитываю на то, что вы знаете только базовые функции PHP и умеете писать простейший спагетти-код, то есть PHP вперемешку с HTML и выводом через echo().

Тот мини-движок, который мы напишем, можно будет использовать в реальной работе, но он явно не будет лучшим решением среди всех готовых. Его задача — проиллюстрировать курс, а не написать мега-инструмент для работы.

Первое занятие бесплатное, а дальше будет нужно купить доступ. Всё уже открыто бесплатно.

Читать дальше

Про работу

На данный момент неожиданно выполнил все запланированные работы и появилось свободное время.

Честно говоря, с непривычки, даже какой-то дискомфорт. Пару дней поиграл в Destiny, посмотрел кино и уже не знаю, чем заняться.

Может, организовать новые курсы (на какую тему)? Или написать какое-то новое дополнение (переписать старое), используя Fenom?

У кого есть идеи? Предлагайте!

Читать дальше

mxManager отправлен в AppStore

Вот, вроде бы, и закончилась эпопея длинною в полгода — разработка мобильного приложения mxManager для iOS.
Для сравнения, на это дело я потратил больше времени, чем на первые версии miniShop2 и Tickets вместе взятые.

Были исправлены все недоработки после тестирования бета-версии, ни одной ошибки заявлено не было. Последний штрих — экран блокировки, который защищает пароли ваших сайтов.

Приложение, в итоге, бесплатное. Но для возможности работы с несколькими сайтами вам придётся его разблокировать за 599 279 рублей. Из них лично мне пойдёт только 195, потому что комиссия Apple составляет 30%.

Читать дальше

Работа с ресурсами в mxManager

После четырёх месяцев упорной работы, весь базовый функционал моего приложения, который я запланировал, готов. Это:

  1. Работа с ресурсами, с базовой поддержкой ТВ и CRC.
  2. Работа со всеми элементами: шаблоны, чанки, сниппеты, плагины, категории.
  3. Лог событий сайта
  4. Журнал ошибок
  5. Очистка кэша
Вы сможете создавать, редактировать и удалять ресурсы и элементы, приложения вполне хватит, чтобы быстро исправить опечатку на ходу, или снять с публикации документ.

Первое видео — настройки соединения и структура сайта.
Второе видео — работа с элементами
Третье видео — работа с ресурсами:

Читать дальше

Wyrmwood, дорога мертвецов


Довольно давно стараюсь смотреть кино на языке оригинала с русскими субтитрами. От этого сплошная польза:

  • Слышишь игру оригинальных актёров, а не мастеров дубляжа.
  • Можешь смотреть фильмы сразу после западных релизов.
  • Учишься быстрее читать и соображать.
  • И даже начинаешь понимать английский на слух, понемногу.
Единственный минус — далеко не всегда есть русские субтитры, поэтому я начал понемногу смотреть английские. И после нескольких сеансов пришла идея — а почему бы не пробовать и самому что-то перевести?

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

Итак, встречайте: "Wyrmwood, дорога мертвецов".

Любопытный фильм про зомби в Австралии, который похож одновременно и на «Безумного Макса», и на «Зловещих мертвецов». Много юмора, стрельбы и километры прекрасного асфальта.

Бюджет копеечный, но снято энтузиастами искренне, от души.

Читать дальше

Анонс разработки mxManager

Как известно, админка MODX не очень подходит для работы на мобильных устройствах. Там мало места, нет правого клика, да и грузить библиотек ExtJS нужно много. В принципе, кое что с сайтом можно сделать, но я собрался написать своё приложение для более комфортной работы.

Принцип такой: вы устанавливаете на сайт компонент из репозитория MODX, а потом подключаетесь к нему из приложения с iPhone. Авторизованному пользователю доступны примерно те же действия, что и через админку, но всё это работает гораздо быстрее и удобнее, чем через браузер.

Приложение пока сырое, всё еще может много раз измениться, но вот что у меня есть показать сегодня:

Сейчас готовы все выборки разделов и простейшие операции. Самое сложное — работа с разными типами ресурсов и куча вариантов форм, еще впереди.

Читать дальше

Обновление

Предварительно забекапив, обновил bezumkin.ru до MODX 2.3.2-pl. Заодно обновил и все установленные пакеты: Office, mSearch2, miniShop2, AjaxManager и т.д.

Если обнаружите какие-то ошибки — пишите в комментарии, пожалуйста. Какое-то время погоняем этот сайт и, если всё будет хорошо, то обновлю и modx.pro.

Читать дальше

День рождения 32

Сегодня мне стукнуло 32 года. За прошедший год:

  • Создан и запущен хостинг Simple Dream, для которого немного освоил язык программирования Python.
  • Создан и запущен сайт нашего сообщества modx.pro, куда переехала большая часть контента с bezumkin.ru. По моим субъективным прикидкам, это сейчас самый посещаемый ресурс по MODX в СНГ.
  • Придуман и запущен сайт открытой документации docs.modx.pro, куда любой желающий может прислать информацию через GitHub. В отличии от аналогов, работает также на MODX.
  • Познакомился с «ленивым» отпуском, путём поездки в Турцию, поплавал вдоволь. В целом, неплохо, но гулять по Франкфурту понравилось больше.
  • Обновил массу своих дополнений для MODX 2.3.
  • Начал сотрудничать с ребятами с kino-govno.com и kritikanstvo.ru. На данный момент практически полностью переписал админку Критиканства, есть планы и по работе с КГ.
  • Осуществил давнюю мечту — написать что-то не для web. Для этого был немного освоен Objective-C, процедура регистрации разработчиков в Apple и оформление приложений в магазине. В результате выпущено Критиканство для iOS.
Сейчас стараюсь отойти от активной разработки на PHP в сторону работы с iOS. Просто потому, что одно уже хорошо изучено и немного надоело, а другое — тёмный, интересный лес.

Читать дальше