Вопрос про моно
От: sysenter  
Дата: 05.02.12 07:50
Оценка:
Интересует его применимость для написания веб приложений и веб сервисов под никсами. На данный момент проект уже созрел, для серьёзных проектов его уже можно использовать? Как у него с производительность и потреблением памяти? Или Java ещё нет альтернатив?
Re: Вопрос про моно
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 05.02.12 08:05
Оценка: 1 (1) +2 :))
Здравствуйте, sysenter, Вы писали:

S>Интересует его применимость для написания веб приложений и веб сервисов под никсами. На данный момент проект уже созрел, для серьёзных проектов его уже можно использовать? Как у него с производительность и потреблением памяти? Или Java ещё нет альтернатив?


Я пробовал (в первую очередь для IronPython) и сказал — убрать нахрен это дерьмо с пляжа, лучше взять что-то нормальное, как та же Java. Mono содержит слишком много специфических виндово-ориентированных свойств, которые при переносе на Unix дают непригодную для работы обстановку.

Первая грабля, с которой столкнулся — это то, что штатный OpenFile (или как он там зовётся) в коротком варианте автоматически включает блокировку повторного открытия (пародия на exclusive access) внутри самого рантайма, а чтобы это не делалось — надо явно использовать другую форму OpenFile. В Unix в подобном открытии нет никаких проблем, особенно в R/O. Когда запускаемое средство, не имевшее проблем кроме скорости с CPython, свалилось на ровном месте на IronPython, я посмотрел, сколько мест в нём открывают какой-то файл, и сказал — ну вас нафиг такое самому лечить.

Вторая — это встроенный маппинг номеров файлов. Пример: вызываю os.open(), ожидаю дескриптор 3, получаю 18 ( ) Смотрю fstat'ом — ядро знает про номер 3. Не выходя из шелла, закрываю его, открываю снова. Получаю 19 () Ядро показывает всё тот же номер 3. Вопрос: какого фаллического символа оно такое норовистое и как добраться до реального номера дескриптора (а мне он нужен, чтобы объяснить подчинённому процессу, что делать)? Оказалось, это глубоко где-то в недрах Mono и не поддаётся вытаскиванию.

В общем, я сказал "передайте Иказе, что он продажная женщина" и запретил даже смотреть на Mono. (Кто меня знает — я никогда в письменной форме не ругаюсь матом, но в данном сообщении я аккуратно заменил его на цензурные выражения, оставив точное указание, что именно я хотел сказать. Ибо это был случай, который достал до печёнок.)
The God is real, unless declared integer.
Re: Вопрос про моно
От: Ночной Смотрящий Россия  
Дата: 05.02.12 09:47
Оценка:
Здравствуйте, sysenter, Вы писали:

S>Интересует его применимость для написания веб приложений и веб сервисов под никсами.


Применимо. Веб-часть там более-менее в приличном состоянии, если не считать странноватого иногда поведения собственно asp.net сервера.

S> На данный момент проект уже созрел, для серьёзных проектов его уже можно использовать?


Можно, но закладываться на повышенные по сравнению с дотнетом риски все же следует.

S> Как у него с производительность и потреблением памяти?


Терпимо.
Re[2]: Вопрос про моно
От: Философ Ад http://vk.com/id10256428
Дата: 06.02.12 07:27
Оценка: :)))
Здравствуйте, netch80, Вы писали:

N>Mono содержит слишком много специфических виндово-ориентированных свойств, которые при переносе на Unix дают непригодную для работы обстановку.



??? поподробнее, пожалуйста

N>Первая грабля, с которой столкнулся — это то, что штатный OpenFile (или как он там зовётся) в коротком варианте автоматически включает блокировку повторного открытия ... а чтобы это не делалось — надо явно использовать другую форму OpenFile.


Не вижу никакой проблемы.

N>Пример: вызываю os.open(), ожидаю дескриптор 3


Даже в мыслях не было в управляемой среде возится с дескрипторами.
Хотя нет, один раз было: нужно было дождаться завершения запущенного процесса — win api.
Любопытно, как в последняя задача решается в никсах.
Всё сказанное выше — личное мнение, если не указано обратное.
Re: Вопрос про моно
От: Философ Ад http://vk.com/id10256428
Дата: 06.02.12 07:28
Оценка:
Здравствуйте, sysenter, Вы писали:

