И это всё МОЁ

Не из консоли (я знаю про cancel), а из гуи? Как сделать это простому смертному в Gnome (Ubuntu 18.04)?

Раньше, в Unity, во время печати в трее появлялась иконка indicator-printers и кликом по ней, вызывалось окно с заданиями где можно все это было сделать.

P.S. Я терплю Gnome из последних сил уже, если не найду решение этой траблы, придется вернуться на Unity. Ну почему оно такое не юзабельное?








 , , ,








И это всё МОЁ

Привет всем,


Если кто-то разбирается в xi-editor, объясните плз следующую странность.


Я разработчик консольного клиента (фронтенда) к xi-editor. Заморочился вопросом реализовать частичную перерисовку экрана (например при движении курсора на 1 строку вниз надо перерисовать только старую и новую строку, а не все строки) при получении notification от xi-editor. Сейчас на каждый чих происходит полная перерисовка и это приводит к некрасивому миганию экрана.


Так вот, проблема в том, что уведомление о перемещении курсора является частью операции insert:


interface Op {
op: "copy" | "skip" | "invalidate" | "update" | "ins"
n: number // number of lines affected
lines?: Line[] // only present when op is "update" or "ins"
}

interface Line {
text?: string // present when op is "update"
ln?: number // the logical/'real' line number for this line.
cursor?: number[] // utf-8 code point offsets, in increasing order
styles?: number[] // length is a multiple of 3, see below
}


В результате, когда я перемещаю курсор вниз на 1 позицию со строки «aaa» на строку «bbb», вот какие нотификации приходят от xi-core:




  1. copy nb_lines=12 (скопировать 12 строк перед курсором из старого кэша в новый - ничего не меняется)




  2. ins nb_lines=2 (вставить 2 новых строки)





  • line: aaa

  • line: bbb cursor=0 (курсор в начало bbb)



  1. skip nb_lines=2 (пропустить 2 строки в старом состоянии)



  • line: aaa cursor=0 (курсор был в начале aaa)

  • line: bbb



  1. copy nb_lines = 33 (взять оставшиеся строки из старого кэша)


И это реально жесть. Мне приходит набор операций в виде вектора ops. По нему я очень быстро должен понять, был ли обновлён выводимый текст (не курсор). Позиция курсора в клиенте совершенно логично хранится отдельно от кэша самих строк и он, совершенно логично, рендерится отдельно поверх строк (termion::cursor::Goto). Как я блин пойму, что операция ins + skip на самом деле всего лишь обновила курсор, а текст не трогала?


Причём в спеке чёрным по белому сказано, что для нотификаций о курсоре предназначен оператор update:



In an «update» op, then the text property is absent from the line, and text is copied from the previous state (or left invalid if the previous state is invalid), and the cursor and styles are updated if present. To delete cursors from a line, the core sets the cursor property to the empty list.










 








И это всё МОЁ

Как известно, Столлман против несвободных скриптов на веб-страницах. Было выпущено руководство для веб-разработчиков, как помечать скрипты как свободные: https://www.gnu.org/software/librejs/free-your-javasсript.html и был выпущен плагин LibreJS.

Так вот, я установил этот плагин, и он показывает, что на ВСЕХ сайтах, есть скрипты без указания лицензии. Даже на википедии, движок которой свободный. Даже на ЛОРе.

Мне интересно, есть ли сайты, которые указывают данную информацию?








 ,








И это всё МОЁ

...Которые годятся в качестве обложки нотной тетради. Что-то я уже накачал, но в лицензии не уверен, а собираюсь делать нотные тетради на продажу, поэтому надо знать точно. Подскажите, пожалуйста!








 








И это всё МОЁ

Hydra Dominatus!
Жил я себе спокойно, а сегодня мне пришло заказное письмо интересного содержания типа я должен банку ВТБ около 40 рублей (именно рублей, не килорублей!) по кредиту, взятому в 2013. Типа коллекторам передали (удачи им). При этом в РФ я был в 2008, 2010 и 2019 годах (в мае, на конференции по медгенетике, останавливался у товарища с ЛОРа, кстати. ЛОР - СИЛА! Спасибо ещё раз этому человеку!) и никаких дел с ВТБ не имел. И чё с этим делать и в каком порядке?

Жду советов и заранее спасибо!








 ,








