Анимированный ушифратор V2.0: В десятки и сотни раз меньше размер файлов, снятие ограничения на длину шифра

+246
в блоге IT Pony!
ушифратор.рф
(Раньше бы шифр с такой длиной весил порядка 100МБ) А еще теперь можно просто навести мышку...

678 комментариев

svg какой-то, но не привычный и добрый gif
x(
Ну и чем же гиф лучше?)
Зачем Дейбрекер убрал?
Немного непонятно, но… то есть, ты смог преодолеть все те трудности перевода флеш-анимации в svg, о которых писал в предыдущем обсуждении? Тогда казалось, что это просто невозможно. Как же?
А, нашел )
То-то я увеличиваю свгшку эту, надеясь увидеть плавный вектор, а вижу пиксели. Потому что пиксели и есть, там битмап )
это не совсем вектор. точнее, это не вектор СОВСЕМ. Тут немного другая фишка — знаешь что такое диапроектор?)
А «не зависит от длины сообщения» потому что ты хранишь только картинки-алфавит, а потом только показываешь их в правильном порядке?
Ты изобрел mod-музыку )
Ты изобрел mod-музыку

Это что?
То, что играет в кейгенах )

Давным-давно компьютерная музыка была в MIDI. Но формат MIDI хранил только команды для синтезатора, который будет ее играть, а не сами звуки. Из чего следовала пара выводов: без синтезатора пользователь ничего не услышит, на разных синтезаторах играть будет по-разному. И тут кому-то в голову пришла гениальная мысль запихнуть в файл не только команды, но и звуковые семплы. Файл таким образом, конечно, увеличивался, но зато игрался без необходимости хранить на машине пользователя семплы какого-либо синтезатора и звучал везде одинаково — потому что принес звуки с собой. Кроме того, теперь авторы могли выходить за пределы возможностей синтезаторов, семплом мог быть хоть лай собаки, больше не нужно рассчитывать на то, что у пользователя на машине он будет.

В общем, mod — это промежуточное звено между midi (чистыми командами) и pcm (чистой записью волны). Ну pcm-то и так был на момент описываемых событий, просто он был несжатым, а пишущих сидюков еще не было, чтобы в кустарных условиях писать большие оптические диски, куда бы он влазил. Вот игроделы и извращались с mod. Может были и другие причины… В общем, mod-музыка в играх 90-х, но до появления 95-й винды поиграть успела. А потом пришел mp3 и вытеснил всё на свете, теперь настоящее аудио занимает в 10 раз меньше места, больше не нужны никакие синтезаторы…
Давным-давно компьютерная музыка была в MIDI
Слыыыш, MIDI жив, его музыканты используют.
семплом мог быть хоть лай собаки
Как раз лай в GS есть :P
Может были и другие причины…
Аудиокодеков толком не было, готовые разработки к середине 90-х и попёрли только: Cook, MPEG, Vorbis… Так что «сжимали» вручную в трекерах. На модархиве можно найти всякую дичь, вплоть до собранной из сэмплов игры на электрогитаре и даже попыток воспроизвести всякую попсу. Кстати, мне не попадалось кодеков, которые реализуют эту идею автоматизированно, работая с целым файлом и дедуплицируя похожие сэмплы — их ведь дохрена зачастую, можно здорово ужать размер, хоть кодирование и долгим будет и поточность утратится.
теперь настоящее аудио занимает в 10 раз меньше места
И булькает от артефактов сжатия, ага. Особенно древние оцифровки, со времён, когда MP3-фанатики визжали, что 128 kbps для CD-качества хватит всем — современные кодеки-то с таким битрейтом могут приличный звук выдать, но вот конкретно MP3 явственно булькает, особенно на электронщине — ему никак не меньше 160 подавай, а приличные люди меньше 320 или VBR не делают, если вообще связываются с MP3.
Ну да, midi остался в своей нише — записать то, что наиграли на синтезаторе и передать другому. А люди слушают мпз ) Ладно, все не так плохо, на ютюбе люди слушают опус, хоть и не догадываются. Правда чаще всего это опус из мпз…

у меня в винде максимум ганшоты )

Ну, были же аудиодиски с pcm с 80-го? Можно было записать на компакт-диск игру в 5 мб, а остальное место диска заполнить аудиодорожками. Вроде у дюны-2 так было в cd-релизе. Или у дюны-1? У дюны-1 даже видео туда умудрились засунуть. Так что, скажем так в ААА-проектах того времени мог быть чистый звук с диска. (Хотя-бы теоретически, я подробно не гуглил сейчас.)

Булькает, но зато это больше не миди, теперь можно запилить полноценную музыку и озвучку всех персонажей.
у меня в винде максимум ганшоты )
Так до 127 — это GM, GS ещё одним байтом расширен. Причём заполнен весьма разрежённо.
Можно было записать на компакт-диск игру в 5 мб, а остальное место диска заполнить аудиодорожками
И сколько минут бы она грузилась? А кэшировать их в оперативке потом, которой кот наплакал, или перед каждым событием шарпать диском, чтобы он вскорости разлетелся, как от StarForce? Тогда на дисковой и оперативной памяти экономили больше, чем на мощности процессоров, поэтому совали сжатие во все поля, в том числе процедурное всякое. Сейчас-то проще поднять гигов 50 с SSD, конечно, чем что-то распаковывать.
зато это больше не миди
Будто что хорошее. MIDI — опенсорс, звукозаписи — клозедсорс.
и озвучку всех персонажей
Ты мне сейчас упоротую идею подкинуше. Есть реализация «говорящего» рояля на FFT — робот жмёт кучу клавиш кряду и аппроксимирует голос. Надо попробовать (а впрочем, уже наверняка тоже готовое есть) с MIDI так сделать, 15 каналов должно хватить для чего-то разборчивого.

Кстати, на Нокиях и, возможно, ещё где-то, поддерживается XMF — MIDI с сэмплами, то есть почти трекерщина, по сути. Жаль, оно не взлетело особо.
GM, GS
Я не знаю этих аббревиатур, поэтому ответил то, что знаю )

Мм… значит в тех cd-изданиях был просто отдельный диск с музыкой. Ну, игра устанавливалась на жесткий диск и левелы грузились с него. А музыку играем с cd. Например.

В миди голос не записать. А люди любят говорить и петь )

Да, слыхал у того парня.
Чем это открывать?
Мобильником. Либо в Nokia Audio Suite, если получится его найти и крякнуть — честно активировать точно не выйдет, Forum Nokia мёртв давно.
Как же ухитрялись играть музыку и воспроизводить речь с помощью писи-скрипера, на компьютерах не оснащённых звуковой картой?

Мой 286ой вполне мог ругаться матом, играть ламбаду и битлов вообще без звуковухи
Также, как и со звуковой картой ) Мы тут не про способы воспроизведения, а про форматы записи. «Ругаться матом» — это «звуковые волны записали и воспроизвели». «Играть ламбаду» — это скорее всего «синтезировали звуки и сыграли». Писи-спикер мог пищать что-то квадратное, треугольное или синусное в зависимости от железной реализации. Управлялся он обычно двумя параметрами — частотой звука и длительностью. «Ругаться матом» это писки очень маленькой длительности очень разных частот. Хоть у меня и не было 286-го, но программа, выводящая «настоящий звук» в писи-спикер попадалась, слушал, прикольно.
Писи-спикер мог пищать что-то квадратное, треугольное или синусное
Квадратное (это ограничения контроллера, который управлялся через 61 порт). Но на больших частотах мембрана не успевала дойти до крайнего положения, поэтому в теории можно было воспроизводить и звуки не одной и той же амплитуды, если работать как ШИМ с частотой куда выше 20 кГц (например на 200 кГц подаещь 10% единицу и 90% ноль, в итоге мембрана отклоняется на условную одну десятую полного отклонения).
Да, слыхал у того парня.
Интересная идея. Записать звук речи, преобразовать его в спектр, дискретизовать по музыкальным тонам и полутонам (фактически с частотой в корень 12 степени из 2), и проиграть на автопианино, используя амплитуду по каждой частоте как силу удара по клавише в конкретный момент. Забавно!
И сколько минут бы она грузилась?
Нисколько, ты вставлял диск в CD-ROM, и он автоматически без участия проца проигрывал музыку с аудиодорожек друг за другом прямо в звуковуху по отдельному кабелю. А последняя дорожка на диска была data, а не audio, и на ней, собственно, и была записана игра. Вроде в кваке ещё первой так было. Разумеется, без вставленного диска музыки не было.
XMF
Емнип, XMF — потомок XM, который в свою очередь потомок MOD.
XMF — потомок XM
Ницё подобного, в XMF внутри RIFF-контейнер с сэмплами и обычным MIDI. А у XM бинарщина велосипедная.
Сорян. Значит, я попутал, получается.
Такую конвертацию видел давно, но работала она так себе.
Ещё одна важная штука mod — реюз дорожек, из-за этого можно писать очень длинные песни маленького размера, причём это не просто «влепить четвёртую дорожку в цикле до бесконечности», а, например, играть их в порядке 1-2-3-1-3-2-1-4-1-4-5-3-2-3-2-3-2-ну и так далее, что позволяло, например, запилить музыку на 30-минутный уровень такую, чтобы после пяти минут не возникало чувства зацикленности, а если уровень идёт фиксированное время (например, в буллетхэллах), то можно было ещё и синхронизировать музыку с активностью на экране.
(Ага, а теперь представьте несжатый wav длиной в 30 минут и сколько дискет на него нужно… =)
играть их в порядке 1-2-3-1-3-2-1-4-1-4-5-3-2-3-2-3-2-

