Search
Write a publication
Pull to refresh
84
15.5

User

Send message

Мы все ругаем ИИ, и за дело, но вот в ходе дискуссии возник спор: можно ли с помощью ИИ написать код, который будет работать, если человек вообще не владеет нужным языком программирования, но хотя бы чуть-чуть помнит предметную область.

И вот что получилось:

using System;
using System.Collections.Generic;
using System.IO;
using System.Text;

class LZ77Compressor
{
    const int WINDOW_SIZE = 4096;
    const int LOOKAHEAD_BUFFER_SIZE = 18;

    public static void Compress(string inputPath, string outputPath)
    {
        byte[] input = File.ReadAllBytes(inputPath);
        using var output = new BinaryWriter(File.Create(outputPath));

        int pos = 0;
        while (pos < input.Length)
        {
            int bestMatchDistance = 0, bestMatchLength = 0;

            int startIndex = Math.Max(0, pos - WINDOW_SIZE);

            for (int i = startIndex; i < pos; i++)
            {
                int matchLength = 0;
                while (matchLength < LOOKAHEAD_BUFFER_SIZE &&
                       pos + matchLength < input.Length &&
                       input[i + matchLength] == input[pos + matchLength])
                {
                    matchLength++;
                }

                if (matchLength > bestMatchLength)
                {
                    bestMatchDistance = pos - i;
                    bestMatchLength = matchLength;
                }
            }

            if (bestMatchLength >= 3)
            {
                output.Write((byte)1); // флаг: это ссылка
                output.Write((ushort)bestMatchDistance); // расстояние
                output.Write((byte)bestMatchLength); // длина
                pos += bestMatchLength;
            }
            else
            {
                output.Write((byte)0); // флаг: это литерал
                output.Write(input[pos]); // байт как есть
                pos++;
            }
        }
    }

    public static void Decompress(string inputPath, string outputPath)
    {
        using var input = new BinaryReader(File.OpenRead(inputPath));
        using var output = new BinaryWriter(File.Create(outputPath));

        List<byte> buffer = new();

        while (input.BaseStream.Position < input.BaseStream.Length)
        {
            byte flag = input.ReadByte();
            if (flag == 1)
            {
                int distance = input.ReadUInt16();
                int length = input.ReadByte();

                int start = buffer.Count - distance;
                for (int i = 0; i < length; i++)
                {
                    byte b = buffer[start + i];
                    buffer.Add(b);
                    output.Write(b);
                }
            }
            else
            {
                byte b = input.ReadByte();
                buffer.Add(b);
                output.Write(b);
            }
        }
    }
}
class Program
{
    static void Main()
    {
        string input = "input.txt";
        string compressed = "compressed.lz";
        string decompressed = "output.txt";

        LZ77Compressor.Compress(input, compressed);
        LZ77Compressor.Decompress(compressed, decompressed);

        Console.WriteLine("Сжатие и распаковка завершены.");
    }
}

Я не знаю С#, и даже не помню LZ - кто-нибудь может попытаться это скомпилировать - оно работает или нет?
Или опять ИИ всё навыдумывал?

Tags:
Total votes 10: ↑1 and ↓9-8
Comments8

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

Иван Фёдорович Крузенштерн, тел. +7 901-202-33-44, адрес г. Мусохранск, улица Скотопрогонная д.4 кв.13

А это не персональные данные, нет?
Доступные для неопределенного круга лиц, начиная от почтальонов всея страны, включая случайных гопников, взламывающих от скуки почтовые ящики в подъезде, дворника-нелегала, собирающего мусор в подьезде, и до работников мусорного полигона, набранных из лиц проблемного образа жизни, сортирующих мусорные мешки за копейки.

Где "принятые мероприятия", где "приказ о назначении ответственного (не более одного человека)" и прочая-прочая?

Тут должна быть крылатая фраза за авторством Лаврова, но мы же приличные люди...

Tags:
Total votes 5: ↑5 and ↓0+5
Comments11

Занимательная арифметика ни о чем:

Как писал уже - переделал TV-бокс в десктопный компьютер, работающий с большим монитором.

