• Как подружить python 2 с кириллицей?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Читать "Unicode HOWTO" до полного просветления.

    Категорически нельзя использовать sys.setdefaultencoding()! Если в каком-то источнике приводят такой пример, знайте что источник этот плохой и лучше к нему больше не обращаться.

    пробовал s.decode('utf-8') и другие способы, ничего не помогало

    Что значит "ничего не помогало"? Компьютер выключается, когда вы вызываете метод decode?

    Что мне делать, если например я спарсил json и хочу достать из него значение, например так

    Очевидно, доставать, раз хотите.

    P.S. Python 2 устарел 10 лет назад.
    Ответ написан
    Комментировать
  • Как защититься от парсельщиков?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Существует несколько способов борьбы.

    Вектор усложнения доступа к информации

    Информация отдается с сервера с постоянной меняющейся структурой. Например блоки меняются местами и CSS генерируется налету, причем классы собираются рандомной цепочкой и имеют абсолютно рандомные названия. Это может повлиять на SEO.
    Если этого мало, то контент рендерится с помощью JS аналогичными алгоритмами. Сам JS тоже генерируется и обфусцируется. Доставка контента происходит через сложные технологии, например через WebRTC DataChannel или WebSockets. Про SEO не может быть и речи, плохо работает через мобильник.
    С подобным подходом прийдется писать парсер под ваш сайт. Скорее всего он будет делать скриншот и скармливать его распознавалке.

    Вектор контроля доступа к информации

    Доступ к информации предоставляется определенному кругу лиц. Например клиентам. Объемы доступа регламентированы и превышение карается расторжением договора или штрафом.

    Вектор ограничения доступа к информации с помощью каптчи

    Для идентификации клиентов используются evercookie+fingerprinting. Используется рейтинг адресов и подсетей.
    Для недоверенных подсетей (ip принадлежат в основном разного рода хостинг-провайдерам) captcha отображается сразу. Аналогично при появлении трафика из необычного места, например внезапный трафик из Индии или Китая.

    Вектор "медленный сервер"

    Анализируются поведенческие характеристики с помощью машинного обучения. Строится эталонная модель.
    Все, кто не попадает под модель, упираются в медленный сервер. Сайт начинает отдавать контент сразу, но очень медленно, например страница может открываться секунд 30. Причем попытка параллельного запроса приводит к ошибке. Если сайт велик, то подобные штуки останавливают парсильщиков на ура. Вдобавок дополнительно контролируются определенные вещи, вроде "пользователь загрузил js и css", провел мышкой там и там.

    Вектор для реального отваживания воришек

    Кроме выше перечисленных способов, есть очень простые, но действенные способы. При обнаружении парсинга, парсильщику отдается неверная/искаженная определенным образом информация. Например, если есть подозрение на конкурента ворующего цены, можно отдать цены чуть выше настоящих и немного подменить название товара, например заменить определенным образом букву "а" на "a". Затем такая штука ищется поисковиком и находится сайт конкурента.
    Далее вопрос решается так, как это удобно бизнесу. Обычно жалуются на нарушение копирайта. Ну или у конкурента внезапно сгорает склад. Тут уж кто на что горазд.

    А это специально для любителей парсить чужие сайты: cломанные пальцы очень сильно мешают набирать на клавиатуре будьте осторожны, в большинстве случаев воровство контента того не стоит.

    Подытожим. В большинстве случаев защита от парсинга вредит SEO.
    Если у вас воруют контент, значит он хороший. Защищайте его с умом. Простые средства вроде копирайта и успешные дела за воровство контента отвадят воришек от вашего сайта. Просто придайте делам огласку. Отслеживайте воровство и жалуйтесь в поисковые системы.
    Используйте технические средства для отслеживания воровства, например непечатаемые символы и стеганографию в картинках.
    Используйте внутренние ссылки и привязки к контенту и его автору. Например логические отсылки на свои предыдущие работы или другие товары, которые можно купить только у вас.

    Если у вас воруют статьи, просто требуйте обратную ссылку.
    Если воруют описание товаров, предложите продать его, а на вырученные деньги улучшите свое или увеличите оборот или потратьте их на рекламу.
    Еще одна рекомендация - сделайте все, чтобы поисковики узнавали о вашем контенте раньше, чем у воришек.
    Ответ написан
    6 комментариев
  • Обычный домен в onion зоне?

    Jump
    @Jump
    Системный администратор со стажем.
    как можно провернуть такое?
    Элементарно.
    Берете обычный домен, размещаете на нем нелегальный контент и через некоторое время он у вас будет открываться только через TOR.

    P.S. - только просьба - пожалуйста не размещайте нелегальный контент на адресах вроде 127.0.0.1 и на доменах вроде localhost. Это создает изрядные проблемы Роскомнадзору, были случаи.
    Ответ написан
    3 комментария
  • Хотите задать вопрос администрации Тостера?

    longclaps
    @longclaps
    Встречаются ошибочные (либо ну очень кривые) ответы, помеченые решением.
    Никакого инструмента повлиять на это нет - только язвительные и бессильные комментарии (
    Доколе?
    Ответ написан
    23 комментария
  • Для чего нужны фигурные скобки в списке параметров действий/мутаций?

    0xD34F
    @0xD34F
    Как распознать говнокодера, практическое руководство

    <...>

    Признак #17. Неспособность разграничить язык и фреймворк. Отнесение незнакомых синтаксических конструкций языка к особенностям используемого фреймворка.

    <...>

    Признак #32. Нечтение документации.

    Даже там упомянуто, что это за зверь:

    На практике для упрощения кода часто используется деструктуризация аргументов из ES2015 (особенно при необходимости многократного вызова commit):

    actions: {
      increment ({ commit }) {
        commit('increment')
      }
    }

    Ответ написан
    1 комментарий
  • Можно ли сделать foreign key к разным моделям?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Django
    Седой и строгий
    Во-первых, вы можете сделать ForeignKey на сам ArtObject. Во-вторых, ваш велосипед уже придуман и называется GenericRelation.
    Ответ написан
    Комментировать
  • Какой тип оценки контента лучше на сайте, like - dislike, оценка по шкале или комбинированные варианты?

    @Yan-s
    К сожалению идеальных вариантов не придумано и выбирать надо наиболее подходящие под задачи.

    У лайк систем недостаток в том, что старые материалы будут накапливать больше лайков чем новые, поэтому рейтинг по всем материалам не будет достоверным.

    У звездных систем недостаток в том, что запись которой 1 человек дал 5 звезд будет выше в рейтинге, чем запись которой 5 звезд дало 10 человек, а 1 дал 4 звезды.

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

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

    sim3x
    @sim3x
    Если расположение не имеет значения, то езжайте в Финляндию, Германию, США
    Ответ написан
    2 комментария
  • Поиск ненужных файлов на сайте?

    webinar
    @webinar Куратор тега Веб-разработка
    Учим yii: https://youtu.be/-WRMlGHLgRg
    Файл который нигде не используется не равно не нужный. Например favicon может просто в корне лежать, без упоминаний. Да тот же index.html
    В различных IDE есть похожие функции, как правило они ищут использование определенного файла. Пакетно вряд ли. Это убьет любой среднестатистический проект.
    Ответ написан
    2 комментария
  • Как Vue.js заставить понимать jQuery, JS при переключении между компонентами?

    Fragster
    @Fragster
    помогло? отметь решением!
    Выкинуть jq.
    Практически нет задач, которые решает jquery, но не решает vuejs в то же или меньшее количество кода. Исключение могут составлять всякие готовые компоненты типа календарей, но и их нарисовать/найти готовый для vue не так сложно.
    Ответ написан
    3 комментария
  • Как использовать Vue-cli, но при этом сделать его многостраничным?

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

    Вебпак в vue-clie собирает вам javascript-бандл, а уж как вы его будете использовать это ваше дело. Это статичный файл, для их работы не нужен сервер.
    Дело в том, что вебпак собирает не только js, еще картинки, стили, которые он вытаскивает из js и прочих модулей, и прописывает подключение их в расчете что html открывается с сервера.

    Вы можете собрать бандл, и подключить его на множестве html-страниц, главное чтобы Vue нашел на странице свой div#app или куда вы там его привяжете.

    Но, если честно, это довольно странная практика, проще делать SPA.
    Многостраничный сайт так же можно организовать с помощью Nuxt, который генерирует отдельные html-страницы на каждый page vue-компонент.
    Ответ написан
    1 комментарий
  • Как правильно тюнить конфиги БД, распределять ресурсы?

    Melkij
    @Melkij
    PostgreSQL DBA
    Здесь по инструкции только под Postresql выделяется все 100% ОЗУ, такой конфиг подойдет разве что если на сервере будет только постгрес крутится и не более.

    Именно так. Потому что вы читаете про highload. Под СУБД выделяется отдельный физический хост, плюс ещё парочка таких же под реплики. И уж явно не с механическим io. highload СУБД на HDD не бывает уже очень давно.

    Проставьте оба конфига из расчёта 16гб памяти. Всё равно упрётесь в диски. Да и в CPU тоже упрётесь.
    Если вы поставите shared_buffers в 25% ram, и innodb_buffer_pool_size в 80% - то у вас запустится банально только одна из баз. Ну или буфер перманентно в свопе будет, что в общем-то ещё хуже.
    Кстати, надеюсь, вы по крайней мере проверяете смысл изменяемых настроек. Чтобы не было интересных сюрпризов вроде сделали всю базу на myisam, а крутите innodb_buffer_pool_size
    Ответ написан
    Комментировать
  • Как можно раздавать музыку с сайта без возможности сохранить её локально?

    @LiguidCool
    НИКАК
    Ответ написан
    Комментировать
  • Как понять поведение словаря?

    @immaculate
    Программист-путешественник
    Как sim3x написал, is проверяет равенство не значения, а ссылки. Вы такое же поведение даже с целыми получить можете: https://stackoverflow.com/questions/15171695/whats...
    Ответ написан
    Комментировать
  • Как преодолеть кризис начинающего специалиста?

    sim3x
    @sim3x
    А кто сказал, что будет легко?

    spoiler
    Даже если вы занимаетесь bleeding edge разработкой в универах или корпорациях, то рутина будет занимать 90% вашей работы

    А что еще хуже 60% всего рабочего времени вы будете заняты согласованиями и совещаниями и не будете писать код вообще

    Потому, если вас не хватает сейчас, то стоит подумать, а нужно ли оно вам вообще
    Ответ написан
    Комментировать
  • Django не подгружает static. Как исправить?

    opium
    @opium
    Просто люблю качественно работать
    Статику отдавайте нгинкс ёпта нахрена ещё апач вкручивать
    Ответ написан
    1 комментарий
  • Нормально ли хранить json в MySql?

    finnish
    @finnish
    Теория
    Реляционные базы подразумевают, что все часто используемые поля должны храниться в отдельных столбцах. В какой-то момент Вам понадобится искать/сортировать по городу, а его хранение внутри JSON сделает эту операцию крайне сложной.
    Все преимущества JSON-а сводятся к тому, что в одной записи можно "легко" добавить или удалить какое-то поле, не прибегая к модификации таблицы. Лёгкость написана в кавычках потому, что модификация одного поля выполняется сложнее, чем первоначальная запись всего объекта: взять JSON; преобразовать в объект; модифицировать значение нужного поля; преобразовать в строку; записать её в базу данных. И делать это нужно будет средствами приложения, MySQL на это просто не способен.

    Практика
    Использование JSON является нормальной практикой. Если возникает необходимость выполнять поиск по какому-то полю, оно выносится в отдельную колонку. Работы по переносу рутинные, но требуют внимательности от программиста, т.к. путь до значения изменился. Например, раньше было user.data.city и стало user.city.

    Сейчас набирает популярность PostgreSQL, где работа с JSON выведена на уровень SQL-синтаксиса. Там Вы сможете легко добавлять/модифицировать/удалять отдельные JSON-поля, не прибегая к помощи приложения. Даже индексы поддерживаются!..
    Ответ написан
    3 комментария
  • Как в Vue передать из компонента в родителя?

    0xD34F
    @0xD34F Куратор тега Vue.js
    @changeMessage="changeMessage"

    Да ну? Я вот слышал, будто бы

    директивы прослушивания событий v-on внутри DOM-шаблонов автоматически преобразуются в нижний регистр (из-за нечувствительности HTML к регистру), поэтому v-on:myEvent станет v-on:myevent — что делает прослушивание события myEvent невозможным
    Ответ написан
    3 комментария
  • Как это сделать на Vue.js?

    0xD34F
    @0xD34F Куратор тега Vue.js
    контент у всех блоков разный - поэтому в массив их не засунуть

    Засунуть. За отличающийся контент пусть отвечает отдельное свойство элементов массива. Если же контент вот прям совсем разный, ничего общего - оформить блоки в виде отдельных компонентов, хранить в элементе массива имя компонента - ну а дальше вместе с v-for использовать :is.
    Ответ написан
    9 комментариев