-
+125
- 1
- 2
- 3
На картинке — классическая древнегреческая статуя «Самсон, поражающий дубиной Бага, покровителя говнокода».
Древнегреческие программисты считали, что подсчет ссылок — универсальный инструмент, избавляющий от всех ошибок.
Сейчас мы знаем, что древние ошибались.
http://habrastorage.org/storage3/036/678/6e4/0366786e4530108f26e3ae9b8551bbad.jpg
http://habrahabr.ru/company/ifree/blog/202190/
Что имеет ввиду автор и почему он вообще гонит на RC?
LispGovno,
20 Ноября 2013
-
+11
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
void run(std::map<QString, QString> params,QTextStream &os) const
{
static int ko=0;
ko++;
//r->method_="GET";
srand(time(0));// без этого числа будут одинаковые
QString randomData="["+ (QString::number(ko))+" , "+ (QString::number(rand()%100))+ "]";
//int index= params["idChpu"].toInt();
std::list<QString> idsparams=getIdsDataRequest(params["dataRequestIds"]);
QString dataInIds="";
//for (auto idParam=idsparams.begin();idParam!=idsparams.end();idParam++)
for (const auto &idParam : idsparams)
{
qDebug()<<idParam;
auto kokoFunction=[](const std::function<QString()> & function){QString date; for(auto i=0 ;i<10;i++){date+= function()+QString(" , ");} ; return date;};
if (idParam==QString("id0"))
{dataInIds=dataInIds+QString("\"")+(idParam)+QString("\"")+QString(":[")+kokoFunction([](){return QString::number((ko++));})+QString::number((ko++))+QString("],");}
else
{dataInIds=dataInIds+QString("\"")+(idParam)+QString("\"")+QString(":[")+kokoFunction([](){return QString::number(rand()%100);})+QString::number(rand()%100)+QString("],");}
};
QString jsonData=QString("{")+
QString("\"idLastKey\":\"10\",")+dataInIds+QString("}");
qDebug()<<"TgetDataOnRequest run</h1>";
os << "HTTP/1.0 200 Ok\r\n"
"Content-Type: text/html; charset=\"windows-1251\"\r\n"
"\r\n"<<jsonData<<//randomData<<
"\n";
// << QDateTime::currentDateTime().toString() << connectionSettings.getUrl()<<"\r\n"<<connectionSettings.getViewRequest()<<"\n";
}
Надеюсь это временный код, но очень сомневаюсь.
laMer007,
20 Ноября 2013
-
+16
- 1
- 2
const TReferenceToConstantStringSlice TFileTransfer::Beginer="<HTML><HEAD><FONT SIZE=6><A HREF='/'>Конфиденциально</A></FONT SIZE></HEAD><BODY><BR>";
const TReferenceToConstantStringSlice TFileTransfer::Ender="</BODY></HTML>";
Конфиденциально - это я сейчас стер.
laMer007,
20 Ноября 2013
-
+153
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
//поменяет src картинки на cid и вернет массив с дополнительными секциями тела письма
function convert_image_src($text, &$new_section_arr){
global $_SERVER;
//расчленяем текст на куски по img
$new_src_arr=array();//массив путей к картинкам
$arrTmp=explode("<img", $text);
$explode_str=array("\\\"", "\"", "'");
for($i=1; $i<sizeof($arrTmp); $i++){
$arrTmp2=explode("src=", $arrTmp[$i]);
for($j=1; $j<sizeof($arrTmp2); $j++){
for($k=0; $k<sizeof($explode_str); $k++){
if(substr($arrTmp2[$j], 0, strlen($explode_str[$k]))==$explode_str[$k]){
$arrTmp3=explode($explode_str[$k], $arrTmp2[$j]);
//считать можем только картинки с того же сервера - остальные побоку
if(ref_is_server($arrTmp3[1])){
$old_src_arr[]=$arrTmp3[1];
$new_src_arr[]=convert_url_2_full_server($arrTmp3[1]);
}
}
}
}
}
//теперь формируем новые секции
for($i=0; $i<sizeof($new_src_arr); $i++){
$file_arr=get_file_content($new_src_arr[$i], true);
if(strlen($file_arr[0])>0){
//запоминаем секцию
$new_section_arr[]=$file_arr[0];
//заменяем ссылку на cid
$text=str_replace($old_src_arr[$i], "cid:".$file_arr[1], $text);
}
}
return $text;
}
Супер функция, которая парсит картинки в тексте и заменяет на, как я понял, новые ссылки уже на собственном сервере.
Пока пытался разобраться, наступил когнитивный диссонанс.
oooZinka,
20 Ноября 2013
-
−165
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
Запрос.Текст = ""
//...
ГДЕ
ВЫБОР
КОГДА ЕСТЬNULL(ВТМоделиПоставщика.КодМоделиПоставщика, "") = ""
ТОГДА 0
ИНАЧЕ 1
КОНЕЦ = 0
//...
Результат = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = Результат.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Если СтрДлина(ВыборкаДетальныеЗаписи.КодМоделиПоставщика) <> 0 Тогда
//...
КонецЕсли;
КонецЦикла;
Масло масляное. Захочешь нарочно такое придумать - не получится.
rull9ss,
20 Ноября 2013
-
+153
- 1
http://froland.ru/samodel/myart_js1.html
Я хотел бы это развидеть.
nsauk,
20 Ноября 2013
-
+138
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
// прога у нас многопоточная, данный код выполняется в потоке. Создание и настройка Idhttp прописана в конструкторе потока.
while not terminated do
begin
synchronize(ReadProxy);
if ThreadExit then break;
try
memorystream.Position:=0;
try
idHTTP.Get(linknew,memorystream);
idhttp.disconnect;
except
idhttp.Disconnect;
end;
finally
temp:=memorystreamtostring(memorystream); // если этого не сделать, память будет утекать.
memorystream.clear;
end;
Я нашел способ предотвратить утечки памяти в Indy, при Get-запросе -
многие грешат на Indy, мол, нестабильная она в потоках, провоцирует утечки.
Оказалось, что дело-то в tmemorystream, я его маму бля ебал!!!
Stertor,
19 Ноября 2013
-
−168
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
Процедура ПараметрНачалоВыбора(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка=Ложь;
ПараметрВладелец=Справочники.ПараметрыНоменклатуры.ПустаяСсылка();
ТипМетаданных = Метаданные.НайтиПоТипу(ТипЗнч(Элемент.Значение));
ОткрываемаяФорма = ПолучитьФорму(ТипМетаданных.ПолноеИмя()+".ФормаВыбора");
Отборы = Новый Структура("ТипПараметра,Подчинен",ВидНоменклатуры[Элемент.Имя],ПараметрВладелец);
Для Каждого ЭлементСтруктуры из Отборы Цикл
ЭлементОтбора = ОткрываемаяФорма.Отбор.Найти(ЭлементСтруктуры.Ключ);
Если Не ЭлементОтбора = Неопределено Тогда
ЭлементОтбора.Установить(ЭлементСтруктуры.Значение);
КонецЕсли;
КонецЦикла;
ОткрываемаяФорма.НачальноеЗначениеВыбора = Элемент.Значение;
ОткрываемаяФорма.ОткрытьМодально();
ЭтотОбъект[Элемент.Имя] = ОткрываемаяФорма.ТекущийЭлемент.ТекущаяСтрока;
ПараметрПриИзменении(Элемент);
КонецПроцедуры
Процедура НачалоВыбора в конфе одного из клиентов. Что-то смущает, но не могу понять что.
rull9ss,
19 Ноября 2013
-
+10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
void operator()()
{
for (std::list<SmartPointer<FunctorTriggerParent > >::iterator it = _listFunctorOnTrigger.begin(); it != _listFunctorOnTrigger.end(); ++it)
{
(*it)->operator ()();
}
};
laMer007,
18 Ноября 2013
-
+154
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
class Icon extends IconBuilder
{
public static function create($type, $white = false)
{
$class = __CLASS__;
return new $class($type, $white);
}
public function getType()
{
return $this->_type;
}
public function getWhite()
{
return $this->_white;
}
}
Код выдернут из Bootstrap.PHP http://allking.ru/bootstrap.php/
Особое внимание уделить функции create и константе __CLASS__
Вопрос: почему не обойтись просто self? В чем магия?
З.Ы.: Пока писал, нашел в доках, что "волшебная" константа содержит так же пространство имен.
Извиняюсь, что не узнал об этом раньше.
Но я все же наложу сюда, с вопросом, даже учитывая всю эту информацию, почему мы не можем обойтись способами, исключающими использование константы?
(все равно получается говнокод, хоть и работающий)
oooZinka,
18 Ноября 2013