Отправляет email-рассылки с помощью сервиса Sendsay

За 2006-01-11

Re: Трубопровод в Linux

В сообщении от 1137010705 секунд после начала Эпохи Владимир Ковалев написал(а):

> > > просто прерывать исполнение. Обычно здесь не надо печатать никаких
> > > сообщений. Эти проверки показывают наличие ошибок. Если кто-то захочет
> > ? Считаете что пользователю от этого станет легче?
> Ну хотя бы узнает, что произошла ошибка.

Т.е. мы пишем для идиотов. :) Нормальные люди и так поймут что
произошла ошибка, причем, так сказать, незапланированная.

> > Возможно вы не правильно поняли цитату. "Невозможные условия" я
> > понимая как условия, которые при нормальной работе программы (как это
> > планируется) никогда не должны выполнятся. Например:
> > unsigned a,b,c;
> > ...
> > c = a + b;
> > if (c < a) {
> > exit(1);
> > }
> Если Я пишу МОЮ программу и допускаю в ней "ляп" наподобие приведенного Вами,

где ляп? Попробуйте скомпилировать и выполнить:

#include <stdio.h>
int main(int argc, char **argv) {
unsigned a = 1, b = (unsigned)(-1), c;
c = a + b;
if (c < a)
printf("Error!\n");
return 0;
}

А теперь представьте что вместо `b = (unsigned)(-1)' стоит `b =
some_lib_func()'.

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

> то
> это, ИМХО, не программирование. И проверки на такие ситуации допустимы только
> на
> этапе тестирования программы. Ибо, если возникновение подобной ситуации
> предусмотренно алгоритмом программы, то должна быть предусмотренна и адекватная
> реакция на ситуацию, иначе необходимо что-то делать с алгоритмом

Все предусмотреть невозможно, особенно когда программа использует чужие
библиотеки/программы. Проблемы несовместимости различных версий нужно
ожидать в любой момент. И когда автор библиотеки X что-то напортачит,
пользователи будут обвинять вас. Так что проверки на казалось бы
невозможные условия, но так или иначе зависящие от поведения библиотек,
при решении ответственных задач, все же желательно делать. Так же
нельзя быть чересчур самоуверенным, и все же понимать что и ваших
алгоритмах могут быть ошибки.

> > Напротив, данные принятые от пользователя нужно проверять, и при
> > недопустимых параметрах, выдавать соответствующее сообщение.
> А вот здесь согласен, пользователь ведь может и ошибиться. И об ошибке ему
> необходимо сообщить незамедлительно, дабы ошибка не привела к каким либо
> непоправимым последствиям Но что делать, если сообщить ему об ошибке мы можем
> только после прекращения работы конвеера, когда результат уже будет получен.

А почему не во время?

> Вариантов, как всегда, три:
> 1) Выдать в stderr сообщение об ошибке, а в stdin не выдавать ни чего.

Обычно так и происходит.

> 2) Проигнорировать неправильный параметр, выдать в stderr сообщение, а в stdin
> продолжить вывод с теми параметрами, которые признаны правильными.

Зависит от конкретной задачи. Но если имеется в виду неправильная
опция, то я считаю, что в такой ситуации нужно сразу выругаться в
stderr и прекратить выполнение с кодом завершения отличным от нуля.

> > Меньше лишнего кода - меньше глюков.
> Согласен полностью, но где граница, за которой увеличение кода гарантированно
> приводит к появлению глюков и наоборот, уменьшение кода гарантированно избавляет
> от глюков.

