Здравия!
Я пользуюсь Линуксом. Соответственно хочу использовать программу в Линуксе.
В Линуксе есть эмулятор API винды, но он ограничен в возможностях...
Вообще хотелось бы полностью заменить календарь по "новому стилю" на Русский календарь.
Отсюда предложение: портировать программу Колядинъ Даръ на Линукс.
Готов сделать это.
Я сам не профессиональный программист и мои знания ограничены, но у меня есть много друзей, которые помогут с технической стороной вопроса.
Кроме того на Линуксе нет ни одной такой программы.
Како моё предложение?
Колядинъ Даръ на Linux
Сообщений 1 страница 14 из 14
Поделиться12010-10-06 19:33:00
Поделиться22010-10-07 21:22:48
Добра и Вам, EagleStars!
Рад, что армия пользователей программы ширится
По моим соображениям, Колядинъ Даръ должен и на Линуксе работать.
Он ведь написан под .NET 2.0, а Mono c ним полностью совместим.
Но сам не проверял, если честно Пробуйте!
Поделиться32010-10-13 22:02:00
Здравия!
Прошу прощения за то, что не смогу отвечать сразу.
Я пробовал запускать...
С моно ситуация такова: моно совместим с .net, а .net не совместим с mono. В лучшем случае нужно перекомпилировать в моно под Линукс.
Вообще есть серьёзные отличия в запуске программ в винде и Линуксе.
Во первых это бинарная структура. Например в Линуксе есть биты, указывающие на тип файла. А это нужно ковырять двоичный код. Из за этих отличий рабочий файл просто не работает.
В Линуксе другие системные вызовы. "KLD.exe" это не чистый машинный код. Запускаемые файлы работают через ядро ОС. А для этого они должны знать коды вызовов функций конкретного ядра ОС. В общем нужно менять api на POSIX.
Различается вызов библиотек. Установка библиотек отличается: в Линуксе есть система "Репозиторий". Смысл её в автоматической доустановки библиотек и для запуска программы без репозитория эти библиотеки нужно знать и установить вручную.
Так же отличается установка программ. Т.к. есть репозиторий, то и программы для установки в ручную не качают. Зачем, раз можно один раз подключить репозиторий и система сама всё скачает и установит, будет следить за обновлениями программ, со стороны разработчика сама скомпилирует под новые библиотеки?...
В Линуксе есть множество графических систем. Т.е. окошко в винде рисуется, в принципе, или с помощью осла или с нуля самой программой. В Линуксе мы можем задать любой рисовальщик окон на свой вкус. Соответственно и вызовы тут свои. Для графики используются в основном библиотеки GTK или QT (GTK луче и более распространена). А те в свою очередь пользуются "рисовальщикам" (правильно называются "декораторы" или "оконные менеджеры": Metacity, Beryl...).
Примечание: Советую погуглить по ютубе запросом "compiz" и посмотреть самое большое собрание тем оформления. Есть на что посмотреть!
Потом распространение программы с закрытым исходным кодом в Линуксе будет очень сильно затруднено. Линукс практически неуязвимая в плане вирусов и взломов вещь. Закладки тут тоже очень большая редкость. Поэтому редко кто захочет связываться с программой с закрытым исходным кодом.
Примечание: проблем с приоритетом при открытом коде нет. Простой принцип: зачем изобретать велосипед, раз есть уже готовый модуль? Что бы он работал обычно делают так: пишут модуль в виде библиотеки и/или простой программы для работы в терминале (текстовый интерфейс как в dos), а графический модуль отдельно. Система зароботка стротся по другому: платное техобслуживание, платные доработки по индивидуальным заказам, реклама. Хотя ни кто не запрещает и платные версии программ: не смотря на отсутствие реестра, есть куча возможностей ограничить работу программы.
Вообще программу можно запустить в wine, с предварительной установкой .net в wine. wine это эмулятор виндового api и некоторых других частей винды, необходимых для запуска программ. Но во первых многие его избегают из соображений безопасности: wine не только программам создаёт возможность работать, нои вирусам, уязвимостям... Во вторых, после красот графических наворотов Линукса, виндовый вид, мягко говоря, убог. В третьих wine всё таки эмулятор, и чувствительно тормозит работу программы; хотя конечно и меньше чем полный эмулятор.
Вот такая ситуация. Честно говоря при её разборе я сам кое что открыл для себя: к примеру, безполезность распространения программы с закрытым исходным кодом.
Что думаете по всему этому?
Поделиться42010-10-13 22:05:12
Да, забыл сказать... Моно из за его связи с .net практически ненавидят. Тормознутое создание. И, самое главное, единственная вещь в Линуксе, которая создаёт проблемы с безопасностью. Фактически моно не пользуются. В идеале луче перевести на другой ЯП.
Поделиться52010-10-14 18:35:34
Благодарю за столь подробную консультацию по Линуксу
Он мне немного знаком - собирал прошивку для роутера на его основе,
ну и админил через Телнет
На компе пока не ставил - нет времени, возможно, потом как-нибудь соберусь.
Насколько мне известно, .NET-программа действительно представляет собой
не машинный код (в смысле код для процессора), а байт-код CLI для
виртуальной машины .NET. И он должен на ней выполняться независимо от того,
где работает виртуальная машина. Не надо для этого ничего заново компилить,
иначе в чём же смысл кросс-платформенности?..
Конечно, запускать .NET через Wine - какой-то слишком уж извращённый способ
Исполняемый модуль должен работать на Mono:Runtime,
иначе зачем же он вообще нужен, разве не для этого?
Но надо разбираться, как там всё это работает...
Поделиться62010-10-19 19:29:57
Я знаю что .net задумывалась как аналог джава...
~$ mono /home/igor/KLD.exe ** (/home/igor/KLD.exe:4945): WARNING **: The following assembly referenced from /home/igor/KLD.exe could not be loaded: Assembly: System.Drawing (assemblyref_index=1) Version: 2.0.0.0 Public Key: 969db8053d3322ac The assembly was not found in the Global Assembly Cache, a path listed in the MONO_PATH environment variable, or in the location of the executing assembly (/home/igor/). ** (/home/igor/KLD.exe:4945): WARNING **: Could not load file or assembly 'System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=969db8053d3322ac, Retargetable=Yes' or one of its dependencies. ** (/home/igor/KLD.exe:4945): WARNING **: The following assembly referenced from /home/igor/KLD.exe could not be loaded: Assembly: System.Windows.Forms (assemblyref_index=2) Version: 2.0.0.0 Public Key: 969db8053d3322ac The assembly was not found in the Global Assembly Cache, a path listed in the MONO_PATH environment variable, or in the location of the executing assembly (/home/igor/). ** (/home/igor/KLD.exe:4945): WARNING **: Could not load file or assembly 'System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=969db8053d3322ac, Retargetable=Yes' or one of its dependencies. Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly 'System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=969db8053d3322ac, Retargetable=Yes' or one of its dependencies. File name: 'System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=969db8053d3322ac, Retargetable=Yes'
Поделиться72010-10-19 20:03:53
Я понимаю в чём загвоздка: нежелание открывать коды.
Когда я только создал тему, то меня интересовал только Русский календарь на Линукс. Я понимал, что возможен такой момент, когда автор пожелает оставить коды закрытыми. Поэтому рассчитывал только на получение запускаемого модуля для самостоятельной допилки: выявления ошибок, обвешивание графикой, создания аплета для панели и т.п.
Жаль конечно, что мы не можем совместить наши взгляды и возможности.
Постараюсь написать программу сам.
Успехов!
Слава Богам!
Поделиться82010-10-20 08:04:59
Постараюсь написать программу сам.
Вот почему я до сих пор не поставил себе Линух:
в нём всё приходится делать самому
Я понимаю в чём загвоздка: нежелание открывать коды.
Я этого не говорил Но верно, не горю таким желанием. Причин несколько:
- код программы не полностью принадлежит мне. Часть скопирована
из чужих примеров, которые, правда, были на С++, а я их переделал
на Паскаль, но сути это не меняет;
- хочется сохранить контроль над программой. Ведь столько сил вложено
Давай оставим этот вариант на крайний случай
"Колядинъ Даръ" задуман как универсальная программа - значит, обязан работать везде!
В том числе и в Моно. Думаю, что можно попробовать всё же запустить его там
(это проще "самостоятельной допилки" исходных кодов. И гораздо проще, чем написать
свою программу с нуля).
Для начала надобно разобраться, что за ошибки вылазят. Вижу, что Моно
ругается на нехватку модулей System.Drawing и Windows.Forms.
Но это стандартные вызовы любой .NET-программы. Попробуй для начала
добиться, чтобы в Моно запустилась хоть какая-нибудь .NET-программа.
Это условие выполняется?
P.S.: надеюсь, не обидел, перейдя на "ты"? на мой взгляд, так проще общаться.
Поделиться92010-10-25 00:10:25
Вот почему я до сих пор не поставил себе Линух: в нём всё приходится делать самому
А я как раз и поставил себе Линукс что бы не делать ни чего. И он оправдал эти намеринья.
хочется сохранить контроль над программой.
Не получится. Думаешь зачем делают патчи, новые версии, техподдержку?... Потому что закрытие кодов не даёт контроля над программой.
Попробуй для начала
добиться, чтобы в Моно запустилась хоть какая-нибудь .NET-программа.
Это условие выполняется?
Это теоретически невозможно. Я же писал:
моно совместим с .net, а .net не совместим с mono. В лучшем случае нужно перекомпилировать в моно под Линукс.
Я не специалист, любитель, но как я понял вся проблема в том, что при компиляции не на моно используются системные вызовы, которые есть только в винде. Или формат этих вызовов подходит только для винды...
Вот, кстати, по этому поводу (8й абзац сверху): Ссылка
Поделиться102010-10-25 20:09:01
Не получится. Думаешь зачем делают патчи, новые версии, техподдержку?... Потому что закрытие кодов не даёт контроля над программой.
Надеюсь, Колядинъ Даръ не настолько сложен,
чтобы к нему потребовались патчи и техподдержка
Правда, один небольшой апдейт будет очень скоро.
вся проблема в том, что при компиляции не на моно используются системные вызовы, которые есть только в винде. Или формат этих вызовов подходит только для винды
Вообще-то на твоей ссылке написано:
"я могу написать и скомпилировать программу под Linux,
используя Mono, а затем запустить ее под Windows
с установленной .NET Framework"
и далее:
"Программы могут быть запущены на любом типе процессора,
под управлением любой операционной системы, поддерживающей
платформу CLI, без необходимости перекомпиляции"
Что как раз подтверждает обратное!
поставил себе Линукс что бы не делать ни чего.
И он оправдал эти намеринья
Позволю себе предположить, что опыт в таком случае у тебя небольшой
А следовательно, ты просто не разбирался в Моно досконально.
Пусть нас рассудит более опытный линуксоид, ну или
попробую сам поковыряться (правда, пока времени маловато).
Поделиться112010-10-27 14:47:28
В общем, потратил полчаса и убедился-таки в собственной правоте.
Рекомендую прочесть небольшую статейку Чарли Калверта
WinForms: How to Use Mono to Get Microsoft .NET GUI Based Applications Running on Linux
особенно абзац про "Built in Windows, runs on Linux".
И добиться того, чтобы на твоей машине запустилось хоть
какое-нибудь .NET приложение для Винды (Wine ставить
всё же придётся, там кое-какие библиотеки от него нужны).
Дальше посмотрим по результатам.
А в будущем, постарайся не делать необоснованных заявлений
Поделиться122010-11-02 21:58:11
Правда, один небольшой апдейт будет очень скоро.
Буду ждать с нетерпением!
Вообще-то на твоей ссылке написано:
"я могу написать и скомпилировать программу под Linux,
используя Mono, а затем запустить ее под Windows
с установленной .NET Framework"
и далее:
"Программы могут быть запущены на любом типе процессора,
под управлением любой операционной системы, поддерживающей
платформу CLI, без необходимости перекомпиляции"
Что как раз подтверждает обратное!
В этой же цитате:
я могу написать и скомпилировать...,
используя Mono,
Это же хочу сказать и я.
Позволю себе предположить, что опыт в таком случае у тебя небольшой
Небольшой. Чуть больше полутора лет. Но занимаюсь плотно. Ронял систему не раз. Но проблем с рабочими, не под эксперимент, установками нет. А те что были, давно допилил или сам, или нашёл решение, или вышли патчи. Обновлениями не балуюсь, да и не создают они больших проблем, даже когда попадается редкая ошибка. Использую в основном Ubuntu LTS: с неё начинал и она мне наиболее известна и понятна. Сейчас делаю свой "Линукс с нуля".
А следовательно, ты просто не разбирался в Моно досконально.
Действительно не разбираюсь досконально. Потому и пришёл просить помощи у создателя.
А в будущем, постарайся не делать необоснованных заявлений.
Если чем обидел, то извиняюсь! Не со зла.
аглицкий я не знаю вообще, даже на уровне школы. Пользуюсь гуловским переводчиком. С чем смог познакомится на Русском, с тем и имею дело. Вот отсюда и возможные ошибки.
Со статьёй поработаю плотно. Отпишусь чуть позже. Мысли есть...
Отредактировано EagleStars (2010-11-02 22:01:01)
Поделиться132010-11-03 17:12:44
Да я без обид. Просто мой девиз: "Сначала убедись сам, потом спорь"
Что я пока прочитал, убеждает меня в том, что программы, написанные на .NET
и скомпилированные под Виндой, обязаны запускаться на Линуксе, и наоборот.
Разве что какая-то особая несовместимость вылезет, но это вероятно в поздних
версиях фреймворка, а у меня задействован только 2.0 (хотел поначалу вообще
первой версией ограничиться, но не вышло).
А что до статьи, там несложно. Сначала ставится сам Моно плюс Wine (в статье
есть ссылка на подробную инструкцию, но думаю, ты и так справишься), потом
WineLib. Запускать Wine не придётся, так что "дыры в системе" не будет
Затем запускаешь
mono kld.exe
Если будут проблемы, постараюсь помочь, чем смогу
Поделиться142013-05-05 20:16:34
Есть версия под Лин! Добро пожаловать в новую ветку: Колядинъ Даръ для Линуксъ ВЫШЕЛ!!! (видео)