Одна из целей в том числе: проверка теоретической "энергоэффективности" сего девайса.
Питается он от USB, замеры потребления показали: максимум - 0.7А при 4.99В, то есть с округлением 3.5 Ватта.
Вспоминая "биг-тауэры" 15-летней давности, уступающие в производительности, но с блоками питания по 400 Ватт... Хм...

А что, если посчитать автономную работу?
Допустим, у нас есть аккумуляторная батарея 12В, и преобразователь DC-DC с КПД 100% (чтобы проще считать)
На сутки работы требуется 24 * 3.5 Ватт = 84 Ватт*ч.
Приводя ватты к 12-вольтовой батарее получаем 7 А*ч.
Разумеется, свинцовая батарея дает где-то треть от номинала - значит, это будет 21 А*ч. Стандартная автомобильная - от 45 и более.

То есть, на одной заряженной автомобильной батарее такой компьютер, без учета монитора, может работать пару суток?
А если взять LiPO4, у которой реальная емкость более соответствует номиналу - несколько суток с запасом?

При этом, чтобы покрыть расход в 84 Ватт-часа - достаточно заряжать эту батарею всего один час в день 100-ваттной солнечной панелью, еще и запас останется, на всякие там КПД. А день немножко длиннее чем 1 час.

Возобновляемая энергетика как она есть.
Еще бы монитор был энергоэффективным...

Tags:
Total votes 1: ↑1 and ↓0+1
Comments9

Вы любите теории заговора?

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

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

Как бы распределились балансы с точки зрения конкуренции?
Нишевый софт ни с кем не конкурирует, разве что внутри группы. А фанаты "Зеленой груши" просто фанатеют от того что это "Зеленая груша": кто попал в фанаты - пропадает навсегда.

А вот Мегахард вполне может видеть угрозу со стороны ничейного софта, который постепенно захватил сервера, встраиваемые устройства, холодильники, чайники, и уже покушается на компьютеры (впрочем, покушается давно и как-то не очень успешно. Но мало ли.)

И тогда Мегахард создает/покупает Умные Инструменты, чтобы фрименам было проще и приятнее писать ничейный софт, помогает им.
Казалось бы, зачем?

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

Кто их знает, может быть это просто очередная теория заговора...

Tags:
Total votes 1: ↑1 and ↓0+3
Comments2

К рекламе на сайтах все давно привыкли. Наверное, все так же понимают, что рекламные баннеры - это способ заработка для сайта, поэтому просьбы "отключите пожалуйста блокировщик" - это вполне понятно.

Но почему на некоторых сайтах, не будем ни на кого показывать пальцем, простая операция блокировки рекламы не только убирает какие-то там дополнительные картинки, которые можно было бы считать элементом дизайна и даже украшением - но еще и снижает загрузку CPU примерно в 8 раз?

Это что, показ картинки НАСТОЛЬКО процессор грузит? Какая-нибудь игра типа Quake c "живой" графикой - и то меньше ресурсов жретъ.
Или её попиксельно рисуют джваскриптом?
Или это не в картинке проблема?

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

Или эту мысль надо доносить до рекламодателей, в лице их SMM-щиков?

Tags:
Total votes 11: ↑11 and ↓0+13
Comments11

Много лет назад, устав от постоянных тормозов Windows, открыл для себя существование UNIX, точнее, FreeBSD. Иксовый десктоп, все программы - на том же компьютере всё летало заметно быстрее.
Даже Quake (да, он тоже работал во Фре).

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

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

И вот прошли годы. Уже Линукс (прежде всего из-за лучшей поддержки разного железа), Убунта, которая с каждой версией становилась всё замедленнее и усложненнее.

Видимо, программисты из мира Windows принесли своё вИдение прекрасного: появились D-bus, systemd, gsettings - теперь далеко не всегда можно поправить конфиг-файл от программы XXXX, а потом смотреть в лог /var/log/xxxx.log - нет, теперь настройки хранятся где-то в скрытом месте и меняются специальными командами, а лог полагается смотреть через специальную утилиту, и запускается всё это не простым скриптом типа пошагового выполнения /etc/rc.local, а набором команд systemctl, которые сработают или не сработают, в зависимости от наличия определенных файлов в нужных местах...