"гарантированно" - это не наше слово, наши слова - "ну возможно, если
повезет". :) Да и вообще это слово тут неприменимо, гарантии в
магазине. В данном контексте можно только говорит о вероятности.

   Konstantin Korikov 2006-01-11 21:41:34 (#500264)

Re: Кодировки с кириллицей

В сообщении от 1137011474 секунд после начала Эпохи Владимир Ковалев написал(а):

> Привет всем.
> Вопрос такой: известны ли кому либо еще какие либо кодировки, содержащие символы
> кириллицы (или чисто русские), кроме приведенных ниже:
> KOI8-R
> WINDOWS-1251
> CP866
> ISO_8859-5
> MACCYRILLIC
> UNICODEBIG
> UNICODELITTLE
> UNICODE
> UTF16BE
> UTF16LE
> UTF16
> UTF32BE
> UTF32LE
> UTF32
> UTF7
> UTF8

T2A. Для какой задачи это вообще нужно?

> И видел ли кто описание стандартов кодировок типа =F2=F5=F3=F3=EB=E9=EA.

Это MIME-кодирование. RFC какой-то там. Кто знает какой подскажите
пожалуйста.

   Konstantin Korikov 2006-01-11 21:41:24 (#500263)

Проблемы GCC

Здравствуйте уважаемые. Такая проблема возникла, много где спрашивал и не
находил ответа. Вообщем есть проект на CORBA (ORBacus). Проект делался до
меня и ко мне в руки попали только IDL-ки + честно говоря не очень уж я
хорошо в CORBA то разбираюсь. Так вот, C++ генератор генерит из низ
cpp-шники. Они получаются большеватые - например чуть больше метра исходник
и заголовочник метр + этот заголовочник подрубает еще один метровый, который
в свою очередь цепляет еще один - все 3 по мегабайту весом. Visual Studio
под Виндами все это дело компилит довольно быстро (без сохранения отладочной
инфо - с сохранением просто падает) и получаем dll, если компилить все это
добро под Никсами (RH 9.0 - версию gcc не помню (тачка на работе, работа
далеко)) то gcc компилит каждый такой исходник, а исходника 3 + 10-ок
мелких - то на каждый большой cpp-ик уходит часов эдак по 6-7!!! Что просто
неприемлемо... Так вот, в чем вопрос)) Что сделать с gcc, чтобы он все это
делал быстрее... какие кто знает ухищрения, может кто сталкивался... Буду
очень благодарен!!!



-*Название листа "Обсуждения и споры о свободных системах и всём сопутствующем"
Написать в лист: comp.soft.linux.debate-list@subscribe.ru
Архив Листа - http://subscribe.ru/archive/comp.soft.linux.debate Поиск: http://www.google.com
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.debate/rules
Номер письма: 2809; Возраст листа: 812; Участников: 875
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.debate/msg/500201

   2006-01-11 19:44:56 (#500201)

Кодировки с кириллицей

Привет всем.
Вопрос такой: известны ли кому либо еще какие либо кодировки, содержащие символы
кириллицы (или чисто русские), кроме приведенных ниже:
KOI8-R
WINDOWS-1251
CP866
ISO_8859-5
MACCYRILLIC
UNICODEBIG
UNICODELITTLE
UNICODE
UTF16BE
UTF16LE
UTF16
UTF32BE
UTF32LE
UTF32
UTF7
UTF8

В принципе, это все, что удалось нагуглить.

О существовании KOI8-U, MACUKRAINIAN знаю.

И видел ли кто описание стандартов кодировок типа =F2=F5=F3=F3=EB=E9=EA.

PS. Прошу прощения за глупый вопрос.

   2006-01-11 19:29:36 (#500195)

Re: Трубопровод в Linux

On Wed, 11 Jan 2006 05:54:54 +0200
Konstantin Korikov <lostcl***@i*****.ua> wrote:

> > просто прерывать исполнение. Обычно здесь не надо печатать никаких
> > сообщений. Эти проверки показывают наличие ошибок. Если кто-то захочет
> ? Считаете что пользователю от этого станет легче?
Ну хотя бы узнает, что произошла ошибка.
> Возможно вы не правильно поняли цитату. "Невозможные условия" я
> понимая как условия, которые при нормальной работе программы (как это
> планируется) никогда не должны выполнятся. Например:
> unsigned a,b,c;
> ...
> c = a + b;
> if (c < a) {
> exit(1);
> }
Если Я пишу МОЮ программу и допускаю в ней "ляп" наподобие приведенного Вами,
то
это, ИМХО, не программирование. И проверки на такие ситуации допустимы только
на
этапе тестирования программы. Ибо, если возникновение подобной ситуации
предусмотренно алгоритмом программы, то должна быть предусмотренна и адекватная
реакция на ситуацию, иначе необходимо что-то делать с алгоритмом
> Напротив, данные принятые от пользователя нужно проверять, и при
> недопустимых параметрах, выдавать соответствующее сообщение.
А вот здесь согласен, пользователь ведь может и ошибиться. И об ошибке ему
необходимо сообщить незамедлительно, дабы ошибка не привела к каким либо
непоправимым последствиям. Но что делать, если сообщить ему об ошибке мы можем
только после прекращения работы конвеера, когда результат уже будет получен.
Вариантов, как всегда, три:
1) Выдать в stderr сообщение об ошибке, а в stdin не выдавать ни чего.
2) Проигнорировать неправильный параметр, выдать в stderr сообщение, а в stdin
продолжить вывод с теми параметрами, которые признаны правильными.
3) В stderr - NULL, в stdin - NULL, exit(1);
Возможны и другие варианты.

