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

    Всего: 18

  2. Java / Говнокод #23591

    0

    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
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    92. 92
    93. 93
    94. 94
    95. 95
    96. 96
    97. 97
    98. 98
    99. 99
    /*
     * To change this license header, choose License Headers in Project Properties.
     * To change this template file, choose Tools | Templates
     * and open the template in the editor.
     */
    package ServakPro;
     
    /**
     *
     * @author bb
     */
    import Debugger.NetDebugger;
    import Debugger.NetDebuggingInter;
    import Servak.Db.Experimental.SettingsBandit;
    import java.io.*;
    import java.net.*;
    import java.util.concurrent.ArrayBlockingQueue;
    import java.util.concurrent.BlockingQueue;
     
    public class Server extends Object implements NetDebuggingInter {
     
      static final int INITIALWORKERTHREADS = 20;// tune this!
      static final int port = SettingsBandit.SERVER_PORT;
      BlockingQueue<Socket> queue;
      private ServerSocket ss;
      private Thread internalThread;
      private volatile boolean noStopRequested;
      private NetDebugger netDebugger = new NetDebugger();
     
      private void init() {
      for (int i = 0; i < INITIALWORKERTHREADS; i++) {
      new Thread(new MultiSessionTask(ss, queue)).start();
      }
      }
     
      public Server(BlockingQueue<Socket> q) throws IOException {
      ss = new ServerSocket(port);
      noStopRequested = true;
      this.queue = q;
      this.init();
     
      Runnable r = new Runnable() {
      public void run() {
      try {
      runWorkFast();
      } catch (Exception x) {
      netDebugger.fireServerFaultEvent("SERVER: there is exception: ", x);
      x.printStackTrace();
      }
      }
      };
      internalThread = new Thread(r);
      internalThread.setName("My server Thread");
      internalThread.start();
      }
     
      private void runWorkFast() {
      for (;;) {
      try {
      Socket sock = ss.accept();
      int thr = MultiSessionTask.waitCount();
      if (thr > 0) {
      queue.add(sock);
      } else {
      queue.add(sock);
      new Thread(new DynamicMultiSessionTask(ss, queue)).start();
      }
      } catch (IOException exc) {
      exc.printStackTrace();
      }
      if (ss.isClosed()) {
      break; // for (;;)
      }
      } // catch    
      }
     
      public synchronized void stopRequest() {
      noStopRequested = false;
      //internalThread.interrupt();
      if (ss != null) {
      try {
      ss.close();
      } catch (IOException x) {
      // ignore
      } finally {
      ss = null;
      }
      }
      }
     
      public boolean isAlive() {
      return internalThread.isAlive();
      }
     
      public static void main(String[] args) {
      try {
      BlockingQueue<Socket> bq = new ArrayBlockingQueue<>(40);
      Server serv = new Server(bq);
      } catch (IOException ex) {

    Мега-сервер
    https://wasm.in/threads/skorost-obrabotki-klientov-v-servere-na-dzhava.32423/#post-395115

    SadKo, 15 Декабря 2017

    Комментарии (0)
  3. Java / Говнокод #21229

    −51

    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
    public static String trimLastSemicolon(String str)
    	{
    		if(str != null)
    		{
    			if(str.endsWith(";"))
    			{
    				int pos = str.length() - 1;
    				while(pos >= 0)
    				{
    					if(str.charAt(pos) == ';')
    						pos--;
    					else
    						break;
    				}
    
    				if(pos >= 0)
    					return str.substring(0, pos + 1);
    				else
    					return "";
    			}
    			else
    				return str;
    		}
    		return null;
    	}

    Про String.lastIndexOf не слышали.

    SadKo, 21 Сентября 2016

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

    −47

    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
    public static double getFormattedCost(double cost)
    	{
    		try 
    		{
    			DecimalFormat formatter = new DecimalFormat(".###");
    			String strcost = formatter.format(cost);
    			NumberFormat format = NumberFormat.getNumberInstance();
    			Number num = format.parse(strcost);
    			cost = num.doubleValue();
    		} 
    		catch(ParseException ex)
    		{
    			// do nothing
    		}
    
    		return cost;
    	}

    Может, баян, но оставление трёх десятичных цифр после запятой можно было бы сделать менее ресурсозатратным путём.

    SadKo, 21 Сентября 2016

    Комментарии (16)
  5. Си / Говнокод #19559

    −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
    16. 16
    17. 17
    18. 18
    for(x = 0; x < 27; ++ x) {
            flag = 1 << x;
            hold = 1 << i;
            if(x == z && x < 26) {
                if(!(bits & flag))
                    bits = (bits & ~(-1 << i)) | ((bits & (-1 << i)) << 1);
                bits ^= bits & flag ? bits & hold ? flag | hold : hold : flag;
                if(!(bits & flag))
                    bits = (bits & ~(-1 << i)) | ((bits & (-2 << i)) >> 1);
                hold = 1 << i;
            } else
            if(x == z)
                bits ^= flag;
            tag = szTag[x * 3 + (bits & flag ? bits & hold ? 2 :  1 : 0)];
            ListView_SetItemText(hWnd, row, x + 1, TEXT(PTCHAR(&tag)));
            if(flag & bits)
                ++ i;
        }

    "Иногда вымогает, что в операциях сдвига биты втиснуть легко лишь с начала или с конца. А вот всерёдку:"
    http://wasm.ru/forum/viewtopic.php?pid=578804#p578804

    SadKo, 02 Марта 2016

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

    −117

    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
    declare
      v_bonus_account NUMBER;
      v_MSISDN VARCHAR2(32);
      l_app NUMBER;
      v_Result NUMBER;
      v_Message VARCHAR2(2000);
      var_MSISDN VARCHAR2(32);
      v_Event VARCHAR2(32);
      v_Amount NUMBER;
      o_err VARCHAR2(2000);
    BEGIN
      /* Activate service */ 
      v_Result := wpt.bp_services.add_service
      ( i_app => v_MSISDN,
      i_srv => 400714,
      o_err => v_Message,
      to_date('30/12/2012','DD/MM/YYYY')
      );
    END;

    Локализовал код, вызывающий функцию биллинга у арабов, предложенный ими же. И который не компилится.
    В ответ получаю кучу дописок с вызовами других функций, которые ко всему этому не имеют никакого отношения.
    Как убедить пидарасов в том, что ошибки компиляции и ошибки времени исполнения - это как бы совсем разные вещи?
    А то третья неделя уже идёт...

    SadKo, 26 Ноября 2012

    Комментарии (12)
  7. Java / Говнокод #9657

    +74

    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
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    92. 92
    93. 93
    94. 94
    95. 95
    for (Tm_RecipientConstructor recipient: m_Recipients) {
    	
    	Tm_PHB_Contact m_Contact = recipient.getContact();
    	
    	if ( m_Contact != null) {					
    		if(m_Contact.getMobile()!=null) {						
    			st.setLong(1,recipient.getEntry().getID());//nWebEntryID
    			st.setLong(2,Tm_Registry.getInstance().getAttachementTypes().getID(En_AttachementType.ARGUMENT));//NTYPE
    			st.setString(3,"mobile");//STRNAME
    			st.setLong(4,Tm_Registry.getInstance().getAttributeType().getID(En_AttributeType.STRING));//NDATATYPE
    			st.setString(5,m_Contact.getMobile());//STRVALUE
    			st.addBatch();
        		index++;
        		if (index % 5000 == 0){		    				
        			st.executeBatch();
        			st.clearBatch();				            
        			st = conn.prepareStatement(sql);
        		}
    		}
    		if(m_Contact.getName()!=null) {						
    			st.setLong(1,recipient.getEntry().getID());//nWebEntryID
    			st.setLong(2,Tm_Registry.getInstance().getAttachementTypes().getID(En_AttachementType.ARGUMENT));//NTYPE
    			st.setString(3,"first_name");//STRNAME
    			st.setLong(4,Tm_Registry.getInstance().getAttributeType().getID(En_AttributeType.STRING));//NDATATYPE
    			st.setString(5,m_Contact.getName());//STRVALUE
    			st.addBatch();
        		index++;
        		if (index % 5000 == 0){		    				
        			st.executeBatch();
        			st.clearBatch();				            
        			st = conn.prepareStatement(sql);
        		}
    		}
    		if(m_Contact.getSurName()!=null) {
    			
    			st.setLong(1,recipient.getEntry().getID());//nWebEntryID
    			st.setLong(2,Tm_Registry.getInstance().getAttachementTypes().getID(En_AttachementType.ARGUMENT));//NTYPE
    			st.setString(3,"last_name");//STRNAME
    			st.setLong(4,Tm_Registry.getInstance().getAttributeType().getID(En_AttributeType.STRING));//NDATATYPE
    			st.setString(5,m_Contact.getSurName());//STRVALUE
    			st.addBatch();
        		index++;
        		if (index % 5000 == 0){		    				
        			st.executeBatch();
        			st.clearBatch();				            
        			st = conn.prepareStatement(sql);
        		}
    		}					
    		if(m_Contact.getPatrName()!=null) {
    			
    			st.setLong(1,recipient.getEntry().getID());//nWebEntryID
    			st.setLong(2,Tm_Registry.getInstance().getAttachementTypes().getID(En_AttachementType.ARGUMENT));//NTYPE
    			st.setString(3,"second_name");//STRNAME
    			st.setLong(4,Tm_Registry.getInstance().getAttributeType().getID(En_AttributeType.STRING));//NDATATYPE
    			st.setString(5,m_Contact.getPatrName());//STRVALUE
    			st.addBatch();
        		index++;
        		if (index % 5000 == 0){		    				
        			st.executeBatch();
        			st.clearBatch();				            
        			st = conn.prepareStatement(sql);
        		}
    		}					
    		if(m_Contact.getCompanyName()!=null) {
    			
    			st.setLong(1,recipient.getEntry().getID());//nWebEntryID
    			st.setLong(2,Tm_Registry.getInstance().getAttachementTypes().getID(En_AttachementType.ARGUMENT));//NTYPE
    			st.setString(3,"company");//STRNAME
    			st.setLong(4,Tm_Registry.getInstance().getAttributeType().getID(En_AttributeType.STRING));//NDATATYPE
    			st.setString(5,m_Contact.getCompanyName());//STRVALUE
    			st.addBatch();
        		index++;
        		if (index % 5000 == 0){		    				
        			st.executeBatch();
        			st.clearBatch();				            
        			st = conn.prepareStatement(sql);
        		}
    		}
    		if(m_Contact.getComment()!=null) {
    			
    			st.setLong(1,recipient.getEntry().getID());//nWebEntryID
    			st.setLong(2,Tm_Registry.getInstance().getAttachementTypes().getID(En_AttachementType.ARGUMENT));//NTYPE
    			st.setString(3,"comments");//STRNAME
    			st.setLong(4,Tm_Registry.getInstance().getAttributeType().getID(En_AttributeType.STRING));//NDATATYPE
    			st.setString(5,m_Contact.getComment());//STRVALUE
    			st.addBatch();
        		index++;
        		if (index % 5000 == 0){		    				
        			st.executeBatch();
        			st.clearBatch();				            
        			st = conn.prepareStatement(sql);
        		}
    		}	
    	}
    }

    Функции? Не, не слышал.

    SadKo, 12 Марта 2012

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

    −132

    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
    found_files() 
    { 
     if [ "$DAY_CONF" = 'all_last' ]; then 
     files=$( ls -1 "$FILEPATH" | grep "$FILE_PREFIX" | grep -v `date "$DATE_PREFIX"` ) 
     fi 
     
     if [ "$DAY_CONF" = 'last' ]; then 
     if [ "`date +%d`" -eq '01' ]; then 
     case "`date +%m`" in 
     02|04|06|09|11 ) 
     need_date=31; 
     ;; 
     03 ) 
     if [ -n "$( ls -1 "$FILEPATH" | grep "$FILE_PREFIX" | grep `date +%Y0229` )" ]; then need_date=29; else need_date=28; fi; 
     ;; 
     * ) 
     need_date=30; 
     ;; 
     esac 
     if [ "`date +%m`" -eq '01' ]; then 
     need_month=12 
     need_date=31 
     need_year=$(( `date +%Y` - 1 )) 
     files=$( ls -1 "$FILEPATH" | grep "$FILE_PREFIX" | grep "$need_year$need_month$need_date" ) 
     else 
     need_month=$((`date +%m` - 1 )) 
     files=$( ls -1 "$FILEPATH" | grep "$FILE_PREFIX" | egrep `date ${DATE_PREFIX%%%m*}[0]*$need_month$need_date` ) 
     fi 
     else 
     need_date=$((`date +%d` - 1)) 
     files=$( ls -1 "$FILEPATH" | grep "$FILE_PREFIX" | egrep `date ${DATE_PREFIX%%%d*}[0]*$need_date` ) 
     fi 
     fi 
     
     if [ "$DAY_CONF" = 'today' ]; then 
     files=$( ls -1 "$FILEPATH" | grep "$FILE_PREFIX" | grep `date "$DATE_PREFIX"` ) 
     fi 
     echo $files 
    }

    Замечательная функция поиска файлов "за вчера". Находит файлы не только "за вчера".
    Автор неизвестен.

    SadKo, 23 Августа 2011

    Комментарии (6)
  9. Куча / Говнокод #7285

    +132

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    #                <connection id="ftp_cpe02">
    #                        <user value="*****" />
    #                        <password value="*****" />
    #                        <host value="*********" />
    #                        <passive value="true" />
    #                        <path value="/var/logs" />
    #                </connection>

    Новый опус от техподдержки.
    Раздел как бэ закомментирован

    SadKo, 19 Июля 2011

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

    +76

    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
    public class ValueList< T > implements Cloneable
    {
        public ValueList() { }
    
        public void addValue( final T value ) {
            list.add( value );
        }
    
        @Override
        @SuppressWarnings( { "unchecked", "unchecked" } )
        public Object clone() throws CloneNotSupportedException {
            super.clone();
            ValueList< T > object = new ValueList< T >();
            List< T > objectList = object.getList();
            objectList = ( List< T > )list.clone();
            for( int index = 0; index < list.size() ; ++index ) {
                objectList.set( index, ( Object )list.get( index ).clone() );
            }
            return object;
        }
    
        public List< T > getList() {
            return list;
        }
    
        private ArrayList< T > list = new ArrayList< T >();
    }

    Человек из соседнего отдела порадовал...

    SadKo, 20 Июня 2011

    Комментарии (32)
  11. Си / Говнокод #6935

    +143

    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
    // find the start and end of the upload file.
    static FILE * _uploadGet(request *wp, unsigned int *startPos, unsigned *endPos) {
       
       FILE *fp=NULL;	
    	struct stat statbuf;	
    	unsigned char c, *buf; 
    	   
    	
    	if (wp->method == M_POST)
    	{
    	   fstat(wp->post_data_fd, &statbuf);
    		lseek(wp->post_data_fd, SEEK_SET, 0);
          
    		printf("file size=%d\n",statbuf.st_size);
    		fp=fopen(wp->post_file_name,"rb");
    		if(fp==NULL) goto error;
    	}
    	else goto error;
    
       
       //printf("_uploadGet\n");
       do
    	{
    		if(feof(fp))
    		{
    			printf("Cannot find start of file\n");
    			goto error;
    		}
    		c= fgetc(fp);
    		if (c!=0xd)
    			continue;
    		c= fgetc(fp);
    		if (c!=0xa)
    			continue;
    		c= fgetc(fp);
    		if (c!=0xd)
    			continue;
    		c= fgetc(fp);
    		if (c!=0xa)
    			continue;
    		break;
    	}while(1);
    	(*startPos)=ftell(fp);
    
       if(fseek(fp,statbuf.st_size-0x200,SEEK_SET)<0) 
          goto error;
    	do
    	{
    		if(feof(fp))
    		{
    			printf("fmmgmt: Cannot find end of file\n");
    			goto error;
    		}
    		c= fgetc(fp);
    		if (c!=0xd)
    			continue;
    		c= fgetc(fp);
    		if (c!=0xa)
    			continue;
    		c= fgetc(fp);
    		if (c!='-')
    			continue;
    		c= fgetc(fp);
    		if (c!='-')
    			continue;
    		break;
    	}while(1);
    	(*endPos)=ftell(fp);
    
       return fp;
    error:
       return NULL;
    }

    Вот так вот китайцы парсят MIME при загрузке прошивки в роутер.

    SadKo, 12 Июня 2011

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