LINUX.ORG.RU

Сообщения AntonI

 

Рисование больших растровых картинок в Qt и быстрая перерисовка окна?

Форум — Development

Я делаю приложение для научной визуализации на PyQt5. PyQt (и Qt) я толком не знаю, осваиваю на ходу.

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

Таким образом есть три варианта перерисовки:

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

  2. самая сложная - при нажатии на элемент управления перерисовываем все, включая картинку.

  3. промежуточная по сложности, при изменении размера окна - пока размер меняется зарамочное оформление перерисовываем, картинку масштабируем. Когда изменение размера окна закончено, вызываем перерисовку 2.

Пока что в голову пришло вот такое - картинка возвращается из C++ как буфер. Зарамочное оформление (и картинка) рисуются через QPainter на QPixmap, это перерисовка 2. В перерисовке 1 выводится каждый раз этот QPixmap и поверх него набрасывается то что связано с мышью.

Можно ли это как то сделать более Ъ? Мне скажем не нравится то, что приходится много раз делать копии самой большой части изображения. Я бы из C++ рисовал скажем сразу в память QPixmap, да фиг к ней похоже достучишься…

Еще я пока не понял как ловить окончание изменений размера окна (когда юзер мышку отпустил). mouseReleaseEvent в этом случае не вызывается похоже.

 , ,

AntonI
()

PyQt5 - накидать в область окна картинок, линий, надписей и схоронить это все в .png?

Форум — Development

В дцатый раз в первый класс;-(

Осваиваю тут новый (для себя) PyQt5. Нужно в области форточки навставлять картинок (генеряться на С++ в памяти), линий и текста, и в итоге сохранить все это в файл, лучше в png.

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

  1. в каком виджете это все делать? Пока что я в дизайнере влепил на окошко QGraphicsView и делаю для него QGraphicsScene. Хотелось бы какого аналога Canvas из родного Tkinter. Это оно?

  2. Мне нужно что бы виджет на котором я рисую масштабировался вместе с окном, при этом у меня слева от виджета гвоздями прибиты всякие элементы управления. Это можно как то сделать в дизайнере (завернуть его в какой то layot) или надо в коде колдунствовать? Я уже задолбался экспериментировать;-(

  3. Чего я там пока вообще не вижу - как все нарисованное сохранить в png, остальные мои хотелки в том или ином виде есть. Элементы управления сохранять не надо;-)

  4. Текст рисуется через QGraphicsScene.addText который возвращает QGraphicsTextItem? Как этот текст выровнять по правому краю например?! В нормальных фреймворках была такая опция прям при вставке текста, тут гуглится какая то содомия на пять строк с курсором и форматом. Проще никак?

  5. Где бы вообще про такое рисование почитать, желательно по русски? ;-(

UPD: Гугловские примеры говорят что это делается через QImage по которому рисует QPainter. Насколько я это вообще понял…

 , , ,

AntonI
()

ломается цепочка вызовов параметризованных методов

Форум — Development

вот такой простой пример

struct Accessor{
    template <typename A> void plot(A &a) const { 
        a.plot_impl<0>(*this); 
    }
};

struct XXX{
    template <int I> void plot_impl(const Accessor&){}
    void plot(const Accessor &acc){ acc.plot(*this); }
};

при сборке вылетает ошибка

$ g++ -std=c++11 -c test-accessor.cpp
test-accessor.cpp: In instantiation of ‘void Accessor::plot(A&) const [with A = XXX]’:
test-accessor.cpp:9:48:   required from here
test-accessor.cpp:3:14: error: invalid operands of types ‘<unresolved overloaded function type>’ and ‘int’ to binary ‘operator<’
   a.plot_impl<0>(*this);
   ~~~~~~~~~~~^~

gcc 7.5.0

ЧЯНТД? Почему он не видит что plot_impl параметризована?

@monk

 ,

AntonI
()

3D рисовалка множества шариков а-ля молекулярная динамика?

Форум — Development

Сабж. Нужна утилитка которая принимает массив шариков (x,y,z центра, радиус, сорт/цвет) и рисует их в 3D при помощи OpenGL. Шарики неподвижны, связей между ними нет, они не пересекаются, то есть это проще чем визуализация молекулярной динамики.

Шариков может быть много (10^6). Нужно что бы сцену можно было крутить мышью/стрелками, менять масштаб и двигать плоскости отсечения.

Она должны быть простой в установке (с минимумом зависимостей) и с примитивным текстовым входным форматом.

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

Есть вообще в природе такое?;-)

 , ,

AntonI
()

Похоже не работает редирект в nginx

Форум — Admin

Развернул bigbluebutton. www.ssllabs.com говорит что сертификаты в норме, но при заходе по адресу nginx меня перебрасывает на /50x.html со словами

2021/02/20 21:17:35 [error] 1727#1727: *5 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: XXX.XXX.XXX.XXX server: bbb.XXXXXX.ru, request: "GET /b HTTP/1.1", upstream: "http://127.0.0.1:5000/b", host: "bbb.XXXXX.ru"

(из /var/log/nginx/error.log).

В администрировании я полный нуб;-(

 ,

AntonI
()

литературное тестирование (по следам Дональда нашего Кнута)

Форум — Development

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

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

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

  1. Может быть создано один или несколько файлов в которых накапливается код тестов по мере обработки теховской документации. Для создания файлов используется комбинация
%@> имена файлов через пробел 

созданные файлы могут быть активными (по умолчанию) или замороженными. Если файл активен, все что начинается с одиночного % или находится в окружении verbatim дублируется в этот файл. Для заморозки используется комбинация %@- имена файлов, для разморозки %@+ имена файлов, для закрытия файла %@. имена файлов. Для записи отдельной строки в файл или группу файлов (вне зависимости от их состояния) используется

%@(имена файлов) какой то код 

При этом в именах файлов можно использовать вайлдкарты а-ля шелл.

  1. если в окружение verbatim встречается комбинация
выражение --> результат

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

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

  2. Точно нужно будет настраивать как какие тесты собирать и запускать, аналогично через какой то вариант вроде %@$ … Ну и наверное для запуска тестов можно заюзать gnu make.

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

Как то так. Cast @bugfixer, @pon4ik, @thunar, @Vit

 , , , ,

AntonI
()

Структура данных для хранения коэффициентов многомерного полинома?

Форум — Development

Сабж. Есть полином от D параметров x_1,…x_D суммарной степени N. Его можно рассматривать как сумму членов x_1^{k1} x_2^{k2} … x_D^{kD}, sum k_i<=N. При каждом таком члене есть коэффициент типа double, нужна структура данных которая обеспечит эффективный доступ к коэффициенту если известен набор степеней k.

Число D известно в компайл-тайм, как правило D=2..4 но может быть и больше (скажем до 8ми). N известно в рантайм, N<256.

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

Cтепени k хранятся в беззнаковом целом (4 или 8 байт), по байту на степень.

Сейчас это реализовано тупо, как std::map<uint32_t, double>, есть ощущение что доступ к этой штуке сильно тормозит. Другой крайностью будет просто создать массив из N^D даблов, но это противоречит моему чуйтству прекрасного - уж больно здоровый оверхед по памяти.

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

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

 ,

AntonI
()

Как Ъ откатить часть толстого проекта?

Форум — Development

Сабж. Проект мигрировал с CVS под git, есть единственная ветка. По нашим меркам проект толстый (100к строк).

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

Коммит на котором все работало бол-мен известен.

По идее изменения которые нужно откатывать затрагивают относительно небольшое число файлов. Беда в том, что часть из этих файлом менялись в каждом втором коммите, например CMakeLists.txt. Кроме того за это время система сборки была здорово переписана, появилась какая то куча смаке модулей и пр. Автор всего этого недоступен на неопределенный срок, я в cmake разбираюсь крайне плохо.

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

 ,

AntonI
()

Апгрейд рабочего места?

Форум — Talks

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

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

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

  1. мобильность должна остаться - то есть нужно что бы в любой момент ноут можно было отключить и на нем осталось актуальное состояние в режиме сна.

  2. картинка и пр должны на рабочее место идти с десктопа.

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

Понятно что это все должно работать под линуксом;-)

Мне сначала в голову пришли всякие свитчи для видео/клавы/мыши, но это все таки не совсем оно…

 ,

AntonI
()

64х битная кросскомпиляция под винду - ошибка линкера

Форум — Development
x86_64-w64-mingw32-g++ -shared -o 4windows/_mymodule.pyd mingw/mymodule_wrap.o mingw/mymodule.o -L ~/.wine/drive_c/Python27/libs/ -lpython27 -lgomp
mingw/mymodule_wrap.o:mymodule_wrap.cxx:(.text+0x8a7d): undefined reference to `__imp_Py_InitModule4'
collect2: error: ld returned 1 exit status

ЧЯНТД? ;-(

Ставил под wine64 python2.7.18 64-х битный, версия wine-3.6 (Ubuntu 3.6-1).

$ x86_64-w64-mingw32-g++ -v
Using built-in specs.
COLLECT_GCC=x86_64-w64-mingw32-g++
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-w64-mingw32/7.3-win32/lto-wrapper
Target: x86_64-w64-mingw32
Configured with: ../../src/configure --build=x86_64-linux-gnu --prefix=/usr --includedir='/usr/include' --mandir='/usr/share/man' --infodir='/usr/share/info' --sysconfdir=/etc --localstatedir=/var --disable-silent-rules --libdir='/usr/lib/x86_64-linux-gnu' --libexecdir='/usr/lib/x86_64-linux-gnu' --disable-maintainer-mode --disable-dependency-tracking --prefix=/usr --enable-shared --enable-static --disable-multilib --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --libdir=/usr/lib --enable-libstdcxx-time=yes --with-tune=generic --with-headers=/usr/x86_64-w64-mingw32/include --enable-version-specific-runtime-libs --enable-fully-dynamic-string --enable-libgomp --enable-languages=c,c++,fortran,objc,obj-c++,ada --enable-lto --with-plugin-ld --enable-threads=win32 --program-suffix=-win32 --program-prefix=x86_64-w64-mingw32- --target=x86_64-w64-mingw32 --with-as=/usr/bin/x86_64-w64-mingw32-as --with-ld=/usr/bin/x86_64-w64-mingw32-ld --enable-libatomic --enable-libstdcxx-filesystem-ts=yes
Thread model: win32
gcc version 7.3-win32 20180312 (GCC) 

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

Всякие варианты с подсовыванием линкеру всего что есть в Python27/libs результатов не дали;-(

 , , , ,

AntonI
()

Как в PIL.Image вставить Tkinter.PhotoImage?

Форум — Development

Сбаж. Че то я уже задолбался искать;-(

Вот такой пример

from Tkinter import *
tk = Tk()
cimage = PhotoImage(file='1.ppm')
print cimage.width(), cimage.height()


import PIL.Image, PIL.ImageTk, PIL.ImageDraw, PIL.ImageFont
img = PIL.Image.new('RGB', (100,1000), (255, 255, 255)) #2png

help(img)
img.paste(im=cimage, box=(30,59,60,900)) #<<< вот тут падает

img.save('1.png')

падает со словами

  File "/usr/lib/python2.7/dist-packages/PIL/Image.py", line 1408, in paste
    self.im.paste(im, box)
SystemError: new style getargs format but argument is not a tuple

Изначально работа идет именно с Tkinter.PhotoImage что бы не тащить PIL в обязательные зависимости, этот код вызывается только для быстрого сохранения Tkinter.Canvas в png. Если PIL нет то юзается canvas.poscript, но это долго работает.

PS завернуть Tkinter.PhotoImage во что то PIL-овское тоже не выходит. Можно конечно сделать это через диск, но уж больно извращенно такое решение выглядит;-(

 , ,

AntonI
()

Ошибка линковки при кросскомпиляции с помощью mingw - multiple definition of ...

Форум — Development

Собираю одну свою толстую тулзу под винду (коллеги попросили) при помощи mingw. В проекте python2.6 (не спрашивайте, так вышло;-(((), swig, С++. Долгими танцами с бубном все скомпилял, но дальше упс - при сборе dll линкер орет multiple definition of … на все заинлайненные функции.

$ i686-w64-mingw32-g++ -v
Using built-in specs.
COLLECT_GCC=i686-w64-mingw32-g++
COLLECT_LTO_WRAPPER=/usr/lib/gcc/i686-w64-mingw32/7.3-win32/lto-wrapper
Target: i686-w64-mingw32
Configured with: ../../src/configure --build=x86_64-linux-gnu --prefix=/usr --includedir='/usr/include' --mandir='/usr/share/man' --infodir='/usr/share/info' --sysconfdir=/etc --localstatedir=/var --disable-silent-rules --libdir='/usr/lib/x86_64-linux-gnu' --libexecdir='/usr/lib/x86_64-linux-gnu' --disable-maintainer-mode --disable-dependency-tracking --prefix=/usr --enable-shared --enable-static --disable-multilib --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --libdir=/usr/lib --enable-libstdcxx-time=yes --with-tune=generic --with-headers=/usr/i686-w64-mingw32/include --enable-version-specific-runtime-libs --enable-fully-dynamic-string --enable-libgomp --enable-languages=c,c++,fortran,objc,obj-c++,ada --enable-lto --with-plugin-ld --enable-threads=win32 --program-suffix=-win32 --program-prefix=i686-w64-mingw32- --target=i686-w64-mingw32 --with-as=/usr/bin/i686-w64-mingw32-as --with-ld=/usr/bin/i686-w64-mingw32-ld --enable-libatomic --enable-libstdcxx-filesystem-ts=yes
Thread model: win32
gcc version 7.3-win32 20180312 (GCC) 

собираю как

i686-w64-mingw32-ld -shared -o _name.pyd name_wrap.o src/*.o -L ~/.wine/drive_c/Python26/libs/ -lpython26 

 , , ,

AntonI
()

Подскажите телевизор?

Форум — Talks

Сам это не смотрю, маме хочу (она любит канал Культура).

Диагональ от 40", разрешение от FullHD, че там еще нужно… я в них ничего не понимаю. Хотелось бы крепеж VESA 100-200мм, у меня кронштейн такой есть. Но наверное смогу велосипедить крепеж и на больший размер, хотя лениво. По ценнику че то около 20тыр +/-.

Заведена коаксиальная антенна, но она от провайдера идет. Наверное неплохо что бы он там всякие каналы типа BBC живая природа умел?

Мне глянулся Xiaomi Mi TV 4A 43 T2 43" но там крепеж VESA 300 вроде.

ЗЫ линукс тут причем что наверное он там унутрях?

 ,

AntonI
()

gps-трекер для пожилого человека?

Форум — Talks

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

Посоветуйте девайс, поделитесь историями успеха. Хочется что бы:

  1. я мог посмотреть где она ходит

  2. эта штука могла мне посвистеть если что то пошло не так - например, не дай Бог, упала, или она нажала кнопку SOS.

  3. В идеале - что бы я мог ей позвонить, телефон она слышит плохо. Наверное для этого это должна быть какая то компактная фиговина которая крепится куда? На руку? Пришить ее на воротник? ХЗ…

  4. Не должно быть никаких сенсорных экранов и прочей фигни. Из интерфейса - одна кнопка. Что бы нельзя было случайно куда то ткнуть и уйти в непойми какой режим. Если смарт-часы с сенсорным экраном то он должен наглухо лочится и показывать только время.

Посоветуйте девайс/поделитесь историей успеха. Пока смотрю на Reachfar RF-V28

 ,

AntonI
()

Параллельный итератор для stencil-вычислений?

Форум — Development

пардонте, тут будет некоторый поток сознания;-(

Есть многомерный массив, причем он может быть устроен достаточно сложным образом. Нам нужно взять каждый элемент этого массива и что то с ним сделать с учетом его соседей. Соседи расположены по некоторому шаблону, скажем ближайшие соседи (слева/справа/сверху/снизу) это шаблон «крест», бывают и более сложные шаблоны. Это называется stencil-вычислениями и условно половина числодробилок именно таким вот и занимается.

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

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

  1. Есть счетчик size_t i (потому что OpenMP), все ячейки массива пронумерованы подряд.

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

#pragma omp parallel for firstprivate(I)
   for(size_t i=0; i<N; i++){ 
       I.update(i); 
       ...
    }

Будучи настроенным, I ведет себя как умный указатель, то есть у него перегружены операции -> и *. М.б. его и инкрементировать можно - тогда это обычный итератор, но с возможностью update(i). Кроме того I может давать кучу дополнительной информации (координаты ячейки например), и тогда это уже больше чем итератор получается?

  1. Есть шаблон S[n], это набор из n смещений относительно обрабатываемого элемента массива. Шаблон известен заранее, поэтому можно сгенерировать заранее массив каких то структур, которые относительно малой кровью позволяют от I обращаться к его соседям. Для обычного многомерного массива (который эмулируется на основе одномерного массива + адресная арифметика) это будут просто целые числа, в более сложных случаях это может быть что то выморочное. Есть нюанс - при обращении к соседям надо как то обрабатывать выход за границы многомерного массива.

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

  1. I.get_nb(S[k]) — принимает какой то элемент шаблона, возвращает указатель на соседнюю ячейку или nullptr. Хотя это кривовато - для анализа выхода за границу может понадобиться много операций, кроме того nullptr может оказаться недостаточно, иногда хочется унать куда именно (налево/направо) мы вылетели.

  2. I.get_nb(k) — принимает номер элемента шаблона, возвращает указатель на соседнюю ячейку или nullptr. Это чуть лучше, поскольку шаблон известен заранее, можно сделать маски какой элемент шаблона куда сдвинут.

Наверное можно и каких то методов навешать на I что бы понимать куда относительно границы мы попали…

Вопрос - как правильно называются I? Как правильно называются S (если называются)? И как вообще Ъ делают такие вещи в Ъ программировании?;-)

Cast @pon4ik, @monk, @peregrine

 , , , ,

AntonI
()

А у std::map старые итераторы остаются рабочими при модификации контейнера?

Форум — Development

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

std::map<T1, T2> M;
... тут мы что то в M напихали ...
I = M.find(k); // что то нашли
... тут мы вовсю добавляем/удаляем элементы в M, но элемент с ключем k НЕ удаляем
>>>> вот тут I рабочий? <<<

 , ,

AntonI
()

Установка M2. 2242 в 1U сервер Intel R1000

Форум — Admin

Пришлось тут заняться накаткой оси пр. на такой вот агрегат. Сам не админ ни разу.

Хочется ось поставить на SSD. Купил SSD, воткнул в слот - он ее не видит, в биосе была похожая ручка, дернул - не помогает.

Рядом со слотом для SSD впаян SATA разъем с надписью «SATA M2 JIET», чОрненький. Из восьми беленьких SATA разъемов половина свободна (в четырех сидят диски). В комплекте идут SATA шлейфы, на одном написано - «SATA (6~7/M.2)». Типа предполагается что нужно этим шлейфом чорненький SATA-разьем соединить с беленьким? O_O

Чо то я инструкцию загуглить не смог;-(

 

AntonI
()

Где и как добыть в Москве новый АКБ для ноутбука lenovo для замены?

Форум — Talks

Сабж. Ноут lenovo carbon X1 4gen, машинке больше трех лет, батарея уже плохо держит заряд. Озаботился сегодня утром, позвонил вот этим деятелям https://lenovo.remont-support.com/ - спросили модель, говорят батарея есть в наличии, приезжайте, займет час, стоить будет 3.5тыр (удивился, че то мало).

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

Два вопроса:

  1. Что за хрень произошла с сервисными центрами? Судя по отзывам коллег это не единичный случай а какая то тенденция.

  2. Где и как все таки добыть нормальную АКБ на замену?

linux тут при том что на ноуте linux.

 ,

AntonI
()

Замена АКБ для ИБП Powercom WOW-500?

Форум — Talks

Сабж. Проработал несколько лет и перестал - после сбоя питания не включается. Разобрал, там стоит батарея np3.3-12 shimastu (12V 3.3 Ah). Померял вольтаж - выдает 12 с чем то вольт, это она и правда так сдохла? А сфига ли интересно сдохла, в общем там число циклов было мизерное?

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

Возникла дурная мысль, купить вместо np3.3-12 АКБ Powercom PM-12-7.0(7.2) на 7.2Ah - на работе как раз сдохла Powercom WOW-1000, туда такую надо. По габаритам ее можно ко мне вписать если доработать корпус лобзиком. А электрика более мощную АКБ потянет?

 

AntonI
()

Большой холодильник (с распашными дверями) со сбросом тепла внизу/сзади/сверху?

Форум — Talks

Ищу такое вот. Кухня средняя по размерам но одного стандартного холодильника мало, два ставить уже некуда (почти).

Есть холодильники с морозилкой сбоку (side by side), но это наверное непринципиально, можно и снизу, но с распашными дверями, важен общий большой литраж ну и уменьшение площади заметаемой дверью.

Основной затык - бюджетные варианты похоже имеют радиаторы в боковых стенках, а я хочу его поставить в угол вплотную и с другой стороны вплотную же пристроить шкаф. В инструкции по бирюзе например явно сказано что так делать нельзя. Как этот параметр (расположение радиатора теплообменника) называется я так и не понял, в Яндекс маркете его нет. В инструкциях это тоже не пишут. Есть модели с явным расположением радиатора снизу (там решетка), но они стоят как самолёт. У меня бюджет до 70 тыр +/-, лучше меньше. И вот как выбрать нужное, щщупать то живьём их ненаездишься;-(

Всякие свистелки вроде генератора льда я оценить не могу, может оно мне и надо конечно…

Линукс тут при том, что в холодильнике стоит пиво, а в большом холодильнике стоит многа пива! Чем больше пива тем лучше Линукс:-)

 

AntonI
()

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