LINUX.ORG.RU

Сообщения lesopilorama

 

TypeScript: импортить модули, лежащие где попало по абсолютным путям.

Есть программа: /home/me/project/main.ts

import {Sobaka} from "./auto/sobaka.js"
import {Blabla} from "./auto/blabla.js"
console.log("hello")

Проблема в

/home/me/project/main.ts:N:M - error TS2307: Cannot find module './auto/sobaka.js' or its corresponding type declarations.

потому, что на самом деле никакого ./auto/ в текущем поддереве нет и никогда не будет! Это самое интригующее и раскрыто далее после заголовка «ЦИМЕС ВОПРОСА». Что там за Sobaka и Blabla читателю не важно, суть не в них, они норм. Если их положить в текущий каталог с main.ts и написать «./sobaka.js», то всё работает.

Так же есть /home/me/project/tsconfig.json:

{
  "compilerOptions": {
    "target" : "ES2016",
    "module" : "nodenext",
    "noImplicitAny": true,
    "removeComments": true,
    "preserveConstEnums": false,
    "moduleResolution": "nodenext",
    "sourceMap": false,
    "strictNullChecks" : true,
    "strictPropertyInitialization" : true,
    "outDir" : "/tmp/some/output/dir/blabla",
    "rootDirs" : [
       "/tmp/generated",
       "/home/me/project"
    ]
  },
  "include" : [
    "/home/me/project/main.ts"
   ]
}

Запускаю обычно так и всё собирается: tsc --build /home/me/project/tsconfig.json. Обычно, это когда не нужны были извращения из этого треда.

цимес вопроса:

Есть некий автосгенерированный .ts код, можно сказать «модуль» (при моём слабом понимании теории модулей TS): .ts файлы в папочке /tmp/generated/ или в любом другом одноразовом месте, про которое (место) базовый код знать не хочет:

/tmp/generated/auto/sobaka.ts
/tmp/generated/auto/blablabla.ts

Вот их инклудить я и хочу в main.ts, но не знаю как. Класть эти файлы в основное дерево (в репу) нельзя. Они генерятся при каждой сборке, там всякие актуальные константы и одноразовые интерфейсы.

  1. Пробовал добавить /tmp/generated/ в rootDirs как показано в tsconfig.json выше - не взлетело/

  2. Пробовал такое:

import {Sobaka} from @auto/sobaka.js

И добавить в tsconfig.json такое:

...
"baseUrl" : "/home/me/project/",
"paths" : {
   "@auto/*" : ["/tmp/generated/auto/*"]
}
...

Ошибка та же.

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

 

lesopilorama
()

Allwinner A20 - определить где на плате UART и определить почему девайс может виснуть.

Есть платка. Типа cubietruck, на самом деле «вариация на тему», некая очередная итерация cubieboard, сделанная в виде некого A19 Android TV Box, который потом под заказ компании АТОЛ был чуть перепилен в продукт «Атол Хаб-19».

http://at89.ru/wp-content/uploads/2019/02/word-image-20.png

http://0x0.st/XZ-O.png - копия если первый урл сдох.

Хочется там найти UART, который при вдумчивом осмотре никак никуда не выведен и не распаян.

Единственное похожее на него место: смотрим на самый левый чип RAM, поднимаем взгляд чуть вверх - там кварц, идём от кварца влево - там нераспаянный трёхдырочный разьём. Это может быть оно? Дорожки идут прямо в камень. Если глянуть на даташит проца, где все ножки подписаны https://www.olimex.com/Products/SOM/A20/_resources/A20-Brief-2013-02-27.pdf - UART там явно не обозначен, ну может через GPIO реализован как-то какой-то, хз.

Так вот, задача проверить эти три дырки на то, являются ли они UART. Берём USB->TTL 3.3V штуку, втыкаем GND, TX, RX в эти дырки в разных комбинациях и пытаемся увидеть выхлоп. Вопрос: достаточно ли будет напихать на линии TX, RX по резистору в 1 кОм дабы не спалить этот A20 проц в случае чего?

