Попробовали на работе предметно-ориентированное проектирование (Domain Driven Design). Это такой способ построения архитектуры, когда ты (чаще всего с помощью системы типов и ООП) описываешь физическую суть вещей, которые представлены в твоей программе.
Например, если в программе есть объект "Книга", то её нужно снабдить свойствами, которые бывают у книг в реальности: число страниц, автор, язык, тип обложки и т.д. При этом данные свойства должны быть такими, чтобы присвоить им нереалистичные значения было нельзя. Допустим, число страниц не может быть отрицательным (и скорее всего в реальном мире не может быть нулём). При попытке установить отрицательное число страниц программа должна выбросить исключение. А совсем в идеальном случае -- не дать этого сделать программисту на уровне статического анализа кода.
Описав все свойства книги, вы снабжаете её операциями, которые над ней можно сделать. Например, из книги можно вырвать страницу, и при этом число страниц уменьшается. Нет такого случая, когда можно вырвать страницу без изменения числа страниц. Вы строго программируете эту зависимость, делаете у книги метод "Вырвать страницу", а он уже уменьшает число. Кстати, свойство "Число страниц" при этом нельзя переназначить в уже созданной книге. Можно только создать книгу, передав в её конструктор (так называется в программировании функция создания объектов) заданное число страниц. Но поменять число страниц можно только специальными методами "Вырвать страницу" и "Вклеить страницу".
С помощью этого подхода вы гарантируете, что ваши объекты всегда находятся в валидном состоянии -- то есть таком, которое возможно в реальной жизни с объектом, представленным программой.
Плюсы подхода очевидны: меньше число ошибок. Код описывает сам себя, и программист, если не лезет внутрь объекта "Книга", вообще не сможет сделать с книгой ничего недопустимого.
Минусы, думаю, тоже понятны: изначально проектировать сложнее, нужно учесть много нюансов, писать тесты. Время разработки изрядно растёт. Изменение требований даётся дороже: например, если каким-то образом в ваш книжный магазин поступят книги со страницами из кевлара, которые невозможно вырвать :)
Но первый проект с этим подходом мы сдали хорошо, без багов. Лучше, чем многие предыдущие.
#dev
Короткая ссылка чтобы создать новый файл
У многих популярных сервисов есть короткие ссылки на домене .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