Задать вопрос
  • YII. Настройка маршрутизации?

    copist
    @copist
    Empower people to give
    Вариант 1

    'urlManager'=>array(
    		'urlFormat'=>'path',
    		'baseUrl' => '/~abcd', // <-- имя вашей директории, куда перенесён проект
    		'rules'=>array(
    				// стандартное правило для обработки '/' как 'site/index'
    				'' => 'site/index',
    				'user/<action:.*>'=>'user/<action>',
                                    
    				'<controller:\w+>/<id:\d+>'=>'<controller>/view',
    				'<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
    				'<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
    		),
    		'showScriptName' => false
    	),


    Вариант 2
    server {
        listen   80;
        charset utf-8;
    
        set_real_ip_from 127.0.0.1;
        real_ip_header X-Real-IP;
    
        root /path/to/~abcd; # <-- полный путь к вашей директории, куда перенесён проект
    
        location / {
            index index.html index.php;
            try_files $uri $uri/ /index.php?$args;
        }
    
        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        location ~ \.php {
            fastcgi_split_path_info ^(.+\.php)(.*)$;
            #let yii catch the calls to unexising PHP files
            set $fsn /index.php;
            if (-f $document_root$fastcgi_script_name){
                set $fsn $fastcgi_script_name;
            }
    
            # With php5-cgi alone:
            fastcgi_pass 127.0.0.1:9000;
    
            # With php5-fpm:
            #fastcgi_pass   unix:/tmp/php-fastcgi.sock;
    
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root$fsn;
            #PATH_INFO and PATH_TRANSLATED can be omitted, but RFC 3875 specifies them for CGI
            fastcgi_param PATH_INFO $fastcgi_path_info;
            fastcgi_param PATH_TRANSLATED $document_root$fsn;
        }
    }
    Ответ написан
    3 комментария
  • Хочу поднять debian сервер для разработки. Как?

    copist
    @copist
    Empower people to give
    virtualbox.org + vagrantup.com + rove.io

    • Установить Virtualbox
    • Установить Vagrant
    • Cконфигурить на rove.io, получить vagrantfile и сценарий для авто-установки софта

    vagrant up

    Правда всё будет на Ubuntu 12.04, но это почти как Debian ;)
    Ответ написан
    2 комментария
  • Как сделать такую кнопку JS?

    copist
    @copist
    Empower people to give
    Там немного кода. Вот так его можно выцепить из страницы
    download?id=yxCrYi81ASs8YfoztnKgbwp1yIea

    Вот рабочий пример codepen.io/copist/pen/qOOaXO
    Ответ написан
    3 комментария
  • Как выполнить action с долгим временем работы на Yii2?

    copist
    @copist
    Empower people to give
    Короткий ответ: очереди.
    Ищи информацию про Yii + RabbitMQ/ActiveMQ/ZeroMQ

    Или сделай свою реализацию - сохранить файл-задание в специальную папку, а по крону запускать консольную команду, которая будет эти файлы-задания обрабатывать. Вместо папки можно базу данных использовать.
    Ответ написан
    3 комментария
  • Можно ли создать сайт а-ля www.materialup.com без фреймворков?

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


    При отказе от использования возникает ряд сложностей, которые может обойти только тот, кто уже разобрался, как то или иное решение реализовано в существующих фреймворках. Иногда разработка вызывает ощущение «изобретения велосипеда». Или колеса. Постоянно возникают вопросы «А как то или это сделать, как оно должно работать, как его закодировать?». При этот нет ни сообщества, готового помочь, ни примеров, которые можно было взять за основу, ни репозитория готовых решений, которые можно было бы подключить к проекту. Приходится заимствовать решения из открытых источников, часто — прямо из других фреймворков.
    Программные решения, принятые группой разработчиков на проекте без фреймворка, несут мало пользы другим разработчикам — для них это просто информация «у этой задачи есть решение». Очень мало энтузиастов портировать решения в существующие фреймворки.


    Можно ли отказаться от веб-фреймворка?
    Да, можно, если проект достаточно прост.

    С фреймворком или без фреймворка
    Ответ написан
    Комментировать
  • Почему не приходят сообщения на клиент (socket.io)?

    copist
    @copist
    Empower people to give
    Тут ошибка
    var input = $('message')


    Надо наверное так
    var input = $('#message')
    Ответ написан
    Комментировать
  • Как достигнуть мягкого присвоения Стиля?

    copist
    @copist
    Empower people to give
    Надо воспользоваться предзагрузкой изображений. Так многие слайдеры делают.

    Сначала присваиваем класс с картинкой какому-нибудь второстепенному объекту, а затем по таймауту - целевому объекту.
    Ответ написан
    Комментировать
  • Сколько можно заработать на блоге о стартапе?

    copist
    @copist
    Empower people to give
    Спросил меня как-то один человек: смогу ли я на своём блоге зарабатывать себе на платное обучение в универе. Это 50 000р в год тогда было. 50 000 / 12 = 4166 рублей в месяц. Я сказал - да, сколько на блоге заработать можно. Но это будут единственные 4166 что он получит в месяц.

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

    P.S. добавлю по существу

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


    Целевая аудитория и начальный капитал более эффективно ищутся другими способами. Через уже известные популярные площадки, где уже обитает целевая аудитория. Через биржи, где обитают разработчики. И через площадки, где обитает капитал. Скажу, что только блог, особенно в первые полгода, не даст ни аудитории, ни капитала.

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

    Как мне кажется, идея эта имеет место быть, но у нас проблемы с расчётом прибыли и соответственно прогнозированием затрат и точки безубыточности в бизнес-плане.


    Не хочу останавливать полёт фантазии и фонтаны энтузиазма. На душевном подъёме много хороших дел было сделано. Однако, думаю, кому-то из твой команды нужно прошерстить интернет и закупиться книгами на тему организации своего дела, то есть про стартапы, бизнес-модели, бизнес-планы, маркетинг, управление проектом. На самом деле это очень интересная тема для самообразования.
    Ответ написан
    1 комментарий
  • Софт для отрисовки дизайна сразу в html?

    copist
    @copist
    Empower people to give
    Удалив "лишнее звено" в виде верстальщика вы перекладываете на фронтенд-разработчика тяжесть ответственности за кросбраузерность, отзывчивость. А так же с большой вероятностью в HTML получится какашка, годная только для просмотра в браузере, а не использзование в программном проекте.

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

    ---

    Может вам посмотреть на системы прототипирования? Чтобы можно было делать грубо оформленные страницы для составления общей картины.
    Пальцем в небо, то есть гугль "fast prototyping":
    Ответ написан
    2 комментария
  • Как оптимизировать работу сайта на yii?

    copist
    @copist
    Empower people to give
    Изучите профилирование кода. Например, используйте для сбора метрик xdebug или xhprof.

    Используйте то, что HaruAtari порекомендовал
    + к этому
    Подавление создания сессий
    Подавление создания коннектов к базе данных
    Ещё нужно оптимизировать загрузку файла конфигурации и полностью отказаться от
    'import' => array('application.components.*', и.т.д. )
    Ответ написан
    Комментировать
  • Будут ли индексироваться страницы построенные на MVC?

    copist
    @copist
    Empower people to give
    1. Как поисковики находят страницы твоего сайта
    Поисковики сканируют все страницы, на которые он нашёл гиперссылки где-либо.
    Гиперссылки могут размещаться где угодно.
    • Внутренние перекрёстные гиперссылки на твоём сайте. Одна страница ссылается на другую. Для этого делают меню навигации, поиск по сайту, коллеции ссылок по теме, коллеции по тегам, коллеции по категориям, коллеции по датам, коллекции по полулярности и другие способы: take.ms/7GsUX
    • На чужом сайте. Это называется входящие ссылки. Например, я могу вставить ссылку на свой блог здесь на тостере и поисковая система через некоторое время найдёт эту страницу
    • Через карты сайта в формате Sitemap. Почитай сам.
    • Ищи информацию по фразам "SEO" и "Поисковая оптимизация".


    2. Почему поисковая система по запросу "город1" может выдать страницу твоего сайта
    Если на странице твоего сайта есть текст, как-то связанный с поисковой фразой, то есть "город1", то она появится в результатах поиска на яндексе или гугле.

    <html>
    <head>
        <title>город1</title>
    </head>
    <body>
        <h1>город1</h1>
        <p>Этот город1 самый лучший город1 на земле</p>
    </body>
    </html>


    Ищи информацию по фразам "SEO" и "Поисковая оптимизация".
    Ответ написан
    5 комментариев
  • Как сделать сервер, чтобы передавать с него данные в формате json?

    copist
    @copist
    Empower people to give
    Почитай про backens-as-a-service
    Это платформы, предоставляющие серверную часть приложений: база данных с неким программным интерфейсом, обычно REST + JSON.

    https://en.wikipedia.org/wiki/Mobile_Backend_as_a_...
    habrahabr.ru/company/backendless/blog/180367
    Ответ написан
    Комментировать
  • Как сделать простого онлайн консультанта для сайта?

    copist
    @copist
    Empower people to give
    Простейший пример всплыващей формы: jqueryui.com/dialog/#modal-form
    Там есть ссылка "view source" - по ней увидишь код HTML и JavaScript

    Вот та же форма в отдельном окне jqueryui.com/resources/demos/dialog/modal-form.html
    Чтобы форма появилась по таймауту, надо вставить такой код на Javascript
    setTimeout(function(){ $("#dialog-form").dialog("open"); }, 10 * 1000); // через 10 сек открыть диалог

    вставить можно вот сюда: (картинка)
    download?id=jjftchcDzdgewNR98lySiRa0sn0s

    В диалоге должны быть поля ввода и кнопка "Отправить". По клику на кнопку отправить надо проверить значения полей ввода и, если все значения правильные, выполнить запрос на сервер через AJAX
    Документация api.jquery.com/jquery.post там много примеров.
    Ответ написан
    Комментировать
  • Почему при конструкции switch case "0" работает, а case "1" и case "2" нет?

    copist
    @copist
    Empower people to give
    Может быть так будет нагляднее ?
    download?id=RNVwr0BNBg5N3lA5AbZEhpEqwfEW
    https://www.dropbox.com/s/7wc7p39f1ugdub1/case_0_1...
    Ответ написан
    Комментировать
  • Можно ли разработать дизайн фирме без их согласия?

    copist
    @copist
    Empower people to give
    Ты как дизайнер можешь заменить логотип, название и контакты компании. И выложить у себя на сайте без их разрешения.
    Ответ написан
    Комментировать
  • Как организовать сбор данных с нескольких систем в data warehouse для дальнейшей обработки и использования в OLAP?

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

    Вариант 1. Очень умное приложение. Mega Crawler.
    Приложение Mega Crawler должно поддерживать возможность установить удалённые соединения с несколькими типами баз данных. Приложение должно знать про структуру данных каждой конкретной базы, к которой оно цепляется.
    Это будет либо жёстко закодированная логика, изменить которую сможет только программист.
    Либо гибко настраиваемая логика, на разработку которой могут уйти основные ресурсы разработки и которое будет бессильно при подключении к N+1 базе данных.
    Наиболее известный тебе аналог - это yandexbot. Пытается распарсить страницы, найти тексты, построить по ним индекс.

    Вариант 2. Приложение с сетью дата-агентов. Spider Net.
    Spider занимается выбором нужных данных из одной базы данных и пересылкой этих данных в центр "паутины" по заданному протоколу и именно в том формате, какой понимает центральный контролирующий узел.
    Наиболее известный тебе аналог - это Яндекс.Маркет. Интернет-магазины сами реализуют выгрузку товаров и передачу в Яндекс.Маркет в заранее заданном формате.

    А какие варианты у вас?
    Ответ написан
    1 комментарий
  • Как отправить put запрос через curl в виде "PUT http://domain/folder/file.php HTTP/1.1"?

    copist
    @copist
    Empower people to give
    Потестируй на своём собственном веб-сервере. Создай страницу, которая будет просто вываливать все заголовки запроса

    <?php
    var_dump($_SERVER);


    Добейся, чтобы в твоём запросе были все указанные заголовки

    Нужные заголовки добавляются в запрос отдельными командами
    $headers = array(
        /* условно, добавить/удалить при необходимости */
        'date' => '2015-08-28T09:41:49+04:00',
        'content-length' => '198284',
        'content-md5' => 'ea200caec1ed9ef712fddafe4e2361e4',
        'x-upload-filename' => 'file_name.ext',
    );
    curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);


    Знаю, что PUT запрос лучше отправлять по другому:
    curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'PUT'); // вместо curl_setopt($ch, CURLOPT_PUT, true);
    // и обязательно заголовок передать array('content-length' => 'число байт в файле')
    Ответ написан
  • Где найти "tutorial" по пошаговой разработке приложения?

    copist
    @copist
    Empower people to give
    Просьба войти в положение отчаявшегося студента в поиске готового проекта.

    Готовые проекты на всех языках программирования доступны на github в исходниках.

    блог на Python + Django : lightbird.net/dbe/blog.html
    блог на PHP + Laravel 4 : www.codeheaps.com/php-programming/creating-blog-us...
    блог на PHP + Phalcon : https://github.com/phalcon/blog-tutorial
    блог на PHP + Yii2 : www.tutorial-zoo.com/yii-2/how-to-create-a-blog
    блог на nodejs code.tutsplus.com/tutorials/nodejs-step-by-step-bl...
    блог на Ruby-on-rails : https://www.reinteractive.net/posts/32-ruby-on-rai...
    wiki на Go : https://golang.org/doc/articles/wiki/
    Ответ написан
    1 комментарий
  • Какие методы/библиотеки/технологии использовать в web-проекте?

    copist
    @copist
    Empower people to give
    Общий ответ: вебсокеты и асинхронные сообщения через pub/sub
    В гугле искать по фразам "socket.io rabitmq" "php rabbitmq" "php websocket" "php pub/sub"

    Вариант реализации с использованием PHP
    На клиентском приложении: socket.io + javascript
    На сервере: socket.io + RabbitMQ + PHP

    Чтобы следить за игровым процессом:
    Скрипт PHP будет посылать сообщения в очередь на RabbitMQ
    socket.io будет читать очередь RabbitMQ и пересылать в веб-сокеты

    Клиентское приложение в браузере будет создавать постоянное соединение к сервером по протоколу веб-сокетов и читать из него всё, что пришлёт сервер socket.io. Всё, что присылается, нужно будет показывать в веб-интерфейсе.

    Чтобы управлять игровым процессом
    Из клиентской части веб-приложения нужно будет отправлять команды управления через AJAX или через то же соединение веб-сокет.
    В случае "через AJAX" нужно будет создать серверное микро-приложение, которое будет принимать команды через AJAX и затем передавать в основной игровой процесс через RabbitMQ или иным способом.
    В случае "через веб-сокет" серверная сторона socket.io должна будет отрабатывать полученные команды и передавать в основной игровой процесс через RabbitMQ или иным способом.

    На сервере нужно будет периодически делать дамп состояния основного серверного игрового процесса и сохранять в какую-нибудь базу. Я бы предложил дамп хранить в формате JSON в базе NoSQL, например, Mongo, CouchDB, Redis.
    При перезапуске основного серверного игрового процесса нужно будет восстанавливать состояние из этого дампа.

    Игрокам нужно будет выполнять авторизацию. У нескольких игроков может быть один игровой мир или отдельный микро-мир на несколько пользователей или на отдельный сеанс игры (например, одна шахматная доска на двух игроков и несколько зрителей). Поэтому надо будет хранить данные о пользователях и мирах. Вот тут подойдёт SQL база, например, MySQL или PostgreSQL. Хотя и NoSQL тоже можно использовать.

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