Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2007.12.02;
Скачать: [xml.tar.bz2];

Вниз

Музыкой навеяло...   Найти похожие ветки 

 
DiamondShark ©   (2007-11-01 12:55) [0]

За SELECT * ... -- оставлять на 6 часов без обеда.
За INSERT без списка полей -- лишать 50% зарплаты.
За ...WHERE OrderDate="+DateToStr(d) вместо параметризованного запроса -- бить милицейской дубинкой по почкам.
За hard-coded SQL больше чем из одного оператора, не вынесенный в ХП -- пожизненный эцих с гвоздями.


 
wicked ©   (2007-11-01 12:57) [1]

> За SELECT * ... -- оставлять на 6 часов без обеда.
если это не тестовый код

> За INSERT без списка полей -- лишать 50% зарплаты.
угу

> За ...WHERE OrderDate="+DateToStr(d) вместо параметризованного
> запроса -- бить милицейской дубинкой по почкам.
> За hard-coded SQL больше чем из одного оператора, не вынесенный
> в ХП -- пожизненный эцих с гвоздями.
а вот подобные предъявы надо делать разработчикам mysql и хостерам
тем более, что вменяемых СУБД для веб не существует


 
Правильный_Вася   (2007-11-01 13:01) [2]

шо ж ты за музыку слушаешь?
красную плесень, что ли?


 
clickmaker ©   (2007-11-01 13:01) [3]


> Музыкой навеяло...

какой?
du hast рамштайна? )

> оставлять на 6 часов без обеда

тоже мне, наказание... на неделю без пива - вот самое то


 
Skyle ©   (2007-11-01 13:01) [4]

К нам на днях приходил соискатель, который знал о try...finally и try...except, но использовал их очень удивительно.

try
 try
   Obj := TSomeClass.Create;
   try
     Obj.DoIt;
   except
   end;
 finally
   Obj.Free;  
 end;
except
end;


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


 
DiamondShark ©   (2007-11-01 13:02) [5]


> шо ж ты за музыку слушаешь?
> красную плесень, что ли?

Не-а. Волосатое стекло.


 
clickmaker ©   (2007-11-01 13:04) [6]


> [4] Skyle ©   (01.11.07 13:01)

ну а вы конечно сразу его ногами, ногами?

> что исключения ни в коем случае не должны прерывать работы
> программы

на самом деле, доля сермяжной правды в этом есть, смотря что за программа...


 
DiamondShark ©   (2007-11-01 13:10) [7]


> например числовым кодом возврата.

Код возврата должен умереть, как замшелый архаизм.


 
homm ©   (2007-11-01 13:15) [8]

> За ...WHERE OrderDate="+DateToStr(d) вместо параметризованного
> запроса -- бить милицейской дубинкой по почкам.
> За hard-coded SQL больше чем из одного оператора, не вынесенный
> в ХП -- пожизненный эцих с гвоздями.

А что происходит с параметризованными запросами, когда они передаются серверу БД?
Если не ошибаюсь ReplaceString(тра-ла-ла), отчего повышеный расход памяти при передаче больших данных.


 
Skyle ©   (2007-11-01 13:16) [9]


> clickmaker ©   (01.11.07 13:04) [6]
> > [4] Skyle ©   (01.11.07 13:01)
> на самом деле, доля сермяжной правды в этом есть, смотря
> что за программа...

Согласен, что-то есть. Например доступ к индексируемому свойству у него всегда пишется примерно так

function GetSomeObjProp(Index : Integer) : TSomeObjType;
begin
 if (Index >= 0) and (Index < Pred(Count)) then
   Result := FList[Index]
 else
   Result := nil;
end;

Я не всегда готов соглашаться с подобным подходом.


 
Игорь Шевченко ©   (2007-11-01 13:18) [10]


> За hard-coded SQL больше чем из одного оператора, не вынесенный
> в ХП -- пожизненный эцих с гвоздями.


Нафиг надо. Права раздавать умучаешься


 
clickmaker ©   (2007-11-01 13:20) [11]


>  [9] Skyle ©   (01.11.07 13:16)

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


 
clickmaker ©   (2007-11-01 13:21) [12]


> Права раздавать умучаешься

???


 
Игорь Шевченко ©   (2007-11-01 13:21) [13]

clickmaker ©   (01.11.07 13:21) [12]

На каждый объект в базе данных принято давать права :) Чем больше объектов, тем больше раздач, нес па ?


 
clickmaker ©   (2007-11-01 13:23) [14]


> На каждый объект в базе данных принято давать права

зачем? если бд админ не мазохист, конечно


 
DiamondShark ©   (2007-11-01 13:29) [15]


> А что происходит с параметризованными запросами, когда они
> передаются серверу БД?
> Если не ошибаюсь ReplaceString(тра-ла-ла), отчего повышеный
> расход памяти при передаче больших данных.

