LINUX.ORG.RU

Сообщения bonta

 

FreeBSD, ipfw, как сделать портфорвардинг с IP адреса VPS на внутренний VPN адрес

Форум — General

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

В общем задача такая что есть VPS, в VPS есть VPN туннель к моей машине, на моей машине веб-сервер, я хочу чтобы из VPS был редирект на мою машину.

Мне удалось в ipwf создать правила допускающие пакеты к 80му порту

#eif - адрес VPS (внешний белый IP)
#cmd = ipfw -q add
$cmd 100 allow log tcp from any to me 80 in via $eif keep-state

Так же добавил и правила для OpenVPN, icmp, ssh, все это работает, OpenVPN соединяется, пинги идут.

А вот портфорвардинг не могу осилить за почти целые сутки чтения статей, форумов, манов.

Для примера раньше на VPS у меня был Линукс, и там эту задачу через iptables я решил за пол-дня (не имея раньше опыта с этой утилитой и знаний про сети)

Было так - крутилась софтинка, которая пинговала адрес который становился доступен когда прикконектится OpenVPN моя машина, и когда адрес пинговался вызывались такие команды:

sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A PREROUTING -d $VPS_ADDR -p tcp --dport 80 -j DNAT --to-destination $MY_PC_IN_NAT
iptables -t nat -A POSTROUTING -d $MY_PC_IN_NAT -p tcp --dport 80 -j SNAT --to-source $VPN_TUNNEL_SERVER_SIDE_ADDR

При том вместо адреса моей машины в моей домашней локальной сети (MY_PC_IN_NAT) можно было, на сколько помню, подставить адрес конца OpenVPN туннеля на мой стороне (VPN_TUNNEL_CLIENT_SIDE_ADDR) и всё работало одинаково хорошо.

Ну соответственно когда пинг пропадал софтинка удаляла эти правила:

sysctl -w net.ipv4.ip_forward=0
iptables -t nat -D PREROUTING
iptables -t nat -D POSTROUTING

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

Вот, буду рад, если кто поможет мне сгенерировать аналогичные iptables команды для ipfw

p.s. курил эти ресурсы, но не помогло

https://dondub.com/2021/04/router-na-freebsd/

https://www.lissyara.su/articles/freebsd/tuning/ipfw_nat/

 , , , ,

bonta
()

Пользуетесь ли вы блокировкой рекламы в web?

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

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

А как поступаете вы?

  1. Блокирую везде 481 (75%)

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

  2. Отключаю блокировку на некоторых сайтах (например, проектах, которые хочу поддержать) 99 (15%)

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

  3. Не блокирую нигде 44 (7%)

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

  4. Блокирую только на некоторых (например, особо насыщенных рекламой) сайтах 17 (3%)

    ***********

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

 , , ,

bonta
()

Есть ли у вас личный белый IPv4 и для каких целей?

Голосования — Голосования(не подтверждено)

Стало интерсно, как с этим дела у лоровцев.

Уже давно считается что адресов IPv4 не хватает. А вот например у меня, как физлица ажно целых 2 белых статических IPv4 адреса.

Причем ни один из них не приносит мне доход и по сути даже не используются их возможности большую часть времени.

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

Потом, благодаря белому IP так же стал использовать из офиса по RDP свой домашний компьютер для работы, тк компилировать код на нем было быстрее чем на офисном, ну и с целью более удобной передачи исходников себе домой чем через корпоративный ГИТ/флешки и прочие варианты. Формально в эти моменты этот белый IP участвовал в получении материальной выгоды :) но потом контора ввела в эксплуатацию сборочную ферму, которая компилировала быстрее чем и офисные и чем мой домашний комп и нужда отпала.

Потом у меня появился 2й белый на VPS, как следствие релокации в место жительства где было тяжело получить белый IP, а мне хотелось иметь свой сайт-блог, который уже был.

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

Кстати вот второй белый, котрый на VPS, мне когда-то приносил деньги, просто чуть принося мне удобства и производительности, а так можно было и без него, нужно было поддерживать софт управления оборудованием. Оборудование в другом городе и к компу который им управляет сначала по TeamViewer дали доступ, потом когда санкции слусились по AnyDesk, но все это было очень тормозным и неудобным, поэтому в тайне от тамошних админов еще до АниДеска я установил OpenVPN, TightVNC (кстати рекомендую именно его, тк может передавать файлы), добавил все это в автостарт и был доволен, 30Мегабит VPS хватало на более комфортную работу чем по AnyDesk, TeamViewer, подключенных через 100мегабит.

Но этот период тоже кончился и теперь у меня есть 2 белых IP, возможностями которых я пользуюсь редко: зайти пообслуживать компьютер родителей по RDP, ну иногда VPS служит мостом к моему компу который не имеет белого IP, например если в гостях и нужно фотки от гостей залить себе в локальное хранилище.

А есть ли у вас белый IPv4, сколько, дома или на VPS и для каких целей?

P.S. кстати тот белый что домашний - бесплатный. Что круто. Обычно большинство провайдеров взымают за предоставление белого IP раз в месяц что-то. У некоторых так и вообще не допросишься белого будучи физлицом, причем магистральных. А вот у одного из манистральных белый бесплатный, круто!

 , , ,

bonta
()

Пропало 128 байт с файла, хочу понять что послужило причиной

Форум — Linux-hardware

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

Есть некая картинка jpg, которая претерпела 4 переноса с носителя на носитель

1. С Андроида (увы методом перемещения а не копирования, т.к. если бы оригинал остался на Андроиде было бы проще судить о природе события) переместилась на usb flash (новый, почти не пользованный)

