- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
int main()
{
using Human = NamedTuple<
Field<"name", std::string>,
Field<"age", int>
>;
using User = NamedTuple<
Field<"login", std::string>,
Field<"password", std::string>
>;
Human vasya{ "Vasya", 16 };
vasya.get<"age">() = 17;
User user{ "xXxBaCRHxXx", "p4ssword" };
auto vasyaMerged = mergeNamedTuples(vasya, user);
std::cout << vasyaMerged.get<"name">() << " is " << vasyaMerged.get<"age">() << " years old!" << std::endl;
std::cout << "Login is " << vasyaMerged.get<"login">() << " and password is " << vasyaMerged.get<"password">() << std::endl;
}
Но конпилить не решились
Если много метушиться
Можно разума лишиться
Если разума лишиться
Нечем будет метушиться
Кстати гост, это ведь по сути и есть кокогенерация
А в питоне всё в кашу, зато ближе к гомоиконщине.
>Тут есть чёткая грань
пока есть:)
Но вот уже целые функции (getFieldIdx) у нас в компайл тайме работают
Правда в питоне в рантайме можно генерить и классы тоже.
Просто это очень не быстро в сравнении с крестами)
Вообще говоря есть. Это же ставит крест на статическом анализе. Ужк ничего нельзя узнать о коде до его исполнения.
Ну собственно в смоллтолке никакой статической типизации и не было, емнип.
А еще это очень отсосно с точки зрения перформанса.
Но зато это позволяет делать очень крутые штуки, например умную делегацию.
Ты можешь получить объект "вызов метода" с его аргументами, подождать немного, и передать другому объекту.
Могу ошибаться, но вроде бы точно так же работает ObjC.
LISP это как раз та самая гомоиконность, где нету разницы между кодом и данными, а потому можно считать, что нету разницы между "компайл" и "ран" таймом
Кстати, питон еще более ли менее "статический": там всё таки не принято править классы в рантайме без надобности (кроме фреймворков), а например в Ruby очень даже принято.
А в JS и вовсе "классы" это просто сахар для создания объектов с полем "prototype".
Скриптушня должна быть динамической, иначе нахуй она вообще нужна?
У нас был когда-то очень давно тред типа
* структурное программирование это когда есть структуры
* процедурное когда процедуры
* функциональное когда функции
итд
Декларативное -- когда есть декларации (т.е. сишка подходит).
>Логическое -- когда есть bool.
(т.е. классическая сишка не подходит).
З.Ы. А, нет... sh -> ash -> dash
я вот тут рыл (https://uefi.org/sites/default/files/resources/ACPI_6_3_final_Jan30.pdf) и там походу только калибровка и состояние заряда есть.
То есть универсального способа отключить зарядку нет, только всякие вендор-специфик штуки?
Декомпильни свои таблицы и посмотри какие там методы есть. Хотя по четырём буквам там хуй поймёшь что они делают...
Я, собсно, чего туда полез.
До меня доебался знакомый, и спрашивает меня как тыжпрограммиста как удлиннить жизнь батареи не доводя её до заряда 100%.
Понятно, что контроллер не позволит этого сделать, но он хочет сам этим управлять.
Некотоыре вендоры делают софт, но универсального способа нет.
Я вот и решил понять, действительно ли его нет.
Похоже, что Smart Battery в ACPI довольно read-only питушня
Или он хочет ещё ниже?
Контроллер конечно не даст ей разрядиться и зарядиться полностью, иначе она сломается.
Контроллер держит её в промежутке 20%-80% наверное, и врёт (через ACPI) что она 100%.
Но он хочет еще, пушо начитался говна в Интернете.
Некоторые вендоры же дают такую возможность
По-моему это история в духе "я переместил кеш браузера на HDD и теперь мой SSD проживёт дольше!"
Будет заряжать батарею чаще (ёмкость то упала), в итоге то на то и выйдет, имхо. Зато ёбли себе добавит.
Но его заклинило)
Он поставил batterylimiter, он пищит при зарядке 80%, и предлагает руками вынуть штепсель))
Ага, чтобы батарея пошла на разряд... Заебись оптимизация жизни батарейки.
В общем мне было важно понять, что его хотелка не реализуема в общем случае, и похоже что так.
Это всё напоминает высказывание Пи по ручную оптимизацию кода с JIT
Как у машины на ходу руками подталкивать колёса, чтобы она быстрее ехала
а если я официальную прошивку поставил с сайта производителя?
Для официальной прошивки надо идти в сервисный центр и там официально её ставить.
лаком тоесть
не для меня, для друга
добейся среднего напряжения на элементах 3.7 и сунь в холодильник
так батареи пролонгируют и не иначе
Это же ГК... Тут критерии нормальности не работают.
в крайнем случае файку выбросишь если ребята будут дразнить
Ни диагностики, ничего, второе поле просто пропадает.
Можня даже без merge, просто два поля с одиняковыми именями.
Хотя идея мне нравится. Это не баг, это просто UB передавать такие данные
Имення! Это C++-way.
Ну ладня, ладня, ня: https://wandbox.org/permlink/ixfKOuydrjBl3U0E (какой кавай, почти 44 килобайта ошибок!). Повторения ищем за O(N^2) — компилятор крепкий, компилятор стерпит o(○`ω´○)9.
Дальше не читал.