• Как организовать выгодный хостинг на AWS (или в другом месте)?

    @MechanID
    Админ хостинг провайдера
    Вы можете взять какоенибуть харинлище типа https://www.hetzner.com/storage/storage-box
    10 терабайт - 40 евро в месяц, доступ но https есть правда не более 10 коннектов одновременно. Или примонтируете его через samba.
    Ответ написан
    3 комментария
  • Как организовать выгодный хостинг на AWS (или в другом месте)?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    Если смотрите все таки в сторону AWS - то S3 в принципе подойдет для хранения фото, с оговорками.
    - Хранить в s3 - дёшево.
    - Часто забирать - дорого. Хрен бы с ними с фотографиями, если вы не хотите конкурировать с сервисами вроде flickr - у вас не будет много трафика, но есть еще боты.. Если сайт будет в паблике - вам задергают ваш S3 (точнее ваш кошелек) вусмерть. Поэтому - как в комментарии к вопросу уже посоветовали - в паблике надо показывать только миниатюры и желателен следующий пункт:
    - Для опять же уменьшения стоимости S3 запросов, очень желательно городить кеширующий слой (nginx какой нибудь на EC2 - с EC2 цена более предсказуема, хотя и там есть ньюансы)
    - Ну и на вашем месте я бы полноразмерные фотографии убрал бы в какой-нибудь раздел требующий логина, хоть бы даже и через google. Хотя тут уже возникла бы другая идея : что вам мешает на каком нибудь google drive хранить те самые фото, предоставлять доступ по email (адрес может быть и не на гугле, к примеру) и использовать любой хостинг(да хоть тот же AWS) для работы с имеющимся (google drive) хранилищем и показа миниатюр сгенерированных оттуда, для быстрой ориентации.
    Цена на drive будет более предсказуема.

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

    Sanasol
    @Sanasol
    нельзя просто так взять и загуглить ошибку
    https://toster.ru/answer?answer_id=1403637#answers...

    1-4тб это ДО ~2500 в месяц если брать выделенный сервер в каком-нибудь SoYouStart.

    Где вы нашли космические цены-то? В Амазоне(гугле, яндекс.облаке) по сравнению со своим дедиком и будет космос.
    Ответ написан
    3 комментария
  • Где брать дисковое пространство для сайта?

    Sanasol
    @Sanasol
    нельзя просто так взять и загуглить ошибку
    Хостинг обычно до 32гб

    С каких пор?

    VPS или VDS - очень дорогие и то, даже 1тб может не хватить

    https://poiskvps.ru/index.php?search_hdd_min=1000&...
    1-3тб - 400-1300р
    дешевле некуда.
    За 2000-3000 уже можно выделенный сервер взять целый где диск на пару терабайт.

    Как быть? Может быть есть какие-то облачные хранилища, специально предназначенные для сайтов?

    Amazon/Google/Yandex/Mail везде облака, но это самый дорогой вариант как раз будет.
    Amazon S3 ~1600 за 1 ТБ в месяц
    Ответ написан
    Комментировать
  • Почему не вычисляется значение типа Long?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Есть две взаимосвязанных причины такого поведения. Во-первых, спецификация языка, стандартизирующая факт того, что перемножение int'ов даёт int:

    When an operator applies binary numeric promotion to a pair of operands, each of which must denote a value that is convertible to a numeric type, the following rules apply, in order:
    1. If any operand is of a reference type, it is subjected to unboxing conversion (§5.1.8).
    2. Widening primitive conversion (§5.1.2) is applied to convert either or both operands as specified by the following rules:
      • If either operand is of type double, the other is converted to double.
      • Otherwise, if either operand is of type float, the other is converted to float.
      • Otherwise, if either operand is of type long, the other is converted to long.
      • Otherwise, both operands are converted to type int.


    After the conversion(s), if any, value set conversion (§5.1.13) is then applied to each operand.

    Binary numeric promotion is performed on the operands of certain operators:
    • The multiplicative operators *, /, and % (§15.17)
    • ...

    Во-вторых, принципы работы стековых виртуальных машин. Вот так выглядит байткод метода main:
    public static void main(java.lang.String[]);
        descriptor: ([Ljava/lang/String;)V
        flags: ACC_PUBLIC, ACC_STATIC
        Code:
          stack=4, locals=6, args_size=1
             0: ldc           #2   // int 300000
             2: istore_1
             3: getstatic     #3   // Field java/lang/System.out:Ljava/io/PrintStream;
             6: ldc           #4   // String Input days:
             8: invokevirtual #5   // Method java/io/PrintStream.print:(Ljava/lang/String;)V
            11: new           #6   // class java/util/Scanner
            14: dup
            15: getstatic     #7   // Field java/lang/System.in:Ljava/io/InputStream;
            18: invokespecial #8   // Method java/util/Scanner."<init>":(Ljava/io/InputStream;)V
            21: astore        5
            23: aload         5
            25: invokevirtual #9   // Method java/util/Scanner.nextInt:()I
            28: istore        4
            30: iload         4
            32: ldc           #10  // int 86400
            34: imul
            35: iload_1
            36: imul
            37: i2l
            38: lstore_2
            39: getstatic     #3   // Field java/lang/System.out:Ljava/io/PrintStream;
            42: new           #11  // class java/lang/StringBuilder
            45: dup
            46: invokespecial #12  // Method java/lang/StringBuilder."<init>":()V
            49: ldc           #13  // String Light distance:
            51: invokevirtual #14  // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            54: lload_2
            55: invokevirtual #15  // Method java/lang/StringBuilder.append:(J)Ljava/lang/StringBuilder;
            58: ldc           #16  // String  km.
            60: invokevirtual #14  // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            63: invokevirtual #17  // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
            66: invokevirtual #18  // Method java/io/PrintStream.println:(Ljava/lang/String;)V
            69: return
         LocalVariableTable:
           Start  Length  Slot  Name   Signature
               0      70     0  args   [Ljava/lang/String;
               3      67     1 lightSpeed   I
              39      31     2 calculatedDistance   J
              30      40     4 runningTime   I
              23      47     5 input   Ljava/util/Scanner;

    Интересны смещения с 30-го по 38-е. В стек загружаются два целых числа, перемножаются операцией imul, в результате которой с вершины стека убираются исходные два числа и помещается результат их перемножения, загружается ещё одно, ещё раз перемножаются, потом значение на вершине стека приводится к long операцией i2l и сохраняется в переменную calculatedDistance. Естественно, если результат работы imul окажется слишком большим, то произойдёт переполнение.

    Исправить это легко, достаточно изменить тип константы:
    calculatedDistance = runningTime * 86400L * lightSpeed;

    Тогда компилятор выберет другие опкоды, оперирующие long'ами:
    30: iload         4
    32: i2l
    33: ldc2_w        #10  // long 86400l
    36: lmul
    37: iload_1
    38: i2l
    39: lmul
    40: lstore_2
    Ответ написан
    2 комментария
  • Как вынести файлы настроек из jar?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    1. Написать код так, чтобы ресурсы искались сначала в корне CLASSPATH, а если там не будут найдены, то в определённом подкаталоге;
    2. В определённый подкаталог ресурсов сложить файлы настроек с настройками по умолчанию;
    3. Добавить в начало заголовка class-path манифеста текущий каталог (точку);
    4. Положить файлы настроек в один каталог с jar-файлом;

    Файлы в текущем каталоге будут найдены первыми и перекроют файлы с настройками по умолчанию, запакованные в jar.
    Ответ написан
    Комментировать
  • Как подбирать подобные интересные цвета?

    PiCoderman
    @PiCoderman
    Не совсем в тему, но может поможет
    https://color.adobe.com/explore/?filter=most-popul...
    Ответ написан
    Комментировать
  • Как подбирать подобные интересные цвета?

    @Camaro67
    Помог? - "Отметить решением"
    Подбор цветов происходит на вкус дизайнера, у которого он либо есть либо его нет. Если нет чувства прекрасного, то его нужно развивать (если это возможно) :)
    Ответ написан
    1 комментарий
  • Как работать в фотошопе на ретина?

    webinar
    @webinar
    Учим yii: https://youtu.be/-WRMlGHLgRg
    Интересная у Вас история. Вы решили придумать себе геморрой и вместо того, что бы не брать мак, думаете как дальше жить с этим гемороем?
    Не проще ли за эти деньги взять какой-нибудь dell xps и второй монитор к нему? Это удобно. Но к сожалению в комплекте нет понтов. И докупить нельзя.
    Ответ написан
    6 комментариев
  • Как преобразовать строку JSON в DOM элемент?

    rockon404
    @rockon404
    Frontend Developer
    Ответ написан
    Комментировать
  • Как в Bootstrap создать многоуровневое меню или список?

    https://bootsnipp.com

    Тут поищите примеры
    Ответ написан
    Комментировать
  • Как с помощью CSS сделать наклонные края?

    Ankhena
    @Ankhena Куратор тега CSS
    Нежно люблю верстку
    Множественный фон с градиентом - решение в один div: https://jsfiddle.net/2oLv9zmw/
    background: linear-gradient(5deg, #fff 0, #fff 100px, transparent 101px),
      linear-gradient(to bottom, #ffc826, #9f19ff, #00aee7);

    Угол наклона, цвета, место перехода из белого в цветной - на ваш вкус.
    Ответ написан
    Комментировать