Pull to refresh
51
0
Дмитрий @bogolt

User

Send message

Ну так и данных обрабатывала система в разы меньше. Сайты были примитивнее, экраны меньше. Я вот привел примеры того что реально куча вещей тогда тормозила, ну нельзя было установить ОС за 15 минут ( как сегодня ставится убунта ), да даже установка игры ( с диска например ) занимала ощутимо много времени. Ну или вот я помню как играл в "Проклятые Земли" на эээ 486 компе кажется. Загрузка игры ( а загружаться приходилось часто ) занимала вечность. Натуральную вечность. Да даже в примитивном БГ1 или Фоллауте загрузки были долгими.

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

Так что именно было быстро, что сегодня стало долго ?

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

Где же вы были года два назад, мы как раз гошников искали =(

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

type A struct {
  X int
}

type B struct {
  S string
}

data = `{"X": 10, "total":100}`

parsedA, total, err := ParseData[A](data)

data = `{"S": "test", "total":5}`
parsedB, total, err := ParseData[B](data)

вот такого хочется, чтобы Total извлекался сам, так как я знаю что он есть в каждой структуре, но при этом сам он мне в типах A, B не нужен

лучше сравнивать через time.Since(started) без преобразования к UnixMicro() потому что в вашем случае вы сравниваете абсолютное время, а в случае time.Since() будет использован монотонный таймер.

И да, предполагаю что создание 1 миллиарда горутин это прямо дорого,под каждую нужно выделить свою память как минимум.

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

Вот сегодня хотел сделать

func DoSomething[T any](data T) {
  type Request struct {
     T
     MoreData int
  }
  ///...
}

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

Отсутствуют исключения

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

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

  1. не могу дальше работать - выбрасываем ошибку наружу

  2. в общем ерунда, можно обработать локально, вывести лог и продолжить работу или сделать что-то еще

и все, код получается до безобразия предсказуемый и понятный.

Сотрудники заботящиеся о благосостоянии компании которая платит им зарплату, как по мне, что-то из мифов.

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

Но тогда "ты инициируешь опротестование ошибочного перевода и банк принудительно возвращает вам те 42 тысячи которые вы сами отправили ?"

А чем Цива 5/6 не угодила? Они достаточно современные и играбельные.

я вполне могу написать программу для работы с 2048-битными числами для Z80

Но проблема-то в другом. Вам нужно будет переписать половину ядра системы потому что огромное количество системных функций будут ссылаться на системное время, а оно (удивление) будет завязано на системный time_t. Поэтому конечно если у вас какое-то свое приложение вы можете постараться и адаптировать его, но если мы хотим решить проблему целиком то самое простое это перевести все 32 битные линуксы на 64 битные.

По ссылке, я так понимаю, Вы не ходили. Речь вовсе не про "проблему 2000".

Я сходил по ссылке но почему-то решил что говорите о проблеме Y2K.

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

Хранятся они в одной 32-битной целочисленной переменной, максимальное
значение которой может достигать 2 147 483 647.....
Операционные системы наверняка должным образом адаптируют

да как-бы давно уже все адаптировали.

printf("time_t size in bytes = %ld\n", sizeof(time_t));

выдает time_t size in bytes = 8

Ну понятно что в каком-то роутере где до сих пор 32 битный линукс часы неправильно переведутся или в другом старом железе/ос. Но много ли такого железа доживет до 38 года?

Энтузиаст представил рыбу электронной таблицы в Google Sheets для компилятора микрокода самодельного процессора

Это у вас такой автопереводчик или я просто не знаю что такое "рыба электронной таблицы" ? Если что звучит максимально странно.

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

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

Win32/ImgUI/wxWidgets/Qt в одном сравнении ? Ну такое.

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

Ну правда, ImGui и виджеты?

Win32 и Qt ?

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

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

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

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

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

(остальные решения щупать не доводилось ).

1
23 ...

Information

Rating
Does not participate
Registered
Activity