• Какие вопросы задаются на собеседовании по Node JS и MongoDb?

    @Pantene742
    Показываешь интернет магазин с быстрым живым поиском на 10 000 товаров и фильтром поиска. Чтоб у товаров были размеры, цвета, несколько фото. И никаких вопросов.
    Ответ написан
    1 комментарий
  • Когда использовать webpack?

    @Pantene742
    Я тоже задумывался над этим.

    Особенно был такой вопрос когда использовать Gulp, Когда Webpack, а когда Bower.
    Все частично имеют похожие функции, некоторые, один может использовать другой.
    Отвечают Они за сборку проектов(автоматизация компиляции с ES6, TypeScript, Sass, Less в понимаемые браузером ES5 и CSS) минификация, локальные сервер, автокомпиляция после изменения файла. Так же как Bower например неплох для верстальщиков, в паре с Gulp/ помогает удобнее управлять зависимостми для проэкта чем npm а работает походу поверх его. короче. Начни использовать что то одно и суть поймешь. А кстати в React или Angular2+ уже в конфил webpack лучше не лезть, создатели фремворка уже его настроили.
    Ответ написан
    Комментировать
  • Подойдёт ли Rust для 3D игр?

    @Pantene742
    Просто загляни в интернет используют ли его ? Нет не используют ... значит вывод.

    Для игр как и для всего можно хоть JS использовать, если написать движок который будет поддерживать язык в качестве скриптового. Вообще то сегодня для создания оригинальных игр и движков используют C++. Сложный язык, который используют в очень узких направлениях. Создают как правило софт с которым взаимодействую с более простых языков. В этой сфере люди выбрали C++. На нем пишут движки и как вариант -> Есть движок для шутеров Unity/ там используется C# в качестве скриптового. а значит он также подходит для игр. Теоретический Rust мог бы быть вместо C++/ Но сегодня миллионы программистов которые умеют на C++/ и никто не будет их переучивать.
    Ответ написан
  • Что я делаю не так? Хочу обработать сохранение параметра по модулю Magento?

    @Pantene742 Автор вопроса
    Проблема была решена

    Забыл добавить в config.xml между тегами models

    <vladimir_emailsender>
                <class>Vladimir_EmailSender_Model</class>
            </vladimir_emailsender>
    Ответ написан
  • Какие инструменты для автоматизации тестирования REST api вы используете?

    @Pantene742
    Хоть в PHP или JS.

    какой лучше знаете той и используйте.

    Используйте тот язык на котором большая часть проекта к примеру.
    Ответ написан
    Комментировать
  • Golang подходит ли для создания сайтов?

    @Pantene742
    На твои вопросы внятно ответить трудно но вот что о Go лично я могу сказать -
    go решает определенные трудности которые возникают при разработке backend на C++, почему иногда приходят к плюсам в этой сфере(нужна произодительность, многопоточность реалтайм приложениям) сотрудники гугла ранее разрабатывающие JVM и компилятор Java, решили что вместо того чтоб юзать C++ который компилировался на ихнем железе 10 часов, создать свой язык под их постоянные задачи. Запили узкоспециализированный язык под многопоточную обработку данных из стандартными функциями по работа с массивами и прочую базовую логику реализовали, создали стандартные библиотеки для абстракции от низкоуровневого взаимодействия с апаратурой и ОС ТОЕСТЬ РЕШИЛИ СВОИ ПРОБЛЕМЫ Лично я считаю чтоб понять что язык реально стоит, куда и где его реально реально красиво встроить нужно напариться с Java или C# или C++ пару лет. Хотя тем кому скажут на фирме на этапе джунства работать с ГО этого понять не суждено. Просто брать и учить Go или Erlang не вижу смысла,
    1. его надо учить когда заставили те кто понимают зачем это делать(старшие на фирме)
    2. или же когда сам дорос до того чтоб понимать какой кусок проекта на нем пилить.
    ------ А что учить ??? - то по чему материалы под рукой и что знаешь где и как реализовать. JS PHP JAVA ObjC или Плюсы неважно...

    Предположим ты делаешь поисковик по определенным данным, или же даже свой поисковик типа google.
    Тебе нужно лесть на 200 серверов баз данных для одного запроса, паралельно складывать это все в один массив из сервера кеша по популярным запросам, юзеров 10 000 в один момент, надо все процессы поиска кеша обновления данных проводить в отдельных потоках, + сводить аналитику по данным, реализовать сортировку по запросам, анализ page rank например, + парсер новых сайтов. Вот такой проект стоит переписать с Java например на Go. Или ситуация скажем на Jave падают вебинары, массовые раздачи потоков видео можно направить через ErlyVideo, а один пустить через Wowza(Java) так как API простое, а массовый дубляж пустить через Erlyvideo это уже Erlang который чем то похож на Go. Позже это все грамотнее пустить в CDN и еще через WebRTC чтоб по типу торрента данные шли между зрителями вебинара или участника конференции и при этом скажем процесс писался на сервере. GO для опитимизации бекенда вместо C++ лично мой вывод.
    Ответ написан
    1 комментарий
  • "mysqli" или "mysql" в 2017 году?

    @Pantene742
    PDO исключительно, а еще лучше ORM какая нибудь, а еще лучше Laravel который подражает Java,C# в плане работы с базами.
    Ответ написан
    2 комментария
  • Как использовать npm в ASP.NET?

    @Pantene742
    Очень частый вопрос я решил другим способом. Отказался от использования встроеного Node в студию
    и подключил мною установленный Node вместе из пакетным менеджером kvPUq3D7S_mzYEJ3j7GU5A.png
    Ответ написан
    Комментировать
  • Как правильно в Visual Studio прописать Корневой путь npm к node_modules?

    @Pantene742
    Не стал углубляться в вопрос, но знаю что много глюков в Visual Studio из за того что у нее свой интерпритатор Node который Microsoft слегка не довели до лада.

    Поэтому внеси настройки как на скриншотике kvPUq3D7S_mzYEJ3j7GU5A.pngЭто поможет студии использовать тобой установленный Node и его пакетный менеджер
    Ответ написан
    1 комментарий
  • Как протестировать сервер на нагрузку?

    @Pantene742
    На другой мощной машинке (оренда пробный период) напиши парсер который будет лезть на твой сайт и делать какието действия. Наплоди 500 потоков.

    На пайтоне можно обойтись потоками и процесами. пару процесов чтоб пойти на разные ядра и потоки(потоки запросов soup кажись - именно они одновременно работают как потоки) при помощи модуля thread в класическом его использовании паралельных потоков не будет.

    Можно две или три таких машинки запустить одновременно и протестировать.
    Ответ написан
    Комментировать
  • Можно ли вывести переменную выше ее объявления?

    @Pantene742
    в php можно )) это будет значить абсолютную пустоту кажись. Но если приходиться такое делать значит код оформлен нелогично. По логике в ней должна быть информация (Отсутсвие символов str тоже как бы информация) А значит стоит создать Свойство или просто переменную $some_name = ''; что упростит дальнейшее чтение кода и его понимание.

    Недостаток PHP в том что можно сделать слишком много всего и парсер кода(первый этап интерпритации) не выдаст ошибку и будет работать как хочет автор говнокода. Но стоит подражать статическим языкам C/C++, Java, C# и писать код на динамическом языке как на статическом. (хотя бы подражать)
    Ответ написан
    Комментировать
  • Как отделить логику от взаимодействия с базой данных?

    @Pantene742
    Класс для работы с БД создай в отдельном файле заполни статическими методами. и вызывай их из предыдущего класа(обьекта) только подключи файл с класом по БД в файле где класс который будет его юзать. Я какраз так пишу первый клас у меня делает запросы в youtube API, второй DBdriver он делает все что связано с БД

    DB driver собственно....

    <?php
    /**
     * Created by PhpStorm.
     * User: pantene
     * Date: 13.02.2017
     * Time: 14:15
     */
    
    namespace ytd;
    
    use \PDO;
    
    class DBdriver
    {
    
    
        private static function getConnection()
        {
    
      // Получаем параметры подключения из файла
            $paramsPath = array(
                'host' => 'localhost',
                'dbname' => 'kamios_mbet',
                'user' => 'root',
                'password' => '',
            );
    
            $params = $paramsPath;
    
            // Устанавливаем соединение
            $dsn = "mysql:host={$params['host']};dbname={$params['dbname']}";
            $db = new PDO($dsn, $params['user'], $params['password']);
    
            // Задаем кодировку
            $db->exec("set names utf8");
    
            return $db;
        }   // get Connection with DataBase
    
    
    
    
        public static function Add_Video_To_DataBase($options)
        {
    
    
    
            // Соединение с БД
            $db = DBdriver::getConnection();
    
            // Текст запроса к БД
            $sql = 'INSERT INTO videos '
                . '(name, description, date, views, videos_id)'
                . 'VALUES '
                . '(:name, :description, :date, :views, :videos_id)';
    
            // Получение и возврат результатов. Используется подготовленный запрос
            $result = $db->prepare($sql);
    
    
    
            $result->bindParam(':name', $options['name'], PDO::PARAM_STR);
            $result->bindParam(':description', $options['description'], PDO::PARAM_STR);
            $result->bindParam(':date', $options['date'], PDO::PARAM_STR);
            $result->bindParam(':views', $options['views'], PDO::PARAM_INT);
            $result->bindParam(':videos_id', $options['id'], PDO::PARAM_STR);
    
            if ($result->execute()) {
                // Вертаємо ІД останнього запису
                return $db->lastInsertId();
            }
            // Вразі помилки 0
            return 0;
        }
    
    
    
        public static function clear_table(){
    
            $db = DBdriver::getConnection();
    
            $sql = 'TRUNCATE TABLE videos';
    
            $result = $db->prepare($sql);
    
            if ($about_result = $result->execute()) {
                // Если запрос выполенен успешно, возвращаем id добавленной записи
                return $about_result;
            }
            // Иначе возвращаем 0
            return 0;
    
    
        }
    
    
        public static function get_clicks_sum(){
    
            $db = DBdriver::getConnection();
    
            $sql = "SELECT `meta_value` FROM `wp_postmeta` WHERE `meta_key` = '_linker_count'";
    
            // echo $sql;  for debug
    
            $result = $db->query($sql);
    
            $assocArray = $result->fetchAll();
    
         //   var_dump($assocArray);    for debug
    
            $sum = 0;
    
            for ($i = 0; $i <= count($assocArray); $i++) {
    
               $sum = $sum + $assocArray[$i][meta_value];
    
    
            }
    
    
            return $sum;
    
    
        }
    
    
        public static function get_all_views_in_playlist($num_int = false) {
    
    
            $db = self::getConnection();
    
            $sql =  'SELECT `views` from `videos`';
    
            $result = $db->query($sql);
    
            $assocArray = $result->fetchAll();
    
            $sum = 0;
    
            for ($i = 0; $i <= count($assocArray); $i++) {
    
                $sum = $sum + $assocArray[$i][views];
    
    
            }
    
    
            if ($num_int) {
    
                return $sum;
    
            } else {
    
                return number_format($sum);
    
            } //else
    
    
        }   // get_all_views_in_playlist
    
    
    
        public static function get_views_in_last_30_days() {
    
    
            $db = self::getConnection();
    
            $sql =  'SELECT `views` from `videos` WHERE `date` > CURDATE() - INTERVAL 30 DAY AND CURDATE()';
    
            $result = $db->query($sql);
    
            $assocArray = $result->fetchAll();
    
    
            $sum = 0;
    
            for ($i = 0; $i <= count($assocArray); $i++) {
    
                $sum = $sum + $assocArray[$i][views];
    
    
            }
    
    
            return   number_format($sum);
    
    
    
        } // get_views_in_last_30_days
    
    
        public static function get_quantity() {
    
            $db = self::getConnection();
    
            $members=$db->query("SELECT COUNT(*) as count FROM videos")->fetchColumn();
    
    
    
            return $members;
    
        }  //  get_quantity_of_videos_in_play_list
    
    
    
    
        public static function get_average_views_per_video() {
    
    
    
                  $average = self::get_all_views_in_playlist(true) / self::get_quantity();
    
                  $average = round($average, 0);
    
                  return $average;
    
    
    
        }
    
    
    
    }


    И сам класс который его юзает...

    <?php
    /**
     * Created by PhpStorm.
     * User: pantene
     * Date: 13.02.2017
     * Time: 13:27
     */
    
    namespace ytd;
    
    use ytd\DBdriver;
    
    
    class YtData
    {
    
    //свойства
    
    public $last_number_of_array_on_the_last_pagination = 0;
    public $all_items_ids = array();
    public $array_of_full_information_about_video = array();
    public $playlist_id = "";
    
    //свойства
    
    
    
    
    
        public function add_videos_to_bd(){
    
                for ($i = 0; $i <= count($this->array_of_full_information_about_video); $i++) {
    
                    DBdriver::Add_Video_To_DataBase($this->array_of_full_information_about_video[$i]);
    
                }
    
    
            }
    
    
    
    
    
    
    
            public function get_array_of_full_information_about_video(){
    
                       //  echo "</br></br>ITEMS_IDS</br></br>";
    
                         $i = 0;
    
                         foreach ($this->all_items_ids as $key=>$value){
    
                           $this->array_of_full_information_about_video[$i] = $this->get_data_about_video_by_id($value);
    
                           $i++;
                         } //foreach
    
                return $this->array_of_full_information_about_video;
            } // METHOD   get array of full information about video
    
    
            public function get_all_items($is_page_token = false)
            {
    
    
                if ($is_page_token != false) {
    
                    $pgt = "&pageToken=" . $is_page_token;
    
                } else { $pgt = ""; }
    
    
                $request = "https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&playlistId=PLbZV_PJvMcy8x0n6Bx3QsWdSABYTtM0ph&key=AIzaSyC6N_rx9GXbitgE1qTnMmDafv1lVa0Rtvk&maxResults=9&order=date".$pgt;
    
                $response = file_get_contents($request);
    
                $response = json_decode($response, true);
    
    
                for ($i = 0; $i < count($response[items]); $i++) {
    
                    $this->all_items_ids[$this->last_number_of_array_on_the_last_pagination] = $response[items][$i][snippet][resourceId][videoId];
    
                    $this->last_number_of_array_on_the_last_pagination++;
    
                } //FOR
    
    
                if (isset($response[nextPageToken])) {   $this->get_all_items($response[nextPageToken]);    }   else { return true; }
    
    
    
            }
    
    
    
        public function get_data_about_video_by_id($videoID){
    
    
            $response = file_get_contents('https://www.googleapis.com/youtube/v3/videos?id='.$videoID.'&key=AIzaSyC6N_rx9GXbitgE1qTnMmDafv1lVa0Rtvk%20&part=statistics,snippet');
    
            $response = json_decode($response, true);
    
    
    
            $data_about_video = array();
    
            $data_about_video[date] = $response[items][0][snippet][publishedAt];           // вихідний формат дати
    
            $data_about_video[date] = $this->date_in_right_order($data_about_video[date]); // получили дату роліка. Звернулися до метода, що зробить її в потрібному фоматі
    
            $data_about_video[name] = $response[items][0][snippet][title];    // получили назву роліка
    
            $data_about_video[views] =  $response[items][0][statistics][viewCount];
    
            $data_about_video[description] = $response[items][0][snippet][description];    // получили описання роліка
    
            $data_about_video[id] = $response[items][0][id];
    
    
    
    
            return $data_about_video;
    
    
        }  // METHOD - get video's data by ID
    
    
        private function date_in_right_order($date_in_false_order){
    
    
               $date_in_false_order = explode("T", $date_in_false_order);
               $date_in_false_order = explode("-",$date_in_false_order[0]);
    
               $string_data = implode("-", $date_in_false_order);
    
             //  $array_right_order = array();
    
               /*$ar = 2;
               $it = 0;
            for ($i = 1; $i <= count($date_in_false_order); $i++) {
    
                $array_right_order[$it] = $date_in_false_order[$ar];
                $ar--;
                $it++;
    
            } //for*/
    
    
         //   $string_data = implode("-", $array_right_order);
    
            return "$string_data";
    
        } //get date in right order  response date in need FORMAT
    
    }   //class YtData;


    Интерессная штука....

    Вот метод в класе драйвера БД
    private static function getConnection()
        {
    
      // Получаем параметры подключения из файла
            $paramsPath = array(
                'host' => 'localhost',
                'dbname' => 'kamios_mbet',
                'user' => 'root',
                'password' => '',
            );
    
            $params = $paramsPath;
    
            // Устанавливаем соединение
            $dsn = "mysql:host={$params['host']};dbname={$params['dbname']}";
            $db = new PDO($dsn, $params['user'], $params['password']);
    
            // Задаем кодировку
            $db->exec("set names utf8");
    
            return $db;
        }   // get Connection with DataBase


    Его я вызываю в других методах этого класа вот таким кодом...

    $db = DBdriver::getConnection(); ---- и у меня уже в переменной БД интерфей для работы с PDO Mysql.

    Еще можно написать self::fetConnection(); когда один метод использует другой внутри одного класса
    Ответ написан
    1 комментарий
  • Java vs C++. Что полезнее?

    @Pantene742
    Смотря где применять ? то там и полезнее. у джавы есть большой плюс. Она практический во всех сферах задействована, и хороша для определенных задач в каждой из сфер своего применения. Например в вебэ оч круто можно применить, сервер видеочатов, онлайн кинотеатра с псевдостримингом и рекламными паузами без джавы не написать. (Node, Python, Ruby с модулями и каракулями будут такое уметь, за php молчу). Но это не повод учить джаву. Так как крупный функциональный проэкт заказывают только у фирм. А для небольшого сайтика своему другу только php + WP или Laravel. Веду к тому что для мелких задач мощный инструмент также некоректен как и не мощный для сложной задачи. Java впринцыпе умеет делать все тоже что и C++, только суть джави в том чтоб пожертвовать производительность но отвязать пользователя от работы с памятью, и API операционной системы(WIN API, POSIX). JVM как бы слой между етими сложными вещами и твоей джава программкой. Вообще джаву юзают вовсю там где ненадо производительности ее оч любят работники гугла и яндекса. Когда дело доходит до критической производительности сразу слезы на глазах и "о нет опять этот C++ глюки при зборке, опенсорсовские возможно з глюками плагины к GCC или библиотеки для конкретных могут выдать 1000 ошибок при зборке + их мощные компы иногда собирают 10 часов проэкты СПП" из за этого рабочие гугла (ребята участвующе в разработке Unix и Java еще в SUN Microsystems) которым надоел C++ создали GO для своих задач. Да C++ мощный, его сделали мощным и впихнули туда все что только можно, но пожертвовали всем. Это инструмент для крупных корпораций где над глюком будуть ломать голову минимум 10 чел. Если есть желание таки попробовать то советую под WIN API писать в Visual Studio. там оч много стандартов. и получить уникальный глюк очень сложно. и как правило есть ответы на многие глюки. как то так.
    Ответ написан
    Комментировать
  • Какие есть видео-курсы по созданию магазинов на Laravel 5.*?

    @Pantene742
    web for my self последний их курс. до 7 000 руб по ларе стоит Они как то так их записывают, слишком длинные. 50 часов курс ларавел например.
    Ответ написан
  • Как работает C++/CLI?

    @Pantene742
    C++/CLI компилируеться в байт код для виртуальной машинки .net. У него узкая сфера применения на нем можно унаследовать классы с программ на C++ и собрать библиотеку в соответсвие со стандартами C++/CLI с которой можно будет наследоваться с C#. как правило наследуют в программе на C# переоформляют все еще разок. и уже с переоформленных библиотек на C# наследуються C#.net разработчики. Это называеться Wrapper (обертка) через которую программы на C# контактируют с нативными на C++/C.

    Этот язык стоит учить если ты хочешь писать эти обертки. Их в нете полно (они должны хорошо продаваться по лицензиям) Они под популярные библиотеки C++. можно сказать на 90 процентов случаев )) в сфере обработки видеоаудио. Телефонии. сети. работы с Данными БД. и всякого такого на все случаи почти.
    Ответ написан
    22 комментария
  • Почему сетка bootstrap 3 не работает в IE8?

    @Pantene742
    основная задача IE скачать норм браузер ))
    Ответ написан
    2 комментария
  • Есть ли плагин для конвертации видео при загрузке в WP?

    @Pantene742
    https://habrahabr.ru/post/265897/

    Надо Юзать возможности двух плагинов под Nginx. mod_mp4 - для стрима. secure_link - для выдачи вмеренных md5 ссылок на видео. я думаю хорошо защитить от хотлинка и не дать смотреть без просмотра рекламмы. Nginx советую запустить на отдельном порте (не 80) 80 - для апача

    Редактирование видео спомощью ffmpeg. и обязательно через mp4 box перепустить видео чтоб теги видео были в начале файла.

    В СТАТЬЕ ВСЕ ОПИСАНО ДЕТАЛЬНО. Я просто написал на что обрать особое внимание.
    Ответ написан
    Комментировать
  • CMS на базе Yii2?

    @Pantene742
    слишком много слоев абстракции. Советую CMS на базе собственного ядра. А модули плагины к ней писать на фреймворке.

    Magento хороший вариант. Она имеет 1000 слоев. но там кеширование из коробки. и при кешировании работает норм.

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

    @Pantene742
    в самом сложном случае развоваричивается на весь экран и пишется с экрана
    Ответ написан
    Комментировать