Второй вопрос: как вообще дебажить такого рода железки на предмет зависания? Даже не кернел-паника, а просто впадания в говнище? Работала-работала день, херак стала кирпичом. Питание выдернули, вернули - дальше работает. Народ на форумах что-то там обсуждает про игры с параметрами U-Boot в области частот RAM. Вот думаю какой-бы физический интерфейс с такого рода железкой иметь, чтобы понимать что же в ней происходит. Пока что самым очевидным приколом кажется проблема с питанием, типа нагрузить оба ядра какой-то хренью и БП просаживается, от чего всё встаёт колом. Но там БП штатный, 5V 2A, должно хватать…

Выкинуть и купить нормальное - совет понятный.

 

lesopilorama
()

2 тупых вопроса про Bluetooth и кодеки, про BT-звук, про наушники и микрофоны.

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

Слегонца представляю как BT работает радиотехнически, ППРЧ там всякое, отличия некоторые BT 5 от BT предыдущих, примерно представляю почему это может быть очень эффективно. Хочу спросить про «кодеки». Вот бывает, что на блютус-наушниках написано, что они поддерживают всякие там кодеки: SBC, AAC, aptX, aptX HD. А правильно я понимаю, что эти кодеки «стоят» прямо в том же кристалле Qualcomm, который реализует ВООБЩЕ ВСЮ Bluetooth машинерию - радиотехническую, шифровальную? Правда ли, что на входе у такого Bluetooth-чипа, который пихает звук в «эфир» просто сырые семплы? А на выходе у такого же приёмного чипа тоже уже сырые семплы, которые осталось только запихнуть в DAC?

А правда ли, что такой Bluetooth-5.0 чип в режиме передачи звука по блютусу со всеми этими кодеками может жрать меньше тока, чем если бы мы попытались этим звуком качать наушники на средней громкости?

Вопрос-2: а посоветуйте Bluetooth-5 коробочку, куда втыкается старая гарнитура и позволяет по этой гарнитуре говорить, как если бы эти наушники втыкались прямо в звуковуху. Знаю такие коробочки, но там микрофон в виде дырки не самой коробочке, что немного не то: пример Ugreen CM402.

 

lesopilorama
()

Мамкины криптографы. AES.

Щас будет тупой вопрос. Режимы ECB, CBC и т.п. тут не суть.

  1. Сам по себе AES блочный симметричный: если ключ не меняется, то для одного и того же шифруемого текста выход алгоритма (шифротекст) будет один и тот же. То есть, посылая через такую сырую хрень одинаковые HTTP-запросы, перехватчик будет видеть, что запросы идут одинаковые. Или что у них одинаковое начало)

  2. Поэтому добавляют всякие там initialization vector и подобные приколы.

  3. Вопрос треда в том, насколько нижеописанная идея избавления от повторяемости нормальна, годна, жизнеспособна и криптостойка в целом.

—- Описание идеи —-

  • обмена ключами нет: никакого Diffie–Hellman. Ключ известен двум сторонам заранее, он достаточно длинный и его точно никто не знает, кроме админа Васи, который руками сходил разложил. Ясно, что тут АНБ уже Васю завербовало, но не суть.

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

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

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

Возможно это уже как-то называется и реализовано, но вопрос школьный и тупой, поэтому автор не в курсе. Спасибо.

 

lesopilorama
()

Китай, политота, микросхемные заводы, техпроцесс 1995

Кто достаточно стар и умён, помните в девяностые на китайских базарах в России можно было купить помимо тряпочек, тапочкек и водяных пистолетов разные электронные игрушки: брелки с мелодиями («echo killer»), калькуляторы, повторялки звуков, пиу-пиу пистолеты, тетрисы, клоны тамагочей?

Проц. Он был у них. Такая черная капля на плате (чёрная капля - это компаунд, а под ним кристалл, из которого wire bonding прямо на плату захерачен). Ну микроконтроллер. Неважно как называть. Система на кристалле.

Так вот, чо это было? На каком заводе делались эти кристаллы, что по нанометрам? Какие люди их разрабатывали? Подозреваю, что клоны тамагочей могли клепать на тех же 4-битных процах Epson некитайского производства, но что по всем этим чирикалкам брелкам и тетрисам?

