LINUX.ORG.RU

Сообщения LINUX-ORG-RU

 

Ну чё пацаны, треугольное ядро на плоскости?

Форум — Science & Engineering

Заявление от Тимофея Янвинтина из Красноярска.

Интервью в паре с Борисом Бояршиным

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

Нескрываемая цель Тимофея продать 300 книг =) Ну это ладно. Давайте попробуем на это внимания не обращать из 58 минутного видива основная суть ясна, но очень всё растянуто можно прыгнуть на https://youtu.be/-DzhWyIXU1c?feature=shared&t=1637 например.

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

Я ничё спецом грить не буду по сабжу =) Дискас.

 навука, , , , ядро атома

LINUX-ORG-RU
()

Индийская лунная программа - прямой эфир

Форум — Talks

 , ,

LINUX-ORG-RU
()

Vim8/9 + ctags, как поживаете?

Форум — Development

Галочка, ты щас умрёшь! После нескольких лет использования YCM он меня окончательно достал, своей жирнотой, тупаками и прочими отвалами с питонами. Да оно работает, но. Короче вернулся на ctags на самом деле я даже уже опопсел и забыл как его с вимом дружить, пришлось уточнять у гугла забытое.

Первую недельку я жил так

function UpdateTags()
    """""""""""""""""""""""""""""
    let projects = ["~/egnaroc/"] "сократил список до 1
    """""""""""""""""""""""""""""
    for proj in projects
        exec('!cd ' . proj . ' && ctags -R include') "  сократил вариации нахождения заголовков до 1
        tags+=proj . 'tags'
    endfor
endfunction

map <F12> :call UpdateTags() <CR>

Ну и как диды :tag tagname ctrl+] ctrl+t ctrl+x ctrl+o ctrl+p ctrl+n для подсказок прототипов, функций,структур, автодополнения и навигации по коду и файлам. (только gd) почему то не работает go declaration gf go file работает, но это надо с патчами ещё вспоминать ну да ладно.

Ну, чво, жопа то я ленивая надоело F12 нажимать и уже полез смотреть на плагины автоматизации ctags

Сначала накатил через Vundle

  "Plugin 'xolox/vim-easytags'
  "Plugin 'xolox/vim-misc'  "зависимость для easytags

Всё вроде хорошо, только вот есть нюанс, оно строит теги по FileType открыл файл *.c оно нагенерировало для него теги и закинуло в общий файл тегов или в файл проекта или/и для всего что в текущем каталоге где редактируемый файл. Удобно? Ну относительно, так как дабы поучить символы из заголовка где то в дебрях директорий надо до него ручками дойти открыть, потом вернутся и уже использовать там где был ранее нужные символы, да после десятка таких итераций весь проект будет проиндексирован, но блин надо изначально делать ctags -R ./ ибо смысл то что я могу прыгнуть из любого места кода проекта в любое по тегу. Короче морока, мало чем отличается от иногда нажать F12 и обновить все теги из всех заголовочных файлов проекта (и его зависимостей)

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

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

    Plugin 'ludovicchabant/vim-gutentags'

Это уже поинтереснее, можно указать так

let g:gutentags_project_root = ['~/egnaroc/','Makefile','.git']

И оно автоматически будет строить рекурсивно теги по этим «маркерам» оттуда где они есть, само автоматически инкрементально обновляя теги удаляя несуществующие, добавляя новые появившиеся. Ну тоесть если есть проект допустим используется git то просто найдя '.git' оно построит теги не по тому что есть в каталогах, а по тому что контролирует система версий (ну я так понял читая по диагонали). Короче работает, по триггерам определяет что каталог содержит проект и начинает само индексировать. Но вот тоже есть нюанс индексирует оно всё поэтому благо есть фильтр

let g:gutentags_ctags_exclude = [
    \ '.git',
    \ 'build',
    \ 'depends',
    \ 'docs',
    \ '.md',
    \ '.cache',
    \ 'tags',
    \ '.css',
    \ '.vim',
\]

