LINUX.ORG.RU

Избранные сообщения xaizek

Максимально простое gui приложение, что бы рисовать графики

Форум — Development

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

 , , ,

onhydro
()

rtorrent не возобновляет загрузки

Форум — General

Всем салют!

В общем намучался я с rtorrent.. Суть проблемы:

Есть rtorrent + rutorrent. Если поставить загрузку на паузу или остановить, то после возобновления торрент попадает в Error c такими сообщениями в лог:

tracker_list: Failed to connect to tracker url:'http://retracker.local/announce' msg:'Couldn't resolve host name'.
1537365956 I 95B691A59F954B410F909845F41CCA07D4BD55FD->tracker_controller: Sending stopped event.
Дело это я гуглил - все бычат на curl без c-ares. Пробовал и с ним - результат тот же. Само собой с хоста все резолвиться четко. Испытания проводились на ubuntu 18.04 и FreeBSD 11.1.
rtorrent.rc:
scgi_port = 0.0.0.0:5000
session = /home/.session
directory = /home/share/.newFolder
log.open_file = "rtorrent", /tmp/rtorrent.log
log.add_output = "tracker_debug", "rtorrent"
log.add_output = "connection_debug", "rtorrent"
log.add_output = "storage_debug", "rtorrent"
encoding_list = UTF-8
min_peers = 40
max_peers = 1200
max_uploads = 15
download_rate = 10000
upload_rate = 5000
peer_exchange = yes
system.umask.set = 002
port_range = 51413-51413
check_hash = yes
use_udp_trackers = yes
dht = auto
dht_port = 6881
peer_exchange = yes

 

riso
()

Состоялся релиз дебаггера скриптов на bash'е - bashdb-4.4-1.0.0

Форум — Talks

Сабж. Изменения - https://fossies.org/linux/bashdb/NEWS .

Эта версия требует bash версии 4.4. С 5-м bash'ем эта версия не работает.

Скачать: https://sourceforge.net/projects/bashdb/files/bashdb/4.4-1.0.0/bashdb-4.4-1.0...

 ,

saahriktu
()

Как починить раскладку Бирмана?

Форум — Desktop

В KDE PLasma в настройках раскладки клавиатуры есть параметр «Включить дополнительные типографские символы», и тогда можно будет вводить всякие интересные символы типа длинного тире, дробей и т.п.

Однако, в моей openSUSE набор доступных символов отличается от набора в Росе, где реализована полноценная раскладка И. Бирмана. Я вижу, что раскладка реализована как дополнение Xcompose, но не понимаю, как она подключается и используется в системе.

Короче говоря, как сделать в openSUSE KDE раскладку Бирмана?

 ,

kknight
()

Энергосбережение при закрытой крышке лэптопа

Форум — General

Привет, ЛОР!
Хочу поделиться с тобой скриптом для включения агрессивного энергосбережения при закрытой крышке ноутбука (при закрытии крышки делаем $script sleep, при открытии - $script resume)

Так, с подобным скриптом, мой Thinkpad x240 может жить с закрытой крышкой (но, естественно, без засыпания) около двух дней. (40 часов)

Сам скрипт - https://pastebin.com/AkjNt3r8
Настройки - $user - ваше имя пользователя, $display - номер дисплея X, $usbdevices - USB-девайсы, которые выключаем на время закрытой крышки; $ps_blacklist - процессы, которые оставляем активными (у меня bash, ssh, sshfs, плеер, пульса, жаббер-клиент и mate-power-manager, чтобы ноут ушёл таки в гибернацию при критическом заряде батареи)

Что делает - посылает SIGSTOP всем процессам, включает DPMS, отключает все ядра кроме одного и отключает указанные USB-девайсы.
Можно ещё раскомментить kill -STOP X, но тогда апплет network-manager'а начинает с ума сходить :)

 

annerleen
()

Динамические библиотеки, конспект

Форум — Development

