• Подключил больше 100 аккаунтов к Api Telegram, и меня забанили, что делать?

    @vkdv
    Да, вообще нигде не совмещай более одного аккаунта. втч в менеджерах. в течении 5-ти минут банят, Лучше всего использовать тор и веб-версию.
    Ответ написан
  • Возможно запустить обмен с сайта в Битриксе?

    @vkdv
    $filename = basename($filename);
    $XML = simplexml_load_string($filename);
    ...

    Вообще я просто закидываю xml (прям в "родном виде") в mongodb , а потом уже делаю импорт из базы, для отладки удобно, для роллбэка тоже, так как все версии импорта сохраняются
    Ответ написан
  • Как в Guzzle получить куки?

    @vkdv
    $request = $client->request('get', 'http://megogo.net',[
                'headers' => [
                    'User-Agent' => 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0'
                ]
            ])->getHeaders();


    Не забывайте добавлять юзер-агента
    Ответ написан
    Комментировать
  • Как использовать bootstrap во vue.js2?

    @vkdv
    Не вижу смысла юзать бутстраповские компоненты в vue апп,если можно использовать например element.eleme.io/#/en-US/component/installation
    От бутстрапа оставить только некоторые стили и сетку(хотя и это не обязательно, но если привык...)

    P.S
    show="@{{@showModal}}" - Это что вообще? Может так: v-show="showModal"
    Ответ написан
    Комментировать
  • Почему может быть ошибка в fields связанных моделей Yii2?

    @vkdv
    ну по логике вы для одной записи пытаетесь выбрать множество записей из другой таблицы. Я не помню точно как на это реагирует yii2, но в Ларавел такая фишка не прокатит(Left join возвращает столько левых записей, сколько и правых, с ОРМ в этом могут быть проблемы ).
    Вам придется принудительно вызывать после $Build = Build::findOne(5)(или как там); $BuildFirms = $Build->firms;
    Ответ написан
    Комментировать
  • Возможна ли подмена HTTP_REFERER через php или JS и как?

    @vkdv
    curl_setopt($curl, CURLOPT_REFERER, "test.ru");
    curl --referer referer.com www.test.ru
    Ответ написан
    Комментировать
  • Что использовать в качестве БД для поиска/агрегирования по тегам?

    @vkdv
    Можно попробовать redis с множествами и пересечением
    у каждого тега есть свое множество записей

    tag1 - record1,record2,record3,record4,record5
    tag2 - record5,record6,record3
    tag3 - record1,record3,record5

    Дальше выполнить мат операцию SINTER tag2 tag2 tag3
    В результате получится record3, record5

    Если важна сортировка и лимиты - то можно использовать упорядоченные списки и команду ZINTERSTORE - но она менее производительна
    Ответ написан
    1 комментарий
  • Какое техническое решение подобрать для создания сайта?

    @vkdv
    На данном этапе рано подбирать техническое решение, если вы хотите выпустить готовый продукт достаточного качества, с относительно низкими затратами и в достаточно короткие (в рамках разумного) сроки, то вы должны все делать последовательно, и тогда не совершите тех ошибок, которые довольно часто совершают. При этом люой этап вы сможете отдать на аутсорс , сохраняя контроль над развитем проекта и не создавая лишней работы

    Я это вижу примерно так :

    1) Наймите Дизайнера / UХ-дизайнера и менеджера проекта. Начните разрабатывать интерфейсы, затрачивая на это по 3 - 4 часа вашего личного времени , все время менеджера и дизайнера.

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

    Задачи дизайнера - понятны , он может начать с uikit и стилизации и переходить к самому сложному , как только менеджер подготовит тз для основным моментов(именно с самого главного я бы и начинал, например форм личного кабинета по объектам и коммиссии)

    2) Как только будет появляться готовый дизайн (1-2 месяц) , вводите в работу верстальщика , Верстка должна быть сразу адаптивной . Скорее всего bootstrap. Первым делом верстальщик должен создать стили для UIKIT, после чего приступить к верстки страниц

    3) Когда будет готова верстка страниц ЛК , нанимайте backend и front-end(при необходимости) разработчиков(например php - laravel и javascript/vue.js) Верстальщик пусть переходит к общим страницам и главной . Бэкенд и фронтенд разработчик бдут работать в паре несколько месяцев

    Даже если вы решите использовать CMS или Bitrix - первые два пункта придется сделать заранее . К этому моменту будет примерно понятно , как лучше поступить с 3-м пунктом. И самое главное для исполнителя будут подготовленны все материалы , а вы сможете отвлечься на подготовку промо материалов
    Ответ написан
    1 комментарий
  • Как запустить Express приложение на сервере?

    @vkdv
    Апач и nginx не нужен (в идеале конечно нужен но в данном случае не обязателен )
    На всякий случай убедись,что не упала нода ps ax|grep node
    Убедись что нода слушает все айпи на сервере (0.0.0.0)
    http.createServer(function (req, res) {
        res.writeHead(200, {'Content-Type': 'text/plain'});
        res.end('Hello World\n');
    }).listen(3000, "0.0.0.0");

    Открой порт наружу
    iptables -A OUTPUT -p tcp --dport 3000 -j ACCEPT
    iptables -A INPUT -p tcp --dport 3000 -j ACCEPT

    проверь мой_серверный_айпи:3000 - Должно работать
    Хотя это все не правильно конечно, правильно будет сделать поддомен или домен с обычным 80 портом и в nginx для данного хоста сделать редирект(proxy pass) на 127.0.0.1:3000
    Ответ написан
  • Как определить после какого символа был курсор?

    @vkdv
    Про textarea незнеаю, вроде как туда и картинку нельзя добавить, наверное ты имел в виду див с editable
    В таком случае можешь посмотреть здесь https://stackoverflow.com/questions/3972014/get-ca...
    Ответ написан
  • _escaped_fragment_ работает с HTML5 адресами?

    @vkdv
    Только #!/product/name
    _escaped_fragment_ работает одинаково у Google и у Яндекс или есть какие-то особенности?

    Есть особенности :
    1) Для яндекса важно, чтобы на главной (индексовой странице) был канонический урл , например прописать в индекс контроллере
    $('head').append('<link rel="canonical" href="http://xxx.ru/#!/" />');
    Иначе он главную страницу не индексирует (возможно это лечится втч пунктом 2)
    2) в конифге nginx нужно сделать канонический редирект с www на http (или наоборот) return 301 http://www.example.com$request_uri; иначе гугл будет вредничать. Можно также указать в гугл мастере основной домен , мб этого будет достаточно
    Ответ написан
    Комментировать
  • Можно ли настроить Apache на работу с процессом php, который будет постоянно весить работающим?

    @vkdv
    Можно, но с помощью костыльных либ - reactphp.org (https://toster.ru/q/233230)
    Но это будет уже немного не тот "код" что был до этого, так как память выгружаться не будет, и как следствие возможны неожиданности в рабочем коде
    Ответ написан
    1 комментарий
  • А насколько нормально использовать Node.JS и PHP в одном большом проекте?

    @vkdv
    Если бы это было возможно, то вам пришлось бы делать двойную работу. Но это невозможно
    Ответ написан
    Комментировать
  • Есть ли аналог jquery .load с загрузкой элемента dom?

    @vkdv
    Можно создать "виртальный" dom element из Респонса и оттуда выдернуть то что нужно, типа

    var virtualDomElement = document. createElement('div'); // или var virtualDomElement = document.createDocumentFragment();
    virtualDomElement.innerHTML = r.responseText;
    target.appendChild(virtualDomElement.getElementById('login-form'));
    Ответ написан
  • Быстрый (лучше очень быстрый) анализ timestamp, выручайте!?

    @vkdv
    Может я не понял проблему, но я ее не вижу, если дата заранее известна, то betwen.
    Если хочешь сгруппировать в выборке по дням, можно делить на сутки (60*60*24), тогда
    получишь порядковые номера дня от текущей даты в обратную сторону, а в пхп, если надо получить дату использовать встроенные функции и приводить к виду date() - index day
    Ответ написан
  • Паттерны проектирования?

    @vkdv
    Паттерны - это реальные инструменты, позволяющие добиться реализации концепции объектно-ориентированного проектирования и принципов SOLID

    Ссылка на SOLID

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

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

    При этом :
    1) Никак не изменяется код класса "Комментарий" (кроме подключения интерфейса) и в будущем мы добавляем поведения без изменения класса + стабильность системы, гибкость
    2) Каждый класс имеет свое четкое назначение + легкость модификации, порядок
    3) Комментарии наследуют некоторое поведение, путем подключения поведения, но также могут поступать любые другие классы - сущности (посты, блоги итп) , то есть интерфейс и реализация лайков универсальна, и весь функционал работы лайков находится только (строго!!!) в одном месте + легкость модификации, Универсальность, стабильность, интуитивная понятность

    Из википедии :

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

    Оттуда же про SOLID

    Избавиться от "признаков плохого проекта"[4] помогают следующие пять принципов SOLID:

    Принцип единственной ответственности (The Single Responsibility Principle)
    Существует лишь одна причина, приводящая к появлению класса.

    Принцип открытости/закрытости (The Open Closed Principle)
    «программные сущности … должны быть открыты для расширения, но закрыты для модификации.»

    Принцип подстановки Барбары Лисков (The Liskov Substitution Principle)
    «объекты в программе должны быть заменяемыми на экземпляры их подтипов без изменения правильности выполнения программы.»

    Принцип разделения интерфейса (The Interface Segregation Principle)
    «много интерфейсов, специально предназначенных для клиентов, лучше, чем один интерфейс общего назначения.»

    Принцип инверсии зависимостей (The Dependency Inversion Principle)
    «Зависимость на Абстракциях. Нет зависимости на что-то конкретное.»
    Ответ написан
    2 комментария
  • Vuejs и Angular аналоги? В чём разница?

    @vkdv
    1) vuejs - простой и ненавязчивый фреймворк который призван максимально просто и тесно взаимодействовать с произвольной версткой, в этом плане он очень похож на angular 1 , только проще, чище и чуть логичнее. При этом оп предоставляет инструменты для компонентного подхода(для фанатов клиента) и даже серверный рендеринг. На мой взгляд vuejs - это идеальное решение для быстрой разработки с допустимым уровнем качества.

    2) Backbone - это далеко не библиотека и он в прошлом. Его главный минус - это невозможность управлять поведением dom, если этот dom не был сформирован через backbone-engine. Что делает его почти бесполезным, если только ты не хочешь написать проект , который будет намертво зависеть от выбранного инструмента и в котором будет невероятное множество клинтских шаблонов

    3) React - это скорее концепция + движек для ее реализации, чем фреймворк Его существенный плюс в том, что верстка идет с изолированной логикой в паре, но это плюс скорее концептуальный , точно также можно поступать и используя jquery в изолированом скоупе прямо в верстке в html- фалах - виджетах (Я пробовал уже после реакта и это очень просто и надежно, но я fullstack и мне от клиента большего не нужно)
    Минус реакта в том, что верстка должна рендериться только через шаблонизатор реакта, это значит что весь проект нужно рендерить через реакт иначе же в проекте будет хаос.

    4) Ember - тоже говорят вещь хорошая, но я бы никогда не выбрал Ember по той же причине что и backbone.
    5) Riot и еще 50 подобных фреймворков похожи либо на Angular, либо подражают React, либо идут по пути Backbone&Ember или же какие-то "гибридные" со своими фишками.
    6) Angular 2 - я пока не понял его фишку.

    Если рассматривать весь этот зоопарк с точки зрения бизнеса - то лучше выбрать то, что максимально проще и либеральней
    Ответ написан
    Комментировать
  • Какой клиентский JS-шаблонизатор стоит выбрать в 2016 году?

    @vkdv
    Возможно в твоем случае подойдет data-binding
    В этом случае ты легко сможешь
    1) Обновлять данные с помощью привязки в существующем dom
    2) Добавлять новые шаблонные узлы в dom

    Сам шаблон описывается прямо в верстке html с использованием специальных директив, или описывается и скрывается на странице при использовании компонентного подхода(ну или подгружается откуда-нибудь, но имхо это лишнее в 90% случаев)

    В качестве такого "шаблонизатора" я бы посоветовал vue.js , это фреймворк , но он простой и легкий и для взаимодействия с websocket его инструменты смогут пригодится и в других аспектах. Также можно использовать angular 1.5 , но он сложнее и тяжелее
    Ответ написан
    Комментировать
  • Как эффективнее всего изучать yii2?

    @vkdv
    Прости что лезу не в свое дело, но мое мнение, что yii2 лучше вообще не изучать. Изучай Laravel/Symphony etc

    Приведу несколько аргументов (в сравнении с laravel):

    1) Yii2 довольно слабо следует принципам SOLID и более того, не предоставляет в достаточной мере архитектурного решения разработчику, чтобы он сам им следовал
    2) Yii2 Костылен, а его исходники мягко говоря не очень. Например behaviors (костыль) против middlware(прозрачное решение)
    3) Yii2 Имеет устаревшие сервисы из коробки относительно Laravel , который развивается куда более активно.
    Помимо прочего в Laravel намного больше готовых сервисов (Elixir , scheduling, Queue , Blade, Storage, Broadcast , Notifications) Вместо этого в yii2 есть только bower assets - который представляет с собой дикий костыль и откровенно ужасен, да еще и не безопасен, а также вроде в yii2 есть сервис для работы с файловой системой, но я с ним не работал. Остальные сервисы типа bootstrap , console etc есть и там и там
    4) Магия Yii2 не способствует контролю за кодом и прозрачности
    5) Yii2 имеет довольно плохо продуманную архитектуру, о чем говорит например тот факт, что jquery вшит в ядро фреймворка (возможно и некоторые другие ассеты) и это очень странно. Особенно когда тебе нужно запускать консольные приложения
    6) ActiveRecord в yii2 доволбно запутан, по сравнению с https://laravel.com/docs/5.3/queries (кончено это субъективно)
    7) Yii2 не особо популярен в мире, у него плохая документация и я думаю он серьезно отстоет от конкурентов.

    Есть конечно у него и плюсы, например он быстрее laravel и у него есть поддержка модулей(что решается в laravel подключением пакета)
    Ответ написан
    9 комментариев
  • Что работает быстрее: document.forms.add.title.value или document.querySelector('.title').value?

    @vkdv
    1 - й вариант на сколько я понимаю не анализирует DOM дерево, ссылка на объект уже существует после загрузки страницы. Так что ставлю на него
    Ответ написан
    Комментировать