Volond Apps
221 subscribers
216 photos
28 videos
22 files
994 links
Программирование для души и от лени
Добро пожаловать! У нас есть отличное сообщество любителей Excel и VBA, Google Sheet и Google Apps Script, а также всех тех, кто готов работать с этим программным обеспечением. Присоединяйтесь к нам, чтобы задавать и от
Download Telegram
 
/**
* Converts a Firestore Timestamp to a native JavaScript Date object.
* Перевод из формата Firebase Timestamp в JavaScript Date
* @param {Timestamp} timestamp Firestore Timestamp to convert
* @return {Date} native JavaScript Date object
* const date = firebaseTimestampToDate({ _seconds: 1725021788, _nanoseconds: 105817000 });
*
*/
function firebaseTimestampToDate(timestamp) {
// Создаем новый объект Date, используя общее количество миллисекунд
const date = new Date(
(timestamp._seconds * 1000) + (timestamp._nanoseconds / 1000000)
);

return date;
}
Создание своих сниппетов в VS Code
Урок
Генератор сниппетов »
#VSCode
ТАЙМ КОДЫ:

00:00 Вступление
00:18 Что такое сниппеты
01:23 Создание первого сниппета console.log()
04:16 Создание сниппета background-img
06:33 Генератор сниппетов
07:49 Scope для сниппета
08:05 Позиция курсора
08:37 Тестирование сниппета
09:34 Идеи для сниппетов
Volond Apps pinned «https://docs.google.com/spreadsheets/d/1Lk6OClOPA8p94fspQrs8-M-W080tb244U-fWGqvnApk/edit?gid=253009584#gid=253009584»
const handleCardClick = (e: React.MouseEvent) => {
const card = e.currentTarget;
const rect = card.getBoundingClientRect();
const x = e.clientX - rect.left - rect.width / 2;
const y = e.clientY - rect.top - rect.height / 2;
card.style.transform = perspective(1000px) rotateX(${-y / 10}deg) rotateY(${x / 10}deg);
setTimeout(() => {
card.style.transform = '';
}, 100);

setPoints(points + pointsToAdd); setClicks([...clicks, { id: Date.now(), x: e.pageX, y: e.pageY }]);
};

Обработчик события клика:

const handleCardClick = (e: React.MouseEvent<HTMLDivElement>) => { ... } ```
— это функция, которая принимает событие клика как аргумент.



Получение элемента карточки:

```const card = e.currentTarget;```

— здесь currentTarget указывает на элемент, на который было совершено нажатие, т.е. на карточку.



Получение размеров и позиции карточки:

const rect = card.getBoundingClientRect(); 

— этот метод возвращает размеры и положение карточки относительно видимой области экрана.



Вычисление смещения клика:

const x = e.clientX - rect.left - rect.width / 2; 

— вычисляет смещение по оси X относительно центра карточки.
const y = e.clientY - rect.top - rect.height / 2; 

— вычисляет смещение по оси Y относительно центра карточки.



Применение 3D-трансформации:

card.style.transform = perspective(1000px) rotateX(−y/10deg)rotateY({x / 10}deg); ```— здесь устанавливается CSS-трансформация, создающая эффект поворота карточки по осям X и Y в зависимости от положения курсора мыши.



Сброс трансформации:

```setTimeout(() => { card.style.transform = ''; }, 100); ```— через 100 миллисекунд трансформация сбрасывается, возвращая карточку в исходное положение.



Обновление очков и кликов:

```setPoints(points + pointsToAdd);

— обновляет состояние очков, добавляя к текущему значению points значение pointsToAdd.
```setClicks([...clicks, { id: Date.now(), x: e.pageX, y: e.pageY }]);```— добавляет новую запись о клике в массив clicks, содержащую уникальный идентификатор (время нажатия) и координаты клика.



В итоге, эта функция создает интерактивный эффект на карточке при клике, а также обновляет состояние приложения, связанное с очками и кликами
Отсутствие результата тоже результат
Точнее НУ ОЧЕНЬ МЕДЛЕННЫЙ....
XML_to_JSON

/* Source: https://gist.github.com/erickoledadevrel/6b1e9e2796e3c21f669f */
/**
* Converts an XML string to a JSON object, using logic similar to the
* sunset method Xml.parse().
* @param {string} xml The XML to parse.
* @returns {Object} The parsed XML.
*/
function XML_to_JSON(xml) {
var doc = XmlService.parse(xml);
var result = {};
var root = doc.getRootElement();
result[root.getName()] = elementToJSON(root);
return result;
}

/**
* Converts an XmlService element to a JSON object, using logic similar to
* the sunset method Xml.parse().
* @param {XmlService.Element} element The element to parse.
* @returns {Object} The parsed element.
*/
function elementToJSON(element) {
var result = {};
// Attributes.
element.getAttributes().forEach(function (attribute) {

result[attribute.getName()] = attribute.getValue();
});
// Child elements.
element.getChildren().forEach(function (child) {
var key = child.getName();
var value = elementToJSON(child);
if (result[key]) {
if (!(result[key] instanceof Array)) {
result[key] = [result[key]];
}
result[key].push(value);
} else {
result[key] = value;
}
});
// Text content.
if (element.getText()) {
result['Text'] = element.getText();
}
return result;
}
Нумерация строк формулой
Иногда нужно пронумеровать строки формулой что бы при сортировке отображалось именно в какой строке находиться значения

=Let(title;"Строка";if(CountA(A2:A)>0;{title;arrayformula(Row(indirect("A2:A"&CountA(A1:A))))};title))
Forwarded from Дмитрий
Ну и я тогда поделюсь) когда то мне захотелось сделать интерфейс, но я не шарю. Нашел openasapp.net
Суть простая: делаешь таблицу на формулах, например подсчет ЗП или KPI или подобный "специфичный калькулятор", заливаешь в платформу и в UI конструкторе делаешь кнопки, ползунки и пр. ссылаясь на ячейки. Работает бесплатно до какого то лимита уже не помню какого. В маркете скачиваешь универсальное приложение, которое то ли облачно то ли скриптово делает из него то что сделал ты в онлайн редакторе. Эта тема была задолго до аппшита, Апшит я так и не понял честно говоря, а в этой штуке разобрался когда то.
ps ну и этим можно делиться с людьми просто ссылкой, лимит вроде как раз на кол-во юзеров. Накидал что то удобное, расшарил, нужно обновить - обновил у всех
Latex d Таблицах
Forwarded from volond
 C
=image("https://latex.codecogs.com/svg.image?1+sin^2(x)")
Библиотека GenAIApp разработана для создания, управления и взаимодействия с чат-ботами на базе ИИ с использованием API Gemini и OpenAI (насколько я понимаю, Yandex GPT туда прикрутить не проблема). Библиотека предоставляет такие функции, как текстовый разговор, просмотр веб-страниц, анализ изображений и многое другое, позволяя вам создавать универсальные приложения чата на основе ИИ, которые могут интегрироваться с различными функциями и внешними источниками данных.

Еще раз, это обертка над API всяких ИИ, которая позволяет в универсальном виде управлять диалогами и решать определенные задачи

https://github.com/scriptit-fr/GenAIApp
Forwarded from volond
ппп
Forwarded from Alexander
Только если вдруг будете всё-таки подключать будьте аккуратны

скрипт подключенный к gcp работает неделю и потом его надо переавторизовывать

Вот одно из решений
https://docs.google.com/document/d/13eVgMqjGJj8oCIG4qozmAC0-jStOqdx2rfHjIwAbIzA/edit?usp=sharing