LINUX.ORG.RU

GNU sed 4.3

 ,


0

1

После 5 лет разработки состоялся релиз реализации потокового редактора sed от проекта GNU — 4.3.

Основные изменения:

  • Ускорена в 10 раз работа регулярных выражений.
  • Появилась новая опция --sandbox, запрещающая выполнение программ при использовании команд r/w/e.
  • Теперь используется unlocked-io в случае доступности на системе, что позволит ускорить операции ввода-вывода.
  • Удалена устаревшая команда L,
  • Исправлено множество ошибок.

>>> Подробности

★★★★★

Проверено: jollheef ()
Последнее исправление: Deleted (всего исправлений: 2)

Ускорена в 10 раз работа регулярных выражений.

воу

Dron ★★★★★
()
Ответ на: комментарий от NextGenenration

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

Хелловорды в десяток строк - это не то, на чём понятна вся гениальность архитектурных решений. Она становится понятна по мере усложнения проектов.

saahriktu ★★★★★
()
Ответ на: комментарий от NextGenenration

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

Хелловорды в десяток строк - это не то, на чём понятна вся гениальность архитектурных решений. Она становится понятна по мере усложнения проектов.

saahriktu ★★★★★
()
Ответ на: комментарий от saahriktu

Чтение кода глазами упрощается

понять print(«const») проще чем print(var_name)

Заодно код легче на эти самые данные

времена модемов прошли

NextGenenration ★★
()
Ответ на: комментарий от NextGenenration

Дело не в передаче данных, а в том, чем является код. Более лёгкий код является более простым с архитектурной точки зрения.

saahriktu ★★★★★
()
Ответ на: комментарий от saahriktu

Более лёгкий код является более простым с архитектурной точки зрения.

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

NextGenenration ★★
()
Ответ на: комментарий от anc

А есть возможность эту коллекцию сделать общедоступной?

Тоже нравятся такие штуки, но обычно просто бессистемно с ними сталкиваюсь.

Вообще, есть вот такая подборка видео с игрушками на sed: https://www.youtube.com/playlist?list=PLdvB7n7RN2UCVb7GnKQu_R-fbQ-laLtkZ
Туда и моя Flappy Bird попала, собственно.

evilface ★★
()
Ответ на: комментарий от NextGenenration

Не в вашу тему, но вы не правы

времена модемов прошли

и снова вернулись...
1. Хрен знает где, хрен знает с каким 2g то еще приключение команды набирать
2. Канал может быть забит так что три строки тяжело написать. Примеры: dos/ddos.
Просто канал засрали. У мню есть конкретный пример, обычный (точнее очень хреновый) adsl где на себя еще видеонаблюдение одеяло перетягивает, ssh консоль может отваливаться через 1-3 минуты, вобщем та еще мутотень работать с этими объектами.
3. Спутниковый канал, стоит как чугунный мост, а кач-во никакое, тоже пошаговая стратегия получается, набрал команду и жди или отобразиться или отвалиться.
4. продолжать можно долго, на устойчивом модемном соединении бывало лучше чем в современном мире.

anc ★★★★★
()
Ответ на: комментарий от anc

вопрос на засыпку: ты имена переменным даёшь из одного символа? пробелы и табуляцию для формотирования удаляешь? нет? создаёшь алиасы типа ag = apt-get ? если прочитаешь выше по теме, то поёмешь что подход saahriktu не даст принципиального выигрыша. пару байт погоды не сыграет.

NextGenenration ★★
()
Ответ на: комментарий от evilface

А есть возможность эту коллекцию сделать общедоступной?
Тоже нравятся такие штуки, но обычно просто бессистемно с ними сталкиваюсь.

Врядли. Я очень громко назвал коллекцией (моя вина), реально я так же бессистемно раскидываю на разных компах, где увидел с того и скачал (виртуалки тоже включены). Поэтому что бы сделать коллекцию надо этим целенаправленно заняться, что лениво.

Вообще, есть вот такая подборка видео с игрушками на sed: https://www.youtube.com/playlist?list=PLdvB7n7RN2UCVb7GnKQu_R-fbQ-laLtkZ

