• Порекомендуйте язык/фреймфорк/технологию для websocket-сервера?

    @jacob1237
    Асинхронная модель обработки сетевых соединений можно сказать что единственно верная для данной задачи.
    Корень зла здесь - так называемая "проблема C10k", то есть "проблема 10 тысяч соединений": https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D...
    При построении чатов эта проблема стоит особенно остро, т.к. если у Вас, например, 2000 онлайн пользователей, то и соединений с ними тоже 2000, которые необходимо поддерживать в активном состоянии в режиме реального времени.
    Именно в таких случаях асинхронная модель выигрывает, потому что на каждое соединение получается очень небольшой оверхед по памяти, в отличие например от модели когда на каждое соединение создается системный поток - thread.

    Теперь про возможные технологии. Написать чат на вебсокетах возможно много на чем.
    Фаворитами по скорости программирования здесь будут, ИМХО, JavaScript (Node.js) и Python. По скорости же работы - Go, Erlang и прочие компилируемые языки.

    Python:
    1. Twisted + sockjs-twisted
    2. Tornado + sockjs-tornado (уже приводили здесь)
    3. Crossbar.io (http://crossbar.io/) - комплексное решение, которое позволит сконцентрироваться на логике приложения, а не на технических вопросах.
    4. Разные вариации библиотек (Authobahn.io, asyncio etc.)

    JavaScript (Node.js):
    1. Socket.io (socket.io/) - достаточно известное решение, комплексное, позволяет не думать о технической части
    2. SockJS (https://github.com/sockjs/sockjs-node) - больше библиотека чем фреймворк. Например мультиплексирование (несколько "виртуальных" соединений внутри одного сокета) придется пилить вручную (правда есть библиотеки)

    Хочется отметить, что вне зависимости от использования Socket.io или SockJS, настанет момент, когда Вы захотите использовать все ядра своего процессора для обработки пользовательских соединений (по одному запущенному процессу на ядро). И вот тут на Python придется вручную писать логику построения кластера из нескольких процессов.
    В Node.js эту проблему решает модуль "Cluster" (https://nodejs.org/api/cluster.html).
    В принципе на Python тоже можно быстро написать этот функционал (например на Twisted), но осадочек, как говорится, остался)

    По поводу скорости - JavaScript (Node.js) априори будет быстрее чем Python, т.к. там JIT компиляция.
    Уравновесить ситуацию поможет PyPy - нестандартный интерпретатор Python, который тоже использует JIT-компиляцию. В этом случае разницы в скорости практически не будет заметно.

    Сам я люблю и уважаю Python, поэтому порекомендую его. Хотя бы потому что в Twisted, Tornado да и asyncio есть корутины (coroutines), а в новых версиях Python даже async/await. Эти конструкции позволят Вам писать в линейном стиле и избежать лапшекода как в JavaScript.

    PHP:
    1. Ratchet (уже писали о нем)
    2. phpDaemon

    PHP рекомендовать не буду, разве что если у Вас вся система на PHP и программисты больше не знают других языков.

    Если очень нужна высокая скорость и нетребовательность к ресурсам, пишите сразу на Go. Вот выше Вам уже посоветовали комплексные решения типа Centrifugo (который кстати сначала был написан на Python + Tornado).

    P. S. Забыл отметить, что если Вам нужны исключительно веб-сокеты (которые будут работать во всех современных браузерах), то Вы вообще можете отказаться от Socket.io и SockJS. Эти библиотеки хороши для обеспечения совместимости со старыми браузерами, ну или для случаев, когда вебсокеты режутся сетевым оборудованием. Эти библиотеки по-умолчанию переключат браузер в режим long-polling.

    Однако если Вам все это не нужно - то не берите, тем самым уменьшите оверхед на браузер и сервер.
    Ответ написан
    Комментировать
  • Как используя DNS сервера freenom направить домен на IP?

    @jacob1237
    Зарегистрируйте бесплатный аккаунт на Cloudflare, там предоставляют свои DNS-серверы.
    А на freenom весьма паршивенький функционал настройки DNS. В частности нельзя прописывать маски типа *.yourdomain.com и т.д.
    Ответ написан
    Комментировать
  • VirtualBox. Как настроить доступ к SSH серверу, запущенном на гостевой ОС?

    @jacob1237
    Можно просто пробросить 22 порт из виртуалки на localhost (гугл virtualbox port forwarding). После таких манипуляций сможете подключаться к SSH серверу по IP адресу Вашего реального компьютера, но соединение будет перебрасываться в виртуалку.

    Вот здесь можно подглядеть: stackoverflow.com/questions/9537751/virtualbox-por...
    Ваш случай - "Host -> Guest"
    Ответ написан
    Комментировать
  • Как заставить скролл бар двигаться без воздействия на него?

    @jacob1237
    Простите, из-за формулировки Вашего вопроса не смог удержаться =)
    250px-Edouard-Isidore-Buguet-PK-spirit-p

    А если по теме, то в общем-то да, тут уже писали - setInterval() если хотите двигать скролл через равные интервалы времени, либо setTimeout() если нужно периодически менять длительность интервала.
    Ну и window.scrollBy(x, y), если хотите двигать скролл от определенной позиции на N пикселей.
    Ответ написан
    1 комментарий
  • Какой самый простой способ в Linux получить шелл (песочницу), из которого заблокирован доступ к сети?

    @jacob1237
    chroot + iptables для конкретного пользователя?
    Ответ написан
    Комментировать
  • Почему angularjs уделяют так много внимания?

    @jacob1237
    Потому что его пиарит Google.
    Внутри ничего сверхъестественного нет, обычный two-way data binding и свой собственный шаблонизатор, который является основой фреймворка и фактически заставляет вас писать логику приложения в шаблоне.
    Ответ написан
    Комментировать
  • Upwork, ИП и валютный контроль - как правильно оформить документы?

    @jacob1237
    Вам нужно позвонить или зайти в банк и обсудить это с отделом валютного контроля.

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

    Сейчас сам заморачиваюсь с выводом с Freelancer.com. Так вот, понадобится публичная оферта переведенная на русский язык (или на двух языках), подписанная Вами же в стиле "перевод заверяю".
    А в качестве инвойсов или актов подойдет скриншот из раздела финансов на сайте. Его тоже нужно будет подписать самостоятельно в стиле "копия верна". И вроде как все.

    К тому же с апворком проще, потому что они действительно высылают подписанный и переведенный договор (чего Freelancer.com делать не может, или не хочет).
    В общем позвоните в банк и объясните ситуацию, все зависит от адекватности персонала в отделе валютного контроля: некоторые банки/отделения, как на разных форумах пишут, без "мокрой" печати вообще ничего принимать не хотят.
    Ответ написан
    2 комментария
  • Приостановлен аккаунт на upwork. Что делать в даной ситуации?

    @jacob1237
    Предоставить всю необходимую им информацию, если ничего не нарушали.
    Объяснить ситуацию. Судя по тексту сообщения, на свой счет вы получили средств меньше, чем указывали в заявке, или в milestones. Исходя из этого, видимо, они подозревают что Вы сделали скидку клиенту в обмен на хороший отзыв.

    У меня была сходная проблема на Elance: Elance заблокировал аккаунт, как решить?, однако она не была связана с отзывами.

    По поводу денег, скорее всего они дадут вывести, но только после того, как примут окончательное решение по Вашему аккаунту, блокировать его или нет.
    А до тех пор, Вы либо им предоставляете информацию, либо признаетесь что нарушили что-то, чтобы они быстрее Вас заблокировали и дали возможность вывода.

    К сожалению их Risk Management Team очень хорошо умеет делать покерфейс на любые доводы, поэтому придется-таки доказать что Вы не верблюд.
    И да, Вам не показалось, все эти письма - шаблонный текст, они присылают это всем, и скорее всего Вашему клиенту тоже)
    Ответ написан
    1 комментарий
  • Как сделать видеостримминг на сайте?

    @jacob1237
    Странно что Вы будучи Senior Developer'ом задаете такие вопросы (ведь статей про стриминг очень много).
    Посмотрите в сторону Wowza Streaming Engine / Wowza Streaming Cloud.

    На самом деле в Вашем варианте потребуется не только специалист, который может все настроить, но и разработчик (команда).
    Ваш сервис, судя по описанию, примерно повторяет архитектуру smotri.com, можете поискать в интернете записи с конференций, например блог самого разработчика smira.ru/posts/20091013hl-2009-twisted-framework.html
    Они там используют самописное ПО для стриминга (pyFMS), но это RTMP протокол, а Вам наверное может захотеться HLS, т.к. это стильно, модно, молодежно)
    smira.ru/posts/20081202video-broadcast-delivery.html

    Короче копайте примерно в этом направлении.
    Ответ написан
    Комментировать
  • Где найти перевод соглашения Freelancer.com?

    @jacob1237 Автор вопроса
    Пока никто не отвечает, предлагаю скооперироваться финансово, заказать перевод и возможно выложить его в публичный доступ, т.к. стоить такое будет примерно от 10 000 руб., для тех кто на постоянке там работает это нормально, а кому просто один раз вывести - дороговато получается.
    Кто что думает по этому поводу?
    Ответ написан
  • Elance заблокировал аккаунт, как решить?

    @jacob1237 Автор вопроса
    В общем все разблокировали. Пришлось поднапрячь клиента, чтобы он тоже прошел все эти процедуры. Видимо подозревали в накрутке рейтингов, либо в том, что я логинюсь в другие аккаунты (заказчик из той же страны что и я, возможно GeoIP базы кривые у них).
    В общем смешанные чувства остались у меня от этого случая. С одной стороны я их понимаю, но с другой стороны, лочить деньги фрилансера как-то не комильфо. Если у кого-то висят кредиты, то так и влететь недолго, при этом сотрудники Elance покажут покерфейс и добавят, что "Мы Вас понимаем, но ничем не можем помочь".

    Ваши копейки там никому не нужны.

    Ну может для Elance да, но для меня 2K$ не совсем копейки, поэтому как-то печально это все.
    Ответ написан
    Комментировать
  • Как правильно найти подстроку в строке?

    @jacob1237
    Проверьте входные данные, а именно - что конкретно содержит переменная line.
    Проблема может быть в том, что сервер отдает этот файл в сжатом с помощью gzip виде.
    Если так, то urlretrieve не распаковывает gzip самостоятельно и Вам придется это делать вручную.
    Ну и возможно что-то с кодировкой.

    И для парсинга HTML я бы посоветовал lxml, а не BeautifulSoup, т.к. конкретно с Вашей задачей прекрасно можно справиться используя XPath, который в BeautifulSoup не поддерживается.

    С XPath Ваша задача решается в несколько строк (XPath примерный, поэтому подгоните его под свой вариант):
    import lxml.html
    
    urlibp = 'qqq.www.eee.rrr/index.htm'
    
    doc = lxml.html.parse(urlibp)
    print doc.find("//td/b[.='Remote Temperature']/../following-sibling::td[1]/table/tr[1]/td[1]/b").text
    Ответ написан
    Комментировать