Дмитpий Hecтepук

Блог о программировании — C#, F#, C++, архитектура, и многое другое

Второй день моего стартапа

4 комментария

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

Переходы vs. AJAX

Как я уже писал, Google AdSense – это злая система, которую не особо волнует количество показов. Тем не менее, делать single-page AJAX с учетом нынешних систем монетизации от рекламы попросту невыгодно. И хотя я в принципе представляю, что у многих людей реклама отключена, и что количество людей которые кликнут рекламу минимально, мне все равно хочется чтобы количество страниц которое откроет пользователь было большим.

В связи с этим, я решил сделать drill-down навигацию с перезагрузкой страницы на каждом этапе. Это только звучит ужасно, а на самом деле кэширование браузером творит магию, то есть время загрузки тратится в основном на модуль AdSense. Естественно, кэширование на стороне сервера тоже помогло бы, но мне не хочется переписывать на 2й день запуска сайт под концепцию CQRS (а тянет именно на это). Пока количество посещений равно нулю, имеет смысл расширять функционал, а не рефакторить.

И еще – рекламу я буду рефакторить. Мне кажется что более правильно, например, делать ссылку на Amazon.com где люди могут реально что-то купить, чем позволят Гуглу делать ссылки на всякие абстрактные сайты, некоторые из которых вообще предоставляют услуги которые рядовому посетителю сайта не нужны.

Месиво из <%: %> или “почему мне нужен Spark”

Поскольку я постоянно перегружаю страницу, вместо скромных, дискретных JSON-пакетов мой сервер передает во view весьма большую модель, которую нужно отрисовывать используя определенную логику. Две вещи, которые постоянно фигурируют – это проверки (if) и итерации (foreach). В разметке для дефолтного view engine это выглядит убого:

<% if (x.Stuff != null && x.Stuff.Count > 0) { %>
  <ul>
    <% foreach (var s in x.Stuff) { %>
      <li><p><%: s.Name %></p></li>
    <% } %>
  </ul>
<% } %>

С другой стороны, Spark как раз настроен на такие вещи со своими ключевыми словами if и each. Это делает применение Spark (каюсь: MvcContrib уже в проекте) очень соблазнительным решением.

Еще одна причина использовать Spark это условное форматирование. Помните я сказал что у меня не используется Ajax? Вот-вот, у меня вообще javascript пока используется только для GA и AdSense, поэтому для того чтобы например сгенерировать ссылку для текущего элемента я прибегаю к подобным ужасам:

Html.ActionLink("Something", "Index",
  new {
    // тут разные параметры, они не важны
  },
  new { @class = (Model.Something == x.Something ? "fatlink" : string.Empty) })

Это не шутка – приходится писать такого рода извращения. Причем, есть еще одна нужная оптимизация, о которой наверное стоит написать отдельно.

Пути без заглавных букв и сравнение строк

По идее, GA должен правильно анализировать пути вне зависимости от того, заглавные там буквы или нет. Де факто, он этого не делает, и я могу запостить сюда скриншот в доказательство (но пока не буду, ибо лень). Так или иначе, в целях SEO и “красивости”, я считаю что все пути (в ссылках и т.д.) должны содержать только строчные буквы.

А теперь внимание, вопрос – какие буквы будет подставлять Html.ActionLink если использовать его не в записями, написанными вручную (боже упаси), а с T4Mvc или чем-то динамически сгенерированным? Правильно – MVC будет косячить и делать ссылки вроде http://mysite.com/Home/About. Для того, чтобы это устранить, приходится писать (и использовать) нечто наподобии следующего:

public static string l(this string text)
{
  return text.ToLowerInvariant();
}

Еще возникает проблема сравнения строк в условно-сгенерированном контенте. Хочется делать case-insensitive сравнение, что приводит к использованию string.Equals() с весьма громоздким вторым параметром. Решение тут такое же – писать метод расширения который будет делать это в “короткой форме”.

Планы на ближайшее будущее

Хоть я и не раскрываю пока суть моего “стартапа”, у меня есть несколько планов насчет того, что нужно внедрять. Во-первых, моему сайту потребуется система для синдикации (через RSS или Atom) контента. В комментариях к предыдущему посту мне написали что можно и CMS взять, но тут как раз пример обратного – та синдикация, которая потребуется мне, должна быть написана вручную, т.к. ее логика слишком сложна для того чтобы вписываться в синдикацию новостей (которые любая CMS делать наверняка умеет).

Вторая фича – это использование либо Flash либо Silverlight (ни в том ни в том особо не смыслю, так что не важно) для показа кастомной визуализации. Опять же, тут не просто графики нужны, а нечто посложнее, так что будет интересно писать.

Вот пока и все. Спасибо за комментарии к первому посту – заставили меня задуматься на тему того что такое “стартап”.

Реклама

Written by Dmitri

3 мая 2010 в 22:58

Опубликовано в .NET, asp.net, Technology

комментария 4

Subscribe to comments with RSS.

  1. А какова цель «стартапа»? Я так понимаю, что в первую очередь это коммерция, поскольку почти сразу же речь идет об AdSense? В таком случае изначально нужно было ставить какую-либо CMS, поскольку свой функционал не готов, и накручивать посещалку, а не вещать рекламу сразу на нулевый сайт. Во-вторых, стартап подразумевает все-таки четкий план действий, тогда в таком случае, например, вопросы case-sensitive должны быть решены заранее, поскольку это важный вопрос.

    Насчет реальности стартапа за один день. С использованием CMS вполне реально. За один день поднимали по несколько сайтов с уникальным контентом и дизайном с загоном страниц в поисковики и последующей индексацией.

    Samous Prime

    4 мая 2010 at 7:52

  2. Dlya RSS mozno ispolzovat ASP.NET RSS Toolkit (http://aspnetrsstoolkit.codeplex.com/). Tam mozno customniy RSS sdelat v 10-15 strochek koda.

    alex

    4 мая 2010 at 10:24

    • Спасибо, не знал о таком. Но что-то мне подсказывает что придется писать какой-то мегакастомный код на WCF.

      Dmitri

      4 мая 2010 at 18:29

  3. А как месиво будет выглядеть на Спарке?

    ulu

    7 мая 2010 at 10:03


Оставить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: