Си диез / Говнокод #1595 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
if (messages[i].description != "")
                            if (messages[i].description.StartsWith("<![CDATA["))
                            {
                                messages[i].description = messages[i].description.Substring(9);
                                messages[i].description = messages[i].description.Substring(0, messages[i].description.Length - 3);
                            }

для строк типа <![CDATA[******]!>
Возникает устойчивое ощущение говнокода. Как нормально написать? :)

ikovalyov ikovalyov, (Updated )

Комментарии (24, +24)

Си диез / Говнокод #1594 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
public static XmlNode FindNodeXPath(XmlNode root, string xPath)
        {
            string[] paths = xPath.Split(new char[] { '/' });
            XmlNode node = root;
            for (int i = 0; i < paths.Length; i++)
            {
                XmlNode childNode = null;
                for (int j = 0; j < node.ChildNodes.Count; j++)
                {
                    if (node.ChildNodes[j].Name == paths[i])
                    {
                        childNode = node.ChildNodes[j];
                        node = childNode;
                        break;
                    }
                }
                if (childNode == null)
                {
                    return null;
                }
            }
            return node;
        }

        public static XmlNode FindNodeXPath(XmlNode root, string nodeName, string xPath)
        {
            XmlNode node = FindNodeXPath(root, xPath);
            if (node != null)
            {
                for (int i = 0; i < node.ChildNodes.Count; i++)
                {
                    if (node.ChildNodes[i].Name == nodeName)
                    {
                        node = node.ChildNodes[i];
                    }
                }
            }
            return node;
        }

        public static void UpdateBaseAddress(string url, string fileConfig)
        {
            // Create config file to create 
            XmlDocument xmlDom = new XmlDocument();
            xmlDom.Load(fileConfig);
            XmlNode root = xmlDom.DocumentElement;
            // Get XML node 
            XmlNode xmlNode = FindNodeXPath(root, "endpoint", "system.serviceModel/services/service");
            xmlNode.Attributes["address"].Value = url;

            xmlNode = FindNodeXPath(root, "add", "system.serviceModel/services/service/host/baseAddresses");
            xmlNode.Attributes["baseAddress"].Value = url;

            xmlDom.Save(fileConfig);
        }

Виетнамский XPath эквивалент :)

bugotrep bugotrep, (Updated )

Комментарии (2, +2)

"PHP" / Говнокод #1593 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
function strum($text, $simb)
{
if(mb_strlen($text, 'UTF-8') > $simb){

}
if(mb_strlen($text, 'UTF-8') > $simb)
  {
	$start = 0;
	for($i = 0; $i <= (ceil(mb_strlen($text, 'UTF-8') / $simb)); $i++)
	{

		$tmp = mb_strpos($text, '. ', $start + $simb, 'UTF-8');
		if(is_numeric($tmp))
		{
			$num[] = $tmp;

		}
		$tmp = mb_strpos($text, '! ', $start  + $simb, 'UTF-8');
				if(is_numeric($tmp))
		{
			$num[] = $tmp;

		}
		$tmp = mb_strpos($text, '? ', $start  + $simb, 'UTF-8');
				if(is_numeric($tmp))
		{
			$num[] = $tmp;

		}
		if($num != '')
		{
		$end = min($num) + 1;
		}
		if($end <= $start)
		{
			$end = mb_strlen($text, 'UTF-8');
		}
		$str = mb_substr($text, $start, $end, 'UTF-8');
		$string[] = mb_substr($str, 0, ($end - $start), 'UTF-8');

	$start = $end;
	unset($num);
	unset($str);
	unset($tmp);
	if($end == mb_strlen($text, 'UTF-8'))
		{
			break;
		}
	}
  }
  else
  {
  $string[] = $text;
  }
  return $string;

}

Функция для умной разбивки

Arrim Arrim, (Updated )

Комментарии (1, +1)

Куча говна / Говнокод #1591 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
  63. 63
  64. 64
  65. 65
  66. 66
  67. 67
  68. 68
  69. 69
  70. 70
  71. 71
  72. 72
  73. 73
  74. 74
  75. 75
  76. 76
  77. 77
  78. 78
@echo off
cls
pushd "%~d0%~p0"
echo Current DIR: "%CD%"
if "%~1" == "talk_widget" goto talker


rem ////////////////////
:auth
echo Enter chat filename to connect ("abc" for example):
set /p chat=^>
echo Enter your nick:
set /p nick=^>
start call %0 talk_widget %chat% %nick%

rem ////////////////////
:listener
cls
call title "| Chat: %chat% | User: %nick% |"
if exist %chat%_history type %chat%_history

:list_go
ping 127.0.0.1 -n 1 -w 20 > nul
set oldtext=%text%
set /p text=<%chat%
if not "%text%" == "%oldtext%" echo %text%
goto list_go
rem ////////////////////


rem ////////////////////
rem // %2 - chat name //
rem // %3 - user nick //
rem ////////////////////
:talker
set chat=%~2
set nick=%~3
cls
call title "| Chat: %chat% | User: %nick% |"
call ::cs_in
echo (%TIME% %nick% connected)>%chat%
call ::cs_out
echo (%TIME% %nick% connected)>>%chat%_history

:talkloop
cls
echo Dear %nick%, type message to send:
set /p msg=^>
rem call ::cs_in
echo [%TIME% %nick%]: %msg%>%chat%
rem call ::cs_out
echo [%TIME% %nick%]: %msg%>>%chat%_history
goto talkloop
rem ////////////////////


rem ////////////////////
:cs_in
if exist "%chat%_cs" ping 127.0.0.1 -n 1 -w 50 > nul
set cs_value=%RANDOM%

:cs_in_loop
echo %cs_value%>%chat%_cs
set /p ret=<%chat%_cs
if "%ret%" == "%cs_value%" exit /b
ping 127.0.0.1 -n 1 -w 10 > nul
goto :cs_in_loop
rem ////////////////////


rem ////////////////////
:cs_out
del %chat%_cs
exit /b
rem ////////////////////


rem =========================================================

Чат на BAT. Сколько угодно народу.
Выложите батник в сетевую папку и оттуда запускайте с разных ПК.
Статья с тонкостями: http://k06a.blogspot.com/2009/06/blog-post_27.html

k06a k06a, (Updated )

Комментарии (17, +17)

Кресты / Говнокод #1590 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
#ifndef SOCHET_H
#define SOCHET_H

// Сдвигает самую младшую единицу в сторону младшего разряда
#define shiftLast1Right(x) ( (x-1)^((x^(x-1)) >> 2) )

// Дописывает 1 после самой младшей единицы
#define add1AfterLast1(x) ( x | ((x^(x-1))+1) >> 2 )

template<class T>
class Sochet
{
public:
	T value;

	//////////////////////////////////////////////////////////////////////////

	Sochet():value(0) { }
	Sochet(int n, int k) {
		firstTurn(n, k);
	}
	~Sochet() {
		value = 0;
	}

	//////////////////////////////////////////////////////////////////////////

	// Первая комбинация
	// В первоначальной ситуации все К единиц располагаются в старших битах
	void firstTurn(int n, int k) {
		value = ( ( T(1) << k ) - 1 ) << (n - k);
	}

	// Нахождение следующей комбинации
	// Возвращает false в случае последней комбинации
	bool nextTurn()
	{
		// Отлов последней комбинации
		if (value & (value+1) == 0)
			return false;
		
		// Условие по младшему биту: 1 или 0
		if (value & 1)
		{
			value >>= 1;
			nextTurn();
			value = add1AfterLast1(value << 1);
		} else
			value = shiftLast1Right(value);
		
		return true;
	}
}

#endif // SOCHET_H

Шаблон перебора всех сочетаний/выборок в много разрядных числах.
Пример перебираемых чисел для N=5, K=3:
11100
11010
11001
10110
10101
10011
01110
01101
01011
00111

// Код выглядит сочно(особенно дефайны), зато всё работает максимально быстро.
// Статья про этот алгоритм: http://k06a.blogspot.com/2009/04/blog-post_08.html

k06a k06a, (Updated )

Комментарии (9, +9)

Школоло / Говнокод #1589 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
with (VirNode^) do
begin
  VirNode^.ImageIndex := vir.iNum;
  VirNode^.Txt := vir.sAttr[1] + ' - ' + vir.sAttr[3];
end;

сначала было без with а потом забыл убрать "VirNode^." :)

Joe Joe, (Updated )

Комментарии (10, +10)

ЙажаСценарий / Говнокод #1588 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
// Any fool can write code that a computer can understand. Good programmers write code that humans can understand. (C) Martin Fowler.
function changeLogo() {
	var pane = document.getElementById("pane");
	if(pane != null) {
		pane.height = 240;
		pane.width = document.body.clientWidth;
	} else {
		alert("it's sad, so sad...");
	}
	var logo = document.getElementById("logoJpg");
	if(logo != null) {
		logo.height = 50;
		logo.width = document.body.clientWidth * 0.23;
	} else {
		alert(" ...it's a sad, sad situation, and it's getting more and more absurd");
	}
}

Код совсем ничего, но камменты рулят

domavoy domavoy, (Updated )

Комментарии (4, +4)

Куча говна / Говнокод #1587 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
<div style="padding: 2px;"> 
    <div class="go_left">
        <font color="#777777">Account balance:</font> <span id="js_total_hours" style="margin: 0px; padding: 0px;">2</span> hours
    </div> 
    <div class="clear"></div> 
</div>

go_left - стиль с float: left
clear - стиль с clear: both
как минимум спрашивается зачем давать флоэт лефт единстенному элементу в диве.

nonexistent nonexistent, (Updated )

Комментарии (2, +2)

"PHP" / Говнокод #1586 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
<?php
$thelist = array();
$dir = './upload/ftp/';
if ($handle = opendir($dir)) {
	while (false !== ($file = readdir($handle))) {
		if ($file != "." && $file != ".." && $file !="index.php" && $file !=".ftpquota") {
			$file = $file;
			$thelist[] = array('file' => $file, 'filemtime' => filemtime($file), 'filesize' => filesize($file));
		}
	}

	closedir($handle);
}
?>
<?php
for($i = 0; $i < count($thelist); $i++) {
	?><a href="sitename/<?=$thelist[$i]['file']?>"><?=$thelist[$i]['file']?></a><?php
}
?>

scrat scrat, (Updated )

Комментарии (3, +3)