- 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) указывает куда-то на стек, где временно хранится возвращенное оператором значение. И при следующем вызове любой функции эта область стека должна перезаписаться.