[flame] asp* vs jsp* [re: у гугла кишка тонка]
А вот strongly typed view такого в Java нет и не будет по причине замшелости мышления джавистов.кстати, strongly typed можно сделать не только "view", но и обратный процесс: преобразование form data в объекты Model/ViewModel. В языке для этого уже всё есть. Возможно, такое вскоре появится.
вот strongly typed view такого в Java нет и не будет по причине замшелости мышления джавистов.Если ты про те классы, для создания которых требуется GUI, чтобы хоть как-то упростить жуткий синтаксис и другие неудобства; то слава богу, что нет и не будет.
Если ты про те классы, для создания которых требуется GUI, чтобы хоть как-то упростить жуткий синтаксис и другие неудобства; то слава богу, что нет и не будет.гы лол, похоже ты даже не смотрел ASP.NET MVC.
гы лол, похоже ты даже не смотрел ASP.NET MVCДа нет, смотрел, и охуевал.
гы лол, похоже ты даже не смотрел ASP.NET MVCПо последней ссылке я сам охуевал, и постил об этом тут.
Да нет, смотрел, и охуевал.
Но ты не уводи разговор в сторону, речь идет о "strongly typed view". На пальцах это вот такие ссылки на свойства "_ => _.Property1" (это linq.expression). (более подробно гугл расскажет). Такого в Java нет и не будет, если она не начнет оглядываться на C#.
На пальцах это вот такие ссылки на свойства "_ => _.Property1" (это linq.expression). (более подробно гугл расскажет). Такого в Java нет и не будет, если она не начнет оглядываться на C#.это очень, очень круто! Больше палочек - круче и профессиональней выглядит! Сразу уважуха.
Но ты не уводи разговор в сторону, речь идет о "strongly typed view". На пальцах это вот такие ссылки на свойства "_ => _.Property1" (это linq.expression). (более подробно гугл расскажет).Я уже давно погуглил на эту тему, и результатом и стал мой ответ: "это та штука, для создания которой понадобился GUI?"
Я не понимаю, чего именно нет в Java. И я тем более не понимаю, к чему ты нарисовал какую-то кракозябру, и почему в скобочках приписка, что это linq.expression
Такого в Java нет и не будет, если она не начнет оглядываться на C#.До тех пор, пока в .NET не будет хотя бы базового набора коллекций, на него никто не будет оглядываться. И слава богу.
ЗЫ Шуреск зажигает, постит самое то, чем мс изговняет просто таки .нет в последнее время.
ну типа в жаве нет лямбд(а это так до сих пор?) и нет ЛИНКУ.Да нет, дело-то в том, что отгугливается вот что:
public ActionResult StronglyTypedViewOfAMonkey
{
Monkey monkey = new Monkey;
monkey.Name = "Bob the Monkey";
monkey.Age = 5;
monkey.Height = 4.5F;
return View(monkey);
}
<H3>Monkey Data:</H3>
<BR>
<P><B>Name:</B> <%= Model.Name %></P>
<P><B>Age:</B> <%= Model.Age %></P>
<P><B>Height:</B> <%= Model.Height %></P>
А в Java именно это есть вот уже много лет...
Да нет, дело-то в том, что отгугливается вот что:Как ты гуглишь? какую-то фигню нагуглил. У тебя в коде ридонли сценарий, это было с самого начала на любой платформе. А речь о формах для редактирования данных.
почему в скобочках приписка, что это linq.expressionДа, это ключевой момент. Пока ты не поймешь почему тут linq.expression, так и будешь продолжать нести чушь.
Как ты гуглишь? какую-то фигню нагуглил. У тебя в коде ридонли сценарий, это было с самого начала на любой платформе.Блядь, ты грамотный, просто пиздец. Представь себе, я гуглил "strongly typed view" и кликнул первую ссылку.
А речь о формах для редактирования данных.Чем по-твоему форма для редактирования данных в браузере отличается от View?
Да, это ключевой момент. Пока ты не поймешь почему тут linq.expression, так и будешь продолжать нести чушь.Чушь пока что несёшь только ты: явно не знаком с Java, но зато сделал какие-то выводы по поводу того, что там есть, а чего нет.
Я не знаю какое озарение от Била Гейтса на тебя снизошло во время молитвы на гейский* бэкграунд Windows XP, но более непонятной херни я ещё не видел:
Но ты не уводи разговор в сторону, речь идет о "strongly typed view". На пальцах это вот такие ссылки на свойства "_ => _.Property1" (это linq.expression). (более подробно гугл расскажет).
* Здесь я не пытался разжечь вражду на почве сексуальной ориентации.
Блядь, ты грамотный, просто пиздец.ну не хочешь не образовывайся, мне та чё
это только МС делает из райта нечто скаральное, типа а вот тут я положу текстбокс и случится магия!
это только МС делает из райта нечто скаральное, типа а вот тут я положу текстбокс и случится магия!если в язык не встроены какие-либо binding expression-ы, то, да, райт сценарий выглядит хреново. В случае C#-а на роль binding expression-ов случайно подошли linq.expression. Да, синтаксис громоздкий, не оптимальный, но гораздо лучше, чем никакого.
Да, синтаксис громоздкий, не оптимальный, но гораздо лучше, чем никакого.лол, это уже во-первых спорно, во-вторых не совсем корректно. Даже в случае написания классического cgi с парсеньем данных запроса, КАКОЙ-ТО синтаксис будет. А при наличие грамотных либ, очень спорно, будет ли такой неоптимальный синтаксис лучше их. Но ты делаешь успехи, говоришь как настоящий евангелист
КАКОЙ-ТОписец, в первый класс нах, во второе полугодие — учимся читать абзацы целиком:
... в язык не встроены ...Речь идет о встроенных в язык .
... лучше, чем никакого.
Я бы еще понял, гноби ты яву за отсутствие using - применяется в куче кусков различнейшего кода, за кривоватые генерики(сами джависты их критикуют) - применение в разнобразнейших задачах, а ты уперся в сахарок для какого-то уя, так сахарок то и не совсем сладкий на поверку.
Речь идет о встроенных в язык .Что из этого не встроено в язык? Здесь обработка результата редактирования формы, тебе сразу приходит класс, который был нужен. Никаких linq expression здесь не требуется. Поддержка валидации тоже есть, и не такая убогая, как в ASP.NET MVC.
@RequestMapping(value = "/addContact", method = RequestMethod.POST)
public String addContact(@ModelAttribute("contact") Contact contact, BindingResult result) {
System.out.println("First Name:" + contact.getFirstname + "Last Name:" + contact.getLastname;
return "redirect:contacts.html";
}
кстати, strongly typed можно сделать не только "view", но и обратный процесс: преобразование form data в объекты Model/ViewModel. В языке для этого уже всё есть. Возможно, такое вскоре появится.Только возможно? Но в замшелой Java это всё уже давно есть.
о гуе вообщегуи тут собственно не причем, применения есть и вне гуи. На форумах встречается об этом сообщения время от времени. У меня в проекте такие конструкции используются для реализации dataflow http://propertyexpression.codeplex.com
Еще есть много идей, где это потребуется.
Собственно это всего лишь типизированная запись вот такого рефлекшен кода
type.GetPropertyInfo("PropertyName1")
Ничего больше.
Кстати, в интернетах давно идут разговоры, чтобы иметь краткий синтаксис для такого, а так же для методов.
(@ModelAttribute("contact")
подобные атрибуты это убого.
кусок кода, который ты привел тяжело рефакторить и валидировать на этапе разработки.
смена contacts.html на mycoolcontacts.html уже создает проблему с отслеживанием, что все contacts.html заменены на mycoolcontacts.html
как выглядит view, кторая рендерит эту форму?Как угодно, и это не шутка.
подобные атрибуты это убого.Ты ещё ни разу не написал, как это выглядит в твоих strongly typed view, если писать их руками, а не создавать через GUI. И не разъяснил, что за херню ты нёс про LINQ. И не ответил на кучу других вопросов, от которых уже нельзя тупо отмахнуться гуглом.
кусок кода, который ты привел тяжело рефакторить и валидировать на этапе разработки.Не создаёт, потому что почти все библиотеки Java поддерживаются в IntelliJ IDEA. Кроме того, никто не мешает написать один обработчик с одним URL, привет от хорошо спроектированных фреймворков. А ещё можно использовать готовое решение - их много, и они часто друг с другом совместимы, как это ни удивительно звучит для евангелистов Microsoft.
смена contacts.html на mycoolcontacts.html уже создает проблему с отслеживанием, что все contacts.html заменены на mycoolcontacts.html
В общем, не высасывай из пальца какие-то проблемы, в .NET их всё равно больше и они намного серьёзнее. И всё потому, что Microsoft год за годом продолжает изобретать велосипеды, причём либо одноколёсные, либо восьми-и более-колёсные.
Как угодно, и это не шутка.ну писец, может уже включишь глову? Кэп напоминает, что Contact не заполнится из любой form data.
если писать их руками, а не создавать через GUIслушай ты о чем? "через GUI" для ASP.NET MVC? первый раз такое слышу, может я что-то пропустил, но скорее всего тебя заносит...
ну писец, может уже включишь глову? Кэп напоминает, что Contact не заполнится из любой form data.А Кэп, случайно, не напоминает, что html форму можно сделать разными способами? HTML, JSP, XSLT, Spring Tags, и так далее... Хотя фанату Microsoft это вряд ли известно.
слушай ты о чем? "через GUI" для ASP.NET MVC? первый раз такое слышу, может я что-то пропустил, но скорее всего тебя заносит...Я тебе уже сказал, по каким словам отгуглил и на какую по счёту ссылку кликнул.
Давай вернёмся к теме. Ты сказал, что в Java нет strongly typed view, при этом нёс какую-то околесицу про LINQ Expressions. Гугол выдал ссылки, по которым я понял, что strongly typed view - это обычный data binding. Я тебе привёл примеры, где в Java это поддерживается и для чтения, и для записи модели. Ты признаёшь, что был не прав, когда писал, что "в замшелой Java этого никогда не было и не будет"?
Если нет, то приведи пример, чего там не было и не будет. Я предлагаю написать код с использованием strongly typed view для чтения и записи модели - это позволит тебе более конструктивно обосновать свою точку зрения. Пока что всё сводится к тому, что Microsoft в очередой раз изобрела велосипед, назвала его "двухколёсный покатун", и толкает как новейшее средство передвижения, до селе неизвестное человечеству.
в приведенном коде всего этого нет.
зы
как-то странно получается: сначала ты в качестве примера силы Java приводишь плохой код, а потом говоришь, что в хорошем коде все будет отлично.
в приведенном коде всего этого нет.Дело в том, что я не считаю приведённый код плохим. Ты бы не мог ещё раз сказать, что именно там не так? Только не высасывай изх пальца несуществующие проблемы с поддержкой и рефакторингом, любая мейнстримовая IDE прекрасно со всем этим справляется.
зы
как-то странно получается: сначала ты в качестве примера силы Java приводишь плохой код, а потом говоришь, что в хорошем коде все будет отлично.
Вот пример от Microsoft, где редирект тоже идёт по строке. Я лишь говорю о том, что в Java никто ни в чём не ограничен.
что Microsoft в очередой раз изобрела велосипедСудя вот по этому, они просто повторили JSP. А LINQ Expressions тут вообще упоминались не в кассу.
аттрибуты плохи тем, что в них можно использовать только константы.
соответственно невозможно с помощью аттрибутов записать ни условия, ни обобщенную версию, ни переиспользовать что-то ранее написанное
запись действия вперемешку со страницей в виде единой строки ухудшает автоматическую проверку и преобразование кода на этапе разработки.
например, опечатки в этой строке можно отследить лишь в runtime
return "redirrect:contacts.html";
прямое указание урлов без введения промежуточного слоя - ухудшает гибкость построения навигации.
> Вот пример от Microsoft, где редирект тоже идёт по строке.
это ты про: ?
return RedirectToAction("Index");
во первых, тут redirect в виде явного кода записан (а не через конкатенацию двух строк, которую и при рефакторинге, и в рантайме - придется парсить
во вторых - Index - это промежуточный индентификатор, а не конечный урл.
> только не высасывай изх пальца несуществующие проблемы с поддержкой и рефакторингом, любая мейнстримовая IDE прекрасно со всем этим справляется.
так ты все-таки расскажи - с помощью какой мейнстрим IDE для данного кода можно проверить валидность всех ссылок на этапе компиляции, и как это будет выглядеть?
для вышеприведенного кода - это решается с помощью одного правила для FxCop-а:
внутри RedirectToAction - не должен быть константных строк, а должна быть константа из пространства Action.
> Я лишь говорю о том, что в Java никто ни в чём не ограничен.
очень слабый довод.
машина тьюринга вообще никого ни в чем не ограничивает, вот только писать на ней хорошие программы затруднительно.
но ведь есть языки, где вообще нет компиляции Зачем возводить проверки этапа компиляции в абсолют?
сам по себе JSP, эквивалентен древнему ASP и эквивалентен какому-нибудь php.
и имеет кучу проблем со стабильностью программы.
все ошибки проявляются в рантайме,
вся валидность идентификаторов проверяется в runtime,
невозможен даже простейший автоматизированный рефакторинг (поменять имя переменной)
и т.д.
зы
ты действительно не видишь разницу между?:
<td><%= this.TextBox(x => x.Name) %></td>
и
<jsp:setProperty name="test" property="message" value="Привет, WWW" />
аттрибуты плохи тем, что в них можно использовать только константы.Вода, вода, побольше конкретики и кода, как это решается в ASP.NET MVC.
соответственно невозможно с помощью аттрибутов записать ни условия, ни обобщенную версию, ни переиспользовать что-то ранее написанное
прямое указание урлов без введения промежуточного слоя - ухудшает гибкость построения навигации.Опять какая-то вода, давай побольше конкретики. Каким образом она это ухудшает, как Java тебя в чём-то здесь ограничивает, как это решено в ASP.NET MVC?
во первых, тут redirect в виде явного кода записан (а не через конкатенацию двух строк, которую и при рефакторинге, и в рантайме - придется парситьВ Spring MVC тоже есть класс RedirectView, можно использовать его с промежуточным идентификатором, а можно редиректить и форвардить через префиксы, при чём в обоих случаях рассматриваются и плюсы, и минусы. Кроме всего, можно ещё редиректить на уровне HTTP запросов. Короче, никаких ограничений в продуманном фреймворке обычно нет.
во вторых - Index - это промежуточный индентификатор, а не конечный урл.
так ты все-таки расскажи - с помощью какой мейнстрим IDE для данного кода можно проверить валидность всех ссылок на этапе компиляции, и как это будет выглядеть?Я тебе больше скажу, IntelliJ IDEA всё это проверяет ещё до компиляции, поддерживает completion, подкрашивает ошибки. Запускать для этого отдельную тулзу? В IDE, которая вышла в 2010 году? Это пиздец, батенька!
очень слабый довод.
машина тьюринга вообще никого ни в чем не ограничивает, вот только писать на ней хорошие программы затруднительно.
На самом деле это очень сильный довод, если понимать его правильно. Чем больше свободы действий при использовании фреймворков, тем лучше. Чем меньше для достижения этой свободы приходится писать всякие хаки и прочее дерьмо, тем лучше.
вот только обычно они применяются, когда необходимо быстро написать прототип, или исследовательский проект, или вообще что-нибудь быстро написать.
но после того как что-то написали наступает стадия: поддерживать(сопровождать) работоспособность большой программы в течении десятка лет за минимум ресурсов
и тут появляется потребность - получить гарантию что программа после внесения изменения работает до сих пор правильно.
а это почти невозможно без static typing-а, проверки идентификатор и т.д..
т.е. если на этапах прототипа, исследования, быстрой разработки нас интересовало лишь как можно быстрее внести изменение,
то на этапе сопровождения нас начинает в первую очередь интересовать - как бы что не испортить.
и вот тут начинает рулить компиляция.
и вот тут начинает рулить компиляциятут начинает рулить покрытие кода тестами
<td><%= this.TextBox(x => x.Name) %></td>В JSP я бы написал вот так (заметь, в ASP.NET даже скопировали замшелые Java теги):
и
<jsp:setProperty name="test" property="message" value="Привет, WWW" />
<INPUT TYPE=TEXT NAME="Name" SIZE=20 VALUE="<%= user.getName %>">
И это вовсе не означает, что я ограничен только этим. Я могу взять любой из десятков шаблонизаторов и применить его. При этом я не потеряю поддержку валидации, completion, data binding и так далее. И для изменения представлений мне даже не придётся менять реализацию сервера.
>code:<INPUT TYPE=TEXT NAME=email SIZE=20 VALUE="<%= user.getName %>">
это однонаправленное преобразование из кода в html. и я еще раз повторю, что это даже php умеет.
а как будет делаться обратное, чтобы данные из input-а попали обратно в user.Name?
а вы, батенька, на яве-то писали что-нибудь сложнее хелловрода?
это однонаправленное преобразование из кода в html. и я еще раз повторю, что это даже php умеет.Это будет делаться на сервере в зависимости от выбранной технологии. Я же написал пример:
а как будет делаться обратное, чтобы данные из input-а попали обратно в user.Name?
@RequestMapping(value = "/submitName", method = RequestMethod.POST)
public String submit(@ModelAttribute("user") User user, BindingResult result) {
// use the model, Luke
return new RedirectView("usersList");
}
Я ещё раз напомню, что View должны быть отделены от MC. Что мы и видим в моих примерах: с этим контроллером можно использовать JSP, Spring Tags, Velocity, ...
нет, конечно.
тестами можно(и нужно) покрыть лишь основное выполнение.
все упирается в комбинаторный взрыв
многие ошибки тестами ловятся очень плохо.
например, следующую ошибку тестами фиг поймаешь:
if (i > cache.size)
//cache увеличить в два раза
cache[i] = data;
но есть тулзы, которые эту ошибку ловят на раз при валидации кода.
<td><%= this.TextBox(x => x.Name) %></td>
но вот эта строка - делает и то, и другое, или ты это не понял?
это одна строка отвечает за то, что:
Name => Input.value при генерации страницы
и что input.value => Name при пост ответе.
концепция mvc - всем хороша, кроме очевидной проблемы: в каком виде записать отображение M <-> V? и к какой из букв: M, V или C - это отображение отнести
но вот эта строка - делает и то, и другое, или ты это не понял?Но у меня тоже только одна строка, и работает и то, и другое. Или ты это не понял?
А судя по этой ссылке, в ASP.NET MVC вообще ничего не отличается.
концепция mvc - всем хороша, кроме очевидной проблемы: в каком виде записать отображение M <-> V? и к какой из букв: M, V или C - это отображение отнестиЯ уже когда-то писал, что я не адепт MVC; а вступать в водяные теологические споры я не хочу. Мне просто интересна практическая часть: в ASP.NET MVC продумали, как отделить View от всего остального или нет?
вот только ты забываешь про фундаментальную проблему: чем свободнее инструмент, тем сложнее проверить его валидность.
тестами можно(и нужно) покрыть лишь основное выполнение.
все упирается в комбинаторный взрыв
Ты опять делаешь неверные выводы, которые уже когда-то делал. Почему-то ты уверен, что может быть ситуация, когда классы на 100% покрытые юнит тестами, не будут работать в паре. А в большинстве случаев это неверное утверждение. Единственная проблема с юнит тестами возникает при параллельном программировании, когда тестами на 100% надо покрыть не только код, но и data flow.
многие ошибки тестами ловятся очень плохо.Эту ошибку можно поймать немедленно.
например, следующую ошибку тестами фиг поймаешь:
этот пример из беты первой версии asp.net mvc
вот только ты забываешь про фундаментальную проблему: чем свободнее инструмент, тем сложнее проверить его валидность.Ты перестал заниматься практикой или в самом деле не понимаешь, что нужно выражаться конкретнее? Какую валидность надо проверить? Валидность чего?
этот пример из беты первой версии asp.net mvcТак приведи свой, который разительно отличается. Пока что очевидно, что .NET едва-едва повторил то, что в Java есть уже много лет.
они предложили способ компактной записи отображения M <-> V. причем запись этого отображения поддерживается и валидируется компилятором, автоматизированный рефакторингом и т.д.
это если она немедленно возникает, но вот если она замаскирована, например, так:
if (current_index + items.length > cache.size)
//увеличить кэш в два раза
items.copy_to(cache, current_index);
current_index += items.length;
и вот такие вероятностные ошибки тесты ловят очень плохо
это если она немедленно возникает, но вот если она замаскирована, например, так:Не понял, например, как она замаскирована?
и вот такие вероятностные ошибки тесты ловят очень плохоВероятностные ошибки - это когда у тебя есть Random или параллельное выполнение. В твоём коде ошибки ловятся без всяких вероятностей.
Я вообще-то согласен с тем, что статическая типизация и компиляция рулят. А против юнит тестов лучше выдвигать более жизненный тезис: хрена с два на них хватит времени. У меня сейчас стартап 2.5 месяца, написал 1.5мб кода, и всего-то 150 юнит тестов.
валидность кода на соответствие наборам требуемых правил.
наборы правил могут быть самые различные:
проверка на оптимальность кода,
проверка на безопасность кода,
проверка на отсутствие устаревших конструкций,
проверка на отсутствие одновременного доступа к данным без блокировок,
проверка на отсутствие deadlock-ов,
проверка на поддержку всего набора входных данных,
проверка на то, что внутреннее состояние программы остается корректным при всех вариантах работы
и т.д.
приведи пример теста и время его работы
валидность кода на соответствие наборам требуемых правил.Я не понимаю, как на всё это влияет хорошо спроектированный фреймворк, в котором предоставляется свобода действий.
наборы правил могут быть самые различные:
проверка на оптимальность кода,
проверка на безопасность кода,
проверка на отсутствие устаревших конструкций,
проверка на отсутствие одновременного доступа к данным без блокировок,
проверка на отсутствие deadlock-ов,
проверка на поддержку всего набора входных данных,
проверка на то, что внутреннее состояние программы остается корректным при всех вариантах работы
и т.д.
приведи пример теста и время его работыДопиши свой код до конца, сделай из него компилируемый класс, и я приведу пример теста.
тем, что она возникает только на редко-встречаемом наборе входных данных
есть интерфейс
interface IQueue
{
void Push(int[] items);
int[] Pop(int length);
}
напиши, пожалуйста, для него тесты.
напиши, пожалуйста, для него тесты.Тесты для интерфейса? Ты так шутишь?
нет, тесты пишутся для черного ящика. для его внешней спефикации: так это и в TDD, и в RUP-е.
в этом и смысл тестов: что при изменения внутренностей программы, тесты не меняются.
если ты хочешь посмотреть на код, а потом написать тест - то это ты неявно перешел к задаче валидации кода, когда валидацию кода делает человек.
нет, тесты пишутся для черного ящика. для его внешней спефикации: так это и в TDD, и в RUP-е.Добрый вечер, в интерфейсе никогда нет достаточной спецификации для написания теста. Для этого нужна спецификация кода. В приведённом тобой интерфейсе нету данных о том, может ли метод Pop принимать отрицательные значения. А если не может, то какое исключение он должен выкидывать? Должна ли очередь быть потокобезопасной или нет? Хочешь видеть тесты - либо пиши реализацию, либо детальную спецификацию на конкретную реализацию.
в этом и смысл тестов: что при изменения внутренностей программы, тесты не меняются.Ну здрасьте, при изменении кода тесты тоже могут меняться.
Понимаешь, ты фактически сейчас пытаешься тонко затроллить, ведь даже на самую детальную спецификацию можно будет написать очередь, которая, например, не будет складывать более 5 элементов, или более 10000. И потом будешь кричать, что тесты не помогают. В то время как при обнаружении бага в том же TDD ты просто пишешь ещё один юнит тест, что даёт гарантию, что этот случай в будущем не повторится.
и соответственно это никак не помогает при исходной озвученной мной проблеме:
за минимум ресурсов обеспечить сопровождаемость кода.
и соответственно это никак не помогает при исходной озвученной мной проблеме:Только это как раз и помогает, лучше пока что ничего не изобрели.
за минимум ресурсов обеспечить сопровождаемость кода.
И уж тем более, это помогает намного лучше компиляции.
лучше - это автовалидация кода, и она активно применяется, и только автовалидация позволяет выявить проблему до того, как она проявится у пользователя.
TDD - лишь позволяет обеспечить, чтобы проблема выявленная у пользователя больше не повторялась.
проблема выявленная у пользователя - означает, что еще одна ракета взорвалась на старте; что личные данные миллиона человек утекло на сторону и т.д.
лучше - это автовалидация кода, и она активно применяется, и только автовалидация позволяет выявить проблему до того, как она проявится у пользователя.Увы, но автовалидации кода, кроме юнит тестов, до сих пор не изобрели. Заметь, твои примеры никак не связаны с компиляцией: они одинаково работали бы как в C#, так и в каком-нибудь Lua.
TDD - лишь позволяет обеспечить, чтобы проблема выявленная у пользователя больше не повторялась.
TDD позволяет не только избежать повторения проблем, но и выявить нарушения спецификации при разработке. Поэтому эта практика и даёт очень хорошие результаты.
проблема выявленная у пользователя - означает, что еще одна ракета взорвалась на старте; что личные данные миллиона человек утекло на сторону и т.д.Что никак не связано с компиляцией и статической типизацией.
это кто тебе сказал?
было написано в книжке "как за 24 дня начать писать программы на Java-е?"
> Что никак не связано с компиляцией и статической типизацией.
вот только критически-важное ПО пишут на специфицируемых статик-языках, а не на lua
например, ПО для самолета C-130 делается на языке Spark (это расширение Ada-ы со статическим контролем pre/post-условий)
http://www.altran-praxis.com/spark.aspx
http://www.adacore.com/home/products/sparkpro/tokeneer/disco...
это кто тебе сказал?Нет, я это понял после того, как изучил "новый" фреймвок от Microsoft. Мне же не застилает глаза сияние нимба Била Гейтса.
было написано в книжке "как за 24 дня начать писать программы на Java-е?"
Всё-таки вернись к теме компиляции, а то у нас в Development-е очень плохая тенденция: как только кто-то сливается, так сразу переводит тему, перестаёт писать конкретику, и так далее.
Пока что результаты обсуждения свелись примерно к следующему:
Те, кто в глаза не видел Java, обвинили её в том, что там чего-то нет. А по факту оказалось, что это всё там появилось за годы до того, как это появилось в .NET
Юнит тесты почему-то обвинили в том, что они просасывают по мощности компиляции. Причём как-то бездоказательно, к тому же обвинение строилось на рассмотрении компилируемого языка. На самом же деле эти две темы вообще мало связаны.
Удобным фреймворкам по какой-то причине приписали проблемы с валидируемостью. Вообще без конкретной аргументации.
Выяснили, что strongly typed view - это data binding плюс шаблонизатор в одном флаконе; из-за которого View не очень хорошо отделены от MC. При этом упоминание LINQ Expressions до сих пор осталось тайной за семью печатями.
вот только критически-важное ПО пишут на специфицируемых статик-языках, а не на lua
например, ПО для самолета C-130 делается на языке Spark (это расширение Ada-ы со статическим контролем pre/post-условий)
The SPARK Toolset, during source code analysis, will attempt to verify that all calls to this procedure satisfy this precondition.Как-то отличается это от статического анализа. В общем случае нельзя написать какой-нибудь предупреждатель о высоте полёта, который не сломается, если сломается датчик высоты.
отдельно отвечу только на одно передергивание:
тесты не сосут перед валидацией - они решают разные задачи.
тесты помогают проверить, что код решает конечную задачу, валидация позволяет проверить, что все мелочи учтены
какое это отношение имеет к валидности кода?
если учесть, что ты в каждом утверждение передернул, то я даже не знаю как тебе отвечать.Я всего-лишь перечислил факты из обсуждения этой темы.
тесты не сосут перед валидацией - они решают разные задачи.
тесты помогают проверить, что код решает конечную задачу, валидация позволяет проверить, что все мелочи учтены
Пока что мне очевидно, что юнит тесты могли бы решить все те же задачи, что и статическая валидация в SPARK. Отсюда напрашивается вывод, что если есть время набить всё юнит тестами, то разницы в стабильности между питоном и C# никакой не будет.
какое это отношение имеет к валидности кода?Я пытался сказать о том, что в общем случае статическая типизация - это некоторое дополнение к юнит тестам, которые всё равно намного мощнее. Я бы сказал, что статическая валидация скорее является подмножеством юнит тестов.
ты забываешь, что все имеет цену.
простейшая задача - что переменная не используется до ее инициализации, элементарно решается валидацией.
но требует кол-во тестов равное кол-ву трасс в программе (а это 2^n, где n-кол-во if-ов, for-ов, while-ов, switch-ей и т.д.)
ты забываешь, что все имеет цену.Во-первых, два if-а вовсе не означают, что нужно 4 теста.
простейшая задача - что переменная не используется до ее инициализации, элементарно решается валидацией.
но требует кол-во тестов равное кол-ву трасс в программе (а это 2^n, где n-кол-во if-ов, for-ов, while-ов, switch-ей и т.д.)
Во-вторых, тебе всё равно нужны юнит тесты, которые пройдут по всем путям. И статическая валидация тут мало чем поможет.
Таким образом, либо мы говорим о том, что функция проверена, и тогда нам нужны юнит тесты; либо мы этого вообще не говорим. При наличии статической валидации мы можем сказать только одно: у нас есть хоть какая-то проверка.
Отсюда повторю свой вывод: если есть время всё забить юнит тестами, то разницы между каким-нибудь питоном и C# не будет. Но обычно этого времени нет, о чём я уже написал выше, поэтому большие проекты предпочитают делать на статически типизированных языках без всякой мути. Сюда можно так же добавить, что это чаще языки со sparse синтаксисом.
так только валидация может ответить на вопрос - сколько тестов нужно для двух if-ов
так только валидация может ответить на вопрос - сколько тестов нужно для двух if-овЕсли под валидацией теперь понимать чтение кода, а не статическую валидацию (как в SPARK то да. Но это ничем не отличается в питоне и C#.
это наивный взгляд.
например, правильность функции sort проще доказывать через валидацию, чем через обкладывание тестами всех путей внутри sort-а.
в любой программе, большая часть трасс - служебная, и их нет необходимости покрывать тестами. их достаточно покрыть валидацией.
ты кстати так до сих пор не зафиксировал, кто при сопровождении читает код после каждого внесенного изменения, и меняет набор тестов.
например, правильность функции sort проще доказывать через валидацию, чем через обкладывание тестами всех путей внутри sort-а.Тебе известно, как доказать правильность sort статической валидацией?
в любой программе, большая часть трасс - служебная, и их нет необходимости покрывать тестами. их достаточно покрыть валидацией.Это вообще какое-то непонятное (слабое) утверждение. Можно здесь поподробнее? Я понимаю, когда у нас везде константы; но даже проверка параметра на null полностью может не покрываться статической валидацией.
ты кстати так до сих пор не зафиксировал, кто при сопровождении читает код после каждого внесенного изменения, и меняет набор тестов.Тот же, кто при сопровождении меняет статическую валидацию. В чём между ними разница?
хотя бы открыть кнута, у него каждый алгоритм доказывается.
> Тот же, кто при сопровождении меняет статическую валидацию. В чём между ними разница?
статическую типизацию не надо менять, для того, чтобы выявить еще одну ошибку вида >= вместо >.
а вот тесты менять надо.
хотя бы открыть кнута, у него каждый алгоритм доказывается.Меня интересует практическое применение теоретического доказательства. Например, как это сделать в том же SPARK.
статическую типизацию не надо менять, для того, чтобы выявить еще одну ошибку вида >= вместо >.Правильно, статическая типизация вообще не позволяет проверить эту ошибку.
а вот тесты менять надо.
Так к чему был твой вопрос-то?
открыть кнута, выписать пре и пост условия каждой итерации при данном виде сортировки, записать их на spark-е. запустить spark.
> Правильно, статическая типизация вообще не позволяет проверить эту ошибку.
если это была ошибка - как в примере, который я приводил про кэш, то позволяет.
открыть кнута, выписать пре и пост условия каждой итерации при данном виде сортировки, записать их на spark-е. запустить spark.Ты это делал сам? Напиши, очень интересно посмотреть, как статически валидируется массив динамической длины, который я получаю через сокет. Кстати, туда же ещё передаются произвольные способы сравнения элементов.
То есть я понимаю, какое постусловие у одного рекурсивного вызова того же quicksort, но я не понимаю, как связать его со статической валидацией?
если это была ошибка - как в примере, который я приводил про кэш, то позволяет.Ты бы сразу приводил примеры, как она это позволяет.
И это, кстати, не ответ на вопрос, зачем ты задавал вопрос про то "кто правит тесты".
а там у него алгоритмы доказываются для массивов переменной длины.
почитай что-нибудь по специфицированию программЯ эту тему проходил на АСВК. И помню, что она очень и очень сложная, и в 2001 году была ещё в глубокой теории.
http://books.google.ru/books?id=esr_1lW1WRgC
Но это же ты сказал, что sort легче доказать статической валидацией. Для quicksort я могу набросать автотест, который во время сортировки обойдёт все пути и проверит результат - это 3-4 строчки кода. Теперь мне очень интересно, сколько всего надо написать на SPARK, и как это вообще работает, с какой скоростью компилируется, и так далее...
я ... изучил "новый" фреймвок от Microsoft ...Это два несовместимых предложения. Соответственно, всё что между ними (т.е. весь твой пост) полная чушь. Не понимаешь почему здесь linq.expression, следовательно, не знаком даже поверхностно с ASP.NET MVC, тут всё однозначно.
...
При этом упоминание LINQ Expressions до сих пор осталось тайной за семью печатями.
Тебе указали на маленький, но ключевой момент — linq.expression — ты вместо того, чтобы разобраться в этом, нафлудил кучу постов с описание своих детских страхов по поводу Билла Гейтса и т.п.
тред просмотрел мельком. это холивор про джаву и дот.нет или что ?
Это два несовместимых предложения. Соответственно, всё что между ними (т.е. весь твой пост) полная чушь. Не понимаешь почему здесь linq.expression, следовательно, не знаком даже поверхностно с ASP.NET MVC, тут всё однозначно.Мой пост вообще не имеет смысла, если читать только первое и последнее предложение, попробуй прочитать его весь. Ты уже давно пишешь какую-то чушь, при чём нисколько не пытаешься её аргументировать.
Тебе указали на маленький, но ключевой момент — linq.expression — ты вместо того, чтобы разобраться в этом, нафлудил кучу постов с описание своих детских страхов по поводу Билла Гейтса и т.п.Тебе указали на маленький ключевой момент: то, что очевидно тебе, может быть непонятно другим людям. А поэтому в споре нормальные люди пытаются хоть чем-то аргументировать. Тебе уже давно засчитали слив, потому что ты полез спорить про ASP.NET vs Java *, не имея ни малейшего понятия о Java *. Аргументы будут или так и продолжишь по-детски лепетать про linq expressions, библиотеку для деревьев выражений, которая сама по себе не имеет никакого отношения к ASP.NET MVC?
хоть чем-то аргументироватькогда мы пишем expression "x => x.SomeProperty", то мы сразу задаем две вещи:
1. ссылку на gettor свойства SomeProperty;
2. задаем ID/Name(*1) для соответствующего INPUT-а. Эти ID/Name используются для заполнения obj.SomeProperty при обработке post-а с этой формы.
(*1) в сложных сценариях добавляются префиксы
когда мы пишем expression "x => x.SomeProperty", то мы сразу задаем две вещи:Об этом уже написал , и я ответил, что в Java мы тоже задаём это всё сразу в одной строке. При этом работает автокомплишн и валидация во время компиляции. Это всё есть в Java вот уже больше пяти лет, в различных фреймворках.
Но вот чего я так и не понел, при чём тут LINQ Expressions. Как бы "x => x.SomeProperty" выглядит, скорее, как лямбда.
Об этом уже написал , и я ответил, что в Java мы тоже задаём это всё сразу в одной строке. При этом работает автокомплишн и валидация во время компиляции.ваше обсуждение с -ем заканчивается фразой "или ты это не понял?" с обеих сторон .... . я понимаю, тебя нет. Твой код:
<INPUT TYPE=TEXT NAME=" Name" SIZE=20 VALUE="<%= user.getName %>">
"Name" повторен два раза. У -я один раз:
<%= this.TextBox(x => x. Name) %>
Но вот чего я так и не понел, при чём тут LINQ Expressions. Как бы "x => x.SomeProperty" выглядит, скорее, как лямбда.это напрямую следует из сигнатуры метода TextBoxFor
"Name" повторен два раза. У -я один раз:Это потому, что я привёл в пример JSP - самую древнюю технологию. Зато в ней технически уже есть всё, что нужно; а придумали её лет десять назад. ASP.NET MVC сделали совсем недавно, и единственное улучшение по сравнению с древшейшим JSP - это то, что можно написать один раз?
Ну так в Java можно взять какой-нибудь другой шаблонизатор из десятков существующих, и будешь писать биндинги один раз. В этом и был риторический вопрос к : фанаты Microsoft почти всегда забывают, что в других технологиях сочетание "WEB Framework" как правило не произносится в единственном числе.
это напрямую следует из сигнатуры метода TextBoxForНу слава богу, а то я уж думал, что ты никогда не объяснишь этого. Вместо десятка постов, в которых ты кричал, что я нихуя не знаю, надо было написать: лямбда "x => x.SomeProperty" конвертируется в LINQ Expressions, который используется для вызова getter/setter для работы с моделью.
И тогда я бы сразу понял и не задавал десятки вопросов (в туториалах, представь себе, эта тема детально не раскрывается).
Это потому, что я привёл в пример JSP - самую древнюю технологию. Зато в ней технически уже есть всё, что нужно; а придумали её лет десять назад. ASP.NET MVC сделали совсем недавно, и единственное улучшение по сравнению с древшейшим JSP - это то, что можно написать один раз?твои проповеди великого учения джавы уже подзаебали. Такие проповеди встречаются почти у каждого джависта среднего уровня, и я их слушаю уже несколько лет, скучно.
Ну так в Java можно взять какой-нибудь другой шаблонизатор из десятков существующих, и будешь писать биндинги один раз. В этом и был риторический вопрос к : фанаты Microsoft почти всегда забывают, что в других технологиях сочетание "WEB Framework" как правило не произносится в единственном числе.
Ну так в Java можно взять какой-нибудь другой шаблонизатор из десятков существующих, и будешь писать биндинги один раз.Ага, так и знал. Аргумент из серии — вам не понравился этот сорт говна, у нас есть еще пара десятков сортов говна, попробуйте их. Это джава головного мозга.
Ну так в Java можно взять ...Ну так возьми! И продемонстрируй нам код, где “Name” упоминается один раз.
твои проповеди великого учения джавы уже подзаебали. Такие проповеди встречаются почти у каждого джависта среднего уровня, и я их слушаю уже несколько лет, скучно.Никаких проповедей, я, в отличие от поциентов Била Гейтса или Линуса Торвальдса, просто объективен и выбираю всегда самое лучшее. Например, я не спорю, что Java как язык хуже C#; но как платформа пока что намного лучше. Сравнения существующих в обоих технологиях коллекций уже вполне достаточно для грамотного разработчика, чтобы это понять.
Ага, так и знал. Аргумент из серии — вам не понравился этот сорт говна, у нас есть еще пара десятков сортов говна, попробуйте их.
Нет, это аргумент из серии: вы наконец-то выпустили велосипед? Так мы давно гоняем на феррари, ролс ройсах, бэнтли, мерседесах!
Это джава головного мозга.
Лучше уж Java головного мозга, чем Shurick головного мозга.
Ну так возьми! И продемонстрируй нам код, где “Name” упоминается один раз.
<form:input path="firstName" />
И пока ты не начал задавать тупые вопросы: это строго типизированная форма, здесь поддерживается валидация, рефакторинг, completion, можно
И пока ты не начал задавать тупые вопросы: это строго типизированная форма, здесь поддерживается валидация, рефакторинг,какой именно инструмент необходимо установить на компьютер, чтобы по требованию "выдай все использования данного поля"- выводилось, в том числе, использование из <form:input path="firstName"/> ?
какой именно инструмент необходимо установить на компьютер, чтобы по требованию "выдай все использования данного поля"- выводилось, в том числе, использование из <form:input path="firstName"/> ?Любая de facto стандартная IDE для разработки под Java: Eclipse или IntelliJ IDEA.
Никаких проповедей, я, в отличие от поциентов Била Гейтса или Линуса Торвальдса, просто объективен и выбираю всегда самое лучшее.А то. Они тоже не признаются в своих проповедях
Сравнения существующих в обоих технологиях коллекций уже вполне достаточно для грамотного разработчика, чтобы это понять.и этот аргумент я от джавистов слышал. И работал я с Java коллекциями. Мое мнение — дотнет коллекции очень даже неплохи. А по поводу твоего предложения у меня складывается мнение, что для тех, кто такое говорит, восхищение Java коллекциями является частью определения “грамотного” разработчика; а к реальной разработки эта “грамотность” отношения не имеет.
Ага, так и знал. Аргумент из серии — вам не понравился этот сорт говна, у нас есть еще пара десятков сортов говна, попробуйте их.Что-то ты уже в нескольких постах повторяешь мои фразы. Своих мыслей не имеешь?
Нет, это аргумент из серии: вы наконец-то выпустили велосипед? Так мы давно гоняем на феррари, ролс ройсах, бэнтли, мерседесах!
Это джава головного мозга.
Лучше уж Java головного мозга, чем Shurick головного мозга.
--------------------------------------------------------------------------------<form:input path="firstName" />--------------------------------------------------------------------------------
И пока ты не начал задавать тупые вопросы: это строго типизированная форма, здесь поддерживается валидация, рефакторинг, completion, можно грабить корованы встраивать код, и так далее по списку.
И где здесь язык Java? Опять XML-тегами отмазаться хотите? Прошлое десятилетие уже показало убогость XML-программирования.
Развитие .net-а в плане смешения текста и языковых конструкций для генерации текста — Razor — мне кажется более симпатичным. Хотя можно было сделать и еще лучше — вообще не завязываться на специфику web-а, а просто сделать синтаксический сахар a-la Razor для универсального генератора текстов T4. В Razor надо было сделать аналог t4 class feature, и не городить синтаксис для частных случаев.
всё равно ты кроме Microsoft-а ничего не признаёшь...
я работал на Java
Любая de facto стандартная IDE для разработки под Java: Eclipse или IntelliJ IDEA.т.е. я ее сейчас скачиваю, и она сразу из коробки это поддерживает?
т.е. я ее сейчас скачиваю, и она сразу из коробки это поддерживает?IntelliJ IDEA - да, а для Eclipse нужно скачать коробочный билд для Java (а не для Си++).
т.е. я ее сейчас скачиваю, и она сразу из коробки это поддерживает?IntelliJ IDEA вероятнее всего, да. Так же как ReSharper понимает стринговые константы для View и Controller в MVC. Это вполне ожидаемо.
а на мой пост ты молча поставил минус?
IntelliJ IDEA - да, а для Eclipse нужно скачать коробочный билд для Java (а не для Си++).а что надо сделать, чтобы для myform тоже поддерживалось?
и этот аргумент я от джавистов слышал. И работал я с Java коллекциями. Мое мнение — дотнет коллекции очень даже неплохи. А по поводу твоего предложения у меня складывается мнение, что для тех, кто такое говорит, восхищение Java коллекциями является частью определения “грамотного” разработчика; а к реальной разработки эта “грамотность” отношения не имеет.Заверни мне, пожалуйста, ConcurrentSkipListMap? А PriorityQueue? Или ты "грамотный" разработчик, которому никогда не требуются эти коллекции? Почему SortedDictionary не назвали TreeMap? Или "грамотному" разработчику слова Tree или Hash в названиях коллекций ни о чём не говорят? Почему ConcurrentStack.PushRange принимает массив, тогда как List.AddRange принимает IEnumerable? Или "грамотные" разработчики меняют интерфейсы с каждой новой коллекцией?
И где здесь язык Java? Опять XML-тегами отмазаться хотите? Прошлое десятилетие уже показало убогость XML-программирования.Там же, где в ASP.NET MVC формах язык C# (<P><B>Height:</B> <%= Model.Height %></P>).
Что на счёт встраивания, я же написал тебе: "пока ты не начал писать тупые вопросы ... можно встраивать код". Ты опять не прочитал мой пост до конца?
я работал на JavaСудя по твоим постам, ты работал с Java лет десять назад. Иначе я не могу понять, почему ты пишешь всякие глупости.
Итог:
1. Пока что в Java WEB есть всё, что и в ASP.NET MVC; и даже больше.
2. Начались тупые отмазки про формат представлений; но они не являются аргументом, тем более в свете того, как выглядит представление в ASP.NET MVC.
3. В Java всё было изобретено много лет назад, в Micsosoft выпустили велосипед.
а что надо сделать, чтобы для myform тоже поддерживалось?Для чего? Если ты про использования, то ничего делать не надо: все mature web frameworks для Java почти полностью поддерживаются в Eclipse; и ещё более полностью в IntelliJ IDEA. Вообще в споре рефакторинга продукты JetBrains решают; Visual Studio без ReSharper почти ничего не умеет.
а на мой пост ты молча поставил минус?Это не я, меня устраивает, что ты пока что не привёл никаких существенных аргументов в пользу ASP.NET MVC.
Там же, где в ASP.NET MVC формах язык C# (<P><B>Height:</B> <%= Model.Height %></P>).Здесь:
<P><B>Height:</B> </P>
чистый HTML
Model.Height
C#
<%= %>
ASP.
<form:input path="firstName"/>Здесь:
<HTML>.....</HTML>
Чистый HTML.
firstName
Java.
form:input
Spring.
><HTML>.....</HTML>
Такого вообще нет!
>firstName
обращение к приватному полю?
>form:input
сколько еще таких Spring-специфичных конструкций?
>path
Это вообще не описал.
Для чего? Если ты про использования, то ничего делать не надоя делаю свой класс myform, и хочу чтобы для него для поля mypath тоже поддерживалось, что переданная строка является expression, которые должен парситься и выдаваться в find references в idea.
что для этого надо сделать с полем mypath?
<form:input path="firstName" />это кстати где обрабатывается - в рантайме или при компиляции?
по идее, при компиляции. т.е. в рантайме поменять поле path нельзя? я правильно понял?
1. Пока что в Java WEB есть всё, что и в ASP.NET MVC; и даже больше.У тебя проблемы с аналитическим мышлением: "есть всё" совсем не означает, что оно всё хорошо работает вместе.
может уже хватит обезьяничать?Я не обезьянничаю, это ты пытаешься выкарабкаться из ситуации, в которой ты был не прав.
><HTML>.....</HTML>Есть, просто оно за тем, что я написал, неужели не очевидно? Тег <form:input> вставляется в HTML файл.
Такого вообще нет!
firstNameНет, да и какая разница, даже если бы это было и так?
обращение к приватному полю?
form:inputСколько угодно, можно даже свои делать. Не нравится Spring, можно взять другоооой Framework, в Java их больше, чем два.
сколько еще таких Spring-специфичных конструкций?
pathОчевидно, это и кавычки относилось к Spring.
Это вообще не описал.
Давай уже к делу, реальные замечания есть или ты признаешь, что в Java всё прекрасно поддерживается и работает?
я делаю свой класс myform, и хочу чтобы для него для поля mypath тоже поддерживалось, что переданная строка является expression, которые должен парситься и выдаваться в find references в idea.Кликнуть на него и нажать ALT+F7.
что для этого надо сделать с полем mypath?
это кстати где обрабатывается - в рантайме или при компиляции?Этот вопрос я не изучал.
по идее, при компиляции. т.е. в рантайме поменять поле path нельзя? я правильно понял?
Кликнуть на него и нажать ALT+F7.и что это сделает?
и что это сделает?Найдёт всё использования этого поля, опционально использования его getter и setter; а так же все привязки к этому полю, включая, но не ограничиваясь, *ORM, *WEB, XML и Javadoc.
А если нажать SHIFT+F6, то можно это поле переименовать во всех озвученных местах.
Этот вопрос я не изучал.как минимум есть первая проблема, что объект в среде разработки (при компиляции) и в рантайме выглядит по разному, что мешает введению вариабельности и обобщению по данному объекту и данному полю.
как минимум есть первая проблема, что объект в среде разработки (при компиляции) и в рантайме выглядит по разному, что мешает введению вариабельности и обобщению по данному объекту и данному полю.Можно на пальцах, что там не так и как это решено в ASP.NET MVC? А то опять льётся какая-то весьма пресная вода.
Найдёт всё использования этого поля, опционально использования его getter и setter; а так же все привязки к этому полю, включая, но не ограничиваясь *ORM, *WEB, XML и Javadoc.а теперь прочитай про что я спрашивал.
я спрашивал, если делаю свой класс myform, то как IDEA объяснить, что mypath - есть спец. поле, которое надо анализировать для выдачи find reference:
<form:myform mypath="firstName"/>
я спрашивал, если делаю свой класс myform, то как IDEA объяснить, что mypath - есть спец. поле, которое надо анализировать для выдачи find reference:Ей не надо этого объяснять, она всегда сама это знает.
Ей не надо этого объяснять, она всегда сама это знает.даже для моего класса?
это каким образом - телепатически что ли?
даже для моего класса?А в чём проблема-то? ReSharper в Visual Studio может делать то же самое для форм ASP.NET и MVC.
это каким образом - телепатически что ли?
Можно на пальцах, что там не так и как это решено в ASP.NET MVC? А то опять льётся какая-то весьма пресная вода.вариабельность - это что вместо одного выражения необходимо поддержать несколько
вместо
<form:input path="firstName"/>
необходимо поддержать, чтобы при одних условиях было firstName, а при других secondName
в asp.net mvc - введение такой вариабельности делается стандартыми методами целевого языка (C#)
<%= this.TextBox(x => condition ? x. FirstName: x.SecondName) %>
А в чём проблема-то? ReSharper в Visual Studio может делать то же самое для форм ASP.NET и MVC.проблема в том, что знание какие поля для каких классов необходимо специально разбирать:
1. захардкодено в инструмент
2. требует специальной разметки атрибутами
и соответственно знание о моем классе не может быть захардкодено в IDEA, и должно требовать, как минимум, разметки атрибутами.
<%= this.TextBox(x => condition ? x. FirstName: x.SecondName) %>можно вставить 5 копеек? Читабельность стремительно падает. Я уже молчу, как вот сие тсрашилище ты отдаш дизайнерам
по tld, поскольку твой класс без нее ничего тебе не даст.
в asp.net mvc - введение такой вариабельности делается стандартыми методами целевого языка (C#)В Java введение такой вариабельности делается стандартыми методами целевого языка (Java):
Кому в голову придёт писать логику во View, где её хрен протестируешь юнит тестом, я не знаю.
<form:input path="name"/>
public string getName {
return condition ? firstName : secondName;
}
проблема в том, что знание какие поля для каких классов необходимо специально разбирать:3. Может быть получено парсером исходников, в том числе *.html, *.jsp, *.xml, *.settings, *.*, *
можно вставить 5 копеек? Читабельность стремительно падает. Я уже молчу, как вот сие тсрашилище ты отдаш дизайнерамкакие есть более читабельные варианты?
какие есть более читабельные варианты?Отделить модель от View.
на мой скромный взгляд вменяемые темплейты, да хоть джанговские куда читабельней. Ах да, там конечно нет проверки в компайл-тайм и рефакторинга средствами иде.
3. Может быть получено парсером исходников, в том числе *.html, *.jsp, *.xml, *.settings, *.*, *очень сильно тупишь.
как idea поймет, что в моем классе myform поля name, value, key и и т.д. специально парсить не надо, а поле mypath парсить надо?
очень сильно тупишь.Очень сильно тупишь.
как idea поймет, что в моем классе myform поля name, value, key и и т.д. специально парсить не надо, а поле mypath парсить надо?
Она отпарсит *.* и поймёт это.
эй, ты читать умеешь?
Кому в голову придёт писать логику во View, где её хрен протестируешь юнит тестом, я не знаю.хорошо если это логика.
а что делать если это не логика?
что делать если дизайнер хочет вставить вариант?
или все дизайнеры (наверное, так в java-е) monkey и что такое варианты они не понимают?
как idea поймет, что в моем классе myform поля name, value, key и и т.д. специально парсить не надо, а поле mypath парсить надо?2: в свете того что Spring-специфичных теги можно дописывать, я присоединяюсь к вот этому -евскому вопросу.
Она отпарсит *.* и поймёт это.так сразу бы и написал, что "телепатически" ( что у тебя нет ни малейшего представления как именно это на пальцах происходит)
Она отпарсит *.* и поймёт это.поясни, плиз
что делать если дизайнер хочет вставить вариант?Если дизайнер у .NET разработчиков знает ASP.NET MVC, то дизайнер у Java разработчиков знает шаблонизатор, с которым он работает.
или все дизайнеры (наверное, так в java-е) monkey и что такое варианты они не понимают?
Но вообще нужно запрещать дизайнерам любые попытки кодирования, связанные с логикой сервера. В этом плане их обычно садят за шаблонизатор на XSLT.
эй, ты читать умеешь?с тобой я вообще не разговариваю. ты еще ни одного аргумента ни в одном обсуждении ни удосужился привести.
тем не менее я написал ответ на твой вопрос, который тут задают уже третий раз.
так сразу бы и написал, что "телепатически" ( что у тебя нет ни малейшего представления как именно это на пальцах происходит)Бля, у меня есть представление, как именно на пальцах это происходит, и я тебе об этом представлении говорю третий или четвёртый раз:
она отпарсит *.*, блядь, куда более на пальцах-то?
на мой скромный взгляд вменяемые темплейты, да хоть джанговские куда читабельней. Ах да, там конечно нет проверки в компайл-тайм и рефакторинга средствами иде.
и как там записывается вариабельность на уровне дизайна?
она отпарсит *.*,что такое "она отпарсит *.*"
я это читаю как - idea магическим образом распарсит файлы, которые попадают под маску *.*.
В этом плане их обычно садят за шаблонизатор на XSLT.с каких это пор - xslt стал читабельнее чем java или c#?
я это читаю как - idea магическим образом распарсит файлы, которые попадают под маску *.*.Если парсер для тебя - это магия, то да, я не знаю, как ещё тебе что-то объяснить... Берём парсер jsp, парсим jsp, видим там биндинги и типы данных, связываем эту информацию с отпарсенными *.java файлами.
тем не менее я написал ответ на твой вопрос, который тут задают уже третий раз.это было между словами "'эй" и "ты" во фразе?
эй, ты читать умеешь?
она отпарсит *.*, блядь, куда более на пальцах-то?возьмем код
<myform:input path="name" cssclass="name"/>
почему здесь первое "name" надо парсить как свойство модели, а второе как css класс?
ты пытаешься выкарабкаться из ситуации, в которой ты был не прав.пока я в упор не вижу свою неправоту. Мое первоначальное утверждение — в Java в язык не встроена возможность делать ссылки на свойства. Там где это требуется в Java используются внешние неуклюжие решения.
Берём парсер jsp, парсим jsp, видим там биндинги и типы данных, связываем эту информацию с отпарсенными *.java файлами.давай сначала
вот есть запись
<form:myform mypath="firstName" value="firstName"/>
myform - это мой тег, соответственно mypath - это есть выражение которое надо парсить, а value - это значение, которое не надо парсить.
где и как это различие записывается?
нет, это было в предыдущем моем сообщении в этом треде, которое ты до сих пор не удосужился прочитать.
пока я в упор не вижу свою неправоту. Мое первоначальное утверждение — в Java в язык не встроена возможность делать ссылки на свойства. Там где это требуется в Java используются внешние неуклюжие решения.Твоё первоначальное утверждение написано в первом посте. В частности, ты написал:
да ни кого не волнует когда первый раз эти дурацкие три буквы были произнесены.В процессе обсуждения мы уже давно пришли к выводу, что в Java есть полноценный аналог того, что называется strongly typed view. В этом ты был не прав.
А вот strongly typed view такого в Java нет и не будет по причине замшелости мышления джавистов.
тред разрастается, если ты дашь ссылку тот пост, это будет не лишним
что в Java есть полноценный аналог того, что называется strongly typed viewполноценного аналога нет
myform - это мой тег, соответственно mypath - это есть выражение которое надо парсить, а value - это значение, которое не надо парсить.Тебе ответили, что для тегов есть, например, TLD. Ещё есть DTD и XSD. Вероятно, эти схемы используются в соответствующих парсерах для анализа.
где и как это различие записывается?
полноценного аналога нетПока что ты не привёл реальных аргументов в пользу этого утверждения.
TLDпро это и писал как про "разметку атрибутами", это я и называю неуклюжим решением.
про это и писал как про "разметку атрибутами", это я и называю неуклюжим решением.Не вижу смысла в этом посте. Побольше деталей, как ты связал TLD с разметкой атрибутами?
Пока что ты не привёл реальных аргументов в пользу этого утверждения.Пока что ты не привел доказательства полноценности аналога в Java.
нет, это было в предыдущем моем сообщении в этом треде, которое ты до сих пор не удосужился прочитать.сорри, пропустил.
tld - это и есть аттрибуты, только опять же записанные на еще одном языке.
т.е. уже получается предлагается знать синтаксис и семантику следующих языков:
теги спринга
шаблонизатор jsp
tld
xslt
java
xml/html
зы
asp.net mvc накладывает необходимость знать лишь:
c#
xhtml
шаблонизатор asp.net
Побольше деталей, как ты связал TLD с разметкой атрибутами?для меня TLD это просто три буквы (я даже не гуглил еще но факт в том, что требуется некоторое дополнительное описание связей. А при наличии в языке "ссылок на свойства" такое описание не требуется.
т.е. уже получается предлагается знать синтаксис и семантику следующих языков:Можно смело исключить XSLT, TLD, XML. Достаточно HTML, TAGS и Java.
теги спринга
шаблонизатор jsp
tld
xslt
java
xml/html
Займуська я тем же чем и ты.Утверждение изначально принадлежало тебе. Ты не смог привести аргументов в его пользу. Слив засчитан.
Пока,что ты не привел доказательста полноценности аналога в Java.
Достаточно HTML, TAGS и Java.мы только что выяснили, что как только требуется расширить tags, то требуется tld
и я еще раз напомню, что только для monkey не требуется расширений
Слив засчитан.уже который раз ты засчитываешь мне слив , не верю
для меня TLD это просто три буквы (я даже не гуглил еще но факт в том, что требуется некоторое дополнительное описание связей. А при наличии в языке "ссылок на свойства" такое описание не требуется.TLD никак не связаны со ссылками на свойства. Вообще никак. Теги - это аналог TextBoxFor.
мы только что выяснили, что как только требуется расширить tags, то требуется tldДля чего тебе требуется расширить tags? Ты в ASP.NET MVC постоянно пишешь расширения а-ля TextBoxFor? Это лишь свидетельствует о бедности набора элементов в ASP.
и я еще раз напомню, что только для monkey не требуется расширений
Утверждение изначально принадлежало тебе. Ты не смог привести аргументов в его пользу. Слив засчитан.утверждение про равноценность аналога в Java-е твое. Ты не смог привести его доказателства. Слив засчитан.
лишьты видишь лишь то, что тебе хочется видеть. Тебе явно указали на недостаток Java решения.
Для чего тебе требуется расширить tags? Ты в ASP.NET MVC постоянно пишешь расширения а-ля TextBoxFor? Это лишь свидетельствует о бедности набора элементов в ASP.это лишь означает, что хороший разработчик легко может ввести новые элементы, которые лучше подходят для текущей задачи.
а monkey не могут.
например, намного удобнее дизайн размечать тегами прикладной задачи, а не тегами jsp/asp.
если мы делаем форум, то для описания дизайна удобны теги: thread, post, user и т.д.
утверждение про равноценность аналога в Java-е твое. Ты не смог привести его доказателства. Слив засчитан.Я считаю, что привёл все аргументы в данном топике, и это может оценить любой читатель. В свою очередь ты, не разобравшись в теме и не читая посты собеседников, написал кучу необоснованных утверждений. Часть из них, прямо скажем, глупая и выставляет тебя и твои знания на посмешище.
Так что писька-то у тебя не доросла засчитывать кому-то сливы...
TLD никак не связаны со ссылками на свойства. Вообще никак. Теги - это аналог TextBoxFor.а мне казалось, что хороший разработчик должен уметь обобщать...
не смогла посмотреть сигнатуру метода
это лишь означает, что хороший разработчик легко может ввести новые элементы, которые лучше подходят для текущей задачи.Ключевое слово: элементы. Ты путаешь теги и helper-ы в ASP.NET MVC, ну или мы оба путаем, потому что я раньше не знал, что такое helper-ы.
а monkey не могут.
если мы делаем форум, то для описания дизайна удобны теги: thread, post, user и т.д.Не надо путать теги и шаблоны.
твоя писька не смогла посмотреть сигнатуру методаОна рассчитывала на грамотное спокойное обсуждение с умными людьми. И, видимо, сильно просчиталась.
Теги - это аналог TextBoxFor.Я не прав, это не аналог.
Ключевое слово: элементы. Ты путаешь теги и helper-ы в ASP.NET MVC, ну или мы оба путаем, потому что я раньше не знал, что это такое.не надо вводить сущности сверх необходимости и различать то, что есть одно и то же.
Не надо путать теги и шаблоны.
в программировании для описания информации есть всего 6 понятий:
элемент
свойства
вариабельность
обобщение
конкретизация
все остальное - это комбинация этих понятий под разными именами в разных контекстах.
с умными людьми.вот вот, я тоже. Но ты к этому множеству не относишься, поскольку
1. писал, что изучил технологию,
2. с учетом пункта 1 не догадался посмотреть сигнатуру метода.
в программировании для описания информации есть всего 6 понятий:Но ты описываешь именно шаблоны, а не информацию.
Давай на пальцах, для простых смертных. В JSP я могу вставить полный аналог ASP.NET MVC Helper-ов, из вот этого туториала:
C#:
<%= LabelHelper.Label("lastName", "Last Name:") %>
Java:
<%= Label(user.getLastName "Last Name:") %>
Теги - это способ расширения шаблонизатора. Helper - это не способ расширения шаблонизатора, это просто код на C#, я точно такой же могу писать в JSP на Java.
писал, что изучил технологию,Надо было внимательнее читать: я писал, что погуглил; что отгуглилось; и признавался в том, что многого не знаю, задавая тебе вопросы, в ответ на которые ты почему-то кричал, что я нихуя не понил и не имел дела с ASP.NET MVC.
Надо было внимательнее читать
Нет, я это понял после того, как изучил "новый" фреймвок от Microsoft. Мне же не застилает глаза сияние нимба Била Гейтса.
Но ты описываешь именно шаблоны, а не информацию.с каких это пор шаблон перестал быть информацией?
зы
шаблон - это описание преобразование из одного набора элементов в другой набор элементов, где сам шаблон состоит из элементов.
примечание: набор элементов также принято называть языком
нагляднее всего это как раз показано в xslt, там все три набора элементов являются одним языком xml
ззы
если брать asp.net - то там элементы шаблонизатора являются обычными .net-классами
в jsp получается, что это какая-то еще доп. сущность - называемая тегами. нахера надо было вводить еще одну доп. сущность - никто не знает.
> Давай на пальцах, для простых смертных. В JSP я могу вставить полный аналог ASP.NET MVC Helper-ов, из вот этого туториала:
но ты взял туториал не по strong typed view, а какой-то другой.
Надо было внимательнее читатьМогу лишь посоветовать внимательнее читать, если не разбёрешься, то завтра всё тебе объясню.
в jsp получается, что это какая-то еще доп. сущность - называемая тегами. нахера надо было вводить еще одну доп. сущность - никто не знает.
Боже, и ведь мы всё ещё обсуждаем только одну технологию... Давай считать, что теги - это и есть элементы. И хэлперы, которые я могу писать на Java так же, как на C# - тоже элементы.
но ты взял туториал не по strong typed view, а какой-то другой.Думаю, что это не так уж и важно, особенно в твоём примере. Ведь все имеющиеся в HTML input-ы уже имеют свои элементы (теги). Мне просто интересно, что именно ты бы написал в коде strongly typed helper-а для thread, post, user и т.д.? Здесь тебе необходимо только считывать информацию из модели, а обратный процесс не нужен. А там, где он нужен, ты тоже не будешь городить код на C#, а будешь использовать готовые элементы (теги) для HTML input-ов.
На самом деле, когда разрабатываешь под JSP, есть столько шаблонизаторов и библиотек тегов, что писать свои или код - это какое-то кощунство.
Могу лишь посоветовать внимательнее читать, если не разбёрешься, то завтра всё тебе объясню.тебя уже носом тыкнули в твое сообщение, а ты всё равно споришь. Да, такому ничего не докажешь.
тебя уже носом тыкнули в твое сообщение, а ты всё равно споришь. Да, такому ничего не докажешь.Тебя уже попросили читать тему внимательнее, а ты всё равно мне что-то втираешь. Завтра я напишу тебе смысл отцитированного тобой поста, если до тебя вдруг не дойдёт сегодня вечером.
Тебя уже попросили читать тему внимательнее, а ты всё равно мне что-то втираешь. Завтра я напишу тебе смысл отцитированного тобой поста, если до тебя вдруг не дойдёт сегодня вечером.какой, нафиг, смысл там совпадение побуквенное! Как с таким человеком, обсуждать сколько-нибудь сложные темы .
какой, нафиг, смысл там совпадение побуквенное! Как с таким человеком, обсуждать сколько-нибудь сложные темы.Где совпадение побуквенное и с чем? Ты читаешь одно предложение из одного моего поста, грубо вырвал его из контекста и интерпретировал его как получилось. А получилось у тебя почему-то так, как будто я выучил ASP.NET MVC. Ещё раз: если до завтра до тебя не дойдёт смысл этого предложения, то я объясню; а пока что попридержи свои обидки, удивления и возмущения при себе.
Здесь тебе необходимо только считывать информацию из модели, а обратный процесс не нужен.это не нужно, пока интерфейс не rich (без ajax-а)
это не нужно, пока интерфейс не rich (без ajax-а)Я всегда думал, что для AJAX-а это тоже не особо нужно. Впрочем, это уже отдельная тема для обсуждения, я пока что без понятия, как AJAX работает в ASP.NET MVC. (Кстати, мне реально не ясно, почему нельзя сделать удобные Post, User, Thread без кодирования Helper-ов.)
Итак, останавливаясь на strongly typed view, я так понимаю, что флейм окончен. Судя по тому, что я понял, в Java уже много лет есть практически полный технологический аналог (при чём не один, хотя мы обсудили пока что только две технологии). По крайней мере с точностью до флейма про то, кому что удобно; где надо что-то написать один раз, а где два; и другие несущественные мелочи.
где надо что-то написать один раз, а где дваа ну о чем разговор, если для тебя это мелочи. Только вот после таких заявлений я начинаю сомневаться, что из твоей кучи стартопов хоть что-то дошло до реального использования.
а ну о чем разговор, если для тебя это мелочи, только вот после таких заявлений я начинаю сомневаться, что из твоей кучи стартопов хоть что-то взлетело.Да мне, мягко говоря, похуй на то, в чём ты там сомневаешься. Ты, как полный лох, опозорил себя в созданной тобою же теме, а теперь пытаешься толсто потроллить для самоудовлетворения. Скучно.
ты зря, это очень чистый и концентрированный пример того, как может действовать на девелопера пропаганда от МС.
это вовсе не тролинг. Я реально дал тебе авансом оценку крутого девелопера, но после заявленя " .. написать один два раза ... это мелочи", я при всё желании не могу сохранить такую оценку за тобой. Это заявление говорит отом, что ты не "чувствуешь" код, и, соответственно, не крутой девелопер .
ты зря, это очень чистый и концентрированный пример того, как может действовать на девелопера пропаганда от МС.слушай, , ты вот часто про про поганду в том и в этом говоришь, осуждаешь, ну там в христианстве, здесь вот МС. А сам ты насквозь пропитан идеалогией, только другой. Способность к критическому анализу ты практически не демонструруешь.
А я реально с удовеольствием бы сменил дотнет на что-то другое.....
это вовсе не тролинг. Я реально дал тебе авансом оценку крутого девелопера, но после заявленя " .. написать один два раза ... это мелочи", я при всё желании не могу сохранить такую оценку за тобой. Это заявление говорит отом, что ты не "чувствуешь" код, и, соответственно, не крутой девелопер .Знаешь, когда-то я со своим соседом по комнате не поделил еду. Мне казалось, что я трачу на неё больше денег, а ему казалось, что всё в порядке. После того, как мы с ним поругались, он громогласно заявил, что снимает свою защиту от пАцАноВ нашего этажа с меня, как с члена этой комнаты. И знаешь что? Мне было похуй!1 А пацанам с нашего этажа?.. Как выяснилось, им тоже было похуй!1
ага, набор побасенок у тебя широкий (кстати последняя мне не понравилась типичный технологических лох
ага, набор побасенок у тебя широкий (кстати последняя мне не понравилась типичный технологических лохПри написании последних постов ты так волнуешься, что делаешь по несколько ошибок в каждом. Расслабься, ты глупо слился в споре на тему, о которой ничего не знал, такое со всеми случается. Вовсе не повод плакать.
При написании последних постов ты так волнуешься, что делаешь по несколько ошибок в каждом. Расслабься, ты глупо слился в споре на тему, о которой ничего не знал, такое со всеми случается. Вовсе не повод плакать.Ой, , большое спасибо ты меня успокоил.
P.S. Всё на сегодня заканчиваю. Завтра буду занят, не смогу продолжать.
Ой, , большое спасибо ты меня успокоил.Всегда пожалуйста.
Завтра буду занят, не смогу продолжать.
Да ты в этой теме самый бесполезный, так что мы переживём.
Я просто не вижу положительной динамики уже несколько лет в .нете. А вот крики про то, что вот мы тут сделали кой чо новое, вот сейчас магически наступит счастие - все те же самые, начиная года этак с 2004. Тока буквы в названиях меняются. Счастие правда никак не наступает, только код усложняется.
При этом в соседних платформах те или иные технологии действительно давно предствалены различными либами - т.е. выбор есть, можно выбрать под себя и под задачу.
Мне просто интересно, что именно ты бы написал в коде strongly typed helper-а для thread, post, user и т.д.?на asp.net mvc st я бы написал так:
<table>
<tr>
<td rowspan='2'>
<view:user user=<%=post=>post.user%>/>
</td>
<td>
<view:is-watch-icon is-watch=<%=post=>post.is-watch%> />
<view:text value=<%post=>post.title%> />
<view:post-ref post=<%post=>post.parent%> />
</td>
<td>
<view:datetime value=<%post=>post.created-time%> />
</td>
<td>
<view:actions item=<%post%> />
</td>
</tr>
<tr>
<td colspan='3'>
<view:rich-text post=<%post=>post.text%>/>
</td>
</tr>
</table>
можно также через helper, тогда нужный view будет выбираться автоматически, в зависимости, от типа
<table>
<tr>
<td rowspan='2'>
<view:user user=<%=post=>post.user%>/>
</td>
<td>
<view:is-watch-icon is-watch=<%=post=>post.is-watch%> />
<%=Html.value(post=>post.title)%>
<view:post-ref post=<%post=>post.parent%> />
</td>
<td>
<%=Html.value(post=>post.created-time)%>
</td>
<td>
<view:actions item=<%post%> />
</td>
</tr>
<tr>
<td colspan='3'>
<%=Html.value(post=>post.text)%>
</td>
</tr>
</table>
можно также через helperДа нет, мы же говорили, что тебе нужен кастомный элемент. Это же не view, которые ты просто включаешь в страницу. Фактически, в твоём примере я не вижу необходимости делать кастомные элементы: ты везде использовал готовые.
Фактически, в твоём примере я не вижу необходимости делать кастомные элементы: ты везде использовал готовые.т.е. элементы view:user, view:post-ref, view:is-watch-icon, view:rich-text(со всеми наворотами) - уже встроены в spring?
Я просто не вижу положительной динамики уже несколько лет в .нете.какие критерии используются?
<view:dockpanel>
<view:user user=<%=post=>post.user%> dock='left'/>
<%=Html.value(post=>post.text) dock='bottom' %>
<view:actions item=<%post%> dock='right'/>
<%=Html.value(post=>post.created-time) dock='right'%>
<view:panel>
<view:is-watch-icon is-watch=<%=post=>post.is-watch%> />
<%=Html.value(post=>post.title)%>
<view:post-ref post=<%post=>post.parent%> />
</view:panel>
</view:dockpanel>
т.е. элементы view:user, view:post-ref, view:is-watch-icon, view:rich-text(со всеми наворотами) - уже встроены в spring?Ты же сам пишешь эти view, создаёшь отдельный файл, где описываешь размещение внутренних элементов; а дальше просто включаешь один в другой. (Я как раз и назвал это шаблоном.) В JSP есть элементы (теги) для включения готовых layouts, только я не видел, чтобы это делалось через названия элементов. Обычно это выглядит как-то так: <layout-render name="post.jsp"> или <jsp:include page="thread.html" />
можно переписать кстати лучшеДа, так выглядит достаточно красиво. Что касается "<view:dockpanel>" и подобного, в JSP сотни готовых библиотек тегов, вон чего отгуглил (впервые вижу такое в виде тегов): http://sweetdev-ria.ideotechnologies.com/sweetdev-ria-gettingStarted-3.5.1/layout.jsp?url=%2Ftabbox%2Ftabbox_simple.jsp
Ты же сам пишешь эти viewя уже запутался.
есть еще одна сущность?
я уже запутался.В смысле? Как ты получаешь тег <view:user>? Пишешь отдельный layout (strongly typed view где на HTML и ASP.NET MVC делаешь представление модели пользователя, называешь его user и у тебя появляется <view:user>? Или ты этот тег можешь написать только в коде на C#?!
есть еще одна сущность?
<ria:tab id="tab1" label="First Tab" removable="false" selected="true"></ria:tab>
т.е. как константы в общем случае заменяются на переменные/код?
Пишешь отдельный layout (strongly typed view где на HTML и ASP.NET MVC делаешь представление модели пользователя, называешь его user и у тебя появляется <view:user>? Или ты этот тег можешь написать только в коде на C#?!есть несколько вариантов, но общий вариант выглядит следующим образом:
добавляется новый класс, часть которого (шаблон представления) описывается в виде asp.net-шаблона.
т.е. как константы в общем случае заменяются на переменные/код?Общего случая нет. Это может быть код внутри: label="<% localization.getLabel(Tabs.DETAILS) %>"; может быть язык выражений, например label="${localization.getLabel(Tabs.DETAILS)}"; может быть биндинг label="Localization.DETAILS"; ещё это может быть язык какого-то шаблонизатора....
Неудачные предложенные библиотеки от нашего флагмана - яркий пример говновцф.
Если сравнивать с явой, то явление объясняю для себя меньшим комьюнити программистов
что именно не хватает? по сравнению с java
Т.к. это порты, то наскоко я понял, они отстают от оригиналов в развитии.
Если брать веб - то страшно неудобные веб-формы были закрыты шаблонизатором StringTemplate.
Чем неудобны вебформы - громоздким синтаксисом и сближением модели с представлением. Громоздким описанием контролов и сложностью модификации существующих.
Еще больное место .нета - это отсутствие вменяемого аппликейшн сервера(надо пояснять, почему ИИС не считается таковым или почему он неудобен впринципе?).
Т.е. лично мое нынешнее резюме по .нету такое - меньше юзаем "новые технологии" от мс, больше юзаем сторонних проверенных либ - получаем меньше проблем. И плюс всю красоту шарпа, как языка
Да ты в этой теме самый бесполезный, так что мы переживём.а ничего, что я автор треда, и что вторая волна обсуждений начиная 10 января тоже начинается с меня?
P.S. да, я вернулся на ночь еще пофлудить
Да ты в этой теме самый бесполезный, так что мы переживём.
да, и именно с моей помощью папа с большой пиписькой потихоньку познает основы языка C# — . В явном виде демонстрируешь отсутствие элементарных комуникационных навыков, а точнее ведешь себя как неблагодарная свинья.
это на любителя.
linq(причем в минимальном объеме) мне нравится больше.
> спринг
говорят, что StructureMap удобнее
http://elegantcode.com/2009/01/07/ioc-libraries-compared/
> Еще больное место .нета - это отсутствие вменяемого аппликейшн сервера(надо пояснять, почему ИИС не считается таковым или почему он неудобен впринципе?).
для enterprise-а iis подходит
согласен что для локальных приложений app server-а не хватает
> вебформы
вебформы(шаблонизаторы) мне все не нравятся.
согласен что для локальных приложений app server-а не хватаета что это такое? app сервер для локальных приложений?
> хибернейт+1
это на любителя.
Если брать веб - то страшно неудобные веб-формы были закрыты шаблонизатором StringTemplate.Razor вроде симпатичнее (толком еще не использовал).
а что это такое? app сервер для локальных приложений?это когда нужен service(demon но этим не хочется заморачивать пользователя.
если использовать iis как app server, то требуется чтобы пользователь его поставил, настроил и т.д.
это когда нужен service(demon)что service-ного требуется?
но этим не хочется заморачивать пользователя.
это означает отсутствие какой-либо установки?
linq(причем в минимальном объеме) мне нравится больше.дело все в том, что линк появился не так давно. Т.е. приложения, работающие с данным нужно было разрабатывать куда как раньше его появления, ведь правда? А значит вменяемая либа нужна была очень давно. Хибернейт при всех недостатках - вменяемая. Тут проявляется еще один подход МС: "все срочно переписывайте код на совершенно новую либу!" И где же тут поддержка существующих больших приложений? Да ведь и к линку есть вопросы. Сразу ли линк мапился на оракл, к примеру?
для enterprise-а iis подходит
В корне не согласен. ИИС убог и сложен в администрировании - но это лирика. Предположим скинули сию неприятную работу на админа(мы же в энтерпрайзе!) Теперь вспоминаем, какая ось(семейство) обычно стоит на серверах компаний. Есть ли там ИИС вообще? Умеет ли иис, если уж мы его как то куда то поставили интегрироваться хотя бы с таким ентерпрайз решением как JMS?(не обсуждаем, хорошее это решение или плохое, оно действительно является ентерпрайз де-факто по распространению).
Спасти может только одно - когда компания целиком и полностью сидит на игле МС. Но это далеко не всегда так в ентерпрайзе.
Локально как раз можно придумать не самые сложные костыли чтобы решить проблему.
вебформы(шаблонизаторы) мне все не нравятся.Я бы поставил вопрос так - не ищем лучшее решение, ищем вменяемое(лучшее из худших). Так вот, среди шаблонизаторов его можно найти - есть выбор опять же. Веб-формы же безальтернативный фейл в своем роде(ну или опять же переходим к уже озвученному - выкидываем чудесную технологию от МС...)
тут уже подходим к чудесной реализации понятия "демона" в венде... Отдельный такой холивар, это я спецом не затрагивал. Что опять же приведет нас к интересным вопросам...
так замечательно, подставь туда свой любимый маппер. И посмотрим, какова его будет распространенность в коммьюнити(а значит и наличие в нем граблей + возможность получение консультации по их обходу)
тут уже подходим к чудесной реализации понятия "демона" в венде... Отдельный такой холивар, это я спецом не затрагивал. Что опять же приведет нас к интересным вопросам...а здесь что не так?
можно ли установить сервис в систему без админских прав?
Т.е. приложения, работающие с данным нужно было разрабатывать куда как раньше его появления, ведь правда?это не бьется с предыдущим утверждением
Я просто не вижу положительной динамики уже несколько лет в .нете.> В корне не согласен. ИИС убог и сложен в администрировании - но это лирика.
это про какой iis, версии 5.0?
> Умеет ли иис, если уж мы его как то куда то поставили интегрироваться хотя бы с таким ентерпрайз решением как JMS?
зачем iis интегрироваться с jms? почему недостаточно либы внутри iis интегрированной с jms?
так замечательно, подставь туда свой любимый маппер.у нас свой
И посмотрим, какова его будет распространенность в коммьюнити(а значит и наличие в нем граблей + возможность получение консультации по их обходу)
а грабли мы не обходим , мы их фиксим один раз и всё
это про какой iis, версии 5.0?
6.0 не сильно далеко ушел от него в смысле настройки.
зачем iis интегрироваться с jms? почему недостаточно либы внутри iis интегрированной с jms?буду благодарен, если укажешь на такую. Чтобы по приходу месаджа поднимался а-ля реквест. Т.е. понятно, что мб я херово искал, а у тебя искать за меня время нету, но вот только если уж говоришь об энтерпрайзе, то мб стоит включить уже энтерпрайзные решения в коробку?
о, круто. Это ж то, о чем я и толкую - выкидываем чудные "новые технологии" от МС, берем самый минимум и делаем все свое. Все будет отлично. Но появятся другие проблемы.
а что это такое? app сервер для локальных приложений?так что же такое локальный app server, если это не windows service?
это когда нужен service(demon но этим не хочется заморачивать пользователя.
выкидываем чудные "новые технологии" от МСа какие это в данном контексте? LINQtoSQL МС сама закрыла, EF это убожество было видно сразу.
Я просто не вижу положительной динамики уже несколько лет в .нете. А вот крики про то, что вот мы тут сделали кой чо новое, вот сейчас магически наступит счастие - все те же самые, начиная года этак с 2004.сам лично на эти нововведения ставил хуки на свн
Но появятся другие проблемы.для девелопера? или для кого?
7.0 наше всё уже 3 года
> буду благодарен, если укажешь на такую. Чтобы по приходу месаджа поднимался а-ля реквест.
это делается через was, есть в windows 2008 и vista-е
можно ли установить сервис в систему без админских прав?вроде poweruser-а достаточно
так что же такое локальный app server, если это не windows service?от app сервера хочется:
1. замену кода без перезапуска
2. скачивание и обновление версии
3. поднятие внутри одного процесса нескольких служб
может еще
4. общая шина сообщений
и т.д.
1. В Java есть возможность типизировано работать с моделью во View. И это круто ! Я этого не знал (но и не утверждал, что изучал эту тему). и за эту инфу большое спасибо .
2. Вопрос равноценности решений в Java и .Net тоже хочется откомментировать, но пока не могу найти времени на это. Да и не очень это интересно.
3. Поведение и длинну письки -а тоже надо бы откомментировать, но не буду по тем же причинам.
3. Поведение и длинну письки -а тоже надо бы откомментировать, но не буду по тем же причинам.я как стороний наблюдатель больше склоняюсь к тому что Майк круче и баталию ты проиграл
я как стороний наблюдатель больше склоняюсь к тому что Майк круче и баталию ты проигралможешь выписать основные моменты почему ты так решил?
можешь выписать основные моменты почему ты так решил?я думаю основной момент, что Майк относится к таким программистам, для которых любая среда это средство, у него судя по постам есть большой опыт работы во многих средах и он может проаргументировать, почему именно вот это средство лучше другого.
как-то так. понятно объяснил?
как-то так. понятно объяснил?нет, не понятно. Пустая вода из общих слов. Под "выписать основные моменты" я имел ввиду ключивые моменты специфичные для данного треда.
постам есть большой опыт работы во многих средах
Тут есть обратная сторона медали — кто работал со многими средами часто имеет поверхностные знания, что Майк и продемонстрировал в данном треде, он не знал даже языка C#.
Тут есть обратная сторона медали — кто работал со многими средами часто имеет поверхностные знания, что Майк и продемонстрировал в данном треде,
он не знал даже языка C#.поверхностные знания языка не так страшны
поверхностные знания языка не так страшныну не скажи, качество знания отражается на качестве продукта/сервиса (я это наблюдаю на реальных примерах).
что Майк и продемонстрировал в данном треде, он не знал даже языка C#Ццц, очередной ошибочный вывод в попытке потешить своё ЧСВ.
что Майк и продемонстрировал в данном треде, он не знал даже языка C#Вот в этом посте ты не видишь linq.expression, а видишь лишь лямбду:
Ццц, очередной ошибочный вывод в попытке потешить своё ЧСВ.
Но вот чего я так и не понел, при чём тут LINQ Expressions. Как бы "x => x.SomeProperty" выглядит, скорее, как лямбда.
Несколькими постами ниже ты говоришь, что тебе надо было объяснить, что лямбды конвертятся в expression-ы:
Отсюда я делаю вывод, что ты не знал о конвертации лямбд в expression-ы. Где я ошибаюсь?
Вот в этом посте ты не видишь linq.expression, а видишь лишь лямбду:Именно так. Из-за того, что ты назвал лямбду LINQ Expression-ом, я подумал, что ты не знаешь C#; эта же мысль ввела меня в долгое заблуждение, когда я считал, что синтаксис в <% %> - это специальный язык шаблонизатора ASP.NET MVC; из-за чего в свою очередь я и не подумал искать какие-то функции в коде C#.
Отсюда я делаю вывод, что ты не знал о конвертации лямбд в expression-ы.Я знал, но даже если бы и не знал, то это ровным счётом ничего не значит. На любом языке можно вполне качественно программировать, не зная всех его изъёбов.
Где я не прав?Ты не прав везде, где наезжаешь на качество моих решений. Это может сделать только тот, кто работал со мной в одной команде.
<% %> - это специальный язык шаблонизатора ASP.NET MVCооо, так ты еще ASP.NET не знаешь? Это базовый синтаксис ASP.NET, который был еще в первой версии.
Я примерно так и представлял себе ситуацию — одно незнание (поверхностное знание) накладывается на другое, поэтому так долго и выясняли, что же ты не знаешь, и как тебе объяснить.
Тут вспоминаются слова моего учителя по математике: иллюзия знания гораздо хуже незнания. Люди, которые поверхностно познакомились с кучей технологий как раз часто имеют иллюзию знания. Иллюзия обычно образовывается по схеме — о, а это я уже видел в другой технологии и т.д..
ты сейчас выглядешь смешно
так ты еще ASP.NET не знаешь?Я никогда не знал ASP.NET, что значит ещё? Вообще C# до недавнего времени слабо подходил для WEB; да и подходит ли сейчас - это вопрос.
Я примерно так и представлял себе ситуацию — одно незнание (поверхностное знание) накладывается на другое, поэтому так долго и выясняли, что же ты не знаешь, и как тебе объяснить.
Нет, мы выясняли так долго, потому что ты не хотел этого объяснять. Каждый раз, когда я просил объяснить, ты писал, что я ничего не понимаю и должен гуглить. И я перед каждым вопросом честно усиленно гуглил.
Тут вспоминаются слова моего учителя по математике: иллюзия знания гораздо хуже незнания. Люди, которые поверхностно познакомились с кучей технологий как раз часто имеют иллюзию знания. Иллюзия обычно образовывается по схеме — о, а это я уже видел в другой технологии и т.д..То есть у тебя была иллюзия знания Java. Всё понятно.
я считал, что синтаксис в <% %> - это специальный язык шаблонизатора ASP.NET MVCкстати, вероятно, из-за невысокого качества твоих знаний ты не в состоянии оценить достоинства .Net-решения — типизированные View получаются просто из базового синтаксиса ASP.NET и обычного языка C#. В отличии от Java, где для решения потребовались TLD, подкрутка IDE, встраивание в процесс сборки дополнительного шага верификации source code-а вьюшек и т.д.
Я никогда не знал ASP.NETЕсли бы ты написал это, обсуждение было бы короче. Я просто не догадывался о том, что человек обсуждавший данную тему может не знать ASP.NET.
из-за невысокого качества твоих знаний ты не в состоянии оценить достоинства .Net-решенияУж не знаю, из-за качества ли знаний (а мне кажется из-за атеизма по отношению к святому символу четырёхцветного окна но да. Я не в состоянии оценить достоинства решения, которому меньше года, и которое является почти полным аналогом решений конкурентов, некоторым из которых более десяти лет.
Если б ты написал это, обсуждение было бы короче. Я просто не догадывался о том, что человек обсуждавший данную тему может не знать ASP.NET.Ты уже сам себе противоречишь. Если бы я знал ASP.NET, я бы опроверг твоё ошибочное мнение на порядок быстрее. И уж тем более не стал бы выяснять в десятках постов, что такое strongly typed view.
Вообще C# до недавнего времени слабо подходил для WEBа для чего он подходит?
Ты уже сам себе противоречишь. Если бы я знал ASP.NETздесь идет речь о базовом синтаксисе ASP.NET из первой версии <% %> (кажется, такое скриплетами называется). А в начале треда я писал о твоем незнании ASP.NET MVC.
я считал, что синтаксис в <% %> - это специальный язык шаблонизатора ASP.NET MVCЭтот синтаксис скриплетов в точности совпадает с JSP: JSP Expressions, JSP Scriptlets. JSP ты знаешь? Если да, то ход твоих мыслей выглядит еще более загадочным.
Этот синтаксис скриплетов в точности совпадает с JSP: JSP Expressions, JSP Scriptlets. JSP ты знаешь? Если да, то ход твоих мыслей выглядит еще более загадочным.Ход моих мыслей вполне понятен. Если учитывать, что TreeMap в Microsoft назвали SortedDictionary; а конструктор ReadonlyCollection<T> принимает IList<T>. Впрочем, ты можешь считать, что я не знаю ни C#, ни Java. От этого результат нашей дискуссии сильно не изменяется.
И я перед каждым вопросом честно усиленно гуглил.Гуглом ты, кажется, тоже не умеешь пользоваться. По второй ссылке по запросу asp.net mvc strongly typed view получаем маленькую статью, в которой всё хорошо описано. В частности, из этой статьи
Notice above how we do not need to specify the “ProductName” string parameter anymore – lambda expressions are flexible enough that we can retrieve both the name of the property/field on our model object in addition to its value.
(если знать основы C#-а) можно понять, что lambda expressions это экземпляры type-а из наймспейса linq.expression (так я и писал в начале треда).
Гуглом ты, кажется, тоже не умеешь пользоваться. По второй ссылке по запросу asp.net mvc strongly typed view получаем маленькую статью, в которой всё хорошо описано. В частности, из этой статьиСлушай, ты уже определись, чем я не умею пользоваться, и чего я не знаю, и давай на этом закроем тему. Ты всё равно не смог обосновать свой наезд на замшелую Java, поэтому теперь твои упрёки в мой адрес в этой теме выглядят как попытки удовлетворить своё ЧСВ. (С таким же успехом ты можешь начать отдельную тему, в которой будешь всем доказывать, что я не умею гуглить, не знаю основ C#, и так далее.)
(если знать основы C#-а) можно понять, что lambda expressions это экземпляры type-а из наймспейса linq.expression (так я и писал в начале треда).Лямбды - это лямбды, а в экземпляры LINQ Expressions они преобразуются компилятором. (На самом деле это большой тупняк в языке, но боюсь, что если я буду это доказывать, то начнётся ещё один длинный холи вар.) К основам C# это преобразование имеет такое же отношение, как package annotations к основам Java.
На самом деле это большой тупняк в языке, но боюсь, что если я буду это доказывать, то начнётся ещё один длинный холи варВ принципе, да, я согласен, что вот такое встраивание в язык expression tree была ошибкой разработчиков языка (не путать это с оценкой проекта LINQ в целом). Синтаксис языка следовало бы развивать для возможности реализации полноценного (динамического) ObjectQuery. У меня была попытка двигаться в этом направлении на C# 3.0, и были интересные результаты, но всё больше и больше чувствовалось, что без изменения синтаксиса языка хорошего законченного продукта не получишь.
Но LINQ expression-ы нам дали (пусть неоптимальный вариант) возможность писать “ссылки на свойства”. Такое время от времени требуется в самых разных местах, и я считаю, что ссылки на свойства/методы должны быть в языке.
“ссылки на свойства”.касательно темы треда, в дотнете решением является всего лишь одно из применений "ссылок на свойства", в Java для решения потребовалось: TLD, подкрутка IDE, встраивание в процесс сборки дополнительного шага верификации source code-а вьюшек и т.д.
касательно темы треда, в дотнете решением является всего лишь одно из применений "ссылок на свойства", в Java для решения потребовалось: TLD, подкрутка IDE, встраивание в процесс сборки дополнительного шага верификации source code-а вьюшек и т.д.Касательно темы треда, в .NET потребовалось: куча кода для анализа LINQ Expressions (и магия, которая привела к проблемам с валидацией подкрутка IDE, встраивание в процесс сборки дополнительного шага верификации source code-а вьюшек и т.д.
куча кода для анализа LINQ Expressionsоткуда такое заключение? смотрел сорцы? Алгоритм тривиальный же.
магия, которая привела к проблемам с валидациейТы про это? Если да, то это как раз проблема идеологии MVC, неспецифичная для конкретной технологии. Как эта проблема решена в Java? Предполагаю, что через введение viewmodel. Это и предлагается по той ссылке.
подкрутка IDEТакое не требуется. Это ты тупо тролишь.
встраивание в процесс сборки дополнительного шага верификации source code-а вьюшек и т.д.Такое не требуется. Это ты тупо тролишь.
Такое не требуется. Это ты тупо тролишь.
Как это не требуется? Либо это требуется в .NET точно так же, как в Java; либо вообще нигде не требуется.
в Java для решения потребовалось
Для какого решения? Для data binding ничего нового по сравнению с JSP не требуется, можно сделать свой без каких-либо проблем.
TLDТочно так же в .NET требуется какое-то описание формата ASP.NET шаблонизатора.
подкрутка IDEКак без подкрутки Visual Studio распарсила бы и определила то, что находится в файле strongly typed view?
встраивание в процесс сборки дополнительного шага верификации source code-а вьюшекТо есть в .NET файлы для шаблонизатора вообще никак не проверяются?
встраивание в процесс сборки дополнительного шага верификации source code-а вьюшекСоздал проект ASP.NET MVC2, отключил ReSharper, испортил View:
<div class="editor-field">
<%: Html.TextBoxFor(m => m.UserName2) %>
<%: Html.ValidationMessageFor(m => m.UserName) %>
</div>
Результат: никакого подкрашивания ошибки, никаких предупреждений при компиляции, при попадании на страницу View возникает ошибка:
Ошибка сервера в приложении '/'.
....
Строка 22: <div class="editor-field">
Строка 23: <%: Html.TextBoxFor(m => m.UserName2) %>
Строка 24: <%: Html.ValidationMessageFor(m => m.UserName) %>
Строка 25: </div>
тебе плюсы уже хотя бы за упорство в отстаивании
"Name" повторен два раза. У -я один раз:Я прошу прощения, но при создании ASP.NET MVC2 проекта генерируется вот такая модель:
public class LogOnModel
{
[Required]
[DisplayName("User name")]
public string UserName { get; set; }
[Required]
[DataType(DataType.Password)]
[DisplayName("Password")]
public string Password { get; set; }
[DisplayName("Remember me?")]
public bool RememberMe { get; set; }
}
Как ты мог плакаться о том, что в классическом JSP надо два имени, если в .NET требуется такой пиздец? Это при том, что среди этих атрибутов даже нет грамотной валидации.
И кроме того, "Remember me?" - эта строка отображается в представлении (на странице в браузере). Это, батенька, вообще полный и окончательный пиздец, потому что прочно смешивает Model и View, что для идеологии MVC недопустимо.
Для какого решения? Для data binding ничего нового по сравнению с JSP не требуется, можно сделать свой без каких-либо проблем.ты не забываешь условие статической валидации сорцов до рантайма?
TLDНасколько я понял тебя, для myform требуются некоторое TLD описание, и затем это описание скармливается IDE. В дотнет ничего такого не требуется, просто пишется чистый C# код для helper-а.
Точно так же в .NET требуется какое-то описание формата ASP.NET шаблонизатора.
TLDJSP Scriplet это часть? В ASP.NET MVC используется только JSP Scriplet. Если JSP Scriplet не входит в TLD, то ASP.NET MVC нет TLD.
Точно так же в .NET требуется какое-то описание формата ASP.NET шаблонизатора.
Как без подкрутки Visual Studio распарсила бы и определила то, что находится в файле strongly typed view?
Visual Studio-и требуется понимать только скриплеты <% %>, это она умела еще с Visual Studio 2003. В новых версиях Visual Studio потребовалось только поддержка новых версий языка C#.
То есть в .NET файлы для шаблонизатора вообще никак не проверяются?
Есть только преобразование файла с разметкой в C#-код, такое преобразование было еще в первой версии ASP.NET-а. Никаких других проверок не требуется.
вообще за DisplayName в атрибутах микрософтовских инженеров надо дубиной по башке без дальнейших разговоров
ты не забываешь условие статической валидации сорцов до рантайма?Visual Studio этого не делает.
Насколько я понял тебя, для myform требуются некоторое TLD описание, и затем это описание скармливается IDE. В дотнет ничего такого не требуется, просто пишется чистый C# код для helper-а.Нет, ты не понял. Мы с запутались. На самом деле речь шла о включении представлений одно в другое. TLD для этого не требуется.
Visual Studio-и требуется понимать только скриплеты <% %>, это она умела еще с Visual Studio 2003. В новых версиях Visual Studio потребовалось только поддержка новых версий языка C#.Не надо путать добавление дата биндинга (до сих пор не могу придти в себя от того, что Microsoft сделало это только в 2010 году) и полную поддержку шаблонизатора. Для добавления дата биндинга в Java вообще ничего нового не требуется.
Есть только преобразование файла с разметкой в C#-код, такое преобразование было еще в первой версии ASP.NET-а. Никаких других проверок не требуется.Ничем не отличается от Java.
Результат: никакого подкрашивания ошибки, никаких предупреждений при компиляции, при попадании на страницу View возникает ошибка:ну её маё, почитай уже основы ASP.NET. По умолчанию отключен режим полной компиляции сайта, обычно на билд сервере происходит полная компиляция сайта.
вообще за DisplayName в атрибутах микрософтовских инженеров надо дубиной по башке без дальнейших разговоровДа, только из-за этого должно быть стыдно упоминать о том, что ASP.NET MVC - это что-то новое. (Да, да, я уже молчу о том, что MVC изобрели много лет назад...)
JSP Scriplet это часть TLD?
JSP Scriplet это часть шаблонизатора?
А то пока твою терминологию не до конца понимаю.
ну её маё, почитай уже основы ASP.NET. По умолчанию отключен режим полной компиляции сайта, обычно на билд сервере происходит полная компиляция сайта.Вот здесь написано, как полностью скомпилировать ASP.NET сайт: http://mikehadlow.blogspot.com/2008/05/compiling-aspx-templates-using.html
Это custom build step, то есть допиливание IDE, соответственно Java ни чем не отличается.
JSP Scriplet это часть TLD?Часть шаблонизатора.
JSP Scriplet это часть шаблонизатора?
P.S. атрибуты, да, это полный писец
Это custom build step, то есть допиливание IDEмогу ошибаться, но скорее всего, сайт можно скмпилировать на машине, где установлен только .Net Framework без Visual Studio. Так что IDE тут ни причем.
сайт можно скмпилировать на машине, где установлен только .Net Framework без Visual StudioСайт можно скомпилировать на машине, где установлена только Java и все библиотеки соответствующего фреймворка, без IntelliJ IDEA.
Сайт можно скомпилировать на машине, где установлена только Java и все библиотеки соответствующего фреймворка, без IntelliJ IDEA.ты не отслеживаешь линии разговора. Поясню позже. Призываю к более конструктивному разговору.
ты не отслеживаешь линии разговора.Да? А мне-то показалось, что ты в очередной раз попытался на что-то наехать, и тебе это не удалось....
1. Для типизированного байндинга в Java потребовалось расширение шаблонизатора, в .Net шаблонизатор состоит только из JSP Scriplet (это в контексте asp mvc).
2. Теперь о myform. Получается, что мы расширяем набор элементов шаблонизатора. Тем самым вводим некоторую спецификацию для добавления элементов шаблонизатора. В частности, в этой спецификации указывается как помечать атрибуты, которые используются для байндинга (атрибут path в примере). В .Net такого не требуется, help-ы это просто C# код.
Для типизированного байндинга в Java потребовалось расширение шаблонизатораВ Java всё, что связано с JSP, является его расширением. Этих расширений - хоть жопой жуй, и это правильно и хорошо, потому что всё было более-менее правильно спроектировано. Заметь, мы до сих пор не обсуждали GWT, Wicket или другие фреймворки; то есть спор идёт в контексте технологии десятилетней давности против технологии прошлого года. И технология прошлого года пока что ничего особенного из себя не представляет: велосипед, в котором даже не учли проблемы конкурентов.
в .Net шаблонизатор состоит только из JSP Scriplet (это в контексте asp mvc).В .NET для биндинга кроме всего прочего используются какие-то дикие атрибуты, которые нарушают смысл MVC. Так что пока что речь о сравнении с JSP даже не идёт.
Получается, что мы расширяем набор элементов шаблонизатора. Тем самым вводим некоторую спецификацию для добавления элементов шаблонизатора. В частности, в этой спецификации указывается как помечать атрибуты, которые используются для байндинга (атрибут path в примере). В .Net такого не требуется.
Ты до сих пор не понял, да? Речь не о том, что требовалось, а чего не требовалось. Речь о том, где можно добавить любой биндинг без изменения кода основного SDK, а где нельзя. Сегодня для биндинга мне ничего не требуется писать, я возьму одно из многих десятков готовых решений и получу все плюшки. В то время как под .NET все вынуждены сидеть под одним ужасным решением, а другого просто нет.
1. Текст HTML и т.д.
2. Элементы шаблонизатора.
3. Элементы языка Java.
В .Net обходятся двумя типами расширений:
1. Текст HTML и т.д.
2. Элементы языка C#.
Шаблонизатор не расширяется.
Чем меньше сущностей, тем проще , как правило
Чем меньше сущностей, тем проще .У тебя в посте ошибка, ты должен был написать вот так:
То есть на .NET сайты пишутся с помощью сущностей трех видов:
1. Текст HTML и т.д.
2. Элементы шаблонизатора.
3. Элементы языка C#.
сайты пишутся с помощью сущностей трех видовсравни с моим:
сайты пишутся с помощью расширения сущностей трех видов
сравни с моим:Сравни с моим:
C#
В .NET для биндинга кроме всего прочего используются какие-то дикие атрибутыЭто опцианально. Можно без них.
не беспокойся это я прочитал, а вот ты выписал не мою фразу.
Речь о том, где можно добавить любой биндинг без изменения кода основного SDK, а где нельзя.Это предложение я не понял.
Сегодня для биндинга мне ничего не требуется писать, я возьму одно из многих десятков готовых решений и получу все плюшки.
да, когда механизм расширения сложен, приходится уповать на наличие готовых решений.
Это предложение я не понял.ASP.NET MVC пришлось встраивать в .NET Framework и компилятор ASP.NET
да, когда механизм расширения сложен, приходится уповать на наличие готовых решений.А когда механизма расширения нет, как в .NET, уповать не на что и приходится годами ждать подачки от Microsoft.
не беспокойся это я прочитал, а вот ты выписал не мою фразу.Я её и не выписывал. В любом случае я рад, что ты согласен с тем, что в .NET тоже три пункта.
ASP.NET MVC пришлось встраивать в .NET Framework и компилятор ASP.NETэээ тебя совсем понесло. До второй версии ASP.NET MVC разрабатывали вообще не Майкрософт. А в состав framework MVC вошел только в Framework 4.0 (апрель 2010).
Я её и не выписывал. В любом случае я рад, что ты согласен с тем, что в .NET тоже три пункта.думаешь, если ты напишешь фразу, она станет истиной? Не однократно замечал такое за тобой.
думаешь, если ты напишешь фразу, она станет истиной? Не однократно замечал такое за тобой.Нет, просто ты не стал возражать, что в C# три пункта, тебе не понравилась только формулировка заголовка.
Нет, просто ты не стал возражать, что в C# три пункта, тебе не понравилась только формулировка заголовка.Я не написал возрожение, и ты сделал вывод, что я согласился. Да, логика писец просто .
Я не написал возрожение, и ты сделал вывод, что я согласился. Да, логика писец просто .Можешь написать... возрожение [sic]. Если оно есть, потому что как-то не очевидно, откуда ты его ещё можешь высосать.
да уж попадаются же экземпляры, а я столько времени потратил на человека, у которого с элементарной логикой проблемы.
Можешь написать... возрожение [sic]. Если оно есть, потому что как-то не очевидно, откуда ты его ещё можешь высосать.всё уже написано в том посте, где пункты.
До второй версии ASP.NET MVC разрабатывали вообще не Майкрософт.Написано, что Microsoft, и что исходники выложили в 2009 году. Впрочем, неважно.
Заметь, твои аргументы в пользу WEB на .NET могли бы быть сильнее, если бы ты не мусолил всё время одно и то же. Например, ты бы мог упомянуть, что некоторые шаблонизаторы из Java портируют в .NET; мог бы упомянуть о том, что есть другие проекты для WEB под .NET; но зациклился только на том, где стоит клеймо от Microsoft. Ты всё крутишь вокруг дата биндинга и LINQ Expressions, но тебе пора давно понять, что в этом плане под .NET ничего принципиально нового не выпустили.
всё уже написано в том посте, где пункты.А я тебе ещё раз говорю, что ты тупой тролль. И в Java, и в .NET у тебя должно было получиться по три пункта, о чём я тебе и написал. С чего это вдруг в .NET не надо знать шаблонизатор? Это отдельная, третья сущность.
Вообще тот твой пост написан как-то невнятно и непонятно: то ли ты считаешь, что надо расширять шаблонизатор и HTML (?!); то ли тебе кажется, что шаблонизатор в .NET использовать не нужно...
не надо знать шаблонизатор?стопицотый раз, не перевирай мои фразы, у меня написано, что шаблонизатор не расширяется кастомными элементами.
ничего принципиально нового не выпустилиа как ты Razor оцениваешь?
стопицотый раз, не перевирай мои фразы, у меня написано, что шаблонизатор не расширяется кастомными элементами.Значит, на Java сайты тоже пишутся с помощью двух пунктов. Потому что все необходимые расширения для JSP уже давно придуманы и реализованы в десятках различных фреймворков. Я вообще не знаю людей, которым было бы это неоходимо. (И ещё раз повторю, чтобы ты не тупил, упоминавшийся выше myform - это включение одного представления в другое, а не расширение шаблонизатора.)
а как ты Razor оцениваешь?Поверхностно рассмотрев его - как очередной шаблонизатор. С тем же успехом я могу попросить тебя оценить любой из более чем 25 шаблонизаторов для Java.
С тем же успехомпоскольку я не собираюсь оценивать, следовательно, и ты не собираешься узнавать появилось ли в дотнете что-то новое для веба. А пишешь, что не появилось...
поскольку я не собираюсь оценивать, следовательно, и ты не собираешься узнавать появилось ли в дотнете что-то новое для веба. А пишешь, что не появилось...Учитывая дату выхода MVC и вялость проектов-клонов Java WEB фреймворков, моя позиция вполне себе обоснована.
Учитывая дату выхода MVCможет тебе в историки податься? тебя так увлекают даты.
может тебе в историки податься? тебя так увлекают даты.Понятно, у тебя кончилась аргументация. Что ж, такое со всеми случается.
Понятно, у тебя кончилась аргументация. Что ж, такое со всеми случается.Ой какой ты скучный ... но я продолжаю тебе писать ... Аргумент такой, дата выхода не говорит о том насколько хорош фрайворк.
Ой какой ты скучный ... но я продолжаю тебе писать ... Аргумент такой, дата выхода не говорит о том насколько хорош фрайворк.Смотря что вышло в эту дату: если что-то новое, то да, не говорит. Если технология десятилетней давности, то вполне себе говорит.
Если технология десятилетней давности, то вполне себе говорит.ты это о чем? то что MVC плох в принципе?
ты это о чемО том, что у кого-то это заняло слишком много времени.
да ебаный ты по голове, в стопицотый раз: о том, что мс взяла старую идею(кстати хорошую, несмотря на недостатки, которые бывают у любой идеи и тем более реализации натужилась включить ее в свой фрамеворк когда все кому не лень ее уже реализовали стопицот раз и пытаецо пропихнуть как нечто новое. Это и есть нечтоновое - среди ущербных поделок от мс конечно
О том, что у кого-то это заняло слишком много времени.много времени ушло на что?
На осознание того, что идеалогия Web Forms провальная. Да, абсолютно согласен, что это был долгий тупняк.
в том-то и дело что нет.
asp.net mvc - это внешнее решение по отношению:
a).net framework
b) asp.net
c) IDE (рефакторинг, интеллисенс, отладка и т.д.)
т.е. при создании asp.net mvc не делалось изменения во всем перечисленном.
asp.net mvc - это внешняя либа по отношению к .net framework, asp.net и IDE.
если же брать тоже самое в java-е, то при добавлении ссылок на данные пришлось подкрутить шаблонизатор и пришлось подкрутить IDE.
бонус такого подхода в том, что стоимость разработки самого asp.net mvc была очень низкой (а это и есть ключевой показатель мощности технологии)
такой же низкой будет стоимость расширения asp.net mvc в своих целях.
да ебаный ты по голове, в стопицотый раз: о том, что мс взяла старую идею(кстати хорошую, несмотря на недостатки, которые бывают у любой идеи и тем более реализации натужилась включить ее в свой фрамеворк когда все кому не лень ее уже реализовали стопицот раз и пытаецо пропихнуть как нечто новое. Это и есть нечтоновое - среди ущербных поделок от мс конечновас возмущает лишь то, что МС называет это "новым"? Мне лично насрать на то как MC это продвигает: новый, не новый. Меня больше волнует качество этого фрайворка (чтобы не вляпаться опять). А вот несказанно радует, что WebForms-ы наконец-то загнулись.
низкой будет стоимость расширения asp.net mvc в своих целях.я вот на это и надеюсь (с mvc только начинаем работать)
как бе - если "новая технология" - это то, что другие юзают уж много лет, это покащатель развития вообщет. И можно опосредованно судить, по количеству таких вот подобных случаев(можно еще припомнить ремоутиг, вцф вляпаешься ты опять или нет
я вот на это и надеюсь (с mvc только начинаем работать)собственно в этом треде моя личная цель и была обосновать легкость расширения mvc, перед тем как самому ввязывать в это.
как бе - если "новая технология" - это то, что другие юзают уж много лет, это покащатель развития вообщет.Спорно. Тут вроде все признают, что C# продвинутее языка Java. Как тут с развитием?
подход то вроде простой. Майкрософт большая контора, люди и команды в ней совершенно разного уровня. Кто-то делает хорошо, кто-то плохо. Но на всё ставят лейбл Майкрософта, ну что ж так сложилось... это уже к вопросу о глобальных процессах в экономике.
как бе - если "новая технология" - это то, что другие юзают уж много лет, это покащатель развития вообщет. И можно опосредованно судить, по количеству таких вот подобных случаев(можно еще припомнить ремоутиг, вцф вляпаешься ты опять или нетя вот перешел бы на Java (готов даже пережить период обучения и потерю в зп но как-то не вижу там особого счастья. Сам то вот на сишарпе остаешься.
если же брать тоже самое в java-е, то при добавлении ссылок на данные пришлось подкрутить шаблонизаторПри каком из добавлений? В Java десятки технологий для WEB, которые не зависят от JDK, а то и от всего остального.
Если говорить про JSP (ещё раз напоминаю, ей 10 лет, а она технически эквивалентна ASP.NET MVC то нет, шаблонизатор в этом смысле подкручивать не пришлось. Если в твоём понимании ASP.NET MVC - сторонняя по отношению к ASP.NET; то ты точно так же должен понимать, что Spring Tags - сторонняя по отношению к JSP.
и пришлось подкрутить IDEТы рассматриваешь ASP.NET MVC исключительно в свете дата биндинга? На самом деле ради него много чего подкрутили в IDE, по крайней мере из того, что очевидно при установке 10-ой студии или ReSharper-а.
стоимость разработки самого asp.net mvc была очень низкой (а это и есть ключевой показатель мощности технологии)Это вообще полный нонсенс. Стоимость разработки никак не связана с мощностью технологии, особенно если эта технология является каким-нибудь фреймворком. А вот стоимость разработки под эту технологию - уже является, и я пока что не заметил в ASP.NET MVC ничего такого, что снижало бы её по сравнению даже со старинным JSP.
Если учитывать, что TreeMap в Microsoft назвали SortedDictionary; а конструктор ReadonlyCollection<T> принимает IList<T>.во-первых: я до сих пор не понимаю, зачем тебе нужны коллекции под .net именно с лейблом microsoft?
чем тебя не устраивают коллекции для .net от других производителей? например, open source?
во-вторых: readonlycollection - это есть wrapper для ilist, которые делает его readonly. было бы странно, если бы wrapper для IList брал бы что-то другое, чем IList
в-третьих, название SortedDictionary лучше, чем TreeMap - т.к. название TreeMap отражает детали реализации, а название SortedDictionary отражает внешний интерфейс и скрывает детали реализации.
и соответственно, с каких это пор класс принято называть на основе деталей внутренней реализации?
ты лучше скажи, что в Java-е есть взамен тому же:
Rx ( http://stackoverflow.com/questions/2845047/reactive-extensio... )
?
На самом деле ради него много чего подкрутили в IDE, по крайней мере из того, что очевидно при установке 10-ой студии или ReSharper-а.например?
если много подкрутили в 10-ой студии, то как asp.net mvc умудряется тогда работать в 2008 студии?
А вот стоимость разработки под эту технологию - уже является, и я пока что не заметил в ASP.NET MVC ничего такого, что снижало бы её по сравнению даже со старинным JSP.имхо, большая часть всех этих jsp и asp.net mvc нужна для monkey и индусов.
продвинутым разработчикам нужен мощный фундамент, на котором легко построить свой web-framework, свой orm для базы и т.д.
и я вижу, что за последние годы - .net далеко шагнуло в этом направлении, я вижу что свой web-framework, свой orm на .net пишется за считанные недели
во-первых: я до сих пор не понимаю, зачем тебе нужны коллекции под .net именно с лейблом microsoft?Любая современная технология должна иметь хороший набор простейших структур данных. Это более чем очевидно, и я даже не собираюсь флеймить на эту тему, если кто-то вдруг с этим не согласен.
чем тебя не устраивают коллекции для .net от других производителей? например, open source?
во-вторых: readonlycollection - это есть wrapper для ilist, которые делает его readonly. было бы странно, если бы wrapper для IList брал бы что-то другое, чем IList
Readonly обёртку для IList надо было назвать ReadonlyList; особенно в свете того, что есть ещё интерфейс ICollection.
в-третьих, название SortedDictionary лучше, чем TreeMap - т.к. название TreeMap отражает детали реализации, а название SortedDictionary отражает внешний интерфейс и скрывает детали реализации.
Оба этих названия одинаковы с точки зрения отражения деталей реализации (Tree/Sorted и Dictionary/Map разве что без чтения документации нельзя оценить сложность операций с SortedDictionary. И поэтому только по TreeMap можно понять, в каких ситуациях можно использовать эту коллекцию, а в каких этого делать не стоит.
ты лучше скажи, что в Java-е есть взамен тому же: RxЯ очень сильно не хочу изучать ещё что-то из лаборатории Microsoft только ради того, чтобы спорить с упёртым .NET разработчиком, который уже лет 8 ничего другого не видел и не пробовал. Могу лишь сказать, что начиная с 2005 года почти всё "новое" или даже новое, что выпустили в Microsoft - ужасное, корявое, иногда тормозное и всегда жутко неудобное гавно.
продвинутым разработчикам нужен мощный фундамент, на котором легко построить свой web-framework, свой orm для базы и т.д.А я вот не вижу, куда это оно так шагнуло, что ORM или WEB Framework вдруг стало проще написать под .NET; за исключением языка программирования C# ничего особенного и удобного не появилось.
и я вижу, что за последние годы - .net далеко шагнуло в этом направлении, я вижу что свой web-framework, свой orm на .net пишется за считанные недели
в .net-е появилось:
1. yield-ы
2. extension-ы
3. expression-ы
4. dynamic
в c#: var и lambda
и что самое интересное, что в java-7(как framework) внедрили те фичи, которые были в .net
http://habrahabr.ru/blogs/java/69811/
в .net из java-ы перетекло лишь covariance/contravariance
в java-8 собираются все-таки реализовать lambda-у(замыкания)
> что ORM или WEB Framework вдруг стало проще написать под .NET;
я вижу, что одна и та же задача решенная на java и на C#/.net-е: на C#/.net решается в 1.5-3 раза меньшим кол-вом кода.
у Java-ы плюс только в большем кол-ве уже реализованных библиотек, но сама по себе java - как framework - намного более бедная, чем .net
но сама по себе java - как framework - намного более бедная, чем .netкак фреймворк да, а как вм?
я вижу, что одна и та же задача решенная на java и на C#/.net-е: на C#/.net решается в 1.5-3 раза меньшим кол-вом кода.
Может быть, какой-нибудь туториал со специфичными языковыми конструкциями содержит в 1.5-3 раза меньше кода. Но реальные большие задачи зачастую решаются намного хуже на C# из-за бедности и низкоуровневости .NET Framework
но сама по себе java - как framework - намного более бедная, чем .netС точностью до наоборот. Если конечно рассматривать пригодные для использования вещи, а не кучу гавнища, рождённого левыми индусами.
Но реальные большие задачи зачастую решаются намного хуже на C# из-за бедности и низкоуровневости .NET Frameworkпример бедности
пример бедностиКоллекции, GUI, многопоточность.
многопоточность.кстати в 3.5 многопоточность продвинутей стала
вот GUI да в .net это жопа.
Коллекции, GUI, многопоточность.коллекций под .net - хоть жопой жуй.
для GUI-я WPF не плох, но сыроват пока.
а для многопоточности что не хватает?
для GUI-я WPF не плохесли требуется работать на терминале ?
коллекций под .net - хоть жопой жуй.Сторонних - да, а вот во Framework-е набор скудный.
для GUI-я WPF не плох, но сыроват пока.
Он ужасен и неудобен, биндинги вообще пиздец, тормозит, да и сколько можно быть сыроватым, выпустили лет пять назад.
а для многопоточности что не хватает?Коллекций и грамотного фреймворка. Взять тот же класс ThreadPool: это ж пиздец, батенька.
блин, аж встревать страшно. Я вот еще какой вещь хотел бы поднять. Несмотря на то, что ява как язык может и уступает шарпу(согласен с аргументами ДГ но ведь ява она скажем так более многоплатформенна чем .нет. Тут был замечательный пост от вонда(потонувший в споре с упорным шурегом что на самом то деле вопросы вызывает весь "стек технологий" от мс, начиная с кх-м венды. А .нет бурно развивается именно на венде(может кто меня поправит и моно сейчас достиг высот. И это гораздо более важней на мой взгляд, чем эстетство по поводу того, где там есть слово var или даже где более правильные генерики.
а если еще вспомнить WCF и костыли чтобы его допустим с той же джавой сдружить
Сторонних - да, а вот во Framework-е набор скудный.тут нам стоит все же определится. Я понял твои аргументы, но ведь тут еще говорилось как плюс яве именно наличие большого количества сторонних либ. Так чем плохо, если сторонние либы закрывают потребности в этой области на .нет?
тормозитмаза это проблемы в хп
вцф вспоминать не надо. Конструктива не будет точно
Так чем плохо, если сторонние либы закрывают потребности в этой области на .нет?Чем плохо закрывать сторонними библиотеками потребности в простейших структурах данных?..
Сам то вот на сишарпе остаешься.могу тебя уверить, что это ни разу не связанно с "крутостью" или "отстойностью" технологии и вообще находится в другой плоскости.
Тут бодрячок правильно, имхо, замечал, что мол в общем-то для разработчика(прикладного от себя добавлю) не так уж важны красоты и изыски.И решить свои проблемы я могу в рамках .нет. Что не мешает замечать кривость "новых технологий" от мс, особенно понемногу изучая как обстоят дела в других совершенно платформах.
Чем плохо закрывать сторонними библиотеками потребности в простейших структурах данных?..конечно.
специализированные коллекции не используются для стыка между двумя разными кодами.
сложные коллекции - это деталь реализации, соответственно если каждый будет использовать свой набор специализированных коллекций - то ничего страшного не будет.
вот чего действительно не хватает в .net - это штатного readonly массива (и такую фичу невозможно реализовать "снаружи", внешней либой)
Мне например часто нужен ОРМ, и я считаю это достаточно базовой вещью в опр. областях, однако вполне могу пережить, если в стандартной либе его нет. Или вот еще мне одно время часто был нужен хороший csv ридер(кстати у питона есть в базе, что несказанно радовало!)
Все же минимальная "базовость" - это без сомнения массивы, простые списки, очереди, хэштаблицы в базе .нета есть.
особенно понемногу изучая как обстоят дела в других совершенно платформах.я не знаю как у Вас, но у нас вообще выбор есть на чем писать. на джаву можно хоть завтра напросится.
джаверы тут либу на шарпе под себя наваяли мы их код ревьили.
так что у нас в этом плане все демократично, и никакого проигрыша в зп как у шурика не будет, как раз таки потому что руководство придерживается правильных взглядов.
кстати руководство работало до этого у Вас
сложные коллекции - это деталь реализации, соответственно если каждый будет использовать свой набор специализированных коллекций - то ничего страшного не будет.Я не могу понять твоего аргумента. Может быть, int - это тоже деталь реализации?
Тем более, я не говорю про сложные коллекции, в современном SDK должны быть базовые. С хорошей архитектурой. С read only обёртками и другими вспомогательными утилитами. С масштабируемыми многопоточными реализациями.
это без сомнения массивы, простые списки, очереди, хэштаблицы в базе .нета естьА как же heap? А read only обёртки?.. Мне, например, многих вещей в .NET всегда не хватает, каким бы проектом я не занимался.
да и сколько можно быть сыроватым, выпустили лет пять назад.если учесть, что рынок desktop-систем стагнирует, то понятно почему wpf не развивается - нет общественного заказа
> Коллекций и грамотного фреймворка. Взять тот же класс ThreadPool: это ж пиздец, батенька.
threadpool - это вообще .net 1.0. нафиг он тебе нужен?
для многопоточности в .net добавили plinq и task parallel library.
в .net 5 добавят async
что такое грамотный фреймворк?
ну вот натурально те скажу, что без ридонли оберток точно могу пережить. Не, я не утверждаю, что они не нужны, но и прямо сильной боли не вызывают. Вот тот же DisplayName из примера мвц - имхо гораздо более пиздец.
С хорошей архитектурой. С read only обёртками и другими вспомогательными утилитами.имхо, архитектура принятая в Java - с кучей оберток. это плохая архитектура.
каждая обертка - это тормоза, от которых никуда не денешься.
и обертка на обертке - это фактически monkey-код для enterprise-а
Вот тот же DisplayName из примера мвц - имхо гораздо более пиздец.кстати в чем именно он заключается?
для локализации достаточно прогнать replace и заменить DisplayName на MyLocalizedDisplayName
threadpool - это вообще .net 1.0. нафиг он тебе нужен?Да, нафиг вообще нужен thread pool?... А ведь ещё на нём вызываются таймеры и I/O...
для многопоточности в .net добавили plinq и task parallel library.По большей части отношу эти нововведения к фразе: "Могу лишь сказать, что начиная с 2005 года почти всё "новое" или даже новое, что выпустили в Microsoft - ужасное, корявое, иногда тормозное и всегда жутко неудобное гавно."
ЗЫ уж молчу, что прогонять всякие реплейсы - это уже какая то внешняя приблуда
имхо, архитектура принятая в Java - с кучей оберток. это плохая архитектура.Конечно, конечно. И вообще, кому в голову придёт писать immutable классы, да?
каждая обертка - это тормоза, от которых никуда не денешься.Да, да, классы вообще тормозят, надо вернуться к структурному программированию.
надо вернуться к структурному программированию.там соседний тред есть
не понял, где прогнать реплейс? В рантайме? Это как?с одной стороны - плохо, что asp.net mvc не поддерживает локализации без перекомпиляции приложения
ЗЫ уж молчу, что прогонять всякие реплейсы - это уже какая то внешняя приблуда
с другой стороны - это не особо критично по следующим причинам:
а)
ниша asp.net mvc - это framework для быстрой разработки небольшого-среднего веб-приложения.
локализация с быстрой разработкой очень плохо дружит, все известные решения для локализации очень громоздки, страшны и т.д. - в не зависимости от средств разработки.
b)
если все-таки требуется локализовать asp.net mvc приложение, то достаточно displayname заменить на mylocalizeddisplayname
c)
web-приложения редко обслуживается не самими разработчиками
Да, нафиг вообще нужен thread pool?... А ведь ещё на нём вызываются таймеры и I/O...появление ее аж в .net 1.0 намекает на то, что это достаточно низкоуровневая вещь, которую лучше использовать через высокоуровневый доступ, чем напрямую.
с одной стороны - плохо, что asp.net mvc не поддерживает локализации без перекомпиляции приложенияне, это не плохо. Это просто пиздец и за это надо убивать, имхо.
локализация с быстрой разработкой очень плохо дружит, все известные решения для локализации очень громоздки, страшны и т.д. - в не зависимости от средств разработки.эээ. МОжет я чего не понимаю. Я говорю о простом таске - на сайте есть комбобокс, который дает возможность выбрать язык отображения. Как тут вообще поможет перекомпиляция, если сайт то крутится тот же самый, а пользователь выбирает язык. Было дело, разрабатывали в два рыла сайт небольшой на пых-пыхе(! ненапряжненько так и не долго. Вышеописанный функционал прикрутили за вечер чтоль, ничего там громоздкого не было, либа называлась чего то там 18n
Я говорю о простом таске - на сайте есть комбобокс, который дает возможность выбрать язык отображенияmylocalizeddisplayname берет строку уже из внешнего нужного ресурса, используя захардкоденную строку как ключ
а комбобокс тупо переключает подключенный файл ресурсов
Какое то не самое простое решение
а, всмысле наследуемся от DisplayName и перегружем свойство Namе или чего там есть? Вот кстати ща прям так и не соображу как переключить файл ресурсов.как можно сделать проще?
Какое то не самое простое решение
вот код аттрибута
class LocalizedDisplayNameAttribute : DisplayNameAttribute
{
private readonly string resourceName;
public LocalizedDisplayNameAttribute(string resourceName)
: base
{
this.resourceName = resourceName;
}
public override string DisplayName
{
get
{
return Resources.ResourceManager.GetString(this.resourceName);
}
}
}
вот код который переключает ресурсы
Thread.CurrentThread.CurrentUICulture = ...
ps
лучше можно сделать, если порекомендовать разработчикам asp.net mvc - сделать, чтобы displayname вел себя как mylocalizeddisplayname на основе настройки из конфига (нет настройки - выдается захардкоденная стройка, есть настройка - захардкоденная строка используется как ключ при поиске в ресурсе)
Если серъезно, то хз проще ли сиьно, но вот на пыхе либа как то совсем просто интегрировалась со смарти, там тоже тупо писали спецтегами в шаблоне(вполне дескриптивно кстати а потом надо было тока словари подкладывать
Конечно, конечно. И вообще, кому в голову придёт писать immutable классы, да?т.е. ты из под immutable-класса хочешь напрямую возвращать ReadonlyTreeMap "клиентскому" коду?
а дисплейнейм точно оверрайдится?(а то от мс вполне готов ждать подставы)
я это взял с первой строки - google:asp.net mvc localization displayname
а)o , у нас эта проблема закрыта в 2006 году (мной ). При всей убогости WebForms-ов локализация там решена хорошо — через навешивание meta:resourceKey-ев на контролы. Единственное что было сильно криво это генерация resx-файлов из aspx файлов в Visual Studio, этот шаг я заменил самописной тулзой, которая делает тоже самое для всего солюшена (парсинг aspx/ascx файлов самописный). Короче, в итоге схема максимально простая:
ниша asp.net mvc - это framework для быстрой разработки небольшого-среднего веб-приложения.
локализация с быстрой разработкой очень плохо дружит, все известные решения для локализации очень громоздки, страшны и т.д. - в не зависимости от средств разработки.
1. запускаем тулзу, получаем excel-файл с английскими фразами;
2. отдаем этот файл переводчикам на разные языки;
3. запускаем тулзу в режиме генерации локализованных ресурсов из excel-файла.
если требуется работать на терминале ?в принципе, да, у нас один из продуктов крутиться именно на терминалах.
ниша asp.net mvc - это framework для быстрой разработки небольшого-среднего веб-приложения.официально ее вроде позиционируют несколько по другому:
•It works well for Web applications that are supported by large teams of developers and Web designers who need a high degree of control over the application behavior.вряд ли large team будет поддерживать небольшой-средний сайт
http://www.asp.net/mvc/tutorials/asp-net-mvc-overview-cs
large team - это скорее open source, результатом которых является какой-нибудь движок форума, блога и т.д. - что является скорее небольшим-средним приложением.
большие приложения с большей нагрузкой редко разрабатываются на общих движках, чаще разработка идет либо на чем-то своем, либо на каком-то узкоспециализированном движке.
большое конечное приложение - развивается скорее небольшой командой.
большому приложению-framework-у, которое как раз может иметь большую команду, может быть тесно в рамках фреймворка asp.net mvc
появление ее аж в .net 1.0 намекает на то, что это достаточно низкоуровневая вещь, которую лучше использовать через высокоуровневый доступ, чем напрямую.А что делать, когда нужен thread pool?
т.е. ты из под immutable-класса хочешь напрямую возвращать ReadonlyTreeMap "клиентскому" коду?А это неважно, что я хочу. Важна польза от immutable объектов и состояний.
ReadonlyTreeMap
Видишь, проблема в том, что я регулярно разрабатываю на Java и C#, а ты из языков этого направления, похоже, используешь только C#; поэтому многие удобные/грамотные/нужные вещи, которые мне уже давно стали очевидны, приходится разжёвывать через жуткий флейм.
как можно сделать проще?Позволить верстальщикам работать с ресурсами. Удивительно, что ты раньше жаловался на то, что в JSP верстальщикам тяжелее сделать if/then/else для вывода разных значений; и при этом такой грубой примеси представления в код модели ASP.NET MVC не упоминал.
А что делать, когда нужен thread pool?так используй, что не хватает?
так используй, что не хватает?Так, ты сначала определись, использовать или нет?
Оставить комментарий
6yrop
да ни кого не волнует когда первый раз эти дурацкие три буквы были произнесены.А вот strongly typed view такого в Java нет и не будет по причине замшелости мышления джавистов.
Та же замшелость была причиной выпуска кривых generic-ов, с которыми до сих пор мучаются, и которые тормозят развитие.