• Как в yii 1.1.16 заблокировать таблицу mysql на чтение и запись?

    copist
    @copist
    Empower people to give
    1. Права на запись пользовалем MySQL
    REVOKE *.* ON <database>.<table> FROM <username>@localhost;
    GRANT SELECT, REFERENCE ON <database>.<table> TO <username-readonly>@localhost; -- только SELECT c JOIN

    Из Yii подключаешься к базе пользователем <username-readonly>. Такой способ запретит создавать/изменять/удалять записи таблиц, на которые не были выданы права через GRANT пользователю <username-readonly>
    Не очень гибко. Админ наверное хотел бы писать во все таблицы.

    2. Права текущего пользователя Yii через ACL или RBAC
    www.yiiframework.com/wiki/346/acl-and-rbac
    Не очень надёжно. Можно забыть про проверку в каком-нибудь месте.

    3. Можно поковыряться с CActiveRecord или CMysqlCommandBuilder, чтобы на запросы, содержащие INSERT/UPDATE/DELETE в некоторые таблицы выдавался false или бросалось исключение, если текущий пользователь - не админ.
    Уже лучше, но парсить SQL запросы будет сложно.
    Ответ написан
  • Почему не прокатывает авторизация?

    copist
    @copist
    Empower people to give
    Надо посмотреть что ещё сообщает cUrl после завершения запроса.

    $result = curl_exec($curl);
    $info = curl_getinfo($curl);
    $error = curl_error($curl);
    echo "result: "; var_dump($result);
    echo "info: "; var_dump($info);
    echo "error: "; var_dump($error);
    Ответ написан
  • Как сделать мгновенное изменение изображения?

    copist
    @copist
    Empower people to give
    Вызывать отправку формы после выбора файла
    <form id="uploadForm" method="post" enctype="multipart/form-data">
       <input type="file" id="userPhotoInput" name="files[]">
    </form>

    <script type="text/javascript">
    $(document).ready(function() {
        $('#userPhotoInput').on('change', function() { this.form.submit(); });
    });
    </script>
    Ответ написан
    Комментировать
  • Ошибка на сайте (писался на php) umenie.php:573 Uncaught ReferenceError: hideshow is not definedonmouseout @ umenie.php:573, в чем дело?

    copist
    @copist
    Empower people to give
    Картинки нет.
    У вас ошибка в Javascript.
    Проверьте, что к странице подключились все файлы javascript
    Ответ написан
    Комментировать
  • Почему все равно приходится обновлять страницу?

    copist
    @copist
    Empower people to give
    В заголовках ответа есть указание на кэширование в браузере.
    Добавь заголовки, которые подавляют в браузере на девелоперской машине, по кукам или по IP.
    Ответ написан
    Комментировать
  • Как создать конструктор для сайта?

    copist
    @copist
    Empower people to give
    Вариант 1. Нарисовать здание со всеми вообще конструкционными элементами в векторном графическом редакторе, который умеет экспортировать картинки в формате SVG, отдельным элементам проставить идентификаторы. Пример установки идентификатора элемента в изображении SVG через Inkscape take.ms/0lpl8
    Затем вставить файл SVG в HTML и с помощью Javascript включать/выключать некоторые кривые в такой картинке. Пример: take.ms/dhNfG
    Рабочий пример на Codepen codepen.io/copist/pen/WvVRRL

    Вариант 2. Сделать много мелких картинок PNG для отдельных элементов и из таких картинок собирать большую картинку как пазл: крыша#1 + стены#2 + окна#3 опять же с помощью Javascript
    Вариант 3. Реализовать отрисовку через Canvas
    Вариант 4. Запрограммировать по тому же принципу, что и SVG, но на Flash
    Вариант 5. И ещё есть Silverlight
    Ответ написан
    Комментировать
  • Как заменить слово на сторонний javascript без php?

    copist
    @copist
    Empower people to give
    $(":contains('[word]')").each( // найти все элементы, содержащие строку [word]
        function(i,e){
            var $e = $(e),
                html = $e.html();
            html = html.replace(/\[word\]/g, '[hello]'); // заменить [word] на [hello]
            $e.html(html);
        });
    Ответ написан
  • Не помешает ли мне изучение PHP потом перейти на RoR?

    copist
    @copist
    Empower people to give
    Могу сказать что фреймфорк Yii чем то напоминает Ruby-on-rails. Может быть, стоит начать с него, чтобы переход был более простым.
    Ответ написан
    3 комментария
  • Каким алгоритмом (функцией PHP) лучше получить хэш строки для последующего сравнения по базе данных?

    copist
    @copist
    Empower people to give
    sha1 - там коллизий меньше, вычисляется не намного дольше md5, длина 40 байт

    Активно используется в протоколе BitTorrent и Git
    Ответ написан
    Комментировать
  • Что подразумевается под маленьким, небольшим, крупным проектом на PHP?

    copist
    @copist
    Empower people to give
    Зависит от количества технологий, которыми придётся воспользоваться для его реализации.
    Я сейчас сам себе условно поставлю задания на разработку проектов 4х уровней сложности.

    Простейший сайт-визитка.
    Технологии:
    1. Дизайн: типовой, картинки со стоков или вообще нет, всего несколько страниц
    2. Реализация: HTML, CSS, может быть JS
    3. Средства разработки: очень простые, вплоть до notepad.exe
    4. Хостинг: бесплатный shared hosting
    5. Обновление: вручную, по FTP
    Интернет-магазин средней сложности
    1. Дизайн: заказной, картинки, цены и описание конкретных товаров
    2. Реализация: HTML, CSS, JS, серверный язык программирования, база данных, кэширование. Возможно, интеграция с внешними системами, например, 1С, платёжные системы или доставка. В качестве базового решения использовать готовое, типа OpenCart
    3. Многопользовательский режим: несколько редакторов, посетители сайта, покупатели
    4. Средства разработки: графический пакет, IDE, клиентское приложение для базы данных
    5. Хостинг: платный shared или virtual dedicated
    6. Обновление: вручную
    Информационный портал повышенной сложности
    1. Дизайн: заказной, штатный дизайнер, художник, фотограф
    2. Реализация: CSS/SCSS/LESS, сложный Javascript c фреймворками типа Angular, несколько серверных языков программирования, база данных с горизонтальным и вертикальным массштабированием, дублированием, распределённая файловая система, кэшированием, очереди заданий, фоновые задачи.
    3. Многопользовательский режим: любой может добавлять статьи с мульти-медиа контентом, многопользователькие чаты realtime, внутренняя система сообщений
    4. Средства разработки: графический пакет, IDE, клиентское приложение для базы данных, репозиторий кода
    5. Хостинг: virtual dedicated или dedicated + тестовый и демонстрационный сервера меньшей мощности + резервный + балансировка нагрузки
    6. Сервис поддержки пользователей, модерация статей и чатов
    7. Почтовые рассылки, подписки на отдельные темы или авторов, внутренняя система сообщений с дублированием на электронную почту
    8. Авто-тесты
    9. Обновление: автоматическое, через Chef, Capistrano или иной способ
    Запредельно сложный сервис
    1. Дизайн: уникальный, специальный, заказной, несколько штатных дизайнеров, все непрерывно работают над улучшением и разрабокой новых возможностей
    2. Реализация: Reach Client Application, передовые клиентские технологии, реализация многопользовательского онлайн 3D мира, несколько серверных языков программирования, несколько типов баз данных с горизонтальным и вертикальным масштабированием, дублированием, кэшированием, очереди заданий, фоновые задачи; части системы общаются между собой по разным протоколам и асинхронно
    3. Многопользовательский режим: международный сервис, количество пользователей просто зашкаливает, они работают круглосуточно, нет периода однозначного снижения нагрузки на сервер для технического обслуживания
    4. Специфический фукционал: пользователи могут совместно делать необычные вещи, например, конструировать и выпускать реальные автомобили онлайн
    5. Средства разработки: чего только не используешь, лишь бы разобраться в коде и документации, который состоит из множества кусков и зависимостей, на разных диалектах разных версий языков, ежедневно изменяемый сотней программистов, тестовые сервера под каждую отдельную фичу; в разработке сразу несколько фич, и они конфликтуют между собой
    6. Хостинг: облачные сервера, много-много серверов, под все части системы резервирование, свой датацентр, свой оптоволоконный канал связи
    7. Авто-тесты, мониторинг, метрики, системы оповещения о сбоях и автоматического устранения аварий
    8. Резервные источники энергии, своя электростанция
    9. Круглосуточный сервис поддержки пользователей
    10. Управление персоналом: администраторы, электрики, программисты разной специализации, менеджеры, маркетологи, аналитики, тестировщики, бухгалтерия, отдел персонала, психолог, стоматолог, поликлиника, столовая, ресторан, фитнес-зал, спорт-комплекс, автопарк
    11. Внутрисистемная виртуальная валюта, возможность взаиморасчётов, найм, покупки
    12. Холдинг: подчинённые компании различных отраслей и сфер экономики или фирм, расположенные в различных регионах, с общей информационной системой
    13. Почтовые рассылки на миллионы подписчиков
    14. Мультиплатформенность: под разные операционные системы отдельная версия программного продукта
    15. Обновление: автоматическое, с бакапами до и после, авто-восстановлением при неудачном обновлении, специфическая система обновления; у каждой версии или модуля своя логика обновления; распределённое одновременное обновление большого количества серверов


    Что из этого Гугль? Ничего. Он зашкаливает по сложности.
    Ответ написан
    1 комментарий
  • Ошибка при генерация CRUD кода при помощи Gii?

    copist
    @copist
    Empower people to give
    Ну по какой-то причине там файл, имя которого совпадает с именем директории, которую где надо создать с помощью mkdir
    Ответ написан
  • Как привязать сессию к пользователю?

    copist
    @copist
    Empower people to give
    Используйте memcached - этот сервис хранит данные в памяти и удаляет неиспользуемые.
    Если в сессии есть данные, которые нужно хранить постоянно, дублируйте запись в базу данных и в memcached.
    Если у пользователя кука ещё жива, а сессия на сервере уже удалилась, запросите её из базы и опять сохраните в кэш.
    Вот приблизительно так: cdraw?lz=dGl0bGUgINCg0LDQsdC-0YLQsCDRgSD
    Ответ написан
    Комментировать
  • Почему пропадают куки после перезагрузки страницы?

    copist
    @copist
    Empower people to give
    мануал: setcookie

    сигнатура:
    bool setcookie ( string $name [, string $value [, int $expire = 0 [, string $path [, string $domain [, bool $secure = false [, bool $httponly = false ]]]]]] )

    Я бы ещё указал параметры путь $path='/' и домен $domain='какой-надо.ru'
    Ответ написан
    Комментировать
  • Есть ли хороший сервис онлайн заметок/блога?

    copist
    @copist
    Empower people to give
    imhonet.ru - составляйте отзывы на книги, фильмы, сериалы, товары, сайты. Интерфейс приятный. Карточки есть, даже загружать чаще всего не придётся - там уже есть. Поиск по своим отзывам и комментариям есть.
    Он даже потом сможет подсказать, что ещё подходит к вашим интересам.
    Ответ написан
    1 комментарий
  • Почему приходит неполная станица при иcпользовании curl + proxy?

    copist
    @copist
    Empower people to give
    У вас есть доступ к самому прокси?
    Проверьте, может ли ваш прокси писать в папку с временными файлами.
    Ответ написан
  • Как повысить навык проектирования хороших сайтов?

    copist
    @copist
    Empower people to give
    Нет, я не согласен с тем, что созерцание чужих сайтов даёт навык проектирования хороших своих. Максимум - вдохновление. А тут нужны склад ума, навыки, определённая техника.

    Под хорошими я понимаю сайты, которыми удобно пользоваться посетителям

    Я рекомендую обратиться к направлению User eXpirience (EX) - создавать удобные пользователям решения.
    Это большое направление. Там есть немного от художника, но много от самого пользователя. Нужно давать пользователям задания, которые можно решить на твоём сайте, чтобы они при тебе делали и рассказывали - что хотят сделать, какой элемент интерфейса они бы кликнули, какие ожидания у них в голове до клика, что они получили после клика, получили ли они желаемое, достаточно ли просто было получить желаемое. Это в общем называется User/Usabity Testing. Нужно несколько таких ревью. Затем принимается решение, устраивает ли пользователей ваш способ удовлетворить его потребности, не стоит ли упростить или усложнить сценарии поведения пользователей, изменить размеры или цвета, переставить элементы местами.
    Через некоторое время, на N+1 проекте, у вас в голове начнёт складываться правильное понимание того, что ожидают пользователи, как удобнее для пользователя реализовать в интерфейсе решения его проблем. Идеального решения не будет. То, что вы придумете для N проектов, на N+1 вообще может не сработать. Главное знать как определить, что именно является причиной неудачи и иметь идеи, как это изменить.
    Ещё есть такая техника, как A/B тестирование, сплит-тестирование.
    В общем - делайте, проверяйте, исправляйте.
    Небольшой обзор для затравки www.zenexmachina.com/what-we-do/user-experience
    lean-startup-01.png
    Под хорошими я понимаю сайты, ... которые приносят прибыль своим владельцам

    Этот раздел называется маркетинг и, в частности, интернет-маркетинг. Первая задача: найти потребность и удовлетворить её. Вторая задача: удовлетворить потребности бОльшего количества потребителей, то есть "зацепить" больший процент аудитории либо увеличить аудиторию. Третья задача: найти оптимальную цену, то есть сбалансировать возможности производства, затрат, потребления и покупательской способности. Ну и ещё много задач.

    Под хорошими я понимаю сайты, ... которые при этом сделаны с заделом на будущее.

    Ищите новые потребности новых потребителей. Ищите новые потребности старых потребителей. Обозначу всё это словом диверсификация.
    Ищите новые способы удовлетворения старых потребностей, более эффективные или менее затратные. В том числе, новые клиентские технологии, более современный дизайн, если пользователю так будет удобно.
    Не останавливайтесь. Развивайтесь.
    Вот такой мини-обзор поможет: uxmastery.com/resources/process
    ux-process-diagram-cropped-620x360.png
    Опыт показывает, что меньше всего в этом вопросе помогают умные книги. Из них можно почерпнуть знания, но навык от этого не растёт ни чуть.

    Не согласен. Но конкретных книг не дам. Я просто не записывал, что именно я прочитал.
    Издательство МИФ много современных иностранных книг переводит. Много источников на английском.

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

    Не так уж и быстро она растёт. А ещё, часто бывает, что знания растут, а на практике ничего не меняется. Цель изучения не в том, чтобы знать, а в том, чтобы действовать. Обычно лучше запоминается именно то, с чем сталкиваешься в реальности. А ещё, зная как делать, начинаешь экспериментировать.

    P.S. Тут какая то "серебрянная пуля", а не "золотая середина" ж))
    Ответ написан
    Комментировать
  • Какой есть сервис для закладок "по интересам"?

    copist
    @copist
    Empower people to give
    Frontend? Посмотрите вот это: https://uptodate.frontendrescue.org/
    Ответ написан
    Комментировать
  • Блог или сайт портфолио?

    copist
    @copist
    Empower people to give
    Я бы не ставил целью создать блог как способ завоевать работодателя. Вот если действительно есть что написать, то хороший блог - это повод работодателю начать завоёвывать вас.
    Блог - это по сути электронный дневник или журнал. Там пишут разные вещи, выводятся они хронологически. По блогу удобно узнать, куда и с какой скоростью вы развиваетесь, что вас интересует, доводите ли дело до конца.

    Портфолио - это куда лучше, если надо показать итоговое состояние. Что умею делать, что сделано, каким образом. Портфолио компактнее, презентабельнее.
    Ответ написан
    1 комментарий
  • Имеет ли ЧПУ тайный смысл?

    copist
    @copist
    Empower people to give
    Встречался на практике с таким вариантом: URL для поисковой системы выглядит так:
    _ttp://some.domain/help/23424_%D0%A7%D0%9F%D0%A3/1212_%D0%98%D0%BD%D1%82%D0%B5%D1%80%D0%BD%D0%B5%D1%82 , а ещё к той же самой странице можно обратиться так: _ttp://some.domain/help/23424/1212
    В HTML коде на той странице в разделе стоит мета-тег для указания канонического URL текущей страницы:

    <link rel="canonical" href="_ttp://some.domain/help/23424_%D0%A7%D0%9F%D0%A3/1212_%D0%98%D0%BD%D1%82%D0%B5%D1%80%D0%BD%D0%B5%D1%82" />

    ПОдробнее про canonical: https://support.google.com/webmasters/answer/13906...
    Ответ написан
    Комментировать
  • Электронные деньги как сделать?

    copist
    @copist
    Empower people to give
    Многие проекты, в частности, игровые, имеют виртуальную валюту.
    Прежде всего википедия: "Виртуальная валюта".

    1. Нужен способ перевода реальной валюты в виртуальную. Её можно просто продавать, как любой другой электронный товар.
    2. Нужны возможности валютой распоряжаться: хранить, обменивать на блага, передавать другим. В играх там можно пользоваться игровыми банками, приобретать и улучшать оружие, дарить подарки.
    3. Нужна возможность переводить виртуальную валюту обратно в реальную валюту.

    Рекомендую почитать юридические разделы виртуальных валют Webmoney, Яндекс.Деньги, Visa Qiwi Wallet, Деньги@Mail.Ru
    * www.webmoney.ru www.webmoney.ru/rus/legal/codex.shtml
    * https://money.yandex.ru/ https://money.yandex.ru/doc.xml?id=523015&_opensta...
    * https://qiwi.ru/ https://qiwi.ru/ru/company/oferta.action
    * https://money.mail.ru/ https://money.mail.ru/help/nko_info/

    А также посмотрите внимательнее, как работают с игровой валютой популярные игровые сайты. Почитайте у них "Условия использования", раздел "Ввод/вывод игровых средств" и "Безопасность". Прежде всего нужны те игровые миры, где есть перевод из виртуальной в реальную. Опыта маловато, назвать такие игры не могу.

    С технической стороны: нужна надёжная база данных для хранения транзакций и накоплений (чтобы ни сломать, ни потерять ничего), веб-портал для торгов валютой или специальное приложение, программный доступ к порталу из других серверов (API) + техническая документация.
    Также нужно много юридической работы.
    Постоянно будут проблемы разного характера - нужна будет служба поддержки пользователей.
    Ответ написан
    1 комментарий