P.S. Ответ: халтек, тайваньский монстр чипостроения, клепавший дешевые чипы миллионными тиражами произвольного назначения: контроллеры дисплеев, модемы, факсы, ЧТО УГОДНО, любые SOC ЛЮБОГО назначения, ограниченного только интеллектом разрабов и твоими деньгами…

 

lesopilorama
()

tcp/udp/OTHER сервер: таймауты, закрытие коннектов

TCP или не TCP в целом не ясно - это может быть и самодельный UDP шайтан-протокол. Connection - абстракция. В целом ясно, что стурктура данных heap AKA priority queue. Хочется простого: 10 сек не было данных от клиента - close() ему на сокет. Архитектура традиционная - однопоточный евент луп - сидит в epoll_wait() с пробуждениями, скажем, 10 раз в сек, чтобы поделать служебное (позакрывать по таймауту кого-то, другие таймеры попроцессить). Входящих коннектов могут быть тыщи. Обычно для такого юзают heap (min-heap например): пихаешь в эту структуру коннекшены, впереди лежат те, у которых значение time_close_nanosec меньше. time_close_nanosec - это такое uint64_t значение у объекта-connection, которое апдейтится каждый раз, когда из коннекшена выпали байтики и означает «monitonic время, при наступлении которого коннект надо закрыть». Соответственно апдейтится оно на now_nanosec + 10 * 1000 * 1000 * 1000 всякий раз, когда от клиента что-то прилетело.

Проблема в том, что time_close_nanosec таки апдейтится. Прилетели из сокет байты - время close() этого сокета надо отложить до now + 10 * 1000 * 1000 * 1000 как выше сказано. А это значит, в heap его надо перевставить, ведь старая позиция в priority queue уже не валидна. А значит в объекте Connection будет лежить индекс этого Connection в нашем heap (чтобы сходить по этому индексу в этот heap для удаления этого Connection). А ещё, heap должен быть так реализован, что при каждом перетасовывании объектов в нём, heap ходит по указателям в тасуемых и апдейтит им индексы-в-себе на новые (ведь могут вставить кого-то на позицию 0 и я стану допустим 1). То есть, если из клиентов просто регулярно спокойно летят байтики, то эта heap постоянно шевелится и идёт возня с памятью. Это не православно.

Вот пришла в голову оптимизация: time_close_nanosec в объекте Connection апдейтить, а в heap этот Connection не перевставлять. Тогда heap будет постоянно «ложно» срабатывать. И вот в этом ложном срабатывании мы и будем делать всю работу в heap - если срабатывание реально ложное (time_close_nanosec ещё не достигло текущего момента), то передобавлять его в heap, иначе это не ложное и делать close(). Ясно, что в такой heap надо будет хранить не просто указатели на Connection * (по которым будет лазить компаратор, чтобы посмотреть на time_close_nanosec (это вредно, они постоянно меняются и структура развалится)), а ещё и копию time_close_nanosec_COPY которая верна на момент вставки и по которой компаратор работает.

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

(UPDATE: сделал эту идейку, работает на первый взгляд норм)

Штош, может кто что посоветует по этой теме? Как то же самое сделано в ядре например или где-то ещё в похожем месте. Додумался ли я до чего-то крутого или есть ещё круче оптимизации?

 

lesopilorama
()

Как сидя в убунте скачать какой-то пакет для дебиана?

apt download libsobaka

Скачает мне пакет под мой jammy или как там его.

А хочется:

  1. Посмотреть под какие дебианы этот пакет вообще есть.

  2. Скачать под выбранный.

Как?

 

lesopilorama
()

Вопрос: а что внутри у RAW .dng файлов с флагманских телефонов?

Вычислительную фотографию понимаю, да.

Но что внутри .dng файла, полученного из современного топового смартфона? Там же не прям сырые значения субпикселей? Там же уже что-то слегка отпроцессенное, всмысле байеровская решётка пикселей смёржена в «простые» RGB пиксели ведь? То есть, совсем сырые-сырые данные с камеры там сконверчены в что-то, что можно упихать в стандарт .DNG с потерей инстинной «сырости», да? Там в .dng ведь не лежат прям истинно супер сырые данные с железа же?

Я почему спрашиваю: когда «встроенная» приложенька камеры делает фотку, то там процесс отличается от «получить dng, потом запроцессить dng» же? Такое может и происходит в софтине «Expert RAW» на самсунгах: там по-сути есть автоподкручивалка уровней поверх dng файла. Но истинно родная приложенька работает же с реально сырыми данными с матрицы, которые ещё не стали DNG и может делать совсем не одну фотку, чтобы потом совместить несколько рядом по времени сделанных и расширить ДД или ещё что-то поделать/поусреднять. Она может даже померять степень резкости на разных кусках фотки в разных фотках и тягать из разных фоток разные куски наверное согласно «годноте» - короче чего там только нет наверное, но никто такого не расскажет, это самсунговая и айфонная тайна.

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

 

lesopilorama
()

Автообновление и перезапуск бинарников в линуксе.

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

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

Теперь внимание вопрос. Как лучше всего делать такой перезапуск?

  1. Примерно как телега. Если я правильно догадываюсь, то там базовый/основной бинарник не является приложением, а микро-приложением или скриптом, который смотрит в спецпапочку с бинарниками и запускает самый свежий, который уже таки приложение. Для обновления нужно просто скачать новую версию себя и положить рядом со старой, а потом просто сдохнуть с условным кодом «-5» - родительский микробинарник пойдёт снова запускать и поднимет самую свежую версию. Тут даже можно строить приколы с откатами: если после запуска новой версии какие-то условия не были выполнены, то посчитать её багованной, переименовать в .trash и снова уйти в перезапуск, запустив в итоге предыдущую.

  2. Скачать новую, положять рядом. Но не сдыхать, а провести некое освобождение ресурсов, позакрывать сокеты и файлы и просто вызвать execve(). PID останется тот же, но «все структуры» старого приложения заместят новым стартующим. Почему это плохо? Кажется только тем, что (1) проще и понятнее: и pid меняется и не надо париться о том, что ты там недозакрывал из дескрипторов и т.п.

 , ,

lesopilorama
()

Автоматически качать новые версии бинарей и перезапускать

Юзкейс.

Есть 10 серваков с readonly корнем.

На них через systemd всегда запускается некая софтина, которой дается имя Name и путь Root (смотрит в ramdisk).

У каждой железки разный Name.

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

Вот посоветуйте такую софтину.

У железок нет белых ип.

 

lesopilorama
()

Посоветуйте софтину для быстрого листания кучи фоток и запуска любого скрипта на текущей.

Есть гора фоток. Надо выбрать «хорошие». Надо простую софтину как «eog», но чтобы на текущей фотке можно было нажать клавишу и она mv в указанный в настройках каталог. То есть, я сижу быстро мотаю фотки и на каких-то из них жму спецклавишу, по которой они из «неразобранное» кидаются в каталог «good». Теги не хочу, хочу именно запуск своего спецскрипта. Всё. Спасибо.

P.S. Запустить midnight commander и жать на каждой enter и потом какое-то решение ещё принимать - это в разы медленнее указанного идеального сценария.

«apt install eog-plugins» подвозит плагин «export to separate directory» - оно делает почти что я хочу, но через контекстное меню и КОПИРОВАНИЕМ, а надо именно mv

Самое гениальное решение в текущей ситуации: Delete жать на текущей картинке, она улетает в Trash каталог на том же смонтированно диске. Это почти что приемлемо и годно!

 , ,

lesopilorama
()

Samsung/Android мобила и Factory Reset и безопасность

А правда ли, что на современной андроид мобиле данные на флешке шифрованы каким-то ключом, который генерится на этапе последнего factory reset и потом в спецразделе лежит и поднимается оттуда системой при загрузке и ФС расшифровывается наподобие LUKS?

То есть, если мне надо гарантировать, чтобы выпаивание флешки не читало мои фотки, то я просто делаю factory reset, который просирает ключ и вся файловая система остаётся какая и была, просто теперь она нечитаемый мусор?

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

 , ,

lesopilorama
()

