👍НравитсяПонравилось0
В избранноеВ избранном0
LinkedIn
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Отличный пример быдлокода переросшего в «фичу». Думайте, когда кодите :-)

чтобы код стал «быдлокодом» (в чьих то устах) нужно два условия, одно достаточное и одно необходимое.

Так вот достаточно чтоб код был не ваш и необходимо чтобы вы его не понимали. Как видите от качества кода это почти не зависит.

Так вот достаточно чтоб код был не ваш и необходимо чтобы вы его не понимали.
Это откуда же такое определение?
То есть человек не может осознано написать плохой код (быдлокод)?
String.valueOf(digit).length == 1
Это не быдлокод?

быдлокод — меня это слово просто «бесит», обычно его недалёкие личности заявляют с бухты барахты, в большинстве без достаточных оснований.

Это откуда же такое определение?

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

чтобы код стал «быдлокодом» (в чьих то устах) нужно два условия, одно достаточное и одно необходимое.

Так вот достаточно чтоб код был не ваш и необходимо чтобы вы его не понимали. Как видите от качества кода это почти не зависит.

Это подход современных джуниоров. Которые начитавшись разных башей, лоров, доу и прочего, но «не нюхавшие пороху» обзывают любой не свой код — быдлокодом. Я сам когдато таким был :-). Сейчас мне таким «джуниорам» хочется руки на месте поатламывать, чтоб меньше лазили по всяким башам, лорам и доу, а головой думали. Нормальный разработчик обзывает быдлокодом только очевидную ахинею.

Тот кто написал что-то типа if (name[0] == ’.’) continue; полюбому думал и про файлы с точкой, иначе он написал бы что-то типа if (name == ’.’) continue;. Поэтому я уверен что идея скрытых файлов была сразу, а может и наоборот, точка как ссылка на текущий каталог это следствие идеи скрытых файлов ;)

полюбому думал и про файлы с точкой, иначе он написал бы что-то типа if (name == ’.’) continue;.

А шо делать с «..»?
А теперь проверяем как я помню Ц:

name — это ссылка (инт), ’.’ — это символ (инт). Здаетсо мне что такое сравнение будет работать раз в год и то не тогда когда надо. Или я уже совсем забыл Ц?

Я думаю ход мыслей был такой: сделать так чтоб служебные файлы начинались с точки, при этом есть специальные служебные файлы , только точка — текукщий каталог, точка и за ней ещё точка — родительский каталог. Но то что описано в статье, имхо ерунда (или плохой перевод)

Я думаю ход мыслей был такой

Не над тем вы думаете :)

Но то что описано в статье, имхо ерунда (или плохой перевод)

Там есть ссылка на исходный пост Пайка.

UPD.

сделать так чтоб служебные файлы начинались с точки

И это по вашему хорошо?

И это по вашему хорошо?

Почему нет? для каких-то 80-х годов вполне элегантное решение

Почему нет? для каких-то 80-х годов вполне элегантное решение

Какая разница 80-е или 2010-е? Мне приходилось сталкиваться с «магическими именами» и всегда это «иф на ифе», особенно если одно магическое начинаетсо с «.» а второе с «#», или типа того.

Ну хорошо, а как бы вы сделали? или как нужно было сделать? достаточно общую идею

или как нужно было сделать?

They could just as easily be in $HOME/cfg or $HOME/lib, which is what we did in Plan 9, which had no dot files.

Хотя лично я бы завел свойство (флаг/энум) типов файлов.

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

Они же предлагают чтобы я в этой папке делал папку cfg? типа ХХХХ/cfg ? или я что-то не понял или ...

Вот припустим я хочу создать директорию ХХХХ и хочу сделать конфиг файл ограничивающий доступ к ней

Хотя лично я бы завел свойство (флаг/энум) типов файлов

То есть в вашей директории есть свойство: права доступа.

сейчас я делаю что нибудь типа .YYYYaccess файла в этой директории и моё приложение-сервер проверяет такие файлы на наличие и содержание.

И снова же лень ... лень написать нормальный скрипт сборки, который будет складывать лишь те файлы которые надо.