Моя анимация работает по такому же принципу.
Вот потому ты и фактически изобрёл mod-формат =)

(Разумеется, это не что-то плохое, а совсем наоборот.)
О, эти четыре амиговских дорожки с одним инструментом на дорожку! =)
Лол, то же самое хотел сказать =)
Ну сделай же картинки ссылками еще, чтобы владельцы мобильных пк могли их открывать в новой вкладке по тычку и сразу видеть сообщение
Ховер в тачфонных браузерах обычно есть, но неинтуитивен, надо как-то быстро ткнуть, или наоборот — держать.
а изменять размерность примеров в окне выбора? (видно плохо, анимации в хроме не работают или так и должно быть?)
Анимации при выборе и не должны работать — там статичные ПНГшки. Скоро ПНГшек будет всё больше и больше — ты реально хочешь чтобы они все были анимированными при выборе?)
да. я не могу выбрать, когда не вижу.
выпадающее меню для выбора пони, чтобы не грузить всех сразу? избранное в куки?
оффлайн версия?
«Избранное в куки» — ты имеешь в виду, чтобы твоя последняя галочка запоминалась?
последние использованные ~пять, отдельной строчкой, например.
Такое я смогу ввести только после ввода регистрации, а регистрацию я введу после ввода https, а его я введу когда мне наконец-то пришлют необходимый TXT файл.
Куки, не?
Тут регистрация не нужна, это должно быть не user-based, а browser-based, то есть, через document.cookie или localStorage.
Как ты с Табуна-то куки воровать собираешься?
При чём тут куки с табуна? Мы запоминаем в куках последние сделанные на том же сайте ушифры.
Это конкретно для этой плюхи, а для остальных нужна проверка учётки на Табуне. Зачем отдельно от остальных делать?
Мм, в этой ветке я не вижу чего-то ещё.
Уже прямо сейчас работаю над этим, джаваскрипт изучаю ровно 2 дня, поэтому так медленно. вот тут тестовый вариант ушифратор.рф/1234 тут работает пока только фронденд, ушифр сервер тебе не даст.

Надо это как то интегрировать со смайлопаком. Возможно, ещё одним userJS для tamper monkey.

На компе текст видно не только 1 секунду.
Для примера:

Сижу с хрома. Сайт ушифратора открыт в отдельном окне.
Её и до этого не надо было таскать, достаточно ссылку вставить.
Это баг с выводом title в браузере, как я понимаю, а не баг картинки.
Чего баг-то? Тултипы не обязаны показываться бесконечно.
Лел, не думал, что это теперь фичей считается =)
Ожидаемое поведение тултипа — он показывается до тех пор, пока я мышку не увожу с объекта.
Ожидаемое где? На конкретном тулките?
Ожидаемое на любом интерфейсе, снабжённом тултипами.
Ты ещё меню «Пуск» в любом интерфейсе ожидай, ага.
Начнём с того, что даже многие DE под Linux содержат полный аналог меню «Пуск».
Скажем так, я не видел ни одного интерфейса, где бы время показа тултипа было не бесконечно, да ещё и я не могу представить, зачем такое надо.
многие DE под Linux содержат полный аналог меню «Пуск»
Это где такое было-то, кроме Kylix? Даже в самой винде дефолтный Спуск меняется в каждой версии.
я не видел
Всё ясно с тобой.
зачем такое надо
Ну например, активировать что-то наведением, и чтобы тултип при этом не загораживал элемент. Не успевающие дочитать могут просто двигать время от времени курсор.
Это где такое было-то, кроме Kylix?
KDE, Xfce, MATE, LXDE (только то, что вспомнилось).
Всё ясно с тобой.
Что же со мной ясно? Давай, покажи мне, где тултип исчезает спустя некоторое время? (не просто можно так сделать, если хочется, а где это по дефолту и юзеры привыкли, разумеется).
активировать что-то наведением
Убить максимально жестоко тех, кто придумывает такую дичь. Я вообще не могу вообразить, где такое может быть удобно. Просто вообще. До сих пор горит с того мелкософтовского интерфейса, появившегося, кажется, в 98-ой, где наведение меняет выделение. Хорошо, что это можно было отключить, а то вообще бы пришлось бояться мышку по экрану двигать, вдруг что-то не то активируется.
KDE, Xfce, MATE, LXDE (только то, что вспомнилось)
И где там клоны меню «Пуск»? Более того, если его сделать — вангую, мелкомягкие засудят за нарушение копирайта. ЕМНИП, даже в ReactOS меню запуска отличается от виндового.
Давай, покажи мне, где тултип исчезает спустя некоторое время?
Не помню, я уже много лет по ним не лажу.
не просто можно так сделать, если хочется
Так задают-то разработчики программ. Во многих тулкитах время отображения тултипа задаётся аргументом при его вызове. Так что в разных программах по-разному, консистентного поведения нет.
Убить максимально жестоко тех, кто придумывает такую дичь
За что ты не любишь инвалидов, которым тяжело кликать, а то и вовсе глазами управляют?
наведение меняет выделение
Я не про это, я про всякие там выпадающие меню, интерактивные карты и подобное.
И где там клоны меню «Пуск»?
Кнопочки, по нажатию на которые вываливается функциональный аналог меня «Пуск».
Во многих тулкитах время отображения тултипа задаётся аргументом при его вызове.
Я ни разу не встречал, чтобы он исчезал спустя некоторое время. А повидал программ я достаточно много.
За что ты не любишь инвалидов, которым тяжело кликать
Я говорю про дефолтное поведение, а не про узкоспециализированную область.
я про всякие там выпадающие меню, интерактивные карты
Ну это не совершает фактического действия (к тому же, в менюшках, как правило, тултипов нет, там и так текстом написано).
функциональный аналог меня «Пуск»
Под функциональные аналоги можно и всякие простыни иконок подогнать, и даже консоль — делают-то одно и то же, запускают программы. Слишком размытое определение.
Я ни разу не встречал, чтобы он исчезал спустя некоторое время
Повезло.
это не совершает фактического действия
Так речь не о действиях, а тупо об изменении вида элемента и прочих визуальных последствиях при наведении курсора куда-либо. Которые без наведения пропадут, а тултип мешает их полностью рассмотреть.
Под функциональные аналоги можно и всякие простыни иконок подогнать
Они не менее такие же функциональные аналоги, чем тултипы в xfce — аналоги тултипов в винде.
Чепуху какую-то несёшь, приписываешь тултипы то к ОС, то к DE, хотя ни те, ни другие их отображением напрямую не занимаются и не определяют o_O О чём тогда с тобой спорить вообще?
Винда — фактически гибрид ОС, графического сервера и DE. Я говорю именно о той части DE (в том числе входящем в винду, которая задаёт то, как отрисовываются тултипы).
графического сервера и DE
Они вполне себе отдельные — GDI и explorer.exe.
которая задаёт то, как отрисовываются тултипы
Отрисовку задаёт тулкит. А их даже в самой винде дохрена — WinAPI, WinForms, WPF… Браузеры и вовсе многое сами рисуют.
Да. Но давай мы не будем go deeper, когда и так понятно, что я хотел сказать? Так-то я могу начать пояснять за отрисовку графических примитивов на GPU, но мы просто о том, что некая абстракция, нечто рисует тултипы. И нам не важно, какая, нам важно то, что мы их вообще видим.
когда и так понятно, что я хотел сказать?
Нет, потому что ты несёшь бред. В винде нет каких-то глобальных настроек отображения тултипа, они задаются в лучшем случае тулкитом, а в худшем — программой, которая этот тултип дёргает. Если тебе встречалось везде одинаковое поведение — тебе просто повезло :3
Ну, значит, мне просто повезло, ок.
Не знаю насчёт времени, но цвет точно задаётся централизованно (хотя, возможно, прога/тулкит могут его игнорировать, если нет централизованнного API рисования тултипов).
У меня в этом посте не только смайлики лагают, но и гифки тормозят и даже набор текста этого комментария не мгновенный D:
Есть такое.
Нужна ваша конфигурация. УМВР
Firefox. Подозреваю, этого достаточно)
Firefox.
CPU: Ryzen 3 2200G
GPU: Vega 56
И у мя токо прокрутка колёсиком вверх-вниз немного лагает.)
Обнови Firefox, прокрутку гладкой сделали ещё в версии 57 и у меня прокрутка как раз ни капельки не лагает. А вот всё остальное лагает
Та новая она у мя.

