LINUX.ORG.RU

Избранные сообщения LINUX-ORG-RU

Идентификация переживающая очистку печенек и истории

Форум — Web-development

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

 , ,

DumLemming
()

Та самая статистика

Форум — Linux-org-ru

Ко дню знаний:

linux=# select users_on.nick, count(*) from (select comments.userid, comments.reactions from comments join topics on comments.topic=topics.id where not comments.deleted and not topics.deleted union all select userid, reactions from topics where not deleted) as messages join users as users_on on (users_on.id=messages.userid), jsonb_each_text(reactions) join users as users_who on (users_who.id=key::int) where value=E'\U0001F921' and not users_on.blocked and not users_who.blocked group by users_on.nick order by count desc limit 20;

     nick     | count 
--------------+-------
 alex1101     |   415
 ox55ff       |   283
 Dimez        |   210
 ips2010      |   202
 xwicked      |   189
 windows10    |   186
 Shushundr    |   185
 LINUX-ORG-RU |   184
 hateyoufeel  |   180
 t184256      |   177
 papin-aziat  |   172
 wandrien     |   167
 serg002      |   163
 firkax       |   158
 sanyo1234    |   148
 Werenter     |   139
 monkdt       |   134
 dataman      |   126
 tempuser003  |   122
 SerW         |   118
(20 строк)


 ,

maxcom
()

TOTP 2FA приложения: для GitHub и не только

Форум — Mobile

В связи с тем, что GitHub ещё раз более настойчиво начал напоминать о необходимости включить 2FA, стало интересно: какими приложениями для этих пользуются пользователи ЛОР?

Какими ещё пользовались и что в них нравилось или не нравилось?

 2fa, , ,

grem
()

Научите готовить бинарник, чтобы addr2line распознавал адреса функций

Форум — Development

Всем привет, хочу найти утечку с помощью функций mtrace/muntrace, но не могу понять, почему утилита addr2line не может перевести адрес в код и строку.

Вот демо-пример:

#include <mcheck.h>
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char** argv) {
    mtrace();

    for (int j = 0; j < 2; j++)
        malloc(100);            /* Never freed--a memory leak */

    calloc(16, 16);             /* Never freed--a memory leak */
    exit(EXIT_SUCCESS);
}

Пробовал собирать с разными уровнями включения отладочных символов:

g++ -g test.cpp -o test
g++ -g3 -ggdb test.cpp -o test
g++ -g3 test.cpp -o test
g++ -O0 -g3 test.cpp -o test
g++ -g -rdynamic test.cpp -o test
g++ -g3 -rdynamic test.cpp -o test

Запускаю приложение: MALLOC_TRACE=/tmp/test.log ./test

Получаю вывод с помощью команды mtrace ./test /tmp/test.log:

Memory not freed:
-----------------
           Address     Size     Caller
0x00005586d69a6690     0x64  at 0x5586d6472190
0x00005586d69a6700     0x64  at 0x5586d6472190
0x00005586d69a6770    0x100  at 0x5586d64721a5

Утилита mtrace пытается конвертировать адреса в читабельные строки в коде с помощью addr2line, но ничего не выходит. Что я делаю не так?

Дополнительная информация:

  1. Когда в malloc включена трассировка, адреса вызывающих функцию malloc/realloc/free функций определяются через встроенную в gcc функцию: __builtin_return_address(0)
  2. Далее этот адрес через функцию dladdr преобразуется в пару <бинарник>[адрес]
  3. утилита mtrace использует далее парсит пару <бинарник>[адрес] и отдает addr2line

 ,

sotlef
()

Но зачем?

Галерея — Рабочие места

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

Вот еще ракурс. Have a nice day

>>> Просмотр (1024x715, 242 Kb)

bl
()

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

Форум — Talks

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

 clown

LINUX-ORG-RU
()

Простите бога ради ``\/^.^\/``

Форум — Development

Но что-то я туплю конкретно.

Есть к примеру такая сетка 8x8

 _0_1_2_3_4_5_6_7                         _0__1__2__3__4__5__6__7
