LINUX.ORG.RU
ФорумTalks

Мммм... как PowerShell со вкусом Linux

 , , ,


0

4

Так вот, по последним сводкам с фронта, Шмикрософт выпустили PoewrShell Core 6.0 которая теперь идет и под GNU/Linux (и Яблоко счастливыйОС (ц)(р)(тм))

https://betanews.com/2018/01/12/powershell-core-windows-macos-linux/

В тред приглашаются сублиматоры на PowerShell как «намного лучше єтого вашего костыльного Bash» для выяснения отношения с отрядом закапывателей. Дискач.

Ответ на: комментарий от Meyer

А зачем оно за пределами винды?

Микрософт понял, что он не центр мира и начал шевелится, чтобы не сдохнуть.

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

А зачем оно в пределах винды?

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

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

Чтобы запустить powercli, например, чтобы вандалить vmware'ные виртуалки из любимой консоли.

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

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

Да щаз, это убожище даже для этого совершенно непригодно. Оно вообще ни для чего не пригодно, на самом деле, из-за идиотской объектной концепции. Даже самая простая задача превращается в тонну нечитаемой скриптятины с километровыми названиями полей.

Желающие возразить могут продемонстрировать, например, элементарщину типа «вывести на экран строки с датой, временем, IP, логином для всех входящих соединений службы remote desktop» на поверщели, чтобы все поржали над убогостью и overbloat'ностью этой никчёмной поделки.

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

Желающие возразить могут продемонстрировать, например, элементарщину типа «вывести на экран строки с датой, временем, IP, логином для всех входящих соединений службы remote desktop» на поверщели

Демонстрируй.

У меня вот была задача посчитать сколько компьютер работал в месяц часов. Я сильно сомневаюсь, что на баше это было бы проще.

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

Желающие возразить могут продемонстрировать, например, элементарщину типа «вывести на экран строки с датой, временем, IP, логином для всех входящих соединений службы remote desktop»

Давай сначала покажи свою башлапшу для решения этой задачи.

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

Оно вообще ни для чего не пригодно, на самом деле, из-за идиотской объектной концепции.

Всё с точностью до наоборот. Plaintext это рак юниксовых шелов.

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

Plaintext это рак юниксовых шелов.

Настолько же концептуально правда как и «Спасайте деревья — сжигайте книги» из Postal 2.

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

Ты не прав. Структурированные данные не требует парсинга перед обработкой. Чего нельзя сказать про голый текст.

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

Демонстрируй.

Я не желаю возразить.

Я сильно сомневаюсь, что на баше это было бы проще.

grep daemon_name /var/log/messages

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

Давай сначала покажи свою башлапшу для решения этой задачи.

Я не стану оскорблять баш установкой его на какую-то ублюдочную венду.

Да и зачем, в венде же есть же чудесная поверщель же, на которой же так удобно же всё делать!

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

Всё с точностью до наоборот. Plaintext это рак юниксовых шелов.

Чо, примерчика с временем-IP-логином для rd не будет? А чо так? Сразу все увидят что даже для такой элементарщины надо хренову тучу несвязного текста написать, да ещё и с абсолютно неочевидными именами и параметрами? А если захочется ещё и pass/fail вывести, то чудесный скрипт на поверщели раздуется почему-то даже не в 2, а сразу в 3 раза.

А с юниксовым plaintext всё быстро, просто, логично и работает.

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

Я не стану оскорблять баш установкой его на какую-то ублюдочную венду.

И нахрена здесь винда? Мы обсуждаем поверщель для линукса.

Чо, примерчика с временем-IP-логином для rd не будет?

Нет не будет. Я не знаю что такое служба remote desktop.

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

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

И нахрена здесь винда? Мы обсуждаем поверщель для линукса.

Если поверщель даже на родной венде никуда не годится, то ценность её на линуксе вообще отрицательна.

У меня складывается впечатление, что ты админ виндового локалхоста.

У меня есть ровно один сервак с вендой в датацентре с чудной софтиной для расчёта рецептур для всякой лакокрасочной промышленности. Так что никак не локалхост. А так, вообще, я провайдер, пока что.

Признавайся, как звёзды заработал?

Звёздодрочер, что-ли? Хрен знает, я за этой фигнёй не слежу.

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

У меня вот была задача посчитать сколько компьютер работал в месяц часов.

в китайском фирмваре бивиса нету счетчика моточасов?

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

Ну, например, напиши на bash под венду команду, которая все процессы на одно ядро перекидывает:)

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

Баш на винде — такое же недоразумение, как и ПыШ (не путать с пыш-пыш) на линухе.

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

Нефанатикам, очевидно, очень просто продемонстрировать какая «удобная» и «юзабельная» штука эта поверщель. Только что-то до сих пор ни единого вразумительного и сколь-нибудь полезного примера нету. :) Нефанатики такие нефанатики :)

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

Ну так для объективного человека понятно, что то, что то...

Ну так где же примеры использования поверщели для решения повседневных задач? Ну чтобы всем стало понятно какая это «удобная» и «замечательная» штука?

