• Как реализовать подобное на Node.js?

    @mik222
    Node.js имеет интеграцию с Phantom.js(который является headless браузером, как вы просите)

    var phantom = require('phantom');
    
    var sitepage = null;
    var phInstance = null;
    phantom.create()
        .then(instance => {
            phInstance = instance;
            return instance.createPage();
        })
        .then(page => {
            sitepage = page;
            return page.open('https://stackoverflow.com/');
        })
        .then(status => {
            console.log(status);
            return sitepage.property('content');
        })
        .then(content => {
            console.log(content);
            sitepage.close();
            phInstance.exit();
        })
        .catch(error => {
            console.log(error);
            phInstance.exit();
        });
    Ответ написан
    Комментировать
  • Как научить express выполнять php?

    @mik222
    Вы перемешали все в кучу и в итоге ничего не понятно.
    -------
    Если я вас правильно понимаю, то вам нужно отправлять GET/POST запросы с вашего node.js приложения приложению на PHP.
    --------
    Если это так, то делается это следующим образом
    var request = require('request')
    var url = 'http://www.google.com' // input your url here
    
    // use a timeout value of 10 seconds
    var timeoutInMilliseconds = 10*1000
    var opts = {
      url: url,
      timeout: timeoutInMilliseconds
    }
    
    request(opts, function (err, res, body) {
      if (err) {
        console.dir(err)
        return
      }
      var statusCode = res.statusCode
      console.log('status code: ' + statusCode)
    })
    Ответ написан
    Комментировать
  • Как перезаписать html кнопку?

    @mik222
    $(document).ready(function(){
      $("#filebuts")
      .... ваши изменения....
    })

    Ваша кнопка явно загружается с помощью JS.
    Соответственно, добавляете этот код в конце вашего файла
    ---------
    Пишу на $ потому что быстрее. Тоже самое можете сделать и без JQuery
    Ответ написан
  • Чем и как прогрузить страницы сайта без браузера?

    @mik222
    Задача варьируется от тривиальной: for loop в bash,
    до весьма интересной в которой вы:
    • Создаете и поддерживаете rotating proxy server через tor(20 запущенных tor инстасов за лоад балансером, для смены ip )
    • Поддерживаете параллельную закачку(и соответственно message queue) для уникальных текущих/удаленных/недоступных в данных момент URL
    • Поддерживаете автоматический кравлинг URL на странице, в случае если вы хотите переходить по ссылкам
    • Поддерживаете несколько типов кравлеров(phantomjs/casperjs/standart http request)
    • Поддерживаете спуффинг клиента(чтобы вас не засекли ботоловилки с каптчей)
    • Поддерживаете некоторую эвристику которая должна засекать настоящая ли это страница или honeypot для бота

    И это только первые проблемы которые приходят на ум.
    ------
    В случае если вам нужен dirty скачивальщик. То да, wget в for loop оптимальное решение. (Не факт что рабочее)
    Ответ написан
    2 комментария
  • Достаточно ли стека MEAN для создания хотя бы первого полноценного приложения?

    @mik222
    Достаточно, но зачем так себя мучить?
    JS сам по себе непростой язык. А уж писать на нем логику, да с его моделью асинхронности..
    ----
    Достаточно конечно, JS тьюринг полный язык. Написать то можно что угодно, но как это потом поддерживать.
    ----
    Я бы взял GoLang. Он будет попроще JS и по однозначеней.
    Причем, клиент тоже на нем можно писать
    Но это уже извращение. Проще взять TypeScript
    ----------
    Да, SPA лучше писать на
    GoLang(server REST API) + TypeScript + React (client) но автор biased
    Ответ написан
    Комментировать
  • Имеет ли смысл начинать с Си?

    @mik222
    А для чего вам нужен C?
    Вам необходимо ручное управление памятью?
    Вам нужен доступ к железу?
    ==========
    Если да, попробуйте Rust, он поприятнее и поновее.
    --------------
    Если нет(т.е. у вас концептуальный интерес) возьмите Haskell/Scala/Erlang на выбор.
    Там есть ряд концепций которые приятно изучить.
    ---------------
    Если вы считаете, что сможете "развернуть" знания С на другие контексты(т.к. он более низкоуровневый)
    то у вас этого не получится. В отличной области происходит оперирование отличными сущностями(кэп).
    Ответ написан
    5 комментариев
  • Как перейти на вёрстку макетов?

    @mik222
    Подумать как можно максимально автоматизировать верстку:
    А именно, попробовать поизучать psd файлы.
    (По какому принципу их собирают дизайнеры, как это можно замапить на html/css с минимальным участием человека)
    Или же, поизучать компоненты, например: react.rocks
    Понять, как можно их интегрировать с минимальным участием человека.
    ----------
    А вообще, я считаю верску тяжелой скучной и неблагодарной работой.
    Но, как другие уже сказали, берете и верстаете пока не дойдет до автоматизма.
    Ответ написан
    Комментировать
  • Для чего нужен Docker?

    @mik222
    Сначало объясню на конкретном примере, а потом приведу архитектурное объяснение:
    ------------
    Например, вы разрабатываете некоторый гейт-аггрегатор четырех систем. Одна из них на WordPress, другая на Drupal третья самописная на Django и четветрая: реалтайм чат на Meteor.js и Mongo.
    ---------
    Проблема заключается еще и в том, что WordPress и Drupal требуют разных настроек PHP(или вообще разных их версий). А так-же разных настроек Apache/Nginx.
    ---------
    Вам также нужно легко переключатся между системами базами, и желательно, каждую из них держать в отдельной папке в сабфолдере проекта(и без абсолютных линков, чтобы можно было легко заменять подсистемы в других проектах)
    --------
    Чтобы крыша не потекла не у вас ни у компьютера, ни у человека который будет это деплоить нужна система которая позволит:
    • Инкапсулировать кишки каждого фреймворка/cms. Вот это не нормально.
      Это клиника. До создания докера люди этим честно занимались(часов 5 может уйти)
    • Иметь стандартизированный интерфейс, котрый будет
      • достаточно абстрактным чтобы уйти от конкретных деталей каждой платформы
      • достаточно конкретным, чтобы абстракции не текли, т.е. не приходилось городить костыли чтобы обойти неуместную абстракцию.

    • Иметь возможность композиции различных компонентов системы

    =========
    Штука в том, что у Докера это получилось. Это и вкусная система отзеркаливания системных портов/нужных папок, конфигурирование через переменные среды.
    По факту же, контейнер ставится за пять минут(4 из которых скачивается) и тут же на месте конфигурируется в понятном и удобном интерфейсе.
    ==========
    PS. Какой гений придумал html разметку в этом редакторе использовать. Это же неадекват, почему не markdown например.
    Ответ написан
    1 комментарий
  • Чем отличаются команды?

    @mik222
    service запускает System V init script в наиболее "предсказуемой" обстановке(удаляя большинство текущих переменных среды)
    Фактически LANG и TERM единственные переменные которые передаются init скрипту.
    ----
    Важно заметить, что /etc/init.d/ deprecated и в следующих мажорных версиях дистрибутивов не будут работать.
    ====
    Т.е. используйте service. Посмотрите какие переменные у вас есть касательно MySql.
    Та ошибка которую вы видите(насколько я знаю)
    исправляется заменой пути с localhost на 127.0.0.1 в вашем клиенте(тем самым "заставляя" клиент коннектиться не через сокет, а через tcp)
    В любом случае, покажите логи, можно что-то будет сказать.
    Ответ написан
    Комментировать
  • Как понять, когда можно учить фреймворки?

    @mik222
    1. Когда ты понимаешь что фреймворк предоставляет разумную абстракцию в твоей предметной области
    2. Когда ты понимаешь, что реализовывать примитивы доменной области самостоятельно ты будешь до морковина посинения
    3. Когда рекрутеры выучили новое умное слово и теперь всех нанимают только с этим баззвордом в резюме
    Ответ написан
    Комментировать
  • Как реализовать работу ползунка?

    @mik222
    JQuery для таких задач плохо подходит.
    В вкратце:
    1. Строите модель
    2. Определяете Render функцию
    3. Создаете маппинг из одной модели в другую
    4. Вешаете маппинг на onchange события
    Гуглите www.ractivejs.org
    Ответ написан
    Комментировать
  • Парсим/грабим веб-страницы без мусора?

    @mik222
    Эта задача называется data region mining и является довольно хитрой проблемой, т.к. верстка может быть везде разной, а вы решаете задачу поиска основного контента на сайте(т.е. обрезать рекламу, навигационные блоки, левые вставки, спрятанный контент и прочее)
    Вот вам на вскидку алгоритм:
    1. Для каждой html ноды в дереве, вычислить её площадь(рендерите через phantom.js и вычисляете площадь через Element.getBoundingClientRect())
    2. Удаляете все, что меньше средней площади на этом уровне. (Вычищаем не имеющие значения блоки)
    3. Спускаетесь вниз на один уровень и повторяете алгоритм


    В результате получите набор текстовых блоков, которые имеют максимальный объем на странице.

    Вам нужно будет эмпирически до настроить алгоритм под ваш use case:
    Например, если перед вами регион с большим количеством текстовых блоков, то достать текст из всех дочерних и уложить в регион(таким образом мы избегаем вырезки bold italic текста).

    Дальше за вами стоит задача объединить эти регионы в статью/статьи(в случае с лентой).
    --------
    Существуют и более любопытные алгоритмы по вычислению попарной similarity между произвольными дочерними нодами с целью найти data region
    Но это вам нужно читать опубликовынные статьи на эту тему, например:
    dl.acm.org/citation.cfm?id=1060761
    Ответ написан
    Комментировать
  • Какую сборку linux посоветуете?

    @mik222
    Для таких целей вам больше всего подходит
    Debian Stable в режиме NetInstall.
    С установленным NW.js в Kiosk mode.
    https://github.com/nwjs/nw.js/wiki/the-kiosk-mode
    Ответ написан
    Комментировать
  • На чем писать фронтенд легко и непринужденно?

    @mik222
    Языки:
    ClojureScript. Быстро просто и удобно.
    TypeScript. Если нужны типы и вы привязаны к семантике JS(В команде много JS разработчиков не готовых учить нормальные языки).
    ------
    Ractive.JS если вам нужна типичная(живая) страничка с большим количеством зависимостей от состояния.
    Плохая композабельность, однако прекрасно работает в модели серверного рендеринга(вам не придется учить новые концепты). Т.е. У вас есть шаблон(mustache). К нему применяется состояние, рендерится вьюшка.
    Плохая композабельность потому-что mustache в mustache вы не вложите так-же красиво как компоненты в реакте.
    -------
    React. Сильно продвигаемый и довольно удобный. Если используете React, то смотрите сюда https://react.parts/web
    очень много готовых компонентов
    -------
    Скажем так
    SPA: ClojureScript/React/TypeScript
    Оживленная страничка: es6/Ractive
    Ответ написан
    Комментировать
  • Каковы сроки запуска веб-студии?

    @mik222
    Простите, но на мой взгляд, начинать надо не с помещения и компьютеров, а с бизнес процессов.
    1. Сделайте сайт
    2. Наймите людей на удаленке
    3. Научитесь ими управлять
    4. Найдите клиентов
      1. Изучите социальный маркетинг
      2. Поймите свои сильные стороны
      3. Научитесь продвигать себя в вебе


    Только после этого можно арендовать модный офис и нанять представительного начальника.
    Ответ написан
    Комментировать
  • Какие технологии выбрать для Data Mining проекта?

    @mik222
    Не очень понял ваш вопрос.
    Вам нужны признаки?
    Возьмите tf-idf.
    Вам нужен стемминг?
    возьмите snowball stemming
    Вам нужно выкусывать стоп слова?
    Скачайте список стоп слов и выкусывайте.
    ------
    Процесс экстрации фич для текста довольно простой:
    Убрать стоп-слова -> POS tagging -> Stemming -> Scoring(tf-idf)
    Ответ написан
  • Как лучше сделать несколько языков?

    @mik222
    Если вы пишете движок сами. Зачем вы это делаете на PHP?
    На свете много приятных и удобных инструментов.
    Зачем выбирать что-то ущербное.
    --------
    Как бы я сделал локализацию.
    Я бы определил глобальный хешмап в отдельный файлик. И функцию, которая мапит вашу стандартную локализацию, на локализацию в хешмапе.
    Быстро, никакого парсинга, никаких баз и прочих файлов.
    Ответ написан
    Комментировать
  • Почему цикл for в языке Python 3 ведёт себя не так, как надо?

    @mik222
    Ваш код, простите, упорот.
    Вы O(N) проблему превратили в O(N^2).
    Не говоря уже о том, что вы изменяете итерируемый массив.
    Уложите значения в хеш таблицу. Проверяйте на >2 на каждой итерации и получите ваше решение.
    Ответ написан
  • Как пропарсить HTML теги, а также скобки и подобное?

    @mik222
    xml/html давно парсится чем только не лень, в Go он вообще, в stdlib.
    самое известное для питона: lxml.de
    Beautiful soup не советую, он старый и забытый.
    Если хочется чистенько и самому, гуглите packrat парсеры и ABNF мета грамматику.
    Симпатишно и быстро тут: https://github.com/Engelberg/instaparse
    Ответ написан
    2 комментария
  • Каким алгоритмом распарсить данные категории товаров и превратить их в древовидную структуру?

    @mik222
    Префиксное дерево. Сплит по категории. Можно сделать на хешах.
    В результате получите ваше дерево.
    Префиксное дерево: https://en.wikipedia.org/wiki/Trie
    --------
    Псевдокод
    Для каждого <item>:
      Взять категории по порядку. [cat1,cat2,cat3]
      Уложить этот путь в trie. 
      В качестве листа, указать все остальные<не категории> элементы item
    Готово

    -------
    Если у вас есть дубликаты характеризующих атрибутов для элементов Например: не
    ID name а pbbpp. То используйте алгоритм Недельман Вунша по выравниванию строк с бэктрекингом. Токинизируете по характеризующим элементам.
    Ответ написан
    2 комментария