PHPixie_logo

PHPixie является хорошо продуманная структура PHP кодируется вокруг архитектуры MVC, и идея расширения функциональности с помощью модулей вместо зубрежки все это внутри ядра фреймворка.
Это очень легкий, когда дело доходит до размера файла, обеспечивает быстрое время компиляции, приходит документально и при поддержке композитора.
Ядро систематизации содержит все необходимые утилиты современного веб-приложения, от регуляторов и двигатель маршрутизации, для классов управления и сопряжение базы данных.
Отдельные модули существуют для поддержки Haml, кэширование данных, миграции базы данных, обработка изображений, проверки данных, разбиение на страницы данных и аутентификации пользователя.
Всего в рамках, кажется, в ведении человека с глубоким знанием PHP, а также, кажется, поддерживается и регулярно обновляется.

Как и например Symfony, PHPixie состоит из двух частей: библиотеки компонентов и базового проекта, правда в случае PHPixie базовый проект более тонкий и состоит всего из нескольких файлов. Он здесь исполняет роль примера и поэтому изменение его под себя не только приветствуется но в некоторых случаях даже необходимо. Именно для этого важно понимать что и как происходит в системе.

Конечно тем кто уже знаком с MVC  наверняка эта схема уже покажется знакомой, но для новичков может быть очень полезна. Итак начнем c index.php куда и попадают все запросы, здесь самые важные строчки это:

И сразу же мы попадаем на самую важную часть, класс App\Pixie который является сердцем фреймворка, его DI контейнером. Через него можно получить доступ ко всем другим компонентам. App\Pixie наследует от PHPixie\Pixie из библиотеки PHPixie-Core. Базовый проект оглашает этот класс вместо использования PHPixie\Pixie напрямую для предоставления разработчику возможности внести в него свои изменения ( например подключить модуль).

Сразу стоит отметить что добавлять новые сущности в этот контейнер на ходу, как например в Silex, нельзя, все надо описывать явно в классе. Хотя это и может показаться не таким удобным на первый взгляд, но зато позволяет добиться лучшей читабельности кода, полностью продокументировать все сущности (так как все они становятся атрибутами класса) а также получить подсказки по этим сущностям в IDE. Поскольку PHPixie\Pixie содержит также все фактори методы, то это позволят нам с легкостью заменить любой класс фреймворка на свой путем перегрузки соответствующего метода.

Метод bootstrap() инициализирует $pixie, считывает конфигурацию, подключает обработку исключений итд. Как раз в handle_http_request() проходит обработка запроса. Этот процесс состоит из трех этапов:

  • Создание объекта $request класса PHPixie\Request
  • Этот объект передается в соответствующий контроллер и выполняется соответствующий action
  • В процессе исполнения екшена контроллер изменяет объект $response ( PHPixie\Response )
  • Данные из $response (хедеры и контент) отсылаются пользователю

Все три самых важных объекта $request, $response и $pixie доступны как атрибуты класса PHPixie\Controller. Теперь отвлечемся немного на еще несколько парадигм написания кода на PHPixie:

Не использовать оператор «new» нигде кроме фактори методов. Каждый новый класс должен иметь фактори метод (например в App\Pixie) для создания его екземпляров. Такой подход позволяет легко заменить один класс другим, что особенно важно при написании юнит тестов. Так тестируя например контроллер вы теперь сможете передать в него замоканный App\Pixie который вместо реальных классов передаст их моки.

Не использовать статические проперти и методы. Использование статики сильно усложняет написание тестов. Используя PHPixie можно легко обойтись без них, достаточно добавить экземпляр как атрибут App\Pixie и вы сможете получить к нему доступ практически из любого места. Таким образом мы фактически получим синглтон. Кстати сделать это можно еще путем добавления его в $instance_classes.

Как работают модули

Каждый модуль для PHPixie это дополнительная библиотека классов которая предоставляет свой DI контейнер очень похожий на главный PHPixe\Pixie, то есть он состоит из методов фабрик для создания экземпляров классов который входят в модуль. Потом мы просто добавляем его в массив модулей в главный контейнер:

А что делать если я например хочу подменить класс PHPixie\ORM\Model на свой App\Model? Все просто, надо еще сделать свой App\ORM (extends PHPixie\ORM ) метод get() которого вместо модели PHPixie\ORM\Model будет возвращать ту что нужна нам. в этом еще больше проявляется одна из идей фреймворка — как можно больше использовать стандартные приемы ООП вместо каких-то магий. Например чтобы подменить класс самого фреймворка приходится применять subclass_prefix и делать єто на уровне конфигурации а не собственно программирования. Такой подход позволяет намного улучшыть понимание системы, так как по большей части в флове можно разобраться не зная ничего о фреймворке, просто посмотрев на сами классы.

