Задать вопрос
  • Как будут относится к программисту без образования?

    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 комментария
  • С чего начать иммиграцию в Канаду?

    @AntonSidorenko
    Здравствуйте!
    Единственный авторитетный и самодостаточный ресурс, где полностью описаны все процедуры и все необходимые условия - это официальный сайт министерства по делам иммиграции и гражданства правительства Канады: https://www.cic.gc.ca/
    Помимо общего знакомства с доступными программами иммиграции, рекомендую пройти там оценку своего иммиграционного рейтинга: https://www.cic.gc.ca/english/immigrate/skilled/cr... - и будет понятно, что нужно подтянуть, что поправить.
    В любом случае, потребуется зарегистрироваться в федеральной иммиграционной программе ExpressEntry, опционально - в провинциальных аналогичных системах на ваш выбор.
    В общем-то на этих официальных сайтах все описано, ну а если вкратце, то в зависимости от возраста, образования, семейного положения и некоторых прочих факторов, будут нужны: оцененные в WES Canada документы об образовании, официальный результат IELTS или TEF. Они же нужны для регистрации в ExpressEntry. Если есть - джоб оффер от работодателя.
    Деньги (суммы и сроки хранения в банке - описаны в оф. документах), медицинское освидетельствование в сертифицированных для этого центрах, справки о несудимости и др. - нужны уже на последнем этапе, перед отъездом.
    Но начать все равно надо с сайта cic и IELTS и системы ExpressEntry.
    Есть ряд неплохих каналов на youtube об иммиграции в Канаду, например "Интересный Калгари": https://www.youtube.com/watch?v=knOl7Hgc4ps
    Примерно так, может быть не все детали привел, но основное - вот.
    Ответ написан
    2 комментария
  • Как подменить диск в Linux?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    добавить диск, смонтировать в другое место
    сделать rsync
    остановить приложение
    сделать rsync
    отмонтировать старый диск
    перемонтировать новый диск в /mnt/files
    запустить приложение

    Если между диском и ФС случайно оказался LVM - то смигрировать силами LVM без остановки приложения.
    Ответ написан
    Комментировать
  • Для Flask / Django нужны CMS?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Django
    Седой и строгий
    Сайт можно разработать, используя только язык программирования. Вам придётся весь необходимый функционал написать самостоятельно, но при это написать можно как угодно и производительность будет зависеть только от вашего мастерства.

    Можно сэкономить себе время и силы, используя библиотеки, но это наложит на вас ограничения, писать придётся с учётом API библиотек. Да и привнесённые библиотеками абстракции начнут влиять на скорость работы кода.

    Можно ещё больше ускорить разработку и сократить трудозатраты, если взять фреймворк (например Django или Flask), но и ограничений станет ещё больше, как и влияния на производительность.

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

    Вам выбирать какой баланс между ручной работой и свободой действий выбрать, на каком уровне абстракции и унификации остановиться.
    Ответ написан
    Комментировать
  • Как загрузить картинку с устройства в вк через vk_api на python?

    HemulGM
    @HemulGM Куратор тега Python
    Delphi Developer, сис. админ
    Всё там понятно описано (подробнейшая инструкция вк)
    Первым делом нужно получить адрес сервер, куда можно загрузить картинку photos.getWallUploadServer
    Далее, отправляешь на этот сервер нужный файл через Post. Файлы в полях file/file1, file2 в формате multipart/form-data
    Тебе возвращается ответ в виде массива с данными о загруженных фото photos_list. Затем, выполняешь photos.save, передав photos_list в параметрах.
    В ответ приходит массив фотографий, из которых ты уже забираешь id, owner_id, access_key, если нужно и отправляешь во вложении. Всё.
    Ответ написан
    3 комментария