Но лучше бы было типа gutentags_ctags_inclue ещё дабы явно задать некие правила что индексировать конкретно. И вот тут важное, оно то что я хочу автоматом индексирует проект, клёва, только вот беда, проект проектом, а есть ещё у нас всех /usr/include или ~/dev/depend1 ~/dev/depend2 из которых для проекта нужны заголовки (порой и не только), и как это разрешить в плагине? Н и к а к :( Иди ручками для внешних заголовочных файлов нагенерируй теги и отдельно подключай set tags+=~/теги_внешних_заголовков. Ну ещё до кучи supertab накатил. let g:SuperTabDefaultCompletionType = '<C-X><C-O>'

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

Никакой другой зависимости, кроме запуска Vim: никакого Python, Ruby или чего-то еще.
Кроссплатформенность: должна работать, по крайней мере, на Ubuntu, Mac и Windows.
Инкрементная генерация тегов: не создавайте заново весь проект постоянно. Это может быть хорошо для небольших проектов, но это не масштабируется.
Управление внешним процессом: если процесс ctags занимает много времени, не запускайте другой, потому что я снова сохранил файл.
Поддерживайте согласованность файла тегов: не добавляйте просто теги текущего файла в файл тегов, иначе вы все равно будете "видеть" теги для удаленных или переименованных классов и функций.
Автоматически создайте файл тегов: вы открываете что-то из недавно разветвленного проекта, он должен начать индексировать это автоматически, точно так же, как в Sublime Text

Хочется ещё трассировку построения тегов по заголовочным файлам вглубъ, дабы не весь /usr/include сканировать (у меня тегов на 300 мегабайт выходит если всё сразу), а по зависимостям прыгать.

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

 , , , ,

LINUX-ORG-RU
()

Честно заработанные клоуны мистически пропадают без вести.

Форум — Linux-org-ru

Не знаю баг или фича, но сообщаю на всякий пожарный, что Аз есмь:

В списке реакций https://www.linux.org.ru/notifications?filter=reaction 👍 есть, а 🤡 нет. Где мой клоун?


Или на время отключения уведомлений о реакциях они не только не уведомляются, но и перестают фиксироваться в списке уведомлений?
Вроде всё. Досвиданья.

 , , , ,

LINUX-ORG-RU
()

Внимание, внимание пользователям Билайна.

Форум — Talks

Удаляя хлам в виде рекламных СМС от всех и вся случайно заметил

- Попробуйте новый тариф. Всего за 2.33 рубля в день (первый месяц)
+ Бла бла... (удалил первую часть сообщения и тууут во второй части)
- Смена тарифа произойдёт 26.06.23 если он вам не понравится можно будет отказаться через 60 дней и вернутся на текущий.
+ Бла бла...

Хорошо что длинное СМС сообщение разбилось на два, а то бы и не заметил.

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

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

Собсна всё.

 , , ,

LINUX-ORG-RU
()

Пьём чай

Форум — Talks

☕☕

Двачаю, Двачая, Двача, Двач.

Давайте пить чай. Кто какой любит. Я «канди» люблю.

 , новое на лоре

LINUX-ORG-RU
()

Масса электрона 9,1093837015(28)⋅10−31 что такое (28)?

Форум — Science & Engineering

И почему оно в скобочках? Масса электрона непостоянна, имеется в виду разница между его энергией? В смысле испустил фотон стал полегче, поглотил стал потяжелее? В каких градациях меняется это 28? В квантах как пересчёт энергии фотона в массу? Типа электрон теряет/приобретает массу эквивалентную энергии испускаемого/поглощаемого фотона? Я в ту сторону думаю? Короче не понимаю что это за 28, почему оно 28 и вообще :3

Масса из википедии взята

Суть, хотя это и не важно, но спросят же «зачем», просто дурью маюсь хочу испускать из электрона фотон и типа чтобы правильно менять его характеристики (ну как правильно топорно просто считать массу/заряд/энергию примитивно) Простую визуализацию делать всего этого чисто как макет, представление, а не реальные расчёты и попытку отобразить. Но подумал что стоит сохранять как минимум пропорции величин.

Тут

Это 28 для электрона в отдельной табличке под именем «Неопределённость». Чво это значит?

UDP: Это поправка на принцип неопределённости Гейзенберга, короче, тупо игнорируем значит :D Нет, но всё равно в игнор :)

Всем спасибо! :D

 масса, , , , электрон

