PHP: ++$i быстрее $i++ в 1.6 раз

- Posted in Webdev by

Проверил услышанное (усомнился, что разница будет хоть сколько-нибудь заметная).

Удивлён? Не то слово! У меня разница получилась в 1.6-1.7 раз. Я думал, что если и будет, то какие-то копейки. А тут - полтора-два раза?!

Это на PHP 7.0.22, OS 64-битная (x86_64 GNU/Linux).

Есть ли разница на C++ или Java, и насколько большая - не знаю, не проверял. Если кто подскажет - было бы интересно.

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

Чего и всем желаю. Применяйте ++$i на автопилоте.

Обсудить

Почему в Opencart 3 в шаблонах Twig вместо PHP

- Posted in Opencart by

DK про то, почему Twig вместо PHP:

by Daniel » Thu Jul 06, 2017 12:00 am

we needed to switch from php templates otherwise we could not have a theme editor or have php editable code on the cloud.

В общем, всё движется к "опенкарт в облаке" как SaaS: ядро недоступно, снаружи шаблоны и может ещё что-то-там пользовательское. И внутри будет какой-то редактор шаблонов, как и добавленный редактор языковых переводов.

Opencart 3 кажется можно уже начинать смотреть/использовать

- Posted in Opencart by

А тем временем уже 3.0.1.2. Тихо-мирно, без помпы, анонсов и рассылок.

Похоже, на Opencart 3 уже можно смотреть без риска потонуть под откровенными ошибками и недосмотрами (обычное дело с их x.x.0.0 "релизами").

UPD: только написал, и через день вышел релиз 3.0.2.0.

Ещё ссылки по теме Opencart 3:

Как работает автоматическое определение языка в Опенкарт

- Posted in Opencart by

Для начала давайте разберёмся, как это всё устроено в браузерах и этих наших интернетах.

  1. Человек в настройках браузера обычно имеет возможность указать один или несколько языков, которые он понимает и предпочитает. Ищите в настройках что-то вроде "Preferred languages" (предпочитаемые языки). В браузерах попроще, с прицелом на чайников и минимумом настроек, локаль может браться системная или быть вшита в локализованный софт (без возможности настройки пользователем).

  2. Браузер отдаёт эту информацию сайтам в HTTP-заголовках Accept-Language при всех запросах. Этим он сообщает сайтам: если есть контент на одном из языков из моего списка - дайте мне его! (Если нет для первого - давайте для следующего по списку; если вообще ничего нет - давайте что там у вас есть по умолчанию). Варианты, которые встречаются у посетителей ваших сайтов, можно найти в Google Analytics, Яндекс.Вебмастер, Awstats, Piwik и других подобных системах веб-аналитики. Что отдаёт ваш браузер сайтам, вы можете увидеть в инструментах разработчика, посмотрев на HTTP-заголовки.

  3. Сайт может анализировать или игнорировать эти заголовки, реагируя на указанные предпочтения или нет.

Теперь Опенкарт. Мне кажется, 9 из 10 пользователей этого движка понятия не имеют, что это за строчка в описании языка в админке со всякими ru, ru-ru, uk, uk_UA и т.п. Теперь догадываетесь?

Это - простой список локалей, которые браузер может передать в заголовках. И на которые мы имеем возможность среагировать (админ магазина, движок). Если у нового пользователя опенкарт язык сайта ещё не выбран (и не записан в куках), то Опенкарт смотрит на HTTP-заголовки Accept-Language. И сравнивает их с тем, что мы понаписали в админке для русского, украинского и других языков.

Поскольку браузеры обычно дают выбирать языки и локали из списка, а не прописывать их вручную, то там чаще всего будет код языка или языка и региона. Например: ru, ru-ru, ru-RU, ru_ru, ru_RU. В Украине бывает uk (украинский язык), ru_UA, uk_UA. Ну и ru-UA, uk-UA до кучи.

Обычно локаль указывается с подчёркиванием "_", но жёстких стандартов по этому поводу кажется нет. И нередко можно встретить минус, тире или как там его правильно называть в типографике: "-". То же самое касается регистра символов в коде страны. Надо прописать все возможные комбинации, так как Опенкарт не приводит их к нижнему регистру при сравнении (смотрел на версии 2.1.0.2 - думаю, в остальных так же).

Итого: у вас в опенкарт админке в настройке языка должен быть список языков/локалей, которые могут запросить браузеры ваших посетителей (смотрите логи и аналитику и подстраивайтесь под своих посетителей). И этой настройкой вы определяете, какой язык им отдать при первом посещении вашего сайта ("угадать" его предпочтения).

Надеюсь, вам стала понятней эта внутренняя кухня автоматического определения языка.

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

Минимальная цена расширений на Opencart.com теперь уже 20USD

- Posted in Opencart by

На опенкарт.ком нововведение:

Price must be 20.00 USD or more!

Раньше нижняя планка была 10$.

И фиг теперь отредактируешь описание - вместе с этим надо и цену поднимать.

Ещё там после переделки есть чудесатое поле "License period" (от 1 до 12 месяцев). Которое в админке имеет один смысл, а в магазине расширений - другой.

В админке у продавцов это поле расположено в одной строке с ценой на модуль. И логика получается такая: за N баксов модуль продается и доступен 1-12 месяцев. Дальше покупай повторно. Это когда-то обсуждалось на англоязычном форуме и оттуда я помню логику работы нововведения.

Но! Самое интересное, что в пользовательском интерфейсе (в магазине расширений) это поле невменяемо названо не сроком лиценции, а сроком бесплатной поддержки! Офигеть. Не бесплатных обновлений (если будут появляться), не сроком доступности модуля для скачивания, а вот так в лоб: 12 Months Free Support (ну, например 12). То есть купил кто-то модуль на нестандартный шаблон - и ты ему целый год должен все допилы бесплатно, не говоря уже о бесплатной адаптации под нестандартный шаблон. Потому что "у тебя на сайте так написано".

Consistency в очередной раз в пролёте. Опенкарт такой опенкарт...