Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет Misha Verbitsky ([info]tiphareth)
@ 2023-08-16 16:23:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Настроение: sick
Музыка:Johann Jakob Walther (1650-1717) - Hortulus Chelicus Mainz, 1688 (David Plantier)
Entry tags:linux

mega-permissions --files 644
Я уже давно перешел с дропбокса на http://mega.nz
у которого примерно та же функциональность (и тоже на Линуксе),
он бесплатный и гораздо больше по доступному объему хранилища.
Мегасинк при закачке и создании нового файла всегда делает его
с permission 600, что страшно неудобно, потому что приходится
каждый раз править (я их потом на сервак скидываю). Несколько
раз я из-за этого пролетал из-за потери доступа к файлу
на веб-сервере.

Запишу для памяти
как с этим бороться: надо написать в коммандлайне
mega-permissions --files 644
mega-permissions --folders -s 755
и вуаля.

https://github.com/meganz/MEGAcmd/issues/305

Привет



(Читать комментарии) - (Добавить комментарий)


[info]grusha
2023-08-17 01:25 (ссылка)
Это просто byte sequence, т.е. что угодно. Пользователь волен сам выбирать, какую кодировку использовать. Большинство выбирает то что по умолчанию, т.е. ascii/utf8.

>узнал, что концепция "имя файла" в Линуксе не существует

А это что такое?

int open(const char *filename, int flags, mode_t mode);

И вот это:

struct filename {
const char *name; /* pointer to actual string */
const __user char *uptr; /* original userland pointer */
int refcnt;
struct audit_names *aname;
const char iname[];
};

(Ответить) (Уровень выше) (Ветвь дискуссии)


(Анонимно)
2023-08-17 07:22 (ссылка)
Имя файла должно быть строкой, эквивалентность строк в современном мире специфицирует, увы, ёбаный юникод. Буква ё, представленная одним байтом, и буква ё, представленная двумя байтами - это имя того же файла.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]kaledin
2023-08-17 13:34 (ссылка)
>Буква ё, представленная одним байтом, и буква ё, представленная двумя байтами - это имя того же файла

НАХУЙ!!!

Блядь, как заебали уроды. Вот только этой хуйни еще не хватало, всобачивать сраный юникод в системные функции. Охуели совсем.

(Ответить) (Уровень выше) (Ветвь дискуссии)


(Анонимно)
2023-08-17 13:43 (ссылка)
Nichego krome bazovoj larinicy ne nuzhno, vse drugije bukvi nekulturny

(Ответить) (Уровень выше) (Ветвь дискуссии)


(Анонимно)
2023-08-18 02:02 (ссылка)
Ničego, krome rasširennoj latinicy, ne nužno

(Ответить) (Уровень выше)


[info]tiphareth
2023-08-17 20:47 (ссылка)
я в локали отключаю юникод
иногда его приходится силком включать, потому что есть куски софта
(в основном игры), которые без юникода в локали не работают
но вообще идея использовать в системе что-то кроме английского и ASCII
полностью мудацкая и надо за подобное бить по зубам без разговоров
one byte encoding, one language, one blood,
one race, two genders, three tattvas, four varnas

(Ответить) (Уровень выше) (Ветвь дискуссии)


(Анонимно)
2023-08-17 22:29 (ссылка)
> идея использовать в системе что-то кроме английского и ASCII полностью мудацкая и надо за подобное бить по зубам без разговоров

Почему?

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]grusha
2023-08-17 23:42 (ссылка)
Имена файлов выполняют примерно ту же функцию, что имена переменных в языках программирования. Т.е. лаконичные и удобные в использовании идентификаторы объектов, а не какие-то их пространные описания.

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

(Ответить) (Уровень выше) (Ветвь дискуссии)


(Анонимно)
2023-08-18 00:04 (ссылка)
но это же просто субъективное мнение

у других людей другие предпочтения или юзкейсы

тут вроде глобальный тезис был у Миши

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]grusha
2023-08-18 01:08 (ссылка)
Если эти другие люди свои файлы создают исключительно для личных нужд и никому их не показывают, тогда пожалуйста, это их личное дело.
В противном случае (например если это "программисты", и эти файлы создает их "код", например авторы упомянутых ниже в треде "версерверов" - наверно имелось ввиду "версервисы"), тогда им следует научиться правилам совместного общежития, чтоб стать сколь-нибудь приемлемыми членами социального общества.

(Ответить) (Уровень выше) (Ветвь дискуссии)


(Анонимно)
2023-08-18 01:49 (ссылка)
А почему "правила общежития" должны быть основаны именно на американском телеграфном стандарте середины 20 века? Что в нем такого богом данного?

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]kaledin
2023-08-18 04:19 (ссылка)
Потому, что операционные системы пишут там же, где разработали телеграфный стандарт. И нехуй выебываться.

(Ответить) (Уровень выше) (Ветвь дискуссии)


