Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Регистрируясь, я даю согласие на обработку данных и условия почтовых рассылок.
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр Погрузись в «Свидания с отличиями» — увлекательную романтическую игру в жанре «найди отличия», где ты знакомишься с обаятельными девушками, узнаешь их истории и организуешь незабываемые свидания. Тебя ждут десятки уровней, полных эмоций, и множество очаровательных спутниц!

Свидания с отличиями

Казуальные, Головоломки, Новеллы

Играть

Топ прошлой недели

  • cristall75 cristall75 6 постов
  • 1506DyDyKa 1506DyDyKa 2 поста
  • Animalrescueed Animalrescueed 35 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

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

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
0 просмотренных постов скрыто
howtpi
howtpi
Серия Как в это играть.

Принесём пользу человечеству?⁠⁠

1 месяц назад

Предложу вариант проекта.

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

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

Смысл проекта - человечеству нужен способ общения, хранения и распространения информации и возможность осуществлять бартер ресурсов, знаний, услуг. Неподконтрольный никому, свободный и децентрализованный, но доступный каждой клеточке человечества. Обычный Интернет перестал осуществлять эту функцию. Он перенасыщен мусором, искажениями, повторами, пропагандой элит-меньшинств. Он слишком подконтролен и уязвим для манипуляций. Чаты, соцсети - искажают, подменяют сформированные ранее структуры хранения полезной информации и обмена опытом, смещая акцент на потребление, эгоизм, моду. Информационный шум и застой ведут к деградации. Легкие человечества загрязнены, мозг испытывает кислородное (информационное) голодание и тупеет. Кислород-информация и полезные микроэлементы скапливаются и остаются лишь у отдельных органов, которые возможно поражены опухолями, паразитами и вирусами. Но разбираться будем позже, сейчас нужно восстановить базовое кровоснабжение всего организма.

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

Как это будет выглядеть? Судя по всему пока не придумано ничего лучше классического форума с разделами, категориями, темами, ответами - постами. Но можно добавить глубины в виде комментариев к постам. На первый взгляд этого вполне достаточно. Форум не для живого общения (хотя это судя по всему вполне возможно), а именно для выкладывания, структурирования и концентрации информации, опыта и публикации своих объявлений, где распространение намного важнее скорости.

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

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

Структура базы простая и понятная в виде блоков информации. Доступная для редактирования напрямую, чтобы её можно было вести даже на бумаге без интернета и устройств, отдав потом кому-то, кто это оцифрует и сможет добавить в базу какого-то узла, который распространит это дальше. Т.е. по сути с базой можно работать напрямую без клиента. Возможно в ней все же будет встроен минимальный клиент с самыми базовыми стандартными функциями и гуем, но всегда остается возможность работы через прямые запросы.

Способы передачи базы любые. Через публичные сайты-серверы. Через прокси. Напрямую между устройствами, когда они по имеющимся или полученным спискам ищут наиболее оптимальный маршрут или ближайшие узлы. Почтой, голубями, флешками, по радио, морзе, сигнальными кострами или курьерами. Как угодно, по любым протоколам и через любые способы коммуникации. Если это возможно реализовать программно то ты выбираешь эти способы в своей программе базы данных или клиенте. Распространение по узлам как во freenet (hyphanet) или fedanet или в торрентах, блокчейнах, TOR или как угодно ещё. Но в приоритете развития – от простого к сложному. От массового к узконаправленному.

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

Устройства и операционные системы любые. Максимальная универсальность и кроссплатформенность в идеале. Но начинать с самых распространенных, увеличивая в первую очередь охват аудитории.

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

