Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
from fastapi.concurrency import run_in_threadpool
async def execute(data: DataRequest) -> DataResponse:
try:
result = await run_in_threadpool(sync_function, data)
return DataResponse(data=result)
except Exception as e:
return DataResponse(
error=str(e),
success=False,
)
В общем работает нормально. Для всех вызовов под капотом используется общий тредпул, всё работает предсказуемо.
Но потребовалось изменить количество запускаемых в пуле потоков (по умолчанию создается 40 воркеров).
Так как дело происходит с FastAPI, делается это через lifespan используя настройки anyio:
import anyio
@asynccontextmanager
async def lifespan(app: FastAPI):
limiter = anyio.to_thread.current_default_thread_limiter()
limiter.total_tokens = 100
yield
# если вдруг нужно вернуть обратно
limiter.total_tokens = 40
Зачем менять количество воркеров?
- уменьшить, если оперативки мало (один тред занимает ~8мб)
- увеличить чтобы выдержать нагрузку
Если есть предложения получше при тех же вводных - предлагайте😉
#async
Короткая ссылка чтобы создать новый файл
У многих популярных сервисов есть короткие ссылки на домене .new по которым можно прямо в адресной строке создать новый документ или файл
Figma — дизайн интерфейсов
https://figma.new
FigJam — онлайн доска
https://figjam.new
Miro — онлайн доска
https://wireframe.new
https://whiteboard.new (Легкая версия, которая живет 24 часа, можно потом утащить к себе в профиль)
Board — онлайн доска, где можно совместно рисовать и стирать как в фотошопе — стриается только часть линии по которой прошла резинка, а не вся линия целиком
https://board.new
Google
https://docs.new — Документы
https://sheets.new — Таблицы
https://slides.new — Презентации
https://note.new — Заметки
Adobe
https://editpdf.new — Редактировать PDF
https://mergepdf.new — Соединить PDF
https://splitpdf.new — Разделить PDF
https://compresspdf.new — Сжать PDF
https://rotatepdf.new — Повернуть PDF
https://sign.new — Подписать PDF
Canva — дизайн-редактор для недизайнеров
https://design.new
Asana — управление проектами
https://task.new
На сайте проекта .new еще больше сервисов
#ToolHacks
Как скрыть любой бесячий элемент сайта с помощью Ublock Origin.
Ublock origin это блокировщик рекламы с мощными дополнительными настройками и инструментами. Один из них — element picker mode (значок пипетки).
Позволяет скрыть любой элемент на сайте — всплывающий баннер, мигающее окно чата, cookie banner в пол экрана или красный счетчик новых постов.
Нужно выбрать пипетку, кликнуть по элементу, в нижней панели слайдером отрегулировать «глубину» удаления элемента и нажать «Create». В зависимости от структуры страницы, может понадобиться удалить один и тот же элемент несколько раз.
#ToolHacks
Как пользоваться GPT-4 легально за деньги, но без подписки
Краткая версия — можно пользоваться через API по модели «pay as you go».
В личном кабинете OpenAI выпустить API ключ и подключить его к клиенту YakGPT который работает в браузере локально и отсылает запросы по API. В конце месяца присылают инвойс на оплату в зависимости от количества запросов.
Если ничего не поняли, дальше объяснение человеческим языком👇
У компании OpenAI, которая делает сервис ChatGPT есть две версии нейросети — GPT3.5 turbo и GPT4. Четвертая версия работает медленнее, но отвечает точнее, льёт меньше воды и по многим показателем выдает ответы лучше чем «базовая» версия 3.5
Бесплатно GPT-4 можно пользоваться в браузере Edge через поисковик Bing или на сайте агрегатора чатботов Poe
GPT-3.5 Бесплатен на официальном сайте и в приложениях а для доступа к GPT4 нужно оформить подписку $20 в месяц. В довесок дают плагины с возможностью доступа нейронки к интернету (как в бесплатной Bing).
Но мало кто знает, что можно легально пользоваться GPT-4 по модели «плати за использование», через официальный программный интерфейс для разработчиков — API.
Вообще предполагается, что такой вариант будут использовать для подключения к своим сервисам. Например Khan Academy использует API для того. чтобы помогать ученикам и учителям лучше разбираться в материалах.
По факту, API запросы можно отправлять из консоли компьютера - просто это не удобно.
Для удобства энтузиасты написали YakGPT который выглядит очень похоже на официальный сайт ChatGPT, но работает на вашем компьютере и общается напрямую с серверами OpenAI по API
Как настроить доступ
В личном кабинете OpenAI Platform нужно привязать карту, настроить ограничение по сумме в месяц, выпустить API ключ и вставить его в YakGPT
У меня сейчас установлена отсечка 14 баксов в месяц. За июнь-июль в два человека на модели GPT4 наговорили на $10.5. В августе почти не пользовались, и накапало всего $1.4
Дополнительный плюс этого варианта — история разговоров хранится на серверах OpenAI 30 дней и не может быть использована для обучения. В отличии от всех других вариантов, где данные — один из главных способов монетизации бесплатного доступа.
Естественно, если очень плотно пользоваться GPT4 подписка может быть выгоднее, чем такая плата за запросы. Ну и если в бесплатной версии хватает качества, то официальный клиент удобнее и проще.
#ToolHacks
Скеретный чит-код в Notion Calendar чтобы активировать больше 4 часовых поясов
Есть очень приятная оболочка для гугл календаря — Notion Calendar (раньше назывался Cron Calendar)
Там очень удобно планировать встречи, блокировать слоты для работы и жизни, плюс все на горячих клавишах и с продуманным UX.
Одна из киллер фич для меня — возможность сразу видеть текущее время в других часовых поясах сбоку от окна календаря.
Но у меня недавно в команде добавился ещё +1 часовой пояс и 4 по умолчанию стало не хватать.
Так вот, оказывается есть секретный чит-код, который позволяет добавлять зон сколько нужно :)
Надо вызвать меню команд CTRL(⌘) + K и там написать такое заклинание:
defaults write ui maxTimeZones 10
Где 10 это число нужных дополнительных максимальных слотов. После этого при добавлении новой зоны он оставит её в боковой панели, вместо того, чтобы заменить последню добавленную.
p.s интересно, что я в поисках этого кода перерыл твиттер, гугл, ходил на поклон к Grok, Claude, ChatGPT, но только perplexity.aiсо второго, настойчивого запроса выдал явки и пароли)
🎤Ссылки на утро — второй канал
⏲Устойчивый VPN за звезду
#ToolHacks@cogload#ToolReview@cogload
Кстати, авторы ТГ каналов! Зацените интерфейсный сахар: на компе если выделить текст поста и нажать «редактировать» он сразу поставит курсор в нужном месте и в том же месте выделит кусок!
#ToolHacks@cogload#telegram@cogload
Платный поиск по содержанию всего телеграма
В новом обновлении телеги можно искать по ключевым словам во всех существующих публичных каналахтелеграма, даже в тех на которые не подписаны
Владельцам премиум аккаунта доступно 10 поисков в день, потом просят 10 звезд за каждый новый поиск 🗿
Находится во вкладке Posts если нажать на строку поиска.
Кстати там по умолчанию без набранного запроса были ссылки на канал Дурова и новости телеграма, но на следующий день их убрали — теперь просто иконка лупы)
😳
Работает неплохо, но я не смог сделать поиск с точным совпадением фразы, вроде "API ключи" — он сам решает в каком контексте искать.
Сортирует от самых свежих постов по времени, но по ощущениям еще как-то учитывает геопозицию, потому что сначала были ответы которые географически ближе.
Лимит на запросы в день видимо потому что нагрузка на сервера очень сильная.
Но как доп фишка для владельцев премиума вроде норм.
Раньше чтобы это сделать приходилось ходить в TgStat и там выдача была очень сомнительная по качеству.
Например я сейчас проверил запрос "ComfyUI nunchaku":
TgStat выдал мне два результата, и чтобы посмотреть второй (под спойлером) мне предложили заплатить подписку за 2940 в месяц 🌚
Поиск телеги же выдал 14 нормальных результатов.
На один канальчик даже подписался.
Что приятно, если вбивать те же слова, он не просит «потратить» платный поиск снова — просто показывает результат который уже был. (работает в течении 24 часов)
Видимо где-то сохраняют, чтобы попусту не крутить запросы. На следующий день этот же запрос будет платным, но информация тоже свежая по всем каналам
🎤Ссылки на утро — второй канал
⏲YouTube за звезду (VPN за 2 ₽)
#telegram@cogload#toolhacks@cogload
Раздельный поиск в Telegram
В свежей версии Telegram добавили возможность раздельно искать по трем категориям: личным чатам, группам, и каналам!
Очень не хватало!
Буквально ждал обещанноготри года (и четыре месяца). Ура!
🎉
Остался последний шаг — возможность искать внутри папки.
Но к этому времени мы наверное достигнем AGI и такие мелочи бренного бытия мне будут уже не важны :)
Работает в свежей версии Android/iOS только на мобиле, в десктоп пока не завезли
На десктопы тоже довезли!
🎤Ссылки на утро — второй канал
⏲Устойчивый VPN за звезду
#ToolHacks@cogload#Telegram@cogload
Вот пример мощи Affinity, особенно для графдизов: рисую в режиме вектора стрелку, редактирую её как в иллюстраторе, потом по F2 переключаюсь в растровый «режим фотошопа» и на этот вектор кидаю растровую маску.
Быстрыми жестами масштабирую размер кисти и хоткеем переключаюсь между скрытием и проявлением, чтобы детально подогнать маску под объект.
Потом возвращаюсь обратно в «иллюстратор» и жестом масштабирую весь объект под маской.
Еще обратите внимание как на 00:31 он в реальном времени подсвечивает результат действия, прежде чем я его совершил! Работает и с другими эффектами и фильтрам за счет ускорения на видеокарте. Фотошоп по-моему до сих пор так не умеет!
Ну и там же, из любого режима можно открыть полноценную панель текста как в индизайне с колонками, обтеканием текста, стилями, лигатурами, колонтитулами, табличными отступами и всем остальным типографско-издательским сахаром. Даже data merge есть!
🎤Ссылки на утро — второй канал
⏲YouTube за звезду (VPN)
#ToolHacks@cogload#Affinity@cogload
А еще в Affinity 2.6.0 добавили выделение объектов с помощью нейронки (работает гораздо быстрее если есть видеокарта)
Они единственные на моей памяти за долгое время, кто удержался и не назвал фичу «AI выделение».
Просто скромно расположили в настройках во вкладе Machine Learning две кнопки на скачивание моделей:
«Сегментация» 290мб — для выделения по наведению мышью (и прямоугольным выделением)
«Заметность» 72 мб — для выделения ключевого объекта в сцене (работает гораздо хуже)
В общем, долгожданный Mega Chad move!
Вы все еще кипятите? платите подписку? Может ну его?
#affinity@cogload#toolhacks@coglaod
Режим быстрого трансформирования маски в Affinity Photo
Сейчас много работаю с фотомонтажом для карточек товаров, и попутно открываю маленькие прелести Affinity, Видно что разработчики сами пользуется продуктом.
Для любого растрового выделения можно двумя хотекеями: [Q] → [V] активировать крутилки, как у примитивов. Потом нужным образом подогнать, и так же быстро переключиться обратно. Очень удобно!
Если еще не пробовали Affinity, напоминаю что у них теперь есть 6-месячный беслпатный триал
🎤Ссылки на утро — второй канал
⏲YouTube за звезду (VPN за 2₽)
#ToolHacks#Affinity
Мелочь а приятно - в Affinity есть режим «сбалансированных» пунктирных линий. Он старается поставить черточку на место поворота кривой — чтобы уголки всегда были прорисованы и не терялся силуэт формы
#ToolHacks#Affinity