Они же предлагают чтобы я в этой папке делал папку cfg? типа ХХХХ/cfg ? или я что-то не понял или ...

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

То есть в вашей директории есть свойство: права доступа.

? непонятно, я даже не о правах, а о скрытых настройках, служебных но в принципе доступных

И снова же лень ... лень написать нормальный скрипт сборки, который будет складывать лишь те файлы которые надо.

Я говорил не о каталоге своего приложения! а о каталоге который создал пользователь и с которым должно работать моё приложение

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

так это понятно что я там пропишу, но как ими гибко управлять. Т.е как их настраивать будет сам пользователь? Прописывать в конфиге настройки для конкретных каталогов это сурово!

а о каталоге который создал пользователь и с которым должно работать моё приложение

Не должно быть такого. Пользователь работает с приложением и ОНО должно давать ему способ такой настройки (если это вообще надо).

Т.е как их настраивать будет сам пользователь?

В когфиге для приложения и/или через спец утилиту.
Но есть еще более важное:

А зачем ему что-то настраивать?

Прописывать в конфиге настройки для конкретных каталогов это сурово!

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

Припустим моё приложение это какой то серверный демон, который по запросу извне выдаёт информацию предоставляемую пользователями в своих каталогах /home/username/MyCoolDemonInfo/. В этой директории есть несколько файлов или каталогов которые пользователи могут создать. Общие принципы выдачи конечно прописываются в моём центральном конфиге. Но если пользователи захотят изменить нюансы выдачи своей инфы, например органичения на выдачу или разные варианты, неужели он должен править центральный конфиг? мне кажется проще файлик в директории! при этом если он будет с ведущей точкой то будет понятно что это файл настроек и он будет скрыт средствами самой ОС! скрыт но не недоступен.

З.Ы. я или привык к этому очень или это очень естественный способ настроек. Ну по крайней мере мне он очень нравится.

который по запросу извне выдаёт информацию предоставляемую пользователями в своих каталогах

Сразу вопрос: Почему демон 1, а не у каждого пользователя свой?

№ 2: Почему используются пользователи ОС, а не свои сущности?

мне кажется проще файлик в директории!

Угу в директории

/home/username/MyCoolDemonInfo/cfg

И снова же: «проще», то есть «было лень». Зачем заводить сущности пользователей, если можно юзать тех что в ОС, и пофик что можно забыть отключить им консоль, и пофик для простоты дадим им рутовые права.

Ну по крайней мере мне он очень нравится.

Мне тоже, но это не делает его правильным.

Сразу вопрос: Почему демон 1, а не у каждого пользователя свой?

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

№ 2: Почему используются пользователи ОС, а не свои сущности?

это не суть, могут быть свои сущности и каталоги в других местах, юникс общепринято пользователи и домашние каталоги, но это не суть...

Угу в директории

/home/username/MyCoolDemonInfo/cfg

ну а в этой папке типа .../cfg/access.conf ? имхо ничем не лучше чем .access или .rules, чем то даже хуже, как скрыть например эту папку при обычном листинге?

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

Правильно настроенный веб-сервер, от каждого пользователя запускаетсо свой.

могут быть свои сущности и каталоги в других местах

Суть, ибо тогда вся инфа хранится в «пространстве» приложения.

как скрыть например эту папку при обычном листинге?

А зачем?

Забыл уточнить: данные должны лежать не в:

/home/username/MyCoolDemonInfo/

а в:

/home/username/MyCoolDemonInfo/data

Это лучше, так как конфиги и данные разделены, то есть не надо контролировать что конфиг «уйдет» через демон.

Правильно настроенный веб-сервер, от каждого пользователя запускаетсо свой.

ну я знаю что для каждого запроса может запускаться свой поток для обработки, но может если его действительно «правильно» настроить то так и будет :)

По поводу остального, я понимаю что существует несколько вариантов решения такой задачи, вариант с файлами с ведущей точкой ничем не хуже остальных, а иногда даже лучше и в любом случае ему уже больше 30 лет, так сказать проверено временем :)