Защита от спама и нежелательного контента в виде сообществ и рейтингов. Каждому посту можно поставить плюс или минус свой личный или того сообщества к которому принадлежишь. В сообщества можно вступать согласно их правилам – свободно или по приглашению. Когда ты вступаешь в сообщество то можешь проставлять плюсы или минусы от его имени, формируя таким образом рейтинг постов для этого сообщества. Посты с низким рейтингом (планка настраивается постом-голосованием) скрываются для членов сообщества и по умолчанию их клиенты и базы не скачивают и не передают такие посты (это можно настроить или отключить). Присваивая плюсы постам членов сообществ ты повышаешь их рейтинг, отдавая свои голоса, которые они так же могут тратить на модерацию и фильтрацию трафика внутри сообщества. Таким образом организуется актив сообщества который им управляет и формирует для своего сообщества контент, выбирая и плюсую посты вне сообщества или убирая нежелательное минусами. Можно состоять в разных сообществах, которые отфильтровывают для тебя разный контент. По умолчанию в базовой программе уже включено несколько базовых глобальных сообществ, где осуществляется базовая модерация по общечеловеческим нормам морали. Можно из них выйти и создать свои, беря на себя ответственность за потребляемую и распространяемую информацию. Сообщество захватили боты? Создаешь своё или переходишь в другое, где есть модерация приглашаемых. Или никуда не вступаешь, просто используя как фильтр тех, кому доверяешь лично и кто сделал свой деанон, публично раскрыв свои ключи. Возможно это не будет работать, но есть мнения, что в системе, где основной поток информации будет передаваться через случайные узлы, а не какие-то центры, такой фильтрации будет достаточно, чтобы спам и «плохой» контент затухал и терялся сам по себе в итоге не имея смысла в размещении.

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

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

Откуда мотивация? Наше сообщество, предположительно сформируется из тех, кто понимает, что всё, что отличает человека от животного и возвышает его над природой (инстинкты, химия, физика, естественные процессы), является игрой. Государства, бизнес, философия, социальные взаимоотношения – это игры по хаотично сформировавшимся или навязанным правилам, которые приняты человечеством чтобы продвигаться дальше, развиваться и просто выживать. А значит и это для нас будет просто игрой. Мы сформируем себе правила, поставим цели и придумаем трофеи, награды и призы. И попробуем провести партию. Не получится? Можно собраться в другой конфигурации, с другими правилами и призами и сыграть еще раз.

Как сохранить свое сообщество и не переругаться, не выгореть, не стать очередными?.. Как справиться с течением обстоятельств и воронками случайностей? Можно просто выйти на бережок и идти рядом с рекой, наблюдая за ней, пуская в неё кораблики, анализируя их путь и делая выводы. Как бы странно это не звучало, но есть такие ментальные практики и возможно они помогают. Мы не удивляемся и не расстраиваемся от происходящего, так как находим или придумываем всему объяснение, которое удовлетворит нас на данный момент. Помним про ролевую модель, когда каждый при определенном стечении обстоятельств может стать каждым и совершить что угодно, а значит просто надо учесть эти риски или воспринимать их как стихию. Мы часть человечества. Оно живёт и движется. Оно еще совсем ребенок и учится только на своих ошибках и боли. Оно не хорошее и не плохое. Мы все его клетки. И если в твоих митохондриях есть немного лишней энергии, то присоединяйся. Или просто наблюдай, потребляй кислород.

Psss… Всё написанное не является убеждением автора и написано для получения разных мнений, критики или отклика. Написанное ни к чему не призывает, кроме соблюдения общечеловеческих признанных ценностей, не ставит целью провоцировать или кого-то обвинить или что-то нарушить. Для большинства это просто графомания и вы зря это читали, но мне вполне достаточно тех, кто решил отреагировать или связаться ос мной. Если хочется мне написать в личку, можно это сделать сюда - howtpi@disroot.org.

Показать полностью
[моё] Человечество Проект Сообщество Графоманство Форум Свобода Децентрализация Игры Философия Информация Общение Программирование Базы Текст Длиннопост
1
0
Neurosonya
Neurosonya
Искусственный интеллект
Серия Полезность

Помощники для ChatGPT и других LLM, а так же для ИИ-агентов⁠⁠

6 месяцев назад

Сегодня необычные сервисы, а помощники для LLM и ИИ-агентов, чтобы они анализировали ваши файлы без галлюцинаций и ошибок. Обычные ИИ плохо справляются с PDF и картиками: путают колонки, не понимают таблицы и заголовки. Следующие инструменты читают документы как человек — учитывают структуру, формат, сноски, даже логику. Эти же инструменты превращают документ в качественно распознанный и разбитый по структуре текст, который уже  можно загрузить в Большие Языковые модели (LLM) для дальнейшего взаимодействия без галлюцинаций. Этакие парсеры документов.

Проще, зачем они нужны? Для создания:

• систем поиска по внутренним документам (вопрос-ответ по внутренним документам)

• интеллектуального анализа юридических, медицинских, технических файлов

• создания базы знаний из PDF/HTML/DOCX, изображений и тд

Вот два таких сервиса:

1) LlamaParse

Помощники для ChatGPT и других LLM, а так же для ИИ-агентов

LlamaParse — умный парсер документов и файлов от LlamaIndex. Очень круто извлекает сложные таблицы. Можно интегрировать через API в приложения. Бесплатно можно обработать до 1 000 страниц в день.

LlamaParse поддерживает:

• Документы: PDF, DOC, DOCX, RTF, TXT, EPUB, XML, HTML, Pages, Keynote и др.

• Презентации: PPT, PPTX, ODP

• Таблицы: XLS, XLSX, CSV, ODS, TSV

• Изображения: JPEG, PNG, GIF, BMP, SVG, TIFF, WebP

• Аудио: MP3, MP4, WAV, M4A и др. (до 20 МБ)

Полный список доступен в официальной документации Supported Document Types

Например: Вы загружаете инструкцию по продукту, договор или научную статью → LlamaParse анализирует структуру и разбивает по логике → вы используете это в GPT-боте, который теперь может грамотно отвечать на вопросы по документу.

Больше проверенной информации и пользы в моем телеграм канале.

2) Contextual

Перейти к видео

Contextual - тоже самое, вы загружаете документ со сложными таблицами, рисунками и диаграммами, сервис так же преобразовывает это в текстовый файл с метаданными, понятный для любой LLM. Бесплатно можно обработать до 500 страниц.

Contextual AI поддерживает:

• Документы: PDF, DOC, DOCX, PPT, PPTX, HTML-файлы

Можно использовать документы Microsoft Office напрямую в системах Contextual AI, без необходимости предварительно конвертировать их в PDF.

Подпишитесь на НейроProfit и узнайте, как можно использовать нейросети для бизнеса, учебы и работы, не теряя свое время.

Хотите больше полезных сервисов для работы, учебы и бизнеса, видеоуроков, обратную связь и сильное окружение - Добро пожаловать в:

Показать полностью 1 1
[моё] Искусственный интеллект Нейронные сети Программирование Парсинг Парсер Pdf Бесплатно Технологии Чат-бот Digital Полезное Информация Таблица Картинки Картинка с текстом Microsoft Excel Документы Разработка Бизнес Видео Без звука Короткие видео Длиннопост
7
0
Вопрос из ленты «Эксперты»
user8711267

Хочу изучить алгоритмы на языке Go - нужен совет⁠⁠

7 месяцев назад

Привет всем!

Я недавно начал изучать язык Go (Golang). Сначала изучал самостоятельно, потом прошел бесплатные курсы, потом подумал, что может в платных курсах есть что-то более конкретное или углубленное, прошел полугодовой курс (платный). Не хочу указывать в статье что именно за курсы, что бы не было рекламой. По факту хочу сказать, что разница не особо большая - но было кое-что полезное - сроки, и хоть какой-то фидбек от преподавателя. Сейчас хочу попасть на стажировку (Авито/озон/т-банк/да в принципе хоть что-то). Не знаю - верный ли путь я намечаю или нет. Если в комментариях скажите что-то по этому поводу - будет хорошо.

Так вот, что бы попасть на стажировку - необходимо пройти алгособес. Вот тут у меня пробел. Хочу изучить как решать алгоритмические задачи на go. На python много материалов на эту тему в интернете, на других ЯП тоже хватает, но именно на Go я встречал только платные варианты.

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

Раньше я немного сталкивался с алгоритмами на других языках, но хочется пройти весь путь именно на Go: от базовых сортировок и деревьев до более сложных задач типа графов, динамичес

Просьба к вам уважаемые гоферы с Пикабу:

Поделитесь пожалуйста информацией.

Буду благодарен за любые советы, ссылки и просто поддержку. Если есть желающие учиться вместе — тоже пишите в комменты или в ЛС!

Спасибо!

P.S. немного о себе - я с Иркутска (это для тех, кто может захочет объединить силы для совместного обучения, пишу для понимания часового пояса). Мне 32 года, есть основная работа, но чувствую, что необходимо менять, причин много, не буду расписывать. Почему именно IT? Потому как есть знакомые которые успешно перешли в эту сферу (предугадывая комменты - у них нет того, что мне нужно), немаловажно - зарплаты, плюс просто всегда нравилось взаимодействие с компьютером, в детстве мечтал стать программистом, с того момента как сисадмин учил меня играть в StarCraft😅