И это всё МОЁ

Всех приветствую.

Я тут познаю чудный мир git. В связи с чем возник вопрос.

Я запилил небольшой служебный проект. Хранил его локально. Историю сохранял в git.

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

localhost:/my_project - мой проект

remote:/mega_project - удаленный репозиторий
/tools - каталог для служебных проектов
/my_project - место куда должен попасть мой репозиторий

Как это можно сделать?

Хотя пока писал, подумалось только это в принципе невозможно.








 








И это всё МОЁ

Какие есть проксификаторы поддерживающие https? Proxychains-ng не поддерживает.








 , ,








И это всё МОЁ

Раньше я думал, что это круто - быть полностью анонимным в сети. Пытался и я стать таковым, полностью удалялся отовсюду. Но долго протянуть не смог. Хотелось общения. Но постепенно я стал практически полностью анонимным. Никаких контактов. Даже в телефоне только самые важные номера. Только сейчас не знаю, круто это или нет =)








 








18:16

metabase

И это всё МОЁ

Коллеги ,интересуют аналогижи этого продукта, желательно с открытым исходным кодом вы виду того что будем его допиливать скорее всего








 








И это всё МОЁ

Добрый день
Уесть система мониторинга KS Host, оттуда запускается проверка типа SSH Test, на сервере лежит скрипт, который в верном формате возвращает данные.
Возникла проблема, что при выполнении данной проверке на серверах с ОС CentOS 6 - все выполняется корректно.
При выполнении проверки на серверах с CentOS 7 - судя по логам, ssh дисконнект происходит ещё до выполнения скрипта. Настройки sshd_config сверил, вроде все верно, не подскажете, что это может быть.
Вот лог ssh сессии с сервера CentOS6 , где все работает:

debug1: Forked child 29293.
Set /proc/self/oom_score_adj to 0
debug1: rexec start in 5 out 5 newsock 5 pipe 7 sock 8
debug1: inetd sockets after dupping: 3, 3
Connection from XXX.XXX.XXX.XXX port 4413
debug1: Client protocol version 2.0; client software version KS_SSH
debug1: no match: KS_SSH
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.3
debug1: permanently_set_uid: 74/74
debug1: list_hostkey_types: ssh-rsa,ssh-dss
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: client->server aes128-cbc hmac-sha1 none
debug1: kex: server->client aes128-cbc hmac-sha1 none
debug1: expecting SSH2_MSG_KEXDH_INIT
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: KEX done
debug1: userauth-request for user MONITORING service ssh-connection method none
debug1: attempt 0 failures 0
debug1: PAM: initializing for "MONITORING"
debug1: PAM: setting PAM_RHOST to "XXXXXXX"
debug1: PAM: setting PAM_TTY to "ssh"
debug1: userauth-request for user MONITORING service ssh-connection method password
debug1: attempt 1 failures 0
debug1: PAM: password authentication accepted for MONITORING
debug1: do_pam_account: called
Accepted password for MONITORING from XXX.XXX.XXX.XXX port 4413 ssh2
debug1: monitor_child_preauth: MONITORING has been authenticated by privileged process
debug1: temporarily_use_uid: 501/501 (e=0/0)
debug1: ssh_gssapi_storecreds: Not a GSSAPI mechanism
debug1: restore_uid: 0/0
debug1: SELinux support disabled
debug1: PAM: establishing credentials
pam_unix(sshd:session): session opened for user MONITORING by (uid=0)
debug1: temporarily_use_uid: 501/501 (e=0/0)
debug1: ssh_gssapi_storecreds: Not a GSSAPI mechanism
debug1: restore_uid: 0/0
User child is on pid 29295
debug1: PAM: establishing credentials
debug1: permanently_set_uid: 501/501
debug1: Entering interactive session for SSH2.
debug1: server_init_dispatch_20
debug1: server_input_channel_open: ctype session rchan 0 win 16384 max 16384
debug1: input_session_request
debug1: channel 0: new [server-session]
debug1: session_new: session 0
debug1: session_open: channel 0
debug1: session_open: session 0: link with channel 0
debug1: server_input_channel_open: confirm session
debug1: server_input_channel_req: channel 0 request exec reply 1
debug1: session_by_channel: session 0 channel 0
debug1: session_input_channel_req: session 0 req exec
debug1: session_new: session 0
=======Тут результат выполнения скрипта=======
sudo: MONITORING : TTY=unknown ; PWD=/home/MONITORING ; USER=root ; COMMAND=/usr/sbin/asterisk -rx sip show registry
=================================================
debug1: Received SIGCHLD.
debug1: session_by_pid: pid 29296
debug1: session_exit_message: session 0 channel 0 pid 29296
debug1: session_exit_message: release channel 0
Received disconnect from XXX.XXX.XXX.XXX: 11: session close
debug1: do_cleanup
debug1: do_cleanup
debug1: PAM: cleanup
debug1: PAM: closing session
pam_unix(sshd:session): session closed for user MONITORING
debug1: PAM: deleting credentials