А вот за это спасибо! Не все видел, пощупаем.

Туда и моя Flappy Bird попала, собственно.

Круто!!! Всегда уважал подобные творения! Development читаю не часто, поэтому был не в курсе.

anc ★★★★★
()
Ответ на: комментарий от NextGenenration

Читаем начало моего сообщения «Не в вашу тему». Я ответил только на «времена модемов прошли»

anc ★★★★★
()
Ответ на: комментарий от NextGenenration

нет. лёгкий для чтения код это код несколько в стиле языков высокого уровня, а с архитектурной точки зрения он достаточно сложен.

А вот с этим не соглашусь. Если код тяжело читается, значит и изменить его в разы тяжелее, что за собой тянет бОльшие трудозатраты как при поиске багов, так и при добавлении новых багов/фич. И в конечном итоге или проект помрет или если востребовано перепишут с нуля.

anc ★★★★★
()
Ответ на: комментарий от evilface

Вашу, дальше двух пройти не получается :) И подвисает иногда отображение. Но сделано от души, в такой короткий код уложили, респект!

anc ★★★★★
()
Последнее исправление: anc (всего исправлений: 1)
Ответ на: комментарий от anc

А вот с этим не соглашусь

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

NextGenenration ★★
()
Ответ на: комментарий от NextGenenration

Я про варианты (которые реально в жизни встречал):
1. функция на over 300 строк из кучи if
2. недавнее (старый проект), невьебные строки где перемежается pcl с текстом прямо в одной строке, причем он еще и копипастный в разных местах, реально я «окуель» правя этот код...

anc ★★★★★
()
Последнее исправление: anc (всего исправлений: 1)
Ответ на: комментарий от evilface

схема full, но запускаю по ssh через iTerm2 на хосте слака 14.2, зависание раз на раз не приходиться... скорее процентов 60 на зависание, при этом явно скрипт работает, т.е. ждем когда «влетим» в стену (без визуального отображения) само закончиться. Как-то так :)

anc ★★★★★
()
Последнее исправление: anc (всего исправлений: 1)
Ответ на: комментарий от anc

Странно.

У меня при запуске по ssh на solaris лаги были, но там тормоза отрисовки. Можно пропробовать light, она для этого осталась (ну и просто потому что мне нравится).

evilface ★★
()
Ответ на: комментарий от evilface

Первый же запуск, та же фигня. На none тоже поймал, но раза с пятого. В целом не парьтесь, работает же наверно локально.

anc ★★★★★
()
Ответ на: комментарий от anc

Понятно. Возможно, дело в удалённом соединении, хотя оно работало даже в какой-то онлайн-иде браузерной со встроенной консолью.

evilface ★★
()
Ответ на: комментарий от NextGenenration

Подходы к вопросу архитектурной простоты бывают разные. Те, кто стояли у истоков Unixway'я, выбрали именно то, о чём я говорю. Не имена переменных и функций в 2-4 символа максимум, а разделение кода и данных по разным файлам.

saahriktu ★★★★★
()
Ответ на: комментарий от NextGenenration

Разумеется, речь не об этом. А о том чтобы, например, химический софт не содержал таблицу Менделеева в самом коде, а читал данные из какого-нибудь /usr/share/sci/mendeleev.dat.

saahriktu ★★★★★
()
Ответ на: комментарий от saahriktu

А о том чтобы, например, химический софт не содержал таблицу Менделеева в самом коде, а читал данные из какого-нибудь /usr/share/sci/mendeleev.dat

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

NextGenenration ★★
()
Ответ на: комментарий от saahriktu

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

NextGenenration ★★
()
Ответ на: комментарий от evilface

Возможно, дело в удалённом соединении

Все дома, схема:
mac book pro -> домашний wifi (asus ac66u) -> хост где запущено поддиванный сервак, если быть точным именно ваша игра на нем в kvm.
Т.е. нестабильность только на wifi может быть.
ЗЫ Хотяяяя, надо будет по проводу проверить, сейчас не удобно, елки фиголки, как уберем тогда удобнее станет :) Если забуду и вам интересно через месяц напомните :)