А как же хуки, ивенты и прочее?

Их нет и я так понимаю не будет. Такие вещи полностью из другой парадигмы так как делают код нелинейным, особенно это относится к ивентам, где всегда не до конца понятно который из листенеров запустится первым и что случится если он сам вызовет какой-то ивент. А также от их использования очень часто страдает читабельность бектрейсов, так как они вызываются самим фреймворком где-то там где сам программист кода точно не писал. Если нужно что-то сделать в каком-то месте гораздо проще перегрузить метод который как-раз это и делает и дописать к нему ту логику что нужно.

Неправильное сообщение в Skype - что делать?

Если вы написали в этом мессенджере не то, что надо, то это можно исправить. Здесь сообщения можно отредактировать или удалять. Например, вы ошиблись адресатом и отправили послание не тому человеку, или допустили ошибку в тексте.

Сделать это элементарно: кликаете правой кнопкой мыши на сообщение (если вы общаетесь на смартфоне или планшете – просто делаете длинное нажатие). Выпадающее меню предложит вам варианты :Неправильное сообщение в Skype - что делать?

У отредактированного сообщения появляется маленький значок карандаша:У отредактированного сообщения появляется маленький значок карандаша:

Если вы удалили текст, то на его месте появится специальное уведомление и значок мусорной корзины:Неправильное сообщение в Skype - что делать?

Внимание! Сообщения можно изменять в течение часа. Потом пункты «Редактировать» и «Удалить» пропадут из меню.

Как открыть последние закрытые вкладки браузера

Запомните удобное сочетание клавиш: Shift + Ctrl + T. В таких браузерах, как Google Chrome, Firefox, Opera, Яндекс.Браузер и Internet Explorer, оно используется для открытия последней закрытой вкладки.

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

Кстати, Safari единственный среди популярных браузеров, в котором работает комбинация Ctrl + Z.
Горячие клавиши общего назначения

Ctrl + Esc
Win
Открыть меню «Пуск» (Start)
Ctrl + Shift + Esc Вызов «Диспетчера задач»
Win + E Запуск «Проводника» (Explore)
Win + R Отображение диалога «Запуск программы» (Run), аналог «Пуск» — «Выполнить»
Win + D Свернуть все окна или вернуться в исходное состояние (переключатель)
Win + L Блокировка рабочей станции
Win + F1 Вызов справки Windows
Win + Pause Вызов окна «Свойства системы» (System Properties)
Win + F Открыть окно поиска файлов
Win + Сtrl + F Открыть окно поиска компьютеров
Printscreen Сделать скриншот всего экрана
Alt + Printscreen Сделать скриншот текущего активного окна
Win + Tab
Win + Shift + Tab
Выполняет переключение между кнопками на панели задач
F6
Tab
Перемещение между панелями. Например, между рабочим столом и панелью «Быстрый запуск»
Ctrl + A Выделить всё (объекты, текст)
Ctrl + C
Ctrl + Insert
Копировать в буфер обмена (объекты, текст)
Ctrl + X
Shift + Delete
Вырезать в буфер обмена (объекты, текст)
Ctrl + V
Shift + Insert
Вставить из буфера обмена (объекты, текст)
Ctrl + N Создать новый документ, проект или подобное действие. В Internet Explorer это приводит к открытию нового окна с копией содержимого текущего окна.
Ctrl + S Сохранить текущий документ, проект и т.п.
Ctrl + O Вызвать диалог выбора файла для открытия документа, проекта и т.п.
Ctrl + P Печать
Ctrl + Z Отменить последнее действие
Shift Блокировка автозапуска CD-ROM (удерживать, пока привод читает только что вставленный диск)
Alt + Enter Переход в полноэкранный режим и обратно (переключатель; например, в Windows Media Player или в окне командного интерпретатора).

Работа с текстом Сочетание клавиш Описание

