- 1
- 2
- 3
- 4
- 5
//.....
$post['avatar'] = @$imgpath;
//.....
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
//.....
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+156
//.....
$post['avatar'] = @$imgpath;
//.....
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
//.....
"файлы не загружаются, не знаю в чем проблема"
+995
Для Каждого ТекСтрокаТовары Из ЭтотОбъект.Товары Цикл
//Товары в резерве на складах
Если ЗначениеЗаполнено(ЭтотОбъект.ЗаказПокупателя) Тогда
ЗапросРезерв = Новый Запрос;
ЗапросРезерв.УстановитьПараметр("Период", КонецДня(ЭтотОбъект.Дата));
ЗапросРезерв.УстановитьПараметр("Склад", ЭтотОбъект.Склад);
ЗапросРезерв.УстановитьПараметр("Номенклатура", ТекСтрокаТовары.Номенклатура);
ЗапросРезерв.УстановитьПараметр("Цвет", ТекСтрокаТовары.Цвет);
ЗапросРезерв.УстановитьПараметр("Регистратор", ЭтотОбъект.ЗаказПокупателя.Ссылка);
ЗапросРезерв.Текст = "ВЫБРАТЬ
| ТоварыВРезервеНаСкладах.Номенклатура,
| isnull(ТоварыВРезервеНаСкладах.Количество, 0) КАК Количество,
| isnull(ТоварыВРезервеНаСкладах.Размер42, 0) КАК Размер42,
| isnull(ТоварыВРезервеНаСкладах.Размер44, 0) КАК Размер44,
| isnull(ТоварыВРезервеНаСкладах.Размер46, 0) КАК Размер46,
| isnull(ТоварыВРезервеНаСкладах.Размер48, 0) КАК Размер48,
| isnull(ТоварыВРезервеНаСкладах.Размер50, 0) КАК Размер50,
| isnull(ТоварыВРезервеНаСкладах.Размер52, 0) КАК Размер52,
| isnull(ТоварыВРезервеНаСкладах.Размер54, 0) КАК Размер54,
| isnull(ТоварыВРезервеНаСкладах.Размер56, 0) КАК Размер56,
| isnull(ТоварыВРезервеНаСкладах.Размер58, 0) КАК Размер58,
| isnull(ТоварыВРезервеНаСкладах.Размер60, 0) КАК Размер60
|ИЗ
| РегистрНакопления.ТоварыВРезервеНаСкладах КАК ТоварыВРезервеНаСкладах
|ГДЕ
| ТоварыВРезервеНаСкладах.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
| ТоварыВРезервеНаСкладах.Период <= &Период
| И ТоварыВРезервеНаСкладах.Регистратор = &Регистратор
| И ТоварыВРезервеНаСкладах.Склад = &Склад
| И ТоварыВРезервеНаСкладах.Номенклатура = &Номенклатура
| И ТоварыВРезервеНаСкладах.Цвет = &Цвет";
ТЗРезерв = ЗапросРезерв.Выполнить().Выгрузить();
Если ЗапросРезерв.Выполнить().Пустой() = Истина Тогда
Иначе
ЗапросСнятие = Новый Запрос;
ЗапросСнятие.УстановитьПараметр("Период", КонецДня(ЭтотОбъект.Дата));
ЗапросСнятие.УстановитьПараметр("Склад", ЭтотОбъект.Склад);
ЗапросСнятие.УстановитьПараметр("Номенклатура", ТекСтрокаТовары.Номенклатура);
ЗапросСнятие.УстановитьПараметр("Цвет", ТекСтрокаТовары.Цвет);
ЗапросСнятие.УстановитьПараметр("ДокументРезерва", ЭтотОбъект.ЗаказПокупателя.Ссылка);
ЗапросСнятие.Текст = "ВЫБРАТЬ
| ТоварыВРезервеНаСкладах.Номенклатура,
| isnull(ТоварыВРезервеНаСкладах.Количество, 0) КАК Количество,
| isnull(ТоварыВРезервеНаСкладах.Размер42, 0) КАК Размер42,
.....
| isnull(ТоварыВРезервеНаСкладах.Размер60, 0) КАК Размер60
|ИЗ
| РегистрНакопления.ТоварыВРезервеНаСкладах КАК ТоварыВРезервеНаСкладах
|ГДЕ
| ТоварыВРезервеНаСкладах.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
| И ТоварыВРезервеНаСкладах.ДокументРезерва = &ДокументРезерва
| И ТоварыВРезервеНаСкладах.Период = &Период
| И ТоварыВРезервеНаСкладах.Склад = &Склад
| И ТоварыВРезервеНаСкладах.Номенклатура = &Номенклатура
| И ТоварыВРезервеНаСкладах.Цвет = &Цвет";
ТЗСнятие = ЗапросСнятие.Выполнить().Выгрузить();
//Товары в резерве на складах
Движение = Движения.ТоварыВРезервеНаСкладах.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Склад = ЭтотОбъект.Склад;
Движение.Номенклатура = ТекСтрокаТовары.Номенклатура;
Движение.ДокументРезерва = ЭтотОбъект.ЗаказПокупателя.Ссылка;
Движение.Цвет = ТекСтрокаТовары.Цвет;
//42
Если ТЗРезерв.Итог("Размер42") - ТЗСнятие.Итог("Размер42") > 0 Тогда
Если ТЗРезерв.Итог("Размер42") - ТЗСнятие.Итог("Размер42") > ТекСтрокаТовары.Количество Тогда
Движение.Размер42 = ТекСтрокаТовары.Размер42;
Иначе
Движение.Размер42 = ТЗРезерв.Итог("Размер42") - ТЗСнятие.Итог("Размер42");
КонецЕсли;
КонецЕсли;
...
//И так до 60го размера
Нашел у себя эту простыню. Чтобы вычислить остатки по резерву - делается запрос по движения со знаком плюс, потом запрос с движениями по минус.
Далее все это дело выгружается в две таблицы значений и высчитывается разность колонок. Вместо простого запроса по регистру остатков) Ну и много чего интересного)
+1000
// Array below is for faster processing of variable length fields with ascii length.
// Varbuut sho var arii initcializeet dinamiski.
char an[1000][3] =
{
{'0','0','0'},{'0','0','1'},{'0','0','2'},{'0','0','3'},{'0','0','4'},{'0','0','5'},{'0','0','6'},{'0','0','7'},{'0','0','8'},{'0','0','9'},
{'0','1','0'},{'0','1','1'},{'0','1','2'},{'0','1','3'},{'0','1','4'},{'0','1','5'},{'0','1','6'},{'0','1','7'},{'0','1','8'},{'0','1','9'},
{'0','2','0'},{'0','2','1'},{'0','2','2'},{'0','2','3'},{'0','2','4'},{'0','2','5'},{'0','2','6'},{'0','2','7'},{'0','2','8'},{'0','2','9'},
{'0','3','0'},{'0','3','1'},{'0','3','2'},{'0','3','3'},{'0','3','4'},{'0','3','5'},{'0','3','6'},{'0','3','7'},{'0','3','8'},{'0','3','9'},
// 84 lines deleted
{'8','8','0'},{'8','8','1'},{'8','8','2'},{'8','8','3'},{'8','8','4'},{'8','8','5'},{'8','8','6'},{'8','8','7'},{'8','8','8'},{'8','8','9'},
{'9','0','0'},{'9','0','1'},{'9','0','2'},{'9','0','3'},{'9','0','4'},{'9','0','5'},{'9','0','6'},{'9','0','7'},{'9','0','8'},{'9','0','9'},
// 6 lines deleted
{'9','7','0'},{'9','7','1'},{'9','7','2'},{'9','7','3'},{'9','7','4'},{'9','7','5'},{'9','7','6'},{'9','7','7'},{'9','7','8'},{'9','7','9'},
{'9','8','0'},{'9','8','1'},{'9','8','2'},{'9','8','3'},{'9','8','4'},{'9','8','5'},{'9','8','6'},{'9','8','7'},{'9','8','8'},{'9','8','9'}
};
int ll = f->cfg.len_len;
long dl = f->data_len;
// Prepare length
if ( NULL == dst )
{
dst_len = f->data_len + ll + 1 ;
dst = (char*) malloc ( dst_len );
}
else
//if( dst_len < ll + dl )
if( dst_len < (unsigned) (ll + dl) )
{
// TO DOO - error should be processed
break;
}
long i2;
if ( ll < 2 )
{
dst[0]=an[dl][2];
}
else if ( ll < 3 )
{
dst[0]=an[dl][1];
dst[1]=an[dl][2];
}
else if ( ll < 4 )
{
dst[0]=an[dl][0];
dst[1]=an[dl][1];
dst[2]=an[dl][2];
}
else if ( ll < 5 )
{
i2 = dl / 1000;
dst[0]=an[i2][2];
i2 = dl % 1000;
dst[3]=an[i2][2];
dst[2]=an[i2][1];
dst[1]=an[i2][0];
}
else if ( ll < 6 )
{
i2 = dl / 1000;
dst[0]=an[i2][1];
dst[1]=an[i2][2];
i2 = dl % 1000;
dst[4]=an[i2][2];
dst[3]=an[i2][1];
dst[2]=an[i2][0];
}
else
{
// General case
for ( int k = ll ; k > 0 ; k-- )
{
dst[k-1] ='0' + dl % 10;
dl/=10;
}
}
dst[dl]=0;
This is a faster version of itoa() or sprintf(str,"%d",value)...
Unfortunately it has a bug - lines of array with numbers 890-899 and 990-999 is missing.
+157
public function getSaleDepartment()
{
$_linkToDepLabel = '';
switch ($this->getfs_sale_department()) {
case '0':
$_linkToDepLabel = $this->getBaseUrl();
$_linkToDepLabel .= 'media/flash_sales/saledepartment/1.png';
break; //Moda
case '1':
$_linkToDepLabel = $this->getBaseUrl();
$_linkToDepLabel .= 'media/flash_sales/saledepartment/2.png';
break; //Belleza
case '2':
$_linkToDepLabel = $this->getBaseUrl();
$_linkToDepLabel .= 'media/flash_sales/saledepartment/3.png';
break; //Novia
case '3':
$_linkToDepLabel = $this->getBaseUrl();
$_linkToDepLabel .= 'media/flash_sales/saledepartment/4.png';
break; //Ocio
case '4':
$_linkToDepLabel = $this->getBaseUrl();
$_linkToDepLabel .= 'media/flash_sales/saledepartment/5.png';
break; //Deporte
case '5':
$_linkToDepLabel = $this->getBaseUrl();
$_linkToDepLabel .= 'media/flash_sales/saledepartment/6.png';
break; //Familia
case '6':
$_linkToDepLabel = $this->getBaseUrl();
$_linkToDepLabel .= 'media/flash_sales/saledepartment/7.png';
break; //Hogar
case '7':
$_linkToDepLabel = $this->getBaseUrl();
$_linkToDepLabel .= 'media/flash_sales/saledepartment/8.png';
break; //Viaje
case '8':
$_linkToDepLabel = $this->getBaseUrl();
$_linkToDepLabel .= 'media/flash_sales/saledepartment/9.png';
break; //Moda
case '9':
$_linkToDepLabel = $this->getBaseUrl();
$_linkToDepLabel .= 'media/flash_sales/saledepartment/10.png';
break; //Belleza
case '10':
$_linkToDepLabel = $this->getBaseUrl();
$_linkToDepLabel .= 'media/flash_sales/saledepartment/11.png';
break; //Novia
case '11':
$_linkToDepLabel = $this->getBaseUrl();
$_linkToDepLabel .= 'media/flash_sales/saledepartment/12.png';
break; //Ocio
case '12':
$_linkToDepLabel = $this->getBaseUrl();
$_linkToDepLabel .= 'media/flash_sales/saledepartment/13.png';
break; //Deporte
default:
$_linkToDepLabel = '';
break;
}
return $_linkToDepLabel;
}
ппц
+153
$sql_query_result = mysql_query("select * from Organisations
inner join Goods on (Organisations.ID = Goods.OrgID)
where 1");
while($result_string = mysql_fetch_array($sql_query_result)) { array_push ($search_array, $result_string[3]); }
for($i=0;$i<=count($search_array);$i++)
{
if(eregi($search_string, $search_array[$i]))
{
array_push($search_matches, $search_array[$i]);
}
}
поиск в интернет магазине:
13000 записей
в строке 15 полей
в каждом строке есть 3 BLOB
2 с текстом и одно с картинкой товара
а жаловались что база тормозит
+150
<div style="display: none;">
<input type="hidden" name="_wpcf7" value="251" />
<input type="hidden" name="_wpcf7_version" value="3.1.1" />
<input type="hidden" name="_wpcf7_unit_tag" value="wpcf7-f251-t1-o1" />
<input type="hidden" name="_wpnonce" value="5963830b40" />
</div>
Плагин Contact Form 7 для Wordpress
−132
Попытка
Если Число(ДисконтнаяКарта.НомерКарты) >= 111065251 И Число(ДисконтнаяКарта.НомерКарты) <= 111065453 И ПревышенаСуммаДисконта() Тогда
Отказ = Истина;
Сообщить("Сумма дисконта превышает оставшийся лимит по карте!",СтатусСообщения.Важное);
Возврат
КонецЕсли;
Исключение
КонецПопытки;
+133
// for cdio:
#include <cdio.h>
#include <cdio_unconfig.h> # remove *all* symbols libcdio defines
// Add back in the ones you want your program
#include <config.h>
But now what about the problem that there are common preprocessor symbols in config_cdio.h that an application may want to define in a different manner, like PACKAGE_NAME?
For this, there is yet another header, <cdio/cdio_unconfig.h>.
+109
private IEnumerable<CharacteristicValue> GetCharacteristicValues(IQueryable<CharacteristicValue> allCharacteristicValues, int characteristicId)
{
var characteristicValues = new CharacteristicValue[userIds.Length];
for (var i = 0; i < userIds.Length; i++)
{
characteristicValues[i] = allCharacteristicValues.FirstOrDefault(cv => cv.UserId == userIds[i] && cv.CharacteristicId == characteristicId); // Todo: Try to replace with a single query.
}
return characteristicValues;
}
Драсьте, нашёл в коде такую вот какашку. Как видите параметр allCharacteristicsValues реализует интерфейс IQuarable из EF. То бишь каждый раз, когда будет вызываться метод FirstOrDefault будет делаться запрос к базе. В идеале это должно было бы выглядеть так:
var characteristicValues = allCharacteristicValues.Where(cv => cv.CharacteristicId == characteristicId && userIds.Contains(cv.UserId));
Но при такой реализации размер масива пользователей и значение может разниться:
Values:
val1
val2
val3
Users:
1
2
3
4
5
Для первого же варианта результат будет выглядеть так:
Values:
val1
val2
val3
null
null
Users:
1
2
3
4
5
Собственно всё )))) Надеюсь подсоветуете чего-нибудь хорошего ;)
+158
<?php
class User
{
protected $_user_id;
protected $_user_email;
protected $_user_password;
public function __construct($user_id)
{
$user_record = self::_getUserRecord($user_id);
$this->_user_id = $user_record['id'];
$this->_user_email = $user_record['email'];
$this->_user_password = $user_record['password'];
}
public function __get($value) {}
public function __set($name, $value) {}
private static function _getUserRecord($user_id)
{
$user_record = array();
switch($user_id) {
case 1:
$user_record['id'] = 1;
$user_record['email'] = '[email protected]';
$user_record['password'] = 'i like croissants';
break;
case 2:
$user_record['id'] = 2;
$user_record['email'] = '[email protected]';
$user_record['password'] = 'me too!';
break;
case 'error':
throw new Exception('Ошибка библиотеки SQL!');
break;
}
return $user_record;
}
}
?>
PHP исключения...