Привет. Так вышло, что пришлось основательно разобраться в теме и пока память свежа изложил всё в виде небольшой памятки. Удобно по прошествии некоторого времени освежить память прочитав небольшой конспект. Вообще, по-хорошему, блог что ли какой завести )). Просьба - не флудить, ссылки/комментарии/дополнения по теме приветствуются. ЗЫ: подразумевается, что либы -fpic

1. Утилиты readelf, objdump. Читать man elf, man ld.so. N в именах структор
   подразумевает 32 или 64.
2. Структура ELF файла:
   1. заголовок (смещение 0, struct ElfN_Ehdr). Readelf::ELF Header
   2. program header table (массив struct ElfN_Phdr). Содержит информацию о том
      как отображать секции в память процесса. Readelf::Program Headers
   3. section header table (массив struct ElfN_Shdr). Readelf::Section Headers
3. link_map   
3.1. Загруженные в память модули попадают в список (массив) из struct link_map.
     Списков может быть много, каждый список - "пространство имён". Для
     загрузки модулей в неглобальный список (создание нового) используется
     dlmopen().
3.1. Получать link_map модуля через dlinfo() или dladdr1():
     [--code--]
     #define _GNU_SOURCE
     #include <link.h>
     #include <dlfcn.h>
     #include <stdio.h>
     int main()
     {
        static char addr_in_mod;
        Dl_info __info;
        struct link_map *lm;
        if(dladdr1(&addr_in_mod, &__info, (void*)&lm, RTLD_DL_LINKMAP) != 0) {
           printf("link_map:\n");
           struct link_map *i = lm;
           for(; i->l_prev != NULL; i = i->l_prev);
           for (; i != NULL; i = i->l_next)
              printf("addr diff=%p  name=%s%s",(void*)i->l_addr,  i->l_name, i==lm?"  <--cur\n":"\n");
        }
     }
     //output:
     //link_map:
     //addr diff=0x41f000  name=  <--current module
     //addr diff=0xb7fc4000  name=linux-gate.so.1
     //addr diff=0xb7fa3000  name=/lib/libdl.so.2
     //addr diff=0xb7dc5000  name=/lib/libc.so.6
     //addr diff=0xb7fc6000  name=/lib/ld-linux.so.2
     [/--code--]
3.2. Во время переразмещений символ ищется в модулях указанных в link_map
     списке начиная от начала списка т.е. порядок важен, "gcc -ls1 -ls2"
     libs1.so находится в списке раньше, чем libs2.so.
3.3. При добавлении библиотеки через LD_PRELOAD, она попадает перед остальными
     разделяемыми библиотеками в глобальном link_map списке.
3.4. Опция RTLD_DEEPBIND для dlopen - собственные символы модуля приоритетнее
     символов из вышестоящих в link_map списке модулей.
     Собственные символы загружаемой библиотеки содержат:
      1. символы из самой загружаемой библиотеке
      2. символы из библиотек, которые были слинкованы с загружаемой из
         командной строки (у первых приоритет выше).
3.5. При загрузки через dlopen, библиотеки добавленные с флагом RTLD_GLOBAL
     имеют приоритет над RTLD_LOCAL, не смотря на то, что находятся в link_map
     списке позже (не относится к получению void f() через dlsym()). Например:
     [--code--]
     // предоставляет void f(), ссылается на void f().
     dlopen("lib1.so", RTLD_LOCAL);
     // предоставляет void f().
     dlopen("lib2.so", RTLD_GLOBAL);
     // при ленивом переразмещении, lib1.so будет ссылаться на lib2.so::f().
     [/--code--]
4. RTLD_GLOBAL - символы из загруженного модуля будут участвовать в
   переразмещениях для заргуженных в дальнейшем библиотек. RTLD_LOCAL - не будут.
   Если lib2.so линкуется с lib1.so через командную строку
   "gcc -fpic -shared -l2 s.c -o lib1.so", то видимость символов из lib2.so
   наследуется от видимости символов из lib1.so:
   [--code--]
   dlopen("./lib1.so", RTLD_LAZY|RTLD_GLOBAL);    // символы из lib2.so глобальные
   dlopen("./lib1.so", RTLD_LAZY|RTLD_LOCAL);     // символы из lib2.so локальные
   [/--code--]
   Если lib2.so подгружается из lib1.so через dlopen(), то видимость символов
   из lib2.so контролируется флагом dlopen() при загрузке lib2.so. Способ
   загрузки (через командную строку или dlopen) и флаг для dlopen при
   загрузки lib1.so значения не имеет.