2. С usb flash на usb hdd.

3. C usb hdd на другой usb hdd.

4. И наконец с usb-hdd на внутренний ssd (тоже весьма новый, с почти неиспользованным ресурсом).

Смотрю на скопированные фотки и вижу что одна фотка стала битой.

У меня была резервная копия с внутреннего hdd...

Изначально я думал что проблема в каком-нибудь бите, что мол что-то на nand чипе флешки или Андроида покоцалось, ну думал так исключительно из-за того что картинка в принципе почти не потеряла первичный вид, лишь немного стала как-будто бы с применением полупрозрачного зеленого фильтра (см ссылку).

Бинарное сравнение файлов показало что есть различия непрерывно идущие с 163840 байта по 163968, всего различие растянулось на 128 байт (а не один бит как я думал).

Неправильные байты целиком нулевые. Т.е. выглядит это даже не как искажение информации в физической единице хранения - «перевернутые биты» (т.е. те самые проблемы с RAM, могут проявлять себя на noECC модулях https://blog.robertelder.org/importance-of-ecc-memory/)), а как потеря последовательности бит.

Я производил тщательные проверки накопителей (всех кроме Андроидского, т.к. не знаю как это делать в смартфоне безрутовом) - с ними всё впорядке, внешние hdd, внутренний ssd согласно smart не имеют событий переназначений, как комплектные утилиты (речь о Винде, поэтому chkdsk /f/r), так и сторонние HD Sentinel, HDDScan, не обнаруживают проблем с устройствами, ровно как и с флешкой, в ней хоть и нет smart но все тесты проходит на отлично.

Итого с одной стороны то что все нули - очень хочется описать событие как то что на одном из устройств случился плохой сектор и был заменен на резервный (а он типа с завода не содержит записей, поэтому нули), но на всех перечисленных устройствах размер сектора минимум 512 (на внешних дисках возможно даже 4096), а в нулях только 128 байтов, да и в smart нет событий не только переназначений, но даже таких как #196, #197, #199, т.е даже намека на плохие сектора и плохой линк интерфейса нет.

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

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

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

получается самым вероятным является то что проблема в накопителе Андроида?

Кстати подскажите есть ли какие-то тулзы, которые можно запускать на не рутированном устройстве, чтобы проверять «поверхность» «диска». Теоритически обычный пользователь имеет доступ к физическим секторам nand чипа, т.к. это «внешняя память» в терминологии Андроид, которую можно читать. Но конечно резонный вопрос имеет ли обычный пользователь права на низкоуровневое чтение, в том числе пустых секторов, в обход файловой системы, скорее всего не имеет.

В общем если заняться не чем, как и мне на момент написание этой портянки, то веллкам.

На всякий случай срезюмирую вопросы:

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

2. Может быть похоже на проблему с usb-кабелем? Но имеет ли возможность операционка (не важно какая) программно понять что сейчас какие-то аномалии и следует как минимум сообщить об этом (а лучше произвести новые попытки, ну типа как в сетевом протоколе TCP)

3. Есть ли возможность на нерутированном устройстве Андроид проверять жизнеспособность секторов nand накопителя, к которым, по крайней мере через слой файловой системы у пользователя доступ есть. Ну конечно речь про какой-то более адекватный способ (с множественным чтением каждого сектора, и замером времени отклика, как это делает hddsentinel и прочие проверялки) чем заполнить все пустое пространство одним огромным файлом (параллельно такой же файл сгенерировать в компе) и потом скопировать с телефона в комп и сравнить побайтово (ну или не копировать а по хешсумам сравнить)

https://i.imgur.com/8619HII.jpg

 , , ,

bonta
()

подскажите про gsm_modem (с полным набором AT команд) + esim

Форум — Talks

Поделитесь пожалуйста знаниями/опытом на тему gsm_modem + esim ?

Примером gsm_modem может послужить Quectel EM120R-GL.

Т.е. нужен такой девайс, предсталяющий к себе доступ на низком уровне по AT командам через COM(USB) порт, команды должны позволять использовать sms, ussd, звонить/снимать_трубку, желательно так же поддержка смены IMEI.

При этом девайс должен снабжен чипом esim.

Если кто занимался такими делами, подскажите какие решения вы использовали.

На сколько мне известно esim для embeded, к чему можно отнести вышеуказанный класс модемов поддерживает только МТС, т.к. только у них есть лицензии и оборудование для раздачи «профилей» по GSM, и причем это только для юрлиц.

Поэтому интересует так же возможность применения gsm_modem + телефонный способ получения профилей на esim (по wifi), для того чтобы можно было работать с другими операторами.

Возможно есть какое-то устройство совмещающее в себе gsm_modem+wifi+какую-то_софтверную прослойку для такого.

Возможно даже можно и без wifi а например по ethernet получать профили? Так то в теории, как мне кажется можно и через ppp мобильный интернет (например сначала используя обычную симку, для выхода в мобильный инет, а через мобильный уже получить профили). Но тем неменее консультант сказал что такое невозможно.

Или возможно вообще есть возможность сборки решения на базе обычных ноутбуков, в которые можно вставить такой модем (а wifi в ноуте уже есть), слышал что в Win11 есть api для esim.

В общем поделитесь знаниями, если кто сталкивался. Заранее спасибо.

 , ,

bonta
()

Более медленный и менее поточный процессор в многопотоке работает быстрее?

Форум — Development

Есть два проца:

1. Способен выполнять 6 нитей исполнения одновременно, 3.2Ггц, 2010 год разработки.

2. 8 нитей, 4.2Ггц, 2021 год разработки.

Есть программа, которая ради тестирования библиотеки, создает 10 000 потоков, каждый из которых конкурирует, если обобщить то за один ресурс (мьютекс).

Запускал программу на 1, 2 (и потом еще другом процессоре, тоже современном, подобном 2-му). Во всех случаях, на 1-м работает быстрее. Ощутимо. Скорость работы по IO от всех конкурирующих меж собой потоков держится в среднем 1.8 Мегабайт/с. В более шустрых процах всего 0.8.

Естественно на всех конфигурациях SSD, отсутствие фоновых процессов способных как-то ощутимо повлиять на IO или процессорное время (более того на более слабой машине таких фоновых - намного больше, и браузер, и ещё всякое и т.п., а на удаленных машинах, где тестировал, кроме программы грубо говоря и не было потребителей мощностей), памяти на всех одинаковый объём, но на моем DDR3, а на новых DDR4.

Есть у кого-нибудь теоритические познания - которые могут объяснить в чём может быть дело?

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

Если это так то как-тогда наиболее просто и переносимо (C++) реализовывать блокировку ресурса, который одновременно стремяться читать и изменять все потоки.

 

bonta
()

Почему меняется константная локальная переменная?

Форум — Development

Вот видео https://www.youtube.com/watch?v=c91zzMAaAlo () видео удалено

        const char firstSymbolPosIn7bit = UHDL + 1 + 1;
        // first +1 - for UHDL field
        // other +1 for specify the position of the first letter.

        const char firtSymbolFillers = std::abs(8 - firstSymbolPosIn7bit);

        if (UHDI_present && firtSymbolFillers) {
            unsigned char firstSymbol;
            HexToBin(&payloadText[1], &firstSymbol, 2);
            //↑ this call change const firtSymbolFillers

Есть переменная firtSymbolFillers, локальная, константная, её время жизни видно в видео, как и то что она никак не связана с вызовом ф-ии HexToBin, после которого значение локальной константной переменной меняется.

Есть ли у кого-то догадки из-за чего такое может происходить?

Ну т.е. может ли быть сам исходных код виной такому поведению, или же это какой-то глубинный косяк рантайма от Борланда(Эмбаркадеро)?

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

Обойти такое, чтобы заставить программу делать то что нужно, можно введя между нужной константой переменной и иф блоком откуда вызывается HexToBin - еще одну переменную затычку - тогда firtSymbolFillers не поменяется. Ну или просто использовать ниже в коде то же выражение, что первично инициировало firtSymbolFillers.

Но блин что за эффект такой? У меня вертится мысли что допустим как-то в коде с индексами массивов (строк) где-то есть ошибка. Но это очень вряд ли, т.к. в ф-ии используются AnsiString - а это vcl строка (Дельфийская, от Си++ к ней только биндинги) - так вот у AnsiString-ов на каждое образение к индексам обязательная проверка валидности индекса, и бросает исключение если что-то не то, так что вряд ли бы я забрел в другой индекс в стеке.. Да и если бы забрел - разве это бы как-то могло повлиять на изменение константной переменной?

 c++builder, , ,

bonta
()

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

Форум — Desktop

как запретить браузеру менять дефолтную полосу прокрутки?

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

Браузер Vivaldi.

 ,

bonta
()

SberBox

Форум — Talks

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

У родителей было кабельное, теперь в кабельном не работают почти все каналы, пишет типа «обновите на HD-приставку». Обновлять на именно ту, что от того провайдера что сейчас у них я не хочу, т.к. получилось так что подключение к кабельному было не совсем легальным - и было халявным, подключаться легально через этого провайдера сложно, нужно вызывать мастера и т.п.

В общем я решил погуглить - и интересным показалось решение в виде SberBox SBDV-00001.

Линукс тут конечно не очень причём, хотя формально, эта штука работает под управлением ядра Linux.

Как я понял по видео-обзору - эта штука умеет показывать «потоковое тв» до 200 каналов, ютуб, заказывать товары, определять предметы из видео.

Вопросы

1. В интрукции (доступной в сети) нет никакой информации за счет чего работает всё это.

Вангую внутри стоит какой-то lte модем, с вхардкоденной сим-картой.

Это так?

Иначе за счет чего бы работал ютуб, заказ, ведь нужен не только приём - но и передача.

2. Вопрос несколько странный, но насколько интенсивно эта система нагружает радиочастоты - работает ли она как ютуб в браузере - т.е. кратковременно подгружает секциями видео. Или же там такая классическая потоковая передача, которая не загружает по скорости канал, но постоянно что-то передает-принимает? (не болит ли башка если постоянно будет включено, например я могу по wifi достаточно долго посмотреть ютуб, но если где-то рядом идет разговор по wifi/lte(не важно) или работа по rdp - тоже «по воздуху» - то если нахожусь рядом более 30 минут у меня начинает сильно болеть голова, потому что интенсивность передачи при таких сценариях такая монолитная-постоянная, и хоть и скрости передачи там незначительные, но зато передача потоянная... )

3 - есть ли там возможность принимать стандартное эфирное цифровое тв вещание (вроде как сейчас телевышки передают цифровые сигналы), например в локациях где интернета (вышек связи) - нет вообще, но доходит сигнал от телевышки?

 

bonta
()

Feature Request

Форум — Linux-org-ru

Всем не злым добра.

Предлагаю тут делиться тем что хотелось бы видеть на этом сайте.

Итак, я бы хотел:

  • Изменение работы страницы уведомлений
  • Поддержка локального времени во всех временных полях сайта

Суть первой хотелки: при переходе на страницу уведомлений НЕ ПРАВИЛЬНО что количество уведомлений гаснет.

ПРАВИЛЬНО:

  • уведомления должны гаснуть по переходе на ссылку из списка уведомлений
  • должна быть удобная опция погасить определенное количество или все уведомления разом. Тут я бы предложил стандартный подход вебинтерфейсов емайлов - возможность выделить группу или индивидуально галками - и нажать на кнопку «прочитано»

Остальное в принципе нормально - а именно неудаляемость уведомлений, пусть остаётся.

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

Ну а суть хотелки про уведомления - например в том что я весь январь не читал Лор, и у меня там 60+ уведомлений, я бы хотел понимать что я прочел а что нет, но если сейчас зайду будет не очень понятно.

Да, возможно они выделяются жирнотой текста (кликнутые-не-кликнутые) - но это совсем не то, и не компенсирует сброшенное в нуль количество.

 

bonta
()

kde + fish://

Форум — Desktop

Подскажите пожалуйста как в KDE (4.14.2, хотя думаю версия тут не важна) настроить то чтобы сессии на удалённые машины по протоколу fish не теряли своей актуальности.

Имею ввиду вот щелкаю в Dolpine на удалённую «точку входа», ввожу пароль, получаю список файлов удалённой машины, открываю любой из них скажем в kate, редактирую, сохраняю. Если сохранять скажем раз в минуту то ок, но если скажем решил сохранить через 30 мин - то нужно заново вводить пароль.

Что не удобно.

Как сделать так чтобы kde хранило сессию до выхода пользователя из самого kde?

А в идеале чтобы KDE сама автоматически вводила пароль при входе в удалённую точку входа. Что-то не нашел такого пункта при создании точки входа в мастере.

 , ,

bonta
()

Похоже Интел сейчас намного в худшем положении, чем во времена Pentium4 vs AthlonXP

Форум — Talks

Вот собственно сабж https://3dnews.ru/1017577

При этом я помню времена когда именно АтлонХП на ядре Бартон делал более гигагерцевые Пентиумы4. Потом Атлон64 просто продолжил это.

Ну в итоге что думаете? Справятся? Или таки менеджеры-экономисты сольют Интел?

 , ,

bonta
()

Современный планшет на x86_64. Есть ли такое?

Форум — Linux-hardware

Сегодня видел классный сон, на столько классный что было жалко что проснулся.

Во сне в руки мне попал достаточно большой, но тонкий (чуть тоньше чем новейшие мелкие ноутбуки) планшет. С очень классным ips экраном, намного превышающим 1080p, в котором не видны пиксели даже с близко, и нет никакого шим, потому что это не oled, глаза не устают и радует благородное отсутствие глубокого черного (от презренной oled технологии).

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

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

Так вот - возвращаясь к реальности. Существуют ли сегодня такие планшеты:

1. Большой размер почти с ноутук 15". Тонкий, монолит (батарея вшита внутрь как в современных ноутах).

2. ips экран большого разрешения.

3. относительно не слабый по мобильным меркам x86_64, 4+ Гб памяти - собственно отсутствие arm главное требование, чтобы в планшете можно было ставить десктопную ос, а собирать или что-то гуглить типа десктопные сборки для арм - ненужная трата времени.

4. при хорошем процессоре и памяти - остальное железо чтобы было относительно древним (звук, irda, wifi, блютуз, возможно gsm модуль и nfc) - чтобы минимизировать пляску с поиском драйверов и любой линукс легко вставал на такой планшет.

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

 

bonta
()

Моё домашнее рабочее место с 2018 года

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

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

На картинке, топовое железо по меркам 2011 года, от АМД, собственно тогда и было приобретено, производительности для моего использования хватает и сейчас, кроме вопросов ОЗУ, её не хватает, но выбирать что-то большее очень сложно, потому чтобы гарантированно работало на нормальной частоте – память должна быть из вендорлиста, который давно уже не обновлялся, а горький опыт попыток расширить память имеется…

В итоге я научился работать на 4х Гб озу, иногда применяя стратегию запуска браузера на другой машине через

ssh –XC

Как живётся с 4096(2048) памяти в 2020м году? Легко! Если минимально использовать большие программы на джава:) Между прочим этого объёма вполне хватает на две виртуалки запущенные одновременно, или на РавКонвертер и последующий фотошоп 36-и мегапиксельных RAW снимков от Nikon D800.

Чуть подробнее про это а не про фото:

Иксы через ssh работают весьма быстро, не ощущаешь что это программа не у тебя, а в компе который стоит в «серверной» (на верху шкафа в прихожей), c одной оговоркой: кроме случая если в страничке не появится какая-нибудь анимашка, особенно если она 60fps, впрочем блокировщики рекламы и узкоспециализированное множество сайтов, которые я открываю через удалённый браузер – практически исключают попадание на анимашки. Если бы в квартире был протянут ethernet-кабель поддерживающий >100 мегабит (и роутер бы это поддерживал) то вероятно можно было бы и 60fps гонять, только интересно как при этом еще звук передавать :) Возможно rdp, хотя rdp я в своё время использовал когда работал частично в офисе а частично удалённо, тогда вся работа была на домашней машине с белым айпи, а из офиса я цеплялся домой по rdp, но в rdp мне не нравилось что в отличии от ssh -xc гоняется отрендеренная с потерями картинка, в иксах же через ssh - передается всё как есть, без потерь в картинке (и вообще как таковая картинка не передаётся), но зато есть звук сразу в этом rdp протоколе.

