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

    Всего: 202

  2. Куча / Говнокод #7501

    +134

    1. 1
    2. 2
    3. 3
    <a target="_self" 
    	href="mx/automation/delegates/advancedDataGrid/package-detail.html" 
    	onclick="javascript:loadClassListFrame('mx/automation/delegates/advancedDataGrid/class-list.html');">

    Форматирование я добавил. Источник, думаю, указывать не нужно :)

    wvxvw, 09 Августа 2011

    Комментарии (5)
  3. ActionScript / Говнокод #7309

    −113

    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
    public override function match(xdoc:XML):Boolean {
    			var newsearch:String = search;
    			var xpathnodes:Array = new Array();
    			while(true) {
    				var xpathnode:String = splitnodes.exec(newsearch);
    				if(xpathnode) {
    					xpathnodes.push(xpathnode);
    				} else {
    					break;
    				}
    				newsearch = newsearch.substring(newsearch.search(xpathnode) + xpathnode.length);
    			}
    			return matchXPath(xpathnodes, xdoc);
    		}

    Фантастическая реализация String.split() за тем же авторством. :)

    wvxvw, 21 Июля 2011

    Комментарии (5)
  4. ActionScript / Говнокод #7307

    −111

    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
    private function nodeCompare(searchNode:XML, findNode:XML):Boolean {
    			//trace(findNode.nodeName);
    			if(searchNode.localName() != findNode.localName()) {
    				//trace(searchNode.nodeName + "!=" + curnode);
    				return false;
    			}
    			if(findNode.namespace() != searchNode.namespace()) {
    				return false;
    			}
    			if(searchNode.text() && findNode.text() != searchNode.text()) {
    				return false;
    			}
    			for each(var attr:Object in searchNode.attributes) {
    				//trace ("**" + attr); // um, that's not helpful
    			}
    			var found:Boolean = false;
    			for each(var searchSub:XML in searchNode.children()) {
    				for each(var findSub:XML in findNode.children()) {
    					if(nodeCompare(searchSub, findSub)) {
    						found = true;
    						break;
    					}
    				}
    				if(!found) return false;
    				found = false;
    			}
    			//trace("match!");
    			return true;
    		}

    Тот же источник. Явно задумка была реализовать по-новой XML.contains() метод, но не получилось :)

    wvxvw, 21 Июля 2011

    Комментарии (0)
  5. ActionScript / Говнокод #7305

    −115

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    [code]		public function send(data:String):void {
    			trace("OUT: " + data);
    			dispatchEvent(new StreamEvent(StreamEvent.COMM_OUT, false, false, null, data));
    			try {
    				socket.writeUTFBytes(data);
    				socket.flush();
    			} catch (error:Error) {
    				trace("Error writing to socket: " + error);
    				dispatchEvent(new StreamEvent(StreamEvent.DISCONNECTED, false, false, null));
    			}
    		}[/code]

    Какая-то опенсорсная реализация XMPP. Для тех, кто не в курсе socket.writeUTFBytes(null) выкинет ошибку.

    wvxvw, 21 Июля 2011

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

    +137

    1. 1
    2. 2
    3. 3
    -define(NO_AGE_GROUP, "0").
    -define(BELOW_18, "1").
    -define(ABOVE_18, "2").

    Это Erlang если что...
    Если не в курсе, то двойные кавычки в Erlang это короткая запись создания списка, естественно, как списки эти константы никогда не используются.

    wvxvw, 18 Июля 2011

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

    +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
    ;;; Returns a string and 'T' if the list is in a desc. or asc. order, and NIL otherwise
    
    (defun ordered (list)
    (let ((list-dec (copy-list list)))
    (let ((list-inc (copy-list list)))
    (let ((alist (sort list-inc #'<)))
    (let ((dlist (sort list-dec #'>)))
    (cond
      ((equal list dlist)
       (format nil "~%The numbers in ~a are in a descending order. ~%T" list))
    
      ((equal list alist)
       (format nil "~%The numbers in ~a are in an ascending order. ~%T" list))))))))

    Задача была следующей: функция должна возвращать t (истина), если в списке все элементы либо в восходящем, либо в нисходящем порядкe, и соответсвенно nil (ложь), если нет. Думаю, вполне сгодится сюда :)
    http://www.lispforum.com/viewtopic.php?f=2&t=1275

    wvxvw, 08 Июля 2011

    Комментарии (28)
  8. ActionScript / Говнокод #7155

    −109

    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
    public function UiAnalyticVO()
    		{
    		}
    		
    		public function get ageGroup():String
    		{
    			var ageGroup:String;
    // Данные о возрасте пользователя никогда не отправляются, важно только
    // чтобы он был старше 18 (хз зачем).
    // Возраст пользователя устанавливается 1 раз за всю жизнь приложения,
    // даже если у него случится день Рождения - об этом приложение не
    // узнает.
    			if (_age)
    			{
    				ageGroup = _age < 18 ? "1":"2";
    			}
    			else
    			{
    				ageGroup = "0";//undefined age
    			}
    			return ageGroup;
    		}
    . . .
    // эту функцию вызывают много раз в секунду
    		protected function sendAnalytics(categoryType:String, evtType:String):void
    		{
    // жизненный цикл этого объекта - ровно пока не отработает эта функция, 
    // потом он жертва мусорщика
    			var analyticsVo:UiAnalyticVO = new UiAnalyticVO();
    . . .

    Тут прийдется немного нарпячь воображение, чтобы понять, что происходит. Kак бы много всего одновременно... (и даже больше, но для того, чтобы объяснить на сколько все плохо пришлось бы очень много постить. Я думаю, этого должно хватить :)

    wvxvw, 05 Июля 2011

    Комментарии (8)
  9. Java / Говнокод #7109

    +66

    1. 1
    http://svn.codehaus.org/groovy/trunk/groovy/groovy-core/src/main/org/codehaus/groovy/runtime/ArrayUtil.java

    Было? Вроде нет...

    wvxvw, 30 Июня 2011

    Комментарии (15)
  10. ActionScript / Говнокод #7087

    −113

    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
    private function formatResponse( map:Dictionary ):String
    		{
    // В этой функции было больше строчек, я оставил только те, где используется map
    			ha1_1.writeUTFBytes( map.username + ":" + map.realm + ":" + password );
    			ha1_2.writeUTFBytes( ":" + map.nonce + ":" + map.cnonce );
    			ha2.writeUTFBytes( "AUTHENTICATE:" + map[ "digest-uri" ] );
    			b.writeUTFBytes( sha1 + ":" + map.nonce + ":" + map.nc + ":" + map.cnonce + ":" + map.qop + ":" + sha2 );
    			return Hex.fromArray( b );
    		}
    
    		override public function handleChallenge( stage:int, challenge:XML ):XML
    		{
    			var decodedChallenge:String = Base64.decode( challenge );
    			var challengeKeyValuePairs:Array = decodedChallenge.replace( /\"/g, "").split( "," );
    			var challengeMap:Dictionary = new Dictionary();
    			for each( var keyValuePair:String in challengeKeyValuePairs )
    			{
    				var keyValue:Array = keyValuePair.split( "=" );
    				challengeMap[ keyValue[ 0 ] ] = keyValue[ 1 ];
    			}
    
    			var resp:XML = new XML( response );
    			resp.setNamespace( DigestMD5.NS );
    
    			if( !challengeMap.rspauth )
    			{
    				var responseMap:Dictionary = new Dictionary();
    				responseMap.username = connection.username;
    				responseMap.realm = challengeMap.realm ? challengeMap.realm : "";
    				responseMap.nonce = challengeMap.nonce;
    				responseMap.cnonce = new Date().time;
    				responseMap.nc = "00000001";
    				responseMap.qop = challengeMap.qop ? challengeMap.qop : "auth";
    				responseMap[ "digest-uri" ] = "xmpp/" + ( challengeMap.realm ? challengeMap.realm : connection.domain );
    				responseMap.charset = challengeMap.charset;
    				responseMap.response = formatResponse( responseMap );
    
    				var challengeResponse:String = "username=\"" + responseMap.username + "\"";
    				if( challengeMap.realm ) challengeResponse += ",realm=\"" + responseMap.realm + "\"";
    				challengeResponse += ",nonce=\"" + responseMap.nonce + "\"";
    				challengeResponse += ",cnonce=\"" + responseMap.cnonce + "\"";
    				challengeResponse += ",nc=" + responseMap.nc;
    				challengeResponse += ",qop=" + responseMap.qop;
    				challengeResponse += ",digest-uri=\"" + responseMap[ "digest-uri" ] + "\"";
    				challengeResponse += ",response=" + responseMap.response;
    				challengeResponse += ",charset=" + responseMap.charset;
    				challengeResponse = Base64.encode( challengeResponse );
    
    				resp.setChildren( challengeResponse );
    			}
    
    			return resp;
    		}

    Тут довольно много читать, но если вы не побоитесь и все же осилите, то откроете для себя еще один уголок прекрасного. Часть кода из первой функции вырезана т.как приниципиального значения не имела. Код явно переписан с чего-то похожего на Java человеком который ни разу не открыл маны по AS3.
    Целиком обозреть бессмертное творение можно тут: http://fisheye.igniterealtime.org/browse/~raw,r=12385/sparkweb/trunk/SparkWeb2/src/org/igniterealtime/xiff/auth/DigestMD5.as

    wvxvw, 27 Июня 2011

    Комментарии (5)
  11. Куча / Говнокод #6743

    +134

    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
    -module(common_io).
    -export([read_utf8/2, default_fallback/1]).
    
    default_fallback(<<Data>>)->
        erlang:display(Data).
    
    read_utf8(Collected, <<Utf8Char/utf8>>, _CallAfter)->
        lists:append(Collected, [Utf8Char]);
    read_utf8(Collected, <<Utf8Char/utf8, Data/binary>>, CallAfter)->
        lists:append([Collected, [Utf8Char], read_utf8(Data, CallAfter)]);
    read_utf8(Collected, <<Data/binary>>, CallAfter)->
        CallAfter(Data),
        Collected;
    read_utf8(Collected, <<>>, _CallAfter)->
        Collected.
    
    read_utf8(<<>>, _CallAfter)->
        [];
    read_utf8(<<Utf8Char/utf8>>, _CallAfter)->
        [Utf8Char];
    read_utf8(<<Data/binary>>, CallAfter)->
        read_utf8([], Data, CallAfter).

    Первый раз в жизни пишу что-то на Эрланге. Чует сердце, что что-то тут не так...

    wvxvw, 24 Мая 2011

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