Не, для 2Printer.exe я просто на автомате пути перебил не зная ничего об этой проге.
Сейчас скачал установил — это же виндовая прога и все что ей нужно просто дать строку во входном параметре не затронутую bash-шеллом, дальше она её сама разбирает.
Причина зависания что она хочет именно виндовую консоль и не работает в эмуляторе терминала mintty.exe. В директории установки Cygwin должен быть Cygwin.bat — он запустит bash в виндовой консоли. Из под неё все работает.
А в терминале mintty.exe только через запуск нового окна консоли cmd.exe удалось:
Там есть какие-нибудь особенности синтаксиса или ввода путей?
Ну да.
Кстати в bash-шелле строка в двойных кавычках считается экранированной. И "*.*" не расширяется в список файлов. См. man bash раздел QUOTING. Не понятно вообще почему в WSL-bash это сработало.
Так что в Cygwin скорей всего надо так:
$ 2Printer.exe -s /cygdrive/c/2Printer/_input/*
Вот кстати пример того что майкрософт что-то намудрило с попыткой скрестить ужа и ежа.
Cygwin был и остается прекрасной альтернативой почившему в бозе встроенному в Windows SFU/SUA с непонятными версиями программ, и которое в общем нацеливалось на непонятные задачи связанные со взаимодействием Windows-серверов с Unix-серверами, а не на предоставление привычного POSIX-окружения для пользователей Windows.
А теперь, когда макрософт полюбила линукс, WSL не то что бы конкурент Cygwin, а наверное его будущий убийца, если майкрософт захочет.
Для описываемых применений можно использовать Cygwin — POSIX user-space в Windows с набором софта практически как в обычном Linux-дистрибутиве. Проекту уже «как сто лет в обед» и всякие заморочки со взаимодействием с Windows-миром пройдены и переварены, достаточно большое коммюнити пользователей, ведется при поддержке Redhat.
И да, там можно запустить X-сервер для GUI-программ или c целым десктопом как XFce/LXDE, или даже, например, из bash с помощью имеющегося в пакетах mingw-w64 скомпилировать нативную Windows-программу (не связанную с библиотекой Cygwin-POSIX), и, разумеется, запустить её, и например распарсить её консольный вывод с помощью unix-утилит или любого другого инструментария (типа PHP) в bash. :)
Насколько я понял г-н Sittler описал структуры данных поддерживаемые языками и назвал это ни много ни мало: «моделями памяти, лежащими в основе языков программирования». Так же вести речь о локальных переменных в менее импозантной и широкой форме чем:
Подобно модели памяти с вложенными записями, модель объектного графа позволяет сделать все атрибуты конкретной сущности локальными по отношению к конкретной части вашей программы — вы просто не даете каких-либо ссылок на её структуру данных для остальной части программы, — но не позволяет сделать приватным конкретный атрибут всех сущностей. Однако, в отличие от модели памяти с вложенными записями, модель объектного графа уменьшает зависимость от размера памяти любого узла, что открывает дверь в объектно-ориентированное наследование и позволяет делать атрибуты приватными, несмотря на ряд серьезных проблем.
Дефолтные шортхэнды для лямбд, т.к. [](){} в большинстве случаев не надо. Также дефолтные параметры для аргументов лямбд ($0, $1, итд, привет Rust), возможность не писать [] (делая автоматов [=] для литералов вроде int32_t и [&] для всего остального, как собственно в C#), возможность не писать () если аргументов нет.
Вот пока все выше не сделано, обсуждать новые операторы и прочие извраты имхо рановато. Нужно сначала привести язык к состоянию, когда студент может на него посмотреть и его не будет тошнить от неудобоваримости увиденного.
Мне кажется что при наличии таких брёвен (возможно объективно неизбежных) как нотация шаблонов, смысл которых в конечном итоге получается как раз в попытке привнести техники функционального программирования в C++ говорить об улучшении синтаксиса лямбд по большому счету похоже на вычищение соринок.
Но это так к слову. Главное что, вот всё-таки это всё больше похоже на предложения по введению синтаксического сахара (причем достаточно субъективного с т.з. пользы), чем на улучшения в языке. И ставить в зависимость от него введение новых фич мне кажется неправильно.
Если говорить и приглашать к предложению новых идей для C++, то при организации всего этого стоит четко представлять себе ценность, мотивацию и место, которое занимает то или иное предложение с инженерной точки зрения — это либо исправление логической несогласованности и снятие искусственных ограничений как примеры в статье, либо действительно полезная для разработки фича, уточнение базовых идей, которое делает язык идейно простым и понятным (в качестве самого показательного примера можно привести новые правила генерации специальных функций-членов класса), либо же это очередная претензия студента к тому, как надо записывать лямбды, чтобы они смотрелись красиво (или по привнесению каких-то ещё как они любят выражаться "вкусных плюшек" из других знакомых языков: C#, Pyton, Rust чтоб было так же "удобно" и "круто"), либо какой-нибудь синтакическо-семантический хак для реализации некой красивой идеи, либо ещё что-то. В общем каждый, кто имеет опыт участия в обсуждении предложений по "улучшению" какого-либо языка программирования наверняка может представить во что всё это может выливаться. :)
… услышал, что на Lua написан только Tarantool. Это не так, на Lua много чего написано. Примеры: OpenResty, XMPP-сервер Prosody, игровой движок Love2D, Lua скриптуется в Warcraft и в других местах.
В самом начале make был программой, которую один человек написал для себя и нескольких своих знакомых. Тогда он, недолго думая, сделал так, что командами воспринимаются строки, которые начинаются с Tab. Т. е. Tab воспринимался отлично от пробела, что крайне некрасиво и нетипично ни для UNIX, ни за его пределами. Он так сделал, потому что не думал, что make будет ещё кто-то использовать кроме этой небольшой группы. Потом появилась мысль, что make — хорошая вещь и неплохо бы включить его в стандартный комплект UNIX. И тогда чтобы не сломать уже написанные мейкфайлы, т. е. написанные вот этими вот десятью людьми, он не стал ничего менять. Ну вот так и живём… Из-за тех десятерых страдаем мы все.
Перефразируя классика:
Мы все страдали понемногу
О чем-нибудь и как-нибудь,
Так что незнаньем мануалов, к сожаленью,
У нас немудрено блеснуть.
$ info make
2.1 What a Rule Looks Like
==========================
A simple makefile consists of "rules" with the following shape:
TARGET ... : PREREQUISITES ...
RECIPE
...
...
A "recipe" is an action that 'make' carries out. A recipe may have
more than one command, either on the same line or each on its own line.
*Please note:* you need to put a tab character at the beginning of every
recipe line! This is an obscurity that catches the unwary. If you
prefer to prefix your recipes with a character other than tab, you can
set the '.RECIPEPREFIX' variable to an alternate character (*note
Special Variables::).
Вообще, названия утилит UNIX — это отдельная история. Скажем, название grep идёт от командй g/re/p в текстовом редакторе ed. (Ну а cat — от concatenation, я надеюсь, это все и так знали. :) Ну и для кучи: vmlinuz — Linux with Virtual Memory support gZipped.)
…
Когда Кена Томпсона, автора UNIX (вместе с Деннисом Ритчи) спросили, что бы он поменял в UNIX, он сказал, что назвал бы функцию creat (sic!) как create. UPD от 2017-02-12: источников полно, например: en.wikiquote.org/wiki/Ken_Thompson. No comments. Замечу, что позже этот же Кен Томпсон вместе с другими разработчиками оригинальной UNIX создал систему Plan 9, исправляющую многие недостатки UNIX. И в ней эта функция называется create. :) Он смог. :)
И что? Ужас, утилиты и функции названы не так? Задето чувство прекрасного? Возмутительно, как после всего этого с этими cp и creat (sic!) эти UNIX-подобные системы можно использовать?! Так это ещё цветочки, вот вообще трэш — «О срезании углов»
:-)))
Я твой UNIX-дом труба шатал, shell-калитка тряс, философия-огород топтал, язык С кэпка на х… вертел!
Итак, я не хочу сказать, что UNIX — плохая система. Просто обращаю ваше внимание на то, что у неё есть полно недостатков, как и у других систем. И «философию UNIX» я не отменяю, просто обращаю внимание, что она не абсолют. Мой текст обращён скорее к фанатикам UNIX и GNU/Linux. Провокационный тон просто чтобы привлечь ваше внимание.
Закон, мораль, этика, нравственность, гуманность. Если задаться поросом: исходя из жизненного опыта убрать лишнее понятие из этого списка, то это — «закон».
Я думаю что это так. И тогда становится ясно как к этому понятию относится — не стоит смешивать его с другими понятиями. И такое отношение к пониамнию закона и законности очень на мой взгляд справедливо и правильно.
И когда на процессе по запрету доступа к какому-нибудь интернет-ресурсу какой-нибудь прокурор свое видение соблюдения морали и защиты нравственности начинает смешивать с соблюдением закона, то на самом деле на практике это выливается в то, что закон подменяется его видением.
Мне из-за этого становится тревожно, потому что именно из-за этого явления несмотря на то, что в законе ясно и четко определен круг информации запрещенной к распространению и имеется недвусмысленное указание что «ограничение доступа к информации устанавливается федеральными законами» (т.е. исключительно — должен быть ФЗ в котором четко указано что такая-то информация запрещена к распространению), мы фактически имеем ситуацию когда запрещается любая информация, которая признается противоправной с точки зрения прокурора/судьи. Именно из-за того что защита нравственности начинает смешиваться с защитой законов.
И мы тут потом вынуждены рассуждать про «самый гуманный способ» блокировок URI…
Чтобы заблокировать отдельную страницу сайта нужно направить весь http-шный трафик, который идёт на ip-адреса этого сайта на демона, который будет а) смотреть заголовки, выясняя, какую именно страницу клиент хочет открыть и б) если клиент хочет открыть страницу, которая заблокирована, подменить ответ на страничку «сайт заблокирован…» ну или просто разорвать соединение.
Да, и в таком виде это получается по-закону.
Если же делать «Либо провайдер пропускает трафик к узлу / от узла как есть, либо законно блокирует подключение к узлу.» то это тогда получается, что Вы предлагаете блокировать тупо всё по ip
Я ничего не предлагаю. Не надо привязываться к слову «узел». Можно уточнить: либо провайдер пропускает трафик к узлу / от узла как есть, либо законно блокирует подключение к узлу по запрещенному URI. Вы же понимаете… Главное чтобы провайдер это понимал.
Либо провайдер пропускает трафик к узлу / от узла как есть, либо законно блокирует подключение к узлу. Когда он блокирует доступ к отдельной html-странице он просто не пропускает её к вам, заменяя на соответствующее уведомление. Предствьте себе, если провайдер вдруг начнет пропускать некоторые страницы, но фильтровать/подменять какую-либо содержащуюся в них информацию или данные. Это мне кажется мягко говоря будет очень не хорошо и насколько я понимаю не законно. Точно так же и с запросами не по HTTP.
Я не очень понимаю, честно говоря: вот подмену записей при запросах на их ДНС-сервера провайдеры могут спокойно делать — это их сервера и что там они у себя пропишут для ответов клиентским запросам это их дело.
Но из статьи не совсем ясно — они подменяют ответ от стороннего (гугловского) ДНС-сервера что-ли? На сколько мне известно по закону провайдер не имеет право менять что-либо в трафике клиента. Либо он пропускает трафик к узлу / от узла как есть, либо законно блокирует подключение к узлу. Промежуточного варианта не предусмотренно и это все противоречит закону. Запросы клиетнов к узлам сети и все ответы на них должны передаваться по сетям связи в немодифицированном виде.
Я прочитал ещё начальный вариант и ничего, что было бы «за гранью» и от чего бы «кровоточило из глаз при чтении» не заметил. Ну да, в паре мест падежи не согласованы, может где речевые обороты не такие гладкие, но для изложения на иностранном языке вполне прилично. Кто писал, тот понимает. Англоговорящим и не такое приходится читать. Реакция не заслуженная и, главное, не по существу.
Сейчас скачал установил — это же виндовая прога и все что ей нужно просто дать строку во входном параметре не затронутую bash-шеллом, дальше она её сама разбирает.
Причина зависания что она хочет именно виндовую консоль и не работает в эмуляторе терминала mintty.exe. В директории установки Cygwin должен быть Cygwin.bat — он запустит bash в виндовой консоли. Из под неё все работает.
А в терминале mintty.exe только через запуск нового окна консоли cmd.exe удалось:
Ну да.
Кстати в bash-шелле строка в двойных кавычках считается экранированной. И "*.*" не расширяется в список файлов. См. man bash раздел QUOTING. Не понятно вообще почему в WSL-bash это сработало.
Так что в Cygwin скорей всего надо так:
Вот кстати пример того что майкрософт что-то намудрило с попыткой скрестить ужа и ежа.
А теперь, когда макрософт полюбила линукс, WSL не то что бы конкурент Cygwin, а наверное его будущий убийца, если майкрософт захочет.
И да, там можно запустить X-сервер для GUI-программ или c целым десктопом как XFce/LXDE, или даже, например, из bash с помощью имеющегося в пакетах mingw-w64 скомпилировать нативную Windows-программу (не связанную с библиотекой Cygwin-POSIX), и, разумеется, запустить её, и например распарсить её консольный вывод с помощью unix-утилит или любого другого инструментария (типа PHP) в bash. :)
у него не получается.
Мне кажется что при наличии таких брёвен (возможно объективно неизбежных) как нотация шаблонов, смысл которых в конечном итоге получается как раз в попытке привнести техники функционального программирования в C++ говорить об улучшении синтаксиса лямбд по большому счету похоже на вычищение соринок.
Но это так к слову. Главное что, вот всё-таки это всё больше похоже на предложения по введению синтаксического сахара (причем достаточно субъективного с т.з. пользы), чем на улучшения в языке. И ставить в зависимость от него введение новых фич мне кажется неправильно.
Если говорить и приглашать к предложению новых идей для C++, то при организации всего этого стоит четко представлять себе ценность, мотивацию и место, которое занимает то или иное предложение с инженерной точки зрения — это либо исправление логической несогласованности и снятие искусственных ограничений как примеры в статье, либо действительно полезная для разработки фича, уточнение базовых идей, которое делает язык идейно простым и понятным (в качестве самого показательного примера можно привести новые правила генерации специальных функций-членов класса), либо же это очередная претензия студента к тому, как надо записывать лямбды, чтобы они смотрелись красиво (или по привнесению каких-то ещё как они любят выражаться "вкусных плюшек" из других знакомых языков: C#, Pyton, Rust чтоб было так же "удобно" и "круто"), либо какой-нибудь синтакическо-семантический хак для реализации некой красивой идеи, либо ещё что-то. В общем каждый, кто имеет опыт участия в обсуждении предложений по "улучшению" какого-либо языка программирования наверняка может представить во что всё это может выливаться. :)
Перефразируя классика:
И что? Ужас, утилиты и функции названы не так? Задето чувство прекрасного? Возмутительно, как после всего этого с этими cp и creat (sic!) эти UNIX-подобные системы можно использовать?! Так это ещё цветочки, вот вообще трэш — «О срезании углов»
:-)))
Я думаю что это так. И тогда становится ясно как к этому понятию относится — не стоит смешивать его с другими понятиями. И такое отношение к пониамнию закона и законности очень на мой взгляд справедливо и правильно.
И когда на процессе по запрету доступа к какому-нибудь интернет-ресурсу какой-нибудь прокурор свое видение соблюдения морали и защиты нравственности начинает смешивать с соблюдением закона, то на самом деле на практике это выливается в то, что закон подменяется его видением.
Мне из-за этого становится тревожно, потому что именно из-за этого явления несмотря на то, что в законе ясно и четко определен круг информации запрещенной к распространению и имеется недвусмысленное указание что «ограничение доступа к информации устанавливается федеральными законами» (т.е. исключительно — должен быть ФЗ в котором четко указано что такая-то информация запрещена к распространению), мы фактически имеем ситуацию когда запрещается любая информация, которая признается противоправной с точки зрения прокурора/судьи. Именно из-за того что защита нравственности начинает смешиваться с защитой законов.
И мы тут потом вынуждены рассуждать про «самый гуманный способ» блокировок URI…
Я ничего не предлагаю. Не надо привязываться к слову «узел». Можно уточнить: либо провайдер пропускает трафик к узлу / от узла как есть, либо законно блокирует подключение к узлу по запрещенному URI. Вы же понимаете… Главное чтобы провайдер это понимал.
Но из статьи не совсем ясно — они подменяют ответ от стороннего (гугловского) ДНС-сервера что-ли? На сколько мне известно по закону провайдер не имеет право менять что-либо в трафике клиента. Либо он пропускает трафик к узлу / от узла как есть, либо законно блокирует подключение к узлу. Промежуточного варианта не предусмотренно и это все противоречит закону. Запросы клиетнов к узлам сети и все ответы на них должны передаваться по сетям связи в немодифицированном виде.
Упомянутое различие для случая с Windows задокументировано в MSDN:
Честно говоря я никогда не понимал и не разбирался зачем майкрософт ввел ещё серию функций _snprintf_s. Что в них более безопасного?