anonymous@RULINUX.NET~# | Last login: 2024-11-05 18:33:56 |
Регистрация Вход | Новости | Разметка | Пользователи | Галерея | Форум | Статьи | Неподтвержденное | Трекер | Правила форума | F.A.Q. | Ссылки | Поиск |
Новости - OpenSource | [RSS] |
Привет пользователям UNIX-like систем!
Я пишу небольшой набор открытых и свободных coreutils (небольшой проект, не такой фичастый, как GNU coreutils) для POSIX-совместимых ОС. Проект называется escu (сокращение от Extremelly Small CoreUtils). Писать начал, когда пожелав выучиться системному программированию по исходникам GNU Coreutils, но не смог разобраться в spaghetti code и решил их переписать согласно спецификациям The OpenGroup.
Уже есть утилиты: basename, chroot, dirname, false, head, link, ln, logname, ls, mkfifo, mv, pwd, test, true, tty, uname, unlink, yes. Многие из них уже полностью POSIX-совместимы. Я использую системные вызовы для снижения накладных расходов, а также стараюсь писать максимально простой код для облегчения понимания новичками.
Проект нацелен на максимальную переносимость, поэтому при написании используются только возможности стандартной библиотеки языка C, а для сборки будут использоваться только POSIX-совместимые make, компилятор языка C и командная оболочка.
Релизы будут выпускаться тогда, когда они будут готовы, за исключением багфиксов.
Комментарии, предложения и патчи приветствуются
Dorif(*) (2013-01-13 00:39:47)
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.4 (KHTML, like Gecko) Ubuntu/12.10 Chromium/22.0.1229.94 Chrome/22.0.1229.94 Safari/537.4
Подтверждено: vilfred(*) (2013-01-13 00:58:16)
|
|
|
Скрыть
Re:escu - легковесные coreutils для обучения и встраиваемых систем.>Теперь-то ты понимаешь насколько необходимы легковесные coreutils!
|
Скрыть
Re:escu - легковесные coreutils для обучения и встраиваемых систем.Да. А для более жирных платформ типа этих ваших расбирей - тут уже пох на спринтф, тут придётся создавать проект легковесного кроссплатформенного языка пейтон, только компилируемого и с синаксисом как сиплюсплюса. И переносить на него все эти недоношенные поделки, которыми всякие тупые школьники засирают репозитории линуксовых дистров. |
Скрыть
Re:escu - легковесные coreutils для обучения и встраиваемых систем.>тут придётся создавать проект легковесного кроссплатформенного языка пейтон, только компилируемого и с синаксисом как сиплюсплюса.
|
Скрыть
Re:escu - легковесные coreutils для обучения и встраиваемых систем.> Google Go спешит на помощь!
|
Скрыть
Re:escu - легковесные coreutils для обучения и встраиваемых систем.>А в Ге даже объектов нет.
|
Скрыть
Re:escu - легковесные coreutils для обучения и встраиваемых систем.> Это ещё почему?
|
Скрыть
Re:escu - легковесные coreutils для обучения и встраиваемых систем.>Не знаю, Go-ям не положен может.
|
Скрыть
Re:escu - легковесные coreutils для обучения и встраиваемых систем.> Вообще-то объекты там есть. Просто их зовут структурами, но они вполне удовлетворяют требованиям ООП.
|
Скрыть
Re:escu - легковесные coreutils для обучения и встраиваемых систем.>Как это они удовлетворяют? Наследование, конструкторы, виртуальные методы - где это всё?
|
Скрыть
Re:escu - легковесные coreutils для обучения и встраиваемых систем.Не будет, ибо itoa стал ненужным в ходе переписывания кода, согласно новым соображениям. Dorif(*)(2013-01-16 00:43:15)
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Ubuntu Chromium/23.0.1271.97 Chrome/23.0.1271.97 Safari/537.11 |
Скрыть
Re:escu - легковесные coreutils для обучения и встраиваемых систем.Мда, продуктивный тред.) Началось с корутилзов, вылилось в питоносрач(но относительно вежливый, не как на труполоре).) Dorif(*)(2013-01-16 00:44:13)
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Ubuntu Chromium/23.0.1271.97 Chrome/23.0.1271.97 Safari/537.11 |
Скрыть
Re:escu - легковесные coreutils для обучения и встраиваемых систем.Кстати интересная тема по поводу "Красивого кода" на Хабре. По итогам голосования на моём комментарии и карме можно видеть, что 2/3 людей любят переносить открывающую фигурную скобку, 1/3 не любит, и 1 человек ОЧЕНЬ не любит :) Итоги голосования на моей карме в данном треде, после выше приведенного высказывания были бы еще печальнее))) Вот странно, это же действительно так. Программируя на питоне ты не паришься какой это стиль (скобка перенесена или не), а просто пишешь свою мысль. Ax-Xa-Xa(*)(2013-01-17 19:37:36)
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17 |
Скрыть
Re:escu - легковесные coreutils для обучения и встраиваемых систем.Любит-не любит, есть же проги для форматирования исх. текста под разные стандарты, что ими не пользоваться, если так надо? |
Скрыть
Re:escu - легковесные coreutils для обучения и встраиваемых систем.>Вот странно, это же действительно так. Программируя на питоне ты не паришься какой это стиль (скобка перенесена или не), а просто пишешь свою мысль.
|
Скрыть
Re:escu - легковесные coreutils для обучения и встраиваемых систем.Тем более, что такая хуйня как случайно вставленный/удалённый пробельный(неотображаемый!) символ не должен сказываться на логике работы или компилируемости программы. С символами границ кода чётко видно что при каких условиях будет исполняться, с пробелами/табами же - это просто бред какой-то. |
Скрыть
Re:escu - легковесные coreutils для обучения и встраиваемых систем.Зато в петоне охуительная встроенная поддержка юникода. Вот пример хелловорда (взял первый попавшийся в гугле, урл http://pythonblogg.blogspot.ie/2011/03/1.html ):
$ echo $LANG en_US.UTF-8 $ # Что должна выводить эта программа? $ cat test.py #!/usr/bin/env python # -*- coding: utf-8 -*- def a_d(): # создана функция a_d() a=2 b=5 c=a+b print('c равно == ',c) # вывод на экран текта # "с равно " и значение переменной c def main(): a_d() return 0 if __name__ == '__main__': main() $ # авотхуй: $ python test.py ('c \xd1\x80\xd0\xb0\xd0\xb2\xd0\xbd\xd0\xbe == ', 7) |
Скрыть
Re:escu - легковесные coreutils для обучения и встраиваемых систем.># Что должна выводить эта программа?
В питоне 2 применение print для вывода строки в читабельном виде должно быть таким: print(u'с равно == %s' % c) Или таким, если 2.7 (способ выше также работает): print(u'с равно == {}'.format(c)) Да, перед уникодными строками в питоне 2 надо ставить u. На самом деле часто работает и так, но есть куча нюансов, это как использовать char в Си для utf-8 с не-ASCII символами. В питоне 3 оба типа (str и unicode) унифицировали. Алсо, unicode там != utf-8, но это тут не важно, так как питон при выводе в консоль в линуксе это дело решает сам. SystemV(*)(2013-01-17 21:59:11)
Отредактировано SystemV по причине "не указана" Emacs-w3m/1.4.508 w3m/0.5.3 |
Скрыть
Re:escu - легковесные coreutils для обучения и встраиваемых систем.Пездец какой-то, а не языг! При том с кучей нюансов! о_О |
Скрыть
Re:escu - легковесные coreutils для обучения и встраиваемых систем.>Пездец какой-то, а не языг! При том с кучей нюансов! о_О
|
Скрыть
Re:escu - легковесные coreutils для обучения и встраиваемых систем.> Ну а в третьей версии убрали остатки нестыковок в дизайне языка.
|
Скрыть
Re:escu - легковесные coreutils для обучения и встраиваемых систем.Просто надо внимательно читать спецификацию языка. print во второй версии это оператор, а не функция))) А вот в третьей, твой пример уже должен заработать так как ты ожидал, если мне не изменяет память. Ax-Xa-Xa(*)(2013-01-18 07:53:04)
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17 |
Скрыть
Re:escu - легковесные coreutils для обучения и встраиваемых систем.> с пробелами/табами же - это просто бред какой-то.
Ax-Xa-Xa(*)(2013-01-18 07:56:23)
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17 |
|
|
|
Этот тред читают 3 пользователя: |
Анонимных: 3 Зарегистрированных: 0 |
Re:escu - легковесные coreutils для обучения и встраиваемых систем.
> но не смог разобраться в spaghetti code и решил их переписать согласно спецификациям The OpenGroup.
Кстати не уже ли The OpenGroup регомендует писать так код так:
ОМГ! Не уже ли это лучше читается, чем к примеру так?)))
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11