S>Интересует его применимость для написания веб приложений и веб сервисов под никсами. На данный момент проект уже созрел, для серьёзных проектов его уже можно использовать? Как у него с производительность и потреблением памяти? Или Java ещё нет альтернатив?


пробовал (как под никсами так и под виндой)
скорость на приличном уровне
мемори ликов обнаружить не удалось
Всё сказанное выше — личное мнение, если не указано обратное.
Re[3]: Вопрос про моно
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 06.02.12 07:39
Оценка:
Здравствуйте, Философ, Вы писали:

N>>Первая грабля, с которой столкнулся — это то, что штатный OpenFile (или как он там зовётся) в коротком варианте автоматически включает блокировку повторного открытия ... а чтобы это не делалось — надо явно использовать другую форму OpenFile.

Ф>Не вижу никакой проблемы.

Каждый раз в каждом вызове писать "нет, это не винда"? Или делать переходный слой для устранения винды из Mono? Ну извините, мне на второе тогда не хватило ресурсов, а на первое тем более.

N>>Пример: вызываю os.open(), ожидаю дескриптор 3

Ф>Даже в мыслях не было в управляемой среде возится с дескрипторами.

С чего вдруг? Это же не указатели.

Ф>Хотя нет, один раз было: нужно было дождаться завершения запущенного процесса — win api.

Ф>Любопытно, как в последняя задача решается в никсах.

Функции wait, waitpid и аналоги. Как именно они экспортированы в конкретной среде — не знаю, читай доки.
The God is real, unless declared integer.
Re[2]: Вопрос про моно
От: hardcase Пират http://nemerle.org
Дата: 06.02.12 13:55
Оценка:
Здравствуйте, netch80, Вы писали:

N>Первая грабля, с которой столкнулся — это то, что штатный OpenFile (или как он там зовётся) в коротком варианте автоматически включает блокировку повторного открытия (пародия на exclusive access) внутри самого рантайма, а чтобы это не делалось — надо явно использовать другую форму OpenFile.


Нафига нужен этот OpenFile, если есть FileStream.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[4]: Вопрос про моно
От: hardcase Пират http://nemerle.org
Дата: 06.02.12 13:56
Оценка:
Здравствуйте, netch80, Вы писали:

N>С чего вдруг? Это же не указатели.


Но тем не менее они остаются ресурсами, учет которых вести нужно — оборачивая в SafeHandle и прочее.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[2]: Вопрос про моно
От: 0xC0DE  
Дата: 06.02.12 14:24
Оценка:
Здравствуйте, netch80, Вы писали:

N>Вторая — это встроенный маппинг номеров файлов. Пример: вызываю os.open(), ожидаю дескриптор 3, получаю 18 ( ) Смотрю fstat'ом — ядро знает про номер 3. Не выходя из шелла, закрываю его, открываю снова. Получаю 19 () Ядро показывает всё тот же номер 3. Вопрос: какого фаллического символа оно такое норовистое и как добраться до реального номера дескриптора (а мне он нужен, чтобы объяснить подчинённому процессу, что делать)? Оказалось, это глубоко где-то в недрах Mono и не поддаётся вытаскиванию.


Ну если попытаться в дотнетовском потоке вытащить реальный дескриптор потока, то он не обязательно каждый раз будет одинаковым. Это, впрочем, оговорено в документации и понятно. Может, для файлов там аналогичный хитрый механизм.
Re[3]: Вопрос про моно
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 06.02.12 18:31
Оценка:
Здравствуйте, hardcase, Вы писали:

H>Здравствуйте, netch80, Вы писали:


N>>Первая грабля, с которой столкнулся — это то, что штатный OpenFile (или как он там зовётся) в коротком варианте автоматически включает блокировку повторного открытия (пародия на exclusive access) внутри самого рантайма, а чтобы это не делалось — надо явно использовать другую форму OpenFile.


H>Нафига нужен этот OpenFile, если есть FileStream.


Ну во-первых это не ко мне вариант — я смотрел уже готовый код.
Во-вторых, у питона свои файловые потоки.
В-третьих, задача передать в порождённый процесс требовала знания номера дескриптора, видного ядру, и всякий дополнительный слой тут только мешал.
В-четвёртых, если его вызывать без параметра FileShare (я посмотрел на доку на MSDN), я вляпаюсь в те же проблемы — что оно за счёт внутренних блокировок будет мне отказывать на ровном месте. И нафига?
The God is real, unless declared integer.
Re[2]: Чувак! Это не бага! Это ФИЧА!!!
От: Erop Россия  
Дата: 07.02.12 06:43
Оценка: :)
Здравствуйте, netch80, Вы писали:


N>Я пробовал (в первую очередь для IronPython) и сказал — убрать нахрен это дерьмо с пляжа, лучше взять что-то нормальное, как та же Java. Mono содержит слишком много специфических виндово-ориентированных свойств, которые при переносе на Unix дают непригодную для работы обстановку.


Блин! А ты на лкксусе пшеницу косить не пробовал? Или ЖБИ возить?

Моно сделан специально, чтобы дотнетовские проги работали под никсами! А ты при этом ругаешься, что твоей проге показывают не никсы, а винду?
Чувак! Это не бага! Это ФИЧА!!!
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[3]: Чувак! Это не бага! Это ФИЧА!!!
От: GarryIV  
Дата: 07.02.12 07:35
Оценка: +1 :)
Здравствуйте, Erop, Вы писали:

N>>Я пробовал (в первую очередь для IronPython) и сказал — убрать нахрен это дерьмо с пляжа, лучше взять что-то нормальное, как та же Java. Mono содержит слишком много специфических виндово-ориентированных свойств, которые при переносе на Unix дают непригодную для работы обстановку.


E>Блин! А ты на лкксусе пшеницу косить не пробовал? Или ЖБИ возить?


E>Моно сделан специально, чтобы дотнетовские проги работали под никсами! А ты при этом ругаешься, что твоей проге показывают не никсы, а винду?

E>Чувак! Это не бага! Это ФИЧА!!!

Только вот почему-то Java такоей фигней не занимается.
WBR, Igor Evgrafov
Re[3]: Чувак! Это бага!
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 07.02.12 07:42
Оценка: :)
Здравствуйте, Erop, Вы писали:

N>>Я пробовал (в первую очередь для IronPython) и сказал — убрать нахрен это дерьмо с пляжа, лучше взять что-то нормальное, как та же Java. Mono содержит слишком много специфических виндово-ориентированных свойств, которые при переносе на Unix дают непригодную для работы обстановку.

E>Блин! А ты на лкксусе пшеницу косить не пробовал? Или ЖБИ возить?
E>Моно сделан специально, чтобы дотнетовские проги работали под никсами! А ты при этом ругаешься, что твоей проге показывают не никсы, а винду?
E>Чувак! Это не бага! Это ФИЧА!!!

Почему ты решил, что это "специально" такая цель? Смотрим на родной вебсайт:

An open source, cross-platform, implementation of C# and the CLR that is binary compatible with Microsoft.NET

или:

Mono is a software platform designed to allow developers to easily create cross platform applications. Sponsored by Xamarin, Mono is an open source implementation of Microsoft's .NET Framework based on the ECMA standards for C# and the Common Language Runtime. A growing family of solutions and an active and enthusiastic contributing community is helping position Mono to become the leading choice for development of Linux applications.


Каким образом выражения "cross-platform" и "he leading choice for development of Linux applications" соотносятся с заявленной тобой целью "чтобы дотнетовские проги работали под никсами" и намёком что надо видеть "винду"?
Аналогично, как это связано с "based on the ECMA standards"? (Я не касаюсь вопроса, что ECMA это карманная лавочка MS и ещё нескольких вендоров — сама идея стандартизации показывает, что MS пытается видеть "это" не только в своих ОС.)

Если нормально это понимать, то получается, что Mono таки претендует быть родной средой и для Unix мира. И местами это даже получается (вчера увидел ссылку на Unity3D, внутри которой скриптование на Mono). Поэтому я не вижу никаких реальных оснований в твоих утверждениях.

И соответственно все проблемы, что я описал — это баги. Идеологические (как с блокировками), реализаций (как с дескрипторами), но баги.

Хочешь опровергнуть — вперёд, но найди аргументы более весомые, чем крик Caps'ом, открыто противоречащий тому, что находится в Сети за две секунды.
The God is real, unless declared integer.
Re[4]: Чувак! Это бага!
От: Erop Россия  
Дата: 07.02.12 09:20
Оценка:
Здравствуйте, netch80, Вы писали:

N>Почему ты решил, что это "специально" такая цель? Смотрим на родной вебсайт:

N>

N>An open source, cross-platform, implementation of C# and the CLR that is binary compatible with Microsoft.NET

N>или:
N>

N>Mono is a software platform designed to allow developers to easily create cross platform applications. Sponsored by Xamarin, Mono is an open source implementation of Microsoft's .NET Framework based on the ECMA standards for C# and the Common Language Runtime. A growing family of solutions and an active and enthusiastic contributing community is helping position Mono to become the leading choice for development of Linux applications.


N>Каким образом выражения "cross-platform" и "he leading choice for development of Linux applications" соотносятся с заявленной тобой целью "чтобы дотнетовские проги работали под никсами" и намёком что надо видеть "винду"?

N>Аналогично, как это связано с "based on the ECMA standards"? (Я не касаюсь вопроса, что ECMA это карманная лавочка MS и ещё нескольких вендоров — сама идея стандартизации показывает, что MS пытается видеть "это" не только в своих ОС.)

Дык это, существующая реализация дотнета под винду, как бы ужо зафиксирована и стандартизирована...

Как ты представляешь себе кросс-платформинность в данном случе иначе, чем подержка того же окружения программы, какое она "видит" на винде?


N>Если нормально это понимать, то получается, что Mono таки претендует быть родной средой и для Unix мира. И местами это даже получается (вчера увидел ссылку на Unity3D, внутри которой скриптование на Mono). Поэтому я не вижу никаких реальных оснований в твоих утверждениях.


Ну ты надеешься, что если моно будет вести себя как-то не так, как дотнет на винде, то MS поправит дотнет? Или в чём поинт-то?

N>И соответственно все проблемы, что я описал — это баги. Идеологические (как с блокировками), реализаций (как с дескрипторами), но баги.


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

N>Хочешь опровергнуть — вперёд, но найди аргументы более весомые, чем крик Caps'ом, открыто противоречащий тому, что находится в Сети за две секунды.


Пока что я не понял, как ты себе представляешь кросс-платфрменность, при условии несовпадения с поведением с оригинального дотнета...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[4]: Чувак! Это не бага! Это ФИЧА!!!
От: Erop Россия  
Дата: 07.02.12 09:22
Оценка:
Здравствуйте, GarryIV, Вы писали:

E>>Чувак! Это не бага! Это ФИЧА!!!


GIV>Только вот почему-то Java такоей фигней не занимается.

Дык стандарт явы МС и не держит при этом... его держали более другие люди, и там фигня тоже более другая. Все долго судились, и деинсталлировали разные реализации по всему миру и теперь они (ява и дотнет) такие разные. Тебя это удивляет?
Но они разные везде и на винде и на никсах. Это и есть кросс-платформенность, по идее. Отличаются ява и дотнет, а не реализации того и другого под разные платформы
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[5]: Вопрос про моно
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 07.02.12 10:06
Оценка:
Здравствуйте, Erop, Вы писали:

E>Дык это, существующая реализация дотнета под винду, как бы ужо зафиксирована и стандартизирована...

E>Как ты представляешь себе кросс-платформинность в данном случе иначе, чем подержка того же окружения программы, какое она "видит" на винде?

Ну а тогда в чём вообще смысл твоей изначальной реплики? Напомню, автор треда спросил, какие впечатления от попытки писать под Mono на Unix. Я привёл свои комментарии, которые как раз ложатся в твои утверждения, что это неродная среда. Я ничего не говорил о том, считать это багой или фичей, я просто сказал, что для меня оно неработоспособно и использовать его нельзя. Это ты влез с воплями "это фича!!!!111". Вот я и удивляюсь — зачем? Что именно ты хотел сказать такого, чего мы не знаем?

N>>Если нормально это понимать, то получается, что Mono таки претендует быть родной средой и для Unix мира. И местами это даже получается (вчера увидел ссылку на Unity3D, внутри которой скриптование на Mono). Поэтому я не вижу никаких реальных оснований в твоих утверждениях.

E>Ну ты надеешься, что если моно будет вести себя как-то не так, как дотнет на винде, то MS поправит дотнет? Или в чём поинт-то?