Поэтому жить можно. Совсем редко, с 2015 по 2020 таких случаев была парочка, для компиляции приходилось не логиниться в DE а компилять из текстового режима, чтобы было максимально свободной памяти.

Кстати по факту вся работа ведется в 2х гигабайтах, в виртуалке. Но в 95% случаев этого объёма памяти хватает и под IDE и под компиляцию и под работающую в виртуалке Оперу (с плагином ленивой загрузки страниц, чтобы не жрала память). А 4Гб вообще хватает на многое, спасибо классной реализации механизма ВиртуальнойПамяти в оффтопике, который из коробки имеет стратегию предварительной подготовки к худшему сценарию, в Линукс пишут что можно так-же, но нужно настраивать своп на такое поведение, я не пробовал. А еще оффтопик очень отзывчив при нехватке памяти и даже заранее начинает вести диалог с предложениями закрыть что-то, никаких тебе подвисаний и oom-киллеров, а что самое главное оффтопик версии 8.1 на себя, сервисы и дрова тратит всего около 700 мегабайт в озу. Тут может быть возражение что при загрузке ос занимает значительно больше – это так, но это всякий не нужный для функционирования, но нужный для сокрости доступа груз, который винда замечательно сбрасывает, когда наступает нехватка, несбрасываемый набор около 700 мегабайт.

