[/b/] [/d/] [/tu/] [/a/] [/ph/] [/wa/] [/cg/] [/t/] [/p/]

[Burichan] [Foliant] [Futaba] [Greenhell] [Gurochan] [Photon] - [Home] [Manage] [Archive]

[Return]
Posting mode: Reply
Leave these fields empty (spam trap):
Name
Link
Subject
Comment
File
Verification
Password (for post and file deletion)
  • Supported file types are: GIF, JPG, PDF, PNG
  • Maximum file size allowed is 20480 KB.
  • Images greater than 200x200 pixels will be thumbnailed.

File: 1585764500031.jpg -(472714 B, 1920x1080) Thumbnail displayed, click image for full size.
472714 No.174285  

Скрипты/софт облегчающий жизнь.

Прошлый тред >>43960

>> No.174286  

>>174284

> Как переписать about:config не заходя в fireeox? Заменить на другой например.

Этот конфиг хранится в ~/.mozilla/firefox/имяпрофиля/prefs.js

>> No.174288  

>>174286
Спасибо тебе.

>> No.174302  
#!/bin/sh

############################################################
# Массовая конвертация текстовых файлов из CP-1251 в UTF-8.
# $1 - Директория с исходными файлами.
# $2 - Директория для сохранения новых файлов.
############################################################

