18:53 | |
|
Новые вопросы – Toster.ru Как правильно организовать real-time обновление в огромном проекте? Проблема: В приложении Next.js используется общий сокет для трансляции спортивных событий. При обрыве интернета (или переключении устройства) логика восстановления комнат срабатывает нестабильно. Часто теряются поля в объектах, или TanStack Query не обновляет кеш, потому что ключи формируются неправильно Что сделано: Сейчас логика размазана по 10 хукам, которые отличаются только способом обновления кеша. Написал SocketManager, который отвечает за подключение и переподключение, но у разных событий с бека своя логика формирования ключа для комнаты и переподписки, из-за чего бывает потеря соединения Вопрос: Стоит ли делать отдельный провайдер, который обернет все приложение, будет следить за pathname, так как по нему формируется подписка на некоторые события, также будет подписываться на события, восстанавливать подключения и следить где какой кеш нужно обновить в зависимости от типа события? Есть ли более масштабируемый паттерн для управления одним большим сокетом на проекте? Если нужны еще детали, могу уточнить, хочу понять как строить полноценный реалтайм сервис, а не просто игрушку из пары хуков в компонентах 2 hours ago Какая программа подходит для озвучки текста на андроиде? Подскажите программу / приложение, онлайн и не только, которые наилучшим образом подходят для длительной преобразования текста в речь – 100 тыс. знаков и более, точнее говоря, с безлимитным вариантом для работы на андроиде. Суть в том, что при кажущемся немалом количестве этих программ, мало какая годится в действительности. Для коротких текстов – да, есть, для длительных не могу подобрать. Проблема ещё в том, что пробный период, который там предоставляется слишком короткий, чтобы добросовестно изучить программу, а суммы запрашивают немалые, и что, самое скверное, даже в платном варианте отсутвует безлимитные варианты, иначе говоря, сколько не заплати, а лимит всё равно ограничивают. Или программа подходит по всем показателям (настройки удобные, голоса подходящие, но ограниченный вариант), или безлимитный вариант на любое количество знаков, но настройки – дрянь, голоса не те, или пробный период слишком мал, не успеваешь понять, стоит ли выбрасывать деньги, а переплатил уже прилично. А то и вовсе откровенный лохотрон – привяжите карту, чтобы оплатить 1 рубль, а потом хрен найдёшь, где её отвязывать. Поэтому карты больше не привязываю, проходили – знаем. Есть ли какая-нибудь приличная программа / приложение, пусть платное, но отвечающее всем требуемым запросам? Подчёркиваю – для работы на андроиде. 4 hours ago Что происходит на уровне памяти при обращение к полям класса? Известно что процессор считывает из кэша. В кэш они попадают из ОЗУ. Процессор считывает по 64 байта. Понятно что переменный которые используются чаще всего надо в начало. Но есть пару вопросов. Для примера возьмем следующую структру: struct WindowData { float width, height; // other fields 64 bytes + bool isVisible; }; 1) При обращение к window.isVisible сначало другие переменные загрузятся в память и потом уже нужное поле? 2) Или оно сразу перейдет к нужному? И если нет, то так каждый раз когда нужно обратится? 3) Если нужно обратится к нему несколько раз за функцию, то лучше скопировать/сделать ссылку в локальную переменную?5 hours ago Как работает эта схема? Понятно что транзистор усиливает сигнал, r1 задаёт начальное смещение, c1 и r2 вроде генератор колебаний. Для чего нужны катушка l1, конденсатор c2 и катушка l2?17 hours ago Срок годности Wi-Fi роутера или причина зависаний? Два года назад купили Wi-Fi роутер Xiaomi AC2100. Первое время работал идеально, никаких нареканий не было. В последние 3 месяца начал периодически зависать. Перестаёт работать DNS-резолвер и не открывается веб-интерфейс. Помогает перезагрузка. Проявляется раз в неделю? Могут ли MtProto и AmneziaWG влиять на работу роутера? Это программная проблема или аппаратная? Прошивка: Padavan 22 hours ago Хорошая библиотеку для сканера QR? Подскажите хорошую либу для сканера qr-кода не баганую. Например, если сканировать qr-код который на терминале, то он его вообще не видит. 1 day ago Как извлечь любые Ассеты любой игры Unity? В общем, мне нужна целая сцена из Ultrakill. Я просмотрел сайты с моделями, гитхаб, погуглил пару мест, но ничего из этого то что нужно. Так вот, я еще попробовал AssetRipper и AssetStudio, но конкретно на эту игру выдает ошибку. Вопрос по итогу: есть ли еще способы достать ассеты из компилированного проекта юнити или есть замечательный сайт, удобно складирующий ассеты игр со всего интернета? К слову - уровень носит имя "Р-1", и на гитхабе лежит проект демо версии игры, но она со всеми уровнями до него 1 day ago Как вытащить НСПК ссылку? При сканирование qr-кода на терминалах сбера (новые), отдает ссылку multiqr.ru и там уже выбираешь банк или сбп, после клика на сбп, перекидывает на сбп (НСПК). Можно ли как-то вытащить сбп ссылку? При сканирование внутри сбера, он распознает, что и логично, тк от сбера. Как вытащить? Парсером или есть библиотеки? 1 day ago Вы уже пробуете Bricks builder для wordpress? Есть высоко технологичный визуальный инструмент для создания сайтов - Bricks builder. В рунете о нём инфы очень мало, на западе им пользуются профи и сайты качественные получаются. Я не рекламирую, я понять хочу почему он не популярен при огромных возможностях из коробки и плагинов не каких не надо. Стоимость: Лицензия для одного сайта стоит около ($99), а безлимитный вариант обойдется в ($249-$250). Это не elementor-нак который матом ругаются и банят заказчики. Сообщество Вы знаете о таком чуде Bricks?? ![]() 1 day ago Как создать правильный фильтр для письма в Thunderbird в отношении спама? Дело такое , уже давно надоедают письма с телом письма ведущие на вот такой вид ссылки : https://firebasestorage.googleapis.com/v0/ b/uujjeiimmejjwuue.appspot.com/o/a-kkkkmmmmrrnn.html? alt=media&token=96b4cf6. Эта ссылка так выглядит в исходном коде письма. Отправитель всегда разный с разных доменов почтовых. Есть только одно отличие , всегда используется firebasestorage гугловский сервис , но как бы я не делал фильтры , эти письма удалить не могу. Использую фильтр как Тело запроса - содержит и googleapis , пробовал и полный домен , но без толку.. При получении новой почты - До и После анализа пробовал тоже. Ссылка динамичная на конце , по этому не получается зафиксировать. По другим признакам можно удалить , но это разовая акция.. стиль сообщений меняется. А основной домен гугла в начале нет. Нейросеть спрашивал , но там ничего не помогло из предложенного. 1 day ago Как починить впн vless? У меня есть сервер в Финляндии, 3x-ui, vless. Сегодня утром обнаружил такую проблему: на телефоне перестал работать ютуб (картинки грузятся, а видео либо не грузятся совсем, либо грузятся по несколько минут). При этом на пк все работает прекрасно. Пробовал и на айфоне, и на андроиде, использовал разные приложения для подключения - результат одинаков, ютуб не работает. Причем проблема исключительно с ютубом, другие приложения работают. Уже пробовал в sniffing отключать quic и fakedns, включал route only, менял xtls-rprx-vision на xtls-rprx-vision-udp443, обновил 3x-ui, в маршрутизации прописывал бан udp 443 (подсказала ии) - ничего не помогло. 2 days ago Почему окно fancybox по ajax открывается и сразу закрывается? Добрый день, есть активное окно в fancybox, при нажатие кнопки отправляются данные по ajax, при возврате окно закрывается и открывается новое, но оно сразу закрывается, код $("#codereply").on("submit", function(){ $.ajax({ type: 'POST', url: $url, data: $("#codereply").serialize(), dataType: 'json', success: function (data) { // console.log(data); var instance = $.fancybox.getInstance(); instance.close(); $.fancybox.open(data['html'], { afterClose: function() { location.reload(); } }); } }); return false; }); 2 days ago Авто торговля на байбите? У меня есть бот в телеграме, в нем есть функция авто торговли на байбите. Тесты показали, что позиции открываются, тейк 1 и стоп 1 расставляются, но когда я хочу поставить больше чем 1 тейк автоматически, этого не получается сделать, как это можно сделать. Кто знает и может помочь отпишитесь плс def execute_signal(self, signal: dict, signal_message_id: int = None): if not self.can_auto_trade(): return False, "Автоторговля не включена, нет ключей или подписка неактивна" if self.position_manager is None: return False, "Менеджер позиций не инициализирован. Попробуйте переподключить API ключи." symbol = signal['symbol'] trend = signal['trend'] entry = signal['entry'] sl = signal['sl'] tp1 = signal['tp1'] tp2 = signal['tp2'] tp3 = signal['tp3'] risk_pct = abs(entry - sl) / entry * 100 if risk_pct < 0.2: return False, f"Стоп-лосс слишком узкий ({risk_pct:.2f}% < 0.2%)" if risk_pct > 5.0: return False, f"Стоп-лосс слишком широкий ({risk_pct:.2f}% > 5%)" # --- ПРОВЕРКА ЛИМИТА ПО РЕАЛЬНЫМ ПОЗИЦИЯМ НА БИРЖЕ --- try: exchange_positions = self.api.get_open_positions() current_positions_count = len(exchange_positions) max_positions = self.get_setting('MAX_POSITIONS') if current_positions_count >= max_positions: return False, f"Достигнут лимит одновременных позиций ({max_positions}). Открыто {current_positions_count}." if symbol in exchange_positions: return False, f"Позиция по {symbol} уже открыта на бирже." # Синхронизируем локальный менеджер с реальными позициями (удаляем призрачные) self.position_manager.sync_with_exchange(exchange_positions) except Exception as e: logger.error(f"Ошибка получения позиций с биржи для проверки лимита: {e}") return False, "Не удалось проверить лимит позиций. Попробуйте позже." # --- ДАЛЬНЕЙШАЯ ЛОГИКА РАСЧЁТА РАЗМЕРА ПОЗИЦИИ --- existing = self.position_manager.active_positions.get(symbol) if existing: if existing.side == trend: if trend == "LONG": if entry >= existing.entry_price * 0.985: return False, f"Сигнал LONG по {symbol} не улучшает вход (тек. {existing.entry_price:.4f} -> новый {entry:.4f})" else: if entry <= existing.entry_price * 1.015: return False, f"Сигнал SHORT по {symbol} не улучшает вход (тек. {existing.entry_price:.4f} -> новый {entry:.4f})" success, msg = self.close_position(symbol, manual=False) if not success: return False, f"Не удалось закрыть позицию: {msg}" else: success, msg = self.close_position(symbol, manual=False) if not success: return False, f"Не удалось закрыть позицию для реверса: {msg}" if not self.position_manager.can_open_position(symbol, trend): return False, "Невозможно открыть позицию (лимит или уже есть)" balance = self.api.get_balance() if balance < CONFIG.get('MIN_BALANCE', 50): return False, f"Баланс {balance} ниже минимального" if self.risk_mode == 'fixed' and self.position_size_fixed and self.position_size_fixed > 0: position_size_usdt = self.position_size_fixed max_position_usdt = balance * self.get_setting('LEVERAGE', 30) if position_size_usdt > max_position_usdt: return False, f"Фиксированный объём {position_size_usdt:.2f} USDT превышает доступный с плечом {max_position_usdt:.2f} USDT" else: risk_amount = balance * self.get_setting('MAX_RISK', 0.01) price_diff = abs(entry - sl) if price_diff == 0: return False, "Стоп-лосс равен входу" position_size_usdt = risk_amount / (price_diff / entry) max_position_usdt = balance * self.get_setting('LEVERAGE', 30) if position_size_usdt > max_position_usdt: return False, f"Размер позиции {position_size_usdt:.2f} USDT превышает доступный баланс с плечом ({max_position_usdt:.2f} USDT)" contracts = position_size_usdt / entry contracts = self.api.normalize_amount(symbol, contracts) if contracts <= 0: return False, f"Недопустимый размер позиции (0 контрактов). Возможно, слишком маленький объём." self.api.set_leverage(symbol, self.get_setting('LEVERAGE', 30)) # --- ЛИМИТНЫЙ ОРДЕР (без встроенных TP/SL) --- ticker = self.api.exchange.fetch_ticker(symbol) current_price = ticker['last'] if trend == 'LONG': limit_price = max(entry, current_price * 1.0001) else: limit_price = min(entry, current_price * 0.9999) limit_price = float(self.api.exchange.price_to_precision(symbol, limit_price)) order = self.api.create_limit_order( symbol=symbol, side='buy' if trend == 'LONG' else 'sell', amount=contracts, price=limit_price ) if not order or not order.get('id'): return False, "Ошибка создания лимитного ордера" filled_price = limit_price # --- СОЗДАНИЕ ОБЪЕКТА TRADE И СОХРАНЕНИЕ --- trade = Trade( symbol=symbol, side=trend, entry_price=filled_price, size=contracts, sl_price=sl, tp1_price=tp1, tp2_price=tp2, tp3_price=tp3, opened_at=datetime.now(timezone.utc), position_id=order.get('id'), signal_message_id=signal_message_id ) self.position_manager.add_position(trade) db.save_position(self.chat_id, trade) # --- ФОНОВАЯ УСТАНОВКА ТРЁХ ТЕЙК-ОРДЕРОВ (25%, 50%, 25%) --- def place_tp_orders(): # Ждём появления позиции на бирже (до 15 сек) for attempt in range(15): time.sleep(1) try: positions = self.api.get_open_positions() if symbol in positions and positions[symbol]['size'] > 0: logger.info(f"Позиция {symbol} подтверждена, размер {positions[symbol]['size']}") break except Exception as e: logger.warning(f"Ожидание позиции {symbol}: {e}") else: logger.error(f"Не удалось подтвердить позицию {symbol} для установки TP") return time.sleep(1.5) # пауза для стабильности # TP1 – 25% tp1_size = self.api.normalize_amount(symbol, trade.size * 0.25) if tp1_size > 0: tp1_order = self.order_manager.create_stop_market_order( symbol, trend, tp1_size, tp1, reduce_only=True ) if tp1_order and tp1_order.get('id'): trade.tp1_order_id = tp1_order['id'] db.save_position(self.chat_id, trade) logger.info(f"TP1 ордер {symbol} создан, размер={tp1_size}, ID={tp1_order['id']}") else: logger.warning(f"Не удалось создать TP1 для {symbol}") # TP2 – 50% tp2_size = self.api.normalize_amount(symbol, trade.size * 0.5) if tp2_size > 0: tp2_order = self.order_manager.create_stop_market_order( symbol, trend, tp2_size, tp2, reduce_only=True ) if tp2_order and tp2_order.get('id'): trade.tp2_order_id = tp2_order['id'] db.save_position(self.chat_id, trade) logger.info(f"TP2 ордер {symbol} создан, размер={tp2_size}, ID={tp2_order['id']}") else: logger.warning(f"Не удалось создать TP2 для {symbol}") # TP3 – оставшиеся 25% tp3_size = self.api.normalize_amount(symbol, trade.size * 0.25) if tp3_size > 0: tp3_order = self.order_manager.create_stop_market_order( symbol, trend, tp3_size, tp3, reduce_only=True ) if tp3_order and tp3_order.get('id'): trade.tp3_order_id = tp3_order['id'] db.save_position(self.chat_id, trade) logger.info(f"TP3 ордер {symbol} создан, размер={tp3_size}, ID={tp3_order['id']}") else: logger.warning(f"Не удалось создать TP3 для {symbol}") logger.info(f"✅ Все TP ордера для {symbol} выставлены") threading.Thread(target=place_tp_orders, daemon=True).start() audit_logger.info( f"User {self.chat_id} opened {trend} {symbol} @ {filled_price:.8f} size_contracts={contracts:.8f}") open_msg = f"✅ Позиция {symbol} открыта @ {format_price(filled_price)}" send_telegram_message(self.chat_id, open_msg, parse_mode="HTML", reply_to_message_id=signal_message_id) return True, open_msg Часть кода отвечающая за ордера2 days ago Как в bitrix:socialnetwork.user_profile настроить блоки Обо мне, Мои интересы,Благодарности? Как в bitrix:socialnetwork.user_profile настроить блоки Обо мне , Мои интересы,Благодарности Как сделать чтобы bitrix:socialnetwork.user_profile появились блоки Обо мне , Мои интересы,Благодарности в bitrix:socialnetwork_user когда заходишь в лк юзера всплывает боковой слайдер с этими блоками а если на страницу ставишь bitrix:socialnetwork.user_profile в лк их нету Подскажите кто знает эти компоненты 2 days ago Как экзамен CLF-C02 изменил мое понимание современных облачных вычислений? Я всегда мечтал построить успешную карьеру в сфере облачных вычислений, поэтому решил подготовиться к экзамену Amazon AWS Certified Cloud Practitioner (CLF-C02). Поначалу мне было непросто разобраться в таких концепциях облачных вычислений, как безопасность, модели ценообразования и глобальная инфраструктура AWS. Однако я оставался сосредоточенным и продолжал учиться, используя видеоуроки, документацию и ежедневную практику. Благодаря регулярным занятиям с Pass4Future я лучше познакомился с сервисами AWS, облачной архитектурой и задачами, основанными на конкретных сценариях. Эти практические занятия также улучшили мои навыки управления временем и помогли определить области, в которых мне требовалась дополнительная подготовка. После нескольких недель упорного обучения и практики я почувствовал себя полностью готовым к экзамену. Этот опыт не только улучшил мои технические знания, но и укрепил мою уверенность в своих навыках, а также мотивировал меня продолжать развиваться в области облачных вычислений. 2 days ago Как добиться одинаковой ширины для определеных блоков в гриде? test__cell--left и test__cell--wide - сейчас между ними 10px разница https://jsbin.com/diyavumaco/1/edit?html,output2 days ago Как запретить внешние HDD в каспере? Стоит KSC 15.0 в политиках настроен запрет флешек, а на жестких дисках стоит "по типу шины". Жесткий диск который подключается, определяется не как флешка а как жесткий диск, но если я на шинах укажу "запрет" USB, то у меня отвалятся веб-камеры, мыши и клавиатуры. Как еще можно установить запрет на переносные жесткие диски? ![]() 2 days ago Почему не удается разрешить имена? Главный роутер: MikroTik 192.168.151.1 Второй роутер: MikroTik 192.168.151.250 Оба находятся в одной сети 192.168.151.0/24 На 192.168.151.1 включён DNS‑сервер + статические A‑записи: wpad.sno-proxy.sno.lockdoc.ru → 192.168.151.2 На роутере 192.168.151.250: ping 192.168.151.1 → работает ping 192.168.151.2 → работает ping wpad.sno-proxy.sno.lockdoc.ru → resolve failed ping yandex.ru → resolve failed На роутере 192.168.151.1 сделал правило - 0 chain=input action=accept protocol=udp src-address=192.168.151.250 log=no log-prefix="" - Делаю пинг с 151.250 - 1 пакет на 151.1 получает роутер, но то ли вернуть не может то ли еще что В wireshark картина такая - ![]() 2 days ago С чего начать для возможности написания программы встроенной в игру Lineage 2? Подскажите, с чего нужно начать и куда копать новичку, который хочет написать программу, которая может быть интегрирована в игру и влиять на процессы? Речь идет о игре Lineage 2. Что-то вроде системы, которая бы могла автоматизировать некие игровые процессы (не бот). Например считывать чат и передавать эти данные по апи на сервер. Я вбивал разные запросы в поисковик, но получаю абстрактные ответы в виде С++, сети и т.д. без конкретики с чего начать и куда двигаться, чтобы можно было написать что-то элементарное в стиле хеллоу ворлд и дальше уже углубляться в тему. 2 days ago Перенос битрикса с разных серверов на одном хостинге на один сервер на другой хостинг? Приветствую, Такой вопрос: как перенести 1С Битрикс управление сайтом с разных серверов на одном хостинге на один сервер на другой хостинг? Получается около 10-12 отдельных сайтов, все на одном хостере, но на разных VPS. Возникла идея перенести это всё под один сайт. Почитал что есть многосайтовость в Битриксе и что не нужно покупать отдельные лицензии под разные продукты. Так же видел что есть решение от Битрикс по переносу сайта с одного хостинга на другой, но про несколько сайтов там речь не шла. В общем есть ли какое-то решение, чтобы массово перенести это всё под одну админ панель и на один сайт? 2 days ago Финансовый агрегатор Новости в ВК #новости #news #novosti #события #происшествия #пресса #сми #подслушано #рекомендации #читать Источник Спонсор Лента новостей | |
|
|
|
| Всего комментариев: 0 | |
Понятно что транзистор усиливает сигнал, r1 задаёт начальное смещение, c1 и r2 вроде генератор колебаний. Для чего нужны катушка l1, конденсатор c2 и катушка l2?


















