Всем привет.
На днях столкнулся с задачей, что при отправке формы с типом
В rtk-query и axios такой конфигурации не нашел, как и в клиентском
Глядя в Network, видно, что браузер сам добавляет
В итоге выход один - генерить руками тело запроса и преобразовывать его в Blob.
Генерим заголовки как текст, добавляем 2 пустые сроки, преобразуем в blob и добавляем в массив. Затем преобразуем файл в blob и добавляем в массив. И так со всеми файлами. Не забываем разделить поля при помощь boundery типа
Из всех блобов делаем один общий
И отправляемнахуй
Спасибо чатгпт за алгоритм (я бы охерел это руками писать).
Chrome кстати говорит, что это пустая FormData, но бекенд успешно сохраняет файлы из запроса.
На днях столкнулся с задачей, что при отправке формы с типом
multipart/form-data нужно было добавить отдельные заголовки для каждого файла из формы. Задача немного нестандартная и как средствами клиентского JS ее решить не сразу понятно.В rtk-query и axios такой конфигурации не нашел, как и в клиентском
FormData. В интернете гуглится мало инфы и часто встречается решение с использованием пакета form-data (но он для node).Глядя в Network, видно, что браузер сам добавляет
Content-Disposition и Content-Type. В спецификации же к http написано, что можно добавлять отдельные заголовки для полей. В итоге выход один - генерить руками тело запроса и преобразовывать его в Blob.
Генерим заголовки как текст, добавляем 2 пустые сроки, преобразуем в blob и добавляем в массив. Затем преобразуем файл в blob и добавляем в массив. И так со всеми файлами. Не забываем разделить поля при помощь boundery типа
----WebKitFormBoundary{random_string}Из всех блобов делаем один общий
new Blob(blobs, {
type: `multipart/form-data; boundary=${boundary}`,
});
И отправляем
Спасибо чатгпт за алгоритм (я бы охерел это руками писать).
Chrome кстати говорит, что это пустая FormData, но бекенд успешно сохраняет файлы из запроса.
🔥6🤯1😎1
Так, нужна помощь зала. Вдруг кто шарит в ремонте кондеев.
Есть пациент фирмы Gree с ошибкой датчика температуры. Я откопал виновника и замерил сопротивление. Но таблиц соответствия температуры и сопротивления не нашел.
Эксперты, есть смысл заказывать и ждать датчик, либо может дело в недостаточном уровне фреона (т. к кулер крутится и патрубки холодные у внешнего блока, а до внутреннего холод не доходит)?
UPD: короч я так подумал, что кондей работает на температуре 18 градусов, а из за того что не хватает фреона через 20 минут начинает думать что неисправен датчик (ведь за это время он по идее должен был уже охладиться).
Есть пациент фирмы Gree с ошибкой датчика температуры. Я откопал виновника и замерил сопротивление. Но таблиц соответствия температуры и сопротивления не нашел.
Эксперты, есть смысл заказывать и ждать датчик, либо может дело в недостаточном уровне фреона (т. к кулер крутится и патрубки холодные у внешнего блока, а до внутреннего холод не доходит)?
UPD: короч я так подумал, что кондей работает на температуре 18 градусов, а из за того что не хватает фреона через 20 минут начинает думать что неисправен датчик (ведь за это время он по идее должен был уже охладиться).
🤯4👍3😢1
Media is too big
VIEW IN TELEGRAM
eto ya трачу 3 часа на то, что можно купить за 300 рублей.
🔥17👍5❤🔥4👏2😁2
Media is too big
VIEW IN TELEGRAM
eto ya перехожу на новый уровень и экономлю до 800 рублей (сомнительно, но окей)
😁11👍7❤🔥3🔥2❤1💯1
Всем привет! Ищу знатоков питона чтобы решить головоломку (которую я не смог решить с чатгпт)
Есть 2 модуля: alarm_config (отвечает за чтение конфига из файла) и alarm_manager (получает настройки из alarm_config и заведует алармами). Хочу при обновлении настроек в файле, обновлять их и менеджере. НО! Когда насильно вызывают реинициализацию менеджера, новые настройки вижу, а при проверке аларма (который происходит в бесконечном цикле основного модуля) — нет, там старые значения.
Я сам не местный, в питоне не особо шарю(
Предполагаю, что тут какое то ПИТОНОВСКОЕ замыкание (если такие есть). В общем, буду рад любой подсказке 😊
Есть 2 модуля: alarm_config (отвечает за чтение конфига из файла) и alarm_manager (получает настройки из alarm_config и заведует алармами). Хочу при обновлении настроек в файле, обновлять их и менеджере. НО! Когда насильно вызывают реинициализацию менеджера, новые настройки вижу, а при проверке аларма (который происходит в бесконечном цикле основного модуля) — нет, там старые значения.
#alarm_config.py
class AlarmConfig:
def __init__(self, file_name=os.path.join(os.path.dirname(__file__), os.pardir, 'alarms.cfg')):
self._conf = self._load_alarms(file_name)
def subsсribe(self, cb):
self.cb = cb
@property
def alarms(self):
alarms = list(self._conf.items('alarms'))
........
return alarms_list
def update:
self.cb() #вызываю реинициализацию менеджера
alarmConfig = AlarmConfig()
#alarm_manager.py
class AlarmManager:
def __init__(self):
self.alarms = alarm_config.alarmConfig.alarms
alarm_config.alarmConfig.subsсribe(self.reinit)
self.isAlarm = False
def reinit(self):
self.alarms = alarm_config.alarmConfig.alarms
# вижу новые значения
.......
def checkAlarms(self, prop, data, callback):
self.alarms = alarm_config.alarmConfig.alarms
# вижу старые значения все равно
alarmManager = AlarmManager()
# main.py
while True:
try:
alarmManager.checkAlarms(item, data, alarm_callback)
Я сам не местный, в питоне не особо шарю(
Предполагаю, что тут какое то ПИТОНОВСКОЕ замыкание (если такие есть). В общем, буду рад любой подсказке 😊
Привет.
Чуть чуть погундел о том, что я не умею нормально обновлять сертификаты letsencypt и делаю все через жопу)
Может кому полезно будет.
Чуть чуть погундел о том, что я не умею нормально обновлять сертификаты letsencypt и делаю все через жопу)
Может кому полезно будет.
Jem Space
Обновление TLS сертификатов
Или почему я не любил работать с certbot. По своей натуре, я человек очень торопливый. Если можно что-то сделать быстро и не вникая в суть (по какому нибудь туториалу например), то я только рад. Сделал и забыл и желательно не думать что когда то придется…
👍7❤1
Forwarded from Лебедь раком щуку
This media is not supported in your browser
VIEW IN TELEGRAM
😁10🔥1🤡1
This media is not supported in your browser
VIEW IN TELEGRAM
eto ya оправдываю аватарку канала и начинаю день с перепайки вздутых конденсаторов на мониторе view sonic (который жесть как геморно разбирается).
А с чего у вас начинается неделя?)
А с чего у вас начинается неделя?)
👍10🔥5❤2
Кстати, вместе с @dlents стал амбассадором FrontEndConf 2024. Правда от лица своего @front_end_dev. Может и зря, что не лично от себя, но не люблю, честно говоря, лицом светить)
🔥14👍2
Привет.
Я таки одолел сборку стола (и почти вернул весь бардак обратно). Отдельное спасибо liftdesk, оперативно прислали недостающую перекладину без всяких возвратов на озон.
Ещё бы кабель менеджмент осилить, но это уже другая история. Чуть позже обзор сделаю небольшой.
Я таки одолел сборку стола (и почти вернул весь бардак обратно). Отдельное спасибо liftdesk, оперативно прислали недостающую перекладину без всяких возвратов на озон.
Ещё бы кабель менеджмент осилить, но это уже другая история. Чуть позже обзор сделаю небольшой.
🔥11😎3❤🔥2👍2