> 1. Потому что если их не ограничивать -- всё будет на C#. Средства не ограничиваются в курсовых и дипломных проектах.
а почему бы и нет ? Сделайте ограничение - должно использоваться ПО не нарушающее лицензии - пусть пишут под моно. Я так понимаю всё-таки суть задачи научить проектировать и писать программы, а не уметь писать мейкфайлы и пользоваться valgrindом.
PS: дифф отправил, могу потом снова вычитать более финальную версию =) Лучше кстати разбивайте строки на 80 колонках - легче диффы будет читать.
> С ненасильственным получается незнакомство ни с чем, кроме VS 200x в дефолтной поставке. (и они уже поняли это.)
Это неправильный подход - вы не можете решать за другого человека, что ему лучше, а что хуже. Я вот считаю что всем лучше ходить пешком, потому что это полезно для здорововья, уменьшает пробки на дорогах, снижает нагрузку на экосистему и т.д. Тем не менее запрещать всем ездить я не стану, т.к. это глупо.
Вы же решаете что лучше других знаете что делать. Я считаю, что студентам деваться некуда - они сделают это задание, да спишут друг у друга решение, но врядли хоть кто-то из них будет пользоваться вышеуказанным стэком, скорее всего они будут с отвращением вспоминать как их заставляли им пользоваться. Кому надо тот изучит всё сам, а кто не хочет изучать - того и заставлять бесполезно.
В общем я считаю, что вы оказываете медвежью услугу вышеуказанным студентам. Нужно рассказывать об альтернативных способах создания программ, а не мышеклацанья, но делать это стоит в таком ключе, чтобы косвенно подгонять студента к выбору правильного инструмента, а не всучивая ему то, что считаете правильным.
Добавьте например ограничение по потребляемым ресурсам и в зависимости от этого снижайте или повышайте балл, хотя это тоже путь в никуда, но хотя бы оградит от использования гуёв и жирных фреймворков.
Добавьте требование кроссплатформенности - это заставит студентов писать программы на разных жабах, но тут они попадут под требование о ресурсах.
В общем придумать можно много чего, но на самом деле я бы не стал ограничивать студентов вообще. Если линукс не увеличивает производительность их труда, не увеличивает полезных знаний и т.д, то он им и не нужен.
> Вы же решаете что лучше других знаете что делать. Я считаю, что студентам деваться некуда - они сделают это задание, да спишут друг у друга решение, но врядли хоть кто-то из них будет пользоваться вышеуказанным стэком, скорее всего они будут с отвращением вспоминать как их заставляли им пользоваться.
Это зависит только от препода и курса, но не от стека (закон педагогики № 1). Кроме того, если человек не хочет учится, а хочет списывать, то практика говорит мне, что бесполезно даже варировать задания.
Кроме того, у нас параллельно (по другому курсу) kernel hacking. Будете и там требовать разнообразия инструментов?
Я ещё раз повторяю -- вы цитируете мои же мысли 2-3 летней давности. Я уже их испытал на практике. Результат: от среднего до плохого. Вскрылась, например, такая проблема: студенты (большинство) не умеют пользоваться ни одной из платформ, которую хотят использовать.
Поэтому в этом (а отчасти и в прошлом) сезоне я стал требовать забивать гвозди молотком. Считая, что лучше всем хорошо освоить молоток, чем научится сносно забивать гвозди отвёрткой, гвоздодёром и пассатижами.
PS Как я уже сказал, вы тратите впустую своё время, поскольку я уже спорило с сам собой ровно на эту же тему, и решение на этот сезон уже принял.
>> А зачем? Ведь парсится только конкретная полученная команда. >> А если придёт только HELO, а имя домена за ней отправится только через час?
> Как придёт, так парсеру и отдай.
Ладно, конец большинства команд можно найти по \n. А как быть с DATA в SMTP?
> 1. Потому что если их не ограничивать -- всё будет на C#. Средства не ограничиваются в курсовых и дипломных проектах.
Кстати, можно ввести ограничение: для каждого языка, не являющегося C, принимается только одна работа на нём. Т.е. не более одной работы на додиезе, на жабе, на лиспе, на перле и т.д. :)
>В общем придумать можно много чего, но на самом деле я бы не стал ограничивать студентов вообще. Если линукс не увеличивает производительность их труда, не увеличивает полезных знаний и т.д, то он им и не нужен.
Средний студент предпочтет скорее нечто типа Делфи. Квалифицированные программисты используют UNIX-like стэк приложений, даже для разработки под Винду. Все дешево, надежно, сердито и продумано за 30 то лет. MS это понял и развивает ПаверШелл. В случае с FOSS, кроме того, не надо тратить время на бюрократию, обосновывая необходимость закупки компонентов этого стека - варез то в серьезных конторах запретили, маски-шоу никому не нужно.
> Поэтому в этом (а отчасти и в прошлом) сезоне я стал требовать забивать гвозди молотком. Считая, что лучше всем хорошо освоить молоток, чем научится сносно забивать гвозди отвёрткой, гвоздодёром и пассатижами.
забавно. если вы мне сможете доказать, что написанный вами SMTP или POP3 клиент указанного уровня для платформы POSIX будет объективно лучше моего, написанного для Win32 на MSVC, я съем свою шляпу*.
задание, которое вы предлагаете, просто как три рубля. оно с одинаковой эффективностью может быть решено в самых различных средах/платформах/языках.
> PS Как я уже сказал, вы тратите впустую своё время, поскольку я уже спорило с сам собой ровно на эту же тему, и решение на этот сезон уже принял.
> забавно. если вы мне сможете доказать, что написанный вами SMTP или POP3 клиент указанного уровня для платформы POSIX будет объективно лучше моего, написанного для Win32 на MSVC, я съем свою шляпу.
1. Как минимум он может быть скомпилирован и запущен на разных системах.
2. Это не задача на реализацию SMTP-сервера. Видимо я в этом тексте не достаточно ясно указал место это задачи в курсе. Хотя и пытался.
3. Ставить для Win32 bison/latex/и т.д. -- мучительно лень в учебном классе.
3. Изучение Win32 было в другом курсе. К чему повторяться?
>> Ладно, конец большинства команд можно найти по \n. А как быть с DATA в SMTP? > Парсер вполне можно запускать только по параметрам команды, после выделение её идентификатора (и я уже дал такую подсказку на лекции).
Ну тут, в принципе, дело твоё. Я просто хочу замолвить словечко за тех, кому как и мне select покажется излишним, и они соорудят несколько потоков с блокирующим чтением.
> Ну тут, в принципе, дело твоё. Я просто хочу замолвить словечко за тех, кому как и мне select покажется излишним, и они соорудят несколько потоков с блокирующим чтением.
...и будут долго чесать репу в попытке решить казалось бы мелкий пункт ТЗ "реализовать временные ограничения на соединение".
>> Ну тут, в принципе, дело твоё. Я просто хочу замолвить словечко за тех, кому как и мне select покажется излишним, и они соорудят несколько потоков с блокирующим чтением. > ...и будут долго чесать репу в попытке решить казалось бы мелкий пункт ТЗ "реализовать временные ограничения на соединение".
А оно там есть? Пардон, тогда несколько процессов.
если его даже и нет, то это лишь досадное недоразумение. будем считать, что автор исправится и внесет этот важный пункт.
> Пардон, тогда несколько процессов.
по процессу на соединение? чудестно. после гордо тестируем полученное приложение на масштабируемость и по результатам стыдливо пытаемся объснить озадаченным студентам, что вообще то Linux не дерьмо и дело вовсе не в нём.
> по процессу на соединение? чудестно. после гордо тестируем полученное приложение на масштабируемость и по результатам стыдливо пытаемся объснить озадаченным студентам, что вообще то Linux не дерьмо и дело вовсе не в нём.
Для студенческой курсовой успех -- это если она не сегфолтится в случае, отличном от номинального, а ты о масштабируемости :)
Так это они сами придумают для борьбы с ТЗ. Я им это связку (блокирование + таймеры) не предлагаю :)
Блокирующие операции в потоках будут разрешены для POP3 сервера. Исключительно по причине меньшего времени на выполнение работы. Соотвественно, требование ограничения времени там, вероятно, не ставится. Хотя... возможно, и там не стоит потакать лени. Надо ещё подумать.
> Блокирующие операции в потоках будут разрешены для POP3 сервера. Исключительно по причине меньшего времени на выполнение работы. Соотвественно, требование ограничения времени там, вероятно, не ставится. Хотя... возможно, и там не стоит потакать лени. Надо ещё подумать.
не стоит "упрощать" жизнь. первое, с чем они встретятся в реальной жизни - это в том числе необходимость отслеживания таймаутов операций. и будут весьма неприятно удивлены тем, как нелинейно это делается. уж лучше портить смолоду. глядишь и бросят пока не поздно это неблагодарное занятие.
>по процессу на соединение? чудестно. после гордо тестируем полученное приложение на масштабируемость и по результатам стыдливо пытаемся объснить озадаченным студентам, что вообще то Linux не дерьмо и дело вовсе не в нём.
Апач так работает - и для среднего портала перформанс более чем достаточный. poll/select ведь нужен для обучения конечным автоматам насколько я понял?
> Апач так работает - и для среднего портала перформанс более чем достаточный.
Учитывая то, что в "среднем портале" основные тормоза приходятся на пыхпыхскрипты, лишний форк у апача заметно на общую производительность не повлияет. > poll/select ведь нужен для обучения конечным автоматам насколько я понял?
А каким образом связаны poll/select и конечные автоматы?
> не стоит "упрощать" жизнь. первое, с чем они встретятся в реальной жизни - это в том числе необходимость отслеживания таймаутов операций. и будут весьма неприятно удивлены тем, как нелинейно это делается. уж лучше портить смолоду. глядишь и бросят пока не поздно это неблагодарное занятие.
>> Апач так работает - и для среднего портала перформанс более чем достаточный.
>Учитывая то, что в "среднем портале" основные тормоза приходятся на пыхпыхскрипты, лишний форк у апача заметно на общую производительность не повлияет.
Да даже и на статике лишний форк это копейки.
>> poll/select ведь нужен для обучения конечным автоматам насколько я понял?
>А каким образом связаны poll/select и конечные автоматы?
Вообще не связаны, но разве есть какая-то другая абстракция для построения асинхронного безтредового сервера?
>>А каким образом связаны poll/select и конечные автоматы? > Вообще не связаны, но разве есть какая-то другая абстракция для построения асинхронного безтредового сервера?
Компьютер -- это вообще такая бааальшая машина состояний.