- 1
- 2
- 3
- 4
- 5
- 6
- 7
Private Function Leto(ByVal Dat1 As Date) As Boolean
Return IIf(Dat1.Month > 3 And Dat1.Month < 9, True, False)
End Function
Private Function Bas(ByVal Cost1 As Decimal, ByVal Kol1 As Integer)
Return Cost1 * Kol1
End Function
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−359
Private Function Leto(ByVal Dat1 As Date) As Boolean
Return IIf(Dat1.Month > 3 And Dat1.Month < 9, True, False)
End Function
Private Function Bas(ByVal Cost1 As Decimal, ByVal Kol1 As Integer)
Return Cost1 * Kol1
End Function
вообще это по линку cfdevа лежало в #3142
http://www.sql.ru/forum/actualthread.aspx?bid=9&tid=467673&hl=
но он не запостил самое гавно - то есть этот кусок
и его походу мало кто заметил
−114
Public Function Cost(ByVal Vip1 As Boolean, ByVal Dat1 As Date, ByVal Kol1 As Integer, ByVal Cost1 As Decimal) As Decimal
If Vip1 Then
Return Bas(Cost1, Kol1) * 0.9 + IIf(Cost1 * Kol1 < 50, 50, Bas(Cost1, Kol1) * 0.11)
Else
Dim Sk1 As Decimal
If Leto(Dat1) Then
Sk1 = IIf(Bas(Cost1, Kol1) < 1000, 2, 3)
Else
Sk1 = IIf(Bas(Cost1, Kol1) < 1100, 3, 0)
End If
Dim Sk2 As Decimal = IIf(Kol1 > 500, 5, 0)
Dim Sk3 As Decimal
If Leto(Dat1) Then
Sk3 = IIf(Bas(Cost1, Kol1) < 100, 100, Bas(Cost1, Kol1) * 0.1)
Else
Sk3 = IIf(Bas(Cost1, Kol1) < 110, 110, Bas(Cost1, Kol1) * 0.11)
End If
Return (Bas(Cost1, Kol1) - Bas(Cost1, Kol1) * Sk1 * 100 - Bas(Cost1, Kol1) * Sk2 * 100 + Sk3)
End If
End Function
Стандартный ынтырпрайз-говнокод, но изюминка, собсно, не в нём, а в нём:
http://www.sql.ru/forum/actualthread.aspx?bid=9&tid=467673&hl=
2striker. теперь предпросмотр показывает всегда не php, а си. Спасибо за фикс.
−86
using System;
using System.Web;
using MaxPro;
namespace HandlerFile
{
public class FileHttpHandler : IHttpHandler
{
// Переопределяем метод ProcessRequest.
public void ProcessRequest(HttpContext context)
{
//var
Byte[] oImg;
Int32 iId=0;
Int32 iRemInt=0;
//var Zap
Int32 iNum=0;
Exception oErr;
Object[,] oZap=new Object[0,0];
//end var
if(All.IsInteger(context.Request.QueryString["iId"]))
{
iId=Convert.ToInt32(context.Request.QueryString["iId"]);
iNum=Ow.iZap1i("OneWindow.Procedure173","@iId",iId,out oZap,out oErr);
}
else if(All.IsInteger(context.Request.QueryString["iRemInt"]))
{
iId=Convert.ToInt32(context.Request.QueryString["iRemInt"]);
iNum=Ow.iZap1i("OneWindow.Procedure174","@iRemInt",iRemInt,out oZap,out oErr);
}
if(iNum>0)
{
oImg=(Byte[])oZap[0,0];
//генерация бинарного потока
/* Возможно пригодится, хотя ясности нет зачем,
* но когда ie сбоит и не открывает файл, то это помогает, особенно ClearHeaders
* Response.ClearContent()
* Response.ClearHeaders()
*///
context.Response.ContentEncoding=System.Text.Encoding.GetEncoding("UTF-8");
context.Response.Charset="UTF-8";
context.Request.ContentEncoding=System.Text.Encoding.UTF8;
switch (Convert.ToString(oZap[2,0]))
{
case "gif":
context.Response.ContentType="image/GIF";
context.Response.AddHeader("Content-Disposition","filename="+Convert.ToString(oZap[1,0]));
break;
case "jpg":
context.Response.ContentType="image/JPEG";
context.Response.AddHeader("Content-Disposition","filename="+Convert.ToString(oZap[1,0]));
break;
case "jpeg":
context.Response.ContentType="image/JPEG";
context.Response.AddHeader("Content-Disposition","filename="+Convert.ToString(oZap[1,0]));
break;
case "bmp":
context.Response.ContentType="image/BMP";
context.Response.AddHeader("Content-Disposition","filename="+Convert.ToString(oZap[1,0]));
break;
case "png":
context.Response.ContentType="image/PNG";
context.Response.AddHeader("Content-Disposition","filename="+Convert.ToString(oZap[1,0]));
break;
case "txt":
context.Response.ContentType="text/plain";
context.Response.AddHeader("Content-Disposition","filename="+Convert.ToString(oZap[1,0]));
break;
case "htm":
context.Response.ContentType="text/HTML";
context.Response.AddHeader("Content-Disposition","filename="+Convert.ToString(oZap[1,0]));
break;
case "html":
context.Response.ContentType="text/HTML";
context.Response.AddHeader("Content-Disposition","filename="+Convert.ToString(oZap[1,0]));
break;
case "xls":
context.Response.ContentType="application/vnd.ms-excel";
context.Response.AddHeader("Content-Disposition","attachment; filename="+Convert.ToString(oZap[1,0]));
break;
case "doc":
context.Response.ContentType="application/msword";
context.Response.AddHeader("Content-Disposition","attachment; filename="+Convert.ToString(oZap[1,0]));
break;
case "dot":
context.Response.ContentType="application/msword";
context.Response.AddHeader("Content-Disposition","attachment; filename="+Convert.ToString(oZap[1,0]));
break;
case "ppt":
context.Response.ContentType="application/vnd.ms-powerpoint";
context.Response.AddHeader("Content-Disposition","attachment; filename="+Convert.ToString(oZap[1,0]));
break;
default:
context.Response.AddHeader("Content-Disposition","attachment; filename="+Convert.ToString(oZap[1,0]));
break;
}
context.Response.OutputStream.Write(oImg,0,oImg.Length);
}
}
а вам слабо? всё те же мос окна
−92
public class Chart//работа с ChartSpace
{
/* String sCategories="значение1"+СимволТабуляции(символ с кодом 9)+"значение2"+...
* String sValues="значение1"+СимволТабуляции(символ с кодом 9)+"значение2"+...
*/
//В VB6 также вместе со "строками через табулятор" поддерживаются одномерные массивы
//var
public const String sProcedure001 = "OneWindow.Procedure121";
public const String sProcedure002 = "OneWindow.Procedure122";
public const String sProcedure003 = "OneWindow.Procedure123";
public const String sProcedure004 = "OneWindow.Procedure124";
public const String sProcedure005 = "OneWindow.Procedure125";
public static Int32 iDataLiteral = Convert.ToInt32(OWC11.ChartSpecialDataSourcesEnum.chDataLiteral);
public static Object[,] _oZap001;
public static Object[,] _oZap002;
public static Object[,] _oZap003;
public static Object[,] _oZap004;
public static Object[,] _oZap005;
//end var
//property
public static Object[,] oZap001
{
//var
//end var
get
{
Int32 iNum = 0;
Exception oErr;
if (_oZap001 == null)
{
iNum = Ow.iZap0(sProcedure001, out _oZap001, out oErr);
if (iNum <= 0)
{
_oZap001 = null;
}
}
return _oZap001;
}
}
public static Object[,] oZap002
{
//var
//end var
get
{
Int32 iNum = 0;
Exception oErr;
if (_oZap002 == null)
{
iNum = Ow.iZap0(sProcedure002, out _oZap002, out oErr);
if (iNum <= 0)
{
_oZap002 = null;
}
}
return _oZap002;
}
}
public static Object[,] oZap003
{
//var
//end var
get
{
Int32 iNum = 0;
Exception oErr;
if (_oZap003 == null)
{
iNum = Ow.iZap0(sProcedure003, out _oZap003, out oErr);
if (iNum <= 0)
{
_oZap003 = null;
}
}
return _oZap003;
}
}
public static Object[,] oZap004
{
//var
//end var
get
{
Int32 iNum = 0;
Exception oErr;
if (_oZap004 == null)
{
iNum = Ow.iZap0(sProcedure004, out _oZap004, out oErr);
if (iNum <= 0)
{
_oZap004 = null;
}
}
return _oZap004;
}
}
public static Object[,] oZap005
{
...
Я нашел абсолютное гавно!!!!!!
Максим Прохоров торжественно спиздил исходники сайта okno.mos.ru и забыл в конторе (хуй он забыл, на самом деле я ему доступ закрыл в один прекрасный момент).
Теперь буду выкладывать маленькими порциями. представляете, за это гавно отвалили миллионов 10. Чиновники их дружно освоили. А отвалили из нашего кармана. Я лично налоги плачу.
−89
Public Class TreeKuBi003
''' -----------------------------------------------------------------------------
''' <summary>
''' Подключение KuBi.
''' </summary>
''' <remarks>
''' </remarks>
''' <history>
''' [Max Pro] 30.01.2009 Created
''' </history>
''' -----------------------------------------------------------------------------
Public Const sKuBi As String = _
" SELECT" & sEnter & _
" iIdTreeKuBi," & sEnter & _
" iIdTreeNone" & sEnter & _
" FROM" & sEnter & _
" TreeKuBiNone" & sEnter & _
" ORDER BY" & sEnter & _
" iIdTreeKuBi;"
End Class 'TreeKuBi003
'''
А так Максим Прохоров использует классы. На мой вопрос - максим, а зачем тебе нужны классы?
- ну, чтобы хранить данные.
−105
''' <summary>
''' Функция взятия запроса как инструкции t/sql; рекордсет возвращается в виде oZap(,).
''' </summary>
''' <param name="eConnectString">Строка подключения к БД из списка.</param>
''' <param name="sText">Инструкция t/sql.</param>
''' <param name="oErr">Необязательная ошибка.</param>
''' <param name="oZap">Необязательный двумерный массив, содержащий рекордсет ― 1-ю таблицу датасета.</param>
''' <param name="iTimeout">Необязательное число секунд таймаута запроса.</param>
''' <returns>Число затронутых строк в таблице БД; если ноль, то нормально ещё, а если -1, то запрос не прошёл, если -2, то соединение не установилось.</returns>
''' <remarks>
''' </remarks>
''' <history>
''' [Max Pro] 11.04.2007 Created
''' [Max Pro] 08.08.2008 Реабилитировал OleDb.
''' [Max Pro] 08.04.2009 Оптимизировал как надо ReDim Preserve и переполнение Integer.
''' [Max Pro] 27.08.2009 Исправил ошибку ReDim Preserve ― было больше на 1 элемент.
''' </history>
''' -----------------------------------------------------------------------------
Public Function iZap(ByVal eConnectString As ConnectString, ByVal sText As String, Optional ByRef oErr As Exception = Nothing, Optional ByRef oZap(,) As Object = Nothing, Optional ByVal iTimeout As Integer = -1) As Integer
'#region "var"
Dim iX As Integer
Dim lY As Long
Dim lYTemp As Long
Dim i As Integer
Dim iZapTemp As Integer
'var zap
Dim sConnectString As String = sConStrFromEnum(eConnectString)
Dim oConnection
Dim oCommand
Dim oReader
'#end region 'var
'#region ini
If sConnectString Like "*sqloledb*" Then
oConnection = New OleDbConnection
oCommand = New OleDbCommand
Else
oConnection = New SqlConnection
oCommand = New SqlCommand
End If
'#end region 'ini
iZap = -2
oErr = New Exception
oConnection.ConnectionString = sConnectString
Try
'попытка открытия соединения
oConnection.Open()
If oConnection.State Then iZap = -1 'if <>0
'присвоение параметров команды
If iTimeout >= 0 Then oCommand.CommandTimeout = iTimeout
oCommand.CommandType = CommandType.Text
oCommand.Connection = oConnection
oCommand.CommandText = sText
'попытка выполнения команды
oReader = oCommand.ExecuteReader()
iZap = 0
iX = oReader.FieldCount - 1
lY = -1
lYTemp = 255
ReDim oZap(iX, lYTemp)
While oReader.Read()
lY += 1
If lY < Integer.MaxValue Then '2 147 483 647-1(заменил <= на < чтобы число элементов iZap не зашкалило).
iZapTemp = lY + 1
If lY > lYTemp Then
lYTemp += 256
ReDim Preserve oZap(iX, lYTemp)
End If
For i = 0 To iX
If IsDBNull(oReader(i)) Then oZap(i, lY) = Nothing Else oZap(i, lY) = oReader(i)
Next i
End If
End While
oReader.Close()
oReader = Nothing
oCommand = Nothing
iZap = iZapTemp
ReDim Preserve oZap(iX, iZapTemp - 1)
If lY >= Integer.MaxValue Then
oErr = New Exception(lY.ToString("# ##0") & " строк >=" & Integer.MaxValue & " (Integer.MaxValue), но массив заполнен до предела Int32 и iZap=Integer.MaxValue.")
End If
Catch oError As Exception
oErr = oError
Finally
If IsNothing(oConnection) = False Then
oConnection.Close()
oConnection = Nothing
End If
End Try
End Function 'iZap
А так Максим Прохоров выполняет запросы. слабо?
−110
''' <summary>
''' Возвращает Boolean по правилам Бэйсика: если объект является ненулевым
числом или истиной, тогда true, иначе false; переваривает все типы.
''' </summary>
''' <param name="o"></param>
''' <returns></returns>
''' <remarks>
''' </remarks>
''' <history>
''' [Max Pro] 13.04.2007 Created
''' </history>
''' -----------------------------------------------------------------------------
Public Function bBoolean(ByVal o) As Boolean
If bIsBoolean(o) Then bBoolean = o
End Function
'''
Расскажу немного о Максиме Прохорове. Он окончил универ им. Баумана с красным дипломом, потом работал над программой okno.mos.ru потом его взяли в частную контору на бешеные бабки.
Это функция проверки ^
−90
''' Список строк подключения.
''' [Max Pro] 11.04.2007 Created
Public Enum ConnectString
Grata
Grata6
KuBi
OneWindow
OneWindowStat
OWSite
Wwwsde
NoName
OleGrata
OleGrata6
OleKuBi
OleOneWindow
OleOneWindowStat
OleOWSite
OleWwwsde
OleNoName
End Enum
''' <summary>
''' Выдаёт ограниченную дату и время для t/sql; tDateTime ∈ [1900,2078],
ограничивается только год, остальное остаётся вплоть до миллисекунд; переваривает все типы.
''' </summary>
''' <param name="o"></param>
''' <returns></returns>
''' <remarks>
''' </remarks>
''' <history>
''' [Max Pro] 11.04.2007 Created
''' [Max Pro] 13.04.2007 Улучшил.
''' [Max Pro] 16.04.2007 Изменил наименование tDateTime2Tsql на tDateTsql.
''' </history>
''' -----------------------------------------------------------------------------
Public Function tDateTsql(ByVal o) As Date
Dim tDate As Date
If bIsDateNet(o) Then tDate = o
If Year(tDate) < 1900 Then tDate = New Date(1900, tDate.Month, tDate.Day, tDate.Hour, tDate.Minute, tDate.Second, tDate.Millisecond)
If Year(tDate) > 2078 Then tDate = New Date(2078, tDate.Month, tDate.Day, tDate.Hour, tDate.Minute, tDate.Second, tDate.Millisecond)
tDateTsql = tDate
End Function
'''
Енум имени максима прохорова.
И функция конферта даты. пыгает слово улучшил
−91
Public Const sEnter As String = Chr(13) & Chr(10)
Нам разум не друг и ум не товарищ!
Постоянная имени Максима Прохорова
−101
REM Юникод UTF-8 с сигнатурой.
Option Compare Text
Imports System
Imports System.Web
Imports ClassLibraryAll
Namespace HandlerAll
REM Вэб-запрос курсов валют и на какую дату.
Public Class Course
Implements IHttpHandler
REM Переопределяем метод ProcessRequest.
Public Sub ProcessRequest(ByVal oContext As System.Web.HttpContext) Implements System.Web.IHttpHandler.ProcessRequest
'#region var
Dim b As Boolean
Dim iLang As Integer
Dim tDate1 As Date
Dim tDate2 As Date
Dim dD1 As Double
Dim dD2 As Double
Dim dE1 As Double
Dim dE2 As Double
Dim sAnswer As String 'текст ответа
Dim sResponse As String 'текст респонса
Dim oWebClient As New System.Net.WebClient
Dim oRegExDate1 As New System.Text.RegularExpressions.Regex("target\=_blank\s*>с \d+\.\d+\.\d+\s*<\/A>\s*<\/td>\s*<td>")
Dim oRegExInDate1 As New System.Text.RegularExpressions.Regex("\d+\.\d+\.\d+")
Dim oRegExDate2 As New System.Text.RegularExpressions.Regex("target\=_blank\s*>с \d+\.\d+\.\d+\s*<\/A>\s*<\/td>\s*<\/tr>")
Dim oRegExInDate2 As New System.Text.RegularExpressions.Regex("\d+\.\d+\.\d+")
Dim oRegExD1 As New System.Text.RegularExpressions.Regex("США<\/td>\s*<td><\/td>\s*<td\sclass\=""digit""\salign\=""right"">\d+,\d+ <\/td>")
Dim oRegExInD1 As New System.Text.RegularExpressions.Regex("\d+,\d+")
'Dim oRegExD2 As New System.Text.RegularExpressions.Regex(">\d+,\d+ <IMG\salt\='.+'\sborder\=0\sheight\=8\shspace\=2\ssrc\=\/images\/.+\.gif\swidth\=7><\/td>\s*<\/tr>\s*<tr>\s*<td>")
Dim oRegExD2 As New System.Text.RegularExpressions.Regex(">\d+,\d+ <img\salt\='.+'\sborder\=""0""\sheight\=""8""\shspace\=""2""\ssrc\=""\/images\/.+\.gif""\swidth\=""7""><\/td>\s*<\/tr>\s*<tr>\s*<td>")
Dim oRegExInD2 As New System.Text.RegularExpressions.Regex("\d+,\d+")
Dim oRegExE1 As New System.Text.RegularExpressions.Regex("Евро<\/td>\s*<td><\/td>\s*<td\sclass\=""digit""\salign\=""right"">\d+,\d+ <\/td>")
Dim oRegExInE1 As New System.Text.RegularExpressions.Regex("\d+,\d+")
'Dim oRegExE2 As New System.Text.RegularExpressions.Regex(">\d+,\d+ <IMG\salt\='.+'\sborder\=0\sheight\=8\shspace\=2\ssrc\=\/images\/.+\.gif\swidth\=7><\/td>\s*<\/tr>\s*<tr>\s*<td\s")
Dim oRegExE2 As New System.Text.RegularExpressions.Regex(">\d+,\d+ <img\salt\='.+'\sborder\=""0""\sheight\=""8""\shspace\=""2""\ssrc\=""\/images\/.+\.gif""\swidth\=""7""><\/td>\s*<\/tr>\s*<tr>\s*<td\s")
Dim oRegExInE2 As New System.Text.RegularExpressions.Regex("\d+,\d+")
'#endregion var
'#region ini
iLang = iInteger(oContext.Request.QueryString("iLang"))
Try
sAnswer = System.Text.Encoding.UTF8.GetString(oWebClient.DownloadData("http://cbr.ru/"))
tDate1 = oRegExInDate1.Match(oRegExDate1.Match(sAnswer).Value).Value
tDate2 = oRegExInDate2.Match(oRegExDate2.Match(sAnswer).Value).Value
dD1 = oRegExInD1.Match(oRegExD1.Match(sAnswer).Value).Value
dD2 = oRegExInD2.Match(oRegExD2.Match(sAnswer).Value).Value
dE1 = oRegExInE1.Match(oRegExE1.Match(sAnswer).Value).Value
dE2 = oRegExInE2.Match(oRegExE2.Match(sAnswer).Value).Value
Catch ex As Exception
'sResponse = "/*" & ex.Message & "dD1=" & oRegExInD1.Match(oRegExD1.Match(sAnswer).Value).Value & "dD2=" & oRegExInD2.Match(oRegExD2.Match(sAnswer).Value).Value & "dE1=" & oRegExInE1.Match(oRegExE1.Match(sAnswer).Value).Value & "dE2=" & oRegExInE2.Match(oRegExE2.Match(sAnswer).Value).Value & "*/"
sResponse = "/*0*/"
b = True
End Try
'#endregion ini
If b = False Then
....
...
...
куча говна
...
...
oContext.Response.Write(sResponse)
End Sub
REM Переопределяем свойство IsReusable.
Public ReadOnly Property IsReusable() As Boolean Implements System.Web.IHttpHandler.IsReusable
Get
Return False 'запрещем кеширование этого обработчика в оперативной памяти вэб-сервера.
End Get
End Property
End Class
End Namespace
А так мы получаем курс валют с локализацией.
Рассчитывалось использовать на высоконагруженном портале. типо еллоупэйджеса.
Через хэндлер.
Максим Прохоров вас будет ещё долго радовать.