Ctrl + A Выделить всё
Ctrl + C
Ctrl + Insert
Копировать
Ctrl + X
Shift + Delete
Вырезать
Ctrl + V
Shift + Insert
Вставить
Ctrl + ←
Ctrl + →
Переход по словам в тексте. Работает не только в текстовых редакторах. Например, очень удобно использовать в адресной строке браузера
Shift + ←
Shift + →
Shift + ↑
Shift + ↓
Выделение текста
Ctrl + Shift + ←
Ctrl + Shift + →
Выделение текста по словам
Home
End
Ctrl + Home
Ctrl + End
Перемещение в начало-конец строки текста
Ctrl + Home
Ctrl + End
Перемещение в начало-конец документа

Работа с файлами Сочетание клавиш Описание

Shift + F10
Menu
Отображение контекстного меню текущего объекта (аналогично нажатию правой кнопкой мыши).
Alt + Enter Вызов «Свойств объекта»
F2 Переименование объекта
Перетаскивание с Ctrl Копирование объекта
Перетаскивание с Shift Перемещение объекта
Перетаскивание с Ctrl + Shift Создание ярлыка объекта
Щелчки с Ctrl Выделение нескольких объектов в произвольном порядке
Щелчки с Shift Выделение нескольких смежных объектов
Enter То же, что и двойной щелчок по объекту
Delete Удаление объекта
Shift + Delete Безвозвратное удаление объекта, не помещая его в корзину

Работа в проводнике Сочетание клавиш Описание

F3 или Ctrl + F Отобразить или спрятать панель поиска в проводнике (переключатель).


+ (на цифровой клавиатуре)
− (на цифровой клавиатуре)
Навигация по дереву проводника, свёртка-развёртка вложенных каталогов.
* (звездочка) (на цифровой клавиатуре) Отображение всех папок, вложенных в выделенную папку
F5 Обновить окно проводника или Internet Explorer.
Backspace Перейти на уровень вверх в окне проводника или Internet Explorer.
F4 Перейти к адресной строке проводника или Internet Explorer.

Работа с окнами Сочетание клавиш Описание

Alt + Tab
Alt + Shift + Tab
Вызов меню перехода между окнами и переход по нему
Alt + Esc
Alt + Shift + Esc
Переход между окнами (в том порядке, в котором они были запущены)
Alt + F6 Переключение между несколькими окнами одной программы (например, между открытыми окнами WinWord)
Alt + F4 Закрытие активного окна (запущенного приложения). На рабочем столе — вызов диалога завершения работы Windows
Ctrl + F4 Закрытие активного документа в программах, допускающих одновременное открытие нескольких документов
Alt
F10
Вызов меню окна
Alt + − (минус) Вызов системного меню дочернего окна (например, окна документа)
Esc Выйти из меню окна или закрыть открытый диалог
Alt + буква Вызов команды меню или открытие колонки меню. Соответствующие буквы в меню обычно подчёркнуты (или изначально, или становятся подчёркнутыми после нажатия Alt). Если колонка меню уже открыта, то для вызова нужной команды необходимо нажать клавишу с буквой, которая подчёркнута в этой команде
Alt + Space Вызов системного меню окна
F1 Вызов справки приложения.
Ctrl + Up
Ctrl + Down
Вертикальная прокрутка текста или переход вверх-вниз по абзацам текста.

Работа с диалоговыми окнами Сочетание клавиш Описание

Ctrl + Tab Перемещение вперед по вкладкам
Ctrl + Shift + Tab Перемещение назад по вкладкам
Tab Перемещение вперед по опциям
Alt + подчеркнутая буква Выполнение соответствующей команды или выбор соответствующей опции
Enter Выполнение команды для текущей опции или кнопки
Клавиши со стрелками Выбор кнопки, если активная опция входит в группу переключателей
Shift + Tab Перемещение назад по опциям
Shift + Tab Перемещение назад по опциям

Работа в Internet Explorer Сочетание клавиш Описание

F4 Отображение списка поля «Адрес»
Ctrl + N
F5
Запуск еще одного экземпляра обозревателя с аналогичным веб-адресом
Ctrl + R Обновление текущей веб-страницы
Ctrl + B Открывает диалоговое окно «Упорядочить избранное»
Ctrl + E Открывает панель «Поиск»
Ctrl + F Запуск служебной программы поиска
Ctrl + I Открывает панель «Избранное»
Ctrl + L Открывает диалоговое окно «Открыть»
Ctrl + O Открывает диалоговое окно «Открыть», подобно действию CtrL+L
Ctrl + P Открывает диалоговое окно «Печать»
Ctrl + W Закрытие текущего окна
F11 Переход в полноэкранный режим и обратно (работает и в некоторых других приложениях).

Специальные возможности

  • Нажмите клавишу SHIFT пять раз: включение и отключение залипания клавиш
  • Удерживайте нажатой правую клавишу SHIFT восемь секунд: включение и отключение фильтрации ввода
  • Удерживайте нажатой клавишу Num Lock пять секунд: включение и отключение озвучивания переключения
  • Alt слева + Shift слева + Num Lock: включение и отключение управления указателем с клавиатуры
  • Alt слева + Shift слева + PRINT SCREEN: включение и отключение высокой контрастности

Горячие кнопки Gmail

В почте Google есть много полезных фишек, которые помогают работать с ней. Сегодня поговорим о “быстрых клавишах”. Они ускорят работу с письмами и позволят вам эффективней использовать свое время.

Для начала убедитесь, что в настройках вашей почты включена поддержка горячих клавиш. Для этого нажмите шестеренку в правом верхнем углу и выберите пункт «Настройки», затем найдите опцию «Быстрые клавиши». Если она не активна – включите ее.
После этого вы сможете применять сочетания клавиш для различных операций с письмами.

Вот самые полезные их них:
• Чтобы открыть папку «Входящие» нажмите последовательно g и i.
• Хотите посмотреть письма, отмеченные звездочками — жмите g и сразу s.
• Открыть папку «Вся почта» поможет g и тут же a.
• Открыть Контакты — последовательность gc.
• Создать сообщение — c. Сочетание Shift + c позволяет создать письмо в новом окне.

Перемещаться между сообщениями вам помогут следующие клавиши:
• К следующему письму или цепочке писем — j.
• К предыдущему сообщению или цепочке писем — k.
• Перейти к следующему письму в цепочке писем — p.
• Вернуться к предыдущему сообщению в цепочке писем – n.

Управлять посланиями вам позволят такие клавиши:
• Поставить метку возле выделенного письма — х.
• Добавить или удалить пометку с сообщения или цепочки писем — s. Если нажимать на эту клавишу несколько раз подряд, то можно менять цвет метки.
• Удалить сообщение – #.
• Архивировать письмо или цепочку писем — e.
• Отметить сообщение как спам – !.
• Ответить отправителю письма – r.
• Ответить всем – a.
• Переслать письмо — f.
• Показать справку по быстрым клавишам – ?.

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

Скрытая функция: играем в шахматы в мессенджере Facebook

Есть такое понятие, как «Пасхальные яйца» (Easter eggs) – это когда в программу закладывается недокументированная функция, обычно прикол. Например, в одной из ранних версий Microsoft Office можно было сыграть в Doom (всего один уровень, но все же). А недавно стало известно, что в мессенджере Facebook можно играть в шахматы.

Для этого выберите собеседника и отправьте ему сообщение @fbchess play. Вы увидите перед собой шахматную доску, как на скриншоте ниже. Увы, мышкой сделать ход не получится – нужно отсылать друг другу специальные сообщения. Но это же делает игру довольно занятной.
Например, чтобы сделать ход пешкой, нужно отправить сообщение @fbchess e4. Чтобы походить слоном на клетку e6, нужно написать @fbchess Be6. Для получения полного списка команд наберите @fbchess help. На данный момент справка доступна только на английском языке.

Если знаете другие забавные «пасхалки», делитесь в комментариях.

Секреты компьютерной мыши

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

Например, вам нужно выделить часть текста. Обычно для этого мы зажимаем левую кнопку мыши и тянем курсор до нужного места. А если надо выделить текст на большом участке, то это не очень удобно. Здесь пригодится такая комбинация: щелкните мышкой в начале нужного фрагмента, перейдите в его конец и щелкните еще раз, зажав при этом кнопку Shift. Так вы выделите необходимую часть текста.

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

Многие знают, что двойной клик мышкой по слову выделяет его. А если вы сделаете тройной клик, то выделите сразу целый абзац.

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

Если вам нужно открыть ссылку в новой вкладке, то можно нажать среднюю кнопку мыши. А есть еще и второй способ — зажмите кнопку Ctrl и щелкните левой. Это очень удобно, если вы не хотите уходить со страницы.

Ghostery делает ваш серфинг безопаснее

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

Ghostery – бесплатный плагин для веб-браузеров Opera, Mozilla Firefox, Apple Safari, Internet Explorer и Google Chrome, защищающий конфиденциальную информацию пользователей при посещение веб-сайтов в Интернете.

