Задать вопрос
  • Как работать с делегатами?

    Morpheus_God
    @Morpheus_God
    У вас есть класс к примеру
    namespace WindowsFormsApp1
    {
        public delegate void GetMessage(string message);
        public class EventTest
        {
            public event GetMessage _msg;
            public void Test(int a)
            {
                if(a > 3)
                {
                    _msg?.Invoke($"{a} > 3");
                }else
                {
                    _msg?.Invoke("Не понятно");
                }
            }
        }
    }

    В рамках namespace объявлен делегат с типом void и входящим параметром string.
    В самом классе есть событие и обычный метод, который при входящем параметре int проводит сравнение и для вывода информации ссылается на событие созданное выше .
    Вот форма.
    namespace WindowsFormsApp1
    {
        public partial class Form1 : Form
        {
            EventTest test = new EventTest();
    
            public Form1()
            {
                InitializeComponent();
    
                test._msg += Test__msg;
            }
    
            private void Test__msg(string message)
            {
                label1.Text = message;
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                int a = Int32.Parse(textBox1.Text);
                test.Test(a);
            }
        }
    }

    На форме подписывается событие и при возникновении события в классе, передается на форму.
    Почитайте еще здесь, тут примеры есть.
    Ответ написан
    Комментировать
  • Почему нельзя расшифровать HTTPS?

    CityCat4
    @CityCat4 Куратор тега Цифровые сертификаты
    //COPY01 EXEC PGM=IEBGENER
    Слушайте больше тех, кто трет по ушам за то, что https нельзя расшифровать. "Что сделано одним человеком, завсегда другой может разломать" (С)
    Сертификат состоит из двух частей - собственно сертификата и ключа. Сертификат рассылается всем подряд, его рассылка безопасна. Им шифруют. Ключ должен хранится в секрете, утечка ключа - полная компроментация сертификата. Им расшифровывают.
    Защита https соединения основана на доверенных сертификатах. Когда Алиса хочет установить соединение с Бобом, она отправляем ему свой сертификат. Боб соответственно отправляет свой. И сейчас они уже могли бы установить соединение и сгенерить сессионный ключ, но возникает вопрос - а как Алиса удостоверится, что полученный ею сертификат принадлежит Бобу, а не хакеру Джону?
    Скажу сразу - путей убедиться в том, что сертификат принадлежит Бобу, основываясь только на сертификате - нет. Нужно либо использовать предварительно согласованный ключ, если Алиса и Боб когда-то встречались раньше, либо обратиться к некоему арбитру, доверие к которому абсолютно ("командир сказал - хорек! И никаких сусликов!"). Если арбитр подтверждает, что этот сертификат принадлежит Бобу - значит так оно и есть.
    И вот тут на сцену выступают доверенные корневые центры аутентификации. Это перечень арбитров, которые являются "абсолютной истиной" для данной системы. Если один из них, причем неважно какой сказал "это сертификат Боба" - система считает, что это сертификат Боба и переходит к генерации уникального сессионного ключа, который в теории не должен быть известен никому, кроме Боба. Не зная этого ключа соединение действительно расшифровать невозможно.
    Но "хитер демон в Аппсале, а Язон динАльт хитрее". Хакер Джон развертывает у себя удостоверяющий центр и убеждает/заставляет каким-нибудь образом установить сертификат своего CA в корневые. Что происходит после этого? А то, что любой сертификат, выпущенный хакером Джоном - будет считаться доверенным!
    Теперь Джону нужно "всего лишь" перехватить начальный пакет соединения Алисы к Бобу (не пропуская его к Бобу, конечно же). Джон выпускает себе сертификат с тем адресом, на который обратилась Алиса, а система Алисы посчитает этот сертификат доверенным - ведь он выпущен СA Джона, который у нее доверенный! Алиса установит соединение с Джоном, предполагая, что это Боб и отдаст ему сессионный ключ. Джон просмотрит урл, куда обратилась Алиса и, если ему это неинтересно, то он просто пропустит соединение через себя - отдаст сессионный ключ Бобу и дальше в соединение не вмешивается. Этот режим называется splice. Если же ему интересно, о чем там собираются они пообщаться, он инициирует соединение от своего имени, используя сессионный ключ Алисы и в дальнейшем так и сидит посередине, передавая пакеты справа налево и наоборот. Этот режим называется peek.
    Это классическая атака Man-in-the-Middle (человек посередине) и она применяется в любом прокси squid с включенным режимом бампинга.
    Остается только один вопрос - а как же Джон заставит Алису поставить сертификат своего СA в доверенные? Ну, здесь есть как минимум два варианта
    1. Алиса - сотрудник конторы, а Джон - ее директор и хочет знать, куда ходят его подчиненные в рабочее время. Поэтому он наряжает админов сделать так, чтобы сертификат конторского CA у всех стоял в доверенных. Это стандартный сценарий в любой мало-мальски крупной конторе.
    2. "Джон" является госструктурой, которую нарядили контролировать куда ходят граждане и она обязует всех провайдеров просто не пускать никуда, если на компе не стоит сертификата CA от "Джона". Это уже в реале сделано в Казахстане и скоро будет и в России.
    Ответ написан
    Комментировать
  • Как заставить работодателя своевременно отчитываться о причинах отказа в приеме на работу?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    на запрос будет ответ
    не работаем с *удаками (с)
    ну и дальше что?
    Ответ написан
    Комментировать
  • Как заставить работодателя своевременно отчитываться о причинах отказа в приеме на работу?

    Maksclub
    @Maksclub Куратор тега Карьера в IT
    maksfedorov.ru
    Никто вам ничего не должен, даже если вам очень сильно это не нравится!

    То, что это есть в законе — ерунда (как и запрет указания пола даже для вакансии грузчика)... глупый закон... очень легко его обойти с поводом "а мы еще думаем то есть не отказ это, просто рассматриваем всегда так",...
    или может они вообще не видели ваш отклик (даже если в системе есть метка "просмотрено" — это не может являться доказателсьвом просмотра компетентным человеком или именно той компанией, которая может ответить перед законом, тк не всегда есть приказ об ответственности от гендиректора — грубо говоря без ведома компании сотрудник HR может опубликовать вансию...) крч, не парьте мозг себе на ровном месте, займитесь делом!


    Способы обойти хитрых:
    • внешним HR — типа консультатнт, который присматрвает кандидатов...
    • или приписка — "вакансия не актуальная, но вы можете написать в запас",
    • или приписка "не является офертой",
    • или вообще не давать вакансии, а смотреть по резюме
    • или подставная компания в hh.ru (самый простой способ)
    • или написать бота, который автоматом будет писать письма "счастья"

    Совет:
    Лучше не лелейте надежды, делайте хорошее резюме, пишите только по делу, пишите много куда и звоните и предлагайте встречу, а не ждите и не рисуйте себе маслом какие-то ожидания.

    Если хотите привлечь к ответственности — отправляйте письмо с уведомлением на юрадрес компании!
    Посторонние сервисы (типа hh.ru и прочее — фуфло в плане юридической ответственности)

    upd: Если по АПИ собирать отклики на вакансию на hh.ru, то не отмечается резюме просмотренным
    Ответ написан
    6 комментариев
  • Быть узкоспециализированным или разносторонним? Что лучше?

    Wolfnsex
    @Wolfnsex
    Если не хочешь быть первым - не вставай в очередь!
    То есть я буду на столько разносторонним что смогу одновременно знать фронтенд смогу написать и нарисовать средний сложности сайт и одновременно знаю как построить неиросеть и много чего другого.
    Всегда хотел посмотреть на человека, который одновременно настолько хорош во всём.

    Думаю, тут всё зависит от того, чего Вы в итоге хотите добиться. З/п примерно в 500$ но стабильно и "всегда", либо же стать специалистом высокого уровня в какой-то конкретной области, и получать достуйную з/п.

    Ну, и конечно, есть 3-й вариант - стать достойным специалистом во всех областях сразу, но этот вариант, мне кажется, Вам плохо подходит... по крайней мере, вот эта цитата говорит об этом:
    ведь технологии сейчас так быстро развиваются что я тупо не успею "добежать" до должного уровня.
    Ответ написан
    Комментировать
  • Правильно ли я понимаю что такое API?

    Stalker_RED
    @Stalker_RED
    Неправильно.

    API (application programming interface) - набор готовых классов, процедур, функций, структур и констант, предоставляемых приложением (библиотекой, сервисом) или операционной системой для использования во внешних программных продуктах.
    https://ru.wikipedia.org/wiki/API

    Ваш пример с запросами на сервер и возвращающимся JSON-ом это очень частный случай. Главная ошибка в вашем утверждении состоит в том, что API - это не те штуки который к вам возвращаются, а те штуки которые сработали после вашего запроса.

    Может быть при этом они вам вернули результат, иногда он даже бывает в формате JSON.

    Анекдот
    Едут по Австралии биолог, физик и математик.
    И видят: на лугу пасется черная овца.
    Биолог: Смотрите, в Австралии обитают черные овцы.
    Физик: Нет, в Австралии обитает как минимум одна черная овца.
    Математик: Нет, господа. В Австралии обитает как минимум одна
    овца, и как минимум с одной стороны она черная.
    Ответ написан
    8 комментариев
  • Как преобразовать 220в в 9в?

    AlexMaxTM
    @AlexMaxTM
    Для преобразования используется трансформатор. Если из переменного тока потом нужно будет получить постоянный, тогда поставьте еще и выпрямитель.
    Ответ написан
    Комментировать
  • Как защитить свою работу фрилансеру?

    @McBernar
    Не работайте с такими людьми. Сейчас, может, и нормально будет, но в следующий раз обязательно что-нибудь случиться.

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

    Он может поставить проект на паузу или вообще пропасть — предоплату-то не вносил, поэтому пофиг.

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

    НИКОГДА не работайте без предоплаты с новым клиентом. Только с проверенными ребятами — там уж пофиг. Хотя, как показывает практика, и у проверенных ребят может легко что-то поменяться и денег ты не увидишь. Например, когда менеджер уходит из компании, бизнес прекращается не начавшись, просто проект ставится на паузу. Но такое бывает не часто.

    По вашему вопросу — никак. Код доступен всегда. Можете напихать в JS какого-нибудь говно-кода, который будет тянуть с удаленного сервера ваш скрипт, в который можно будет подсунуть любую бяку — замедлять загрузку сайта, например, или вообще затирать весь хтмл. Но это же не вернет вам денег. Да и легко правится простым удалением нужных строк в js-файле.
    Ответ написан
    Комментировать
  • Как защитить свою работу фрилансеру?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Очень просто, демонстрируйте видео с рабочего экрана
    Ответ написан
    12 комментариев
  • Wpf listview: как обновить только один элемент его?

    lexxpavlov
    @lexxpavlov
    Программист, преподаватель
    1) Список моделей хранить в ObservableCollection,
    2) В классе модели реализовать интерфейс INotifyPropertyChanged (можно сделать это в базовом классе)
    3) В свойствах модели в сеттере вбрасывать событие PropertyChanged с именем свойства:
    private string _name;
    public string Name
    {
        get
        {
            return _name;
        }
        set
        {
            if (_name != value)
            {
                _name= value;
                RaisePropertyChanged(nameof(Name));
            }
        }
    }
    
    // можно сделать в базовом классе, в котором и реализовать интерфейс INotifyPropertyChanged
    protected virtual void RaisePropertyChanged(string propertyName)
    {
        var handler = PropertyChanged;
        if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
    }
    Ответ написан
    Комментировать
  • Как загрузить большое количество картинок?

    @AnneSmith
    самая ленивая
    lazy load, иначе ваша страница умрет не родившись
    все 500-1000 картинок же не влезут в один экран
    грузите сначала два экрана и при скроллинге на второй догружайте по одному
    проще сделать pagination - бесконечный сролл, особенно картинок, раздражает, с pagination легче вернуться, если что-то пропустил
    Ответ написан
  • Можно ли начинать разработку проекта на ASP.NET Core?

    @denismaster
    Да, можно и нужно начинать! Проблем с ним нет, используем .NET Core 2.0 в продакшне. Работает быстро, проблем нет. Многое уже есть из коробки. Это будущее .NET.
    Ответ написан
    4 комментария
  • Событие что ты нажал на иконку приложения в панели задач?

    @cicatrix
    было бы большой ошибкой думать
    Клик по иконке в панели задач приводит к запуску приложения. Если ваше приложение уже запущено, запустится ещё одна копия.
    Если вы хотите, чтобы ваше приложение запускалось только единожды (в одном экземпляре), то есть несколько подходов - либо создавать в системе мьютекс, и удерживать его до выхода (при повторном запуске, если мьютекс занят, завершать приложение), вот здесь описано подобное решение. (Там же приведён код активации окна уже запущенного приложения, если оно свёрнуто).
    Альтернативно, можно смотреть список запущенных процессов, искать свой процесс, и выходить, если найден.
    Либо в качестве мьютекса можно использовать любой блокирруемый системный ресурс (например, файл), но это не правильно.
    Ещё можно использовать именованный канал (named pipe), но это более громоздкое решение, и его следует использовать только если вам нужно осуществлять коммуникации между несколькими копиями вашего приложения.
    Ответ написан
    4 комментария
  • Как хранить ключи API в WPF-приложении?

    Taraflex
    @Taraflex
    Ищу работу. Контакты в профиле.
    Пропускайте https соединения к api только с тем сертификатом, который используется на сайте api.
    Сами ключи получайте по https со своего сервера с самоподписанным сертификатом, другие сертификаты не разрешайте.
    Ответ написан
    Комментировать
  • Как написать свое ПО для отправки СМС сообщений?

    NeiroNx
    @NeiroNx
    Программист
    Если через операторов - то у них есть некое API, если через оборудование то это последовательный порт и AT команды.
    Ответ написан
    Комментировать
  • В чем прикол задания "Скопируйте сайт"?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    - Я Михаил, и я копирую сайты :(
    - (хором) Здравствуй Михаил :(
    Ответ написан
    1 комментарий
  • Заражение вирусами в ОЧЕНЬ большой сети?

    POS_troi
    @POS_troi
    СадоМазо Админ, флудер, троль.
    1. Админов расстрелять, по теме
    после модернизации количество работ было таким большим, что одноранговую сеть так и оставили.

    Какой то мудак (его уже выгнали) поднял игровой сервер в сети, расшарил инет через мобильный LTE интернет и запустил вирус криптолокер в сеть.


    2.
    Операционную систему менять нельзя ни в коем случае, так как большинство лабораторных/диагностических программ очень старые, драйвера старые, под новыми системами не хотят дружить.

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

    3.
    На большинстве компьютеров антивирусная защита отсутствует как таковая, так как на большинстве рабочих станций стоит Windows 98 & XP

    Древняя ось, без обновлений (на большинстве уверен вообще обновы не ставились со времени установки), без банального антивируса.
    Чего вы ещё хотели то?

    Вирусные эпидемии как в вашей ситуации не лечатся путём "а прогоним отот комп антивирусом", их лечат путём "отрубить нахрень всё и переустанавливаем системы ибо хрен пойми какая сигнатура у этой дряни".

    Вы влетели по полной программе и решение тут только одно - модернизация железа/ПО, грамотный подход к сети.
    Ответ написан
    Комментировать
  • Как научиться учить программирование?

    saboteur_kiev
    @saboteur_kiev Куратор тега Программирование
    software engineer
    А просто со временем, до всех доходит, что программирование это не интересные исследования, познания неведомого как в фантастике, прикручивание двумя кликами новых движков.
    А на деле - это еще и множество рутинной и кропотливой работы, которая по сути - скучная, однообразная, И ее процентов 80.

    Вы это наконец поняли. Какую мотивацию вы хотите от нудной и кропотливой работы - неясно. Мотивация может быть в зарплате, в создании своего продукта, если он есть. А так - человек должен уметь мотивировать себя сам, а не ждать пока его рассмешат клоуны.
    Ответ написан
    4 комментария