- 1
- 2
- 3
- 4
if (Convert.ToBoolean(ViewState["IsProgram"]) != null && Convert.ToBoolean(ViewState["IsProgram"]))
{
// do work
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+121
if (Convert.ToBoolean(ViewState["IsProgram"]) != null && Convert.ToBoolean(ViewState["IsProgram"]))
{
// do work
}
Это взорвало мой мозг...
+161
$myPid = getmypid();
$state = shell_exec("ps -o \"%p:%P:%c;\"");
$psPid = false;
$processes = array();
$linesArr = explode(";", $state);
foreach($linesArr as $line)
{
$pProp = explode(":", $line);
$processes[trim($pProp[0])] = $pProp;
if($pProp[1] == $myPid)
{
$psPid = $pProp[0];
}
}
//checking pids of processes
if($psPid !== false)
{
if(key_exists($psPid - 1,$processes) && preg_match("/micq/i",$processes[$psPid - 1][2]))
{
$sessionConfig->addPid($psPid - 1);
}
if(key_exists($psPid - 2,$processes) && preg_match("/tail/i",$processes[$psPid - 2][2]))
{
$sessionConfig->addPid($psPid - 2);
}
}
Вот и этот код, про который я рассказывал в комментарии к #4609
+164
function runIcqBot($username, $password) {
$command = "nohup php-fcgi process.php ". $username ." ". $password ." > logs/".$username.".log &";
shell_exec($command);
}
И похеру на безопасность... Зато ICQ-клиент прямо в браузере!
+156
char* setw_c(int width, char* str, const char align){
width = width - strlen(str) / 2;
if (align == 'l'){
std::cout << str;
if (width > 0)
for (int i = 0; i < width - 1; i++)
std::cout << " ";
return " ";
} else {
if (width > 0)
for (int i = 0; i < width; i++)
std::cout << " ";
return str;
}
}
вот так коряво я решил проблему с setw(), кириллицей и utf-8.
strlen() - чуть ли не единственная функция из cstring, более-менее нормально работающая с кириллицей в utf-8, да и то возвращает не реальную длину, а в два раза бОльшую, т.к. в utf-8 символ кириллицы занимает 2 байта, вместо одного, чего эта функция не учитывает.
−180
select nvl(count(*), 0) from ...
Вот такое увидел.
Защита от нежданчика.
+145
public function redirect($url) {
header('Location: '.$url);
echo '<script>document.location.href = "'.$url.'"</script>';
die('<a href="'.$url.'"><h2>Нажмите сюда. У вас ебанутый браузер.</h2></a>');
}
+145
$(function(){
oCatalog=new Catalog();
});
Catalog = function (){
function test (data){
alert(data);
}
}
+163
std::vector<double> WBuffer;
std::vector<double> CleanWBuffer;
std::vector<Color> PixelBuffer;
std::vector<Color> CleanPixelBuffer;
void Scene3D::ClearBuffers()
{
const size_t n = static_cast<size_t>(ScreenSize[0] * ScreenSize[1]);
memcpy(&*(WBuffer.begin()), &*(CleanWBuffer.begin()), n * sizeof(*(WBuffer.begin())));
memcpy(&*(PixelBuffer.begin()), &*(CleanPixelBuffer.begin()), n * sizeof(*(PixelBuffer.begin())));
}
Быстрая очистка буферов.
CleanWBuffer предварительно заполнен 0.0, CleanPixelBuffer предварительно заполнен нужным цветом.
Можно было воспользоваться std::fill, но оно работает в несколько раз дольше.
Пришлось так вот лезть в потроха std::vector. Доставляют подряд идущие & и *.
+166
<?php
# bla bla bla...
public function __construct ($dbname, $host = null, $user = null, $pass = null) {
$numargs = func_num_args ();
if ($numargs == 1)
parent::__construct ($dbname);
else
parent::__construct ($dbname, $host = null, $user = null, $pass = null);
$this->begin = time ();
}
# bla bla bla...
"гениальный" вызов конструктора!
+157
void Scene3D::DrawTriangle(const Point3D &A, const Point3D &B, const Point3D &C, const Color& color)
{
// ---------------------------------------------------------------------------------------
// вспомогательные вычисления
// нормаль
const Vector3D& n = (B - A) ^ (C - A);
// ...
// центр треугольника
const Point3D& medium = (A + B + C) / 3.0;
Руки как-то привыкли const TypeName& variableName набирать в определении параметров методов.
И случайно набралось такое (строки 6, 11)
Операторы (+, -, ^, /) над векторами возвращают Vector3D, не const Vector3D&.
Заметил только через полгода, и всё это время оно почему-то работало, и даже ворнингов не было.
Но такое ведь не должно работать!
Результат вычисления в правой части присваивания структура, то есть она возвращается в стеке. Если бы я присвоил её какой-то локальной переменной, для которой выделена память в стеке текущей функции, то она бы перед удалением скопировалась в локальную переменную. А так получается что ссылка (n, medium) указывает куда-то на стек, где временно хранится возвращенное оператором значение. И при следующем вызове любой функции эта область стека должна перезаписаться.