Comments 33
Общие папки между ВМ и хостом существуют сто лет в обед
Общий буфер обмена между ВМ и хостом также существует since forever
HTTP-серверы и краулеры, которые смотрят на содержимое директорий и что-то делают — аналогично. На Github такого — вагон с тележкой.
Я так и не понял, зачем нужен Телепорт. Вы точно не ломитесь в открытую дверь?
Видите ли, жареному мясу и лепешкам тоже «сто лет в обед» но стоило положить одно внутрь другого и получилась шаурма — очень известное блюдо. А кто‑то разрезал лепешку на две части и положил внутрь мясо в виде котлеты — появился бургер, тоже отдельное и очень известное блюдо.
Подходить к софту, который реализует известный пользовательский функционал с позиции «уже давно есть» все же неправильно, не находите?
Если оно давно есть, к нему все привыкли и оно отлично работает, то зачем его менять на нечто другое?
Причём использование вашего приложения упирается ровно в туже стену, что и любой другой софт - его надо скачать и установить/запустить. Тоесть выгоды нет вообще никакой, просто ещё одна программа для реализации того, что давно реализовано сотней разных способов в тысяче программ.
Потому что а) то что "давно есть и все привыкли" очень сильно сбоит и все хреновей работает б) времена меняются и требуют новых подходов - этого достаточно?
Что сбоит и "всё хуже работает"? Такое впечатление, что вы говорите только про одну конкретную софтину, в то время, когда существует сотни (если не сотни тысяч) аналогичных утилит, от OpenSource с крайне ограниченным функционалом, до всяких монстров от именитых фирм за овердофига денег.
Ваш подход не нов и не привносит ничего нового. Он не облегчает привычные действия. Это просто "ещё одна реализация" того, что уже есть.
Ещё одно клиент-серверное приложение с крайне ограниченным (и весьма сомнительным) функционалом. Тотже SyncThing позволяет обмениваться файлами вообще без серверов даже через Nat. Добавляем к нему программу-скриншотилку с функцией создания текстовых файлов в синхронизируемой папке, с содержимым из буфера - вот вам и обмен буфером. Ещё и скриншотами делиться можно).
Где-то видел клиент OwnCloud, который, помимо обмена файлами с сервером, ещё и позволял делать заметки - тот самый обмен буфером, доступный тем, у кого есть права для чтения ваших заметок).
Кстати, разделение "приёма" и "отправки" на отдельные папки - крайне неудобно. Лучше делать вполне привычную "общую папку", файлы внутри которой просто помечать дополнительным значком, по которому можно понять, какие файлы отправляются, а какие принимаются (а какие ждут очереди или имеют ошибки). Благов в Windows это очень легко реализовать (Примерно также, как TurtoiseGit помечает изменённые файлы в локальном репозитории).
Скажите а вы сами всем приведенным софтом пользуетесь? Или просто нашли в поисковике?
SyncThing - постоянно. Синхроню фотки и видосики с телефона с файлопомойкой дома.
Ну и сайт на собственном домене для случаев, когда надо получить доступ к своим файлам откуда угодно и без стороннего софта (есть у меня в профиле - можете глянуть публичную часть. Писалось лет 7 назад за пару вечеров. С тех пор практически не трогал, т.к. нужный мне функционал есть и его мне достаточно).
Синхроню фотки и видосики
Вам точно нужно объяснять разницу между синхронизацией и просто передачей?
надо получить доступ к своим файлам откуда угодно и без стороннего софта
Раз за вас и вашу разработку, но это не та задача, которую решает наша Телепорта.
У нас нет задачи «получить доступ к своим файлам откуда угодно», у нас есть задача передать эти файлы, находясь в этом вашем «откуда угодно» на другой компьютер, который обычно находится в теплом офисе.
Это совершенно другое действие.
Вам точно нужно объяснять разницу между синхронизацией и просто передачей?
Вам объяснить, что такое "однонаправленная синхронизация"?
у нас есть задача передать эти файлы, находясь в этом вашем «откуда угодно» на другой компьютер, который обычно находится в теплом офисе.
Сотни разных файлообменников вам в помощь. В том числе и такие, которые работают через браузер и не требуют установки приложения.
Опять-же SyncThing и подобные тулзы, способные работать без сервера и обеспечивающие шифрование передаваемой информации.
Ссылку на файл (или адрес сервера/ссылку на клиент в вашем случае) вам всё равно придётся передавать второму человеку или устно или через месенджеры. Тоесть делать ровно теже действия, что делают сотни других програм. Где тут новый опыт или облегчение действия - я не понимаю совершенно.
Кстати, я немного не понял - ваша программа требует публичный IP/Port для работы? Может работать за NAT?
Вам объяснить, что такое "однонаправленная синхронизация"?
Да если нетрудно, потому как я слабо представляю какое это имеет отношение к прямой передаче разнородных файлов.
Но если зайти немного дальше - я не вижу никакого смысла в синхронизации файлов как таковой. Зачем? Для чего вам иметь два одинаковых файла на разных компьютерах?
К бекапам это имеет очень слабое отношение если что.
Опять-же SyncThing и подобные тулзы, способные работать без сервера
Нет, не могут. Даже если обратное написано на сайте и в документации, даже если это работает лично у вас - в общем случае это не работает.
Ссылку на файл
Есть существенная разница между передачей деталей передаваемого файла каждый раз и настройки подключения один раз, не находите?
Но я честно говоря так и не понял ваших претензий: не попробовав наш проект в работе, вы сразу решили обвинить нас во всех смертных грехах и поучить жизни?
Или вы представитель компании, стоящей за разработкой SyncThing?
В чем смысл такого негатива?
Зачем? Для чего вам иметь два одинаковых файла на разных компьютерах?
Строго говоря, в вашем случае тоже будут два одинаковых файла на разных компьютерах, пусть и на долю секунды (пока клиент не подтвердит получение, только после этого исходный файл будет удалён).
Тоесть термины разные, но суть одна. В моём случае файл не удалиться автоматически - его надо будет удалить вручную, когда он перестанет быть нужен. Хотя в некоторых подобных программах для "синхронизации" есть такая волшебная галочка, как "оставлять исходный файл". Если её отключить - будет ровно тотже функционал, что вы реализовали в своём приложении - передача файла с одного компьютера на другой.
Нет, не могут. Даже если обратное написано на сайте и в документации, даже если это работает лично у вас - в общем случае это не работает.
Пожалуйста, почитайте внимательно, как работает SyncThing и Torrent'ы в частности (на чём он и основанн). Что такое "поиск локальных пиров" (соседних компьютеров в локальной сети) и DHT. Да, там есть возможность работы через сервер-анонсер, но оно может работать и без него. Если не ошибаюсь, есть даже возможность прямого подключения по IP. Каждый клиент одновременно может являться и сервером. Тоже, к слову, давно известные фишки децентрализованной сети.
Есть существенная разница между передачей деталей передаваемого файла каждый раз и настройки подключения один раз, не находите?
Один раз настроил папку и дал на неё ссылку. Всё.
Отдельно можно настроить права. Тоже один раз.
Дальше делиться только ссылкой на папку.
Есть возможность "отключить" ранее подключенных клиентов или забанить их (Чтобы посторонние не могли скачать новые файлы, которые расшарены не для них).
В чем смысл такого негатива?
Это не негатив, это вполне обоснованная критика, а также попытка понять, зачем вы изобрели велосипед?
Syncthing тут исключительно ради примера, близкого по функционалу и знакомого лично мне (У него, к слову, тоже есть десяток аналогов - могу перечислить. Тоже обвините в рекламе?)
Из статьи я вычитал ровно две "фишки" - обмен файлами и буфером, причём не самым удобным способом и без очевидных преимуществ по сравнению с другими подобными программами.
А единственная причина, почему вы сделали свою реализацию программы для этих примитивных действий - это якобы нестабильность альтернативного софта.
Поправьте меня, если я не прав, но именно такой вывод можно сделать из вашей статьи (Первый коммент под статьёй тоже делает подобные выводы)
Тоесть термины разные, но суть одна
Принцип разный, не термины.
Еще из папки отправки файлы удаляются сразу как их принимает релей, когда именно их получит конечный портал отправитель не знает и знать не должен.
Повторяю: синхронизация это очень сильно другая задача, которую мы не решаем силами этой утилиты.
как работает SyncThing и Torrent'ы в частности
Торренты блокируются на уровне протокола даже в сетях общего пользования и тем более в любых корпоративных.
Предлагать в 21м веке решение для такой задачи, основанное на торрентах или любом броадкасте - признак как минимум не владения текущим положением вещей.
Говорю как человек, который своими руками удалял работу с торрентами из второй версии Телепорты.
а также попытка понять
Попробуйте использовать — потом обсудим. Без этого делать какие‑то умозрительные выводы — пустое.
Шаверма же! ;)
Не работает ваша технология запуска байткода из .cmd:
d:\share>teleporta -relay
d:\share>rem(){ :;};rem '
JRE not found in PATH, trying to download..
C:\Windows\System32\curl.exe
C:\Windows\System32\tar.exe
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 59.1M 100 59.1M 0 0 9720k 0 0:00:06 0:00:06 --:--:-- 11.2M
Using JRE from C:\Users\User\.jre\jre\bin\java.exe
d:\share>teleporta -relay
d:\share>rem(){ :;};rem '
Using JRE from C:\Users\User\.jre\jre\bin\java.exe
d:\share>
Простите за офтоп, но сколько рук у девушки на рабочем столе?
Каким файлообменником ты пользуешься? )))
Программа полезная. Мобильная версия планируется?
Тут все непросто )
Не стал писать про это на Хабре (есть в статье в блоге, даже со скриншотами) - существует более продвинутая закрытая версия Телепорты, которую мы обкатываем с несколькими клиентами. Там более серьезная криптография, куча дополнительной защиты и в том числе мобильная версия.
Но с ней тоже все не так просто, поскольку нам удалось.. совместить мобильное и обычное приложение в одном, поэтому например релей отдает для мобильных клиентов .apk в котором он сам и этот же .apk является запускаемым приложением на десктопе.
Думаю не удивлю сказав что в официальный магазин такое не выложить и в паблик тоже, поскольку сборка такой дичи потребовала модификации средств разработки для Андроида.
Весной будет статья про эту технологию, благо она не очень секретная, но самого клиента для широкого круга лиц не будет еще долго, это точно.
А как насчет airdrop если люди рядом (ну, и у всех яблоки) - тоже проще некуда
Отличный вопрос и одна из причин по которой Телепорта работает у одного из наших клиентов - как раз яблочники попросили, рассказав про AirDrop и как он их достал ))
Вот официальная инструкция по включению, 10 шагов включая требующие админские полномочия - все это нужно будет повторить на каждой машине, которая будет использовать AirDrop.
Плюс нестабильность самого протокола ( вышел из офиса и привет), плюс необходимость подтверждения получения каждого файла.
Наш же проект стремится стать эдаким "кирпичем" в мире ПО, который работает всегда и везде и не требует никаких лишних действий.
Подтверждение каждого файла? 10 шагов на включение? Это вот что-то новое для меня. Выбрал пачку файлов - и все полетело. По поводу того что вышел из офиса и так далее - ну, суть то когда рядом все - я это специально изначально указал
Полагаю у вас просто все это заранее настроено, поэтому выглядит простым.
вышел из офиса и так далее - ну, суть то когда рядом все
Кто-то работает из дома, кто-то в разъездах по городам занимается продажами, даже из сидящих в офисе кто-то уходит домой по-раньше, кто-то сидит допоздна - стандартные 8 часов строго с 9 до 5 ныне редкость.
Говорю же - мы перепробовали множество вариантов решения этой проблемы, в том числе делали аналог AirDrop и отказались в итоге. Делали даже комбинирование локальной и удаленной работы - когда рядом то по сети, когда удаленно - через релей, тоже отказались из-за непредсказуемой работы.
Раньше пользовался 🔍 —— забыл название, работало поверх открытых нод tailscale в том числе и в локальной сети работало отлично
Сейчас юзаю 🔍 https://github.com/schollz/croc удобная вещь
Локально юзаю 🔍localsend, bittorent, легче всего когда у тебя много сетей и можешь торрент пустить по кругу локальной сети, её так же через интернет удобно юзать
Вещь в статье прикольная, простая, надеюсь найдет свою аудиторию
Я пользуюсь просто `cd ~/Files && python -m http.server 8000`
Полезная штука. Существующие действительно делятся на неработающие, небезопасные и неудобные среднему юзеру.
Вы не пробовали libp2p для коннекта машин? В хорошем случае он устанавливает прямое соединение, а значит высокую скорость (через webrtc, socket, tcp, udp), а в плохом работает через аналогичную вашей схеме с relay. Только между клиентом и relay опять же может быть какой угодно транспорт.
Спасибо за интерес, вот тут выложили план работ на 2025й год - это все по итогам фидбеков от пользователей.
Проект можно сказать "зашел", но пока еще непонятно насколько глубоко )
Вы не пробовали libp2p для коннекта машин
Нет, даже версии на Golang и C++ старались делать максимально без внешних библиотек - тк Телепорта это прикладная утилита по типу "включил и работает" а не коммерческий проект, поэтому любой косяк или смена направления в апстриме ключевой библиотеки будет нести нам дополнительные затраты на поддержку.
Что касается протокола, то нам нужно было в первую очередь максимально широко поддерживаемое и надежное решение, чтобы работало везде и не вызывало вопросов.
На 2024й год все хитрые планы вроде:
он устанавливает прямое соединение, а значит высокую скорость (через webrtc, socket, tcp, udp), а в плохом работает через аналогичную вашей схеме
стабильно обламывает то РКН, то его зарубежные аналоги, то корпоративный IDS.
Да, вы получите скорость по UDP, минут на 5, затем ваш трафик сочтут подозрительным и придет шейпер.
Шейпить HTTP в лоб нельзя тк это вызовет вой пользователей "тормозит интернет".
Проект «Телепорта»