1. JavaScript / Говнокод #6643

    +143

    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
    function postUrl(path, params, method) {
    	if ($('#service-form').length > 0) {
    		return false;
    	}
        var formHtml = '<form action="' + path + '" method="' + method + '" style="display:none;" id="service-form">';
        for(var key in params) {
            formHtml += '<input type="hidden" name="' + key + '" value="' + params[key] + '" />';
        }
        formHtml += '</form>';
    
        $("#main").append(formHtml);
        $("#service-form").submit();
    }

    Игра МосВар

    Запостил: Vasiliy, 12 Мая 2011

    Комментарии (76) RSS

    • int String::indexOf(char[] sub) {
      	let find:bool = false,
      	x:int = 0, j:int = -1, len = this.size, ssz = sub.size;
      	if ssz > len:
      		return -1;
      	for let i:int = 0, len > i, i++: {
      		if sub[x] == this[i]: {
      			j = i;
      			find = true;
      		}
      		if find && sub[++x] != this[i + j]: {
      			i = j;
      			j = -1;
      			find = false;
      			x = 0;
      		}
      		if find && x == ssz:
      			return j;
      	}
      	return j;
      }
      Ответить
      • Идиот.

        @use "str2.nvt"
        int String :: indexOf( char[] sub ) {
        	return this.search( sub, 0 ).position;
        }
        Ответить
        • Сам ты идиот. До версии 1.2 библиотеки str2 нет.
          Ответить
          • Ты придурок. До 1.2 в default есть такие функции, как _FineSubstrPosit:

            try {
            	@use "str2.nvt"
            	int String :: indexOf( char[] sub ) {
            		return this.search( sub, 0 ).position;
            	}
            } catch {
            	@use "default.nvt"
            	int String :: indexOf( char[] sub ) {
            		return _FindSubstrPosit( 1, sub, false, false );
            	}
            }
            Ответить
            • Даун. Нахуя try..catch, если в _sys_version можно посмотреть версию?
              Ответить
              • _sys_version теоретически можно заменить другим значением:

                @def (_sys_version, ...)
                Ответить
                • Только кому это надо...
                  Да и в 1.6 константы не заменяются через @def.
                  Ответить
                  • Вы два дебила, читайте документацию.

                    if 1E344 % 10 == 0: { // В 1.2+ версиях возвращает true
                    	@use "str2.nvt"
                    	int String :: indexOf( char[] sub ) = strO String :: search( char[], int );
                    } else {
                    	@use "default.nvt"
                    	int String :: indexOf( char[] sub ) = _FindSubstrPosit( int, char[], bool, bool );
                    }
                    Ответить
                • Ты деградирующий ублюдок, системные константы — такие как _sys_version или _lib_support подставляются после того, как сработают определения @def.
                  Ответить
                  • Даун. Если подключить либу default, то _sys_version и прочая хуета уберётся. Вместо них появятся _system.ver и пр.
                    Ответить
                    • Ты придурок, default с его 1200 функциями никто не подключают, берут по отдельности, например:

                      @use int _time() from "default.nvt"


                      В таком случае _sys_version и др. остаются.
                      Ответить
                      • Убедил.
                        А нахуя писать int _time() вместо _time?
                        Ответить
                        • Потому что есть функция timeO time(int), идиот. Надо же как-то их различать.
                          Ответить
                          • int _time() объявлен раньше, компилятор заберёт его и на твой этот timeO _time(int) и не посмотрит, кретин.
                            Ответить
            • Олигофрен. @use по несуществующему файлу выбрасывало исключение только в 1.0a версии и это был баг. Сейчас просто подставляется пустое место и никаких эксепшнов нет, дубина.
              Ответить
              • Да в этой документации хуй разберёшься, там 7338 страниц.
                Ответить
                • Уже 7339, в 1.8.2, оказывается, можно переопределять приоритет перегруженных операций :) Дебил блять :)
                  Ответить
                  • И как, сука?
                    Ответить
                  • 7340.
                    Утром какой-то мудак написал про свойство access, которое влияет на возможность чтения свойств.
                    Ответить
                    • Доставляет.

                      Array :: access = false;
                      let a:int[] = [0];
                      tout(a[0]); // Error: a[0] cannot be readed
                      Array :: access = true; // Error: a[0] cannot be changed


                      Баг только с конструкторами, с объектами всё ОК.
                      Ответить
                      • Тьфу ты. В последнем комменте Array::access вместо a[0]
                        Ответить
                      • Ты быдлокодер, в доках написано же блять:

                        class Foo {
                        	int p;
                        }
                        let Obj:Foo;
                        Foo.access = false;
                        try {
                        	Foo.p = 0;
                        	Foo.p;
                        } catch (Error err) {
                        	tout(err.stext); // Foo.p cannot be readed or changed
                        }
                        Foo.access = true;
                        Foo.p = 0;
                        tout(Foo.p); // 0


                        Нахуя ты в прототип пихаешь, access не для этого задумывался. Хочешь убить класс — пиши @def Array и не еби мозг.
                        Ответить
                        • Блять, там все Foo кроме первого надо на Obj заменить. Блять, я уже который рах опечатываюсь и всё из-за тебя.
                          Ответить
                          • ДА Ёбаный ты в рот, все Foo кроме первого и второго!
                            Ответить
                    • 7352!
                      Встречайте цикл статей про отложенные действия.

                      @use timer from "default.nvt"
                      let a:int = 0;
                      timer(100, lambda {
                      	++a;
                      });
                      event a == 10 : {
                      	tout("Прошла одна секунда!");
                      }


                      Теперь осталось разобраться, как эта хуйня работает.
                      Ответить
                      • Берутся все переменные, прописанные в условии event и при каждом их изменении event смотрит, выполняется ли условие.
                        Ответить
      • А с хуя ли у len и ssz тип не присвоен? Мм уёба?
        Ответить
        • Забыл. Просто забыл. И не за чем так злиться, выкидыш одноногой проститутки, которая увидела твой говнокод и сошла с ума.
          Ответить
          • Кто говнокодер? Я говнокодер? Смотри, как круто я пишу qsort:

            temponary int[] sorter(arr:int[], point:int, less:bool) {
            	let R:int[], len:int = arr.size;
            	for (let i:int = 0; len > i; i++)
            		if (less ? arr[i] < point : arr[i] > point)
            			R.add(arr[i]);
            	return R;
            }
            let $ a:int[], a.size == 0 = [],
            $ a:int[] = ($ sorter(a, a[0], true)).add( a[0] ).concat( $ sorter(a, a[0], false) );
            tmpdel sorter;
            ...
            $ [1, 4, 6, 8, 3];

            Так что молчи в тряпочку, дегенерат.
            Ответить
            • LOL.

              let $ a:int[], !(a has 0) = [],
                  $ a:int[] = $ [a, t < a[0]] + a[0] + $ [a, t >= a[0]];
              Ответить
              • let temponary qsort;
                @use int[] qsort(int[], bool) from "default.nvt"
                $ a:int[] = qsort(a, true);
                tmpdel qsort;
                Ответить
                • Ты дебил, кода всё равно больше.
                  И нахуя let перед temponary? strict-парсер выкинет ошибку.
                  Ответить
                  • Этот твой strict-парсер — говно. С хуя ли он в коде

                    let x:int = 0.1;


                    выдаёт Type Error?
                    Ответить
                    • Очевидно, потому что тип int, а передаётся float. То же самое, что написать

                      let x:char[] = true;
                      Ответить
                      • true нельзя рассматривать как char[]. Но 0.1 можно рассматривать как int, т.е. просто 0. Бездарь.
                        Ответить
                        • > Бездарь

                          А зачем ты подписываешься? Гуест есть гуест.

                          Дробное число нельзя рассматривать как целое, идиот. Потому что в целых нет десятичной точки, которая используется в дробных.
                          Ответить
                          • Что-то ты далеко зашёл. Оставайся на уровне tout("Hello, world!");
                            Ответить
                • LOL, ты ещё тупее, чем предыдущий оратор.

                  @use qsort from "default.nvt"
                  $ a = qsort(a, true);


                  Кода меньше + возьмётся qsort, определённая для всех типов, а не только для int[].
                  Ответить
                  • Вот из-за таких уёбанов, как ты, весь глобальный неймспейс забит всякой хуйнёй. С хуя ли temponary не юзаешь, чмо?
                    Ответить
                    • Я не представляю, как переменную qsort можно использовать для чего-то, кроме быстрой сортировки.
                      Ответить
              • А теперь скорми этому уже отсортированный массив и порадуйся квадратному времени.
                Потому что, бля, надо не a[0] писать, а a[middle].
                Ответить
                • Блять, вероятность того, что попадётся "крайний" элемент одинакова, без разницы какой элемент выбирать.
                  Ответить
                  • Нихуя, в реале высока вероятность, что массив будет почти отсортирован. Особенно если ты каждый такт игры сортируешь массив, а потом слегка портишь.
                    Ответить
                    • let $ a:int[], !(a has 0) = [],
                          $ a:int[] = {
                      	    let middle:int = a.size >> 1;
                      	    $ [a, t < middle] + middle + $ [a, t >= middle];
                          }


                      Так нормально?
                      Ответить
                      • Блять, опечатка.

                        let $ a:int[], !(a has 0) = [],
                            $ a:int[] = {
                        	    let middle:int = a[a.size >> 1];
                        	    $ [a, t < middle] + middle + $ [a, t >= middle];
                            }
                        Ответить
                        • Ну, почти верно.
                          Только тогда не middle, а a[middle], да?
                          И что делать, если есть много элементов, у которых значение равно a[middle]? Тогда придётся либо заранее вырезать из a средний элемент, либо вообще делать так:

                          $ [a, t < middle] + $ [a, t = middle] + $ [a, t > middle];
                          Ответить
                          • На первый взгляд хорошее решение, но [a, t = middle] таки требует дополнительных вычислений, нежели чем просто a[middle].
                            Ответить
                            • На первый взгляд ты прав, но твоя поправка удалит из массива все элементы, равные middle, кроме одного.
                              Ответить
                              • Так ведь $ [a, t >= middle] написано же.
                                Ответить
                                • А если напишешь с >=, то тогда сортировка массива, в котором все элементы равны, выльется в бесконечную рекурсию.
                                  Да, мой вариант тоже этим страдает, скорее так надо:

                                  Sort [t<-a, t < middle] + [t<-a| t = middle] + Sort [t<-a| t > middle] ;
                                  Ответить
                                  • >Sort [t<-a, t < middle] + [t<-a| t = middle] + Sort [t<-a| t > middle] ;
                                    Что-за лисп?
                                    Ответить
                                    • Это хаскелл. (((lisp)))(ом) здесь даже и не пахнет.
                                      Ответить
                                      • тарасег уже вучил хаскел?
                                        Ответить
                                        • Таки нет, в хаскелле массивы склеиваются через ++, а не +.
                                          Ответить
      • WTF? Что это за б-гомерзский язык?
        Ответить
    • идиоты, придурки, ммм *проскроллил* дауны детектед? )
      Ответить
      • Это наша точка. Это наш язык.
        Ответить
        • Ты на пенёк сел — косарь должен был отдать.
          Ответить
      • А разве это не один анон?
        Ответить
        • С растроением личности.
          Ответить
          • С раздохренением личности. Сколько вас, ема?
            Ответить
            • >Сколько вас, ема?
              Краткий ликбез.
              Ёма (妖魔) — разумные чудовища, питающиеся человечиной. Принимая облик своих жертв, ёма могут прятаться среди людей, не выдавая себя. Также, съев мозг человека, чудовище может получить его воспоминания и действовать так же, как он, так что даже близкие не замечают разницы
              Ответить
    • Судя по всему это заразно....
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить

    Добавить комментарий