LINUX-ORG-RU
()

Я тупой или у проекта love-android лицензии нету?

Форум — General

Суть, хотел свои исходники, своего анскильного поделия на гитфлик слить ну и заодно приложить apk собранный для андроида, всё ладно, но надо в пользовательском интерфейсе надо добавить текст лицензий всего что используется Love2D там и ещё куча суб-проектов которые оно использует, ну я такой всё добавил, а полез скопировать лицензию из https://github.com/love2d/love-android, а там только This distribution contains code from и далее бла бла бла. А упоминании о лицензии на сам love-android то нету. Лишь в ридми

Android Port of LÖVE, an awesome 2D game engine for Lua (http://love2d.org)
Copyright (c) 2006-2023 LOVE Development Team

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

Спасити памагити!

 , , ,

LINUX-ORG-RU
()

Всё, TGSI отключили, теперь NIR

Форум — Talks

 , , ,

LINUX-ORG-RU
()

Мониторинг IO обращения к файлам, а не дискам.

Форум — Admin

Суть, периодически ловлю жестокий 12309 причём с приложениями при которых IO идёт на корень расположенный на медленном диске, приложения это игры например которые вообще не должны корень тыркать особо, когда начинаются подвисания проверить откуда они просто невозможно весь GUI висит колом. Пока переключишься по ctrl+alt+Fx всё устаканивается. А логировать в файл и потом засекать время когда произошло с последующим муторным чтением тонны логов, а их будут тонны ибо это проявляется не периодически, не хочется от слова совсем. Про iotop,iostat и подобные знаю.

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

Я напишу демон который будет этот лог обращений кушать и выплёвывать в сеть и клиента на телефон который будет мне показывать к каким файлам идёт обращение. И в следующий раз когда начнётся ахтунг при котором порой даже мышка заморожена я хоть на внешнем устройстве в клиенте тыкну «записать лог» и выхвачу чего там и куда кто пишет/читает в конкретный момент времени. По итогу возможно проблемные штуки просто смонтирую в tmpfs или приму иные меры. Достало а то уже =)


Заранее отвечаю:

  • нет, не могу я купить ssd и перенести корень, рад бы но нет;
  • нет, память не забита при лагах 50+% свободно;
  • нет если я включу swap всё так же.
  • да я гуглю утилиту, но никак не нагуглю все просто показывают нагрузку на диск от приложения,
    эта информация бесполезная, ибо нужно знать к каким именно файлам идёт обращение.

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

 , , , ,

LINUX-ORG-RU
()

Перепакуйте rar в zip пожалуйста, если не трудно

Форум — General

Озвучка для игры https://drive.google.com/file/d/1Kx_1Zw5MtkJF2A5uypOYlyMD9ixb6h83/view?usp=sharing

unrar не хочет, в man про конвертацию локали ничего нет.

unrar: Pathname cannot be converted from UTF-16BE to current locale.

RAR archive data, v4, os: Win32

Игра The stanly parable если что, досталась на халяву ::)

 ,

LINUX-ORG-RU
()

Revision Demoparty 2023

Форум — Games

Стартанул Revision Demoparty 2023.
Ждём приколюх, докладов графических психов и крутых демосценеров и их шизофреничных проектов.
Наконец IRL, может быть с кодированием в прямом эфире в виде шоу, попозже.

Летс маза факинг гооооуууууууууууууууууууууууууууууууууууууууууууууууууууу

 █▄▄▄▄ ▄███▄       ▄   ▄█    ▄▄▄▄▄   ▄█ ████▄    ▄           
+█  ▄▀ █▀   ▀       █  ██   █     ▀▄ ██ █   █     █          
-█▀▀▌  ██▄▄    █     █ ██ ▄  ▀▀▀▀▄   ██ █   █ ██   █         
+█  █  █▄   ▄▀  █    █ ▐█  ▀▄▄▄▄▀    ▐█ ▀████ █ █  █         
-  █   ▀███▀     █  █   ▐             ▐       █  █ █         
  ▀               █▐                          █   ██         
                  ▐                                          

Живая трансляция

Выкладки работ, презентации, доклады

Место для публикации работ

 , , , ,

LINUX-ORG-RU
()

Ваш доход в месяц?

