• Как записывается время съёмки в файл фотографии?

    Moskus
    @Moskus
    Хотя EXIF и является стандартом, но его реализации все же имеют отличия и, нередко - ошибки.
    EXIF имеет поле 0x882a TimeZoneOffset, которое может хранить одно или два значения: смещение относительно GMT у поля 0x9003 DateTimeOriginal и (опционально) смещение у поля 0x0132 ModifyDate (оно же DateTime).
    Однако, есть камеры, которые ничего не пишут в TimeZoneOffset и вообще не имеют в интерфейсе настроек для смещения. Вместо этого они просто пишут то, что показывают их часы, в DateTimeOriginal. Таким образом, узнать, в каком часовом поясе снято это фото, и какое время было установлено в камере, оказывается нельзя.
    Соответственно, точно также может существовать софт, который не основан на одной из известных библиотек работы с метаданными, а потому он спокойно может поле зоны игнорировать (не знать о нем).
    А еще, время может за каким-нибудь чертом храниться в IPTC или XMP секции фото (если оно уже прошло через какую-то обработку), после чего может выясниться, что программа, которая будет открывать это фото потом, имеет приоритет IPTC над EXIF (например). И что-нибудь еще игнорирует. Еще больше запутать ситуацию могут EXIF-теги производителя. Например, у Olympus есть свой 0x0908 DateTimeUTC который обязан содержать время в UTC (то есть нулевую временную зону), однако кто же ставит время в камерах по UTC?

    Потому ответ на ваш вопрос зависит от конкретного софта, о котором идет речь, и от конкретной камеры. Вот такой вот бардак.
    Ответ написан
    4 комментария
  • Кто такой помощник веб-технолога, и что он должен знать?

    saboteur_kiev
    @saboteur_kiev Куратор тега Веб-разработка
    software engineer
    Позвоните и спросите.
    Есть множество компаний, которые понятия не имеют, как на профессиональном языке называются различные специальности. Вплоть до HTML программист вместо контент-менеджера
    Ответ написан
    Комментировать
  • Стоит ли создавать портал на Битриксе?

    2ball
    @2ball
    Хардкор кодер
    После работы с MODx, Yii, Symfony плюсов не нашел.
    Вам подойдет что-то более легкое в плане масштабирования и быстродействия. По цене выйдет одно и то же.

    Из минусов:
    1) Стоимость самого "продукта"
    2) Стоимость дополнительных модулей (некоторые по 100к)
    3) Неимоверное количество некачественного кода
    4) Скорость работы
    5) Особые условия к хостингу
    6) Специалисты Битрикс, как и специалисты 1С - это отдельная узкопрофильная категория рынка, которая берет больше денег за то, что разбирается в фекалиях производства 1С.
    7) Сложно и долго масштабируемый
    8) Местами есть косяки в коде, которые исправляются только ржавыми костылями
    9) Изначальный вес движка (~300мб). Страшно даже подумать что можно было написать на 300мб в движок.
    10) Не заточен под узкопрофильные задачи
    Ответ написан
    Комментировать
  • Динамическая подмена методов класса, возможно ли?

    @Fortop
    Tech/Team lead
    Никита Самохвалов: вопрос на самом деле рядовой. Очередной любитель запуска крокодилов в полет...

    Если класс ваш, то реализуйте эту возможность через магические методы.

    Если класс не ваш, то Dependency Injection вам в руки https://en.m.wikipedia.org/wiki/Inversion_of_control
    Так же вопросу удовлетворяют и декораторы
    Ответ написан
    Комментировать
  • Лучшая библиотека миграций БД под ПХП?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    Используем https://phinx.org/
    Есть некоторые претензии к нему, в частности не явное поведение если миграция падает где то в середине.
    Но в целом норм.
    Ответ написан
    8 комментариев
  • Легкие инструменты для WEB?

    65536
    @65536
    шторм что же еще. 100 баксов или EAPы

    www.jetbrains.com/phpstorm
    Ответ написан
    Комментировать
  • Легкие инструменты для WEB?

    @maxyc_webber
    Web-программист
    Работаю только в phpStorm
    Ответ написан
    Комментировать
  • Как добавить дополнительный источник данных в модели Yii2?

    MegaMufa
    @MegaMufa
    Да, можно.
    class Test extends ActiveRecord
    {
        ...
        public function getTags() 
        {
            return $this->hasMany(Tag::class, ['text_id' => 'id']);
        }
    }


    В контроллере
    public function actionIndex()
    {
        return Text::find()
            ->andWhere(/* ... */)
            ->with('tags')
            ->all();
    }


    Код писал прям тут, возможно опечатался где-нибудь. Но посыл понятен. Вытягивайте данные жадной выборкой (указывая связанную модель через with()) и будет работать так, как вам надо.
    Ответ написан
    2 комментария
  • Чем вы пользуетесь для локальной разработки под Magento?

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

      Отказ от Vagrant и Virtualbox и установка требуемого для разработки программного обеспечения (интерпретатор PHP, веб-сервер, XDebug) напрямую ускорит работу Magento в разы.

    2. Всё перечисленное программное обеспечение (интерпретатор PHP, веб-сервер, XDebug) является свободным и поставляется с открытым исходным кодом, поэтому при отсутствии скомпилированной версии конкретно для Вашей операционной системы его можно скомпилировать самостоятельно.
      Поэтому XDebug доступен во всех средах (операционных системах), которые разработчики используют для разработки интернет-магазинов, в том числе и для Mac OS X 10.9.

    3. Современные версии интерпретатора PHP (5.5.13) работают заметно быстрее, чем используемая Вами устаревшая версия PHP 5.3.2, которая была выпущена 4 года назад, 4 марта 2010 года.

    4. Заметное ускорение работы Magento даёт правильная настройка MySQL, а особенно подсистемы InnoDB, интенсивно используемой Magento,

    5. Помимо программной настройки заметно ускоряет работу MySQL размещение баз данных на отдельном носителе данных.
      В частности, одним из простых способов ускорения Magento на локальном компьютере является покупка быстрого внешнего накопителя данных
      (который можно подключить через обычный интерфейс USB) и использование этого носителя только для баз данных MySQL.

    6. Значительно ускоряет работу Magento использование акселератора PHP.
      Несколько лет назад лучшим решением для Magento был акселератор APC, в настоящее же время акселератор (называется OPCache) уже включён в ядро современных версий PHP.

    7. В обычных условиях промышленной эксплуатации Magento значительно ускоряется посредством включения кэширования данных и режима, который в Magento называется «компиляция» (почти не имеет отношения к общепринятому смыслу слова «компиляция», технология заключается в автоматическом слиянии множества файлов с программным кодом в единый, что на несколько порядкой сокращает количество обращений к файловой системе).

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

    8. В таких условиях значительный (при выключенном кэшировании — до 50%) прирост производительности даёт установка специального расширения для интерпретатора PHP: «Быстрое ядро Magento».

      «Быстрое ядра Magento» реализует низкоуровневые, наиболее ресурсоёмкие и никогда не меняемые прикладным программистом операции Magento на языке С, что ускоряет их на порядок.
      Примером таких операций является работа с XML.
      В дистрибутиве Magento Community Edition 1.9.0.1 содержится 884 файла XML, и большая часть из них будет обрабатываться при каждой загрузке страницы, если кэш отключен, и это будет занимать 30-40% от общего процессорного времени, требуемого для формирования веб-страницы витрины интернет-магазина.
    Ответ написан
    Комментировать
  • Как закрыть доступ к файлам через .htaccess?

    miraage
    @miraage
    Старый прогер
    Возможно такое, что в настройке хоста указано AllowOverride None - тогда от .htaccess толку никакого.
    Ответ написан
    Комментировать