5. Переразмещение (relocation).
5.1. Переразмещение - процесс соединения символьной ссылки с символьным
     определением.
     Переразмещение: ленивое - загрузчик вызывается при ссылке на символ, и
     ненеленивое - переразмещение при загрузке. Переразмещение переменных всегда
     неленивое.
5.2. Символы, требующие переразмещения, содержатся в .rel... секциях. В них
     находятся ElfN_Rel структуры.
     [--code--]
     typedef struct {
         Elf32_Addr r_offset;    \\ адрес внесения правки (адрес в GOT, например. readelf::Offset).
         uint32_t   r_info;      \\ содержит тип переразмещения и индекс в таблице символов (массив Elf32_Sym[]).
     } Elf32_Rel;
     typedef struct {
         uint32_t      st_name;   \\ индекс в таблице строк. Т.е. сопостовляет символ с Си строкой.
         Elf32_Addr    st_value;  \\ адрес символа в текущем модуле (readelf::Sym.Value).
         uint32_t      st_size;
         unsigned char st_info;
         unsigned char st_other;
         uint16_t      st_shndx;
     } Elf32_Sym;
     [/--code--]
5.3. Механизм обращения к переменным (требующим переразмещений):
     1. линкер на старте правит .got секцию, она начинает указывать на нужные
        данные.
     2. ссылка на переменную в коде (в .text секции):
          [--code--]
          call   44c <__x86.get_pc_thunk.ax>  # получаем в eax адрес следующей инструкции
          add    $0x1bcb,%eax                 # в eax адрес .got секции
          mov    0x14(%eax),%edx              # отступ от края .got на адрес переменной,
                                              # разыменовываем в edx
          [/--code--]
5.4. Механизм обращения к функциям, для пример - exfn():
     1. ссылка на exfn() в коде (в .text секции)
     2. переход на "трамплин" в .plt секции - plt@exfn()
     3. переход на разыменованный указатель из .got.plt, если переразмещение
        уже было произведено, то попадаем на exfn(), иначе:
        3.1. возврат в plt@exfn(), в стек кладётся смещение в .rel.plt
             секции Elf32_Rel структуры и указатель на link_map список
        3.2. вызов ld.so, правится указатель в .got.plt
        3.3. переход на exfn().
6. .dynamic секция может быть прочитана из программы через массив _DYNAMIC[],
   который содержит struct ElfN_Dyn, автоматически заполняется линкером.
7. Экспортируемые символы из elf модуля указываются в .dynsym секции.
8. -rdynamic опция линкера (для исполняемого ELF) - символы из exe, которые не
   были востребованы библиотеками, указанными в командной строке, не
   экспортируются (не указываются в .dynsym секции) и не участвуют в
   переразмещениях в библиотеках, которые подргружаются через dlopen. Данная
   опция заставляет линкер помещать в таблицу все функции.
9. Управление экспортом из модуля
   * Управление экспортом по умолчанию:
     gcc -fvisibility=default
     -fvisibility=hidden
     -fvisibility=internal
     -fvisibility=protected
   * Управление экспортом посимвольно:
     __attribute__ ((visibility ("hidden")));
     __attribute__ ((visibility ("hidden")))
   * Для группы:
     #pragma GCC visibility push(hidden)
     ...
     #pragma GCC visibility pop
   * static и анонимные namespace
   * Управление эспортом через export map, через опцию --version-script

 , , ,

pavlick
()

Вывод строк в терминале

Форум — General