Ошибаешься. Текст команды и значения параметров передаются по-отдельности, причём, значения передаются в двоичной форме, что, в среднем, компактнее, чем литералы в тексте команды.
Но дело не в экономии памяти (фигня, единицы байт), а в геморрое с преобразованием в литералы таких вещей, как числа, строки и даты.


 
Правильный_Вася   (2007-11-01 13:32) [16]


> А что происходит с параметризованными запросами, когда они передаются
> серверу БД?
> Если не ошибаюсь ReplaceString(тра-ла-ла), отчего повышеный расход
> памяти при передаче больших данных.

откуда дровишки?


 
Правильный_Вася   (2007-11-01 13:33) [17]

> а в геморрое с преобразованием в литералы таких вещей, как числа,
> строки и даты.
а уж блобы...


 
Eraser ©   (2007-11-01 13:33) [18]


> За hard-coded SQL больше чем из одного оператора, не вынесенный
> в ХП -- пожизненный эцих с гвоздями.

не все БД поддерживают ХП ))


 
DiamondShark ©   (2007-11-01 13:36) [19]


> не все БД поддерживают ХП ))

Все БД поддерживают ХП.


 
homm ©   (2007-11-01 13:40) [20]

> [19] DiamondShark ©   (01.11.07 13:36)
> Все БД поддерживают ХП.

Не все СУБД поддерживают ХП.


 
ZeroDivide ©   (2007-11-01 13:44) [21]


> За hard-coded SQL больше чем из одного оператора, не вынесенный
> в ХП -- пожизненный эцих с гвоздями.


А что такое hard-coded SQL?


 
DiamondShark ©   (2007-11-01 13:45) [22]


> Игорь Шевченко ©

Права -- ничто. Удобство сопровождения -- всё.

сейчас нашёл такой SQL:


declare @Result bigint,
@Article bigint,
@Barcode char(13),
@Group bigint,
@Client bigint,
@Ware char(50)

select @Result = 0, @Article = 18615, @Barcode = "", @Group = 2, @Client = 0, @Ware = ""
if @Result >= 0 and exists (select * from ass1 where ass1.ass1002 = @Article)
select @Result = -411002
if @Result >= 0 and @Barcode != "" and exists (select * from ass3 where ass3.ass3002 = @Barcode)
select @Result = -413002
if @Result >= 0 and not exists (select * from gru2 where gru2.gru2001 = @Group) and @Group > 0
select @Result = -414003
if @Result >= 0 begin
select @Result = (select isnull(max(ass1.ass1001), 0) + 1 from ass1)
insert into ass1 (ass1.ass1001, ass1.ass1002, ass1.ass1003, ass1.ass1004, ass1.ass1005, ass1.ass1006,ass1.ass1007) values (@Result, @Article, "test123", 0, 10272, 2, 0)
insert into ass2 (ass2.ass2001, ass2.ass2002, ass2.ass2003, ass2.ass2004, ass2.ass2005, ass2.ass2006, ass2.ass2007, ass2.ass2008, ass2.ass2009, ass2.ass2010, ass2.ass2011, ass2.ass2012, ass2.ass2013, ass2.ass2014, ass2.ass2015, ass2.ass2016, ass2.ass2017, ass2.ass2018, ass2.ass2019, ass2.ass2020, ass2.ass2021, ass2.ass2022, ass2.ass2023,ass2.ass2024,ass2.ass2025,ass2.ass2026,ass2.ass2027,ass2.ass2028) values (@Result, 0, 0, 0, 0, 0, "", "", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "", "", 1, 0, 0)
insert into ass3 (ass3.ass3001, ass3.ass3002, ass3.ass3003, ass3.ass3004, ass3.ass3005) values (@Result, @Barcode, "", 1, 0)
insert into ass4 select @Result, gru2.gru2002, gru2.gru2001 from gru2 where gru2.gru2005 = 1
if @Group > 0
 update ass4 set ass4.ass4003 = @Group where ass4.ass4001 = @Result and ass4.ass4002 = (select gru2.gru2002 from gru2 where gru2.gru2001 = @Group)
if @Client > 0 and @Ware != ""
 insert into ass5 (ass5.ass5001, ass5.ass5002, ass5.ass5003) values (@Result, @Client, @Ware)
end
select @Result


Этот код (вместе с подстановкой литералов) жёстко закодирован в программе. После того, как некоторые таблицы были включены в репликацию, в них появились служебные столбцы. В результате выделенная строчка из-за отсутствия списка столбцов посылается далеко и нецензурно.

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


 
DiamondShark ©   (2007-11-01 13:48) [23]


> Не все СУБД поддерживают ХП.

Все СУБД поддерживают ХП.


> А что такое hard-coded SQL?

Это SQL, который содержится в коде клиентской программы, и изменить который можно только перекомпиляцией исполняемого модуля.


 
Sergey13 ©   (2007-11-01 13:50) [24]

