Форум: "Прочее";
Текущий архив: 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.044 c