Вывод лога ssh с Centos 7, где идет сразу дисконнект

 Forked child 30820.
Set /proc/self/oom_score_adj to 0
rexec start in 5 out 5 newsock 5 pipe 7 sock 8
inetd sockets after dupping: 3, 3
Connection from XXX.XXX.XXX.XXX port 3948 on XXX.XXX.XXX.XXX port 22
debug1: Client protocol version 2.0; client software version KS_SSH
debug1: no match: KS_SSH
debug1: Local version string SSH-2.0-OpenSSH_7.4
debug1: Enabling compatibility mode for protocol 2.0
debug1: SELinux support disabled [preauth]
debug1: permanently_set_uid: 74/74 [preauth]
debug1: list_hostkey_types: ssh-rsa,rsa-sha2-512,rsa-sha2-256,ssh-dss,ecdsa-sha2-nistp256,ssh-ed25519 [preauth]
debug1: SSH2_MSG_KEXINIT sent [preauth]
debug1: SSH2_MSG_KEXINIT received [preauth]
debug1: kex: algorithm: diffie-hellman-group1-sha1 [preauth]
debug1: kex: host key algorithm: ssh-dss [preauth]
debug1: kex: client->server cipher: aes128-cbc MAC: hmac-sha1 compression: none [preauth]
debug1: kex: server->client cipher: aes128-cbc MAC: hmac-sha1 compression: none [preauth]
debug1: kex: diffie-hellman-group1-sha1 need=20 dh_need=20 [preauth]
debug1: kex: diffie-hellman-group1-sha1 need=20 dh_need=20 [preauth]
debug1: expecting SSH2_MSG_KEXDH_INIT [preauth]
debug1: rekey after 4294967296 blocks [preauth]
debug1: SSH2_MSG_NEWKEYS sent [preauth]
debug1: expecting SSH2_MSG_NEWKEYS [preauth]
debug1: SSH2_MSG_NEWKEYS received [preauth]
debug1: rekey after 4294967296 blocks [preauth]
debug1: KEX done [preauth]
debug1: userauth-request for user MONITORING service ssh-connection method none [preauth]
debug1: attempt 0 failures 0 [preauth]
debug1: PAM: initializing for "MONITORING"
debug1: PAM: setting PAM_RHOST to "XXXXXXXX"
debug1: PAM: setting PAM_TTY to "ssh"
debug1: userauth-request for user MONITORING service ssh-connection method password [preauth]
debug1: attempt 1 failures 0 [preauth]
debug1: PAM: password authentication accepted for MONITORING
debug1: do_pam_account: called
Accepted password for MONITORING from XXX.XXX.XXX.XXX port 3948 ssh2
debug1: monitor_child_preauth: MONITORING has been authenticated by privileged process
debug1: monitor_read_log: child log fd closed
debug1: temporarily_use_uid: 1001/1001 (e=0/0)
debug1: ssh_gssapi_storecreds: Not a GSSAPI mechanism
debug1: restore_uid: 0/0
debug1: SELinux support disabled
debug1: PAM: establishing credentials
pam_unix(sshd:session): session opened for user MONITORING by (uid=0)
User child is on pid 30822
debug1: PAM: establishing credentials
debug1: permanently_set_uid: 1001/1001
debug1: rekey after 4294967296 blocks
debug1: rekey after 4294967296 blocks
debug1: ssh_packet_set_postauth: called
debug1: Entering interactive session for SSH2.
debug1: server_init_dispatch
debug1: server_input_channel_open: ctype session rchan 0 win 16384 max 16384
debug1: input_session_request
debug1: channel 0: new [server-session]
debug1: session_new: session 0
debug1: session_open: channel 0
debug1: session_open: session 0: link with channel 0
debug1: server_input_channel_open: confirm session
==========Сразу идет дисконнект без выполнения скрипта========
Received disconnect from XXX.XXX.XXX.XXX port 3948:11: end
Disconnected from XXX.XXX.XXX.XXX port 3948
debug1: do_cleanup
debug1: do_cleanup
debug1: PAM: cleanup
debug1: PAM: closing session
pam_unix(sshd:session): session closed for user MONITORING
debug1: PAM: deleting credentials

