• Как увеличить количество Socket.IO подключений?

    Sanasol
    @Sanasol
    нельзя просто так взять и загуглить ошибку
    При большем объеме нода падает...


    Может быть начать с того что почитать ошибку и узнать почему падает, а не просто пытаться от балды пилить что-то?
    Может у вас там портов максимум 4к на сервере стоит, а вы совсем не туда копаете.
    Ответ написан
    Комментировать
  • Где найти человека способного быстро и качественно научить основам JS за деньги?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Чувак, идешь сначала сюда https://learn.javascript.ru/
    Пока Илья с товарищами по команде тебе надоедают, учишь английский.
    Потом переключаешься на бритоголового https://egghead.io/
    Потом, если покажется мало, начнешь курить спеки. К этому времени уже освоишь гугл и сможешь сам их найти.

    Лучшие практики SPA

    1. KISS - использовать только то, что действительно нужно. Например вам не нужен Javascript, если нужно просто сделать выпадающее меню. Достаточно просто CSS. Тоже самое применяется и к JS, вам не нужен Angular, если есть просто форма обратной связи. Такая задача решается на vanillajs.
    2. Использование фреймворков, например bootstrap, foundation и т.д. Обычно из них берется типография и сетки. Иногда формы. Я обычно беру bootstrap-stylus и собираю из него.
    3. Critical rendering path - минимальный набор CSS, который требуется для отображения первого экрана страницы, который потом будет встроен внутрь html-файла. Пример.
    4. Применение систем сборки, например gulp. Основной смысл заключается в том, что сначала вы дробите SPA на множество мелких компонентов/модулей/блоков. Затем унифицируете их. В итоге получается набор небольших файлов. Затем из этого набора собирается два больших файла (css, js) и они прогоняются через оптимизатор и минификатор.
    5. Использование CDN. CDN позволяет ускорить загрузку для часто-посещаемых и популярных страниц за счет уменьшения времени доставки контента. Особенно актуально для SPA, поскольку они представляют собой статический контент, который можно кэшировать без последствий.
    Системы сборки

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

    Модули AMD, CJS, UMD

    Они предназначены для управления зависимостями. Например, когда у вас есть два десятка компонентов и один зависит от другого. Суть их в том, чтобы просто объявлять зависимости в компонентах используя тот или иной способ описанный в документации. Начните отсюда.

    Сборка и подключение css

    Здесь и так ясно, что нужно сначала освоить сборщики. postcss - это когда обычный css скармливается фильтру, который разбирает его, добавляет префиксы к свойствам, оптимизирует наименования цветов и т.д. Убирает дублирующие свойства.

    В целом очень толково про оптимизацию расписано здесь https://developers.google.com/web/?hl=ru
    Ответ написан
    4 комментария
  • Действительно ли новая asp.net core 1.0 быстрее в 8 раз Node.js?

    Jump
    @Jump
    Системный администратор со стажем.
    Правда ли, что новый Mercedes-AMG GT ездит в 8 раз быстрее Камаза?
    Конечно правда. По асфальту в легкую.
    Ну конечно если асфальт хороший, а не гравийка ухабистая.
    К тому же злые языки утверждают что Mercedes-AMG GT вообще не ездит. Реально пробовали - насыпали в салон 20тонн гравия, а он собака ехать не хочет.
    Ответ написан
    1 комментарий
  • Выбор базы данных для админки?

    Express777
    @Express777
    sqlite

    Мощь SQL, который можно хранить в самом обычном файле.
    Ответ написан
    1 комментарий
  • Что выбрать с++, с или go для алгоритма?

    mirrr
    @mirrr
    Программист и просто хороший человек
    В С и С++ я начинающий, буду учиться по-ходу. Но 12 лет в Php+JS.

    Нет времени объяснять, используйте Go!
    Ответ написан
    1 комментарий
  • Что выбрать с++, с или go для алгоритма?

    @nirvimel
    А я подобные числодробилки пишу на Python (не спешите смеяться) с применением Numba.
    700 млн * 64бит == 5.6Гб памяти. У меня столько нет, поэтому я возьму половину.
    Итак, выборка 100 тысяч 64-битных значений из 350 миллионов пролетает за 0.315 секунд, значит с 700 миллионами я почти уложился бы в 0.6 секунд. Все это на довольно дешевом Pentium.
    Это явно предел производительности железа и никакие ассемблеры не смогут ускорить решение этой задачи (более, чем на несколько процентов).
    import numba as nb
    import numpy as np
    import time
    
    max_value = np.iinfo(np.intc).max
    
    
    @nb.jit(nopython=True)
    def search(src, dst):
        src_size, = src.shape
        dst_size, = dst.shape
        factor = max_value / src_size * dst_size
        dst_ptr = 0
        for src_ptr in range(src.size):
            value = src[src_ptr]
            if value < factor and dst_ptr < dst_size:
                dst[dst_ptr] = value
                dst_ptr += 1
    
    
    def search_and_time_it(from_size, to_size):
        src = np.random.randint(max_value, size=from_size)
        dst = np.empty((to_size,))
        t1 = time.time()
        search(src, dst)
        t2 = time.time()
        print('search {0:,d} values from {1:,d} takes {2:.3f} seconds'.format(to_size, from_size, t2 - t1))
    
    
    # search 100 000 values from 350 000 000
    search_and_time_it(350 * 1000 * 1000, 100 * 1000)

    Результат:
    search 100,000 values from 350,000,000 takes 0.315 seconds
    Ответ написан
    4 комментария
  • Что выбрать с++, с или go для алгоритма?

    uvelichitel
    @uvelichitel Куратор тега Go
    habrahabr.ru/users/uvelichitel
    Go изначально concurrent. Из коробки лучше масштабируется. Например для двух ядер что нибудь вроде
    var Data []uint64             //700 млн 64бит uint значений
    var Respond []uint64      //значения около 100.000 на каждый запрос
    var res chan uint64         //канал передачи годных значений
    func TakeFromData(DataPart []uint64, res chan uint64){  //функция фильтра которой передается часть данных и канал годных
           for _, val := range DtaPart{
                  if Good(val){
                           res <- val           //пишет годные в канал
                  }
          }
    }
    go TakeFromData(Data[:len(Data)/2], res)    //запускается конкурентно в отдельном потоке
    go TakeFromData(Data[len(Data)/2:], res)    // несколько экземпляров
    for val:=range res{                    //агрегатор в своем потоке читает из канала по мере фильтрации
        Respond:=append(Respond, val)            //и формирует результат
    }
    Конечно можно написать multithreaded на С, только мороки будет больше.
    Ответ написан
  • Практическое использование схем в Postgresql - когда они нужны?

    В целом, понимайте схемы как пространства имен. Схемы помогают логически организовать структуру БД. Различные приложения или компоненты приложений внутри себя имеют более высокую связность, чем между собой, тоже самое и с данными в БД - часто таблицы сами по себе организуются в логические группы, причем внутри группы связей довольно много (внешние ключи, какие-то общие хранимые процедуры и т.д.), а между этими группами - мало или нет вовсе.

    Важно понимать, что различные БД плохо подходят для логического группирования, т.к. разбиение по базам данных нужно скорее для администраторов, а не для приложений. Плюс, в большинстве СУБД, где существует понятие схемы, возможно ставить внешние ключи на таблицы в другой схеме, но нельзя на таблицы в другой БД. Иными словами, отдельные БД удобно создавать тогда, когда вы разделяете данные абсолютно не связанных приложений или сервисов. Например, складского учета и форума поддержки пользователей. С другой стороны, если вы хотите логически разделить таблицы в соответствии с компонентами одного приложения (например, корпоративный портал: 4 таблицы для поддержки авторизации, 10 таблиц для поддержки форума, еще 5 для чата со службой поддержки или отделом продаж) - то именно схемы будут удобным механизмом для этого.

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

    А что будет если несколько юзеров будут на одну public-схему коннектиться?

    Помимо того, что схема - это пространство имен, в большинстве СУБД это еще и пространство безопасности. Даже в рамках одного многокомпонентного приложения имеет смысл ставить границы безопасности для ограничения возможных потерь и разрушений в случае компрометации одного из компонент.

    Вот допустим, у вас есть отдельная схема для таблицы авторизации и аутентификации и отдельная - для корпоративного форума. Сервис авторизации у вас выполнен отдельно от форума (например, авторизация выдаёт токены пользователю, с которыми он потом может зайти на форум). С точки зрения безопаности было бы логичным выдать сервису авторизации и форума различных пользователей в базе - тогда, при взломе форума невозможно будет получить доступ к паролям в базе или изменить права на портале, подправив данные в таблице ролей. Конечно, многие СУБД разрешают ставить права на отдельные таблицы, однако схема в данном случае играет роль контейнера и позволяет проставить единые правила для всех таблиц внутри неё.

    то есть при работе в постгре предпочтительнее вместо отдельных баз делать разные схемы в одной

    Как вы уже поняли - для независимых приложений, которые могут и должны существовать отдельно друг от друга - лучше делать разные базы. Тогда администраторы смогут спокойно переносить базы с сервера на сервер, независимо их бэкапить и т.д. Для компонентов одного приложения нужно использовать схемы.

    Вот вам еще хороший пример. У вас есть приложение для ведения бухгалтерии и складского учёта на фирме. При этом сложилось так, что вам нужно хранить на одном сервере данные нескольких разных фирм (например, вы предоставляете готовый сервис под ключ нескольким клиентам). В этой ситуации более чем логично хранить данные разных клиентов в разных БД, а данные бухгалтерского и складского учета - в различных схемах в рамках одной БД конкретного клиента.
    Ответ написан
    2 комментария
  • Какую БД предпочтительней использовать для хранения и обработки больших объемов данных?

    @tovogukA
    Раз уж у вас это дипломный проект, то вникните в суть.

    Насчет того, что здесь написали про ElasticSearch и NoSQL - это просто дань моде или человек, вам ответивший, совсем не понимает о чем речь.

    Разные БД масштабируются с разным успехом. Это да. И вроде бы, RDBMS, в общем случае, масштабируются хуже, чем NoSQL. Однако, есть ситуации - когда, к примеру, NoSQL хороши, а есть и такие, где они плохи на масштабах и лучше бы выбрали RDBMS
    https://habrahabr.ru/post/231213/

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

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

    А вот это голословное - нужно брать NoSQL и точка - это ответ джуниора.
    Ответ написан
    5 комментариев
  • C каких размеров начинается верстка на bootstrap?

    delphinpro
    @delphinpro Куратор тега CSS
    frontend developer
    Принцип работы сетки бутстрапа - mobile first (сначала мобильный вид), от меньшего к большему.

    По умолчанию все колонки - 100% ширины, что эквивалентно col-xs-12, который, собственно назначать и не требуется. Далее по нарастающей. Если нам нужно изменить сетку для small-экранов, мы применяем *-sm-* классы, для средних - *-md-*, для больших - *-lg-*, для оч больших - *-xl-*. При этом можно пропускать определенные классы, если для данного размера ничего менять не нужно, по сравнению с предыдущим меньшим. Т.е. если мы хотим на мобильнике все в одну колонку, на среднем экране - в две, а на максимальном - в четыре, то можем указать только два класса, пропустив xs, sm и lg: col-md-6 col-xl-3
    Ответ написан
    Комментировать
  • Зачем в Бутстрапе используется отрицательный маргин на контейнере?

    "Вытолкать" крайние паддинги у колонок за пределы контейнера, либо за пределы колонки, в которую вложена .row
    Ответ написан
    4 комментария