1. Java / Говнокод #14541

    +174

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    Float f = 1.25f;
    int i = Float.floatToIntBits(f);
    i++;
    f = Float.intBitsToFloat(i);
    //I wanted 2.25, but got 1.2500001 instead.

    http://stackoverflow.com/questions/9921690/java-increment-through-float-floattointbits

    3.14159265, 11 Февраля 2014

    Комментарии (44)
  2. 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)
  3. ActionScript / Говнокод #14539

    −122

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    protected override function getCurrentSkinState():String
    {
    	if (!this._currentState) this._currentState = "edit";
    	else this._currentState = super.getCurrentSkinState() || "edit";
    	return this._currentState;
    }

    Еще грабли от Адоба.

    wvxvw, 11 Февраля 2014

    Комментарии (20)
  4. Куча / Говнокод #14538

    +127

    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
    import std.stdio;
    
    struct Vector
    {
        private static bool checkOpDispatch(in string str)
        {
            if(str.length != 4) return false;
            foreach(c; str)
            {
                if(c != 'x' && c != 'y' && c != 'z' && c != 'w') return false;
            }
            return true;
        }
        float x,y,z,w;
    
        @property auto opDispatch(string s)() const if(checkOpDispatch(s))
        {
            return Vector(mixin(s[0..1]),
                          mixin(s[1..2]),
                          mixin(s[2..3]),
                          mixin(s[3..4]));
        }
        
        void print() const
        {
            writefln("Vector: %f, %f, %f, %f", x, y, z, w);
        }
    }
    
    void main() 
    {
    	//vector swizzling
        Vector v = {1,2,3,4};
        v.print();
        auto v1 = v.wzyx;
        v1.print();
        auto v2 = v.xyxy;
        v2.print();
    }

    http://ideone.com/bfA9gI

    LispGovno, 10 Февраля 2014

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

    +55

    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
    #include <iostream>
    #include <thread>
    #include <cmath>
    #include <cstdlib>
    #include <algorithm>
    #include <iterator>
    #include <future>
    
    constexpr std::size_t array_size = 1e7;
    constexpr std::size_t chunks_number = 1e3;
    
    double local_pi(const std::size_t array_length)
    {
        std::vector<std::pair<double, double>> array_xy;       
        array_xy.reserve(array_length);      
        std::generate_n(std::back_inserter(array_xy), array_length, [](){
          return std::make_pair(rand()/static_cast<double>(RAND_MAX), 
    			    rand()/static_cast<double>(RAND_MAX));
          });
        std::vector<bool> bool_z;
        bool_z.reserve(array_length);
        auto bool_z_insterter = std::back_inserter(bool_z);
        std::for_each(array_xy.cbegin(), array_xy.cend(), [&](const std::pair<double, double>& ref){
          const auto func = [](const std::pair<double, double>& ref){
    	return sqrt(pow(ref.first, 2) + pow(ref.second, 2)) <= 1.0;
          };
          bool_z_insterter = func(ref);
        });
        const auto sum = 4.0 * (std::accumulate(bool_z.cbegin(), bool_z.cend(), 0.0)/array_length);
        return sum;
    }
    int main(){
      const auto concurrency_level = std::thread::hardware_concurrency();
      std::vector< double > chunks_vector;
      chunks_vector.reserve(chunks_number);
      for (std::size_t j = 0; j < chunks_number; ++j) {
        std::vector<std::future<double>> futures;
        futures.reserve(concurrency_level-1);
        for (std::size_t i = 0; i < concurrency_level-1; ++i){
          auto f = std::async(std::launch::async, local_pi, array_size/concurrency_level);
          futures.push_back(std::move(f));
        }
        auto pi = local_pi(array_size/concurrency_level);
        for (auto&& x : futures ){
          pi += x.get();
        }
        pi /= concurrency_level;
        chunks_vector.push_back(pi);
      }
      const auto total_pi = std::accumulate(chunks_vector.cbegin(), chunks_vector.cend(), 0.0)/chunks_vector.size();
      std::cout << "Pi equals = " << std::scientific << total_pi << std::endl;
      return 0;
    }

    Вычисляем pi методом Монте-Карло

    Abbath, 10 Февраля 2014

    Комментарии (63)
  6. PHP / Говнокод #14535

    +154

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    $this->db->insert("orders", $data);
    
            //Get order's id
            $this->db->select("orders_id");
            $this->db->where('orders_customer_tel', $data['tel']);
            $this->db->order_by("orders_id", "desc");
            $this->db->limit(1);
            $query = $this->db->get("orders");
            foreach ($query->result_array() as $res) {
                $orders_id = $res['orders_id'];
            }

    Ништяяяк!

    ragnar, 10 Февраля 2014

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

    +45

    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
    for (int i=0; i<N-1; ++i) for (int j=0; j<N-1; ++j)
    		{
    			int& 
    				f1=fields[i  ][j  ].index,
    				f2=fields[i+1][j  ].index,
    				f3=fields[i  ][j+1].index,
    				f4=fields[i+1][j+1].index;
    			if (f1<=0 && f2<=0 && f3<=0 && f4<=0) 
    			{
    				f1=-1;
    				f2=-1;
    				f3=-1;
    				f4=-1; 
    			}				
    		}

    несколько минут пырился в код и не мог понять, где ошибка
    БЛЯДСКАЯ КРЕСТОПИДЕРАСТИЧНАЯ СИСТЕМА ИМЕНОВАНИЯ ТИПОВ ПЕРЕМЕННЫХ

    TarasB, 10 Февраля 2014

    Комментарии (46)
  8. Pascal / Говнокод #14532

    +88

    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
    80. 80
    81. 81
    82. 82
    83. 83
    Попытка внедрить контрол TCheckBox в заголовок 1 колонки TListView:
    
    type
      TForm1 = class(TForm)
        ListView1: TListView;
        procedure FormCreate(Sender: TObject);
        procedure FormDestroy(Sender: TObject);
      private
        FListHeaderWnd: HWND;
        FListHeaderChk: TCheckBox;
        FSaveListHeaderWndProc, FListHeaderWndProc: Pointer;
        procedure ListHeaderWndProc(var Msg: TMessage);
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    uses
      commctrl;
    
    {$R *.dfm}
    
    function GetCheckSize: TPoint;    
    begin                                                  
      with TBitmap.Create do
        try
          Handle := LoadBitmap(0, PChar(OBM_CHECKBOXES));
          Result.X := Width div 4;
          Result.Y := Height div 3;
        finally
          Free;
        end;
    end;
    
    procedure TForm1.FormCreate(Sender: TObject);
    var
      CheckSize: TPoint;
      HeaderSize: TRect;
    begin
      ListView1.HandleNeeded;
      FListHeaderWnd := ListView_GetHeader(ListView1.Handle);
    
      FListHeaderChk := TCheckBox.Create(nil);
      CheckSize := GetCheckSize;
      FListHeaderChk.Height := CheckSize.X;
      FListHeaderChk.Width := CheckSize.Y;
    
      // the below won't show anything since the form is not visible yet
      ShowWindow(ListView1.Handle, SW_SHOWNORMAL); // otherwise header is not sized
      windows.GetClientRect(FListHeaderWnd, HeaderSize);
      FListHeaderChk.Top := (HeaderSize.Bottom - FListHeaderChk.Height) div 2;
      FListHeaderChk.Left := FListHeaderChk.Top;
    
      FListHeaderChk.Parent := Self;
      windows.SetParent(FListHeaderChk.Handle, FListHeaderWnd);
    
      FListHeaderWndProc := classes.MakeObjectInstance(ListHeaderWndProc);
      FSaveListHeaderWndProc := Pointer(GetWindowLong(FListHeaderWnd, GWL_WNDPROC));
      SetWindowLong(FListHeaderWnd, GWL_WNDPROC, NativeInt(FListHeaderWndProc));
    end;
    
    procedure TForm1.FormDestroy(Sender: TObject);
    begin
      SetWindowLong(FListHeaderWnd, GWL_WNDPROC, NativeInt(FSaveListHeaderWndProc));
      classes.FreeObjectInstance(FListHeaderWndProc);
      FListHeaderChk.Free;
    end;
    
    procedure TForm1.ListHeaderWndProc(var Msg: TMessage);
    begin
      if (Msg.Msg = WM_COMMAND) and (HWND(Msg.LParam) = FListHeaderChk.Handle)
            and (Msg.WParamHi = BN_CLICKED) then begin
        FListHeaderChk.Checked := not FListHeaderChk.Checked;
    
        // code that checks/clears all items
    
      end;
    
      Msg.Result := CallWindowProc(FSaveListHeaderWndProc, FListHeaderWnd,
                                   Msg.Msg, Msg.WParam, Msg.LParam);
    end;

    function GetCheckSize: TPoint;    
    begin
    with TBitmap.Create do
    try
    Handle := LoadBitmap(0, PChar(OBM_CHECKBOXES));
    Result.X := Width div 4;
    Result.Y := Height div 3;
    finally
    Free;
    end;
    end;

    без комментариев.

    Stertor, 10 Февраля 2014

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

    +63

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    #include <iostream>
    using namespace std;
    
    int main() {
    	// your code goes here
    	float f = 267.0f;
    	unsigned char c = f;
    	cout << (int)c << endl;
    	return 0;
    }

    Кресты помогают обнаруживать ошибки в логике программы. За это Страуструпу респект и уважуха.

    http://ideone.com/V9rgSC

    LispGovno, 09 Февраля 2014

    Комментарии (112)
  10. Pascal / Говнокод #14530

    +125

    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
    var
      generalPtr : Pointer;  // Указатель на что-нибудь
      formPtr    : ^TForm;   // Указатель на объект формы
    
    begin
      // Форма текущего модуля адресуемая через ключевое слово self
      generalPtr := Addr(self);
    
      // Мы можем присвоить этот указатель указателю формы
      formPtr := generalPtr;
    
      // И установить заголовок формы, чтобы показать это
      formPtr.Caption := 'Test program';
    end;
    Форма будет показана с з[color=red]а[/color]галовком:
    
    Test program

    http://www.delphibasics.ru/Pointer.php

    Stertor, 09 Февраля 2014

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