ну я знаю что для каждого запроса может запускаться свой поток для обработки, но может если его действительно «правильно» настроить то так и будет :)

Не вижу связи.

а иногда даже лучше и в любом случае ему уже больше 30 лет, так сказать проверено временем :)

Проверено временем или «старое гуано»?

Суть была ведь не в обсуждении конкретной реализации, а в подходе.

В статье чотко написано, что никто не думал про скрытые файлы точкой. Просто поленились и забыдлокодили, а оно потом «вылезло».

Статья написана человеком который точно не знает как это было! это его предположение. Такой «вброс». Я с ним не согласен.

Статья написана человеком который точно не знает как это было!

Пайк работал в Белл Лабс, поэтому возможно таки знает :)

Если бы он знал точно он бы немного по другому написал. А так он пишет

I’m not sure but I believe ..

Даже если таки так и было задуманно (я чет сомневаюсь), всеравно история ложится в «годный» пример. Я был знаком с ситуациями когда баги переростали в фичи, просто они не столь впечетляют.

У меня вообще подозрение, что множество киллер-фичей в ПО придумано не маркетологами-аналитиками-архитекторами, не на этапе проектирования, а вот так, на ходу, в процессе реализации.

Чего уж там, собственно сам великий и ужасный Юникс был придуман не маркетологами-аналитиками-архитекторами :-)

тоді б було if (strcmp(name, «.»)).. Але з самою ідеєю погоджуюсь.

ээ я думал это тема о том, сколько в какой компании программистов сокращают

ээ я думал это тема о том, сколько в какой компании программистов сокращают

:) Нежданчик на ДОУ.

сколько в какой компании программистов сокращают

Но все таки могли бы и логику включить: тут только 11 комментов, если бы было про соращения в конторах, их бы было более сотни :)

Логика в Lohika, а я в Цыклуме
На проекте 7 человек готовятся с вещами на выход, тема актуальная

а что, Циклум не пытается удержать людей, предлагая другие проекты?
список открытых вакансий довольно внушительный

предлагает конечно

я просто слыхал из разных контор о сокращениях, вот и смотрю, не стало ли массовым

ключевая фраза
«как мы и сделали в Plan 9»

маркетинг детектед

Фигня. Можно было не оставлять это здесь.

Фигня. Можно было не оставлять это здесь.

Оставьте что-то лучше :)

Всегда вэллком

А мне кажется что они это специально сделали, а Роб Пайк завидует что сам это не придумал.

А мне кажется что они это специально сделали

Я ставлю, на случайность :)

ИМХО, получилось хорошо, на мой взгляд лучше $HOME/cfg. Но уж очень похоже на баг/багПМ который вырос в фичу.

А еще эти точки напрягают если надо скопировать и «скрытые» файлы пачкой.

cp -R — скопирует всё.
rsync -a — тоже скопирует всё.
Никто не забыт, ничто не забыто.

cp -R — скопирует всё.

Мммм:

$ cd dev
$ mkdir d1
$ mkdir d2
$ cd d1
$ touch .f1
$ touch .f2
$ touch f0
$ cp -R * ~/dev/d2/
$ cd ../d2/
$ ls -a
. .. f0
$ ls -a ../d1
.  .. .f1 .f2 f0

Что я делаю не так?

Если вы про выйти на уровень выше и скопировать все папкой, то это не всегда возможно. Например, из юзерской папки в бекап, если доступ только к юзерской (нельзя выйти на уровень выше).

find . -type f -name “.*” -exec cp {} $DESTINATION \;

find . -type f -name “.*” -exec cp {} $DESTINATION \;

А еще эти точки напрягают

Я бл... хочу:

cp -Fse

:)

Поздравляю, ты ошибся. Что будет в $DESTINATION, если в . у нас такое:

f1
f2
d/f1
d/f2

?

Что я делаю не так?

Вот это:

$ cp -R * ~/dev/d2/

Если есть ключ -R, достаточно сказать

$ cp -R ./ ~/dev/d2/

что даст желаемый результат. Помни, звездочка раскрывается шеллом, а не командой cp.

Подписаться на комментарии