Посоветуйте годный портативный отдаватель звука в 3.5 jack из bluetooth?

  1. Воткнуть туда jack 3.5 гарнитуру 4 контактную.
  2. Спейрить это с телефоном. И шоб оно передавало туда микрофон, а не только музон в наушники.
  3. li ion usb c заряжаемое.

Спасибучко.

p.s. Накупить на алике рулеза и спаять самому - ясно, надо готовое предложить.

 

lesopilorama
()

key-value VS table

Щас не будет речи про mysql, postgres и т.п. B про какие-либо реляции не будет - то есть, отношения между таблицами не волнуют. Не волнуют и транзакции.

Вот предположим у вас есть хранилка key=value. Казалось бы, в такую хранилку можно упихать примерно всё и выразить через кучу key-value любые данные и схемы и я даже знаю как на двух redis в разных кусках планеты бабки между клиентами атомарно переводить без блокчейна (CAS только прикрутить к key-value хранилке, но это примитивно делается). Это всё не ново и понятно.

А теперь предположим, что у вас есть хранилка табличек. В ней можно:

  1. Создать табличку со статически типизированной строгой схемой, т.е. задать набор колонок с фиксированными типами (string, int, float и т.п.).
  2. Добавлять/удалять колонки.
  3. Апгрейдить типы (sting на int поменять и хранилка сама скастит все числа из строк в инты, например).
  4. Хранить широкие строки (с кучей колонок), а выбирать только нужные.
  5. Замутить нижний слой хранения колоночный, тогда выбор отдельных колонок будет оптимизирован, а полная строка выбираться медленнее ну и пофиг.

Хотелось бы получить некий формальный список возможностей, которые даёт такой табличный вид.

Про реляции, джойны, транзакции мы тут не говорим, они сами по себе к таблицам никакого отношения не имеют и тут не интересны. SQL тоже ни при чём, в таблицу вы можете ходить по самодельному бинарному протоколу любой степени жопности, так же как и в key-value хранилку ходить через SQL (select from A value where key = K).

Например:

  1. Можно добиться компактности, если числа больше 999 хранить в инте, а не в строке.
  2. Статической типизацией колонок можно несколько ограничивать разнообразие бреда.
  3. Ненужные колонки можно целиком выкинуть (за разную цену в row и column движках хранения конечно, но можно) или добавить новые. Хотя в key-value можно тоже перестать пейсать какое-то поле в json или начать его пейсать, подготовив код к факту наличия этого поля.
  4. Великая мудрость о том, что хранение json-ов - признак дебилов, поскольку в итоге набор и типы полей в объектах достаточно фиксированы и если вы схему не зафиксировали в хранилке, то вы чёрт обоссаный наверное, который вечно живёт на временном решении - всё ещё продолжает выполняться.
  5. Если создать таблицу (key : string, value : string), то можно этим частным случаем таблицы поглотить всю предметную область key-value сразу целиком. Работать будет за то же время. Физически хранить это в памяти или на диске можно в итоге точно так же. Это позволит унифицировать доступ к key-value и к другого типа данным через одну хрень.
  6. Если в одной и той же key-value хранилке два разных отдела пытаются хранить свою инфу, то им придётся отделяться друг от друга некими «префиксами» у ключей: ключ «sobaka» у разных отделов будет выглядеть так: department1.sobaka=123, department2.sobaka=551, в итоге всё хранилище засрано этими префиксами, хотя решение тупое и надо просто поднять два разных редиса под такое, но всё-таки. А в случае табличек это просто две разные таблички, которые лежат компактнее, т.к. не надо хранить префиксы в каждой записи. Да, можно в случае key-value сжать рядом лежащие ключи по префиксам.
  7. Можно пилить разные интересные индексы: например по какой-то десятой int-колонке создать индекс, который упорядочивает все записи по ней и потом быстрее выбирать. А в случае key-value это надо будет те же данные налить в нужном порядке в другое хранилище и потом ещё следить за согласованностью двух.

В общем, хочется подобной фигни почитать. Чисто на уровне системы хранения, без отсылок к каким-то там продуктам уровня postgres. И это не тред о том, что мне взять - redis или postgres, речь о фундаментальных различиях в возможностях key-value и табличек.

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

 

