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

    Melkij
    @Melkij
    PostgreSQL DBA
    Как насчёт формировать json не через одно место, а штатными функциями? json_encode
    Ответ написан
    Комментировать
  • Yii2 как проделать дырку в id модели?

    @sunrails
    Добавьте поле sort_order в таблицу и перестраивайте сортировку как душе угодно. А проделывать "дырку" совсем плохая идея.
    Ответ написан
    2 комментария
  • Почему для проверки на пустую строковую переменную не используют empty()?

    In4in
    @In4in
    °•× JavaScript Developer ^_^ ו°
    Гляньте результат выполнения empty("0"); и все поймете.

    Возвращает FALSE, если переменная существует, и содержит непустое и ненулевое значение. В противном случае возвращает TRUE.


    UPD
    А еще один неплохой способ проверки строки на пустоту - strlen(string),то есть, получение кол-ва символов в ней.


    UPD2:

    Вариант от Дмитрий - проверка сроки на наличие первого символа (Обыгрывает первый по скорости): isset($string[0]).
    Ответ написан
    3 комментария
  • Не корректно работает функция keydown?

    Petroveg
    @Petroveg
    Миром правят маленькие с#@&ки
    Всё так, как вы и написали. Сначала изменение стилей, потом переменной.

    var b = 28,
    	polos = $('.polos');
    
    $(document).keydown(function (e) {
    	switch (e.keyCode) {
    		case 38:
    			b -= 19;
    			break;
    		case 40:
    			b += 19;
    			break;
    	}
    
    	polos.css({
    		marginTop: b + 'px'
    	});
    });

    Откуда у вас привычка сначала искать body, чтобы в нём зарегистрировать слушатель? Событие всплывает к window, но нам достаточно document.
    Вы же понимаете, что скрипт в head про body не знает ничего, и вам нужно дождаться формирования DOM, найти body, и вот только теперь?..
    Ответ написан
    1 комментарий
  • Как организовать защиту от парсинга сайта?

    @starosta6123
    1. Сайт изначально предназначен для публикации, то есть он открыт.
    2. Если вы не хотите чтобы информация была открыта, не публикуйте.

    Из 1 пункта следует, что нет достаточных средств для защиты от парсеров.
    Вопрос только в том, на сколько вы готовы и можете усложнить жизнь для парсеров.
    А нужно ли это? Может вы - "неуловимый Джо"?
    Все что может прочитать и распознать человек (а ведь именно для людей и делается сайт?) может быть воспроизведено. В части, где парсинг может быть автоматизирован, он будет автоматизирован.
    Сейчас существуют мощные парсеры Яндекса и Гугла. Если они ваш сайт не смогут разобрать, то и в индексе его не будет, значит полезная информация не дойдет до конечного пользователя.
    А тот, кто захочет, ее скопирует, если информация очень нужна. Если даже вы представите в виде мозаики из картинок и кусков, даже если зашифруете, но информация на экране должна все равно быть читабельной, а значит простой принтскрин и распознавание в FineReader будет быстрее, чем вы напишите защиту от него...

    Бросьте это занятие!

    Не существует защиты созданной человеком, которую не возможно сломать, вопрос времени...
    Единственный путь, это шифрование с выдачей ключа клиенту. Но клиент - человек не надежен, и информация уплывет, вопрос цены!

    И еще раз бросьте это!

    Я тоже когда-то думал об этом, но ни к чему не пришел. Всякая защита усложняет систему и увеличивает количество ошибок. Пользователь быстрее уйдет с вашего сайта, только потому что из-за ошибки в скрипте полезные данные не получит.

    Последний совет: бросьте это!

    Единственное что может вам помочь, это не раскрывать полностью всю информацию о предмете, или разделить на несколько частей, но при этом не должно быть неудобства для посетителя. К примеру, скройте "количество зубцов в шестеренке", любую ключевую информацию, без которой "самолет не взлетит".

    А если хотите поиграться, то пришла в голову идея: перемешивание по определенному алгоритму текста, который потом восстанавливается, применение стилей для скрытия "фальшивых" слов или фраз. Например, задать стиль, который скрывает каждое второе предложение или слово. Но к сожалению, это ломается на ура! Но доставит радости для взломщиков :-)

    Извините, за столь большой сумбур!

    1. Динамические запросы. Ну доставят какую-то головную боль для взломщика, но это не так сложно, как кажется.

    2. Верстка. Не знаю про бан от поисковиков, но это тоже ломается. Просто убираете теги и все. Просто в парсер добавляется "умный" фильтр. Можно конечно где-то картинку заменить фоном, или часть текста картинкой, но и на это можно сделать разборщик.

    3. Блокировка по IP не прокатит, так как могут пострадать реальные люди, достаточно применять динамический IP.

    А вообще, если хотите спастись от простых парсеров, то комплекс мер может помочь. Так же могу натолкнуть на идею, того, что парсеры обычно очень активны, и по количеству запросов с одного IP, по USER_AGENT, и другим меткам, а так же по отсутствию javascript, по обработке тега <МЕТА> redirekt.info/article/redirekt-na-html-s-zaderzhko... (отложенный редирект) и другим признакам. Можно запихнуть скрытую картинку (style="display: none"), большинство парсеров ее могут дернуть (зависит от настроек).

    В общем, можно поставить задачу в другом ключе: "Расстановка ловушек для парсеров". То есть ловить на том, чего обычные люди и браузеры делать не будут. Например, заполнять "скрытое поле пароль". Удачные ловушки дадут вам возможность выявить подставных, но лучше делать несколько проверок, а то можно и реального пользователя забанить. А я бы не стал банить, а сливал бы немного или частично измененную инфу. Эта инфа может стать маркером для выявления того, кто действительно желает с вас "слить".

    Все, удачи!
    Ответ написан
    4 комментария
  • Локальный CDN

    @WEBIVAN
    Возможно стоит посмотреть в сторону локального кеширующего прокси типа HandyCache?
    Ответ написан
    1 комментарий
  • Внесение TXT записи openDKIM и DK-filter на один домен

    Могу ошибаться, но DK устарел и смысл с ним возится отсутствует. Так что не парьтесь — вам вполне хватит DKIM.
    Ответ написан
    4 комментария
  • Выиграет ли быстродействие от такой оптимизации?

    Mendel
    @Mendel
    PHP-developer
    В сферическом случае выигрыш будет.
    Стоит ли оно того?
    Тут ответ кроется в последнем слове вопроса — оптимизация.

    Одно из правил оптимизации гласит — не нужно оптимизировать то, что не нужно оптимизировать.
    Ну или «преждевременная оптимизация — зло».
    Вы испытываете проблемы с производительностью? Эти проблемы связаны с базой данных? Именно с этими запросами?
    Откуда Вы об этом узнали?
    Если вы не можете положительно ответить на эти вопросы, то оптимизация преждевременная, т.е. сам процесс оптимизации и сложности с ним связанные будут хуже чем выигрыш от оптимизации когда она еще не нужна.

    Еще одно правило плавно вытекает из последнего вопроса — откуда вы узнали что это узкое место? Вы выполняли какие-то тесты? Использовали профилировщик? Ну так любая оптимизация всегда проверяется на практике. Измерьте нагрузку, измените схему, измерьте заново. Эксперимент займет меньше времени чем ждать ответа здесь. И самое главное — ответ на хабре не спасает от того чтобы потом его проверить. Это разумно только в том случае если вы уже убедились что оптимизация вам всё-таки нужна…

    ПЫСЫ: не сочтите за грубость. Просто мне так показалось что вы не совсем понимаете о чем спрашиваете. Буду рад ошибиться…
    Ответ написан
    1 комментарий
  • Aliexpress.com снимает деньги с карты. Куда жаловаться?

    @werdender
    Это курсовая разница, все нормально. Снимает не aliexpress, а сами ЯД. Иногда не снимают, а наоборот, начисляют.

    См.: money.yandex.ru/doc.xml?id=524783#shops, вопрос «Через несколько дней после того, как я заплатил с карты, с моего счета дополнительно сняли небольшую сумму. Почему?».
    Ответ написан
    1 комментарий
  • Подскажите уютную библиотеку с бесплатным wi-fi в москве

    @brizzz Автор вопроса
    Пишу из РГБ. Оформил читательский билет за 100 рублей, действителен 5 лет. Wi-fi отличный (2-й читальный зал на третьем этаже). Атмосфера замечательная. Только заставили на гардеробе сдать рюкзак. Пришлось складывать все содержимое в пакет. На самом деле тут все ходят с сумками — так что не ведитесь.
    Ответ написан
    Комментировать
  • Стер не ту переменную в rommon?

    @Mario_Z
    Вот так зачастую люди сами решают свои проблемы, достаточно лишь отбросить панику и попробовать поискать выход.
    Ответ написан
    Комментировать
  • Есть ли в открытом доступе база данных наиболее используемых существительных и популярных названий продуктов?

    ntkt
    @ntkt
    Потомственный рыцарь клавиатуры и паяльника
    Вам стоит посмотреть в сторону того, что у лингвистов называется corpus, и результатов его машинной обработки.

    Для эксперимента можно начать с www.artint.ru/projects/frqlist.php, там есть списки слов, с проставленными частями речи и упорядоченных по частоте, например — www.artint.ru/projects/frqlist/lemma.num.zip
    Список слов, доступный с этой страницы, содержит примерно 35000 слов с частотой большей 1 ipm (вхождений на миллион слов, instances per million words). Имеется также более короткий список из 5000 наиболее частотных русских слов. Списки используют кодировку кириллицы Windows-1251 и упакованы утилитой WinZip (пользователи Linux или Mac могут использовать StuffIt для распаковки).

    Структура списков соответствует формату лемматизированных списков из British National Corpus (BNC), созданных Адамом Килгарифом, а именно:
    порядковый номер, частота (ipm), лемма, часть речи (классификация BNC).
    Ответ написан
    3 комментария
  • set_time_limit не работает, скрипт отрабатывает бесконечно долго

    Mendel
    @Mendel
    PHP-developer
    Отделите мух от котлет.
    Сделайте тест, в котором будет только сет_тайм_лимит и бесконечный цикл, т.е. в две строки.
    Так вы локализуете проблему — это с вашим окружением или с кодом.
    Ответ написан
    Комментировать
  • Вызов хранимой процедуры php PDO, firebird?

    @Domini
    Ссылка
    $sql="EXECUTE P_NAME_ID (:INTAB,:NAME,:ID,:PNO)";
    $sth = $dbo->prepare($sql);
    $sth->bindParam(':INTAB', 'TFAM', PDO::PARAM_STR);
    $sth->bindParam(':NAME', 'Post body', PDO::PARAM_STR);
    $sth->bindParam(':ID', $id, PDO::PARAM_INT|PDO::PARAM_INPUT_OUTPUT, 11);
    $sth->bindParam(':PNO', $id_, PDO::PARAM_INT|PDO::PARAM_INPUT_OUTPUT, 11);
    Ответ написан
    2 комментария
  • Как защититься от несанкционированных действий Skype?

    Для начала попробуйте запустить Process Monitor и посмотреть, что именно он пишет/читает.
    Ответ написан
    Комментировать
  • Помогите с php mail() headers кодировкой, пожалуйста

    @hell
    From правильнее кодировать с помощью mb_encode_mimeheader до того, как кодировать прочие заголовки.
    Т.е. алгортим примерно следующий:

    Проверяем, что у нас есть mbstring (для старых версий php возможны варианты)
    Проверяем, что у mbstring прописаны правильные значения кодировок по умолчанию (читаем доки, в том числе по функции mb_encode_mimeheader)
    Кодируем поле FROM с помощью mb_encode_mimeheader
    Устанавливаем все хидеры (имеет смысл посмотреть реализацию PEAR — там не без ошибок, как ни удивительно, но в целом оно рабочее)
    Ответ написан
    4 комментария