Возвращемся к фотографии

Два стареньких, но хороших монитора, клавиатура, очень классная, от бренда BTC, который, как мне показалось, судя по Гуглу не особо известен за пределами РФ, и в РФ уже давно тоже канул в историю.

Тем не менее классная клава ноутбучного типа, удобно вмещается в узкое пространство рабочего стола.

В этой клаве очень удобные медиа-клавиши, а главное нет презренного мною нум блока, ещё она безшумна и живуча, однажды пролил креплённый кофе и слащённый на неё, разобрал промыл, просушил, но при нажатии на некоторые клавиши начинался ввод рандомных последовательностей, расстроился, купил Logitech K280e, но она непроходяще «воняла Китаем», тогда попробовал (через неделю, поняв что новой клавой не могу пользоваться) опять BTC и она ожила… С тех пор опять ей пользуюсь, зарёкся пить кофе и есть за рабочим местом, но хватило этого зарёка – на месяц, другой… ^_^ А логитех вроде прикольная но воняет, пытался её проветривать без толку, если поставить под нос вроде принюхиваешься но болит голова через полчаса, в итоге закрутил в пакет и кинул в чулан, продать кому-то совесть не позволит, скорее всего во время генеральной уборки уничтожу и выкину в мусор.

Мышь – вообще неизвестного бренда Aneex, крайне дешевая, купленная в продуктовом магазине ^_^, не ожидал что мышь из дешевого пластика, от нонейм производителя даже без лэндинга в вебе, окажется приемлемой, не вонючей (что редкость даже для более дорогого китайского товара) и живучей используется 3й год, периодически падая на пол с края стола.

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