А самое главное - после проведенной "интеграции" всё стало тормозить и глючить.
Задумчивый Gnome медленно и печально открывает окошки - ага, с экраном повернутым на 90 градусов. Потому что новая "интересная фишка" - считывать датчик ориентации экрана, но считывается он не всегда правильно, а "просто закомментировать в конфиге" нельзя, можно только через меню, потом Сохранить, а потом настройка опять вдруг слетает после незаметного автообновления, которое как бы отключено, но не совсем...
Погодите-ка, что-то это мне напоминает? Шаманство, глюки, неустранимые достоинства, "слетевшие драйвера"...

Правда, можно повыключать всё это вместе с Гномом - и всё снова быстро летает: ок, так и сделал, вернул любимый WindowMaker, всё прекрасно.
Но вот обновление версии какой-то программы - а новая теперь только через flatpak, а ему теперь необходим d-bus, "если его нет можно поставить эмулятор", блаблабла...

Но зачем?! Зачем было делать из Linux такой же интегрированный сам в себя монолит, с неким "реестром" настроек и "системным журналом", в который нельзя просто так посмотреть?
Для этого уже есть Windows! Зачем тащить это сюда?

Tags:
Total votes 7: ↑5 and ↓2+4
Comments27

Солнце - источник жизни на Земле.
Но кроме этого - Солнце источник очень мощного УФ-излучения.

Обычный городской житель сталкивается с УФ-излучением, как правило, на пляже - именно оно вызывает красивый загар, или некрасивую меланому - у кого как.

Но если вы живете в своем доме, и если вы попытаетесь размещать какое-то оборудование "на улице" - вам придется познакомиться с интересными эффектами, которые вызывает УФ-излучение солнца. Прежде всего - разрушается пластик.

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

Если изоляция разрушена в достаточной мере - возможно и замыкание, причем об этом вы узнаете как всегда внезапно.

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

Дубеет резина - она также теряет свою эластичность и в определенный момент либо окончательно твердеет, либо просто разламывается кусками при нажатии.

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

Лопаются капроновые стяжки, они становятся хрупкими и перестают что-либо держать.
Даже пластиковые бутылки из ПЭТ, те самые, которые "300 лет будут плавать в океане" - в океане может и будут, а на земле уже через пять лет крошатся при ударе.

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

Причем, черные пластиковые мусорные пакеты совершенно неустойчивы, и всего за месяц могут прогореть в клочья. Дело не в цвете, а в материале.

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

Это убережет вас от всяких неприятных неожиданностей, особенно если вы затеете что-то делать типа "умного дома", вытаскивая на улицу провода и датчики...

Tags:
Total votes 4: ↑4 and ↓0+4
Comments5

Вот писал я про то, как установил на TV-приставку Linux и подключил к ТВ как к монитору.
Ну и "чтобы зря не пропадало" - а дай-ка посмотрю один известный сейчас сериал, на сайте, посвященном этому самому сериалу.
(потому что смотреть можно только в браузере, а браузер на Андроиде на этом сайте жутко тормозит)

Но и тут всё начинает сразу же тормозить, процессор под 100%, память забита, всё еле шевелится. Зато можно удобно посмотреть в Инспекторе, что за дела происходят.

А там зоопарк! Во-первых, куча скриптов тянет рекламу с каких-то левых адресов, куча следилок типа webvisor, всё это в фоне работает и грузит систему.
И вот такое:

То есть, получается, оно еще и Ютуб смотрит фоном, то ли показатели накручивает, то ли видео копирует.
Причем вроде как под моим аккаунтом - я же в Гугле залогинен?

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

Я конечно понимаю что сам смысл этого сайта в том чтобы делать деньги на показах и накрутках, но совесть надо иметь? Не на 100% же процентов грузить, вплоть до невозможности работы?

Tags:
Total votes 8: ↑8 and ↓0+9
Comments6

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

Идем смотреть. Сайт - куча красивых картинок, десяток страниц, на каком-то "PHP хостинге" - и тормозит, потому что картинки - на весь экран, в формате BMP.