А всё очень просто. Ни единого примера вендодрочеры не приведут, потому что всем сразу станет понятно, какое упоротое говно эта поверщель. Любой ЯП включая брейнфак будет лучше и понятнее этого очередного позорного высера мелкософта.

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

ну баш реально убогий.

Что лапша на баше, что на површелл выглядит более-менее одинаково как-то самое.

Примеры сам найди, фанатик.

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

ну баш реально убогий.

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

Что лапша на баше, что на површелл выглядит более-менее одинаково как-то самое.

Ну-ну, одинаково, ага. Поверщель на порядок более громоздкий и на пару порядков угрёбищнее.

Примеры сам найди, фанатик.

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

Так что хрен вам. Выкладывайте вы, чтоб потом отмазаться не вышло.

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

повседневных однострочников можно использовать что угодно, от си

Я же говорил - фанатик :D

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

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

Поверщель на порядок более громоздкий и на пару порядков угрёбищнее.

Ну если не применять systemd, то как раз будет и баш намного порядков то самое :D

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

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

Ты же понимаешь, как выглядят подобные отмазки от любителя поверщели? :) В 2018 отмазываться текстами типа «У меня всё барахло на работе» - это фейл космических масштабов. :)

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

Ну если не применять systemd, то как раз будет и баш намного порядков то самое :D

Бла-бла-бла. Примеры-то будут? :) :) :)

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

от любителя поверщели

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

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

бла-бла-бла

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

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

Раз он такой убогий, то что же до сих пор его даже не думают менять на что-то другое?

По-крайней мере init-скрипты на баш-лапше уже заменили на systemd-юниты.

Соглашусь с теми, кто считает Bash убожеством и наркоманией.

По-хорошему, его бы выпилить нахер, заменить на какой-нибудь Fish или Python.

Надеюсь, после похорон иксов RedHat возьмётся за Bash.

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

По-хорошему, его бы выпилить нахер, заменить на какой-нибудь Fish или Python.

Кто-то запрещает, что-ли? Пропиши своему юзеру пистон в качестве шелла и радуйся. Наверно даже можно в какой-нибудь осистемдиленной по самое небалуйся федоре вообще все *sh снести.

Речь не о том, хорош или плох баш. Речь о том, что поверщель - абсолютное говно. Эталон говна среди любых возможных шеллов. Если задаться целью написать самый убогий и неюзабельный шелл, то всё равно получится нечто гораздо лучше чем поверщель.

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

Речь не о том, хорош или плох баш. Речь о том, что поверщель - абсолютное говно.

Нет, именно об этом и речь. В мире GNU/Linux дистрибутивов пока еще по-умолчанию везде Bash, который такое же абсолютное говно, как и PowerShell. Следовательно не стоит «в чужом глазу соломину видеть, в своём — бревна не замечать».