На полу стоит саб от TopDevice TDE 420/5.1, общей мощностью с другими 4-мя колонками в 114W. Саб 99,9% времени выключен, эта аудиосистема ровесница комьютерному корпусу, но по молодости я еще проявлял интерес к басам, сейчас как-то нет, задние колонки одна стоит на боковине дивана, другая на полу, остальные (голосовая и две передних) стоят за мониторами. Да, так себе, но в принципе если в оффтоп-софтинке от встроеной звуковушки в материнки подкрутить крутилки окружения –то можно сбалансировать звук до приемлемого уровня – у таких вот неравномерно расставленных колонок. В прочем, повторюсь мне и встоенной звуковухи хватает, и вообще не помню когда выкручивал дальше чем на 1/3 крутилки мощности остальных 4х колонок, а в интерфейсе операционки громче чем на 1-2%. Это громкость тихой человеческой речи. В принципе её хватает чтобы даже играть в игоры с объёмным звуком, но играя в свою любимую Unreal1998 по сети в режиме MonsterHunt, чтобы слышать топот монстриков заранее, нужно таки подкрутить громкость до 3-4%, кстати на удивление приятное сообщество сложилось на некоторых серверах этой игры, иногда специально выделяю время с утра с 9 до 11 чтобы поиграть на одном американском сервере, именно из-за людей которые там, у них в этом время вечер и игровое время после работы. В основном это взрослые дяди, которые были подростками в момент выхода этой игры. Для неё до сих пор рисуют новые карты, но жаль что сырцы закрыты, бывает падает то игра причем у всех игроков, то сервак, если бы были открыты, думаю энтузиасты это бы пофиксили, ведь карты рисуют и пишут скрипты на скриптовом язычке первого Анрил движка.

В принципе всю эту 5.1 систему именно как 5.1 я использую в среднем раз в несколько лет, когда качаю какой-нибудь кин с 5.1 дорожкой, в основном я смотрю что-нить на ютубе или аниме, в котором, вроде бы до сих пор, даже в новых, не задуряются на такой вот звук. В игрушки можно сказать что не играю, кроме иногда Unreal, но там обычное стерео, впрочем конечно в окружении 5.1 даже обычное стерео звучит чуть объёмнее. Последние игрушки где по настоящему наслаждался 5.1 по-моему была Doom, который вышел в середине нулевых и NFS MostWanted или что-то типа, но это еще было до апгрейда 2012 года, в апгрейде 2012 я поставил топовое железо, кроме видюхи, т.к. подумал что зачем, давно уже не играю, ну и +- не пожалел о таком решении – т.к. в этой видюхе нет куллеров и комп получается малошумным.

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

На компе безпроводной джойстик ThrustMaster, не пользую, для уюта просто как элемент декора, купил когда-то очень давно, чтобы лёжа поиграть в сайлент-хилл, но понял что любовь к джойстикам прошла вместе с периодом когда Nindendo 8bit была актуальной, собственно если и включаю джойстик, то раз в несколько лет, поиграть в 8бит игры.

В качестве подставки под монитор используется книга «Искусство программирования Unix», рядом лежит другая такая же, которую иногда читаю, до сих пор не прочитал до конца, но книга интересная, полезная.

Так же на фото видны провода – питание тянется из низу к верху, а в правом верхнем углу один проводок идет к колонке задней правой, а другой сетевой провод в стену, в каждую комнату двушки заведён ethernet кабель, т.к. не люблю wifi, впрочем и wifi конечно тоже есть для мобилки.

Ну и самое ценное для меня на этой фотографии это моя любимая башенка с железом – ThermalTake Xaser V5. Отличительной особенностью которой является относительно толстостенный алюминиевый корпус, видимо расчитанный что его могут положить боком и поставить на него ЭЛТ монитор, а так же защищенность, его можно закрыть на ключ, и заблокировать доступ не только к узлам управления (power/reset), но и к возможности снять боковые крышки. Примечательно что несколько раз хотел приобрести что-то более современное, но ни нашел ни одно домашнее решение, которое имело бы описанные выше опции, которые я нахожу удобными и даже уютными (чувство что без твоего ведома никто не пролезет в комп, если он конечно не домушник, который уже открыл отмычкой более сложный квартирный замок).

Фотографии корпуса: передняя сторона, ключи, с открытой крышкой

В корпусе вмонитрован пишущий dvd, рабочий, но последний раз использовался в 2011 году, когда устанавлиал на комп операционку. С тех пор задачи которые обычно исполняются в лайв-операционках использовал через загрузку из usb, так удобнее. Помню однажды загрузился с камеры GoPro 1, а чуть позже с принтера HP photosmart 8053, потому что все они работают как обычные кардритеры ^_^

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

А ещё там установлен fdd 3.5, который в первые года после покупки корпуса я даже использовал. Флешки тогда уже были, но иногда было приятно пожжужать гибкой дискетой, посмотреть на зелёный огонёк. С 2012 года, после апгрейда начинки, подключить этот девайс стало некуда и он просто остался не подключенным.

Мониторы: слева Acer A232H cтандартный: 1980х1080, справа Samsung 2243nw – с не стандартным разрешением 1680х1050, тем не менее нестандартное разрешение не мешает быть ему «главным монитором», а Асер – вспомогательный. Что собственно и видно на фотографии – справа, в «главном» мониторе ide (QtCreator) c кодом (C++, не формошлёпство, удалёнка и за деньги ^__~), слева текстовый редактор с документацией.

Скажу что в Самсунге как-то красивее цвета, картинка ощутимо приятнее, хотя в основном эта разница видна в фото и видео, в обычном же рабочем использовании разницу не ощущаешь, даже цвета окошек слева и справа кажутся одинаковыми, пока не разместишь одно и тоже окно и там и там ^_^

Обои так себе да, но это не я их выбрал, ну и привык уже, даже не замечаю их. Кстати фотография сделана на цифру 2004 года выпуска, с ПЗС матрицей, Canon PowerShot S70, фотик моего детства, у меня и современные есть, но иногда приятно поиспользовать такую вот старину.

Оба подключаются по d-sub, так что теперь при обновлении видеокарты, я немного упрусь в мониторы, т.к. вроде бы в современных топовых (и вроде не только) видюшках выкидывают этот аналоговый порт-подключения. А новые мониторы без предварительной покупки или взятия в аренду устройства измерения пульсации света вроде Radex Lupin я бы брать не рискнул, т.к. в эти штуки приходится смотреть по 14+- часов в день, а среди современных мониторов распространён ШИМ, а как показала история на примере мобильных девайсов – мои глаза совершенно но совместимы с ШИМ, моим глазам нужны устройства с реально изменяемой яркостью.

===

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

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

Кроме неофициальности (и длинных пауз в работе) - всё как обычно, гитлаб, список issue с обсуждениями. Текущие обсуждения в телеграмме, оплата по часам, часы иногда правда пишу чуточку меньше чем трачу, т.к. есть чувство некоей неполноценности и ощущения того что нормальные программисты сделали бы это быстрее. Хотя вероятно поправка на мой уровень заложена и в мой стоимости за час, но все равно... Хотя может и не заложена, т.к. если бы я работал по 8 часов каждый день то это уровень зп по середине между средним и большим но меркам айти сектора Новосибирска. Но более подробные цифры не хочу называть, как и то чем конкретно занимаюсь и на частью какой команды (хоть и не официально) являюсь.

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

>>> Просмотр (2200x1650, 4830 Kb)

 ,

bonta
()

Что такое случилось с именами пользователей?

Форум — Linux-org-ru

https://sun9-63.userapi.com/c858236/v858236830/1c257c/LTINrIiZI3o.jpg

Это так в Опере последней версии, собственно в ней же ещё с утра было норм.

Никаких плагинов работающих на лор не установлено.

В торе например такого нет.

 

bonta
()

Вики деградирует

Форум — Talks

https://ru.wikimedia.org/wiki/Конкурсы/WikiGap_2020_Russia

Неужели они сами не понимают что статей таких меньше потому что выдающихся женщин меньше, о которых стоит упоминать в вики?

И это не проблема женщин, им просто комфортно жить за мужчинами, тем кому не комфортно - те что-то начинают делать и о них есть в вики.

 

bonta
()

Почему я против web

Форум — Talks

Наболело немного.

Ну прежде всего я сторонник как можно более нативных приложений, если планируется релизы на разных ос - то только тогда использовать что-то кроссплатформенное, а просто так для удобства, если например не планируется линукс-версия, то не брать никогда qt для формочек на винду и т.п. Ну вот есть например у меня софтинка - качалка всего из ВК, она написана на Qt, но линукс версии нет и не планируется, что бы тогда не написать на winforms или что-там нативное в винде и не тянуть лишнюю абстракцию в установочном пакете и рантайме...

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

Но наболело не от широкого натиска(*) всяких там джва-скрипт фреймворков в дестопе а от самой веб концепции.

(*) - недавно решил поискать локальный редактор MarkDown (о блин, в 2020 очень тяжело найти локальный, всё кишит в веб-редакторах), и вот на хороших (по моему мнению это Си++) яп - проекты локальных редакторов все кончились в 2014 году, я их попробовал но все они сырые, после 2014 в таких вот мелко-проектах для десктопа в публичных-гитах просто кишат всякие там джва-скрипт решения на электроне и подобное, в итоге я нашел таки хороший с первого взгляда, но на Питоне - Remarkable - но лишь с первого взгляда, т.к. начинает тормозить на даже не больших документах, но всяко лучше чем веб, вот пользуюсь им.

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

Потому что приложения в вебе это хуже чем любая проприертарщина и делает пользователя не свободным.

Пример, когда перешел с Файрфокса на Хромообразные браузеры, стянул в них классный плагин «Элементы Яндекса: Переводчик» - это было очень удобно, просто выделяешь текст на страничке, появляется кнопочка, жмакаешь и появляется моментально перевод, очень удобно, намного удобнее чем открывать отдельную вкладку с переводчиком.

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

Ответ приблизительно такой какой я и ожидал:

«Яндекс Элементы больше не поддерживаются, надеемся на ваше понимание».

Ну как всегда, программисты классные которые этот плагин сделали,и развивали его, последнее обновление в конце 2019 года, а в настройках плагина копирайт включал дату 2020... Видимо разработчики думали что это все будет и дальше, но как всегда очередное гов*о (эффективный менеджер Яндекса) решил что это или не пользуется спросом или надо продвигать родной браузер через закрытие плагинов для не родных - в общем раз, и все перестало работать.

А был бы это нормальные локальный продукт (ведь можно же для плагина сделать локальную базу перевода и чтобы он вообще в веб не лез) - всё бы работало.

Очень расстроило меня это. Тоже самое с 2гис, раньше была классная самописная локальная версия, но тупой менеджмент решил что нафиг дестоп, есть же веб. И все, уже как несколько лет десктоп версия мертва, нужно загружать браузер и тратить кучу озу и трафика чтобы сделать то на что бы хватило 100 мегабайт и инет был бы не нужен.

И тут даже не то что без инета и лучшая эффективность (за счет меньших cлоёв-абстракций) а просто ваше право пользоваться тем что вам понравилось и привыкли. Например вам нравится именно такой интерфейс - вы тогда вольны им пользоваться сколь угодно долго, не обновляя, а в вебе... Эффективные манагеры просто для видимости развития переодически заставляют продукт менять свой облик, не для добавления функциональности а просто для создания ощущения что проект жив как никогда - особо этим грешат вебсайты и кстати не только веб но и мобильные приложения на Андроиде от Гугла, раз в полгода обязательно сменится интерфейс ютуба, гугл-карт, не превнося новой функциональности.

В общем о чём я - о том что если кто может (имеет соответствующие рычаги влияния) - то было бы хорошим решением, для сохранения свободы пользователя, бороться с распространением современного веба (любыми возможными способами: пропагандой, отказом от использования и т.п.). Кажется что даже лютая проприертарщина и закрытый код угрожают свободе меньше чем уход от десктопа и локальщины в веб и превращением локальных рабочих станций в тонкие клиенты. Не говоря уже о открытости всего что за вашим компом в сети - всяким монополистам на насилие (государствам).

Удобства облаков и синхронизаций устройств - не стоят той свободы что даёт независимость от этих сервисов.

А вы что думаете по этому поводу, не наболело ли?

=== ряд ссылок, справедливо кидающих камень в огород веба===

В этой статье прям хорошо показана боль, когда пользование компьютером и мобилками завязано на веб сервисах и веб-апи https://habr.com/ru/company/ruvds/blog/493852/

Веб-браузеры в тупике развития (потому что новый с нуля никто писать не рискнет) - https://habr.com/ru/company/dcmiran/blog/493018/

Столлман справедливо считает современные веб-программы угрозой свободы пользователя и предлагает бойкотировать уход в веб всего того что может работать локально (а это почти все) https://www.gnu.org/philosophy/who-does-that-server-really-serve.html

 , , ,

bonta
()

Linux vs FreeBSD

Форум — Talks

интересную стетейку хабр подкинул.

https://habr.com/ru/post/490408/

Интересно ваше мнение основанное на реальном опыте, а не на предвзятости или фанатизме :)

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

 , ,

bonta
()

Есть ли в конце 2019 в продаже нормальные новые компьютерные корпуса?

Форум — Linux-hardware

Может кто в курсе чего там сейчас на рынке корпусов классных есть. Чето перелистал предложения 3х магизинов и не вижу ничего достойного

Желалки: 0. Крепкий, из люминия, но боковая створка вполне себе может быть с пластиковым окном.

1. Бигтовер/Фуллтовер, с норм дизайном а не для аля-корпус-сервер (люблю безшумные компы. Чем корпус больше тем компутер безшумнее в виду хорошей вентиляции комопнетов)

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

3.Крышка закрывается на замок (никто не сможет включить твой комп если ты его «закрыл»)

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

