Сообщество - Web-технологии
Добавить пост

Web-технологии

459 постов 5 763 подписчика

Популярные теги в сообществе:

Используем Teledrive и Telegram в качестве безлимитного облачного хранилища в 2024 году. Настройка за 15 минут

Используем Teledrive и Telegram в качестве безлимитного облачного хранилища в 2024 году. Настройка за 15 минут Linux, Программа, Информационная безопасность, Telegram, Длиннопост

За последние годы, как бы это ни было странно, но моим основным облачным хранилищем стали «Избранные» в Telegram, потому что сервис доступен на всех платформах и сам открыто рассказывает об этой возможности в своих соцсетях. В какой-то момент я столкнулся с проблемой того, что куча файлов в «Избранном» выглядит слишком кучно и разбирать во всем этом неудобно.

Недавно я наткнулся на проект Teledrive, который позволяет сделать из вашего Telegram настоящее облачное хранилище со структурой, папками и возможностью делиться ссылками на загрузку файлов с другими людьми.

В этом материале я расскажу, как установить Teledrive на свой облачный сервер и получить свое безлимитное облачное хранилище за 300 рублей в месяц. И это не кликбейт! Процесс установки займет всего 15 минут.

Создаем базу данных

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

Для удобство создание postgresql я использую бесплатный сервис Neon.

Используем Teledrive и Telegram в качестве безлимитного облачного хранилища в 2024 году. Настройка за 15 минут Linux, Программа, Информационная безопасность, Telegram, Длиннопост

После того как вы зарегестрируетесь в нем, на стартовом экране введите любое название проекта и название базы данных. В списке выбора хранилища выберите Франкфурт — так получение информации из базы данных будет максимально быстрым.

Используем Teledrive и Telegram в качестве безлимитного облачного хранилища в 2024 году. Настройка за 15 минут Linux, Программа, Информационная безопасность, Telegram, Длиннопост

После создание у вас появится окно с ссылкой на базу данных, отобразите скрытые данные и скопируйте ссылку в заметки. Она пригодится позже.

Далее необходимо арендовать облачный сервер. Nwo

Арендуем сервер

Используем Teledrive и Telegram в качестве безлимитного облачного хранилища в 2024 году. Настройка за 15 минут Linux, Программа, Информационная безопасность, Telegram, Длиннопост

Далее необходимо арендовать облачный сервер, на котором мы будем разворачивать Teledrive. Я использую российский хостинг VDSina (реф), так как у них стабильная скорость интернет-порта 1 Гбит/сек и объём трафика 32 ТБ в месяц. Вы можете использовать любой другой хостинг, которым вы пользуетесь.

Файлы, которые вы будете загружать в Teledrive будут храниться на серверах Telegram в вашем аккаунте! Сервер нужен только для работы приложения, на нем никакие файлы храниться не будут.

Главное, чтобы облачный сервер соответствовал следующим характеристикам:

Процессор: 1 ядро

RAM: 2 Гбайт

Хранилище: 50 Гбайт

Локация: Москва

Стоимость: 13 рублей в день (390 рублей в месяц)

Особенно обратите внимание на объем оперативной памяти, её должно быть не меньше 2 Гбайт. На сервере с 1 Гбайт у меня Teledrive не заработал.

Подготовка к установке

Используем Teledrive и Telegram в качестве безлимитного облачного хранилища в 2024 году. Настройка за 15 минут Linux, Программа, Информационная безопасность, Telegram, Длиннопост

