Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.12.02;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.57 MB
Время: 0.029 c
2-1194634076
_Levin
2007-11-09 21:47
2007.12.02
Организовать цикл.


15-1193237359
Real
2007-10-24 18:49
2007.12.02
Как починить доступ к web-страницам в Windows?


2-1194626179
asd00
2007-11-09 19:36
2007.12.02
как с эмитировать нажатие правой/левой кнопки мыши?


8-1170238744
Alek_1
2007-01-31 13:19
2007.12.02
делаем видео происходящего на экране


2-1194352765
dumka
2007-11-06 15:39
2007.12.02
Подпись