Задать вопрос
  • Какой путь программиста выбрать в 2020?

    saboteur_kiev
    @saboteur_kiev Куратор тега Карьера в IT
    software engineer
    С каждым годом все меньше и меньше проектов для Desktop'ов

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

    script / front, back-end / mobile development

    Вы сейчас перечислили почти все области, кроме нативного десктопа. Ну хотите сменить, попробуйте.
    Но может имеет смысл найти проект, где востребован ваш текущий опыт?
    Ответ написан
    Комментировать
  • Как настроить защиту от DDoS для NGINX или Apache?

    При данных параметрах обнаружения атаки думаю вам подойдет fail2ban.
    Ответ написан
    3 комментария
  • Как использовать linux сервер на windows 10?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Все наоборот переходят на линукс.
    А винду, если так хочется, можно запустить в виртуалке.

    Но если вот прям не терпится слить все свои приватные данные в Редмонд, то сначала надо понять, что нужное тебе решение называется не "линукс сервер", а докер. И я в полном недоумении, почему за сутки никто не упомянул это стандартное решение. Видимо, понимать суть вопроса люди окончательно разучились, с трудом осиливая заголовок, не говоря уже об анализе текста вопроса.
    Ответ написан
    8 комментариев
  • Необходимо осуществить выход с профиля именно сессией как мне это осуществить?

    @NedoKoder
    на всех страницах проверь наличие session_start(), а при сохранении параметров авторизации в сессии, время хранения куки поставь на пару лет
    Ответ написан
    2 комментария
  • Как будут относится к программисту без образования?

    GreyCrew
    @GreyCrew
    Full-stack developer
    На месте работодателя я бы призадумался, почему в 17 лет ты в 9м классе, когда я в 17 лет заканчивал 11 класс (пошел в школу с 7 лет, 4й класс не пропускал).
    И я бы не взял на работу, как минимум мне было бы скучно со школьником в коллективе.

    Но по правде говоря хотя бы общее образование я бы закончил. Ведь какие то базовые знания граматики\математики\информатики\...\любого другого школьного предмета пригождаются в жизни, и не важно кем ты будешь работать, но будучи программистом особенно приоритетны аглийский язык и метематические предметы.
    Ответ написан
    3 комментария
  • Пропадают данные пользователя при обновлении страницы почему?

    politon
    @politon
    HTML5,CSS3,JS,PHP,SQL,API,canvas,animation...
    На индекс файле в самом начале
    session_start();
    Далее
    $_SESSION["param1"] = "value_param1";
    $_SESSION["param2"] = "value_param2";
    ...
    $_SESSION["paramN"] = "value_paramN";
    Ответ написан
    4 комментария
  • Где найти работу джуниору по Java/C#/PHP/JavaScript?

    @RuComMarket
    Битрикс FullStack разработчик
    5 лет на фрилансе, это срок) может вы слабо себя оцениваете? научитесь накручивать себе цену, скорее всего в какой-то узкой направленности вы уже не джуниор, а смело можете выставить себя мидлом, главное за что-нибудь уцепиться, что реально даст толчок в опыте и стаже, а если будет или есть пару проектов, которые не стыдно показать, то готовьтесь брать билет из глубинки в какой-нибудь город, где есть спрос на разработчиков. В глубинке не получится нормально получать рост в данном направлении, там слишком низкий потолок.
    Ответ написан
    Комментировать
  • Как правильно экранировать символы в SQL запросы, если нужно отправить HTML-код?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    HTML никак специально экранировать не нужно. И вообще ничего экранировать не нужно. Экранирование - это треш, угар, прошлый век и инъекции. Данные в БД надо просто посылать отдельно от запроса.

    Удивительно, что на этот вопрос подписалось ещё столько народу.
    Ну это я не знаю - как подписаться на вопрос "сколько будет шестью шесть?". Не "дважды два", но близко.
    Работа с БД - это самые основы пхп, которые обсосаны в каждом учебнике со всех сторон. Неужели всё так плохо, что этот вопрос вызывает столь живой интерес, чтобы попасть в список интересных на тостере?

    Причем твоя лично проблема здесь совсем не в том, "как экранировать". HTML никак особо экранировать не нужно, базе данных абсолютно всё равно, что ты внее вставляешь. Твоя проблема в том, что ты в принципе не знаешь пхп и путаешься в основах языка, используешь устаревшую версию, которая не будет работать на живом сайте. И даже самый базовый синтаксис тебя пугает. Поэтому извини, я буду писать ответ не для тебя, а для тех, кто, в который раз, задается этим вечнозеленым вопросом, но по какой-то причине не смог освоить базовые навыки работы с гуглем/яндексом.

    Чтобы вставить данные в mysql, и вообще никогда не думать ни про какое "экранирование", надо
    1. Все переменные в запросе заменить на знаки вопроса
    2. Подготовить запрос к исполнению
    3. Привязать переменные к знакам вопроса
    4. Выполнить запрос.

    Как я уже говорил, функций, которые начинаются на mysql, в языке давно нет. Остаются только те, которые начинаются на mysqli и PDO. Вот для них я и приведу примеры.

    mysqli
    $type = 'testing';
    $reporter = "John O'Hara";
    $query = "INSERT INTO contents (type, reporter) VALUES(?, ?)"; // заменем
    $stmt = $mysqli->prepare($query); // подготавливаем
    $stmt->bind_param("ss", $type, $reporter); // привязываем
    $stmt->execute(); // исполняем

    Важно! Чтобы этот код работал, сначала надо правильно установить соединение mysqli
    PDO
    $type = 'testing';
    $reporter = "John O'Hara";
    $query = "INSERT INTO contents (type, reporter) VALUES(?, ?)"; // заменяем
    $stmt = $pdo->prepare($query); // подготавливаем
    $stmt->execute([$type, $reporter]); // привязываем и исполняем

    Важно! Чтобы этот код работал, сначала надо правильно установить соединение PDO

    Также можно использовать сторонние библиотеки, с которыми все еще проще. Но использование сторонних библиотек почему-то пугат новичков хуже чем зомби на кладбище в безлунную ночь, поэтому настаивать не буду
    Ответ написан
    18 комментариев
  • Существует ли доступный ультразвуковой датчик уровня жидкости в металлической емкости для Arduino?

    gbg
    @gbg Куратор тега Arduino
    Любые ответы на любые вопросы
    В промышленности, количество сжиженного газа в баллоне измеряют по массе
    Ардуина без дополнительной обвязки в автомобиле будет ловить помехи от зажигания и глючить.

    Врезать что-то в баллон - подвергать опасности себя и окружающих.
    Ответ написан
    2 комментария
  • Как решить эту задачу от яндекса?

    @kunjut19
    поищите игра "жизнь". В интернете куча решений.

    А вообще:
    1) берете клетку (в цикле обходите каждую клетку поля)
    2) циклом обозреваете клетки вокруг нее
    3) если соседняя клетка живая, увеличиваете счетчик живых соседей на 1
    4) после обхода всех соседних клеток (а их 8), смотрите - если клетка, которую вы рассматриваете живая, то
    а) оставляете живой, если счетчик живых соседей равен 2 или 3 - оставляете все как есть
    б) если другое значение - меняете ее значение на 0
    5) если клетка изначально мертвая, то при значении счетчика живых соседей, равного 3, оживляете

    Прошлись таким образом по всем клеткам доски, подождали секунду и заново запустили весь этот процесс

    Стартовое значение из файла (как я понимаю) - это изначалое расположение живых и мертвых клеток.

    У меня есть решение на javascript. Если понимаете этот язык, могу скинуть вам код, а вы переделаете под python
    Ответ написан
  • Как себя направлять в обучении, почему через 4 года опыта работы я все еще плохо программирую?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    Есть общепринятый кодестайл практически для любого языка, для того же пхп есть PSR, для жавы Java Style Guide и т.д. Обычно написанное по кодестайлу читается достаточно просто и легко, собственно для чего и составлялись данные гайды.
    Для некоторых фреймворков, или даже внутри отдельных организаций, может существовать свой, отдельный кодестайл, отличный от общепринятого, диктуемый разными причинами, от чисто технических, до маразматично-идиотских, но все они призваны облегчить разработчикам одного продукта писать в едином стиле и понимать код коллег максимально комфортно.
    Ответ написан
    Комментировать
  • Какую БД выбрать для маленького файлового сервиса?

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

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    В таблице пользователя добавляем поле: chatOnlyWithFriends: true/false.
    Если true - шлём только тем, кто в списке друзей.
    Если false - проверяем: кто в бане у пользователя и исключаем их из общего списка. Отправляем всем за исключением забаненных у пользователя.

    Таблица банов ("многие-ко-многим"):
    id, initUserID, bannedUserID
    Проверяете по ней: кто кого забанил и решаете: отправляем или нет.
    Ответ написан
    7 комментариев
  • Как реализовать лайк на чистом js?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Делегирование, назначаем обработчик клика один раз:

    // при клике по кнопке определяем её индекс и хватаем .photos__like-count с таким же индексом
    document.addEventListener('click', ({ target: t }) => {
      if (t.classList.contains('photos__like-icon')) {
        const index = [...document.querySelectorAll('.photos__like-icon')].indexOf(t);
        const counter = document.querySelectorAll('.photos__like-count')[index];
        const count = counter.textContent;
        counter.textContent = t.classList.toggle('active') ? -~count : ~-count;
      }
    });
    
    // но если у каждой пары icon-count если отдельный общий предок, то можно и попроще сделать
    document.addEventListener('click', ({ target: t }) => {
      if (t.matches('.photos__like-icon')) {
        t
          .closest('селектор общего предка кнопки и элемента с количеством')
          .querySelector('.photos__like-count')
          .textContent -= t.classList.toggle('active') ? -1 : 1;
      }
    });

    Назначаем обработчик клика каждой кнопке индивидуально:

    const toggleLike = function({ target: t }) {
      this[t.dataset.index].innerText -= [ 1, -1 ][+t.classList.toggle('active')];
    }.bind(document.querySelectorAll('.photos__like-count'));
    
    document.querySelectorAll('.photos__like-icon').forEach((n, i) => {
      n.dataset.index = i;
      n.addEventListener('click', toggleLike);
    });
    
    // или, при наличии отдельных общих предков у каждой пары .photos__like-icon и .photos__like-count
    const toggleLike = ({ target: t }) => t
      .closest('селектор общего предка кнопки и элемента с количеством')
      .querySelector('.photos__like-count')
      .innerText -= t.classList.toggle('active') ? -1 : 1;
    
    for (const n of document.querySelectorAll('.photos__like-icon')) {
      n.addEventListener('click', toggleLike);
    }
    Ответ написан
    Комментировать
  • Бывают ли "умные" проходные/перекрестные выключатели?

    @golovopatolog
    Используйте импульсные реле, которые в свою очередь сконцентрируйте в одном щите. В этом случае можно сделать любые сценарии или менять их без переделки проводки
    Ответ написан
    Комментировать
  • Как удалить программы в ubuntu?

    vaut
    @vaut
    Для начала стоит понять что вы запускаете и как оно попало в систему.
    Это может быть просто запущенный бинарник который вы закрепили в доке, может быть что то установленное из исходников make install или нормальное приложение поставленное через пакетный менеджер.

    В первом случае просто открепите его из дока и удалите файлы которые запускали.
    Во втором топитесь, если повезет к make install завезли make uninstall и он отработает корректно.
    В третьем варианте вам нужно определить имя пакета.
    Сделать это можно так:
    - определить имя процесса через топ или системный монитор
    - найти какой именно бинарник запускается можно так Посмотреть ps aux | grep имя_процесса, если оно будет без пути, то which имя_процесса
    - определяем какому пакету принадлежит запускающийся исполняемый файл dpkg -S путь_к_файлу
    Ну как удалить известный пакет я надеюсь вы уже знаете.
    Ответ написан
    Комментировать
  • Насколько оправдано хранить информацию о файлах в базе данных?

    mindtester
    @mindtester
    http://iczin.su/hexagram_48
    Битриксоид до мозга и костей
    и такой вопрос?! .. кхм..
    хранить информацию о файлах в базе данных
    это фичи ФС по тому и ответ простой - если вам требуются возможности, которые ФС не способна предоставить* - это нормально. в противном случае - такое решение избыточно, и может быть лишним источником ошибок

    upd * включая скорость отклика, если на то пошло
    Ответ написан
    2 комментария
  • СURL POST Yandex api?

    @KingstonKMS
    Необходимо указать в заголовке тип принимаемого ответа. Этот пример должен помочь понять, что не так и где исправить:
    $curl = curl_init();
    
    curl_setopt_array($curl, array(
      CURLOPT_URL => "https://fleet-api.taxi.yandex.net/v1/parks/driver-profiles/list",
      CURLOPT_RETURNTRANSFER => true,
      CURLOPT_ENCODING => "",
      CURLOPT_MAXREDIRS => 10,
      CURLOPT_TIMEOUT => 0,
      CURLOPT_FOLLOWLOCATION => true,
      CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
      CURLOPT_CUSTOMREQUEST => "POST",
      CURLOPT_POSTFIELDS =>"{\n  \"limit\": 100,\n  \"offset\": 0,\n  \"query\": {\n    \"park\": {\n      \"id\": \"ee6f33c4562b4e1f8646d157bd70b2c4\",\n      \"driver_profile\": {\n      }\n    }\n  },\n  \"fields\": {\n  },\n  \"sort_order\": [{\n    \"direction\": \"asc\",\n    \"field\": \"account.current.balance\"\n  }]\n}",
      CURLOPT_HTTPHEADER => array(
        "Accept: application/json",
        "Content-Type: application/json",
        "X-Client-ID: API7-sandbox-client",
        "X-API-Key: FoquKQFW/WgvS/Kae/GheB/BdOtcvzSZLYrZv",
        "Accept-Language: ru"
      ),
    ));
    
    $response = curl_exec($curl);
    
    curl_close($curl);
    echo $response;
    Ответ написан
    1 комментарий
  • Как избежать блокировки домена?

    @Nc_Soft
    Сталкивался с похожим.
    На основном домене должны быть ссылки на контент на другом домене. Ссылки должны быть с хешем, чтобы жили сутки (как пример реализации nginx.org/ru/docs/http/ngx_http_secure_link_module.html ).
    Как только получаете жалобу на эту ссылку, то отписываетесь через сутки что удалили (хеш уже устареет, ссылка работать не будет, формально вы чисты).
    Это отсеивает 80% жалоб. С остальными индивидуально.
    Ответ написан
    4 комментария
  • Как зарегистрировать аккаунт telegram на временный номер и не потерять его?

    Noizefan
    @Noizefan
    Ты просто знай, что сервисам активаций не выгодно продавать симку (или даже сервис) в одни руки. никто тебе там конфиденциальность не гарантирует. Хочешь тысячи и миллионы - сам купи шлюз и тысячу симок.

    upd: https://www.voip-shop.ru/portech_sbk-128.htm
    Ответ написан
    2 комментария