LINUX.ORG.RU

Сообщения bonta

 

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

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

Есть некая картинка 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

Поделитесь пожалуйста знаниями/опытом на тему 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
()

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

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

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

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

Вот видео 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
()

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

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

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

Браузер Vivaldi.

 ,

bonta
()

SberBox

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

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

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

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

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

Вопросы

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

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

Это так?

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

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

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

 

bonta
()

Feature Request

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

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

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

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

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

ПРАВИЛЬНО:

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

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

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

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

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

 

bonta
()

kde + fish://

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

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

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

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

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

 , ,

bonta
()

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

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

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

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

 , ,

bonta
()

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

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

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

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

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

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

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

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

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

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

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

 

bonta
()

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

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

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

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

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

 

bonta
()

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

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

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

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

 

bonta
()

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

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

Ну прежде всего я сторонник как можно более нативных приложений, если планируется релизы на разных ос - то только тогда использовать что-то кроссплатформенное, а просто так для удобства, если например не планируется линукс-версия, то не брать никогда 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

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

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

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

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

 , ,

bonta
()

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

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

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

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

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

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

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

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

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

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

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

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

 

bonta
()

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

Допустим перед нами задача по 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
()

VMSVGA и Debian

В старых версиях Vbox было всё ок.

Под ок - имею ввиду что игры AllienArena и OpenArena замечательно работали c высоким fps.

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

В последних версиях Vbox появился VMSVGA, да появился так что они говорят что начиная с 6.1 версии VBoxVGA больше не будет поддерживаться.

Кстати VBoxVGA и сейчас не работает если использовать клиентское расширение соотвествующее версии Виртбокса. Если расширение откатить до 6.0.0 (самой первой 6-й версии) то работает.

Ну и вот. Я попробовал VMSVGA(на новых кл.расширениях) и нифига - ОпенАрена вообще не запускается (говорит что не находит каких-то .so или ф-й внутри .so, не помню точно), Allien похоже видит что чего-то такого нет и запускается - но судя по fps похоже как будто-бы в софтвер-рендере.

У меня не самая свежая версия Дебиан.

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

Итого вопрос: 1. Кто-нибудь как-нибудь заметил на чём-нибудь работоспособность VMSVGA? В браузере тоже не появилось ускорения, в DE(KDE) тоже.

p.s. раньше в браузере и КДЕ тоже не было ускорения, оно было лишь в играх в гостевой ос.

2. Может это проблема игр что они не умеют общаться с VMSVGA или это проблема дистрибутива и в какой-нибудь свежепакетой дистре на подобии Убутны работает?

 ,

bonta
()

IPC через пайпы, в частности способ echo «text» | mybinary

Похоже я столкнулся впервые в жизни с IPC через пайпы и вот я делал так что моя апа запускалась как дочерняя и тогда на её stdin можно было слать командочки и это было норм т.к. тогда на stdin не приходил eof

а если делать так echo «text» | mybinary то приходит EOF.

И похоже после EOF с потоком вообще нельзя никак работать. Верно ли эта мысль?

или существует способ в рамках C++ приложения как-то отцепиться от std::cin и подключиться к его свежей инстанции?

 ,

bonta
()

Asus ZenFone Max Pro m2 | или боль в глазах

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

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

А самая главная желалка, была чтобы было удобнее читать что-нибудь, в дороге или на природе, и хотелось экран побольше чем на моём Htc One M8.

Но вот как оказалось как раз главная желалка и не сбылась - не могу смотретьбольше 3-5 минут на экран, внутри глаз, начинается такая боль, как буд-то они сейчас взорвутся, потом от этого начинает верх головы болеть, т.е. сам мозг [p.s. ниже в комменатриях сказали что мозг болеть не может, пусть так, суть в том что голова болит :)]

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

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

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

Попробовал показать телефон другим 5 людям, никто кроме 1го не заметил что-то плохое. У одного тоже как у меня - только вообще сразу говорит что не может смотреть, что кружится голова :) А я минуты 3 могу.

Ну и вот я сделал вывод что на моём экране htc one m8 просто очень резко все а на Асусе не резко, но правда как тогда более не резкие (встроенные автонавигаторы, меню мыльниц, принетеров) не вызывают боль. Подумал может дело в dpi или размере экрана..

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

Вот и не могу понять в чём дело.

Бывает ли какая-то индивидуальная непереносимость экранов?

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

 

bonta
()

Как работают устройства usb->ps/2

Недавно пришлось обновить клавиатуру, после пролитого кофе с мёдом. Прежняя была usb и работала в ps/2 через переходник. Новая в ps/2 не определяется.

Стало интересно как это работает. Понял что про эту, часть аппаратного обеспечения вообще ничего не знаю. И что достаточно тяжело гуглится.

Мои предположения:

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

Так получается? Или какое-то другое объяснение есть этому?

 , ,

bonta
()

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