Интересует его применимость для написания веб приложений и веб сервисов под никсами. На данный момент проект уже созрел, для серьёзных проектов его уже можно использовать? Как у него с производительность и потреблением памяти? Или Java ещё нет альтернатив?
Здравствуйте, 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. (Кто меня знает — я никогда в письменной форме не ругаюсь матом, но в данном сообщении я аккуратно заменил его на цензурные выражения, оставив точное указание, что именно я хотел сказать. Ибо это был случай, который достал до печёнок.)
Здравствуйте, sysenter, Вы писали:
S>Интересует его применимость для написания веб приложений и веб сервисов под никсами.
Применимо. Веб-часть там более-менее в приличном состоянии, если не считать странноватого иногда поведения собственно asp.net сервера.
S> На данный момент проект уже созрел, для серьёзных проектов его уже можно использовать?
Можно, но закладываться на повышенные по сравнению с дотнетом риски все же следует.
S> Как у него с производительность и потреблением памяти?
Здравствуйте, netch80, Вы писали:
N>Mono содержит слишком много специфических виндово-ориентированных свойств, которые при переносе на Unix дают непригодную для работы обстановку.
??? поподробнее, пожалуйста
N>Первая грабля, с которой столкнулся — это то, что штатный OpenFile (или как он там зовётся) в коротком варианте автоматически включает блокировку повторного открытия ... а чтобы это не делалось — надо явно использовать другую форму OpenFile.
Не вижу никакой проблемы.
N>Пример: вызываю os.open(), ожидаю дескриптор 3
Даже в мыслях не было в управляемой среде возится с дескрипторами.
Хотя нет, один раз было: нужно было дождаться завершения запущенного процесса — win api.
Любопытно, как в последняя задача решается в никсах.
Всё сказанное выше — личное мнение, если не указано обратное.
Здравствуйте, sysenter, Вы писали:
S>Интересует его применимость для написания веб приложений и веб сервисов под никсами. На данный момент проект уже созрел, для серьёзных проектов его уже можно использовать? Как у него с производительность и потреблением памяти? Или Java ещё нет альтернатив?
пробовал (как под никсами так и под виндой)
скорость на приличном уровне
мемори ликов обнаружить не удалось
Всё сказанное выше — личное мнение, если не указано обратное.
Здравствуйте, Философ, Вы писали:
N>>Первая грабля, с которой столкнулся — это то, что штатный OpenFile (или как он там зовётся) в коротком варианте автоматически включает блокировку повторного открытия ... а чтобы это не делалось — надо явно использовать другую форму OpenFile. Ф>Не вижу никакой проблемы.
Каждый раз в каждом вызове писать "нет, это не винда"? Или делать переходный слой для устранения винды из Mono? Ну извините, мне на второе тогда не хватило ресурсов, а на первое тем более.
N>>Пример: вызываю os.open(), ожидаю дескриптор 3 Ф>Даже в мыслях не было в управляемой среде возится с дескрипторами.
С чего вдруг? Это же не указатели.
Ф>Хотя нет, один раз было: нужно было дождаться завершения запущенного процесса — win api. Ф>Любопытно, как в последняя задача решается в никсах.
Функции wait, waitpid и аналоги. Как именно они экспортированы в конкретной среде — не знаю, читай доки.
Здравствуйте, netch80, Вы писали:
N>Первая грабля, с которой столкнулся — это то, что штатный OpenFile (или как он там зовётся) в коротком варианте автоматически включает блокировку повторного открытия (пародия на exclusive access) внутри самого рантайма, а чтобы это не делалось — надо явно использовать другую форму OpenFile.
Здравствуйте, netch80, Вы писали:
N>Вторая — это встроенный маппинг номеров файлов. Пример: вызываю os.open(), ожидаю дескриптор 3, получаю 18 ( ) Смотрю fstat'ом — ядро знает про номер 3. Не выходя из шелла, закрываю его, открываю снова. Получаю 19 () Ядро показывает всё тот же номер 3. Вопрос: какого фаллического символа оно такое норовистое и как добраться до реального номера дескриптора (а мне он нужен, чтобы объяснить подчинённому процессу, что делать)? Оказалось, это глубоко где-то в недрах Mono и не поддаётся вытаскиванию.
Ну если попытаться в дотнетовском потоке вытащить реальный дескриптор потока, то он не обязательно каждый раз будет одинаковым. Это, впрочем, оговорено в документации и понятно. Может, для файлов там аналогичный хитрый механизм.
Здравствуйте, hardcase, Вы писали:
H>Здравствуйте, netch80, Вы писали:
N>>Первая грабля, с которой столкнулся — это то, что штатный OpenFile (или как он там зовётся) в коротком варианте автоматически включает блокировку повторного открытия (пародия на exclusive access) внутри самого рантайма, а чтобы это не делалось — надо явно использовать другую форму OpenFile.
H>Нафига нужен этот OpenFile, если есть FileStream.
Ну во-первых это не ко мне вариант — я смотрел уже готовый код.
Во-вторых, у питона свои файловые потоки.
В-третьих, задача передать в порождённый процесс требовала знания номера дескриптора, видного ядру, и всякий дополнительный слой тут только мешал.
В-четвёртых, если его вызывать без параметра FileShare (я посмотрел на доку на MSDN), я вляпаюсь в те же проблемы — что оно за счёт внутренних блокировок будет мне отказывать на ровном месте. И нафига?
N>Я пробовал (в первую очередь для IronPython) и сказал — убрать нахрен это дерьмо с пляжа, лучше взять что-то нормальное, как та же Java. Mono содержит слишком много специфических виндово-ориентированных свойств, которые при переносе на Unix дают непригодную для работы обстановку.
Блин! А ты на лкксусе пшеницу косить не пробовал? Или ЖБИ возить?
Моно сделан специально, чтобы дотнетовские проги работали под никсами! А ты при этом ругаешься, что твоей проге показывают не никсы, а винду?
Чувак! Это не бага! Это ФИЧА!!!
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Erop, Вы писали:
N>>Я пробовал (в первую очередь для IronPython) и сказал — убрать нахрен это дерьмо с пляжа, лучше взять что-то нормальное, как та же Java. Mono содержит слишком много специфических виндово-ориентированных свойств, которые при переносе на Unix дают непригодную для работы обстановку.
E>Блин! А ты на лкксусе пшеницу косить не пробовал? Или ЖБИ возить?
E>Моно сделан специально, чтобы дотнетовские проги работали под никсами! А ты при этом ругаешься, что твоей проге показывают не никсы, а винду? E>Чувак! Это не бага! Это ФИЧА!!!
Только вот почему-то Java такоей фигней не занимается.
Здравствуйте, 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'ом, открыто противоречащий тому, что находится в Сети за две секунды.
Здравствуйте, 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'ом, открыто противоречащий тому, что находится в Сети за две секунды.
Пока что я не понял, как ты себе представляешь кросс-платфрменность, при условии несовпадения с поведением с оригинального дотнета...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, GarryIV, Вы писали:
E>>Чувак! Это не бага! Это ФИЧА!!!
GIV>Только вот почему-то Java такоей фигней не занимается.
Дык стандарт явы МС и не держит при этом... его держали более другие люди, и там фигня тоже более другая. Все долго судились, и деинсталлировали разные реализации по всему миру и теперь они (ява и дотнет) такие разные. Тебя это удивляет?
Но они разные везде и на винде и на никсах. Это и есть кросс-платформенность, по идее. Отличаются ява и дотнет, а не реализации того и другого под разные платформы
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Erop, Вы писали:
E>Дык это, существующая реализация дотнета под винду, как бы ужо зафиксирована и стандартизирована... E>Как ты представляешь себе кросс-платформинность в данном случе иначе, чем подержка того же окружения программы, какое она "видит" на винде?
Ну а тогда в чём вообще смысл твоей изначальной реплики? Напомню, автор треда спросил, какие впечатления от попытки писать под Mono на Unix. Я привёл свои комментарии, которые как раз ложатся в твои утверждения, что это неродная среда. Я ничего не говорил о том, считать это багой или фичей, я просто сказал, что для меня оно неработоспособно и использовать его нельзя. Это ты влез с воплями "это фича!!!!111". Вот я и удивляюсь — зачем? Что именно ты хотел сказать такого, чего мы не знаем?
N>>Если нормально это понимать, то получается, что Mono таки претендует быть родной средой и для Unix мира. И местами это даже получается (вчера увидел ссылку на Unity3D, внутри которой скриптование на Mono). Поэтому я не вижу никаких реальных оснований в твоих утверждениях. E>Ну ты надеешься, что если моно будет вести себя как-то не так, как дотнет на винде, то MS поправит дотнет? Или в чём поинт-то?
Я не давал повода в своём первом ответе думать, что я на что-то надеюсь. На сейчас я просто его отбросил как нечто, которое непригодно к использованию в том мире, в котором мне оно было бы нужно. Но если тебя интересует ответ на гипотетический вопрос из серии "если бы да кабы..." — то jIMHO сделав относительно небольшие правки с устранениями наиболее одиозных фич (как тот же внутренний контроль разделения), пусть даже не по умолчанию, а выбором режима на старте, можно было бы сделать его пригодным. Но я не собираюсь этим заниматься: если это до сих пор не сделано, значит, или всех, кто его использует, этот бред устраивает, или там невменяемое руководство, и в таком случае я лучше потрачусь на что-то реально достижимое.
E>Пока что я не понял, как ты себе представляешь кросс-платфрменность, при условии несовпадения с поведением с оригинального дотнета...
А в чём проблема? Например, выключаем те же внутренние блокировки по умолчанию — и я не думаю, что от этого что-то фатально сломается в самом дотнете или типичных приложениях под него. Скорее наоборот — исчезнет ряд стрёмных плавающих ошибок.
Здравствуйте, netch80, Вы писали:
N>Ну а тогда в чём вообще смысл твоей изначальной реплики? Напомню, автор треда спросил, какие впечатления от попытки писать под Mono на Unix.
Я так понял автора, что он хочет писать под винду и никсы одновременно...
N>А в чём проблема? Например, выключаем те же внутренние блокировки по умолчанию — и я не думаю, что от этого что-то фатально сломается в самом дотнете или типичных приложениях под него. Скорее наоборот — исчезнет ряд стрёмных плавающих ошибок.
А я думаю, что многие программы не заведутся...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Erop, Вы писали:
GIV>>Только вот почему-то Java такоей фигней не занимается. E>Дык стандарт явы МС и не держит при этом... его держали более другие люди, и там фигня тоже более другая. Все долго судились, и деинсталлировали разные реализации по всему миру и теперь они (ява и дотнет) такие разные. Тебя это удивляет? E>Но они разные везде и на винде и на никсах. Это и есть кросс-платформенность, по идее. Отличаются ява и дотнет, а не реализации того и другого под разные платформы
Где то в стандарте .NET написано, что файл после открытия должен быть залочен? Не я понимаю конечно из-за чего так (чтоб работал ASP.NET какой-нибудь), но это же кривизна безотносительно существования Java.
Здравствуйте, GarryIV, Вы писали:
GIV>Где то в стандарте .NET написано, что файл после открытия должен быть залочен? Не я понимаю конечно из-за чего так (чтоб работал ASP.NET какой-нибудь), но это же кривизна безотносительно существования Java.
Ну фиг его знает. От целей зависит, вообще-то... Если цель -- легко запускать виндошные приложения дотнетовские на никсах, то моно к этому дёт и быстро. Если цель кака-то другая, то не факт,,что это цель моно, а не твоя...
Ты какую жизнеспособную конструкию себе мыслишь-то?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Erop, Вы писали:
GIV>>Где то в стандарте .NET написано, что файл после открытия должен быть залочен? Не я понимаю конечно из-за чего так (чтоб работал ASP.NET какой-нибудь), но это же кривизна безотносительно существования Java.
E>Ну фиг его знает. От целей зависит, вообще-то... Если цель -- легко запускать виндошные приложения дотнетовские на никсах, то моно к этому дёт и быстро. Если цель кака-то другая, то не факт,,что это цель моно, а не твоя...
Началось все с целей sysenter'а. А то, что дотнетовские приложения написаны так, что им необходимы такие костыли при работе в другой ОС, нисколько не удивляет.
E>Ты какую жизнеспособную конструкию себе мыслишь-то?