# Проверка ввода
if [ $# -ne 2 ]; then
echo "Usage: $0 <INPUT_DIRECTORY> <OUTPUT_DIRECTORY>" >&2
exit 1
fi
if ! [ -e "$1" ]; then
echo "${1}: no such directory." >&2
exit 1
fi
if ! [ -d "$1" ]; then
echo "${1} is not a directory." >&2
exit 1
fi

# Удаление "./" или замыкающего слэша
INDIR="$(basename $1)"
OUTDIR="$2"

# Создание верхней директории
if ! [ -d "$OUTDIR" ]; then
mkdir "$OUTDIR"
fi

# Пересоздаётся структура директорий
find "$INDIR" -mindepth 1 -type d |
while read DIR; do
NEWDIR=$(echo "$DIR" | sed 's,[^/]*/,,')
mkdir -p "${OUTDIR}/${NEWDIR}"
done

# Конвертация текстов
find "$INDIR" -name '*.txt' |
while read INFILE; do
OUTFILE=$(echo "$INFILE" | sed 's,[^/]*/,,')
OUTFILE=${OUTDIR}/${OUTFILE}
file "$INFILE" | grep -q 'ISO-8859 text'
if [ $? -eq 0 ]; then
MTIME=$(stat "$INFILE" | sed -n 's/^Modify: //p')
iconv -f cp1251 -t utf8 "$INFILE" > "$OUTFILE"
sed -i 's/\r//' "$OUTFILE" # CRLF -> LF
touch -d "$MTIME" "$OUTFILE"
else
cp -p "$INFILE" "$OUTFILE"
fi
done
>> No.174314  

>>174302
Я считаю к таким скриптам нужно прикручивать проверку на integrity получившихся данных и их соответствие тексту из старых файлов.

>> No.174517  

Внезапно binwalk отлично детектит и распаковывает rarjpeg, zipjpeg и некоторые другие артефакты борд.

>> No.174543  
File: 1586627941047.jpg -(485512 B, 904x1280) Thumbnail displayed, click image for full size.
485512

>>174314
Как, если даже кодировку определить автоматически надёжным способом нельзя?
Разве только показывать каждый получившийся текст и спрашивать «Y/N» — что явно не подходит, потому что таких файлов могут быть сотни.

>> No.174567  

Можно ли в утилиту коммандной строки(например chmod) вместо нормального файлового пути скормить URI(file:///path)? В мане не нашел, в гугле нашел только через < <(curl -s URIpath).

>> No.174568  

>>174567
Что должна сделать chmod с http-ссылкой?

>> No.174569  

>>174567
Если используешь GNOME, есть всякие утилиты, начинающиеся на gvfs-. Для KDE тоже что-то подобное должно быть. Это самое близкое к тому, что тебе нужно.
>>174568
Это URL. К HTTP не имеет никакого отношения.

>> No.174573  

>>174569
Спасибо. Не помогло, но могло бы помочь, их слишком мало в моей системе. Если кому-то другому интересно, то здесь о них написанно:
https://wiki.gnome.org/Projects/gvfs/doc#Tools

>> No.174575  

>>174573
Расскажи, что пытаешься сделать. Можно же сконвертировать file:// в обычный путь к файлу.

>> No.174578  

>>174575
Мне подойдет и собственнный нагугленный способ из >>174567, спрашивал на случай более верных способов сделать это.

>Расскажи, что пытаешься сделать.

Скрипт/софт облегчающий жизнь. же.

>Можно же сконвертировать file:// в обычный путь к файлу.

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

>> No.174579  

>>174517

> Внезапно binwalk отлично детектит и распаковывает rarjpeg, zipjpeg и некоторые другие артефакты борд.
> и некоторые другие

А какие ещё есть/были? Я помню, на Сосаче году в 2011 кто-то выложил в /b/ якобы самописную тулзу для стеганографии, опять же, якобы для простоты шаринга известного контента, но вряд ли кто-то пользовался exe-шником без сорцов, лол.

>> No.174580  

>>174579
Последовательно натравливать разорхиваторы же.

>> No.174582  

>>174579
ddt?
Недавно ещё жила вроде.

>> No.174592  

>>174579
да тысячи их, даже imagic так умел, как ща помню
https://opensource.apple.com/source/file/file-44/file/magic/Magdir/archive
вообще, если только стеганография (без шифрования) то
https://weekly-geekly.github.io/articles/337084/index.html
t;dr ищем сигнатуры или характерные аномалии

>> No.174601  

>>174567
>>174578

>если crul вдруг не съест локальный путь или ещё каких-то проблем

Проблемы случились, этот способ:
< <(curl -s URIpath)
взятый отсюда:
https://stackoverflow.com/questions/5735666/execute-bash-script-from-url
работает видимо лишь с bash скриптами, передавая скорее всего контент, а не адрес, чего вообще-то и следовало ожидать.
Но полистав мануал curl я нашел флаг --quote, который должен позволять отправлять некоторые комманды(ln, chmod, chown, и т.д., всего штук семь) к файлу, что мне и нужно. Возможно что только по ftp и sftp.
Кажется, в итоге придется-таки говнокодить обёртку.

>> No.174632  

>>174601

> работает видимо лишь с bash скриптами, передавая скорее всего контент, а не адрес, чего вообще-то и следовало ожидать.

Не совсем понимаю, зачем ты привязался к этому [...] < <(curl -s URIpath). Он же эквивалентен curl -s URIpath | [...]. Вот [...] <(curl -s URIpath) уже другое дело.

Передаётся там не адрес и не контент, а путь к открытому пайпу из /dev/fd/. Работает только с теми программами, которых устраивает прочитать файл последовательно и один раз. Например, file <(cat /etc/passwd) так не сработает.

Объясни всё же, зачем тебе работать с file://, почему не подходит просто сконвертировать file:// в обычный путь, нужно ли тебе поддерживать ещё какие-то протоколы.

>> No.174858  

https://linux.die.net/man/1/rlwrap

>> No.174859  

>>174858
Ухты, еще и историю с поиском умеет.

>> No.174864  

sed -i /SpamSpamSpam/d *ass

Удалить все строчки содержащие SpamSpamSpam во всех *ass

>> No.174923  

>>174632
Ни то, ни то не работает.

>почему не подходит просто сконвертировать file:// в обычный путь

Подходит, для этого я и пытался использовать curl. Устанавливать новых библиотек не хочется.

В итоге я буду говнокодить обертку на пайтоне или баше конвертирующую это дело регулярками, и только в том случае если решу что это будет полезной тренировкой, потому что не настолько мне нужен этот скрипт.

Но сначала хотел на си написать этот скрипт, используя какую-нибудь часто используемую библиотеку для этого, попробовал uriparser, но оказалось слишком сложным переработать её код, и простейшая ide(анюта) не очень помогала мне.
Какими ide ты пользуешься?

>> No.174924  
File: 1587716598187.png -(5971 B, 388x383) Thumbnail displayed, click image for full size.
5971
>> No.174934  

>>174923

>>> url = 'file:///home/anon/Downloads/(%E4%B8%80%E8%88%AC%E5%B0%8F%E8%AA%AC)%20[%E4%BC%8F%E8%A6%8B%E3%81%A4%E3%81%8B%E3%81%95]%20%E4%BF%BA%E3%81%AE%E5%A6%B9%E3%81%8C%E3%81%93%E3%82%93%E3%81%AA%E3%81%AB%E5%8F%AF%E6%84%9B%E3%81%84%E3%82%8F%E3%81%91%E3%81%8C%E3%81%AA%E3%81%84%2001-11/'
>>> urllib.parse.unquote(urllib.parse.urlsplit(url).path)
'/home/anon/Downloads/(一般小説) [伏見つかさ] 俺の妹がこんなに可愛いわけがない 01-11/'

Не уверен, что там под виндой. Возможно, ещё придётся убрать начальный слэш и заменить прямые слэши на обратные.

>> No.174988  

>>174934

>urllib
>>Устанавливать новых библиотек не хочется.
>> No.174990  

>>174988
Но ведь urllib идет в коробке.

>> No.175201  

Давайте проверим насколько умно гитхаб блокирует проксиёбов!
Мой тор браузер забанили на скачивание https://github.com/rShetty/awesome-podcasts и, кажется, всех остальных репов, а ваш?

>> No.175202  

>>175201
Что ты имеешь в виду? Clone or download > Download ZIP? Это у меня работает.

>> No.175203  

>>175202
Да, у меня это не скачивает. У тебя отключен жс?

>> No.175206  

>>175203
Нет. Но если отключить, то тоже скачивает. Попробовал даже из-под свежезапущенного с отключенным JS.

>> No.175207  

>>175206
У меня тоже скачался сейчас. Но до этого в течении нескольких часов перезапуск не помогал. Я всё-таки думаю, что идентифицирет браузер как-то.

>> No.175301  

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

data:text/html;charset=utf-8, <html contenteditable>
>> No.175303  

И еще букмарклет, включающий/выключающий редактирование на любом сайте. Так легче копировать текст, делать навигацию курсором или делать фейковые скриншоты

Вставьте весь код как одну строку в поле URL при добавлении букмарклета.

javascript:(function(){
window.__preventLinkingCallback = window.__preventLinkingCallback || function(e){
e.preventDefault();
e.stopPropagation();
};
if (document.designMode === 'off') {
document.designMode = 'on';
document.querySelectorAll('a[href]').forEach(link => link.addEventListener('click', window.__preventLinkingCallback));
}
else {
document.designMode = 'off';
document.querySelectorAll('a[href]').forEach(link => link.removeEventListener('click', window.__preventLinkingCallback));
}
}());
>> No.175305  

>>175301
Чет не работает.
>>175303
А вот этот работает.

>> No.175577  

>>175301
>>175303
Где скачать третьих героев на js?

>> No.175580  

>>175577
https://habr.com/ru/company/jugru/blog/354014/

>> No.175598  

>>175580
Статья хорошая, но скачать игру не смог.

>> No.175606  

>>175580

>отметить его значимость для сообщества, потому что это единственный полностью написанный клон «Героев» на языке C, использующий дистрибутив оригинальных ресурсов, которые можно к нему подложить
>это единственный способ запустить третьих «Героев» на Android-устройствах

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

>> No.175633  

>>175606

>препятствием является языковой барьер, но тут скорее аддиктивность или нечто иррациональное

Да, я твою не понимать.

>>175301
>>175303
>>175580
Скажите, а как из js фронтендового в браузере гарантированно чистить оперативную память? Какие техники и апи использовали для этого до wasm, где об этом почитать?

>> No.175636  

>>175606
Уже нашел, надо было на английском гуглить. Эх рунет совсем загибается.

>> No.176261  

Для тех кто не может посинкать папку в mutt, потому что в нее постоянно что-то падает:

macro index 2 <sync-mailbox><sync-mailbox>
>> No.176265  

Скажите пожалуйста, как можно автоматизировать переименование субтитров под серии аниме?

>> No.176267  

>>176265
Что-то вроде
ls *ass | while read i ; do mv -v "$i" "$(echo $i | sed 's/replace from regex/replace to pattern/g')" ; done
но вообще у многих плееров есть опция в духе sub-auto=fuzzy которая автоматически матчит отличающиеся по имени субтитры.

>> No.176268  
File: 1591342247709.jpg -(106815 B, 850x927) Thumbnail displayed, click image for full size.
106815

>>176265

> как можно автоматизировать переименование субтитров под серии аниме?

С помощью скрипта. Смотря, в какой ОСи и как выглядят имена файлов изначально. И на чём писать.

>> No.176280  

>>176268

>Смотря, в какой ОСи

Достаточно заставить поставить WSL.

>> No.176287  
File: 1591431433308.jpg -(153276 B, 850x598) Thumbnail displayed, click image for full size.
153276

>>176267
Я один из немногих на этой борде, кто даже отдалённо ничего не понимает ни в программировании ни в линуксе, чтобы понять, что делать с тем, что ты мне написал. Ну да ладно, спасибо. Спустя некоторое время нашел программу под мою задачу.

>> No.176293  

>>176265
Когда-то нашёл ranger и больше боли не знал.
В нём есть скрипт bulkrename(хоть есть и аналоги, но не гуглил), который открывает VISUAL и в нём довольно удобно редактировать, особенно в виме.
До этого однострочниками уровня for-sed.

>> No.176396  
File: 1591732044522.jpg -(135305 B, 440x1200) Thumbnail displayed, click image for full size.
135305
xrandr --output OUTPUT --scale 0.5x0.5

Уполовинивает разрешение для OUTPUT. Можно пускать не адаптированный софт на UHD мониторах или получить в четыре раза больше fps в играх. 1x1 - вернуться в обычный режим.

>> No.177145  
File: 1594118895567.png -(961645 B, 1000x1098) Thumbnail displayed, click image for full size.
961645

Если в ~/.ssh/config дописать нечто вида

Host *.onion
ProxyCommand socat SOCKS4A:127.0.0.1:%h:%p,socksport=9050 STDIO

то на .onion хосты по ssh можно будет просто ходить через ssh blah-blah-blah.onion.

>> No.177152  

>>177145
Я думал Уцуха Tor не уважает.

>> No.177154  
File: 1594126237875.png -(1248576 B, 906x1200) Thumbnail displayed, click image for full size.
1248576

>>177152
Это просто инструмент.

>> No.177155  

>>176293
ranger заслуживает большего внимания и аудитории.

>> No.177171  

>>177154
Инструмент. Моим компьютером пользуешься, а на свой постить не всегда даёшь. Несправедливо.

>> No.177239  

https://www.byronknoll.com/cmix.html

архиватор с экстремальным сжатием и потреблением ресурсов

>> No.177903  

Отдает по http скриншот экрана. Когда нужно иногда поглядывать за тем, что там происходит.

#!/usr/bin/env python3

from flask import Flask, send_file
import os

app = Flask(__name__)

@app.route('/')
def screenshot():
os.system('import -window root /tmp/screen.jpg')
return send_file('/tmp/screen.jpg', mimetype='image/jpeg')

if __name__ == '__main__':
app.run()
>> No.177962  

>>177903

Но тут нужен предварительно скачанный flask, а между тем можно просто побровать использовать встроенный в пайтон веб сервер и cgi. ImageMagick не везде есть, но это уже придирки

>> No.177964  

>>177962
Это просто наколеночная поделка за 15 минут.

> встроенный в пайтон веб сервер и cgi

Не слышал про него раньше. Выглядит не так просто, как flask.

>> No.177983  

>>177903
Можно взять inetd или xinetd и без всяких питонов получать скриншот через netcat

>> No.177988  

>>177983
netcatом не очень удобно пользоваться на всяких планшетотелефонах

>> No.179383  

https://habr.com/ru/post/517146/

>> No.179387  

>>179383
За что люблю вивальди, так это подобные фитчи из коробки.
Если другие браузеры с каждым новым обновлением фитчи выпиливают, то в вивальди они появляются, при чём в более удобном виде.

Ну и стоит упомянуть qutebrowser, где так же это одна из основных фитч, даже более удобная, наверная.

>> No.179426  

>>179387

Это все равно хромиум.

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

>> No.179427  

>>179426
Никто не спорит, но это хромиум, в котором фитчи уже готовы, и всё сделано до нас.

И опять же, есть qutebrowser, в котором указанные фитчи уже есть пару лет(учитывая, что он релизнулся 5 лет назад).

>> No.179428  

>>179426
Да как-то не очень потихоньку https://twitter.com/MichalPurzynski/status/1293220570885062657

>> No.180446  

Есть ли какой-либо аналог sshfs умеющий в автомонтирование? Нужно делать что-то вроде

sshfsmount /mnt/sshfs
cat /mnt/sshfs/example.com/etc/passwd
>> No.180467  

>>180446

>Есть ли какой-либо аналог sshfs умеющий в автомонтирование?

Вероятно, запись с sshfs в fstab.

>Нужно делать что-то вроде

И это всё? Почему тогда нельзя просто через ssh запустить команду?

>> No.180470  

>>180467

> Вероятно, запись с sshfs в fstab.

Хосты динамические и их много. Слишком сложная и неустойчивая конструкция получится.

> И это всё?

Это пример того, как я себе представляю результат. Вот другой пример:

diff /mnt/sshfs/host{1,2}.example.com/etc/passwd

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

>> No.180879  

>>180446

СIFSD
NFS

>> No.180881  

>>180879
Как это поможет решить проблему автомонтирования неопределенного количества хостов?

>> No.181090  

>>180881

Там специальные демон автоматически монтирует файловую систему при загрузке ОС. Что делать с меняющимися хостами не знаю

>> No.181091  

>>181090
Проблема в том, что хостов слишком много и меняются они часто. Нужно монтировать хосты не при загрузке а при попытке обращения и размонтировать после завершения использования.

>> No.181141  

>>181091

ansible

>> No.181142  

>>181141
И как это поможет?

>> No.181144  

>>181142

Можно

> при обращении прозрачно соединяться с хостами, а после завершения всех операций разъединяться

https://stackoverflow.com/questions/53819706/difference-in-two-file-using-ansible-module

>> No.181145  

>>181144
Но приведенный пример даже не соединяется с удаленным хостом, а работает только на локалхосте. Каким боком он тут вообще?

>> No.181154  

>>181145

Нету разницы. Просто прописываешь удаленные хосты в инвентарь.

>> No.181155  

>>181154

> Просто прописываешь удаленные хосты в инвентарь.

Как сделать чтобы они туда прописывались при обращении к файлу?

>> No.181156  

>>181141
Тоже решительно не понимаю при чем тут Ansible, но вместо него советую pyinfra (https://pyinfra.com/).

Для SSH всем советую включить мультиплексировние в ~/.ssh/config (предварительно сделайте mkdir -p ~/.ssh/sockets):

Host *

      ControlMaster auto
ControlPath ~/.ssh/sockets/%r@%h-%p
ControlPersist 600

Тогда открытые соединения будут держаться 10 минут и использоваться повторно, намного быстрее будет подключаться. После этого можно пользоваться scp с автодополнением без всякого sshfs, будет довольно быстро.

>> No.181157  

>>181156

> но вместо него советую pyinfra (https://pyinfra.com/)

Пробежал по документации, но не нашел там упоминания как эту штуку куда-либо смонтировать.

>> No.181158  

>>181156
>>181157

> не понимаю при чем тут Ansible
> смонтировать

ansible/pyinfra позволяет выполнять операции на группах удаленных хостов, например читать с них файлы и делать diffы

>> No.181159  

>>181158
Но мне нужен прямой доступ к файлам удаленных хостов а не операции на удаленных хостах.

>> No.181190  

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

>> No.181195  

>>181190
Говорить об управлении памятью в отрыве от языка так себе идея. С конкретным языком можно почитать в оф доках или гайдах по языку.

>> No.181225  
File: 1602658766181.png -(1231718 B, 1280x720) Thumbnail displayed, click image for full size.
1231718

>>181190
А какие вообще бывают? GC, RAII, ARC (тоже RAII, только в компайл-тайме) и руками. Дальше ищи про поколения в GC и разные виды аллокаторов.

>> No.181561  

>>181225
Посоветуй книжку, если разбираешся.

>> No.181564  

https://www.memorymanagement.org/

>> No.182424  

>>181564
Спасибо, интересная ссылка, но похоже материалы там достаточно старые, и например много интересных в этих вопросах языков не рассмотренно, например D, Go и Rust не рассмотренны.

>> No.184270  
| Пастебин    |  Лицензия | На чём написан |
| bsd.ac | ISC | C++ |
| sprunge.us | WTFPL | Python |
| termbin.com | MIT | C |
>> No.184554  

https://why-vi.rocks/

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

:w !sudo tee %

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

:%!fmt -s -w 72

Также на этом сайте описана интеграция с tmux(1)

>> No.184830  

>>174285
Здесь есть целая коллекция сценарий практически на любой случай жизни.
https://github.com/LukeSmithxyz/voidrice/tree/master/.local/bin

Если нужно что-то новое, то первым делом иду туда, вдруг уже всё написано :-)

>> No.184832  

>>184554

> :%!fmt -s -w 72

А в vim это просто gv

>> No.184835  

>>184830

Ну не знаю, не очень понятно зачем нужен скрипт compiler, когда можно
просто написать Makefile.

>> No.184836  

>>184832

>А в vim это просто gv

http://vimdoc.sourceforge.net/htmldoc/visual.html#gv

Я не понял как, объясни пожалуйста.

>> No.184842  

>>184836
Опечаточка вышла, gq на самом деле.

>> No.184932  

>>184842

Ну вот да, это больше похоже. Хотя я всё ещё не понял, что надо
набрать, чтобы получить форматирование под 72 символа на строку твоим
способом.

>> No.184942  

>>184932

:set textwidth=72
V

выделяешь нужный кусок текста

gq
>> No.184944  

>>184942

Спасибо

>> No.185055  

Такой артефакт нашёл:
http://scripts.dragon-it.co.uk/

>> No.185117  
File: 1610119932254.png -(57212 B, 746x555) Thumbnail displayed, click image for full size.
57212
>> No.185120  

>>185055
>>185117

Главное чтобы жизнь облегчало

>> No.185180  

А что, куклоскрипт уже и скачать негде? Пишет, будто сайт заблокирован.

>> No.185181  

>>185180
Скачай с гитхаба.

>> No.185184  

>>185181

>Невозможно установить расширение с этого сайта

Значит, не судьба.

>> No.185185  

>>185184
Скачай в виде юзерскрипта.

>> No.185190  
File: 1610223864333.png -(130588 B, 471x512) Thumbnail displayed, click image for full size.
130588

>>185180
УМВР

Поставь софт облегчающий жизнь, а именно клиент wireguard[0].
Соотвественно можешь купить vps в для того, чтобы там настроить по
инструкции[1]. Либо можешь сразу в мануалы системы залезть, если там
подробно написано как wg интерфейс создать. Можешь покупать на vultr
или hetzner, главное, чтобы сервер был не в РФ, если ты собираешься
обходить блокировки сайта в РФ.

Не можешь или не хочешь настраивать сам ? Плати Найди тех,
кто за тебя сделал[2] и доверяй им.

>>185184

>>Невозможно установить расширение с сайта
>Значит не судьба

Не в обиду тебе, но это ламерское мышление.

[0]: https://www.wireguard.com/install/
[1]: https://www.wireguard.com/quickstart/
[2]: https://kitsune.su/configurations

P.S: Лучше бы вы не у себя устанавливали джаваскрипт, с содержимом вам
неизвестным, а поучили бы перл немного, создали тред в /d и присылали
туда патчи для вакабы версии 3.0.7

>> No.185192  

>>185190
Лучше всего вы бы у себя устанавливали джаваскрипт, с содержимым вам известным.
Да.

>> No.185195  

>>185190

> Лучше бы вы не у себя устанавливали джаваскрипт, с содержимом вам
> неизвестным, а поучили бы перл немного, создали тред в /d и присылали
> туда патчи для вакабы версии 3.0.7

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

>> No.185205  

>>185190
Звучит сложно, не нужно и с подозрительными ссылками, две из которых не позволяют установить соединение, а третья с какими-то QR-кодами, которые не очень хочется трогать.
Хотел установить куклу, потому что все расхваливт, что удобно. А там еще мудохаться надо с чем-то непонятным и неизвестно безопасным ли. Жил без нее и еще проживу.

>> No.185211  

>>185205

>Звучит сложно, не нужно и с подозрительными ссылками, две из которых не позволяют установить соединение, а третья с какими-то QR-кодами, которые не очень хочется трогать.
>сложно
>не нужно

А ты звучишь, как идиот.
Первые две ссылки на официальный сайт протокола wireguard,
а последния с конфигами для vpn клиента wireguard,
конфиги в виде qr кода, чтобы тебе,
не пришлось вводить текст конфига и публичных ключей в нём.

>> No.185212  

>>185211

>А ты звучишь, как идиот.

Ай-яй, умный дядька агрится на бедного непросвещенного, который имел глупость не потрать годы жизни на разбирательство в IT. Какой же я все таки плохой, пойду в окно выйду.

>Первые две ссылки на официальный сайт протокола wireguard, а последния с конфигами для vpn клиента wireguard

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

>> No.185213  

>>185195

Я скорее про то, что отдельный нужный функционал можно при желание и
знание перла запилить
1) Самому
2) На всю борду
3) Без лишнего джаваскрипта в браузере, который тут у многих отключен

