• Как сделать так, чтобы localStorage не перезаписывал мои элементы?

    Представьте, что, создавая запись в localStorage, вы создаёте переменную. Что произойдёт, если этой переменной потом присвоить новое значение? Очевидно, что оно займет место старого. Так же и с localStorage: вызывая метод setItem, вы целиком перезаписываете значение "todo".

    Самое банальное решение – применить конкатенацию:

    function addTodo (key, value) {
      localStorage.setItem(key, localStorage.getItem(key) + value))
    }

    Более разумное – использовать индекс в ключе:

    function addTodo (key, index, value) {
      localStorage.setItem(`${key}${index}`, value)
    }

    ...или формат JSON:

    function addTodo (key, value) {
      let list = []
    
      try { 
        list = JSON.parse(localStorage.getItem(key))
      } catch (e) {
        console.error(e)
      }
    
      list.push(value)
      localStorage.setItem(key, JSON.stringify(list))
    }
    Ответ написан
    1 комментарий
  • Могут ли взломать сайт, если на нескольких админках / БД - одинаковый пароль?

    tuxfighter
    @tuxfighter
    троль
    Любой сайт всегда можно взломать. И это мало зависит от одинаковости паролей, да и от их сложностей тоже.
    Ответ написан
    Комментировать
  • Можно ли Композицию и наследование назвать паттерном?

    Maksclub
    @Maksclub
    maksfedorov.ru
    Паттерн — довольно утилитарная вещь, некая четкая последовательность или описание связей, чтобы можно было повторить, легко опознать и донести тот или иной инструмент.

    Композиция — абстрактное понятие, классифицирующая то, что нужно выстроить как-то иначе, нежели наследование. Делегировать и выстроить так, чтобы полиморфизм проявил себя через некоторое число объектов, не связанных в цепочку наследования.
    Наследование —про то, что объекты наследуют интерфейс/состояние, тут нет схемы взаимодействия, она довольно прямая: А от Б отнаследовался и все. Но внутри сокрыто много всего.
    Ответ написан
    Комментировать
  • Насколько крутой php mysqli класс?

    SerafimArts
    @SerafimArts
    Senior Notepad Reader
    Говно.
    1) Я не буду говорить про кодстайл, благо он фиксится одним сочетанием клавиш...
    2) Побочные эффекты (die)
    3) Куча лишних вложенностей (if if if if)
    4) Полностью нарушен принцип open/close (расширяться через наследование? Серьёзно?)
    5) Куча избыточного кода. Например:
    call_user_func_array(array($this->query, 'bind_result'), $params);

    Легко переписывается как:
    $this->query->bind_result(...$params);
    6) Ну и состояние, и его мутабельность, которой не должно быть, конечно же.

    На помойку, короче.
    Ответ написан
    1 комментарий
  • Проблема с обратной связью, как исправить?

    @gh0sty
    Веб-разработчик. Пишу под Python Django.
    Я в Пыхе не шарю, но, мне кажется, проблема из-за экранирования пробела или регистра в post запросе.
    Попробуй
    <textarea rows="5" name="mess" placeholder="Сообщение"></textarea>

    и
    $message = $_POST['mess'];
    Ответ написан
    1 комментарий
  • Книги, помогающие научиться правильно именовать классы?

    @EvgeniiR
    https://github.com/EvgeniiR
    В чем моя проблема?)

    В том что ваш класс делает слишком много и знает слишком много.
    Ни про какие "3 уровня обработки" данных которые к нему приходят он знать не должен.
    Он принимает данные определенного формата и возвращает данные определенного формата. Что с ними происходило для и что будет происходить после его не волнует.

    Если невозможно выразить на уровне типов все требования к входящим данным, класс возвращает ошибку если данные пришли не в том виде, в котором он ожидал.

    какие книги ставят голову на место в этом плане?

    Почитать - Макконнелл, "Совершенный Код". Книжка толстая, но не сложная технически, любые нюансы именования там описаны.
    Ну и в дальнейшем исходить из вопросов "для чего я это делаю?" и "какие ещё есть варианты это делать?"
    Ответ написан
    2 комментария
  • Поможет ли широкополосный канал в 1 Гбит/c при DDOS-атаке?

    sim3x
    @sim3x
    Читал в КП
    перестаньте читать ерунду без промедления

    После 05 года атаку на 10+Гбпс может организовать школьник на карманные деньги

    Гарантированный канал будет стоить вам денег
    Без оборудования и мощностей для утилизации данной пропускной способности - ето деньги на ветер
    Более того, забивание канала довольно грубый подход, который очень быстро выводит часть ботнета из рабочего состояния
    Есть множество подходов, которые требуют минимум трафика и десятки-сотни запросов с десятка сотни машин, а результат будет получше чем забитый канал

    Пока вас не атакуют - делать ничего не нужно
    Когда начнут атаковать - нужно обращаться к спецу, а не мудрить
    Ответ написан
    Комментировать
  • Как побороть ошибку required parameter $query missing?

    @green_goo
    https://www.php.net/manual/ru/mysqli.query.php
    Обратить внимание на число обязательных аргументов в документации, и сравнить с числом параметров в приведенном коде

    PS. не нужно 1 и тот же запрос выполнять 2 раза.
    Ответ написан
    2 комментария
  • Можно ли написать вирус на JavaScript?

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

    Если мы мельком полистаем список уязвимостей, то увидим, что во многих из них фигурирует JS. Вот график взятый с того же сайта:
    RXmc_1mXxXA.jpg
    На нем прекрасно видно динамику уязвимостей приводящих к удаленному выполнению кода (красная линия). Отсюда логичный вывод - js можно использовать как эксплоит.

    Некоторые предыдущие ораторы неверно отмечали - браузер, как и любое другое полноценное приложение, имеет доступ к файловой системе (тот самый обычный доступ, когда можно писать, читать, создавать не системные файлы) посредством API операционной системы (например: WinAPI для windows). Внутри это все выглядит как системный вызов - программа передает управление на уровень ядра, предварительно сказав, что нужно открыть\создать\записать такой-то файл. Значит, нам нужен ассемблерный (да-да, не удивляйтесь) код, на который наш эксплоит передаст управление.

    Ок. Теперь перейдем к самому эксплоиту. Есть такая техника - heap spraying: мы берем нашу полезную (вредную) нагрузку и заполняем ей всю память:
    var buf = new Array();
    // заполним 200МБ памяти
    for(var i = 0;  i != 200; ++i) {
      buf[i] = nop + shellcode;
    }


    И, вполне возможно, что мы перезапишем определенные области (не буду вдаваться в подробности) и сможем выполнить наш shellcode. И да, как сказал riot26 - браузер после такого, скорее всего, крэшнется ... но нам это уже не важно - код будет внедрен и выполнен. Конечно, это банальщина и есть еще 100500 различных вариантов, о которых вам никто не расскажет, но идея ясна.

    PS пользуясь случаем - передаю привет людям в погонах!
    Ответ написан
    2 комментария
  • Откуда вклад, если у пользователя ноль ответов?

    Раньше, если на твой вопрос подписалось 3 человека - это 1 вклад
    Ответ написан
    1 комментарий
  • Стоит ли устанавливать Астра линукс и чем его можно заменить?

    fdroid
    @fdroid
    press any key
    Расскажу про свой опыт. Работал в школе программистом (про корректность названия должности промолчу, потому что, по сути, ни к какому программированию я отношения не имею, я сисадмин, местами даже эникей — ну или наоборот). Возник вопрос о переходе на отечественное ПО, просто потому что, согласно законодательству, муниципальные организации не имеют права закупать ПО, не присутствующее в реестре российского ПО. А лицензироваться потребность была совершенно неиллюзорная. Начал изучать тему. Для начала — операционная система. Существует Альт Линукс, который есть в реестре, но таки он не бесплатный для использования в организации. Связался с СПО «Базальт» — разработчиком ОС. Компания довольно легко пошла на встречу, согласившись предоставить нужное количество лицензий без оплаты, на условиях договора сотрудничества, который, собственно, сводился к тому, что школа на своём сайте выкладывает в общий доступ информацию о том, что использует Альт Линукс и как именно использует. Условия достаточно ненапряжные, то, что надо. Конечно же, в комплекте идёт офисный пакет — Open Office или Libre Office, точно не помню, но, как мы все знаем, весь багаж документации любой организации представлен в docx и xlsx, с которыми «либра» без поехавшего форматирования не совместима. Начал искать варианты. Первый вариант — МойОфис разработки ООО «Новые облачные технологии». Во-первых, никакими путями у меня не получилось найти ни в свободном доступе, ни на других ресурсах, дистрибутивы просто для того чтобы, хотя бы, оценить что ПО из себя представляет. Тем не менее, связался с разработчиками и совершенно без проблем для школы было предоставлено необходимое количество лицензий. Но, хоть у МойОфис с совместимостью с МС-форматами дела обстоят намного лучше чем у «либры», но, всё же, неидеально. Я давно знаю и пользуюсь пакетом OnlyOffice, который бесплатен для частного использования и реально заточен под то, чтобы работать с МС-форматами файлов, совместимость я оценил бы процентов в 99. Да вот только OnlyOffice для организаций не бесплатен и его нет в реестре российского ПО. Но, оказывается, существует версия, которая, по сути, один-в-один OnlyOffice, только называется Р7 Офис — и вот эта версия есть в реестре, но, опять же, для организаций не бесплатна. Связался с разработчиком — АО «Новые коммуникационные технологии» — и, опять же, никаких проблем с получением бесплатных лицензий для школы не возникло — предоставить нужное количество лицензий разработчик готов. Весь затык был в том, что, со слов разработчика, не определён порядок передачи лицензий и они ждут первого встречного шага со стороны регионального Министерства образования. Ввёл директора школы в курс дела, объяснил ситуацию, т.к. дальнейшие действия — это уже административная работа. Таким образом, в реальности оказалось, что можно обеспечить школу лицензионным софтом и не потратить на это ни копейки, что, безусловно, радует. Но вот до конца всю эту тему я не довёл, т.к. уволился, т.е. окончательно не согласовал лицензирование Р7 Офис, а ведь это действительно достойный софт.

    PS Мой ответ больше про внедрение, но пусть будет как есть, возможно, кому-нибудь окажется полезным.
    Ответ написан
    2 комментария
  • В каком формате хранить время для разных часовых поясов?

    delphinpro
    @delphinpro
    frontend developer
    Хранить в UTC. Для пользователя сделать настройку и делать перевод.
    Ответ написан
    1 комментарий
  • Программирование python через minecraft?

    sim3x
    @sim3x
    Имеет ли смысл учиться python'у через книгу про программирование в minecraft?
    нет

    так сам процесс обучения python без minecraft'a иногда является скучным процессом
    вам стоит подумать, стоит ли изучать программирование впринципе
    Большая часть работы скучна и рутинна
    Ответ написан
    3 комментария
  • Какой софт нужно поставить для игры на Linux?

    CityCat4
    @CityCat4
    //COPY01 EXEC PGM=IEBGENER
    Никакой

    Линух и игры - вещи не просто не совместимые, они на разных полюсах.

    Есть некоторые игры, которые работают под линухом нативно (искать в стиме, искать в гугле). Есть еще более некоторые игры, которые будут работать через wine - но не все, не обязательно хорошо и совсем не обязательно без багов.

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

    @vism
    Ваш бухгалтер ошибается.
    Ваш доход это то - что в итоге упало на счет, то что будет проходить валютный контроль.
    Комиссия апворка это их доход и с него они плтатят НДС.

    Это кстати отлично отражается в договоре, который заключается при превышении суммы работы по контракту.

    Меняйте срочно бухгалтера, понабрали студентов там каких-то
    Ответ написан
    Комментировать
  • Можно ли соединиться с бд один раз?

    Adamos
    @Adamos
    И сервер будет сидеть с открытым соединением и ждать у моря погоды, не зная, не закрыл ли юзер эту страницу вообще?
    На самом деле, обращение к базе - не настолько затратная процедура, как поддержка соединения с ней без всякой на то необходимости.
    Ответ написан
    5 комментариев
  • Что такое vue.js, насколько он мейнстримен и насколько эффективен?

    Fragster
    @Fragster
    помогло? отметь решением!
    Что это
    Vue (произносится /vjuː/, примерно как view) — это...
    для чего его разработали?
    Чтобы не думать над DOM, а думать над структурой данных и их изменением.

    Сложилось впечетление, что это некое хипстерское неэффективное поделие. Это ведь не так?
    нет, работает вполне эффективно и быстро

    Его ведь используют в каких-нибудь крупных проектах?

    https://github.com/vuejs/awesome-vue#appswebsites Кстати, aliexpress на нем работает. Ну и евроньюс.

    Насколько он упрощает разработку?

    По сравнению с purejs и jquery - очень сильно, по сравнению с другими (react/angular) меньше преимущество, но (ИМХО) оно все равно есть

    Насколько быстро он работает?

    Оверхед малозаметен

    Разработчики предлагают использовать его в паре с Node.JS, но что насчет более мейнстримного в веб-разработке PHP?

    Я использую в связке с laravel, например для создания взаимосвязанных элементов форм. Вполне удобно, но очень хочется все сделать spa (потому как очень удобно все делать в одном месте). А тут уже получается требование server side рендеринга для поисковых ботов, что невозможно без nodejs.

    Стоит ли им пользоваться, если да, то в каких типовых задачах можно раскрыть как можно больше его потенциала?

    Стоит. Любая задача, где отображаемые данные зависят от ввода пользователя. Даже корзина интернет магазина с кнопками изменения количества и удаления - даже если каждая из них шлет данные на сервер по ajax. Формы из нескольких этапов, всякие калькуляторы и прочее и прочее.
    Ответ написан
    2 комментария
  • Как редактировать сайт на VPS с серверной операционной системой?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Django
    Седой и строгий
    На проде ничего править нельзя. Править надо локальную копию, тестировать, коммитить изменения в git-репозиторий, пушить на GitHub, а на прод вытягивать с GitHub'а.
    Ответ написан
    1 комментарий
  • Откуда эти цифры?

    Jump
    @Jump
    Системный администратор со стажем.
    Тариф показывает ограничение провайдера.
    Как правило оно распространяется на доступ в интернет, а для локальных и пиринговых сетей не действует.
    Скорее всего площадка яндекса просто в пиринге.
    Ответ написан
    Комментировать