Голосования — Голосования

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

  1. <=250000₽ 87 (14%)

    ********************************************************************************************************************************************************************************************************************************************************************************************************************************

  2. <=10₽ 84 (13%)

    ********************************************************************************************************************************************************************************************************************************************************************************************************************

  3. <=150000₽ 75 (12%)

    ***********************************************************************************************************************************************************************************************************************************************************************************

  4. <=350000₽ 70 (11%)

    *****************************************************************************************************************************************************************************************************************************************************************

  5. <=90000₽ 55 (9%)

    **********************************************************************************************************************************************************************************************************

  6. <=70000₽ 47 (7%)

    ****************************************************************************************************************************************************************************

  7. <=500000₽ 45 (7%)

    *********************************************************************************************************************************************************************

  8. >=1000000₽ 38 (6%)

    *******************************************************************************************************************************************

  9. <=50000₽ 37 (6%)

    ****************************************************************************************************************************************

  10. <=35000₽ 25 (4%)

    *******************************************************************************************

  11. <=25000₽ 19 (3%)

    *********************************************************************

  12. <=800000₽ 13 (2%)

    ***********************************************

  13. <=600000₽ 12 (2%)

    ********************************************

  14. <=15000₽ 9 (1%)

    *********************************

  15. <=1000₽ 8 (1%)

    *****************************

  16. <=5000₽ 5 (1%)

    ******************

  17. <=10000₽ 5 (1%)

    ******************

  18. <=100₽ 4 (1%)

    **************

Всего голосов: 638

 , , , ,

LINUX-ORG-RU
()

🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡

Форум — Talks

🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡
🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡
🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡
🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡
🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡
🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡
🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡
🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡
🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡
🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡
🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡
🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡
🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡
🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡
🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡
🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡
🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡
🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡
🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡
🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡
🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡
🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡
🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡
🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡
🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡
🤡🤡🤡🤡🤡🤡🤡🤡🤡🤡
🤡🤡🤡🤡🤡🤡🤡🤡🤡
🤡🤡🤡🤡🤡🤡🤡🤡
🤡🤡🤡🤡🤡🤡🤡
🤡🤡🤡🤡🤡🤡
🤡🤡🤡🤡🤡
🤡🤡🤡🤡
🤡🤡🤡
🤡🤡
🤡

 clown

LINUX-ORG-RU
()

Лол

Форум — Talks

 , , ,

LINUX-ORG-RU
()

Мысли вслух про Эльбрус

Форум — Talks

Видиво, там вроде @jpegqs маинтейнер альт линукс под архитектуру эльбрус и точно Бачило https://www.youtube.com/watch?v=G56lE2407Ls может кому интересно.

Для Ъ, Обсуждают особенности эльбруса, проблемы, фичи. Не шибко глубоко и развёрнуто (по понятным причинам), но всё равно, под чай/кофе/суп норм.

 , , , ,

LINUX-ORG-RU
()

Своё «Шифрование» tcp/udp тсрафика

Форум — Development

За советом пришёл, в общем третий день делаю приложение для мобилки, с хоста (домашний ПК) идёт tcp/udp трафик, голый и ничем не прекрытый, в трафике звук. Не хочу тащить зависимости для https/ssl/etc или типа того и подумалось так.

  • ПК (сервер) на UI морде лица показывает код например RX0BGF
  • Мы этот код вводим на (мобилке)
    • Мобилка делает XOR данных и кода RX0BGF
      • Сервер делает обратный XOR обрабатывает
      • И так по кругу.

Раз в N времени сервер вместе с данными шлёт заксореный новый код и теперь оба ксорят/дексорят уже на основе него. И так по кругу.

То есть нам в начале надо ввести руками в клиент код. А затем от раз в N времени или раз в N размера передаваемых данных будет менятся.

Сразу заранее ответы на вопросы.

  • Почему XOR
    Хочется быстро и просто

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

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

  • Уже есть такое ПО под андроиды Да есть Simple Protocol Player NG и ещё кучка , ну NIH синдром и в целом задолбало что там звук отваливается

