- 1
- 2
- 3
- 4
- 5
- 6
if (OnCreated != null)
{foreach (EventHandler<CreatedEventArgs> handler in OnCreated.GetInvocationList())
{
handler(this, args);
}
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+121
if (OnCreated != null)
{foreach (EventHandler<CreatedEventArgs> handler in OnCreated.GetInvocationList())
{
handler(this, args);
}
}
человек слышал про GetInvocationList но когда его надо применять не понял - зато можно написать 4 строки вместо одной.
В данном случае аналогом будет простой вызов OnCreated().
+113
[Localizable(false)]
internal abstract class ClassAIndex : IDisposable
{
public static ClassAIndex Run()
{
ClassBIndex index = new ClassBIndex();
index.initialize();
return index;
}
// еще методы - абстрактные
}
internal class ClassBIndex : ClassAIndex
{
// тут имплементация
}
я заменил названия у ClassA &B. Надо ли упомянать что другого наследника от ClassA нет и не предвидится?
Ну а localizable атрибут со значением по умолчанию у простого класса (не Component) это уже на сладкое.
+127
#include <stdio.h>
#include <math.h>
double math_average (double values[2][3], int rows);
double dispers (double values[2][3], int rows);
void main() {
int rows = 2;
double values[2][3] = {(1,2),(2,4), (4,8)};
double av = math_average (values, rows);
double di = dispers (values, rows);
}
/* **********************************************
Srednee Arifmeticheskoe
@values[][0]: vremya otpravki paketa;
@values[][1]: vremya priema paketa
@values[][2]: raznitsa vremeni priema i otpravki
@rows: kolichestvo strok
********************************************** */
double math_average (double* values[2][3], int rows){
int count = rows;
double sum = 0;
while (count){
*values[count][2] = *values[count][0] - *values[count][1];
sum += *values[count][2];
count--;
}
return (sum / rows);
}
/* ***********************************
Dispersiya
D= sqrt (sum((sr_arifm - a[i])^2))
@values[][0]: vremya otpravki paketa;
@values[][1]: vremya priema paketa
@values[][2]: raznitsa vremeni priema i otpravki
@rows_sum: kolichestvo strok
*/
double dispers (double* values[2][3], int rows){
int count = rows;
double sum = 0;
double math_av = math_average(values, rows);
for (int i = 0; i < count; i++){
sum += pow((math_av - *values[i][2]), 2);
}
return (sqrt(sum));
}
+97
program Project42;
{$APPTYPE CONSOLE}
uses
SysUtils, Math;
const
Radix = 10;
function čòũʼnť(N: Integer): Integer;
begin
Result := 0;
while N > 0 do
begin
N := N div Radix;
Inc(Result);
end;
end;
function count(N: Integer): Integer;
begin
// Result := Ceil(LogN(Radix, N)); { slow! }
Result := Ceil(Log10(N));
end;
function rdtsc: Int64;
asm
rdtsc
end;
var
I: Integer;
t0: Int64;
const
N = 100500;
begin
try
Assert((count(42) = čòũʼnť(42)) and (count(100500) = čòũʼnť(100500)));
t0 := rdtsc;
for I := 1 to N do
čòũʼnť(Random(MaxInt + 1));
Writeln('naïve: ', rdtsc - t0, ' ticks');
t0 := rdtsc;
for I := 1 to N do
count(Random(MaxInt + 1));
Writeln('prőper: ', rdtsc - t0, ' ticks');
Writeln(StringOfChar('-', 42));
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
if DebugHook <> 0 then
begin
Write('any big key to exit...');
Readln;
end;
end.
{ http://imgs.xkcd.com/comics/haiku_proof.png :-P }
матан > метан
O(1) > O(N)
логарифм > байтоёбства с делением
+161
$(document).ready(function () {
$("#GridView1 INPUT[type='checkbox']").click(
function () {
var colIndex = $(this).parent().parent().prevAll().length;
$('.' + $(this).parent().attr("class") + ' input[type="checkbox"]').each(function () {
if ($(this).parent().parent().prevAll().length == colIndex)
$(this).attr('checked', false);
});
$(this).attr('checked', true);
});
});
взаимоисключающие чекбоксы в колонках таблицы
+141
<input type="hidden" id="id1" name="id1" value="someVal" readonly="readonly" style="background-color:Transparent;border:none;" />
Стилизованный readonly hidden
+147
var n = Math.abs(((date2 - date1) / 86400000) + 1);
var frac = n - Math.floor(n);
if (frac > 0.5) {
n = Math.ceil(n);
} else if (frac < 0.5 && frac.toPrecision(2) != 0) {
n = Math.floor(n);
n--;
}
n++;
Мой говнокод.
Задача: найти количество дней между двумя датами, включая сами эти даты. Время в датах сброшено в 0
Фишка в том "(date2 - date1) / 86400000) + 1", не работает когда есть перевод часов между двумя датами.
И вот такое говно я написал, которое по некоторым дням НЕ РАБОТАЕТ.
переписал вот так:
var n = Math.abs(date2 - date1);
n /= 3600000;
var mod = n % 24;
if (mod == 23) {
n++;
} else if (mod == 1) {
n--;
}
n /= 24;
n++;
теперь не важно сколько переводов часов прошло между датами: 0, 1, 2 или 5.
По поводу говнокода:
За такой frac на авторе надо зарабатывать фраг!
Oleg_quadro: автор, убей себя головой о клаву:
Oleg_quadro: "vb fgrbfvgr bgfvrt rtuijnikjikni56trg5rt6g45t6rgyh hnjunh ujuuuuuuuuuuuuuuuuuuuy"
−196
....
SELECT * BULK COLLECT INTO dbg FROM debug_codes;
FOR i IN 1..dbg.COUNT LOOP
....
PL/SQL
Вся таблица запихивается в коллекцию.
2 миллиона строк — серверу плохо, скрипт работает около 8 часов.
после исправления (в коллекцию вставляются строки пачками по 10 000 штук) стал работать полчаса.
+163
function GetPath(path){
return path;
}
Коротко и ясно! Единственный метод в модуле.
+160
TINY.accordion=function(){
function slider(n){this.n=n; this.a=[]}
slider.prototype.init=function(t,e,m,o,k){
var a=T$(t), i=s=0, n=a.childNodes, l=n.length; this.s=k||0; this.m=m||0;
for(i;i<l;i++){
var v=n[i];
if(v.nodeType!=3){
this.a[s]={}; this.a[s].h=h=T$$(e,v)[0]; this.a[s].c=c=T$$('div',v)[0]; h.onclick=new Function(this.n+'.pr(0,'+s+')');
if(o==s){h.className=this.s; c.style.height='auto'; c.d=1}else{c.style.height=0; c.d=-1} s++
}
}
this.l=s
};
slider.prototype.pr=function(f,d){
for(var i=0;i<this.l;i++){
var h=this.a[i].h, c=this.a[i].c, k=c.style.height; k=k=='auto'?1:parseInt(k); clearInterval(c.t);
if((k!=1&&c.d==-1)&&(f==1||i==d)){
c.style.height=''; c.m=c.offsetHeight; c.style.height=k+'px'; c.d=1; h.className=this.s; su(c,1)
}else if(k>0&&(f==-1||this.m||i==d)){
c.d=-1; h.className=''; su(c,-1)
}
}
};
function su(c){c.t=setInterval(function(){sl(c)},20)};
function sl(c){
var h=c.offsetHeight, d=c.d==1?c.m-h:h; c.style.height=h+(Math.ceil(d/5)*c.d)+'px';
c.style.opacity=h/c.m; c.style.filter='alpha(opacity='+h*100/c.m+')';
if((c.d==1&&h>=c.m)||(c.d!=1&&h==1)){if(c.d==1){c.style.height='auto'} clearInterval(c.t)}
};
return{slider:slider}
}();
http://installauto.ru/ajax/script.js
чья-то реализация аккордиона. и почему же оно хреново в ИЕ пашет?