• Возможно ли на практике изменить данные в блокчейне?

    @rPman
    Проблема терминологии, термин 'участник' неправильно изначально определен и создает кучу неоднозначностей.

    Для PoW консенсуса - 'участник' это майнер, все остальные - пользователи, никак не влияющие на работу (точнее влияют на доствку неподтвержденных транзакций до майнеров, не больше)

    Для PoS консенсуса - 'участник' это витнес/зверитель или стейкер (по факту тот же майнер но сдругими правилами), в зависимости от реализации консенсуса, с теми же вытекающими последствиями.

    Так вот, только майнеры могут что либо менять в блокчейне, и в зависимости от консенсуса, требования к этому соответствующие (у PoW это обладание >50% мощностей, но можно и меньше, если количество попыток достаточно велико, можно 'отменять' изменения в последних блоках и при меньших мощностях, и да, незамеченным это не останется, это мониторят все крупные участники)

    p.s. есть еще разработчики, чей код (если) майнеры принимают безоговорочно, в этом случае разработчики самые главные и могут все что угодно (повторяю - согласие майнеров в данном случае требуется все равно).
    Например чтобы нарушить провозглашенное правило первого 'цецентрализованного контракта на блокчейне' DAO в сети ethereum - 'код это закон', разработчики ethereum внесли соответствующий фикс а майнеры молча поддержали, заблокировав адреса одного из пользователей (который обнаружил уязвимость в коде и собирался присвоить монеты себе), так появился ethereum classic (в котором блокировки нет), точнее если праивльно формулировать, идеологически верный эфир переименовали в ethereum classic а новый измененный блокчейн стали называть ethereum.
    Ответ написан
    2 комментария
  • Как использовать RATE_VERY_FAST (Java, Android)?

    @Mercury13
    Программист на «си с крестами» и не только
    Давайте посмотрим, что представляет собой RATE_XXX и SENSOR_DELAY_XXX.
    SENSOR_DELAY_FASTEST = 0
    SENSOR_DELAY_GAME = 1
    SENSOR_DELAY_UI = 2
    SENSOR_DELAY_NORMAL = 3

    RATE_STOP = 0
    RATE_NORMAL = 1
    RATE_FAST = 2
    RATE_VERY_FAST = 3

    Функция registerListener требует задержку в мкс, или одну из четырёх констант SENSOR_DELAY. Поставив RATE_VERY_FAST=3, вы реально поставили ему SENSOR_DELAY_NORMAL=3!

    А куда же совать RATE? В SensorDirectChannel.configure! А сам SensorDirectChannel можно получить через SensorManager.createDirectChannel! Вот как-то так — и даже понимаю, откуда такая архитектура. Ну не может система, оптимизированная под низкое энергопотребление, 1700 раз в секунду пинать пользовательскую программу — программа получает управление намного реже, а информация с акселерометра накапливается в буфере памяти.

    UPD. Есть и вторая причина. Обработка может затянуться более чем на 1/1700 секунды, и в это время датчик продолжит писать информацию в тот самый буфер.

    UPD2. Другими словами, через callback и через буфер в памяти — две разных архитектуры. Первая обеспечит низкую задержку. Вторая — высокую (причём стабильно высокую!) частоту опроса, но задержка от регистрации до обработки, скорее всего, будет побольше.
    Ответ написан
    2 комментария
  • Должен ли программист при получении заказа выполнять и роль девопса?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Должен кому? Долг перед заказчиком определяется пунктами договора. Если вы не соглашались делать работу devops'а, то и не должны её делать. Но лично я считаю, что должен самому себе уметь делать решения под ключ. Правда, я за это всегда накручивал ценик равный оплате разработчика бэкенда, фронтенда, админа, аналитика и менеджера проекта.
    Ответ написан
    3 комментария
  • Как отсортировать произвольные точки так, чтобы при проведении линии через них последовательно получился многоугольник?

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

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Событие A - Андрей попал в группу 1
    Событие B - Андрей попал в группу 2
    Событие С - Сергей попал в группу 1
    Событие D - Сергей попал в группу 2
    P = P(A) * P(C|A) + P(B) * P(D|B) = 1/2 * 12/25 + 1/2 * 12/25 = 12/25 = 0.48

    const shuffle = (arr) => {
      for (let i = 0; i < arr.length - 1; i += 1) {
        const j = Math.floor(Math.random() * (i + 1));
        [arr[i], arr[j]] = [arr[j], arr[i]];
      }
    }
    
    const test = () => {
      let p = 0;
      for (let i = 0; i < 100000; i += 1) {
        const arr = Array(26).fill().map((el, idx) => idx % 2);
        shuffle(arr);
        p += arr[0] === arr[1] ? 1 : 0;
      }
      return p / 100000;
    }
    
    console.log(test()); // 0.47915
    console.log(test()); // 0.48109
    console.log(test()); // 0.47811
    console.log(test()); // 0.47881
    console.log(test()); // 0.48162
    console.log(test()); // 0.48174
    Ответ написан
    Комментировать
  • Как сделать онлайн игру использовать dedicated сервер купленный, на движке unreal engine 4?

    @Drno
    То что есть сервер это хорошо.

    А как делать игру в 2 слова не подскажешь. Такое обычно долго разрабатывается
    Ответ написан
    Комментировать
  • Какое железо лучше для нагруженного веб-сервера?

    @edo1h
    На LA вообще смотреть не стоит.
    Если время генерации страничек устраивает, то всё нормально (но учитывайте, что у вас нет запаса мощности на случай наплыва пользовтелей, неудачных обновлений прграммистами и т. п.).
    Если не устраивает — увеличивайте число ядер. Можно увеличить число ядер (не важно, intel или amd), но лучше смотреть в сторону горизонтального масштабирования (увеличения числа серверов). Так проще обеспечивать отказоустойчивость, дальнейший прирост производительности.
    Ответ написан
    Комментировать
  • Актуальны ли технологии AJAX и JQUERY при нынешних веб реалиях?

    @unreal_serg
    Jquery вполне актуален для дешевых проектов до 100к рублей примерно. Middle разработчик на React, Vue, Angular стоит тысяч 150 в месяц, в то время как специалист, знающий Jquery стоит чуть ли не в два раза дешевле, отсюда и актуальность Jquery.
    Jquery гораздо проще всех вышеперечисленных библиотек/фреймворков. Накидать на нем слайдер, счетчик и прочие мелкие модули для мелких сайтов - 5 минут, не говоря уже о бесчисленном множестве готовых решений. В то время как, намутить "клик вне элемента" на Vue3 CLI для компонента в списке будет тот еще гемор. В то время как на Jquery навесил слушатель по классу, сделал проверку и не паришься!
    Поэтому вывод: для более менее продвинутых приложений типа SPA, CRM, админка и пр. - актуальнее всего использовать прогрессивные фремворки. Для дешевых сайтов - смело бери Jquery, вероятность ошибиться будет минимальная. Особенно если ты бэкендер и знания фронта посредственные. И жадный заказчик тебе спасибо скажет (наверное).
    А все эти "Jquery не нужен" - детские понты среди программистов аля "я пишу на Vue, jquery - кал", "Я пишу на Java, PHP - кал", "Я пишу на C, Java - кал" и т.д.
    Ajax - это термин, означающий отправку асинхронных запросов. На сегодняшний день актуально использовать fetch в нативном JS/
    Ответ написан
    2 комментария
  • Актуальны ли технологии AJAX и JQUERY при нынешних веб реалиях?

    ThunderCat
    @ThunderCat Куратор тега JavaScript
    {PHP, MySql, HTML, JS, CSS} developer
    jquery - такой себе жс для ленивых, много длинных функций объединенных в удобные обертки, естественно найдется как много сторонников jquery (например есть куча готовых жс скриптов использующих как движок jquery), так и много поборников "чистого арийского" кода (только ванилла, только хардкор!). На самом деле все зависит от задачи, уровня владения и философии разработчика. Как таковая библиотека не особо устарела и много где используется, использовать ли ее лично вам - вопрос вкуса и убеждений. Подробнее обсуждалось тут.

    что касается AJAX - скорее всего вы не совсем понимаете в чем суть, так как это не какая-то библиотека или фреймворк, а метод взаимодействия между клиентом и сервером, по протоколу http(s), позволяющий отправлять запросы без необходимости перезагружать страницу, но из контекста страницы (читать про XMLHttpRequest), и является неотъемлемой частью веб апи и устареет еще очень не скоро. Как некая альтернатива ему может выступать сокет соединение, но обычно области применения этих технологий разные, как и задачи, которые они выполняют.
    Ответ написан
    9 комментариев
  • Котруется ли у it компаний курсы JavaRush?

    AlexNest
    @AlexNest
    Работаю с Python/Django
    Спешу вас огорчить, но компаниям плевать на то, какие вы курсы проходили. Ну, максимум можно сертификатом от cisco покозырять, но и он тоже будет максимум приятным бонусом в случае если будут выбирать между вами и еще одним претендентом одного с вами уровня (и то, далеко не везде).
    Прежде всего - спрашивать будут по конкретным вашим знаниям, без оглядки на то, где вы их приобрели.
    Ответ написан
    Комментировать
  • Какое железо лучше для нагруженного веб-сервера?

    AgentSmith
    @AgentSmith
    Это мой правильный ответ на твой вопрос
    Для нагруженных сервисов железо не так важно, важна архитектура.
    Железо - это вертикальное масштабирование и оно всегда имеет ограничения, с которыми все сталкиваются через полгод-год-два. Впрочем, этот твой вопрос тому доказательство.
    Надо делать упор на горизонтальное масштабирование, чтобы не зависеть от характеристик железа.
    Другими словами, должно быть много недорогих (слабых) серверов, а не один дорогой и мощный.
    Лично мне такой подход позволяет держать нагрузку ~24000 запросов в секунду на десяти дешёвых серверах.
    Если нагрузка возрастёт, то я куплю ещё 2-5-10 дешёвых серверов вместо того, чтобы думать о характеристиках железа
    Ответ написан
    Комментировать
  • Как восстановить изменения удалённые локально в staging area?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Постановка вопроса довольно запутанная. Я понял так:
    Как восстановить файлы, которые успели индексировать через git add но затем удалили не закоммитив?

    Отменить все неиндексированные изменения позволит команда:
    git restore :/
    Ответ написан
    Комментировать
  • Почему не работает метод rename?

    vitaly_74
    @vitaly_74 Автор вопроса
    После чтения своего же вопроса, увидел ошибку, было:
    rename(
                    $info['dirname'] . $info['basename'], //файл источник
                    $this->folder() . '/' . $info['basename'] //то место куда нужно перенести
                )

    стало (не хватало слеша):
    rename(
                    $info['dirname'] . '/' . $info['basename'],
                    $this->folder() . '/' . $info['basename']
                );
    Ответ написан
    Комментировать
  • Откуда такой переход? интегрируемость монотонной функции?

    wataru
    @wataru Куратор тега Математика
    Разработчик на С++, экс-олимпиадник.
    Дельта x меньше лямбда по построению. Также, лямбда меньше дельта, так указано в насале строки. Весь этот переход - это замена каждого дельта x на большее его дельта и вынос его за скобки.
    Ответ написан
    Комментировать
  • Как создать счетчик увеличения переменной?

    xez
    @xez Куратор тега Java
    TL Junior Roo
    Сделайте ещё одну переменную, например, counterSC, которую увеличивайте на один, каждый раз когда увеличивается sc.
    Ответ написан
    Комментировать
  • Как не переносить все в стэш?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    перед коммитов я селектил файлы которые не должны попасть на гитлаб/гитхаб - заносил их в стеш
    Зачем так сложно?
    Что мешает перед коммитом индексировать только нужные файлы? Зачем ты коммитишь всё?

    уже их пушил
    Ты хотел сказать «коммитил»?
    Пушится всегда вся ветка целиком, коммиты, а не отдельные файлы.
    Ответ написан
    3 комментария
  • Как расшифровать код?

    xez
    @xez Куратор тега Java
    TL Junior Roo
    .class можно декомпилировать. (например, тут, www.javadecompilers.com)
    .jar - это zip архив с .class файлами.
    Ответ написан
    1 комментарий
  • Почему толстые контроллеры – это плохо?

    JhaoDa
    @JhaoDa
    LaravelRUS Team
    В чем проблема написать в контроллере пару where, join, мб как-то по хитрому обработать данные?
    Завтра появится задача сделать всё то же самое, но в консоли. Потащищ копипасту или начнёшь выносить общий код в реквесты, репозитории и прочие места?

    Тогда просто переносим все в модель? зачем плодить репозитории (кроме как абстрагироваться от конкретной ORM) и остальные сущности?
    Репозитории актуальны с паттерном DM и не актуальны с паттерном AR.

    При всём при этом следует помнить, что паттерны — не догмы. Паттеры для человека, а не человек для паттернов. Если у тебя одностраничник на хайповую тему, который надо сделать быстро и жить ему месяца два, то не парься и пиши всё в контроллерах. Выживет — перепишешь.
    Ответ написан
    5 комментариев
  • Как распорядиться SSD и HDD? Что под что?

    @As56
    SSD на 128 это прямо впритык. Лучше 256 под систему и софт. А обычный жд по потребностям
    Ответ написан
    5 комментариев
  • Как правильно связать php сайт с mysql?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    На частные вопросы ответили в комментариях, поэтому ответим на вопрос из заголовка.

    Чтобы соединить сайт с mysql, в РНР вообще-то есть два API - mysqli и PDO. Несколько лет назад с mysqli вообще невозможно было нормально работать, но на данный момент они выровнялись, хотя PDO все равно удобнее, по трем причинам
    1. Единый интерфейс при работе с различными СУБД (неактуально, если mysql для нас является синонимом слова база данных)
    2. Набор функций-хелперов для получения данных из БД в различных форматах (при желании легко воспроизводится вручную)
    3. Именованные плейсхолдеры (для некоторых это главная причина использовать PDO)

    Но в целом, как я говорил выше, сейчас можно использовать любое API. Главное - не использовать тот древний говнокод, который приведён в вопросе.

    1. Создаём файл`config.sample.php` куда кладем все настройки приложения, в том числе базы данных
    return [
    	'db' => [
    		'host' => '127.0.0.1',
    		'username' => '',
    		'password' => '',
    		'dbname' => '',
    		'port' => 3306,
    		'charset' => 'utf8mb4',
    	],
    ];

    2. В файле, который включается во все скрипты сайта, добавляем код
    if (!file_exists('config.php'))
    {
    	throw new \Exception('Create config.php based on config.sample.php');
    }
    $config = require 'config.php';

    3. И дальше в этом же файле пишем собственно нормальный код подключения к БД
    либо к mysqli
    // включаем режим информирования об ошибках
    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    // подключаемся к серверу
    $dbc = $config['db'];
    $db = new \mysqli($dbc['host'], $dbc['username'], $dbc['password'], $dbc['dbname'], $dbc['port']);
    // не забываем установить кодировку, чтобы не было ошибок с кракозябрами
    $db->set_charset($dbc['charset']);

    либо к PDO
    $options = [
        \PDO::ATTR_ERRMODE            => \PDO::ERRMODE_EXCEPTION,
        \PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC,
        \PDO::ATTR_EMULATE_PREPARES   => false,
    ];
    $dbc = $config['db'];
    $dsn = "mysql:host=$dbc[host];dbname=$dbc[dbname];charset=$dbc[charset];port=$dbc[port]";
    $pdo = new \PDO($dsn, $dbc['username'], $dbc['password'], $options);

    После того как будет освоена работа с системой контроля версий (а по-хорошему это надо было сделать уже давно) добавляем config.php в файл .gitignore
    Таким образом на каждом хосте, где исполняется этот код, будет собственный файл с настройками, создаваемый по образцу из config.sample.php

    Да, и Очень Важное Дополнение:
    почему нельзя сделать 1 соединение для сайта и не тратить каждый раз время на коннект к БД?

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