Абстракции могут убивать

Неожиданно для себя столкнулся с проблемой на ровном месте. Много лет для работы с данными использовал средства фреймворка. По сути – DTO и модели. Один ряд в таблице – одна запись, одна модель/объект. И по многим канонам все манипуляции проводились именно с объектами (по фильтру вытащить много инстансов и уже на уровне фреймворка посчитать что-то). А после вычислений объекты часто в топку. И это было всем нормально, ибо оптимизации часто перекрываются железом, а время компетентного специалиста зачастую не выгодно бизнесу. Так вот в очередной убеждаюсь, что если перефразировать одну поговорку:

На фреймворк надейся, а сам не плошай!

За видимым удобством, не стоит забывать развиваться или хотя бы поддерживать форму в своих знаниях. Очень много крутых вещей можно делать непосредственно через сырые SQL запросы хоть даже в SQLite3, не говоря о чём-то продвинутом типа PostgreSQL или всякие Oracle. И в итоге сразу готовить модель (данные) под презентацию, если это можно вынести на уровень SQL.

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

PHP7 – необратимое будущее? Проверяемся на совместимость.

Уже давно мне как-то не по себе что-либо делать в виде “чёрной коробки”. Тем более программировать. Если что-то начинается не так, сразу запускаю дебаггер и всё становится на свои места. Но что делать с PHP7? Ведь хочешь или нет, но как и раньше с 4 на 5, а потом и на 5.3, всё однозначно перейдёт на 7 версию. Вопрос только в 2016 году или в одном из следующих?

Можно в виртуалке установить PHP7, копию проекта и… что-то увидеть. Или НЕ увидеть. Вот такое тестирование в слепую я и хотел бы избежать. Кто крикнул “Тесты!”? Некоторые штуки писались давным-давно, когда ни про тесты, ни даже про ООП не задумывались.

Но вот не так давно наткнулся на чудесную программу – php7cc. Написана на PHP5, просит 5.3. Натравливаем на любую папку и она проверяет весь код на наличие устаревших элементов относительно версии 7.0. Всё просто и чудесно. Можно прямо на папку с продакшеном натравить, если совсем лень возиться. ;) В результате список всех проблем, если таковые есть. И если используются поросшие паутиной сторонние библиотеки времён 5.0-5.2, то проблемы гарантированно будут! :D

В общем, кому надо – забирайте, проверяйтесь и подготавливайтесь, пока PHP7 на вашем сервере внезапно не стал версией по умолчанию. :)

Laravel Framework

Если вы программируете на PHP, то наверняка вам в последний год попадался на глаза фреймворк Laravel4. Если вкратце, то это то же самое, что и Play! в мире Java/Scala или Rails у Ruby.

Главная и ключевая особенность — полная и законченная структура всего проекта – используется классический MVC (основа частично взята из Symphony). Файлы организованы весьма органично и лаконично. Работа с базой через Eloquent ORM. За визуализацию отвечает Blade. Весьма гибкий и одновременно простой рутер. Ну а в качестве фундамента для всех модулей используется Composer, что даёт очень широкие (если не бесконечно неограниченные) в возможности расширения функциональности. И так можно продолжать долго. ;)

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

На подходе (в начале 2015) версия 5, в которой они ещё дальше пошли в сторону самостоятельности проекта. Но четвёрка при этом никуда не денется и ещё долгое время (наверняка весь 2015 год) будет весьма востребована и с активной поддержкой. С лета этого года появилась очень большая информационная поддержка в русскоязычной сфере, что не может не радовать.

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

Модификация плагина Lightbox2 под ресурс poga.lv

В виду того, что свои фотографии (которые я изредка выкладываю в блог) я храню на ресурсе poga.lv, то мне хотелось как-то упростить их ввод. Оригинальный плагин можно скачать там, а изменённый тут. Как установливать плагины читайте в документации.

Изменения. (только файл wp-lightbox2.php)

  • Изменено описание планина (версия)
  • Изменено название кнопки
  • Изменена функция сбора и вставки данных

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

Во втором окне вас спрашивают указать размер уменьшенной фотографии в блоге. По умолчанию это s (примерно 240×180). варианты там написаны.

В третьем окне вас спрашивают указать размер увеличенной картинки (которая откроется потом). Конечно, если вы на сервер закачали фотографию размером 640х480, то она не растянется до 800х600 или больше, даже если вы укажете размеры b или p. ;)

Далее идёт описание фотографии – отображается внизу полной картини и при наведении на уменьшенную копию.

И в пятом окне вас просят указать группу. Если у вас на одной странице несколько фотографий и у всех одна группа, то вы сможете их просматривать вперёд/назад просто кликая на правой/лавой половинке увеличенной фотографии.

Заключеие.
Значения под себя вы можете изменить отредактировав файл wp-lightbox2.php вручную. Подстроив всё под себя, вставка фотки у меня теперь выглядит так: ctrl+V, Enter, Enter, Enter, Enter, Enter. ;)

Надеюсь это плагин пригодится ещё кому-нибудь кроме меня.

Текущая ситуация с SMS Sender’ом

На данный момент текущая версия – 0.0.1 (июль 2004-го года).

Сейчас это всё находится в стадии pre-alpha. По отзывам текущая версия работает на многих телефонах с поддержкой J2ME. Лично проверял на различных Nokia Series40 и Series60, Samsung X100, Motorolla C650.

Как только будет рализован список To-Do, так сразу же выложу для публичного скачивания. А пока эта программа только для внутреннего пользования.

To-Do v0.0.2:

  • Переделать сетевой код в многопотоковый и при отсылке выводить некое извещение об отсылке
  • Вынести парсинг на сторону сервера для уменьшения траффика (это будет очень заметно при отсылке на LMT)
  • Добавить сохранение различных настроек (автоподпись, последний номер, текст последнего сообщения)
  • Переделать немного интерфейс
  • Добавить поддержку оператора Triatel
  • Добавить поддержку оператора ZetCom (Amigo)

Когда это всё будет сделано – неизвестно.