Задать вопрос
  • Пароли пользователей после переноса с yii?

    @xfg
    Yii использует алгоритм хеширования blowfish. Чтобы в php получить хеш по этому алгоритму, нужно просто взять функцию crypt и вторым аргументом передать соль в формате$2a$13$6abRKtrd12bvkltrfsorbd

    где
    $2a$ (также может быть $2x$ или $2y$) - указывает на алгоритм блоуфиш.
    13 - сложность алгоритма, может быть от 04 до 31. Чем больше число, тем дольше будет вычисляться хеш.
    6abRKtrd12bvkltrfsorbd - 22 символа для соли.

    Проверить хеш против пароля можно функцией password_verify. Берете хеши, которые вам нагенерил Yii и передаете в функцию password_verify и всё у вас заработает, без проблем. Я с Yii на node.js уезжал с этими хешами, никаких проблем :)

    Все что ниже можно не читать. Там для тех, кому интересно откуда взялось 3 разных префикса ($2a$, $2x$, $2y$).

    Префиксы $2y$ и $2x$ существуют только в PHP, так как они налажали в алгоритме блоуфиш в версиях до 5.3.7. Префикс $2x$ был добавлен для обратной совместимости, т.е. если вы генерили хеши $2a$ в версии PHP до 5.3.7 и теперь обновились до или выше этой версии и хотите, чтобы ваши уже существующие уязвимые хеши продолжали правильно работать, то нужно было заменить у таких хешей префикс с $2a$ на $2x$. Префикс $2y$ это уже исправленный алгоритм хеширования и ничем не отличается от $2a$ в версиях PHP 5.3.7 и выше. Подробнее обо всем этом можно прочитать php.net/security/crypt_blowfish.php

    Yii использует префикс $2y$. Но в спецификации из всех этих префиксов есть только $2a$ и его и нужно использовать, если у вас версия выше или эквивалентна PHP 5.3.7. Так что, если вы избавились от Yii, то можете поменять и префикс у ваших хешей. Потому что, когда я мигрировал на node.js библиотека для блоуфиш хеширования естественно не поддерживала никаких $2y$ и $2x$ и не собиралась этого делать в дальнейшем, так как это не их баги, а PHP, вот пусть PHP с этими префиксами и живет :)
    Ответ написан
    1 комментарий
  • Что за особенный объект, к которому можно применить метод clone()?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    p.clone = function() {
        return new URI(this);
    };

    https://github.com/medialize/URI.js/blob/85279a0ed...

    То объект клонируется, хотя метод clone предназначен для клонирования дом-элементов, но это сработает.

    При чём здесь .clone() вообще? На jQuery свет клином не сошёлся, и за её пределами есть разумная жизнь, которая вполне себе может называть методы так же, как в jQuery, не имея с ней ничего общего при этом. У нас в офисе тоже есть Константин, но я же понимаю, что вопрос писал, скорее всего, не он.

    P.S.
    И uri и obj это объекты, что подтвердит typeof
    В javascript всё объекты.
    typeof null // "object"
    typeof [] // "object"
    Ответ написан
    1 комментарий
  • Как Laravel ускоряет создание сайта?

    v_decadence
    @v_decadence
    > Так проще же сделать таблицу в phpmyadmin
    На продакшн сервер и все тестовые сервера ручками потом переносить все изменения?

    > Есть валидация данных, так это просто сделать на чистом php с помощью if, использую ajax
    И получается что-то вроде этого?

    > по мне так проще сделать шаблоны на разных языках
    И при малейшем изменении бегать по 10 файлам и менять одно и то же место?

    > сайт будет больше тормозить и больше лишних конструкций
    Это скорее CMS касается с её кучей модулей, которые далеко не всегда нужны конкретному сайту.

    Мне кажется, вы просто не делали более-менее серьёзного проекта (требования к которому не вписываются в возможности CMS), иначе таких вопросов не возникло бы.
    Есть сайты, которые действительно можно быстрее сделать на CMS, но по мере роста проекта не всегда такое решение остаётся легко поддерживаемым.
    С помощью Laravel (и другого здравого фреймворка) можно сделать почти всё и контролировать любую часть сайта.
    Если у вас сайтик с тремя страничками и формой обратной связи, то да, быстрее будет сделать на CMS.
    Ответ написан
    9 комментариев
  • Есть ли шаблоны интерфейсов для программ?

    pozZzitiv
    @pozZzitiv
    Дизайнер и перфекционист
    Есть, называются UI kit ну или UI psd, что часто одно и тоже. Это наборы элементов интерфейса из которых можно создать любой свой.
    Реже можно найти прямо интерфейс уже собранный, но таких совсем мало встречается.

    Если вам для вдохновления или поиска удачных решений для удобного интерфейса, то просто смотрите на реальное ПО и берите лучшее. Шаблоны в этом плане не помогут.
    Ответ написан
    1 комментарий
  • Каким инструментом отслеживать изменения в mysql?

    27cm
    @27cm
    TODO: Написать статус
    при достижении определенного порога(допустим число больше 100) происходило какое то событие, например удаление этой строки.

    Изменение значения инициируется из PHP скрипта?
    Вот и сделайте в скрипте проверку: если новое значение больше 100 - DELETE, иначе - UPDATE.
    Никаких кронов / events и триггеров тут не нужно.
    Ответ написан
    1 комментарий
  • GitKraken где найти материал обучения?

    GavriKos
    @GavriKos
    Если вы знаете git - то с gitkraken не должно быть никаких проблем.
    Если не знаете git - ищите по нему обучалки - их ПОЛНО
    Ответ написан
    Комментировать
  • Какая книга по php является самой полной?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Ответ написан
    Комментировать
  • Как завершение программы в osx через кнопку (x) в верхнем левом углу?

    mmmaaak
    @mmmaaak
    Отвыкай щёлкать мышкой, учи хоткеи. Тратится куча времени, особенно на больших десплеях, водить курсором туда-сюда. Зачем, когда можно нажать cmd+q
    Ответ написан
    2 комментария
  • Можно ли одним пользователем редактировать файлы для другого?

    planc
    @planc
    Почему я не могу править файлы пользователем wwwdev

    потому что для группы www стоят права только на чтение
    -rw-r--r--
    юзер - группа - все остальные

    либо дать права на запись для группы www
    chmod g+w имя_файла

    флаг -R если надо поменять права рекурсивно в папке
    chmod -R g+w *

    еще есть такая фишка, как acl:
    это возможность на один файл поставить разные права, для разных юзеров
    https://serversforhackers.com/video/linux-acls
    https://wiki.archlinux.org/index.php/Access_Contro...
    Ответ написан
    Комментировать
  • Есть ли смысл подписывать REST API запросы?

    @vintage
    Кука - это тоже access_token, только подставляемый браузером автоматически, даже если запрос инициирует не ваша страница, а страница левого сайта. Соответственно, при пробрасывании токена через куки, сторонний сайт сможет делать запросы к вашему, от имени пользователя. Нужно ли такое разрешать - вы решаете сами. Если нужно - просто используйте куки. Если не нужно, то самое простое - с запросом посылать взятый из куки токен в хедере, а на сервере сверять их идентичность. Получить куки скриптом можно лишь с того же сайта, кто их поставил. В урле токен лучше не посылать, чтобы он не светился в логах.
    Ответ написан
    2 комментария
  • Как писать кроссплатформенные приложения на C++?

    Adamos
    @Adamos
    GTk - это не С++, это С.
    wxWidgets - легкие и сильно похожие на MFC / VCL, что когда-то было плюсом. Сам использую эту библиотеку для кроссплатформенной разработки, но вам сейчас, на распутье, советую все-таки Qt. А еще советую писать не под Виндой. Из тех же соображений, из которых в вебе не верстают изначально под Ослик. Принцип "работаем по стандартам, добавляем костыли для девиаций", а не наоборот.
    Ответ написан
    4 комментария
  • Паттерны проектирования?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Паттерны - это не код. Паттерны - это идея. А код (реализация) может быть разной. Поэтому везде, где вы видите код - это частный пример паттерна.
    Ответ написан
    Комментировать
  • Как вернуть ответ из XMLHttpRequest?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    Из асинхронной функции невозможно вернуть значение, потому что на момент выхода из неё оно ещё не определено.
    Вы можете:
    1. Вернуть промис, который будет возвращать значение
    2. Принимать в асинхронную функцию другую функцию и вызывать её при получении результата, передавая его в качестве аргумента.
    3. Сделать запрос синхронным и писать результат в глобальную переменную.
    4. Использовать синтаксис async/await, если у вас свежая версия Node.

    Первый вариант более современный и гибкий, второй более простой для понимания. По обоим вариантам есть масса информации, документации и уроков (подобный вопрос задаётся здесь ежедневно не по разу, поэтому не расписываю подробнее).
    Третий вариант - кривой костыль и приведён только для полноты картины, не стоит так делать.
    Чётвертый - это промисы для хипстеров, лучше использовать его тогда, когда вы хорошо умеете работать с промисами, чтобы случайно ничего себе не отстрелить.
    Ответ написан
    Комментировать
  • Правильная работа с фреймворком?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Над ftp надо смеяться, а SFTP может использоваться и внутри Jenkins, тем более что авторизация в sftp возможна по ключам, без необходимости вводить пароль.

    Jenkins очень простой - тупо планировщик задач. Реально посидите один-два вечера - очень полезно.

    Но никто не мешает вам обновляться так, Как вам удобнее. Только действительно FTP - несекьюрно.

    P.S. В идеально продакшн и локальный енвайрнмент должны совпадать.
    Ответ написан
    4 комментария
  • Как отслеживать изменения в тексте?

    Stalker_RED
    @Stalker_RED
    Вы изобретаете собственную систему управления версиями? Ознакомьтесь с существующими решениями, возможно что-то из них вам подойдет.
    (Подсказка: кроме git есть и другие).

    Для истории можно хранить диффы.

    8к знаков - это не так уж много. К примеру 1000 копий будут весить 8 мегабайт. Это по три правки в день в течении года, например. А если текст сжать, то он займет в разы меньше.

    Или посмотрите на движок wiki, там тоже есть история изменений и множество пользователей.

    Также, можно разбить текст на главы (да хоть на абзацы) и вести историю отдельно по каждому фрагменту. Тогда объем изменений еще уменьшится.
    Ответ написан
    2 комментария
  • Стоит ли заключать договор?

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