1. VisualBasic / Говнокод #3081

    −101

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    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

    А так мы получаем курс валют с локализацией.
    Рассчитывалось использовать на высоконагруженном портале. типо еллоупэйджеса.
    Через хэндлер.
    Максим Прохоров вас будет ещё долго радовать.

    Запостил: ursus, 23 Апреля 2010

    Комментарии (4) RSS

    • Select Case iLang
      Case 0
      sResponse = "textCourseD.parentNode.title=""Температ ура в Москве (gismeteo.ru) и курс ЦБ (cbr.ru) c " & tDate2.ToString("d.M.yyyy") & ".""" & ";" & sEnter
      Case 1
      sResponse = "textCourseD.parentNode.title=""The temperature in Moscow (gismeteo.ru) and the rate of CB (cbr.ru) starting with " & tDate2.ToString("d.M.yyyy") & ".""" & ";" & sEnter
      Case 2
      sResponse = "textCourseD.parentNode.title=""在莫斯科的溫度( gismeteo.ru)和央行利率(cbr.ru)開始" & tDate2.ToString("d.M.yyyy") & "。""" & ";" & sEnter
      Case Else
      sResponse = "textCourseD.parentNode.title=""Температ ура в Москве (gismeteo.ru) и курс ЦБ (cbr.ru) c " & tDate2.ToString("d.M.yyyy") & ".""" & ";" & sEnter
      End Select
      sResponse &= "textCourseD.data=sU00A0+""" & dD2.ToString("#,##0.0000") & """;" & sEnter
      sResponse &= "textCourseE.data=sU00A0+""" & dE2.ToString("#,##0.0000") & """;" & sEnter
      If dD2 > dD1 Then
      sResponse &= "textArrowD.data=""▲""+sU00A0;" & sEnter
      sResponse &= "textArrowD.parentNode.style.color=""Gre en"";" & sEnter
      ElseIf dD2 < dD1 Then
      sResponse &= "textArrowD.data=""▼""+sU00A0;" & sEnter
      sResponse &= "textArrowD.parentNode.style.color=""Red "";" & sEnter
      Else
      sResponse &= "textArrowD.data=""=""+sU00A0;" & sEnter
      sResponse &= "textArrowD.parentNode.style.color=""Blu e"";" & sEnter
      End If
      If dE2 > dE1 Then
      sResponse &= "textArrowE.data=""▲"";" & sEnter
      sResponse &= "textArrowE.parentNode.style.color=""Gre en"";" & sEnter
      ElseIf dE2 < dE1 Then
      sResponse &= "textArrowE.data=""▼"";" & sEnter
      sResponse &= "textArrowE.parentNode.style.color=""Red "";" & sEnter
      Else
      sResponse &= "textArrowE.data=""="";" & sEnter
      sResponse &= "textArrowE.parentNode.style.color=""Blu e"";" & sEnter
      End If
      End If
      Ответить
    • Мы поняли какой у него код. Хватит постить.
      Ответить
    • "Максим Прохоров вас будет ещё долго радовать."
      Звучит, как угроза.
      Ответить

    Добавить комментарий