> [22] DiamondShark ©   (01.11.07 13:45)
> Теперь, вместо того, чтобы изменить одну единственную строку
> в ХП, надо проехать по паре десятков точек и переписать
> ехешник.

Т.е. БД у вас одна на всех, а к клиентам на велике ездите?


 
homm ©   (2007-11-01 13:51) [25]

> Все СУБД поддерживают ХП.

А создатели некоторых СУБД и не знали…


 
clickmaker ©   (2007-11-01 13:53) [26]


> [23] DiamondShark ©   (01.11.07 13:48)
>
> > Не все СУБД поддерживают ХП.
>
> Все СУБД поддерживают ХП.

MySQL <= 4


 
DiamondShark ©   (2007-11-01 13:54) [27]


> Т.е. БД у вас одна на всех, а к клиентам на велике ездите?

А почему Вы спрашиваете?


 
Правильный_Вася   (2007-11-01 13:56) [28]


> А создатели некоторых СУБД и не знали…

они не создали СУБД, они создали недоСУБД %)


 
homm ©   (2007-11-01 13:56) [29]

> [28] Правильный_Вася   (01.11.07 13:56)
> они не создали СУБД, они создали недоСУБД %)

Иди мерится в детский сад.


 
DiamondShark ©   (2007-11-01 13:58) [30]


> MySQL <= 4

Я же сказал "настоящий шотландец".


 
homm ©   (2007-11-01 14:00) [31]

> [30] DiamondShark ©   (01.11.07 13:58)
> Я же сказал "настоящий шотландец".

А ты кто?


 
Sergey13 ©   (2007-11-01 14:04) [32]

> [27] DiamondShark ©   (01.11.07 13:54)
> А почему Вы спрашиваете?

Ну так либо надо было бы ездить ко всем клиентам править строчку в ХП их БД, либо достаточно разослать им новый экзешник по существующему каналу связи. Какая разница?


 
Правильный_Вася   (2007-11-01 14:05) [33]


> homm ©   (01.11.07 13:56) [29]

а я думал, зачем тебе рулетка в кармане


 
clickmaker ©   (2007-11-01 14:05) [34]


> [30] DiamondShark ©   (01.11.07 13:58)
>
> > MySQL <= 4
>
> Я же сказал "настоящий шотландец

да самого бесит иногда.
но вот выбрал клиент дешевый хостинг с мускулом 4, и пишешь ему в пхп что-то типа
function ClearInt($value)
{
return preg_replace("/[^0-9]/", "", $value);
}
дабы он от скл-инъекции не скончался преждевременно


 
homm ©   (2007-11-01 14:06) [35]

> [34] clickmaker ©   (01.11.07 14:05)
> function ClearInt($value)
> {
> return preg_replace("/[^0-9]/", "", $value);
> }

$value+=0; ???


 
clickmaker ©   (2007-11-01 14:12) [36]


> [35] homm ©   (01.11.07 14:06)

ты мне лучше скажи, как Оперу заставить понимать <table height="100%"
:)


 
homm ©   (2007-11-01 14:13) [37]

> [36] clickmaker ©   (01.11.07 14:12)

Заведи ветку с полным кодом. и что нужно.


 
DiamondShark ©   (2007-11-01 14:18) [38]


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

Чур меня, чур!


> дабы он от скл-инъекции не скончался преждевременно

Что, там даже параметров нету?!


 
clickmaker ©   (2007-11-01 14:18) [39]


> [37] homm ©   (01.11.07 14:13)

ну это понимает ИЕ и Лиса, а Опера упорно высоту таблицы подгоняет под контент.
А мне хочется, чтоб на все окно, вот такой каприз у меня


 
Игорь Шевченко ©   (2007-11-01 14:19) [40]

clickmaker ©   (01.11.07 13:23) [14]

В смысле зачем ? Для разграничения доступа вестимо.

DiamondShark ©   (01.11.07 13:45) [22]


> Права -- ничто. Удобство сопровождения -- всё.


Не совсем понимаю, чем пара SQL-запросов обернутых в ХП удобнее в сопровождении, чем не в ХП. Куча ХП разве проще в сопровождении ?



Страницы: 1 2 3 4 вся ветка

Форум: "Прочее";
Текущий архив: 2007.12.02;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.55 MB
Время: 0.049 c
15-1193162399
Студент
2007-10-23 21:59
2007.12.02
Найти величины углов


5-1163941996
QuerySkin
2006-11-19 16:13
2007.12.02
Какие скины выбрать?


15-1194132647
Multy
2007-11-04 02:30
2007.12.02
InterBase, Delphi 7.0 и Vista


6-1175189724
проходивший мимо
2007-03-29 21:35
2007.12.02
передать файлы через сеть


15-1193996143
ocean
2007-11-02 12:35
2007.12.02
IIS под XP





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский