• Не так давно Google закрыл API для своего Google Translate, в результате множество скриптов для автоматического перевода текста просто перестали работать. Программисты вынуждены были написать скрипт, который парсит переведенный текст из самого переводчика. Этот класс может переводить тексты между двумя языками с помощью Google Translate. Он может послать HTTP  запрос  на  сайт и перевести текст между двумя заданными языками.
    Класс парсит возвращенную Google Translate страницу результата и возвращает переведенный текст извлеченный из страницы.

  • В мире WEB2.0 окончательную и бесповоротную победу в распространении информации одержали социальные сети и сервисы. В том же facebook информации сейчас столько, что google нервно подрагивает в надежде спарсить весь этот объем к себе в базу. Не так давно представители  facebook намекнули о покупке браузера Opera, со всеми вытекающими. С такими темпами развития социальные сети в частности такие гиганты, как фейсбук или вконтакте могут создать нечто вроде интернета в интернете. Уже сейчас для большинства людей интернет представляет из себя лишь браузер с контактом на домашней страничке, по умолчанию.  Присоединиться к этому успеху и поможет данная статья. 

  • Yii2 позволяет легко создать механизм регистрации/входа/профиля через расширение yii2-user.

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

    • /user/registration/register Регистрация
    • /user/registration/resend Повторная отправка инструкций по регистрации
    • /user/registration/confirm Подтверждение пароля
    • /user/security/login Форма авторизации
    • /user/security/logout Выход(работает только через POST)
    • /user/recovery/request Востановление пароля
    • /user/settings/profile Настройки профиля
    • /user/settings/account Настройки аккаунта (email, username, password)
    • /user/settings/networks Привязанные социальные аккаунты
    • /user/profile/show Профиль пользователя (требует id)
    • /user/admin/index Менеджер пользователей

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

  • Если вы пользуетесь браузером Chrome, то вы наверняка заметили нововведение, которое придумала Google - это иконка микрофончика в правой стороне однострочного поля ввода. 

    chrome x-webkit-speech disable

    При клике на нее, начинается запись голоса, как только после фразы произошла пауза, запись отправляется на сервер для распознавания, в ответ сервер возвращает текст(Надо заметить редко верный). Всеобщему ликованию по этому случаю я в одном из проектов противопоставил желание дизайнера непременно разместить на форме input type="text" шириной 20px. В результате на форме остался лишь 'микрофончик', просто ввести в поле текст стало невозможно. Я начал искать, как же его убрать. В результате, что удивительно ничего не нашел. На большинстве сайтов, объясняется, как его включить принудительно.  Виной всему атрибут x-webkit-speech, который chrome вставляет каждому input'у на странице автоматически.

    Отсюда первый способ избавится от x-webkit-speech:

    window.onload = function(){
    	//убираем x-webkit-speech только у одного input
    	document.getElementById('textfieldid').removeAttribute('x-webkit-speech')) 
    	//ну или удалим атрибут сразу у всех инпутов на странице
    	var inpts = document.getElementsByTagName('input')
    	for(var i in inpts)
    		inpts[i].removeAttribute('x-webkit-speech')
    }

    сделаем тоже самое на jquery

    jQuery( function(){
    	//убираем x-webkit-speech только у одного input
    	$('#textfieldid').removeAttr('x-webkit-speech')) 
    	//ну или удалим атрибут сразу у всех инпутов на странице
    	$('input').removeAttr('x-webkit-speech')) 
    })

    все это работает, но мне хотелось более изящного решения и оно было найдено через css:

    input#textfieldid::-webkit-input-speech-button {
    	display:none;
    }
    /* или у всех инпутов на странице*/
    input::-webkit-input-speech-button {
    	display:none;
    }

    Система распознавания голоса Google Chrome работает даже на самых маломощных ноутбуках, так как использует для этого облачные вычисления серверов google. Это отчасти оправдано для слабого железа, так и для смартфонов. Но когда у Вас нет интернет соединения, эта функция бесполезна. Стоит заметить, что ноутбук без интернета, это большой mp3-плеер =) 

  • В наше время найти достойную компанию для оптимизации сайта, довольно сложно. Интернет кишит различного рода оптимизаторами, главной заслугой которых является покупка программы для автоматического спама, и базы к ней. Такая раскрутка сайта редко ведет к положительным результатам. Скажу больше, она может привести и к отрицательному эффекту и пожизненному бану у поисковиков.

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

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

  • Большой интерес пользователей к статье Учимся парсить сайты с библиотекой PHP Simple HTML DOM Parser показал, что тема парсеров очень актуальна. В продолжении темы, хочу рассказать, как можно парсить сайты используя JavaScript и всю мощь библиотеки jQuery, взамен Simple HTML DOM Parser.

    Нет, мы не будем использовать для обработки js, какой-нибудь серверный интерпретатор,  весь парсинг и обработка данных будет происходить на Вашей машине, в Вашем браузере. Браузером будет Google Chrome, а парсер мы реализуем в виде расширения Google Chrome Extension. 

     Почему  Google Chrome, трудно сказать, самым верным ответом наверное будет: "А почему бы и нет?!". Не сомневаюсь, что тоже самое можно будет сделать и для Opera. Однако, эта статья не про написание расширений для браузера( хотя возможно Вы почерпнете для себя и здесь, что-то новое), а про то, как писать client-side парсеры на JavaScript.

    Также хочу рассказать про преимущества, которые дает такой подход к написанию парсера.

    Во первых:  jQuery и JavaScript в целом обладает фантастическим  набором методов для  работы с DOM документа, Simple HTML DOM Parser тихо курит в сторонке. Навигация по дереву DOM браузер априори обрабатывает очень быстро, это собственно его нативный функционал.

    Второе: по планете давным давно шагает WEB 2.0. Для тех кто в танке:  веб  второй версии подразумевает динамически меняющийся контент сайта. AJAX или просто замена определенного участка страницы через JS сводит на нет работу любого php парсера. Проиллюстрирую на примере:

    <html>
    <body onload="document.body.innerHTML='Страница была создана динамически! Так нужный Вашему парсеру email равен leroy@xdan.ru'">
    email:leroy*****.ru
    </body>
    </html>

    Полагаю Вы догадываетесь, что увидит написанный на php парсер, загрузивший данную страницу, и тупо проверяющий содержание тега body.

    Использование браузера  в качестве парсер-машины позволяет, обмануть сайт, и выполнить подобные скрипты, получив результирующую страницу.