5.Блок питания находится сверху (с точки зрения не кабельной эргономики а безпроблемного функционирования - бп (как и любые другие компоненты которые в себя всасывают пыль) должен быть как можно выше от поверхностей).

==== Ну вот если от 5го пункта я еще могу отказаться то от 0-4 не хочу отказываться. И вот смотрю и вообще не вижу таких корпусов.

А ведь это не спец-корпус, в начале 2000х таких решений было много. Например мой настоящий корпус «thermaltake xaser v», но ему уже лет 15 и он «устал», вот ищу достойную замену и не могу найти.

Если кто-то встречал подобные корпуса в 2019 - напишите.

Гы если бы где-то на складе завалялся еще один такой термалтейк - но новый, не раздумывая бы приобрёл :)

 

bonta
()

IPC с дочерним процессом по pipes. Как читать больше PIPE_BUF за один запрос чтения?

Форум — Development

Допустим перед нами задача по ipc взимодействовать с одним единственным дочерним процессом. Взаимодействие в стиле запрос-родителя-ответ-ребенка, не более.

Но ребенок может вообще ничего не ответить или ответить слишком много, намного превышающим лимит PIPE_BUF (man 7 pipe), поэтому выходом будет процесс чтения защитить таймаутом. Не блокирующее или асинхронное чтение для решения данной проблемы не нужно - достаточно select-а.

Самый простой вариант видится таким:

// k_systemDependetLimitation == PIPE_BUF
struct timeval tv;
tv.tv_sec = k_ipcWaitDataDelay;
tv.tv_usec = 0;

std::string ret;
int returnCode;

while (true) {
    if ((returnCode = select(m_istance(client).m_readFromChildProccess[0] + 1,
        &m_istance(client).m_readFromChildWait, nullptr, nullptr, &tv)) > 0) {

        char rawBuffer[k_bufferLength] = {0};
        ssize_t readLegth;
        if ((readLegth = read(m_istance(client).m_readFromChildProccess[0], rawBuffer, k_systemDependetLimitation)) > 0) {
            ret.append(rawBuffer, rawBuffer + readLegth);
            if (readLegth == k_systemDependetLimitation) {
                continue;
            }
            break;
        } else {
            releaseIpcAndswitchToErrorState(client);
            break;
        }
    } else if (!returnCode) {
        FD_ZERO(&m_istance(client).m_readFromChildWait); // reinit for select (see man select)
        FD_SET(m_istance(client).m_readFromChildProccess[0], &m_istance(client).m_readFromChildWait);
        break;
    } else {
        releaseIpcAndswitchToErrorState(client);
        break;
    }
}

По скольку чтение блокирующее мы не можем быть уверены что после readLegth == k_systemDependetLimitation что-то есть или чего-то нет

поэтому тут неизбежно нужно запрашивать select, если что-то есть select сразу же вернёт управление и read опять начнёт читать, если ничего нет - повисит за зря (а что делать?) и вернет управления по таймайту else if (!returnCode).

Если прочли меньше, значит конец чтения.

Но я хотел бы читать больше чем 4096 за раз. Мотивация: не хочу лишние переключения контекста. И вообще хотел бы например использовать select только изначально, и дальше с помощью каких-то техник определять стоит ли запускать read еще или нет, но похоже это не возможно?

Дело в том что читать >4096 сложно. Даже при условии что пишет в канал только один процесс и даже с гарантией что он пишет ровно тогда когда буффер пайпа полностью свободен (родитель все ранее записанное, от прошлого запроса, прочитал).

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

Это можно попытаться отловить:

Например:

//k_bufferLength == 9000
...
        if ((readLegth = read(m_istance(client).m_readFromChildProccess[0], rawBuffer, k_bufferLength)) > 0) {
            ret.append(rawBuffer, rawBuffer + readLegth);
            if (readLegth == k_bufferLength) {
                // здесь мы по прежнему ничего не можем сказать о том что больше нечего читать
                continue;
            }
            // если чтение прервано не на границе PIPE_BUF то оно конечно
            if (readLegth % k_systemDependetLimitation) { 
                break;
            }
        } else {
            releaseIpcAndswitchToErrorState(client);
            break;
        }
    }
...

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

что может быть прочтено только:

или ==9000 (т.е. 2 полных атомарных цикла записи в пайп и один не атомарный)

или <9000, но не кратный границе 4096 тогда типа явно всё прочитано, потому что типа ядро не прервёт такое, потому что граница атомарности (судя по размеру прочитанного уже пройдена - а значит то что не лежит на такой границе - ядро не прерывает)

или кратный_атомарному - значит тут есть возможность того что ядро первало.

Но такие выводы, оказались не верны, крайне редко но бывает:

что сначала прочитали 9000, потом вместо например 4132 (что бывает в большинстве случаев и тогда ок)

мы прочитали скажем 3800 - и все - тогда код прерывает чтение, а по факту еще осталось читать (4132-3800 байт).

И так есть ли какой-то красивый способ без дополнтельного вызова select пусть и с минимальными миллисекунндыми таймаутами - определять что ядро все передало что пишет дочерний.

Или таких способов нет, и едиственным способом (чтобы передавать много с минимальным дроблением на итерации (ну т.е. читать не по 4096 а по много)) был бы в начале передчи передавать размер передаваемого данного (чтобы размер укладывался в первые байты передачи) или что еще лучше - просто ввести маркер начала передачи и конца, и пока в принятой последовательности нет маркера конца - читать ещё.

но вот фишка в том что то что отправлят дочерний я менять не могу и там таких маркеров нет :)

 , ,

bonta
()

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