1. Список говнокодов пользователя Lokich

    Всего: 35

  2. C# / Говнокод #17077

    +133

    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
    [DataContract]
            class outColumnsList
            {
    ...
                [DataMember]
                public decimal? FK_ID_OBJECT { get; set; }
    ...
                [DataMember]
                public decimal? IS_PK { get; set; }
                [DataMember]
                public decimal? IS_EDIT { get; set; }
    ..
            }
    ....
                    List<outColumnsList> l = new List<outColumnsList>();
                    while (r.Read())
                    {
                        outColumnsList l1 = new outColumnsList();
                        if (r.GetOracleValue(0).ToString()!="null")
                        l1.ID_OBJECT = Convert.ToDecimal(r.GetOracleValue(0).ToString());
                        l1.NM_DISPLAY = r.GetOracleValue(1).ToString();
                        l1.NM_SOURCE = r.GetOracleValue(2).ToString();
                        if (r.GetOracleValue(3).ToString() != "null")
                        l1.DISPLAY_SIZE = Convert.ToDecimal(r.GetOracleValue(3).ToString());
                        if (r.GetOracleValue(4).ToString() != "null")
                        l1.FK_ID_OBJECT = Convert.ToDecimal(r.GetOracleValue(4).ToString());
                        if (r.GetOracleValue(5).ToString() != "null")
                        l1.ORDER_DISPLAY = Convert.ToDecimal(r.GetOracleValue(5).ToString());
                        if (r.GetOracleValue(6).ToString() != "null")
                        l1.IS_EDIT = Convert.ToDecimal(r.GetOracleValue(6).ToString());
                        if (r.GetOracleValue(7).ToString() != "null")
                        l1.IS_PK = Convert.ToDecimal(r.GetOracleValue(7).ToString());
                        l1.FK_FIELD = r.GetOracleValue(8).ToString();
                        l1.NM_SOURCE_FK = r.GetOracleValue(10).ToString();
                        l.Add(l1);
                    }

    это потрясающе. в качестве идентификатора использовать дробные числа... хорошо хоть не с плавающей запятой.
    а так же, их же, для булевых....

    а то, как они из базы читались, так это вообще сказка.
    все ToString(), и все ConvertToDecimal... и проверка, на null еще тоже на уровне. про IsDBNull явно не слышал ничего

    Lokich, 07 Ноября 2014

    Комментарии (9)
  3. C# / Говнокод #17065

    +137

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    //Перевести строку в JSON
    #region ConvertToJson
    public static string ConvertToJson(string str)
    {
        return str.Replace(@"/", string.Empty).Replace(@"~", string.Empty).Replace(@":", string.Empty).Replace(@"{", string.Empty).Replace(@"}", string.Empty).Replace("\"", string.Empty).Replace(",", string.Empty).Replace("\n", string.Empty);
    }
    #endregion

    json сериализатор из строки в строку, написанный в одну строчку

    Lokich, 05 Ноября 2014

    Комментарии (2)
  4. Java / Говнокод #16817

    +66

    1. 1
    if(version.StartsWith("Windows 9")) { /* 95 and 98 */ } else {

    по слухам, именно из-за этого говна следующая windows будет 10ой
    https://issues.jenkins-ci.org/secure/attachment/18777/PlatformDetailsTask.java

    Lokich, 07 Октября 2014

    Комментарии (7)
  5. C# / Говнокод #16632

    +133

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    //You can assign Values to the ASPNET RadioButton like this way:
    protected void Page_Load(object sender, EventArgs e)
     {
             RadioButton1.Attributes.Add("value", "ASPNET");
    } 
    
    //Then you can access the value this way:
    protected void Button1_Click(object sender, EventArgs e)
     {
             Response.Write(RadioButton1.Attributes["value"].ToString());
    }

    сегодня для меня стало новостью, что у высокоуровневого контрола asp.net web form RadioButton, который по сути рендерится в <input type="radio">, нет атрибута value.
    http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.radiobutton(v= vs.110).aspx да, его нет.
    но сначала я подумал, что все же может это я кривой и не туда смотрю, а потом нахожу велосипед, который предлагает MVP http://forums.asp.net/t/1379187.aspx?Why+does+an+ASP+NET+RadioBu tton+control+not+have+a+property+to+prog ramatically+set+the+value+attribute+

    Lokich, 02 Сентября 2014

    Комментарии (2)
  6. JavaScript / Говнокод #15782

    +156

    1. 1
    http://alexnisnevich.github.io/untrusted/

    кто знает как 11 уровень пройти? :)

    Lokich, 18 Апреля 2014

    Комментарии (110)
  7. Куча / Говнокод #15733

    +129

    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
    <script>
    // Browser Window Size and Position
    // copyright Stephen Chapman, 3rd Jan 2005, 8th Dec 2005
    // you may copy these functions but please keep the copyright notice as well
    function pageWidth()
    { return window.innerWidth != null ? window.innerWidth : document.documentElement && document.documentElement.clientWidth ? document.documentElement.clientWidth : document.body != null ? document.body.clientWidth : null; }
    function pageHeight()
    { return window.innerHeight != null ? window.innerHeight : document.documentElement && document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body != null ? document.body.clientHeight : null; }
    function posLeft()
    { return typeof window.pageXOffset != 'undefined' ? window.pageXOffset : document.documentElement && document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ? document.body.scrollLeft : 0; }
    function posTop()
    { return typeof window.pageYOffset != 'undefined' ? window.pageYOffset : document.documentElement && document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ? document.body.scrollTop : 0; }
    function posRight()
    { return posLeft() + pageWidth(); }
    function posBottom()
    { return posTop() + pageHeight(); }
    
    function SetWindowSize(s, h, w) {
        var wid = pageWidth();
        var hei = pageHeight();
        var n_wid = Math.round(wid * w);
        var n_hei = Math.round(hei * h);
        s.SetWidth(n_wid);
        s.SetHeight(n_hei);
    }
    function SetWindowW(s, w) {
        var wid = pageWidth();
        var n_wid = Math.round(wid * w);
        s.SetWidth(n_wid);
    }
    </script>
    <html>
    ...
                <td>
                    <dx:ASPxButton ID="AddCopyTemplate" runat="server" Text="Создать копию" 
                        AutoPostBack="False" 
                        CssFilePath="~/App_Themes/Office2010Black/{0}/styles.css" 
                        CssPostfix="Office2010Black" 
                        SpriteCssFilePath="~/App_Themes/Office2010Black/{0}/sprite.css" 
                        Wrap="True" >
                        <ClientSideEvents Click="function(s, e) {
    	AddCopyTemplate();
    }" Init="function(s, e) {
    	Get_Sizes_wid(s,1075);
    }" />
                    </dx:ASPxButton>
                </td>
                <td>
                    <dx:ASPxButton ID="AddTemplate" runat="server" Text="Создать" 
                        AutoPostBack="False" 
                        CssFilePath="~/App_Themes/Office2010Black/{0}/styles.css" 
                        CssPostfix="Office2010Black" 
                        SpriteCssFilePath="~/App_Themes/Office2010Black/{0}/sprite.css">
                        <ClientSideEvents Click="function(s, e) {
    	AddTemplateClick();
    }" Init="function(s, e) {
    	Get_Sizes_wid(s,1075);
    }" />
                    </dx:ASPxButton>
                </td>
    ...
    </html>

    я даже не знаю, в какой раздел это постить, но пусть будет тут.
    товарищ, пользовался горячелюбимыми контролами от DevExpress, которые работают херпойми как, но сейчас не об этом.
    в секции ClientSideEvents есть скрипты, которые выполняются на клиенте при старте, так вот он и поставил туда вызов функции, которая выставляет размеры для элементов.
    это одностраничное приложение на 1100 строк только одной размеки, где используется огромное количество различных элементов, панели, гриды, гнопки, модальные окна, и много всего прочего... и ни у одного из них не заданы вообще никакие размеры, все работает на этих JS функциях.
    эти волшебные цифры, которые передаются в функцию рассчитаны на его монитор, и как только они отрываются на другом мониторе с другим разрешением, то эти две кнопки занимают примерно 80% экрана.
    а самое главное, что модальные окна занимают примерно 80% высоты и ширины экрана, и сначала они рисуются по центру экрана, а потом увеличиваются функцией, из-за чего они уезжают за границы экрана

    Lokich, 11 Апреля 2014

    Комментарии (6)
  8. SQL / Говнокод #15719

    −174

    1. 1
    2. 2
    3. 3
    4. 4
    create table #tt( value int )
    declare @v int = 1
    select @v = value from #tt
    select @v

    вот это поворот.. почему 1? null же должен быть по здравой логике!
    написал сейчас цикл

    declare @FileId int
    Select @fileid = fileid from #tmp
    while @FileId is not null
    begin
    exec dsd.process_File_RollBack @FileId
    delete from #tmp where fileid = @fileid
    Select @fileid = fileid from #tmp
    end

    а он оказывается минут 20 удаляет один и тот же файл :(

    Lokich, 09 Апреля 2014

    Комментарии (30)
  9. SQL / Говнокод #15646

    −123

    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
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    select ...
    case 
     -- периоды пересекаются только в одной точке (2)
    when (vw.hEndDate=vw.rStartDate) 
    then vw.hEndDate
    when (vw.rEndDate=vw.hStartDate) 
    then vw.rEndDate
    -- периоды пересекаются в определенной области (2)
    when (vw.hStartDate > vw.rstartdate and IsNull(vw.hEndDate,'01-01-2099')<IsNull(vw.rEndDate,'01-01-2099')) then vw.hStartDate
    when ((vw.rStartDate between vw.hStartDate and vw.hEndDate) and (vw.hEndDate between vw.rStartDate and vw.rEndDate)) 
    then vw.rStartDate
    when ((vw.hStartDate between vw.rStartDate and vw.rEndDate) and (vw.rEndDate between vw.hStartDate and vw.hEndDate)) 
    then vw.hStartDate
    -- периоды полностью совпадают (1)
    when (vw.hStartDate=vw.rStartDate and vw.hEndDate=vw.rEndDate) 
    then vw.hStartDate
    -- периоды совпадают в одной точке и перекрываются (4)
    when (vw.hStartDate=vw.rStartDate and vw.rEndDate<vw.hEndDate) 
    then vw.hStartDate
    when (vw.hStartDate=vw.rStartDate and vw.hEndDate<vw.rEndDate) 
    then vw.hStartDate
    when (vw.hEndDate=vw.rEndDate and vw.rStartDate>vw.hStartDate) 
    then vw.rStartDate
    when (vw.hEndDate=vw.rEndDate and vw.rStartDate<vw.hStartDate) 
    then vw.hStartDate
    end as MainStartDate  
    ,case 
    -- периоды пересекаются только в одной точке (2)
    when (vw.hEndDate=vw.rStartDate) 
    then vw.hEndDate
    when (vw.rEndDate=vw.hStartDate) 
    then vw.rEndDate
    -- периоды пересекаются в определенной области (2)
    when (vw.hStartDate > vw.rstartdate and IsNull(vw.hEndDate,'01-01-2099')<IsNull(vw.rEndDate,'01-01-2099')) then vw.hEndDate
    when ((vw.rStartDate between vw.hStartDate and vw.hEndDate) and (vw.hEndDate between vw.rStartDate and vw.rEndDate)) 
    then vw.hEndDate
    when ((vw.hStartDate between vw.rStartDate and vw.rEndDate) and (vw.rEndDate between vw.hStartDate and vw.hEndDate)) 
    then vw.rEndDate
    -- периоды полностью совпадают (1)
    when (vw.hStartDate=vw.rStartDate and vw.hEndDate=vw.rEndDate) 
    then vw.hEndDate
    -- периоды совпадают в одной точке и перекрываются (4)
    when (vw.hStartDate=vw.rStartDate and vw.rEndDate<vw.hEndDate) 
    then vw.rEndDate
    when (vw.hStartDate=vw.rStartDate and vw.hEndDate<vw.rEndDate) 
    then vw.hEndDate
    when (vw.hEndDate=vw.rEndDate and vw.rStartDate>vw.hStartDate) 
    then vw.hEndDate
    when (vw.hEndDate=vw.rEndDate and vw.rStartDate<vw.hStartDate) 
    then vw.hEndDate
    end as MainEndDate
    from (select ...
    case when (IsNull(h.[EndDate],'01-01-2099')=r.[StartDate]) then '1 периоды пересекаются только в одной точке (2) h.[EndDate]=r.[StartDate]'
    when(IsNull(r.[EndDate],'01-01-2099')=h.[StartDate]) then '2 периоды пересекаются только в одной точке (2) r.[EndDate]=h.[StartDate]'
    -- периоды пересекаются в определенной области (2)
    when (h.startdate > r.startdate and IsNull(h.[EndDate],'01-01-2099')<IsNull(r.[EndDate],'01-01-2099')) then 'Период иерархии полностью входит в период территории'
    when((r.StartDate between h.StartDate and IsNull(h.[EndDate],'01-01-2099')) and (IsNull(h.[EndDate],'01-01-2099') between r.StartDate and IsNull(r.[EndDate],'01-01-2099'))) then 'периоды пересекаются в определенной области (2) 3 ((r.StartDate between h.StartDate and IsNull(h.[EndDate],01-01-2099)) and (IsNull(h.[EndDate],01-01-2099) between r.StartDate and r.EndDate))'
    when((h.startdate between r.startdate and IsNull(r.[EndDate],'01-01-2099')) and (IsNull(r.[EndDate],'01-01-2099') between h.Startdate and IsNull(h.[EndDate],'01-01-2099'))) then 'периоды пересекаются в определенной области (2) 4 ((h.startdate between r.startdate and r.enddate) and (r.EndDate between h.Startdate and IsNull(h.[EndDate],01-01-2099)))'
    -- периоды полностью совпадают (1)
    when(h.startdate=r.startdate and IsNull(h.[EndDate],'01-01-2099')=IsNull(r.[EndDate],'01-01-2099')) then 'периоды полностью совпадают (1) 5 (h.startdate=r.startdate and IsNull(h.[EndDate],01-01-2099)=r.enddate)'
    -- периоды совпадают в одной точке и перекрываются (4)
    when(h.startdate=r.startdate and IsNull(r.[EndDate],'01-01-2099')<IsNull(h.[EndDate],'01-01-2099')) then 'периоды совпадают в одной точке и перекрываются (4) 6 (h.startdate=r.startdate and r.enddate<IsNull(h.[EndDate],01-01-2099))'
    when(h.startdate=r.startdate and IsNull(h.[EndDate],'01-01-2099')<IsNull(r.[EndDate],'01-01-2099')) then 'периоды совпадают в одной точке и перекрываются (4) 7 (h.startdate=r.startdate and IsNull(h.[EndDate],01-01-2099)<r.enddate)'
    when(IsNull(h.[EndDate],'01-01-2099')=IsNull(r.[EndDate],'01-01-2099') and r.startdate>h.startdate) then 'периоды совпадают в одной точке и перекрываются (4) 8 (IsNull(h.[EndDate],01-01-2099)=r.enddate and r.startdate>h.startdate)'
    when(IsNull(h.[EndDate],'01-01-2099')=IsNull(r.[EndDate],'01-01-2099') and r.startdate<h.startdate) then 'периоды совпадают в одной точке и перекрываются (4) 9 (IsNull(h.[EndDate],01-01-2099)=r.enddate and r.startdate<h.startdate)'
    ... where ...
    (IsNull(h.[EndDate],'01-01-2099')=r.[StartDate]) 
    or (IsNull(r.[EndDate],'01-01-2099')=h.[StartDate])
    -- периоды пересекаются в определенной области (2)
    or ((r.StartDate between h.StartDate and IsNull(h.[EndDate],'01-01-2099')) and (IsNull(h.[EndDate],'01-01-2099') between r.StartDate and IsNull(r.[EndDate],'01-01-2099')))
    or ((h.startdate between r.startdate and IsNull(r.[EndDate],'01-01-2099')) and (IsNull(r.[EndDate],'01-01-2099') between h.Startdate and IsNull(h.[EndDate],'01-01-2099')))
    or (h.startdate > r.startdate and IsNull(h.[EndDate],'01-01-2099')<IsNull(r.[EndDate],'01-01-2099'))
    -- периоды полностью совпадают (1)
    or (h.startdate=r.startdate and IsNull(h.[EndDate],'01-01-2099')=IsNull(r.[EndDate],'01-01-2099'))
    -- периоды совпадают в одной точке и перекрываются (4)
    or (h.startdate=r.startdate and IsNull(r.[EndDate],'01-01-2099')<IsNull(h.[EndDate],'01-01-2099'))
    or (h.startdate=r.startdate and IsNull(h.[EndDate],'01-01-2099')<IsNull(r.[EndDate],'01-01-2099'))
    or (IsNull(h.[EndDate],'01-01-2099')=IsNull(r.[EndDate],'01-01-2099') and r.startdate>h.startdate)
    or (IsNull(h.[EndDate],'01-01-2099')=IsNull(r.[EndDate],'01-01-2099') and r.startdate<h.startdate)

    я даже знать не хочу, что в этом запросе на 140 строк происходит, и молю богу, чтобы это не ломалось, пока автор этого в декрете.
    форматирование убрал, а то в 6к символов не помещался
    отформатировать можно тут http://poorsql.com/

    Lokich, 02 Апреля 2014

    Комментарии (1)
  10. Куча / Говнокод #15008

    +155

    1. 1
    http://govnokod.reformal.ru/proj/govnokod?ia=613048

    надеюсь, меня поддержат

    Lokich, 26 Февраля 2014

    Комментарии (2)
  11. C# / Говнокод #14540

    +131

    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
    #region GetObjectTree
        [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public RootNode getObjectTree() {
            using (SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["DSDPortal"].ConnectionString)) {
                using (SqlCommand cmd = new SqlCommand("Report.ObjectTree_Read", conn))
                using (SqlDataAdapter sda = new SqlDataAdapter(cmd)) {
                    cmd.CommandType = CommandType.StoredProcedure;
                    DataTable dt = new DataTable();
                    conn.Open();
                    sda.Fill(dt);
    
                    var RootObjects = (from row
                                     in dt.AsEnumerable()
                                       where row.Field<int>("IsAttribute") == 0 && (row.Field<string>("FullName").Split('.').Count() == 1 || !row.Field<string>("FullName").Contains('.'))
                                       select new { Desc = row["Description"].ToString(), FullName = row.Field<string>("FullName"), Type = row.Field<string>("DataType") }).AsEnumerable();
    
                    RootNode rt = new RootNode();
                    foreach (var obj in RootObjects) {
                        TreeNode o = new TreeNode();
                        o.data.title = obj.Desc;
                        o.attr.Name = obj.FullName;
                        o.attr.Type = obj.Type;
                        o.children.AddRange(getChildTreeNode(dt, obj.FullName));
                        rt.data.Add(o);
                    }
                    return rt;
                }
            }
        }
    
        private List<TreeNode> getChildTreeNode(DataTable dt, string contextName) {
            var nodes = from row
                        in dt.AsEnumerable()
                        where row.Field<string>("FullName") != contextName
                            && row.Field<string>("FullName").StartsWith(contextName)
                            && (contextName).Split('.').Count() + 1 == row.Field<string>("FullName").Split('.').Count()
    
                        select new {
                            Desc = row["Description"].ToString(),
                            FullName = row["FullName"].ToString(),
                            Type = row["DataType"].ToString()
                        };
            List<TreeNode> items = new List<TreeNode>();
            foreach (var o in nodes) {
                TreeNode ob = new TreeNode();
                ob.data.title = o.Desc;
                ob.attr.Name = o.FullName;
                ob.attr.Type = o.Type;
                ob.children.AddRange(getChildTreeNode(dt, ob.attr.Name));
                if (ob.children.Count == 0) {
                    ob.children = null;
                }
                items.Add(ob);
            }
            return items;
    
        }
        #endregion

    и весь этот фарш, только чтобы распарсить строки типа PARENT_OBJECT.OBJECT.CHILD_OBJECT.ATTRIB UTE, и показать их в виде дерева, вместо того, чтобы сразу хранить иерархию по человечески :(

    Lokich, 11 Февраля 2014

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