1. SQL / Говнокод #2807

    −144.2

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    SELECT
        id, description_ru, description_en,
        FLOOR(LENGTH(TRIM(description_ru))/2+0.5) AS descr_ru,
        LENGTH(TRIM(description_en)) AS `descr_en`
    FROM items
    ORDER BY descr_ru desc;

    получает id, русское описание, английское описание, а потом размеры описаний
    и сортирует по размеру русского описания.
    база в UTF-8, поэтому размеры описаний в символах решил посчитать вот таким говноспособом...
    таблица >30 000 записей.
    Говнодиверсант какой-то :)

    alexgray, 16 Марта 2010

    Комментарии (16)
  2. PHP / Говнокод #2806

    +144

    1. 1
    2. 2
    3. 3
    4. 4
    if (mysql_num_rows($res)) {while($row = mysql_fetch_assoc($res)) {
       $aSingStat[] = $row;
       }
    }

    толи строчек жалко, толи решил обфусцыровать код для меньшей узнаваемости.
    написал уже б так: if (mysql_num_rows($res)) while($row = mysql_fetch_assoc($res)) $aSingStat[] = $row;
    Тогда б я вообще не парился и дропнул нафиг строчку.

    Андрюха, не пиши больше так!
    Вот пример как надо писать http://www.sergunik.name/?p=178

    Sergunik, 16 Марта 2010

    Комментарии (22)
  3. 1C / Говнокод #2805

    −133.2

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    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
    ТаблицаДоговоров = ДоговораМенеджера.Выгрузить();
    ТаблицаДоговоров.Свернуть("Договор");
    
    		
    ЗапросПоДоговорам = новый Запрос;
    ЗапросПоДоговорам.УстановитьПараметр("НаДату", Дата);
    ЗапросПоДоговорам.УстановитьПараметр("СписокДоговоров", ТаблицаДоговоров.ВыгрузитьКолонку("Договор"));
    
    ЗапросПоДоговорам.Текст = 
    "ВЫБРАТЬ
    |	ОтветственныеПоДоговорамСрезПоследних.Договор,
    |	ОтветственныеПоДоговорамСрезПоследних.Приложение,
    |	ОтветственныеПоДоговорамСрезПоследних.ВидОтветственного,
    |	ОтветственныеПоДоговорамСрезПоследних.Ответственный,
    |	СтатусыДоговоровСрезПоследних.Статус,
    |	ПриложенияДоговоровСрезПоследних.КонецПриложения
    |ИЗ
    |	РегистрСведений.ОтветственныеПоДоговорам.СрезПоследних(&НаДату, Договор В (&СписокДоговоров)) КАК ОтветственныеПоДоговорамСрезПоследних
    |		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СтатусыДоговоров.СрезПоследних(&НаДату, Договор В (&СписокДоговоров)) КАК СтатусыДоговоровСрезПоследних
    |		ПО ОтветственныеПоДоговорамСрезПоследних.Договор = СтатусыДоговоровСрезПоследних.Договор
    |			И ОтветственныеПоДоговорамСрезПоследних.Приложение = СтатусыДоговоровСрезПоследних.Приложение
    |		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ПриложенияДоговоров.СрезПоследних КАК ПриложенияДоговоровСрезПоследних
    |		ПО ОтветственныеПоДоговорамСрезПоследних.Договор = ПриложенияДоговоровСрезПоследних.Договор
    |			И ОтветственныеПоДоговорамСрезПоследних.Приложение = ПриложенияДоговоровСрезПоследних.Приложение";
    ТаблицаДоговоровИСтатусов = ЗапросПоДоговорам.Выполнить().Выгрузить();

    так вот пишет наш ведущий программист. Зачем сворачивать???

    Sameccc, 16 Марта 2010

    Комментарии (19)
  4. 1C / Говнокод #2804

    −131.6

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    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
    ТаблицаДоговоров = ДоговораМенеджера.Выгрузить();
    ТаблицаДоговоров.Свернуть("Договор");
    
    		
    ЗапросПоДоговорам = новый Запрос;
    ЗапросПоДоговорам.УстановитьПараметр("НаДату", Дата);
    ЗапросПоДоговорам.УстановитьПараметр("СписокДоговоров", ТаблицаДоговоров.ВыгрузитьКолонку("Договор"));
    
    ЗапросПоДоговорам.Текст = "ВЫБРАТЬ
    								  |	ОтветственныеПоДоговорамСрезПоследних.Договор,
    								  |	ОтветственныеПоДоговорамСрезПоследних.Приложение,
    								  |	ОтветственныеПоДоговорамСрезПоследних.ВидОтветственного,
    								  |	ОтветственныеПоДоговорамСрезПоследних.Ответственный,
    								  |	СтатусыДоговоровСрезПоследних.Статус,
    								  |	ПриложенияДоговоровСрезПоследних.КонецПриложения
    								  |ИЗ
    								  |	РегистрСведений.ОтветственныеПоДоговорам.СрезПоследних(&НаДату, Договор В (&СписокДоговоров)) КАК ОтветственныеПоДоговорамСрезПоследних
    								  |		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СтатусыДоговоров.СрезПоследних(&НаДату, Договор В (&СписокДоговоров)) КАК СтатусыДоговоровСрезПоследних
    								  |		ПО ОтветственныеПоДоговорамСрезПоследних.Договор = СтатусыДоговоровСрезПоследних.Договор
    								  |			И ОтветственныеПоДоговорамСрезПоследних.Приложение = СтатусыДоговоровСрезПоследних.Приложение
    								  |		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ПриложенияДоговоров.СрезПоследних КАК ПриложенияДоговоровСрезПоследних
    								  |		ПО ОтветственныеПоДоговорамСрезПоследних.Договор = ПриложенияДоговоровСрезПоследних.Договор
    								  |			И ОтветственныеПоДоговорамСрезПоследних.Приложение = ПриложенияДоговоровСрезПоследних.Приложение";
    								  
    		
    		ТаблицаДоговоровИСтатусов = ЗапросПоДоговорам.Выполнить().Выгрузить();

    так вот пишет наш ведущий программист. Зачем сворачивать???

    Sameccc, 16 Марта 2010

    Комментарии (8)
  5. C# / Говнокод #2803

    +105.4

    1. 001
    2. 002
    3. 003
    4. 004
    5. 005
    6. 006
    7. 007
    8. 008
    9. 009
    10. 010
    11. 011
    12. 012
    13. 013
    14. 014
    15. 015
    16. 016
    17. 017
    18. 018
    19. 019
    20. 020
    21. 021
    22. 022
    23. 023
    24. 024
    25. 025
    26. 026
    27. 027
    28. 028
    29. 029
    30. 030
    31. 031
    32. 032
    33. 033
    34. 034
    35. 035
    36. 036
    37. 037
    38. 038
    39. 039
    40. 040
    41. 041
    42. 042
    43. 043
    44. 044
    45. 045
    46. 046
    47. 047
    48. 048
    49. 049
    50. 050
    51. 051
    52. 052
    53. 053
    54. 054
    55. 055
    56. 056
    57. 057
    58. 058
    59. 059
    60. 060
    61. 061
    62. 062
    63. 063
    64. 064
    65. 065
    66. 066
    67. 067
    68. 068
    69. 069
    70. 070
    71. 071
    72. 072
    73. 073
    74. 074
    75. 075
    76. 076
    77. 077
    78. 078
    79. 079
    80. 080
    81. 081
    82. 082
    83. 083
    84. 084
    85. 085
    86. 086
    87. 087
    88. 088
    89. 089
    90. 090
    91. 091
    92. 092
    93. 093
    94. 094
    95. 095
    96. 096
    97. 097
    98. 098
    99. 099
    100. 100
    using System;
    using System.Data;
    using System.Configuration;
    using System.IO;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    
    using NPOI.HSSF.UserModel;
    using NPOI.HPSF;
    using NPOI.POIFS.FileSystem;
    
    public class GridViewExportUtil
    {
        static HSSFWorkbook hssfworkbook;
    
        static MemoryStream WriteToStream()
        {
            //Write the stream data of workbook to the root directory
            MemoryStream file = new MemoryStream();
            hssfworkbook.Write(file);
            return file;
        }
    
        static void InitializeWorkbook()
        {
            hssfworkbook = new HSSFWorkbook();
    
            ////create a entry of DocumentSummaryInformation
            DocumentSummaryInformation dsi = PropertySetFactory.CreateDocumentSummaryInformation();
            dsi.Company = "";
            hssfworkbook.DocumentSummaryInformation = dsi;
    
            ////create a entry of SummaryInformation
            SummaryInformation si = PropertySetFactory.CreateSummaryInformation();
            si.Subject = "";
            hssfworkbook.SummaryInformation = si;
        }
        /// <param name="fileName"></param>
        /// <param name="gv"></param>
        public static void Export(string fileName, GridView gv)
        {
            HttpContext.Current.Response.Clear();
            HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache);
            HttpContext.Current.Response.Charset = System.Text.Encoding.Unicode.EncodingName;
            HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.Unicode;
            HttpContext.Current.Response.BinaryWrite(System.Text.Encoding.Unicode.GetPreamble());
            HttpContext.Current.Response.ContentType = "application/vnd.ms-excel"; // NPOI
            HttpContext.Current.Response.AddHeader(
                 "content-disposition", string.Format(
                    "attachment; filename=Report.xls"));//, fileName)); // Need .XLS file
            HttpContext.Current.Response.Clear();
    
            InitializeWorkbook();
    
            HSSFSheet sheet1 = hssfworkbook.CreateSheet("Таблица");
            //sheet1.CreateRow(0).CreateCell(0).SetCellValue("Таблица");
    
            using (StringWriter sw = new StringWriter())
            {
                    //  Create a form to contain the grid
                    Table table = new Table();
                    //  add the header row to the table
                    if (gv.HeaderRow != null)
                    {
                        GridViewExportUtil.PrepareControlForExport(gv.HeaderRow);
                        table.Rows.Add(gv.HeaderRow);
                    }
                    //  add each of the data rows to the table
                    foreach (GridViewRow row in gv.Rows)
                    {
                        GridViewExportUtil.PrepareControlForExport(row);
                        table.Rows.Add(row);
                    }
                    //  add the footer row to the table
                    if (gv.FooterRow != null)
                    {
                        GridViewExportUtil.PrepareControlForExport(gv.FooterRow);
                        table.Rows.Add(gv.FooterRow);
                    }
    
                    sheet1.DisplayGridlines = true;
    
                    HSSFCellStyle style1 = hssfworkbook.CreateCellStyle();
                    style1.Alignment = HSSFCellStyle.ALIGN_CENTER;
    
                    sheet1.SetColumnWidth(0, 10000);
                    sheet1.SetColumnWidth(1, 5000);
                    sheet1.VerticallyCenter = true;
    
                    for (int j = 2; j < table.Rows[0].Cells.Count; j++)
                    {
                        sheet1.SetColumnWidth(j, 4000);
                        sheet1.SetDefaultColumnStyle(short.Parse(j.ToString()), style1);
                    }
    
                    double Temp=0;

    Nemerle, 16 Марта 2010

    Комментарии (3)
  6. C++ / Говнокод #2802

    +55.4

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    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
    #include <math.h>
    #include <assert.h>
    #include "vector10d.h"
     
    float vcompare_epsilon10d = 0.0005f;
     
    ml inlined float v10d_getElement(vec10d *v, int index)
    {
        assert( v != 0);
        assert( index >= 0 );
        assert( index <  3 );
        return (* ((&((v)->x)) +  (index) ));
    }
    ml inlined bool v10d_isValid(const vec10d *v)
    {
        if(v == 0) return g_false;
        if((v->x * v->x) < 0.0f)return g_false;
        if((v->y * v->y) < 0.0f)return g_false;
        if((v->z * v->z) < 0.0f)return g_false;
        if((v->w * v->w) < 0.0f)return g_false;
        if((v->m * v->m) < 0.0f)return g_false;
        if((v->n * v->n) < 0.0f)return g_false;
        if((v->o * v->o) < 0.0f)return g_false;
        if((v->p * v->p) < 0.0f)return g_false;
        if((v->r * v->r) < 0.0f)return g_false;
        if((v->s * v->s) < 0.0f)return g_false;
        return g_true;
    }
    ml inlined void v10d_set(vec10d *v, float x, float y, float z, float w, float m,
               float n, float o, float p, float r, float s)
    {
        assert(v = 0);
        v->x=x;
        v->y=y;
        v->z=z;
        v->w=w;
        v->m=m;
        v->n=n;
        v->o=o;
        v->p=p;
        v->r=r;
        v->s=s;
        assert( v10d_isValid(v) != g_false );
    }
    ml inlined void v10d_get(const vec10d *v, float *x, float *y, float *z, float *w,
         float *m, float *n, float *o, float *p, float *r, float *s)
    {
        assert ( v != 0 );
        assert ( x != 0 );
        assert ( y != 0 );
        assert ( z != 0 );
        assert ( w != 0 );
        assert ( m != 0 );
        assert ( n != 0 );
        assert ( o != 0 );
        assert ( p != 0 );
        assert ( r != 0 );
        assert ( s != 0 );
        assert( v10d_isValid(v) != g_false );
     
        *x = v->x;
        *y = v->y;
        *z = v->z;
        *w = v->w;
        *m = v->m;
        *n = v->n;
        *o = v->o;
        *p = v->p;
        *r = v->r;
        *s = v->s;
    }

    Сие чудо нарыл на просторах интернетов. Для ценителей весь исходник http://pastebin.org/114060 .. Очевидно чуваки писали очередной Crysis :)

    Valor, 16 Марта 2010

    Комментарии (23)
  7. PHP / Говнокод #2801

    +160.6

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    if(isset($_POST['add_st']) && $_POST['add_st'] != false && $_POST['add_st'] != '')
    { 
    	if($res=mysql_query("select max(ordering) from category3 where category2=".$cat)) 
    		{
    			$ord=mysql_fetch_row($res);
    			$order=$ord[0]+1;
    		}

    $_POST['add_st'] - из формы с <input type='submit' name='add_st' value='Сохранить' />

    Я уж не говорю, что $order можно было сделать одним запросом

    pasha, 16 Марта 2010

    Комментарии (9)
  8. PHP / Говнокод #2800

    +144

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    $text=strip_tags($text);
    $text=substr("$text", 0, 350);
    echo"<div align=justify>";	
    echo"$text ";
    echo"... ";
    echo  "<a  href=../news/viewnews.php?kley=$kley>>></div><hr></td></tr>";
    echo "</table>";

    Какой то бянист не мог через одно ехо вывести я уже молчу про двойные скобки...
    автор неизвестен

    dobs2005, 16 Марта 2010

    Комментарии (13)
  9. SQL / Говнокод #2799

    −157.8

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    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
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    92. 92
    93. 93
    94. 94
    CREATE PROCEDURE "auot".uot_inv_procs2
    (
      NumFunc Integer,	-- Номер функции :
    		    -- 1 - Вставляет строку 
                        -- 2 - Создает временную таблицу 
                        -- 3 - Удаляет временную таблицу 
                        -- 4 - Создает временную таблицу 
                        -- 5 - Удаляет временную таблицу 
                        -- 6 - Возвращает Dogovor.Dog_id
                        -- 7 - Создает TempTableInvoice
                        -- 8 - Создает TmpTabDeclInv
                        -- 9 - Создает TmpTabDeclSel
                        --10 - Заолняет TmpTabDeclSel 
                        --11 - Добавляет в TmpTabVCSel
                        --12 - Обновляет информацию 
    
      n_Numb_inv        NVarChar(10,0) DEFAULT NULL,	
      n_Date_inv        Date DEFAULT NULL,	
      n_Code_exp        Char(2) DEFAULT NULL,	
      n_Prod_code       Char(3) DEFAULT NULL,
      n_Code_Transport  Char(1) DEFAULT NULL,
      n_Code_Date_Cen   Char(1) DEFAULT NULL,
      n_Contract        NVarChar(30,0) DEFAULT NULL,
      n_DateContract    Date DEFAULT NULL,		
      n_Weight          Numeric(10,3) DEFAULT NULL,
      n_Price           Numeric(8,2) DEFAULT NULL,	
      n_Total           Numeric(15,2) DEFAULT NULL,	
      n_Kod_val_id      Integer DEFAULT NULL,		
      n_Date_konos      Date DEFAULT NULL,		
      n_SHB_Signature   Char(6) DEFAULT NULL,	
      n_Seller_Sign     Char(6) DEFAULT NULL,		
      n_Date_prix       Date DEFAULT NULL,		
      n_Date_move       Date DEFAULT NULL,		
      n_SUM_CLS         Numeric(15,2) DEFAULT NULL,
      n_Consignee       NVarChar(150,0) DEFAULT NULL,
      n_Buyer           NVarChar(150,0) DEFAULT NULL,	
      n_Pnt_departure   NVarChar(150,0) DEFAULT NULL,
      n_Destination     NVarChar(150,0) DEFAULT NULL,
      n_Steam_vessel    NVarChar(50,0) DEFAULT NULL,
      n_Delivery_terms  NVarChar(18,0) DEFAULT NULL,
      n_Status          Char(1) DEFAULT 'N',				
      n_Dogovor_id      Integer DEFAULT NULL,		
      n_Date_min        Date DEFAULT NULL,			
      n_Date_max        Date DEFAULT NULL,			
      n_Invoice_id      Integer DEFAULT NULL,			
      n_Res_Code        Char(8) DEFAULT NULL,			
      n_Date_Sale_Uved  Date DEFAULT NULL,			
      n_Month           Date DEFAULT NULL				
    
    )	
    RETURNING INTEGER;
    
    
    DEFINE GLOBAL __current_user INTEGER  DEFAULT NULL;
    DEFINE GLOBAL err_sqlcode    INTEGER  DEFAULT 0;
    DEFINE GLOBAL err_isamcode   INTEGER  DEFAULT 0;
    DEFINE GLOBAL err_detail     CHAR(80) DEFAULT '';
    
    DEFINE _inv_id         Integer;
    
    DEFINE _Name_exp       NVarChar(40,0);
    DEFINE _Name_rus       NVarChar(50,0);
    DEFINE _Smlval         Char(3);
    DEFINE _rlw_id         Integer;
    DEFINE _weight_brutto  Decimal(12,3);
    DEFINE _Bes_inv        Decimal(12,3);
    DEFINE _Sum_inv        Numeric(15,2);
    DEFINE _Bes_free       Decimal(12,3);
    DEFINE _Sum_free       Numeric(15,2);
    DEFINE _Sum_Weight_Inv DECIMAL(12,3);
    DEFINE _SHB_Name       NVARCHAR(60,0);
    DEFINE _dogovor        NChar(15);
    DEFINE _dlv_id         Integer;
    DEFINE _Decl_num       Char(23);
    DEFINE _Decl_date      Date;
    DEFINE _Buyer          NVarChar(80);
    DEFINE _Currency_rate  Money(16,2);
    DEFINE _CenaRus        Money(16,2);
    DEFINE _Prod_All       NVarChar(93);
    DEFINE _org_name       NVarChar(80,0);
    DEFINE _SumRUR         Money(16,2);
    DEFINE _SumKinef       Money(16,2);
    DEFINE _Delta          Money(16,2);
    DEFINE _Effect         Money(16,2);
    DEFINE _Dog_id         Integer;
    DEFINE _Res_code       Char(8);
    DEFINE _carriage_num   NChar(18);
    DEFINE _nom_nakl       NChar(10);
    DEFINE _Shpok_char     Char(4);
    DEFINE _Parent         SmallInt;
    DEFINE _Date_otgr      DateTime YEAR TO SECOND;
    
    IF NumFunc=2 THEN  -- Создаем временную табл. SprInvByProd
      CREATE TEMP TABLE SprInvByProd......

    и так далее по каждому из 12 пунктов.....просто процедура на все случаи жизни..чувак реально попотел когда сие изобретал....

    Grizzly, 15 Марта 2010

    Комментарии (5)
  10. PHP / Говнокод #2798

    +162.2

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    $l = array('q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', 'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'z', 'x', 'c', 'v', 'b', 'n', 'm', '-', '.');
    $len = 9;
    for ($i = 0; $i < 100; $i++) //цикл для проверки=)
    {
        $login = '';
        while (strlen($login) < $len) {
            $current = $l[mt_rand(0, (((strlen($login) + 1 == $len) || (strlen($login) == 0)) ? count($l) - 3 : count($l) - 1))]; //мама ради миня абратна
            $login. = ((substr($login, strlen($login) - 1, 1)) == $current) ? '' : $current;
        }
    
        echo $login."<br>";
    }

    наверно самый извращенный код для генереции случайних строк который я когда либо писал=)
    примерно такие требования
    в начале и в конце как точки, так и тире быть тоже не должно
    Т.е другими словами, должен начинаться буквой и заканчиваться буквой
    не иметь двух тире и двухточие подряд

    nur, 15 Марта 2010

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