Задать вопрос
  • Правильно ли объединять WPF и WinForms проекты в одно решение (solution)?

    @romaro Автор вопроса
    сергей кузьмин, я так и планировал делать: один солюшн, в котором по одному проекту на каждый ui и отдельный проект для общих классов моделей и ресурсов. Или вы о другом?

    Просто хочу понять, как принято в сообществе.
  • Только у меня проблема с установкой Visual Studio 2022?

    @romaro Автор вопроса
    Да, проблема в Ростелекоме. Судя по логам, просто блокируют трафик. Пришлось два гига высасывать через мобильный.
  • Какая книга станет хорошим фундаментом для изучения C#?

    @romaro Автор вопроса
    Griboks, просто я использую книги как источник авторского мнения и авторских объяснений, а документацию, как источник актуальных знаний по языку. Мне, чтобы хорошо усвоить материал, нужно ознакомиться с разными точками зрения. Кому-то вообще достаточно практики и интуитивного понимания как что работает. Все разные, кто-то вон по роликам на ютубе учится или курсы покупает.
  • Какая книга станет хорошим фундаментом для изучения C#?

    @romaro Автор вопроса
    Griboks, документация — это прежде всего справочник. Хорошая книга — системное и последовательное изложение материала. Они дополняют друг-друга.
  • Какая книга станет хорошим фундаментом для изучения C#?

    @romaro Автор вопроса
    Мне тоже нравится справка от МС, но это не отменяет полезность книг :)
  • Почему не удается сменить слушающий порт в контейнеризированном Postgres?

    @romaro Автор вопроса
    mureevms, это первое, что пришло в голову, когда увидел кодировку. Пробовал поменять в DBeaver, но не помогло. То есть по-вашему это сугубо проблема клиента (я потому взял еще и PgAdmin) и копать в этом направлении?
  • Почему не удается сменить слушающий порт в контейнеризированном Postgres?

    @romaro Автор вопроса
    mureevms, да, я знаю, что можно через локалку. Но я пробросил конфиг с хостовой машины (в идеешке файл удобнее править и можно все лишнее удалить):
    volumes:
          - type: volume
            source: site-db-vol
            target: /var/lib/postgresql/data
          - type: bind
    // Просто подменяю файл в контейнере файлом с локалки
            source: ${POSTGRES_CONFIG_FILE_SRC}
            target: /var/lib/postgresql/data/postgresql.conf
  • Почему не удается сменить слушающий порт в контейнеризированном Postgres?

    @romaro Автор вопроса
    Вадим, порт 5432 для контейнера с постгресом открыт:
    / # telnet localhost 5432
    Connected to localhost


    При такой конфигурации:
    postgres:
        image: postgres:14.4-alpine3.16
        container_name: gp_site_db
        env_file:
          - ./secrets/postgres.env
        ports:
          - 5433:5432
  • Почему не удается сменить слушающий порт в контейнеризированном Postgres?

    @romaro Автор вопроса
    mureevms, на самом деле это не помогло... Я пробую подключиться к дефолтной базе postgres одноименным пользователем. Пароль 1234. Когда проброса нет (5432:5432) подключение удается. Стоит поменять на 5433:5432, сразу возникает ошибка пароля.

    Мой Постгрес конфиг:
    # CONNECTIONS AND AUTHENTICATION
    listen_addresses = '*'	
    #port = 5432				# (change requires restart)
    
    # REPORTING AND LOGGING 
    log_destination = 'stderr'
    logging_collector = on
    log_directory = '/var/lib/postgresql/'
    log_min_messages = debug1


    Hba (пробовал менять на password и даже trust):
    # TYPE  DATABASE        USER            ADDRESS                 METHOD
    
    # "local" is for Unix domain socket connections only
    local   all             all                                     trust
    # IPv4 local connections:
    host    all             all             127.0.0.1/32            trust
    # IPv6 local connections:
    host    all             all             ::1/128                 trust
    # Allow replication connections from localhost, by a user with the
    # replication privilege.
    local   replication     all                                     trust
    host    replication     all             127.0.0.1/32            trust
    host    replication     all             ::1/128                 trust
    
    host all all all scram-sha-256


    Лог с момента подключения:
    2022-08-10 10:29:11.160 GMT [1] LOG:  listening on IPv4 address "0.0.0.0", port 5432
    2022-08-10 10:29:11.160 GMT [1] LOG:  listening on IPv6 address "::", port 5432
    2022-08-10 10:29:11.244 GMT [1] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
    2022-08-10 10:29:11.350 GMT [22] LOG:  database system was shut down at 2022-08-10 07:58:37 GMT
    2022-08-10 10:29:11.390 GMT [22] DEBUG:  checkpoint record is at 0/16FDBA0
    2022-08-10 10:29:11.391 GMT [22] DEBUG:  redo record is at 0/16FDBA0; shutdown true
    2022-08-10 10:29:11.391 GMT [22] DEBUG:  next transaction ID: 734; next OID: 13770
    2022-08-10 10:29:11.391 GMT [22] DEBUG:  next MultiXactId: 1; next MultiXactOffset: 0
    2022-08-10 10:29:11.391 GMT [22] DEBUG:  oldest unfrozen transaction ID: 727, in database 1
    2022-08-10 10:29:11.391 GMT [22] DEBUG:  oldest MultiXactId: 1, in database 1
    2022-08-10 10:29:11.391 GMT [22] DEBUG:  commit timestamp Xid oldest/newest: 0/0
    2022-08-10 10:29:11.391 GMT [22] DEBUG:  transaction ID wrap limit is 2147484374, limited by database with OID 1
    2022-08-10 10:29:11.391 GMT [22] DEBUG:  MultiXactId wrap limit is 2147483648, limited by database with OID 1
    2022-08-10 10:29:11.391 GMT [22] DEBUG:  starting up replication slots
    2022-08-10 10:29:11.488 GMT [22] DEBUG:  MultiXactId wrap limit is 2147483648, limited by database with OID 1
    2022-08-10 10:29:11.488 GMT [22] DEBUG:  MultiXact member stop limit is now 4294914944 based on MultiXact 1
    2022-08-10 10:29:11.496 GMT [1] DEBUG:  starting background worker process "logical replication launcher"
    2022-08-10 10:29:11.496 GMT [1] LOG:  database system is ready to accept connections
    2022-08-10 10:29:11.507 GMT [26] DEBUG:  autovacuum launcher started
    2022-08-10 10:29:11.511 GMT [28] DEBUG:  logical replication launcher started
    2022-08-10 10:30:11.743 GMT [29] DEBUG:  autovacuum: processing database "postgres"
    2022-08-10 10:31:11.676 GMT [30] DEBUG:  autovacuum: processing database "postgres"
    2022-08-10 10:32:11.666 GMT [31] DEBUG:  autovacuum: processing database "postgres"
    2022-08-10 10:33:11.704 GMT [32] DEBUG:  autovacuum: processing database "postgres"
    2022-08-10 10:34:11.604 GMT [23] DEBUG:  performing replication slot checkpoint
    2022-08-10 10:34:11.738 GMT [33] DEBUG:  autovacuum: processing database "postgres"
    2022-08-10 10:35:11.773 GMT [52] DEBUG:  autovacuum: processing database "postgres"
    2022-08-10 10:36:11.847 GMT [53] DEBUG:  autovacuum: processing database "postgres"
    2022-08-10 10:37:11.867 GMT [60] DEBUG:  autovacuum: processing database "postgres"
    2022-08-10 10:38:11.928 GMT [68] DEBUG:  autovacuum: processing database "postgres"
    2022-08-10 10:39:11.676 GMT [23] DEBUG:  checkpoint skipped because system is idle
    2022-08-10 10:39:11.936 GMT [73] DEBUG:  autovacuum: processing database "postgres"


    Постгрес действительно слушает 5432 на хостовой машине:
    [romaro@ora19c gp]$ sudo ss -tulpn
    Netid   State    Recv-Q   Send-Q     Local Address:Port      Peer Address:Port   Process                                                     
    udp     UNCONN   0        0                0.0.0.0:111            0.0.0.0:*       users:(("rpcbind",pid=778,fd=5),("systemd",pid=1,fd=39))   
    udp     UNCONN   0        0              127.0.0.1:323            0.0.0.0:*       users:(("chronyd",pid=827,fd=6))                           
    udp     UNCONN   0        0                   [::]:111               [::]:*       users:(("rpcbind",pid=778,fd=7),("systemd",pid=1,fd=41))   
    udp     UNCONN   0        0                  [::1]:323               [::]:*       users:(("chronyd",pid=827,fd=7))                           
    tcp     LISTEN   0        128              0.0.0.0:22             0.0.0.0:*       users:(("sshd",pid=838,fd=4))                              
    tcp     LISTEN   0        511            127.0.0.1:19383          0.0.0.0:*       users:(("node",pid=1776,fd=18))                            
    tcp     LISTEN   0        1024             0.0.0.0:3000           0.0.0.0:*       users:(("docker-proxy",pid=2155,fd=4))                     
    tcp     LISTEN   0        1024             0.0.0.0:5433           0.0.0.0:*       users:(("docker-proxy",pid=2139,fd=4))                     
    tcp     LISTEN   0        1024             0.0.0.0:443            0.0.0.0:*       users:(("docker-proxy",pid=2345,fd=4))                     
    tcp     LISTEN   0        128              0.0.0.0:111            0.0.0.0:*       users:(("rpcbind",pid=778,fd=4),("systemd",pid=1,fd=38))   
    tcp     LISTEN   0        1024             0.0.0.0:80             0.0.0.0:*       users:(("docker-proxy",pid=2362,fd=4))                     
    tcp     LISTEN   0        128                 [::]:22                [::]:*       users:(("sshd",pid=838,fd=6))                              
    tcp     LISTEN   0        1024                [::]:3000              [::]:*       users:(("docker-proxy",pid=2159,fd=4))                     
    tcp     LISTEN   0        1024                [::]:5433              [::]:*       users:(("docker-proxy",pid=2143,fd=4))                     
    tcp     LISTEN   0        1024                [::]:443               [::]:*       users:(("docker-proxy",pid=2350,fd=4))                     
    tcp     LISTEN   0        128                 [::]:111               [::]:*       users:(("rpcbind",pid=778,fd=6),("systemd",pid=1,fd=40))   
    tcp     LISTEN   0        1024                [::]:80                [::]:*       users:(("docker-proxy",pid=2366,fd=4))


    Образ докера я использую вот этот.

    Подключаться пробую из-под винды через DBeaver и PGAdmin (версию локального драйвера обновил до 14.4)

    Ошибка одна и та же и как будто это связано с кодировкой. Но при чем здесь порты?
    62f3892fd849f041362300.jpeg
  • Почему не удается сменить слушающий порт в контейнеризированном Postgres?

    @romaro Автор вопроса
    5432 просто зашито в образе:

    EXPOSE 5432
    CMD ["postgres"]


    Попробую пробросить 5433->5432
  • Почему не удается сменить слушающий порт в контейнеризированном Postgres?

    @romaro Автор вопроса
    Попробовал пересобрать всю конфигурацию (docker-compose up), предполагая проблему с докеровской сетью, получил такую картину в студии:
    62f2b86044092525347507.png
    Но при попытке подключения все та же ошибка подключения (не прошел проверку паролем).
  • Почему не удается сменить слушающий порт в контейнеризированном Postgres?

    @romaro Автор вопроса
    Не понятно, откуда вообще берется порт 5432. Постгрес в контейнере в единственном экземпляре:
    PID   USER     TIME  COMMAND
        1 postgres  0:00 postgres
       22 postgres  0:00 postgres: checkpointer 
       23 postgres  0:00 postgres: background writer 
       24 postgres  0:00 postgres: walwriter 
       25 postgres  0:00 postgres: autovacuum launcher 
       26 postgres  0:00 postgres: stats collector 
       27 postgres  0:00 postgres: logical replication launcher 
       28 root      0:00 /bin/ash
       56 root      0:00 ps


    Смотрит наружу один 5433:
    [romaro@ora19c gp]$ netstat -ltpn
    (Not all processes could be identified, non-owned process info
     will not be shown, you would have to be root to see it all.)
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
    tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      -                   
    tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      -                   
    tcp        0      0 127.0.0.1:24501         0.0.0.0:*               LISTEN      1775/node           
    tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -                   
    tcp        0      0 0.0.0.0:3000            0.0.0.0:*               LISTEN      -                   
    tcp        0      0 0.0.0.0:5433            0.0.0.0:*               LISTEN      -                   
    tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      -                   
    tcp6       0      0 :::111                  :::*                    LISTEN      -                   
    tcp6       0      0 :::80                   :::*                    LISTEN      -                   
    tcp6       0      0 :::22                   :::*                    LISTEN      -                   
    tcp6       0      0 :::3000                 :::*                    LISTEN      -                   
    tcp6       0      0 :::5433                 :::*                    LISTEN      -                   
    tcp6       0      0 :::443                  :::*                    LISTEN      -
  • Почему не удается сменить слушающий порт в контейнеризированном Postgres?

    @romaro Автор вопроса
    mureevms, конфиг я конечно не скрываю, а просто удалил лишнее:
    postgres:
        image: postgres:14.4-alpine3.16
        container_name: gp_site_db
        env_file:
          - ./secrets/postgres.env
        expose: [5433]
        ports:  
          - 5433:5433 #host_port:container_port
        volumes:
          - type: volume
            source: site-db-vol
            target: /var/lib/postgresql/data


    При этом к контейнере:
    / # netstat -ltpn
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
    tcp        0      0 127.0.0.11:41079        0.0.0.0:*               LISTEN      -
    tcp        0      0 0.0.0.0:5433            0.0.0.0:*               LISTEN      -
    tcp        0      0 :::5433                 :::*                    LISTEN      -


    А в студии:
    62f2b0e501b3c809262539.png
  • Почему могут не подгружаться шрифты?

    @romaro Автор вопроса
    Вроде бы это когда мы объявляем шрифт для селектора. А у меня в самом правиле @font-face получилось, что объявлено не семейство Overpass Mono, а '"Overpass Mono", monospace'. То есть он наверное все, что до ; преобразовал в строку и посчитал это названием семейства.

    Затем, когда я сослался на Overpass Mono, браузер его просто не нашел, т.к. не было ссылок на загрузку шрифтов с таким семейством и применил второе по приоритету.
  • Почему Nginx не проксирует в Докере?

    @romaro Автор вопроса
    Со статикой вроде разобрался. Должно быть так:
    location /static/ {
      root /etc;
      autoindex off;
    }


    Видимо, отсутствие слеша в конце адреса указывало, что это не директория. Хотя в других моих локейшенах работало и без нее:
    # IMGProxy
    		# location /teaser {
    		# 	proxy_pass http://imgproxy:8080;
    		# }
  • Почему Nginx не проксирует в Докере?

    @romaro Автор вопроса
    Положил файл на хостовой машине:
    /home/romaro/gp/files/test.txt

    Создал диск (пробросил директории):
    - type: bind
            source: /home/romaro/gp/files
            target: /etc/static


    Настроил локейшн:
    location /static {
                root /etc;
            }


    Пробую получить доступ по адресу localhost/static/test.txt

    Тот же ответ 404:
    gp-nginx     | 10.0.2.2 - - [08/Jul/2022:07:50:34 +0000] "GET / HTTP/1.1" 404 146 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Firefox/102.0"
    gp-nginx     | 10.0.2.2 - - [08/Jul/2022:07:50:41 +0000] "GET /static HTTP/1.1" 404 146 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Firefox/102.0"
    gp-nginx     | 10.0.2.2 - - [08/Jul/2022:07:50:52 +0000] "GET /static/test.txt HTTP/1.1" 404 146 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Firefox/102.0"


    Должно ведь работать?
  • Почему компилятор tsc не добавляет в импорты расширение .js?

    @romaro Автор вопроса
    HypeEditor, лень конечно) Я когда говорил про оверхед, имел в виду работу в рантайме, но если там уже транспилированный JS передается в ноду, по идее, не должно быть высоких накладных расходов.
  • Почему компилятор tsc не добавляет в импорты расширение .js?

    @romaro Автор вопроса
    Поправьте, если я не правильно вас понял :) ts-node это ведь среда исполнения тайпскрипта, то есть преобразование в JS-код происходит в рантайме. Вы предлагаете запускать сервер через прослойку в виде ts-node, т.е. вообще его не компилировать? Просто это должно привести к оверхеду. Или ts-node выполняет компиляцию всего проекта при запуске приложения и держат js-код в оперативной памяти? Как dev-server вебпака.
  • Почему компилятор tsc не добавляет в импорты расширение .js?

    @romaro Автор вопроса
    Дмитрий, я обновил tsc до версии 4.7 и вроде как там написано, что расширения он должен подставлять:
    This might feel a bit cumbersome at first, but TypeScript tooling like auto-imports and path completion will typically just do this for you.


    Но нет: https://github.com/oramor/tsc/blob/master/module-r...
  • Актуальна ли книга Макдональда по WPF 4.5?

    @romaro Автор вопроса
    А вы сами с этой книгой знакомы? Насколько она хороша в качестве фундамента по WPF или есть вариант получше? Понятно, что все детали лучше искать в справке, она у MS неплохая.