anc ★★★★★
()
Ответ на: комментарий от anc

Ок, отлично. )

Там мне PR прислали, пока что принять не могу (по причине его обширности и не сданности проекта в универе), но в скором времени оно и на маках должно будет уметь запускаться.

А пока что потихоньку музыку к ней пишу.

evilface ★★
()
Ответ на: комментарий от NextGenenration

Так к однострочникам всё это относится в последнюю очередь. Это относится в первую очередь к большим проектам, которые зачем-то решили перемешать код и таблицы данных. Вот об этом речь уже какой пост:

Правило представления: Храните знания в данных так, чтобы логика программы была тупой и надёжной.
(Эрик С. Рэймонд, "Искусство программирования в UNIX")
В однострочнике логики мало и она вся на поверхности. Отдельные данные ничего не портят. Но, если это код на сотни и тысячи строк, да ещё и перемешанный с данными...

saahriktu ★★★★★
()
Ответ на: комментарий от saahriktu

Так к однострочникам всё это относится в последнюю очередь. Это относится в первую очередь к большим проектам, которые зачем-то решили перемешать код и таблицы данных

компилятор будем разрезать но значение констант и бинарник?

NextGenenration ★★
()
Ответ на: комментарий от NextGenenration

компилятор будем разрезать но значение констант и бинарник?

Чувак, ты уже заколебал. Тебе нормально сказали, что если данных дофига, то лучше эти данные рассортировать по отдельным *.xml или *.txt файлам. Служебные скрипты и бинарники отдельно, данные отдельно.

Если не доходит иди убейся головой об стену.

anonymous
()
Ответ на: комментарий от anonymous

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

NextGenenration ★★
()
Ответ на: комментарий от NextGenenration

Там не «несколько символов означающих шахматные фигуры». Если бы. Тогда бы всё решалось правкой одной строчки. Но, там дальше куча логики на юникодных символах - цифрах в кружочках. А ещё там в логике используется юникодный символ «стрелочка вправо» ("->"). Вот об этом была речь в той фразе о том, что автор широко заюзал юникодные символы. После замены на обычные цифры на первый взгляд всё работает.

saahriktu ★★★★★
()
Последнее исправление: saahriktu (всего исправлений: 1)
Ответ на: комментарий от NextGenenration

Зачем пихать юникод в логику? Юникодные строки и символы - это то, что легко отделить от логики. Логику можно было завязать на двоичных данных. Не обязательно на юникодных цифрах в кружочках.

saahriktu ★★★★★
()
Ответ на: комментарий от saahriktu

Это не из sed'а. Это тебе шелл date вызвал, ещё до запуска sed'а.

Вот, смотри:

$ echo "-= 2 =-" | sed 's/2/`date`/' 
-= `date` =-

anonymous
()
Ответ на: комментарий от NextGenenration

Куда подставлен? Логика не выводится. И ей фиолетово на чём она. На юникодных символах или нет. Ещё один раз повторяю, что я сразу говорил про использование в логике цифр в кружочках и стрелочек. Можно было и без них.

saahriktu ★★★★★
()
Ответ на: комментарий от saahriktu

Кстати, из sed'а спокойно можно вызывать внешние команды если что:
> echo "-= 2 =-" | sed «s/2/`date`/»
-= Пт янв 6 16:21:29 MSK 2017 =-

Из sed'а это делается по-другому:

echo " -= 2 =-" | sed 'x; s/.*/date/e; G; s/^\(.*\)\n\(.*\)2\(.*\)$/\2\1\3/'  

evilface ★★
()
Ответ на: комментарий от saahriktu

Да, действительно.

Есть ещё модификатор 'e', но я пока не понял как им пользоваться.


s/regexp/command/e, будет произведена замена, после которой весь буффер будет выполнен, а вывод команды будет подставлен вместо содержимого буффера.

evilface ★★
()
Последнее исправление: evilface (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.