Подскажите, пожалуйста, что может давать такой эффект








 ,








И это всё МОЁ

Собственно, кто работал с этой библиотекой, м.б подскажет, как тут сделать one-to-one связь? Т.е есть таблица и есть таблица на ее расширенные свойства. В каждой из таблиц должны быть ключи друг на друга. В SQAlchemy можно было просто использовать uselist=False. А тут есть только backref, как я понял. И создает он именно список.

Почему не взял SQAlchemy - peewee-async. Для SQLAlchemy ничего похожего не находил. Был, конечно, Gino для SQLA. Но я один раз взял его, намучался, и больше как-то не хочется.

P.S Прошу не разводить срач на тему Peewee vs SQAlchemy, а просто ответить, если кто использовал и знает.








 , , , ,








И это всё МОЁ

Хочу услышать мнения тех, кто пользовался этими ОС.

1 Где меньше багов? У меня последнее время баги были связаны с ядро, а не дистрибутивами. Например - Иногда компьютер зависает при выключении и не выключается Xubuntu 19.04 И вот - С ядром 4.15 - 5.0 не работает комп HP Compaq dc5800 Microtower [РЕШЕНО]

2 Насколько просто установить в CentOS Дропбокс и Вайбер в плане того, чтобы просто скачать с менеджера программ.

3 Нужно ли в CentOS что-то химичить, чтобы кодеки поставить, офисные программы и т.д.?

4 Насколько CentOS kde(я так понимаю нет xfce) быстрее xUbuntu?

5 Что-то от себя дополнительно можете добавить.








 , , , ,








И это всё МОЁ

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

Готов даже задонатить на такое нововведение!








 , ,








17:12

webmin

И это всё МОЁ

Добрый день
Не могу понять что с правами.
Поставил связку Debian + Webmin + Samba
Сделал общую папку.
Создал пользователя.
Захожу под Windows. Папку вижу.
Ввожу логин пароль. Нет доступа. Что за ерунада.

[backup]
force user = username
writeable = yes
write list = username
path = /mnt/backup
valid users = username
browsable = yes
user = username

[global]
server role = standalone server
passwd program = /usr/bin/passwd %u
netbios name = Debian
max log size = 1000
obey pam restrictions = yes
usershare allow guests = yes
log file = /var/log/samba/log.%m
panic action = /usr/share/samba/panic-action %d
os level = 20
map to guest = bad user
workgroup = WORKGROUP
logging = file
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
unix password sync = yes
pam password change = yes








 ,








И это всё МОЁ

У меня в CMakeLists.txt две цели - сначала идёт библиотека, а за тем исполняемый файл её использующий. Обе цели собираются из одного каталога.

Друзья, подскажите, как мне переносимо определить для библиотеки макро которое должно отсутствовать для цели исполняемого файла?








 ,








И это всё МОЁ

Почему на лоре все так любят ныть из-за банов? В чем сложно зарегать новый аккаунт и сидеть на лоре дальше? Даже если бан по IP(я хз есть ли такое тут), то просто юзай тор или прокси, и все делов-то….


Почему тут все так ноют из-за банов? или я чего-то не знаю?









 ,








И это всё МОЁ

Всем привет!

Что-то не понял как в tmux запустить 4 команды в отдельных окнах, прошу пояснить за скрипт, пытался таким образом, но одно окно пустое:

#!/bin/sh
tmux new-session -d -s bash_session

tmux send -t bash_session:0 "ls --help" C-m
tmux split-window -v -t bash_session

tmux send -t bash_session:1 "cat --help" C-m
tmux split-window -v -t bash_session

tmux attach -t bash_session

Терминал получается не на окна делиться, так что ли?








 ,








И это всё МОЁ