lesopilorama
()

Allwinner A20 / 1G DDR3 - а такая железка сравнима с каким из raspberry? И на какие полезные задачи можно припахать?

Allwinner A20
1GB DDR3
SD card boot
LAN 100/1000
Wifi 2.4 ghz/usb bus
7 USB ports
VGA
HDMI

Вот такая железка типа cubieboard-3 по средней производительности (учитывая число ядер и аппаратные кодеки h264, обьём ОЗУ) на какую raspberry больше похожа?

Второй вопрос: чё бы из неё сделать полезного, кроме как прикрутить вебкамеру и запилить motion-detection в прихожей?

 

lesopilorama
()

А посоветуйте удобную GUI-тулзу «оперативно послушать много mp3 файликов в каталоге», не rhytmbox, а поудобнее.

Надо открыть каталог с 2К мелких mp3 файлов и оперативно их выборочно позапускать. Почти как в семплере быстро позапускать. Представьте, что я за кулисами сцены и мне надо мотать ПРОСТОЙ список файлов и БЫСТРО запускать нужный без лишних ссаных приколов с какими-то плейлистами, альбумами, артистами, годами, жанрами и прочей перди меломанской.

rhytmbox: это жесточайшие танцы с бубном, ориентировано на меломанов и плейлистофагов: собери плейлист, импортируй - жопа отвалится пока наконец удастся что-то послушать, а при прослушивании элементарных функций нет: если у тебя куча файлов по 3 секунды, то сказать софтине не воспроизводить следующий просто невозможно. Непонятно как отображать просто файлы с теми именами, которые у них изначально есть - вылезают всякие артисты, альбумы и прочая хрень. А я хочу просто список файлов с сортировкой по времени их создания. Этот rhytmbox к тому же тупо затыкается, если по очереди воспроизведения ему попадается файл длиной меньше секунды - какие-то лютые глюки-баги и неудобства на каждом шагу. Хочется софтину в разы ПРОЩЕ и ОТЗЫВЧИВЕЕ.

Спасибо!

P.S. Кажется audacious годится на озвученную роль. Весьма тупая (прям как надо) и простая софтина, хотя и альбумы и артисты и годы в ней есть, но их можно выкинуть из отображения и показывать filename. Так же удалось заставить не воспроизводить все треки подряд, а останавливаться после каждого. Интерфейс прост, выглядит как софт из НИИ ракетостроения, быстр, работает вроде бы как надо. Хотя на высоко-DPI мониторе оно не смогло понять, что шрифты надо делать побольше пока.

 

lesopilorama
()

Мышевые сенсоры BT-мышей: 4000 dpi, 8000 dpi; Bluetooth VS logitech радиоканал.

Долго юзаю Logitech MX anywhere 3. Пробовал Logitech MX master 3S - в первом руке свободнее, во втором как будто приковали к раскладушке в одном положении!

Использую только bluetooth коннект в ноут, айдейт частоты курсора намерянный этой штукой https://devicetests.com/mouse-rate-test - не выше 120 per second.

Так вот, там у меня 4000 dpi. А ещё бывает 8000 dpi в «anywhere» 3S (зато там тихий курсор).

Короче, как вообще можно заметить эту разницу-то и нафиг она кому упала? Люди же даже в плотности 300 dpi точек не увидят на принтере, мыши-то нафига больше? Короче какой наркоман заметит 8000 vs 4000? Геймеры с подключением не через BT а через фирменный logitech радиосвисток? Чё, правда заметно что-ли? Правда правда?

Такой вот вопросик, спасибушко.

P.S. А ещё объясните разницу на практике между лазерным глазом и «LED». Ну что такое когерентное электромагнитное излучение я понимаю, но интересует практическое про мышь. На полированном зеркале типа отлично работает, а на обычной тряпке будет глючить, да? Но на anywhere тоже вроде бы laser написано, но пока ни на чём не глючила.

P.P.S. нафига мне блютус - удобненько без провода. Но честно да, лаги заметить можно ЕСЛИ ПРИГЛЯДЕТЬСЯ прямо пристально и увидишь прямо очень мелкий лаг, но в сравнении с какими-то первыми радиомышами 15-летней давности, где лаги были просто жопа, тут всё уже мало отличимо от провода для офисно-программерской работы. А чо, по фирменному радиосвистку logitech лаги ощутимо меньше и даже геймеры уважают?

 

lesopilorama
()

Посоветуйте железку SATA <-> Etnerhet. Не NAS, а что-то очень тупое.

Что-то, что даже IP не умеет получать под DHCP, а светит в сеть своим мак-адресом только. Что-то, что позволяет получать доступ к подключенному к этой железке 2.5 SATA диску через ethernet по какому-то стандартному в индустрии простому примитивному протоколу адресации секторов носителя.

Юзкейс: замена SATA<->USB шнурка на ethernet-шнурок и потенциально повышение полосы пропускания где-нибудь до гигабита.

 

lesopilorama
()

Как работается в Postgres Professional

Очередной тупой вопрос про работу в стиле «расскажите как там оно».

В чем минусы работы в Postgres Pro, а точнее не в самой этой организации, в которой наверное много умных людей, а работы над самим движком постгреса? Как устроены движки СУБД в целом представляю и с какими-то изнутри работал и вопрос не в этом. Вопрос именно в особенностях кодовой базы постгреса и сообществе. Говорят, у них там есть главный дед-шаман, который может во время доклада ответить на звонок и поговорить, не уважая аудиторию! Может и врут. Насколько такая работа будет вечным скучным багофиксом, мерженьем патчей, сидением в gdb? Тяжело ли там быть разработчиком чего-то нового (новые типы индексов, систем хранения, типов данных, оптимизаторов, статистик, фич), исследователем и бороздить просторы как в моём любимом яндексе, в котором всегда есть шанс запилить очередное NIH на go/C++ с нуля со своим гениальным алгоритмом, который конечно уже где-то придумали по 10 раз, и раскатать в прод?

Известно пока только одно: работать в яндексе над NIH - менее перспективно для карьеры, славы, денег и тупо наличия работы в будущем, чем умение пилить постгрес изнутри. В конце-концов после пары-тройки лет пиления постгреса изнутри можно пойти возглавить любой отдел постгресистов в любом банке и купить бентли с зарплаты, т.к. постгрес помирать совершенно не собирается и «экспертиза» в нём будет востребована нехило, причём не только в нашей стране. Знать постгрес изнутри - очень неплохой скилл, позволяющий выруливать в любом споре с админами-алкашами или пойти работать в перкону! Но возможно всё это крайне скучно и требует усидчивости, доступной только 55-летним в силу возраста?

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

 

lesopilorama
()

OpenWRT - ламерский вопрос про автоматическое поднятие WAN.

Здравствуйте. Ламерский вопрос! Есть Openwrt-железка D-Link DIR-620 настроенная как надо какое-то время назад. Не скажу версию, какая-то древноватая уже конечно типа 15.что-то там. Проблема: иногда (раз в сутки или после выключения роутера) отваливается WAN Как отваливается: непонятно физически как. В Network -> Interfaces WAN показывает какой-то полученный по DHCP IP-адрес и сколько-то пакетов TX,RX, но «в браузере яндекс не открывается». При этом прописаны DNS 8.8.8.8 и пара яндексовских в дополнительных свойствах этого WAN. Но стоит нажать кнопочку Connect в этом WAN, так всё быстро поднимается на отличненько. Что это и как автоматизировать поднятие? В целом дружу с линуксом, но через консоль изучать ничего не пытался, настроил всё через встроенную Люси-вебморду. Нужны какие-то гипотезы того «что бы это могло быть».

Ещё раз по пунктам:

  1. Подключение клиентской железки - один из LAN-портов.
  2. Кабель от провайдера ethernet воткнут в другой LAN-порт.
  3. Эти разные порты разбиты на разные группы, первая названа LAN, вторая WAN
  4. Всё это как-то вжух-вжух настроено (2 дня заняло, ага), включая фейрвольно-натовые вещи и на IP-уровне работает, потому что «интернет на компе есть».
  5. Но иногда надо в WAN ходить руками кнопку Connect нажимать.

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

 

lesopilorama
()

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