• Странный дизайн Rust?

    Rust это не C++. Почему он должен брать термины из C++?

    В Java вон тоже ссылки - это указатели в терминологии C++.

    Более того, ссылка от указателя отличается лишь абстракцией. В памяти это будут одинаковые ячейки, содержащие адрес.
    Ответ написан
    Комментировать
  • Зачем и где именно писать @Override?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Писать перед теми методами, которые переопределяете. Этим вы сигналите компилятору, что хотите не определить новый метод, а именно переопределить. Компилятор будет проверять наличие помеченных методов в базовом классе и выдавать ошибку, если их нет.
    Ответ написан
    Комментировать
  • Как правильно выбрать тип поля для моей задачи?

    @vilgeforce
    Раздолбай и программист
    Определяете какие там будут данные храниться и выбираете под них соответствующий тип, не?
    Ответ написан
    Комментировать
  • Как составляют бизнес план и составляет ли его обычно исполнитель проекта, или для этого стоит нанять опытных специалистов?

    @four4
    За вас никто не сделает.
    Лучше вас никто не сделает. Вы кровно заинтересованы.

    Про инвесторов:

    Ну вот есть у меня (допустим) идея и рабочий прототип определенной программы/сервиса. И мне нужен инвестор. Инвестору нужен подробный бизнес-план, т. к. за ляля-тополя со мной работать никто не будет )


    Настоящему инвестору интересен не прототип, а уже работающий (хотя бы на минимальных оборотах) проект.
    На прототип вы будете искать инвестора сто лет.

    Есть такие "типа инвесторы" - люди без опыта в предпринимательстве и инвестировании, но с лишними деньгами (типичный пример - неожиданное наследство). Возможно, удастстся с них чего выцыганить. Но они и самые дурные - им кажется, что отдав 100 000 рублей, уже через 3 месяца можно получить обратно 500 000 рублей.

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

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

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

    @unity_ultra_hardcore
    У нас используется следующая схема таблиц:
    Table "public.social_account"
       Column    |              Type              | Modifiers
    -------------+--------------------------------+-----------
     user_id     | integer                        | not null
     network     | character varying(255)         | not null
     external_id | character varying(255)         | not null
     created_at  | timestamp(0) without time zone | not null
     updated_at  | timestamp(0) without time zone | not null
     id          | uuid                           | not null
    Indexes:
        "social_account_pkey" PRIMARY KEY, btree (id)
        "unique_social_account" UNIQUE, btree (network, external_id)
        "idx_f24d8339a76ed395" btree (user_id)
    Foreign-key constraints:
        "fk_f24d8339a76ed395" FOREIGN KEY (user_id) REFERENCES app_user(id) ON DELETE CASCADE


    То есть для каждой привязки хранится запись, в которой содержится user_id, название соцсети (google/vk/facebook/etc) и id этой соцсети (у всех произвольный формат).
    Таким образом, когда пользователь аутентифицируется через одну из этих соцсетей, сначала ищется user_id по связке external_id + network. Если user_id найден - аутентифицируем текущего пользователя как этот user_id. Если нет, получаем от соцсети email и по нему ищем пользователя в таблице пользователей. Если нашли, то создаем запись в social_account и аутентифицируем юзера. Если не нашлось ничего (первый визит), то создаем пользователя и создаем запись в social_account.
    Ответ написан
  • На что обратить внимание когда создаешь файлообменник?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    1. Проверка ожидаемого/разрешенного "тела" закачиваемого файла
    2. Запрет на запуск из директорий хранилища для всех
    3. Шейпинг для разделения полосы пропускания
    4. ACL по доступам, общему кол-ву файлов, списку расширений, макс. объемам на папку и на файл.
    5. Распределенная система организации файловой структуры на несколько СХД
    Ответ написан
    Комментировать
  • Как реализовать запуск PHP кода из PHP и что делать если на хостинге отключены функции типа system() (необходимо компилить cpp)?

    nazarpc
    @nazarpc
    Open Source enthusiast
    Я бы рекомендовал взять выделенный сервер (виртуальный либо физический), поставить туда Docker, и запускать код ИСКЛЮЧИТЕЛЬНО в одноразовом чистом изолированном окружении с разумными таймаутами и ограничениями ресурсов.
    Ответ написан
    2 комментария
  • Как эффективно использовать память сервера?

    sim3x
    @sim3x
    Дайте совет, куда можно пристроить память с профитом :)
    посмотри на желтенькую полосочку в htop - память уже давно утилизирована правильно под кеши

    Так что не трогай ничего
    Ответ написан
    2 комментария
  • Как и когда вы повышаете квалификацию?

    TheCreator
    @TheCreator
    Бездельник
    "Рассматривал вариант ухода на удаленку - это практически 100% понижение дохода т.к. конкурировать придется с ребятами из регионов, у которых запросы ниже. Плюс смена работы - это синица в руках и журавль в небе. С имеющимися кредитами это опасно. Не хотелось бы подставлять семью. "

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

    Вы поймите простую вещь - сейчас вам плохо, и сильно хуже быть не может. Ну останетесь вы без работы и без денег - что, не наковыряете 500 долларов в месяц случайными подработками? Не урежете расходы до минимума? Зато появится мотивация что-то делать. И это плохой расклад, а ведь может быть "журавль в небе" всё-таки случится.
    Ответ написан
    Комментировать
  • Как правильно спроектировать "космический корабль"?

    Используй систему статов. Например у тебя есть класс

    enum StatType {
       speed;
       power;
       mobility;
    }
    
    class StatManager {
        // Выставляет начальное значение стата
        void setStateBase(StatType type, float value);
       // Добавляет новый модификатор для стата
        void addStatModf(StatType type, StatModf modf);
        // Удаляет модификатор стата
        void removeStatModf(StatType type, StatModf modf);
        
        // Возвращает значение стата со всеми повешенными на него StatModf 
        Float getStateValue(StatType type);
    }
    
    enum StatModfType {
       set;
       add;
       mult;
    }
    
    class StatModf {
       var StatModfType type; // как именно модификатор влияет
       var Float value;  // значение с которым он влияет
    }


    При выполнении getStateValue перебирай все модификаторы для этого стата на базовое значение.
    Рекомендую применять модификаторы в порядке их типа (StatModfType) вначале set потом mult, потом add а не в порядке добавления. Тут самый простой вариант предложен, подумай и переработай под свои нужны.
    Ответ написан
    1 комментарий