- 1
- 2
- 3
Раз уж у нас пошла мода на анальные уроки - выложу, пожалуй, еще одну ссылку:
http://avtuh.ru/2010/04/09/delphi-dopolnitelnyj-potok-v-programme.html
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+120
Раз уж у нас пошла мода на анальные уроки - выложу, пожалуй, еще одну ссылку:
http://avtuh.ru/2010/04/09/delphi-dopolnitelnyj-potok-v-programme.html
На видео анальный учитель с сайта avpetuh.r доходчиво объясняет, как нужно обращаться из потока к компонентам формы.
Долой синхронизацию!!!
+152
public function actionAddnumber()
{
$model = $this->loadUser();
if(!$model->profile->mobile1) {$model->profile->mobile1=$_POST['number'];
}elseif(!$model->profile->mobile2){$model->profile->mobile2=$_POST['number'];
}elseif(!$model->profile->mobile3){$model->profile->mobile3=$_POST['number'];
}elseif(!$model->profile->mobile4){$model->profile->mobile4=$_POST['number'];
}elseif(!$model->profile->mobile5){$model->profile->mobile5=$_POST['number'];
}elseif(!$model->profile->mobile6){$model->profile->mobile6=$_POST['number'];
}else{ echo "Больше нет свободны номеров"; yii::app()->end(); }
echo " Сохранено";
$model->profile->save();
yii::app()->end();
}
Yii
+149
$finalTimeNews = '';
$timeNews = strftime('%#d %B', strtotime($article->created));
if($language->language === 'ru')
{
$months_pattern = explode('|', 'Январь|Февраль|Март|Апрель|Май|Июнь|Июль|Август|Сентябрь|Октябрь|Ноябрь|Декабрь');
$months_grammar = explode('|', 'Января|Февраля|Марта|Апреля|Мая|Июня|Июля|Августа|Сентября|Октября|Ноября|Декабря');
for($i = 0; $i <= 11; $i++)
{
//$months_grammar[0];
}
$art_date = explode(' ', $timeNews);
for($i = 0; $i <= 11; $i++)
{
if($art_date[1] === $months_pattern[$i])
{
$finalTimeNews = $art_date[0] . ' ' . $months_grammar[$i];
break;
}
}
unset($months_pattern, $months_grammar, $art_date);
}
Новобраней постарался
+126
import Data.Char
import Data.List
digitRangeToRegex :: Integer -> Integer -> String
digitRangeToRegex min max
| min == max = digit min : ""
-- uncomment if you want \d instead of [0-9]
-- | min == 0 && max == 9 = "\\d"
| min >= 10 || max <= 9 = "[" ++ rangeToStr (digit min) (digit max) ++ "]"
| otherwise = "[" ++ rangeToStr (digit min) '9' ++ rangeToStr 'a' (digit max) ++ "]"
where
rangeToStr min max
| min == max = min : ""
| otherwise = min : '-' : max : ""
digit d
| d >= 0 && d <= 9 = chr (ord '0' + fromIntegral d)
| d < 36 = chr (ord 'a' + fromIntegral d - 10)
numberRangeToRegex :: Integer -> Integer -> Integer -> String
numberRangeToRegex base min max
| min == 0 && max == 0 = "0"
| cmin == cmax = intercalate "|" $ map formatRanges $ step dmin dmax
| otherwise = intercalate "|" $
(map formatRanges $ step dmin (replicate cmin (base-1))) ++
(if cmin + 1 < cmax then [digitRangeToRegex 1 (base - 1) ++ digitRangeToRegex 0 (base-1) ++ formatCount cmin (cmax-2)] else []) ++
(map formatRanges $ step (1 : replicate (cmax-1) 0) dmax)
where
digits 0 = [0]
digits n = reverse $ map (`mod` base) $ takeWhile (>0) $ iterate (`div` base) n
dmin = digits min
dmax = digits max
cmin = length dmin
cmax = length dmax
step [] [] = [[]]
step (a:as) (b:bs) =
if a == b then
prepend a $ step as bs
else
(if zeroHead then [] else prepend a $ step as nines) ++
(if na > nb then [] else [(na, nb) : replicate (length as) (0, base-1)]) ++
(if nineTail then [] else prepend b $ step zeros bs)
where
suffixLen = length as
zeroHead = all (== 0) as
nineTail = all (== base-1) bs
na = if zeroHead then a else a+1
nb = if nineTail then b else b-1
zeros = replicate suffixLen 0
nines = replicate suffixLen (base-1)
prepend x = map ((x, x):)
formatRanges = concatMap formatGroup . group . dropWhile (== (0,0)) where
formatGroup [(min, max)] = digitRangeToRegex min max
formatGroup xs@((min, max) : _)
| min == max = concat $ replicate (length xs) $ digitRangeToRegex min max
| otherwise = digitRangeToRegex min max ++ "{" ++ show (length xs) ++ "}"
formatCount min max
| min == 1 && max == 1 = ""
| min == max = "{" ++ show min ++ "}"
| otherwise = "{" ++ show min ++ "," ++ show max ++ "}"
Генератор реджексов, проверяющих диапазон чисел. Говнецо то еще, причем не только в реализации и выхлопе, но и в самой идее :)
Пример: http://ideone.com/FzAmYd
+152
<? if(Yii::app()->controller->getCurrentModelName()!=="Home") { ?>
<div id="nav"><?php
$this->widget(
'Breadcrumbs',
array(
'links' => $this->breadcrumbs,
'homeLink' => false,
'separator' => ' » ',
)
);
?></div>
<h1 class="title">
<? if(Yii::app()->controller->getCurrentModelName()!=="Home") {?>
<? echo $this->getCurrentModel()->name ?>
<?
}
?>
<? if( $this->getCurrentModelName() === 'Product') {?>
<a href="javascript:window.print()" class="icon_print"></a>
<? } ?>
</h1>
<? } ?>
Фреймворки способствуют написанию хорошего кода, ага.
−158
sub get_number_from_possible_b64
{
my $s = shift;
my $rv = $s;
if( $s =~ /^\d+$/ )
{
$rv = int( $s );
} elsif( $s =~ /=$/ )
{
$rv = decode_base64( $rv );
}
return $rv;
}
Где-то есть что-то, что либо цифорка, либо строка, оканчивающаяся на знак равенства.
+147
<?php
// semantic schema
$s_path = 'http://schema.org/';
// [1] : global
$s_schema = $s_path . 'WebPage';
$base_schema = 'prefix="og: http://ogp.me/ns#"';
$body_schema = 'itemtype="'. $s_schema .'"' . ' itemscope';
// [2] : section
$b_schema = ( $is_front ) ? $s_path . 'Blog' : $s_path . 'Article';
$section_schema = 'itemtype="'. $b_schema .'"' . ' itemscope';
$canonical = ( $is_front ) ? 'http://www.domain.in' : 'http://www.domain.out' . $_SERVER['REQUEST_URI'];
// jquery
$libs = array(
'jQuery 1.4.2' => '...',
'jQuery Form' => '...'
);
// spider detect
$spider = ( is_robot() ) ? true : false;
$metter = ( arg(0) != 'admin' && !$is_admin && !$spider ) ? true : false;
$adm = ( arg(0) != 'admin' && !$is_admin ) ? true : false;
?>
индуcтриальненько … семантический шаблонизатор
+164
function ПечатьТоварногоЧека($com, $x) {
echodos(" [{$x['in']['НомерЗаказа']}] ");
$Сделка=$this->app->Документы->ЗаказПокупателя->НайтиПоНомеру($x['in']["НомерЗаказа"], $this->settime(time()));
d(__LINE__);
$Док2=$this->app->Документы->ПлатежноеТребованиеВыставленное->СоздатьДокумент();
$doctime=time();
$Док2->Дата=$this->settime($doctime);
d(__LINE__);
$Док2->Заполнить($Сделка);//Заполняем по счету
$ДД=$this->app->ЗаполнениеДокументов;
d(__LINE__);
$ДД->ЗаполнитьШапкуДокументаПоОснованию($Док2, $Сделка);
$this->app->УправлениеДенежнымиСредствами->ЗаполнитьПриходПоОснованию($Док2,
$Сделка, $this->app->ПараметрыСеанса->ТекущийПользователь);
d(__LINE__);
$this->app->УправлениеДенежнымиСредствами->ЗаполнитьРеквизитыРасчетногоДокумента($Док2,
$this->app->ПараметрыСеанса->ТекущийПользователь,
$this->app->Константы->ВалютаРегламентированногоУчета->Получить(),
$Док2->РасшифровкаПлатежа);
d(__LINE__);
$this->app->УправлениеДенежнымиСредствами->УстановитьСтатьюДДСПоУмолчанию(
$Док2->РасшифровкаПлатежа->Получить(0),
$Док2->ВидОперации);
d(__LINE__);
$Док2->ВидПлатежа = "Электронно";
$Док2->ИННПолучателя = $Док2->Организация->ИНН;
$Док2->КПППолучателя = $Док2->Организация->КПП;
$Док2->ИННПлательщика = $Док2->Контрагент->ИНН;
d(__LINE__);
$ДД=$Док2->РасшифровкаПлатежа->Получить(0);
$ДД->Сделка = $Сделка;
d(__LINE__);
$Док2->Комментарий=$Док2->Комментарий."*Создана с сайта по требованию клиента";
d(__LINE__);
echodos(" [\$x['in']['Сумма']={$x['in']['Сумма']}] ");
d(__LINE__);
echodos(" [\$Сделка->СуммаДокумента={$Сделка->СуммаДокумента}] ");
d(__LINE__);
echodos(" [\$Док2->СуммаДокумента={$Док2->СуммаДокумента}] ");
d(__LINE__);
Связь с 1С. файл на 5к строк подобного говна
+152
if ($val['postName'] == "СПб"){
$line['day2'] = array(" ");
foreach ($line as &$cell)
$cell[1].=" class=tdpresence style='background-color: #8ABB04;color: white !important;font-weight:bold;'";
}
Выделяем зелененьким определенные результаты поиска
+152
/* mootools javascript */
function animateCd() {
$$('.countdown').each(function(el) {
var inp = $(el).getElement('.ts');
var time = +$(inp).get('text')-1;
$(inp).set('text', time);
var _time = Math.abs(time);
var h = Math.floor(_time/3600);
var _h = (h < 10 ? '0' : '') + h;
var m = Math.floor(_time/60)-h*60;
var _m = (m < 10 ? '0' : '') + m;
var s = _time-(h*3600+m*60);
var _s = (s < 10 ? '0' : '') + s;
var timeStr = _h+' : '+_m+' : '+_s;
if ( time < 0 ) {
timeStr = '- '+timeStr;
}
$(el).getElement('.timer_cd').set('text', timeStr);
});
setTimeout(animateCd, 1000);
}
animateCd();
<!-- html -->
<div class="countdown">
<div class="timer_cd"></div>
<div style="display: none" class="ts">7200</div>
</div>
"Для создания таймера будем отталкиваться от стартового времени указанного в секундах, в примере 7200 (2 часа). Сначала из скрытого блока <div style="display: none" class="ts">7200</div> вытягиваем текущее значение счетчика в секундах, декрементируем его и возвращаем туда новое значение. Потом разбиваем значение счетчика на часы, минуты и секунды, при этом формируя значения в двухзначном формате. Собираем все в кучу и вставляем полученную строку в блок <div class="timer_cd"></div>. Данную операцию повторяем раз в секунду setTimeout(animateCd, 1000);."
http://webbystep.ru/all-posts/16-js-clock/