- 1
- 2
- 3
if ($linksCount == 0) $linksCount = -1; // for no error
$percent = round(($linksOkIndex/$linksCount)*100, 0);
if ($linksCount == -1) $linksCount = 0; // for no error
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+163
if ($linksCount == 0) $linksCount = -1; // for no error
$percent = round(($linksOkIndex/$linksCount)*100, 0);
if ($linksCount == -1) $linksCount = 0; // for no error
Я так избегаю деления на ноль -)
+71
setCookie(new String[] {username, Long.toString(expiryTime), signatureValue}, tokenLifetime, request, response);
int tokenLifetime = calculateLoginLifetime(request, successfulAuthentication);
protected int calculateLoginLifetime(HttpServletRequest request, Authentication authentication) {
return getTokenValiditySeconds();
}
protected int getTokenValiditySeconds() {
return tokenValiditySeconds;
}
private int tokenValiditySeconds = TWO_WEEKS_S;
public static final int TWO_WEEKS_S = 1209600;
Spring Security........
Логирование по куки токену.....
+997
class fileOutBuf : public streambuf
{
public:
// ...
typedef char char_type;
typedef int int_type;
typedef int streamsize;
// ...
int printf( const char * fpFormat, ... );
inline int vprintf( const char * fpFormat, va_list fvaList )
{
if ( NULL != dpFileDescriptor )
{
if ( true == sdVerboseFlag && false == dSkipVerboseOutput)
vfprintf( dpVerboseFileDescriptor, fpFormat, fvaList );
return vfprintf( dpFileDescriptor, fpFormat, fvaList );
}
else
{
if ( NULL != dpOutputFuncPtr )
return (*dpOutputFuncPtr)( fpFormat, fvaList );
}
return 0;
}
// ....
virtual int_type overflow( int_type c = EOF );
virtual streamsize xsputn( const char_type *s, streamsize n );
// ....
};
int fileOutBuf::printf( const char * fpFormat, ... )
{
va_list lvaList;
int lRet;
va_start( lvaList, fpFormat );
if ( NULL != dpFileDescriptor )
{
if ( true == sdVerboseFlag && false == dSkipVerboseOutput)
vfprintf( dpVerboseFileDescriptor, fpFormat, lvaList );
lRet = vfprintf( dpFileDescriptor, fpFormat, lvaList );
}
else
{
if ( NULL != dpOutputFuncPtr )
lRet = (*dpOutputFuncPtr)( fpFormat, lvaList );
}
va_end( lvaList );
return lRet;
}
fileOutBuf::int_type fileOutBuf::overflow( int_type c )
{
if ( NULL != dpFileDescriptor )
{
if ( true == sdVerboseFlag && false == dSkipVerboseOutput)
fputc( c, dpVerboseFileDescriptor );
return fputc( c, dpFileDescriptor );
}
else
return fileOutBuf::printf( "%c", c );
}
fileOutBuf::streamsize fileOutBuf::xsputn( const fileOutBuf::char_type *s, fileOutBuf::streamsize n )
{
if ( NULL != dpFileDescriptor )
{
if ( true == sdVerboseFlag && false == dSkipVerboseOutput)
fwrite( s, sizeof( char_type ), n, dpVerboseFileDescriptor );
return fwrite( s, sizeof( char_type ), n, dpFileDescriptor );
}
else
return fileOutBuf::printf( "%*s", n, s );
}
нетривиальная капипаста или делаем из мухи слона.
ЗЫ после удаления всей капипасты, от класа в целом осталось что-то около 50 строк.
−84
-(void)shekinNow:(id)prev
{
float YI = rand() / (float)RAND_MAX;
NSArray *subv = [imageV subviews];
long index = (long)(rand()/(RAND_MAX/([subv count])));
SlotUnit *unit = [subv objectAtIndex:index];
if(unit == prev) {
[self shekinNow:prev];//рекурисия епт
return;
}
CGFloat gradus = ((YI*70/99)*100);
CGFloat radian = (gradus * M_PI / 180);
[unit setTag:0];
[UIView beginAnimations:@"one" context:unit];
[UIView setAnimationDidStopSelector:@selector(moveTuda:finished:context:)];
[UIView setAnimationDuration:anidur];
[UIView setAnimationDelegate:self];
[unit sendRotating:radian];
[UIView commitAnimations];
}
Вот так трансректально можно применять рекурсию.
+159
notify: function(evt) {
var state = this.prevFirst === null ? 'init' : (this.prevFirst < this.first ? 'next' : 'prev');
// Load items
this.callback('itemLoadCallback', evt, state);
if (this.prevFirst !== this.first) {
this.callback('itemFirstInCallback', evt, state, this.first);
this.callback('itemFirstOutCallback', evt, state, this.prevFirst);
}
if (this.prevLast !== this.last) {
this.callback('itemLastInCallback', evt, state, this.last);
this.callback('itemLastOutCallback', evt, state, this.prevLast);
}
this.callback('itemVisibleInCallback', evt, state, this.first, this.last, this.prevFirst, this.prevLast);
this.callback('itemVisibleOutCallback', evt, state, this.prevFirst, this.prevLast, this.first, this.last);
},
Популярный jQuery плагин - "jCarousel"
http://sorgalla.com/projects/jcarousel/
2 часа пытался реализовать инициализацию элементов "конвеера" до появления их на экране.
Но не тут-то было. Все 7 событий, регулирующих смену позиции - вызываются в один момент времени (при занятии элементом итогового положения).
• itemLoadCallback
• itemFirstInCallback
• itemFirstOutCallback
• itemLastInCallback
• itemLastOutCallback
• itemVisibleInCallback
• itemVisibleOutCallback
*this.callback сводится до fn.call()
+120
// LockDepth IS enum type!
if(LockDepth == DepthType.Infinity)
_depthElement.InnerText = this.__lockDepth.ToString();
else
_depthElement.InnerText = (string) System.Enum.Parse(LockDepth.GetType(), LockDepth.ToString(), true);
I got exception on line 5. The LockDepth is enum :)
+123
Рабочий стол > Контент > Структура сайта > Файлы и папки > bitrix > templates > .default > components > bitrix > sale.personal.order > main > bitrix > bitrix > sale.personal.order.detail > .default > lang > ru > template.php
Это чтобы в Битриксе поменять одну фитюльку.
+122
internal static class ExceptionHelper
{
public static void Throw()
{
Throw("Syntax error.");
}
public static void Throw(string msg)
{
new Exception(msg);
}
}
Просто и красиво! Архитектурное решение - архитектор жжет!
−119
private function pathfindingOfHell(begin:Point, to:Point, delPoint:Point):Boolean
{
var aop:Vector.<GameFigure> = new Vector.<GameFigure>();
aop.push(arr[begin.x][begin.y]);
var i:uint = 0;
while (i != count * 2 - 1)
{
for (var x_:int = -1;x_ < 2;x_++)
for (var y_:int = -1;y_ < 2;y_++)
{
if (x_ != 0 && y_ != 0)
{
var tP:Point = new Point(aop[aop.length - 1].x_pos + x_, aop[aop.length - 1].y_pos + y_);
var target:GameFigure = arr[tP.x][tP.y];
if (!target.isFreedom && !searchInArray(aop, target) && delPoint != tP)
{
aop.push(target);
if (target == arr[to.x][to.y])
{
aop = null;
return true;
}
}
}
}
i++;
}
aop = null;
return false;
}
+93
procedure _FinalizeArray(p: Pointer; typeInfo: Pointer; elemCount: Cardinal);
asm
CMP ECX, 0 { no array -> nop }
JE @@zerolength
PUSH EAX
PUSH EBX
PUSH ESI
PUSH EDI
MOV EBX,EAX
MOV ESI,EDX
MOV EDI,ECX
XOR EDX,EDX
MOV AL,[ESI]
MOV DL,[ESI+1]
CMP AL,tkLString
JE @@LString
CMP AL,tkWString
JE @@WString
CMP AL,tkVariant
JE @@Variant
CMP AL,tkArray
JE @@Array
CMP AL,tkRecord
JE @@Record
CMP AL,tkInterface
JE @@Interface
CMP AL,tkDynArray
JE @@DynArray
JMP @@error
@@LString:
CMP ECX,1
MOV EAX,EBX
JG @@LStringArray
CALL _LStrClr
JMP @@exit
@@LStringArray:
MOV EDX,ECX
CALL _LStrArrayClr
JMP @@exit
@@WString:
CMP ECX,1
MOV EAX,EBX
JG @@WStringArray
CALL _WStrClr
JMP @@exit
@@WStringArray:
MOV EDX,ECX
CALL _WStrArrayClr
JMP @@exit
@@Variant:
MOV EAX,EBX
ADD EBX,16
CALL _VarClr
DEC EDI
JG @@Variant
JMP @@exit
@@Array:
PUSH EBP
MOV EBP,EDX
@@ArrayLoop:
MOV EDX,[ESI+EBP+2+8]
MOV EAX,EBX
ADD EBX,[ESI+EBP+2]
MOV ECX,[ESI+EBP+2+4]
MOV EDX,[EDX]
CALL _FinalizeArray
DEC EDI
JG @@ArrayLoop
POP EBP
JMP @@exit
@@Record:
PUSH EBP
MOV EBP,EDX
@@RecordLoop:
{ inv: EDI = number of array elements to finalize }
MOV EAX,EBX
ADD EBX,[ESI+EBP+2]
Это так в дельфах автофинализация строк, длиннострок, вариантов, массивов, записей, интерфейсов, динмассивов реализована.
Вместо того, чтобы напрямую вызвать деструктор, там в рантайме (ПИЗДЕЦ, В РАНТАЙМЕ БЛЯТЬ!!!) проверяется тип поля, требующего финализацию и через три таких жопы наконец-то вызывается деструктор. И это, блять, я ещё создал свой TInterfacedObject, потому что иначе бы деструктор вызывался не через три жопы, а через четыре, и одна из них - системный вызов.
Да, это при включённой оптимизации всё, если чё.