Сначала выдумывают причины, по которым можно заблокировать (и о которых никто кроме них самых не знал пока они их не придумали). Теперь вот при попытке прояснить ситуацию рандомно размахивают банхаммером и заметают следы. Заметают следы, понимаете? Вроде как «этот пользователь нарушал правила, мы его забанили». Это не правда, этот пользователь ничего не нарушал, а модераторы сами не знают правил, по которым модерируют.

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

Разблокируйте мой прошлый аккаунт и разойдёмся, я не хочу с вами общаться. Правил я не нарушал.








 , ,








И это всё МОЁ

Прочитал я тему Шамана, и… воодушевился. Так, что я аж вернулся сюда. Но отвечать там не могу, так как не хватает единицы скора. А теперь по теме:



  • Обновить главную страницу. Хоть и дизайн ресурса выглядит терпимо сих пор, но главная страница на ПК выглядит очень древне. Прямо-таки пришелец из Web 1.0, а не современный ресурс.

    • Попытаться облагородить оформление. Почему? Так как дизайн также является важным критерием привлекательности сайта, без этого уже давно нельзя, примерно со времён скевоморфизма. Чем больше сайт привлекателен, тем лучше отпечатается в памяти. Сделать полупрозрачные и плавающие при прокрутке элементы, думаю, несложно.

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





  • Сделать разделы форума метатегами, которые можно сочетать между собой. Модераторы могут отредактировать список метатегов, так как недобросовестные пользователи могут поместить тему во все разделы сразу.

    • Вследствие этого разрешить создавать другие метатеги, которые будут модерировать пользователи и настраивать их параметры. Этакий Reddit/Dirty для линуксоидов.



  • Сделать скор более динамичным, так как нынешняя система не поощряет новичков в достаточной мере.

    • Про карму отдельный вопрос… дело в том, что она лишает свободы мнения и позволяет устраивать коллективную травлю. Думаю, что ошибку Хабра повторять не стоит, когда несогласный с большинством (даже если он прав) оказывается проигравшим. За высказывания никто не должен нести наказание, если они не нарушают правила, так как это лишь мнение.



  • По поводу Talks’ов… так или иначе, но ресурс держится на данном разделе, и поэтому любая излишняя элитарность данного раздела будет идти во вред всему ресурсу. И результатом ограничения доступа даже на чтение для дозвёздночных (!) станет то, что Толксы окуклятся и станут непрозрачным клубом для тех, кто заработал звёзды (да, я здесь начинаю полноценно вступать в полемику с другими пользователями)

    • И вот здесь ещё одна спорная механика данного ресурса: звёзды, которые никак не отражают КПД пользователя. А отражают они, скорее сколько же он нафлудил превалирование количества над качеством, что порождает определённую категорию пользователей, которые пишут сообщения просто-таки водопадом, не взирая на качество.



  • А теперь переходим к т.н амальгаме кармы и КПД под названием «доверие пользователей». Это техническая механика, которая позволяет подсвечивать сообщения тех, кто действительно помогает в технических разделах. Сообщения тех, кто имеет отрицательную величину доверия, будут подсвечиваться красным. Те, кто имеет величину доверия



И это всё МОЁ

Читаю мысли Егора Бугаенко https://www.yegor256.com/2016/04/05/printers-instead-of-getters.html о том что геттеры - зло. Что-то похоже высказывал Аллен Голуб: https://www.javaworld.com/article/2073723/why-getter-and-setter-methods-are-e... .

Краткая мысль: объект не должен раздавать свои внутренние данные налево-направо. Поэтому и геттеров не должно быть.

Но вот что не даёт покоя. Как реализовать при этом подходе простейший use-case:

Есть книжный магазин BookStore. Требуется узнать какие в нём есть книги автора по его фамилии.

«Неправильный» и простейший поход, который напишет 9 из 10 разработчиков (язык неважен, хоть со стримами в java, всё одно в коде буду геттеры):

class BookStore
{
List<Book> searchByAuthor(String author)
{
List<Book> found;

for (int i = 0; i < this.books.length; i++) {
// EVIL
if (this.books[i].getAuthor() == author) {
found.append(this.books[i]);
}
}

return found;
}
};


Не пойму как реализовать этот use-case следуя парадигме вышеуказанных авторов без геттеров?








 , , , ,