Volond Apps
221 subscribers
216 photos
28 videos
22 files
994 links
Программирование для души и от лени
Добро пожаловать! У нас есть отличное сообщество любителей Excel и VBA, Google Sheet и Google Apps Script, а также всех тех, кто готов работать с этим программным обеспечением. Присоединяйтесь к нам, чтобы задавать и от
Download Telegram
Forwarded from Бэкдор
Верстку больше не учим. Эта тулза поддерживает GPT4o и клепает сайты по любым макетам и скриншотам. Дизайнить и писать код не нужно!

Все просто: делаем скрин, скармливаем нейронке, и она выдает почти полную копию сайта. Вы только гляньте на картинки — не отличить от оригинала.

Пробуем тут.

👍 Бэкдор
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Небольшой пример создания нумерованного списка через Docs API v1 Advanced Service. К сожалению, через штатный класс DocumentApp такого не сделать. Ссылка https://docs.google.com/document/d/12AokCuVrafj3DGMDrHVNXanDthaphxkqEVkYw_Iil5Y/edit?usp=sharing
Forwarded from ServerAdmin.ru
​​🎓 Мне давно скидывали ссылку на небольшой курс по GIT на youtube для начинающих. Там с самых азов даётся инфа для тех, кто с GIT никогда не работал. Только сейчас дошли руки посмотреть. Вроде неплохо сделано, послушал введение. Комментарии хорошие, просмотров много. Весь материал разбит на небольшие ролики по 5-7 минут, где разбирается одна тема. Если вы совсем нулёвый по этой теме, то это для вас:

Базовый курс по Git

Заодно решил подбить всю эту тему с обучением GIT.

▪️ Обзорное видео по GIT от авторского ютуб канала Артема Матяшова - Git. Большой практический выпуск. Автор очень хорошо объясняет. Если прям ничего про GIT не знаете, рекомендую начать с него. Хороший монтаж, подача, оформление. Я почти все его видео с удовольствием смотрел. У него их немного.

🔥Очень прикольная визуальная обучалка по основам GIT - LearnGitBranching. Она поддерживается, регулярно обновляется. Качественно сделана. Есть русский язык.

▪️ Ещё одна игра по обучению GIT - Oh My Git! Она попроще learnGitBranching, но в целом тоже неплохая.

▪️ Бесплатный курс по основам от Слёрм - Git для начинающих.

▪️ Бесплатные курсы по основам GIT на Stepik: Основы работы с Git и Самоучитель по GIT.

▪️ Более продвинутый курс с погружением в нюансы, ориентированный на разработчиков - Git курс от сообщества javascript.ru.

▪️ Бесплатная книга на русском языке - Pro Git book.

В завершении добавлю мотивирующий текст, который я написал ещё 3 года назад здесь на канале, если вы всё ещё сомневаетесь, надо ли вам разбираться с GIT или нет:

Хочу посоветовать всем системным администраторам, кто это еще не сделал, обратить пристальное внимание на git. Сам я давно пользуюсь этой системой контроля версий, но только недавно дошел до того, что стал там хранить практически все текстовые данные. 

Чистил свою тестовую лабу и удалил несколько виртуалок. И только потом вспомнил, что на одной из них были нужные скрипты, на написание которых ушло прилично времени. Все репозитории проверил, нигде не нашел копий. Их просто не было. Пришлось потратить несколько часов на восстановление.

Теперь всегда, прежде чем начать писать какой-то скрипт или более ли менее большой конфиг, создаю репозиторий под это дело и все пушу туда. Я обычно использую облачный gitlab и свой локальный для приватных данных. Gitlab - мое личное предпочтение. Вы можете использовать любой бесплатный сервис. Их сейчас полно развелось. 

Мало того, что это удобный контроль изменений, так еще и мгновенный бэкап всей информации по одной команде. Плюс, можно быстро что-то отредактировать через веб интерфейс. В общем, удобно, рекомендую. Еще и к разработчикам приблизитесь, будете лучше разбираться в их кухне.

С тех пор я неизменно верен себе. Все нужные скрипты, конфиги в обязательном порядке хранятся в репозиториях git, как локально на ноуте, так и на удалённых сервисах.

#обучение #git #подборка
// This formats the date as Greenwich Mean Time in the format
// year-month-dateThour-minute-second.
var formattedDate = Utilities.formatDate(new Date(), "GMT", "yyyy-MM-dd'T'HH:mm:ss'Z'");
Logger.log(formattedDate);
 
/**
* 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 ну и этим можно делиться с людьми просто ссылкой, лимит вроде как раз на кол-во юзеров. Накидал что то удобное, расшарил, нужно обновить - обновил у всех