Search
Write a publication
Pull to refresh
3
0

Пользователь

Send message

Егор, спасибо за обзор библиотеки! Сам нахожусь в поиске готового решения для AvaloniaUI, пока думал писать свой велосипед. Единственное, чем отличается желаемый подход у меня в голове - это то, что локализация по-умолчанию должна быть уже "вшита" в XAML. То есть, имеем <Button Content="Click Me!" ... />. Это локализация по-умолчанию. А в рантайме меняем значение на локализованное. Такой подход позволяет приложению оставаться работоспособным, если потеряется папка с переводами. Минус - возможно, придётся перезапускать приложение при смене языка.

Вопрос: CLI и gpt - это хорошо, но есть ли какой-то уже готовый GUI инструмент для редактирования переводов для этой библиотеки? То, что можно отправить переводчику, не заставляя его открывать текстовый редактор? Желательно ещё с базовой проверкой ошибок (хотя бы на количество параметров в строке).

Me: Summarize the video: https://www.youtube.com/watch?v=LjtI64uEU8w

ChatGPT 4o: The video titled "Lessons from Nursing to the World" by Kathleen Bartholomew discusses the importance of compassionate care and the challenges nurses face in providing it. Bartholomew emphasizes the potential for human connection within the nursing profession and explores why this potential is often not realized. She addresses the systemic issues and personal barriers that prevent nurses from offering the compassionate care they are capable of providing, advocating for a cultural shift in the healthcare system to prioritize human connection and empathy.

For more detailed insights, you can watch the video on YouTube here.

Second attempt

Me: Summarize the video: https://www.youtube.com/watch?v=LjtI64uEU8w

ChatGPT 4o: The video titled "The Magic of a Fresh Start" by Derren Brown explores the psychological and motivational benefits of starting anew. Brown delves into how new beginnings, whether they are at the start of a new year, after a significant life event, or even just a new week, can provide a powerful psychological boost. He explains that these fresh starts help people to reframe their mindset, set new goals, and break free from past patterns that may have been holding them back. Brown's insights are aimed at encouraging viewers to harness the potential of fresh starts to create positive changes in their lives.

For more details, you can watch the video on YouTube here.

Conclusion: ChatGPT can make mistakes. Check important info. (c)

Юзаю Calibre в связке с Kindle уже много лет, c 2012 года, если быть точным, как купил свой первый Kindle. Отправляю книги по email на мой-мыл@kindle.com и они по WiFi прилетают в Kindle. Можно, конечно, просто скопировать файлы на Kindle, но тогда приложение Kindle на телефоне их не увидит. А иногда бывает очень удобно открыть книжку на телефоне и почитать, если застрял где-то вдали от дома.

PS: А рекламу на Kindle люблю. :) Из неё иногда можно найти что почитать нового, чего сам бы не нашел. Но лучше бы, конечно, там была бы обложка книги, которую читаешь последней.

Спасибо за статью! Редкость для хабра и вообще в последнее время для WPF.

WPF вроде бы тоже демонстрирует стабильность.

Хоронят WPF уже больше десятилетия, однако WPF имеет большую базу знаний, накопленную за годы. Практически любая проблема, с которой может столкнуться изучающий, уже обсуждена и решена на stackoverflow, codeproject, или где-то ещё.

То есть, порог входа достаточно низкий. Хотя, конечно, сделать красиво - нужно потрудиться. Это как HTML/CSS - лекго, а сверстать что-то красивое, не будучи дизайнером (а будучи программистом) - сложно.

Хотелось бы кросс-платформенность, конечно (чего мы, кажется, никогда не дождёмся), но хоронить рано.

Сам в состоянии перехода от 20+ лет использования стека MFC/C++ на WPF/C#.

Это не CSS, это обычный стили XAML.

Имелось в виду, что можно определить стили, а потом использовать их как в CSS:

<Window xmlns="https://github.com/avaloniaui"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Window.Styles>
        <Style Selector="TextBlock.h1">
            <Setter Property="FontSize" Value="24"/>
            <Setter Property="FontWeight" Value="Bold"/>
        </Style>
    </Window.Styles>

    <TextBlock Classes="h1">I'm a Heading!</TextBlock>
</Window>

Сравните это с XAML в WPF:

<TextBlock Style="{StaticResource TextBlock_H1}">I'm a Heading!</TextBlock>

Вроде похоже, а интуитивнее и приятнее, особенно, когда вот так:

<Button Classes="h1 blue"/>

Вот документация.

Ох, ещё! Тоже тяну с установкой в качестве основной, хотя предложение уже появилось в Updates (на виртуалке ещё с превью), изначально ждал вертикальный таскбар, чтоб переходить, а, как я вижу по комментариям, и без него хватает причин подождать.

