All streams
Search
Write a publication
Pull to refresh
-19
0

Пользователь

Send message
Не, для 2Printer.exe я просто на автомате пути перебил не зная ничего об этой проге.

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

Причина зависания что она хочет именно виндовую консоль и не работает в эмуляторе терминала mintty.exe. В директории установки Cygwin должен быть Cygwin.bat — он запустит bash в виндовой консоли. Из под неё все работает.


А в терминале mintty.exe только через запуск нового окна консоли cmd.exe удалось:
$ cmd /c start 2Printer.exe -verbose -pres 'c:\tmp$\pres.txt' -s 'c:\tmp$\tmp.txt'
$ 2Printer.exe -s "c:\2Printer\_input\*.*"


Там есть какие-нибудь особенности синтаксиса или ввода путей?

Ну да.
Кстати в 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 и в других местах.
Вот ещё пример для встраиваемых систем — Barracuda Application Server и основанный на нем Mako Server. Позиционируется как «RTOS Ready Embedded Web Server on Steroids» использует Lua Server Pages (LSP)
  • В самом начале 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. Вы же понимаете… Главное чтобы провайдер это понимал.
А вы не проверяли может они вообще весь клиентский трафик на 53 порт на свои DNS заворачивают?
Либо провайдер пропускает трафик к узлу / от узла как есть, либо законно блокирует подключение к узлу. Когда он блокирует доступ к отдельной html-странице он просто не пропускает её к вам, заменяя на соответствующее уведомление. Предствьте себе, если провайдер вдруг начнет пропускать некоторые страницы, но фильтровать/подменять какую-либо содержащуюся в них информацию или данные. Это мне кажется мягко говоря будет очень не хорошо и насколько я понимаю не законно. Точно так же и с запросами не по HTTP.
Я не очень понимаю, честно говоря: вот подмену записей при запросах на их ДНС-сервера провайдеры могут спокойно делать — это их сервера и что там они у себя пропишут для ответов клиентским запросам это их дело.

Но из статьи не совсем ясно — они подменяют ответ от стороннего (гугловского) ДНС-сервера что-ли? На сколько мне известно по закону провайдер не имеет право менять что-либо в трафике клиента. Либо он пропускает трафик к узлу / от узла как есть, либо законно блокирует подключение к узлу. Промежуточного варианта не предусмотренно и это все противоречит закону. Запросы клиетнов к узлам сети и все ответы на них должны передаваться по сетям связи в немодифицированном виде.
Более подробно о поведении функций Xprintf на различных платформах можно почитать здесь.

Упомянутое различие для случая с Windows задокументировано в MSDN:
The snprintf function always stores a terminating null character, truncating the output if necessary. The _snprintf family of functions only appends a terminating null character if the formatted string length is strictly less than count characters.

Честно говоря я никогда не понимал и не разбирался зачем майкрософт ввел ещё серию функций _snprintf_s. Что в них более безопасного?
И у любителей compile-time недавно появилось поле для экспериментов: pprintpp
А это прикольно. Но взглянув на этот фрагмент, можно понять что, если в примере использования:
#include <pprintpp.hpp>

#include <cstdio>

int main()
{
    pprintf("{} hello {s}! {}\n", 1, "world", 2.0) ;
}
заменить хотя бы на:
#include <pprintpp.hpp>

#include <cstdio>

int main()
{
    const char *f = "{} hello {s}! {}\n";
    pprintf(f, 1, "world", 2.0) ;
}
то все посыпется…
Нет, примерно такие же ляпы.
Я прочитал ещё начальный вариант и ничего, что было бы «за гранью» и от чего бы «кровоточило из глаз при чтении» не заметил. Ну да, в паре мест падежи не согласованы, может где речевые обороты не такие гладкие, но для изложения на иностранном языке вполне прилично. Кто писал, тот понимает. Англоговорящим и не такое приходится читать. Реакция не заслуженная и, главное, не по существу.

Information

Rating
Does not participate
Registered
Activity