Не будет проблем если в приложении уже подгружается куча стилей для разных тем (скинов).
Нет. Не будет. Единственное требование — доступ к ним должен быть не через StaticResource, а через DynamicResource.
Или в итоге для каждой темы надо будет делать копии с различными переводами? Или визуальные стили отдельно — текст отдельно?
Как хотите.
Лично я предпочитаю отдельные файлы локализации для каждого из языков. Правда не только со строками, но и с локализабельными элементами стиля (картинки / векторная графика). А сами стили отдельным .xaml.
P.S.: Если что не понятно и есть достаточно заинтересовавшихся, могу и полноценную статью написать.
Использование механизма ресурсных сборок для локализации как минимум неудобно.
Лично я предпочитаю выностить как строки, так и другие (картинки) локализуемые ресурсы в [подгружаемый/изменяемый] xaml-стиль.
Мороки при этом никак не больше, а плюсы вполне очевидны.
В идеале, при изменении настроек должны быть кнопки «Сохранить» и «Отменить».
Изначально «Сохранить» дизеблена. При изменении настроек энейблится.
Плюс, если есть древо категорий настроек, не вредно подсвечивать (жирным шрифтом, например) те категории, где есть изменения.
Да и сами изменения тоже.
А насчёт «Применить» — она нужна, но далеко не везде.
Кроме того, наличие кнопок и «Применить» и «Отменить» предполагает возможность отката изменений после «применить».
Если это не так — грош цена такому «Применить».
Например, Вы можете писать на инструкциях SSE 2,3,4 и более, 3DNow (технология AMD) и прочих.
Насчёт SSE лучше смотрите в сторону Mono.Simd.
Надеюсь и в родном Microsoft .Net такое со временем появится.
В принципе, можно воспользоваться утилитой .NET ngen.exe, чтобы сгенерировать образы нативных кодов для Ваших .NET сборок, но не всегда это получается.
В большинстве случаев это и не нужно.
Если действительно есть «узкое место» в производительности, намного логичнее реализовать его в native dll.
… можно развить это направление и динамически генерировать себе любой код. При это не надо никаких MSIL инъекций и прочего, пишите на нативном коде и используйте его в своих программах на C#
Протестируйте производительность своего варианта.
После этого Вы и сами поймёте почему практическая ценность Вашего решения близится к 0.
1. Хранение EXIF/XMP метаданных в PNG практически никем не поддерживается.
Хотя механихм для такого хранения и существует.
2. Сжатие PNG (вернее фильтры) работаю на ~30% от возможного.
Из-за гениальной строки в спецификации формата «фильтры долждны применяться не к цветовым состваляющим, а к байтам)».
Про то как это работает с RGB/RGBA и говорить нечего. А с 16-битной глубиной — просто никак.
3. Нет поддержки многостраничности/многокадровости.
В этом плане на сегодня вообще только TIFF отличился.
Про APNG даже и думать не стоит. Как стандарт он уже отвергнут PNG Group.
Использую ProgressBlock в IDisposable.
Изначально с marquee style.
В процессе можно обновлять (и отменять):
///<summary>
///Update progress bar
///</summary>
///<param name='current'>Current progress value</param>
///<param name='total'>Total progress value</param>
///<returns><c>False</c> for user cancel.</returns>
public bool UpdateProgress(long current, long total)
IDisposable, кроме всего прочего, позволяет красиво организовывать работу с блоками кода.
Например следующий код:
using (new Log())
{
// ...
if (Services[INotifier]==null)
{
Log.Warn("Notifier not set!");
return Log.Result(false);
}
else
{
// ...
}
}
Создаёт лог с таким содержимым:
{ 2010-03-12 16:39:06Z Engine.Notify() [..\src\Engine.cs:126]
! +0001 Notifier not set!
= +0000 [Result]=[false]
} 0,0002 s / +12 288,00 b
Просто и красиво.
Другой вариант полезнюшки
public class ForceCulture : IDisposable
{
public ForceCulture(CultureInfo culture)
{
//...
}
public ForceCulture() : this(CultureInfo.InvariantCulture)
{
}
//...
}
В общем, идея, думаю понятна.
Кстати, если есть свои варианты использования — делитесь.
Microsoft .NET (Non-OSS), Microsoft Compact .NET (Non-OSS), Microsoft .NET Mini (OSS)
Mono (OpenSource), GnuDotNet (OpenSource)
… и это не упоминая «не доделанных» и под конкретную платформу (Symbian и т.д.).
Для того чтобы «добиться конструктивного обсуждения», советую хотя бы прогуглить по теме.
Мы в этом топике что, про все программы вообще говорим?
Может я чего и не понимаю, но смысл обсуждения — MS vs OSS.
В данном случае «кто лучше документирован».
Давайте теперь посмотрим те проекты, которые обсуждаются в статье.
Linux Kernel, Samba, Quagga, eGroupware.
Пардон, но где в статье обсуждаются эти продукты?
И, таки да, Linux Kernel. Ещё раз пардоньте, тут и так тролли зажрались, так что комментировать просто не буду.
Давайте так, вы мне приведёте в пример любой недодокументированный oss-проект, упомянутый в данном топике
Ок. Пробежался.
Первое что бросилось в глаза — FireBird SQL.
Документация как таковая есть (по большей части, правда ещё с InterBase).
Но если писать что-то более серьёзное чем «складской учёт за еду»…
В общем кто работал, тот меня поймёт.
Тогда Вы меня убелите, иэто будет Ваша полноправная победа.
Я не для «победы» пишу.
Я выразил своё мнение, Вы сузили рамки со всего OSS «до упомянутых».
Я ответил. И не думаю что кого-то в чём-то убедил.
Но (возможно) кто-то из прочитавших всё же обратит внимание на то о чём я писал и в следующий раз будет оценивать именно продукт, а не точку зрения сферического-большинства-в-вакумме на его производителя.
Или хотя бы поинтересуется мнением разработчиков об их продукте, а не просто поверит очередной рекламе «самой защищённой системы».
Ну а в идеале — примет участие в написании или переводе той самой документации.
Соотношение «документирован хоть как-то» к «не документирован вообще» в самом лучшем случае 1:3.
Кстати, я сам не раз участвовал в опенсорц проектах, и должен вам сказать, те кто пишет опенсорц, давно уже не идеализирут весь этот процесс. В отличие от т.н. «идеологов» (читай «толстых известных троллей»), которые только орут, мешают работать и при этом ещё и чего-то требуют от разработчиков.
Не поленитесь, спросите у кого-нибудь из разработчиков в той же Mozilla, как они относятся к продуктам MS. И как относятся к продвижению Firefox как «самого безопасного бровзера». И хотели бы они достигнуть того же уровня документирования, что и у MS (несмотря на то, что Firefox — пример весьма неплохо документированного проекта).
Вообще-то ситуация ровно обратная: фopen source по большей части документирован вполне прилично, а вот проприетарщиков, пишущих нормальную документацию — по пальцам увечной руки.
В большинстве open source проектов документации нет как таковой. И это не моё личное предвзятое мнение, а часть идеологии.
Изначально (пока опенсорц был уделом одиночек) принцип «есть код, кому нужно — разберётся» вполне успешно работал.
Сейчас нет. И с этим наиболее серьёзные проекты пытаются бороться (более или меннее успешно).
Да и речь шла не о «проприетарщиках вообще», а конкретно об MS.
Исторически сложилось.
Точно то же я могу сказать о негативном отношении к MS.
Правда это совершенно ничего не объясняет, но с другой стороны не похоже ведь что здесь кто-то кого-то слушает.
популярность того же OO.o РЕЗКО поползла вверх, как только за MSO надо стало либо платить, либо сидеть.
Точно так же как и Linux'а.
… а потом поползла вниз.
Для домашнего сектора — всё это замечательные продукты (да, я использую).
А вот для настоящей работы пока слабовато.
А ещё есть куча софта от «уважаемых людей», который вынуждают использовать, и который работает только под MS Win, да и то зачастую криво-косо.
Странно, почему же нет опенсорц вариантов этого софта.
И под wine он тоже видимо не идёт.
И вообще кто, где и кого вынуждает?
А ещё есть госзакупки, где предпочитают греть лапки на как можно более дорогостоящих вариантах.
Моё личное мнение — исползование опен сорц в госсекторе это хорошо.
Но только после серьёзной как экономической, так и тех экспертизы.
Иначе у нас будет всё то же что и пару лет назад, зато «бесплатно и на компьютерАх».
А ещё есть win-админы: 9 из 10 сущие долбодятлы, которых и пользователями-то можно назвать только из жалости
Грамотного win-админа найти ох как не просто. Большинство уже работают. Перетащить тяжело.
Зато *nix админов пруд-пруди (судя по комментам их как минимум 50% от хабраюзеров).
Только большинство почему-то работает не по специальности. Ну да ладно, чего я придираюсь.
Странные у вас интересы.
Всё. Хрен с ней, с кармой.
Я профессионал, который любит свою работу.
А профессионалы ежедневной рутине предпочитают более интересные и сложные задачи.
В том числе и в ущерб собственному заработку.
Кому-то может показаться что я не скромен.
Да, это так, я нихрена не скромен. И нет, насчёт профессионала это не только моё мнение.
Dixi.
Рынок — это интересы чиновников и капиталистов
Рынок делаем мы с Вами. Причём не болтовнёй, а своим реальным выбором конкретного продукта.
Может не полностью, может не всегда, но в основном его делаем мы.
И если нам не нравится что с ним происходит, винить стоит и себя тоже, а не валить всё на страшную систему, которая нам всех ужас как мешает.
P.S: А вообще — спасибо за комментарий, это всяко серьёзнее чем втихую гадить в карму.
Ничего кроме интеграции в продукции m$ хорошего нет. Работа многих вещей очень неочевидна и в документации не очень хорошо описана. Чтобы разобраться как же там все работает нужно купить еще талмуд за полторы тысячи рублей и прочесть внимательно. И после этого еще вопросы появляются порой =).
Очень аргументировано.
Особенно учитывая то, что плохая документация болезнь всего опенсорц.
То что много администраторов windows на рынке, так это только потому, что эта ОС наиболее распространена в мире =).
Может есть смысл подумать почему она так распространена?
И у пользователей и у админов давно уже есть выбор.
Причём если не вдаваться в детали, он вроден бы очевиден — «есть же бесплатное!».
И всё таки наиболее распространено всё же «платное».
Очень хорошо работать с сетью windows, если все важные сервера работают под *nix. Как минимум очередному трояну будет сложнее унести конфиденциальную информацию из корпоративной сети. Да и свежая эпидемия будет валить только машины работников.
Не стоит называть «админами» тех, у кого завирусованная/затрояненная пользовательская машина валит всю сетку.
Не зависимо от платформы.
И… да. Юниксовому админу тоже проще переустановить windows, чем ловить заразу ).
Любому админу проще переустановить любую систему.
Это скорее вопрос заботы о пользователе.
Да и ловить интереснее :)
Про почту =). Протокол imap разработан, насколько я помню не microsoft
От протокола до грамотной реализации путь весьма неблизкий.
Получается плюс всё же MS.
З.Ы. А для хорошего специалиста разница в выборе ПО зависит только от его личных предпочтений. Нет нерешаемых проблем =).
ИМХО:
Для хорошего специалиста выбор ПО зависит от функциональности и цены.
А «личные предпочтения» в этом скорее мешают.
Опять же «рынок предпочитает MS». Даже «бесплатность» не всегда перевешивает функциональность.
По памяти, ибо не с рабочей машины пишу.
За описки — не бить. Весь MSDN в мозг не влазит.
Загрузка XAML на C#:
Файл XAML ресурсов:
Использование — XAML:
Использование — C#:
Динамическая загрузка/смена поддерживается.
Кстати, советую на какую-нибуть комбинацию клавиш повесить принудительную загрузку.
Нет. Не будет. Единственное требование — доступ к ним должен быть не через StaticResource, а через DynamicResource.
Как хотите.
Лично я предпочитаю отдельные файлы локализации для каждого из языков. Правда не только со строками, но и с локализабельными элементами стиля (картинки / векторная графика). А сами стили отдельным .xaml.
P.S.: Если что не понятно и есть достаточно заинтересовавшихся, могу и полноценную статью написать.
Использование механизма ресурсных сборок для локализации как минимум неудобно.
Лично я предпочитаю выностить как строки, так и другие (картинки) локализуемые ресурсы в [подгружаемый/изменяемый] xaml-стиль.
Мороки при этом никак не больше, а плюсы вполне очевидны.
Изначально «Сохранить» дизеблена. При изменении настроек энейблится.
Плюс, если есть древо категорий настроек, не вредно подсвечивать (жирным шрифтом, например) те категории, где есть изменения.
Да и сами изменения тоже.
А насчёт «Применить» — она нужна, но далеко не везде.
Кроме того, наличие кнопок и «Применить» и «Отменить» предполагает возможность отката изменений после «применить».
Если это не так — грош цена такому «Применить».
Насчёт SSE лучше смотрите в сторону Mono.Simd.
Надеюсь и в родном Microsoft .Net такое со временем появится.
В большинстве случаев это и не нужно.
Если действительно есть «узкое место» в производительности, намного логичнее реализовать его в native dll.
Протестируйте производительность своего варианта.
После этого Вы и сами поймёте почему практическая ценность Вашего решения близится к 0.
1. Хранение EXIF/XMP метаданных в PNG практически никем не поддерживается.
Хотя механихм для такого хранения и существует.
2. Сжатие PNG (вернее фильтры) работаю на ~30% от возможного.
Из-за гениальной строки в спецификации формата «фильтры долждны применяться не к цветовым состваляющим, а к байтам)».
Про то как это работает с RGB/RGBA и говорить нечего. А с 16-битной глубиной — просто никак.
3. Нет поддержки многостраничности/многокадровости.
В этом плане на сегодня вообще только TIFF отличился.
Про APNG даже и думать не стоит. Как стандарт он уже отвергнут PNG Group.
TIFF = сжатие с потерями / без потерь + Alpha + метаданные
JPEG XR = сжатие без потерь / без потерь + Alpha + selective lossy Alpha + Slices + метаданные
А именно в вебе от JPEG XR будет весьма немало пользы.
Изначально с marquee style.
В процессе можно обновлять (и отменять):
IMHO лучше чем WaitCursor :)
Например следующий код:
Создаёт лог с таким содержимым:
Просто и красиво.
Другой вариант полезнюшки
В общем, идея, думаю понятна.
Кстати, если есть свои варианты использования — делитесь.
Всё что я перечислил, использовал лично.
Пардон, но «конструктивного обсуждения» Вы не добились.
Microsoft .NET (Non-OSS), Microsoft Compact .NET (Non-OSS), Microsoft .NET Mini (OSS)
Mono (OpenSource), GnuDotNet (OpenSource)
… и это не упоминая «не доделанных» и под конкретную платформу (Symbian и т.д.).
Для того чтобы «добиться конструктивного обсуждения», советую хотя бы прогуглить по теме.
Включая «ненужность сообществу».
И что обсуждать?
Если не в курсе, подверждена как OpenSource.
www.opensource.org/licenses/ms-pl.html
www.microsoft.com/opensource/project-highlights.aspx
Это к разговорам о «привязке к платной ОС».
Может я чего и не понимаю, но смысл обсуждения — MS vs OSS.
В данном случае «кто лучше документирован».
Пардон, но где в статье обсуждаются эти продукты?
И, таки да, Linux Kernel. Ещё раз пардоньте, тут и так тролли зажрались, так что комментировать просто не буду.
Ок. Пробежался.
Первое что бросилось в глаза — FireBird SQL.
Документация как таковая есть (по большей части, правда ещё с InterBase).
Но если писать что-то более серьёзное чем «складской учёт за еду»…
В общем кто работал, тот меня поймёт.
Я не для «победы» пишу.
Я выразил своё мнение, Вы сузили рамки со всего OSS «до упомянутых».
Я ответил. И не думаю что кого-то в чём-то убедил.
Но (возможно) кто-то из прочитавших всё же обратит внимание на то о чём я писал и в следующий раз будет оценивать именно продукт, а не
точку зрения сферического-большинства-в-вакумме наего производителя.Или хотя бы поинтересуется мнением разработчиков об их продукте, а не просто поверит очередной рекламе «самой защищённой системы».
Ну а в идеале — примет участие в написании или переводе той самой документации.
Вот это меня устроит.
Посмотрите на:
sourceforge.net/
github.com/
и т.д.
Соотношение «документирован хоть как-то» к «не документирован вообще» в самом лучшем случае 1:3.
Кстати, я сам не раз участвовал в опенсорц проектах, и должен вам сказать, те кто пишет опенсорц, давно уже не идеализирут весь этот процесс. В отличие от т.н. «идеологов» (читай «толстых известных троллей»), которые только орут, мешают работать и при этом ещё и чего-то требуют от разработчиков.
Не поленитесь, спросите у кого-нибудь из разработчиков в той же Mozilla, как они относятся к продуктам MS. И как относятся к продвижению Firefox как «самого безопасного бровзера». И хотели бы они достигнуть того же уровня документирования, что и у MS (несмотря на то, что Firefox — пример весьма неплохо документированного проекта).
Думаю вы будете весьма удивлены ответом.
В большинстве open source проектов документации нет как таковой. И это не моё личное предвзятое мнение, а часть идеологии.
Изначально (пока опенсорц был уделом одиночек) принцип «есть код, кому нужно — разберётся» вполне успешно работал.
Сейчас нет. И с этим наиболее серьёзные проекты пытаются бороться (более или меннее успешно).
Да и речь шла не о «проприетарщиках вообще», а конкретно об MS.
Точно то же я могу сказать о негативном отношении к MS.
Правда это совершенно ничего не объясняет, но с другой стороны не похоже ведь что здесь кто-то кого-то слушает.
Точно так же как и Linux'а.
… а потом поползла вниз.
Для домашнего сектора — всё это замечательные продукты (да, я использую).
А вот для настоящей работы пока слабовато.
Странно, почему же нет опенсорц вариантов этого софта.
И под wine он тоже видимо не идёт.
И вообще кто, где и кого вынуждает?
Моё личное мнение — исползование опен сорц в госсекторе это хорошо.
Но только после серьёзной как экономической, так и тех экспертизы.
Иначе у нас будет всё то же что и пару лет назад, зато «бесплатно и на компьютерАх».
Грамотного win-админа найти ох как не просто. Большинство уже работают. Перетащить тяжело.
Зато *nix админов пруд-пруди (судя по комментам их как минимум 50% от хабраюзеров).
Только большинство почему-то работает не по специальности. Ну да ладно, чего я придираюсь.
Всё. Хрен с ней, с кармой.
Я профессионал, который любит свою работу.
А профессионалы ежедневной рутине предпочитают более интересные и сложные задачи.
В том числе и в ущерб собственному заработку.
Кому-то может показаться что я не скромен.
Да, это так, я нихрена не скромен. И нет, насчёт профессионала это не только моё мнение.
Dixi.
Рынок делаем мы с Вами. Причём не болтовнёй, а своим реальным выбором конкретного продукта.
Может не полностью, может не всегда, но в основном его делаем мы.
И если нам не нравится что с ним происходит, винить стоит и себя тоже, а не валить всё на страшную систему, которая нам всех ужас как мешает.
P.S: А вообще — спасибо за комментарий, это всяко серьёзнее чем втихую гадить в карму.
Очень аргументировано.
Особенно учитывая то, что плохая документация болезнь всего опенсорц.
Может есть смысл подумать почему она так распространена?
И у пользователей и у админов давно уже есть выбор.
Причём если не вдаваться в детали, он вроден бы очевиден — «есть же бесплатное!».
И всё таки наиболее распространено всё же «платное».
Не стоит называть «админами» тех, у кого завирусованная/затрояненная пользовательская машина валит всю сетку.
Не зависимо от платформы.
Любому админу проще переустановить любую систему.
Это скорее вопрос заботы о пользователе.
Да и ловить интереснее :)
От протокола до грамотной реализации путь весьма неблизкий.
Получается плюс всё же MS.
ИМХО:
Для хорошего специалиста выбор ПО зависит от функциональности и цены.
А «личные предпочтения» в этом скорее мешают.
Опять же «рынок предпочитает MS». Даже «бесплатность» не всегда перевешивает функциональность.