Есть ли способ сделать вывод в терминале не построчным (последовательное добавление строки в конец списка), а постоянно замещать строку?

Есть скрипт, который выдаёт динамическое кол-во строк в терминал (от 1 до 100). Выдаёт он их сейчас последовательно, т.е. выполнив 10-20 раз скрипт забивает окно терминала. Можно ли сделать так , чтобы при выполнении скрипта строки не писались последовательно, а просто замещали первый вывод?

Например как запустить команду ping. Чтобы строки не шли друг за ругом, а была только одна строка, которая меняется через определенное время?

P.S. пробовал добавить в скрипт команду clear - интерраптит скрипт.

 ,

tampap
()

segmentation fault

Форум — Development

Привет, x32, вот такой выхлоп от gcc -S

.LLSDACSE1:
	.byte 0x1
	.byte 0
	.align 4
        .long DW.ref._ZTI14Fake_Exception-.

DW.ref._ZTI14Fake_Exception:
	.long _ZTI14Fake_Exception
	.hidden DW.ref._ZTI9Exception
	.weak DW.ref._ZTI9Exception
        .section .data.DW.ref._ZTI9Exception,"awG",@progbits,DW.ref._ZTI9Exception,comdat

_ZTI14Fake_Exception:
	.long _ZTVN10__cxxabiv117__class_type_infoE+8
	.long _ZTS14Fake_Exception
	.weak _ZTS14Fake_Exception
        .section .rodata._ZTS14Fake_Exception,"aG",@progbits,_ZTS14Fake_Exception,comdat
пытаюсь под gdb прочитать адрес _ZTI14Fake_Exception::_ZTVN10__cxxabiv117__class_type_infoE+8
(gdb) x/1aw 0x401743      # .LLSDACSE1+4
0x401743:       0x190000
(gdb) x/1aw 0x190000
0x190000:       Cannot access memory at address 0x190000
модуль загружен в память по адресу 0x400000. Что я не так делаю?
При этом, адрекс _ZTVN10__cxxabiv117__class_type_infoE+8 == 0x402ed8 (посмотрел по символам модуля+адрес загрузки+8).

 ,

pavlick
()

Краткий обзор ряда консольных hex редакторов

Форум — Talks

Ну и на десерт: ещё есть hexdumper под названием hex, ориганал которого был написан в 1983-ем году. И он тоже дампит не только ASCII: http://saahriktu.org/hex/hex.png .

 

saahriktu
()

Алгоритмы и структуры данных

Форум — Desktop

Уважаемые специалисты! Посоветуйте, пожалуйста, книгу/курс по алгоритмам и структурам данных!

Требования:

  • достаточно фундаментальное изложение материала;
  • актуальность;
  • если на английском - не проблема, может, даже лучше.

Во много хотелось бы повысить собственную квалификацию и систематизировать знания для интервью. Грубо говоря, если бы вы нанимали сотрудника и в требованиях писали «знание основных алгоритмов и структур данных» - в рамках какой литературы/курса вы бы это требование предъявляли?

 , ,

omegatype
()

Посоветуйте книгу по алгоритмам компьютерной графики

Форум — Talks

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

 , ,

praseodim
()

найти точки деления графа

Форум — Development

Не знаю, как точно сказать, но надо найти точки деления на графе. Т.е. такие узлы, которые делят граф на несвязанные подграфы. Вот пример графа, где хочется найти точкой деления узел, выделенный жирным: https://pasteboard.co/Hv23hxM.png (Граф рисовал примерный, реальные графы будут на сотни тысяч узлов)

Собственно, прошу подсказать - в какую сторону копать? Если подграфы представляют собой деревья, то я понимаю как быть (начинать с узлов и двигаться «вверх»). А тут мысль останавливается.

Добавлю, что решение достаточно найти «примерно». Т.е. достаточно будет найти не все «точки деления», а только некоторые, но за приемлемое время.

 

jcdr
()

Автодополнение недописанного пути в bash как в zsh

Форум — General