(Анонимно)
2023-08-23 09:21 (ссылка)
> потому что кококо там же, где кококо. КУДАХ!

калединский пердак пригорает, найс!

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

(Ответить) (Уровень выше)


(Анонимно)
2023-08-18 04:38 (ссылка)
Во-первых, американцы высшая раса. Сапиенти сат. Если это подвергать сомнению, тогда развалится всё, что было создано после 2 мировой войны.
Во-вторых, обратная совместимость. Та же проблема что с TCP поверх IP: когда OSI разрабатывали, не думали про всемирный интернет и гнойных кулхацкеров, которые намеренно будут атаковать, а сейчас уже поздняк подложку менять, напихо червие на экзабайты. Или почему точка обозначает тот же каталог, а две точки каталог выше? Потому что такая была конвенция, и если её менять, придётся поменять очень много чего вплоть до локаторов в HTML by xpath.

(Ответить) (Уровень выше)


(Анонимно)
2023-08-18 12:43 (ссылка)
Хуекивное.

Я например как embedded/system погромист хотел бы сношать этот юникод и в рот и в жопу. Никому кроме долбоебов нахуй всралось держать в ППЗУ/ядре/дровах ебаную прорву библиотечного кода для этого сраного юникода который нужен исключительно для того, что бы правильно прочитать/сравнить/отобразить имя файла на каком-нибудь, сука китайском или арабском, который пидорас-пользователь вставил на флешке или загрузил в систему.

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

(Ответить) (Уровень выше) (Ветвь дискуссии)


(Анонимно)
2023-08-18 14:06 (ссылка)
... о том как именно выводить и обрабатывать информацию на наречии понятном для конкретной макаки -- голова должна болеть только у тех, кто делает UI для клиентских устройств и всякую скриптодрисню на реакте/электроне, а не у тех кто дизайнит сами системы. Если бы не всякая адско-каловая хуйня типа case insensitive файловых систем которые иногда нужно поддерживать-имплементировать -- то ровных посонов бы весь этот конченный юникод вообще не ебал бы например.

(Ответить) (Уровень выше)


(Анонимно)
2023-08-18 02:16 (ссылка)
> Имена файлов выполняют примерно ту же функцию, что имена переменных в языках программирования.

Да, именно это одно из разногласий. Очень многие люди считают, что нет, это ни в коем случае не так, и имя файла это строка человеческого языка.

Кстати, вот все чего-то тут заладили utf-8 utf-16 ну речь изначально вообще идет не про энкодинги, а про каноникализацию строк, но похоже в этом чате про такое никто не слышал.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]grusha
2023-08-18 10:43 (ссылка)
>Очень многие люди считают, что нет, это ни в коем случае не так, и имя файла это строка человеческого языка.

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

(Ответить) (Уровень выше)


[info]grusha
2023-08-18 11:15 (ссылка)
>Кстати, вот все чего-то тут заладили utf-8 utf-16 ну речь изначально вообще идет не про энкодинги, а про каноникализацию строк

Эти строки в каком-то виде хранить надо, не?

Изначально речь про имена файлов. Такую абстракцию как "файл" имплементит операционная система (по крайней мере, в этом треде изначально речь именно про такие файлы, а не например про "файлы" которые видит пользователь того же андроида). Операционная система имеет дело с байтами, а не с абстрактными юникодными строками.

Более того, конечный пользователь тоже нахуй ничего не знает и не обязан знать ни про какую нормализацию строк, а вот что такое байт, он вполне представляет. Потому что например дилемма "размер файла 10GB, а объем флэшки 8GB" ему вполне понятна.

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

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

(Ответить) (Уровень выше) (Ветвь дискуссии)


(Анонимно)
2023-08-20 02:32 (ссылка)
Сука, мир есть текст. Обновите ваши стандарты.

(Ответить) (Уровень выше) (Ветвь дискуссии)


(Анонимно)
2023-09-01 00:47 (ссылка)
не хочу
мне нравятся старые тексты, а новые не нравятся
я безумно рад, что скоро ты утратишь возможность читать мои тексты и из мира исчезнешь насовсем

(Ответить) (Уровень выше)


(Анонимно)
2023-08-18 01:53 (ссылка)
> кроме английского и ASCII

Почему не EBCDIC кстати? Ещё более труЪ, и ещё на порядок больше страданий и бессмысленных жертв.

(Ответить) (Уровень выше) (Ветвь дискуссии)


(Анонимно)
2023-08-18 06:21 (ссылка)
ебздик наше все

(Ответить) (Уровень выше)


[info]spqr
2023-08-28 12:00 (ссылка)
Потому что мы не про MVS речь ведём. Есть ОС со сложившимися простыми абстракциями (и не надо тащить туда сервисы и прочую ересь) и договорённостями (типа тех же точек для обозначения каталогов, или там слешей, а не баксов). Менять это сугубо потому, что кому-то захотелось вставлять визуально неразличимые символы в названия или ещё чего-то странного --- пусть свою ОС делают, по типу https://ru.wikipedia.org/wiki/TempleOS