Пойдёт такое? В качестве минимального шифрования трафика? Ничего особенного, никаких мировых секретов просто звук с ПеКа, но хочется огородить трафик хотя бы на минималках. Мне кажется норм ибо данные для XORа трафика (коды/ключи как хочется называйте) будет довольно часто и автоматически обновляться. Ну правда если вычислить первый код/ключ то всё сразу можно расшифровать конечно, ну тут можно некий механизм генерации независимый сверху пришлёпнуть по типу кодов Steam на основе времени например. Но это уже так нахлобучки и мысли в слух

Поругайте. Стоит ли оно вообще того, приложеньку я попозже выложу.

 , , , ,

LINUX-ORG-RU
()

Android простой пример Foreground service

Форум — Development

Хоспади я уже всю черепушку сломал себе, вкратце суть, хочу для love2d-android присобачить Foreground service и через JNI дрыгнуть новый обрезанный экземпляр love, нужно для утилитки которая по сети принимает PCM звук от ПК, если приложение свернуть на андроиде звука нет, надо пускать часть кода в сервисе специальном, только вот беда я java не знаю, не ну в целом понимаю что происходит чисто по синтаксису ну и всё, об манифесты и gradlew конфигурацию весь лоб себе расшиб уже, миллиард нюансов для меня дикий лес. Да по хорошему надо сесть и пару месяцев вкуривать с азов, чего да куда и зачем, но блин…

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

Чего этот ваш андроид сложный такой одуреть. Буду благодарен за пинки и поджопники в нужные стороны. А пока я спать, всю ночь с этим возился. :(

P.S. Пока не лёг вопрос в догонку, а возможно ли вообще пробросить всё в Foreground? В смысле стартонуть заглушку, сразу запустить Foreground service и уже в нём завести love.GameActivity завести SDLActivity и вот всё это? Я вот этот момент не понял. Хотя наверное это излишне будет жрать батарейку ибо на деле мне просто кусок кода небольшой через каллбек пробросить и запустить сеть + звук и всё.

 , foreground-services, ,

LINUX-ORG-RU
()

Какая лицензия на good-pinguin пнг?

Форум — Linux-org-ru

https://www.linux.org.ru/img/good-penguin.png как и на исходники лора апач2? Или всё же иная?

Зачем не скажу, будет понятно через дня три или недельку или никогда.)

java jar @maxcom

UDP: ответ

Лицензия ХЗ какая.

 ,

LINUX-ORG-RU
()

Качалка COUB для вашего ПеКа

Форум — Talks

