• Как делать scaling сайту в случае нагрузки?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Использовать autoscaling, основываясь на параметрах утилизации ресурсов. Например, при утилизации процессора или памяти в 75% добавляем ещё один инстанс в балансировщик и распределяем так нагрузку.

    Почитайте как это работает в облаках
    Ответ написан
    Комментировать
  • На чем написать CRM?

    @malbaron
    CRM - это Customer Relationship Management, взаимоотношения с заказчиками.
    При чем здесь "управление учебным процессом"???

    CRM, это, например, ведете вы сделку, к которой нужно 100 согласований на разных уровнях - вот CRM и позволяет вам не забыть.
    Или, к примеру, не забыть поздравить любимого крупного заказчика с днем рождением; прочитать в CRM, что он любит Спартак и подарить ему билеты на "Спартак - Челси" - это тоже можно назвать функцией CRM.

    Прямого отношения к управлению собственным учебным процессом это не имеет.
    Только косвенное.

    =========================

    Делается серверное API.
    К которому потом запросто подключается веб-клиент, мобильный клиент и десктопный клиент.
    Ответ написан
    3 комментария
  • Реализация или имитация select'а c много строчными option-пунктами выбора?

    IonDen
    @IonDen
    JavaScript developer. IonDen.com
    Любой Select-плагин это умеет: https://goo.gl/kZ46Fl

    Конкретно ваш скриншот вот из этого плагина:
    selectize.github.io/selectize.js
    Ответ написан
    2 комментария
  • Как хранить и отображать графы?

    sim3x
    @sim3x
    Графы довольно специфичная вещь
    Графовые СУБД еще более специфичная

    Шанс, что тебе на практике попадется реальная задача, которую можно решать с использованием граф субд крайне мала

    Если тебе ну вот прям сильно-сильно хочется сделать на такой бд хоть что-то, то

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

    - сделать задачу на всех существующих граф СУБД и сравнить результат и трудозатраты в сравнении с первым подходом
    Ответ написан
    Комментировать
  • Можно ли в mysql искать значения в полях varchar если передано int значение?

    qonand
    @qonand
    Software Engineer
    привести на строне mysql?
    SELECT * FROM offers WHERE `name` = CONVERT(123, char)

    хотя если не ошибаюсь то MySQL при запросе
    select * from table where uid=123
    не выдаст ошибку, а найдет записи. Правда если у Вас записи будут вида "123", "123abcd", "456" то он вернет две записи и "123" и "123abcd",
    Ответ написан
    1 комментарий
  • В чем целесообразность использования SPA, если контент в них не индексируется?

    IonDen
    @IonDen
    JavaScript developer. IonDen.com
    Изоморфный фреймворк - это как раз то что нужно для индексации. Благодаря рендерингу страниц на стороне сервера, поисковики увидят все что нужно. Кроме того, современные поисковики вполне себе учатся понимать SPA-сайты, вот, например тот же Яндекс рассказывает как это сделать. Google предпочитает Progressive enhancement

    Зачем вообще нужно? Затем чтобы сайт работал как приложение (точно так же, как на смартфонах и прочих девайсах). В ситуациях, когда ваш продукт это не только веб-сайт, но еще и куча других устройств, это позволит вам сильно упростить серверную часть. 1 сервер и Rest API для всех, вместо того, чтобы делать отдельно сайт со своим собственным сервером, и отдельно инфраструктуру под мобильные приложения.
    Ответ написан
    Комментировать
  • Как округлить значение переменной javascript?

    webinar
    @webinar
    Учим yii: https://youtu.be/-WRMlGHLgRg
    Округляться могут только цифры, у Вас видимо строка, поэтому перед округлением сделайте из строки число.
    Ответ написан
    Комментировать
  • Где кто видел книгу с максимально подробным=простым описанием с++?

    more_cry
    @more_cry
    Пишу веб-проекты не до конца
    Можно взять Р. Лафоре. Если он не объяснит подробно, то я уже и не знаю кто сможет.
    Ответ написан
    Комментировать
  • Где кто видел книгу с максимально подробным=простым описанием с++?

    @Free_ze
    Пишу комментарии в комментарии, а не в ответы
    edinorog.jpg
    Ответ написан
    Комментировать
  • Слайдер, который выводить все картинки из определенной папки?

    SilenceOfWinter
    @SilenceOfWinter
    та еще зажигалка...
    js не умеет работать с файловой системой
    Ответ написан
    6 комментариев
  • Какая есть графическая оболочка для Ubuntu с хорошим дизайном)?

    zooks
    @zooks
    Frontend
    Unity, Gnome, KDE, XFCE - выбирайте любую оболочку. Лично я использую XFCE (Xubuntu).
    Еще можно взять Linux Mint - там уже все настроено.
    Ответ написан
    2 комментария
  • Как создать архитектуру на js?

    IonDen
    @IonDen
    JavaScript developer. IonDen.com
    Использовать фреймворк
    emberjs.com
    или
    https://angularjs.org/

    Они решат за вас все ваши вопросы с роутерами, модулями и прочим.
    Ответ написан
  • Чего то я не понял с функциями из библиотеки string.h?

    @abcd0x00
    Все функции из пакета возвращают число int.

    Во-первых, string.h - это не пакет, а набор объявлений для группы функций из стандартной библиотеки функций языка C. То есть библиотека включает в себя вообще все функции, а файлы с объявлениями позволяют подключать (объявлять) их только нужными группами.

    Во-вторых, не все функции для работы со строками возвращают int. Это ты сам придумал, где-то что-то перепутав. Строковые функции бывают разными - и возвращающими int, и возвращающими char *, и возвращающими size_t. Функция strstr() возвращает char * - указатель на начало найденной подстроки, либо NULL, если подстрока не найдена.

    Если тебе нужно определить позицию найденной подстроки в строке, то нужно из адреса этой подстроки вычесть начало всей строки.
    Ответ написан
    Комментировать
  • Как установить автоматом плагины gulp.js?

    @YNile
    JS Developer
    npm i
    Ответ написан
    Комментировать
  • Как заставить пользователя зарегистрироваться?

    IonDen
    @IonDen
    JavaScript developer. IonDen.com
    Вообще это не обязательно. Не нужно так сильно заморачиваться на том, что пользователь не зарегистрировался.
    Многие сайты позволяют пройти весь цикл действий без регистрации и ничего. Это нормальная ситуация.

    Так что прежде всего вы должны поставить себе вопрос, зачем это нужно?

    Например регистрация позволит получить пользователю постоянную скидку 3%. Нарисуйте небольшой баннер, привлеките внимание, расскажите пользователям об этом бонусе. Регистрироваться просто так никто не будет. Вам ведь нужны настоящие хорошие регистрации, а не мусорные одноразовые?
    Ответ написан
    Комментировать
  • Как расшифровать cookies?

    @MiiNiPaa
    Вот там есть строчка значений value - это какой-то зашифрованный хэш?
    Это строка, которую положил туда сервер.
    Что вообще значат все эти сокращения ?
    Как решит сервер.

    Куки это фактически key-value пары. Хранить там можно что угодно, от флагов (show_ads=1), до строк, хешей, зашифрованных данных и просто мусора.

    Если вы хотите добраться до кук извне браузера или изменить куки другого сайта, то у вас проблемы: браузеры делают всё, чтобы не допустить этого в целях безопасности.
    Ответ написан
    8 комментариев
  • Запуск PhpStorm с удаленного сервера?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Может у вас действительно очень специфический use-case, но IDE на сервер, как правило - хреновая идея.
    Ответ написан
    Комментировать
  • ClassName::functionName или objectName.functionName?

    Nipheris
    @Nipheris Куратор тега C++
    Отвечу без догадок.
    > Я понимаю что cout << objectName.functionName означает, что мы выводим возвращаемые данные функции , которая принадлежит объекту класса(оперирует данными объекта).
    Это хорошо соответствует истине, добавить в общем-то нечего.

    > Но вот почему мы иногда использует cout << ClassName::functionName вместо первого варианта я не могу понять...
    "::" это оператор расширения области видимости. В языке C++ различные сущности могут быть объявлены "внутри" других сущностей. Например, функции внутри классов, как в вашем случае - тогда они становятся методами. Классы, функции и переменные могут объявляться внутри namespace-ов. Классы могут объявляться внутри других классов. Классы даже могут объявляться внутри определения функций.
    Во всех этих и других случаях, можно говорить о двух именах сущности - коротком, которое уникально в рамках родительской сущности, и о полном, по которому к сущности можно обратиться из любого места в программе. Например,

    namespace MyLibrary {
        namespace UI {
            class Widget {
             ///
            };
            class Controller {
            private:
                Widget *widget; // Здесь Widget будет видно по короткому имени
            };
        }
    }
    
    namespace App {
      MyLibrary::UI::Widget *w; // А вот здесь уже нужно использовать полное
    }

    Это правило касается всего - и классов, и функций, и переменных. И вот как раз для построения полного имени и нужен оператор "::". Грубо говоря, он "открывает" указанную вами сущность и после него вы можете указать имя вложенной сущности. MyLibrary::UI::Widget - открыли неймспейс MyLibrary, в нем взяли и открыли неймспейс UI, в нем взяли сущность Widget. В нашем случае Widget это класс, поэтому мы можем использовать его в качестве типа, например объявить указатель на его объект. Если бы у нас была переменная mainWidget в том же UI, мы бы могли написать так:
    MyLibrary::UI::mainWidget = new MyLibrary::UI::Widget(); // создали объект виджета в куче и поместили указатель на него в переменную-указатель


    С точкой тут вот в чем дело. По умолчанию функции внутри классов считаются методами ОБЪЕКТА (экземпляра этого класса), и, как вы правильно сказали, оперируют с данными объекта, а значит они НЕ МОГУТ быть вызваны без указания того объекта. Иными словами, они не самостоятельны, для их вызова всегда нужно указывать объект, с которым метод будет работать. Можете представлять себе, что у всех методов экземпляра есть неявный параметр this, который, хоть и не пишется в списке, тем не менее всегда присутствует, и его значение надо задавать. Оператор точка - это и есть способ задать значение "this" - т.е. указать, для какого объекта вызывается метод.

    Совсем другое дело - static-методы. По сути это самостоятельные функции, просто объявлены внутри класса, и имеют доступ к его private-сущностям. Поэтому для их вызова достаточно указать полное имя, используя оператор "::", например Widget::create или MyLibrary::UI:Widget::create, что в принципе одно и то же. Более полная запись нужна, когда вы находитесь в другой области видимости, и просто "не видите" нужный идентификатор. Или же если у вас в текущий области НЕСКОЛЬКО идентификаторов с одинаковым именем (конфликт имен), и компилятору необходимо однозначно понять, о какой сущности вы говорите.

    Касательно случая, который вам непонятен - про использование :: в составном имени метода - тут все просто. Т.к. вы собираетесь не ВЫЗВАТЬ метод, а дать его ОПРЕДЕЛЕНИЕ, вам не нужна точка, т.к. точка это синтаксис вызова метода для конкретного объекта. Вам лишь нужно построить ПОЛНОЕ имя для метода, находящегося внутри класса, чтобы компилятор понял, ЧЕЙ код вы будете писать в фигурных скобках. А полное имя строится с помощью двоеточия, поэтому и получается ClassName::methodName { код метода }. Просто methodName вы написать не можете, т.к. в cpp-файле вы находитесь УЖЕ НЕ ВНУТРИ определения КЛАССА, и компилятор посчитает, что вы объявляете и описываете совсем другую, свободную функцию methodName, совершенно не имеющую отношения к методу methodName в классе ClassName.

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

    Если остались вопросы - задавайте. Запомнить проще всего так: точка - это обращение к члену объекта структуры или вызов метода (т.е. слева от точки всегда стоит объект), а "::" - это способ составления ИМЕНИ какого-либо элемента вашей программы - класса, функции, метода, переменной и т.д.
    Ответ написан
    1 комментарий