• В чем разница между get/set и обычной переменной?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    Если опустить философские размышления об инкапсуляции и о расширении, то остаётся не так уж и много.

    Многие библиотеки, например всякие сериализаторы, работают только со свойствами, но не с полями.
    Если работаешь с EF - тоже нужно всё через проперти делать.

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

    ThunderCat
    @ThunderCat Куратор тега Веб-разработка
    {PHP, MySql, HTML, JS, CSS} developer
    исходя из вышеизложенного, какой бы стек технологий вы бы выбрали как разработчик чтобы решить вышеописанную задачу?

    Для начала немного контекста - 2 важных примечания:
    1) Описанная задача решается на любом упомянутом стеке, + еще десяток возможных вариантов (Java/Spring, питон, нода, дотнет, голанг и т.д.).
    2) Быстродействие системы зависит от ее самой медленной части, и в 95% случаев самая медленная часть - БД, просто в силу специфики работы: много данных со сложными связями, выборки с сортировкой и фильтрацией из большого массива и вот это все, в то время как язык бэкенда в основном выполняет достаточно простые манипуляции с уже готовыми наборами данных (за редчайшими исключениями, которых в вашем кейсе нет, или они не описаны в вопросе).

    В вашем случае:
    - база можно сказать совсем небольшая, до 1 миллиона записей условный мускуль ворочает весьма шустро, если железо соответствует.
    - задача сбора метрик достаточно тривиальная, особого ума в сохранении действий пользователя не надо, бОльшая часть работы - вывод в красивые графики и написание быстрых запросов с хитрыми выборками/агрегациями, немного пошаманить с формулами, возможно делать какие-то сводные выборки с денормализованными результатами для отчетов и прочие мелочи. Работа не сложная, но нудная, и ее много.

    Насчет стоимости и условий:
    полный самопис 150к+ (я это не тяну) или же сайт на Laravel +MySQL а дальше варьируется.
    полный самопис - либо маркетинг, либо идиотизм, писать на голом языке не будет ни одна нормальная студия, в принципе в данном случае либо используется фреймворк и заказчику преподносится как "сделано вручную программистами девственниками под светом серебряной луны", либо разработчики идиоты, мнящие себя круче всех (нет). В первом случае это то же что и "сайт на Laravel +MySQL" (норма и стандарт для среднего уровня студий), во втором - развод на мани на пустом месте и попытка продать г**но в обертке "иксклюзивнасти".

    По цене - на сегодняшний день, если я не ошибаюсь, 150к деревянных это +- 1000уе. Цена приемлемая за нормальную работу, если найдете дешевле "на Laravel" - думаю будет вообще ок. Опять же, цены штука такая, кто-то за копейки сделает хорошо, кто-то за дорого каку сляпает. Влияет так же регион, понятно что в Мск цена будет серьезно больше чем в условном Челябинске...

    Важный момент - нормальное ТЗ в разы упрощает как поиск исполнителя, так и оценку работы. Я бы на вашем месте погрузился именно в тему создания качественного ТЗ, нежели в дебри современных технологий.

    UPD:
    проект планируется на 100 к+ посетителей в месяц...
    предупреждают что если аудитория достигнет условных 100 тысяч в месяц Лара начнет потихонечку задыхаться от нагрузки,
    ок, пусть будет 200к для наглядности.
    В среднем, если это маркетплейс, то постоянных посетителей будет не много, думаю около 10%, так что ими можно пренебречь. Условно - 200к / 30 дней = 6600 в сутки, при активных 10-12 часах посещения это ~600 в час. Пусть на 1 посетителя будет 5 запросов страниц, это 600*5=3000 в час = 50 в минуту или менее 1 запроса в секунду.
    Даже если умножить это на 30 (допустим такая пиковая нагрузка), 30rps вообще "ниачем". Не знаю кто там вам считал то это проблема, любое современное железо среднего уровня вытягивает без напряга.
    Ответ написан
    2 комментария
  • Порекомендуйте подходящую базу данных?

    @AndromedaStar
    .Net - monkey
    У вас задача, которая решается с помощью OLAP.
    Поэтому копать нужно в эту сторону, решений достаточно много.
    Ответ написан
    Комментировать
  • Порекомендуйте подходящую базу данных?

    @rPman
    которые при генерации отчета как либо аггрегируются.
    это чуть ли не наисложнейшая задача для баз данных, 80м записей тем более

    Партицируйте прямо по суткам.

    Убирайте транзакции, нафиг вам тут innodb когда хватит myisam, оно на запись быстрее, у вас база write once read ... тоже once.

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

    На время обработки аналитики можно потюнить файловую систему и отключить flush для файлов таблиц (например ext4 data writeback и можно отключить журнал) - сильно ускоряет именно запись, особенно если много ram, это включает большой риск потери/порчи данных при сбросе ос но с другой стороны вероятность этого очень мала и как я понимаю, данные в базу и так пишутся из какого то другого хранилища, т.е. при проблеме с сервером просто перезапускается обработка за текущие сутки.

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

    Общая аналитика должна не работать с самими данными, а с их посуточной выжимкой (возможно в результате и хранить их не придется) считай это самодельные индексы. Грубо говоря если в запросе на аналитику стоит count,max,min,.. то достаточно сложить посуточные значения и для глобальных считать уже по ним... само собой если запросы с условиями и сложными группировками, то надо думать но все решаемо.. грубый пример нужно считать агрегацию по часам, вот в индексы и пиши суточные значения по часам, а если надо постранично то для каждой страницы для каждых суток считаешь, потом агрегируешь уже по этим результатам.
    Ответ написан
    6 комментариев
  • Стоит ли использовать микрокомпьютер для удаленной работы?

    @Arlekcangp
    Разработчик, Лид, Архитектор ПО
    Ох, тут уже на предлагали... Что ж, я не путешествую, но вопрос "куда можно запихнуть мини ПК" меня какое то время мучил, и я пришёл к выводу, что из мини ПК может получится неплохая ретро-консоль. И естественно она должна быть портативной. И раз вам так хочется сменить ноут на миник, то поделюсь к каким выводам я пришёл.
    1. Покупать что то излишне миниатюризированное формата raspberry Pi не стоит. Это вариант для умного дома и управления прочими прибамбасами, а не для работы или тем более игр. Естественно туда же идут и все варианты, напоминающие флэшку. При попытке работать будете плеваться от тормозов.
    2. Излишне тесный корпус приводит к нагреву и требует излишнего охлаждения. А это шум, доп потребление, механические детали и повышение стоимости . В тесных корпусах возможно только CPU с очень низким теплопакетом, а значит смотри пункт первый, тормоза неизбежны.
    3. Только не Андроид (и arm)! Не знаю кому как, а мне софта на адройде мало И практически отсутствует open source варианты. Так что и всякие планшеты и тв-боксы и подобный хлам - в лес. К тому же можно ещё испытать и прекрасный геморрой при попытке с планшета вывести изображение на монитор. Не все планшеты такое поддерживают.
    4. И не intel NUC или тем более его китайские собратья. В качестве самого NUC сомневаться не приходится. Однако, тем не менее, это проприетарная платформа и от ноутбука отличается только отсутствием монитора... Ничего толком не известно сколько будет стоить апгрейд и будет ли он вообще возможен. А спрашивается зачем тогда оно ? По этой же причине и не мак-мини и прочие надкусанности. Сюда же ещё и дефицит софта в сравнении с x86 как и у андройда.
    Итого: приходим к выводу, что это будет самосбор:
    Вариант 1: Корпус формата mini ITX - не слишком маленьких, что бы туда влезало типовое железо и небыло проблем с охладом и не слишком большой потому что портативность. Объём 2-5 литров. Плюсы:
    - можно собрать x86 на десктопном процессоре, с приличным объёмом оперативки и даже встроенным SSD приличного объёма (хотя уж с этим то сейчас проблем нет и полно внешних корпусов для SSD, но встроенный вы не будете искать среди кучи хлама после очередного переезда.
    - всё ещё поддается апгрейду, но занимает места примерно столько же сколько и ноут. Допускает относительно хорошее охлаждение Широкий выбор самих корпусов, как у именитых брендов так и китайцев. Полностью сменная начинка, которая никуда не исчезнет с рынка. И даже сменный процессор и память. И в тоже время - внешний БП как и в ноуте (правда без батареи, но как говорится, кто мешает и её воткнуть...), может оказаться полезной вещью в дороге, если нужно запитать ещё какие то низковольтные устройства от 12 вольт
    - Возможность втыкивать достаточно мощный процессор. Я присматривался к райзену с интегрированным GPU. На таком не только работать, но и во что то не сильно требовательное можно поиграть.
    - Можно настроить dual boot - windows + linux для тех кому нужно. Полноценная сеть (уже не во всех ноутбуках она есть. А во всяких малиноподобных вариантах - как правило, сеть медленная)
    - Широкий набор внешних портов. Любой ноут здесь проигрывает. (другой вопрос нужно ли это для вашей работы)
    - Прочный металлический корпус (полно как стальных, так и алюминивых вариантов. Есть и пластиковые, но я бы брал металл как из-за прочности так и из-за охлаждения)
    Минусы:
    - Цена Как говорится, из разряда "отложу как я это до лучших времён" С такими ценами, как сегодня, вообще не выгодно менять железо.
    - Надо собирать самому (ну для меня это не минус, а для вас - не знаю)
    - Размер и вес скорее всего будет немного больше того же Intel NUC но, считаю, что это не существенно.
    - мощность системы не должно превышать 150-200 ватт иначе будет перегреваться да и БП на такую мощность найти сложновато. Вполне можно уложиться если брать CPU с TDP 45-65 Ватт

    Вариант 2 Мощный самосбор в корпусе miniITX объёмом до 12 литров. Плюсы:
    - Всё тоже самое что и варианте 1 но немного дешевле т к корпус больше
    - Уже есть возможность запихнуть какой-никакой дискретный GPU Но тут надо заранее выбирать и велика вероятность того, что этот элемент потом обновлять будет тяжело, т к трёх-слотовый монстр длиной 30+ сантиметров туда не встанет, а среднебюджетных вариантов как то не видно на горизонте Только слабенькие GPU делают в усеченных размерах и их ещё найти нужно.
    - можно поставить очень хорошее охлаждение при желании. Но тоже нужно об этом думать на этапе выбора
    корпуса
    - Уже относительно стандартные внутренние БП на 300-500 ватт
    Минусы:
    - Вес. Если для вас не критично вес в несколько килограмм (сейчас только видяхи по килограмму весят =)
    - Размер 12 литров - это как два с половиной пятилитровых бутыля. Для сравнения, обычно корпуса ноутбуков не превышают 2-х литров. Очевидно, при авиаперелетах это скорее всего в багаж отправится...
    Ответ написан
    1 комментарий
  • На собеседовании сказали, что не все функции - замыкания. Так ли это?

    snaiper04ek
    @snaiper04ek
    Не стреляйте в эникея, он админит как умеет
    парень. Всё равно ты будешь использовать ту терминологию, которую используют на работе. Если там под замыканием подразумевается замыкание с инкапсуляцией, то после того как тебе сказали что "твой код - говно", было два варианта: 1)поговорить о терминах либо со ссылкой на официальную документацию, либо вместо с собеседником вывести определение исходя из смысла понятия, не прибегая к авторитетам вообще. 2) Сказать о том, что прочитал такое определение у %авторитет%, и сказать, что готов использовать то, которым пользуетесь вы на работе.

    По поводу выведения определения: есть смысл замыкания. Его нужно чётко озвучить согласиться с ним. Например, ты хочешь сказать, что смысл замыкания это ничто иное как "повесить ссылку на переменную с которой окончена работа до объявления функции, для сейва от мусорщика". Спросить - согласен ли с этим собеседник, или есть дополнения/возражения. Если согласен - значит "функция, являющаяся замыканием - любая функция, которая ссылается на переменную вне своего тела, в случае если переменную иначе удалил бы сборщик." Далее нужно договориться, что "иначе удалил бы" можно опускать как лишнюю сущность, которая усложняет определение такой функции, и упростить до - "функция, ссылающаяся на переменную вне своего тела."

    Есть второй вариант: собеседник тебе говорит: "Ахтунг! Замыкание используется не просто для того, чтобы спасти переменную от удаления! Это ещё и способ сокрытия данных: замыканием можно использовать локальную глобальную переменную, вместо того чтобы использовать просто глобальную переменную, или же городить отдельный класс."
    В этом случае всё твое определение идёт в пешее эротическое, и ты соглашаешься, что для этого придётся обернуть функцию в функцию, чтобы у тебя была функция с локальными переменными, которые будут глобальными для этой функции в функции.
    Ответ написан
    13 комментариев
  • На собеседовании сказали, что не все функции - замыкания. Так ли это?

    @Arlekcangp
    Разработчик, Лид, Архитектор ПО
    Похоже вас поймали на том что в js кто-то решил переопределить термин "замыкание"... Т к javascript далеко не первый язык, в котором есть нечто, претендующее называться термином "замыкание", то следует в первую очередь рассмотреть общее определение. Возьмём его из википедии:

    Замыкание (англ. closure) в программировании — функция первого класса, в теле которой присутствуют ссылки на переменные, объявленные вне тела этой функции в окружающем коде и не являющиеся её параметрами. Говоря другим языком, замыкание — функция, которая ссылается на свободные переменные в своей области видимости.
    Замыкание, так же как и экземпляр объекта, есть способ представления функциональности и данных, связанных и упакованных вместе.
    Замыкание — это особый вид функции. Она определена в теле другой функции и создаётся каждый раз во время её выполнения. Синтаксически это выглядит как функция, находящаяся целиком в теле другой функции. При этом вложенная внутренняя функция содержит ссылки на локальные переменные внешней функции. Каждый раз при выполнении внешней функции происходит создание нового экземпляра внутренней функции, с новыми ссылками на переменные внешней функции.
    В случае замыкания ссылки на переменные внешней функции действительны внутри вложенной функции до тех пор, пока работает вложенная функция, даже если внешняя функция закончила работу, и переменные вышли из области видимости.[1]
    Замыкание связывает код функции с её лексическим окружением (местом, в котором она определена в коде). Лексические переменные замыкания отличаются от глобальных переменных тем, что они не занимают глобальное пространство имён. От переменных в объектах они отличаются тем, что привязаны к функциям, а не объектам.


    Как видим из этого длинного определения (а не только его первого предложения) интервьюер оказался формально прав (что является неожиданностью и для меня самого. Кто знает, возможно это веяние нового или всё же творчество чрезмерного ЧСВ js-кодерков, но не будем предвзятыми) Посмотрим дальше...Переходим в английскую версию той же страницы в википедии:

    In programming languages, a closure, also lexical closure or function closure, is a technique for implementing lexically scoped name binding in a language with first-class functions. Operationally, a closure is a record storing a function[a] together with an environment.[1] The environment is a mapping associating each free variable of the function (variables that are used locally, but defined in an enclosing scope) with the value or reference to which the name was bound when the closure was created.[b] Unlike a plain function, a closure allows the function to access those captured variables through the closure's copies of their values or references, even when the function is invoked outside their scope.


    О! А тут нет никаких "функций, вложенных в функцию" и нет никаких "создающихся каждый раз" Хм... Интересно. Ну за то есть абзац о том как появились замыкания:

    The concept of closures was developed in the 1960s for the mechanical evaluation of expressions in the λ-calculus and was first fully implemented in 1970 as a language feature in the PAL programming language to support lexically scoped first-class functions.[2]

    Peter J. Landin defined the term closure in 1964 as having an environment part and a control part as used by his SECD machine for evaluating expressions.[3] Joel Moses credits Landin with introducing the term closure to refer to a lambda expression whose open bindings (free variables) have been closed by (or bound in) the lexical environment, resulting in a closed expression, or closure.[4][5] This usage was subsequently adopted by Sussman and Steele when they defined Scheme in 1975,[6] a lexically scoped variant of Lisp, and became widespread.


    Ага. Оказывается первоначально они появились в такой не конвенциональной, с сегодняшней точки зрения VM, как SECD... И их создатель прямо говорит, что это код плюс данные. Далее термин применяют к лямбда-выражениям. Ничего не говорится, должны ли эти выражения возвращаться функцией, или достаточно того, что бы они захватывали переменные из своего лексического (или динамического, как в common lisp) окружения. Далее нам сообщают, что некие мистеры, Сасман и Стил, спустя каких то 11 лет добавили это в свой язык Scheme... Ну что же. Посмотрим замыкания в Scheme... А именно откроем книгу Сасмана и соавторов "Структура и интерпретация компьютерных программ" или "SICP" Первый раз (исключая содержание) слово "замыкание" встречается в главе 2 "Поcтроение абстракций c помощью данных"


    Важная идея в работе с составными данными — понятие замыкания (closure): клей для
    сочетания объектов данных должен позволять нам склеивать не только элементарные
    объекты данных, но и составные.


    Но, как выяснилось, это не те замыкания... Это замыкание в том смысле, что структуру одного типа (в данном случае пары) могут ссылаться на самих себя. И это то как термин "замыкание" понимают математики. Далее в SICP никаких других определений замыканий нет (несмотря на то, что само их использование конечно же есть) Ну ничего не остаётся как посмотреть что же сегодня называют замыканиями в языке Scheme... Гугл по этому запросу выдал первой ссылкой: https://www.cs.utexas.edu/ftp/garbage/cs345/schint....
    Цитирую:

    Procedures are Closures
    Scheme procedure's aren't really just pieces of code you can execute; they're closures.

    A closure is a procedure that records what environment it was created in. When you call it, that environment is restored before the actual code is executed. This ensures that when a procedure executes, it sees the exact same variable bindings that were visible when it was created--it doesn't just remember variable names in its code, it remembers what storage each name referred to when it was created.

    Since variable bindings are allocated on the heap, not on a stack, this allows procedures to remember binding environments even after the expressions that created those environments have been evaluated. For example, a closure created by a lambda inside a let will remember the let's variable bindings even after we've exited the let. As long as we have a pointer to the procedure (closure), the bindings it refers to are guaranteed to exist. (The garbage collector will not reclaim the procedure's storage, or the storage for the let bindings.)

    Here's an example that may clarify this, and show one way of taking advantage of it.

    Suppose we type the following expression at the Scheme prompt, to be interpreted in a top-level environment:

    Scheme> (let ((count 0))
               (lambda ()
                  (set! count (+ count 1))
                  count)))

    ##

    Evaluating this let expression first creates a binding environment with a binding for count. The initial value of this binding is 0. In this environment, the lambda expression creates a closure. When executed, this procedure will increment the count, and then return its value. (Note that the procedure is not executed yet, however--it's just created.) This procedure, returned by the lambda expression, is also returned as the value of the let expression, because a let returns the value of its last body expression. The read-eval-print loop therefore prints a representation of the (anonymous) procedure.


    Что имеем ? В Scheme - вообще любая функция - это замыкание! Т к она всегда захватывает контекст, даже если там пусто!. Что видим в коде ? Ну с точки зрения Scheme тут конечно вложенная функция, т к let - это на самом деле lambda, но так происходит потому, что в Scheme нет переменных в понимании js. В js же можно считать, что глобальный контекст - результат действия нечто, что эквивалентно let. Захватывает ли любая функция в js этот контекст ? Не знаю. Но точно знаю, что в вашем примере это определенно так - х часть контекста, который захватывается функцией. Кто хочет поспорить - идите спорьте с создателями Scheme (скажите, когда попкорн покупать, я посмотрю как вас пороть будут. Набежало тут вайтишников =)) Кто то может сказать "а вот у нас в js замыкания определяются не так" На что я отвечу: знаете, товарищи, а идите ка вы лесом! Если есть однажды созданный и определенный термин, нужны весьма веские причины что бы менять его определение. Желания левой ноги очередного вайтишника тут не достаточно.
    Ответ написан
    30 комментариев
  • Почему clearTimeout не сбрасывает таймер?

    Stalker_RED
    @Stalker_RED
    Вы здесь в вопросе не указали, но в демке на jsfiddle видно, что этот ваш let timerId находится внутри mousemove
    При движении мыши mousemove срабатывает очень много раз, и при каждом срабатывании заново создается переменная timerId и пересоздаются обработчики клика.
    Короче - архитектура ни к черту :)
    Создайте ОДНУ переменную let timerId, повесьте ОДИН обработчик клика, и уже после клика определяйте левый он или правый.

    И на будущее - вместо onload и onclick лучше использовать addEventLitener('click', ...)
    Да, писанины чуть больше, но при попытке написать еще один onload он у вас перетрет предыдущий, а addEventListener можно навесить много раз.
    Ответ написан
    Комментировать
  • Работает ли Asp.Net всегда?

    @Arlekcangp
    Разработчик, Лид, Архитектор ПО
    Он не только работает "всегда", но имеет несколько режимов работы. Можно деплоить приложение как модуль IIS, так и сделать его stand alone. Первый вариант в свою очередь разделяется на два: "классический" и "интегрированный".

    1. Классический подразумевает что IIS загружает DLL модуль ISAPI который в свою очередь запускает NET-среду в отдельном потоке. Так что даже в этом случае ASP NET CORE (или более ранний ASP NET ) работает "всегда". (В отличие от просто ASP который был до NET). Не смотря на то, что на картинках в документации обработка начинается только с приходом запроса, там всё равно присутствует процесс и поток отвечающий за работу ASP NET. В нём запускается global.asax. Но этот процесс может быть в любое время перезапущен IIS, если хоть что то ему "не понравится" (включая, например что процесс был запущен слишком давно. Часть этих параметров доступна для изменения в пуле приложений IIS)

    2. В интегрированном режиме примерно всё тоже самое, за тем исключением, что там NET-среда уже является частью пайплайна IIS и приложению доступна возможность обрабатывать больше событий. Т к теперь это часть IIS, то штатным завершением будет выгрузка домена приложения из памяти. Но т к это может быть не возможно по разным причинам, IIS всё равно может перезапустить процесс вместе со всем пулом приложений. В штатном режиме обычно этого не происходит. Однако тут нужно сделать ремарку:
    Если под понятием "работает всегда" понимать запуск какой-то своей бэкграунд-задачи в отдельном потоке, то есть нюансы. Для старого ASP NET это описано в этом блоге haacked.com/archive/2011/10/16/the-dangers-of-impl... Для ASP NET CORE Микросософт сделал усилие и расширил как саму возможность правильного запуска фоновых задач, так и документацию: https://docs.microsoft.com/ru-ru/aspnet/core/funda...
    И здесь нужно заметить, что никто не мешает просто запустить новый поток самостоятельно, но это не штатная работа и чревата всё теми же последствиями какие описаны в том блоге.
    3. Режим stand alon более простой. Это отдельное консольное NET-приложение, в котором внутри работает HTTP-сервер Kestrel. Но в сравнении с IIS я бы назвал его "недосервер", т к у него мало того что нет большей части функций IIS, так ещё и хромает документация. Но всё равно, даже несмотря на это он во многом лучше IIS по причине своей простоты. Кроме того он является безальтернативным решением, если ваше приложение должно работать в docker-контейнере или на ОС отличной от Windows, где IIS не завезли пока. Т к это отдельное приложение, там можно запустить сколько угодно потоков и это не должно привести к описанным проблемам. Но всё равно лучше использовать штатные средства. Хотя бы в целях переносимости приложения между IIS и stand alone режимами.
    Ответ написан
    1 комментарий
  • Как можно использовать монитор старого ноутбука полноценно?

    @VT100
    Embedded hardware & software.

      • 1а. Найти цоколёвку (расположение сигналов) на разъёме "CON1 TTL-50PIN signal output" по ключевым словам PCB-800168 (возможно, будет полезно и наименование контроллера - SIXTHHD-HD1).
      • 1б. Или найти цоколёвку "старого" 10,1" дисплея.

    • 2. Найти цоколёвку "нового" 11,1" дисплея.
    • 3. Сравнением цоколёвок - определить электрическую совместимость дисплеев. Возможно - понадобится перекрещивание каких-то выводов. Слово TTL в описании контроллера серьёзно умаляет вероятность, но, думаю, китайцы ошиблись и там - таки LVDS выход на ЖКИ.
    • 4. Если совместимо - подключить простым и подходящим способом (пайка?) одно к другому. Если формат передачи пикселей совпадёт (можно проверить и на шаге 3, тогда - начать сразу с шага 1б) - заработает.


    Как-то делал подобное, приращивал плату от разбитого нотбука в ЖК-монитор. Работало, но до финала не дошло.

    P.S.
    ..... тогда отображается всякий шлак без моего экрана.

    Потому, что преобразователь HDMI-LVDS, виртуально, подходит к любому ЖКИ с указанной глубиной цвета и числовм LVDS каналов.
    ..... что такое эти A00, A01, A03?

    Аппаратные ревизии ЖКИ. Как правило - мало на что влияют.
    Ответ написан
    1 комментарий
  • На своем сайте надо организовать возможность онлайн трансляции через iр камеры. Как это сделать?

    uvelichitel
    @uvelichitel
    habrahabr.ru/users/uvelichitel
    На сайте понадобятся nginx для раздачи и ffmpeg для конвертирования видеопотоков (или готовое платное решение).
    Если зрительская аудитория большая то вы вряд ли справитесь силами своего сервера. Нужно будет использовать вещательную платформу вроде youtube или steam.
    Гуглить video streaming.
    Компетенций медика тут не хватит. Задача довольно сложная. Бесплатно вряд ли получится.
    Ответ написан
    Комментировать
  • На своем сайте надо организовать возможность онлайн трансляции через iр камеры. Как это сделать?

    @rPman
    Самое 'простое', установить на сервере ffmpeg и используя простую публиковать видеопоток в нужном формате
    гуглить ffmpeg webcam video streaming
    например вот
    Ответ написан
    Комментировать
  • Какую архитектуру приложения использовать для мониторинга?

    @pavelsha
    Выбрать и использовать систему BI-отчентности, которая удовлетворит по функциям и бюджету. Вместе с Заказчиком прошерстите рынок систем отчетности. Решение о допустимом бюджете, перечне необходимых "красивостей" и методикам расчета показателей принимать им.

    В вопросе пишите, что в компании "50 менеджеров". Многое зависит от того, что у Вас в компании вкладывают в понятие "менеджер". Если это действительно лица, которые принимают управленческие и производственные решения, то у них уже скорее всего есть какая-то система показателей и отчетности, которую могут вести вручную, в Excel, в отчетах Учетных систем.
    Свести все эти показатели в более менее стройную систему, а потом заставить пользоваться ей... обычно эта задача оказывается сложнее технической реализации.

    Подумайте о промежуточном хранилище НУЖНОЙ информации в необходимом и достаточном объеме. Реализуйте репликацию данных / сбор показателей в нее из продуктивных систем.
    Про прямые запросы к продуктивным рабочим базам и рабочим сервисам советую забыть. Иначе "отчеты менеджеров" положат основные производственные процессы, а виноват будет разработчик, который создал систему.
    В самом запущенном случае на него будут вешать и "срыв подготовки отчетности для принятия управленческих решений", и "остановку отгрузки / производства / продаж", и "репутационные издержки" как внутри так и снаружи компании.

    Хотя если основной продукт Вашей компании - это менеджеры и их красивые отчеты, то туда ей и дорога.
    Ответ написан
    6 комментариев
  • Куда сохраняется БД при использовании EF Core под SQL Server?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    В локальной папке пользователя должен лежать *.mdf файл с базой.
    C:\Users\%USERNAME%\database_01.mdf
    либо:
    C:\Users\%USERNAME%\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances\MSSQLLocalDB
    https://stackoverflow.com/a/36297648/14163502
    Ответ написан
    4 комментария
  • Как исправить утечку памяти при работе с EF?

    vabka
    @vabka Куратор тега ASP.NET
    Токсичный шарпист
    1. Кучу памяти сжирает change tracker в EF, так что первым шагом его отключаем, добавляя AsNoTracking к каждому запросу.
    А там где действительно нужно отcлеживать изменения - отсоединяем объекты, когда они не нужны при помощи Detach
    2. Включаем ServerGarbageCollection, чтобы сборщик мусора мог работать в несколько потоков
    3. Заменяем синхронные вызовы EF на асинхронные.
    По идее тоже должно немного помочь
    4. Вытаскиваем объекты из базы не по одному, а пачками штук по 100, тк GC проще работать с большими кусками, чем с маленькими
    5. Если я правильно понимаю, это у вас HostedService.
    В таком, случае смотрите внимательно на использование контекста, тк ещё в другом месте может Change Tracker нагружаться
    Ответ написан
    4 комментария
  • Какие нюансы работы самозанятым?

    @Stalinko Куратор тега Фриланс
    PHP'шник и фрилансер до мозга костей
    1. Самостоятельное ведение бухучёта, общение с налоговой, выписывание чеков.

    2. Отсутствие пенсии, налоговых вычетов, банки очень плохо дают кредиты

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

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    Мне кажется или в 1 случае это весьма самоуверенно - позволять джуну бэкэндеру проектировать бд

    А вы спросите что конкретно они понимают под проектированием.
    Скорее всего, на проекте уже есть какая-то бд и архитектура, так что от тебя будет требоваться максимум - спроектировать новую таблицу, или несколько + связи между ними.
    + Знать про разные НФ и уметь нормализовать данные до 3НФ

    Это вполне обычная работа бэкендера.
    Ответ написан
    4 комментария
  • Нормально ли что джуна бэкэндера просят проектировать бд?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Если ты только в самом начале пути, и единственный вопрос, который тебя при этом заботит - это "а не слишком ли много от меня хотят?", то далеко по этому пути не уйдешь. В этой профессии любой опыт ценен. И возможность получить дополнительные знания - это плюс вакансии, а не минус.
    Суть профессии программиста в том, что ты учишься все время. То есть, любые полученные знания - это не вершина, а всего лишь еще одна ступенька. И просто глупо ставить какие-то рамки - "это будем учить, а это уже они много хочут".

    При чем здесь самоуверенность - вообще непонятно
    Разумеется весь код джуна будет проходить код-ревью, то есть прямо в продакшен никто эту БД заливать не будет.
    Но при этом и создавать за него простенькую БД для небольшого сервиса, типа отзывов на товары, никто не будет: такой беспомощный джун никому не нужен. Предполагается, что еще на этапе обучения он уже делал подобные проекты и умеет спроектировать для них БД.
    Ответ написан
    Комментировать
  • Что это означает?

    freeExec
    @freeExec
    Участник OpenStreetMap
    public string Name
    {
       get
       {
           return this.name;
       }
    }
    Ответ написан
    Комментировать
  • Почему Visual Studio не видит using?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    авто сгенерированный шаблон - 1 строка кода, над ней камент (кликабельно)
    8yY3JG0.png


    а в студии 2019 все было традиционно, что означает у вас либо текст битый, либо пути битые, либо в настройках чего перемудрили
    Ответ написан
    Комментировать