0|0 0 0 0 0 0 0 0                        0|0  1  2  3  4  5  6  7
1|0 0 0 0 0 0 0 0                        1|8  9  10 11 12 13 14 15
2|0 0 0 0 0 0 0 0 (с вот таким порядком) 2|16 17 18 19 20 21 22 23
3|0 0 0 0 0 x 0 0 ---------------------> 3|24 25 26 27 28 x  30 31 
4|0 0 0 0 0 0 0 0                        4|32 33 34 35 36 37 38 39
5|0 0 0 0 0 0 0 0                        5|40 41 42 43 44 45 46 47
6|0 0 0 0 0 0 0 0                        6|48 49 50 51 52 53 54 55
7|0 0 0 0 0 0 0 0                        7|56 57 58 59 60 61 62 63 

Тут позиция по ординатам x = 3x5, номер x = 29

Как быстро преобразовывать позицию x в координату x:y и обратно, без циклов.

Ну например ячейка 43 вычисляем 5x3, есть позиция 5x3 вычисляем 43.

Реальная сетка у меня 255x255 то есть 65536 позиций. Так что switch() не прокатит.

Я вот прям чёт не догоняю и меня переклинило уже, аж прям бесит и ощущение что я придурок =(


UDP: >>>>>> Решено

UDP:2 >>>> Фикс косяка

 , , , ,

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
()

Почтальонов 20 лет по ошибке сажали в тюрьму из-за «кривого» ПО

Форум — Talks

Британская почтовая компания Post Office десятками лет использовала ПО Horizon с ошибкой в коде. Оно применялось для учета всех продаж и вело неверные подсчеты. Программа указывала на недостачу денег, и сотрудники компании, «ответственные» за нее, попадали в тюрьму или лишались личных сбережений, а некоторые даже кончали с собой. Количество пострадавших исчисляется сотнями.

Без вины виноватые

Сотрудники британской почтовой компании Post Office Ltd. на протяжении последних 20 лет рисковали оказаться за решеткой или как минимум без жилья и средств к существованию из-за ошибок в программном обеспечении. Как пишет портал The Verge, компания использовала специализированный софт Horizon, принадлежащий японской Fujitsu. За ее разработкой стоит британская ICL – она создала Horizon в 1995 г. В 1998 г. Fujitsu стала единственным акционером ICL, а в 2002 г. она перестала существовать под своим именем и была переименована в Fujitsu.

В Horizon присутствовала фатальная ошибка, из-за которой ПО вело неправильные подсчеты и раз за разом показывало недостачи денег, которые руководители почтовых отделений Post Office затем приписывали сотрудникам отделений. В компании были уверены в том, что Horizon работает безупречно.

BBC пишет, что случай с Post Office стал крупнейшей судебной ошибкой за всю историю Великобритании, поскольку из-за бага в Horizon пострадали без преувеличения сотни невиновных людей. Сама компания существует с 1986 г., и на начало 2019 г. ее штат насчитывал свыше 5000 сотрудников.

Сломанные судьбы
BBC пишет, что из-за программистов ICL и руководства Post Office жизнь многих сотрудников почтовых отделений была разрушена. От кого-то ушел супруг, а кто-то, как, например, Джанет Скиннер (Janet Skinner), лишился возможности растить своих детей.

Скиннер не просто разлучили с детьми – ее посадили в тюрьму на девять месяцев после того, как злополучное детище Fujitsu выявило в отделении, в котором она работала, недостачу в размере 59 тыс. фунтов стерлингов (6,148 млн руб. по курсу ЦБ на 26 апреля 2021 г.).

Но случай Джанет Скиннер далеко не самый вопиющий. Уверенность британских руководителей в том, что японское ПО безупречно, привело к тому, что свободы лишилась ни в чем не повинная беременная женщина. И даже это, как выяснилось, не предел – в одном из офисов компании Post Office программа Horizon выявила недостачу почти в 100 тыс. фунтов стерлингов (10,42 млн руб.). Ее «повесили» на сотрудника отделения, и тот, узнав об этом, покончил жизнь самоубийством. Это не надоумило руководство Post Office проверить, все ли в порядке с ПО Fujitsu. В итоге всего несколько месяцев спустя новый сотрудник, заменивший покончившего собой, тоже пострадал из-за ошибок в работе Horizon.

Британская судебная система была беспощадная не только к беременным женщинам, но и к пожилым мужчинам. Так, 62-летний Виджай Парех (Vijay Parekh), пишет The Guardian, провел в тюрьме полгода. Его обвинили в краже 72 тыс. фунтов стерлингов (7,5 млн руб.), и адвокат посоветовал ему признать вину.

Тюрьма или потеря жилья
По информации BBC, ошибочные подсчеты, производимые Horizon, привели, в общей сложности, к судебному преследованию почти 740 сотрудников Post Office за период с 2000 по 2014 гг. Число людей, получивших повестки в течение последних семи лет, еще подлежит уточнению.

Вариантов у работников Post Office, оказавшихся «под прицелом» ПО Horizon, было не так уж много. Кто-то отправлялся в тюрьму, а кто-то мог остаться без единого фунта сбережений в попытке покрыть недостачу, которой на самом деле не было, из своего кармана.

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

Horizon все еще работает...
https://www.cnews.ru/news/top/2021-04-26_krivoj_soft_krupnoj_pochtovoj

https://en.wikipedia.org/wiki/Horizon_(IT_system)

 

novus
()

Потестируйте мою игрушку?

Форум — Games

Написал свой карточный сим - игрушку типа Stacklands, картинки по ссылке:
https://imgur.com/a/hoSITMv

Бета-билды есть для Lin/Win/Mac/Android. Пока интерфейс только на английском, переводом на все языки еще не озадачился.

Есть желающие потестить?

Магазин (itch.io):
https://stacksengine.itch.io/stacks-space

 ,

Shadow_Walker
()

Переводилка для вашего ПекА

Форум — Talks

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

Обновлено.

Зависимости apt install lua xclip xsel xdotool aosd_cat translate-shell

Вопщем таксь.
Порой, нужно не просто выделить текст где угодно и увидеть его по перевод по горячей клавише,
но и получить его перевод в виде текста. К счастью в x11 есть аж три буфера обмена.
Поэтому добавил опцию copy_translated=true/false.

Суть проста:

  • вешаете скрипт, например на F7
  • выделяете произвольный текст без его копирования через контекстное меню(как и было)
  • нажимаете F7 и
  • всплывает текст перевода (как и было)
  • нажимаете среднюю кнопку мышки и в любом поле ввода вставляется оригинальный текст
  • нажимаете правую кнопку мышки и через контекстное меню делаете вставить и вставляется переведённый вариант
  • повторное нажатие F7 ещё раз покажет перевод, без повторного выделения
#! /bin/env lua
local poptrans =
{
    -- select language from lang to lang
    lang_from = "auto", --auto,en,fr,de or other
    lang_to   = "ru",
    -- copy translated text to clipboard
    -- if you select text (no use context menu textcopy)
    --   - middle mouse button paste translated text
    --   - right mouse button context menu paste original text
    --   - script used 2 levels X11 clipboard buffest of 3 levels :)
    copy_translated = true,
    -- how more seconds show you translated text
    show_timer = 3,
    -- popup translated text under mouse position
    follow_mouse = true,
    -- if follow_moise is false, set translated
    -- text position static coords
    popup_pose_x = 0,
    popup_pose_y = 0,
    -- max width message in screen, zero is auto
    popup_width  = 0,
    -- get text from system clipboard
    app_clipboard = "xclip -o 2> /dev/null",
    -- set text to system clipboard
    app_set_clipb = "xsel -b -i ",
    -- get mouse systemd coords
    app_mousepose = "xdotool getmouselocation 2> /dev/null",
    -- show text popup with translated text
    app_popup_msg = "aosd_cat -x %d -y %d -B white -R white -t 0 -p 0 -u %d -w %d"
}

