• В проектах начал использовать различные СУБД. Какие есть альтернативы phpMyAdmin?

    nazarpc
    @nazarpc
    Open Source enthusiast
    Зачем?
    Ответ написан
    Комментировать
  • Как фильтровать нецензурную лексику?

    @Shaco
    Если люди хотят ругаться - они будут ругаться. Никакие словари, автозамены, и тому подобные вещи от этого не спасут. Составить словарь, содержащий бесчётное количество словоформ (люди у нас изобретательны), слова с буквами другой раскладки, слова, разделёнными посторонними знаками, с изменённым порядком букв - никакого терпежа не хватит. Эврестический анализ гарантирует ложные срабатывания - как их обрабатывать? Без ручной модерации ничего не выйдет. Если вы рассчитываете полностью избавиться от ручной модерации, и при этом хотите обезопасить себя от мата в комментариях - придётся отключать комментарии :)
    Ответ написан
    Комментировать
  • Как фильтровать нецензурную лексику?

    Запретить Камеди Клаб, проводить уроки этики в школе, делать флеш-мобы "я не ругаюсь".

    (ну можно еще посмотреть в движках форумов, например, phpbb, как у них реализован словарь матершины и автозамена)
    Ответ написан
    3 комментария
  • Как обстоят дела с "Роскомнадзором" на западе?

    @inkvizitor68sl
    Linux-сисадмин с 8 летним стажем.
    Там всё очень просто. Есть сайт, нарушает законодательство, сайт закрывают (через хостера, через разделегирование домена или ещё как). Если сайт нарушает законы ЕС, но создан резидентом законодательства, в котором такого закона нет (и хостится там, где такого закона нет) - се ля ви, в интернете границ нет.
    Ничего нигде не блокируется на принудительной основе.

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

    Наша страна пошла по пути тоталитарных государств, где властьимущим можно всё и им за это ничего не будет. Ну и тотальная слежка за всеми не за горами.
    Ответ написан
    4 комментария
  • Нужно ли хорошо знать математику, чтобы стать программистом? (в частности PHP разработчиком)

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

    metamorph
    @metamorph
    Первый: да. Еще и скриншоты параллельно снимать можно.
    Кстати, за динамические ссылки вас убьют сеошники.

    Второй:
    1. нет
    2. потенциальный бан/пессимизация
    3. не сработает, поскольку парсинг давно уже делается через огромный список прокси
    4. клоакинг в чистом виде, бан сразу

    Задачу можно было бы частично решить, если бы существовал способ надежно определить поискового робота. Но, к сожалению, роботы могу для каких-то своих производственных нужд сходить на сайт "под прикрытием", тут-то всё и заверте.
    Ответ написан
    Комментировать
  • Как организовать защиту от парсинга сайта?

    @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 комментария
  • Программисты какой специализации самые высокооплачиваемые сейчас?

    opium
    @opium
    Просто люблю качественно работать
    умные
    видел почти во всех специализациях ценники по 50 баксов в час, что руби, что пхп, что джава.
    Отсюда вывод не так важен язык, сколько мозги.
    Ответ написан
    Комментировать
  • Есть 5 планшетов и 10 смартво, лежат без дела, куда можно применить их вычислитеную силу?

    home_user
    @home_user
    Если вам именно вычислительные мощности некуда девать, тогда ставьте BOINC:
    https://play.google.com/store/apps/details?id=edu....

    А если сами девайсы лежат тяжелым грузом - раздайте/продайте нуждающимся за символическую плату
    Ответ написан
    Комментировать
  • Для чего код написали таким образом?

    CrazySquirrel
    @CrazySquirrel
    Вся суть "построчной" оплаты труда в двух строчках :-)
    Ответ написан
    Комментировать
  • Как вы думаете, пройдя вот этот курс, можно уже подавать резюме в компании? Хотя бы в качестве стажера

    Я пришел на работу с условием что выучу php за месяц. Стажировка оплачивается. Выучил за месяц PHP написал свою соц сеть с нуля. Сейчас учу Python(Django) и CouchDB. Так что все зависит от вашего желания.
    PS: при желании можно и без знаний пойти на оплачиваемое обучение.
    Ответ написан
    5 комментариев
  • PHP: как вызвать метод из родительского класса, который мы переопределили?

    Использовать конструкцию языка
    parent::showField();
    Ответ написан
    Комментировать
  • Localhost или полный путь к скрипту php? В чем их отличие?

    @lubezniy
    Для начала тщательно изучите, что есть клиентская часть приложения, а что - серверная, и что из этого где должно работать. И усвойте, что клиентская часть (то, что выполняется браузером) должна обращаться не к диску своего компа (нормальные браузеры сейчас таких вольностей сайтам не позволяют), а к серверу, где выполняется серверный код (не важно, PHP это, Perl, Python, JSP, ASP или что-то ещё), формирующий и передающий клиенту ответ, обрабатываемый браузером (HTML, JSON, XML или что-то ещё).
    Ответ написан
    1 комментарий
  • Уникален ли дизайн toster'a и других проектов хабры?

    Ivnika
    @Ivnika
    Отвечу вопросом на вопрос- ауди и мерседес имеют уникальный дизайн? Ведь если смотреть в целом все похоже- колеса, дверцы, даже окраска бывает одинаковой.
    На мой взгляд так и здесь - набор компонентов может быть даже и полностью идентичным, но сделанные на его базе сайты- уникальными.

    А отношение... Такой дизайн на мой вкус скорее тренд месяца / года, т.е. сейчас в моде. Мне лично большая часть таких сайтов не нравится, но скорее из за плохого вкуса их авторов стремящихся лишь следовать моде.

    Дизайн проектов хабрахабра для меня "тяжеловат", нужно периодически задумываться куда тыкать (для сравнения- первоначальный дизайн фрилансима для меня легкий, воздушный и понятный, то что сейчас как каприз моды- оригинально но надолго не цепляет)
    Ответ написан
    2 комментария
  • Вы в браузере набрали адрес сайта, нажали Enter. Расскажите максимально подробно о технических процессах происходящих далее?

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

    0) Пользователь вбивает в адресную строку браузера адрес сайта (нажимая клавиши на клавиатуре, которые замыкают определённую дорожку в матрице, по которой происходит определение нажатой клавиши, что через шину USB в какой-то момент передастся OS, где это поймает HID-драйвер и вызовет определённое прерывание, что OS передаст как событие/или_ещё_как в программу, которая вызовет соотвествующую функцию из API менеджера окон, которая изменит содержимое строки и в результате когда-то будет перерисован UI-элемент, а если нажат был Enter, то начнётся следующее).
    1) Браузер вытащит из input'а строку с запросом и посмотрит, похоже ли это на адрес. Если да, то добавит недостающие уточнения (например, http или file протокол, порт и подобные довольно стандартные вещи). Если нет - то скорее всего создаст запрос в поисковую систему, установленную по умолчанию (я более не буду опускаться до таких бессмысленных деталей, как вызовы API-функций, иначе я буду набирать это сообщение ОЧЕНЬ долго). В любом случае на выходе мы по сути получим URL, который надо загрузить. Протокол file:// мы рассматривать не будем, ftp далеко не везде есть, https:// на не хватит вечности, так что остановимся на http, который по сути есть tcp/ip по умолчанию на 80 порту с определённым форматом общения.
    2) Окей, url есть. Теперь нам нужен адрес, к которому обращаться. Так как http это tcp/ip - нам нужен ip адрес. Здесь нам помогают dns-сервера. Обычно, нормальный провайдер устанавливает у себя кэш-сервера dns, которые не обращаются по стопицот раз за vk.com к ответственному серверу com-зоны. Давайте не будем отвлекаться на то, как происходит там общение, если что - вот (вики тем хороша, что часто содержит внизу релевантные ссылки). Скажу лишь то, что на выходе мы получаем ip адрес(а).
    3) Имея адрес мы можем запросить страницу. Собственно, всё что после первого слэша - это как-бы параметры для http-сервера: какую именно страницу запрашивать, он всё же не телепат. Конечно, можно было бы немного схитрить и отправить читать про tcp/ip, но ведь существует и shared-hosting. Ограничемся лишь его упоминанием. Собственно, по полученному адресу отправляется GET запрос, который и обрабатывает сервер, находящийся по полученному IP-адресу.
    4) Сервер же, получив адрес, начинает распарсивать строку, медленно вытягивая нужные данные из баз-данных и настроек, выполняются сотни скриптов, иногда делается ещё не одна сотня различных запросов на другие сервера (здесь и разного вида метрики и разного вида HADOOP и т.д.). Пройдя сквозь скрипты и темплейторы в самом конце мы получаем html-страницу, готовую к употреблению. Её-то сервер и отправит в ответе (после заголовков, конечно).
    5) Вот и началось самое интересное. Получив html страницу браузер начинает жутко надругаться над CPU, HDD и GPU, попутно сжирая тонны RAM и мусоря в swap. Виной всему нереальные для полного соблюдения стандарты от небезызвестной w3c.org. Для облегчения многие делают костыли, вроде webkit, а некоторые и вовсе забивают на него и пилят свой стандарт с преферансом и картёжницами (впрочем, в последнее время становиться лучше). Здесь снова начинаются сотни вызовов API ОС, windows manager'а и прочих библиотек, вроде boost, qt или libpng. В ходе работы в RAM строится макет, по которому потом строится нечто вроде PDF (тоже сильно векторный), что, потом, обрабатываясь быстрыми шейдерами на GPU, выдаётся на экран. Опять же, многое пропущено, но вряд ли кому-либо, кроме парня в свитере с оленями, действительно интересно, как работает GDI, DirectX или OpenGL.
    6) Ах да, мы же забыли про тысячи js-скриптов, миллионы картинок и анимации с котиками, а также о таких дополнительных плюшках, как flash-player или java-weblets. В кратце, что js, то и flash и java - это виртуалка, со специальной архитектурой. Они, виртуалки, конечно разные (хотя flash и js довольно похожи, ещё бы - ECMAScript один и тот же). JS - самый интегрированный внутрь браузера, он же и самый медленный чисто визуально (ибо последние два имеют доступ к быстрому GPU), хотя самый быстрый в попугаях. Второй постепенно вымирает и представляет из себя, так же как и третий специальную shared-библиотеку, о которой браузер как-нибудь узнал и которой скармливает специальное содержимое помечанное специальным тегом html. Третий уже почти умер и встречается лишь изредка или в каком-нибудь энтерпрайзед со страшным legacy-базой. Ну здесь из сылок разве только гугл. Ибо сколько всего - даже не сообразишь. Да и вообще, эта тема ещё скучнее GDI, DirectX и OpenGL и к свитеру с оленями требуются ещё очки с толстенными стёклами, дающие стопицот к терпению и задроству над матаном. Если в кратце, то в случае JS, всё что было загружено в память и не думает выгружаться и формирует этакое дерево - DOM, над которым с помощью специального API и происходят модификации. При этом, перед тем как исполниться, весь JS-код компилируется, в нативный для VM байт-код. То же самое в общем-то и со вторым и третьим, разве только они не имеют доступа к DOM и организовать его - дело тех ещё костылей. Ах да, забыл ещё про Silverlight (или как оно там пишется), который сдох, не успев родиться. Так же как и Java, жив в серьёзном энтерпрайзе, не поскупившийся не "дешёвую" поддержку MS.
    7) Ну... А дальше пользователь нажимает на нужную гиперссылку и всё по новой.

    За кадром остались такие костыли, как ajax, websockets и прочая асинхронная ересь. С ней всё в миллионы раз сложнее. И к очкам со свитером потребуется ещё и... а чёрт их знает, что они там ещё носят. Ну да ладно, я искренне завидую тем парням (и девушкам), которые разбираются во всей этой машине. Целиком. Ибо это лишь верхушка айсберга. Разбавленная не лучшей памятью и ужасным гуглом.

    P.S. Не бейте сильно за грамматические и синтаксические ошибки. Спеллчекер приказал долго жить, да и 5 утра как никак.

    UPDATE
    На хабр выложили неплохой перевод дающий некоторое представление, как браузер ругается над памятью и процессором. Хотя и весьма поверхностное,
    Ответ написан
    26 комментариев
  • Что нужно знать для создания роботов?

    iiil
    @iiil
    Инженер и вэб-дизайнер, рисую.
    <ol>
        <li>Робот не может причинить вред человеку или своим бездействием допустить, чтобы человеку был причинён вред.</li>
        <li>Робот должен повиноваться всем приказам, которые даёт человек, кроме тех случаев, когда эти приказы противоречат Первому Закону.</li>
        <li>Робот должен заботиться о своей безопасности в той мере, в которой это не противоречит Первому и Второму Законам.</li>
    </ol>
    Ответ написан
    3 комментария
  • Что делать, если заказчик не желает платить за услугу?

    opium
    @opium
    Просто люблю качественно работать
    Подайте в суд, переписка же у вас есть,
    ну или если хотите давануть за то что оборзели, делаете резервную копию и вайпаете сайт и базу, так как за него не было оплачено.
    Главное тут после этого не подтверждать и сделать все через анонимный не русский впн, что это вы удалили, сказать что у вас есть бекап и вы можете его отдать, но сперва надо все таки решить вопрос с оплатой, если вопрос с оплатой не решается то просто сказать им что пусть закажут сайт снова, так как деньги не заплатили и они наверно где то есть.
    На мой взгляд любая такая позиция заказчика должна быть наказана строжайшим образом.
    Ведь за создание сайта они вам не заплатили?
    Судиться им с вами нудно, дорого и надо ещё отдельного человека для этого выделить.
    Ответ написан
    1 комментарий
  • Как подключать include через ajax или get, post запросы?

    @kaasius
    Для начала вытрясти из головы все какашки и задавать вопросы нормально.
    Ответ написан
    6 комментариев
  • Как написать код наподобие админки?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Почему у вопросов нету возможности поставить минус?
    Ответ написан
    4 комментария