Я не давал повода в своём первом ответе думать, что я на что-то надеюсь. На сейчас я просто его отбросил как нечто, которое непригодно к использованию в том мире, в котором мне оно было бы нужно. Но если тебя интересует ответ на гипотетический вопрос из серии "если бы да кабы..." — то jIMHO сделав относительно небольшие правки с устранениями наиболее одиозных фич (как тот же внутренний контроль разделения), пусть даже не по умолчанию, а выбором режима на старте, можно было бы сделать его пригодным. Но я не собираюсь этим заниматься: если это до сих пор не сделано, значит, или всех, кто его использует, этот бред устраивает, или там невменяемое руководство, и в таком случае я лучше потрачусь на что-то реально достижимое.

E>Пока что я не понял, как ты себе представляешь кросс-платфрменность, при условии несовпадения с поведением с оригинального дотнета...


А в чём проблема? Например, выключаем те же внутренние блокировки по умолчанию — и я не думаю, что от этого что-то фатально сломается в самом дотнете или типичных приложениях под него. Скорее наоборот — исчезнет ряд стрёмных плавающих ошибок.
The God is real, unless declared integer.
Re[6]: Вопрос про моно
От: Erop Россия  
Дата: 07.02.12 11:46
Оценка:
Здравствуйте, netch80, Вы писали:

N>Ну а тогда в чём вообще смысл твоей изначальной реплики? Напомню, автор треда спросил, какие впечатления от попытки писать под Mono на Unix.

Я так понял автора, что он хочет писать под винду и никсы одновременно...


N>А в чём проблема? Например, выключаем те же внутренние блокировки по умолчанию — и я не думаю, что от этого что-то фатально сломается в самом дотнете или типичных приложениях под него. Скорее наоборот — исчезнет ряд стрёмных плавающих ошибок.


А я думаю, что многие программы не заведутся...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[5]: Чувак! Это не бага! Это ФИЧА!!!
От: GarryIV  
Дата: 07.02.12 14:09
Оценка:
Здравствуйте, Erop, Вы писали:

GIV>>Только вот почему-то Java такоей фигней не занимается.

E>Дык стандарт явы МС и не держит при этом... его держали более другие люди, и там фигня тоже более другая. Все долго судились, и деинсталлировали разные реализации по всему миру и теперь они (ява и дотнет) такие разные. Тебя это удивляет?
E>Но они разные везде и на винде и на никсах. Это и есть кросс-платформенность, по идее. Отличаются ява и дотнет, а не реализации того и другого под разные платформы

Где то в стандарте .NET написано, что файл после открытия должен быть залочен? Не я понимаю конечно из-за чего так (чтоб работал ASP.NET какой-нибудь), но это же кривизна безотносительно существования Java.
WBR, Igor Evgrafov
Re[6]: Чувак! Это не бага! Это ФИЧА!!!
От: Erop Россия  
Дата: 07.02.12 14:34
Оценка:
Здравствуйте, GarryIV, Вы писали:

GIV>Где то в стандарте .NET написано, что файл после открытия должен быть залочен? Не я понимаю конечно из-за чего так (чтоб работал ASP.NET какой-нибудь), но это же кривизна безотносительно существования Java.


Ну фиг его знает. От целей зависит, вообще-то... Если цель -- легко запускать виндошные приложения дотнетовские на никсах, то моно к этому дёт и быстро. Если цель кака-то другая, то не факт,,что это цель моно, а не твоя...

Ты какую жизнеспособную конструкию себе мыслишь-то?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[7]: Чувак! Это не бага! Это ФИЧА!!!
От: GarryIV  
Дата: 07.02.12 15:27
Оценка:
Здравствуйте, Erop, Вы писали:

GIV>>Где то в стандарте .NET написано, что файл после открытия должен быть залочен? Не я понимаю конечно из-за чего так (чтоб работал ASP.NET какой-нибудь), но это же кривизна безотносительно существования Java.


E>Ну фиг его знает. От целей зависит, вообще-то... Если цель -- легко запускать виндошные приложения дотнетовские на никсах, то моно к этому дёт и быстро. Если цель кака-то другая, то не факт,,что это цель моно, а не твоя...


Началось все с целей sysenter'а. А то, что дотнетовские приложения написаны так, что им необходимы такие костыли при работе в другой ОС, нисколько не удивляет.

E>Ты какую жизнеспособную конструкию себе мыслишь-то?


Write once, run everywhere (с)
WBR, Igor Evgrafov
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.