- 1
- 2
- 3
<a target="_self"
href="mx/automation/delegates/advancedDataGrid/package-detail.html"
onclick="javascript:loadClassListFrame('mx/automation/delegates/advancedDataGrid/class-list.html');">
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
Всего: 202
+134
<a target="_self"
href="mx/automation/delegates/advancedDataGrid/package-detail.html"
onclick="javascript:loadClassListFrame('mx/automation/delegates/advancedDataGrid/class-list.html');">
Форматирование я добавил. Источник, думаю, указывать не нужно :)
−113
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() за тем же авторством. :)
−111
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() метод, но не получилось :)
−115
[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) выкинет ошибку.
+137
-define(NO_AGE_GROUP, "0").
-define(BELOW_18, "1").
-define(ABOVE_18, "2").
Это Erlang если что...
Если не в курсе, то двойные кавычки в Erlang это короткая запись создания списка, естественно, как списки эти константы никогда не используются.
+129
;;; 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
−109
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ак бы много всего одновременно... (и даже больше, но для того, чтобы объяснить на сколько все плохо пришлось бы очень много постить. Я думаю, этого должно хватить :)
+66
http://svn.codehaus.org/groovy/trunk/groovy/groovy-core/src/main/org/codehaus/groovy/runtime/ArrayUtil.java
Было? Вроде нет...
−113
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
+134
-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).
Первый раз в жизни пишу что-то на Эрланге. Чует сердце, что что-то тут не так...