• ООП головного мозга?

    AtomKrieg
    @AtomKrieg
    Давай я поищу в Google за тебя
    Когда вы пишете лабораторку или собственный маленький проектик, то можете делать как вам угодно.
    А теперь представьте себе ситуацию когда в команде программистов вы написали класс с публичными переменными, а потом подошел руководитель проекта и сказал что на каждое присваивание переменной надо делать запись в лог-файл. Теперь все программисты, которые пользовались вашим классом, вместо работы переписывают код с переменных на сеттеры.

    Советую почитать "Совершенный код", чтобы не задавать подобные вопросы.
    Ответ написан
    2 комментария
  • Какой самый малозатратный в памяти браузер?

    zooks
    @zooks
    Frontend
    Меньше всех оперативки кушает Firefox. А что касается видеопамяти, то Chrome.
    Ответ написан
    4 комментария
  • При выполнении обрезаются края окна в WPF. В чем тут проблема?

    lexxpavlov
    @lexxpavlov
    Программист, преподаватель
    Не могу у себя проверить, у меня всё видно хорошо (у меня Win7).

    Попробуйте убрать все настройки внешнего вида. Будет ли нормально видно?
    <StackPanel>
        <Label Visibility="Collapsed" Content="Неверные данные авторизации" HorizontalAlignment="Center" Margin="10,7,10,0" Width="Auto" Foreground="Red"/>
        <Label Content="Логин:"/>
        <TextBox x:Name="loginTxt" TextWrapping="NoWrap"/>
        <Label Content="Пароль:"/>
        <PasswordBox x:Name="passwordTxt"/>
        <Button Content="Войти"/>
    </StackPanel>

    Если не изменится, то уберите атрибуты в Window.
    Если заработало, то постепенно возвращайте атрибуты в элементы. Или установите общий стиль для всех элементов сразу, чтобы для всех элементов стали одинаковые стили:
    <Window.Resources>
        <Style x:Key="CommonStyle" TargetType="Control">
            <Setter Property="Margin" Value="5" />
            <Setter Property="Padding" Value="5" />
            <Setter Property="FontSize" Value="16"/>
            <Setter Property="Width" Value="150"/>
        </Style>
        <Style TargetType="Label" BasedOn="{StaticResource CommonStyle}"/>
        <Style TargetType="TextBox" BasedOn="{StaticResource CommonStyle}"/>
        <Style TargetType="PasswordBox" BasedOn="{StaticResource CommonStyle}"/>
        <Style TargetType="Button" BasedOn="{StaticResource CommonStyle}"/>
    </Window.Resources>
    Ответ написан
    3 комментария
  • Как подключиться к серверу через навикат?

    s0ci0pat
    @s0ci0pat
    I'm Awesome
    Купил навикат?
    Ответ написан
    Комментировать
  • Реально ли создать стартап без бюджета в наше время?

    @nirvimel
    Нереально создать любой бизнес (можно называть это "стартап" - от этого ничего не меняется) без бизнес-плана. А какой бюджет потребуется для запуска этого бизнеса в бизнес-плане должно быть четко прописано и обоснованно.

    • Если у вас есть бизнес-план, то у вас есть и ответ на вопрос о бюджете.
    • Если у вас нет бизнес-плана, то на вопрос "реально ли", ответ отрицательный.
    Ответ написан
    7 комментариев
  • Надежен ли такой метод хранения паролей?

    @nirvimel
    Что только люди не придумают, чтобы не использовать KeePass.

    UPD: А теперь по существу:
    При распаковке файла из архива (даже при использовании интегрированного просмотрщика из GUI архиватора) распакованный файл в открытом виде пишется на диск. Если в этот момент убить процесс архиватора, то файл останется на диске. Даже если вы совершенно точно потом вручную его удаляете его, все равно остается возможность его восстановить, причем неизвестно в течении какого времени его остатки можно будет найти на диске, это могут быть и годы. Единственное, что может помочь - средства гарантированного стирания (файла и свободного места на диске). Но их применение еще больше усложняет процесс извлечения паролей, следовательно повышает вероятность случайной ошибки.

    Кроме того, весь софт, запущенный под тем же юзером имеет достаточно привилегий для чтения содержимого буфера обмена в любой момент (теоретически эти привилегии можно отозвать, но большая часть софта не рассчитана на такое и будет вылетать с дикими ошибками). Многие кейлоггеры очень пристально следят за изменениями в буфере, хранение и посылка на сервер всех изменений обходится им "дешевле", чем съемка скриншотов. И даже скрипты на веб-странице могут в некоторых случаях читать из буфера (в зависимости от браузера и от настроек).
    Ответ написан
    4 комментария
  • Как организовать обработку сообщений от нескольких серверов?

    Nipheris
    @Nipheris Куратор тега C#
    Общая концепция и модель: раз и два.
    Конкретные реализации и протоколы: обмен сообщениями в чистом виде, независимо от платформы: AMQP, ZeroMQ; также, если речь про дотнет, можно попробовать WCF.
    Ответ написан
    4 комментария
  • Где вы храните ключевой файл?

    @nirvimel
    Не вижу преимуществ в использовании ключевого файла перед текстовым паролем. Из минусов:
    1. На всех ваших внешних/внутренних съемных и несъемных дисках лежат (в сумме) несколько сот тысяч различных файлов, что соответствует 16-20 бит различных вариантов, что соответствует трем-четырем символам текстового пароля смешанного регистра.
    2. Файл в единственном экземпляре очень легко потерять/повредить по сотне разных причин. Вы бы стали держать что-то ценное в сейфе, единственный ключ от которого сделан из сахара?
    3. Файл во множестве экземпляров - все равно, что разбросать по двору копии ключа от квартиры.
    4. Файл-ключ дает ложное чувство более высокой надежности и/или криптостойкости (ни то, ни другое неверно).


    P.S. Некоторые комментаторы, возможно, путают файл-ключ с файлом самой базы.
    Ответ написан
    6 комментариев
  • Как узнать дату создания файла в bat?

    MaxDukov
    @MaxDukov
    впишусь в проект как SRE/DevOps.
    Михаил: FOR /F "tokens=1,2 skip=5" %%i IN ('DIR %1 /tc ') DO (echo %%i %%j && exit 0)
    - батнику на вход подаете имя файла, на выходе имеете дату и время. Если время не нужно, просто в echo уберите %%j
    Ответ написан
  • Как узнать дату создания файла в bat?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    можно, например, извлечь отсюда :
    dir 123.txt /T:C покажет дату создания.
    dir 123.txt /T:W покажет дату изменения.


    хотя гораздо проще сделать на PowerShell:
    (Get-Item .\123.txt).CreationTime
    (Get-Item .\123.txt).LastWriteTime

    и не надо мучаться с обработкой результата dir
    Ответ написан
    1 комментарий
  • Как мониторить и отключать/включать proxy под Win7 на C#?

    arxont
    @arxont
    C# программист
    Это зависит от ваших потребностей.. Если вы пишите приложение на C# и просто хотите, установить настройки прокси-сервера которые ваше приложение будет использовать, то используйте класс System.Net.GlobalProxySelection (msdn.microsoft.com/en-us/library/system.net.global... Вы также можете установить настройки прокси-сервера для любого конкретного соединения с System.Net.WebProxy (msdn.microsoft.com/en-us/library/system.net.webpro...

    Если вы действительно хотите, обновить настройки прокси-сервера в реестре, вы должны будете использовать P / Invoke для вызова WinAPI функции WinHttpSetDefaultProxyConfiguration (msdn.microsoft.com/en-us/library/aa384113.aspx). Мониторить тоже можно аналогично.
    Ответ написан
    Комментировать
  • Как назначить интерфейс PasswordBox?

    @tex0
    Проблема в том, что основной класс PasswordBox нельзя наследовать.

    могу предложить описать требуемый интерфейс IPasswordBox, затем создать UserControl, унаследовать его от IPasswordBox и агрегировать туда стандартный PasswordBox, выделив нужные свойства на функционал интерфейса.
    (Ну в общем агрегирование используйте. Тоже костыль, но уже более вменяемый хотя бы потому что свой велосипед не нужно писать, а подключить существующий)
    Ответ написан
    1 комментарий
  • Как назначить интерфейс PasswordBox?

    @dmitryKovalskiy
    программист средней руки
    Я правильно понимаю, что вы хотите создать UserControl не создавая UserControl?
    Ответ написан
    6 комментариев
  • Как правильно написать на MVVM?

    yarosroman
    @yarosroman Куратор тега C#
    C# the best
    Для начала, возьмите какой нибудь MVVM framework (SimpleMVVM, MVVMLight, у них есть куча примеров), делаем свой view, ViewModel. В этих фрейморках уже реализованы базовые классы для создания VM (реализован INotyfyPropertyChanged). В VM надо добавить необходимые свойства, с которыми будет привязка свойств элементов. Так же желательно сделать класс-сервис, который будет создавать по требованию модель, экземпляр класса прописать в App.Resources, и биндить необходимую VM сразу в Xalm, к DataContext="{Binding GroupsViewModel, Mode=OneWay, Source={StaticResource Locator}}">(у локатора есть свойство GroupsViewModel, в котором зоздается необходимый VM, передаются все параметры на сервисы (например работа с БД).

    создание и передача элементов, или работа с контролами напрямую, увеличивает связанность кода, и тд.

    те, например в вашем случае:

    locator.cs
    public class Locator
    {
      public MainViewModel MainVM 
      {
          get {return new MainViewModel(); }
      }
    }


    MainViewModel.cs
    public class MainViewModel : Notifier
        {
           MainViewModel ()
           {
           }
    
            string address;
            public string Address;
            {
                get { return address; }
                set { address = value; OnPropertyChanged("Address"); }
            }
    
            string someControlText;
            public string SomeControlText
            {
                get { return someControlText; }
                set { someControlText = value; OnPropertyChanged("SomeControlText"); }
            }
        }


    в App.xaml в ресурсы прописываем (естественно добавляем необходимые xmlns)
    <Locator x:Key="Locator"/>

    MainView.xaml
    <UserControl x:Class="GPClient.View.BrowserView" DataContext="{Binding MainViewModel, Source={StaticResource Locator}}">>
        <ChromiumWebBrowser Address="{Binding Path=Address, Mode=TwoWay}"/>
        <SomeControl Text="{Binding Path=SomeControlText, Mode=TwoWay}" />
      </UserControl>


    Все дело в Mode=TwoWay. если элемент сам устанавливает свойство, то оно автоматом обновляется в VM, и наоборот, те если вам надо перейти на адрес, в методе в VM пишем Address="http://перейди-на.сайт"; обращаемся к полю VM, а не к приватному члену, иначе не вызовется PropertyChanged, с SomeText, так же.
    Если у нас есть TextBox, то привязка таким образом позволяет получать введенное в него значение.

    для привязки методов, и событий, используются Command и триггеры в XAML.

    У вас тут немного спутано понятие ViewModel и Model. В VM прописываются, свойства, к которым будет привязка элементов View, а Model, это данные с которыми мы работаем, например модель БД, классы в которые сериализуется XML.

    Скачайте MVVMLight, SimpleMVVM, это простые фреймворки, с хорошими примерами и легковесные.
    Ответ написан
    2 комментария
  • Почему Steam, Origin не запрашивают UAC?

    @386DX
    Я в игры не играю, но можно установить в автозагрузку свою службу с правами суперпользователя и от ее имени делать что угодно без подтверждений.

    Да, вы удивитесь, но у админа под виндой не все права, есть права системы и права службы, которые могут быть выше чем админ.
    Ответ написан
    Комментировать
  • Какова производительность yii2 и laravel?

    @Sterk Автор вопроса
    Программист
    Отвечу на свою проблему. Может быть кому то пригодится.
    Поставил в VirtualBox Ubuntu Server. Выдал ему 1 ядро моего i7 и 1 гигабайт оперативной памяти.
    Сервер спокойно выдерживает 40 и более запросов в секунду(больше не смог сделать потому что не смог настроить апач на стабильную работу, каждый секунд 30 вылазил пик задержки и график времени отдачи сбивался, что мешало наблюдению). В результате пары дней тестирования пришел к выводу, что yii2 несет меньше накладных расходов.
    При 40 запросах yii2 для своего шаблона basic выдает страничку за 7.5-10 миллисекунд(загрузка процессора скачет в пределах 20-30%). Пустой Laravel проект с HomeController и 1 вьшкой выдает страничку за 10-15 миллисекунд(загрузка процессора скачет в пределах 30-40%). При этом даже при настроенных(на неиспользование hdd - apc driver) кеширование и сессиях есть использование hdd, что в случае с Linux сервером на SD карте вызывает проблемы.
    Lavarel требует в 1.5-2 раза больше времени на выполнение самого простого сценария - запроса 1 метода с возвратом простейшей вьюшки.

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