LINUX.ORG.RU

Сообщения sudoapter

 

Кого я ненавижу сегодня...

Форум — Talks

Помните серию, из черного зеркала? Народ, хорош хейтить модеров, растовцев, калиедов, троллей, лолей. Форумов не так много осталось, пусть это будет крутой технический ресурс. Мне нравится этот ник, я не буду больше стреляться.

 ,

sudoapter
()

Режимы монитора

Форум — Linux-hardware

Привет. Монитор asus vp249h. У него есть несколько режимов работы (srgb, стандартный, и т.д.), фильтр синего, яркость, и т.п. Все это настраивается кнопками, непосредственно на мониторе, а хотелось бы делать программно. На сайте производителя ничего нашел, может плохо искал. Может есть какие варианты?

 ,

sudoapter
()

уран 235, игла вращающаяся в магнитном поле

Форум — Talks

Очень много патриотизма, но хотелось бы услышать физиков. Сам факт, 1500 об/c механика не осиливает, работа в магнитном поле: https://youtu.be/igSPpuMi5Sg

 , ,

sudoapter
()

Там Portal новый...

Форум — Games

С тремя порталами.

 

sudoapter
()

Забьют, ведь.

Форум — Desktop

Программа очень простая, ии нет. Делал давно, в рамках ознакомления. С оболочкой больше не играю.

###
### file vars.inc
###

EC='\e[36m' # enable color
DC='\e[0m'  # disable color
maxdb=4 # максимально допустимое количество дуплей (в игре на 4-х не может быть меньше 2)
maxeq=5 # максимально допустимое количество одинаковых (в игре на 4-х не может быть меньше 3)
dbfish=true   # закрывший рыбу дуплем не считается.
dbzerox=true  # один дупль пусто считается за 10
bazar=false # игра с базаром
vii=7 # раздается по семь камней
hundred=50 # игра ведется до 101 или до 51
xiii=13 # минимальная несгораемая сумма (забор)
domino=(00 01 02 03 04 05 06 11 12 13 14 15 16 22 23 24 25 26 33 34 35 36 44 45 46 55 56 66)
score=(0 0)
fence=(0 0)
eggs=0
gamer=('user' 'noob' 'fool' 'pro ') # имена игроков
mover='' # чей ход
super='' # ставщик (кто зашел первым)
state='' # состояние игры (NULL - игра, true - игрок закончил, false - рыба)
snake=() # массив камней на столе
played=() # поставленые камни игроков

###
### file msgs.inc
###

msg_mix="Мешаю..."
msg_ihave="У меня"
msg_yhave="У вас"
msg_bemix="Камни будут перемешаны."
msg_qbmix="Перемешать камни? (y/n)"
msg_maxdb=('0 дуплей' '1 дупль' '2 дупля' '3 дупля.' '4 дупля.' '5 дуплей.' '6 дуплей.' '7 дуплей.')
msg_maxeq=('голых.' 'азов.' 'двоек.' 'троек.' 'четверок.' 'пятерок.' 'шестерок.' 'голых.' 'аза.' 'двойки.' 'тройки.' 'четверки.' 'пятерки.' 'шестерки.')
msg_any_key="Нажмите любую клавишу для продолжения..."
msg_try_again="Попробуйте еще раз"
msg_skip="Проехал."
msg_finish="Закончил."
msg_fish="Рыба."
msg_dbfish="Рыба с отходом."
msg_onfence="на заборе."
msg_score="счёт"
msg_fenсe="забор"
msg_eggs="яйца"
msg_total_score="Общий счет:"

###
### file func.inc
###