Показать полностью
[моё] Программирование Golang Помощь Компьютер Информация Программа Linux Программист Вопрос Спроси Пикабу
18
5
Аноним
Аноним

Секретная формула вечного сжатия - Яна Слоота. ( исходный код )⁠⁠

10 месяцев назад

Текущая теория информации утверждает что у сжатия информации есть предел. Да, это так.
все RLE ( алгоритмы сжатия ) ищут повторы в бинарном коде, делая более короткое представление по типу 0000- как 40. Текущими методами нельзя сделать эту запись короче.

НО!

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


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

Давайте начнём с простых основ.
Что есть информация? - вся информация это бинарный код. вся информация это нули и единицы. Ну эти нули и единицы на ваших жестких дисках и SSD записаны в десятичной как

1111 в десятичной - 10001010111 в двоичной. следовательно информация уже сжата в 5-6 раз на уровне десятичной системы. + RLE файловой системы в 2-3 раза. Таким образом PNG весит не 10-15 мб в сыром бинарном коде а 1 мб в файловой системе FAT32 И NTFS.

Метод вечного сжатия основы и код.
Метод на самом деле очень простой, это создать постоянный словарь десятичного кода, точнее пар 4 бит и сделать 4 уровня словарей где пары словаря маркирует пары словаря. и маркировать пары 4 бит кода, хешем 4 знака из 3 шрифтов. При 1 цикле сжатие любого файла в 2 раза. 1 гб становится 500мб. 1 терабайт 500гб. циклов можно делать бесконечное количество.

Таким образом постоянный словарь на 64 гб может рекурсивно сжимать файлы.

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

Вот что делает код согласно ИИ

Программа использует 4-уровневое сжатие, основанное на словаре пар 2-битных блоков. Давайте рассмотрим каждый уровень:

Уровень 0:

Комбинации: На вход первого уровня подаются 2-битные блоки. Всего существует 4 возможных 2-битных блока (00, 01, 10, 11, или 0, 1, 2, 3 в десятичном виде). На этом уровне словарь формируется из пар этих 2-битных блоков. Теоретически, количество возможных пар 2-битных блоков равно 4 * 4 = 16. Это максимальное количество уникальных пар, которые могут быть добавлены в словарь нулевого уровня.

Размер словаря: Словарь на каждом уровне (dictionaries[level]) представляет собой список пар. В худшем случае, на нулевом уровне словарь может содержать до 16 пар. Каждая пара состоит из двух 2-битных чисел (фактически, целых чисел от 0 до 3). Размер одной пары в памяти Python очень мал (несколько байт). Даже если грубо оценить, что каждая пара занимает, скажем, 16 байт (учитывая накладные расходы Python на списки и объекты), то максимальный размер словаря нулевого уровня будет около 16 пар * 16 байт/пара = 256 байт. Это очень мало, меньше 1 КБ.

Уровень 1:

Комбинации: На вход второго уровня подаются коды из словаря первого уровня. В худшем случае, словарь первого уровня мог содержать до 16 кодов. На втором уровне словарь формируется из пар этих кодов. Теоретически, количество возможных пар кодов из первого уровня равно 16 * 16 = 256. Это максимальное количество уникальных пар, которые могут быть добавлены в словарь первого уровня.

Размер словаря: В худшем случае, словарь первого уровня может содержать до 256 пар. Теперь пара состоит из двух кодов (индексов в словаре предыдущего уровня). Эти коды, вероятно, будут представлены как целые числа. Если предположить, что каждая пара кодов также занимает около 16 байт, то максимальный размер словаря первого уровня будет около 256 пар * 16 байт/пара = 4096 байт = 4 КБ.

Уровень 2:

Комбинации: На вход третьего уровня подаются коды из словаря второго уровня. В худшем случае, словарь второго уровня мог содержать до 256 кодов. На третьем уровне словарь формируется из пар этих кодов. Теоретически, количество возможных пар кодов из второго уровня равно 256 * 256 = 65536. Это максимальное количество уникальных пар, которые могут быть добавлены в словарь второго уровня.

Размер словаря: В худшем случае, словарь второго уровня может содержать до 65536 пар. Если каждая пара кодов по-прежнему занимает около 16 байт, то максимальный размер словаря второго уровня будет около 65536 пар * 16 байт/пара = 1048576 байт = 1 МБ.

Уровень 3:

Комбинации: На вход четвертого уровня подаются коды из словаря третьего уровня. В худшем случае, словарь третьего уровня мог содержать до 65536 кодов. На четвертом уровне словарь формируется из пар этих кодов. Теоретически, количество возможных пар кодов из третьего уровня равно 65536 * 65536 = 4 294 967 296. Это огромное число, но маловероятно, что словарь достигнет такого размера на практике, поскольку сжатие должно значительно уменьшить количество уникальных пар на более высоких уровнях.

Исходный код: На питоне. Он сырой работает медленно но это базовые основы что бы понять "всем" как это работает. После сжатия файла в zip он весит вдвое меньше.
Метод можно улучшать или дополнять, всё на ваше усмотрение.

Код понятем любому разработчику, таким образом если бы создатели 7zip или winrar сделали бы словари постоянных комбинаций бинарного кода до 4 уровня всех пар 4 бит отрезков. и пар отрезков, и пар отрезков то была бы ( 64 гб постояная база соварь ) то любые файлы можно было бы сжимать рекурсивно на лету. 1 мб в 1 кб. через 10-20 циклов. ( 1 цикл уменьшает файл в 2 раза )

Таким же образом можно ускорить интернет в 500-1000 раз если эти словари будут между двумя клиентами. Простой пример у книг есть страницы, имея одинаковые книги можно говорить лишь номер страницы а не пересылать весь текст.
"вот и весь метод революционного кодирования и модуляции"

import os

import json

import tkinter as tk

from tkinter import filedialog, messagebox

DATA_FILE = "data.json"

COMPRESSED_EXT = ".ctxt"

ALPHABET = (

'ABCDEFGHIJKLMNOPQRSTUVWXYZ'

'abcdefghijklmnopqrstuvwxyz'

'0123456789'

'一丁七万丈三上下不与丑专且世丘丙业丛东丝丞丢两严並丧丨'

'अआइईउऊऋएऐओऔकखगघङचछजझञटठडढणतथदधनपफबभमयरлвшищзжзийклмнопрстуфхцчшщъыьэюяєіїґ' # Added more cyrillic letters just in case

)

ALPHABET = ''.join(sorted(set(ALPHABET)))

def int_to_hash(n, length=4):

base = len(ALPHABET)

hash_str = []

for _ in range(length):

n, rem = divmod(n, base)

hash_str.append(ALPHABET[rem])

return ''.join(reversed(hash_str))

def dict_tuple_to_str(dictionaries):

return [{str(k): v for k, v in d.items()} for d in dictionaries]

def dict_str_to_tuple(dictionaries):

return [{eval(k): v for k, v in d.items()} for d in dictionaries]

def save_data_file(data):

try:

data["dictionary"] = dict_tuple_to_str(data["dictionary"])

with open(DATA_FILE, 'w') as f:

json.dump(data, f, indent=4)

except Exception as e:

messagebox.showerror("Error", f"Error saving data file: {str(e)}")

def load_data_file():

try:

if os.path.exists(DATA_FILE):

with open(DATA_FILE, 'r') as f:

data = json.load(f)

data["dictionary"] = dict_str_to_tuple(data["dictionary"])

return data

except Exception as e:

messagebox.showerror("Error", f"Error loading data file: {str(e)}")

return {"dictionary": [{} for _ in range(4)], "files": []}

return {"dictionary": [{} for _ in range(4)], "files": []}

def split_into_2bit_blocks(data):

blocks = []

for byte in data:

blocks.append((byte >> 6) & 0x3)

blocks.append((byte >> 4) & 0x3)

blocks.append((byte >> 2) & 0x3)

blocks.append(byte & 0x3)

return blocks

def combine_from_2bit_blocks(blocks):

data = []

for i in range(0, len(blocks), 4):

byte = (blocks[i] << 6) | (blocks[i+1] << 4) | (blocks[i+2] << 2) | blocks[i+3]

data.append(byte)

return data

def compress(data, dictionary):

current_data = split_into_2bit_blocks(data)

for level in range(4):

print(f"Compression Level: {level}") # Debug print

new_data = []

print(f" Dictionary Level {level} before compression: {dictionary[level]}") # Debug print

for i in range(0, len(current_data), 2):