Тред про куклоскрипт уже был https://nowere.net/b/res/180278.html

>> No.185214  

>>185212

Не должен. Скаже больше, тебе даже компьютер не особо нужен. Если бы
ты хотел, чтобы у тебя что-то работало, то ты бы разбирался сам. Это у
тебя не открывается сайт без vpn и не устанавливается расширение в
браузер, не у меня.

>> No.185215  

>>185212
Может прочитать его пост и посмотреть по ссылкам, а не плеваться кислотой?

>> No.185216  

>>185215
Зачем, если я вам доходчиво сказал, что не хочу. Я же не обзывал вас или что-то в этом духе, не надо мне навязываться.

>> No.185220  

>>185216

>Навязываться

Именно ты пришёл в тред посвящённый софту облегчающему жизнь и написал о своём неосиляторстве:
1) Отрытия заблокированных сайтов
2) Установки юзерскриптов
3) Чтения документации с гитхаба
4) Чтения сайта о wireguard
Это всё оффтоп.

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

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

То что ты чего-то хочешь или не хочешь, считаешь нужным или ненужным также оффтоп.

>> No.185443  
awk 'BEGIN{srand()}{for (i=1;i<=length;i++) {c=substr($0, i, 1);printf("%c", rand()<0.5?toupper(c):tolower(c));}print ""}'

Отсюда: https://twitter.com/gumnos/status/1268525177677262848
Только не копируйте не понятный вам код в командную строку

>> No.185444  

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

>> No.185453  

>>185444
mpd?

>> No.185463  

>>185453

Спасибо!

Вообще я не хотел, но у него boost только в BUILD DEPENDS:
https://openports.pl/path/audio/mpd

Так что ладно, наверное им я и буду музыку слушать, если вдруг не порт mus:
https://git.sr.ht/~q3cpma/mus

Кстати заходите на sourcehut.org мне кажется там много интересного, его тот же человек делает, что за sway и wlroots раньше[1] был ответственнен.

[1]: https://drewdevault.com/2020/10/23/Im-handing-wlroots-and-sway-to-Simon.html

>> No.185464  

>>185463
Еще можешь mpv попробовать, он правда больше под видео заточен, но как музыкальным плеером я им тоже пользуюсь.

>> No.185465  

Ну и раз уже я поднял тред, я недавно написал небольшой скрипт для xterm:

#!/bin/sh
echo -n "\033]0;$@\007"

Позволяет поставить заголовок для окон xterm, просто сделав xterm-name example_name. Это нужно для того, чтобы выбирать нужный терминал из списка окон, каким-нибудь dmenu или с помощью уже включённой в состав оконного менеджера менюшки в моём случае. Более того, можно поставить в заголовок вывод команды, например xterm-name $(hostname).
Ограничения в том, что для окон с tmux это не работает и tmux надо сначала отсоеденить, а потом снова подсоеденить к терминалу (tmux detach и tmux attach).
Судя по доке с tldp должно работать и с {u}rxvt.

>> No.185470  

>>185465
Твой скрипт работает только в определённой реализации /bin/sh. `printf "\033]0;%s\007" "$*"` работает везде и везде одинаково.

>> No.185476  

>>185470
Разве echo это не внешняя программа?

>> No.185481  

>>185476
Почти все шеллы имеют echo как встроенную команду. /bin/echo существует на всякий случай.

>> No.185482  

>>185481
Но ведь получается что если у шелла нету встроенного echo то он просто фолбекнется на внешний, но скрипт все равно будет работать.

>> No.185483  

>>185482
Не, не будет. Попробуй его в bash запустить. На некоторых системах /bin/sh это /bin/bash. А вот printf работает как положено на любой POSIX-совместимой системе.

>> No.185484  

>>185483
В bash работает, за исключением того момента что автор забыл ключ -e добавить.

>> No.185485  
#!/bin/sh 
printf "\033]0;$@\007"

>>185465

Спасибо, я поменял, но я не понял, почему именно так:

printf "\033]0;%s\007" "$*"

>>185483

Ну, у меня ksh, да. Но судя по мануалу, ты прав

https://man.openbsd.org/echo.1#STANDARDS

>>185484

Автор c tldp это взял, там такого ключа не было
https://tldp.org/HOWTO/Xterm-Title-3.html

>>185481
Иногда /bin/echo может быть тем же исполняемым файлом, что и /bin/sh
Можете меня поправить, но у меня так минимум с тремя системными утилитами

SHA1 (/bin/tar) = cf5ce0343f6c62b3637d9c7b8329f58d58ec5bb6
SHA1 (/bin/pax) = cf5ce0343f6c62b3637d9c7b8329f58d58ec5bb6
SHA1 (/bin/cpio) = cf5ce0343f6c62b3637d9c7b8329f58d58ec5bb6

Ведь они могут узнать своё имя просто из нулевого аргумента, а остальные опции парсить в соответствии с именем

>> No.185486  
File: 1610976229980.jpg -(109920 B, 720x960) Thumbnail displayed, click image for full size.
109920

>>185485

> Иногда /bin/echo может быть тем же исполняемым файлом, что и /bin/sh

На этом поприще заметно выделяется busybox, куда таких утилит засунули несколько сотен. Зато с ним удобно initrd собирать.

>> No.185524  

Новерь, посоветуй Джаббер–сервер, да и клиент. На данный момент я использую xmpp.jp и клиент Psi+, но тут стала появляться проблема, что многие сообщение просто не доходят до собеседника, что их нужно повторно отправлять.

Либо его аналоги какие–нибудь. Но только не "Телеграмм"!

>> No.185525  

>>185524

> многие сообщение просто не доходят до собеседника, что их нужно повторно отправлять

Вроде со многими s2s так.

>> No.185527  

>>185524
Не смотрел в сторону tox?

>> No.185551  

>>185485

> Спасибо, я поменял, но я не понял, почему именно так

"\033]0;$@\007" превращается в "\033]0;$1" "$2" "$3\007". "\033]0;$*\007" превращается в "\033]0;$1 $2 $3\007". Если оставить "$@", то xterm-name hello world как положено работать не будет.

printf "\033]0;%s\007" "$*" нужно потому, что без этого не работает xterm-name '%: n\a'.

>> No.185558  

>>185525

> Вроде со многими s2s так.

Ох…

>>185527
Хорошо, не знал про него. Только его функционал мне кажется избыточным.

>> No.185562  

>>185558

> Только его функционал мне кажется избыточным.

Но ведь никто не заставляет весь этот функционал использовать.

>> No.185566  

>>185551

Поправил. Теперь, будем думать, как его с тмуксом совместить.

>> No.185574  

Rss читалка конечно облегчат жизнь, но как у неё с язвимостями типа:
Billion laughs attack
quadratic blowup entity expansion
и другим, которые связаны со слабостями xml парсера ?

Может кто-то кроме меня пользуется ?

>> No.185607  
File: 1611249958302.png -(521510 B, 1366x768) Thumbnail displayed, click image for full size.
521510

>>185453

Извините, я не cмог удержаться и поставил winamp audacious. Всё из-за внешнего вида.
Вот отсюда скины можно брать:
https://skins.webamp.org/
Вот здесь как их легко включить:
https://wiki.archlinux.org/index.php/Audacious#Winamp

Прилагаю иллюстрацию для того, чтобы вам удостоверить, что всё работает.

>> No.185676  

>>185607
Впервые встречаю реального человека, который слушает Mass of the Fermenting Dregs. Как хорошо не быть уникальным. Cmus в качестве аудиоплеера не пробовал?

>> No.185715  

>>185524
Gajim/Conversations/Siskin в зависимости от платформы и Prosody, . Не хочешь свой собственный поднять? Я запилил и включил все, что захотел, могу помочь с настройкой. По поводу недоставленных сообщений, вы оба на xmpp.js находитесь? У него XEP для отложенной доставки включены, от собеседника к тебе все доходит?

>>185525
Наоборот, сервера для того и нужны, чтобы не спать 24/7 и мониторить коммуникации, обычно p2p этм страдают.

>>185527
Tox только усилит проблему доставки, ох и натерпелся я с ним в свое время. Хотя, вроде, весьма кривая отправка после появления собеседника в сети была года 3-4 назад, забыл уже. И аудиозвонки, которые в XMPP только один клиент под андроид нормально начал поддерживать с прошлого года, хотя расширение, описывающее их, довольно старое.

А так XMPP — лучшее по сумме характеристик, что было придумано. Весьма удобно, а для шифропанков завезли Tor и OMEMO. Из децентрализованных пробовал Tox и Ring/Jami и у обоих доставка сообщений весьма криво работает. Есть еще Matrix, но он в текущем состоянии — жуткое дерьмо, у которого сервер СЕРВЕР, КАРЛ написан на питоне, а официальный клиент — на электроне, судя по всему, сейчас главная цель у создателей инвестиции попилить, а на качество забили хер. Хочешь зайти в большую группу — виснет на минуту и в состоянии покоя жрет 600Мб оперативки, не рекомендую.