Вот когда убьют Bash, сделают удобный Shell с нормальным языком и без костылей вида \\\\\\\, `, ', ", fi, (забыли заэкранировать пробел, скрипт удалил /home) и прочего наркоманства, вот тогда и можно будет тыкать пальцем в PowerShell и смеяться. А пока — аксиома Эскобара.

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

У меня есть ровно один сервак с вендой в датацентре с чудной софтиной для расчёта рецептур для всякой лакокрасочной промышленности.

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

а может попробуешь изучить, прежде чем ярлыки вешать? Для настройки оффтопика PS вполне годный инструмент. И да, object.property удобнее grep.

Но вот полезность сабжа под никсами не больше полезности баша под оффтопиком.

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

По-хорошему, его бы выпилить нахер, заменить на какой-нибудь Fish или Python.

Нет. Только жабаскрипт. Ведь он используется в серьезном бизнесе.

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

забыли заэкранировать пробел, скрипт удалил /home

В идеальном мире, идиотов не подпускают к написанию кода.

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

Не знаю, сколько там и чего порвали, но Ubuntu, Fedora, SUSE уже перешли на Wayland из коробки, а Debian с CentOS/RHEL скоро на него перейдут.

В целом, скорее всего будет такая же картина:

http://esxi.z-lab.me:666/~exl_lab/screens/systemdwins.png

И это замечательно.

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

Все свои слова я могу подкрепить авторитетными ссылками.

http://www.opennet.ru/opennews/art.shtml?num=47467
https://www.suse.com/betaprogram/sle-beta/

Ctrl + F «Wayland»

Так что проследуй обличать ложь где-нибудь в другом месте.

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

wayland в planned и beta-х с начала своего рождения, так что твоё «перешли» - обычные фантазии пока что

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

Судя по второй ссылке, финальный релиз, то бишь GMC (Golden Master Candidate) дистрибутива SUSE Enterprise Linux 15 c Wayland из коробки назначен на 15 апреля.

Осталось совсем ничего. Не слежу за SUSE, но вряд ли они вернутся обратно на иксы за эти три месяца.

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

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

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

Кеды потихоньку допилят до нормальной работе на Wayland'е.

А вообще, очень хорошо, что KDE-разработчики и GNOME-разработчики орудуют лопатами вместе. Взять те же KDE's Server-Side Decorations, которые были интегрированы в GTK+. Раньше такое было бы невозможным, но Wayland объединил непримиримые лагери.

на нвидии

А вот здесь да, нужен ещё один палец Торвальдса.

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

а может попробуешь изучить, прежде чем ярлыки вешать?

Изучил. Говно полное. Не пригодно ни для чего даже в венде.

Для настройки оффтопика PS вполне годный инструмент.

Ну хоть один жизненный пример покажете уже наконец? :) :) :)

И да, object.property удобнее grep.

Ну так примеры в студию, чего уж проще?

Простейшая задача - показать кто, когда, откуда и с каким результатом пытался залогиниться через remote desktop на вендосервер. Покажите же, как «удобно» это всё делается через ваши сраные object.property и т.п.

ЗЫ: В линуксах всякие упорыши тоже пытаются этот объектный маразм с как-то привелосипедить кривыми костылями. Получается крайне хреново и совершенно неюзабельно. Пример - ubus в openwrt. Теперь, вместо какого-нибудь

 . /tmp/dhcp/wwan0/state
echo $GW
приходится городить
eval `ubus -S call "network.interface.wwan0" status | jsonfilter -e 'GW=@["route"][@.target="0.0.0.0"].nexthop'`
echo $GW
И это ещё самый простенький пример того, наскольно неэффективен и перегружен объектный подход.

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

А вот здесь да, нужен ещё один палец Торвальдса.

Надо бы его по отходу оного замумифицировать, ака «мощи Торвальдса». Потом показывать нерадивым драйверостроителям. Притчи и сказки писать о том как...

А что это я, 21 век на дворе...

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

Например скриптовая работа с логами

Python.

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

Изучил. … Не пригодно ни для чего даже в венде.

Значит не изучил.

Простейшая задача - показать кто, когда, откуда и с каким результатом пытался залогиниться через remote desktop на вендосервер. Покажите же, как «удобно» это всё делается через ваши сраные object.property и т.п.

В Job. И не забудь указать, сколько заплатишь.

В линуксах всякие упорыши тоже пытаются этот объектный маразм с как-то привелосипедить кривыми костылями.

Да, только упоротый может работать с объектами интерпретатором, который не умеет в объекты и ругать сам ООП, а не оболочку.
Был бы в openwrt шел с ООП, ты бы написал что-то типа

(ubus -S call "network.interface.wwan0").gw

Ну так примеры в студию, чего уж проще?

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

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

В Job. И не забудь указать, сколько заплатишь.

Ссыкуны. :)

Был бы в openwrt шел с ООП,

А ещё утилиты с ООП, приложения с ООП, демоны с ООП, конфиги с ООП, и юзвери с ООП головного мозга, которым json с xml сразу в нейронную сеть заходит.

ты бы написал что-то типа
(ubus -S call «network.interface.wwan0»).gw

Ага. А если захочется чуть больше, то выглядеть это будет как принято у ООП маньяков:

NetworkObject = (ubus -S call "network.interface.wwan0")
NetworkObject.gw.output.console.format('IPAddress')
NetworkObject.address.output.console.format('IPAddress')
NetworkObject.interface.output.console.format('String')
NetworkObject.domain_name_servers.dns1.output.console.format('IPAddress')
NetworkObject.domain_name_servers.dns2.output.console.format('IPAddress')

вместо

 . /tmp/dhcp/wwan0/status
echo $GW $ADDRESS $INTERFACE $DNS2 $DNS2

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

Это я ещё не показывал как эту сову на глобус натягивают в этот ООП собственно запихивают выхлоп совершенно не ООПного udhcpc :) :)

Сделайте уже себе ОС с ООП и дрючьтесь там с чем угодно. Ой, такая ОС уже была же, Epoc32 AKA Symbian. Только вот сдохла почему-то...

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

NetworkObject.gw.output.console.format('IPAddress')
echo $GW $ADDRESS $INTERFACE $DNS2 $DNS2

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

совершенно не ООПного udhcpc

Переписать на ООП. Чем тогда будешь крыть?

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

Ага, т.е. в случае объектного интерфейса ты предлагаешь вручную задавать форматирование.

А как иначе-то эти какие-то пропертя объектов в человекочитаемом виде вывести в консоль? Объекты же, методы же, наследование с темплейтами и прочая.

А в своей портянке за тебя это кто-то делает. С фига ли?

Мне плевать на всякое там форматирование, я хочу в одной строке увидеть всю нужную информацию в человекочитаемом виде.

Переписать на ООП.

Переписали давным-давно. Не помогло.

Чем тогда будешь крыть?

Крыть уже нечего и незачем. Симбиан сдох.

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

А если захочется чуть больше, то выглядеть это будет как принято у ООП маньяков:

NetworkObject = (ubus -S call "network.interface.wwan0")
NetworkObject.gw
NetworkObject.address
NetworkObject.interface
NetworkObject.dns[0]
NetworkObject.dns[1]

ftfy. Да, именно так.

Это я ещё не показывал как…

…ты умеешь из крайности в крайность? Да нет, уже показал.

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

А как иначе-то эти какие-то пропертя объектов в человекочитаемом виде вывести в консоль?

Процедурщика видно издалека. На примере C#. Все классы наследуют от Object метод ToString. Наследники его переопределяют и реализуют конвертацию в строку как им хочется. Так что IP адрес будет правильно отформатирован.

Мне плевать на всякое там форматирование, я хочу в одной строке увидеть всю нужную информацию в человекочитаемом виде.

Провокатор. Почему ты в своём примере ставишь подходы в не равные условия? Если твоя баш лапша выдаёт форматированный вывод, то и в случае объектного подхода NetworkObject.gw должен выдать форматированную строку. Но ты намеренно выставляешь няшный ООП в выгодном для себя свете.

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

Так что IP адрес будет правильно отформатирован.

Бгг. А ты в курсе, что IP адрес может быть представлен как строка далеко не единственным способом?

Почему ты в своём примере ставишь подходы в не равные условия?

Очевидно потому что условия не равные. Ваш К.О.

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

Бгг. А ты в курсе, что IP адрес может быть представлен как строка далеко не единственным способом?

Это неважно. Твой скрипт как то форматирует же, вот так же будет отформатированно и в случае ООП. Но это всё детали реализации. Мы говорим про подход.

Очевидно потому что условия не равные. Ваш К.О.

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

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

И где приведение $GW к нужному формату?

А зачем оно, если udhcpc и так выдаёт нужную и понятную человеку строку, а не какой-то абстрактный сраный объект «ИП_адрес»?

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

Твой скрипт как то форматирует же, вот так же будет отформатированно и в случае ООП.

Зачем скрипту что-то форматировать, если источник информации уже выдаёт информацию в человекочитаемом виде?

Мы говорим про подход.

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

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

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

Затем, что

Так как же будет отформатировано в случае ООП? Шестнадцатеричная запись? Десятично октетами с точкой? Десятичное целое? Кто объекту объяснит в каком виде сейчас понадобился IP?

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

Взять из источника информацию в человекочитаемом и легко обрабатываемом виде

IP в виде текста нельзя назвать легко обрабатываемым. Вывод на консоль не является обработкой. Обработкой будет наложение маски для получения адреса сети. Вот тут твой человекочитаемый текст сольётся со страшной силой.

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

Обработкой будет наложение маски для получения адреса сети. Вот тут твой человекочитаемый текст сольётся со страшной силой.

получаем 1.2.3.4

накладваем маску 22

И, внезапно, легко получаем строку 1.2.3.4/22 которая легко скармливается другим программам.

Магия?

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

В случае ООП, как раз, не важно как его тебе на экран нарисует оболочка (как настроишь — так и нарисует), а в переменную, или другому оператору будет передан объект соответствующего типа.

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

накладваем маску 22

Это только если маска в таком виде задана. А если 255.255.255.0? Реквестирую портянку для перевода.

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

И теперь покажи как легко и непринуждённо ты вычленишь из этого маску в формате четырёх десятичных чисел разделённых точкой и отделишь адрес подсети

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

В случае ООП, как раз, не важно как его тебе на экран нарисует оболочка (как настроишь — так и нарисует), а в переменную, или другому оператору будет передан объект соответствующего типа.

Да кому этот объект нужен-то? Абсолютно весь линуксячий софт жрёт те же IP адреса в виде текста. И выдаёт в виде текста.

Для чего это ООП дрочево в шелле системы построенной на принципе «всё есть файл» нужно?

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

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

И теперь покажи как легко и непринуждённо ты вычленишь из этого маску в формате четырёх десятичных чисел разделённых точкой и отделишь адрес подсети

Зачем? Это сделает софтина для которой предназначена эта инфа. А если очень хочется самому посмотреть - то ipcalc например есть.

Не, ну правда - спорт какой-то.

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

Это только если маска в таком виде задана. А если 255.255.255.0? Реквестирую портянку для перевода.

Очевидно 1.2.3.4/255.255.255.0

Куда, что и зачем переводить надо - я так и не понял.

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

Да кому этот объект нужен-то? Абсолютно весь линуксячий софт жрёт те же IP адреса в виде текста. И выдаёт в виде текста.

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

Это сделает софтина для которой предназначена эта инфа

А в случае с ООП придётся тебе преобразовывать? Слив засчитан.

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

Очевидно 1.2.3.4/255.255.255.0

Очевидно ты шлангуешь. С таким форматом тебя пошлют на три русские буквы.

Куда, что и зачем переводить надо - я так и не понял.

255.255.255.0 -> 24

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

И теперь покажи как легко и непринуждённо ты вычленишь из этого маску в формате четырёх десятичных чисел разделённых точкой и отделишь адрес подсети

Тут без фреймворка уровня джанги не обойтись.

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

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

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

А в случае с ООП придётся тебе преобразовывать? Слив засчитан.

Твой слив, что-ли? Где хоть одна софтина, которой нужно скармливать объекты, а не текст?

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

Очевидно ты шлангуешь. С таким форматом тебя пошлют на три русские буквы.

Кто пошлёт? Этот формат старше чем 1.2.3.4/24 и весь софт его прекрасно понимает.

255.255.255.0 -> 24

Но зачем это нужно делать?

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

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

Так тебе текст же и отдали, что ноешь? Что они за тебя перестали формировать файл с объявлением переменных для sh, а отдали текст в формате JSON? Так не объект же отдали, бери парсер да разгребай. Тебе даже на grep не надо велосипед изобретать, готовый парсер дали.

Где хоть одна софтина, которой нужно скармливать объекты, а не текст?

В оффтопике. И причём тут «софтина»? Мы об удобстве подхода говорим.

Ты сейчас покажешь, как легко из 172.16.35.12/18, который в конфиге сетевой карты прописан получить для конфига dhcpd подсеть, первый, последний адреса для аренды, широковещательный адрес, и маску в формате [0-255].[0-255].[0-255].[0-255]? Или таки сольёшься?

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

Так тебе текст же и отдали, что ноешь? Что они за тебя перестали формировать файл с объявлением переменных для sh, а отдали текст в формате JSON? Так не объект же отдали, бери парсер да разгребай. Тебе даже на grep не надо велосипед изобретать, готовый парсер дали.

А теперь объясни, нахрена вот это всё? json, парсеры и т.п. Для удобства? Так неудобно же совсем.

В оффтопике. И причём тут «софтина»?

В оффтопике тоже никаких объектов на самом деле нету. А софтина тут при том, что шелл должен обеспечивать возможность быстро и просто «склеивать» разные софтины для совместной их работы на пользу юзверю.

Мы об удобстве подхода говорим.

Об удобстве подхода к чему? К накостыливанию объектов туда, где никакой объектностью даже не пахнет?

Ты сейчас покажешь, как легко из 172.16.35.12/18, который в конфиге сетевой карты прописан получить для конфига dhcpd подсеть, первый, последний адреса для аренды, широковещательный адрес, и маску в формате [0-255].[0-255].[0-255].[0-255]? Или таки сольёшься?

ipcalc 172.16.35.12/18

И никаких объектов.

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

И это ещё самый простенький пример того, наскольно неэффективен и перегружен объектный подход.
неэффективен и перегружен

Потому что его используют не там, где нужно.

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

А теперь объясни, нахрена вот это всё? json, парсеры и т.п. Для удобства? Так неудобно же совсем.

Админу локалхоста неудобно. А тем, у кого много серверов, очень даже наоборот. Посмотри как foreman конфиг хоста отдаёт: и админу читать «как есть» удобно, и на клиенте городить забор не нужно, и для вывода в гуй на сервере лишних телодвижений не потребуется.

В оффтопике тоже никаких объектов на самом деле нету.

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

Об удобстве подхода к чему? К накостыливанию объектов туда, где никакой объектностью даже не пахнет?

Как раз к исключению костылей. Но да, порог вхождения у ООП выше, чем у пайпов.

ipcalc 172.16.35.12/18

И никаких объектов.

Оно даст

Address:	172.16.35.12
Network:	172.16.0.0/18
Netmask:	255.255.192.0 = 18
Broadcast:	172.16.63.255

Address space:	Private Use
Address class:	Class B
HostMin:	172.16.0.1
HostMax:	172.16.63.254
Hosts/Net:	16382
И как мне это в /etc/dhcp/dhcpd.conf пложить? Даже если забыть, что в sh нет ipcalc, ты не решил задачу. Сливаешься?

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

Админу локалхоста неудобно. А тем, у кого много серверов, очень даже наоборот.

Ну у меня много серверов. Неудобно.

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

Да-да, то-то всё сводится к CreateFile. Спецслужбы постарались, не иначе.

И как мне это в /etc/dhcp/dhcpd.conf пложить?

Чо, правда не знаешь?

Даже если забыть, что в sh нет ipcalc, ты не решил задачу.

В sh даже cat и ls нету.

Сливаешься?

Слилось системное ООП в виде дохлого Симбиана.

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

Да-да, то-то всё сводится к CreateFile. Спецслужбы постарались, не иначе.

Или ModifyFile, или DeleteFile, или тем же трём операциям но со множеством файлов. Каждый раз всё делать руками?

Чо, правда не знаешь?

Ты предлагаешь мне руками это переносить? А кто верещал о превосходстве текста над объектами? Даже не надо формирование dhcpd.conf показывать, покажи лёгкое и непринуждённое заполнение необходимых переменных. Или слабо?

Слилось системное ООП в виде дохлого Симбиана.

Да нет, вполне себе успешно живёт в виде Windows10. А вот ты…

В sh даже cat и ls нету.

Это не спасёт тебя от слива. Задачу ты не решил.

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

Или ModifyFile, или DeleteFile, или тем же трём операциям но со множеством файлов. Каждый раз всё делать руками?

Ты даже не понял о чём речь :)

Ты предлагаешь мне руками это переносить? А кто верещал о превосходстве текста над объектами? Даже не надо формирование dhcpd.conf показывать, покажи лёгкое и непринуждённое заполнение необходимых переменных. Или слабо?

Не, ты и правда не знаешь как это делается?

Один из вариантов:

eval `ipcalc -b -n 172.16.35.12/18 | grep '^[[:alpha:]]\+:' | tr ':' '=' | tr -d ' '`
echo $HostMin $HostMax

Ещё есть как минимум 3 способа не сложнее.

Слилось системное ООП в виде дохлого Симбиана.

Да нет, вполне себе успешно живёт в виде Windows10. А вот ты…

Щито?

Это не спасёт тебя от слива. Задачу ты не решил.

Какую ещё задачу? Для ООП дрочеров эта элементарщина аж целую задачу представляет?

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

Fish или Python

Лучше D. Он как Python, только бинарный, и при запуске rdmd создается кеш, который при повторном запуске скрипта отрабатывает очень шустро.

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

Ты даже не понял о чём речь :)

Ну так проясни, о великий.

Не, ты и правда не знаешь как это делается?
Один из вариантов:

eval `ipcalc -b -n 172.16.35.12/18 | grep '^[[:alpha:]]\+:' | tr ':' '=' | tr -d ' '`
echo $HostMin $HostMax

Во-первых, ты говорил не ipcalc -b -n 172.16.35.12/18, а ipcalc 172.16.35.12/18.Ты собираешься каждый раз вызывать стороннее приложение с разными параметрами? Тебе и так поблажку сделали, разрешив все расчёты на ipcalc возложить.
Во-вторых, ты утверждаешь, что это удобнее, чем если бы ipcalc объект возвращал?

ip=`ipcalc 172.16.35.12/18`
echo $ip.subnet.host_min $ip.subnet.host_max
В третьих, твой пример не работает
$ eval `ipcalc -b -n 172.16.35.12/18 | grep '^[[:alpha:]]\+:' | tr ':' '=' | tr -d ' '`
$ echo $HostMin $HostMax

$ 

В четвёртых, задачу ты так и не решил: где переменные, которые можно в dhcpd.conf подставить?

Напомню:

Ты сейчас покажешь, как легко из 172.16.35.12/18, который в конфиге сетевой карты прописан получить для конфига dhcpd подсеть, первый, последний адреса для аренды, широковещательный адрес, и маску в формате [0-255].[0-255].[0-255].[0-255]? Или таки сольёшься?

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

Ну так проясни, о великий.

Для доступа к «объектам» ОС и работе с ними в конечном итоге используется CreateFile и WriteFile ReadFile и IoControl. Исключение составляет только гуй.

Ты собираешься каждый раз вызывать стороннее приложение с разными параметрами?

Зачем в скриптах выхлоп с цветом?

Во-вторых, ты утверждаешь, что это удобнее, чем если бы ipcalc объект возвращал?

А в строки преобразовывать кто будет?

В третьих, твой пример не работает

Ты совсем ламер, что-ли? Однострочник который в консоль скормить можно так выглядит:

eval `ipcalc -b -n 172.16.35.12/18 | grep '^[[:alpha:]]\+:' | tr ':' '=' | tr -d ' '` ; echo $HostMin $HostMax

В четвёртых, задачу ты так и не решил: где переменные, которые можно в dhcpd.conf подставить?

А зачем мне решать твои задачи? На выхлоп ipcalc посмотри, ради интереса, узнаешь имена нужных тебе переменных. Твоя ж задача, тебе и решать.

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

Сливаешься тут ты. В конфиг помещается интересующая информация. А то, что в sh нет ipcalc - это преимущество перед парашеллом.

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

Почему ты утверждаешь, что решение задачи не может быть решением задачи? У тебя моча в голове что ли?

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

Ты собираешься каждый раз вызывать стороннее приложение с разными параметрами?

В этом весь смысл shell - вызывать приложения с параметрами и рулить потоками данных через стандартный ввод-вывод.

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

Для доступа к «объектам» ОС и работе с ними в конечном итоге используется CreateFile и WriteFile ReadFile и IoControl. Исключение составляет только гуй.

Только на локалхосте. Самое простое: версию бинарника ты как собираешься смотреть?

Зачем в скриптах выхлоп с цветом?

Причём тут выхлоп? Ты уже вызвал ipcalc с двумя разными параметрами.

А в строки преобразовывать кто будет?

Интерпретатор.

Однострочник который в консоль скормить можно так выглядит:

Бугога:

[user@host ~]$ eval `ipcalc -b -n 172.16.35.12/18 | grep '^[[:alpha:]]\+:' | tr ':' '=' | tr -d ' '` ; echo $HostMin $HostMax

[user@host ~]$

А зачем мне решать твои задачи?

Потому что ты тут кукарекаешь, что с ООП сложнее. Давай, докажи как просто без ООП. Задача-то детсадовская.

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

Сливаешься тут ты. В конфиг помещается интересующая информация.

Ещё один кукаретик. Ну давай, покажи как легко и просто без ООП на sh получить переменные, которые потом в dhcpd.conf поместишь, имея только адрес хоста. Причём, чтобы не обкакаться, тебе придётся сделать это проще, чем

ip=`ipcalc 172.16.35.12/18`
echo $ip.subnet.host_min $ip.subnet.host_max $ip.adress $ip.netmask.long() $ip.gw
Или как Stanson шланговать будешь?

А то, что в sh нет ipcalc - это преимущество перед парашеллом.

И как же это выражается?

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

Потому что глаза и мозг есть, чтобы понять, что он распарсил только две переменных, но не все. И уже у него код сложнее ООП версии вышел. Да ещё и нерабочий. Скажи, что у тебя в мозгах, что ты этого не видишь?

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

Так и в PS нет ipcalc, если что. И ничего не мешает написать его и как коммандлет, и как shell-скрипт.

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

Только на локалхосте. Самое простое: версию бинарника ты как собираешься смотреть?

facepalm.jpg

Ты вообще понимаешь о чём речь?

Причём тут выхлоп? Ты уже вызвал ipcalc с двумя разными параметрами.

Скидка дня! Бесплатный копипаст части выхлопа ipcalc --help для идиотов!

 -n --nocolor  Don't display ANSI color codes.
 -b --nobinary Suppress the bitwise output.

Ты вообще понимаешь что происходит?

Потому что ты тут кукарекаешь, что с ООП сложнее. Давай, докажи как просто без ООП. Задача-то детсадовская.

Ты ещё не показал как просто с ООП. :)

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

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

facepalm.jpg

$ ipcalc 172.16.35.12/18
Address:   172.16.35.12         10101100.00010000.00 100011.00001100
Netmask:   255.255.192.0 = 18   11111111.11111111.11 000000.00000000
Wildcard:  0.0.63.255           00000000.00000000.00 111111.11111111
=>
Network:   172.16.0.0/18        10101100.00010000.00 000000.00000000
HostMin:   172.16.0.1           10101100.00010000.00 000000.00000001
HostMax:   172.16.63.254        10101100.00010000.00 111111.11111110
Broadcast: 172.16.63.255        10101100.00010000.00 111111.11111111
Hosts/Net: 16382                 Class B, Private Internet

$ ipcalc -b -n 172.16.35.12/18
Address:   172.16.35.12         
Netmask:   255.255.192.0 = 18   
Wildcard:  0.0.63.255           
=>
Network:   172.16.0.0/18        
HostMin:   172.16.0.1           
HostMax:   172.16.63.254        
Broadcast: 172.16.63.255        
Hosts/Net: 16382                 Class B, Private Internet

ipcalc -b -n 172.16.35.12/18 | grep '^[[:alpha:]]\+:'
Address:   172.16.35.12         
Netmask:   255.255.192.0 = 18   
Wildcard:  0.0.63.255           
Network:   172.16.0.0/18        
HostMin:   172.16.0.1           
HostMax:   172.16.63.254        
Broadcast: 172.16.63.255

$ ipcalc -b -n 172.16.35.12/18 | grep '^[[:alpha:]]\+:' | tr ':' '='
Address=   172.16.35.12         
Netmask=   255.255.192.0 = 18   
Wildcard=  0.0.63.255           
Network=   172.16.0.0/18        
HostMin=   172.16.0.1           
HostMax=   172.16.63.254        
Broadcast= 172.16.63.255  

ipcalc -b -n 172.16.35.12/18 | grep '^[[:alpha:]]\+:' | tr ':' '=' | tr -d ' '
Address=172.16.35.12
Netmask=255.255.192.0=18
Wildcard=0.0.63.255
Network=172.16.0.0/18
HostMin=172.16.0.1
HostMax=172.16.63.254
Broadcast=172.16.63.255

$ ipcalc -b -n 172.16.35.12/18 | grep '^[[:alpha:]]\+:' | tr ':' '=' | tr -d ' ' | cut -f 1,2 -d '='
Address=172.16.35.12
Netmask=255.255.192.0
Wildcard=0.0.63.255
Network=172.16.0.0/18
HostMin=172.16.0.1
HostMax=172.16.63.254
Broadcast=172.16.63.255

и т.д.

Тут вообще ничего не надо парсить. Совсем ничего. Конвеер позволяет решать задачу в целом, а не дрочить пропертя твоих объектов по одной.

И уже у него код сложнее ООП версии вышел. Да ещё и нерабочий.

Ох уж эти сказки, ох уж эти сказочники. :) ООП головного мозга препятствует осознанию того, что есть 100500 других способов решения задач кроме ООП?

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

Ещё один кукаретик. Ну давай, покажи как легко и просто без ООП на sh получить переменные, которые потом в dhcpd.conf поместишь, имея только адрес хоста.

Ты дебил. Переменные оттуда получать нафиг не надо. Переменные при необходимости сам задам на основании того, что будет парсить shell строки ровно до того вида, который и нужен. Если внезапно у тебя в парашелле не окажется какой-то переменной, то твой подход внезапно идёт нахрен (а ты идёшь нахрен здесь и сейчас).

Или как Stanson шланговать будешь?

Шлангуешь тут ты.

И как же это выражается?

Так, что нет привязки к какому-то одному формату ввода-вывода.

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

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

Надо будет все распарсить - сделать это не проблема.

И уже у него код сложнее ООП версии вышел.

Может и сложнее, но гораздо понятнее, так как сразу ясно, откуда что берётся, и ничего под капот не прячется.

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

Ты вообще понимаешь о чём речь?

Я понимаешь, ты… пока этого не видно.

 -b --nobinary Suppress the bitwise output.

Ты смотришь от чего хелп копируешь?

$ ipcalc --help
Usage: ipcalc [OPTION...]
…
Specific info options:
  -b, --broadcast                 Display calculated broadcast address
…
  -n, --network                   Display network address
…

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

О боже, прям эталон ламерства! А kudzu у тебя на локалхосте есть? :) :) :)

Положи на место редхатовские костыли уже, и пользуй нормальный оригинальный софт. :)

У редхатовского костыля был ключик --all-info, если правильно помню, он выдавал что-то похожее на то, что выдаёт ipcalc.

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

удобнее $ip.netmask?

Однозначно удобнее. И понятнее. И работает, в отличии от несуществующих ООП костылей.

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

Так это твоя головная боль, противник объектов. В ООП мире объект передал, а там пофигу в каком виде какое приложение его на экран покажет. Объект от этого не изменится.

О боже, прям эталон ламерства…

писать скрипты с непредсказуемым поведением.

Однозначно удобнее. И понятнее.

Парсить вывод приложений, который от системы к системе может поменяться — конечно удобнее. А как хорошо у тебя получилась проверка на корректность заполнения переменных… И к локали то оно не привязано вовсе.

И работает, в отличии от несуществующих ООП костылей.

Так мы о подходе, а не о реализации. Какой дебил будет сравнивать bash в linux и powershell под windows?

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

В ООП мире объект передал, а там пофигу в каком виде какое приложение его на экран покажет.

ООП мира не существует. Вообще. Единственная ОС, которая частично была действительно ООП - Epoc32/Symbian давно сдохла. Теперь нет ни одной ОС, в которой сущности, которыми эта ОС оперирует являются объектами.

А теперь расскажи, нахрена в оставшиеся ОС, которые по сути «всё есть файл» (да, даже винда, хоть файлы (их форматы) там в основном бинарные), пихать интерактивный шелл с ООП, который предназначен для быстрого и наглядного связывания частей ОС и программ согласно задаче?

Так мы о подходе, а не о реализации.

Смысл обсуждать подход, если реализации не существует?

Какой дебил будет сравнивать bash в linux и powershell под windows?

А в чём проблема сравнить? Два инструмента для одинаковых задач, в не особо отличающихся по структуре ОС. Одним почему-то можно делать почти что угодно, даже на «чужой» ОС, и это будет быстро, просто и удобно, а если попытаться воспользоваться другим инструментом даже на его родной ОС, то блевать будешь дальше чем видишь. Что мешает сделать вывод, что bash вполне удовлетворителен, а поверщель - эпическое говнище?

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

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

Даже в онтопике не всё есть файл, не говоря уже о родной ос PS. Живых ОС, где всё является файлом днём с огнём не найдёшь.

Касаемо последнего: ты кричишь о неюзабельности powershell, а я помню, что получив задачу я открыл ide, что с PS идёт, и за пару дней накатал решение, не зная PS до этого момента от слова «совсем», которое получилось менее лаконичное, чем на баше, но более читаемое. Из чего делаю вывод, что ты либо неосилятор, либо из детства какая-то травма мешает посмотреть объективно.

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

Даже в онтопике не всё есть файл, не говоря уже о родной ос PS. Живых ОС, где всё является файлом днём с огнём не найдёшь.

Ну и что же не является файлом в венде, кроме гуёвых сущностей?

за пару дней накатал решение, не зная PS до этого момента от слова «совсем»

Ну так продемонстрируй же это «решение». :)

ЗЫ: И почему это все любители поверщели так стесняются показать, то, что у них в итоге получилось? :) :) :) :)

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

Ну и что же не является файлом в венде, кроме гуёвых сущностей?

Процесс, подключение и много ещё чего.

Ну так продемонстрируй же это «решение». :)

Ты необосновано утверждаешь, что без ООП удобнее, и не можешь подтвердить это на простом примере, а я тебе что-то демонстрировать должен? Ну ты и кадр.

И почему это все любители поверщели так стесняются показать, то, что у них в итоге получилось?

Потому что бесплатно тебя уму-разуму учить не желают.

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

Процесс, подключение и много ещё чего.

Бгг. И оно всё позволяет ReadFile/WriteFile (ага, даже процесс :)) и закрывается при помощи одной и той же CloseHandle. :)

а я тебе что-то демонстрировать должен?

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

Потому что бесплатно тебя уму-разуму учить не желают.

Хотеть денег за никому не нужное ненужно? Вся суть ООП фанатиков. :)

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

Ты всё не успокоишься? Синдром утёнка оказался слишком запущенным.

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

Хотеть денег за никому не нужное ненужно?

Как ты о своём образовании лихо так…

mogwai ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.