Задать вопрос
  • Почему так странно работают сниппеты?

    @AquariusStar Автор вопроса
    Проблема решена. Виновником оказалось расширение Digital IDE. Он не давал нормально работать. Нашёл это случайно, когда решил установить данное расширение с портативную версию. И столкнулся именно с этой проблемой. Удаление данного расширения уже заработало как надо.
    Ответ написан
    Комментировать
  • Что такое таблица разделов?

    Комментировать
  • Почему не меняется свойство Background в ListViewItem?

    Надо бодяжить ControlTemplate. Не знаю, почему. Но напрямую это либо не работает, либо работает не так, как кажется.
    Дам вам свой укороченный пример:
    <Style TargetType="ListViewItem">
        <Setter Property="SnapsToDevicePixels" Value="true" />
        <Setter Property="OverridesDefaultStyle" Value="true" />
        <Setter Property="local:Properties.IsStatus" Value="{Binding IsStatus, Mode=OneWay}" />
        <Setter Property="local:Properties.IsConnection" Value="{Binding IsConnection, Mode=OneWay}" />
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type ListViewItem}">
                    <Border
                        x:Name="Border"
                        Background="{TemplateBinding Background}"
                        BorderBrush="{TemplateBinding BorderBrush}">
                        <ContentPresenter
                            x:Name="Content"
                            Margin="0,0,0,0"
                            TextBlock.Foreground="{TemplateBinding Foreground}"
                            HorizontalAlignment="Stretch"
                            VerticalAlignment="Stretch" />
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    
        <Style.Triggers>
    
            <MultiTrigger>
                <MultiTrigger.Conditions>
                    <Condition Property="local:Properties.IsStatus" Value="0" />
                    <Condition Property="local:Properties.IsConnection" Value="True" />
                </MultiTrigger.Conditions>
                <MultiTrigger.Setters>
                    <!--  Красный  -->
                    <Setter Property="Background" Value="#FFFFCDD2" />
                    <Setter Property="Foreground" Value="#FFB71C1C" />
                    <Setter Property="BorderBrush" Value="#00D32F2F" />
                </MultiTrigger.Setters>
            </MultiTrigger>
    
            <MultiTrigger>
                <MultiTrigger.Conditions>
                    <Condition Property="local:Properties.IsStatus" Value="9" />
                    <Condition Property="local:Properties.IsConnection" Value="True" />
                </MultiTrigger.Conditions>
                <MultiTrigger.Setters>
                    <!--  Серый  -->
                    <Setter Property="Background" Value="#FFF5F5F5" />
                    <Setter Property="Foreground" Value="#FF212121" />
                    <Setter Property="BorderBrush" Value="#00616161" />
                </MultiTrigger.Setters>
            </MultiTrigger>
    
            <Trigger Property="IsSelected" Value="True">
                <Setter Property="Background" Value="#FFFFE0B2" />
                <Setter Property="Foreground" Value="#FFE65100" />
            </Trigger>
    
            <MultiTrigger>
                <MultiTrigger.Conditions>
                    <Condition Property="IsSelected" Value="False" />
                    <Condition Property="local:Properties.IsConnection" Value="False" />
                </MultiTrigger.Conditions>
                <MultiTrigger.Setters>
                    <Setter Property="Background" Value="#FFFFFFFF" />
                    <Setter Property="Foreground" Value="#FF000000" />
                    <Setter Property="BorderBrush" Value="#00000000" />
                </MultiTrigger.Setters>
            </MultiTrigger>
    
            <Trigger Property="IsMouseOver" Value="True">
                <Setter Property="Background" Value="#FFE8EAF6" />
                <Setter Property="Foreground" Value="#FF1A237E" />
            </Trigger>
        </Style.Triggers>
    </Style>
    Ответ написан
    1 комментарий
  • Линус Торвальдс и последние комментарии об AVX-512?

    Снижение частоты вполне реально. Столь длинный массив на кристалле микросхемы непросто синхронизировать. Именно по этой причине видеокарты, VLIW-процессоры и любой вычислительный узел с параллельным вычислением работают всегда на пониженной частоте. Хотя на практике производитель может пойти на ухищрения и хитрости. Например, вместо вычисления одновременно 8 элементов будет четыре раза по два элемента. Это как пример. Есть реальный пример: Pentium 4, внутри АЛУ у него 16-разрядный. Для вычисления 32-разрядного элемента АЛУ выполняет в две стадии. Зато можно повысить частоту. Именно этим и объясняется столь длинный конвейер.

    А критику Торвальдса я как-то могу понять. AVX512 фактически дублирует существующие, используя более длинные регистры. Ещё читал разные материалы по поводу. AVX512 разбит на части, и будет поддерживаться в разных моделях по-разному. Представляете, какой геморрой будет у разработчиков компиляторов? Хотя, в общем, система команд x86/x86-64 всегда славилась бардаком (удивительно, что они ещё умудряются быстро выполнять команды). Я и не говорю о трудностях разработчиков уже конечных программ, как САПР, мультимедийные редакторы и прочее. Это, получается, надо указывать дополнительно, какие именно процессоры нужны. Это сильно сужает выбор. Но он прав, что лучше улучшать технологию в многопоточности. Ведь не каждый день будете вычислять матрицу 4х4. А вдруг захотите вычислить матрицу 5х5? Проблема. А многопоточностью всегда можно управлять. Например, я всегда отдаю предпочтение многопоточной реализации в разработке. Проще разрабатывать и контролировать. Когда ненужна высокая производительность, можно отключить ненужные ядра. Да. Я забыл добавить, что увеличение команд для x86/x86-64 неизбежно приводит к росту размера памяти микроопераций, который находится в процессоре.

    А если всё-таки нужна такая длинная операция, то тогда это лучше передать ускорителю вычислений. Например, видеокарты. Они давно умеют с этим работать. И регистры у них очень длинные. Можно реализовать в виде APU, как у AMD. Это куда практичней.
    Ответ написан
    1 комментарий
  • Есть ли хорошие книги для начала изучения c#?

    Подойдёт для начала эти сайты: metanit и professorweb.
    Ответ написан
    Комментировать
  • Как заставить заработать триггеры в ListViewItem?

    @AquariusStar Автор вопроса
    Решил проблему. Оказалось, в попытках решить вопрос с шаблонами данных отключил словарь ресурса временно в App.xaml, который и ссылался на этот стиль. А затем и забыл про него. Поэтому и не работало всё. Теперь полностью заработало как надо.
    Ответ написан
    Комментировать
  • Можно ли разрабатывать код для встраиваемых систем в Visual Studio?

    Я использовал вот такой вариант.
    Ответ написан
    Комментировать
  • Как правильно реализовать привязку между элементами и массивами?

    @AquariusStar Автор вопроса
    Проблема решилась.
    Надо было исправить:
    <ContentControl Grid.Row="1" Name="Channel_1" Content="{Binding ControlChannelDevice[0]}"/>
    <ContentControl Grid.Row="1" Name="Channel_2" Content="{Binding ControlChannelDevice[1]}"/>
    <ContentControl Grid.Row="1" Name="Channel_3" Content="{Binding ControlChannelDevice[2]}"/>
    <ContentControl Grid.Row="1" Name="Channel_4" Content="{Binding ControlChannelDevice[3]}"/>

    и:
    Channel_1.DataContext = ControlChannelsDevice;
    Channel_2.DataContext = ControlChannelsDevice;
    Channel_3.DataContext = ControlChannelsDevice;
    Channel_4.DataContext = ControlChannelsDevice;
    Ответ написан
    Комментировать
  • Как связать свойства Label из DataTemplate с Template Style?

    @AquariusStar Автор вопроса
    Решение найдено:
    <DataTemplate x:Key="SelectContext">
            <Border x:Name="Data">
                <Grid x:Name="ContentBase" Margin="1,0">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="Auto" />
                        <ColumnDefinition />
                        <ColumnDefinition />
                        <ColumnDefinition />
                    </Grid.ColumnDefinitions>
                    <Label
                        Grid.Column="0"
                        Margin="0"
                        Padding="0"
                        HorizontalAlignment="Left"
                        Content="{Binding Content, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ContentPresenter}}"
                        Foreground="{Binding Foreground, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ContentPresenter}}" />
                    <RadioButton
                        Name="_1"
                        Grid.Column="1"
                        Content="1"
                        Style="{StaticResource RadioButtonKeys}" />
                    <RadioButton
                        Name="_2"
                        Grid.Column="2"
                        Content="2"
                        Style="{StaticResource RadioButtonKeys}" />
                    <RadioButton
                        Name="_3"
                        Grid.Column="3"
                        Content="3"
                        Style="{StaticResource RadioButtonKeys}" />
                </Grid>
            </Border>
        </DataTemplate>

    Надо заменить с
    Foreground="{Binding Foreground, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ContentPresenter}}"
    на
    Foreground="{Binding Foreground, RelativeSource={RelativeSource Mode=Self}}"
    Ответ написан
    Комментировать
  • Нужен ли ASSEMBLER специалисту по информационной безопасности?

    Ассемблер обязателен специалисту по информационной безопасности. Я, как окончивший факультет по ИБ, могу сказать, что там его тоже изучают (не знаю, как у вас, но у меня уже было). Почему? Потому что исходный код на высоком уровне бывает не всегда очевидным. Приходится лезть на нижний уровень, чтобы искать там уязвимости. Бывают ещё такие решения, где лучше работать с ассемблером, чем с C++. Да и в арсенале специалиста по информационной безопасности должен быть богатый набор инструментов и языков программирования, чтобы уметь защищать от несанкционированного доступа, утечки или утраты ценной информации, нарушение работоспособности программы или устройства и так далее.
    Ответ написан
    Комментировать
  • Как получить новое значение при смене указателя в радиокнопке, а не старое?

    @AquariusStar Автор вопроса
    Нашёл решение в рамках данного вопроса. Оказывается, есть определённый нюанс следования событий.

    <!--  ListBoxItem  -->
        <Style x:Key="Item"
               BasedOn="{x:Null}"
               TargetType="{x:Type ListBoxItem}">
            <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
            <Setter Property="VerticalContentAlignment" Value="Stretch"/>
            <Setter Property="Foreground" Value="Black"/>
            <Setter Property="Height" Value="42"/>
            <Setter Property="Margin" Value="-2,0,0,0"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type ListBoxItem}">
                        <Grid x:Name="ListItem">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="*"/>
                                <ColumnDefinition Width="Auto"/>
                                <ColumnDefinition Width="Auto"/>
                            </Grid.ColumnDefinitions>
                            <TextBlock x:Name="ListItem_Text"
                                       Grid.Column="0"
                                       Padding="10,0"
                                       HorizontalAlignment="Left"
                                       VerticalAlignment="Center"
                                       FontSize="13"
                                       FontWeight="Medium"
                                       Foreground="{TemplateBinding Foreground}"
                                       Text="{TemplateBinding Content}"/>
                            <RadioButton x:Name="PART_SelectVariable_1"
                                         Grid.Column="1"
                                         Content="Вариант 1"
                                         IsEnabled="{TemplateBinding IsEnabled}"
                                         Style="{StaticResource {x:Type ToggleButton}}"/>
                            <RadioButton x:Name="PART_SelectVariable_2"
                                         Grid.Column="2"
                                         Content="Вариант 2"
                                         IsEnabled="{TemplateBinding IsEnabled}"
                                         Style="{StaticResource {x:Type ToggleButton}}"/>
                        </Grid>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsMouseOver" Value="True">
                                <Setter TargetName="ListItem" Property="Background" Value="#FF203FE6"/>
                                <Setter TargetName="ListItem_Text" Property="Foreground" Value="White"/>
                            </Trigger>
                            <Trigger Property="IsEnabled" Value="false">
                                <Setter TargetName="ListItem" Property="Background" Value="LightGray"/>
                                <Setter TargetName="ListItem_Text" Property="Foreground" Value="DarkGray"/>
                            </Trigger>
                            <Trigger Property="IsSelected" Value="True">
                                <Setter TargetName="ListItem" Property="Background" Value="#FFFDDFAD"/>
                                <Setter TargetName="ListItem_Text" Property="Foreground" Value="#FFA47C38"/>
                            </Trigger>
                            <Trigger Property="local:Styles.IsRadioButton" Value="-1">
                                <Setter Property="DataContext" Value="0"/>
                                <Setter TargetName="PART_SelectVariable_1" Property="IsChecked" Value="false"/>
                                <Setter TargetName="PART_SelectVariable_2" Property="IsChecked" Value="false"/>
                            </Trigger>
                            <DataTrigger Binding="{Binding ElementName=PART_SelectVariable_1, Path=IsPressed}"
                                         Value="True">
                                <Setter TargetName="ListItem" Property="Background" Value="#FFE8E9F2"/>
                                <Setter TargetName="ListItem_Text" Property="Foreground" Value="#FF9A9FB8"/>
                                <Setter Property="local:Styles.IsRadioButton" Value="1"/>
                                <Setter Property="IsSelected" Value="True"/>
                            </DataTrigger>
                            <DataTrigger Binding="{Binding ElementName=PART_SelectVariable_2, Path=IsPressed}"
                                         Value="True">
                                <Setter TargetName="ListItem" Property="Background" Value="#FFE8E9F2"/>
                                <Setter TargetName="ListItem_Text" Property="Foreground" Value="#FF9A9FB8"/>
                                <Setter Property="local:Styles.IsRadioButton" Value="2"/>
                                <Setter Property="IsSelected" Value="True"/>
                            </DataTrigger>
    
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>


    Если засунуть local:PeakHelper.IsRadioButton в триггер IsChecked, а вызывать смену активного указателя SelectedIndex в IsPressed, то данные буду получать старые. А надо было сразу всё в IsPressed.
    Так как IsPressed по следованию событий идёт первым, а вторым - уже IsChecked.
    Ответ написан
    Комментировать
  • Как подключить библиотеку в visual studio c#?

    Обозреватель решений - Ссылки - Правая кнопка мыши - Добавить ссылку - Обзор - Обзор... - Выбираете файл - Ставите галочку - Ок. В ссылках она должна появиться.
    5a91c9972dee5390980757.png
    Ответ написан
    1 комментарий
  • Какую выбрать среду разработки для shareware?

    Для Visual Studio 2017 Community сказано и ранее на этом ресурсе (полностью копирую эти пункты):
    1. Неограниченное количество пользователей может использовать Community-edition для проведения обучения, open-source разработки или научных исследований (и только для этого, "доля научных исследований" сюда не попадает, если она не равна 100%).
    2. Если у вас не больше 250 компьютеров и меньше миллиона долларов оборота в год, вы можете использовать Community-edition для любых целей для 5 пользователей.
    3. Если вы большой энтерпрайз - будьте любезны купить лицензии.
    Остальное есть на сайте Майкрософта.
    Ответ написан
    1 комментарий
  • Как сохранить лицензию windows 10?

    Обычно лицензия привязана к аппаратной части. Но касательно смены пользователя тут не уверен. Но мне кажется, что нужно отвязать лицензию от аккаунта на сайте, а потом под новым пользователем вводить этот ключ. Я такой метод не пробовал. Обычно у меня автоматически активируется лицензия при первом входе в аккаунт, если соответствующее железо есть в списке. Главное, чтобы у вас с собой всегда был ключ лицензии. Если не получится, то просто откажется, но не заблокируется. Только у вас было обновление. Поэтому ключ вводится только после установки ОС (во время установки этап ввода ключа пропускаем), и через настройки вводите ключ.
    Ответ написан
    Комментировать
  • Кто какой версией Visual Studio пользуется или какая версия лучшая?

    Visual Studio 2015 Community чем вам не угодила? Бесплатная и полновесная среда для программирования. VS 2017 Community тоже неплох, только вот они зачем выкинули в платную версию удобную фишку CodeLens, которая позволяет показывать, какие участки кода программы вызывают ту или иную функцию, метод или свойство.
    Ответ написан
    Комментировать
  • Кто и как разрабатывает принципиальные схемы процессоров (Intel/AMD) с миллиардами элементов?

    Сейчас большинство сложных микросхем проектируют на ПЛИСе, используя языки VHDL или Verilog (SystemVerilog). Это единственный способ более-менее быстро разработать и проверить работоспособность своей реализации. После проектирования они могут запустить пробную партию для испытаний. Если прошли испытания - запускают в серию, нет - отправляют на переработку, исправлять блоки (либо заменить, либо переместить в пределах одного кристалла). Расписывать схему потранзисторно нет смысла, да и много времени уйдёт. Поэтому потранзисторно схему расписывают только те, которые составляют IP-блоки или библиотеки на более низком уровне, чем VHDL или SV. А оборудование на основе этого уже достаёт нужный набор шаблонов и расставляет их в соответствии реализацией разработчика в нужном порядке.
    Ответ написан
    Комментировать
  • Как реализовать GPU на ПЛИС?

    Для реализации GPU может не хватить ресурсов ПЛИС. Тут понадобится мощные типа Intel Arria и Stratix или Xilinx Virtex. Но для простых графических реализаций будет достаточно и существующих. На opencores.org есть готовые решения. Можете изучить, как они реализованы. Но для начала вам надо изучить основы для вывода графической информации. Для начала вам нужно будет освоить VGA. Так он является основой всего, даже для крутых DisplayPort и HDMI.
    Ответ написан
  • C++ vs C#. Что больше подходит для моих задач?

    Для понимания указателей нужно знать язык программирования низкого уровня: ассемблер. Именно ассемблер может более точно объяснить принцип работы указателей. Так как указатели пришли из мира низкоуровневого программирования. Но написали вы странно: когда пишете про C#, то пишете, что знакомы с ООП, а когда пишете про C++ - уже незнакомы с ООП. ООП - это всего лишь подход к программированию. И этот подход для каждого языка программирования общий. Если хотите писать игры на C#, то для этого есть Unity. Да и для большинства прикладных задач будет достаточно C#. С++ - хорош для реализации производительных задач. Порой на практике используют смешанный подход: что требуется для высокой производительности - пишут на С++, а всё остальное - уже на C#. Вполне нормальная практика. В программировании важно уметь работать с алгоритмами, продумывать весь механизм работы, понимать, как всё работает. С плохим алгоритмом на любом языке программирования программа работать будет плохо.
    Ответ написан
    Комментировать
  • Располовиненный USB Type A?

    Ну у одного фиолетовый - скорее USB 2.0. По спецификации USB 2.0 может и чёрного цвета, но я чаще ещё встречал и белого и серого цвета. Главное, обязательно синий - это строго USB 3.0. Что касается язычка в середине. Скорее, производители наконец-то решили проблему по квантовой физике с суперпозицией соединителя данного типа. Попробуйте подключить с той и с той стороны, должны работать. У меня есть такой кабель с такой. Может работать так и так.
    Ответ написан
  • Какие технологии .NET стоит изучать сейчас?

    WPF нисколько не умирает. Это какие-то странные слухи. Например, в последней версии .NET Framework 4.7 включили обновления для WPF, и он достаточно внушительный. И он будет развиваться и дальше. UWP (у него такой же язык, что и у WPF: XAML) обычно завязан на магазине Microsoft и требует только последние версии Windows, насколько я помню. Ещё до сих пор существует WinForm, и он не собирается пока сдавать свои позиции. Если вам нравится этот язык, то работайте с ними, осваивайте новое. Изучать всё сразу не получится, слишком большой охват. Лучше изучать по ходу дела. Я именно так поступаю. Когда нужно новое или оптимальное решение, то ищу его. Главное, тут набить руку в программировании. WPF и ASP.NET MVC - разные направления. Первые нацелены на настольные решения, а вторые - уже веб-решения. А уж дальше уже зависит от поставленных задач.
    Ответ написан
    2 комментария