LINUX.ORG.RU

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

Рандомно подропать входящий трафик на ppp0

 , ,

Надо сэмулировать потерю пакетов, с eth0 работает на ура, с ppp0 - не пашеть:

tc qdisc add dev ppp0 netem loss 11%

Есть ещё варианты?

pon4ik
()

Vim unified diff для дофига дирректорий

 , ,

Есть кодебейз.

Есть unified diff patch.

Хочется посмотреть чего там наменялось в side-by-side режиме, для всех файлов упомянутых в патче.

Хотелось бы сделать это с помощью привычного ковыряла. аля git difftool, только для произвольной папки.

pon4ik
()

Делимся полезными кусками из ~/.vimrc и показываем свои статусные строки 2015 тред

 , ,

Как говорили древние отцы-основатели редактирования текстов: « Damnosa quid non imminuit dies¹ ? »

Но мы им отвечаем: « Tempora mutantur et nos mutamur in illis² ! »

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

Я могу предложить (кое-что известное, но будет полезно новичкам, если такие есть):

  • Автопаста — не нужно нажимать :set paste перед пастой, чтобы сохранялись отступы, работает автоматически, добавить и забыть навсегда.
  • Кайфовставка — позволяет по хоткею кушающему моушины «замещать», т.е. заменять целевое слово (или моушин-цель) на то, что сейчас в буфере, с трудом вспоминаю, что я делал без этого хоткея.
  • Более лучший фолдинг — информация про к-во сложенных линий теперь справа + добавляет % от всего документа, картинка с этим и без.
  • Пипетка для верстальщиков — по хоткею вызывается пипетка (в зависимости от ОС — разная, на линуксе это zenity или Yad (sourceforge.net)) с текущим значением на курсоре и авт. меняет при изменении.
  • Автопереключение раскладки — при переходе в normal mode и обратно, после настройки включает английский язык когда переходим в normal mode из insert mode, где был включен другой язык. Очень удобно, уже давно привык.
  • Удобно двигать строки/блоки — придумал чем занять бесполезные стрелки, используется vim-move, кстати предлагаю особо наглым упороться hardmode.
  • tmux-complete — комплитит в виме (добавляет в omnicomplete, т.е. безразлично какой комплитер используете neocomplete/YCM/etc) содержимое окон/панелей/сессий тмукса, в которых необязательно вим, может быть другое приложение либо просто выхлоп.
  • Переход на средину строки — текущей реальной (не виртуальной).
  • Режимо-зависимые курсоры — для тех, кто использует GUI-версию вима, я лично не использую.

А теперь по статусной строке. Почти два года сидел на airline, но вот недавно перешел на lightline, которая быстрее стартует и легче кастомизируется, а также не содержит кучу неиспользуемых (лично мной) возможностей. Попробовал еще ezbar, но японец пилит его под себя, хотя там есть кое-что интересное, насчет скорости:

lightline: 229.019  000.003: 
ezbar:     250.312  000.002: 
airline:   276.823  000.003: 
(если что, у меня еще около ~80 плагинов подгружаются), powerline не имеет смысла сюда рядом ставить, там секунды вместо миллисекунд :)

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

Показывайте ваши ништяки.

--------

¹ - лат. что не изменит губительное время
² - лат. времена меняются и мы меняемся с ними

redhat
()

матрица связности в графах

 

в общем есть матрица для ориентированного графа, тут все понятно, есть матрица допустим n * n, если нужно установить связь например 3 - 4, то делаем так: *(3 * n + 4) = 1, все просто. теперь допустим нужна матрица для неориентированного графа, 4 - 3 эквивалентно 3 - 4, а 3 - 3 не может быть, следовательно нам для хранения матрицы требуется память (n * n / 2 - n / 2), однако вопрос, как адресовать в таком массиве нужные нам связи, если написать *(3 * n + 4), то получим выход за пределы массива, есть идеи?

IvanR
()

Максимальный вполне несвязный подграф

 ,

Условия задачи такие:
1. Дан граф;
2. Разрешено удалять вершины, вместе с вершиной удаляются все инцидентные ей ребра;
3. Никаким другим способом удалять ребра нельзя;
4. Требуется найти минимальное множество вершин, после удаления которого ребер в графе не остается.

Вопросы:
1. Каково общепринятое название этой задачи?
2. Есть ли готовые быстрые алгоритмы?

Manhunt
()

Дорогие жители Санкт Петербурга, расскажите про Российскую Национальную Библиотеку

 ,

Интересует:

  • Может ли закадыш получить читательский билет?
  • На сколько и на каких условиях можно брать книгу?
  • Сколько стоит удовольствие?
  • Какие документы и сколько капель крови готовить?
pon4ik
()

Bluetoth-гарнитура не работает после suspend/resume

 , ,

Asus Zenbook UX52VS
Kubuntu 14.04
После перезагрузки гарнитура подцепляется нормально, звук идёт.
После suspend/resume она вроде бы как подцепляется, значок соединения показывается, но звука через неё нет.

На другом ноутбуке (HP) с другой гарнитурой и кубунтой совершенно аналогичная история.

Куда копать? Спасибо.

prischeyadro
()

Структура данных «список» для блочных хранилищ. Страницы. DBMS.

 

Дратути, меня зовут модест...

Есть хранилище: большой файл, разделённый на страницы (4...16Кб).

В хранилище лежит 100500 объектов переменной длины: в каждой странице 100...300 штук, в зависимости от их длины. Объекты хранятся в порядке их добавления в хранилище. Кончается текущая страница, открывается новая (в старой ставится ссылка на новую) и т.п. Страница пишется атомарно благодаря double-write-buffer как в InnoDB.

Разыскивается алгоритм и структура данных, которая бы позволяла сохранить информацию о порядке следования (списке) объектов. От структуры данных требуются операции:

1. Выдать N объектов с заданного смещения в списке
2. Атомарно переставить любой объект из его текущей позиции в начало списка (типа «поднятие топика»)
3. Операцию 2 выполнить в минимальное количество записей страниц, в деале за 1. У меня есть решение для 4 записей страниц на такую операцию, при этом между записями каждой страницы можно упасть и хранилище останется консистентным, но с учётом double write buffer реальных записей уже 8, а это 128 КБ записи на диск: дохрена для примитивной операции )

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

Варианты:
1. В каждый объект запилить поле «timestamp» (свежесть). Когда объект надо поднять в начало списка, то делаем touch этому timestamp. Это позволит на каждое поднятие объекта перезаписывать только ту страницу, где лежит этот объект. Недостаток: при холодном старте хранилища придётся прочитать ВСЕ объекты, чтобы построить индекс в памяти (дерево) по ключу timestamp. Хотя можно хранить массив timestamp объектов отдельно от самих объектов, в параллельном «потоке» страниц. Тогда при подъёме нужно читать меньше страниц.

2. Заюзать журнал и ссылки в объектах (двусвязный интрузивный список объектов). При поднятии объекта в начало списка, кидать в журнал команду, которая меняет ссылки между объектами. Вместо операции на реальных страницах просто кидать команду в журнал, таким образом пишется только 1 страница (страница журнала). Когда журнал набирает критическую массу, он накатывается на реальные страницы (но тут наступает необходимость перезаписать много разных страниц, хотя если список сделать не интрузивный, то есть prev-next (указатели) не хранить внутри самих объектов, а в отдельном «потоке страниц», то многие модификации указателей будут попадать на одни и те же страницы, в которых лежат эти указатели, поэтому количество страниц с указателями надо будет записать сильно меньше, чем самих указателей...).

Кастую DBMS-девелоперов и коммитчиков патчей в мускуль.

kiverattes
()

Помогите настроить энергосбережение

 ,

Есть ноутбук fujitsu lh532. Ноутбук под виндой живет в два раза дольше, чем под онтопиком, хотя в (arch) linux все очень тайлово, минималистично и не ярко (подсветка - 17%). powertop выглядит примерно вот так вот

The battery reports a discharge rate of 7.41 W
The estimated remaining time is 1 hours, 7 minutes

Summary: 1202,8 wakeups/second,  172,4 GPU ops/seconds, 0,0 VFS ops/sec and 8,0% CPU use

                Usage       Events/s    Category       Description
             17,0%                      Device         Display backlight
             17,0%                      Device         Display backlight
             27,5 ms/s     957,0        Process        /usr/bin/Xorg.bin :0 -seat seat0 -auth /run/lightdm/root/:0 -nolist
            100,0%                      Device         USB device: USB Mouse (A4Tech)
              0,0 pkts/s                Device         Network interface: enp3s0 (r8169)
              0,0 pkts/s                Device         Network interface: wlp4s0 (iwlwifi)
             17,3 ms/s      57,8        Process        /home/likan/.xmonad/xmonad-x86_64-linux
              3,4 ms/s     147,9        Interrupt      [30] i915
              7,0 ms/s       6,9        Process        /usr/lib/chromium/chromium --ppapi-flash-path=/usr/lib/PepperFlash/
              5,1 ms/s      32,3        Process        dzen2 -x 0 -y 752 -w 450 -h 16 -ta l -fg #9d9d9d -bg #020202 -fn -*
              4,5 ms/s      19,6        Process        dzen2 -x 0 -y 0 -w 950 -h 16 -ta l -fg #9d9d9d -bg #020202 -fn -*-m
              3,6 ms/s       5,9        Process        dzen2 -x 450 -y 752 -w 916 -h 16 -ta r -fg #44aacc -bg #020202 -fn
              2,4 ms/s      28,4        Process        xmonad-x86_64-l
              2,9 ms/s       2,0        Process        dzen2 -x 950 -y 0 -w 416 -h 16 -ta r -fg #9d9d9d -bg #020202 -fn -*
              0,8 ms/s      21,5        Process        [irq/31-iwlwifi]
              1,2 ms/s       7,8        Process        /usr/bin/xfce4-terminal
            197,7 us/s      19,6        Process        [rcu_preempt]
              0,7 ms/s       1,0        Timer          posix_timer_fn
             79,9 us/s      17,6        Interrupt      [31] iwlwifi
            335,6 us/s       7,8        Timer          tick_sched_timer
            138,8 us/s       9,8        kWork          ieee80211_iface_work
            372,8 us/s       1,0        Interrupt      [9] RCU(softirq)
            337,7 us/s       1,0        kWork          i915_gem_idle_work_handler
            296,0 us/s       1,0        Interrupt      [7] sched(softirq)
             93,7 us/s       3,9        Process        /usr/lib/chromium/chromium --type=gpu-process --channel=1148.0.5543
Установлен и настроен по вики пакет TLP. Используется встроенная карточка. Как узнать подается ли питание на дискретную карту? Как проверить активен ли bluetooth?
ЗЫ Была замечательная статья megabaks, но статья 2010 года. Хочется что-то точно такое же, но посвежее.

LIKAN
()

Поясните по сетевым интерфейсам

 ,

Каша в голове, да. Я прав или где-то ошибаюсь?

Значит такая модель. Есть 4 сетевых интерфейса: eth0, wlan0, tun0, tap0. Для каждого есть драйвер и какая-то плата, либо юзерспейсное приложение.

Открываем мы значит лор в браузере, http-запрос (прикладной уровень) упаковывается в ip-пакет (сетевой уровень). Согласно нашим таблицам маршруторизации ip-пакет пойдёт по одному из сетевых интерфейсов. При этом различий в ip-пакете не будет. Значит для сетевых интерфейсов есть какая-то общая функция типа send_data(interface, data).

Дальше начинаются различия.

В eth0 ip-пакет по идее должен быть упакован в ethernet-frame. Это происходит в драйвере или уже на плате? А может бывает по разному?

В wlan0 ip-пакет будет упакован во что-то похожее на ethernet-frame, но другое, так как wifi и ethernet отличаются на канальном и физическом уровнях.

В tap0 ip-пакет будет упакован драйвером в ethernet-frame и передан в юзерспейсное приложение.

В tun0 ip-пакет никуда не будет упакован, а будет сразу передан драйвером в юзерспейсное приложение.

Так или не так?

suuaq
()

Книги по дискретной математике и дискретной вероятности

 ,

Всем привет! Подскажите толковую литературу. Сам далеко не математик, поэтому хочется что-то понятное, без «тройных интегралов», но и без особой воды. Мне кроме Кнута в голову ничего не приходит (Конкретная математика и т.п.) Есть ли еще что? может наши отечественные авторы?

GreenBag
()

c/c++ странность с <<

 bitwise left shift, ,

всю свою сознательную жизнь я думал, что оператор << НЕ ЯВЛЯЕТСЯ ЦИКЛИЧЕСКИМ, но вопрос возник когда в правильно работающей проге нашел логическую ошибку на ровном месте, сам прикол сводится к такому коду:

for (i = 0; i < 64 + 1; i++)
    printf("i = %d; x = 0x%08x\n", i, (0x1 << i));
printf("\nbut i = %d; x = 0x%08x\n", 37, (0x1 << 37));
и выводу
i = 0; x = 0x00000001
i = 1; x = 0x00000002
...
i = 30; x = 0x40000000
i = 31; x = 0x80000000
i = 32; x = 0x00000001 // !!!
i = 33; x = 0x00000002
...
i = 37; x = 0x00000020
...
i = 64; x = 0x00000001 // !!!

but i = 37; x = 0x00000000
причем, это проявляется как на gcc-4.7.2, так и на окультном MSVC 12

скажите, пожалуйста, это фича, и я что-то пропустил в K&R, или эпическая бага?

p.s. в свою очередь >> довольно православен, и значение отличное от нуля у него только при сдвиге на 0

metawishmaster
()