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

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

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

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

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

Kindle Fire TV. Впечатления

Этой зимой, смотря рынок TV-приставок на Android, мне стало очень интересно посмотреть, чем же является самое простое устройство Fire TV размером чуть больше флешки. Из опасений было то, что там всего 8Гб под всё хранилище (включая операционку и основные программы), но это мелочи, т.к. хранить там планируется только приложения. А вот всего 1Гб оперативной памяти заставили слегка понервничать. Так что это, Fire TV Stick Lite в 2021 году?

Continue reading Kindle Fire TV. Впечатления

Oculus Quest – народный VR?

На дворе конец 2019 года. Космические корабли Илона Маска в автопилоте поднимают груз на орбиту и сами же возвращаются назад. Машины на автопилоте колесят наш глобус (правда в тестовом режиме). Шутки про интернет в каждой кофеварке пока только шутки, но умные электро-чайники и прочие гаджеты начинают захватывать мир. А на десктопах уже наступила виртуальная реальность. Да, дорого, громоздко и не всегда удобно. Да ещё и ПК хороший нужен чтобы всё это показывать так, чтобы не тошнило…

Но вот в мае этого года Oculus выпускает первый полноценный портативный шлем. Да, до этого был весьма ограниченный Go, но тут вполне взрослое, самостоятельное и полноценное решение. И я более, чем уверен – если из конкурентов никто срочно не подтянется, то я просто уверен, что Quest будет самым востребованным подарком на зимние праздники. Так чем же он столь хорош? Попытаюсь сформулировать свои мысли после некоторого времени, проведённого со шлемом. Далее будет просто перечисление разных моментов, на которые, как мне показалось, стоит обратить внимание.

Continue reading Oculus Quest – народный VR?

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

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

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

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

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

Кому несколько фотонов быстрого света? :)

Не так давно я делал заметку про фреймворк для языка PHP, Laravel. Прошло какое-то время и я должен признаться, что я немного ошибся в предположениях. На практике 5 часть оказалась на столько крута, что вообще нет смысла хоть сколько-то оставаться с 4.2. Ну только если надо её поддерживать и нет возможности перенести проект на 5.

Впрочем цель этой заметки в другом. Laravel 5 позиционируется как Full-Stack фреймворк, который во многом самодостаточен из коробки. Там много прекрасных компонентов и ещё больше расширений цепляется через Composer. Но всё-же есть ниши, где Laravel не столь хорош — это те сценарии, когда нужно супер-быстрое, отзывчивое приложение. Там, где задержка в ответе в 30-45 миллисикунд от среднего значения, это уже заметный, а может и катастрофичный тормоз. Можно такие приложения писать и на native PHP — и они будут столь же сверх-быстры, но раширять и поддерживать их в команде не так-то уж и просто…

Впрочем, встречайте — Lumen! От создателей своего большого брата Laravel 5 (и частично на его базе и создан). По умолчанию тут отключено практически всё кроме базового скелета приложения. А то, что надо, вы включаете вручную. Всё, на чём можно было сэкономить, не потеряв в гармонии, уже отключено или вырезано под корень. Просто идельная штуковина для небольших сервисов, которые требуют быстрой обработки — какие-нибудь платёжные сервисы, или сервисы каких-то регистраций, где происходят сотни-тысячи запросов/транзакций в секунду.

У меня уже руки чешутся его опробовать. :) Но пока совсем нет на это времени. Впрочем уже есть один проект, который я давно хотел переписать на Laravel, но были некоторые опасения по скорости в будущем в одном месте. Теперь же точно вижу, что самую нагруженную часть однозначно стоит вывести в отдельную сущность и переписать на Lumen. :)

Две утилиты для работы с флешками и картами памяти

В этой заметке я хочу рассказать о двух утилитах, которые оказались просто палочками-выручалочками не один раз. Rufus — создаём загрузочную флешку. SD Formatter — восстанавливаем оригинальную разметку флешки.

Continue reading Две утилиты для работы с флешками и картами памяти

Back for good

Давным давно меня начало раздражать то, что Windows начала жить своей собственной жизнью. Включена система, не трогаешь её… А внезапно она как начнёт что-то сама делать – и диск под 100%, и проц туда же в компании всех вентиляторов. А минут через 5-10 успокаивается. Быстрая попытка выяснить в чём дело не помогла — фигня через системные службы происходит, так-что это может быть что угодно.

И вот вчера это в очередной раз выбесило на столько, что заменил жёсткий и поставил на него Ubuntu. :) Правда должен сказать пару вещей. С Убунтой последние лет 5 я и так тесно общаюсь, но исключительно с серверной и исключительно через терминал. А вот десктопами полноценно не общался где-то с середины 2000 и надо заметить, всё приятно поменялось в позитивную сторону!

В любом случае — не знаю на сколько я тут долго задержусь и удастся ли вообще на 100% переехать со всем своим багажом задач, но пока пусть будет так. Визуально-эстетически я пока всем доволен.

Zombicide

В данной заметке хотелось бы рассказать о прекрасной настольной игре от Guillotine Games – Zombicide. На детальный обзор это не потянет, т.к. ну слишком много всего. :) Скорее так – на общие впечатления от игры + отчёт по одному сценарию.

Continue reading Zombicide

Laravel Framework

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

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

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

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

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