Задать вопрос
  • Запуск своей программы вместо графической оболочки в Linux?

    uvelichitel
    @uvelichitel
    habrahabr.ru/users/uvelichitel
    После аутентификации(login: password:) я попадаю в консоль в которой уже могу работать. Далее я выполняю:
    $ startx
    Эта команда запускает иксы, xserver(графический интерфейс). Эта команда читает конф файл /home/user/username/.xinitrc
    Мой выглядит так:
    xrdb ~/.Xresources # Читаем конфигурацию для иксов
    setxkbmap -option grp:alt_space_toggle -option grp_led:scroll us,ru # Переназначение перекдючения раскладки
    xmodmap -e 'clear Lock' -e 'keycode 0x42 = oslash Caps_Lock'  # Переназначение клавиши CapsLock
    exec dbus-launch --exit-with-session bspwm  # Собственного запуск оконного менеджера который мне нравится. Можно запустить другой оконный менеджер. Или любимую графическую оболочку. Или вообще любую программу с графическим интерфейсом.
    Ответ написан
    1 комментарий
  • Запуск своей программы вместо графической оболочки в Linux?

    CityCat4
    @CityCat4
    //COPY01 EXEC PGM=IEBGENER
    Запросто.

    Запуск DE - это просто скрипт, который выполняется при входе через DM. Ну, либо запуск программы через .xinitrc, если это старинный способ запуска через startx.

    Меняешь скрипт/прописываешь нужную прогу в .xinitrc - и все
    Ответ написан
    Комментировать
  • Запуск своей программы вместо графической оболочки в Linux?

    @rPman
    Например
    1. отключаешь display manager - lightdm (или что у тебя там для меню авторизации и выбора DE)
    2. минимум что необходимо для работы графического режима - это xserver, для его запуска достаточно запустить утилиту X (кстати кажется до сих пор требует root), будет запущен графический сервер без Desktop Environment, но нужно понимать что DE отвечает за управление окнами, а точнее управление их размерами, положением на экране и вообще сокрытие/минимизация. Т.е. без этого, если твое приложение ожидает что пользователь будет перемещать его окна (а это к примеру диалоговое окно открытия/сохранения файлов) то он уже это сделать не сможет, все окна будут без заголовков и бордюра для изменения их размеров.
    И кстати, чтобы графическое приложение запустилось и отображалось на X нужно устанавливать переменную окружения DISPLAY, значение смотреть либо в конфиге X либо в логах (скорее всего будет что то типа :0, это имя сервера и номер xserver, запущенного на нем, напоминаю, что linux из коробки умеет multiseat)
    3. чтобы появился хоть какой то интерфейс взаимодействия, нужно установить DE, из минималистичных, идеальных для kiosk mode - я бы рекомендовал awesome, в нем к примеру можно настроить чтобы все открываемые окна сразу разворачивались на весь экран.

    Кстати со всеми xserver обычно идет древний дефолтный twm, настолько примитивный что даже смешно, но если бы при открытии любого окна он не требовал от пользователя указать расположение и размер, им можно было бы пользоваться (не удивлюсь если это настраивается но никогда этим вопросом не задавался).

    Из минималистичных и вполне функциональных DE можно предложить еще какой-нибудь openbox, его можно настроить так чтобы вообще никаких 'пуск' и списка задач не было, а только иконки и приложение на весь экран. Но пользователь сможет добраться до редактирования меню и запустить любое приложение, т.е. это не для kiosk mode

    Чтобы запустить xserver с DE автоматически можно либо настроить автозагрузку в lightdm (это правильно) либо просто запускать утилиту startx, которая смотрит в пользовательском каталоге .xinitrc и запускает DE от туда.

    На самом деле процесс запуска DE стал очень замудреный, его запутали несколько поколений разработчиков и выпутывать не желают, но обычно все это критично для тяжелых DE типа KDE, а что то простое и легкое с приложениями на gtk работает и так

    Собственно как запускать приложения автоматически при включении компьютера тоже вопрос очень интересный, способов много, минимум три могу предложить
    * правильный - настроить службу и прописать ей зависимости и автозапуск,
    * так же до сих пор есть устаревший способ настройки службы без зависимостей sysvinit - /etc/init.d
    * ну еще есть /etc/rc.local
    Ответ написан
    1 комментарий
  • Как пустить часть трафика через VPN?

    Vindicar
    @Vindicar
    RTFM!
    Есть два подхода. В обоих случаях тебе нужен список заблокированных IP, его можно взять на антизапрете, например.
    Дальше вопрос, как пускать трафик.
    1. На хабре был материал про динамическую подгрузку маршрутов через BGP. Плюс - работает с любыми протоколами, и не требует дополнительной настройки со стороны проксируемого ПО. Минусы - ощутимо сложнее в понимании, на мой взгляд, да и с кроссплатформенностью могут быть проблемы. В статье приведена реализация на роутере Mikrotik.
    2. Использовать файл proxy.pac. Его можно сгенерировать скриптом типа такого:
    #!/bin/bash
    #!/bin/bash
    DNS_SERVER=8.8.8.8
    BLACKLIST_URL="http://antizapret.prostovpn.org/iplist.txt"
    #куда класть файл proxy.pac
    PACDIR=/var/www/html
    TMPLIST=/tmp/iplist.txt
    #домены, которые нужно пускать через прокси независимо от содержимого iplist.txt
    DOMAINS=(\
    rutracker.org \
    facebook.com \
    facebook.net \
    fbcdn.net \
    twitter.com \
    twitter.co \
    t.co \
    twimg.com \
    twitpic.com \
    periscope.tv \
    pscp.tv \
    )
    #качаем чёрный список
    wget -q --tries=10 -O "$TMPLIST" "$BLACKLIST_URL"
    # вытаскиваем IP наших прописанных доменов
    declare -a EXTRAIPS=()
    for domain in "${DOMAINS[@]}"
    do
            dig A "$domain" +short @$DNS_SERVER | grep -v '\.$' >>"$TMPLIST"
    done
    #в чёрном списке есть отдельные IP и есть подсети
    #также чёрный список очень длинный, поэтому кодируем его более компактно.
    IPLIST=`grep -Ex '^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$' "$TMPLIST" | awk '/^[0-9]+/ {split($1,b,/\./); printf("0x%02x%02x%02x%02x,", b[1],b[2],b[3],b[4]);}'`
    SUBNETLIST=`awk '/[0-9.]+\.[0-9]+\.[0-9]+\.[0-9]+\/[0-9]+/ {split($1,p,/\//); printf("[\"%s\", %s], ", p[1], p[2]);}' <"$TMPLIST"`
    #генерируем proxy.pac по шаблону
    #он проверяет домен на вхождение в фиксированные домены, а потом IP по списку.
    function templatePAC {
            NAME=$1
            shift
            DMNLIST=("$@")
            cat >"$PACDIR/$NAME" <<EOF
    function FindProxyForURL(url, host) {
      var domainblacklist = [
    EOF
            for d in "${DMNLIST[@]}"
            do
                    echo "  '$d'," >>"$PACDIR/$NAME"
            done
            cat >>"$PACDIR/$NAME" <<EOF
      ];
      var ipblacklist = [ $IPLIST ];
      var subnetblacklist = [ $SUBNETLIST ];
    
      function endsWith(str, suffix) {
        return str.indexOf(suffix, str.length - suffix.length) !== -1;
      }
      function numberToMask(n) {
        var m=[0,128,192,224,240,248,252,254,255];
        var r=[];
        for (var i=0; i<4; i++) {
          var p = (n > 8) ? 8 : n;
          r[i] = m[p];
          n -= p;
        }
        return r.join(".");
      }
      function maskMatch(ip, mask) {
        var m = numberToMask(mask[1]);
        return isInNet(ip, mask[0], m);
      }
    
      var blocked = false;
      for (var i=0; !blocked && (i<domainblacklist.length); i++)
        blocked = blocked || ((host == domainblacklist[i]) || endsWith(host, '.'+domainblacklist[i]));
      if (!blocked) {
        var ip = dnsResolve(host);
        for (var i=0; !blocked && (i<subnetblacklist.length); i++)
          blocked = blocked || maskMatch(ip, subnetblacklist[i]);
        blocked = blocked || (ipblacklist.indexOf(convert_addr(ip)) != -1);
      }
      if (blocked)
        return "PROXY ТУТ_ТВОЙ_ПРОКСИ:ПОРТ";
      else
        return "DIRECT";
    }
    EOF
    }
    # генерируем файл
    templatePAC proxy.pac "${DOMAINS[@]}"
    
    rm -f "$TMPLIST"

    Тогда можно отдавать этот proxy.pac любым веб-сервером (но лучше внутри VPN - если VPN не работает, то смысл в файле?), и настроить браузер на его использование.
    Минусы: работает только с браузерами, требует наличия вебсервера и полноценного прокси-сервера внутри VPN-сети (т.е. просто арендованный VPN не подойдёт, нужен VPS). Но мне показалось это проще в понимании, чем возня с BGP, да и требуется только наличие современного браузера и VPN клиента, без привязки к роутеру. Можно хоть на ноуте настроить, как я сделал.
    Ответ написан
    Комментировать
  • Как с помощью return вернуть две переменные?

    Есть несколько вариантов:
    1. Возвращать массив
    2. Объявить свою структуру или класс, в которой будет два нужных значения в виде полей или свойств
    3. Возвращать кортеж
    Ответ написан
    Комментировать
  • Как настроить двухстороннюю связь между flask и JS?

    kshnkvn
    @kshnkvn
    yay ✌️ t.me/kshnkvn
    1. Пишешь API на Flask. Статей в интернете куча, например эта.
    2. Из своего JS скрипта обращаешься к API, например используя fetch.
    3. Довольствуешься результатом.
    Ответ написан
    Комментировать
  • Как вывести 2 переменные с функции?

    Используй кортежи.
    public static (int, double) While3(double n)
            {
                double S = 0;
                int d = 10,
                    sumd = 200,
                    days = 1;
                while (S < sumd)
                {
                    days++;
                    S += d + (d * ( n / 100));
                }
                return (days,S);
            }

    Но умоляю, дай нормальные имена переменным и самой функции.
    Ответ написан
    2 комментария
  • Книги, чтобы понять ООП и Паттерны для начинающих?

    @mkone112
    Начинающий питонист.
    на основе JS учить ООП так вообще странно.

    *Миллионы разработчков освоившие ооп с динамическими яп, говорят...
    Да-да, привет динамическая типизация

    Мало кто внятно объясняет ООП

    кроме миллионов книг и индусов на ютубе
    на примере TS.

    Да без разницы, можешь и на Java примеры посмотреть.
    Не будем портить друг другу настроение.

    В теге 'Карьера' так не принято, обычно отвечающие дают честные ответы, и веселятся когда у вопрошающих портится настроение. Я раньше смотрел комедии, но оказалось что сидеть на сервисах ответов - гораздо смешнее!
    Книги, чтобы понять ООП и Паттерны для начинающих?

    Никакие, ты сначала пишешь код, и когда понимаешь что уже не справляешься с его поддержкой - начинаешь искать способы это решить, ооп с паттернами - это один из способов. А сейчас ты пытаешься решить задачу, до того как она возникла, как ты собираешься понять решение проблемы, если не знаешь о проблеме?
    Ответ написан
    2 комментария
  • Как запустить проект на C# в Visual studio code?

    UPD всё что ниже уже не актуально. Microsoft обновили расширения для работы с C# и сделали свою нормальную инструкцию прямо внутри Vs code
    https://code.visualstudio.com/docs/csharp/get-started

    1. Устанавливаешь .net 6 SDK

    2. Устанавливаешь все нужные плагины:


    3. Создаёшь новый проект по гайду
    4. Открываешь в vs code папку с проектом
    5. Жмёшь на кнопку отладки и запускаешь
      (при первом запуске он может напомнить, что в отладчике есть декомпилятор, который нелегально использовать на чужих приложениях - соглашаемся с этим)
      603d3bb386701819998214.png
      Если что - выбираем .net Core
      603d3bf3168e0691109502.png
      В итоге появится нужная кнопка
      603d3c19c5f27607073624.png


    Чтобы запустить без отладки - нужно будет покопаться в launch.json, либо использовать консоль

    PS: Вообще, советую пользоваться полноценной студией - может она на первый взгляд и пугает, но она сильно удобнее, чем vs code. (ну и в ней всё работает из коробки, что важно для новичков)
    PPS: А ещё существует Rider - для профессионального разработчика он стоит копеечные 15$ в месяц, а для школьника или студента вообще бесплатен. При этом он даёт целую кучу полезных инструментов, особенно для геймдева, если он вам интересен.
    Ответ написан
    13 комментариев
  • Есть ли альтернативa Visual Studio для C#?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    JetBrains Rider - платно (можно пиратить, но проще просто поставить VS .Net Desktop)
    Visual Studio Code - бесплатно но функционал слабее
    и далее:
    Sublime, Notepad++ - с плагинами
    ...
    Notepad и компиляция командной строкой

    ps что бы не охреневать от веса присмотритесь к настройкам инсталятора. если ставить только .Net Desktop, то совсем не страшно на самом деле. а новичку обычно больше ни чего не надо.

    мало того - все что сверх .Net Desktop, вменяемо не обслуживается ни в одной альтернативной среде. ну разве что веб направление в JetBrains Rider.. ну Visual Studio Code.. но новичку в VS Code думаю будет не уютно

    pps можете смело урезать стартовую конфигурацию до набора
    как на скрине
    PR832pt.png
    , остальное, пока не поймете зачем - оно и не надо
    Ответ написан
    Комментировать
  • Как установить память на сервер?

    fdroid
    @fdroid
    press any key
    В характеристиках платы указано, что она поддерживает память UDIMM ECC. Если вы установили RDIMM ECC, то она не заведётся.
    Ответ написан
    1 комментарий
  • Как сохранить IP адрес клиента в локальной сети при запросе через внешний интерфейс?

    Jump
    @Jump
    Системный администратор со стажем.
    Как я понимаю, сделать это можно, только если отправлять запрос на HTTP сервер, минуя внешний интерфейс.
    Правильно понимаете.

    как это сделать без внутреннего DNS сервера?
    Используйте файл HOSTS вашего роутера, или компьютера.
    Добавьте туда запись вида vash_domain.com 192.168.1.200 и ходите по имени.
    Ответ написан
    Комментировать
  • Сравнение "буквенных" и "числовых" строк. Как происходит?

    Simkav
    @Simkav
    В вашем случае 123 не число а строка, при сравнении строк запускается цикл который переводит символ строки в юникод если не ошибаюсь, и сравнивается номер этих юникод символов
    P.S
    Ответ написан
    3 комментария
  • Изучать сразу 2 ЯП - плохая практика?

    Конечно можно.
    Если у вас уже нет проблем с циклами / условиями и есть понимание, чем отличается класс от экземпляра класса.
    Главное не пытаться писать на C#, как на JS и наоборот.
    Ответ написан
    Комментировать
  • Есть ли интересные Telegram-каналы по веб-разработке?

  • Как провести грамотный апгрейд сервера 1С?

    @LollyFox
    Без анализа можно только посоветовать SSD + увеличить ОЗУ - это минимум, чего точно не хватает серверу.
    А дальше садиться и настраивать PostgreSQL или переходить на MS SQL.
    Ответ написан
    Комментировать
  • Как провести грамотный апгрейд сервера 1С?

    @d-stream
    Готовые решения - не подаю, но...
    Вообще независимо от того что используется - стоит снять профили производительности. Уже исходя из этого будут выявлены узкие места. Возможно дисковая подсистема, возможно память, возможно сеть, возможно процессоры.

    Так что для начала - perfmon хотя бы, а потом более подробно по компонентам. Как итог - чего не хватает и кому.
    Исходя из этого вполне может быть что получится вывод что надо уходить на рекомендуемые варианты масштабирования в виде разнесения всех звеньев на разные серверы, каждый из которых будет иметь разные требования к критичной для функции части.
    Ответ написан
    Комментировать
  • Как провести грамотный апгрейд сервера 1С?

    @Maximus-nsk
    Конечно лучше перевести бд на ssd
    Также важно чтобы оперативная память работала в двух канальном режиме и ее должно быть с запасом и с максимальной поддерживаемой частотой. По поводу процессора - у вас предел, если начнут сразу запускать несколько отчетов в разных конфигурациях то проц может не вывезти(мало ядер и Кеша 3-го уровня). Подумайте над тем чтобы начать хотябы с перехода на ssd и добавить памяти с запасом в двух канале чтоб было. Если не поможет то тогда можно перейти на ксеон v3 серии (с Али экспресс можно купить не так дорого материнскую плату под два процессора и недорогую серверную память. )
    Ответ написан
    Комментировать
  • Насколько полное изучение Java c работой над реальными проектам поможет php программисту в его работе?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Несмотря на то что в вопросе немного каша, а в ответах - ад, ответ на вопрос, в общем-то, очевидный.

    В первую очередь с точки зрения простой житейской логики. Есть возможность? Надо воспользоваться. Вылезти из-под своей коряги посмотреть на неё со стороны всегда полезно, в любом деле.
    Возможность узнать что-то новое - всегда полезна. Может быть ты и вправду, как тут вещают некоторые ораторы, проникнешься омерзением к пхп и пойдешь писать на яве.

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

    Хайлоад же проекты - это из немного другой области. Тут идет откат скорее в обратном направлении. Это как с денормализацией - БД должна быть нормализована, но из соображений производительности иногда приходится денормализовывать. ПОСЛЕ того как нормализовал.
    SOLID помогает делать большие проекты управляемыми. Но когда большой проект сталкивается с высокими нагрузками, иногда приходится жертвовать принципами ради производительности. Но тут главное, опять же, не путать направление: СНАЧАЛА делаем правильный дизайн, и только потом в критических точках снижаем накал абстракции, переходим на более низкий уровень. Самый наглядный пример - ORM, когда критические запросы переписываются на чистый SQL.

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

    @historydev
    Mistkerl, drück den Knopf.
    Всё что хочешь делай, но не покупай аутист-курсы у челов, которые обещают слепить из тебя супер-залупер кодера, которого гугл с руками и ногами заберёт и это за 2 месяца или сколько там) Ютуб + гугл, на learn js мало того, что тебе реально пригодится, именно по задачам.
    Ответ написан
    5 комментариев