Задать вопрос
  • Где лучше хранить БД? В докере или нет?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Дополню немного ответ Dr. Bacon, поскольку мне кажется он не так понял ваш вопрос, а вы, возможно, не так поняли суть проблемы.
    Под БД, например постгрес, обычно понимают две разные вещи:
    1) сами данные в файловой системе,
    2) сервер базы данных, который реализует сетевой интерфейс для работы с БД и правильным образом кладёт и читает данные в файловой системе.

    Так вот, сервер можно развернуть ка кна хостовой машине (как вы сказали "локально"), так и в докер-контейнере.
    Файлы БД можно разместить как в файловой системе контейнера, так и в локальной файловой системе, примонтированной внутрь контейнера.
    И тут полно нюансов.
    Давайте начнём с того, как правильно.
    Правиьным будет взять стандартный докер-образ сервера БД, сконфигурировать его через компоуз-файл, а размещение файлов БД примонтировать в виде отдельного volume.

    Что имел в виду Dr. Bacon. Он имел в виду, что если не монтировать файлы БД в volume, то они будут лежать внутри контейнера, а значит при его перезапуске все данные будут стерты, поскольку состояние файловой системы контейнера не принято хранить. Это одно из преимузеств докера - сделал образ унаследовав его от других образов, а потом при запуске контейнера он какждый раз как новенький.
    Ответ написан
    Комментировать
  • Как использовать форк пакета в Го?

    uvelichitel
    @uvelichitel Куратор тега Go
    habrahabr.ru/users/uvelichitel
    Всего две команды:
    подмена
    go mod edit -replace github.com/orig/pkg v1.0.0=github.com/my/fork/pkg v1.0.0

    или на локальный репо
    go mod edit -replace github.com/orig/pkg v1.0.0=/local/path/onyourmachine

    вернуть обратно когда ваш PR закоммитят
    go mod edit -dropreplace  github.com/orig/pkg v1.0.0

    А можно подправить go.mod вручную. В нём должно появиться
    replace github.com/orig/pkg v1.0.0  => github.com/my/fork/pkg v1.0.0

    В исходниках при этом менять импорты не нужно.
    Ответ написан
    1 комментарий
  • На какой связке лучше всего создавать Websocket?

    @Vitsliputsli
    Подскажите на каком языке лучше всего Websocket? чтобы он был менее затратны в производительности и более всего понятен для изучения? :)

    Go.

    прочитал, что могут быть разные утечки памяти, если на php делать

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

    Ну тут либо json (было бы хорошо, если СУБД поддерживает их нативно и можно построить индекс по содержимому json)

    Либо паттерн Entity-Attribute-Value (загугли)
    Ответ написан
    Комментировать
  • Что значит запрет на оказание IT-услуг?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Вводят какие-то санкции, где России перестанут оказывать IT услуги, что это значит? Я не смогу зайти на иностранные сайты, например YouTube, не смогу купить Windows, не смогу скачивать иностранное ПО?


    Какие-то это вполне явные.
    Могут отказывать в регистрации разработчикам из РФ, прекратить выплачивать на счета РФ - это касается тех, кто публикуется в маркетах (apple market, google market, Steam и др)
    MS прекратила работу с РФ, это значит что не будет новых ноутбуков которые официально идут в РФ с предустановленной Windows
    Нельзя будет официально обновить/купить винду и другие продукты, вплоть до закрытия аккаунтов в office365

    Насколько сильно будут закручивать гайки - неизвестно, ситуация меняется.
    Насколько долго - знает только один неадекватный человек.
    Ответ написан
    Комментировать
  • Почему apt-get не находит пакет polipo?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Polipo ceased to be maintained on 6 November 2016 due to the increasingly widespread use of encryption (i.e. HTTPS) making caching proxies obsolete.

    Так что только самостоятельно собирать из исходников и самостоятельно бороться со всеми проблемами при такой сборке.
    Ответ написан
    Комментировать
  • Почему apt-get не находит пакет polipo?

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    Почему бы не загуглить, в каких версиях Убунты есть интересующий вас пакет?

    https://packages.ubuntu.com/search?keywords=polipo
    Ответ написан
    4 комментария
  • В каких случаях логичней чтобы получить половину умножать на 1/2, а в каких делить на 2?

    @res2001
    Developer, ex-admin
    Есть такие микроконтроллеры, где нет аппаратного деления. Оно там реализовывается программно и работает оооочень долго. Вот прям заметно дольше. И если деление на константу идет в цикле, то в таком случае выгоднее один раз перед циклом вычислить 1/2, а затем умножать на результат деления. 1/2 тут для примера, конечно.
    С подобными процами лично сталкивался и был неприятно удивлен фактом такой просадки производительности на делении.
    В общем случае, даже на современных настольных процах от интел или амд операция деления выполняется дольше умножения. Счет идет на несколько процессорных тактов. Иногда это может играть роль.

    Если же речь о целочисленном делении на 2, то тут эта операция заменяется сдвигом вправо на 1 бит, что работает быстрее и умножения и деления. Впрочем подобные вещи компилятор сам в состоянии сделать при включенной оптимизации.
    Ответ написан
    Комментировать
  • Тип с точностью до 4 знаков C++?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    Есть. Называется int. Вам надо хранить количество десятитысячных в числе. Иными словами, вы вместо x храните в int x*10000. При выводе делите на 10000 (и установите выводить 4 знака).

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

    Upd: И вообще, раз уж разговор о C++, то можно реализовать свой класс. Там можно даже отдельно хранить целую часть и 4 знака после запятой. Если вам встроенной точности int/int64_t не хватает. Все математические операции можно переопределить и работать, как со встроенным типом. Вообще, по-умному, это называется fixed point numbers.
    Ответ написан
    Комментировать
  • Где разместить домен для переадресации на основной сайт?

    не нужно его нигде размещять. размести его там же где и твой сатйт aliase (псевдоним,зеркало) и все
    так в коде
    ServerName test1.loc
      ServerAlias test2.loc www.test2.loc www.test1.loc

    или в веб панели есть место где можно его добавить
    isp8.png
    на скриен видешь где домены, просто проииши на этом же днс сервере новый домен
    А но отдельный сайт не создавай.
    в результате у сайта появится зеркало
    ну и в .htaccess просто поставь редирект.
    Ответ написан
    2 комментария
  • Перенаправление 80 http на 444 https?

    @dronmaxman
    VoIP Administrator
    > 80 порт по протоколу http перенаправить на нестандартный порт https?
    Почему бы не переложить эту роль на плечи прокси (nginx). Ставим на входе nginx, он может делать редирект с 80 на 443 и разделить трафик на одном порту на основании домена.
    webmail.domain.ru - все на почтовик
    cms.domain.ru - на сms

    Так же можно прописать дефолтный домен, все что без указания домена - сыпать сюда.

    Проблема 444 в том, что все браузеры будут ругать на недоверие к сертификату.
    Ответ написан
    8 комментариев
  • Как убрать кавычки из ответа sql запроса с json?

    @Akina
    Сетевой и системный админ, SQL-программист.
    SELECT DISTINCT value::jsonb->>'name_level_1'
    ...
    Ответ написан
    Комментировать
  • Сколько ядер процессора хватит для программирования?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Имеет смысл взять слабую конфигурацию. На ней автор быстро почувствует узкие места кода и займется
    оптимизацией. И потом в продуктиве этот код станет быстро работать.

    Хороший мотиватор.
    Ответ написан
    5 комментариев
  • Сколько ядер процессора хватит для программирования?

    saboteur_kiev
    @saboteur_kiev Куратор тега Железо
    software engineer
    Языки C# и Питон придумали тогда, когда процессор еще был одноядерным.
    Вопрос плохой, неправильный. Никто не знает что вы хотите делать и насколько для вас критично подождать компиляции секунду или 5 секунд.
    Берите удобный для работы. С приятным экраном, с приятной для ВАС клавиатурой.

    А дорогой и мощный ноут можно брать тогда, когда на него заработаешь работой на позиции разработчика, и уже будешь понимать что именно тебе нужно от ноута на этой работе.
    Ответ написан
    Комментировать
  • Почему сильно глючит чат-бот на node.js на heroku?

    @Roy_Beedrill
    Если сидите на бесплатном тарифе, то, вероятно, закончился лимит по dyno. Он будет глушить контейнер с приложением, если не получает трафик в течении какого-то времени + если заканчиваются часы по dyno, контейнер "засыпает" до конца месяца не зависимо от трафика.
    Глоссарий Heroku
    Ответ написан
    2 комментария
  • Что не так с потоками?

    @falconandy
    С "потоками" всё так, просто вы неправильно работаете с "массивом".

    perftracing = append(perftracing, 0) при исчерпании выделенной памяти выделяет новый блок памяти (по-моему удвоенного размера) и копирует текущие элементы в новый блок. Соответственно часть (половина) горутин пишет по старым адресам, а в выхлопе данные из последнего выделенного блока памяти.

    ...
    0 0 0 0 5197273 5671085 5177800 5797080 
    0 0 0 0 5197332 5671147 5177908 5797137 
    0 0 0 0 5197388 5671208 5178008 5797195 
    0 0 0 0 5197450 5671269 5178118 5797248
    ...


    Если создать "массив" заранее со всеми элементами, то всё выводится нормально:
    threads := 4
    perftracing := make([]int64, threads)
    for i := 0; i < threads; i++ {
    	go thread(&perftracing[i])
    	time.Sleep(1)
    }


    ...
    5593758 7107822 5575001 6449763 6321574 5535152 5728000 7196092 
    5593813 7107884 5575056 6449859 6321628 5535209 5728060 7196153 
    5593879 7107959 5575122 6449976 6321695 5535275 5728122 7196217 
    5593936 7108030 5575180 6450079 6321757 5535339 5728190 7196285 
    ...
    5594008 7108109 5575251 6450199 6321821 5535403 5728251 7196349


    Ну и вместо time.Sleep(1) вы наверно имели в виду что-то типа time.Sleep(time.Second * 1)

    Go 1.19.3, Kubuntu 22.04
    Ответ написан
    Комментировать
  • Что не так с потоками?

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

    @VolgaVolga
    Не сметь убирать!
    Это ограничение в 120 символов в строке.
    Если за нее выходите - лучше пересмотреть форматирование кода.
    Ответ написан
    2 комментария
  • С чего сейчас начать карьеру веб-разработчика?

    anton_reut
    @anton_reut
    Начинающий веб-разработчик
    Специально для таких вопросов храню эти две картинки-схемы:
    spoiler
    6366436b4c8e1976532849.png

    spoiler
    63664372d73d7588869957.png
    Ответ написан
    7 комментариев