Драсти опять я к вам со своим lua говнокодом. Товарищ @superuser скоромно сбросил в толксы свою качалку на баше. Не будем скромничать код по ссылке Coub закрывается (комментарий) Более того он ещё патчи исправления скидывает, похвала. Я взял смелость и переписал на lua немножко расширив список возможностей и теперь у нас конкурирующий бизънес! :D Вот вы хихи да хаха, а люди за скачивание даже платят, пруфов не дам :o) Скрипт качалка ниже совместим с версией от @superuser по части хранения coub`ов.

Как пользоваться.

  • В качестве входных параметров может выступать

    • ссылка на coub https://coub.com/view/2ppitj
    • идентификатор на coub 2dnd59
    • название уже скачанного coub Дело_говорит_Симпсоны
    • путь ~/COUB/Дело_говорит_Симпсоны
    • комбинация идентификатора, ссылки, пути и имени
    • 14ns7i,https://coub.com/view/2djrec,Дело_говорит_Симпсоны,2cljbw
    • список файлов должен идти в конце параметров и разделятся запятыми (впритык!)
    • список можно прочитать из файла cat mycoubs.txt | coub - или через ls из каталога
    • в файле разделять можно запятыми или переводом строки
  • Ключ -l задаёт количество повторений inf бесконечность

    • если задана последовательность coub то каждый из них проиграется столько раз сколько
      задано ключом -l если для последовательности coub’ов задан -l inf то каждый из ниж будет проигрываться вечно, при это наглядевшись на один нужно руками закрыть окно плеера откроется следующее видео и также будет по кругу идти, это удобно так как coub’ы часто смотрят по многу раз.
  • Ключ -d говорит о том что нужно просто скачать один или несколько coub’ов, проигрываться ничего не будет

Скрипт не ищет на coub по названиям типа Дело_говорит_Симпсоны этот запрос к программе для поиска локального файла.

Коубы указанные идентификатором или ссылкой всегда скачиваются, нет проверки был ли уже скачан коуб. Для уже скачанных используйте названия из ~/home/$USER/COUB .

Обработка параметров идёт через жъёпу! В начале ключи потом ссылки/id/имена или -. Значения разделены от ключей пробелом -l 3, урлы,id,имена запятыми без пробелов

Зависимости apt install lua wget лол


#! /bin/env lua
local coub = {} -- initial table for export like module
---------------------------------------------------------
coub.config =
{   -- coub save location, you can play from this dir
    storages = '/home/'..os.getenv('USER')..'/COUB';
    -- mp3, mp4 donwnload location, maybe userfull
    download = '/home/'..os.getenv('USER')..'/COUB/DATA';
}
---------------------------------------------------------
function coub.msg(text)
    print("\x1b[32m"..text.."\x1b[39m")
end

function coub.err(text)
    print("\x1b[31m"..text.."\x1b[39m")
end
---------------------------------------------------------
function coub.usage()
help = [[
Use: coub [-h] [-l Num] source

Options:
    -h  - Help and exit;
    -l  - Repeat audio Num times or inf for infinity;
    -d  - Download only
    -   - Read coub or coub list from stdin
    you can use full url or coub id
    source - url | id | file.mp4

Examples:
    # play single coub
    coub https://coub.com/view/38yafx
    # play single coub from storage
    coub ~/COUB/Don_t_be_egoistic
    # play single looped coub
    coub -l inf 38yafx
    # download single coub, no play this
    coub -d https://coub.com/view/38yafx
    # download multiply coubs with separated
    coub -d 38yafx,https://coub.com/view/38yafx
    coub -d 38yafx[newline]https://coub.com/view/38yafx
    cat mycoubs.txt | coub -d -
    # download and play multiply coubs (no looped)
    coub -d 38yafx,38yafx
    # play multiply coubs from file id list
    cat mycoubs | coub -
    ]]
    print(help)
end
-----------------------------------------------------------
local function filter_get_between(body,a,b)
    local s , e = 1 , 1;
    local out = ""
        s,e = body:find(a,1,true);
        if s == nil or e == nil then return end
        local ss,ee = body:find(b,s,true);
        if ss == nil or ee == nil then return end
        out = out .. body:sub(e+1,ss-1);
        body = body:sub(ee,#body)

    return out;
end
-----------------------------------------------------------
function coub:run()
    -- stupid handle va_args
    for k,v in ipairs(arg) do
        if self.xoop then self.loop = v; self.xoop = nil; end
        if v == '-h' then self.usage();     end
        if v == '-l' then self.xoop = 1;    end
        if v == '-d' then self.dl_only = 1; end
        self.resource = v
    end
    if not self.loop then
        self.loop = 0;
    elseif self.loop == 'inf' then
        -- do nothing
    else
        self.loop = tonumber(self.loop);
        if self.loop > 0 then
           self.loop = self.loop - 1;
        end
    end

    -- decrement loop value becouse loop value =  N+1
    -- mpv --loop=0 is once play and --loop=1 twoo play


    if not self.resource then
        coub.err("Bad coub: no have input");
        coub.usage()
    end

    -- read input from stdin
    local cnt = 1;
    if self.resource == '-' then
       self.resource = io.read("*all");
    end
    -- check is resource contains data
    -- min 2 symbol coub id (yea?)
    if #self.resource < 2 then
        coub.err('Bad data: Input source is empty');
        return; 
    end
    -- tokenization play lists, and concat to URL
    -- тут ещё нужно проверить может нужные коубы уже скачаны
    self.playlist = {}
    for resource in string.gmatch(self.resource, '([^,\n]+)') do
        if resource:find('https',1,true) then
            self.playlist[cnt] = resource;
        elseif resource:find('/',1,true) or resource:find('.',1,true) then
            self.playlist[cnt] = resource;
        else
            self.playlist[cnt] = 'https://coub.com/view/'..resource;
        end
        cnt = cnt + 1;
    end
    -- always make needed directory
    assert(os.execute('mkdir -p '..self.config.storages),"Storage no writable");
    assert(os.execute('mkdir -p '..self.config.download),"Storage no writable");
    -- download coubs & play coubs --------------------------------------------
    for i,v in ipairs(self.playlist) do

        local exec = io.popen('wget -q -O- '..v);
        local html = exec:read('*all'); exec:close();
        -- wget 
        if  html:match('%a+') then
            local json = filter_get_between(html,"<script id='coubPageCoubJson' type='text/json'>",'</script>');
            local url_video = filter_get_between(json,'"video":{"higher":{"url":',',');
            -- some video no have higher resulution
            -- try get lowless
            if not url_video then
                 url_video = filter_get_between(json,'"video":{"high":{"url":',',');
            end
            local url_audio = filter_get_between(json,'"audio":{"high":{"url":',',');
            local coubtitle = filter_get_between(json,'"title":"','",');
            coubtitle = coubtitle:gsub('[%p+%s+]','_');
            local coubid    = v:gsub('https://coub.com/view/','');
            coub.msg('Download:['..i..'] '..v..' | '..coubtitle)
            -- check file format befor try handle data
            if url_video and url_video:find('.mp4',1,true) and url_audio and url_audio:find('.mp3',1,true) then
               local file_to_save = self.config.download..'/'..coubid;
               os.execute('wget -q -Y off -c -O '..file_to_save..'.mp4 '..url_video);
               os.execute('wget -q -Y off -c -O '..file_to_save..'.mp3 '..url_audio);
               os.execute('ln -s '..file_to_save..'.mp4 '..self.config.storages..'/'..coubtitle..' 2>/dev/null');

               -- do not play if need just download video
               if not self.dl_only then
                   -- play audio in background with infinity loop
                   os.execute('( mpv --loop=inf '..file_to_save..'.mp3 ) 1> /dev/null  & '..
                              -- play video, after video ends we kill previos mpv 
                              -- stdout to /dev/null becouse kill broke terminal stdin
                              -- maybe becouse mpv use '\r' for output info about playing
                              ' mpv --loop='..self.loop..' '..file_to_save..'.mp4 1> /dev/null ; kill -INT $! ');
               end
            else
                coub.err('Bad coub:['..i..'] file formats no mp3 and mp4 '..v);
            end
        else
            if v:find('~',1,true) then
                v = v:gsub('~',os.getenv('HOME'))
            else 
                v = self.config.storages..'/'..v:gsub('https://coub.com/view/','');
            end
            local justplay = io.open(v,'r');
            if justplay then
               justplay:close();
                  if not self.dl_only then 
                    coub.msg('PlayFile:['..i..'] '..v)
                    local link = io.popen(' readlink -e '..v);
                    local file = link:read('*all'); link:close();
                    os.execute('( mpv --loop=inf '..file:gsub('mp4','mp3')..' ) 1>/dev/null  & '..
                          ' mpv --loop='..self.loop..' '..file..' 1>/dev/null ; kill -INT $! ');
                  else
                    coub.msg('Ignore..:['..i..'] coub '..v..' is downloaded')
                  end
            else 
                coub.err('Bad coub:['..i..'] coub not found '..v);
                coub.err('Bad coub:['..i..'] coub not found https://coub.com/view/'..
                        v:gsub(os.getenv('HOME')..self.config.storages,''));
            end
        end
    end
end

coub:run()

- Баги косяки, тупак, есть?
- Да. 
- Исправлять будешь? 
- Нет. 
- А почему? 
- Ну модет потом... 
- А нахера всё это? 
- А тебе не пофиг?
- Пофиг
- Ну и всё
- Ну и ладно
- Ненужно!
- Согласен
- А зачем тогда?
- Потому что.
- Потому что что?
- Потому что понедельник!
- Ой всё.
- Вот и я о том.

Подборочка

coub yaik,s08ov,8ek0p,7aenz,bslpw,5g1j9,wm3bk,14zilh,7l1rdrfc,2b5izx,2aatx2,29jdfr,29k4yq
coub 29n55n,29j3j1,10a9jk,297dvo,280v0q,29adcz,29aon6,29gzt6,1qrxao,334db,15egdcy8,lvd3c

Фъъсьооо!

 coub, , , ,

LINUX-ORG-RU
()

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