LINUX.ORG.RU

Избранные сообщения Vlad-76

Linux наконец-то не тормозит или пятничный релакс

 , ,

Помню давние времена, это был Debian 4, прекрасные третьи кеды, Celeron, HDD диски, какой-то древний GeForce и летающий Linux.

Прошли десятилетия. Из статьи в статью копипастится мантра «Linux для слабого железа», так же она повторяется и в комментариях, непременно сопровождаясь аннотацией «Пишет Вася, 32 Gb RAM, SSD Tb, GeForce RTX 5060 Ti». А я тем временем наблюдаю на своем железе какую-то ужасающую деградацию работы десктопного линукса. И если лет 5 назад это еще не так заметно было, то в последние года два это совсем уже из ряда вон выходящее и описывается одним словом: «безбожно тормозит». Разумеется мне эксперты вторят в один голос дескать у меня руки кривые. Возможно. Но что-то то мне подсказывало, что дело то не совсем в руках, ведь пользуюсь я линуксом то давненько и почему-то раньше, когда был менее опытным, все работало хорошо из коробки.

Итак, я консервативный технический аскет, мое домашнее железо сейчас это HDD (ни разу не покупал домой SSD), средненький проц и 8Gb RAM, видеокарта GTX 970. Это позволяет видеть проблемы сразу, собственно инженеры подтверждают этот тезис, см. https://news.ycombinator.com/item?id=41499633. Я начал искать, почему я наблюдаю отчетливо плохую работу домашней системы на современных дистрибутивах Linux. Первой проблемой стал snap. На таком железе всякие mint и ubuntu ушли в мусорку очень быстро, так как там используется оный, а это мазохизм, если у тебя не SSD и куча оперативы (да и вообще явный продукт копроэкономики). С flathub получше, но тоже нет. Эсперты на этом месте скажут «Ты что идиот? Купи SSD, HDD это прошлый век». У меня бывают долгие отсутствия или я могу попросту положить HDD на полку. С HDD я уверен что данные останутся, с SSD нет, см. статью о потере данных без питания у SSD https://www.ixbt.com/news/2025/04/20/dva-goda-bez-pitanija-issledovanie-podtverdilo-riski-dolgosrochnogo-hranenija-dannyh-na-ssd-bez-pitanija.html. А еще прекрасное, в век LLM SSD теперь ушатываются на раз https://4pda.to/2026/06/23/457958/nejroset_codex_okazalas_sposobna_ubit_ssd_menshe_chem_za_god/. Разумеется я не стал использовать всякие BTRFS, ZFS, XFS и подобные фс, которые уже давно заточены под SSD. Оставил ext4.

А дальше явных проблем я не нашел. Но как быть, если сетап окружения примерно такой же как раньше (использую браузер и IDE), а результат разный в разы? Ну не может же быть дело только в HDD, откуда бы такая деградация. Оказывается видимо может. Я нашел прекрасный тред https://www.linuxquestions.org/questions/slackware-14/disk-thrashing-on-5-15-x-kernels-but-not-on-4-4-x-or-4-19-x-kernels-4175713190/. В общем тенденция такова, что корпы очень сильно отравляют ядро в угоду корпоративным интересам (и корпоративного уровня железа), а домашнее железо игнорят или не сильно на него обращают внимание и с каждой свежей версией ядра на домашнем железе работа Linux деградирует. Видимо сейчас накопилось достаточно проблем, чтобы это стало визуально заметно. Что там напихали со времен 5.15 ядра, каких регресионных изменений, бог его знает, заниматься этим нет ни времени ни желания.

И я решил провести эксперимент, и поставли Debian 10 c бекпортами (ядро 4.19), форматнул с ext2(boot) и ext3, накатил Trinity Desktop https://wiki.trinitydesktop.org/Debian_Trinity_Repository_Installation_Instructions#TDE_R14.1.x_series и о чудо, все залетало! Браузер и IDE стали открываться мгновенно, сайты работают шустро, графическая оболочка откликается молниеносно, ощущения что я вернулся во времена Debian 4!

А что насчет старого софта спросите вы, а что, вы не умеет собирать свежий софт из исходников?…

Итого, сижу и наслаждаюсь старым добрым Linux в пятницу и в очередной раз читаю экспертов на сайтах: «У тебя руки кривые, у меня все работает на моей Ubuntu». Разумеется, они абсолютно правы. Всем добра :)

P.S. Жду клоунов в реакциях

Перемещено hobbit из talks

nullb0t
()

Вкатится в devops

 ,

Здравствуйте! Работаю офисным сисадмином 12 лет. Могу в Linux немного, в вайб кодинг. Из последнего: Вайбкодил формы для мобилок для инвентаризации в zabbix. Получилось вполне годное решение. Вайбкодил утилиты для инфобеза(скрины экранов пользователей с передачей на сервак, проверка заблокирован экран или нет, открытое текущее окно и кейлогер и т.п.) все это с записью в zabbix В 2026 году поздно ли заходить в devops?

ssigko
()

Не могу поднять Silicom карточку(SFP+) на чипе интелла

 82599es, , , silicom

Вот и пришлось вернуться к сетям . Пишет что No_carrier и ethtool -m тоже дает laser bias нулевой

*-network:0
       description: Ethernet interface
       product: 82599ES 10-Gigabit SFI/SFP+ Network Connection
       vendor: Intel Corporation
       physical id: 0
       bus info: pci@0000:93:00.0
       logical name: enp199s0f0
       version: 01
       serial: 00:e0
       capacity: 10Gbit/s
       width: 64 bits
       clock: 33MHz
       capabilities: pm msi msix pciexpress vpd bus_master cap_list ethernet physical fibre 10000bt-fd
       configuration: autonegotiation=off broadcast=yes driver=ixgbe driverversion=7.0.12-1-pve firmware=0x80000208 latency=0 link=no multicast=yes port=fibre
       resources: irq:668 memory:94100000-9411ffff memory:94140000-94143fff

ethtool -m enp199s0f0

        Identifier                                : 0x03 (SFP)
        Extended identifier                       : 0x04 (GBIC/SFP defined by 2-wire interface ID)
        Connector                                 : 0x07 (LC)
        Transceiver codes                         : 0x20 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
        Transceiver type                          : 10G Ethernet: 10G Base-LR
        Encoding                                  : 0x03 (NRZ)
        BR Nominal                                : 10300MBd
        Rate identifier                           : 0x00 (unspecified)
        Length (SMF)                              : 10km
        Length (OM2)                              : 0m
        Length (OM1)                              : 0m
        Length (Copper or Active cable)           : 0m
        Length (OM3)                              : 0m
        Laser wavelength                          : 1310nm
        Vendor name                               : SOURCEPHOTONICS
        Vendor OUI                                : 00:1f:22
        Vendor PN                                 : SPP10ELRCDFF
        Vendor rev                                : 10
        Option values                             : 0x00 0x1a
        Option                                    : TX_DISABLE implemented
        BR margin max                             : 0%
        BR margin min                             : 0%
        Vendor SN                                 : L8H2
        Date code                                 : 210716
        Optical diagnostics support               : Yes
        Laser bias current                        : 0.000 mA
        Laser output power                        : 0.0000 mW / -inf dBm
        Receiver signal average optical power     : 0.0000 mW / -inf dBm
        Module temperature                        : 27.18 degrees C / 80.92 degrees F
        Module voltage                            : 3.3774 V
        Alarm/warning flags implemented           : Yes
        Laser bias current high alarm             : Off
        Laser bias current low alarm              : On
        Laser bias current high warning           : Off
        Laser bias current low warning            : On
        Laser output power high alarm             : Off
        Laser output power low alarm              : On
        Laser output power high warning           : Off
        Laser output power low warning            : On
        Module temperature high alarm             : Off
        Module temperature low alarm              : Off
        Module temperature high warning           : Off
        Module temperature low warning            : Off
        Module voltage high alarm                 : Off
        Module voltage low alarm                  : Off
        Module voltage high warning               : Off
        Module voltage low warning                : Off
        Laser rx power high alarm                 : Off
        Laser rx power low alarm                  : On
        Laser rx power high warning               : Off
        Laser rx power low warning                : On
        Laser bias current high alarm threshold   : 95.000 mA
        Laser bias current low alarm threshold    : 3.000 mA
        Laser bias current high warning threshold : 90.000 mA
        Laser bias current low warning threshold  : 5.000 mA
        Laser output power high alarm threshold   : 2.2387 mW / 3.50 dBm
        Laser output power low alarm threshold    : 0.0759 mW / -11.20 dBm
        Laser output power high warning threshold : 1.7783 mW / 2.50 dBm
        Laser output power low warning threshold  : 0.0955 mW / -10.20 dBm
        Module temperature high alarm threshold   : 80.00 degrees C / 176.00 degrees F
        Module temperature low alarm threshold    : -15.00 degrees C / 5.00 degrees F
        Module temperature high warning threshold : 75.00 degrees C / 167.00 degrees F
        Module temperature low warning threshold  : -10.00 degrees C / 14.00 degrees F
        Module voltage high alarm threshold       : 3.6000 V
        Module voltage low alarm threshold        : 3.0000 V
        Module voltage high warning threshold     : 3.5500 V
        Module voltage low warning threshold      : 3.0500 V
        Laser rx power high alarm threshold       : 2.2387 mW / 3.50 dBm
        Laser rx power low alarm threshold        : 0.0182 mW / -17.40 dBm
        Laser rx power high warning threshold     : 1.7783 mW / 2.50 dBm
        Laser rx power low warning threshold      : 0.0229 mW / -16.40 dBm

P.S. ip link up и down делал, в dmesg ничего связанного с bias или power или sfp нету (

pinachet
()

Зависимость скорости работы циклов от выравнивания кода

 , ,

Обнаружил сильную зависимость скорости работы одной вычислительной функции от того, на каком адресе она начинается. Локализовал проблему с помощью вставки NOP-ов в разные её места, выяснилось что корень всех странностей находится в этом цикле (подозреваю, что различие в скорости работы тоже локализовано в нём, хотя как это точно проверить не знаю):

00000000000016b9 <.bL11>:
    16b9:       48 8b 04 ce             mov    rax,QWORD PTR [rsi+rcx*8]
    16bd:       48 19 04 cf             sbb    QWORD PTR [rdi+rcx*8],rax
    16c1:       48 ff c1                inc    rcx
    16c4:       75 f3                   jne    16b9 <.bL11>
    16c6:       48 83 1f 00             sbb    QWORD PTR [rdi],0x0
^ вот так всё работает с «обычной» скоростью. А так (всё сдвинуто на 1 байт вниз) - на 30-35% медленнее:
00000000000016ba <.bL11>:
    16ba:       48 8b 04 ce             mov    rax,QWORD PTR [rsi+rcx*8]
    16be:       48 19 04 cf             sbb    QWORD PTR [rdi+rcx*8],rax
    16c2:       48 ff c1                inc    rcx
    16c5:       75 f3                   jne    16ba <.bL11>
    16c7:       48 83 1f 00             sbb    QWORD PTR [rdi],0x0
двигаем дальше, всё медленно, вплоть до сюда:
00000000000016c5 <.bL11>:
    16c5:       48 8b 04 ce             mov    rax,QWORD PTR [rsi+rcx*8]
    16c9:       48 19 04 cf             sbb    QWORD PTR [rdi+rcx*8],rax
    16cd:       48 ff c1                inc    rcx
    16d0:       75 f3                   jne    16c5 <.bL11>
    16d2:       48 83 1f 00             sbb    QWORD PTR [rdi],0x0
Если сдвинуть ещё на 1 байт вниз - лаги исчезают.

Собственно, если отметить первый лагающий вариант (где .bL11=0x16BA) за точку отсчёта, то итоги такие:

-7..-1 - хорошая скорость
0..11 - замедление на 30-35%
12..15 - хорошая скорость
16..23 - замедление на 15-20%
24..31 - хорошая скорость
32..32+11 - замедление на 30-35%
32+12..32+31 - хорошая скорость
Именно так, 30-35% замедление циклично повторяется через 32 байта (и дальше тоже повторяется), а вот второе замедление, сдвинутое на 16 байт от первого, и меньше по величине, и короче по байтам, и отсутствует во втором цикле. Более того, оно отсутствует и при сдвиге на 64+16, и 96+16, и 128+16, но опять появляется на 256+16 (на 512+16 его опять нет, промежуточные уже не проверял) - странно. А ещё оно появляется/исчезает в зависимости от изменений в других линкуемых модулей. Например, простое дописывание к линкеру -lm (без изменений исходников) может на него повлиять. 30-35% же замедление присутствует стабильно на своём месте.

Ещё я проверил что будет если вставлять NOP-ы внутрь цикла. Так вот, добавление например 2 NOP-ов приводит к тому, что лаги начинаются на 2 байта раньше (т.е. при той же позиции JNE как и раньше начинались), а вот заканчиваются на том же месте как раньше, т.е. при той же позиции метки (т.е. лаги от -2 до 11). Вторая зона лагов стала какой-то размазанной с усилившимся пиком в самом начале, а так же она появилась таки во втором цикле на 32+16-2.

сдвиг   время выполнения бенчмарка
-6       511.9 +- 14.8
-5       515.2 +- 12.3
-4       511.6 +- 8.9
-3       507.3 +- 7.2
-2       683.0 +- 9.2    <-- первый круг
-1       672.1 +- 12.3
0        670.5 +- 8.6
1        674.8 +- 17.1
2        669.4 +- 7.4
3        672.5 +- 11.0
4        675.0 +- 9.1
5        669.9 +- 8.9
6        675.5 +- 8.8
7        679.1 +- 7.6
8        696.9 +- 23.6
9        691.6 +- 14.8
10       680.5 +- 9.5
11       684.0 +- 9.0
12       516.5 +- 7.9
13       517.2 +- 11.6
14       792.3 +- 36.8   <--
15       605.4 +- 37.5
16       575.8 +- 24.2
17       566.0 +- 16.0
18       555.8 +- 21.6
19       562.0 +- 14.5
20       555.7 +- 8.7
21       537.2 +- 10.7
22       534.4 +- 11.2
23       549.9 +- 14.6
24       522.1 +- 10.6
25       517.8 +- 9.5
26       515.5 +- 8.4
27       517.0 +- 4.2
28       512.2 +- 7.4
29       516.8 +- 8.6
30       680.3 +- 9.2  <-- второй круг
31       675.0 +- 19.7
32       671.7 +- 8.9
33       669.2 +- 9.1
34       668.3 +- 10.8
35       667.0 +- 9.6
36       669.0 +- 8.9
37       671.0 +- 9.5
38       670.6 +- 10.8
39       676.5 +- 10.1
40       681.0 +- 10.5
41       682.1 +- 12.7
42       693.5 +- 16.7
43       689.8 +- 13.5
44       512.5 +- 4.9
45       516.9 +- 7.1
46       685.5 +- 12.3   <--
47       515.2 +- 7.6
48       519.0 +- 8.7
49       513.2 +- 7.9
50       512.4 +- 6.2
51       510.8 +- 4.7
52       510.3 +- 7.3
53       507.4 +- 7.0
54       509.2 +- 6.9

Вообще мне казалось что для более быстрой работы кода надо выравнивать начала циклов по 16-байтным границам, но тут ничего подобного незаметно, все адреса не пойми какие. Есть замеченная закономерность: когда JNE доползает до адреса 0x16c5 - лаги начинаются, когда до него доползает и начало цикла - заканчиваются. Но JNE двухбайтовый, т.е. когда он на 0x16c4 то второй его байт на 0x16c5 и лагов ещё нет.

Есть ли шанс объяснить почему так? А то мне совсем не нравится что код рандомно теряет треть скорости на ровном месте, тут я заметил, где-то не замечу, да и на разных процах это может быть по-разному, что делать?

---------------

Почти итог: адреса в дампах выше считал от начала объектного модуля, оказывается модуль автоматически (если явно не указать) по 16-байт границе не выравнивается, и адреса в бинарнике уплыли. Реальное замедление получается если тело цикла пересекает 32-байт границу (кроме случая когда за неё вылезает только один байт последней инструкции, почему-то), выглядит логично.

firkax
()

Проброс портов SSH

 , ,

Вопрос знатокам:

У меня есть SSH-сервер на локальной машине, на которую проброшен порт с удалённой машины: ssh -R port:localhost:port user@ip.

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

Спасибо.

PunkPerson
()

Отчёт по надёжности HDD от облака

 , ,

Сабж


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

При составлении отчёта за IV квартал из парка накопителей исключили некоторое число экземпляров и оставили в статистике данные по 337 192 жёстким дискам. За отчётный период Backblaze ввела в эксплуатацию две новые модели: 112 экземпляров Seagate ST16000NM000J на 16 Тбайт и 1201 экземпляр WDC WUH722626ALE6L4 на 26 Тбайт — первый жёсткий диск такого объёма.

В течение квартала модели HGST HMS5C4040BLE640 (4 Тбайт), Seagate ST12000NM000J (12 Тбайт) и Seagate ST16000NM000J (16 Тбайт) продемонстрировали всего по одному отказу; вышел также из строя один вышеупомянутый WDC на 26 Тбайт — в первый же квартал эксплуатации. Модели Seagate ST8000NM000A (8 Тбайт) и Seagate ST16000NM002J (16 Тбайт) не вышли из строя ни разу. Наименее надёжными оказались HGST HUH728080ALE600 (8 Тбайт) со среднегодовым уровнем отказов (AFR) 10,29 %, Seagate ST10000NM0086 (10 Тбайт) с 5,23 % и Toshiba MG08ACA16TEY (16 Тбайт) с 4,14 %.

Тревожный двузначный показатель отказов HGST HUH728080ALE600 вынудил компанию провести краткое расследование. Температурный фактор эксперты исключили, и наиболее вероятной причиной отказов назвали фактор вибрации. В Backblaze приняли решение начать постепенный вывод модели из эксплуатации и не принимать дополнительных мер по исправлению ситуации. Жёсткие диски Toshiba MG08ACA16TEY демонстрировали аномально высокий уровень отказов в предыдущем квартале, но он был связан не с фактическими неисправностями, а с обновлением прошивки, которое в Backblaze были вынуждены установить. В последний отчётный период жёсткий диск снова демонстрировал AFR выше, чем по всему парку накопителей, но обозначил и тенденцию к снижению.

В годовой отчёт Backblaze включила 344 196 экземпляров жёстких дисков — всего 30 моделей. Общегодовой показатель AFR по всему парку в 2025 году составил 1,36 % по сравнению с 1,55 %, которые были в 2024 году. Квартальные результаты за последние 12 месяце колебались, но результат за весь год отражает ощутимое улучшение. Ни одна модель не показала нулевого числа отказов за год, но у некоторых моделей наблюдалось очень низкое их число, в среднем менее двух отказов за квартал. Это, в частности, HGST HMS5C4040BLE640 (4 Тбайт, 5 отказов), Seagate ST12000NM000J (12 Тбайт, 4), Seagate ST14000NM000J (14 Тбайт, 7), Seagate ST16000NM002J (16 Тбайт, 1), Toshiba MG09ACA16TE (16 Тбайт, 3), WDC WUH722626ALE6L4 (26 Тбайт, 1).

Компания также сравнила среднегодовые показатели отказов за 2023, 2024 и 2025 годы. В сравнение вошли модели, которых на 31 декабря 2025 года было 250 единиц в эксплуатации, и которые наработали в 2025 году более 50 000 дней. В 2023 году показатель AFR был 1,70 %, в 2024 году — 1,57 %, а в 2025 году снизился до 1,36 %, вернувшись к уровню 2022 года, когда он был 1,37 %. По итогам квартала 25,13 % накопителей имели объём до 12 Тбайт; 52,06 % — от 14 до 16 Тбайт; и 22,81 % — более 20 Тбайт.

Ещё одну сводку составили на основе показателя AFR за весь срок службы моделей в длительной эксплуатации. В статистику включили жёсткие диски, которых по состоянию на 31 декабря 2025 года было более 500 единиц при наработке более 100 000 дней. Общий показатель к настоящему времени составил 1,30 %, и он остаётся относительно стабильным в течение нескольких отчётных периодов. Несмотря на квартальные колебания и изменения модельного ряда, долгосрочная надёжность парка накопителей сохраняется в узком диапазоне.


Как говорится, за что купил…

tiinn
()

Можно ли дергать crow api из других (собственных) потоков?

 

Привет, заюзал crow для http сервера. Вопрос, который я не понял - а можно ли дергать crow апи из других (своих) потоков? Ведь он работает на базе asio, а там свой event_loop, thread_pool и всё такое, и надо помещать задание в очередь asio, которое будет выполнено его потоками. Сомнения были сразу, но после того как увидел Crow::tick(), которое даёт возможность помещать функцию в очередь на выполнение, задумался конкретно. Пример набросал, отдельный мой поток играет в пинг-понг с websocket коннектами и закрывает мертвые. Так можно?

std::mutex g_ws_mtx;
std::unordered_map<crow::websocket::connection*, steady_clock_t::time_point>
   g_ws_connections;


void ws_ping_thread_fn()
{
   while (true) {
      std::this_thread::sleep_for(...);
      if (true) {
         std::lock_guard lck(g_ws_mtx);
         for (auto i : g_ws_connections) {
            ...
            if (last time > threshold)
               // close connection
            else
               i.first->send_ping(...);
            ...
         }
      }
   }
}

int main() {
   crow::SimpleApp app;
   ...
   CROW_WEBSOCKET_ROUTE(app, "/ws")
      .onopen([&](crow::websocket::connection &conn) {
            std::lock_guard lck(g_ws_mtx);
         auto res = g_ws_connections.insert({&conn, steady_clock_t::now()});
      })
      .onclose([&](crow::websocket::connection &conn,
            const std::string& reason, uint16_t) {
         std::lock_guard lck(g_ws_mtx);
         auto res = g_ws_connections.erase(&conn);
      })
      .onmessage([&](crow::websocket::connection &conn,
            const std::string& data,
            bool is_binary) {
         std::lock_guard lck(g_ws_mtx);
         auto e = g_ws_connections.find(&conn);
         e->second = steady_clock_t::now();
      });

   std::thread ws_ping_thread(ws_ping_thread_fn);
   app.port(g_server_port).bindaddr("127.0.0.1").multithreaded().run();
   ws_ping_thread.join();
}

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

kvpfs_2
()

Сайты с таблицами системных вызовов

 

  1. https://syscalls.mebeim.net – всегда свежие данные; есть сигнатура вызова; JSON для отдельных версий ядра.

  2. https://syscalls.defoy.tech – еженедельное обновление; syscalls.tar.gz всех CSV.

  3. https://x64.syscall.sh – только arm, arm64, x86; есть сигнатура вызова; есть API сайта.

  4. https://filippo.io/linux-syscall-table – Linux 6.16-rc1; нечёткий поиск по имени; исходники этого HTML на Go.

Enjoy!

dataman
()

Как найти утечку?

 ,

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

Что именно произошло? Было два случая.

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

  2. Мы собираемся поехать бухать в Териберку. Зафоткать северное сияние, и вообще делать нам нечего, по всей видимости. Мы вели небольшую часть обсужений в чате ТГ и на приватном инстансе nextcloud. Через несколько дней мне позвонили гиды по Териберке. С таким уверенным голосом, как будто мне это 100% нужно.

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

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

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

Pierre_Dolle
()

Как у вас, программистов, зарождаются проекты?

 , ,

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

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

saufesma
()

Nginx + Lua вернуть JSON, как?

 ,

Добрый день Подскажите пожалуйста, как вернуть JSON в response? Есть сам JSON

{"1_sign_level":"0200200","2_sign_level":"0200300"}
Пробовал ngx.say и cjson.encodeНо ничего не получается. Помогите, пожалуйста, с кодом.

darksmoke
()

Инкрементальное и дифференциальное резервное копирование виртуальной машины QEMU/KVM

 , , ,

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

Статья является «конспектом» документации QEMU. Я потратил некоторое время на изучение этого вопроса и проверки. Выкладываю – может кому-нибудь пригодится.

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

smola0609
()

OpenVZ7, исчезло место в контейнере.

 ,

/# du -sch /*
11M     /bin
4.0K    /boot
20K     /dev
16M     /etc
356K    /home
43M     /lib
4.0K    /lib64
16K     /lost+found
4.0K    /media
4.0K    /mnt
4.0K    /opt
0       /proc
23G     /root
1.2M    /run
5.7M    /sbin
4.0K    /srv
0       /sys
52K     /tmp
5.7G    /usr
926M    /var
30G     total

Пишет что 23G в root. Проверяем

# du -sch /root/*
90M     /root/1
90M     total
из хоста
# df -k
Filesystem             1K-blocks       Used Available Use% Mounted on
/dev/ploop11307p1       30830500   30495960         0 100% /vz/root/243
# du -cms /* | sort -rn
29739   total
22996   /root
5742    /usr
926     /var
43      /lib
16      /etc
11      /bin
6       /sbin
2       /run
1       /tmp
1       /srv
1       /opt
1       /mnt
1       /media
1       /lost+found
1       /lib64
1       /home
1       /dev
1       /boot
0       /sys
0       /proc
# du -cms /root/* | sort -rn
90      total
90      /root/1
Компилил вчера go в виртуалке. Не дождался, лег спать, а сутра такое. )) и go недокомпилился, ругалось на нехватку места на диске
В норме обычно занято не более 22-25%.
Виртуалку ребутал
почему /root занял, если компилил в /usr/local/src
«vacuum» для ploop диска нужен?

Vlad-76
()

Как измерять системные показатели в реальном времени?

 , ,

Ммм… не знаю как назвать эту функцию. Как сделать так, чтобы данные, например, в htop (и всех программах для отслеживания состояния системы), обновлялись в реальном времени, а не раз в несколько секунд?

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

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

Reptile
()

Как в системе CentOS 6.9 обновить компилятор gcc?

 ,

Хотел обновить софт, а его разработчики переехали на новое окружение разработки, в т.ч. на новый компилятор и их софт со старым компилятором стал не совместим
https://bird.network.cz/pipermail/bird-users/2019-August/013642.html

Система установлена полностью из репов
в подключенных репах видно вот такой компилятор
mingw64-gcc-c++.x86_64 4.9.2-1.el6 epel
это эквивалент установленного gcc-4.4.7-18.el6.x86_64 ?
Как выйти из ситуации чтобы малой кровью решить задачу компиляции софта новым компилятором.
В системе есть еще модули, которые собирались нормально со старым компилятором и ломать это не нужно.

ядро в системе 4.12.0-1.el6.elrepo.x86_64

Vlad-76
()

Советы про разработке среднего приложения

 , ,

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

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

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

nixbrain
()

Не завалялось ли у кого-то неужаренной RTX 3090?

 

Облазил авито, убедился, что это помойка с кучей фейковых объявлений.

Делал 2 попытки купить у «надёжных» продавцов, 2 раза платформа блокировала сделку.

Карт которые на авито не выглядят подозрительно (не из под майнинга) вообще нет.

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

В общем Linux тут при том, что NVIDIA выпускает под него блобы.

unclestephen
()

Новая статья: «Эволюция Lua, продолжение»

 , , ,

Вышла вторая статья посвящённая эволюции развития языка Lua.

Анонс

Первая часть - 2007

Вторая часть - 2025

Я ещё не читал, кому интересно, почитайте :)

---- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
(function(v) local f f = function(v) print(v) return f end return f(v)  end)
----------------------------------------------------------------------------
                                "Lua"
                                "Это"
                               "Весело!"
                              "Полезно!"
                             "Интересно!"
----------------------------------------------------------------------------
                  string.format("%s","hello world!")
---- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

Всем бобра. Досвиданья.

Перемещено hobbit из general

LINUX-ORG-RU
()

Программирование 2025. Полный Вкат.

 

Продублирую свой вопрос на форуме.

Так какие книги на данный момент самые лучшие для полного вката в программирование?

Речь идёт о ряде книг, которые следует изучать друг за другом и обязательно постоянно практиковаться, создавая реальные рабочие проекты (хоть и простые в начале, но точно сложнее калькуляторов).

От самых фундаментальных азов и машинных кодов до сверхвысокоуровневых языков с программированием из визуальных блоков и автоматического программирования при помощи нейронок и других автоматов-генераторов кода? Хочется понимать и то, как именно программируют автоматы.

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

вайбик: https://www.youtube.com/watch?v=WmnDcLGnYck

NeoX
()

Скачивание видео с ютуб, через yt_dlp + прокси

 ,

Ubunto

Установил shadowsocks-libev, конфиг

{
    "server": "0.0.0.0",     
    "server_port": 8388,
    "local_address": "127.0.0.1",
    "local_port": 1080,
    "password": "your_password",
    "method": "chacha20-ietf-poly1305",
    "timeout": 300
}
curl -v --proxy socks5://root:your_password@92.63.***.***:8388 https://www.google.com
*   Trying 92.63.***.***:8388...
* Connected to 92.63.***.** (92.63.***.***) port 8388

Соединение зависает

 nc -vz 92.63.***.*** 8388
Connection to 92.63.***.*** 8388 port [tcp/*] succeeded!

Вероятно дело в авторизации, попробовал еще один вариант

wget -e use_proxy=yes -e http_proxy=socks5h://root:your_password@92.63.***.***:8388 https://www.google.com

Он сработал, скачал index гугл страницы. Ок

Далее, необходимо через yt_dlp, скачать видео. Написал скрипт, закинул на сервер

ydl_opts = {
    'format': 'bv+ba/best',  # Лучшее видео + лучший звук
    'outtmpl': "/var/rJNBGqiBI7s",  # Путь сохранения
    'merge_output_format': 'mp4',  # Объединение видео и аудио
    'postprocessors': [{
        'key': 'FFmpegVideoConvertor',
        'preferedformat': 'mp4',  # Конвертация в MP4
    }]
}

# Скачивание
with yt_dlp.YoutubeDL(ydl_opts) as ydl:
    ydl.download(["https://www.youtube.com/watch?v=rJNBGqiBI7s"])

Ок, видео загружено. Подитожим

Есть сервер, запуская скрипт на нем, возможно скачать видео. Далее на этом сервере, установил shadowsocks. Открыл порт, из вне доступен. Через CURL, зависает соединение. Через wget, соединение есть. Страницу получаем

То есть, со своего пк, в терминале выполняю команду

wget -e use_proxy=yes -e http_proxy=socks5h://root:your_password@92.63.***.***:8388 https://www.google.com

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

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

Мой вариант

import sys, yt_dlp

# Настройки загрузки
print(sys.argv[1])
ydl_opts = {
    'proxy': 'socks5h://root:your_password@92.63.***.***:8388',
    'format': 'bv+ba/best',  # Лучшее видео + лучший звук
    'outtmpl': "/var/rJNBGqiBI7s",  # Путь сохранения
    'merge_output_format': 'mp4',  # Объединение видео и аудио
    'postprocessors': [{
        'key': 'FFmpegVideoConvertor',
        'preferedformat': 'mp4',  # Конвертация в MP4
    }]
}

# Скачивание
with yt_dlp.YoutubeDL(ydl_opts) as ydl:
    ydl.download(["https://www.youtube.com/watch?v=rJNBGqiBI7s"])
[youtube] Extracting URL: https://www.youtube.com/watch?v=rJNBGqiBI7s
[youtube] rJNBGqiBI7s: Downloading webpage
WARNING: [youtube] Unable to download webpage: timed out
[youtube] rJNBGqiBI7s: Downloading tv client config

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

Zuldek
()