Я не могу сказать, что мой проект Sinatra завершен. Могу сказать, что она соответствует требованиям и меня устраивает, где она для версии 0.0.0.0.1. Я решил поработать над идеей приложения, которая появилась у меня чуть меньше года назад, задолго до того, как я даже подумал о том, чтобы научиться программировать или начать работать над такой программой. Это была одна из тех идей «о, разве это не было бы по-настоящему крутой и удобной частью программного обеспечения», которые у меня часто возникают, поэтому возможность начать создавать ее самостоятельно для меня очень волнительна — даже если это машина Флинстоуна. версия Теслы в моей голове.

Как и большинство людей, рассказывающих в своих блогах о модуле Sinatra, я также пробежался по начальному материалу с sql, orms, html и css и основами Sinatra, за которым последовало резкое замедление, поскольку лабораторные работы становились все более сложными в последних 15 или около того. лекции и лабораторные работы. Но по мере того, как я узнавал, как удобнее всего отлаживать MVC, мне очень нравилась эта интеграция всех симантических языков и соглашений, которые мы собрали во втором модуле. Я потратил много времени на концептуализацию своих моделей и их взаимосвязей, я нашел время, чтобы нарисовать, как должен работать мой конечный продукт, прежде чем начать, и я сделал ТОННУ заметок, которые можно описать только как письменное уклонение от резины (процесс Иногда мне помогают словесные резиновые приседания, так как это заставляет меня немного замедлиться — я говорю быстро, даже когда говорю про себя). С этим тщательным фундаментом я обнаружил, что продвинулся через фактическую фазу кодирования этого проекта намного быстрее, чем ожидал, и у меня было несколько триумфальных моментов «Я НЕ МОГУ ПОВЕРИТЬ, ЧТО ПРОСТО СРАБОТАЛО», которые были великолепны.

Одна из главных проблем, которую мне пришлось преодолеть, заключалась в том, что через некоторое время мне пришлось признать, что одна из моих моделей была концептуально ошибочной и нуждалась в капитальном ремонте. Моему классу Ingredient, который предназначен для отслеживания вашего кухонного инвентаря, были предоставлены три атрибута: холодильник_морозильник_элемент, кладовая_элемент и spice_cabinet_item, чтобы пользователь мог вводить 3 предмета за раз в разные категории на странице новых предметов, и поэтому я может легко организовать страницу шоу на «холодильник и морозильник», «кладовая» и «шкаф для специй». Проблема возникла, когда я создал кнопку удаления и понял, что если вы хотите удалить один из этих элементов, вы в конечном итоге удалите весь объект Ingredient, потеряв два других вместе с ним. Или, если вам нечего было добавить в шкаф для специй при добавлении предметов из холодильника и кладовой, моя база данных была заполнена кучей объектов ингредиентов с ингридиентом. spice_cabinet_item = «», что кажется быстрым способом получить грязная база данных. Я переключился на новую ветку и изменил свою таблицу ингредиентов, чтобы вместо этого она состояла из просто «item» и «food_type», так что каждый продукт питания был привязан к своему собственному объекту ингредиента, а «food_type» функционировал как «где на кухне находится». это из атрибута. Я думаю, что это также облегчит создание алгоритма сопоставления ингредиентов с рецептами в будущем.

В целом, я получил огромное удовольствие от создания этого проекта. Я так взволнован тем, что могу начать развивать свои идеи на этом этапе, поскольку это дает мне действительно сильную мотивацию работать усердно, тщательно и скрупулезно.