Skip to content
Dmitry Grebeniuk edited this page Dec 4, 2013 · 42 revisions

Дрезина -- это такой велосипед, который ездит по рельсам. Нуфф сказал.

To do / Plans

  • Подумать, как быть с роутами и контролерами. Что нужно:

    • Более-менее декларативное описание роутов, что-то в стиле

        % get /entity/id:int Entity_controller show
      
    • Поменьше ручной работы и минимум дублирования сущностей

    • Роуты могут определять путь, который нужно связать с контролером, и в контролере надо уметь брать этот путь, как тут:

      `get 'somepath', :as => 'mycontroller'`
      

      (тут должно быть доступно mycontroller_path)

    • Комар заблевал от кодогенерации и грозится придумать роуты с биндами.

    • Сделать так, чтобы не-блевотное легко подключалось в нужное место обработки роутов.

  • Для dev-окружения -- хрень, которая будет проверять, не изменились ли исходники, при изменении запускать ребилдилку, прибивать старый процесс и запускать новый, и только потом передавать ему запрос.

  • Придумать что-нибудь революционное для работы с формами.

    • Для этого, наверное, описать тут, чем плохо спиздить формы с тех же рельсов.
  • БД

    • собственно соединение с БД
    • почесать dbi.pg на предмет человеческого dbi-подобного интерфейса; сделать интерфейс мономорфным относительно вида БД (пусть через coercions)
    • научиться применять простые миграции и следить за текущей схемой БД
    • (в мечтах) Заставить PGOcaml выдавать объекты или рекорды.
  • Шаблоны html. Брать ecaml. Текущие вопросы:

    • как оно будет использоваться для генерации .ml из .eml так, чтобы вписалось в общую схему
  • Кеширование на сервере.

    • брать последнюю дату создания/изменения объектов, протаскивать её везде, сделать комбинатор типа respond_cached сущности ответ, который по сущностям будет определять, нужно ли отдавать ответ? Тут именно с технической стороны надо сделать пиздато, так как концепции ясны.
  • Попробовать присунуть ADT в роуты и в БД. Насчёт БД будет сложно, а с роутами вроде и просто, и заебись.

  • Отдача статики: запилить фильтр, который будет проверять сегменты после их urldecode, по такому алгоритму: в начале сегмента не может быть "../", в середине -- "/../", в конце -- "/.." (так как сегменты склеиваются по "/", и нужно не допустить образования "/../" в пути).

  • Мелочёвка:

    • Скопипастить себе Buffer и сделать там вывод содержимого буфера через lwt, чтобы не копировать из Buffer.t в отдельную строку
Clone this wiki locally