8 986 908 10 92
i@gaiduki.com

Команда Ильи Гайдука

Разрабатываем и развиваем Web приложения
С 2010 года разрабатываем и продвигаем проекты различной сложности. Сейчас наша команда готова вкладывать профессиональные навыки в создание и развитие интересных проектов для вас.

Что мы делаем

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

Наш стек технологий

Laravel

Laravel — бесплатный веб-фреймворк с открытым кодом, предназначенный для разработки с использованием архитектурной модели MVC (англ. Model View Controller — модель-представление-контроллер). Laravel выпущен под лицензией MIT. В 2015 году в результате опроса sitepoint.com по использованию PHP-фреймворков среди программистов занял первое место в номинациях:
  • Фреймворк корпоративного уровня
  • Фреймворк для личных проектов
  • Кладезь антипаттернов

MySQL, Sphinx, Memcache

В качестве основной базы данных мы используем MySQL, а для тегирования, поиска, фильтров - поисковый движок Sphinx. Чтобы ваш проект работал гораздо быстрее, мы подключаем и программируем систему кеширования Memcache.

JS, Bootstrap, UIkit

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

VPS, Plesk

Наши проекты работают на очень надежных и современных серверах. Для русскоязычных проектов - это Beget, а для зарубежных Vultr В качестве панели управления сервером мы используем Plesk. Это платная и практически идеальная система управления сайтами.


Наш исходный код генератора доменов из поисковых подсказок Google

Посмотреть работу скрипта можно здесь



namespace App;

use Illuminate\Database\Eloquent\Model;

class Service extends Model
{
    public function vsgoogle($domain){
          function download_page($path){
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL,$path);
        curl_setopt($ch, CURLOPT_FAILONERROR,1);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
        curl_setopt($ch, CURLOPT_TIMEOUT, 30);
        $retValue = curl_exec($ch);
        $data= curl_getinfo ($ch);
        //print_r($data);	 // смотрим статусы для отладки - http_code
        curl_close($ch);
        return $retValue;
    }
    //меняем плохие вхождения
    function replaceSimbolRu($baseKeyword){

        $searchsimbol = array("ьи", "ье", "ью", "ья", "веб", "веб ", "вебмастер", "онлайн", "вебинар",
            "вебинары"

        );
        $zamenasimbol = array("i", "ie", "iy", "iya", "web", "web ", "webmaster", "online", "webinar",
            "webinary"

        );
        $myZnak = str_replace(  $searchsimbol,  $zamenasimbol,  $baseKeyword  );//преобразование мягкого знака
        return $myZnak;
    }
    //исходный запрос
    $key = $domain;
    $searchsimbol = array(" ");
    $zamenasimbol = array("+");
    $query = str_replace($searchsimbol, $zamenasimbol, $key);

    $urlNoVS = "http://suggestqueries.google.com/complete/search?&output=toolbar&gl=us&q=".$query;
//отправляем запрос без vs
    $sXML = download_page($urlNoVS);
    $oXML = new \SimpleXMLElement(utf8_encode($sXML));
//отправляем запрос с vs
    $url = "http://suggestqueries.google.com/complete/search?&output=toolbar&gl=us&q=".$query."+vs";
    $tXML = download_page($url);
    $aXML = json_encode(utf8_encode($tXML));

        $massSuggestion = [];

        for ($i = 0; $i <= 9; $i++) {
            if (isset($oXML->CompleteSuggestion[$i]->suggestion['data'])) {
                $key = $oXML->CompleteSuggestion[$i]->suggestion['data'];

                if (!empty($key)) {
                    $searchsimbol = array(" ");
                    $zamenasimbol = array("+");
                    $keyword = str_replace($searchsimbol, $zamenasimbol, $key);

                    $massSuggestion[] = $keyword;
                } else {
                    break;
                }
            } else {
                break;
            }
        }


        for ($i = 0; $i <= 9; $i++) {
        if (isset($aXML->CompleteSuggestion[$i]->suggestion['data'])) {
            $key = $aXML->CompleteSuggestion[$i]->suggestion['data'];

            $searchsimbol = array("$query vs ");
            $zamenasimbol = array("");
            $keywordVS = str_replace($searchsimbol, $zamenasimbol, $key);

            $searchsimbol = array(" ");
            $zamenasimbol = array("+");
            $keywordVS = str_replace($searchsimbol, $zamenasimbol, $keywordVS);

            $massSuggestion[] = $keywordVS;
        } else {
            break;
        }
    }