С 2000 года пишу в студии. Сначала это была VC6 (для C++/MFC), потом сразу 2008 (к слову, C++/MFC проект до сих пор в ней). Для C# (WinForms, WPF) с 2015й на каждой версии. Сейчас стоит три студии на рабочей машине: 2008, 2019, 2022 Preview - последняя очень понравилась (особенно новые подсказки в коде - прям чудо какое-то, да и новая тёмная тема хороша). Как только выйдет релиз - удалю 2019ю.

Пробовал для C# другие IDE - ни одна не прижилась.

У меня есть .NET 5 WPF приложение, независимое от среды. С опцией PublishSingleFile, помимо непосредственно .exe файла размером 135 МБ, я получаю ещё дополнительный набор файлов.
Список доп. файлов
clrcompression.dll
clrjit.dll
coreclr.dll
D3DCompiler_47_cor3.dll
mscordaccore.dll
PenImc_cor3.dll
PresentationNative_cor3.dll
vcruntime140_cor3.dll
wpfgfx_cor3.dll

По сравнению с обычной публикацией, когда на выходе целая куча файлов, наличие 10 вместо одного не напрягает. Но всё-же, single file app должен быть single file app.

По существу вопроса, в том же самом проекте, при включении опции обрезки на уровне неиспользуемых сборок, происходит забавная штука: асинхронные команды WPF стартуют, то есть вызов из интерфейса проходит, но до пользовательского кода управление не доходит. В итоге кнопки нажимаются, но ничего не происходит. Отключение обрезки решает проблему — всё работает как должно. Публикую приложение не из командной строки, а из-под Visual Studio 16.8.? (сейчас 16.9.5, но последняя публикация проводилась ещё в 16.8).

Приложение используется для внутренних нужд, поэтому ошибка была не критичной и пересборка без обрезки вполне устраивает.

PS: Долго ждал .NET 5, но оказалось, что и он не решает проблем с доставкой до клиента. По-прежнему, чтобы доставить клиенту что-то небольшое по размеру, приходится использовать .NET Framework 4.5, так как он скорее всего уже есть у клиента. Надеяться на то, что у клиента установлен .NET 5 пока нельзя, а заставлять скачивать 100 МБ для чего-то маленького (условно, калькулятор) — кажется расточительно.

Одно хорошо, что результат относительно неплохо сжимается (в моём случае ~50%).
Здорово, давно жду этого переиздания. При покупке бумажного, электронный будет в комплекте, как раньше?
Напишите, с удовольствием прочитаем! :-) Было бы здорово, если помимо трудоустройства был бы рассмотрен trabalhador independente (aka фрилансер).
Спасибо за ответ!
Давно смотрю в сторону Avalonia, а сейчас как раз намечается старт long-term проэкта. То есть не написал и забыл, а придётся «возиться» с ним долго. Подходит Avalonia на долгосрок — какова Ваша стратегия — активное развитие ломает ли API?

И ещё вопрос — а как у Вас дела с виртуализацией данных обстоят? Списки/гриды и деревья, в которые можно добавить миллион элементов? Спасибо!
Спасибо, на будущее пригодится такая функция.

А я пользуюсь бесплатной MetroStudio от Syncfusion — по сути, эта прога — набор векторных иконок, и тоже может сохранять как XAML, но только свои (т.е. которые в ней).
В WPF для таких относительно простых иконок можно использовать объекты Geometry, скопировав в них path прямо из SVG. И вынести их все в одельный ResourceDictionary, очень удобно получается. То есть вообще никакие сторонние библиотеки не нужны. Не знаю, будет ли это работать в Xamarin[.Forms], но должно, учитывая, что они очень похожи.

SVG
<?xml version="1.0" encoding="utf-8"?>
<svg xmlns="http://www.w3.org/2000/svg" height="48" width="48" viewBox="0 0 48 48">
  <g>
    <path id="path1" transform="rotate(0,24,24) translate(0,0) scale(1.5,1.5)  " fill="#000000" d="M14.246002,23.394012L16.850006,23.394012 16.850006,26.235001 14.246002,26.235001z M15.785995,5.7660065C17.520004,5.7660065 18.862,6.2390137 19.809006,7.1880035 20.833008,8.2109985 21.347,9.5140076 21.347,11.090012 21.347,12.432007 20.872009,13.575012 19.927002,14.522003 19.374008,15.075012 18.624008,15.825012 17.677002,16.768005 16.970001,17.479004 16.613998,18.546005 16.613998,19.964005L14.483002,19.964005C14.483002,18.229004 14.759003,16.92601 15.311005,16.061005 15.706009,15.430008 16.456009,14.561005 17.559006,13.456009 18.190002,12.827011 18.507004,12.077011 18.507004,11.208008 18.507004,10.106003 18.229004,9.276001 17.677002,8.7230072 17.20401,8.25 16.535995,8.0140076 15.667007,8.0140076 14.956009,8.0140076 14.363998,8.25 13.893005,8.7230072 13.104004,9.5140076 12.710007,10.695999 12.710007,12.274002L9.9869995,12.274002C9.9869995,10.223007 10.658997,8.526001 11.999008,7.1880035 12.945999,6.2390137 14.208008,5.7660065 15.785995,5.7660065z M16,3.131012C8.8910065,3.131012 3.1290054,8.8930054 3.1290054,16 3.1290054,23.108002 8.8910065,28.869003 16,28.869003 23.104996,28.869003 28.867004,23.108002 28.867004,16 28.867004,8.8930054 23.104996,3.131012 16,3.131012z M16,0C24.820007,0 32,7.178009 32,16 32,24.822006 24.820007,32 16,32 7.1760025,32 0,24.822006 0,16 0,7.178009 7.1760025,0 16,0z" />
  </g>