А времена - когда аналоговый модем 57600 кбит/с - роскошь. И вот тянуть эти мегабайтные BMP по модему...

Обьяснили, "мягко говоря, неоптимально сделан сайт", вроде понял.
Спрашиваем: а как так получилось, вы когда смотрели - что видели?
Да, говорит, в вебстудии на компьютере запустили, всё очень красиво, быстро, чётко было...

Зачем люди ссорится будут, пошли по знакомству проблему утрясать.
А там действительно, "вебстудия" в одно лицо, стоит навороченный комп, сидит молодой человек дизайнерской наружности и ваяет красивое. Фотошоп, Корел, вот это всё.
Прикручивает к какой-то CMS, всё - картинками, большими, красивыми, и рамки вокруг текста картинками (кто помнит как это делалось до CSS border).
И вот прямо как в Windows сохраняет - в BMP, так и прикручивает. БезУчетаРегистра.TXT имен файлов.

- У меня - говорит - всё работает! Вот, видите, быстро и красиво!
- а у клиента на сайте?
- а это у него хостинг там кривой, на дурацком юниксе, это не моя проблема!
- но почему картинки в BMP??
- а что, работает же? В PSD не работает, в jpg мылится.
- про то, что File.TXT и file.txt - разные файлы, знаешь?
- у меня - одно и то же, а у него там хостинг кривой!

В общем, "я художник, я так вижу!". Человек освоил Фотошоп, Ворд, и стал вебмастером.
Еле убедили, что в его же интересах изучить еще jpeg и доработать сайт, а то клиент нервный, еще из этих, малиновых пиджаков, может обидеться и предьявить за развод.
Ну вроде как доработал потом.

А проблема тут в том, что позже не раз попадалось подобное: разработчик чего-либо разрабатывает это на топовой машине, тестирует на топовом сервере, который стоит тут же, за спиной, подключен гигабитным кабелем, показывает это творение заказчику - стороннему или своему же руководству, получает одобрение и продукт идет в работу.

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

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

(это все к вопросу о пуристах, требующих быстрые легковесные программы и сайты на HTML)

Tags:
Total votes 5: ↑5 and ↓0+6
Comments7

Попытка реверс-инжиниринга "черного ящика". В роли черного ящика - система информирования о пропущенных вызовах от компании МТС.

Итак, приходит СМС: у вас есть пропущенные вызовы, для прослушивания позвоните по номеру ХХХХ - пока все хорошо.

Звоню. Робот предлагает прослушать, нажав 1. Нажимаю:

"Звонок от семидесяти девяти миллиардов, сколько-то там миллионов, блаблабла, сорОка пяти:"

(Звонок левый, неинтересно, а вот на 79 миллиардах задержимся)

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

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

Но самый интересный момент: есть ли в МТС что-то типа отдела тестирования бизнес-приложений? И почему нет?

Tags:
Total votes 1: ↑1 and ↓0+1
Comments1

Гордость "настоящего программиста" - это нечто. Он учился! У него и справка (диплом, сертификат) есть! Он крутой профессионал, с хорошей теоретической подготовкой!

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

А потом его творение идет в прод, а он сам, через некоторое время, меняет работу. И вот тут-то оказывается, что никто не понимает как оно работает - потому что его код после ряда обновлений работать перестал, а новые программисты любили другой язык программирования, и им непонятно как работает вот это brmd ff-?d(!-[~dde][df] - 8, и почему именно 8?

И тогда, с матами или без оных, весь кусок переписывается целиком. И приходится изображать злого надсмотрщика, чтобы очередной талант с сертификатом и хорошей подготовкой писал, цуко, понятно даже всяким дуболомам.
Ибо пройдет время и кто-то будет пытаться понять, почему для вычисления 2 * 2 использована самая модная на тот момент система библиотек со 100500 зависимостями, не поймет, и будет переписывать снова, тратя время и деньги.

А может посадить несколько разных LLM-ок, и пусть они код пишут и друг за другом дорабатывают?
И еще одну, чтобы ими руководила...

Tags:
Total votes 17: ↑8 and ↓9-1
Comments2

Information

Rating
824-th
Registered
Activity