Давно хотел перетащить в bash возможность разворачивать недописанные пути, как в zsh, т.е. cd /u/l/b<Tab> разворачивать в cd /usr/local/bin. Но мое гугл-фу здесь меня не выручало, а может, никто действительно раньше такого не делал.

Поэтому я написал нужную функцию для автодополнения сам. Здесь можно увидеть фичу в действии, а здесь получить код для ~/.bashrc

Надеюсь, кому-нибудь покажется полезным.

 , , ,

si0
()

Книга «Свободные программы в офисе и дома»

Новости — Документация
Группа Документация

Опубликована и доступна бесплатно книга «Свободные программы в офисе и дома». Каждый раздел книги является практическим руководством для выполнения какого-либо одного вида работы с определенным контентом. Материал книги основан на использовании свободного программного обеспечения - офисного пакета LibreOffice, компьютерной издательской системы Scribus, редактора растровой графики GIMP, редактора векторной графики Inkscape, приложения для создания структурных схем Dia, а также пакета для 3D моделирования Blender. Книга адресована широкому кругу читателей, которые используют компьютер для подготовки текстовых, графических и других материалов как на работе, так и дома. В какой-то степени она будет интересна и специалистами в области информационных технологий, потому что профессионалы, как правило, не уделяют достаточно внимания подобным задачам. Данная книга может использоваться как пособие для самостоятельной подготовки, как справочный материал в рамках обучения сотрудников организаций, а также для подготовки соответствующего курса в различных учебных заведениях.

>>> Перейти на страницу книги "Свободные программы в офисе и дома".

 ,

anonymous
()

Релиз Emonoda 2.1.12

Новости — Open Source
Группа Open Source

Emonoda — это набор программ для организации и управления коллекцией торрентов. Он поможет вам следить за актуальностью раздач, автоматически обновляя торрент-файлы с популярных в рунете трекеров, а также вычищать старые данные, просматривать мета-информацию торрентов и делать множество других вещей. Из коробки поддерживается HTTP/Socks4/Socks5-прокси.

В набор входят такие команды:

  • emupdate — следит за раздачами, используя спецплагины для трекеров; обновляет торрент-файлы при добавлении новых серий или перезаливке раздачи; интегрируется с основными линуксовыми клиентами.
  • emfile — позволяет читать метаданные торрент-файлов и выдает их в человекочитаемом, либо удобном для скриптов формате.
  • emdiff — показывает разницу содержимого двух торрент-файлов в виде диффа.
  • emfind — служит для выполнения различных поисковых запросов, например для поиска в каталоге с данными файлов, не принадлежащих ни одному торренту, зарегистрированному в клиенте.
  • emload — загружает торрент, создавая полный путь для данных и размещая в указанных местах симлинки.
  • emrm — удаляет торрент из клиента.

Система написана на Python 3 (требуется версия >= 3.6) и может быть установлена из PIP или AUR. Для сборки необходим Cython. За подробностями обращайтесь к README.

( Список изменений, трекеров и поддерживаемых клиентов под катом )

>>> Подробности

 , , ,

liksys
()

Конспект по GNU Make

Форум — Development

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

1.  include / -include - включить Makefile, дупускаются shell
    шаблоны. С / без ошибки при отсутствии файла. После прочтения всего
    Makefile, имена файлов, которые указаны  директиве, проверяются на
    возможность обновления рецептами. В случае обновления включаются
    заново (основа для автоматической генерации зависимостей).

2.  Secondary expansion - после чтения Makefile и перед фазой
    обновления целей, производится второй проход по списку
    пререквизитов. Доступны автоматические переменные.
        .SECONDEXPANSION:
        main_OBJS := main.o try.o test.o
        lib_OBJS := lib.o api.o
        main lib: $$($$@_OBJS)

3.  Order-only пререквизиты - цель не будет считаться устаревшей при
    выполнении рецепта такого пререквизита
        targets : normal_prereq | order_only_prereq.

4.  Переменная VPATH - пути поиска всего. Директива vpath - пути поиска
    для определённого класса файлов.

5.  .PHONY : target - цель target всегда устаревшая. Для target не
    производится поиск неявных правил.

6.  Если в качестве пререквизита -lname, то поиск библиотеки в
    следующих местах: в текущей директории, vpath и VPATH, /lib,
    /usr/lib, prefix/lib.

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

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

9.  target : ; пустой рецепт, не будет производиться поиск неявного
    правила.

10. Static pattern rule
       targets : target-pattern : prereq-pattern
            recipe
       ${objects} : %.o : %.c
    Часть имени соответствующая % - stem.

11. Каждая строка рецепта исполняется в своей shell (в одной есле
    .ONESHELL). Shell, которая используется, хранится в SHELL, опции в
    .SHELLFLAGS. Значение SHELL не наследуется из окружения make.
    Exit-status shell, выполняющей команду, содержится в .SHELLSTATUS.

12. В рецепте (в начале строки):
       @ - отключает печать команды (-n и --just-print всё равно
           печатают такие команды);
       + - выполнить даже если заданы -n или --just-print;
       - - игнорировать ошибки при исполнении команды.

13. В рецепте: обращение к make переменной ${var}, к shell переменной
    $${var}.

14. При рекурсивном вызове make использовать переменную ${MAKE}
       $(MAKE) -C subdir

15. [override] undefine var - удалить переменную.

16. export / unexport var [=val] - экспортировать / не экспортировать
    переменную в sub-make. Одинокий export / unexport - экспортировать
    / не экспортировать все переменные.

17. var = val - ссылка;
    var := val - обычная переменная;
    var += val - ссылка ли, зависит от типа val;
    var ?= val - присвоить значение если var не объявлена;
    var != cmd - выполнить cmd в shell;
    ${foo:.o=.c} - заменить .o в конце слов на .c;
    ${foo:%.o=%.c}

18. Иерархия переменных:
       1. объявлянные внутри Makefile с override (дальнейшая
          модификация возможно только с override);
       2. переданные через командную строку;
       3. объявленные внутри Makefile без override;
       4. из окружения, где запускается make.
    Экспортируются переменные в sub-make:
       1. из окружения, где запускается make (редактирование внутри
          Makefile не влияет);
       2. переданные через командную строку (если Makefile редактирует
          с override, то в sub-make приходит значение из командной
          строки);
       3. объявленные внутри Makefile с export.

19. MAKEFLAGS - содержит флаги переданные при запуске make +
    переменные со значениями переданными через командрую строку, но не
    содержит цели. В переменную можно добавить флаги внутри Makefile
    или в окружении, в котором запускается make).

20. MAKELEVEL - содержит целое число, которое указывает на глубину
    рекурсии. 0 для главного make.

21. MAKECMDGOALS - содержит цели заданные при запуске make.

22. Target-specific переменные
       prog : [private] CFLAGS=-g
       prog : prog.o foo.o bar.o
           recipe
     задаёт CFLAGS в рецептах для prog, prog.o, foo.o, bar.o. Если
     private стоит, то пререквизиты не наследуют CFLAGS. Если
     переменная объявлена private на глобальном уровне, то она не
     будет видна ни в одно рецепте.

23. Pattern-specific переменные
       %.o : CFLAGS=-g

24. Match-anything pattern rule (цель одинокий %). Бывают:
      1. терминальные (%::pregeq) - prereq должен существовать, не
         может быть создан посредством другого правила.
      2. иначе - правило будет рассмотрено только если нет других
         неявных правил , чья цель совпадает с искомой.

25. Last-resort default rule
      1. %::
      2. .DEFAULT:      # если рецепт не указан, то текущее правило
                          будет удалено

26. Отмена неявного правила
       %.o:%.s
    указать ту же цель и те же пререквизиты, рецепт не указывать.
    
27. Архивы:
      1. при использовании нотации со скобками ( libname(objs) ) не
         допускать параллельного запуска make (-j опция).
      2. внутри архива содержится таблица символов (__.SYMDEF), ranlib
         lib.a её обновляет. GNU ar не требует запуска вручную,
         запускает её автоматически.

28. Договорённости:
      * Каждый Makefile должен содержать
          SHELL = /bin/sh
        для избежания проблем на системах, где SHELL может быть
        унаследована из окружения.
        
      * Не плохо задать суффиксы для которых будет производиться поиск
        неявных правил
           .SUFFIXES:             # удаляет все раннее установленные
           .SUFFIXES: .c .o
           
      * ar bison cc flex install ld ldconfig lex make makeinfo ranlib
        texi2dvi yacc chgrp chmod chown mknod - вызывать через
        переменные ${AR}, ... . Для каждой переменной-команды
        переменная с опциями образуется добавлением FLAGS к имени
        (исключение - CFLAGS, YFLAGS, LFLAGS).

       * команды, которые следует использовать напраямую (без
         переменных): awk cat cmp cp diff echo egrep expr false grep
         install-info ln ls mkdir mv printf pwd rm rmdir sed sleep
         sort tar test touch tr true gzip.

       * каждый Makefile должен задавать переменные: INSTALL,
         INSTALL_PROGRAM (дефолтно ${INSTALL}), INSTALL_DATA (дефолтно
         ${INSTALL} -m 644).

       * staged install - для целей install и uninstall поддерживать
         переменную DESTDIR
            $(INSTALL_PROGRAM) foo $(DESTDIR)$(bindir)/foo
            $(INSTALL_DATA) libfoo.a $(DESTDIR)$(libdir)/libfoo.a

       * установка info и man страниц в цели install.

       * Разбивка install на $(PRE_INSTALL), $(POST_INSTALL),
         $(NORMAL_INSTALL). Разбивка uninstall на $(PRE_UNINSTALL),
         $(POST_UNINSTALL), $(NORMAL_UNINSTALL).

Господа, у меня вот ещё какой вопрос имеется: вот написал я какую-нибудь софтину, как мне определиться с именами файлов и всего проекта? Т.е. чтобы небыло конфликтов имён с другим софтом при make install. К тому же если сегодня конфликтов нет, то завтра у меня нет никаких гарантий, что такой софт не появится. Как тут правильно поступать? Каждый проект должен писать какие-то проверки на конфликты имён? Если так, то делает ли это автоматом autoconf+automake? cmake?

 

pavlick
()

Вышла версия 0.5.0 утилиты shellcheck для проверки скриптов на bash/sh

Форум — Development

Сабж. Утилита написана на haskell'е.

Проект на гитхабе: https://github.com/koalaman/shellcheck
Скачать: https://github.com/koalaman/shellcheck/archive/v0.5.0.tar.gz

 , ,

saahriktu
()

Дешёвый VPS под OpenVPN

Форум — Admin

Привет всем. Тема наверно уже сотню раз обсосана, но тем не менее. Нужен самый дешманский VPS какой только в принципе возможен (100 рублей/месяц было бы классно), на котором можно поднять VPN без последствий (бан от хостера). Пока в качестве вариантов рассматриваю Arubacloud, но слышал что там нужно отсылать скан паспорта, чтобы не платить лишнее, и Айхор Хостинг. В общем, жду совета.

 , , ,

Sunderland93
()

arp таблица в linux

Форум — Admin

Заметил, что начиная с ядра 3.1х записи из arp таблицы не удаляются. В таблице теперь хранятся записи машинок которые не были в сети больше полугода. Более того, если запустить в лвс сканер сети, то арп таблицы скорее всего до перезагрузки будут завалены всяким мусором. Зачем они так сделали? И как сделать чтобы было как на старых 2.х/3.х. Без патчинга сорсов разумеется.

p.s. варварский link set down/up - не решение.

 

Rost
()

А бросьте в меня краткой но ёмкой докой по С++ новинкам из стандартов [11-17]

Форум — Development

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

Есть какое-то исчерпывающее, но краткое чтиво? Стандарт читать грустно и долго.

 

Deleted
()