(Ответить) (Уровень выше)


[info]apol
2023-08-20 12:53 (ссылка)
локаль влияет только на внешнее представление - как операционка показыает инфу человеку. на ядро это не влияет. В ядре имя файла - это просто NULL-terminated string. Единственный спецсимвол - "/", которым разделяются компоненты path. UTF8 спроектирован так, что легаси-код, работающий с null-terminated ascii будет и с UTF8 работать корректно.

(Ответить) (Уровень выше)


(Анонимно)
2023-08-17 18:37 (ссылка)
вонюша туповат и ограничен. не понимает, что, скажем, на деванагари пишет больше людей чем 5 сраных ебаных рашек

вот гугла даже шрифты годные нарисовала для этих людей

вонь, вас, говна, с вашим однобайнтым koi8 меньше 1% в мире

(Ответить) (Уровень выше) (Ветвь дискуссии)


(Анонимно)
2023-08-18 02:08 (ссылка)
Недавно сталкивался с деванагари и сильно был удивлен, что правильное отображение всех букв зависит от шрифта. Базовые буквы поддерживаются всеми шрифтами, без балды, но у них есть лигатуры, этих лигатур сильно больше десятка (https://en.wikipedia.org/wiki/Devanagari_conjuncts) и их отображение зависит от шрифта. Поэтому у хиндуязычных к документам лежали шрифты чтобы их скачивать и читать правильное отображение. MS Nirmala UI нормально отображает, а всякие другие могут разорвать буквы. В хинди до сих пор праиндоевропейские спиранты остались и смыслоразличительны, просто заменить гха на га, ддхра на ддра не выйдет.

(Ответить) (Уровень выше)


[info]grusha
2023-08-17 22:06 (ссылка)
>Буква ё, представленная одним байтом, и буква ё, представленная двумя байтами - это имя того же файла.

Это имя разных файлов. Проверяется экспериментально.

(Ответить) (Уровень выше) (Ветвь дискуссии)


(Анонимно)
2023-08-17 22:27 (ссылка)
О том и речь. Вопрос, в чем преимущество такого решения. Зачем тебе два различных файла, ё.txt и ё.txt?

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]grusha
2023-08-17 23:09 (ссылка)
Вот у меня есть два файла, foo и bar. И тут оказывается, что есть кодировка, в которой ё.txt кодируется как foo, и еще одна кодировка, в которой ё.txt кодируется как bar. Ну ок, а мне что до этого?

>в чем преимущество такого решения.

https://lj.rossia.org/users/tiphareth/2544376.html?thread=188716792#t188716792

(Ответить) (Уровень выше) (Ветвь дискуссии)


(Анонимно)
2023-08-18 00:07 (ссылка)
> И тут оказывается, что есть кодировка

"uni" в "unicode" означает "один". Один райх, один фюрер, одна кодировка

так что откуда оно вдруг окажется?

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]grusha
2023-08-18 00:54 (ссылка)
От верблюда.
https://en.wikipedia.org/wiki/Comparison_of_Unicode_encodings

(Ответить) (Уровень выше)


(Анонимно)
2023-08-18 04:40 (ссылка)
Так-то ты прав по задумке, однако UTF-7, UTF-8, UTF-16 это разные uni-коды.

(Ответить) (Уровень выше) (Ветвь дискуссии)


(Анонимно)
2023-08-18 06:37 (ссылка)
опять заладили ЮтиЭф
разночтения есть еще на этапе до энкодинга
изображение буквы ё представляется кодом "кириллическая йе с диакритом две точки"
либо ДВУМЯ кодами "кириллическая йе" и "комбинирующий справа диакрит две точки"
либо ДВУМЯ кодами "комбинирующий слева диакрит две точки" и "кириллическая йе"

Энкодинг же кодирует коды в байты

Я наверно утрирую, я про юникод вообще очень мало понимаю, но не настолько чтоб думать, что юникод это такая аски таблица на 2^2^k символов

(Ответить) (Уровень выше)


[info]apol
2023-08-20 12:47 (ссылка)
Букву ё нельзя изобразить одним байтом в юникоде. Это либо кирилическая буква ё, 2 bytes in UTF8, либо отдельно е и диакритика. Тогда будет ещё больше байт.
И что такого необычного в том, что разные строки (в машинном представлении) на экране выглядят неотличимо? В какой-нибудь Win1251 английская е и русская е выглядят одинаково, но байты ( и имена файлов) будут разные.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]grusha
2023-08-20 13:24 (ссылка)
У юникода аж несколько кодировок, несовместимых друг с другом (то есть никакого "стандарта" по факту нет). Ничто не мешает определить еще одну, в которой ё будет кодироваться как угодно, хоть одним битом.

(Ответить) (Уровень выше)


(Читать комментарии) -