Нашими жертвами будут www.skillshare.com/ и animoto.com/. В оба проекта на старте вкладывали по нескольку миллионов долларов. Очень дорого эти проекты стоят и сейчас. Пожалуйста, напишите в комментариях, с какого из них начнем? Или, может быть, предложите что-то другое?
Между делом принимаю поздравления и пожелания в связи с первым хабрапостом.
Рекогносцировка
Рекогносцировка (от лат. recognosco — осматриваю) — в военном деле — осмотр позиций противника в районе предстоящих боевых действий лично командиром (командующим) и офицерами штабов для получения преимущества и принятия решения; в мирное время — при подготовке учений и других действиях. (Википедия)
skillshare.com
Люди создают занятия и курсы занятий, последние проходят модерацию, другие люди подписываются на них, (опционально) имеют возможность заплатить и посещать онлайн-вебинары или оффлайновые занятия.
animoto.com
Люди загружают фотографии, нажимают кнопку «Сделать клево» и получают действительно клевые видеоролики. Вопрос клевости видеоролика очевидно следует рассматривать отдельно, так как он очень важен.
Оба сервиса созданы отличными командами, в оба вложено много долларов, дней, слез, крови и пота. А мы просто возьмем, и скопируем их.
Методы
Закон Парето, или принцип Парето, или принцип 20/80 — эмпирическое правило, названное в честь экономиста и социолога Вильфредо Парето, в наиболее общем виде формулируется как «20 % усилий дают 80 % результата, а остальные 80 % усилий — лишь 20 % результата». Может использоваться как базовая установка в анализе факторов эффективности какой-либо деятельности и оптимизации её результатов: правильно выбрав минимум самых важных действий, можно быстро получить значительную часть от планируемого полного результата, при этом дальнейшие улучшения неэффективны и могут быть неоправданны (согласно кривой Парето). (Википедия)
Ищите 90-процентное решение. (из принципов Unix)
В экономике есть такое понятие, как леверидж. Утрированно, это степень влияния принятых мер на эффективную составляющую результата. Мы будем действовать с максимальным левериджем — прежде чем делать что-либо, мы будем искать оптимальные методы, которые позволят нам достичь результата с наименьшими вложениями.
Сначала мы найдем ключевой функционал, сделаем ТЗ и расчленим его на ключевые части, найдем самое важное и главное. Реализуем основное, потом будем догонять по детялям. Следите за продолжением, и вы увидите, что на деле все несколько проще, чем я вам тут рассказываю.
Мы с вами найдем самые ответственные и тонкие места, сделаем работоспособные прототипы (которые, кстати, можно показывать руководителю/начальнику/инвестору), и потом из них соберем цельную систему, которую следующим действием усовершенствуем.
Инструментарий
Нам необходимо:
— спроектировать программы
— написать программы
— протестировать их
— запустить
— сопровождать
Для первого этапа, проектирования программ, мы будем пользоваться… карандашами и цветными ручками. Есть масса продвинутых средств, но мне нравятся именно эти.
Работа программиста связана с непрерывным управлением абстракциями. Их нужно придумывать, продумывать, сортировать, сортировать, удалять и восстанавливать, менять местами, расширять и сужать, сортировать… Если вы еще не знакомы с ООП — приготовьтесь к внезапному погружению. Наберите воздуха в легкие, вдохните глубоко…
В процессе работы с абстракциями и тем более написанием кода одна из зон головного мозга интенсивно напрягается. При этом другие получают меньше кислорода, питательных веществ и электричества. Это приводит к быстрой усталости, и явлению, известному каждому из нас — «туплению в монитор». Чтобы не тупить в принципе, имеет смысл уважать свой мозг и тратить время на обслуживание этого замечательного устройства.
Собственно, рисование (равно как и прослушивание музыки, но сейчас мы не об этом), является отличным средством, позволяющим равномерно распределить нагрузку между зонами мозга. На выходе это выглядит так, как будто происходит некоторая магия, которая приводит к увеличению продуктивности. В десятки раз, если есть, с чем сравнивать.
Еще один хороший способ балансировать нагрузку на мозг — интерактивно обсуждать действия с коллегами. Гуглите «парное программирование». Кстати, у нас на работе все относительно сложные, объемные или ответственные вещи делаются парами. Это очень удобно — можно обсуждать, и удобно писать код — один пишет, второй отслеживает ошибки и концепцию.
C прошлого века работаю программистом, и до сих пор рисую блок-схемы. Во-первых потому, что мне это нравится. Во-вторых, пояснил выше. В-третьих, это позволяет значительно быстрее достигать результатов, что я наглядно покажу вам позднее.
Для программирования мы будем использовать
— PHP5 с его долгожданным ООП
— CodeIgniter
— IDE (выбирайте любую, на вкус и на цвет, как говорят)
— nginx и php5-fpm
— mysql (хотя Active Record CodeIgniter позволяет использовать другие БД)
— Ubuntu, ffmpeg и imagemagick (для animoto)
PHP5, равно как CodeIgniter, не являются лучшими. Просто я ими хорошо владею, и оба позволяют с достаточно скромными затратами и достаточно быстро получать результаты. CodeIgniter еще импонирует своей легковестностью, достаточной укомплектованностью и безупречной гибкостью. Дружу с ним уже пятый год. Позднее покажу, к каким результатам приводит эта дружба.
Инструментарий тестирования, запуска и сопровождения также обсудим позднее — когда перейдем к этим этапам.
Заглянем чуть дальше — развлеку вас техническими подробностями, чтобы избежать утомления.
Ввиду того, что избранные программы являются веб-приложениями, нам понадобится LAMP. Мне не очень нравится, как ведет себя Apache на десктопе (я тут еще другими делами занимаюсь), не очень хочется возиться с виртуалками, поэтому в качестве веб-сервера используем nginx.
Настройка LAMP
Установим требуемое (hi, Ubuntu!)
sudo apt-get install php5 php5-fpm php5-mysql mysql-server ffmpeg php5-imagick imagemagick phpmyadmin
Phpmyadmin понадобится, чтобы просматривать состояние таблиц в процессе тестирования.
Ffmpeg и imagemagick пригодятся нам, чтобы создавать видеоролики из фотографий, и сделать их действительно эффектными
После установки создадим директорию для проекта, например /home/user/works/animoto.localhost и добавим виртуальный хост
server { root /home/user/works/animoto.localhost/www; index index.html index.php; error_log /home/user/works/animoto.localhost/error.log; charset utf8; source_charset utf8; server_name animoto.localhost www.animoto.localhost; location / { try_files $uri $uri/ /index.html /index.php; } #error_page 404 /404.html; location ~ \.php$ { fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /home/user/works/animoto .localhost/www$fastcgi_script_name; include fastcgi_params; } location ~ /\.ht { deny all; } }
Здесь мы создаем локальный хост animoto.localhost, и отправляем запросы PHP к PHP, а также запрещаем просмотр .ht* — просто на всякий случай, вдруг эта конфигурация попадет в продакшн.
Добавим в /etc/hosts определение
127.0.0.1 animoto.localhost
Это позволит иметь доступ к локальному сайту с вашего компьютера.
Создадим файл по адресу /home/user/works/animoto.localhost/www/index.php
с содержанием
<? echo 'Hello world';
Запустим PHP и nginx
sudo service nginx start sudo service php5-fpm start
После этого в браузере попробуем перейти на animoto.localhost
Если получилось — отлично. Если нет — давайте обсудим в комментариях.
Как видите, настройка LAMP сегодня — достаточно тривиальная процедура, которая занимает не более пяти минут.
Продолжение следует
— анализ избранных программ
— разделение и поиск важнейших функций
— реализация основного функционала, разработка и тестирование прототипов
— объединение прототипов в альфа-версию
— пожелания в комментариях
Если где-то что-то сильно не так — пожалуйста, намекните в личку. Спасибо!
ссылка на оригинал статьи http://habrahabr.ru/post/166717/
Добавить комментарий