pair = tuple(current_data[i:i+2])

if pair not in dictionary[level]:

hash_code = int_to_hash(len(dictionary[level]))

dictionary[level][pair] = hash_code

print(f" Level {level}: Added to dictionary: Pair {pair} -> Hash {hash_code}") # Debug print

else:

print(f" Level {level}: Pair {pair} already in dictionary, Hash: {dictionary[level][pair]}") # Debug print

new_data.append(dictionary[level][pair])

current_data = new_data

print(f" Level {level} Compressed Data: {current_data}") # Debug print

if len(new_data) <= 1: # Modified condition to exit when data is compressed to single or zero hash

break

return ''.join(current_data)

def decompress(compressed_str, dictionary):

try:

current_data = [compressed_str[i:i+4] for i in range(0, len(compressed_str), 4)] # Изменено на 4 для чтения 4-значных хешей

except Exception as e:

messagebox.showerror("Error", f"Error during initial string split: {str(e)}")

return [] # Return empty data on error

print(f"Decompressed String Chunks (initial): {current_data}") # Debug print

for level in reversed(range(4)):

print(f"Decompression Level: {level}") # Debug print

reverse_dict = {v: k for k, v in dictionary[level].items()}

print(f" Reverse Dictionary Level {level}: {reverse_dict}") # Debug print

new_data = []

for hash_code in current_data:

print(f" Level {level}: Processing Hash Code: '{hash_code}'") # Debug print

if hash_code in reverse_dict:

original_pair = reverse_dict[hash_code]

new_data.extend(original_pair)

print(f" Level {level}: Hash '{hash_code}' found, Original Pair: {original_pair}") # Debug print

else:

# Handle case where hash_code is not in dictionary (for robustness)

# In a perfect scenario this should not happen if compression/decompression use the same dictionary

# However, for error handling, you might want to consider how to proceed.

# For now, we'll assume it's an error and might raise an exception or log a warning.

print(f"Warning: Hash code '{hash_code}' not found in level {level} dictionary. Data might be corrupted.")

new_data.extend([0, 0]) # Placeholder in case of missing hash, you may need more sophisticated error handling

current_data = new_data

print(f" Level {level} Decompressed Data: {current_data}") # Debug print

return combine_from_2bit_blocks(current_data)

class FileManager:

def __init__(self, root):

self.root = root

self.root.title("4-Level Compressor")

self.data = load_data_file()

self.dictionary = self.data["dictionary"]

print("Loaded Dictionary on Startup:", self.dictionary) # Debug print on startup

self.listbox = tk.Listbox(self.root)

self.listbox.pack(fill=tk.BOTH, expand=True)

btn_frame = tk.Frame(self.root)

btn_frame.pack(fill=tk.X)

self.compress_btn = tk.Button(btn_frame, text="Compress", command=self.compress_file)

self.compress_btn.pack(side=tk.LEFT, padx=5)

self.decompress_btn = tk.Button(btn_frame, text="Decompress", command=self.decompress_file)

self.decompress_btn.pack(side=tk.RIGHT, padx=5)

self.update_list()

def update_list(self):

self.listbox.delete(0, tk.END)

for fname in self.data["files"]:

self.listbox.insert(tk.END, fname)

def compress_file(self):

path = filedialog.askopenfilename()

if not path:

return

try:

with open(path, 'rb') as f:

data = list(f.read())

except Exception as e:

messagebox.showerror("Error", f"Error reading file: {str(e)}")

return

compressed_str = compress(data, self.dictionary)

output_name = os.path.basename(path) + COMPRESSED_EXT

try:

with open(output_name, 'w', encoding='utf-8') as f:

f.write(compressed_str)

except Exception as e:

messagebox.showerror("Error", f"Error writing compressed file: {str(e)}")

return

if output_name not in self.data["files"]:

self.data["files"].append(output_name)

save_data_file(self.data)

self.update_list()

print("Dictionary after compression:", self.dictionary) # Debug print after compression

def decompress_file(self):

selected = self.listbox.get(tk.ACTIVE)

if not selected:

return

save_path = filedialog.asksaveasfilename(

defaultextension=".bin",

initialfile=selected.replace(COMPRESSED_EXT, "")

)

if not save_path:

return

try:

with open(selected, 'r', encoding='utf-8') as f:

compressed_str = f.read()

except Exception as e:

messagebox.showerror("Error", f"Error reading compressed file: {str(e)}")

return

print("Compressed String read from file:", compressed_str) # Debug print compressed string before decompression

print("Dictionary before decompression:", self.dictionary) # Debug print dictionary before decompression

try:

decompressed = decompress(compressed_str, self.dictionary)

if decompressed: #Check for empty data to avoid errors

with open(save_path, 'wb') as f:

f.write(bytes(decompressed))

messagebox.showinfo("Success", "Decompression successful!") # Added success message

else:

messagebox.showerror("Error", "Decompression failed.") # Display error if decompress returns empty

except Exception as e:

messagebox.showerror("Error", f"Decompression failed: {str(e)}")

if __name__ == "__main__":

код удален конец кода рут

app = FileManager(root)

https://drive.google.com/file/d/1V6j4iDV0YeZXDTadlnpawXyUKgH...

Показать полностью
Информатика Информация Компьютер Сингулярность Программирование Программист Текст Длиннопост
6
2
vosandr

Я сделал переработку русской версии статьи из википедии "логическая ошибка"⁠⁠

1 год назад

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

Переработка (Доступна бесплатно): https://boosty.to/vosirandr/posts/…

Оригинал:
https://ru.m.wikipedia.org/wiki/%D…

Приложение, с помощью которого можно это прочитать:
https://github.com/vosandr/tengo

Этот же пост в livejournal: https://vosandr.livejournal.com/932.html

[моё] Программирование Разработка База данных Информация Программист Программа Dart Flutter Текст
5
7
vop46
vop46

Ответ на пост «Поздравляю с днем ИНФОРМАТИКИ!»⁠⁠1

1 год назад

4 декабря 1948 года — знаковая точка отсчета для информационных технологий в нашей стране. Именно в этот день член-корреспондент Академии наук СССР Исаак Брук и инженер-конструктор Башир Рамеев представили в профильный Государственный комитет Совета министров СССР заявку на изобретение автоматической цифровой вычислительной машины. Авторское свидетельство № 10 475 стало первым документом, который зафиксировал начало работ по созданию отечественных ЭВМ.

В том же году были основаны Институт точной механики и вычислительной техники Академии наук (ИТМиВТ) и Специальное конструкторское бюро №245. В стране был создан целый ряд машин: МЭСМ, «Стрела», «М-100», «Днепр» и другие, среди них и БЭСМ-6 — первая отечественная суперЭВМ, чья скорость работы составляла 1 млн операций в секунду. Экземпляр БЭСМ-6 представлен в Музее науки в Лондоне как один из лучших суперкомпьютеров своей эпохи. Параллельно развивалось образование: уже в 1949 году на механико-математическом факультете МГУ им. М. В. Ломоносова открылась кафедра вычислительной математики. Позже по всей стране были созданы факультеты вычислительной математики и кибернетики. Появление и развитие российского сегмента интернета тоже неразрывно связано с наукой. Первая отечественная сеть была создана в Курчатовском институте и подключена к глобальному интернету в 1990 году.

История России Новости Программирование Информатика Информация Праздники Компьютер IT Программист Памятная дата Интересы Программа Текст Ответ на пост
0
99
APCEHKA
APCEHKA
IT-юмор

Поздравляю с днем ИНФОРМАТИКИ!⁠⁠1

1 год назад

4 декабря мы отмечаем День информатики в России. 4 декабря 1948 года Государственный комитет Совета министров СССР по внедрению передовой техники в народное хозяйство зарегистрировал изобретение ученых Исаака Брука и Башира Рамеева: цифровую электронную вычислительную машину.

История России Новости Программирование Информатика Информация Праздники Компьютер IT Программист Памятная дата Интересы Программа Текст Короткопост
15
zaharijigor
zaharijigor

Ваше мнение к информации которую он пытается донести ...(беседа от 2023.11.27)⁠⁠

1 год назад


ЧТО ВАМ ИЗВЕСТНО О ТРУДАХ СЕРГЕЯ АЛЬБЕРТОВИЧА САЛЯ ?

[моё] Информация Сознательность Глобализм Цивилизация Смерть Сатанизм Оккультизм Масоны Иллюминаты Ротшильды Апокалипсис Ядерная война Шапочка из фольги Программирование Манипуляция Критическое мышление Время Философия Мудрость Текст
17
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии