[ /tv/ /rf/ /vg/ /a/ /b/ /u/ /bo/ /fur/ /to/ /dt/ /cp/ /oe/ /bg/ /ve/ /r/ /mad/ /d/ /mu/ /cr/ /di/ /sw/ /hr/ /wh/ /lor/ /s/ /hau/ /slow/ /gf/ /vn/ /w/ /ma/ /azu/ /wn/ ] [ Main | Settings | Bookmarks | Music Player ]

No.23742 Reply
File: Y4y9_PfzDiY.jpg
Jpg, 118.22 KB, 1200×858 - Click the image to expand
edit Find source with google Find source with iqdb
Y4y9_PfzDiY.jpg
Доброго дня, програмач.
Здесь будет мой небольшой бложик, где начинающий веб- макака -разработчик будет осваивать азы и выше css, javascript, jquery а потоми и пехопе.
В тред срочно приглашены критики-специалисты и новички.
И так. Вот мои первые результаты : http://rghost.ru/39453243
Кривая вертска (требуются люди, указавшие на кривоватость), доброгенератор и АЛЬФАМЕТР, ну и это все обмазано моим фирменным дизайном "как земля".
Поехали.
>> No.23744 Reply
File: e4c1b45a922fba7e1516ddc6127d674a9c019e1a.png
Png, 704.10 KB, 824×847 - Click the image to expand
edit Find source with google Find source with iqdb
e4c1b45a922fba7e1516ddc6127d674a9c019e1a.png
>>23742
В коде альфаметра у тебя слишком много повторяющихся кусков. Используй 'switch...case', присваивай значения переменным для повторно-используемые элементов, код станет чище. Выдели для одинаковых действий отдельные функции и передавай. И сделай что-нибудь со стилем кода (пока еще не привык так писать) — неудобно выискивать закрывающие скобки даже с их подсветкой, с отступами вообще беда, не понятно, что к чему относится а может это у меня все так поехало.
Неплохие задания себе даешь, продолжай.
>> No.23745 Reply
>>23742
> http://rghost.ru/39453243
> zip
бля, это же нужно скачать и распаковать. лень.
>> No.23747 Reply
File: k8rjBUq3Wf0.jpg
Jpg, 96.94 KB, 600×840 - Click the image to expand
edit Find source with google Find source with iqdb
k8rjBUq3Wf0.jpg
>>23744
Спасибо за ответ.
> 'switch...case'
Еще пока даже не знал, что он есть.
А повторяются там в основном циклы проверки радиобутонов, потом попытался так не делать и хватать значения по селекторам css.
А вот со стилем действительно надо будет поработать, надо почитать какие-то спецификации.

Кстати, а чем вы редактируете код? Пользуюсь сейчас Sublime Text 2, но что-то он не сильно и удобный, или я просто крворук. Вот подсветки этих самых внутрискобочный пространств или внутридивовых нет, а хотелось бы, так как часто убиваю день только из-за того, что не заметил не закрытый <div> в коде.
>> No.23748 Reply
>>23747
> Кстати, а чем вы редактируете код?
Notepad++.
> так как часто убиваю день только из-за того, что не заметил не закрытый <div> в коде
Используй отступы, Люк.
>> No.23749 Reply
File: h_1342611880_6720086_a964ae6f11.png
Png, 243.71 KB, 1600×1200 - Click the image to expand
edit Find source with google Find source with iqdb
h_1342611880_6720086_a964ae6f11.png
>>23747
Ну в любом случае, в дальнейшем рекомендую осилить "JavaScript: The Definitive Guide" Флэнагана.
> Sublime Text 2
Тоже им. Держи подборку плагинов как раз для твоих нужд http://net.tutsplus.com/tutorials/tools-and-tips/essential-sublime-tex[...]ions/
>> No.23750 Reply
>>23749
На что только не идут люди чтобы не пользоваться имэксом.
>> No.23751 Reply
>>23749
ЧТо за клавиша такая СР ?
>> No.23752 Reply
>>23751
Это Command Palette (Alt+C). По сути — быстрый доступ к пунктам меню.
>> No.23753 Reply
File: Fq7_0lfpyh8.jpg
Jpg, 84.12 KB, 782×1024 - Click the image to expand
edit Find source with google Find source with iqdb
Fq7_0lfpyh8.jpg
>>23748>>23749>>23752
Спасибо.
>> No.23945 Reply
>>23753
И так. Написал движок текстового квеста.
ЧТо он умеет?
В немного неудобную нелинейность.
В скрытые варианты ответов.
В несколько параметров, меняющихся от вариантов ответов и их суммы.
Вот http://rghost.ru/39548257
Покритикуйте мой код, няши. Вроде на это раз старался даже стиль отступов и всего такого выдерживать.
Оче нужны критики кода, пока я еще не приучился писать говно.
>> No.23947 Reply
>>23945
+
Жать только маленькую ноунейм кнопку слева снизу.
d++ означает переход просто на уровень вверх.
d=2 переход на уровень 2.
Зеленый текст - вы открыли скрытые ответы.
Один из скрытых открывается, если выбрать в первом блоке первый вариант.
>> No.23959 Reply
>>23945
> Оче нужны критики кода, пока я еще не приучился писать говно.
Почитай С. Макконнелла. У него есть пара глав, посвещенных как раз оформлению. Ну или можешь меня поспрашивать, я люблю поговорить о разном с разными людьми.
>> No.23960 Reply
>>23959
> посвященных
slffix
>> No.23961 Reply
>>23959
Замечательно. Как оформлять код, каких принципов придерживаться, где я их нарушил? :3
>> No.23963 Reply
>>23961
Да ты охуел, братишка. Во-первых, ответь мне на один вопрос: для чего нужно оформление кода? Какую функцию оно выполняет?
>> No.23964 Reply
>>23963
Ну. Эээ. Написал я строчку, быстро так написал. И отступы намалафил. Много отступов. Я просто когда это...
Повышает читабельность. Хм. Все.
>> No.23967 Reply
>>23964
А нахрена повышать читабельность?
>> No.23968 Reply
>>23967
Чтобы делать меньше ошибок. Ну и еще поддержка в будущем и всякое такое.
>> No.23971 Reply
>>23968
Верно отчасти.

Читабельность уменьшает время, которое требуется, чтобы понять твой код. А чем меньше времени требуется на его понимание, тем меньше времени требуется на его доработку. А чем меньше времени требуется на его доработку, тем быстрее заказчик получит готовую программу. А чем быстрее заказчик получит готовую программу, тем больше денег из гонорара можно будет положить себе в карман.
>> No.23972 Reply
То есть, идеально читабельный код — это код, который становится полностью понятен сразу, как только ты на него взглянул.

Двигаемся дальше?

Вообще, поздновато ты маленько меня спросил. Завтра бы с утречка...
>> No.23973 Reply
>>23972
Да. Полностью понятен это, наверно, слишком, но ок.
Ну я подожду до завтра, если что.
>> No.23982 Reply
File: 249564f905d65a29b9153a759a40dbc719cd3b29.jpg
Jpg, 1507.60 KB, 1747×1161 - Click the image to expand
edit Find source with google Find source with iqdb
249564f905d65a29b9153a759a40dbc719cd3b29.jpg
>>23945
Вместо присвоения переменной undefined, лучше использовать null. В дальнейшем undifined это может вызывать путаницу, поэтому так никто не делает, даже для заглушек.
Вместо кучи анонимных функций можешь выделить несколько отдельно, хранить их имена в массиве вместе с аргументами скажем, это если придерживаться твоей строения. Так будет проще понять что делается при вызове функции и легче изменять условия.
С отступами стало все лучше, уловил их суть, но некоторые блоки if else все еще выглядят непонятными, для них тоже используй отступы:
if(d == 3) {
     var imgdest = "resimg/an2.jpg";
    document.getElementById('mimg').src = imgdest;
};
if(relation>50)
   document.getElementById('mimg').src = "resimg/an3.jpg" ;
Гнаться за компактностью кода не нужно, делай его понятным, а то приходится выискивать где конец условия.
Попробуй оценивать читаемость так: если можешь с первого взгляда определить, что делает эта строчка, то все правильно. Вон у питонолюбов отступы вообще являются заменой фигурных скобок, посмотри как у них оформлены условия.
>> No.23985 Reply
>>23982
Спасибо. А чем плох undefined?
>> No.23986 Reply
>>23985
Смотри, при объявлении переменная уже undefined — в дальнейшем при отладке может вызвать много проблем. Есть у тебя в программе функция, которая может вернуть undefined, njulf будет не ясно, была она вообще вызвана или же нет. Вообще undefined лучше не использовать, а переменным присваивать значения сразу, если есть вариант неявного поведения.
>> No.23989 Reply
>>23986
> njulf
тогда
slowfix
>> No.24006 Reply
А я продолжаю.

Как же сделать, чтобы вникать в твой код надо было совсем недолго?

Проверяй свой код чужими глазами. Поставь себя на место того, кому понадобится твой код сопровождать и изменять под новые требования. Сколько ему времени понадобится на чтение? Как сильно ему придется напрячь свой мозг? В конце концов, понравится ли ему работать с твоим кодом? Лучше, конечно, если проверять будет другой человек, а не ты, представляя себя этим другим человеком.

Управляй сложностью. Делай так, чтобы для восприятия любой строчки в голове приходилось держать минимум вещей. Например, тех же переменных: объявляй переменные как можно ближе к месту, где они нужны, и ограничивай их видимость. Например:
    // Неправильно.
    employeesCount = 0;
    managersCount = 0;
    countEmployees(employeesCount);
    countManagers(managersCount);
    
    // Правильно.
    employeesCount = 0;
    countEmployees(employeesCount);
    managersCount = 0;
    countManagers(managersCount);
Дроби свой код на блоки (но не слишком мелко, а то, наоборот, увеличишь сложность). Выделяй блоки визуально, чтобы другой человек мог без труда пропускать детали, которые ему не важны в данный момент.
    // Хорошо.
    employeesCount = 0;
    {
        countEmployees(employeesCount);
    }
    managersCount = 0;
    {   // При первом чтении программист, который будет читать твой код,
        // сможет просто пропустить этот блок.
        countManagers(managersCount);
    }
По возможности используй общеизвестные формы и идиомы. Или хотя бы узнаваемые. Это уменьшит время на воссоздание в голове алгоритмов, которые ты использовал (читающий твой код просто вспомнит их).
    // Идеально.
    employeesCount = {
        ...  // Много-много действий.
    }
    managersCount = {
        ...  // Еще больше действий.
    }
    
    // Хуёво.
    x := i++;  // Знают только сионисты и то не все.
Код оформляют в том числе и для того, чтобы выделить его структуру. Я об этом уже говорил выше, но сейчас разберу подробнее. Программа — это не последовательный текст, который ты вбиваешь в компьютер. Программа — это весьма сложная структура, состоящая из базовых элементов языка и многочисленных связей между ними. Дерево синтаксического разбора — слыхал о нем? А текст — это всего лишь одно из представлений программы. Весьма убогое представление, должен сказать. Тем не менее, его убогость не освобождает тебя как программиста от обязанности эту структуру отображать. Более того, как я писал выше, ты должен управлять сложностью, а значит, давать читателю твоего кода возможность пропускать блоки, которые его в данный момент не интересуют. Да, чтобы делать это качественно и эффективно, тебе нужно знать особенности восприятия у человека (психофизиологию, там, эргономику и прочее). Кстати, этот абзац очень хуёво структурирован. Сможешь исправить?

Продолжу через пару часов.
>> No.24012 Reply
>>23986
Хорошо, буду по возможности избегать.
>>24006
Спасибо. Хорошие советы. на счет последнего абзаца, читается нормально, что в нем такого неструктурированного-то?
Начинается с описания общего элемента. Потом описание усложняется и выделяется интересующая нас отрасль (текст). Дальше рассказ о ней. В коде, возможно, и надо идти от частного к общему, но не в речи же.
>> No.24016 Reply
>>24012
> Более того, как я писал выше, ты должен управлять сложностью, а значит, давать читателю твоего кода возможность пропускать блоки, которые его в данный момент не интересуют.
Вот это в этом абзаце нарушено. Либо читаешь всё до последней буквы (даже если тебя интересует только "программа — это не текст"), либо пропускаешь всё.

Вот пример плохо структурированного кода:
    int skoka_soldat()
    {
            var officersCount = 0;
            var cursor = null;
            var entry = null;
            var aSQLResult = runSQL("SELECT * FROM OFFICERS");
            for (var cursor = new SQLCursor(aSQLResult);
                 !atEnd(cursor);
                 advance(cursor))
            {
                    var entry = recordAt(cursor);
                    if (entry.asBoolean('RETIRED')) continue;
                    officersCount++;
            }
            var privatesCount = 0;
            aSQLResult = runSQL("SELECT * FROM PRIVATES");
            for (cursor = new SQLCursor(aSQLResult);
                 !atEnd(cursor);
                 advance(cursor))
            {
                    var entry = recordAt(cursor);
                    if (entry.asBoolean('RETIRED')) continue;
                    officersCount++;
            }
            return officersCount + privatesCount;
    }
А вот то же самое, но более читабельно:
    int skoka_soldat()
    {
            var officersCount = 0;
            {
                    var aSQLResult = runSQL("SELECT * FROM OFFICERS");
                    for (var cursor = new SQLCursor(aSQLResult); !atEnd(cursor); advance(cursor))
                    {
                            var entry = recordAt(cursor);
                            if (entry.asBoolean('RETIRED')) continue;
                            officersCount++;
                    }
            }
            var privatesCount = 0;
            {
                    var aSQLResult = runSQL("SELECT * FROM PRIVATES");
                    for (var cursor = new SQLCursor(aSQLResult); !atEnd(cursor); advance(cursor))
                    {
                            var entry = recordAt(cursor);
                            if (entry.asBoolean('RETIRED')) continue;
                            officersCount++;
                    }
            }
            return officersCount + privatesCount;
    }
    
Надеюсь, понятно, почему нельзя писать код в одну строчку?

Человек редко запоминает что-либо с первого раза. Это особенность нашей психики. Весьма неочевидное следствие из этого пункта: имена переменных, функций и других элементов программы должны однозначно описывать, что они обозначают. Имя переменной должно однозначно описывать, что эта переменная содержит; имя функции должно однозначно описывать, что эта функция делает; имя класса должно однозначно описывать, что моделирует этот класс и т. д. Я подчеркиваю слово "однозначно" — имена "entry", "collect()" и "ItemAdapterFactoryBase" едва ли можно назвать удачными.

Сможешь сам вывести описанное следствие?

Да, кстати, еще один плюс имен, описывающих назначение/содержание программного элемента: отпадает необходимость читать код, вычисляющий данный элемент, потому что из его названия ясно, что он из себя представляет.

Взгляни, например, сюда и попробуй сказать, что этот код делает:
    
    var p = function(s) {
        var r = [];
        foreach(i in s) {
            if (18 <= i.q && i.q <= 25) {
                r.add(i);
            }
        }
        return r;
    }
    var q = function(c) {
        var r = mapFM(d.sql(...));
        r = c(r);
        return r;
    }
    write(q(p));
    
А теперь сюда:
    var filterYoungPeople = function(people) {
        var result = [];  // Не забывай про контекст. Когда программист
                          // будет читать это, его мысли гарантированно будут
                          // в контексте этой функции.
        foreach(man in people) {
            if (18 <= man.age && man.age <= 25) {
                result.add(man);
            }
        }
        return result;
    }
    var getAndFilterPeople = function(filterCriteria) {
        var result = mapFieldsToMethods(database.runSQL(...));
        result = filterCriteria(result);
        return result;
    }
    write(getAndFilterPeople(filterYoungPeople));
Ясно?

Оформление должно быть безобразным, но единообразным. Нет, это не вторая версия формулировки правила "по возможности используй общеизвестные формы и идиомы", это другое правило. Общеизвестных форм и идиом, применимых в одном и том же контексте, может быть несколько, но в пределах одной программы всегда должна использоваться только одна из них. Вариантов оформления имен существует по крайней мере два: camelcase ("employeesCount") и lowcase с подчеркиваниями ("employees_count") — но в программе должен использоваться только один. Вариантов расстановки фигурных скобок существует великое множество (на текущей строке, на следующей строке, на следующей и с отступом и т. д.), но в программе должен использоваться только один. И так далее.

Опять же, это особенность нашей психики: человек, когда видит код впервые, формирует у себя в голове определенную модель его восприятия (если текст в следующей строке начинается не с той же колонки, что и в предыдущей, то, значит, начался новый блок или закончился старый; если в начале строки стоит "var", значит, здесь идет объявление переменной; окончание неожиданно оборванной строки надо искать на следующей строке, отступив 8 знакомест и т. д.) и в дальнейшем просто применяет ее ко всему видимому коду. Это позволяет нам читать быстрее, но требует от нас определенного умственного напряжения в начале. Если код в разных местах оформлен по-разному, то человеку приходится каждый раз адаптироваться к новому оформлению (помнишь, я говорил, что человек ничего не запоминает с первого раза?), на что тратится много времени и сил. Лучше избегать различий в оформлении. Даже если ты придумал более эффективный вариант оформления, лучше продолжи писать в старом формате. Да, пусть код будет выглядеть безобразно, но единообразно.
>> No.24019 Reply
Не повторяйся. Если ты уже написал в названии функции, что она "count_employees", ни к чему писать то же самое еще раз в комментарии. Если твоя переменная называется "OldestEmployeeAge", ни к чему снабжать ее префиксом "ui" ("unsigned int"). Если ты аккуратно расставляешь теги в твоей системе контроля версий, ни к чему всю историю изменений дополнительно выписывать в начале каждого файла. Если ты уже выделяешь блоки отступами, нет смысла выделять их еще и фигурными скобками (то есть, да, открывающая фигурная скобка всегда должна находиться в конце строки перед блоком, а не в отдельной строке).

Не забывай, что твой код потом будут не только читать, но и редактировать.

Блядь, не используй табы! Выкинь эту хуйню нахуй! Я сказал, выкинь, чтоб я их не видел больше! У тебя "пробел" есть, хули тебе еще надо, блядь?

Не забывай, что твой код будут не только читать, но и редактировать. Я бы даже так сказал: скорее всего, твой код будут читать именно для того, чтобы его потом редактировать. Если некая функция хорошо отдокументирована, работает и ее контракт отлично подходит для текущей задачей, то вряд ли кто-то в нее вообще полезет (ну, кроме C++-ников, которые "хотят все контролировать"). А если она не подходит под текущую задачу, но есть надежда, что ее можно адаптировать, то в нее, конечно же, полезут и будут править. И тебе надо к этому хорошо подготовиться, чтобы тебе не икалось потом по ночам. Или икалось, но совсем недолго.

Поэтому пожалуйста, очень тебя прошу, не пиши вот так:
    /*******************************************************
     * VECTOR CO. CONFIDENTIAL                             *
     * K719-281-B912                                       *
     *                                                     *
     * Description: This module contains class modelling   *
     *   a searchable vector of profiles. Before using     *
     *   this class a profile database must be initialized *
     *   (see constructor) then default profile properties *
     *   must be set.                                      *
     *******************************************************/
Или вот так:
    this.someProperty     = STR_SOME_PROPERTY_DEFAULT   ;
    this.anotherProperty  = STR_ANOTHER_PROPRTY_DEFAULT ;
И уж тем более так:
    
    void GetExecutionPlans   (GetExecutionPlansResponse   & Response    , GetExecutionPlansRequest    & Request);
    void GetManagerStatus    (GetManagerStatusResponse    & Response    , GetManagerStatusRequest     & Request);
    void ApplyExecutionPlan  (ApplyExecutionPlanResponse  & Response    , ApplyExecutionPlanRequest   & Request);
Вообще, этот вопрос (как написать легко адаптируемый код) — это отдельная, весьма объемная тема, по которой написаны десятки книг и разработаны десятки методик. Естесственно, я не буду обсуждать его здесь. Я лишь коснулся тех его аспектов, которые касаются оформления кода — этого достаточно для моего поста.
>> No.24048 Reply
>>24019
Решительно отказываюсь понимать, почему тебе не нравится аккуратное оформление, табличность и выравнивание.

Если уж я и закладываюсь на то, что мои исходные тексты будут редактировать, то прежде всего хочу чтобы редактирующий 7 раз подумал перед тем как 1 раз отредактировать. При хорошо табулированном и оформленном исходном тексте вероятность этого повышается потому как без нарушения стиля такой текст править сложнее - перед выполнением труднозатратных операций человечишка имеет обыкновение задумываться "а оно таки действительно мне надо?". Во-вторых конечно же я хочу чтобы редактирующий полностью понимал мой замысел. Это произойдет в том случае, если он прочитает и поймет большую часть исходного текста, что при хорошем оформлении вероятнее.

У нас остаются еще так называемые инструменты автоматического редактирования - это всякие там рефакторинги, кодогенераторы и т.п. При аккуратно (пусть и не совсем стандартно) оформленном исходном тексте места работы подобного рода машин сразу бросаются в глаза - а это дополнительная информация о том, что происходило с текстом.
>> No.24058 Reply
>>24048
> аккуратное оформление
Там не аккуратное оформление, там бесполезная чушь на 10 строк.
> выравнивание
Нахуй не нужно и сильно мешает читаемости кода.
> хорошее оформление
Хорошее оформление - такое, которое не вызывает желания взять и вломить автору кода. Табы где-нибудь кроме отступа вызывают, как и бесполезные блоки комментариев.
> При аккуратно (пусть и не совсем стандартно) оформленном исходном тексте места работы подобного рода машин сразу бросаются в глаза - а это дополнительная информация о том, что происходило с текстом.
Я не понял, ты собираешься изображать из себя собаку на сене или всё-таки дашь код другим? Потому что в первом случае тебе нафиг не нужно никакое оформление, программист всегда узнает не свой код посередине своего, а во втором не нужны проверки.
Мимокрокодил
>> No.24060 Reply
>>24058
Какой линтер для js посоветуешь?

мимо-не-оп
>> No.24061 Reply
>>24058
Да.

>>24048
Более идиотского обоснования я еще не слышал.

Видимо, последний пункт требует пояснения. Твой код будут не только читать, но и править, а значит, не только скорость его чтения и понимания, но и скорость его правки должна быть максимальной. Проблема описанного тобой подхода в том, что скорость правки как раз-таки не максимальная. Даже если другой человек полностью восстановит контекст твоего исходного кода у себя в голове, ему все равно придется тратить лишнее время, чтобы изменить его логику.

Если ты хочешь запретить определенные действия с твоим исходником, то отзови права на запись в тех местах, которые по твоему мнению не подлежат правке (что человечество пока не научилось делать, поэтому следующий пункт); либо расставь в коде "грабли", которые ударят, если программист попытается сделать с твоим кодом заведомо ошибочные действия. Например, если ты хочешь, чтобы в классе, который наследуется от твоего "SimpleDialog", нельзя было переопределять метод "addWidget()", то пометь его в своем классе модификатором "final" ("не переопределяемый").

А запрещать или хотя бы осложнять законные действия над исходником больше подходит саботажнику, нежели профессионалу.

Да, что касается кодогенераторов. Это оффтопик, но я все же скажу, потому что чем раньше ты это поймешь, тем меньше говнокода успеешь нагенерировать.

Существует несколько классов программного кода:
1) Исходный. Он целиком и полностью определяет поведение программы, но машина не может исполнять его напрямую.
2) Объектный. Он также целиком и полностью определяет поведение программы, но в отличие от исходного кода, он может исполняться машиной напрямую. Его содержание однозначно определяется исходным кодом. Он может совпадать с исходным (например, в случае скриптовых ЯП).
3) Генерируемый. Это промежуточный код, который формируется сборщиком программы (системой, создающей объектный код из исходного) исключительно для своего удобства. К нему относятся, например, "объектники" ("*.o"), формируемые GCC на этапе компиляции. В теории выделять этот класс программного кода нет необходимости, но на практике иногда удобно иметь часть внутреннего кода, создаваемого сборщиком, под рукой. Например, в случае, когда часть исходного кода написана на C++, а часть — на DSL, из которого потом формируются некоторые заголовочные файлы — формально для работы над исходным кодом достаточно и файлов с текстом на DSL, но тогда Visual Studio не сможет правильно построить индекс, и навигацию по исходному тексту осложнится. Генерируемый код однозначно определяется исходным.
4) Автоматизированного доказательства корректности. Этот код не определяет поведение программы, но помогает отсеивать часть заведомо некорректных исходных кодов. К нему относятся, например, модульные тесты.

Это не все классы. Например, выделяют еще исходный код руководства пользователя и само руководство пользователя, но они уже иррелевантны тому, что я сейчас хочу сказать. А я сейчас хочу нарушить собственное правило, повторив его, но уже в новом ключе.

Не повторяйся. Если ты распространяешь свой исходный код по принципу "open source", то распространяй только самую необходимую его часть — ту часть, из которой потом можно будет восстановить всё остальное. Например, никогда не распространяй генерируемый и объектный коды.

Замечание 1: По принципу "open source" можно распространять код не всем, а только ограниченному кругу лиц. Например, себе.

Замечание 2: Исходный код и генерируемый часто путают, хотя отличить их друг от друга не сложно: если человек, который будет сопровождать твой код, сможет восстановить это, имея под рукой остальную часть кода, то это — генерируемый код. Если это никак невозможно восстановить, имея все остальное, то это — исходный код.
>> No.24064 Reply
>>24048
> При хорошо табулированном
Табулирование никогда не бывает хорошим. У одних они 8 символов у других 4 или 2 (или какой другой размер).
Поэтому код от табов зачастую распедорашивает к ебени матери.
(А за мешанину из пребелов с табами и в конце строк пробелы вообще хочется жестоко пытать и убивать.)
Только пробелы!
>> No.24065 Reply
>>24064
А как в Emacs сделать? Там только tab работает при indentation.
>> No.24067 Reply
>> No.24068 Reply
>>24048
Если ты имел здесь ввиду использование символа "\t", то повторяю: не используй, блядь, табы! Выкинь эту хуйню нахуй! Я сказал, выкинь, чтоб я их не видел больше! У тебя "пробел" есть, хули тебе еще надо, блядь?
>> No.24070 Reply
>>24068
Но ведь большинство редакторов заточены именно на работу с табами, как я понял. То есть таб удалится, например, за два нажатия клавиш, а пробельный "таб" - за 4 и т.д.
>> No.24071 Reply
>>24070
Большинство редакторов при нажатии на Tab умеет ставить пробелы и удаляет все за раз при нажатие на backspace, если отступ находятся в начале строки.
мимо-проходил
>> No.24072 Reply
>>24070
Вот же упёртый!
Табы изначально предназначались для... да хуй знает, для чего они предназначались. Суть в том, что стандартизированный отображаемый размер для них — это 8 знакомест. 8 ёбаных знакомест! Такой размер не годится ни для отступов (слишком много знакомест), ни для разметки (слишком мало, плюс размер фиксированный), ни в пизду, ни в Красную Армию.

И это еще ладно. Дело в том, что какой-то идиот встроил в IDE возможность менять отображаемый размер табов. А если в некоей софтине есть кнопка "сделать хуёво", то по закону 95% всегда найдется идиот, который её нажмет. В результате "\t" на разных терминалах не только ебически здоровый, но еще и меняется от терминала к терминалу, превращая код, аккуратно выровненный в Visual Studio 2005 у Васи Пупкина, в кровавую кашу у всех остальных разработчиков.

Не используй табы. Побереги своё здоровье.
>> No.24073 Reply
>>24072
> Табы изначально предназначались для... да хуй знает, для чего они предназначались
Для хранения таблиц в текстовых файлах во времена тотальной байтоебли, когда нельзя было позволить себе лишних 7 пробелов.
>> No.24074 Reply
>>24072
Тогда надо настроить ТР, чтоб по табу выдавал пробелы да и все. Кстати, как это в ST2 сделать никто не знает?
>> No.24075 Reply
>>24074
"translate_tabs_to_spaces": true в конфиг.
>> No.24078 Reply
File: 1330770474017.jpg
Jpg, 74.21 KB, 604×407 - Click the image to expand
edit Find source with google Find source with iqdb
1330770474017.jpg
>>24075
Спасибо.
>> No.24350 Reply
Доброго дня, програмач.
Не мог ли бы ты пояснить как работает регулярка
/(\d)(?=(\d\d\d)+(?!\d{1}))/g Используется она для добавления пробелов/запятых в больших числах потипу 6 789 976 879.
По идеи, она берет каждое четвертое число из общего. Оно стоит вначале (\d).
Но. что озжначает выражение (?=(\d\d\d)+(?!\d{1})) ?
Что после этого нашего самого числа должны идти группы чисел по три (?=(\d\d\d)+
Но (?!\d{1}) означает, что после каждой этой группы не должно идти число, верно?

Вот полная функция замены :
<input id="Input" type="text" value="+=43534"><input type="button" value="Test" onclick="ff()"> <script type="text/javascript"> var a = document.getElementById('Input'); function ff() { var re = /(?=\B(?:\d{3})+\b)/ var str = a.value; str2 = str.replace(/(\d)(?=(\d\d\d)+(?!\d{1}))/g, '$1 '); a.value = str2 } </script>
>> No.24351 Reply
>>24350
> /(\d)(?=(\d\d\d)+(?!\d{1}))/g
Сдается мне, что кто-то сделал что-то не так.
/(\d)(?=(\d{3})+(?!\d))/g В функции замены лишняя переменная re с ошибками.
> что озжначает выражение (?=(\d\d\d)+(?!\d{1})) ?
Означает, что после числа должна находится одна или более 3-х знаковых группы, но исключая 4-х знаковые, и как только регулярка удовлетворит это условие, то после числа ставится пробел; переходит к следующему числу и опять все заново, ну ты понял.
>> No.24352 Reply
>>24351
Лишнюю re забыл удалить от своих прошлых экспериментов.
> Означает, что после числа должна находится одна или более 3-х знаковых группы, но исключая 4-х знаковые
Эм. А разве наличие только 3-х знаковых не исключает 4-х знаковые?
>> No.24353 Reply
>>24352
Нет, будет отделяться все знаки, пока в конце не останется 3 знака, так как регулярку перестанет интересовать, что следует за последней трехзнаковой группой (2 или 1 знак), а в этом случае существует проверка на наличие за последней трехзначной группой другой (однознаковых групп) и если такая обнаруживается, то происходит смещение на один знак вправо без добавления пробела.
Вместе — это своего рода гарантия, что при отделении пробелом одного числа, дальше останутся только трех-знаковые группы.
>> No.24355 Reply
>>24353
Хм. А вот почему, если увеличить пробелы до двух и (?!\d{1}) тоже до (?!\d{2}), то получается ерунда? По идее, должно же проверить: "ага, перед этим на двух подряд местах нет чисел, пропускаем".

блин, я привык брать все в скобки выделением в текстовом редакторе. И несколько секунд туплю, почему у меня текст удалился, ане взялся в скобки в форме на борде
>> No.24357 Reply
>>24355
Потому что будет только проверка на двузнаковые группы же, а однознаковые игнорируются.
Алсо, пробелы роли не играют, можешь между чисел хоть тексты вставлять, регулярка уже прошла далее.
>> No.24358 Reply
>>24357
> только проверка на двузнаковые группы же, а однознаковые игнорируются.
Стоп, так у нас как раз же и есть два знака в нововставляемых пробелах? Извини, что совсем уж туплю. Но не мог бы ли ты пошагово описать как оно работает?
1222333444555 вот число. У нас (?=(\d\d\d)+ дает ловить только то, после чего идет группа чисел, кратная трем, по три. Сначала поймает 1222333444555 ткк за ней есть как минимимум одна тройка чисел. Потом 1222333444555 ткк за ней тоже есть как минимум тройка. Потом 1222333444555 и тд. по 1222333444555 - за ней последняя тройка.
А вот что делает (?!\d{1}) в упор представить не могу. Если одно в скобках вместе с (?=(\d\d\d)+ , то оно относится к нему, да? Но по моей логке оно тогда должно принять только последнюю тройку и поймает только 1222333444555.
>> No.24359 Reply
>>24358
Ладно, сейчас попробую алгоритм объяснить. \d — это число, притом однознаковое.
число 1222333444555 разбивается так. Первый проход: 1(222)(333)(444)(555) — это соответствует условию, что есть несколько групп с тройными числами. Значит мы берем первую группу (\d), что в начале и заменяем ее на "1 ", далее происходит следующее (ведь в конце стоит /g, инначе бы остановилось на первой итерации), первая единица с пробелом уже игнорируются и мы получаем число 222333444555, оно будет разбито так 1 2(223)(334)(445)55, если бы не было (?!\d{1}) тогда бы он опять заменил первую двойку на двойку с пробелом, ведь условие "если будет одна или более трехзнаковых групп", но благодаря последнему условию, после последней трехзнаковой группы не может быть числа, а у нас там 5, значит происходит сдвиг и новая итерация начинается со следующей двойки 1 22(233)(344)(455), снова не подходит, следующая 1 222(333)(444)(555), подходит, значим берем последнюю двойку и меняем ее на "2 ", и так до конца, последняя итерация получит недобор в группу для трех чисел.
>> No.24360 Reply
File: H2toZKUlvwE.jpg
Jpg, 115.09 KB, 724×1024 - Click the image to expand
edit Find source with google Find source with iqdb
H2toZKUlvwE.jpg
>>24359
О. Спасибо. Ты сделал мой день :3
ну точней я просрал его на обдумывание этой и других регулярок
>> No.24361 Reply
File: lrg.jpg
Jpg, 121.92 KB, 500×656 - Click the image to expand
edit Find source with google Find source with iqdb
lrg.jpg
>>24360
Почитай на досуге, если будет желание, лишним не будет. Даже на русском было.
>> No.24362 Reply
>>24361
Почему-то проиграл с обложки.
Спасибо, я слышал о этой книге. Но у меня слишком мало времени и по регуляркам я пока просто пробежусь и уловлю отдаленную суть.
В планах было уже в это время переходить на жквери, а я до сих на джавоскрипте топчусь. Хотя, мне это нравится, только темп слоупока печалит. Дико жалею, что еще в школьном возрасте забросил екшнскрипт потому, что не нашел нормальных учебников и сраный адобефлеш показался слишком запутанным. А еще в чуть ли не дошкольном возрасте нашел брошурку по паскалю, шишка сразу встала, но... У меня не было пеки. Вроде, даже на бумажке программировал, лол.
И теперь понимаю, что моя вузовская профессия дико бесит и мне подходит кодерство, по крайней мере по характеру, за ум пока молчу. И как все эти мелочи могли повернуть все иначе.
>> No.24363 Reply
>>24362
Не торопись перекатываться с чистого JS на фреймворки, это всегда успеется, а подводные камни останутся.
В дальнейшем темп обучения увеличится же, а jQuery — документация под мышку и творить, ничего сложного, разве что плагины сам писать начнешь.
Если совсем скучно станет есть node.js и можно запилить себе гостевуху.
>> No.24366 Reply
>>24362
поиграй c gskinner.com/RegExr/ , вещь оче полезная в обучении регуляркам
>> No.24367 Reply
File: n-sxmCXK720.jpg
Jpg, 129.05 KB, 778×1024 - Click the image to expand
edit Find source with google Find source with iqdb
n-sxmCXK720.jpg
>>24363
>>24366
Спасибо, няши, за внимание.
>> No.24444 Reply
File: cf7343ede9f192a98339423954df77ff.jpg
Jpg, 753.52 KB, 1269×1804 - Click the image to expand
edit Find source with google Find source with iqdb
cf7343ede9f192a98339423954df77ff.jpg
Доброго всем дня.
Вот. Домучал свой движок квеста. Мой код ужасен. Слишком медленно двигаюсь вперед, такое ощущение, что даже застрял. Вся суть работы - метод тыка.
Ладно. Извините за плохое настроение. Хотел задать много вопросов, но, наверно потом.
Вот движок. Покритикуйте, няши.
http://rghost.ru/39904510
вроде рабочая версия. хотя хз. по каким-то мистическим законам он перестает работать после каждой строчки кода и пока не получит свою порцию издевательств не успокоится
В любом случае, хоть я и не доволен собой, но рад занятию.
>> No.24499 Reply
>>24444
А, вот куда ты пропадал, мне твой код нравится теперь больше, со временем стиль выработаешь, надеюсь. Поля с параметрами сбрасывает. Ты бы описание делал того, что добавил и изменил.
Продолжай, хороший учебный проект.
Как дебажишь код?
>> No.24502 Reply
File: 1343549144774.jpg
Jpg, 80.29 KB, 724×1024 - Click the image to expand
edit Find source with google Find source with iqdb
1343549144774.jpg
>>24499
Спасибо, хоть кто-то заметил.
> Поля с параметрами сбрасывает
Что сбрасывает? Я поставил регуляркой небольшую защиту от дурака. Ткк я как мудак запихиваю данные с того поля прямо в функцию привет xss , то должна быть валидная инфа чтоб не обвалить все работают выражения потипу ++ +=123 /=123 *=123.
Хотел написать фак по движку, но настроение упало и подумал, что потом.

> Параметр 1 Параметр 2 - модифицирует внутренние переменные, если потом в квесте выбрать этот вариант ответа.. Ну там здоровье и мана, например или отношение и деньги. Что придумаешь в общем. Планировал возможность расширения числа параметров прямо в движке. Потом допилю, возможно. Принимает выражения типа ++ = +=123 /=123 *=123.
> Пер. на: С текстом:
при выборе данного варианта квест перейдет на соответствующий эпизод с соответствующим входным текстом. В первое поле можно вводить ++ - просто переход на эпизод ниже или +=123. Во второе только цифру.
> Скрытый:
> ^^^
> В блоке: Текст: Par0: Par1:
Делает вариант скрытым. открывается только если до этого в соответсвующем блоке выбрали соответсвущий ответ когда-то или же один из параметров <> заданого числа.

Долго пропадал, потому. что пилил это говно, самому стыдно...

Дебажу в основном методом тыка. Выглядит это так. Я пишу часть кода. Нифига не работает. Я с пол дня пытаюсь заставить его работать. Ничего не получается. Вторую половину дня я заново пишу этот код только построчно с нуля в отдельном файле. Все работает. Запихиваю в общий код. Снова не работает. Нахожу какую-то идиотскую ошибку и радуюсь потраченному на три строчки кода дню. Ну и фаербаг недавно подключил, до этого в консоле оперы ошибки смотрел. В опере иногда и удобней даже.
>> No.24503 Reply
>>24502
> Спасибо, хоть кто-то заметил.
Давно приметил, руки никак не доходили.
> ++ +=123 /=123 *=123
А, вот что он ждет. Все, тогда все нормально. Я сегодня невнимательный.
> Хотел написать фак по движку, но настроение упало и подумал, что потом.
Да, вот это не помешало бы, а то сразу не понятно как все работает, а копаться в коде сейчас лениво.
> Долго пропадал, потому. что пилил это говно, самому стыдно...
Главное, что не бросил, в любом случае этот код оставь, в дальнейшем сравнивать будешь, оптимизировать.
> Ну и фаербаг недавно подключил, до этого в консоле оперы ошибки смотрел. В опере иногда и удобней даже.
Надеюсь, хоть результаты функций и прочее в консоль выводишь? Для обучения лучше весь код утыкать console.log/assert/err и уже там отслеживать несоответствия — помогает быстрее локализовать проблему.
>> No.24504 Reply
>>24503
В фаере ввожу наблюдения. А так чаще всего алертом.
В принципе, я вот вверху и написал как все работает.
Хотелось бы добавить более гибкое управление скрытыми ответами и настройку показываемого изображения, но, наверно, ты прав, надо бросать этот код и начинать другой.
В планах еще потренироваться в жабоскрипте с таймерами и анимацией немного. Поделать этих самых выпадющих менюшек. И, думаю, после этого переходить на жквери уже и/или верстать шаблоны как макак.
Ну и присмотреться еще к этому самому ООП, хотя бы пару статей прочитать что это за птица подробней.
>> No.24505 Reply
>>24504
> И, думаю, после этого переходить на жквери уже и/или верстать шаблоны как макак.
То есть ты на фронт-энде решил остановится?
> Ну и присмотреться еще к этому самому ООП, хотя бы пару статей прочитать что это за птица подробней.
JS не самый удачный способ начать знакомство с ООП, хотя и не самый плохой, у тебя опыт с другими объективно-ориентированными языками был?
>> No.24506 Reply
File: 1335735023152.jpg
Jpg, 185.17 KB, 470×747 - Click the image to expand
edit Find source with google Find source with iqdb
1335735023152.jpg
>>24505
1. Думаю, что да. У меня еще нет цельного видения фронт/бекэнда. Но изучать новое мне пока нравиться больше, чем лепить тридцать костылей и обрезать себе руки чтоб заставить что-то работать в ишаке для куховарок.
2. Нет. Это мои первые потуги в программировании вообще. Ну если не считать школьно-универской недопрограммы по бейсику .
>> No.24507 Reply
File: 1267468811765.jpg
Jpg, 29.05 KB, 469×323 - Click the image to expand
edit Find source with google Find source with iqdb
1267468811765.jpg
>>24506
До jQuery (можно и параллельно) попробуй познакомится все же получше с нюансами ООП в js, да и языка в целом, там много подводных камней, кажется была пара годных статей на эту тему на том же хабре.
> Думаю, что да. У меня еще нет цельного видения фронт/бекэнда.
Сейчас серверную часть особые ценители тоже на js пишут, так что в будущем тебе тоже скучно не будет.
Удачи тебе, Оп.
>> No.24508 Reply
>>24507
Спасибо :3
И тебе удачи.

Как раз статьи по ООП с хабры висят во вкладках. Все никак глаза руки не дойдут.

по серверную тоже слышал, даже читал статью как крутые дядьки высконагруженный проект по нему пускали. Но там было все настолько круто, что я ничего не понял. Ну кроме того, что уже можно хайлоад ворочать, если под напрячься.

Одновременно видел и мнения, что джаваскрипт не нужен. Даже манифест какой-то...
>> No.24510 Reply
>>24508
> ООП
> с хабры
Этот мир проёбан.
>> No.24511 Reply
File: 125631135376770.jpg
Jpg, 44.82 KB, 500×363 - Click the image to expand
edit Find source with google Find source with iqdb
125631135376770.jpg
File: 1256311353767.jpg
Jpg, 44.82 KB, 500×363
Your censorship settings forbid this file.
unrated
>>24510
А я помнится начал свое погружение в ООП со книжки Страуструпа.
>> No.24512 Reply
>>24508
Проект - мыло сру?
>> No.24513 Reply
>>24510
А что не так? Нет времени облаживаться толстыми книжками для каждой темы по отдельной. Надеюсь, в будущем еще и обложусь, и вникну.
>>24512
Эм, что? Я не знаю.
>> No.24514 Reply
>>24513
> Надеюсь, в будущем еще и обложусь, и вникну.
А вот это вряд ли. Как показывает практика, если не сел сейчас - то уж в будущем не сядешь точно.
>> No.24515 Reply
File: q5TKcqtqlX4.jpg
Jpg, 136.25 KB, 736×1024 - Click the image to expand
edit Find source with google Find source with iqdb
q5TKcqtqlX4.jpg
>>24514
Ну почему это? Как только решу заняться этим, так и сразу. А сейчас прост обойду практику в сием деле стороной, дабы не закреплять вредные привычки.

Хм. Ну вот тогда рилейтед вопрос. Как бы вы сделали базу моего же текстового квеста. Мой массив имеет структуру:
                            `var questions = [`
           
                            `{`
           
                          `question :['Текст блока'],`
        
                    `answers : [`
     
              `['Текст варианта ответа', [функция параметра, функция параметра], функция указателя перехода, скрыт ли?],`
     
    `]`
      } ]; Приходится запоминать, на каком месте где, что. Чтоб вызвать второй параметр первого блока с первого ответа questions[0].answers[0][1][1]
>> No.24516 Reply
>>24515
Уф. Чего его так распидорасило.
var questions = [
   {
  question :['Текст блока'], 
  answers : [
      ['Текст варианта ответа', [функция параметра, fфункция параметра], функция указателя перехода, скрыт ли], 
  ] 
   }
];
>> No.24518 Reply
>>24516
Потому что надо писать:
два бэктика
код
два бэктика
>> No.24519 Reply
File: 1c61622a177c685ae1e64633aefb87be.jpeg
Jpeg, 36.20 KB, 300×654 - Click the image to expand
edit Find source with google Find source with iqdb
1c61622a177c685ae1e64633aefb87be.jpeg
>>24516
Я бы сделал так, более наглядно. На скорую руку, но в целом двигаться можно от этого:
// Конструктор вопроса, принемает текст вопроса.
var Question = function(quest) {
  this.text = quest; // текст вопроса
  this.answers = [] // Массив ответов
};

// Функция создания ответа, принимает текст ответа, массив параметров, функцию перехода и необязательный аргумент скрытия ответа
Question.prototype.createAnswer = function(answ, af_params, f_next, b_hide) {
  b_hide = b_hide || false;
  var answer = {
    text: answ, // Текст вопроса
    params: af_params, // Массив функций параметров
    next: f_next, // Функция перехода
    hide: b_hide // Скрыт ли
  };
  this.answers.push(answer);
};

// Функция удаления ответа
Question.prototype.removeAnswer = function(index) {
  this.answers.splice(index, 1);
};
Использовать:
var q = new Question("Question text.");
q.createAnswer("Answer 1", [
    function () {
      a++;
    },
    function () {
      b--;
    }
  ], next_fun);

q.answers[0].text;
q.answers[0].params[2]();
q.answers[0].hide;
>> No.24520 Reply
>>24519
> f_next
> b_hide
А не венгр ли ты, котанчик?
>> No.24521 Reply
>>24520
Использую редко и только для аргументов функции. В остальных случаях считаю это избыточным.
>> No.24528 Reply
>>24072
Доброчну этого сэра. Только пробелы, только хардкор!
>> No.24532 Reply
>>24507
Какая связь между jQuery и ООП?
Жаваскрипт вообще ОБЪЕКТНЫЙ, а не объектно-ориентированный, это разные вещи тащемта.

Основное назначение jQuery - это значительное упрощение работы с DOM и AJAX.
Он позволяет оборачивать набор элементов (или один, разницы нет) в объект jQuery и унифицировано манипулировать их свойствами, менять их положение в дереве DOM, удалять, создавать новые элементы, и совершенно не париться особенностями браузеров и прочей херней.
C аяксом такая же история. Упрощает, унифицирует, делает кросс-браузерным.
Рассматривайте jQuery именно с этой стороны и будет вам счастье. UI и плагины это уже свистелки и перделки, но бывают весьма годные.
http://jquery.malsup.com/form/
http://github.com/carlo/jquery-base64
http://malsup.com/jquery/block/
http://archive.plugins.jquery.com/project/caret-range
http://www.jquery-plugin.buss.hk/my-plugins/jquery-caret-plugin
http://teddevito.com/demos/textarea.html
https://github.com/douglascrockford/JSON-js
http://www.asual.com/jquery/format/


Напоследок для ОПа и стремящихся:

ООП - Гради Буч http://rghost.ru/39969106
СУБД - Кристофер Дейт http://rghost.ru/39969129

Читайте классику, посоны, вся остальная литература по этим темам на 99% является производной от этих трудов.
>> No.24533 Reply
>>24532
Забыл написать, что jQuery выбирает элементы с помощью CSS3-селекторов, что несомненно вин.
>> No.24536 Reply
File: -hNHTl9PTkQ.jpg
Jpg, 146.55 KB, 883×1024 - Click the image to expand
edit Find source with google Find source with iqdb
-hNHTl9PTkQ.jpg
>>24519
Неплохо. Спасибо.
>>24532
Мы там отдельно о жквери и ООП говорили.
За подборку спасибо.
>> No.24549 Reply
>>24515
доброчую mjv-art, а буры помойки
>> No.24597 Reply
File: 13043672140806.jpg
Jpg, 104.45 KB, 1280×960 - Click the image to expand
edit Find source with google Find source with iqdb
13043672140806.jpg
Ну вот, после трех потраченных дней мамке был день рождения + я решил выпить пива, бррр, отвык уже. И как я раньше мог его столько пить. Или это из-за посаженной печенки так хреново опосля
Написал анимацию ПУЗЫРЬКОВ! Сначала это должен был быть крутой статус бар для маны там или жизни пузырящейся, но вот вышло, что вышло. Не много, но сейчас еще попытаюсь написать хоть и с примерами слайдер и прикрутить как-то. А в максимальном плане - АКВАРИУМ епта.
http://rghost.ru/40001536

Код небольшой, найдите мои изьяны, няши.


>>24549
> mjv-art
О, действительно годнота. Что такое буры вообще?
>> No.24599 Reply
>>24597
+ немного подправил. Странно, что все браузеры при вызове функции, которая обьявляется после работали нормально, а мозила - нет.
http://rghost.ru/40003994
>> No.24600 Reply
>>24599
У лисы видимо, внутренние функции определяются по мере прохода. Хотя точно не скажу, не сталкивался с таким ни разу, стараюсь выносить все функции в начало кода, если возможно.
А почему не использовал двумерный массив вместо трех koef?
Ты еще не смотрел в сторону canvas?
>> No.24601 Reply
>>24600
> А почему не использовал двумерный массив вместо трех koef?
Да просто сразу все умножалось на один koef, но по ходу дела выяснилось, что так не ок.

>>24600
> Ты еще не смотрел в сторону canvas?
Нопе. Пока даже слабо представляю что это.


И еще вот сейчас намучался. Почему оно не хочет ставить сеттер?
Вот кидаю я в тело функции
``this.set = function(newset) {
   interval = newset;
   };``
Создаю по ней
``var ff = new addBar('barContainer', 50, 200, 200, 200, 1)
ff.set(22)``

И нифига... Вроде внутри функция и исполняется, но ни на что не влияет. Делаю же, вроде, как во всех примерах.
>> No.24602 Reply
>>24601
> Нопе. Пока даже слабо представляю что это.
Довольно занятная вещь, рекомендую к изучению, можно сделать много интересного.
Если я тебя правильно понял, то в функции ff ты присваиваешь `this.set?
Тогда — this ссылается не на функцию, а на глобальный объект window.
>> No.24603 Reply
>>24602
> Довольно занятная вещь, рекомендую к изучению, можно сделать много интересного.
Да, конечно, еще доберусь.

>>24602
> то в функции ff ты присваиваешь `this.set?
Эм. Нет. this.set я кидаю в function addBar.
>> No.24605 Reply
>>24603
> Эм. Нет. this.set я кидаю в function addBar.
А это я невнимателен. Пропустил строку.
Ну сразу скажу, что методы для объекта лучше присваивать через прототипы. А касательно твоего случая:
в объекте не будет переменной interval, она существует только на момент исполнения конструктора. Чтобы интервал был в объекте его так же надо объявлять через this.interval, все что через var, будет не доступно.
>> No.24606 Reply
>>24604
Эм. А почему тогда вот тут все работает? Потому, что он в конце таки дергает функцию user.getFullName() , которая тоже с this обозначена? И как мне создавать свой конструктор, чтоб была возможность брать/изменять параметры, а то я уже подзапутался?
```function User() {
  
   var firstName, surName;

   this.setFirstName = function(newFirstName) {
firstName = newFirstName;
   };

   this.setSurname = function(newSurname) {
surname = newSurname;
   };

   this.getFullName = function() {
return firstName + ' ' + surname;
   }
}

var user = new User();
user.setFirstName("Петя");
user.setSurname("Иванов");

alert( user.getFullName() ); // Петя Иванов```
>> No.24609 Reply
>>24606
Я не пойму просто как ты проверяешь его. Замыкание же, я не зря сказал, что в объекте это поле недоступно. Так что работать можно только внутри, плюс у тебя в коде нужно обновить таймер при установке нового интервала. Если объявляешь переменную через var то и дергать ее будешь через функции, если через this, то сможешь работать с самим полем. Здесь все через this, потому что используются внутренние переменные, через прототип к ним доступ не получить.
>> No.24611 Reply
>>24609
Эм. Ну ладно, буду разбираться.
>> No.24617 Reply
>>24601
Ёб твою дивизию. Перенос строки перед и после двух бэктиков ставить нужно.
>> No.24618 Reply
>>24617
this.set = function(newset) {
    interval = newset;
    };
>> No.24684 Reply
File: 1331577275110.jpg
Jpg, 229.73 KB, 1600×1200 - Click the image to expand
edit Find source with google Find source with iqdb
1331577275110.jpg
>>24617
Ок ок.


Допилил к пузырькам ПОЛЗУНКИ. И да. Теперь пузырьки цветные. Навешал на ползунки тыщи евент листенеров, это ок? В чужом примере бело иначе, всплытием он определял расстояние слайдера от левого края и от этого отталкивался. Насколько я не прав?
Так же хотел применить эти ООП, получилось как всегда.

http://rghost.ru/40031823
>> No.24697 Reply
>>24684
Оп, меня радуют твои успехи, весь код стал понятный, читабельный. Какие дальше планы?

Алсо, для проверки на undefined лучше использовать конструкцию вида if (typeof foo !== "undefined"), при обращении к несуществующему полю объекта все работает, но в других случаях твоя конструкция будет выкидывать исключение. И в однострочных условиях можно опустить фигурные скобки.
>> No.24698 Reply
File: 10772430.jpg
Jpg, 213.31 KB, 500×964 - Click the image to expand
edit Find source with google Find source with iqdb
10772430.jpg
>>24697
Спасибо. Ты меня очень обрадовал :3

В планах сделать еще раскрывающуюшься... раскрывающююшься... В общем, выпадающую плавную менюшку, а то что-то все мои поделки слишком оторванные от реальности.
И потом/в период таки навернуть книжку или хотя бы побольше статей по ООП. Сейчас вот совсем еще не понимаю, зачем еще что-то кроме конструктора new? Ладно прототипы, что-то отдаленно мерцает в сознании, хоть сейчас это для меня лишь "вот записать функцию не в самом конструкторе, а рядом и потом привязать прототипом. Только нафига?". Но почитал статью на жабоскрипт.ру - с плавного описания основ сразу же на костыли какие-то эмуляцию классов каких-то, наследование...

Наверно, надо переходить на что-то действительно жизнеспособное. Что там востребовано? Менюшки, формы всякие...
Или... Очень вкусная идея - геймдев для всяких андрюш и сифонов. Но это еще рано.
> для проверки на undefined лучше использовать конструкцию вида if (typeof foo !== "undefined")
Спасибо, надо будет запомнить.
> И в однострочных условиях можно опустить фигурные скобки.
Знаю, но у меня это почему-то вызывает стресс.

И да. Почему так часто встречается это foo?
>> No.24699 Reply
>>24698
> Но почитал статью на жабоскрипт.ру
На сколько я помню, там большинство статей написано не о лучше книжка, мозги прочистит, можешь даже ее медленно читать выбирая лишь нужное.
> И потом/в период таки навернуть книжку или хотя бы побольше статей по ООП.
Как тут писал один анон у js не совсем объектно-ориентированный, так что надо будет выбирать с умом, и лучше даже взять другой язык. Не обязательно конечно, но так будет менее болезненно и хороший толчок, особенно если ты собрался сменить направление.

Касательно реальности — можешь попробовать писать userscript-ы, вот уж где реальные задачи, заодно познакомишься с ajax-ом.
> И да. Почему так часто встречается это foo?
Общепринятое обозначение чего-то не существующего, используется для того, чтобы не путаться в реально существующих переменных и те, что написаны для примера.
>> No.24700 Reply
>>24699
> не о лучше книжка,
Но лучше книжка?

Менять направление мне не особо хочется, расширить разве что. Да и рано, еще не до конца и в этом всем разобрался.
>> No.24701 Reply
>>24700
> Но лучше книжка?
Да, видимо, надо спать идти.
Просто в дальнейшем для экспериментов может пригодится простенький веб-сервер, не вечно же со статикой работать. Впрочем, геймдев сейчас активно использует htm5 и js, спецификаций в интернете достаточно, дерзай.

Не знаю кому как, но я бы например начал перекатываться куда-нибудь. Напомни ОП, ты для какой цели взялся за js и html: для души или деньги тоже имею место быть?
>> No.24702 Reply
File: 1345679973331.jpg
Jpg, 195.63 KB, 934×747 - Click the image to expand
edit Find source with google Find source with iqdb
1345679973331.jpg
>>24701
Деньги для души.
Да, финансы особенно сейчас очень важны и даже критичны, через месяц-второй мне надо будет или уебывать грузчиком, или еще кем-то... Хотелось бы вот куда примоститься по кодингу, но кому я надо. Почитать интернеты, там себе в подмастерье с мин окладом набирают, и там. А в моем мухосранске нафиг я никому не надо, всем "Более года работы. Знание жквери, пехопе, ассемблера, устройства дверных ручек, ответа на вопрос смысла жизни, вселенной и всего такого".
>> No.24703 Reply
File: f6c9eecd475ebe2746f243068977f9ad.jpg
Jpg, 116.50 KB, 775×760 - Click the image to expand
edit Find source with google Find source with iqdb
f6c9eecd475ebe2746f243068977f9ad.jpg
>>24702
Не отчаивайся анон, качай скиллы в любом случае — получается хорошо. Несколько раз видел вакансии на удаленку, оклад был мелкий, но ведь ради опыта. Поищи, там обычно высылают тестовое задание сверстать что-нибудь, как раз попрактикуешься. Плюс у тебя преимущество, что ты начал с чистого js потому что:
1) гораздо проще изучать фрейморки зная язык
2) многие кидаются сразу на jquery и это чревато жутким говнокодом.
>> No.24704 Reply
File: 1331448045107.jpg
Jpg, 122.73 KB, 621×800 - Click the image to expand
edit Find source with google Find source with iqdb
1331448045107.jpg
>>24703
Да, но у меня есть минус- я не касался еще не одного фреймворка.
На удаленку кидаю свои вакансии иногда, в ответ - тишина. Не знаю, может из-за того, что я не особо свои умения коих нет нахваливаю.
А так, спасибо, вы не хило меня поддерживаете. Тему перечитывать приятно :3
>> No.24753 Reply
File: 12497603867278572.png
Png, 173.92 KB, 400×500 - Click the image to expand
edit Find source with google Find source with iqdb
12497603867278572.png
Уф. Настолько тривиальная задача и так намучался. Собственно вот, простая, но хоть уже наконец-то работающая менюшка:
http://learn.javascript.ru/play/05iHU

Это капец. Сначала я день убил, сооружая какую-то монструозность, почему-то пытаясь сделать все 1 таймером. Это было почти получилось, но настолько нелепо выглядело. что решил начать заново. Чтоб снова не наступать на грабли, подглянул чужую реализацию. Странно, но для такой, в принципе, несложной для специалиста задачи в интернетах очень мало решений на чистом джаваскрипте. С первых двух страничек выдачи нашел штуки три только, из них мне подходили две и одна была ужасней моей первой.
В общем, хоть у меня и был пример, но намучался. Особенно с обработчиками событий... Зато вот научился удобно передавать значения через свойства обьекта, или что оно там. Статьи говорят, что можно добавлять лишь зарезервированные свойства, а как я тогда успешно понапичкал всякие 'subList.maxh =' ?
Сначала я вместо делегирования просто отсеивал блоки по (if) и удивлялся, почему оно себя так странно ведет.
Потом еще оказалось, что мозила не умеет в абсолютное позиционирование, если родительский элемент ячейка таблицы. Тоже сразу не понял. что это именно из-за этого. Кстати, чего столько срача на тему таблицы вс дивы, если можно задать табличное отображение в цсс и не портить ороро семантический код?
По идеи, не меняя код можно создавать многоуровневые вложенные меню. Но почему-то, если так сделать, то снова обработчики событий шалят. На onmouseover все прекрасно разворачивают, а onmouseout то ли не видят, то ли неправильно ловят...
В общем, подзапутался я с этими обработчиками.
Ну, хоть что-то.
>> No.24754 Reply
>>24753
Тред не читал, ты специально сторонние библиотеки не используешь? Тот же jquery, например?
>> No.24755 Reply
>>24754
Да. Рано еще, я думаю.
>> No.24756 Reply
File: obi_wan_kenobi.jpg
Jpg, 11.16 KB, 360×236 - Click the image to expand
edit Find source with google Find source with iqdb
obi_wan_kenobi.jpg
>>24755
Постигать javascript начиная с jquery - плохо.
Для тебя время уже пришло.
>> No.24757 Reply
File: 1322609589457.jpg
Jpg, 171.19 KB, 734×1200 - Click the image to expand
edit Find source with google Find source with iqdb
1322609589457.jpg
>>24756
>>24756
Спасибо за переоценку меня, Оби Один, но я еще не чувствую себя готовым. И только понял, что не прочитал еще не одной книги по джаваскрипту.
Вот, да. Теперь моя задача - осилить учебник. Взгляд пал на всем известного Фленагана, только вот не могу 6 издание на рюске найти. Если не найду, то возьму что-то другое.
Как только закончу книгу, думаю, тогда пора и за фреймворки садиться.
>> No.24759 Reply
Мимоспрошу: почему хром может игнорировать манифест в .user.js? Все атрибуты он лепит сам по умолчанию. Блин, во всех остальных скриптах все работает как положено, скопипащу себе - не работает.
>> No.24760 Reply
>>24759
Кодировка с BOM хрому не нравилась.
>> No.24823 Reply
File: 1345681267874.jpg
Jpg, 764.95 KB, 3508×2480 - Click the image to expand
edit Find source with google Find source with iqdb
1345681267874.jpg
Читаю 5 издание фленгана. На 6 забил, ткк не нашел.
Очень медленно...
Частично из-за волнений с началом нового говноучебного года и зачем я туда только хожу , частично из-за тупоголовости.
Пока просто читаю и редко лезу в редактор проверить только всякие фокусы с книжки.

Кстати, если у кого-то есть подходящие задания для моего уровня нихуя не умеющего почти - кидайте, а то из-за всего этого в голову ничего толкового не приходит... как же я ненавижу свой универ и вообще мир
>> No.24824 Reply
>>24823
Запили игру Жизнь, например. Или какой-нибудь куклоскрипт изобрети, если есть желание поработать с более реальными задачами.
>> No.24826 Reply
>>24824
560 строк говнокода на чистом JS + 40 строк html.

мимо-писавший-жизнь-на-js-от-нечего-делать
>> No.24827 Reply
File: 133408375970700s.png
Png, 43.02 KB, 183×200 - Click the image to expand
edit Find source with google Find source with iqdb
133408375970700s.png
ОП, ты заебал себя недооценивать. Учи jquery!
>> No.24828 Reply
File: y0sqmU0gAJk.jpg
Jpg, 66.14 KB, 566×810 - Click the image to expand
edit Find source with google Find source with iqdb
y0sqmU0gAJk.jpg
>>24824
> игру Жизнь
Не осилю. Я даже не понимаю как она вообще работает.
>>24824
> куклоскрипт
Думал о этом. Таки да, надо будет.

>>24827
Дочитаю книгу и сразу, думаю.
Но вот это оче мдленно. За три дня только около 200 страниц.
>> No.24829 Reply
>>24828
По-моему, все эти книжки лучше использовать как, ну, справочники. Я б просто взял задачку, начал писать, а по ходу дела бы подглядывал. Ну, или читать, а по ходу дела пописывать.
Это... слушай, можешь оставить какой-нибудь контакт? А то тут неудобно спрашивать.
>> No.24830 Reply
File: byUYhSk82So.jpg
Jpg, 147.20 KB, 1280×602 - Click the image to expand
edit Find source with google Find source with iqdb
byUYhSk82So.jpg
>>24829
Ну, пока я не жалею, на некоторых элементарных вещах расставило точки над і. А вот продолжать практиковаться надо, да.
держи: bakabacca@gmail.com и 616364083
>> No.24839 Reply
>>24826
560 строк — это ли не дохуя? Там же наивнейшая реализация в 100 уложится. Ну и плюс отрисовка — ещё строк 100 от силы.
>> No.24840 Reply
File: 132426056113.jpg
Jpg, 701.59 KB, 1920×1200 - Click the image to expand
edit Find source with google Find source with iqdb
132426056113.jpg
>>24839
лол. Так-то да, но я делал замкнутое поле, а это дополнительный говнокод. Сам класс - строк 310 + накладные расходы по обработке мышки и доп-кнопок типа старт/стоп/тайм+/тайм-/выгрузка нарисованного для сохранения/проверка предыдущего поколения с текущим, если одинаковы - значит стоп, ну и работа с canvas, конечно. Ну и, мой уебанский на тот момент стиль письма:
if (...)
{
  ...
}
, конечно раздуто вышло. Если всё сжать, строк 400 (всё вместе) выйдет, я думаю.
>> No.24990 Reply
File: -v4Tdsuf7h0.jpg
Jpg, 249.23 KB, 1280×960 - Click the image to expand
edit Find source with google Find source with iqdb
-v4Tdsuf7h0.jpg
Чтобы тред сильно не уплывал, напишу о ни о чем.

В условия подобия учебы универ, переселения и кое-каких проблем совсем не могу настроится... Сажусь с целью "начать делать что-то" в итоге рефрешу всякое говно до поздней ночи.

На примете небольшое заданьице-игра для себя. Второй день пытаюсь начать.

Такие дела. Всем добра.
>> No.25249 Reply
File: 134847379627341.jpg
Jpg, 56.46 KB, 604×453 - Click the image to expand
edit Find source with google Find source with iqdb
134847379627341.jpg
Допиливаю небольшую игру со словами.
Точней, уже допилил почти, хочу только дизайн хоть немного подкрутить.
Очоба универская только мешает и ничего не дает взамен.
Нашел таки шестое издание Подробного руководства на рюске. Теперь читаю заново.

Пытался делать все на прототипах и вообще МАКСИМУМ ООП. Но нихуя не получилось.
Хрен его знает, вот не могу пока понять зачем оно надо, если я без него все быстрее со скоростью слоупока делаю.

Может кто даст небольшое задачку именно на эти прототипы, наследование и т.д., но не слишком сложное?
>> No.25260 Reply
>>25249
> Хрен его знает, вот не могу пока понять зачем оно надо, если я без него все быстрее делаю.
Значит, оно тебе не надо.
К. О.
> Может кто даст небольшое задачку именно на эти прототипы, наследование и т.д., но не слишком сложное?
Окошечный фреймворк.
>> No.25308 Reply
File: K-BW8jvZws8.jpg
Jpg, 43.84 KB, 420×604 - Click the image to expand
edit Find source with google Find source with iqdb
K-BW8jvZws8.jpg
>>25260
> Окошечный фреймворк.
Что он должен делать? Требования?
>> No.25331 Reply
>>25308
Чтоб можно было создавать/закрывать окошки (в том числе и программно) и пихать на них лейблы и кнопки. В произвольные места и с произвольными размерами.
>> No.25335 Reply
>>25331
А что-нибудь не из велосипедостроения есть в наличии?
мимо
>> No.25336 Reply
File: f13WX6KgQks.jpg
Jpg, 56.07 KB, 421×604 - Click the image to expand
edit Find source with google Find source with iqdb
f13WX6KgQks.jpg
>>25331
Ок. Завтра начну, а вы потом расскажете, где я начудил.
Сейчас уже вижу, что я вешаю свойства на ноду окошечка и от них отталкиваюсь. Это ок?
>> No.25345 Reply
>>25336
Типа того.
>> No.25357 Reply
File: Warning.zip
Zip, 0.04 KB, 0 files
view
Warning.zip
File: Ok.png
Png, 10.86 KB, 128×128
edit Find source with google Find source with iqdb
Ok.png

>>25331
Мишн акомплишд.
Открывает, закрывает по крестику и программно. Может добавлять изображение, кнопки и текст в попап. Группирует попапы одного класса в общий див, но если нужно - позиционирует абсолютно.
Реквестирую разбор кода, критику и советы к улучшению.

http://learn.javascript.ru/play
>> No.25362 Reply
>>25357
Запустил и пека выключилась, включаю, а там требуют отправить СМС. Это нормально?
>> No.25363 Reply
>>25362
Все по плану!
ты серьезно, что ли? "Посоны никачаети"?
>> No.25364 Reply
File: Warning.png
Png, 25.31 KB, 256×256 - Click the image to expand
edit Find source with google Find source with iqdb
Warning.png
>>25357
Блин, не ту ссылку скопировал

http://learn.javascript.ru/play/Eeo18
>> No.25588 Reply
File: 15850 - Rozen_Maiden Suigintou.jpg
Jpg, 137.11 KB, 870×882
Your censorship settings forbid this file.
r-18
Выкладываю свою игру. которую пилил до этого.
Дизаен так не запилил, руки не доходят.
Как всегда критика приветствуется.
http://pastehtml.com/view/cdq04o6md.html


Разбираюсь дальше с ООП. Вот отличная статья, вроде, лучшая из всех, что я видел.
http://dmitrysoshnikov.com/ecmascript/ru-chapter-7-2-oop-ecmascript-im[...]tion/
>> No.25606 Reply
File: Снимок.png
Png, 25.19 KB, 429×460 - Click the image to expand
edit Find source with google Find source with iqdb
Снимок.png
>>25588
Я ПОДЕБИЛ!
>> No.25622 Reply
File: Безымянный.jpg
Jpg, 36.16 KB, 503×534 - Click the image to expand
edit Find source with google Find source with iqdb
Безымянный.jpg
>> No.25636 Reply
File: Снимок.png
Png, 370.93 KB, 934×460 - Click the image to expand
edit Find source with google Find source with iqdb
Снимок.png
>> No.25637 Reply
File: 1349345250726.jpg
Jpg, 49.87 KB, 600×636 - Click the image to expand
edit Find source with google Find source with iqdb
1349345250726.jpg
>> No.25665 Reply
File: original.jpg
Jpg, 46.89 KB, 640×480 - Click the image to expand
edit Find source with google Find source with iqdb
original.jpg
>>25636
"Песочница-няша-няшильда-няшка"-тред возрождается здесь.
>> No.26089 Reply
Это еще хоть кто-то читает?
Есть ли смысл продолжать?
хотелось бы, чтобы хоть кто-то выдвигал критику и/или советы, а ничего нет 3:
>> No.26102 Reply
>>26089

Ну я заглядываю, но не то что читаю, как RSS ленту например.
>> No.26226 Reply
File: matthewdevito.gif
Gif, 201.55 KB, 200×200 - Click the image to expand
edit Find source with google Find source with iqdb
matthewdevito.gif
>>26089
Еще есть я, давно не заглядывал сюда, продолжай ОП. Хотя от треда польза в целом для самоорганизации, если тебе это не нужно, иди на гитхаб и ползай по исходникам, посмотришь как люди пишут, погляди в баг-трекеры, попробуй пофиксить что-нибудь.
>> No.26229 Reply
File: 1350408854715.gif
Gif, 2423.19 KB, 320×180 - Click the image to expand
edit Find source with google Find source with iqdb
1350408854715.gif
>>26102>>26226
Спасибо.
> посмотришь как люди пишут
Хм. Это надо, да.


Ну и из прогресса:
Дочитал больше половины фленгана. Начал еще один скрипт, но что-то слишком наговнячил, даже продолжать его не хочется.
Идей и самозаданий написать что-то нет...

Сейчас работаю с граф.дизайном (подвернулся момент), очень надеюсь, что справлюсь надо сделать дизайн информационного сайта и, скорее всего, сверстать его
>> No.26387 Reply
ОП-кун, а ты разбирался с SVG?
Захотелось мне, стало быть, немножко поковыряться с этим форматом, нарисовал прям в html'е трапецию. Теперь встал вопрос, как эту трапецию применять. Допустим, хочу я её использовать в качестве фона или вставить картинкой перед ссылкой - как это сделать с помощью css? Потому что вставлять SVG-код в каждое место использования - нерационально.
Можно было бы вынести картинку в отдельный файл, но не хочется из-за такой мелочи (да и интересно уже просто разобраться).
Вот что смог найти по этому поводу: http://stackoverflow.com/questions/10768451/inline-svg-in-css
А вот трапеция(не та же самая, но такая же):
<svg width='40px' height='40px' viewBox="0 0 40 40">
<polygon points='10,0 30,0 40,40 0,40' style='fill:#000000; fill-opacity: 0.5;'>
</svg>
>> No.26389 Reply
>>26387
неоп

Там же написано как
url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='10'>
<linearGradient id='gradient'><stop offset='10%' stop-color='%23F00'/><stop offset='90%' stop-color='%23fcc'/> </linearGradient>
<rect fill='url(%23gradient)' x='0' y='0' width='100%' height='100%'/></svg>");
в протоколе data:чтонибудь весь исходный файл пишется как ссылка, с указанием типа/сжатия/кодировки.
Post was modified last time at 2012-10-24 01:24:38
>> No.26394 Reply
>>26389
Так и делал, не помогало.
Сейчас переделал кое-что, заработало. Во-первых, судя по всему нельзя использовать css в определении стиля svg. Во-вторых, как указано на стэкОверФлоу нужно использовать "%23" вместо "#" (себе на заметку: узнать что это и почему). Возможно есть ещё и в-третьих, но нет сил разбираться подробнее.
>> No.26395 Reply
>>26394
> "%23" вместо "#" (себе на заметку: узнать что это и почему).
Это urlencoding.
>> No.26416 Reply
File: bootstrap-temp.zip
Zip, 0.13 KB, 0 files - Click the image to get file
view
bootstrap-temp.zip
Привет, доброанон. Недавно я захотел чем-то заняться и начал учить html. Сейчас, спустя пару месяцев я - быдловерстальщик за еду. Но это всё предыстория, суть будет дальше.
Несколько дней назад я впервые узнал о такой штуке, как css фреймворки и, естественно, захотел попробовать. Начал с Twitter Bootstrap, да ещё и решил использовать html5, о котором раньше только слышал.
Так вот, помоги мне. Покажи ошибки в семантике, скажи, правильно ли я вообще построил структуру страницы?
И пусть верстки тред будет тут.
>> No.26417 Reply
>>26416
Последнее предложение лишнее. Сначала я создал новый тред, не заметив этого, а потом только запостил тут.
>> No.26421 Reply
>>26416
Выглядит неплохо, однако как я понимаю твоего кода там почти нет.
>> No.26425 Reply
>>26421
Да, если ты про css. Но я спрашивал о структуре html, которая целиком и полностью моя.
>> No.26426 Reply
File: 21886426.jpg
Jpg, 491.04 KB, 1240×1860 - Click the image to expand
edit Find source with google Find source with iqdb
21886426.jpg
>>26416
Все ок, сверстай что-нибудь посложнее, выходящие за границы примеров bootstrap-а. Вообще, лучше изучить сначала css/js, а уже потом пользоваться всякими фреймворками, единственное, что можно смотреть в их код, но на первых порах тебе это мало чем поможет.
Вот тебе задачка на разминку мозгов — у тебя есть страница, на ней отображаются разные статьи, соответственного разного размера. Нужно сделать так, чтобы футер был всегда в конце страницы, если статья всего несколько строк, то футер будет отображаться не сразу под статьей, а прилеплен к нижней части окна браузера, если же статья длинная, то футер должен находится сразу по окончанию статьи. Сайт с динамическим контентом, поэтому способ должен быть универсальным.
>> No.26427 Reply
>>26426
Большое спасибо за задачку, няша. Сделать это без использования бутстрапа?
>> No.26430 Reply
File: dobro-ex.zip
Zip, 0.00 KB, 0 files - Click the image to get file
view
dobro-ex.zip
>>26427
Вот. Но я использовал готовый костыль. Умение гуглить - тоже хорошо, ведь так?
>> No.26431 Reply
File: 7dad0c0da13eed6111ae1f77d67dda98.png
Png, 1188.30 KB, 1000×1000 - Click the image to expand
edit Find source with google Find source with iqdb
7dad0c0da13eed6111ae1f77d67dda98.png
>>26430
Красивый способ. Скилл гуления — это хорошо. Хотя рассчитывал на личные изыскания, для практики, на велосипедах учатся.
А bootstrap просто уменьшает количество геморроя при создании дизайна, хотя и не панацея, но в целом сайт сделать можно. Но опять же, тренироваться лучше, как делал ОП — полностью своими силами. В конце концов часть плюшек придется под себя переделывать.

Кстати, ОП, как там твой дизайн для сайта? Как нанялся туда?
>> No.26441 Reply
File: vjmt0ApqRiY.jpg
Jpg, 54.80 KB, 436×604 - Click the image to expand
edit Find source with google Find source with iqdb
vjmt0ApqRiY.jpg
>>26430
М. Обертка с min-height: 100% и абсолютом вставляем футер. Надо запомнить.
Почему, кстати, если просто релативом вставлять футер, то он иначе себя ведет? Вроде ж должно быть то же самое, что и родитель- релатив, потомок- абсолют.

Зачем вообще этот бутстрап? Каков принцип работы с ним?

>>26431
Знакомый подогмнал. Гуглю сейчас всякие руководства и тем лебедевых у него я так конкретно ничего и не нашел. в ководстве одни ворчания "все говно"
>> No.26484 Reply
>>26431
> А bootstrap просто уменьшает количество геморроя при создании дизайна, хотя и не панацея, но в целом сайт сделать можно.
ИМХО, главная польза от бутстрапа — возможность делать невырвиглазный дизайн при полном отсутствии художетсвенного вкуса. Простенько, симпатичненько, минимум телодвижений.
>> No.26490 Reply
File: Worth enough.png
Png, 3262.47 KB, 2500×3334 - Click the image to expand
edit Find source with google Find source with iqdb
Worth enough.png
Доброанон, у меня к тебе просьба. Огромная.
Дай мне очень сложный псд шаблон и попроси натянуть на джумлу и вордпресс. Я уже который день(или неделю?) не могу заставить себя даже притронуться к джумле, а ведь она нужна. Мне не хватает мотивации, не знаю почему. Да ещё и джаваскрипт совсем не знаю. Я ленив и ужасен, да.
>> No.26493 Reply
>>26490
М. Ну давай вот этот http://www.freepsd.ws/76-gotovoy-psd-maket-magazina-igr.html

Если не подойдет или там хреновый псд, следующий за ним или другой.

Потом вбросишь результат :3

а еще мне может понадобится потом одно говно сверстать для себя, если тебе будет не трудно, попытаешься?
>> No.26497 Reply
>>26493
О, спасибо. Какой вырвиглаз, лол
А тебе сверстаю, конечно. Вот только по срокам ничего не обещаю. Джумлу я в глаза не видел, так что придется поковырять, да и заказ какой может подвернется.
>> No.26504 Reply
Ох, видел бы ты тот макет. Дизайнеру лет 13, наверное. Ну ничего, пришло время превозмогать.
>> No.26505 Reply
>>26504
Ты же хотел сложный :3
>> No.26508 Reply
File: Безымянный.png
Png, 186.76 KB, 1280×800 - Click the image to expand
edit Find source with google Find source with iqdb
Безымянный.png
>>26505
Ага, всё правильно же. Дизайнеры и такие попадаются.
Вот только я уже в ужасе от своих мыслей о магазине на джумле. Ну и ЭТО, на пике.
>> No.26509 Reply
>>26508
> Дизайнеры и такие попадаются.
А что ты хотел от Бахи Тураева?
>> No.26511 Reply
>>26509
лол. Но самое интересное то, что в FOOTER, например, лежит логотип этого Бахи. Тот, который в шапке.
Ладно, хватит ныть. За работу.
>> No.26512 Reply
>>26508
говори спасибо, что там хоть папочки вообще есть да еще и более-менее адекватно названы.

Кстати, расскажи, что ты как верстальщик хочешь видеть от макета?
>> No.26513 Reply
>>26512
О, ну об этом не раз уже писалось.
http://ilovepsd.ru/ Вот тут лучше всего, я думаю.
Особенно нормальные имена слоёв и группировка их по папкам.
>> No.26557 Reply
File: 135141643323182.jpg
Jpg, 90.23 KB, 506×604 - Click the image to expand
edit Find source with google Find source with iqdb
135141643323182.jpg
Хм. Что можно написать на джс для формирования уже хоть какого-то портфолио?
Идей что-то никаких.

Без всяких там канвасов и библиотек.
>> No.26562 Reply
>>26557
Эпичный волшебный интерфейс, например.
>> No.26565 Reply
>>26562
%%>Эпичный волшебный интерфейс
Легендарный боевой UI
Сияющая отравленная форма%%

Как это волшебный, интерфейс чего?
>> No.26574 Reply
File: shop.zip
Zip, 0.43 KB, 0 files - Click the image to get file
view
shop.zip
Сверстал этот чертов магазин. Потом открыл ие и заплакал кровавыми слезами. Завтра буду исправлять, сегодня ещё кучу дел нужно сделать. Но критика очень приветствуется.
>> No.26581 Reply
>>26565
Что-то красиво кликающееся, летающее, зажигающееся и т.д. Все те прелести которые можно сделать только на js.
>> No.26598 Reply
File: shop.zip
Zip, 0.43 KB, 0 files - Click the image to get file
view
shop.zip
>>26574
Итак, всё исправлено. Вот только не удалось заставить ie7-8 закруглять уголки через PIE.htc, но с этим уж точно завтра буду разбираться.
Я же молодец?
>>26493
Что тебе сверстать-то нужно было?
>> No.26629 Reply
File: images-games-myst-3.jpg
Jpg, 277.07 KB, 1024×768 - Click the image to expand
edit Find source with google Find source with iqdb
images-games-myst-3.jpg
>>26598
Ура, я решил сделать слайдер и начал учить JavaScript.
Что-то сильно много я тут пишу, пора прекращать.
>> No.26639 Reply
>>26598
Вроде норм. Даже 7 ишак справился.
Пока ничего.

>>26629
Слайдер7? Ну это на жквери легче всего сделать, вроде.
>> No.26641 Reply
>>26639
Да, думаю на жквейри. Но ведь это js библиотека, и мне не хотелось бы пихать код, которого я не понимаю.
>> No.26642 Reply
>>26641
Верно, конечно.
>> No.26645 Reply
>>26641
Делай, выкладывай, очень интересно.
>> No.26764 Reply
File: 1.PNG
Png, 41.97 KB, 341×115
edit Find source with google Find source with iqdb
1.PNG
File: 2.PNG
Png, 38.33 KB, 329×115
edit Find source with google Find source with iqdb
2.PNG

>>23742
Суп аноны. Один анон, (не ОП) хочет научиться верстать сайты. Дело в том, что у меня возник такой вопрос. Нужно сделать кнопку прикрытую облаком. Если я сделаю как на пикрилейтеде, то блок облака будет скрывать наполовину блок кнопки, и она не будет нажиматься. Что делать? Поделить облако на части, и сделать часть облака частью кнопки? Есть ли менее геморойные варианты решения проблемы?
>> No.26766 Reply
>>26764
> Что делать? Поделить облако на части, и сделать часть облака частью кнопки? Есть ли менее геморойные варианты решения проблемы?
Вырезать облако в отдельную картинку с прозрачным фоном, сверстать в несколько слоев.
>> No.26769 Reply
>>26764
Или просто сделать все одной картинкой и использовать <area> для кнопки.
>> No.26774 Reply
>>26764
Окей аноны, взял облако с кнопкой и разделил на 3 слоя.
И, да, я буду постить сюда свои результаты.
>> No.26776 Reply
>>26769
Ну, а потом заказчик решит, что нужно бы чтобы облако при наведении на кнопку чуть отодвигалось, и все переделывать?
Да, похоже на предварительную оптимизацию, но имхо это правильный подход.
>> No.26779 Reply
>>26776
Да, кстати, ты делаешь первый вариант. То есть часть кнопки будет нерабочей, потому как картинка всегда будет прямоугольной, а сдвинуть облако ты сможешь в своей psd и просто заменить картинку.
>> No.26780 Reply
File: 2.png
Png, 3.85 KB, 170×34 - Click the image to expand
edit Find source with google Find source with iqdb
2.png
>>26764
Сделай кнопку поверх фона, но чтобы сама кнопка являлась картинкой с огрызком облака.
>> No.26786 Reply
File: 1350455209108.jpg
Jpg, 149.73 KB, 900×1029 - Click the image to expand
edit Find source with google Find source with iqdb
1350455209108.jpg
>>26779
> То есть часть кнопки будет нерабочей
Можно использовать <area> тогда и на облачке. Но передвигая его, нужно будет и ее менять.

В общем. делай фон кнопки с полным облачком и прозрачностью. Передвижение легко будет сделать спрайтом, например.



Хм. А я все никак не могу утвердить с заказчиком лого. Доебало уже просто.
>> No.26808 Reply
>>26786
> Можно использовать <area> тогда и на облачке. Но передвигая его, нужно будет и ее менять.
Вут? Сделать арию на всю кнопку, и тыкать в нее вместо кнопки. А само изображение с кнопкой - просто изображение.
>> No.26827 Reply
File: screen001.png
Png, 303.16 KB, 1211×392
edit Find source with google Find source with iqdb
screen001.png
File: screen01.PNG
Png, 330.38 KB, 1211×392
edit Find source with google Find source with iqdb
screen01.PNG

