Похоже, микроядра прокляты
Гугл сокращает порядка 400 разработчиков фуксии, это 16% от всех
https://www.opennet.ru/opennews/art.shtml?num=58528
Фуксия это микроядерная ос, которая должна похоронить андроид, но пока работает только на фоторамках
Гугл сокращает порядка 400 разработчиков фуксии, это 16% от всех
https://www.opennet.ru/opennews/art.shtml?num=58528
Фуксия это микроядерная ос, которая должна похоронить андроид, но пока работает только на фоторамках
В своей основе вопрос сжатия это принцип Дирихле: вот у нас строки большого размера, их больше, вот у нас строки меньшего размера, их соответственно меньше. количество клеток не совпадает с количеством голубей, ничего не получается, все расходимся? А вот и нет, можно добиться равенства, причем двумя путями: или меньше голубей, или больше клеток.
1)меньше голубей: Вот у нас множество всех строк, или файлов - вопрос интерпретации, длинны N. Мощность такого множество соответственно 2^N. Теперь посмотрим на множество всех строк длин (N-1) и (N-2) и…(1). Мощность этого множество будет ∑2^N, где N от (N-1) до (1), и равно это 2^N-2. Сравниваем мощности множеств, первое больше на два элемента. Ну а теперь финт ушами - мы просто берем и выкидываем два элемента из первого множества, для удобства это строки состоящие только из 0 или 1. И опаньки, биекция, если не верите можете прям на бумажке нарисовать и сравнить. И что получили в итоге? Получили что любую, кроме двух, строк можно переписать в виде минимум на один бит короче. Убрали бы больше элементов, сократили бы еще сильнее, это просто самый простой вариант.
2)больше клеток: Возьмем множество всех строк длинны от N до 1. Зададим функцию F(n), и обратную ей G(n), которая берет на вход один элемент и выдает другой. Во общем то все. F(n) функция абсолютно арбитрарная, просто применяешь F(n) несколько раз, пока нужный результат не получишь и все. Другое дело что хотелось бы побыстрее, поэтому -
2.1)столько же клеток, но в другом порядке: Вот возьмем множество всех строк размера N и упорядочим его следующим образом. Для этого мы берем функцию X(n), делает она следующие - берет бинарную строку и возвращает натуральное число от 1 до 2^N. Как она должна его считать честно не знаю, но она должна делать что-то приблизительно следующие: строим бинарное дерево(?) сравнений, сначала сравниваем половинки строки друг с другом. потом четвертинки, и вот тут уже не знаю, нужно ли сравнивать каждую с каждой или хватит сравнений 1 к 2, и 3 к 4. потом осьмушки итд. в конце сравниваем соседние биты, вот тут каждый с каждым точно лишнее. Потом переводим эти сравнения в значения с весами, например строки в которых есть повторения половинок должны быть ниже чем те у которых повторяются четвертинки, а те у которых нет повторений ни четвертинок ни половинок должны стоять выше, ближе к началу, к числу 1. Потом делаем над этими значениями некие операции и ВЖУХ! получаем натуральное число, он же порядковый номер. К примеру если N=8, то строка 11111111 должна иметь номер 256, строка 00000000 номер 255, строка 11111110 номер 254 итд. Вот что это за ВЖУХ! и нужно выяснить. Сначала я думал что можно просто обойтись тем что можно представить строку как число сочетаний из количества единиц по N, и все сочетания, где количество единиц приближается к половине длинны, просто поставить спереди, но потом прикинул что например строка 00001111 при таком подходе будет стоять выше чем строка 00101001, а это фатальный недостаток. Ну вот, допустим выясняли как ВЖУХ! выглядит, нашли порядковый номер в упорядоченном по повторениям списке. А теперь просто подставляем вместо этой строки другую строку с тем же номером, но в списке упорядоченном просто лексикографически. Ну а дальше например отправляешь данную строку в метод 1).
Остается только реализовать это все в софте. А вот это я не умею. Может кто-нибудь напишет?
Решил не мелочиться, и продолжить парад хороших идей. В этот раз мы разбираем модель передачи данных позволяющую их сжимать. Суть метода в заглавии: нам интересны не только сами данные но и время их прибытия, и в зависимости от времени их кодирование будет меняться. Для лучшего понимания смотрим на пример с картиночки:
Рассмотрена простейшая модель сети. Есть сервер, к серверу подключены два клиента, клиенты не сообщаются друг с другом. В некий момент времени сервер начинает передавать одинаковые данные своим клиентам. Ширина канала по сути 2бита в сек. Как бы сервер передавал без схемы сжатия? Просто бы поделил канал на количество клиентов и подал все как есть. Конкретно для этой последовательности 16 бит: каждый клиент получает 16 бит за 16 секунд, общее количество переданных данных 32 бита. А теперь представим что у клиентов есть таблица перевода, допустим её когда-то передали им отдельно. Тогда, смотрим на картиночку, получается что используя подобную схему кодирования каждый клиент получает 8 бит за 9 секунд, а общее количество переданных данных будет 16 бита. Данная схема не самая оптимальная, самая передала бы за 8 сек. Оптимальность таблицы зависит от самих данных, строятся оптимальные таблицы обратным образом, просто прикидываешь что в какую секунду и кому должно было передаться. Ну это по времени оптимальное, если оптимизировать по общему количеству переданных бит для данной последовательности то получиться: передано 2 бита, по биту на каждого, за где-то в районе 2^16 секунд. Почему это работает: мы передаем одни и те же данные в одно и то же время, а это избыточно, и её можно сократить
Ну что, как идея? Не у кого нет желания разработать теорию полностью, для любой ширины канала и любого количества клиентов? Я этого делать не буду, ибо мне не платят и Phd защищать мне тоже не нужно.
Кстати, факт из разряда очевидного-невероятного: для передачи\обработки высокого сигнала «1» нужно больше энергии чем для низкого «0». Буквально можно проверить, взять и забить всю оперативку в одном случае нулями а в другом единицами и сравнить энергопотребление.
на скриншоте мой велосипед для рассчёта разряда в канале ионного двигателя с анодным слоем. будет время — приведу код в презентабельный вид и выложу на сырцфордж. а пока просто делаю рассчёты и пытаюсь разобраться как геометрия анода влияет на устойчивость разряда. в остальном — обычный icewm и zsh и бубунта 12.04.
На фоне в ssh крутится самописная (c++/openmp) программа для расчёта горения разряда в холловском двигателе в аксиально-азимутальном приближении. На графиках — нарисованная с помощью matplotlib визуализация градиентно-дрейфовой неустойчивости. Эта неустойчивость возникает при сравнительно небольших концентрациях плазмы и в отсутствие столкновений. В результате, азимутальная симметрия разряда нарушается, а электроны формируют вихри и ненулевой ток в сторону анода. В целом, это похоже на формирование сгустков в магнетронах. При большой концентрации плазмы (и наличии столкновений) вихри разрушаются, но возбуждаются более короткие ионно-звуковые волны.
В остальном, обычный Debian8.1 с Xfce4; на числодробилке — ScientificLinux6.1.
Да, собственно, в заголовке все сказано.
Появление уже рабочей, быстрой и легкой для разработки системы инициализации закономерно вызывает нехилые крики и стоны у разработчиков и адептов «архитектурно правильных» и «юниквейных» решений.
Кстати, вы знаете, что одним из аргументов Таненбаума была непортируемость Linux на другие архитектуры? Ничего не напоминает?
Да и стратегия «все рядом с PID 1» против «минимальный init» напоминает срач про монолитность против микроядерности.
За сим предлагаю ввести понятие «linux-way» и бить systemd-хейтеров палками.
Есть ли на форумчане использующие minix 3? Стоит ли установить посмотреть? Как там с поддержкой железа обстоит?
Код:
#define TEST_SPEED_FABS_LOOPS ((U32_MAX >> 3) + bxi_randu8())
static void check_fabs_speed(void)
{
u32 i;
f64 iterator = 1.1;
f64 value = 0.0;
f64 sum_org = 0;
f64 sum_new = 0;
u32 loops = TEST_SPEED_FABS_LOOPS;
test_time_start();
{
for (i = 0; i < loops; i++)
{
iterator *= -1.5;
value += iterator;
sum_org += fabs(value - 50.0);
if (value > 1e8)
value = 0.0;
if (iterator > 1e8)
iterator = 1.1;
}
}
test_time_finish();
test_time_print("fabs");
iterator = 1.1;
value = 0.0;
test_time_start();
{
for (i = 0; i < loops; i++)
{
iterator *= -1.5;
value += iterator;
sum_new += bxi_fabs(value - 50.0);
if (value > 1e8)
value = 0.0;
if (iterator > 1e8)
iterator = 1.1;
}
}
test_time_finish();
test_time_print("bxi_fabs");
printf("%f\n%f\n", sum_org, sum_new);
if (sum_org != sum_new)
test_failed();
}
Суть кода - проверяет скорость и точность самописного fabs. Два блока кода почти идентичны, за исключением имени функции. Запускаем на Ubuntu 16.04, libc-2.23, x86_64:
24355184302566256.000000
24355184302566256.000000
24355184305680488.000000
24355184302566256.000000
if (isnan(x)) return -x;
return x > 0 ? x : -x;
В общем у меня подгорает - автоматические тесты фейлятся, система говорит что я дурак, а баг на самом деле в разработчиках Minix.
Что делать? Как это решить? Почему разный результат?
Вроде бы всё
Этот небольшой пост не порадует вас обилием картинок, он скорее объявление о намерениях.
Под новый год сдох последний SSD в рейде, и я наконец перешел с Oracle Linux 6 (с 2013 года) на FreeBSD (да, у меня много времени). И вот хочу бороться с мифами на форуме и всеми этими постами «стоит ли переходить», а «какого цвета трава по вашу сторону забора» и т.д. Обычно на эти вопросы отвечают фанаты FreeBSD, а я предлагаю ниже краткое описание от линуксоида. Посвящено оно в основном звуку. Это при том, что я уже два года пробую FreeBSD на личных серверах.
Сначала о постановке целей.
1) Недостижимый идеал темы выглядит вот так https://www.gnome-look.org/p/1120849/ Недостижим он по той причине, что исходники иконок в SVG недоступны, а темы QT и GTK изрядно переписаны в сторону метросексуальности. Так что пока скриншот только с консолью.
2) Основные требования к софту:
2.0 стабильность
2.1 Urxvt/bash/mc
2.2 Google Chrome
2.3 Thunderbird
2.4 VirtualBox
2.5 rtorrent/mplayer (mpv/moc)
2.6 LibreOffice
2.7 Контейнерная виртуализация.
3) Основные требования к ОС:
3.0 мышь и клавиатура
3.1 Firewall, маркировка по портами, маршрутизация вместе с NAT.
3.2 No Pottering, No pulseaudio, No systemd, No gstreamer, No avahi
3.3 FS live snapshots. Не ZFS.
3.4 nvidia proprietary driver
3.5 PA like functionality.
--------------
Реальность:
2.0 Во-первых, надо полностью развеять миф о бОльшей стабильности FreeBSD по сравнению с Linux. За время своего знакомства я наступил на кернел паник в стабильном, ванильном, оттестированом и т.д. выпуске, сегфолт пакетного менеджера (знаю, как повторить), сегфолт утилиты из базы (jails, зафиксировано в багтреке), сегфолт fsck (зафиксировано в багтрекере). И нет в шестом редхате такого не было, а с манжаро, арчами, федорами и гентами сравнивать не берусь, там все бывает. Во-вторых, везде кода меньше, система легче. Порядка немного больше. Это что касается базы. В прикладном софте примерно также.
2.1 bash. Я держу набор .bashrc файлов для всего набора линуксов, с которыми сталкивался, чтобы унифицировать поведение в консоли. Ес-но, FreeBSD отличается сильнее, консольные утилиты просто менее функциональны, дурацкое требование слеша на конце при использовании cp -r dir1/ dir2... Поэтому я просто заинсталировал все, что было в репозиториях из гнутого консольного софта и обмотал это альясами. Жить можно и даже неплохо. Из неудобного: все пути длинее, т.к. /usr/local/, блин:( Из странного каждый терминал считается залогиненым юзером в w. Это очень странно.
2.2 Google Chrome. Поломано определение Memory Footprint в Task Manager. Теперь не прибъешь вкладки, которые много отожрали. Хотя кто-то мне доказывал со скриншотами, что это только у меня. хз.
2.3 Thunderbird + (все также)
2.4 VirtualBox - отсутствует коммерческий пак от оракла, стало быть не работает быстрое USB2.0 (буду пробовать прокидывать контроллер) и не работает RDP (не решаемо). Проблемы со звуком, см. ниже.
2.5 mplayer - проблемы со звуком. см. ниже.
2.6 LibreOffice - от RH GTK не избавишься, т.к. программисты с freedesktop хуже поддерживают qt, чем gtk. на QT поломан размер шрифтов. неюзабельно.
2.7 контейнеры jails. Это то, к чему я привык во времена OpenVZ. Все есть, все хорошо. Но рестарт контейнера возможен только через минуту-две. Не освобождает ресурсы. Досадный глюк.
3.0 Из того, что работало на Linux десятилетней давности, но перестало на FreeBSD - это мышь и клава. У FreeBSD традиционно сложные отношения с определением устройств. Они не могу определиться, развивать свое или копировать с линукса udev. В итоге они делают и то, и то и в результате по-умолчанию нифига не работает, конфигурация Xorg'a превращается в разбор внутренней кухни этих заморочек. Плюс они что-то там намудрили, что мультимедийные кнопки на клаве - это как бы отдельная клавиатура (которая не работает). И в добавок, эти мультимедийные клавиши просто не могут работать, т.к. для них указаны ошибочные кейкоды в каком-то махровом году. Два года назад я это выяснил и пропатчил демон, который их определяет. Руки дойдут - сделаю снова.
Почему не определился Genius MX Master, я пока так и не понял, воткнул самую простую USB мышь.
3.1 Firewall - самая грустная часть FreeBSD:( При том, что он существует в трех(!) инкарнациях, они все глубоко в *опе. ipfw - основной и самый функциональный, застрял в середине 90х. Документации просто недостаточно. Сложные штуки с маркировкой трафика по портам и натами на нем невозможно выполнить. pf - устаревшая версия из OpenBSD. сама OpenBSD ее уже выкинула. и также с соляровским вариантом. Солярис тоже его давно выкинул в пользу OpenBSDшного. И хуже всего то, что внутриядерная часть фвола очень простая. Все пакеты падают в одно ведро, там перемешиваются и по факту невозможно их сепарировать. Короче говоря, я пытался три раза хотя бы спародировать какие-то простые места из своей огромной портянки iptables и все это заканчивалось ненавистью и фрустрацией. Так что придется просто поднимать виртуальную машину со старым Linux+iptables.
3.2 No Pottering, No pulseaudio, No systemd, No gstreamer, No avahi - тут полный успех. Но только, если собирать из портов.
3.4 live snapshots. Я говорю об аналоге lvm на линуксе. Я уже много лет использую эту схему, чтобы очень эффективно бекапить террабайты данных. В отличие от всех этих поделок с tar, которые приносят сюда ньюфаги, такая схема позволяет бекапить шифрованные данные, много, не выключая систему, а ZFS на сервере еще и позволяет всем этим свободно манипулировать. Очень круто. Я не знаю, появились ли в Linux offline snapshots, но лучше ZFS я тут ничего не видел.
У меня получилось собрать полный аналог слоеного пирога encryption layer+volume manager+fs. FreeBSD традиционно использует fs soft updates вместо журналирования. В чем принципиальная разница так и не понял, ну и ладно. Просто пришлось отказаться от soft update, включить журналирование посредством geom, словить баг в gjournal, зарапортовать, подождать два года. По-моему он пофикшен, но так ко мне и не прилетел. Но работает.
Вроде
Потому что в первую же ночь система стала колом с ошибками в журнал при распаковке архива!
Я уже хотел спустить это все в мусорку, когда случайно нашел пару sysctl сетингов, которые это решают. Ни в каких хваленых фрибздешных хендбуках вы это, конечно, не найдете. FreeBSD с одной стороны не имеет адекватных для современного оборудования лимитов по-умолчанию, а с другой хаутушек, чтобы это фиксить, поэтому этим всем можно заниматься только, если вот вам прямо хочется FreeBSD и вы такой весь олдфаг и готовы читать мейл-листы.
Короче, неожиданный успех. Если кому интересно, почему я не использую здесь ZFS, спросите меня.
3.4 FreeBSD - это единственная ОС из других *BSD с проприетарными драйверами. Полный успех.
3.5 PA like functionality. Да, это большая тема, в которой я к тому же понимаю слабо. Я использую USB-звуковуху, которая пригодна для записи звука и может работать с повышенной дискретизацией или что-то типа того. Считается, что FreeBSD изначально имела более качественный аудио-стек, чем Linux. И судя по количеству и качеству ручек, я в это верю. Такое впечатление, что инженеры, которые это писали, увлекались аудиозаписью. А вот сохранять уровни громкости для приложений она не может:( Поэтому ей нужна надстройка, аналог PA - sndiod.
Естественно, FreeBSD развивается очень медленно, а на линуксе тем временем тяп-ляп глючный пульсаудио. Сейчас к 15ой версии он, наверное, уже не доставляет столько гемороя, и в нем море фич. Я исторически использовал PA 8.0. Звук в VirtualBox заикался. Глючило при разных уровнях громкости для каналов. Рестарт пульсаудио - часть моего воркфлоу с 2013 года, но регулятор громкости для приложений - это прикольно и не имеет аналогов во FreeBSD.
Во FreeBSD нас встречает утилита в 10 раз меньше. Она не требует портянок конфигов, в ней нет блютуса и еще каких-то новомодных штук. Но она тут же сделала все, что мне нужно. Она принимает поток по tcp. Она объединяет каналы в моно, как мне нужно. Она выставляет нужную частоту дискретизации. Первое, что я заметил звук стал чище. Как будто новую аудиокарту взял. Очень круто.
Но
Но теперь звук в mplayer заикается при нагрузке на диск! Я не понимаю, это баг системы или конкретного софта. Вроде напрямую в OSS не заикается. Но так мне не надо.
VirtualBox теперь играет звук чисто. Но недолго. Он не может выводить в sndio, отправляет в OSS и скоро затыкается.
На этом со звуком все.
Сразу оговорюсь, для начала, что я не специалист в компьютерной безопасности и в GNU/Linux. Единственной ОС на ноутбуке Линукс стал два года назад.
Недавно я задался вопросом, а так ли все безопасно на моем ноутбуке. Я не настолько профан, чтобы чувствовать себя в безопасности, просто осознавая, что «стоит линукс, вирусов под него почти нет, это же не дырявое корыто от Майкрософт». Отчасти потому, что имел неприятное общение с сотрудниками ЦПЭ и ФСБ. Также был осужден, тоже благодаря им, но это другая история. Сейчас я живу в другой стране, не занимаюсь никакой деятельностью, которая подпадает под криминал. Но при этом, абсолютно понимаю, что внимание может быть и вне факта совершения различных преступлений или намерений их совершить.
Посему, в ущерб праздному просмотру фильмов и прочей прокрастинации, я взял, да и прогнал анализ системы rkhunter'ом и lynis. Получив невнятный, с первого взгляда, набор варнингов и прочих отчетностей, я задумался (особенно после того, как rkhunter сообщил о восьми возможных руткитах), о том как же хоть немного себя обезопасить. Собственно вопрос:
Посоветуйте порядок действий, при котором, можно будет сохранить большую часть личных данных и переустановить систему. Вот какой алгоритм я себе представляю (пардон заранее за, может быть, излишнюю наивность):
Но тут же вопрос, насколько безопасно можно это сделать из возможно скомпрометированной системы? Начиная с закачки образа дистрибутива (гарантирует ли сверка контольных сумм безопасность в полной мере) и создания загрузочной флешки.
С благодарностью приму от вас полезные рекомендации.
Я поставил на виртуалку Minix 3.3.0, скачал Clang, а он мне пишет, что файл ld не найден. Как мне это исправить?
Там это, в узких кругах ограниченных людей обсуждают как MINIX3 сдох: никаких новостей с 2016 года, никаких комитов с 2018.
https://news.ycombinator.com/item?id=26451540
Помянем.
Я люблю старые программы, мне нравится их изучать и смотреть как они развивались, и во что они сейчас превратились или умерли так и не дожив до современных дней. И по той же самой причине, мне нравится смотреть различных авторов Youtube каналов посвященные ретро тематике в котором авторы рассказывают о корнях программ, игр, приставок или старых компьютерах. И на волне этого, мне захотелось попробовать собрать и запустить, что-то относительно старое, но которое живет и развивается до сих пор. Мой выбор пал на первую версию Linux, версии 0.01.
Те кто знаком с историй создания Linux и её ранних дней, знают, что она писалась Линусом Торвальдсом на 386 машине на которой работала пропатченнная версия Minix 1.5. И не смотря на, то, что есть проект (и не один) позволяющий скомпилировать linux-0.01 на современных версия компиляторов мне же хотелось побыть немного в шкуре самого Линуса и самому собрать ядро в ее родной среде, а именно в Minix и древними версиями GCC.
Те, что интересуется подобной историей (да или просто пользуются гуглом), знают, что такое уже проделывали многократно (посмотрите хотя бы сайт oldlinux.org), но я хотел сделать это всё сам. И вот вооружись энтузиазмом, эмулятором 86Box, старыми версия ПО (многие их которых взяты с вышеупомянутого сайта), а главное ядра Linux, я пошел по стопам Линуса, ну или почти по стопам… :)
Первым делом необходимо было установить классический 16-битный Minix 1.5.10 (верхний левый скрин). При наличии дистрибутива (17 дискет), а также Reference Manual делается это не сложно. Просто необходимо внимательно читать manual Танненбаумана. Единственное замечание по установке в эмуляторе 86Box, так это то, что необходимо в настройках эмулятора (и BIOS) выставить тип 360к для 5 1/4 дисковода, иначе Minix сможет грузится с загрузочной дискеты, но root’овую уже не увидет.
Далее необходимо очень внимательно следовать прекраснейшему руководству от Джона Наллома по превращению в minix-386. На этом этапе каких-либо подводных камней нет (опять же внимательно читаем), единственное необходимо установить тип 1.2M для 5 1/4 дисковода. Также необходимо будет перекомпилировать все бинарные файлы в /bin и /usr/bin. В самом руководстве Джон компилирует только часть их них (сам Брюс Эванс в README на bcc писал, что достаточно только sh :) ). Я же перекомпилировал почти всё.
Затем качаем и ставим готовый компилятор GCC 1.37.1 от Alan W Black’а. Нужно как минимум 3 архива с самим gcc, библиотеками и заголовочными файлами. Главное, ОБЯЗАТЕЛЬНО, необходимо пропатчить ядро Minix (kernel) иначе при компиляции ядра Linux, получите сообщение, что-то типа fp stack overflow.
Ну и под финал всего это необходимо скомпилировать сам Linux-0.01. Линус писал, что он использовал пропатченный им же gcc-1.40 c поддержкой -mstring-insns, но он также писал, что возможно подойдет 1.37.1 и да, им можно скомпилировать ядро Linux. Нужно только убрать вышеупомянутую опцию из нескольких Makefile (об этом писал Линус), а также отредактировать под себя boot.s (под нужный тип дискеты) и include/linux/config.h (параметры жесткого диска). Плюс в Makefile надо добавить путь до gnulib (об этом тоже писал). О чем Торвальдс не писал, так это то, необходимо в Makefile добавить команду конвертации бинарного файла в формат, который мог бы исполняется на Minix-386 (на нижнем левом скрине эти команды можно увидеть). Линус не делал подобной конвертации и могу предположить, что у него был патч который позволял запускать бинарные файлы gcc нативно (aka gnutoo).
Осталось только подготовить свободный раздел жесткого диска, создать несколько устройств в /dev и /bin скопировать bash (+ сделать ссылку на sh) и update. Запись ядро на дискету и как писал Линус «Use the three-finger-salute to reboot you machine».
Смотря его интервью «рассиан тудай» нельзя было не заметить на фоне книжный шкаф с большим количеством потрёпанных книг, в связи с этим стало интересно что он читает.
Перемещено Zhbert из general
Я не физик, в некоторых терминах могу ошибаться.
Из личного любопытства я хочу смоделировать молекулу (самую простую, как мне кажется H2, или хотя бы один атом водорода), на самом фундаментальном (то есть моделируя не протоны и электроны, а кварки из которых состоят протоны и нейтроны) уровне.
У меня есть несколько вопросов
а) насколько это легко, мне, как программисту который физику знает лишь поверхностно б) насколько это легко моему компьютеру с i7-4770, 16Gb, если я хочу смоделировать скажем момент соиденения двух атомов в молекулу в) в какую сторону копать?
Для сравнения примитивное моделирование гравитации для меня было простым занятием. Берем N точек, даем им координаты и массу, каждый тик времени вычисляем силу притяжение по формуле
F = m1*m2 / R^2.
a = f/m;
x += dx;
dx += a;
для y аналогично
Дальше построив по координатам график можно было увидеть как тела движутся по эллипсу.
Сейчас же все выглядит для меня заметно сложнее.
dx += a перестают работать?Тут один молодой «программист» у меня на днях спросил: а вы что самоучка что ли, вас никто не учил программированию ? При том, что у меня мехмат лет 15 назад был.
Я даже не знал, что ответить … - всегда думал что для программирования в приоритете математическая база, а не «обучение»
Собственно, сабж. Сам анонс: https://lists.gnu.org/archive/html/info-gnu/2022-09/msg00005.html .
Скачать можно при помощи команды
git clone https://git.savannah.gnu.org/git/c-intro-and-ref.git
Настало время попробовать очередной тайловый оконный менеджер. Выбор пал на dwm. Долго не решался его попробовать, т. к. он отпугивал своей специфичной настройкой. На деле оказалось все намного проще.
| ← назад | следующие → |