• В чем разница между многопоточностью, многозадачностью и многопроцессовостью?

    1. Многозадачность. Термин обычно не применяется к прикладному ПО, только к операционной системе, а точнее к ядрам ОС. Многозадачность - способость системного ПО распределять вычислительные ресурсы между несколькими параллельно (т.е. условно одновременно) запущенными вычислениями. Различают кооперативную и вытесняющую. Как правило, поддержка многозадачности сводится к тесной работе с железом и умению ядра сохранять состояние вычислительной системы (например, регистров процессора), и прозрачного переключения этого состояния для выполняющихся задач.

    2. Многопоточность - вариант реализации вычислений, при котором для решения некоторой прикладной задачи запускаются и выполняются несколько независимых потоков вычислений, причём выполнение происходит одновременно или псевдоодновременно. В операционных системах, где термины "поток" и "процесс" различаются, под "потоком" понимают именно поток выполнения (ресурсами же владеет сущность, называемая "процессом"). Обычно применяется для распараллеливания вычислений на несколько вычислителей (процессоров и ядер процессора).

    3. Многопроцессность - вариант реализации вычислений, когда для решения некоторой прикладной задачи запускается несколько независимых процессов. В системах, где под процессом понимается сущность, владеющая ресурсами (памятью, открытыми файлами, сетевыми подключениями), несколько процессов запускаются с целью повышения отказоустойчивости приложения а также с целью повышения безопасности. Т.к. ОС выполняет разделение памяти и прочих ресурсов именно между процессами (в то время как потоки работают в едином адресном пространстве), то а) внезапно упавший (читай - убитый ОС) процесс не уронит остальные; б) если в процессе начал выполняться чужеродный код (например, из-за RCE уязвимости), то он не получит доступ к содержимому памяти в других процессах. Многопроцессность сегодня можно увидеть в браузерах, когда отдельные вкладки выполняются в разных процессах, и упавшая вкладка (из-за js или из-за кривого плагина) тянет за собой не весь браузер, а только себя или еще пару вкладок.
    Ответ написан
    1 комментарий
  • Как правильно настроить git?

    Правильная настройка заключается в использовании одного репозитория для сильносвязанных вещей, и разных - для слабосвязанных. Вы зачем-то разбили по разным репам верстку и фронтэнд-код, а теперь думаете, как бы это всё склеить. Вы дискредитируете всю суть Git как инстурмента для координации командной работы с файлами.

    А так действительно могу предложить только subtree. Хотя смысла в такой организации работы, конечно, не вижу.
    Ответ написан
    2 комментария
  • Почему программа не отвечает во время скачивания методом WebClient?

    Nipheris
    @Nipheris Куратор тега C#
    Очевидно потому, что вы вызываете синхронный метод скачивания (DownloadFile), и он вешает event loop до момета завершения загрузки. Асинхронно качать не пробовали?
    Ответ написан
    Комментировать
  • Как HR и работодатели относятся к соискателям, у которых есть свой сайт?

    Не будете ли вы заниматься своим сайтом в рабочее время?

    Не будете ли вы заниматься семьёй в рабочее время?
    Не будете ли вы смотреть футбол в рабочее время?
    Не будете ли вы гонять в танки в рабочее время?

    Я привык сам контролировать, куда и где уходит моё время, и соблюдать принятые мной договорённости. Если у вас также - думаю вы имеете все основания сказать об этом сотруднику отдела кадров, чтобы подобные вопросы больше не повторялись. Есть миллион гораздо более эффективных способов следить за производительностью коллег, чем задавать такие вопросы.
    Ответ написан
    2 комментария
  • Как подключить к элементу управления источник данных находящейся в экземпляре класса, который в свою очередь находится в ObservableCollection?

    Nipheris
    @Nipheris Куратор тега C#
    При условии, что сама эта коллекция будет находится в экземпляре класса RemoteClientViewModel.

    Не совсем понял, почему вы называете это "коллекцией", по логике я бы там ожидал увидеть просто несколько обычных свойств, выставленных для вьюхи. Чтобы сделать привязки к этим свойствам, просто задайте нужный ItemTemplate.

    Кроме того, мне нужно чтобы при клике на элемент списка ListBox в ListView отображался соответствующий этому клиенту (т.е той ViewModel которая подключена к этому элементу) список файлов.

    Всё очень просто - сделайте в MainViewModel свойство SelectedЧТОТО, в пару к вашей коллекции. Например, если коллекция это RemoteClients, то и свойство - SelectedRemoteClient. Забиндите SelectedItem ListBox-а к этому свойству. Разумеется, не забудьте его правильно реализовать, с NotifyPropertyChanged. Затем привяжите ItemsSource ListView-хи к SelectedRemoteClient.Files, где Files это коллекция с информацией о файлах. Если не будет работать, пишите, попробуем другой вариант.
    Ответ написан
    7 комментариев
  • Зачем нужны учётные записи в windows?

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

    Как уже сказали, кто имеет физический доступ - тот хозяин машины. Так было всегда. Это значит, что разграничение прав будет работать только при запущенной ОС и только через легитимные каналы, которые ОС в состоянии контролировать. Например, при доступе по сети, или при доступе в консольном режиме, т.е. с помощью клавиатуры и монитора. ОС не может гарантировать, что, имея доступ к железу, вы не вставите какую-нибудь волшебную железку, читающую оперативную память или еще что в таком духе.

    Вот так пришёл к другу в гости, вставил флешку, загрузился с неё и копируй с диска, что тебе надо, потом дома посмотришь.

    Знакомьтесь: EFS, BitLocker. И то и другое позволяет защитить данные от несанкционированного чтения людьми, получившими физический доступ к компьютеру и носителям информации (украли, например, и вытащили диск).

    И да, разраничение данных пользователей это не то же, что их защита. В Win 98/ME вообще не было ограничений на уровне файловой системы и "пароль" был лишь формальностью - чтобы настройки пользователей можно было разграничивать, как и содержимое пользовательского профиля. В те времена защиты действительно не было, даже внутри самой операционной системы.
    Ответ написан
    Комментировать
  • Как защитить запрос UPDATE от SQL-иньекций в SQLite?

    https://www.sqlite.org/c3ref/prepare.html

    Часто такое называют preapred statement или prepared query, так что гуглить полезно еще и по этим запросам).
    А какой плагин-то?
    Ответ написан
    Комментировать
  • Как читать и записывать xlsx стандартными средствами .NET?

    Nipheris
    @Nipheris Куратор тега C#
    Если вас интересует xlsx, можете стандартными средствами его распаковать (т.к. это обычный ZIP), и поработать с содержимым. Основное содержимое книги будет в XML (не помню имя файла), так что сформировать его особых проблем не составит. Если вариант подходит, расскажу подробнее, что можно сделать.

    А вообще EPPlus тащит.
    Ответ написан
    1 комментарий
  • Где найти готовые шаблоны баз данных?

    Если речь идёт о реляционной БД, то вот шаблон правильной базы данных: нормальная форма. По мере наработки опыта по проектированию БД, эти формальные правила превратятся в интуицию. Сейчас вам достаточно понять, от чего вас оберегает соблюдение нормальных форм.
    Ответ написан
    Комментировать
  • Перевызов событий?

    Nipheris
    @Nipheris Куратор тега C#
    Потому что ивент - это не то же самое, что делегат. Ивент ограничивает интефейс делегата только двумя операциями - добавить и удалить обработчик. Это делается для того, чтобы только изнутри объекта можно было сгенерировать событие. Иными словами, чтобы никто не мог, к примеру, "нажать" кнопку вместо самой кнопки (т.е. сгенерировать событие Clicked в обход внутренней логики класса "Кнопка"). В этом принципиальный смысл концепции событий.

    Можно провести аналогию между полем/свойством и делегатом/событием. Как свойство - это в некоторых случаях "интерфейс" для поля, который позволяет контроллировать, как оно изменяется (при этом вы можете использовать генерируемое поле с помощью синтаксиса { get; set; }), так и событие это "интерфейс" для делегата - вы не можете напрямую изменять или вызывать делегат, вы делаете это с помощью события. Можете также почитать про синтаксис add/remove у событий - тогда аналогия со свойством будет еще понятнее.

    Зачем делать InvokeEvent не совсем понятно, видимо это просто какой-то пример. В реальном коде класс MyClass должен сам решить, когда вызывать то или иное событие.
    Ответ написан
    5 комментариев
  • Где находится Atom в win10?

    Ищите в C:\Users\имя_пользователя\AppData\Local
    Ответ написан
  • Как правильно собрать .exe на C++/CLR?

    Nipheris
    @Nipheris Куратор тега C++
    1. Нужно собрать релизную версию приложения. Не распротраняйте на другие компьютеры дебажные версии. Тогда "d" требовать не будет.
    2. Т.к. приложение на C++, оно будет требовать рантайм. Этот рантайм можно как слинковать статически, так и оставить динамически загружаемым. Это настраивается в свойствах проекта. Если слинковать статически - то тогда dll не потребуется, но и обновить рантайм отдельно от приложения будет невозможно.
    3. Если поставлять рантайм отдельно, как динамически загружаемый (т.е. чтобы была dll), то можно либо класть его рядом с exe, либо устанавливать redistributable версию райнтайма. Второе предпочительнее, т.к. тогда рантайм можно будет обновить с помощью системной обновлялки, если в нём будут найдены критичные проблемы.
    4. Чтобы точно узнать, что требует EXE для своего запуска (не считая модулей, загружаемых с помощью LoadLibrary), воспользуйтесь Dependency Walker.

    Более подробную информацию вы сможете получить на MSDN в разделе деплоя C++ приложений.
    Ответ написан
    2 комментария
  • Как информировать сообщество о новой библиотеке?

    Nipheris
    @Nipheris Куратор тега C#
    1. Делаете хороший README, разумеется на английском, где указываете, как ей пользоваться, и что ей требуется.
    2. Делаете несколько примеров (именно рабочий код в подпапке examples) для основных кейсов применения библиотеки.
    3. Льете на опенсурсный хостинг, если еще не сделали.
    4. Настраиваете CI (например на AppVeyour), это не обязательно, но желательно.
    5. Заливаете готовые пакеты на NuGet. Разумеется, вы должны научиться упаковывать свою библиотеку в нормальный пакет. В nuspec ставите годные правильные теги.
    6. Покрываете тестами, хотя бы частично.

    После этого к вашей библиотеке начнут относиться более-менее серьезно.

    7. Можете попробовать на CodeProject рассказать, там часто рассказывают именно про библиотеки.
    Ответ написан
    4 комментария
  • Как починить проект в visual studio 2015?

    Удалите папку .vs рядом с солюшеном и user-файл рядом с проектом, если такой есть.
    Ответ написан
    Комментировать
  • Какие есть библиотеки для авто тестирования методов с перебором произвольных данных?

    Nipheris
    @Nipheris Куратор тега C#
    IntelliTest - коммерческое развитие исследовательского проекта Pex. Он делает как раз то, что вы хотите. Вот песочница для попробовать.
    Ответ написан
    Комментировать
  • Как лучше организовать таблицы параметров товара?

    То, что вы сейчас делаете - это EAV (Entity–attribute–value), можете гуглить по этому термину. А вообще советую переместить параметры товаров в документную базу (ибо EAV это костыль).
    Ответ написан
  • Пустое поле хранение и выборка?

    0 - это не вариант пустого поля, если вы храните количество чего-либо. Также и с пустой строкой - это не всегда эквивалент NULL. Нулл это вообще даже не пустое, а "неизвестное" значение - важно понимать разницу.

    Как по мне, нет более извращенного способа поставить себе грабли, как экономить место в БД используя/не используя NULL. Это должно целиком определяться предметной областью. Не думаю, что какая-либо СУБД настолько ужасна, что будет тратить на nullable значения в два раза больше места.
    Ответ написан
  • Используют ли крупнейшие it-компании РФ Jira?

    Использовали и продолжаем использовать, причём не самую свежую версию, т.к. всё устраивает. Используем на пару с гитлабом (хотя наверняка со Stash еще удобнее, т.к. интеграция должна быть лучше).

    Потом появились посты, что jira уже не очень

    Протухла что-ли?)
    Это наверное от фронтэндеров посты были, сначала они жалуются что их сфера развивается слишком быстро, а потом выясняется, что если не учить новый инструмент хотя бы раз в месяц, то и жить скучно.
    Ответ написан
    Комментировать
  • Как запрашивать аутентификацию для каждого запроса в WEB API?

    1. Аутентификация выполняется однократно. Это довольно сложный, потенциально многоэтапный процесс. Делать аутентификацию при каждом запросе - 100% неверное решение, этим просто невозможно будет пользоваться.
    2. Т.к. аутентификация выполняется однократно, то в качестве метки для всех запросов от некоторого аутентифицированного юзера используется некий токен. Это может быть ID сессии, приходящий в куках, это может быть и JWT, посылаемый в хереде Authorization. Вот этот токен и нужно проверять каждый раз. Суть этого токена в том, что он а) так или иначе временный (хотя может продлеваться тем или иным образом); б) не связан с конкретным методом аутентификации. Т.е. он представляет собой конкретную успешно проведенную аутентификацию. С некоторой натяжкой это можно назвать "сессией". Проверять этот токен ГОРАЗДО легче, чем делать новую аутентификацию - либо просто нужно найти сессию в списке (ну и проверить IP на всякий случай) в случае ID сессии, либо проверить валидность подписи в случае JWT токена. Как это делать - зависит от конкретной реализации этого токена, если скажете что используете - попробую подсказать, что надо проверять.
    3. Насчёт фильтров авторизации - уточните версию ASP.NET, тогда поглядим.
    Ответ написан
    Комментировать
  • Как поймать неправильное завершение работы сервера?

    Nipheris
    @Nipheris Куратор тега C#
    Будем считать, что речь идёт о клиенте и сервере в контексте взаимодействия по протоколу TCP (если не так - уточните вопрос).

    Сообщите клиенту, что сервер штатно завершает работу, и клиент будет знать, что есть смысл подключаться заново. Если сервер отключается и не посылает такого сообщения - клиент считает, что сервер завершил работу нештатным образом и больше не подключается. Более того, вы можете сообщить клиенту через сколько секунд/минут/часов вновь можно подключиться к серверу - клиент не будет париться и стучаться в закрытые ворота, пока сервер еще не поднялся.
    Ответ написан
    Комментировать