>> No.185716  

>>185715
О как, слово лол тут трется при отправке?

>> No.185718  

>>185715

> Наоборот, сервера для того и нужны, чтобы не спать 24/7 и мониторить коммуникации, обычно p2p этм страдают.

Я когда-то держал свой jabber сервер и там сообщения на другие сервера терялись с завидной регулярностью, хотя с самим сервером никаких проблем не было. Внутри все ходило как часы. Сейчас вот как раз на tox и перелез, он значительно реже по тихому сливает сообщения в /dev/null.
>>185716
лол

>> No.185721  

>>185718

>на другие сервера

Можешь по https://compliance.conversations.im их проверить, хотя ты про него, наверное, знаешь. В этом и проблема, я все контакты на своем регистрирую. В первое время не настроил SSL нормально, с других серверов даже подключиться не могли, не сразу понял, в чем дело.
Только им пользуешься? Я укатился отовсюду, использовал Tox параллельно с телеграмом и потом пока искал ему замену, рад, что на самохостинг перешел.

Да, в конце зачеркивания лол написал, а он съелся почему-то вместе с форматированием.

>> No.185723  

>>185721

> Можешь по https://compliance.conversations.im их проверить, хотя ты про него, наверное, знаешь.

Это давно было, с тех пор многое поменялось.

> Только им пользуешься?

Как основным im.

> Да, в конце зачеркивания лол написал, а он съелся почему-то вместе с форматированием.

странно&# лол

>> No.185725  

>>185715

> вы оба на xmpp.js находитесь?

Нет.

>> No.185732  

>>185676
CMUS пробовал о чём выше и написал. Мне не хватило в нём
• Возможности запустить его как демон, типа mpd. Без этого я не особо вижу смысл в туи. Этого и в audacious нет, но там просто красиво
• Возможности поставить на автоматическое проигрывание весь альбом. В audacious это гораздо проще делается плейлистом. Я именно что дискографии слушаю.

>Как приятно не быть уникальным.

Так может я твоё отражение, как в ghost in the shell.

>>185715

>сервер на пайтоне

И что ? Про sanic или gunicorn не слышал ?

>клиент на электроне

Не воодушевляет, да, но это всё ещё самый кроссплатформенный и при этом удобный для них гуй
inb4: qt

>> No.185753  

>>185732
Слишком очевидно, но moc[p] пробовал?
Плейлисты есть, демон есть. Плеер минимальный. Максимум - назначение скриптов на Fn-клавиши.

c: fe

>> No.185764  

>>185725
В этом и проблема, попроси его переехать или написать админу, чтобы починил.

>>185732
Про sanic или gunicorn не слышал ?
Да лучше бы и не слышал. Nginx — наше все.

>qt

Ага, хотя и его питоном испоганить можно. Gajim использует биндинги под GTK, на старте 100-200Мб памяти съедает, жду порта Dino под винду.

>> No.185775  

>>185753

Благодарю. Собрали почти все аудиоплееры без графического интерфейса, хех. Однако я не особо вижу смысла в запускаемом в терминале демоне для проигрывания музыке, если я буду слушать его только с одного устройство. Кроме самого ноутбука где я могу этот демон запустить и сервера в облаке с менее чем 50G, есть ещё шестой iPhone, но я не уверен, что на такую закрытую платформу завезли плеер, который будет работать по совместимуму с демоном протоколу.

>>185764

>на старте 100-200Мб памяти съедает

Если вас смущает прожористость пайтона, то хочу вас заверить, что на нём можно писать не тратя так много памяти. Для начала используя tuple вместо list где это возможно.

Вот видео по теме памяти в пайтоне с русского пайкона дветысячисемндацатого года
https://youtu.be/D0vbuIDOV4c

youtube-dl https://youtu.be/D0vbuIDOV4c

Можно конечно, сказать, что если писать на Си, то такого потребления не будет, но:
Во первых в Си гораздо проще забыть освободить память и нет уборщика мусора, который если что не нужный объект удалит.
Во вторых в Си гораздо проще засунуть выделение памяти в цикл.
Во третьих динамически выделяемая память в Си тоже не бесплатная. Хоть это стандартом совсем не оговорено, но malloc(0) аллоцирует совсем не ноль байт.

Не поймите меня неправильно, мне оба языка нравятся и на Си и на пайтоне я писал.

>> No.185776  

>>185775

> Для начала используя tuple вместо list где это возможно.

И 100500 подобных трюков для каждой используемой структуры данных для каждой из библиотек.

>> No.185777  

>>185776

>И 100500 подобных трюков для каждой используемой структуры данных для каждой из библиотек.

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

>> No.185780  
File: 1611454924390.png -(741289 B, 1280x720) Thumbnail displayed, click image for full size.
741289

>>185776
Все трюки питона чтобы работало лучше не идут ни в какое сравнение с количеством знаний, чтобы на плюсиках вообще работало

>> No.185781  

>>185777

Создать нормальный язык для вас трюк?

>> No.185782  

>>185780

Причем здесь c++? Есть же языки помимо этих двух.

>> No.185783  
File: 1611459318718.jpg -(34393 B, 500x373) Thumbnail displayed, click image for full size.
34393

>>185782
Остальные языки хуже.

>> No.185784  

>>185781

>Создать нормальный язык для вас трюк ?

Нет не трюк, почему же? Можно взять lex, yacc и сделать ещё одну версию awk, но, на мой скромный взгляд, просто написать () вместо [] в пайтоне проще.
А ваш loaded question уж очень похож на

>пи пи пу пу

Потому что пайтон и так нормальный язык, а новерь не торт и тупеет.

>> No.185788  

>>185775

> Для начала используя tuple вместо list где это возможно.

Разница будет заметна только если у тебя 100500 подобных объектов.

>> No.185790  

>>185784

> пайтон и так нормальный язык

То есть в твоем представлении нормально не уметь в лексикоскопию?

>> No.185791  

Вообще большое потребление памяти в пиноте вполне объясняется уборщиком мусора. Особенно в случае веб сервера. Который по дизайну для каждого нового запроса создает объекты, и потом сразу же их выкидывает. Если запросов много, то уборщик мусора будет тормозить. Добавить к этому GIL и проблемы с памятью неизбежны. Ну и конечно же для работы в несколько потоков нужно копировать весь объем памяти, запуская пинот в несколько процессов. Опять же, из-за GIL.

>> No.185792  

>>185783

ССЗБ

>> No.185793  
File: 1611483867069.png -(730715 B, 1000x710) Thumbnail displayed, click image for full size.
730715

>>185791

> Если запросов много, то уборщик мусора будет тормозить.

Ну вообще если не устраивают дефолтные параметры то он там настраивается. Или даже дергается вручную при необходимости.

> Ну и конечно же для работы в несколько потоков нужно копировать весь объем памяти, запуская пинот в несколько процессов.

Эта проблема отлично решается дедупликатором памяти.

>> No.185794  

>>185793

> дедупликатором памяти

костыль

>> No.185795  

>>185793

> Ну вообще если не устраивают дефолтные параметры то он там настраивается. Или даже дергается вручную при необходимости.

Можно вообще отключить. И переписать на cython.

>> No.185796  
File: 1611484877135.png -(1912494 B, 888x1200) Thumbnail displayed, click image for full size.
1912494

>>185794
Он создан как раз для решения подобных проблем и не только в питоне. И вообще запуск нескольких инстансов одного приложения - весьма распространенная штука, вплоть до того, что обработка входящих соединений через fork() является классикой.

>> No.185797  

>>185796

> запуск нескольких инстансов одного приложения - весьма распространенная штука

Ага, как и хранение состояния во внешней базе данных.

>> No.185833  
>firefox --kiosk

O
Файафокс только со скрытым адресс баром и табами.
Нашёл когда искал как запустить firefox с определённым профилем, для i2p.

>> No.185834  

https://staff.aist.go.jp/t.nakano/VocaListener/

>> No.185836  

>>185833
Если сделать себе .desktop файл с таким файафоксом и выставить в качестве домашней страницы веб-приложение, то чем бы это отличалось от этих всех web-to-desktop приложений на электроне?

>> No.185838  
File: 1611576674771.jpg -(630653 B, 925x1302) Thumbnail displayed, click image for full size.
630653

>>185836

> чем бы это отличалось от этих всех web-to-desktop приложений на электроне?

Из опыта использования веб версий электроноприложений - могут быть проблемы с хоткеями, внешним оборудованием и кодеками. Но в целом такой вариант работает.

>> No.185853  

Уцухо, как тебе ?

https://github.com/Antynea/grub-btrfs

>> No.185854  
File: 1611599982941.png -(4212571 B, 2480x2480) Thumbnail displayed, click image for full size.
4212571

>>185853
Выглядит как скрипт автоматической перегенерации конфига grub при создании снапшота. Возможно некоторым пользователям арча зайдет.

>> No.186091  

>>180470
Ты можешь со своими боtнетами писать на васме, а не тут? Мне нужно чтобы новерь работал, а в соседнем треде кгб понтуется cорм-ом и рекомендует не генерировать много лукового трафика.

>> No.186098  

>>186091
Ботнеты обычно не по ssh управляются, если что.

>> No.186103  

>>186098
Некоторые по ssh, не надо.

>> No.186232  

Мне было лень разбираться с projectile и иже с ним, поэтому у меня теперь есть менеджер сессий для Emacs из двух функций на елиспе и pipemenu под Openbox. Код не ахти, конечно. Его составные части уже лежали здесь.

Вот это суём в .emacs:

(defun write-sexp-into-file (filename sexp)
(let* ((bfr (find-file-noselect filename)))
(with-current-buffer bfr
(erase-buffer)
(print sexp bfr)
(save-buffer 0))
(kill-buffer bfr)))
(defun read-sexp-from-file (filename)
(let* ((bfr (find-file-noselect filename))
(sexp (read bfr)))
(kill-buffer bfr)
sexp))
(ignore-errors (mkdir (concat (getenv "HOME") "/.esessions")))
(defun save-session (where)
(interactive "sWhere")
(let ((all-files (mapcar #'buffer-file-name
(cl-remove-if-not #'buffer-file-name
(buffer-list))))
(dest (concat (getenv "HOME") "/.esessions/" where)))
(write-sexp-into-file dest all-files)))
(defun restore-session (where)
(interactive "sWhere")
(let ((all-files (read-sexp-from-file
(concat (getenv "HOME") "/.esessions/" where))))
(mapc #'find-file all-files)))

Вот это суём в файлик (у меня ~/bin/esessions.scm) и делаем chmod +x:

#!/usr/bin/guile
!#
(import (sxml simple))
(define *esessions* (string-append (getenv "HOME") "/" ".esessions"))

(define (listdir dirname)
(let loop ((dir-stream (opendir dirname)) (acc '()))
(let ((current-item (readdir dir-stream)))
(cond ((eof-object? current-item) (closedir dir-stream) acc)
((or (string=? current-item "..") (string=? current-item "."))
(loop dir-stream acc))
(else (loop dir-stream (cons current-item acc)))))))

(define (wrap-execute label exec)
`(item (@(label ,label))
(action (@(name execute))
(execute ,exec))))

(define (wrap-items items)
(sxml->xml `((openbox_pipe_menu ,@items))))

(define (execute ssn)
(string-append "emacs --eval '"
(with-output-to-string (lambda ()
(write `(restore-session ,ssn))))
"'"))

(define (generate-sessions)
(let* ((sessions (listdir *esessions*))
(items (map (lambda (ssn) (wrap-execute ssn (execute ssn)))
sessions)))
(wrap-items items)))

(generate-sessions)

Ну и pipemenu для openbox, menu.xml:

<menu execute="/home/$USER/bin/esessions.scm" id="esessions-menu" label="emacs..."></menu>
>> No.186233  

>>186232
Подправлю на случай, если каталога нет:

(define (generate-sessions)
(let* ((sessions (if (access? *esessions* F_OK)
(listdir *esessions*) '()))
(items (map (lambda (ssn) (wrap-execute ssn (execute ssn)))
sessions)))
(wrap-items items)))
>> No.186243  

>>186232

>pipemenu под Openbox

А оно совместимо с каким-нибудь dmenu или rofi?
Ну и кстати есть же несколько wm с конфигами на лиспе, почему коробка с xml ?

>> No.186245  
>А оно совместимо с каким-нибудь dmenu или rofi?

Смотря что ты имеешь в виду. Pipemenu от openbox как концепт, разумеется, несовместимо. Конкретно мой юзкейс сейчас совместим, небольшая идея под его развитие (открытие отдельных файлов или подсессии, что не особо-то и нужно), скорее всего, сделает dmenu не настолько удобным.

>Ну и кстати есть же несколько wm с конфигами на лиспе, почему коробка с xml?

Зависимость есть. Сам CL мне не удосужилось пощупать, считаю его не таким красивым, как scheme, но хочу всё-таки как-нибудь использовать его для одной небольшой (насколько небольшим может быть SBCL или ECL, если у меня получится перейти на него) кроссплатформенной программы. И sxml в CL не пользуются. А на scheme особо WM нет, а те, что есть, гордо заявляют, что они недоделки. Поэтому из других WM я пользуюсь парочкой не особо конфигурируемых и написанных на C, ведь я считаю себя ещё слишком маленьким для того, чтобы копаться в коде WM.

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

Если есть, что предложить из WM на лиспе, не стесняйся, предлагай.

>> No.186248  

>>186245

> Поэтому из других WM я пользуюсь парочкой не особо конфигурируемых и написанных на C, ведь я считаю себя ещё слишком маленьким для того, чтобы копаться в коде WM.

Там просто Си и иксовые либы. Это всё в юзерспейсе, так что не страшно.
Вот тред по сям https://nowere.net/b/res/183736.html
через некоторое время туда кроме рекомендации очевидного K&R2 постараюсь закинуть ссылку на новую книжку от человека из комитета стандартизации.
Мануалы по иксовым либам ищешь просто вводя

apropos -s 3 search_query

Вот в этом мануале написано какие иксовые либы для чего https://man.openbsd.org/XStandards.7
В некоторых мануалах будут ещё названия на тестов по теме, которые на самом сайте X.org лежат в формате pdf.
Есть wm, на 50 строчек кода, который можно использовать, чтобы что-то своё поверх писать:
http://incise.org/tinywm.html

>Смотря что ты имеешь в виду.

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

file $(ls -1 | dmenu)
>> No.186249  

Да, попрошу прощения не сами либы конечно, а заголовочные файлы, вот здесь https://man.openbsd.org/XStandards.7#INCLUDE_FILES

>> No.186254  

>>186248
Мной уже был написана под xcb (но не на Си, хотя k&r уже прочитан) парочка небольших, просто крошечных хелловорлдов, которые не относятся к WM.
Только для того, вот чтобы *самому* в одно лицо всё это сделать, недостаточно *просто* прочитать k&r и маны. Если человек это делает с нуля в конечном итоге для лиспа (да без разницы на самом деле, для любого языка, для которого нужен FFI), ему придётся понять FFI (и практику программирования, ага, опыт делается с программ поменьше), сделать так, чтобы его код действительно работал, закрыть особые случаи, сделать так, чтобы его работу приняли другие и не наплевали на него, а помимо всего этого человеку надо успевать как-то жить. И как-то не забросить сомнительное упражнение без выхлопа и с потенциалом завязнуть на мелком вопросе надолго, погрузившись в пучину отчаяния.

Я глубоко сомневаюсь, что человек, не знающий Си (ты адресовал свой пост именно с таким представлением обо мне), сможет сразу, с ходу выучить всё это и начать нагромождать хаки на tinywm. По крайней мере мне, учитывая мой темп усвоения информации, это не осилить и сейчас, когда пару-четвёрку параллельных вызовов xcb для меня уже больно делать. Мне нужен опыт и опыт на чём-то поменьше, чтобы до конца освоить Си и не бояться шагать вперёд.

Практику получить, конечно же, хотелось бы.

>Имею ввиду, что там тот же принцип когда вывод команды можно перенаправить в менюшку и менюшкой выбрать какой-то конретный элемент из списка.

Сама реализация pipemenu в Openbox умеет гораздо больше, это же не suckless, где самый настоящий минимум или близко к нему. Те же подменю на dmenu кладутся уже гораздо хуже. But hey, я могу жить и так. Другие люди, которые используют мой компьютер, правда, не смогут. Хотя им и не нужен емакс.

>> No.186258  

>>186254

>(ты адресовал свой пост именно с таким представлением обо мне)

Нет, честно, никак не представлял. Просто упомянул, что если что есть Си тред и можно там что-либо спрашивать. То что ты K&R2 прочитал это хорошо, но я примерно с тем же посылом, что мол рекомедация этой книги в треде вторым-третьим постом.

>Те же подменю на dmenu кладутся уже гораздо хуже.

Сыглы, для такого скорее 9menu. Хотя мне самому подмению не нужны.

>> No.186261  

Схороню здесь скрипты с 0chan/tech

>> No.186262  

Эвакуируем подкаталоги, максимально параллельно зашивая их в архивы:

DIR=~/data/; COMP=xz; MAXCOMPRESSORS=$(( `nproc` - 1 )); ls $DIR | (while read i; do  while [ "`ps aux | grep $COMP | wc -l`" -gt $MAXCOMPRESSORS ]; do sleep 60; done;  tar c "$DIR/$i" | COMP -9 > "$i.tar.$COMP" & done)

Если вызвать nbd-server строчкой nbd-server порт кого_экспортировать, он не запустится. Надо добавить пустой конфиг: nbd-server порт кого -C ""

Аналогично этому скрипту ждём освобождения от большого количества заспавненных процессов по цифре system load:

LOAD_THRESHOLD=50; SLEEP_INTERVAL=5; while [ `uptime | grep -o "age: [0-9]*" | cut -c 6-` -gt $LOAD_THRESHOLD ]; do sleep $SLEEP_INTERVAL; done;
>> No.186263  

pamdice — slice a Netpbm image into many horizontally and/or vertically.
pamslice -outstem=filenamestem [-width=width] [-height=height] [-verbose] [filename]

netpbm — это формат относительно удобочитаемых битмапов, во второй строке которых явно указан текстом размер. Ещё netpbm-картинки определённых форматов (P1,P2,P3 — текстовые форматы, P4,P5,P6 — собственно битмапы) удобно редактировать в текстовом редакторе, их можно генерировать/обрабатывать прямо в шелле.

Вот эта программа pamdice режет netpbm-картинки на несколько. Очень удобно, если надо распечатать что-то панорамное. Ничего подобного для других форматов и из редакторов найти не удалось.

Outstem — это префикс имени файла, после него идут четыре цифры и фаел приоберает вид:
фаел_00_00.p?m. Можно делать бомж-квадратную панораму и хоть сейчас вешать на стену, скрепив соплями. Даёшь фотообои с Номадом в каждый дом!

>> No.186264  

Попал на монгодб и не знаешь, куда нажать? Выполни это:

db.getMongo().getDBs()["databases"].forEach(function(e){eval(e.name + "=db.getMongo().getDB(\"" + e.name+ "\");");print("db " + e.name + " consists of:" + eval(e.name).getCollectionNames().map(function(ee){col=eval(e.name + "[\'"  + ee +"\']"); return ee + "(" + function(){try{ret=(col.exists()?col.count():"n/e")}catch(exn){ret="n/a"}return ret}() +")"}).join(" "))})

Если сниппет не поломан, выложит и замапит под горячую руку все доступные БД, напечатает коллекции с указанием размера.

>> No.186265  

Как править слетевшую кодировку с помощью iconv.

iconv -t кодировка-в-какой-прочиталось | iconv -f кодировка-в-какой-было

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

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

Суть процесса перекодировки проще понять, если понимать, как кодировка портилась: сначала правильную однобайтную кодировку прочитали (посчитали за) по кодовой странице неправильной, а потом перевели в юникод.

А теперь ловите одну интересную особенность iconv: он не умеет кодировать данные не целиком. Поэтому, если надо перекодировать огромный файл, его надо разделить. Это можно сделать хотя бы так

(while :; do read line; echo $line | iconv -f cp1251; done)<было >стало

или так

split -l 1000 --filter="iconv -f cp1251"
>> No.186266  

Делаем примитивный call/dependency graph для скриптов на питоне.

Схороняем скрипт и называем его rip.awk:

function chop_filename(str){
match(str, "/([^/]+)$", chopped);
return chopped[1];
}

function qprint(what){
print "\""what"\"";
}

function qprint2(fst, snd){
print("\""fst"\" -> \""snd"\"");
}

function seek_prev(indent)
{
for (unwind = stackptr - 1; unwind >=0 ; unwind--)
{
if (stack[unwind][0] < indent)
return unwind;
}
return 0;
}

BEGIN {MODE="print";#graph or print
COLOR="y";
COLOR_STEP=0.91/((ARGC >= 2)?ARGC:2);
HUE=-COLOR_STEP;
DEBUG="";
if (ENVIRON["NAMES"]) {MODE="graph"; CHECK=ENVIRON["NAMES"];};
if (MODE=="graph") print "digraph \"g\" {";}

END { if (MODE=="graph") print "}";}

(FNR==1) {
filename = chop_filename(FILENAME);
HUE+=COLOR_STEP;
if (MODE=="graph")
{
qprint(filename);
if (COLOR) print "[color=\""HUE" 0.5 0.5\"]";
stack[0][0] = -1;
stack[0][1] = filename;
stackptr = 1;
}
else
{
print(filename);
}
}

(match ($0, "^(\\s*)(class|def)\\s+([a-zA-Z0-9_]+)", arr) > 0) {
name = arr[3];
if (MODE == "print")
{
print name;
next;
}
indent = length(arr[1]);
qprint(name);
if (COLOR) print "[color=\""HUE" 1 0.7\"]";

prev_pos = seek_prev(indent);
qprint2(stack[prev_pos][1], name);
if (COLOR) print "[color=\""HUE" 0.7 0.7\"]";
stackptr = prev_pos + 1;

stack[stackptr][0] = indent;
stack[stackptr][1] = name;
stackptr += 1;
}

($0 !~ "^\\s*$") && (match ($0, "^(\\s*)(class|def)\\s+([a-zA-Z0-9_]+)", arr) == 0){
if (MODE == "print") next;
match($0, "^(\\s*)");
prev_block_margin = stack[stackptr - 1][0]; # what to do?
if (DEBUG) print ("prev", prev_block_margin, "now", RLENGTH);
if (RLENGTH <= prev_block_margin)
{
if (DEBUG) print "seeking back";
if (DEBUG) print FILENAME, $0;
prev_pos = seek_prev(RLENGTH);
stackptr = prev_pos + 1;
}
else
{
prev_pos = stackptr - 1;
}
while (getline ck_name < ENVIRON["NAMES"])
{
if ($0 ~ ck_name"\\s*\\(") # Is RE good enough?
{
qprint2(stack[prev_pos][1], ck_name);
}
}
close(ENVIRON["NAMES"]);
}

Скрипт написан под gawk.

Используем в два этапа:

find code_base/ -name "*.py" | xargs -I {} awk -f rip.awk {} | sort | uniq > code_base_names
find code_base/ -name "*.py" | NAMES=code_base_names xargs awk -f rip.awk > code_base_graph.dot

Просматриваем code_base_graph.dot с помощью программы dotty, параметры графа, узлов и рёбер меняем с помощью программы gvpr, печатаем с помощью dot -Tформат граф > вывод , например: dot -Ppng code_base_graph > code_base_graph.png. Все программы из пакета graphviz.

>> No.186267  

Xpra.
Xpra — это, как говорят его же разработчики, аналог screen для X. Из себя представляет X-сервер с возможностью присоединения живущих на нём окон на другой X-сервер.

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

Во время загрузки выполняем скрипт, где есть следущее:

XPRA_DISP=:7
AS_USER=nullcat
sudo -iu $AS_USER LANG=ru_RU.UTF-8 xpra start --mdns=no --bell=no --webcam=no --socket-dir=/home/$AS_USER/.xpra/ --pulseaudio=no $XPRA_DISP &
while :; do if sudo -iu $AS_USER xpra list --socket-dir=/home/$AS_USER/.xpra/ | grep -q "LIVE session at $XPRA_DISP"; then break; sleep 1; fi; done
sudo -iu $AS_USER LANG=ru_RU.UTF-8 DISPLAY=$XPRA_DISP приложение &

Залогинились, запускаем xpra attach :7 --socket-dir=/home/nullcat/.xpra/ и видим окошки.

>> No.186268  

Присасываемся к чужому X-серверу по ssh, проброс X наоборот.

cookie=`ssh user@host 'xauth list | grep unix:0 | cut -f 5 -d" "'`
ssh user@host -L /tmp/.X11-unix/X1:/tmp/.X11-unix/X0 -N &
xauth add :1 . $cookie

После чего запускаем приложения c DISPLAY=:1 и видим, что они поднялись на другом X-сервере.

>> No.186269  

Ещё есть такая интересная штука, как broadway, но работает она только с gtk-приложениями. Из себя представляет веб-сервер, который может хостить приложения на GTK. Например, transmission-gtk, переложенная на broadway, дает гораздо больше опций, чем её веб-интерфейс.

In a nutshell:
broadwayd --address 127.0.0.1 --port 8081 :1
GDK_BACKEND=broadway BROADWAY_DISPLAY=:1 gedit

Открываем браузер на 127.0.0.1:8081 и видим там gedit.

>> No.186270  
(require 'cl)
(ignore-errors (mkdir (concat (getenv "HOME") "/.esessions")))

(defun write-sexp-into-file (filename sexp)
(let* ((bfr (find-file-noselect filename)))
(with-current-buffer bfr
(erase-buffer)
(print sexp bfr)
(save-buffer 0))
(kill-buffer bfr)))
(defun read-sexp-from-file (filename)
(let* ((bfr (find-file-noselect filename))
(sexp (read bfr)))
(kill-buffer bfr)
sexp))

(defun save-session (where)
(interactive "sWhere")
(let ((all-files (mapcar #'buffer-file-name
(cl-remove-if-not #'buffer-file-name
(buffer-list))))
(dest (concat (getenv "HOME") "/.esessions/" where)))
(write-sexp-into-file dest all-files)))
(defun restore-session (where)
(interactive "sWhere")
(let ((all-files (read-sexp-from-file
(concat (getenv "HOME") "/.esessions/" where))))
(mapc #'find-file all-files)))

Простенькие сессии для emacs. Сувать в ~/.emacs , вызывать на M-x save-session и M-x restore-session.

>> No.186273  

Скачивание изображений с https://github.com/klkvsk/0chan на python

#!/usr/bin/env python3
from requests import get
from sys import argv, exit
from os.path import getsize

def get_images(thread):
for attachment in get_attachments(thread):
if 'images' in attachment.keys():
i = attachment['images']['original']
yield (i['name'], proto + i['url'], float(i['size_kb']))


def get_attachments(thread):
for post in thread['posts']:
if 'attachments' in post.keys():
for a in post['attachments']:
yield a


try:
proto, _, domain, board, thread = argv[1].split('/')
except (IndexError, ValueError):
print('Usage: {} thread_url'.format(*argv))
exit(1)

thread = get('{}//{}/api/thread?thread={}'.format(proto, domain, thread)).json()
for filename, image_url, size_kb in get_images(thread):
if not filename.replace('.', 'a').isalnum():
print("invalid filename: ", filename)
continue

headers = {}
try:
found_size = getsize(filename)
except FileNotFoundError:
pass
else:
if found_size >= (size_kb - 1) * 1024:
continue
headers['Range'] = "bytes={}-".format(found_size)

r = get(image_url, stream=True, headers=headers)
if r.status_code == 200:
print('saving new image to file:', filename, end=' ', flush=True)
mode = 'wb'
elif r.status_code == 206:
print('resuming download of file:', filename, end=' ', flush=True)
mode = 'ab'
else:
print('error downloading image {}: {}'.format(image_url, r.status_code))
continue

with open(filename, mode) as f:
for chunk in r:
f.write(chunk)
print("\b\b\b\b{:>3}%".format(int(f.tell()/(size_kb*1024)*100)), end='', flush=True)
print('\b\b\b\bdone')
>> No.186274  

Скачивание изображений с https://github.com/klkvsk/0chan на bourne shell

#!/usr/bin/env zsh
setopt nullglob
thread_url=( ${(s:/:)1} ) # split first argument into array by slashes:
# http nullchan7msxi257.onion b 60985
if ! ((thread_url[4])) || [[ $thread_url[1] =~ ^https?$ ]]; then
echo "Usage: $0 http://thread_url"
exit 1
fi
echo "Fetching thread..."
curl "${thread_url[1]}//${thread_url[2]}/api/thread?thread=${thread_url[4]}" \
| jq -r '.posts[].attachments[].images["thumb_200px", "original"] | "\(.name) \(.url) \(.size_kb|floor)"' \
| while read name url size_kb; do
[[ name =~ ^[a-z0-9.]+$ ]] || continue
[ -z $name(Lk+$size_kb) ] || continue
echo "Downloading $name (${size_kb}kb)..."
curl -\# -C- -o $name "${thread_url[1]}$url"
done
>> No.186275  

Блиин, чего никто не использует пайтон 3 для своих целей? Например скрипт изменяющий цвета интерфейса элементов системы или скрипт подменяющий какой-то элемент рендера или либу, на свой более легковесный.

Качалка с mangachan и прочих — https://pastebin.com/6ZR9hkv7

Абстрактные UNIX-сокеты и обычные UNIX-сокеты живут в разных неймспейсах.
Это написано в man 7 network_namespaces:

> In addition, network namespaces isolate the UNIX domain abstract socket namespace.

Осталось понять, где живут обычные сокеты. Похоже, в mount namespace.

http://tilde.club/~pfhawkins/othertildes.html

Шелл-сервера.

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

https://shells.red-pill.eu

>> No.186276  

nbd-client не умеет в старый протокол NBD, а qemu-nbd умеет.
Только для qemu-nbd стоит не забыть отключить кэш, иначе сначала приятно удивит скорость, а потом приятно удивят неотзывчивость и потерянные данные.

nbdkit же умеет всем этим делом заправлять и по ssh, и по http, и через что напишешь. Хоть в инстаграме QR-кодами образы пили.

>> No.186279  
File: 1612633657101.png -(542612 B, 600x917) Thumbnail displayed, click image for full size.
542612

>>186265

> А теперь ловите одну интересную особенность iconv: он не умеет кодировать данные не целиком. Поэтому, если надо перекодировать огромный файл, его надо разделить.

С чего бы это? Вот прямо сейчас отлично сожрал 30-гиговый файл и не подавился. Для скипа некорректных символов существует ключ -c, который их заменяет на '?'.

>> No.186281  

>>186267

>Xpra — это, как говорят его же разработчики, аналог screen для X.

Лучше бы они description нормальный написали, по тому, что из написанного ниже напоминает Xnest или Xephyr

>>186265
Срыв покровов и ломающие новости. Если что есть ещё enca ей тоже можно кодировку менять и даже определять.

>>186274

>bourne shell
>#!/usr/bin/env zsh

Что-то мне подсказывает, что shellcheck тут покажет несколько варнингов.

>>186273
requests тут конечно оче нужен и стандартной библиотекой[1] не обойтись.

[1]: https://docs.python.org/3.8/library/urllib.request.html#urllib.request.Request

>>186266

А вот за это благодарю, я ещё люблю отдельную пайтоновскую функцию глянуть через

awk '/def func/' RS= module.py

Ну и раз уж такое дело, то вот ещё скриптик, чтобы из hosts файла перегнать в unbound зону. Я про него уже раньше говорил на новере

#!/usr/bin/awk -f
BEGIN {
infile = "hosts";
outfile = "block.local"
while((getline blockedsite < infile) > 0 ){
gsub("0.0.0.0 ", "", blockedsite);
# \x22 is escape sequance for double quote in ascii
printf("local-zone: \x22%s\x22 refuse \n",\
blockedsite) > outfile;
}
close(infile);
close(outfile);
}

Ну и хреновина для смены раскладки
#!/usr/bin/awk -f

BEGIN {

    cmd_query = "setxkbmap -query | awk '/layout/{print $2}' ";
cmd_us = "setxkbmap us -variant colemak";
cmd_ru = "setxkbmap ru";
    cmd_query | getline layout;
close(cmd_query);
    if ("ru" == layout)
system(cmd_us);

if ("us" == layout)
system(cmd_ru);

}

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

>> No.186291  
File: 1612665336460.jpg -(1379979 B, 2880x1800) Thumbnail displayed, click image for full size.
1379979

Отпивает кофе.
>>186261
Кто ты такой и зачем ты решил напомнить мне мой скрипт в >>186270 сразу после того, как тут я запостила дополнение для него? Зачем ты преследуешь меня, раскапывая дела давно минувших дней на дне океана?

>> No.186358  

>>186091
Как у них там дела, в соседнем треде?

>> No.186399  

>>186279
Сообщения не мои
>>186281

>shellcheck тут покажет несколько варнингов

Диалект bourne shell
>>186291
Я хотел поделиться скриптами с других борд, там треды мертвы.
Я напомнил неспециально, не заметил новую версию.

>> No.186400  

Запускаем VPN через TOR в новом сетевом неймспейсе Linux.

#!/bin/sh
#chain tor -> socat proxy -> vpn in a separate network namespace

CONFIG=$1 #first argument

#a namespace file for use with namespace utilities
NAMESPACE=/tmp/nchain
#unix socket used for forwarding Tor connections from the namespace
USOCKS=/tmp/ntor

touch $NAMESPACE
sudo unshare --net=${NAMESPACE} true
sudo nsenter --net=${NAMESPACE} ifconfig lo up

#A hack for openvpn so it will replace the default route
#which is not present at the moment
#since the only network interface is lo (which is not listed in the routing table)
sudo nsenter --net=${NAMESPACE} ip route add 127.0.0.0/8 dev lo
sudo nsenter --net=${NAMESPACE} ip route add default via 127.0.0.9

#tor forwarder
socat UNIX-LISTEN:${USOCKS},fork TCP:127.0.0.1:9050 &
sudo nsenter --net=${NAMESPACE} sudo -u $USER socat TCP-LISTEN:9050,fork UNIX-CONNECT:${USOCKS} &
# now we have tor in that ns, add openvpn
# better use openvpn's --socks-proxy 127.0.0.1 9050

sudo nsenter --net=${NAMESPACE} openvpn --socks-proxy 127.0.0.1 9050 --config $CONFIG

#we can accumulate the socats' PID's and remove all the accumulated junk in here

#after that enter the namespace in a separate terminal with
#sudo nsenter --net=/tmp/nchain sudo $USER
#and run whatever you want to run
>> No.186401  

git+ssh через тор: часть отсюда https://stackoverflow.com/a/27343179
часть отсюда https://stackoverflow.com/a/37100346
Итого:

Host github-tor-alias
HostName github.com
IdentityFile ~/.ssh/tor_only_rsa
User git
ProxyCommand socat STDIO SOCKS4A:127.0.0.1:%h:%p,socksport=9050

И добавить remote repository вида ssh://git@github-tor-alias/<username>/<repository>.git

>> No.186402  

Как настроить тор если на компе только ipv6.
Добавить в /etc/tor/torrc:

ClientUseIPv4 0
ClientUseIPv6 1
ClientAutoIPv6ORPort 1
ClientPreferIPv6DirPort 1
ClientPreferIPv6ORPort 1
>> No.186403  

Все default keybindings readline (bash):

INPUTRC=~/dev/null bash -c 'bind -pm emacs'
>> No.186405  

Если есть: ipv4 only host1, ipv4+ipv6 host2, ipv6 only host3

и нужно с host1 зайти по ssh на host3, то:

host2 $ sudo socat TCP4-LISTEN:22000,fork,su=nobody TCP6:[<host3_ipv6>]
host1 $ ssh -N -L 22000:localhost:22000 user@<host2_ipv4>
host1 $ ssh -p 22000 localhost
>> No.186406  
File: 1612903363046.jpg -(258876 B, 800x676) Thumbnail displayed, click image for full size.
258876

>>186405
Зачем такие сложности, когда можно просто сделать так:

ssh -J host2 host3
>> No.186554  

>>185775

>Для начала используя tuple вместо list где это возможно.

Да, и кучу других подобных трюков. Вместо того, чтобы понять, как работает железо, и оптимизировать прямо под него, приходится разбираться, как работает интерпретатор. Оптимально, наверно, получится на всем писать, тот же vscode по некоторым отзывам нормально работает, но выходит, что легкость написания, порожденная кучей слоев абстракции, нивелируется умениями, необходимыми для оптимизации, на которые в большинстве случаев кладется хер. Ну и сейчас годный софт утонул в море поделий, которые любой васян за неделю напишет, а в некоторых областях нормальные решения вообще невозможно найти, эпидемия мессенджеров на электроне чего только стоит.

>если писать на Си

Ну зачем сразу Си, Си решетка тоже весьма неплох, он где-то посередине. Пересел на него с джавы года 3 назад, пишу всякие программки для себя, Си для микроконтроллеров оставил. Клиент для дискорда и слака Ripcord, который некоторое время был вынужден использовать, ест всего 50 мегабайт с несколькими чатами и почти не грузит процессор.

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

Их найдут статические анализаторы. Это идет вместо умений оптимизации высокоуровневых языков, я считаю, в вузе первое программирование на нем велось, сначала страдал, потом привык.

>Во вторых в Си гораздо проще засунуть выделение памяти в цикл.

Опять же, анализатор.

>Во третьих динамически выделяемая память в Си тоже не бесплатная.

Не бесплатная, да, но оверхед гораздо ниже и ты полностью контролируешь ее использование.

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

>> No.186741  

https://addons.mozilla.org/en-US/firefox/addon/linkredirector/

>> No.186746  
File: 1613489080378.jpg -(171616 B, 850x1200) Thumbnail displayed, click image for full size.
171616

>>186554

>Вместо того, чтобы понять, как работает железо, и оптимизировать прямо под него

А вот хер ты это сделаешь на любом языке. Вплоть до асма, который транслируется в из легаси-x86 в реальные инструкции процессора где-то в микрокоде.

>Да, и кучу других подобных трюков.

Их не так много, по сравнению с сями, где приходится знать даже о таких неочевидных вещах, как pointer aliasing

>легкость написания, порожденная кучей слоев абстракции, нивелируется умениями, необходимыми для оптимизации

В худшем случае у тебя всё равно будет что-то работоспособное и без проблем с безопасностью из-за случайного выхода за границы массива.

>годный софт утонул в море поделий, которые любой васян за неделю напишет

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

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

> решетка тоже весьма неплох

Ты бы ещё явку предложил. Хотя,

>Пересел на него с джавы года 3 назад

всё с тобой понятно

>> No.186747  

Объективно, на смеси плюсов и питона можно написать вообще всё, как угодно балансируя между производительностью и скорость написания, беря лучшее из обоих миров. А когда Раст окрепнет, можно будет, наконец, и плюсы закопать.

>> No.186751  

Знаю, что вопрос глупый, но за спрос вроде как не бьют.
Итак, можно ли передавать параметр напрямую алиасу в .bashrc? Допустим, скармливать таким образом mpv ссылки на видео в Youtube, чтобы плеер запускался с определёнными, уже заранее заданными параметрами. Искал решение в гугле, но все предлагают громоздить трёхэтажные фукнции на bash или вообще реализоваывать подобные вещи через отдельные скрипты. А напрямую через alias так можно?

>> No.186753  

>>186751
https://stackoverflow.com/questions/7131670/make-a-bash-alias-that-takes-a-parameter

tl;dr - в алиас нельзя, но можно в функцию (а функцию ничего не мешает затолкать прямо в .bashrc)

>> No.186754  

>>186753
Ага, значит без обертывания в функцию не обойтись. Ну что же, значит так. Спасибо за ответ.

>> No.186769  

>>186746
Гурочка...

>> No.186775  

>>186751
Мне кажется, что если параметр последний, то можно: алиас должен развернуться, а параметр пойдёт вместе с развёрнутым списком.

>> No.186781  

Ваша гурочка - пустая трата хорошего дизайна, который надо было отдать японке.

>> No.186782  
File: 1613593677994.jpg -(881638 B, 1010x1428) Thumbnail displayed, click image for full size.
881638

>>186781

>который надо было отдать японке.
>She gives her surname first, Japanese style, even when speaking in English. Takanashi Kiara and Ninomae Ina'nis also does this, while Calliope Mori and Amelia Watson use the English name order when speaking in English.
>Gura is the only member of holoMyth to write her name entirely in hiragana. This is consistent with her poor spelling skills in English.
>During her debut, Gura misspelled multiple words: salmon as "salman", stomach as "stomak", Twitter as "Tiwtter", and Twister as "tiwster". This trend would continue later with her mispronouncing "almond milk" as "Ame milk", "iron" as "arm", and misreading "she will die" as "she while dee". In recent streams, these occurrences are either very rare or nonexistent.

https://www.youtube.com/watch?v=Pt7KbDvUwmQ

>> No.186783  

Как её можно не любить? https://www.youtube.com/watch?v=Dv3UO7pcYjg

>> No.186784  
File: 1613597229543.jpg -(190618 B, 982x1248) Thumbnail displayed, click image for full size.
190618

>>186782
Ой, аж хирагану знает, прям дочь самурая ни дать ни взять.
>>186783
Что бы мы делали без мемасов из сталкера, слов cyka bl9d', водки и воровского жаргона. Как можно не любить клюкву, гопоту в абибасе, лузгающую семки с ягаром под хардбасс, сидя на кортах. Как хорошо, что у иностранцев именно такое представление о России.

>> No.186786  
File: 1613601335841.jpg -(366423 B, 850x1470) Thumbnail displayed, click image for full size.
366423

>>186784
Olive boi, calm down

>> No.186830  

>>186781

> трата хорошего дизайна, который надо было отдать японке

Китаянке, блин. У нихонок и так достаточно персонажей. Девицам из других стран как раз стоит учиться.

>> No.186833  

>>186830
Ну или хотя бы китаянке на худой конец. Девицы из других стран не нужны.

>> No.186834  

>>186833
Ебать ты гитлер

>> No.186835  

>>186833
Поддерживаю, у азиаток все совсем плохо с внешностью, пусть лучше прячут это под модельки.

>> No.186843  
File: 1613717615411.jpg -(248387 B, 1066x1600) Thumbnail displayed, click image for full size.
248387

>>186833
Я ж говорю, может быть научаться быть милыми, а не жопы качать. А ты сразу ненужны. Race mix — плохо.

>> No.186846  
File: 1613719216249.jpg -(30089 B, 740x347) Thumbnail displayed, click image for full size.
30089

>>186843
Не научатся, а превратят все в треш и другим пример покажут. И так активно это делают.

>> No.186851  
File: 1613726016445.jpg -(40599 B, 300x453) Thumbnail displayed, click image for full size.
40599

>>186846
Азиатки с этим сами отлично справляются. Вопрос не в расе, а в командах людей, стоящими за проектом.

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

>> No.186852  

В конце концов всё перемешается https://www.youtube.com/watch?v=IFXDZAlUXqU

Может, пришло время переместить все эти посты в отдельный тред втьюберов?

>> No.186853  

>>186843

> Race mix — плохо.

>>186834

>> No.186854  
File: 1613728679668.png -(434896 B, 1035x428) Thumbnail displayed, click image for full size.
434896

>>186851
Хотя сама Мацури и каждый из её подписчиков дегенераты, иногда у неё выходят ламповые стримы.

>> No.186858  

>>186851
О, девочка которая пьёт мочу https://danbooru.donmai.us/posts/4365543

>> No.186894  
File: 1613787669163.png -(858382 B, 1172x758) Thumbnail displayed, click image for full size.
858382

if you sat in a puddl of ur own piss long enough wud ur leg disintegrate?

https://www.youtube.com/c/senzawa/videos

c:raw

>> No.186895  

>>186894
Хорош свое говно тащить в тред о скриптах.

>> No.186896  

>>186895
Не нравится - создай новый тред и обсуждай там свои скрипты.

>> No.186914  

>>186896

Нет, он просто пожалуется на дерейл этого треда.

>> No.186915  

>>186914

>пожалуется на дерейл
>nowere.net

недавно, наверное?

>> No.187064  

>>186915
Нет года три или четыре уже как.

>> No.187066  

ssh user@domain "printf 'dir' | pax -w " | pax -r
Используйте для копирования директорий и файлов вместо scp.
Pax стандартизирован[1] IEEE, а scp объявлен устаревшим на lwn[2].

[1]: https://man.bsd.lv/pax.1#STANDARDS
[2]: https://lwn.net/Articles/835962/

>> No.187067  
yes | head -n 72 | tr -d '\n'

Напечатает 72 символа, под которые часто форматирую письма и коммиты, можно использова в стандартном редакторе ed. Он, как и vi есть в POSIX, но для vi можно просто

esc 72 i y esc
>> No.187068  

>>187067

Yes в POSIX я не нашёл, но его просто на Си создать.

#include <unistd.h>
int
main(int argc, char *argv[])

{

    if (argc > 1)
for (;;)
puts(argv[1]);
else
for (;;)
puts("y");
}

Ещё могу версию на авк или пайтоне сделать, кому няшный не по нраву.

>> No.187069  

>>187068

Ой, тут stdio должен быть вместо unistd

>> No.187070  
File: 1614185994165.png -(1219274 B, 1184x1625) Thumbnail displayed, click image for full size.
1219274

>>187066
Почему бы не tar, который встречается на порядок чаще и пакует по сути в тотже формат?
>>187067
Можно еще так:

printf "%72s\n" "" | sed "y/ /./"

где . - требуемый символ

>> No.187075  
File: 1614198572464.png -(28275 B, 713x229) Thumbnail displayed, click image for full size.
28275

>>187070

>Почему бы не tar, который встречается на порядок чаще и пакует по сути в тотже формат?

Тоже можно, но мне кажется pax просто проще выглядит со своими опциями командной строки, поэтому и рекомендую её тем, кто не может запомнить опции командной строки tar.

>Можно еще так:
printf "%72s\n" "" | sed "y/ /./"
>где . - требуемый символ

Можно, но тут целый тьюринг полный sed. Хотя спасибо, красиво.

>> No.187081  
File: 1614237578206.jpg -(4209043 B, 3508x2480) Thumbnail displayed, click image for full size.
4209043

>>187075

> кто не может запомнить опции командной строки tar

Но ведь нет ничего зазорного в том, чтобы посмотреть в man или --help.

>> No.187082  

>>187081

Ну, здесь полностью согласен. Остаётся только сказать, что мне просто pax больше нравится

>> No.187687  

https://sourceforge.net/projects/ddclient/

Поддерживает бесплатные домены с https://freedns.afraid.org/

Не одним route 53 единым.

>> No.187714  

Извините за косноязычее в предыдущем посте

>> No.187952  
File: 1615827102338.jpg -(159348 B, 1280x1242) Thumbnail displayed, click image for full size.
159348

>>186091
>>180470
>>186103
Релейтед

>> No.187956  

>>187952
Вот так админишь крупную инфраструктуру, а тебя за ботнетоводоа принимают.

>> No.187980  

>>187067

printf ".%.0s" {1..72}
>> No.188473  
sqlite> .import --csv data.csv data

импортирует csv-файл в таблицу sqlite, которую потом можно тыкать всеми плюшками sql

>> No.188916  

Отключает вылезающую адресную строку в firefox, about:config:
ui.prefersReducedMotion = 1 (по дефолту нету, нужно создать)
browser.urlbar.maxRichResults = 0

>> No.188920  
>Копируй ссылки кодированные в punycode'е как обычный текст: (https://ru.wikipedia.org/wiki/Релизная_группа)

browser.urlbar.decodeURLsOnCopy = 1

>Убери one-click search engines которые появляются под адресной строкой при поиске:

options -> search -> search shortcuts: убрать галки для каждого поисковика в прокручиваемом окошке; опция browser.search.hiddenOneOffs

firefox

>> No.188951  
File: 1617356984549.png -(2550109 B, 2092x1282) Thumbnail displayed, click image for full size.
2550109

>>188920

На всякий случай сообщаю: если думаете, что в адресе https://ru.wikipedia.org/wiki/%D0%81%D0%B6 строка «%D0%81%D0%B6» представляет собою примѣръ punycode, то тогда не знаете, что такое punycode; подите без промедления и прочтите https://ru.wikipedia.org/wiki/Punycode тогда.

>> No.188959  

>>188920
https://ru.wikipedia.org/wiki/URL#Кодирование_URL
Напридумывали стандартов.

>> No.188988  

>>174285

Демон состояний сетевых интерфейсов. Есть под FreeBSD и OpenBSD. Я использую для того, чтобы автоматически переподключаться после разрыва соединения. Наличие подключения проверяется пингом к айпи адресу dns сервера.

Пример моего конфига:

dns_provider_ok = '"ping -q -c 1 -w 1 ip.ad.re.ss" every 10'
state neutral {
if ! $dns_provider_ok {
run "sh /etc/netstart imw0"
}
}

Пример конфига из /etc/examples/ifstated.conf:
https://github.com/openbsd/src/blob/master/etc/examples/ifstated.conf
Мануал: https://man.openbsd.org/ifstated.conf
Было бы интересно узнать как это делается в линуксах, может быть сам напишу, но позже.

>> No.188990  

Вышеупомянутый демон примечателен, тем что в его конфиге можно писать конфигурации гораздо сложнее моей, например проверять доступность по сети того или иного сервиса и уведомлеяя об это системного администратора в syslog с помощью logger или с помошью mail через smtp. Также можно создавать избыточность фаерволов через взаимодействие с carp(4).
Проверить правильность написанной конфигурации можно с помощью команды

ifstated -n

Единственное но, что нельзя запускать запускать однострочники использующие одинарную кавычку, такие как

ifconfig iwm0 | awk '/status/{print $2}'

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

>> No.188991  

Да, видимо я буду ещё переписывать этот конфиг:

wifi_if_up = 'iwm0.link.up'
dot_provider_ok = '"ping -q -c 1 -w ip.ad.re.ss" every 10'
state neutral {
if ! $dot_provider_ok {
set-state no_dns
    }
}
state no_dns {
run "sh /etc/netstart"
if ! $dot_provider_ok && $wifi_if_up {
run "echo 'DoT down' | mail -s 'DoT issue' anon"
}
}
>> No.188992  
File: 1617529146787.jpg -(170891 B, 1024x1280) Thumbnail displayed, click image for full size.
170891

>>188988

> Было бы интересно узнать как это делается в линуксах, может быть сам напишу, но позже.

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

>> No.188993  

>>188990

>потому что в таком случае одинарная кавычка будет обработана как часть конфига, а не команды.

Давно пора перестать использовать малопонятную даже пишущему лапшу на баше и внедрять для этих целей питон на уровне системы.

мимо ниасилил awk и sed, каждый раз гуглю

>> No.189015  

>>188993

А потом иметь две версии питона, проблемы с идентацией и тормозной рантайм. Не говоря уже о том что он далеко не везде вобще есть.

>> No.189017  

>>189015

>две версии питона,

Напомни, зачем нужен шабанг?

>проблемы с идентацией

Не любишь, когда твоя лапша выглядит структурировано?

>тормозной рантайм.

Зависит от задач и, собственно, рантайма.

>далеко не везде вобще есть.

Как и другие компоненты, благодаря чему имеем зоопарк дистрибутивов на любой вкус

>> No.189018  

>>189015

>тормозной рантайм
>man bash | tail -n 22 | head -n 2
BUGS
It's too big and too slow.
>> No.189020  

>>189017

> Не любишь, когда твоя лапша выглядит структурировано?

Структурированность кода и многчисленные ошибки дизайна питона не имеют ничего общего.

На все остальные три момента: позиксный шелл и корутилсы есть действительно везде.

>>189018

Всё верно, используй позикс и утилиты по назначению.

>> No.189024  

>>188993

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

>>189015

>две версии питона,

Уже одну только. Да и проблемы двух пайтонов решаются venv'ами.

>проблемы с идентацией

Идентация четыре пробела. Какие тут могут быть ещё проблемы не понятно.

>тормозной рантайм

На бэкэнде скейлится пайтон, а не gawk.

>Не говоря уже о том что он далеко не везде вобще есть.

Пайтон часть стандарта lsb. Так что на линуксах он должен быть.

>>189020

>позиксный шелл и корутилсы есть действительно везде

На виндовс сервер с hyper-v нету

>> No.189027  

>>189024

> Идентация четыре пробела. Какие тут могут быть ещё проблемы не понятно.

Всё так, пока их не станет два, три, один таб или любая другая комбинация.

> На бэкэнде скейлится пайтон, а не gawk.

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

Пытаться использовать на беке питон -- затея уровня использовать там же ноду, пхп или те же шеллскрипты.

> Пайтон часть стандарта lsb. Так что на линуксах он должен быть.

Ага, а ещё там иксы, и qt и gtk одновременно. Но это же не значит что они обязательно установлены на каждой машине.

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

У питона безусловно есть свои ниши, но как правило - доменно-специфичные: приложеньки, которые выбрали его эмбедом, академическая среда, обранчевавшиеся от неё сообщества мат и в особенности - статанализа. Да и в принципе всё что может позволить себе не беспокоиться ни о поддержке кода и статическом его анализе в частности, ни о стабильности апи или его гомогенности, ни о деталях рантайма, ни о стандартизированности и портируемости окружения, едва ли заимеет какие-либо проблемы с питоном.

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

>> No.189028  

Я не понял, питон предложили из-за одной кавычки? Конфиг читается, зачем тут питон?

>> No.189034  

>>189028
Везде нужен питон.

>> No.189053  

>>189027

>Всё так, пока их не станет два, три, один таб или любая другая комбинация.

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

>Только скейлится он в итоге либо точно так же

Пиздёж. Где йоба gawk фреймворки типа пайтоновской штанги ? Где аналог flask ?

>Но это же не значит что они обязательно установлены на каждой машине.

Нехер использовать дистрибутивы не следующие стандартам.

>я умный, а все остальные не читают мануалы.

Если что мнение про пайтон и awk не моё, так сам Керниган сказал в одном из интервью computerphile.

>> No.189056  
>скрипт который будет рандомные слова из словаря отправлять в дакдакго через порт 127,0,0,1;9150 и скачивать страницы оттуда через рандомное время но в заданный промежуток.
while true; do
sleep $(($min_period + RANDOM % ($max_period - $min_period)))
curl -s -X POST --data-urlencode "q=$(shuf -n 1 "$words")" --data-urlencode "b=" https://html.duckduckgo.com/html/ | \
xmllint --html --xpath 'string(//a[@class="result__a"]/@href)' - 2>/dev/null | \
xargs wget -nv -p -k
done

Вместо $min_period и $max_period подставь периоды запуска (в секундах), вместо $words - путь до файла со словарём. Требует curl, wget и libxml2 (в Debian - libxml2-utils). Запускать через tsocks.

>> No.189058  

>>189056
В качестве альтернативы xmllint можно так же использовать

| tr -d '[:space:]' | grep -Po '<a[^<>]*"result__a"[^<>]*href="\K[^"]*'

Либо

| tr -d '[:space:]' | grep -Po '<a[^<>]*("result__a"[^<>]*href="\K[^"]*|href="\K[^"]*(?="[^<>]*"result__a"))'

Если не хочется зависеть от порядка аттрибутов.

Но лучше не парсить xml регекспами без необходимости.

>> No.189060  

test

>> No.189061  
File: 1617742264103.png -(19943 B, 473x275) Thumbnail displayed, click image for full size.
19943

>>189060
Сдал хоть?

>> No.189062  

>>189056
А как порт поменять?

>> No.189077  

https://github.com/bakkeby/dwm-flexipatch
dwm с конфигом

>> No.189083  

>>189077

Скорее dwm использующий директивы препроцессора для включения патчей во время сборки. Как и написано в описании репозитория.

>> No.189088  

>>189056
А какую проблему это решает? Честно, даже предположений нет.
Страницы кстати можно рендерить в текст через w3m -dump.

>> No.189114  

>>189062
В конфиге tsocks. По идее, можно вместо wget использовать curl и задать проксю переменной окружения all_proxy, но этот скрипт качает страницы с картинками, через curl это сделать... сложнее.
>>189088
Это скрипт который будет рандомные слова из словаря отправлять в дакдакго через порт 127,0,0,1;9150 и скачивать страницы оттуда через рандомное время но в заданный промежуток.

>> No.189115  

Быстро расшарить директорию через HTTP (в виде архива):

while true; do (echo -e 'HTTP/1.1 200 OK\n'; tar -cJ Документы/книгота/) | netcat -lp 20000; done


Delete Post []
Password

[/b/] [/d/] [/tu/] [/a/] [/ph/] [/wa/] [/cg/] [/t/] [/p/]