    $massResults = [];
    foreach ($massSuggestion as $query) {
        // Отправляем запрос без 'vs'
        $urlNoVS = "http://suggestqueries.google.com/complete/search?&output=toolbar&gl=us&q=" . $query;
        $sXML = download_page($urlNoVS);
        $oXML = new \SimpleXMLElement(utf8_encode($sXML));

        // Обрабатываем результат без 'vs'
        for ($i = 0; $i <= 9; $i++) {
            // Проверяем существование свойства 'data' перед доступом к нему
            if (isset($oXML->CompleteSuggestion[$i]->suggestion['data'])) {
                $key = $oXML->CompleteSuggestion[$i]->suggestion['data'];
                $massResults[] = $key;
            } else {
                // Если свойство 'data' не существует, прерываем цикл
                break;
            }
        }

        // Отправляем запрос с 'vs'
        $url = "http://suggestqueries.google.com/complete/search?&output=toolbar&gl=us&q=" . $query . "+vs";
        $tXML = download_page($url);
        $aXML = new \SimpleXMLElement(utf8_encode($tXML));

        // Обрабатываем результат с 'vs'
        for ($i = 0; $i <= 9; $i++) {
            // Проверяем существование свойства 'data' перед доступом к нему
            if (isset($aXML->CompleteSuggestion[$i]->suggestion['data'])) {
                $key = $aXML->CompleteSuggestion[$i]->suggestion['data'];

                // Выполняем замены символов в строке $key
                $searchsimbol = array("$query vs ");
                $zamenasimbol = array("");
                $keywordVS = str_replace($searchsimbol, $zamenasimbol, $key);

                $massResults[] = $keywordVS;
            } else {
                // Если свойство 'data' не существует, прерываем цикл
                break;
            }
        }
    }

    $massResults = array_merge($massSuggestion, $massResults);
    $massInVS = [];
    $massNOVS = [];
    foreach($massResults as $key) {
        $mystring = $key;
        $findme   = ' vs ';
        $pos = strpos($mystring, $findme);
        if($pos === false) {
            $massNOVS[] = $key;
        }
        else{
            $massInVS[] = $key;
        }
    }
//объединяем элементы массива в строку
    $strVS = implode(" vs ", $massInVS);
//создаем массив, через разделитель vs
    $massNewNoVS = explode(" vs ", $strVS);

    $resultMass = array_merge($massNOVS, $massNewNoVS);
    $resultMass = array_unique($resultMass);
    $ResultTotalMass = [];
    foreach($resultMass as $key) {
        $searchsimbol = array(" vs" , "vs ", " vs " );
        $zamenasimbol = array("", "", "");
        $keywordNoVS = str_replace($searchsimbol, $zamenasimbol, $key);
        if (mb_strlen($keywordNoVS, 'utf8') >= 18) {
            continue;
        }
        else {
            $rus = array('А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ё', 'Ж', 'З', 'И', 'Й', 'К', 'Л', 'М',
                'Н', 'О', 'П', 'Р', 'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ъ', 'Ы', 'Ь', 'Э',
                'Ю', 'Я', 'а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о',
                'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я');
            $lat = array('A', 'B', 'V', 'G', 'D', 'E', 'E', 'J', 'Z', 'I', 'Y', 'K', 'L', 'M', 'N',
                'O', 'P', 'R', 'S', 'T', 'U', 'F', 'H', 'C', 'Ch', 'Sh', 'Sch', 'Y', 'Y', '', 'E', 'Yu',
                'Ya', 'a', 'b', 'v', 'g', 'd', 'e', 'e', 'j', 'z', 'i', 'y', 'k', 'l', 'm', 'n', 'o', 'p',
                'r', 's', 't', 'u', 'f', 'h', 'c', 'ch', 'sh', 'sch', 'y', 'y', '', 'e', 'yu', 'ya');

            $myZnak = replaceSimbolRu($keywordNoVS); //преобразование мягкого знака и других символов
            $keywordNoVS = str_replace($rus, $lat, $myZnak);
            $searchsimbol = array(" ", "  ");
            $zamenasimbol = array("", "");
            $ResultKey = str_replace($searchsimbol, $zamenasimbol, $keywordNoVS);
            $inDomain = preg_replace('/[^\p{L}0-9-\s ]/iu','', $ResultKey);
            if(empty($inDomain)) {
                continue;
            }
            else{
                $ResultTotalMass[] = $inDomain;
            }


        }
    }
    //выводим результат

    $ResultTotalMass = array_unique($ResultTotalMass);
    return $ResultTotalMass;


    }
}