Обычно гладкая. Конкретно в этом треде подлагивает.
webrender включен?
У меня схожая конфигурация, но всё гладко и быстро.
Занятная штукенция…
Больше аппаратного ускорения богу аппаратного ускорения!
Екхем.
Был выключен. Как включил, подлагивания пропали. Спасибо.)
Итого мы имеем: Либо APNG, который не требует процессорного времени но много весит. либо ASVG, который требовательный к процессору но весит в 100 раз меньше.
Какой стул лучше?
APNG:
+ЦП
-Трафик
-ОЗУ
ASVG:
-ЦП
+Трафик
+ОЗУ

Вообще, мой мобильник офигевает от APNG, но норм работает с ASVG, так что склоняюсь к последнему.
По моему скромному мнению, ASVG лучше.
Ибо в худшем случае (aka гигантский смайлотред)…
ASVG грузит ЦП в видимой области.
APNG загрузит все смайлы на тонну трафика.
а в невидимой области разве не грузит?
Не рендерит.
По такому принципу работают движки браузеров — по-возможности, то что не нужно не рисовать.
Да и не только они — логично не отображать то чего не увидишь.
И я на практике посмотрел что мой ЦП грузится меньше когда на экране видно меньше asvg.
У меня в куче тредов так, и что? :P А когда LuaKit засран открытыми жрущими процессор вкладками, так вообщеееее. Зато буферизуется отлично, можно пару предложений набрать и свитчнуться на другую программу, пока оно там слайдшоуит. А потом полчаса исправлять опечатки и не прожавшиеся из-за ушатанной клавиатуры символы.
То есть у тебя не только браузеры протухшие, но и сам компьютер тоже?)
Я тебе больше скажу, оно уже на момент покупки (6 лет назад) было ультрабюджеткой :P
Кстати да, подтормаживает куда сильнее предыдущего треда.
Потому что SVG на порядок сильнее жрет процессор, чем APNG. зато его вес не зависит от длины. APNG длиной минуту весит бы 100+МБ, а SVG весит 200КБ всегда.
ПРОБЛЕМА:
В текущем виде асвг сильно грузят процессор
ПРИЧИНА:
очень частая смена кадров
РЕШЕНИЕ:
Совместить в себе технологию apng и asvg. Таким образом размер файлов не изменится, а нагрузка на процессор снизится в 20-30 раз.
Точнее размер файлов тоже уменьшится, потому что переходных точек тоже будет в 20-30 раз меньше.
Меня всегда забавляет такой пафос) Хочешь в сколково?
Меня всегда забавляет такой пафос) Хочешь в сколково?

До меня кто-то комбинировал apng + asvg?
Тебя-нет)
Но анимированные элементы на управляемой подложке в играх везде)
Имеются в виду 2д, даже старый файтинг ис маджик работает по таким же принципам, многослойные элменты, ничто туда не мешает добавлять гиф или апнг
Во флеше тоже писал прелоадеры совмещая гиф, секвенции и скрипты, увы, это старо как мир, но, если работает-чоб нет)
Хошь засинкать смену кадров в SVG и вложенном в него APNG? Не взлетит, не говоря уж о том, что такая дичь запросто может не везде работать.