Плагин помогает пользователям легко обнаружить и контролировать web bugs – объекты, которые встраиваются в веб-страницы и являются невидимыми для пользователя, что позволяет собирать данные об их предпочтениях и привычках в Интернете.

Ghostery создан и поддерживается для пользователей, которые заботятся о своей конфиденциальности в Интернете и ценят приватность своей онлайн-активности.

Основные возможности Ghostery

Ghostery видит скрытый Интернет, обнаруживает трекеры, web bugs, пиксели, и маяки, размещенные на веб-страницах с помощью Facebook, Google Analytics и более 500 других рекламных сетей, поставщиков поведенческих данных, веб-издателей – всех компаний, которые заинтересованы в информации о вашей деятельности в Интернете.

Также, Ghostery позволяет блокировать скрипты, изображения, фреймы и встраиваемые объекты от компаний, которым вы не доверяете.

Как выключить компьютер в заданное время

Есть в Windows забавная функция, позволяющая отключать (или перезагружать) систему с отсрочкой. Команда называется shutdown, и с ее помощью можно задать диапазон в секундах от нуля до 10 лет. Она может быть полезной, например, в ситуации, когда вам пора уходить, а компьютер еще не закончил работу: обновление антивируса, скачивание фильма и т.п. В этом случае можно отложить выключение системы на какое-то время и спокойно уходить из дома.

Для того чтобы воспользоваться командой, нажмите на клавиатуре комбинацию клавиш Win + R (клавиша Win – это та, на которой нарисована иконка Windows). Появится командная строка, в которой нужно ввести комбинацию shutdоwn -s -f -t 360 и нажать Enter. В результате появится сообщение о том, что система выключится через 6 минут

Как выключить компьютер в заданное время

То есть цифры после параметра -t это количество секунд, по прошествии которых компьютер будет выключен. Параметр -s как раз отвечает за выключение системы, а параметр -f за принудительное закрытие запущенных приложений.
Чтобы отменить выключение компьютера, введите команду shutdоwn -a.

Как выключить компьютер в заданное время

Если вам интересны другие параметры команды shutdоwn, тогда сделайте следующее. Нажмите Win + R, наберите cmd и нажмите Enter. В появившемся окне наберите shutdоwn без всяких параметров, и откроется справка по данной команде.

Online_Icon

Часто на сайтах можно видите фразу, сейчас данный сайт просматривает столько-то человек, или даже список зарегистрированных посетителей, находящихся в данным момент на сайте. Обычно такой сервис называют “Список посетителей OnLine”. Учитывая, что у посетителя может динамически меняться IP-адрес, или наоборот несколько посетителей могут выходить в Интернет из под одного IP-адреса, для подсчёта уникальных посетителей на сайте прибегают к сессиям. Создадим таблицу session в которой будем хранить уникальные идентификаторы сессии (SID), назначенные посетителям.

Таблица session

Таблица имеет три поля – id_session, поле, куда помещается SID сессии, поле putdate, для того, хранения времени обращения посетителя к страницам сайта и поле user, которое нами использоваться не будет, но в котором можно хранить имя пользователя, если у вас имеется система авторизации и вы хотите различать гостей и авторизованных пользователей. Предполагается, что имя пользователя помещается в элемент суперглобального массива $_SESSION[‘user’] – если вас интересует авторизация на PHP, с нейм можно ознакомиться по ссылке

В начало каждой страницы сайта, которая будет участвовать в регистрации посетителей следует при помощи конструкции require_once() поместить следующий код.

Скрипт регистрации посетителей в таблице session

Протокол HTTP не является сессионным протоколом, поэтому мы можем фиксировать только обращения посетителей к страницам сайта – сколько после этого посетитель будет читать страницу – одному богу известно – получить эту информацию мы не сможем. Поэтому мы будем считать, что если посетиель не обращается к страницам сайта более 20 минут – он ушёл и его можно удалять из таблицы session.

Теперь нам остаётся только вывести содержимое таблицы session или подсчитать число посетителей в ней.

Выводим содержимое таблицы session

Для установки соединения с базой данных, нам потребуется конфигурационный файл config.php, следующего содержания.

Конфигурационный файл config.php

Скрипт передачи файлов методом POST предоставлен Арсеньевым Алексеем (больше известным на нашем форуме как JIEXA).

Передача данных методом POST, является интереснейшей задачей: часто требуется подделка имени пользовательского агента (USER_AGENT), реферера (адреса предыдущей страницы), cookie и т.п.