</svg>


XAML
<Geometry x:Key="IconQuestion">M14.246002,23.394012L16.850006,23.394012 16.850006,26.235001 14.246002,26.235001z M15.785995,5.7660065C17.520004,5.7660065 18.862,6.2390137 19.809006,7.1880035 20.833008,8.2109985 21.347,9.5140076 21.347,11.090012 21.347,12.432007 20.872009,13.575012 19.927002,14.522003 19.374008,15.075012 18.624008,15.825012 17.677002,16.768005 16.970001,17.479004 16.613998,18.546005 16.613998,19.964005L14.483002,19.964005C14.483002,18.229004 14.759003,16.92601 15.311005,16.061005 15.706009,15.430008 16.456009,14.561005 17.559006,13.456009 18.190002,12.827011 18.507004,12.077011 18.507004,11.208008 18.507004,10.106003 18.229004,9.276001 17.677002,8.7230072 17.20401,8.25 16.535995,8.0140076 15.667007,8.0140076 14.956009,8.0140076 14.363998,8.25 13.893005,8.7230072 13.104004,9.5140076 12.710007,10.695999 12.710007,12.274002L9.9869995,12.274002C9.9869995,10.223007 10.658997,8.526001 11.999008,7.1880035 12.945999,6.2390137 14.208008,5.7660065 15.785995,5.7660065z M16,3.131012C8.8910065,3.131012 3.1290054,8.8930054 3.1290054,16 3.1290054,23.108002 8.8910065,28.869003 16,28.869003 23.104996,28.869003 28.867004,23.108002 28.867004,16 28.867004,8.8930054 23.104996,3.131012 16,3.131012z M16,0C24.820007,0 32,7.178009 32,16 32,24.822006 24.820007,32 16,32 7.1760025,32 0,24.822006 0,16 0,7.178009 7.1760025,0 16,0z</Geometry>

Пример использования
<Button>
    <Path Data="{StaticResource IconQuestion}" Height="16" Fill="Black" VerticalAlignment="Center" HorizontalAlignment="Center" Stretch="Uniform"/>
</Button>


Если SVG сложный и состоит из нескольких path, то их можно скопировать один за другим: <Geometry...>M...zM...zM...z</Geometry>
Полина, добрый день, cпасибо за Ваш ответ! Проблема решилась после майских праздников — я попросил заменить мне бумажную книгу на электронную — заменили и прислали ссылку. Комментарий мой здесь был написан, кажется, 11 мая, но ожидал модерации и был одобрен только вчера (до одобрения он не был доступен ни к отмене, ни к редактированию). В настоящее время всё хорошо (только, конечно, впечатление осталось не очень радужное). В любом случае, большое спасибо Вам за ответ и содействие, подумываю, всё-же, заказать бумажный вариант в будущем (и уже терпеливо дождаться его).
Polina_G_23, добрый день! Посодействуйте, пожалуйста, с заказом №32594, вышлите PDF. У меня сложилось впечатление, что обращения (дважды писал через форму, дважды на почту, главному редактору только не стал писать) уходят в пустоту. Папку «спам» проверял. Пробовал позвонить — результат аналогичный. Заказ был сделан 24 апреля, так и висит со статусом «принят в работу». Спасибо.

Регулярная физкультура, подобранная по душе и темпераменту хорошо помогает отдохнуть головой: бег, скалолазание, плавание, велосипед, качалка, танцы, единоборства, лыжи, походы (хайкинг), да что угодно. Можно чередовать. Главное регулярно и без фанатизма (т.е. не путать со спортом высоких достижений).


Для себя лично, работая дома, не нашел ни одного домашнего хобби.

Подскажите, пожалуйста, где потом искать записи докладов?
Прочитав Ваш совет, установил утилиту для RAM disk'а, ту, что выдается первым номером по ссылке в статье. Произвёл замеры (правда, не для Xamarin, а для C++/MFC проекта). Получилась не такая уж и большая выгода в моём случае. На полную перекомпиляцию ушло 4:40 на RAM диске против 4:55 на SSD. 15 секунд — это 5% разницы всего, а заморочки с диском и возможная потеря данных в случае непредсказуемого выключения, на мой взгляд, не стоят того.

Information

Rating
Does not participate
Registered
Activity