А ещё наверняка найдётся реализация SVG, которая не умеет в дискретные перемещения и текущие ушифры будут летать туды-сюды, как бешенные. Ждём-с :3
Всё прекрасно работает, я уже протестил, осталась лишь техническая реализация. Ну и еще мне Рандом в личку написал, говорит я проц Табуна загружаю… ЛОЛ. Так что надо поторопиться с реализацией.
я уже протестил
В скольких браузерах?
проц Табуна загружаю
Чем? CDN с ним на одном сервере хостится, что ли?
Щас своими ушками табун доломаете
Ого. Если долго не заходить, то тут появляются прикольные штуки.
Спойлер
У кого слабые процессоры, нужна ваша помощь:
Здесь 400 svg картинок, которые двигаются 24 раза в секунду
здесь 400 svg, которые двигаются раз в секунду.
по-идее вторая версия должна жрать в 24 раза меньше процессора, но я чет не могу убедиться в этом…
На компе загрузка цп от первого варика 5% От второго 10%
На планшете 2014 года выпуска примерно тоже.
У мя второй вариант (раз в секунду) кушает чуть больше.
Значит моя идея с апнг провалилась( облом.
Первая стабильно отъедала ~60%ЦП, вторая ~85%

Эта же скачет 20-40%.

Комп десятого года с двухъядерным пентиумом.
То есть, конкретно эта версия у тебя работает шустрее в 2-3 раза? Какая у тебя ОС и браузер?
Тут очень странная ситуация — у людей на линуксе эта версия почти не отличается от тех что выше. а на винде разница 2-3 раза. Не могу пока понять в чем прикол.
Винда седьмая и хром последней версии.
ушифратор.рф/svg_display_inline_test — проверишь еще этот вариант?
Этот вообще 30-40 в хроме.
50-60%
последняя попытка — ушифратор.рф/пруф4 должен занимать чуть меньше, чем пруф1.
Чуть позже освобожусь и могу «потестить»
Какие ссылки актуальны?
ушифратор.рф/пруф — оптимизированный вариант
ушифратор.рф/пруф2 — тоже самое что и «пруф», но в 10 раз больше фреймов. однако ЦП должен быть загружен ровно так же, как и первый пруф
ушифратор.рф/пруф3 — неоптимизированный текущий вариант, должен жрать проц больше всего
ушифратор.рф/пруф4 — тут я вынес всю анимацию в CSS. По-идее должно работать быстрее чем пруф1-2, однако лично я разницы не вижу.
Firefox PCПруфCPU 15%
GPU 4%

Пруф 2Не заметил разницы с Пруф
Пруф 3CPU 25%
GPU 4%

Пруф 4CPU 13%
GPU 3%


При первом открытии Пруф4 в фаерфоксе словил баг: анимации то исчезали, то появлялись. При повторном открытии всё норм. Webrender включен.
Chrome PCПруфCPU 7%
GPU 2%

Пруф 2Не заметил разницы с Пруф
Пруф 3CPU 15%
GPU 4%

Пруф 4CPU 5%
GPU 2%


когда вернусь из ВУЗа — сделаю более тяжелую вариацию 4-го пруфа. Если у тяжелой версии не будет разницы по сравнению с 4-м пруфом, тогда перейду на CSS. Если же у удлиненной анимации разница будет, то тогда я перейду на 1-2 пруф, потому что там производительность не зависит от длины.
Firefox AndroidЛюбой из ПруфовCPU 50%
GPU 1%
Везде анимации полагивают. Этот же телефон офигивает от APNG ушифратора, страницы подлагивают. Хотя обычные страницы рисуются быстрее Chrom`a

Chrome androidПруф и Пруф 2CPU 65-100%
GPU 7-11% Плавно
Пруф 3CPU 100%
GPU 10%
Пруф 4CPU 84-100%
GPU11%
плавно, но в отличие от Пруф и Пруф2 чаще всего нагрузка 100%

Склоняюсь к варианту Пруф или Пруф 2
Как же всё сложно… на ПК вроде пруф4 лучше, а на мобилках пруф1. Жаль что нельзя мобилкам одно показывать, а пк другое. ТАкое можно было бы сделать, если бы Табун разрешал скрипты вставлять…
Забей, всем не угодишь.
У меня далеко не самый слабый мобильник, 180к баллов антуту, думаю на более слабых мобильниках пруф4 может вызвать дискомфорт.
Кстати, у меня валяется Samsung s3, могу попробовать запустить его.
Ну там скорее всего везде будет 100%
Я предполагаю, что один из вариантов будет попросту не юзабилен. Что 100% — это понятно.
Он так разряжен, что не включается, придется подождать немного.
Samsung s3
Chrome
Пруф & Пруф 2 CPU 33-44%
Пруф 3 46%
Пруф 4 15-38%
Экран меньше, мало дэшек помещается, поэтому норм работает. Уместить больше не получится. На телефоне, к слову, помещаются все.
Всё ещё не пойму что лучше — 1 или 4.
Напомни, чем они отличаются?
ну, если ты шаришь в кодинге, то можешь сам посмотреть исходники картинок на обеих страницах, а если в кратце, то в «пруф» используется анимация с атрибутом visibility внутри тега SVG, а в пруф4 — всё тоже самое, только не внути svg, а в CSS.
20-30%
Пруф4 точно лучше чем пруф1? Люди на фаерфоксе говорят что он даже хуже… хммм
В фаерфоксе по умолчанию выключено аппаратное ускорение, это стоит уточнять.
Окей. Как у тебя дела с ссылками — есть разница?
Да, хотя сейчас на первых двух жрёт меньше чем вчера. Пересмотрел сколько ест чисто хром без сторонних программ.
Первый 34-47 — Выглядит как-то дёргано в сравнении с четвёртым.
Второй 34-50
Третий 50-60
Четвёртый 20-30
Итого делаем вывод, что Хром css-код обрабатывает быстрее, чем аналогичный SVG-код. А вот фаерфокс и то и другое обрабатывает почти одинакого даже с аппаратным ускорением. Правда пока не ясно как оно будет работать на мобильных платформах. Я очеьн боюсь, что iOS не осилит такой css.
Как-то странно что третий сейчас нагружает сильнее чем ранее днём…
А! Всё. Понял. Ссылки выше больше не ведут туда же куда и раньше.

Пруфф 1 это и есть третий вариант. Ладно.
У меня не оч слабый, но разница видна только в хроме:
пруф chrome 10-13
пруф3 chrome 23-25

пруф firefox 23-25
пруф3 firefox 25-26

А еще у поней в фф башню сносит. Твай аж офигела от такого роготрясения.
Спойлер
Запе-вай!









Да этож хор немых
Это ушкохор.



А может кто нибудь дать ссылку на самый первый пост где была придумана сама идея? Хочется разобраться какие положения ушей и что значат
Да чет эта тема постоянно мелькала тут и там. Ваще можно посерчить бэкап по словам «Ушифратор» и «Язык жестов».
Сразу выдаст такие псто — заказ на понячий аналог языка жестов
Ушифратор 2017
Если потыкаться и окунуться в историю, можно много всяких интересных фиговин найти. Типа алфавита из той самой книги из первых кадров сериала.
Как с телефона нормально смотреть на лисе, никуда не переходя со страницы?
Большая часть сообщений не влазит в менюшку по долгому нажатию.
А что насчет такого варианта? (проверьте нагрузку на провессор плиз):
Сейчас
После возможной оптимизации
Если во втором варианте прцессору легче, значит постараюсь эту оптимизацию залить на сервер на этой неделе.
Первое — 90% процессора, второе — 50.
Сейчас — 15%
После оптимизации — 9%
Я не очень понял как это работает, то есть для каждой фразы генерируется индивидуальная последовательность движения ушек? Или сама гифка всегда будет одинаковой, но просто текст разный внутри?
для каждой фразы генерируется индивидуальная последовательность движения ушек

Можешь сам всё проверить — написать разные тексты, одинаковые тексты.
А, ого, ясно
Прокрутка поняшепикера стала упоротой и неюзабельной. Примерно как на htmlbook.ru в своё время. Ты её на тачпадах тестироваше вообще?
Это временное решение. Я написал первую строчку html-кода в тот день, когда и открыл Ушифратор. Мне ещё предстоит изучить все прелести html и css кода…
Кстати, пока грузятся APNG, можно заметить, что на первом кадре рожа без глаз и ушей. А-а-а!
На фаерфоксе или на Хроме и в каком именно Пруфе? Если бразуер Фаерфокс — то оно и понятно. там слои показываются сразу как только загружаются, а хром начинает показывать только после полной загрузки всех слоев.
На Луаките :P
И претензия-то к тому, что первый слой пустой, хотя можно влить в него сразу. Но это на самом первом ушифе в треде, так что если уже починено, то хрен с ним.
Первый (нижний) слой, это — туловище, череп и шея и (если есть) — крылья. Все остальные слои специально разделены ради кастомизации.
Кадр пустой? Такого не может быть… он пустой только если у тебя не подгрузилась картинка.
… а, или APNG в слои умеет? Этъ другое дело!
Тьфу ты, я уже забыху, что этот тред изначально про ASVG, а по APNG отдельный был. И уже несколько комментов чушь несу. Тут всё ASVG, что не перекопипастили из прошлого треда.
А-а-а!

Не ну а че? В играх тоже самое происходит, где есть динамичная подгрузка текстур.
Не попадались такие. Впрочем, я и игр-то мало видиху.
.(
Точняк, а можно сделать чтобы пони была картинкой спойлера под которой скрывается текстовое сообщение, можно сразу в тело спойлера еще и ссылку на сайт ушкофира добавить, чтобы не искать пост. И оставить тултип, тогда вообще будет удобно и владельцам мобилок и пк
На да увы не работают ни свг ни апнг
На да увы не работают ни свг ни апнг

Что за ОС и браузер?
Охренеть, даже в Opera 12 оба работают!
На deviantart не работают ни свг ни апнг, написал же, на да, это если туда все это пропихнуть
Тогда уж на ДА не работают)
)
Других критикуеть, а саме путаеть людей незакрытыми скобками.
Так лучше?
Кек.
А ты уже хошь в комменты туды утащить? :3 Кому оно надо, только с кириллицей-то. А на fimfiction работает, кстати?
Зато в Safari 5 ASVG не отображается вообще

И APNG статикой отображается. Что за зрада, Фраер? Ану делой переносимый GIF, чтобы в браузере самой правильной компании работало :P
самой правильной компании

Когда-то я так считал, да) Но теперь у меня i7 7700 + rtx 2080 super, так что мне на свои айпады ваще плевать. Ну и на последних версиях Safari всё работает, кроме WebP.
Скорее всего он саркастично вспоминает былые времена 2014-2015 года, когда я топил за iOS и говорил что айпады заменят ПК.
Сейчас ситуация другая. Apple'овский вендорлок как раз спасает рынок от монополизации, а не приводит к ней. Ибо и так уже всё больше браузеров, в том числе WebKit-ных, выкидывают свои движки в пользу Blink. Если ещё Apple, Samsung и Mozilla сдадут позиции, то привет новому дивному вебу с Chrome-is-the-new-IE.
Прикольно, но я без понятия, как там выбирать поняшку, там никаких меню нету.
Да, чет там все поломалось((
А, так это не у меня одного? Лол.)
Извиняюсь. сегодня выпущу аптейдет, который всё починит и сделает даже лучше
Поди, прям на проде редактируешь, ага? :3
А где еще? У меня один комп, один сервер, который одновременно и локальный, и внешний.
Подкроватный сервер? Одобрям-с.

Открою маленькую тайну: на одной машине можно иметь сколько угодно виртуальных хостов. Прыличные люди имеют как минимум три: 1) продакшн, который отдаётся на истерзание юзерам; 2) стейджинг, на котором условия максимально приближены к продакшну (для предзаливного теста); 3) тестовый, на котором можно творить треш и угар, пока Аллах не видит.
А где еще? У меня один комп, один сервер, который одновременно и локальный, и внешний.
Саня, каждый раз когда кажется что «все, дальше уж некуда», ты пробиваешь новое днище
Таки шо ви имеете против подкроватных серверов? Это ж максимальный интернет-суверенитет. Тем более, оно весьма грамотно проброшено, наружу ничего лишнего жопой не торчит.
@bq:11:15:09:/tmp/dl$ nmap 188.134.86.16
Starting Nmap 7.80 ( https://nmap.org ) at 2019-11-16 11:15 EET
Nmap scan report for flyer.mykeenetic.ru (188.134.86.16)
Host is up (0.096s latency).
Not shown: 998 filtered ports
PORT     STATE SERVICE
80/tcp   open  http
5001/tcp open  commplex-link

Nmap done: 1 IP address (1 host up) scanned in 29.78 seconds
Изначально у меня кстати все порты были открыты, но потом Андреймал тупо зашел в мою админку и я понял, что сидеть с полностью открытыми портами — плохая идея.
Таки шо ви имеете против подкроватных серверов?

Против них ничего, сам балуюсь. Я про разработку и редактирование на проде.
Я про разработку и редактирование на проде.

То есть ты предлагаешь полностью скопипастить текущий код бекенда, и тупо его запустить в отдельной программе для локального порта?

Саня, почитай уже хоть немного про веб-разработку, а? Иначе и эту неплохую идею ушифратора зафейлишь и скатишь в трэш и лулзы.
Попсовый вебдев ортогонален подкроватным серверам, даже конченые нищуки сидят на халявных хостингах, а не пытаются выпускать наружу локалхост (всякие ngrok — это уже для прошаренных, умеющих в CLI и инглиш, а не типичных местных похапэ-верстальщиков, выдрючивших пару CMS). Чего читать-то предлагаешь?
Чего читать-то предлагаешь?

Ну даже хз… чтоб слова «контроль версий», «разработка», «прод» и как их разделить, стали не пустыми звуками… тут да — скорей не про веб надо читать, а что-то совсем базовое…
Что базовое-то? Нету его. Это вообще понятия коммерческой разработки, которые передаются вербально, о них в гайдах не пишут.
По-моему это вообще из логики следует банальной — что, например, активно править торчащую наружу ХТМЛ страницу, по которой одновременно лазают юзеры — это такое себе…
По логике хипстоты — это самый блидинэджный блидинэдж, который только может быть, а значит — хорошо.
Вон пусть Столярова читает. который на ЛОР хайпил одно время своей книжкой, как раз на уровень Фраеров рассчитаной))
Ты и системой контроля версий не пользуешься, ага?
Как?
Что «как»?
я пока ниразу не пользовался системой контроля версий.
Попробуй, это только в первый раз немного больно, потом понравится))
Только надо аккуратно, а то будет как-то так.
можно конкретный пошаговый гайд на русском, как это делать внутри Pycharm`a?
внутри Pycharm`a?
У IDE-блядей спрашивай :P
Мда… дай дураку хер стеклянный...))
У нас так один товарищ работает, который разрабатывает бут для Эльбруса-8С. Стоит ли говорить, что этот бут — пегасьи лепёшки и абсолютно неподдерживаемый (потому что нет ни возможности посмотреть чейнджлог, ни возможности написать ревью на конкретный участок кода, ни тем более, предложить пулл-реквест, если очень нужно)?
Очень зря, потому что это крайне удобная штука, немножко поработав с которой, начинаешь откровенно не понимать, как раньше жил без неё.

Не спорю, для этого надо немного поменять свой образ мыслей насчёт разработки, но после того, как ты поймёшь, как надо с этим работать, всё станет на порядок легче. Просто надо себя заставить и потренироваться на каком-нибудь более-менее простом проекте. Да, поначалу ты будешь откровенно не понимать, зачем тебе каждую правку комментировать, чем адд отличается от коммита, а коммит — от пуша, зачем нужна иерархия апстрим-ориджин-локалрепа-воркинг копи, зачем нужны ветки и пулл-реквесты, как осуществляется волшебство мёрджа и как резолвить конфликты, и т.п., но потом, когда разберёшься, осознаешь, насколько это мощный инструмент и насколько проще при этом, например, коллективная разработка (а в более-менее крупном проекте ты к ней в любом случае придёшь).

Из всех современных систем контроля версий рекомендую ориентироваться на git, в особенности с привязкой к веб-фронтендам ориджина и выше — сейчас большинство людей используют её, а в качестве фронтенда — github, gitlab и т.п.

На хабре есть некоторое количество статей, которые в этом тебе помогут.
Я боюсь выстрелить себе в колено, когда буду таким простым проектам прикручивать такую сложную систему.
Ну ты можешь как раз потренироваться на этом проекте. Заодно и научишься пользоваться. Начинать-то с чего-то надо.
Можешь подсказать что именно надо сделать, чтобы закоммитить свой проект? Я всё сказал что нужно, но ничего не получается:
Fetch Failed
[email protected]: Permission denied (publickey).
Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.

Причем я уже залогинился в гитхаб и ключ введен.
Ты репозиторий создал на гитхабе?
Тебе нужно создать (инициализировать) у себя, создать на гитхабе (через вебу), а потом пушнуть свой на гитхаб, прописав ему ориджин, если я правильно помню.
Ты репозиторий создал на гитхабе?

на этот вопрос я могу легко ответить — да, репозиторий создан: github.com/Sasha-Flyer/Ushifrator
Дальнейшие твои слова я, к сожалению, не понял совсем.
Отлично. Теперь смотри. То, что ты создал на гитхабе — это твой ориджин. Это то, что будет доступно всем. Работать ты будешь на своём компе, для этого тебе нужно иметь копию ориджина у себя. Это называется локальным репозиторием. Он равноправен с твоим ориджином. Как это сделать?
1) либо склонировать текущее состояние ориджина как локальную репу:
git clone https://github.com/Sasha-Flyer/Ushifrator

Это создаст у тебя на компе локальную репу, уже связанную с репой на гитхабе с тем же состоянием (то есть пока пустую);
2) либо создать у себя локальную репу и, связав её с ориджином, запушить её в ориджин:
mkdir Ushifrator
cd Ushifrator
git init 
git remote add origin https://github.com/Sasha-Flyer/Ushifrator
git push
Мне достаточно хранить все версии в облаке. Если надо будет скачать какую-то конкретную версию — я её скачаю при необходимости. Хранить постоянно все свои версии у себя локально я просто не вижу смысла — места и так не хватает уже.
Версии весят не так много (разумеется, они в идеале хранятся в репозитории не целиком, а только изменениями). Разве что если с репой долго работали, то иногда стоит делать упаковку репозитория, потому что не всегда дельты делаются сразу.
Какой смысл хранить БЕКАПЫ на том же жестком диске, где и сам проект? Разве бекапы не делают ради того, чтобы можно было восстановить проект, если с моим диском что-то произойдет?
Бэкапы — это то, что восстанавливается при отказе оборудования. Ты же хранишь не бэкапы, а историю версий, они имеют другое смысловое назначение — точки, к которым можно откатываться, если была совершена ошибка в разработке, и с которых пилить альтернативную функциональность, если у тебя несколько вариантов исполнения разных вещей (при этом ты оставляешь возможность синхронизации коммитов между ветками).
Ну так именно это я и хочу сделать — залить на гитхаб версию 1.0.0, потом залить отдельно версию 1.0.1, потом версию 1.0.2, и потом если она мне не понравится, быстренько скачать с гитхаба версию 1.0.1 и продолжить работать с ней. Это ведь возможно?
Смотри, ты пока не до конца понял суть гита. Системы контроля версий работают с гранулярностью не по релизам (это называется «теги»), а по изменениям («коммиты»). Релиз — это набор коммитов (видел когда-нибудь changelog к какой-нибудь софтине? Вот список изменений — это и есть коммиты). Ты можешь «скачать» (на самом деле, не скачать, а просто перейти) не только на конкретный тег (разумеется, это ты тоже можешь), но и на любой коммит между ними.

Тепрь про «заливку на гитхаб». Это тоже не совсем «заливка», потому что ты просто синхронизируешь состояние условного гитхаба (ориджин) со своим локальным репозиторием (командой push), либо наоборот, локального с ориджином (командой pull/fetch). При pull-е ещё не значит, что ты скачал конкретные версии; ты скачал всё, что изменилось там по сравнению с тем, что у тебя (например, если над проектом работает несколько людей, то именно ориджином они объединяются).

Короче, я тебе могу эту систему объяснить, если хочешь, но писать долго, если у тебя есть дискорд, то ты можешь войсом со мной связаться, постараюсь тебе объяснить, как это всё работает.
Меня вот все эти «скачать только изменения» немного воротят и выбивают из колеи. Я честно не могу понять зачем это так делается. Почему нельзя разные версии заливать по-отдельности с нуля, и потом в случае чего скачать целиком одну из версий, которая никак не зависит от соседних версий?
Именно для того, чтобы автоматически были видны изменения между версиями, и это позволяет делать кучу дополнительных вещей, которые не работают в случае с «хранить только снапшоты версий».
И какие же например? Самое главное это возможность быстро скачать любую из версий. Что еще надо то?
Это не главное, а единственное, что позволяет хранение снапшотов. А система контроля версий позволяет, например:
0) удобное хранение информации о том, что именно изменилось
1) разработка с какого-то этапа, не точно соответствующего какой-то версии
2) возможность втаскивания не всех изменений, а каких-то конкретных
3) возможность нескольким людям работать над одной программой (один делает одну функциональность, другой — другую)
4) возможность поддерживать несколько веток продукта — например, для разных схем использования
И т. п.
Ни один из этих пунктов лично мне на практике не нужен.
Пока не нужен. Но потом ты поймёшь, насколько это удобно (например, когда тебе в твой ушифратор посыплются пулл-реквесты с новыми понями, исправлениями ошибок, новой функциональностью и всё такое). Заметь, это всё сделают за тебя, тебе нужно будет только проверить, не накосячили ли там люди и принять пулл-реквесты.
Изменения между директориями и diff -r отлично покажет.
Одним куском, без разбивки на смысловые изменения и тем более без коммит-мессаг.
Почему нельзя разные версии заливать по-отдельности с нуля, и потом в случае чего скачать целиком одну из версий, которая никак не зависит от соседних версий?
Ты хошь SVN, забей на Git :D Базовая суть Git как раз в дедупликации изменений, потому что версии, как правило, отличаются друг от друга минимально, и по отдельности занимали бы дохрена места на диске. А SVN тупой, в нём «ветки» — именно что директории с отдельными независимыми версиями. Но его сейчас именно по этой причине мало кто юзает.
Ну я хочу ему объяснить, что знай он суть гита, сразу бы понял, что такое хранение, как в svn — куда менее гибко =)
Ну я хочу ему объяснить,
Не пытайся даже… легче зайца курить научить, чем Саню хоть чему-то. Ты можешь всю ночь ему разжевывать элементарщину, а завтра все сначала начнется. Саня не хочет понимать, он хочет прочитать шаманское заклинание, и чтоб все взлетело само. Плавали-знаем.
Возможно. Но я надеюсь на лучшее =)
Оставь надежду всяк с Фраером связавшийся. Очень скоро ты почувствуешь, как твой мозг заволакивает пелена безумия и безысходности, от попыток прошибить стену непрошибаемого упрямства и тупости… И тогда останется только бежать, или начинать стебаться)
Если надо будет скачать какую-то конкретную версию — я её скачаю при необходимости
Git так не работает, можешь его сразу выкидывать с такими требованиями.
ну так как на Гитхаб то заливать каждую версию? Чтобы потом при необходимости скачать любую из залитых версий и сразу начать работать именно с ней?
Для того, чтобы работать с локальной репой, ориджин не обязателен (ты можешь вообще всё коммитить в локальную репу, иметь ориджин на гитхабе просто даёт возможность с твоим репозиторием работать другим людям). Все версии (в виде дельт, т.е. изменений) у тебя уже есть в любой копии репозитория — апстриме, ориджине, локальном.

А перейти к любой из версий в локальном репозитории можно легко — командой checkout.
Еще раз — я не хочу хранить старые версии ЛОКАЛЬНО. Я хочу чтобы всё старьё хранилось ТОЛЬКО в облаке.
Почему ты их не хочешь хранить? Ты понимаешь, что ты хранишь не копии, а исключительно изменения между ними, но зато это здорово облегчает работу с ними?
Нет, конечно, ты можешь хранить историю до глубины 1 (я так делаю, когда временно выкачиваю репозитории, просто, чтобы собрать код, получить бинарник, а потом удалить исходники), но так не очень удобно работать.
Если вопрос в месте — то тут надо решать проблему как раз с местом, а не с управлением версиями. Ты просто сейчас предлагаешь решение («не хранить коммиты, кроме последнего») некой неизвестной проблемы, и я хочу выяснить эту проблему.
А если у новой версии ни одной строчки не будет совпадать с предыдущей версии? Я не понимаю смысла сравнивать только изменения. Как он вообще находит эти изменения? Прям побуквенно всё сравнивает? Основная Проблема этого подхода в том, что если потеряется исходная копия версии 1.0.0, то все будущие заливы тоже похерятся, потому что что как ты и говоришь, они будут хранить только изменения, а не весь свой код.
А если у новой версии ни одной строчки не будет совпадать с предыдущей версии?
Значит это кардинально новый проект, если в нём ничего не совпадает =)
Дело в том, что программы именно так и развиваются — старая версия изменяется, а не переписывается с чистого листа. И именно для таких изменений git идеален.
Как он вообще находит эти изменения?
Построчное сравнение текстовых файлов.
что если потеряется исходная копия версии 1.0.0
Это первый коммит репозитория, и если репозиторий вообще работоспособный, она оттуда никуда не денется. Удалить из репозитория то, что там уже есть — в общем случае невозможно, это всё равно, что стереть прошлое. Даже откат коммита — это, по сути, антикоммит, который накладывается на откатываемый и возвращает всё к прежнему состоянию.
Я не хочу, чтобы ТАКОЕ хранилось локально. У меня осталось всего 10гб места и скорее всего и их скоро не станет.
Сколько у тебя весит проект? Я думаю, максимум — несколько мегабайт. Оверхед, который ты получишь — ещё несколько мегабайт. Стоит ли из-за нескольких мегабайт отказываться от удобства, если ты просто пока ещ не понял, насколько это удобно?
25МБ, учитывая картинки-превью и исходники для создания ушифро-анимаций. Но размер будет увеличиваться пропорциально количеству персонажей. То есть, сейчас 5 персонажей и весит 25МБ. Когда будет 50 персонажей — будет весить уже 250 МБ, а то и больше.
Ну и тогда у тебя весь репозиторий (даже если там тысячи коммитов) будет весить 300-400 МБ (250 МБ воркинг копия, 50-150 МБ — сжатые дельты, то есть собственно локальный репозиторий).
И почему это нельзя хранить удаленно?
Можно, но не слишком удобно. Хотя для твоих целей можно и удалённо (depth=1).
depth позволяет только с конца забрать, а Саше надо возможность скачать ЛЮБОЙ срез. Тут Git однозначно мимо кассы, это одна из его родовых проблем. И кстати, даже если скачать срез с конца — пушить всё равно не получится, придётся качать полный репозиторий.
depth позволяет только с конца забрать, а Саше надо возможность скачать ЛЮБОЙ срез.
Ну он всегда может сделать fetch =) хотя я сейчас не уверен, что это должно сработать так, как я думаю, надо проверять Я же пытаюсь его убедить, что удобнее иметь всю историю локально, тогда это куда проще.
И кстати, даже если скачать срез с конца — пушить всё равно не получится
Хм, странно, вроде по логике пуш просто закидывает туда всё, что у тебя есть в локалрепе, чего нет в ориджине. И даже если у тебя нет общих коммитов — оно всё равно туда запушится, просто ты этого не увидишь там. А если есть один общий коммит (head, который забрал с depth=1), то список слепится и новые коммиты появятся видны и в ориджине.
Как он вообще находит эти изменения? Прям побуквенно всё сравнивает?
Тебе и программы для сравнения файлов никогда не вcтречались? o_O Даже в PyCharm чот такое встроенное есть.
начинаешь откровенно не понимать, как раньше жил без неё
Да ладно, я уж сколько лет умеют в гит, а до сих пор лень инициализировать репозиторий для всякой дребедени, да и вообще как-то её версионировать. Бывает, правда, что жалею потом, но редко :3
Установил этот ваш git, но git init всё ещё не работает, пишет «git» не является внутренней или внешней
командой, исполняемой программой или пакетным файлом, при этом в path я его добавил и в проект — тоже.
И после ребута тож?
Щас бы ребутать комп, на котором работает два сайта и игровой сервер онлайн игры
Ну тогда не жалуйся на вендопроблемы :P Запускай по полному пути.
Кароче, я уже несколько часов пытаюсь разобраться с этой ебаной системой контроля версий, и ничего не работает до сих пор. Стоит ли мне продолжать или просто забить на эту бесполезную систему контроля версий?
Превозмогай. И определись для начала, чего ты хошь-то.
Я тебя понимаю, ибо поначалу думал точно так же. Продолжать однозначно стоит. Почитай статеечки с того же хабра и постарайся понять то, что там пишут, а не просто повторять команды. Мне, кстати, для понимания помогло нарисовать схемку с воркинг копи, стейджем, локальной репой и ориджином, подписать, зачем они нужны и порисовать на ней стрелочки, что делает какая команда (add, commit, push, pull, fetch, checkout и т.п.)
Я уже всё прочитал и ничего не выходит. Pycharm тупо не хочет коммитить в хитхаб, хотя логин и пароль в настройках введен и в аккаунт войден.
Не очень понял, при чём тут pycharm.
Алсо, коммит — это пересылка между стейджем и локальным репозиторием. На гитхаб (то есть, посылать состояние из локального репозитория в ориджин) ты будешь пушить.
Не очень понял, при чём тут pycharm.

Потому что это через него и делается? Только вот одна и таже ошибка не дает это сделать:
Спойлер
Ммм, ты пытаешься сделать pull request в свой же репозиторий? Обычно они делаются только тогда, когда у тебя уже есть готовая ветка с изменениями в ориджине и ты хочешь её запушить в апстрим. Тебе пока надо запушить локальную репу в ориджин. Можешь посмотреть, что у тебя в каталоге локального репозитория?
так, давай по порядку, что ты сейчас хочешь узнать? что у меня находится в репозитории хитхаба? Ну, ты и сам можешь посмотреть — github.com/Sasha-Flyer/Ushifrator там нет буквально ничего. А в самом проекте у меня сейчас 700 файлов, которые не хотят отправляться на Гитхаб.
А в самом проекте у меня сейчас 700 файлов, которые не хотят отправляться на Гитхаб.
Вот именно это, скорее всего, у тебя и должно быть локальным репозиторием. Я пытаюсь понять, является ли это действительно репозиторием (то есть инициализировал ли ты его), или просто каталогом, в который сложены файлы, без метаинформации о репозитории.
Кароче. Это просто папка с файлами, которая работает в Pycharm. И я это хочу залить на Хитхаб. Всё.
Тогда просто инициализуй там репозиторий (git init), свяжи его с гитхабом (git remote add origin https://github.com/Sasha-Flyer/Ushifrator), добавь имеющиеся файлы из воркинг копии в стейдж (git add -r *), сделай коммит из стейджа в репу (git commit -m 'Initial commit'), и затем — пуш на гитхаб (git push).
А теперь можно обо всем по порядку и поподробнее?
Тогда просто инициализуй там репозиторий (git init)

Мне это прямо в открытом cmd прописывать, так?
Да, переходишь в каталог, где лежат исходники, и делаешь.
Этот каталог нужно указывать как параметр при вызове git init? В интернете я не могу найти конкретных примеров
Смотри, командная строка имеет такой параметр, как текущий каталог. Именно в нм ты выполняешь те команды, которые ты пишешь в командной строке. В винде он виден перед символом ">" в приглашении. Кроме того, в винде он разный для разных дисков, но пока мы углубляться в это не будем. Менять текущий каталог (т.е. переходить в другой) можно командой cd.

Тебе нужно перйти в тот каталог, где лежит проект, и после этого инициализировать там репозиторий командой git init.
C:\Users\User\PycharmProjects\site>«C:\Program Files\Git\bin\git.exe» init
Reinitialized existing Git repository in C:/Users/User/PycharmProjects/site/.git/

— так?
Да, так.
А, значит, у тебя репозиторий уже был инициализирован. Но ладно.
Теперь попробуй связать его с ориджином на гитхабе:
git remote add origin https://github.com/Sasha-Flyer/Ushifrator
C:\Users\User\PycharmProjects\site>«C:\Program Files\Git\bin\git.exe» remote add origin github.com/Sasha-Flyer/Ushifrator
fatal: remote origin already exists.
Ага, значит и ориджин у тебя подключен.
Может, ты и коммит сделал? Посмотри, что у тебя выдаёт git status в этом каталоге.
C:\Users\User\PycharmProjects\site>«C:\Program Files\Git\bin\git.exe» status
On branch master
Changes not staged for commit:
(use «git add ...» to update what will be committed)
(use «git restore ...» to discard changes in working directory)
modified: messeges.json

Untracked files:
(use «git add ...» to include in what will be committed)
__pycache__/

no changes added to commit (use «git add» and/or «git commit -a»)

C:\Users\User\PycharmProjects\site>
Ага. То, что тебе выдал git status, означает то, что у тебя воркинг копия отличается от локальной репы только файлом messages.json, а папка __pycache__ вообще исключена из отслеживания (и так и надо). Можешь заодно дать команду git log и посмотреть, что у тебя в локальном репозитории.
C:\Users\User\PycharmProjects\site>«C:\Program Files\Git\bin\git.exe» log
commit 463db654f871e584b797926921d974c759f6a0a8 (HEAD -> master)
Author: Sasha-Flyer <[email protected]>
Date: Sat Nov 16 22:51:19 2019 +0300

first version

C:\Users\User\PycharmProjects\site>
Вот, видишь? У тебя в истории один коммит, у которого есть уникальный идентификатор (463db654f871e584b797926921d974c759f6a0a8, его обычно там, где не важна точность, обрезают до 7-9 символов, т.е. слова типа «commit 463db654» будут обозначать именно его) и сообщение (first version). Это означает, что изменения теперь есть в твоём локальном репозитории, теперь осталось только влить всё новое в локальном репозитории (а нового там — именно этот коммит) в ориджин. Это делается командой git push.
C:\Users\User\PycharmProjects\site>«C:\Program Files\Git\bin\git.exe» push
fatal: The current branch master has no upstream branch.
To push the current branch and set the remote as upstream, use

git push --set-upstream origin master

C:\Users\User\PycharmProjects\site>
А, точно, я забыл сказать, что для локального репозитория ориджин (то, что является одной из удалённых копий репозитория) — это ещё и апстрим (та из удалённых копий, куда переливаются коммиты при push-е).
Действительно, установи ориджин своим апстримом командой git push --set-upstream origin master.

Здесь master — имя той удалённой ветки, в которую ты будешь заливать текущую локальную ветку; пока ещё ты не начал разбираться с ветками, и у тебя локальная активная ветка называется master (помнишь «On branch master» в выводе git status?), и удалённая будет так же называться. Это название «master» — общепринятое для главной ветки проекта.
C:\Users\User\PycharmProjects\site>«C:\Program Files\Git\bin\git.exe» push --set-upstream origin master
[email protected]: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
Посмотри настройки пользователя и пароля (локальные, глобальные и системные):

git config --local user.name
git config --local user.email

git config --global user.name
git config --global user.email

git config --system user.name
git config --system user.email

Локальные — это для конкретно этого репозитория, глобальные — которые для всех репозиториев, с которыми ты работаешь из-под своего пользователя, если нет локальных, системные — с которыми работают все пользователи, если нет локальных и глобальных.
Так, здесь всё правильно. В твоём случае (работаешь под одним и тем же логином со всеми репозиториями, которых у тебя пока только один) глобальные настройки — правильное место для этой инфы.
А, хотя стоп, вот ещё:
Посмотри, правильно ли у тебя прописан origin (потому что «[email protected]» выглядит странно):

git remote show origin
C:\Users\User\PycharmProjects\site>«C:\Program Files\Git\bin\git.exe» remote show origin
[email protected]: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

C:\Users\User\PycharmProjects\site>
Так, а так тогда?
git config remote.origin.url
(посмотрим просто переменную в конфиге, не обращаясь к ориджину)
C:\Users\User\PycharmProjects\site>«C:\Program Files\Git\bin\git.exe» remote show originconfig remote.origin.url
fatal: 'originconfig' does not appear to be a git repository
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

C:\Users\User\PycharmProjects\site>
Эээ, на команду свою посмотри.
C:\Users\User\PycharmProjects\site>«C:\Program Files\Git\bin\git.exe» config remote.origin.url
[email protected]:/Sasha-Flyer/Ushifrator.git

C:\Users\User\PycharmProjects\site>
Судя по всему, всё есть. что еще нужно сделать — непонятно…
С оригином, начинающимся на [email protected], будет заливать по SSH, а SSH-ключа у тебя, поди, нет.

Сделай лучше на https://, тогда логин-пароль спрашивать будет. Команда должна быть на странице репозитория на Гитхабе, пока он пустой. Если будет ругаться, что origin уже есть — этот удали (git remote remove origin).
Ага, понятно, у тебя адрес ориджина не такой
https://github.com/Sasha-Flyer/Ushifrator
, а такой
[email protected]:/Sasha-Flyer/Ushifrator.git
. Возможно, это и сработало бы, не знаю, насколько github работает по протоколу git, я всегда использую https, но даже этот URL сформирован неправильно. Помнишь, как строятся URL? «протокол://[пользователь[: пароль]@]сервер[.домен]/путь/к/файлу». У тебя пользователь — git, а не Sasha-Flyer.

Здесь важно понимать, что пользователь в конфиге гита — это тот, под которым ты делаешь коммиты; пользователь в URL ориджина — тот, с которым ты логинишься на гитхаб. В общем случае они не обязаны быть одинаковыми, но пока это тоже не очень важно.

Короче, что я предлагаю:
Либо изменить имя пользователя в том, что есть (не знаю, сработает или нет — не проверял протокол git://):
git remote set-url origin git://[email protected]:/Sasha-Flyer/Ushifrator.git

Либо задать origin через https:
git remote set-url origin https://[email protected]/Sasha-Flyer/Ushifrator

Можешь задавать без имени пользователя, тогда при каждом пуше тебя будут спрашивать не только пароль, но и имя пользователя.

Ну, если задолбает вводить пароль, ты, конечно, его можешь встроить прямо в URL
git remote set-url origin https://Sasha-Flyer:твой_пароль@github.com/Sasha-Flyer/Ushifrator

Но ты сам понимаешь, что если кто утащит config твоего репозитория — то получит доступ к твоему github-овскому аккаунту. Поэтому лучше использовать авторизацию по ключу (как это — почитай мануалы самого гитхаба, там это относительно просто расписано).
думаю https мне больше подходит. ввел C:\Users\User\PycharmProjects\site>«C:\Program Files\Git\bin\git.exe» remote set-url origin Sasha-Flyer@github.com/Sasha-Flyer/Ushifrator

но ничего не произошло. оно просто молча выполнилось и никакого сообщения не дало.
Теперь если ты посмотришь, какой у тебя URL origin-а предыдущей командой (git config remote.origin.url), то он должен измениться.
Если всё ок — делай git push.
C:\Users\User\PycharmProjects\site>«C:\Program Files\Git\bin\git.exe» config remote.origin.url
Sasha-Flyer@github.com/Sasha-Flyer/Ushifrator

C:\Users\User\PycharmProjects\site>«C:\Program Files\Git\bin\git.exe» push
fatal: The current branch master has no upstream branch.
To push the current branch and set the remote as upstream, use

git push --set-upstream origin master

C:\Users\User\PycharmProjects\site>«C:\Program Files\Git\bin\git.exe» push --set-upstream origin master
Enumerating objects: 780, done.
Counting objects: 100% (780/780), done.
Delta compression using up to 8 threads
Compressing objects: 100% (778/778), done.
Writing objects: 100% (780/780), 10.14 MiB | 6.53 MiB/s, done.
Total 780 (delta 51), reused 0 (delta 0)
remote: Resolving deltas: 100% (51/51), done.
To github.com/Sasha-Flyer/Ushifrator
* [new branch] master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.
Virst version
Это прелестно! :3
Что мне теперь с этим делать — вот в чем вопрос. ну вот залил я её в репозиторий — как мне теперь там файлы редактировать?
Да хоть прям на гейхабе!
хз, через обычное контекстное меню там обычные браузерные свойства. как удалить или сделать другие действия с файлами на гитхабе пока не понятно.
См. ниже — отредактировал у себя, добавил в стейдж, закоммитил (описал суть изменений), запушил.

Для удобства можешь поставить себе gui-клиент, чтобы не ковыряться с командной строкой, например, TortoiseGit или какой-нибудь другой. Главное — терминологию ты теперь начинаешь потихоньку узнавать и будешь понимать, что gui-клиент от тебя хочет.
НУУУУ ФРАААААЕР

Delete main.py
Ты дебил :3
Кстати, разумеется, после этих изменений в ориджине нужно делать пулл ориджина к себе в локарепу.
Спасибо вам за офигенные советы. Пришлось теперь менять пароли буквально на всех аккаунтах. Больше в жизни не буду прикасаться ни к одной системе контроля версий
Очень зря. Заметь, что проблема не в системе контроля версий, а в том, что ты закоммитил и запушил, не подумав.
С выкладыванием на рандомный ресурс было бы то же самаое — вебархив не дремлет.
Алсо, никто не мешает тебе вести разработку чисто в локальной репе, не пуша её никуда (но всегда иметь возможность сделать ориджин для неё и запушить всё туда).
Kiskaa123
Офигенно криптостойкий пароль, ы.
киска… а Саня то шалунишка))
Я пропалил два пароля и один ключ в этом файле, к счастью я успел всё удалить. Сейчас поменял абсолютно все пароли и деактивировал все ключи доступа.
Чтобы я еще хоть один раз связывался хоть с одной системой контроля версий? Просто нахуй! Менять все пароли на всех сайтах после этих пушей — такая себе идея.
Заметь, что до пуша ты ничего не пропалил (в этом и плюс пушей — непоправимого никогда не сделано, всегда можно начать ветку от предыдущего коммита).
А с выкладыванием паролей — ну, поэтому и в коммит файлы включаются не автоматически (если мы не делаем тупо git commit -a), и поэтому и есть файлик .gitignore.

Ну, поменял пароли, проблема-то в чём? Продолжай работать дальше, и просто смотри за тем, что коммитишь.
Ну так я у меня пароли и ключи доступа в main функции, где и выполняется весь код. как можно игнорить конкретные строчки внутри кода?
Вынести их в конфиг-файл и добавить этот файл в .gitignore. Это наиболее широко распространённая практика. При этом для тех, кто хочет попробовать развернуть у себя твою систему, полезно класть в git вместо рабочего конфига его шаблон.
Вот, посмотри, например, как сделано в "Курисабе": самому движку нужен файл config.php, но его в гите нет, зато есть шаблон _templates/config.php.template, и слова об этом в README.md.
Вот именно поэтому я и не буду пользоваться системами контроля версий больше — слишком много дополнительных танцев с бубном ради непонятно чего. Где гарантии что файл не зальется если я его добавлю в какой-то там гитигнор? А вдруг зальется, и я не замечу, а кто-то заметит и сворует все пароли незаметно? Это ведь хорошо что я сейчас вовремя заметил и сразу всё поменял. А если бы не заметил? Прощай аккаунты и все деньги на карте!
слишком много дополнительных танцев с бубном ради непонятно чего
Этот «танец с бубном» — ради того, чтобы разделить чувствительные данные от кода. Если они у тебя смешаны — это проблема архитектуры твоего кода, и она приводит в том числе и к этому. Видишь, ты эту проблему увидел только сейчас; а вот представь, что ты бы на каком-нибудь скриншоте спалил бы это и не заметил?
Где гарантии что файл не зальется если я его добавлю в какой-то там гитигнор?
Само определение файла .gitignore. Ну и ты, когда коммитишь, всегда можешь увидеть, какие файлы отправляются (ты их сам добавляешь командой add перед этим). Если ты увидел там что-то, что отправляется по ошибке — убери его из стейджа и коммить без него.
А вдруг зальется, и я не замечу, а кто-то заметит и сворует все пароли незаметно?
Именно поэтому тебе даётся возможность минимум два раза проверить: во-первых, при добавлении файлов командой add (подумай, перед тем, как давать команду, не увидит ли пользователь в этом файле чего-то не того?) И во-вторых — при коммите: обычно тебе показывают все файлы в стейдже перед подтверждением коммита.
А если бы не заметил? Прощай аккаунты и все деньги на карте!
Это ещё одна твоя архитектурная ошибка, впрочем, не связанная с программированием: не клади все яйца в одну корзину. Если у тебя через что-то могут увести деньги или ещё что-то важное, то как минимум, не используй этот аккаунт в автоматизированных системах (ну и не свети его почём зря вообще где-либо).
И во-вторых — при коммите: обычно тебе показывают все файлы в стейдже перед подтверждением коммита.

мне ничего не показывалось.
Скорее всего показывалось, просто там было триста файлов, и ты особо не смотрел (да, это типичная проблема первого коммита уже развиваемого проекта).
Показывается только если описание коммита через редактор вводить. Если из CLI задавать, то нет.
А, ну возможно (помню, пару раз задавал сообщения коммита через командную строку, но не помню, выдавал ли гит что-то), поэтому, наверное, я в подавляющем большинстве случаев ввожу сообщение через редактор (да и удобнее так). Там-то всё видно. И что в стейдже, и что в воркинг-копи, и что игнорируется.
А если я переименую файл с паролями — они в итоге опять добавятся? Я часто всё переименовываю. поэтому этот гитигнор мне тем более не подходит. Это слишком небезопасная хрень
git status и git diff. Не проверяешь перед коммитом — ну и дебил, чо
опять же — что это всё значит? И ради чего столько телодвижений?
Для наведения порядка на своём рабочем месте. Ну а если ты развёл срач и не хочешь прибираться — ну, дело твоё
О каком сраче идет речь? или я не имею права держать сразу несколько проектов внутри одной общей папки?
О каком сраче идет речь?
О паролях в коде, например
Почему я не имею права делать самый обычный код в виде
me = tabun_api.User(login="Sasha-Flyer", passwd="пароль")
где тут срач? Всего одна вполне логичная строчка, которая авторизирует меня на Табуне.
Потому что ты лишаешь себя возможности даже мне файл скинуть
Ну так можно ли как-то строчку скрыть, не создавая при этом никаких новых файлов и папок? Я не хочу раздувать и без того раздутый файлами проект.
Зачем, если можно просто создать файл? Если у тебя аллергия на файлы — мне тебя жаль
И как мне потом разбираться в смысле каждого файла?
Называть нормальными именами, писать документацию, класть рядышком example-файл для добавления в гит — в общем, наводить порядок
ЕЩЕ один файл? Ты издеваешься, да? Зачем еще один то? Что еще за example? Примеры мне еще не хватали
Ну и живи в сраче и не понимай свой собственный проект уже через полгода
Создание твоих файлов думаешь сильно упростит ситацию? Я вот ничего не понимаю по той ссылке, которую ты скинул комментом выше.
Мне упрощает, про альтернативно одарённых ничего сказать не могу)
И как же именно он упрощает?
Мне это очевидно, а альтернативно одарённым пытаться объяснять видимо смысла нет
Почему ты считаешь меня альтернативно одаренным? разве я такте сложные вопросы задаю?
Тебя считают альтернативно одарённым, потому что ты себе придумываешь некоторые проблемы, которые реально проблемами не являются (много файлов, мало места и т.п.) и настаиваешь на том, что это всё-таки проблемы, а не пытаешься прислушаться и осознать, где на самом деле реальные проблемы, которые делают твой код, например, непереносимым в другие условия эксплуатации.

Вот например, если бы ты всё-таки не сдавал назад после выкладывания своего ушифратора на гитхаб, я бы, может, развернул бы его у себя и посмотрел, как его можно было бы улучшить, покидал бы тебе пулл-реквестов с этими улучшениями, и все были бы довольны. В этом и прелесть коллективной разработки, что те, кому что-то надо, сами делают всё за тебя, тебе нужно только отревьюить код и смерджить его с твоим. И обратное: если я вижу, что в чьём-то проекте мне чего-то недостаёт — я просто форкаю его себе, делаю нужные правки и пишу пулл-реквест в апстрим, и так мой код там появляется. Taisei Project, meson, screenfetch — во всех этих часто широко известных проектах есть мой код. Но твой код пока к этому неспособен, и это печалит.
мало места
проблемами не являются
Да ты охуеше.
если бы ты всё-таки не сдавал назад после выкладывания своего ушифратора на гитхаб
Интересно, что будет, если перезалить бесценный Сашенькин код :3
Taisei
широко известных
Нет; чоита?
Да ты
У него свободно несколько гигов, а он жалеет пару сотен мегабайт.
Нет; чоита?
Ну, Taisei — единственный не широко известный, поэтому я там дописал модивикатор «часто» =)
Это игруха по типу тохи, только опенсорсная. github.com/taisei-project/taisei/
У него свободно несколько гигов, а он жалеет пару сотен мегабайт.
Так они так и забиваются — там мегабайтик, тут мегабайтик, и приехали. Мало того, малый объём пустого пространства чреват быстрой фрагментацией и сбоями, если какая-то прога внезапно начнёт засирать диск.
Вопрос в приоритетах. Место оно затем и нужно, чтобы в него что-то класть, а не держать свободным ради циферки.
Проблема в том, что если такими «мегабайтиками» всё забить, то потом закинуть что-то реально большое и нужное окажется некуда, и придётся срочно рыскать по всему диску искать, что лишнего можно удалить
Опять же вопрос приоритетов. Можно и не мегабайтиками всё забить.
А вообще — флешка на 64 гига на том же али стоит жалкие сотни рублей с доставкой, ну блин, ну 2019 же, цена за мегабайт упала ниже некуда, всегда можно иметь аварийную флешку и скидывать туда временно что-то, из-за чего что-то другое не вмещается, если уж кризис свободного места. Хоть, по хорошему, если возникают такие проблемы, нужно задуматься о покупке нового диска — там стоимость за гиг ещё ниже, просто это разовая трата. Но современный диск стоит не дороже, чем например я на еду трачу за пару-тройку недель (и куда дешевле, нежели я плачу за квартиру).
Флешка может навернуться, внешний диск тоже может навернуться, поэтому твоё временное скидывание не работает
Внутренний диск также может навернуться, и даже диски в RAID могут навернуться одновременно от скачка питания. И вообще может быть пожар/наводнение/атомная война.

Вопрос исключительно оценки рисков. И потому, что вероятность наворачивания флешки (возможно) чуть выше, я и говорю о временном скидывании, а не постоянном.
Будет весело, когда что-нибудь навернётся аккурат после временного скидывания)