• Почему результат меняется при Atomic операциях?

    xez
    @xez Куратор тега Java
    TL Junior Roo
    Вот тут ошибка: while (x.get() < 999999)
    Вполне атомарно можно получить тут true на неограниченное количество потоков.
    Ответ написан
    4 комментария
  • Как найти площадь квадрата, имея 2 отрезка?

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

    Не совсем пока еще понятно, квадрат может быть ориентирован как угодно, или тоже должен быть параллелен осям координат? Судя по тупости формулеровок я думаю, что составители задачи имели в виду более простой вариант, и стороны квадрата тоже должны быть параллельны.

    В этом случае можно сначала построить обрамляющий прямоугольник вокруг обоих прямоугольников (взять максимум и минимум по каждой оси из всех углов). А потом взять его большую сторону в качестве стороны квадрата-ответа (возвести в квадрат и вывести).

    Если же это не сработает и квадрат можно вращать, то тут все сложно. Путем очень хитрых геометрических рассуждений можно доказать, что квадрат в оптимальном случае, все-таки, будет параллелен осям координат и просто написать решение выше. Ну, или, если не верите, то можно ввести угол поворота как переменную, написать функцию, котороя поворачивает все точки на данный угол, а потом ищет (по алгоритму в начале) площадь описанного параллельного осям квадрата, и потом запустить тернарный поиск минимума по этой функции.
    Ответ написан
    2 комментария
  • Обход NAT вполне реален в нынешних реалях?

    @res2001
    Developer, ex-admin
    Согласен с предыдущими отвечающими.
    Но, можно посмотреть в сторону IPv6. С его адресной базой NAT в принципе не нужен, можно раздавать белые адреса каждому "утюгу". Вот только не уверен, что провайдеры именно так поступают.

    Фаервол в любом случае может заблокировать трафик, хоть с NAT, хоть без NAT, хоть IPv6 - роли не играет.
    Обычно, что бы обходить фаервол просто используют "стандартные" порты на сервере, которые, как правило (но не обязательно), везде открыты, например TCP/80 (http) или TCP/443(HTTPS). Это не дает 100% гарантии прохождения фаервола, но шансы повышает.

    И кстати, если мы говорим об IPv4, то для того, что бы обойти NAT нужно использовать UDP, а не TCP. На TCP NAT не обойти.
    На счет STUN и т.п. Там смысл в том, что сам STUN сервер с белым IP нужен только для получения клиентами адреса и порта "сервера", дальнейшая передача трафика идет напрямую между клиентом и сервером. NAT в этом случае не обходится, а просто клиентами используется та же дырка в NAT, которая образовалась при подключении сервера к STUN.
    Ответ написан
  • Насколько актуален MVC в Golang для написания сайтов средней сложности?

    alfss
    @alfss
    https://career.habr.com/alfss
    Буду продвигать в массы

    https://github.com/alfssobsd/notes/blob/master/gol...
    https://github.com/alfssobsd/clean-arch-golang-bes...

    В текущей компании делаем так , аналогично в Java , Kotlin, нам нравится .
    Ответ написан
    Комментировать
  • Notice при выводе массива с помощью foreach в html?

    @dzhebrak
    Исправленный вариант:
    <div>
      <?php foreach($images as $img): ?>
            <img src="images/<?=$img?>" alt="" width="200">
        <?php endforeach; ?>
    </div>

    Обратите внимание на открывающие теги: <?php вместо <?. Чтобы использовать второй вариант (как в вашем примере) в php.ini параметр short_open_tag должен быть равен On
    Ответ написан
    3 комментария
  • Как правильнее будет наименовать блок со вложеностью?

    ArsenyMatytsyn
    @ArsenyMatytsyn
    Руководитель frontend направления, предприниматель
    .main
    →.main__sidebar
    →.main__content
    →→.link
    →→.elem
    →→→.elem__title
    →→→.elem__content
    Ответ написан
    Комментировать
  • Как обернуть массив в блок?

    muzikant777
    @muzikant777
    PHP/Vue разработчик
    Если я правильно понял:
    <?php
    if(isset($_POST['btn'])) {
      $name = htmlspecialchars($_POST['name']);
      $email = htmlspecialchars($_POST['email']);
      $pass = htmlspecialchars($_POST['pass']);
      $pass2 = htmlspecialchars($_POST['pass2']);
    
      $errors = array();
      if($name == "" && $email == "" && $pass == "" && $pass2 == ""){
        $errors[] = "<span style='color: red; font-size: 18x;'>Все поля ОБЯЗАТЕЛЬНЫ к заполнению</span></br>";
      }
      if($name < 4 || $name > 10){
        $errors[] = "<span style='color: red; font-size: 18px;'>Ваше имя не соответствует длине</span></br>";
      }
      if(preg_match('/[a-zA-Z0-9]/', $name)){
        $errors[] = "<span style='color: red; font-size: 18px;'>В вашем имени запрещенные знаки</span></br>";
      }
      if(!empty($errors)) {
        echo "<div style='text-align: center; background-color: rgba(124, 124, 124, 0.78); width: 400px; heigth: 300px; margin: auto; margin-top: 10px; '>";
        foreach ($errors as $error) {
          echo $error;
        }
        echo "</div>";
      }
    }
    ?>


    И вот это почитайте на всякий случай.
    Ответ написан
    Комментировать
  • Проверка на существование пользователя?

    Exploding
    @Exploding
    wtf?
    Проверьте, что приходит вообще:
    print_r($_POST);
    if(isset($_POST['done'])){
      //.....
    }

    И может такого пользователя все-таки нет?
    Ответ написан
    4 комментария
  • Сверстал мини-форму, ну не знаю правильно ли это сделал?

    @codymaverick
    1.Сброс padding и margin для всех элементов с помощью *{} не самая лучшая практика.
    2. Давайте элементам классы и используйте их в css. Страницу на тегах вы вряд-ли сверстаете.
    3. Селектор типа .parent > .child работает строго для родителя элемента child. Когда добавите классы, надобность в нём пропадёт. Советую почитать про БЭМ.
    Ответ написан
    3 комментария