f_mixer(){
  
  echo "${msg_mix}"
  echo '----------'

  domino=(00 01 02 03 04 05 06 11 12 13 14 15 16 22 23 24 25 26 33 34 35 36 44 45 46 55 56 66)

  for ((k=0; k<80; ++k)); do
    for i in ${!domino[@]}; do
      r=$((RANDOM % 28))
      t=${domino[$i]}
      domino[$i]=${domino[$r]}
      domino[$r]=${t}
    done
  done

  for ((i=0; i<${#gamer[@]}; ++i)); do # проверка на 5 дуплей
    r=0
    for ((k=i*vii; k<i*vii+vii; ++k)); do
      [[ "${domino[$k]:0:1}" == "${domino[$k]:1:1}" ]] && ((r++))
    done
    [[ ${r} -gt ${maxdb} ]] && break
  done

  if [[ "${i}" -lt "${#gamer[@]}" ]]; then
    echo "${gamer[$i]}: ${domino[@]:${i}*7:7}"
    if [[ "${i}" -ne 0 ]]; then
      echo "${msg_ihave} ${msg_maxdb[$r]} ${msg_bemix}"
      read -rsn1 -p "${msg_any_key}"
      echo -e '\n----------'
      f_mixer
      return
    else
      echo -n "${msg_yhave} ${msg_maxdb[$r]} ${msg_qbmix}"
      while true; do
        read -r -p ":"
        case ${REPLY} in
          [Yy])
            echo '----------'
            f_mixer
            return
            ;;
          [Nn])
            echo '----------'
            break
            ;;
          *) echo -n "${msg_try_again}" ;;
        esac
      done
    fi
  fi

  for ((i=0; i<${#gamer[@]}; ++i)); do # проверка на 6 одинаковых
    for (( t=0; t<7; ++t )); do # азы, двойки, тройки итд
      r=0
      for (( k=i*vii; k<i*vii+vii; ++k)); do
        [[ "${domino[k]:0:1}" == "${t}" ]] && ((++r))
        if [[ "${domino[k]:0:1}" != "${domino[k]:1:1}" ]]; then
          [[ "${domino[k]:1:1}" == "${t}" ]] && ((++r))
        fi
      done
      [[ "${r}" -gt "${maxeq}" ]] && break 2
    done
  done

  if [[ "${i}" -lt "${#gamer[@]}" ]]; then
    [[ "${r}" -lt 5 ]] && (( t+=7 )) # локализация
    echo "${gamer[i]}: ${domino[@]:i*7:7}"
    [[ "${i}" -ne 0 ]] && echo -n "${msg_ihave} " || echo -n "${msg_yhave} "
    echo "${r} ${msg_maxeq[t]} ${msg_bemix}"
    read -rsn1 -p "${msg_any_key}"
    echo -e '\n----------'
    f_mixer
    return
  fi
}

f_0ut(){
  echo -e "${gamer[$mover]}: ${snake[@]}"
}

f_round(){

  local i
  i=${domino[@]:$mover*7:7}
  if [[ -z "${i}" ]]; then
    echo "${gamer[$mover]}: ${msg_finish}"
    state="true"
    return
  fi

  if [[ "${snake[-1]:1:1}" == "${snake[0]:0:1}" ]]; then
    for i in ${domino[@]}; do
      [[ "${snake[-1]:1:1}" == "${i:0:1}" ]] && return
      [[ "${snake[-1]:1:1}" == "${i:1:1}" ]] && return
    done

    state="false"

    if ${dbfish}; then
      if [[ "${snake[-1]:0:1}" == "${snake[-1]:1:1}" ]] || [[ "${snake[0]:0:1}" == "${snake[0]:1:1}" ]]; then
        for (( i=1; i < ${#gamer[@]}; ++i )); do
          if [[ "${played[mover-i]:(-1):1}" ==  "${snake[-1]:1:1}" ]]; then
            (( mover -= i ))
            [[ "${mover}" -lt 0 ]] && (( mover += ${#gamer[@]} )) # избавляемся от минуса
            break
          fi
        done
        echo "${msg_dbfish}"
        return
      fi
    fi

    echo "${msg_fish}"
    return
  fi
}

f_choice(){

  for ((i = 7*mover; i < 7*mover+7; i++)); do
    if [[ ${snake[-1]:1:1} == ${domino[$i]:0:1} ]]; then
      snake+=( "${EC}${domino[$i]}${DC}" )
      played[mover]+=" ${snake[0]:0:1}${domino[$i]}"
      f_0ut
      snake[-1]="${domino[$i]}"
      domino[$i]=''
      break
    elif [[ ${snake[0]:0:1} == ${domino[$i]:0:1} ]]; then
      domino[$i]="${domino[$i]:1:1}${domino[$i]:0:1}"
      snake=( "${EC}${domino[$i]}${DC}" "${snake[@]}" )
      played[mover]+=" ${snake[-1]:1:1}${domino[$i]}"
      f_0ut
      snake[0]="${domino[$i]}"
      domino[$i]=''
      break
    elif [[ ${snake[-1]:1:1} == ${domino[$i]:1:1} ]]; then
      domino[$i]="${domino[$i]:1:1}${domino[$i]:0:1}"
      snake+=( "${EC}${domino[$i]}${DC}" )
      played[mover]+=" ${snake[0]:0:1}${domino[$i]}"
      f_0ut
      snake[-1]="${domino[$i]}"
      domino[$i]=''
      break
    elif [[ ${snake[0]:0:1} == ${domino[$i]:1:1} ]]; then
      snake=( "${EC}${domino[$i]}${DC}" "${snake[@]}" )
      played[mover]+=" ${snake[-1]:1:1}${domino[$i]}"
      f_0ut
      snake[0]="${domino[$i]}"
      domino[$i]=''
      break
    fi
  done
  if [[ ${i} -eq ${mover}*7+7 ]]; then
    echo "${gamer[$mover]}: ${msg_skip}"
    played[mover]+=" ${snake[0]:0:1}${snake[-1]:1:1}-"
  fi
}

###
### file domino.bash
###

#!/bin/bash
 
. vars.inc
. msgs.inc
. func.inc

echo -en "\ec" # очистка терминала
clear

gamer[0]=${USER}

while true; do

  played=()
  snake=()
  state=''

  f_mixer

  (( score[0] + score[1] )) || mover=''

  case ${mover} in #################################################### первый ход
    '')
      for i in ${!domino[@]}; do
        if [[ ${domino[$i]} == 11 ]]; then
          mover=$(( i / 7 ))
          break
        fi
      done
      ;;
    0)
      echo -n ${domino[@]:${mover}*7:7}
      while true; do
        read -r -p ":"
          case $REPLY in
            [0-6][0-6])
              for ((i=0; i<7; i++)); do
                if [[ "${REPLY}" == "${domino[$i]}" ]] || [[ "${REPLY:1:1}${REPLY:0:1}" == "${domino[$i]}" ]]; then
                  domino[$i]="${REPLY}"
                  break 2
                fi
              done
              ;&
            *) echo -n "${msg_try_again}" ;;
          esac
      done
      echo '----------'
      ;;
    [1-3]) i=$((RANDOM % 7 + 7 * mover)) ;;
  esac

  snake+=( "${EC}${domino[$i]}${DC}" )
  played[mover]+=" ${domino[$i]}"
  f_0ut
  snake[-1]="${domino[i]}"
  domino[$i]=''
  super="${mover}"

  while true; do #################################################### игра

    (( ++mover ))
    for (( ; mover < ${#gamer[@]}; ++mover )); do
      f_choice
      f_round
      [[ "${state}" ]] && break 2
    done

    mover=0
    echo '----------'
    echo -n ${domino[@]:mover*vii:vii}

    while true; do
      read -r -p ':'
      case $REPLY in
        [0-6][0-6])
          for ((i=0; i<vii; i++)); do
            if [[ "${REPLY}" == "${domino[$i]}" ]] || [[ "${REPLY:1:1}${REPLY:0:1}" == "${domino[$i]}" ]]; then
              if [[ ${snake[-1]:1:1} == ${REPLY:0:1} ]]; then
                domino[$i]="${REPLY}"
                snake+=( "${EC}${domino[$i]}${DC}" )
                played[mover]+=" ${snake[0]:0:1}${domino[$i]}"
                echo '----------'
                f_0ut
                snake[-1]="${domino[$i]}"
                domino[$i]=''
                break 2
              elif [[ ${snake[0]:0:1} == ${REPLY:0:1} ]]; then
                domino[$i]="${REPLY:1:1}${REPLY:0:1}"
                snake=( "${EC}${domino[$i]}${DC}" "${snake[@]}" )
                played[mover]+=" ${snake[-1]:1:1}${domino[$i]}"
                echo '----------'
                f_0ut
                snake[0]="${domino[$i]}"
                domino[$i]=''
                break 2
              elif [[ ${snake[-1]:1:1} == ${REPLY:1:1} ]]; then
                domino[$i]="${REPLY:1:1}${REPLY:0:1}"
                snake+=( "${EC}${domino[$i]}${DC}" )
                played[mover]+=" ${snake[0]:0:1}${domino[$i]}"
                echo '----------'
                f_0ut
                snake[-1]="${domino[$i]}"
                domino[$i]=''
                break 2
              elif [[ ${snake[0]:0:1} == ${REPLY:1:1} ]]; then
                domino[$i]="${REPLY}"
                snake=( "${EC}${domino[$i]}${DC}" "${snake[@]}" )
                played[mover]+=" ${snake[-1]:1:1}${domino[$i]}"
                echo '----------'
                f_0ut
                snake[0]="${domino[$i]}"
                domino[$i]=''
                break 2
              fi
            fi
          done
          ;;&
        '')
          for ((i=0; i<vii; ++i)); do
            [[ "${snake[-1]:1:1}" == "${domino[$i]:0:1}" ]] && break
            [[ "${snake[0]:0:1}" == "${domino[$i]:0:1}" ]] && break
            [[ "${snake[-1]:1:1}" == "${domino[$i]:1:1}" ]] && break
            [[ "${snake[0]:0:1}" == "${domino[$i]:1:1}" ]] && break
          done
          if [[ "${i}" -eq "${vii}" ]]; then
            echo '----------'
            echo "${gamer[$mover]}: ${msg_skip}"
            played[mover]+=" ${snake[0]:0:1}${snake[-1]:1:1}-"
            break
          fi
          ;&
        *) echo -n "${msg_try_again}" ;;
      esac        
    done

    f_round
    [[ "${state}" ]] && break

  done #################################################### считаем

  played=(0 0 0 0) # сначала считаем всех

  for ((i=0; i<4; i++)); do
    for ((k=0; k<7; k++)); do
      played[$i]=$(( ${domino[7*i+k]:0:1} + ${domino[7*i+k]:1:1} + played[i] ))
    done
  done

  if ${dbzerox}; then
    for ((i=0; i<4; i++)); do
     [[ ${played[i]} -eq 0 ]] && played[$i]=10
    done
  fi

  if ${state}; then # если игрок закончил обнуляем очки
    played[mover-0]=0
    played[mover-2]=0
  else
    echo "${gamer[mover]}:" ${domino[@]:7*(mover-0):7} # если рыба, выводим камни
  fi

  echo "${gamer[mover-2]}:" ${domino[@]:7*(mover-2):7} # выводим всех остальных
  echo "${gamer[mover-1]}:" ${domino[@]:7*(mover-1):7}
  echo "${gamer[mover-3]}:" ${domino[@]:7*(mover-3):7}
  
  if (( (played[0] + played[2]) == (played[1] + played[3]) )); then
    (( eggs+=(played[0] + played[2])*2 ))
    continue
  fi

  (( i = (played[0] + played[2]) > (played[1] + played[3]) ? 0 : 1 )) # индекс пары, набравшей большее кол-во очков

  echo -n "${gamer[i]} + ${gamer[i+2]} = " # вывод проигравшей пары
  
  [[ ${score[i]} -ne 0 ]] && echo -n "${score[i]} + " # выводим, если есть, счет

  [[ ${fence[i]} -ne 0 ]] && echo -n "${fence[i]} + " # вывод забора, если есть

  echo -n "${played[i]} + ${played[i+2]} " # набранные очки

  if [[ ${score[i]} -eq 0 ]] && (( (played[i] + played[i+2]) < xiii )); then # если нет записи и набрали меньше xiii

    (( fence[i] += played[i] + played[i+2] )) # считаем результат на забор

    echo "= ${fence[i]} ${msg_onfence}" # окончательный вывод забора

  else # если есть запись или если нет записи и набрали больше 13, то пишем в счет

    [[ "${eggs}" -ne 0 ]] && echo -n "+ ${eggs}(${msg_eggs}) " # выводим, если есть, яйца

    (( score[i] += played[i] + played[i+2] + fence[i]  + eggs )) # считаем результат

    echo "= ${score[i]}" # выводим окончательный результат

    fence[!i]=0 # и забор противника сгорает
    eggs=0
  
  fi

  echo "${msg_total_score} ${score[0]} : ${score[1]}"

  if [[ ${score[$i]} -gt ${hundred} ]]; then
    [[ ${i} -eq 0 ]] && echo "Вы козёл :-)" || echo "Вам просто повезло."
    break
  fi

  echo '----------'

done

exit 0

 ,

sudoapter
()

Заметка для тех, кто хочет писать в личку (mail без шифрования).

Форум — Talks

Два договорившихся человека, в теме, публикуют свой свой temp mail, один из которых с возможностью отправки писем. Далее, второй ждет письмо с реальным адресом от известного адреса.

 ,

sudoapter
()

Почему у меня практически нет проблемм с линуксом?

Форум — Talks

Собственно сабж.

upd. Хотя нет, вот вспомнил одну: pulseaudio иногда делает пщ-пщ, в браузере.

 

sudoapter
()

альбатрос, ну кого я оскорбил?

Форум — Linux-org-ru

Ну зачем так делать, ведь был справедливый вопрос.

 

sudoapter
()

Почему я не могу заигнорить модератора?

Форум — Linux-org-ru

Если мне не нравятся, по какой-либо причине, позиция, комментарии некоего регистранта, то я могу его просто добавить в игнор. Но если мне не нравится поведение модератора, я не могу его заигнорить. Это можно как-то исправить? Почему я не могу заигнорить, например, шамана? Если мое сообщение будет удалено, я это и так увижу. Если мое сообщение адресовано модераторам, то я вижу количество скрытых сообщений.
cast @maxcom

 ,

sudoapter
()

альфа, ладно -7, но почему пустое сообщение?

Форум — Linux-org-ru

В толксах, вы сами знаете.

 

sudoapter
()

sct 4000 (цветовая температура) не могу в автозапуск

Форум — Desktop

Прописываю в автозапуск sct 4000 не отрабатывает. Прописал DISPLAY=":0.0" sct 4000 не отрабатывает. Как сделать?

Система - Ubuntu 18.04

 ,

sudoapter
()

В какой системе можно найти дзен?

Форум — Talks

Нет, я серьезно. Вот вы находитесь в некой операционной системе: debian, fedora, arch, slackware, gentoo… и различных ее дериативов.

 , , , ,

sudoapter
()

Как переключиться на новое ядро без перезагрузки?

Форум — General

Прилетело обновление на 18.04, в том числе и новое ядро. Перезагружать не хочется.

 ,

sudoapter
()

С праздником, товарищи!

Форум — Talks

Товарищи рабочие! Наступает день великого праздника рабочих всего мира. Первого мая празднуют они свое пробуждение к свету и знанию, свое объединение в один братский союз для борьбы против всякого угнетения, против всякого произвола, против всякой эксплуатации, за социалистическое устройство общества. Все, кто трудится, кто кормит своим трудом богатых и знатных, кто проводит жизнь в непосильной работе за скудную плату, кто никогда не пользуется плодами своего труда, кто живет подобно вьючному скоту среди роскоши и блеска нашей цивилизации, все они протягивают руку для борьбы за освобождение и счастье рабочих. Долой вражду между рабочими разных национальностей или разных религий! Такая вражда выгодна только грабителям и тиранам, живущим темнотой и разрозненностью пролетариата. Еврей и христианин, армянин и татарин, поляк и русский, финляндец и швед, латыш и немец — все, все идут вместе под одним общим знаменем социализма. Все рабочие — братья, и в их крепком союзе единственная порука за благо и счастье всего трудящегося и угнетенного человечества. Первого мая этот союз рабочих всех стран, международная социал-демократия, делает смотр своим силам и сплачивается для новой, неустанной, непреклонной борьбы за свободу, равенство и братство.
Товарищи! Мы стоим теперь в России накануне великих событий. Мы вступили в последний отчаянный бой с самодержавным царским правительством, мы должны довести этот бой до победоносного конца. (В.И. Ленин. Первое мая // ПСС В.И. Ленина, т. 10, с. 81-84.)

https://youtu.be/mvK7EcuptiY

 , , ,

sudoapter
()

Почему процесс создается два раза?

Форум — General
#! /bin/bash

p="/tmp/tmpipe"
[ -p $p ] || mkfifo $p

while true; do
echo "*** Starting session..."

tail -f $p | nc -l 4321 | {
  while read f; do
    f=${f//[^a-zA-Z0-9_.-]/}
    case $f in
          '') ls > $p ;;
      "quit") break ;;
           *) [ -f $f ] && cat $f > $p || echo "File Not Found" > $p ;;
    esac
  done
}
done
---------
> pgrep test-nc.sh
4039
4042

 , ,

sudoapter
()

Как должна быть эта фольга

Форум — Linux-hardware

Какая-то термическая фольга. С одной стороны черная - значит поглощающая сторона. С другой фольга - рассеивающая. Половина приклеена. При разборе была смята. Предполагаю, что должно быть так: https://pic4a.ru/03/uj2.jpg Но вот только если ее сложить так: https://pic4a.ru/03/yQz.jpg тогда она вроде прилегает к крышке.

 , ,

sudoapter
()

Lenovo IdeaPad Yoga 11 Tegra 3 32G/2048Mb Windows RT

Форум — Linux-hardware

Лежит по очень вкусной цене. На 4pda про него пишут: ‘‘никакую другую ОС поставить нельзя!’’ Это действительно так, или можно побороться?

 , ,

sudoapter
()

Парочка багов

Форум — Linux-org-ru

Нет моего комментария: Ubuntu 18.04 отказывается устанавливать .deb пакеты (комментарий)
здесь: https://www.linux.org.ru/search.jsp?range=COMMENTS&user=sudoapter&sort=DATE

У пользователя не все темы отображены в профиле: https://www.linux.org.ru/people/rusikus/profile

Если оставить комментарий в период 00:00 – 01:00, в статистике отображается вчерашним числом.

 ,

sudoapter
()

RSS подписка на новые темы