Кстати, попробую вывести все ;)
1) stderr - Message, stdin - Torrent, Next
2) stderr - Message, stdin - Torrent, Exit
3) stderr - Message. stdin - NULL, Next
4) stderr - Message, stdin - NULL, Exit
5) stderr - NULL, stdin - Torrent, Next
6) stderr - NULL, stdin - Torrent, Exit
7) stderr - NULL, stdin - NULL, Next
8) stderr - NULL, stdin - NULL, Exit
Впрочем это уже flood.

> Меньше лишнего кода - меньше глюков.
Согласен полностью, но где граница, за которой увеличение кода гарантированно
приводит к появлению глюков и наоборот, уменьшение кода гарантированно избавляет
от глюков.

> Тогда в подзадачах не должно быть ничего о взаимодействии с
> пользователем. Нельзя смешивать решения задач прикладного характера и
> решения задач по пользовательскому интерфейсу. Конечно же это мое IMHO.
Согласен полность, без вопросов.

   2006-01-11 19:29:26 (#500194)

Re: 3D акселерация на Redeon-e

Здравствуйте, dit01.

Вы писали 10 января 2006 г., 23:38:57:

d> ЗаRPMил Catalist, запустил fglrxconfig, получил xorg.conf . X-ы
d> стартуют, рисуются отлично, но галочка в контрол центре на свойствах
d> видео "3D acceleration" неактивна, тот же TuxRacer ругается и тормозит.
d> Может какуюто опцию в xorg.conf прописать? кто знает?

надо зайти в /lib/modules/, там директория fglrx или что-то такое,
счас не помню. в ней надо модули скомпилировать и усановить. Там все
написано. После этого перезагрузить комп, хотя может и достаточно X-ы.
После этого glxinfo должен выдать "direct rendering: Yes"

   2006-01-11 15:31:08 (#500111)

Re: 3D акселерация на Redeon-e

On 1/10/06, dit01 <dit***@k*****.ua> wrote:
> ЗаRPMил Catalist, запустил fglrxconfig, получил xorg.conf . X-ы
> стартуют, рисуются отлично, но галочка в контрол центре на свойствах
> видео "3D acceleration" неактивна, тот же TuxRacer ругается и тормозит.
> Может какуюто опцию в xorg.conf прописать? кто знает?
>

Да, вот этот вопрос меня тоже интересует - вроде драйверы из Catalist
для того и даются, чтобы OpenGL хорошо работал (по крайней мере, в
случае с nVidia это именно так). А что с ATI? может кто знает?

--
Vladimir A.Efremov, PhD
Pangea Inc., Voice: (095) 912-10-23, 912-65-03
Fax: (095) 912-63-44 E-mail: vefrem***@g*****.com
ICQ: 259496450



-*Название листа "Обсуждения и споры о свободных системах и всём сопутствующем"
Написать в лист: comp.soft.linux.debate-list@subscribe.ru
Архив Листа - http://subscribe.ru/archive/comp.soft.linux.debate Поиск: http://www.google.com
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.debate/rules
Номер письма: 2805; Возраст листа: 812; Участников: 875
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.debate/msg/500074

   2006-01-11 13:54:41 (#500074)

Re: Трубопровод в Linux

В сообщении от 1136928369 секунд после начала Эпохи Владимир Ковалев написал(а):

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

У меня пока с чувством юмора все в порядке. :)

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

> исправить ошибку, пусть он прочитает исходный текст и запустит отладчик.
> Объясните лучше проблему в комментариях к исходному тексту.
>
> Но, ИМХО, это совет программиста для программистов, пишущих программы для других
> программистов. И я, считая это ошибкой, "прочитал исходный текст и запустил

> отладчик". Ибо в "коментариях" сказано, что я имею право вносить изменения

> в исходный код (конечное же сохраняя право других на внесение изменений).

А что по вашему программа должна печатать:

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

? Считаете что пользователю от этого станет легче?

Возможно вы не правильно поняли цитату. "Невозможные условия" я
понимая как условия, которые при нормальной работе программы (как это
планируется) никогда не должны выполнятся. Например:

unsigned a,b,c;

...

c = a + b;

if (c < a) {
exit(1);
/*
Тут мы имеем невозможное условие, так как мы предполагаем что
переменные a и b - это целые число без знака, и что результат их
сложения не может превышать максимального значения этого типа данных.
Если это условие выполняется то, где-то раньше произошла ошибка, и нет
смысла продолжать выполнение, так как последствия могут быть необратимыми.
*/
}

Напротив, данные принятые от пользователя нужно проверять, и при
недопустимых параметрах, выдавать соответствующее сообщение.

> > Что значит дополнительная обработка? Что они у вас обрабатываются
> > больше одного раза?
> Изменил алгоритм обработки ключей: часть ключей обрабатывается только для
> коммандной строки, остальные и для трубопровода и для коммандной строки.

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

> > Тут никто не платит деньги за каждую строку кода.
> Если ни кто не платит, то это не значит, что не надо делать (как это сказать)
> "юзабельных" программ.

... и излишне требовательных к системным ресурсам, и слишком сложных в
освоении за счет избытка "ума".

> Конечно, совершенных программ не существует, глюки есть
> всегда. Но я _хочу_ стремиться к совершенству.

Меньше лишнего кода - меньше глюков.

> А если еще задачу разбить на подзадачи ;)

Тогда в подзадачах не должно быть ничего о взаимодействии с
пользователем. Нельзя смешивать решения задач прикладного характера и
решения задач по пользовательскому интерфейсу. Конечно же это мое IMHO.

   Konstantin Korikov 2006-01-11 07:02:57 (#499930)

Re: Трубопровод в Linux

В сообщении от 1136928545 секунд после начала Эпохи Yuri N. Glibovetz написал(а):

> Контрпример:
>
> $ gzip
> gzip: compressed data not written to a terminal. Use -f to force
> compression.
> For help, type: gzip -h
> $ touch somefile
> $ gzip < somefile > somefile.gz
> $

И еще много таких контрпримеров можно привести. А вы смотрели исходники
gzip'а? Легко в них разобраться?

   Konstantin Korikov 2006-01-11 07:02:31 (#499929)

Re: Трубопровод в Linux

В сообщении от 1136927326 секунд после начала Эпохи Dark Coder написал(а):

> А где собственно можно почитать про эти стандарты?

Как не странно в Интернете. :) Ищите в Googl'е с запросом "Стандарт
кодирования GNU". И я уверен что вы найдете, то что ищите.

   Konstantin Korikov 2006-01-11 07:02:22 (#499928)

Re: Трубопровод в Linux

Konstantin Korikov пишет:
> Точно так же, не надо делать поведение программы зависящим от типа
> используемого выходного устройства. Независимость от устройств является
> важным принципом разработки систем; не следует пренебрегать им только
> для того, чтобы уберечь кого-либо от необходимости задать лишнюю опцию.

Контрпример:

$ gzip
gzip: compressed data not written to a terminal. Use -f to force
compression.
For help, type: gzip -h
$ touch somefile
$ gzip < somefile > somefile.gz
$

   2006-01-11 02:56:05 (#499872)