>>26808
Суп аноны. Дело помалу продвигается. Сейчас делаю Slide эффект при нажатии на "скрыть". Проблема в том, что эффект никак не хочет нормально работать. Если сделать так.
$("#submenu").slideToggle("slow");
To #submenu хоть и скроется, но без всяких эффектов. Если же скрывать все дивы по отдельности, эффект работает, но не равномерно.
$("#text-1").slideToggle("slow");
$("#text-2").slideToggle("slow");
$("#text-3").slideToggle("slow");
$("#central-image-left").slideToggle("slow");
$("#central-image-center").slideToggle("slow");
$("#central-image-right").slideToggle("slow");
Знает кто что делать?
>> No.26829 Reply
>>26827
Для внутренностей display: none, для и slideToggle уже для "пустого" #submenu.
>> No.26830 Reply
File: 4476e47eb5dc17bb3ddc4a2518539233.jpg
Jpg, 115.36 KB, 376×657 - Click the image to expand
edit Find source with google Find source with iqdb
4476e47eb5dc17bb3ddc4a2518539233.jpg
>>26829
Что то не получается. Если поставить display: none внутренностям, они станут невидимыми, и при $("#submenu").slideToggle("slow") ничего не будет меняться.
>> No.26831 Reply
>>26830
#submenu не главный div для всего? Если нет, то сворачивать надо обертку для всех внутренностей. Насколько я помню, адекватное сворачивание всех элементов сделать проблемно(и не нужно), так что просто прячешь их и сворачиваешь слайдом пустую обертку.
>> No.26959 Reply
File: halp_me.jpg
Jpg, 65.21 KB, 640×499 - Click the image to expand
edit Find source with google Find source with iqdb
halp_me.jpg
Посоны, начал изучение Ruby on Rails. Опыт программирования на уровне: корявое оконное приложение на Visual C (внесение записей и считывание/чтение в/из файл(-а). Реализовывал, в основном, процедурно, наугад тыкая MSDN и студио.
Требуется мнение опытного программиста - Стоит ли продолжать обучение рельсам или стоит взять что нибудь по-проще, например пэхопэ? В ООП очень сильно плаваю. Model View Controler? Щито эта за фиговина?
>> No.26960 Reply
>>26959
> Model View Controler? Щито эта за фиговина?
google it, motherfucker!
>> No.26961 Reply
>>26959
> Ruby on Rails
Дай угадаю, чистый ruby ты не трогал?
Что касается пыхи — смотря что ты планируешь, если у тебя есть время и ты готов сидеть голодный, то учи RoR, если хочется быстрее начать получать денежку, то пыха. Все упирается во время, хотя может и можно клепать без понимания на рельсах что-то, но я не думаю, что это хороший подход.
>> No.26963 Reply
>>26961
> Дай угадаю, чистый ruby ты не трогал?
Таки да.
> смотря что ты планируешь
Гостевые книжечки, там, чатики. Вообще, хороший вопрос, если учитывать, что интернет переезжает в социальные сети.

То есть пыха хорошо подойдет для понятия принципов ООП и самого процесса конструирования веб приложений?
inb4: Нет. Учи ООП, а не язык

Алсо, правда ли, если начать писать на пыхе, то обратной дороги уже нет? Ну, сколько не узнавал - многие программисты считают, что переучиваться с пыхи довольно трудно и многим программистам просто не нужно это, им и так комфортно.
>> No.26964 Reply
>>26963
> Таки да.
У руби есть свои вкусные плюшки, благодаря чему работает в рельсах вся эта "магия", так и свои подводные камни, начни лучше с языка.
> Гостевые книжечки, там, чатики. Вообще, хороший вопрос, если учитывать, что интернет переезжает в социальные сети.
Пиши социалочку, проблема-то. А серьезно — выбери инструмент, который тебе больше нравится, это в идеале.
> То есть пыха хорошо подойдет для понятия принципов ООП и самого процесса конструирования веб приложений?
С ООП все сложнее, его нет нигде чистого, везде свои костыли, в пыхе свои неприятные моменты есть с этим, в другом языке свои. Понять ООП сможешь с практикой.
> Алсо, правда ли, если начать писать на пыхе, то обратной дороги уже нет?
А смысл им куда-то лезть, если их кормят неплохо, да и спрос есть. Сваливают либо идейно несогласные, либо искатели новых ощущений. Пыха не лучший представитель сриптовых языков, но опять же, все на любителя.
>> No.26965 Reply
>>26964
Спасибо, буду искать новые ощущения, пока запал не прошел :3

Посоветуешь что нибудь по чистому Руби? На досуге буду покуривать книги, может погружусь с головой и забуду про веб.
>> No.26966 Reply
>>26965
Да, если время есть, лучше потратить его на что-то интересное.

Из книжек — книга Флэнагана и Мацумото и "Метапрограммирование" Перротта.
>> No.26967 Reply
>>26965
> может погружусь с головой и забуду про веб.
Никому твой академический язык без рельс не нужен.
мимовертолет
>> No.26968 Reply
>>26966
Спасибо, няша! Для себя решил, что буду крейсерской скоростью осваивать пыху для заработка (а шекель никогда лишним не будет) с параллельным изучением руби. Постараюсь отписываться по мере процесса.
>> No.26976 Reply
рах уж тут теперь тред про руби, есть ли фреймворк для тестов? Написать самому труда не составит (собственноя его уже написал), но зачем, если есть готовый?
PS можно ли определить самостоятельно конструкцию, принимающую замыкание без do? (аля module/class)
>> No.26981 Reply
>> No.27012 Reply
File: php((.PNG
Png, 4.19 KB, 793×79 - Click the image to expand
edit Find source with google Find source with iqdb
php((.PNG
>>23742
Аноны, обьясните, чому этот код не работает? Выводит Bad input даже если все переменные введены.
>> No.27013 Reply
>>27012
Слишком мало контекста.
>> No.27017 Reply
File: html.PNG
Png, 9.47 KB, 505×160
edit Find source with google Find source with iqdb
html.PNG
File: php.PNG
Png, 14.69 KB, 815×260
edit Find source with google Find source with iqdb
php.PNG

>>27013
И еще одна проблема. exit('текст на русском') выдает крякозябры.
>> No.27018 Reply
>>27017
header('Content-Type: text/html; charset=utf-8'); /* для норм посанов */ или
header('Content-Type: text/html; charset=windows-1251'); /* для шиндоблядей */ или
header('Content-Type: text/html; charset=koi8-r'); /* для некрофил-юнексоидов */
>> No.27020 Reply
>>27017
> input name="mail"
> $_POST['email']
>> No.27021 Reply
>>27017
Но зачем плодить лишние переменные и отжирать лишнюю память? Делать лишние действия? Почему бы сразу не проверять $_POST['varname']?
>> No.27022 Reply
>>27021
Для повышения читабельности. Энтерпрайз-решение.
>> No.27023 Reply
File: 30654-031951-e8ae5b93b21c548a36cee582fc442418.gif
Gif, 997.48 KB, 329×247 - Click the image to expand
edit Find source with google Find source with iqdb
30654-031951-e8ae5b93b21c548a36cee582fc442418.gif
>>27020
>>27018
Спасибо аноны! И простите за невнимательность.
>> No.27024 Reply
File: 2012-11-11_161628...
Jpg, 64.21 KB, 929×369
edit Find source with google Find source with iqdb
2012-11-11_161628.jpg
File: 2012-11-11_161635...
Jpg, 21.94 KB, 840×106
edit Find source with google Find source with iqdb
2012-11-11_161635.jpg

Почему не подключается к базе данных?
Я создал базу, таблицу, пользователя, проверил местоположение файлов.
Седьмую строчку тоже проверил по руководству к лабе, в институте все работало, а дома не работает.
>> No.27025 Reply
>>27024
Чему вас там учат? Проверил бы ошибки соединения mysql_error(), потом пошел бы гуглить, элементарные вещи же.
>> No.27029 Reply
File: 1274467817_sheld.jpg
Jpg, 26.63 KB, 479×349 - Click the image to expand
edit Find source with google Find source with iqdb
1274467817_sheld.jpg
>>27022
Сарказм?
>> No.27030 Reply
Post was modified last time at 2012-11-12 00:38:44
>> No.27977 Reply
File: 1350753113516.jpg
Jpg, 480.46 KB, 552×1500 - Click the image to expand
edit Find source with google Find source with iqdb
1350753113516.jpg
А я все еще жив :3
Наконец-то отделался от одной работки которую так и не выполнил до конца и чувствую себя свободным.

Попробую запилить бложе, а потом что-то типа портфолио в виде игры. Или просто игру.
И вот дилема. Не хочу юзать движки, а написать сайт вручную без пехопе и вообще серверной стороны. Так вот, норм ли это для поисковиков и вообще? И какой модуль комментариев прилепить? Пока планирую модуль с вконташечки прилепить.
>> No.27982 Reply
>>27977
это не нормально. Программист должен уметь пользоватся инструментами, а не собирать из говна и веток на коленке велосипед. Единственное когда стоит братся за такой проект - самостоятельное создание инструмента, зная сильные и слабые стороны подобных ему
>> No.27990 Reply
>>27982
Но ведь это намного веселее чем использовать готовый инструмент!
>> No.27991 Reply
>>27990
ну разумеется. А потом будешь как я год бегать без портфолио, потому что хотел как веселее
>> No.28008 Reply
File: 1355419681009.png
Png, 1.23 KB, 300×20 - Click the image to expand
edit Find source with google Find source with iqdb
1355419681009.png
>>27977
Сделать можно, но будет больно добавлять записи и тому подобное. Если лень лезть в пыху и сделать "чтобы было" — посмотри на nodejs, как раз повеселишься. Манов в интернете полно как состряпать простенький движок, заодно начнешь потихоньку въезжать в тему на понятно тебе js. Хотя нода just for fun.
Капча, говорит, что время перестать бояться и взяться за back-end.
>> No.28379 Reply
File: site-ver-1.zip
Zip, 0.20 KB, 0 files
view
site-ver-1.zip
File: index.txt
Txt, 0.01 KB, 0 lines
view edit
index.txt

Возобновил практику. Правда не очень продвинулся. Состряпал небольшой макет и снова написал слайдер, лол. Но теперь он использует один таймер. Не знаю, зачем это в системе, когда максимум 2 анимации подобного рода могут происходить, но захотел сделать так. Велосипеды итт.
Покритикуйте мой код, пожалуйста. Ну и верстку.

Кому лень открывать архив — я прикрепил сам код отдельно.
>> No.28383 Reply
>>23744
пусть уж лучше ебанет Стратегию или Декоратор.
Ньюфаг-паттернофил забежал в тред
>> No.28390 Reply
>>23742
Что-то меня раздражает уже эта жопа-как-у-Никки-Минаж на главной. Завайпать тред, что ли? LOL
>> No.28391 Reply
File: 2683__500x400_5d13ad9160bc.jpg
Jpg, 41.79 KB, 500×392 - Click the image to expand
edit Find source with google Find source with iqdb
2683__500x400_5d13ad9160bc.jpg
>>28390
Правая клавиша - заблокировать содержимое - шифтклик.
>> No.28392 Reply
>>28391
LOL, я что-то себе с менюшками сделал, теперь этот пункт не отображается. Проще завайпать!
>> No.28400 Reply
>>28392
Хорошо, я помогу. Си - морально устарел, и его давно пора заменить.
>> No.28401 Reply
>>28400
Ну привет, чем? В его нише его нечем заменить. Интеловцы не только сишный, но и фортрановский компилятор продолжают выпускать вон, и стандарт си меняется потихоньку.
>> No.28402 Reply
>>28401
> В его нише его нечем заменить.
А что ты знаешь? Какие йазыки?
>> No.28409 Reply
>>28401
> В его нише его нечем заменить
Да хотя бы паскалем.
>> No.28626 Reply
File: uEezfWuQpMI.jpg
Jpg, 45.00 KB, 500×561 - Click the image to expand
edit Find source with google Find source with iqdb
uEezfWuQpMI.jpg
>>23742
Суп вебкодеры. Нужно запилить интернет-магазин, из знаний, php/mysql и верстка с jQuery. С чего начинать, какие готовые решения использовать. Буду благодарен любым советам.
>> No.28628 Reply
>>28626
ruwiki://Список_свободных_программ_для_электронной_коммерции
Opencart и oscommerce не бери, они говно-говном, я под них кодил.
>> No.28639 Reply
File: 01.jpg
Jpg, 29.27 KB, 350×427
Your censorship settings forbid this file.
unrated
>>28628
А какие брать?
>> No.28656 Reply
>>28639
Magento бери.
>> No.28658 Reply
File: 125654472445478.jpg
Jpg, 759.60 KB, 1024×768
Your censorship settings forbid this file.
unrated
>>28656
А он умеет в доски обьявлений? Чтобы пользователь сам мог добавлять разные итемы в магазин.
>> No.43763 Reply
File: 14160461663860.jpg
Jpg, 52.77 KB, 377×953 - Click the image to expand
edit Find source with google Find source with iqdb
14160461663860.jpg
А я таки устроился на работу, правда по бекенду больше, я молодец.
Всем спасибо, таки помощь анона была очень важна.


Password:

[ /tv/ /rf/ /vg/ /a/ /b/ /u/ /bo/ /fur/ /to/ /dt/ /cp/ /oe/ /bg/ /ve/ /r/ /mad/ /d/ /mu/ /cr/ /di/ /sw/ /hr/ /wh/ /lor/ /s/ /hau/ /slow/ /gf/ /vn/ /w/ /ma/ /azu/ /wn/ ] [ Main | Settings | Bookmarks | Music Player ]