Решил написать Nemerle версию NerdDinner'а. В основном для себя, чтобы поближе с языком познакомиться. Если реализация будет близка к конечному результату, то можно будет и выложить для примера.
Так вот, столкнулся с проблемой — студия почему-то постоянно отжирает себе одно из 4х ядер процессора, как вовремя компиляции, так и вовремя разработки. Количество отъедаемой памяти при этом бытро растёт, пока компилятор не вываливается с OutOfMemoryException.
Что-либо делать в таких условиях реально сложно, тем более что языка то ещё толком не знаю.
Может подскажите, куда копать?
Win7 32bit, 4gb ram, VS2008 SP1, версия nemerle: 1.0.0.8879
ММ>Всем привет!
ММ>Решил написать Nemerle версию NerdDinner'а. В основном для себя, чтобы поближе с языком познакомиться. Если реализация будет близка к конечному результату, то можно будет и выложить для примера.
ММ>Так вот, столкнулся с проблемой — студия почему-то постоянно отжирает себе одно из 4х ядер процессора, как вовремя компиляции, так и вовремя разработки. Количество отъедаемой памяти при этом бытро растёт, пока компилятор не вываливается с OutOfMemoryException.
ММ>Что-либо делать в таких условиях реально сложно, тем более что языка то ещё толком не знаю. ММ>Может подскажите, куда копать?
Здравствуйте, Маслаков Михаил, Вы писали:
ММ>Так вот, столкнулся с проблемой — студия почему-то постоянно отжирает себе одно из 4х ядер процессора, как вовремя компиляции, так и вовремя разработки. Количество отъедаемой памяти при этом бытро растёт, пока компилятор не вываливается с OutOfMemoryException.
Ситуация воспроизводится?
Можно сформировать минимальный пример ее воспроизводящий?
Если да, то создай запись в багтрекере и добавть атачем туда свой проект (с описанием как его воспроизвести), ну, или опиши здесь.
Если я смогу воспроизвести ситуацию, то поправлю баг.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Проблема с интеграцией, компилятор "ест" память
Проблема судя по всему в Entity Framework, который я использую для доступа к данным (через отдельный class library проект).
Как только я добавляю код, в котором есть доступ к данным через ObjectQuery, компилятор вешается.
Здравствуйте, Маслаков Михаил, Вы писали:
ММ>Добавил: http://nemerle.rsdn.ru/bugs/view.php?id=1230
ММ>Проблема судя по всему в Entity Framework, который я использую для доступа к данным (через отдельный class library проект). ММ>Как только я добавляю код, в котором есть доступ к данным через ObjectQuery, компилятор вешается.
ОК. Если получится запустить приатаченый проект, то постараюсь поправить этот баг.
ЗЫ
Для доступа к данным, на мой взгляд, лучше использовать BLToolkit.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Проблема с интеграцией, компилятор "ест" память
Здравствуйте, Маслаков Михаил, Вы писали:
ММ>Решил написать Nemerle версию NerdDinner'а. В основном для себя, чтобы поближе с языком познакомиться. Если реализация будет близка к конечному результату, то можно будет и выложить для примера.
Не сочти за рекламу А может сразу на nrails? Там из коробки будет работа с базой, тулкит и spark view engine. Плюс простая передача данных из контроллера во view. Плюс адресация экшенов в стиле MVC.Home.Index(). Вобщем многие вещи которыми nemerle может облегчить жизнь в ASP.NET MVC.
Re[2]: Проблема с интеграцией, компилятор "ест" память
Ну я, в общем, только за. Задачу себе поставил написать NerdDinner — Nemerle Way. Если считаешь, что nrails можно уже назвать так назвать, то почему бы и нет.
Последний код брать отсюда, я правильно понимаю? http://code.google.com/p/nemerleonrails/source/checkout
Если есть какие-то тонкости в установке/интеграции, напиши плз, если не сложно.
Спасибо.
Здравствуйте, Ziaw, Вы писали:
Z>Здравствуйте, Маслаков Михаил, Вы писали:
ММ>>Решил написать Nemerle версию NerdDinner'а. В основном для себя, чтобы поближе с языком познакомиться. Если реализация будет близка к конечному результату, то можно будет и выложить для примера.
Z>Не сочти за рекламу А может сразу на nrails? Там из коробки будет работа с базой, тулкит и spark view engine. Плюс простая передача данных из контроллера во view. Плюс адресация экшенов в стиле MVC.Home.Index(). Вобщем многие вещи которыми nemerle может облегчить жизнь в ASP.NET MVC.
Здравствуйте, Маслаков Михаил, Вы писали:
ММ>Ну я, в общем, только за. Задачу себе поставил написать NerdDinner — Nemerle Way. Если считаешь, что nrails можно уже назвать так назвать, то почему бы и нет. ММ>Последний код брать отсюда, я правильно понимаю? http://code.google.com/p/nemerleonrails/source/checkout ММ>Если есть какие-то тонкости в установке/интеграции, напиши плз, если не сложно.
К сожалению пока нет шаблона для проекта. Так что придется скопировать NRails.Demo, поудалять оттуда тестовые модели (Db это менеджер, его надо оставить) и миграции. Исправить строку подключения в web.config.
Если в качестве движка планируется использовать спарк — лучше поставить его интеграцию, хотя она будет считать, что код на C#. Можно и без интеграции, просто открывать шаблоны как html.
На этом все, можно создавать миграции для создания БД, модели, контроллеры, вьюхи.
Re[3]: Проблема с интеграцией, компилятор "ест" память
Так, базу сделал, миграцию запустил, база нормально создалась.
При компиляции пишет:
Doctor model error: System.Exception: table Doctor not found, env: 'Development'
Про остальные модели то же самое.
NRails.Development connectionstring точно обновил, так что с этим проблем не должно быть.
Извиняюсь, если вопросы детские, просто пока что реально сложно решать проблемы, не понимая что и откуда идёт.
Z>К сожалению пока нет шаблона для проекта. Так что придется скопировать NRails.Demo, поудалять оттуда тестовые модели (Db это менеджер, его надо оставить) и миграции. Исправить строку подключения в web.config.
Z>Если в качестве движка планируется использовать спарк — лучше поставить его интеграцию, хотя она будет считать, что код на C#. Можно и без интеграции, просто открывать шаблоны как html.
Z>На этом все, можно создавать миграции для создания БД, модели, контроллеры, вьюхи.
Куда билдятся и на каком этапе временные классы для спарк вьюшек?
А то я вроде меняю модель внутри вьюхи, а простой build не перебилживает и из-за этого компайл тайм ошибка. Приходится полный rebuild делать.
Вообще, где лучше всего задавать такие нубские вопросы? Здесь в ветке или куда-то в другое место двинуть?
Z>Здравствуйте, Маслаков Михаил, Вы писали:
ММ>>Ну я, в общем, только за. Задачу себе поставил написать NerdDinner — Nemerle Way. Если считаешь, что nrails можно уже назвать так назвать, то почему бы и нет. ММ>>Последний код брать отсюда, я правильно понимаю? http://code.google.com/p/nemerleonrails/source/checkout ММ>>Если есть какие-то тонкости в установке/интеграции, напиши плз, если не сложно.
Z>К сожалению пока нет шаблона для проекта. Так что придется скопировать NRails.Demo, поудалять оттуда тестовые модели (Db это менеджер, его надо оставить) и миграции. Исправить строку подключения в web.config.
Z>Если в качестве движка планируется использовать спарк — лучше поставить его интеграцию, хотя она будет считать, что код на C#. Можно и без интеграции, просто открывать шаблоны как html.
Z>На этом все, можно создавать миграции для создания БД, модели, контроллеры, вьюхи.
Здравствуйте, Маслаков Михаил, Вы писали:
ММ>Так, базу сделал, миграцию запустил, база нормально создалась. ММ>При компиляции пишет: ММ>Doctor model error: System.Exception: table Doctor not found, env: 'Development'
ММ>Про остальные модели то же самое.
Т.е. в базе есть таблица Doctor, а компиляция не проходит? Странно, возможно кеширование схемы в интелисенс режиме. Билд при этом выдает ошибки в окне output?
Re[5]: Проблема с интеграцией, компилятор "ест" память
Здравствуйте, Маслаков Михаил, Вы писали:
ММ>Куда билдятся и на каком этапе временные классы для спарк вьюшек? ММ>А то я вроде меняю модель внутри вьюхи, а простой build не перебилживает и из-за этого компайл тайм ошибка. Приходится полный rebuild делать.
Вообще вьюшки компилятся в рантайме. По первому запросу или после изменения. Интеграция спарка их пробует компилить как сишарпные для интелисенса, но это она от незнания. Пока на ошибки показываемые интеграцией надо забивать.
ММ>Вообще, где лучше всего задавать такие нубские вопросы? Здесь в ветке или куда-то в другое место двинуть?
Пока здесь, потом наверное надо будет просить отдельный форум.
Re[5]: Проблема с интеграцией, компилятор "ест" память
Здравствуйте, Маслаков Михаил, Вы писали:
ММ>Вообще, где лучше всего задавать такие нубские вопросы? Здесь в ветке или куда-то в другое место двинуть?
Вообще, нрельсы еще не использовалась ни в одном проекте, я только начинаю сейчас проект на них Решай сам, интересно ли тебе быть первопроходцем. Со своей стороны обещаю исправлять все ошибки как можно быстрее.
Re[6]: Проблема с интеграцией, компилятор "ест" память
Ёлки палки, я до самого низа докопал функционал доставания схемы. Повсюду кидал эксепшены, чтобы хоть какую-то дебаг информацию получать
Выходило, что при компиляции таблицы в схеме были, но тем не менее в Error List ошибка оставалась.
Так что ты прав, всё дело было в кеше интеллисенса. Есть какой-то способ его сбросить, не рестартуя студию?
Z>Здравствуйте, Маслаков Михаил, Вы писали:
ММ>>Так, базу сделал, миграцию запустил, база нормально создалась. ММ>>При компиляции пишет: ММ>>Doctor model error: System.Exception: table Doctor not found, env: 'Development'
ММ>>Про остальные модели то же самое.
Z>Т.е. в базе есть таблица Doctor, а компиляция не проходит? Странно, возможно кеширование схемы в интелисенс режиме. Билд при этом выдает ошибки в окне output?
Да мне, собственно, тоже пока не для проекта. Как раз-таки хочется самому покопаться, а если повезёт, то и другим помочь.
Поэтому, собственно, и решил начать с НёрдДиннера, чтобы найти все узкие места или наоборот преимущества.
Z>Здравствуйте, Маслаков Михаил, Вы писали:
ММ>>Вообще, где лучше всего задавать такие нубские вопросы? Здесь в ветке или куда-то в другое место двинуть?
Z>Вообще, нрельсы еще не использовалась ни в одном проекте, я только начинаю сейчас проект на них Решай сам, интересно ли тебе быть первопроходцем. Со своей стороны обещаю исправлять все ошибки как можно быстрее.
Нашёл первый баг. Когда генерируется тело Action через parametrizedMethod, то в конце ты не возвращаешь NRActionResult.
Поэтому вылезает ошибка в стиле 'cannot convert void to INRActionResult'.
я просто заменил:
..$parametrizedBody;
на:
..$(parametrizedBody.Append([<[ r; ]>]));
Теперь всё окей.
Z>Здравствуйте, Маслаков Михаил, Вы писали:
ММ>>Вообще, где лучше всего задавать такие нубские вопросы? Здесь в ветке или куда-то в другое место двинуть?
Z>Вообще, нрельсы еще не использовалась ни в одном проекте, я только начинаю сейчас проект на них Решай сам, интересно ли тебе быть первопроходцем. Со своей стороны обещаю исправлять все ошибки как можно быстрее.
Здравствуйте, Маслаков Михаил, Вы писали:
ММ>Нашёл первый баг. Когда генерируется тело Action через parametrizedMethod, то в конце ты не возвращаешь NRActionResult. ММ>Поэтому вылезает ошибка в стиле 'cannot convert void to INRActionResult'.
ММ>я просто заменил: ММ>..$parametrizedBody; ММ>на: ММ>..$(parametrizedBody.Append([<[ r; ]>]));
ММ>Теперь всё окей.
Ага ) Я тоже сегодня это нашел и исправил, только не комитил еще. Там еще баг, к каждому перегруженному методу генерится свой метод без параметров. Они конфликтуют. Это тоже просто лечится, но еще одна проблема уже совсем не простая, когда начинаешь активно менять экшены интеграция запускает этот макрос несколько раз, вобщем я еще не совсем разобрался чем и как это лечить.