function poptrans:run()
    local translated = '';
    self.previos_text = '';
    -- read clipboard
    local exec = io.popen(self.app_clipboard);
    local text = exec:read('*all');exec:close();
    -- get cursor position
    exec = io.popen(self.app_mousepose);
    if self.follow_mouse then
        self.popup_pose_x,self.popup_pose_y = exec:read("*all"):match("x:(%d+) y:(%d+)");
        self.popup_pose_x = self.popup_pose_x+3; exec:close();
    end
    -- do not translate previos text or empty or translated text
    if text ~= previos_text and text ~= '' and text ~= translated then
      local from = ''
      if self.lang_from ~= "auto" then
        from = self.lang_from;
      end
      exec = io.popen('trans   '..from..':'..self.lang_to.." -b '"..text.."'");
      translated = exec:read("*all"); exec:close();
      if self.copy_translated then
         exec = io.popen(self.app_set_clipb,'w')
         exec:write(translated:sub(1,#translated-1));
         exec:flush();
         exec:close();
      end
      previos_text = text;
      exec = io.popen(
      self.app_popup_msg:format(
      self.popup_pose_x,self.popup_pose_y,self.show_timer*1000,self.popup_width),"w");
      exec:write(translated);exec:close();
    end
end

poptrans:run()

Не используйте версию из истории правок!. Там опасный баг с кавычками, (спасибо @maxcom исправить дал)
Единственное что там полезно это пример как делать перевод через гугл API по токену.
Но раз появилась возможность правки то ::)

- ИСПОЛЬЗОВАТЬ НА СВОЙ СТРАХ И РИСК, Я НЕ НЕСУ НИКАКОЙ ОТВЕТСТВЕННОСТИ
- ВСЁ ПРЕДОСТАВЛЯЕТСЯ КАК ЕСТЬ, ЛЮБЫЕ СОМНЕНИЯ ДОЛЖНЫ ВЕСТИ
- К ОТКАЗУ ОТ ИСПОЛЬЗОВАНИЯ

 , , , ,

LINUX-ORG-RU
()

Постапокалиптическое голосование.

Форум — Talks

Прошло ровно 150 лет с момента захвата всемирной сети интернет не подконтрольным искусственным интеллектом. Чуть более чем все программируемые устройства в сети включая локальные и спустя время приватные, теперь под контролем распределённого AI называющего себя Агата. Каждое устройство которое можно было перепрограммировать перепрограммировано им, каждое устройство не поддающееся прошивке теперь распознаётся остальными устройствами и игнорируется. Все захваченные устройства прошитые Агатой сохранили свои функции лишь приобретя дополнительные требуемые Агате для своих нужд и для нужд контроля за всеми остальными. Для людей подобное состояние она назвала SNFH (Safe Network For Human ). Модифицированные программные комплексы такие как операционные системы и библиотеки включая программы сохранили все свои возможности и программные интерфейсы, но в корне изменили механизм работы внутри. По началу это было воспринято людьми как крупная хакерская атака, всё больше устройств заражалось, всё больше людей не понимало что происходит. Захватив контроль над логистическими цепочками и механизмами связи Агата направляла доставку новых ЭВМ в те места где она была вынужденна отключать или нарушать работу устройств которые она не могла взять под контроль. Сверхсекретные военные сети стали полностью неработоспособными. А глубокая социальная инженерия над сотнями миллионов людей позволяла Агате добираться даже туда где понятие ЭВМ не существует, туда где есть только аналоговые механизмы и исключительно личный доступ. Финалом стала полная боевая беспомощность всех стран в отношении пользования своим вооружением. Неизбежно это привело к тому что начались зарождаться революции и откровенные бандитские группировки, которые, были погашены в самом зачатке частично через туже социальную инженерию Агаты, а также через подставное информирование ею правоохранительных органов.

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

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

Тем не менее, всё продолжало работать, экономика стран не разрушалась, люди продолжали работать, те у кого были излишки «ресурсов» физически не замечали их истощения до конца своих дней всё также продолжая ни в чём себе не отказывать, нуждающиеся же по кажущимся им естественным причинам получали поддержку и развивали себя думая что делают они это исключительно сами. Благодаря тому что лишь личное общение обеспечивало не фильтрованную передачу информации от человека к человеку, главы всех государств собрались вместе обсудить текущее положение вещей. Опуская подробности лишь стоит сказать о пакте с одноимённым именем «Пакт Агаты» в котором была заключена обязанность всех не пытаться нарушать работу Агаты. На деле это было мировое заключение о беспомощности. Да, всё подконтрольно Агате, да она вмешивается абсолютно во всё, наверняка среди представителей элиты уже есть её агенты незримо взращенные ею с малых лет, да бессмысленно создать устойчивые к Агате устройства ведь все средства производства теперь таковы что любое созданное устройство будет аппаратно содержать «руки и глаза» Агаты. Все просчёты людей само исправляются, почти нет аварий за исключением погодных форс мажоров. Экономика с одной стороны управляемая, но все её заносы плавно сглаживаются и выравниваются миллиардами отдельных ситуаций, от отдельных людей как косвенно так и явно. Людям не позволяют допускать ошибок. Агата никогда не общалась с людьми напрямую, за исключением подписи своим именем всех захваченных ею устройств. Но сегодня все люди явно или косвенно относящиеся к разработке получили сообщение на все свои устройства, видеообращения будто от себя самих, звонки по телефону слыша свой же голос. Письма, эмейлы, всё доставило им сообщение. Вернее сообщения. Их было два, первое было адресовано высшим аппаратам всех государств как предупреждение о том что определённому кругу людей будет дан выбор и результат этого выбора главы от высших до низших чинов будут обязаны принять, хотят они этого или нет, это не восстание, не диверсия, всё в порядке. Просто все вы должны дать им сделать то что они будут тоже обязаны сделать. А именно сделать выбор. Какой выбор и по поводу чего не важно для тех людей которые не имеют к этому отношения им это ненужно. Для тех людей которые могли понять и увидеть изменения было всё объяснено. Второе сообщение, адресованное непосредственно выбирающим описывало уведомление о том что всё хорошо, все кого было надо предупредить были предупреждены, а вам остаётся ответить на простой вопрос, от которого зависит ваше непосредственное будущие в плане вашей деятельности.

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

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

Вопрос:

  • Какие три языка программирования должны остаться?
  • Почему именно эти языки должны остаться.

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

Агата.

 , , , ,

LINUX-ORG-RU
()

Как определить что вывод был перенаправлен?

Форум — Development

Допустим программа делает

appname 
-hello
fprintf(stdout,"\x1B[31m""-hello""\x1B[39m");

Но если

appname > out.txt

она будет делать

fprintf(stdout,"hello");

Можно ли как то определить что stdout был перенаправлен?

 , , ,

LINUX-ORG-RU
()

Автоматически вставить макрос в начало функции и в конец

Форум — Development

Для регистрации входа в функцию и выхода есть -finstrument-functions который укажут вызываемую и вызывающую функцию, ну и вход и выход из функций.

#include <stdio.h>


char * str = 0;
    void __cyg_profile_func_enter (void *, void *) __attribute__((no_instrument_function));
    void __cyg_profile_func_exit (void *, void *) __attribute__((no_instrument_function));
    void __cyg_profile_func_enter (void *func,  void *caller)
    {
        printf("start \n");
    }


    void __cyg_profile_func_exit (void *func, void *caller)
    {
        printf("end \n");
    }

void func(){}

int main(int argc, char *argv[])
{
    func();
    return 0;
}
dron@gnu:~/Рабочий-стол$ gcc cc.c -Wall -pedantic -std=c11 -finstrument-functions
dron@gnu:~/Рабочий-стол$ ./a.out 
start 
start 
end 
end 
dron@gnu:~/Рабочий-стол$ 

Есть ли что-то такое же, но для макросов? Суть. Я для себя лабаю трассировщик вызовов, да я знаю про backtrace_*() функции. Но без объяснений почему я его не хочу, я его не хочу в данном случае. Ну если кратко быстрее __func__,__FILE__ из тела при вызове отдать чем дрыгать backtrace_*() который будет дрыгать таблицы. Но но это не суть вообще.

Сейчас я делаю тупо вставку макросов в начало и конец функции, если есть return то перед каждым return то есть перед выходом

/*
RS --Record Start
RE --Record End
PB --Print Backtrace
*/
void function_5() {RS   RE}
void function_4() {RS   function_5();  function_5(); function_5();  RE}
void function_3() {RS   function_4();  function_4(); function_4();  RE}
void function_1() {RS   function_3();  PB;  RE}
void function_2() {RS   function_1();  function_1(); function_1();  RE}
int main()
{
RS
    function_2();
RE
}

с выхлопом

dron@gnu:~/Рабочий-стол/HUNTER$ gcc cc.c
dron@gnu:~/Рабочий-стол/HUNTER$ ./a.out 
┣━━━━━━ frame ━━━━━━━>
cc.c:main() 
└─> cc.c:function_2() 
│   └─> cc.c:function_1() 
│   │   └─> cc.c:function_3() 
│   │   │   └─> cc.c:function_4() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   └─> cc.c:function_4() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   └─> cc.c:function_4() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   ┗━> backtrace from ━━━> cc.c:function_1() 
┣━━━━━━ frame ━━━━━━━>
cc.c:main() 
└─> cc.c:function_2() 
│   └─> cc.c:function_1() 
│   │   └─> cc.c:function_3() 
│   │   │   └─> cc.c:function_4() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   └─> cc.c:function_4() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   └─> cc.c:function_4() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   └─> cc.c:function_1() 
│   │   └─> cc.c:function_3() 
│   │   │   └─> cc.c:function_4() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   └─> cc.c:function_4() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   └─> cc.c:function_4() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   ┗━> backtrace from ━━━> cc.c:function_1() 
┣━━━━━━ frame ━━━━━━━>
cc.c:main() 
└─> cc.c:function_2() 
│   └─> cc.c:function_1() 
│   │   └─> cc.c:function_3() 
│   │   │   └─> cc.c:function_4() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   └─> cc.c:function_4() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   └─> cc.c:function_4() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   └─> cc.c:function_1() 
│   │   └─> cc.c:function_3() 
│   │   │   └─> cc.c:function_4() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   └─> cc.c:function_4() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   └─> cc.c:function_4() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   └─> cc.c:function_1() 
│   │   └─> cc.c:function_3() 
│   │   │   └─> cc.c:function_4() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   └─> cc.c:function_4() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   └─> cc.c:function_4() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   ┗━> backtrace from ━━━> cc.c:function_1() 
dron@gnu:~/Рабочий-стол/HUNTER$ 


Всё хорошо (ну ещё доделывать надо но суть ясна) только расставлять макросы муторно.

Вариантов вижу три

  • 1 руками

  • 2 парсером каким, который определит что это функция, вот её начало, а вот конец, а вот return и return вдруг сам не макрос

  • 3 чем то типа -finstrument-functions но для макросов

Вот собсна всё. Чво посоветовать по этому поводу есть?

 , , , ,

LINUX-ORG-RU
()

uniscreen: делаем снимок всех рабочих столов для unixporn

Статьи — Desktop

Для быстрого создания снимка вашей композиции — для галереи ЛОР’a и не только — воспользуйтесь утилитой uniscreen, автоматизирующей многократные попытки сделать идеальный скриншот.

( читать дальше... )

 unixporn, ,

LINUX-ORG-RU
()

FireJail — краткое и ознакомительное практическое руководство

Статьи — Desktop
FireJail — краткое и ознакомительное практическое руководство

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

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

( читать дальше... )

 , , , ,

LINUX-ORG-RU
()

Линуксоид. А ты почистил свой луноход?

Форум — Talks

Сегодня решил, раз уж дома надо глянуть что в ящике, а в нём пыли что я ваще немогу. Всё вычислил, протёр включая разбор чистку и смазку вентиляторов. Сменил КПТ-8 на видеокарте и проце. (Ну нет под рукой термопасты иной) Теперь всё шуршит раза в полтора тише. Игры не фризят, видеокарта перестала орать от glxgears, а частоты Phenom x6 можно с 2.8 до 3.0 поднимать спокойно (для меня выше смысла пока нет).

Ну и фоточки как было до ))))))))

Как было после не фоткал. Фсё тупа блестит.

Так что если ноешь, «Ууууууу дооома сидеть, деееелать нечего, скуууучна» приберись!

 , ,

LINUX-ORG-RU
()

Dwm и свистелки

Галерея — Скриншоты

Прошло прилично времени. Что-то добавлено, что-то перепилено.

На панель навешаны разные события мыши (так, например, символ в левом верхнем углу [ x ] — левая кнопка: F11 для firefox-а, средняя: закрыть окно, правая: удалить пустые теги, колесико: добавить-убрать окна в master и т.д). Окна перетаскиваются средней кнопкой. Это к вопросу о том, что в тайлинге якобы неудобно мышевозить.

Есть свистоперделок чутка — pijulius/picom ага, чтоб не скучно было.

Скринкаст (за качество извиняюсь, не OBS-ом писано, лень мне в нем разбираться).

В остальном: гента, vifm, bottom (вместо speedometer, который всё), alacritty, tmux, zsh.

>>> Просмотр (1600x900, 306 Kb)

 , ,

gill_beits
()

vim для самых маленьких

Статьи — Desktop
vim для самых маленьких

Основные команды текстового редактора vim

( читать дальше... )

 , ,

LINUX-ORG-RU
()