После того как вы создали базу данных и арендовали сервер, откройте данные для подключения к серверу из тикета, запустите терминал и поочередно вводите следующие команды:

  1. ssh root@ip-адрес сервера (его можно найти в Поддержка/Тикеты)

  2. Согласитесь с подключением — yes

  3. После введите пароль сервера (его также можно найти в тикете)

  4. apt-get update (обновляем сервер)

  5. apt-get install build-essential (устанавливаем пакеты, необходимые для компиляции программы)

  6. Нажимаем y

  7. git clone https://github.com/vuchaev2015/teledrive (копируем репозиторий Teledrive с исправленным установщиком)

  8. wget https://raw.githubusercontent.com/nvm-sh/nvm/master/install.... (устанавливаем NVM (Node Version Manager)

  9. bash install.sh

  10. source ~/.bashrc

  11. nvm install v18.16.0 (устанавливаем Node.JS версии 18.16.0 через NVM)

  12. npm i -g yarn (устанавливаем Yarn)

  13. sudo apt install postgresql -y (устанавливаем ПО для базы данных)

  14. apt-get install tmux (устанавливаем мультиплексор для фоновой работы Teledrive)

  15. tmux new -s teldr (создаем сессию мультиплексора для фоновой работы Teledrive)

После этого окно терминала должно обновиться, начнется новая сессия tmux, в которой мы будем держать запущенный Teledrive. Теперь приступаем к установке.

Устанавливаем Teledrive

Используем Teledrive и Telegram в качестве безлимитного облачного хранилища в 2024 году. Настройка за 15 минут Linux, Программа, Информационная безопасность, Telegram, Длиннопост

Осталось несколько финальных шагов.

  1. cd teledrive (переходим в папку приложения)

  2. chmod +x ./install.manual.sh

  3. ./install.manual.sh(запускаем установщик)

После у вас появится окно с вводом данных для подключения приложения. Переходим на сайт my.telegram.org и входим под тем аккаунтом.

Используем Teledrive и Telegram в качестве безлимитного облачного хранилища в 2024 году. Настройка за 15 минут Linux, Программа, Информационная безопасность, Telegram, Длиннопост

