Я сам в Unix-е 1980-х чувствовал себя великолепно: «всё ясно и понятно, а что непонятно, можно разобраться, можно сделать чёрт-те-что, писать софт легко и приятно» :-)
А сейчас постарел, отстал, не нравятся многие нововведения, но это неизбежно. Развитие потомков Unix продолжается, а правильно или неправильно — жизнь покажет.
Вот есть большая группа людей, которые считают, что самой правильной и прогрессивной ОС вообще в истории ИТ была OS/2. Но почему она не вышла в лидеры, почему не захватила мир?
Хорошо, что в моей генте давно systemd. Нужно будет попробовать в новых релизах systemd.
Это, например, избавит меня от самописного костыльного скрипта, который перед монтированием aufs монтировал кучу davfs, и для монтирования которых нужна была сеть и рабочий интернет.
Короче, Поттеринг и Ко шпилят нормальные тулзы, за что им почёт и уважуха от пацанов.
Юзаю локаль KOI8-R с 2003-его года. А говно - это юникод. Если UTF-X совместима с ASCII, то все символы либо разного веса в байтах, либо жрут в wchar_t по 4 байта каждый даже если это ASCII. А если UTF-X несовместима с ASCII, то софт может непрожевать такие файлы, да и каждый символ везде жрёт не менее 2-х байт (а в wchar_t - 4 байта) даже если это ASCII. В общем, классическими функциями этот ужас парсить проблемно, а новые жрут ресурсы и тормозят.
И что плохого в том, что весь зоопарк конфигов сделают единообразным и безобразным? Да, я сталкивался с системд и не в восторге, но считаю это безобразие приемлемой ценой за единообразие.
Ну... Потом придумают ещё какой-нибудь init и понеслась :)
Юзаю локаль KOI8-R с 2003-его года. А говно - это юникод. Если UTF-X совместима с ASCII, то все символы либо разного веса в байтах, либо жрут в wchar_t по 4 байта каждый даже если это ASCII. А если UTF-X несовместима с ASCII, то софт может непрожевать такие файлы, да и каждый символ везде жрёт не менее 2-х байт (а в wchar_t - 4 байта) даже если это ASCII. В общем, классическими функциями этот ужас парсить проблемно, а новые жрут ресурсы и тормозят.
На разных машинах. В т.ч. и на Raspberry Pi. Впрочем, это не меняет того, что мультибайтные функции тормозят везде. Просто на мощном железе их тормоза заметны меньше. А жручесть памяти проявляется при обработке данных. И чем мощнее железо тем более ресурсоёмкие сами по себе задачи обработки данных планирует юзер. Не хватало чтоб оно ещё и сверх этого в несколько раз больше жрало...
На разных машинах. В т.ч. и на Raspberry Pi. Впрочем, это не меняет того, что мультибайтные функции тормозят везде. Просто на мощном железе их тормоза заметны меньше. А жручесть памяти проявляется при обработке данных. И чем мощнее железо тем более ресурсоёмкие сами по себе задачи обработки данных планирует юзер. Не хватало чтоб оно ещё и сверх этого в несколько раз больше жрало...
О боже мой, мой ляптоп будет обрабатывать строки на 100 наносекунд дольше. Premature optimization is the root of all evil, srsly.
Вроде ясно же, что в utf-8 ASCII символы в один байт, остальные выше. Это же для удобства и сделано и не нужно разных лишних кодировок, вроде koi8-r или тех же cp1251, на которых сделано, блин, 50% рунета (о ужас!) и можно в юникоде жить всем вместе удобно и счастливо.
Так в дистрибутивы GNU/Linux пихают systemd. Да, есть немногочисленные варианты без systemd, но... Из того же Debian'а оно совсем не выпиливается - только отключается. И это надо отключать. От root'а. А если на какую-то машину Debian поставил какой-то Вася которому всё равно и оставил всё по-дефолту только что-то добавив и ушёл, то там всё так и будет работать с systemd.
Так написал же что если строку в UTF-8 запихнуть в массив char, то не будет понятно где какой символ поскольку все символы весят разное кол-во байт. Можно запихнуть в wchar_t, но там каждый символ будет занимать ровно 4 байта, даже ASCII символы.
Так написал же что если строку в UTF-8 запихнуть в массив char, то не будет понятно где какой символ поскольку все символы весят разное кол-во байт. Можно запихнуть в wchar_t, но там каждый символ будет занимать ровно 4 байта, даже ASCII символы.
А теперь расскажи мне, в каких операциях тебе требуется произвольный доступ к n-ному элементу строки и как конкретно это тормозит что-либо.
смещение в строке, которое ровно так же будет тебе доступно
Если использовать wchar_t в котором каждый символ занимает 4 байта. А тут и так в строке as is каждый символ кириллицы в 2 раза жирнее. Вся память тратится зазря.
Что значит <<тормозят>>? Ссылки на бенчмарки в студию.
> time ./teststr0
P.S. Что значит <<тормозят>>? Ссылки на бенчмарки в студию.
60
real 0m41,890s
user 0m41,041s
sys 0m0,001s
> echo "P.S. Что значит <<тормозят>>? Ссылки на бенчмарки в студию." | iconv -t utf-8
P.S. п╖я┌п╬ п╥п╫п╟я┤п╦я┌ <<я┌п╬я─п╪п╬п╥я▐я┌>>? п║я│я▀п╩п╨п╦ п╫п╟ п╠п╣п╫я┤п╪п╟я─п╨п╦ п╡ я│я┌я┐п╢п╦я▌.
> time ./teststr1
P.S. п╖я┌п╬ п╥п╫п╟я┤п╦я┌ <<я┌п╬я─п╪п╬п╥я▐я┌>>? п║я│я▀п╩п╨п╦ п╫п╟ п╠п╣п╫я┤п╪п╟я─п╨п╦ п╡ я│я┌я┐п╢п╦я▌.
11
real 0m54,983s
user 0m54,035s
sys 0m0,002s
>
> cat teststr0.c
#include <stdio.h>
#include <string.h>
int main(){
char buf[120];
long long i;
int x;
fgets(buf, 120, stdin);
for (i = 0; i < 10000000000; i++) x = strlen(buf);
printf("%d\n", x);
return 0;
}
> cat teststr1.c
#include <stdio.h>
#include <string.h>
#include <wchar.h>
int main(){
wchar_t buf[120];
long i;
int x;
fgetws(buf, 120, stdin);
for (i = 0; i < 10000000000; i++) x = wcslen(buf);
printf("%d\n", x);
return 0;
}
Поттеринг не виноват. Это меинтейнеры дистрибутивов неправильно делают что пихают systemd, да. Теоретически они имеют на это право. Но, практически если они собирают их не только для себя, то они должны думать о том как будет удобнее юзерам. Если бы они просто включали systemd опционально в репозитории, то мало кто возражал бы. А вот ставить его по умолчанию...
Ты че, какой к черту мастер установки для генту. Нахер тогда нужна будет гента, если это будет очередной стандартный дистрибутив Суть генту в настройке ручками Да и настраивать там нечего, fstab, да переменные окружения
Systemd - это пачка конфигов в нескольких директориях Сделай ls /etc и ужаснись, сколько всего там и зачастую ненужного /etc самая засранная директория в современном Линуксе после /usr/share
Если использовать wchar_t в котором каждый символ занимает 4 байта. А тут и так в строке as is каждый символ кириллицы в 2 раза жирнее. Вся память тратится зазря.
Не вижу проблем со смещением в массиве байт, зачем тебе wchar_t? Алсо я бы уж тогда взял UTF-16 вместо UTF-32, раз ты так за место беспокоишься.
Насчет бенчмарков — у тебя какой-то член получается. В первом случае ты берешь koi8-r (60 байт) и бенчмарчишь с ним. В другом случае ты берешь utf-8 (101 байт) и бенчмарчишь с ним. Получая при этом ещё и какую-то стремную длину. Наверное потому, что wchar_t это не представление utf-8 символа.
P.S. Алсо запускать команду с time ожидая юзерского ввода - это пять.
Я к примеру с Гентушников даже простого обещания сделать мастер установки не смог( именно не действий, а хотя бы признания не обходимости и обещания)
Ну так это потому что нет в нём никакой «не обходимости», более того — в арче некоторое время был инсталлятор (представлявший собой, по сути, Installation guide из арчевики, обёрнутый в скрипт), потом его за ненужностью перестали поддерживать и в итоге выпилили из установочного образа. Все довольны, никто не ринулся его возвращать обратно или хотя бы «признавать необходимость и обещать».
Я не знаю, к чему ты скастовал сюда самозванца, но Шаман - это я. Да, знаю, странно звучит, я сам сначала не поверил, пока не увидел себя в зеркале. А потом быстро сделал пруфпик и повесил себе на аву.
Кстати, оригинальное фото делалось под светом зеленых LED, как видишь, у самозванцев жалкая черно-белая копия.