Переходим в раздел API и копируем из окна следующие данные в терминал. Поля ввода будут появляться друг за другом

  • TG_API_ID: ID приложения

  • TG_API_HASH: хэш-номер

  • ADMIN_USERNAME: имя пользователя Telegram, у которого будут права администратора

  • DATABASE_URL: адрес базы данных из сервиса Neon, который вы должны были сохранить в начале

  • PORT: номер порта

  • REACT_APP_API_URL: адрес, через который вы будете заходить на Teledrive (вводите в формате: http://IP-адрес сервера:номер порта, например, http://123.4.56.7.8:1234)

После ждем 10 минут, пока Teledrive устанавливается. Когда процесс будет завершен появится сообщение «running at (адрес порта)».

Используем Teledrive и Telegram в качестве безлимитного облачного хранилища в 2024 году. Настройка за 15 минут Linux, Программа, Информационная безопасность, Telegram, Длиннопост

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

Объём хранилища не ограничен. Единственное, что максимальный размер одного файла составляет 4 Гбайт для Premium-пользователей и 2 Гбайт для тех, кто не имеет подписки.

Используем Teledrive и Telegram в качестве безлимитного облачного хранилища в 2024 году. Настройка за 15 минут Linux, Программа, Информационная безопасность, Telegram, Длиннопост

Так что бэкап целого компьютер не сохранить, однако я нашел применение Teledrive для сохранения сериалов, чтобы всегда иметь к ним удобный доступ, например в дороге. А также в сохранении документов и фото, рассортированным по папкам.

Учитывая что общая ёмкость не ограничена, за 300 с небольшим рублей в месяц получается приятная альтернатива стандартным облачным хранилищам.

Пользуйтесь! Если есть вопросы — пишите в комментарии.

Взял из своего блога на IXBT LIVE.

Показать полностью 8

Вышел релиз БД Сокол (SoQoL)

На сайте SQLize.online версия БД Сокол (SoQoL) обновлена до 3.0.1 - все кто следит за развитием проекта могут ознакомиться с новыми функциями добавленными в этой версии.

Вышел релиз БД Сокол (SoQoL) IT, SQL, Песочница, База данных

Снимок экрана с указанием версии БД Сокол

React 19 — useOptimistic

useOptimistic — новый хук, который позволяет отобразить “оптимистичное” состояние. Оно называется “оптимистичным”, потому что мы “оптимистично” надеемся, что наш запрос не свалится с ошибкой и после выполнения запроса состояние будет выглядеть именно так.

React 19 — useOptimistic Кросспостинг, Pikabu Publish Bot, React, Frontend, Текст, YouTube (ссылка), Программирование, Длиннопост


❓Как используется

- В useOptimistic передаётся реальное состояние (cart) и функцию-reducer, для обновления оптимистичного состояния
- Компонент (Cart) использует “оптимистичное” состояние (optimisticCart) для рендера
- Перед выполнением запроса обновляется “оптимистичное” состояние
- Когда запрос завершился, нужно обновить реальное состояние
- Как только реальное состояние обновилось, оптимистичное состояние обновится автоматически, так как оно передано в useOptimistic первым параметром. ⚠️ Поэтому важно следить, чтобы приходило одно и то же состояние.
- Если запрос упал с ошибкой, нужно откатить изменения в оптимистичном состояниb.

ℹ️ Первый вопрос, которым я задался, а в чём отличие от обычного setState, путём экспериментов, вот что удалось найти:

- useOptimistic работает с формами. Работать с обычной кнопкой в Single Page Application мне не удалось, обновление происходило только после завершения запроса
- useOptimistic работает только внутри асинхронного обработчика, что логично. Если убрать async/await, обновление произойдёт только после завершения запроса
- Параметр в useState используется только для инициализации, и игнорируется в последующих рендерах. useOptimistic будет сихронизироваться со значением переданным первым параметром.

🤷‍♂️ Очень мало полезного удалось найти о useOptimistic. Во всех статьях и видео тривиальные примеры, нигде не рассказывается как обрабатывать более сложные ситуации:

- Как обновлять оптимистичное состояние, если запустить несколько запросов одновременно?
- Как использовать useOptimistic в SPA вне форм?

Поэтому пришлось создать пару ишью: раз и два. В любом случае, пока useOptimistic выглядит каким-то низкоуровневым API. Надеюсь скоро появится больше Best Practices по его применению. Если вам есть что добавить — пишите в комментах.

Ещё по теме:

- Frontend First — Ep 179 - React Deep Dive: useOptimistic
- Официальная документация по useOptimistic
- Код из примера тут

https://t.me/cherkashindev/184

Показать полностью 1

Конкурс для мемоделов: с вас мем — с нас приз

Конкурс мемов объявляется открытым!

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

Кто сделал и отправил мемас на конкурс — молодец! Результаты конкурса мы объявим уже 3 мая, поделимся лучшими шутками по мнению жюри и ссылкой на стикерпак в телеграме. Полные правила конкурса.

А пока предлагаем посмотреть видео, из которых мы сделали шаблоны для мемов. В главной роли Валентин Выгодный и «Пакет» от Х5 — сервис для выгодных покупок в «Пятёрочке» и «Перекрёстке».

Реклама ООО «Корпоративный центр ИКС 5», ИНН: 7728632689

React 19 — use(Promise)

use — новый хук, который позволяет считывать данные из промиса и при этом интегрирован с Suspense и ErrorBoundary.

React 19 — use(Promise) Кросспостинг, Pikabu Publish Bot, Frontend, React, Программирование, IT


ℹ️ Основные моменты:

- На этот хук не распространяются правила хуков — его можно использовать внутри циклов и условных операторов.
- Если мы используем хук use(Promise), то где-то в родительском компоненте мы должны положить сам промис (не данные как мы делали раньше) в стейт (useState). Это позволяет избавиться от useEffect’а, который был нужен, чтобы запросить данные при первом рендере.
- Хук интегрирован с Suspense, поэтому пока промис не разрезолвится — будет показан fallback объявленный в ближайшем Suspense.
- Если промис зареджектился, то будет показан fallback объявленный в ближайшем ErrorBoundary

- Песочница тут
- Официальная документация тут

https://t.me/cherkashindev/182

Показать полностью 1

Быстрые комбинации

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

1. Поиск на странице: Используйте комбинацию клавиш «Ctrl+F», чтобы быстро найти нужную информацию на странице. Это сокращает время, потраченное на поиск, и делает работу более продуктивной.

2. Открытие новой вкладки: Нажмите «Ctrl+T», чтобы мгновенно открыть новую вкладку в браузере. Это удобно, если вам нужно быстро переключаться между несколькими страницами или источниками информации.

3. Переход в адресную строку: С помощью комбинации «Ctrl+L» можно мгновенно перейти в адресную строку браузера. Это позволяет быстро вводить новые адреса веб-сайтов или выполнять поиск без необходимости использовать мышь.

Запоминая эти три простых комбинации клавиш, вы сможете значительно увеличить свою производительность за компьютером.

Явное управление ресурсами в TypeScript — using

Явное управление ресурсами в TypeScript — using Кросспостинг, Pikabu Publish Bot, Typescript, Frontend, Текст, Telegram (ссылка), Программирование, IT, Длиннопост

Недавно, когда я рассказывал, как мы пишем тесты, я уже упоминал, что в TypeScript’е появилось новое ключевое слово using. Оно позволяет нам сделать код чище и более линейным, избавившись от try/finally.

Но мы можем использовать using не только, когда открываем файл или подключение к базе данных, иначе его использование ограничилось бы исключительно сервером.

Мне нравится рассматривать using, как Undo/Redo только наоборот, сперва мы выполняем какое-то действие, а в конце отменяем его:
- создали объект, удалили
- показали спиннер и скрыли, когда получили данные

Причем отмена удобно происходит в самом конце функции, даже если мы используем async/await.

Вот простой пример, как можно использовать using, чтобы показывать/скрывать спиннер в React коде.

// обычный код на React
useEffect(() => {
try {
setIsLoading(true);
await await Promise.resolve().then(() => console.log("promise.resolve"));
} finally {
setIsLoading(false);
}
}, [])


// такой же код, с использованием using
useEffect(() => {
using manager = new LoadingManager(setIsLoading);
await await Promise.resolve().then(() => console.log("promise.resolve"));
}, []);

/**
* Класс, который управляет состоянием спиннера
*/
class LoadingManager {
constructor(private setIsLoading: (value: boolean) => any) {
this.setIsLoading(true);
console.log("constructor");
}

[Symbol.dispose]() {
this.setIsLoading(false);
console.log("disposer")
}
}

// В консоли будет выведено в следующем порядке
// constructor
// promise.resolve
// disposer

Код можно открыть в песочнице.

К сожалению, нельзя опустить переменную manager, но это лучше, чем лепить везде try / finally.

Ещё по теме:
- using Declarations and Explicit Resource Management
- Явное управление ресурсами: пробуем новую фичу JavaScript и TypeScript

https://t.me/cherkashindev/164

Показать полностью

Видосик

Угадайте звездного капитана юмористической команды «Сборная Красноярска» по описанию одного из участников

Ну что, потренировались? А теперь пора браться за дело всерьез.

Показать полностью

Требуется помощь веб-разработчиков (сила Пикабу!)

upd^ СПАСИБО , ПОМОГЛИ!!!

Ребятушки- кулцхакеры, есть к вам просьба.

Есть такая приложуха iSki, которая пишет треки. Таких много, но у этой отличие в том что можно добавлять друзей и смотреть их движ, кто где катается.

Но у приложухи есть несколько недостатков, один из них в том что нет экспорта чистого GPS-трека.

Есть только экспорт ссылки по которой его можно посмотреть, пример: https://share.iski.cc/shares/share_iski/tracks/bDMZCqdpzdFyx...

Требуется помощь веб-разработчиков (сила Пикабу!) Веб-разработка, Web-программирование, Парсинг, Хакеры

Вопрос:

1) есть ли данные трека в файлах этой веб-страницы, которые прилетают на комп, или все рисуется на сервере?

2) можете ли вы помочь - подсказать как выцепить эти данные? хотя бы в каком файле или как их посмотреть?

Я лет 20 назад кодил на JS и PHP, но мои знания уже безнадежно устарели....

Показать полностью 1
Отличная работа, все прочитано!