Ычан: [d | b / bro / hr / l / m / mi / mu / o / ph / r / s / sci / tran / tu / tv / vg / x | au / tr | a / aa / c / fi / jp / rm / tan / to / vn / vo]
[Назад] [Вся нить] [Последние 50 сообщений]
Ответ в нить [Последние 50 сообщений]
Имя
Animapcha image [@] [?]
Тема   ( ответ в 7318)
Сообщение flower
Файл 
Пароль  (для удаления файлов и сообщений)
Параметры   
  • Прежде чем постить, ознакомьтесь с правилами.
  • Поддерживаются файлы типов 7Z, BZ, BZ2, GIF, GZ, JPG, MO, MP3, MP4, OGG, OGV, PDF, PNG, PSD, RAR, SVG, SWF, TXT, WEBM, WEBP, XCF, ZIP размером до 5000 кБ.
  • Ныне 3673 unique user posts. Посмотреть каталог
  • Максимальное количество бампов нити: 500
200px-JavaScript-logo.png - (6.68KB, 200×200)
7318
No. 7318    
Я знаю, это не очень хороший тред, но посоветуйте мне книжку по JavaScript.
Мне нравится, когда такие книги больше похожи на справочник, но если там будут кое-какие примеры, этика использования приемов, это будет просто супер. Можно на английском. Я собираюсь приобрести бумажную версию, так что желательно чтобы я смог достать её в книжных Москвы. Алсо, я туговат, и хочу чтобы разжевано было всё.
17 сообщений пропущено. Показаны 50 последних сообщений Развернуть все изображения
No. 7347    
Есть же специальная книжка http://www.amazon.com/JavaScript-Good-Parts-Douglas-Crockford/dp/0596517742
Есть еще http://eloquentjavascript.net/
No. 7360    
Что-то мне не очень нравится, что вы тут устроили. Заказал лучшие части, тред ещё повисит ~день, на случай если кому-то захочется посоветовать что-нибудь об ООП для нубов. Всем спасибо ITT.
No. 7412    
Во избежание развития semicolon cancer посоветую после изучения основ загуглить sass или less. Уязвленному отсутствием сахара кстати тоже.
No. 11699    
Не хочу создавать новый тред.

Нужна помощь в яваскрипте, сам я крайне неопытен в яве. Вот что мне нужно: какая-либо форма, через которую можно было бы редактировать разметку домашней страницы прямо из браузера, загуглить не смог.
No. 11700    
>>11699
Яваскрипт и Ява — два совсем разных языка.
> форма, через которую можно было бы редактировать разметку домашней страницы прямо из браузера
https://codeanywhere.net/, например. Но зачем тебе? Если не нужно, чтобы изменения сохранялись на сервере, а требуется просто на лету отредактировать и посмотреть, что получится, то поставь Firebug.
No. 11703    
>>7340
Яваскрипт - отличный язык. Не надо расписывать в стопицот строк компилятору, о чем ты дальше будешь писать софтину, просто берешь - и пишешь. Максимум свободы, минимум печатной машинки. То что надо, для творческой работы. На чистовик-то конечно финальный продукт лучше переписать на каком-нибудь геморройном, но зато не интерпретируемом языке, но именно для разработки я ничего пока лучше не встречал. Си, Ява, Паскаль, Бейсик - разные вариации одного и того же звездеца, чтобы внести одно небольшое изменение, надо в двадцати местах это отметить компилятору, чтобы он не заругался потом.
No. 11704    
>>11703
> Яваскрипт - отличный язык.
Мне хватило одного короткого знакомства с ним во время попытки написать юзерскрипт. Так вот, люди которые так реализовали побитовые операции, просто не могли создать хороший язык. Не помню, что ещё меня там поразило, но этот язык не зря занимает одну нишу с пыхом. Уродская динамическая типизация + синтаксис и фичи из семидесятых (жс появился в девяностые). Такое чувство, будто его авторы CS и дизайном языков вообще не интересовались.
No. 11705    
1390479367907.jpg - (488.44KB, 494×700)
11705
>>11704

>Такое чувство, будто его авторы CS и дизайном языков вообще не интересовались.

Они просто хотели сделать лисп без скобок забыв о том что скобки - неотъемлемая его часть. Но в итоге и лисп не получился, и профита от скобок не осталось привет^Wпока макросы!. И сдохнуть бы этому недоязыку мучительной смертью, да браузерное легаси не дало. А потом его нашли хипстеры, вытащили из задницы, обмазали поверх всякими нод.жс и подняли на свои знамена. Хотя как и прочие хипстерские языки, в js'е нет абсолютно ничего не то что концептуально нового, даже годно реализованного старого. Разве что более менее удобный асинхронный API у ноды, но это скорее минус остальных чем плюс жаваскрипта.
No. 11706    
>>11705
Все так, я только добавлю, что жс появился из-за задания "быстро-быстро, за неделю, добавь мне яп в браузер, ты же программист". Эйк (кажется, не помню уже) был не дурак и пояснил, что за неделю можно сделать только сраный лисп (без типов, без неймспейсов, без еще 100500 кошерных вещей). Менеджеры сказали: "ок, только сраные скобки выпили". С тех пор в жс даже целых чисел нет. Спасибо Netscape за это.
No. 11708    
>>11704
Не знаю, не сталкивался ни с одним более удобным и гибким языком. Даже пехопе с его префиксованием переменных раздражает. В остальных языках декларации деклараций и прочие плюшки. Даже константный массив из разнотипных элементов хрен создашь с полпинка. А тут пазязя,[0,"test",function(a,b){return a+b}] и всё.
No. 11710    
>>11708
>константный массив из разнотипных элементов
но зачем?!
No. 11711    
>>11708
Процитирую:

> Да, в общем, как обычно. Дисбаланс возможностей и ограничений в сторону возможностей. Жуткий дисбаланс.

> Для человека, пишущего в одиночку прототипчик программы - нормально. Для человека, пишущего не в одиночку, или пишущего библиотеку - неприемлимо, потому что другие пользователи (соотв. юзеры библиотеки) обязательно будут её абьюзить всеми способами, которые допускает язык, а эта часть программы (соотв. библиотека) должна продолжать нормально работать. Для человека, пишущего в одиночку и что-то большое - тоже, считай, не годится, потому что как я буду мыслить через год и какое извращение буду считать нормальным, предсказать сейчас невозможно.

> Вот и получается, что писать большие проекты на подобном языке могут только люди с закостеневшим мышлением, которые и через год и через десять будут думать примерно так же, как сейчас.
No. 11747    
Если есть опыт коддинга в целом, но переходишь на JS то крайне рекомендую не столько книгу сколько вот эту статью: https://developer.mozilla.org/en-US/docs/Web/JavaScript/A_re-introduction_to_JavaScript
No. 11773    
>>11710
Классы в школе не проходят.
No. 11801    
http://jsbooks.revolunet.com/
No. 18677    
.png - (55.23KB, 141×200)
18677
Привет стив. Я тут потихоньку хочу вкатится в javascript и уже начинаю по чуть-чуть писать код. ИТТ буду кидать код, который не работает и я не могу найти в нем, где же я накосячил. Ну и заодно буду вопросы задавать по сабжу.
No. 18679    
.png - (1.90MB, 1200×1700)
18679
Вот значит кусок кода у меня:
var myArray = [];

function ints(myArray) {

if (myArray < 0) {

return myArray;

} else {

for (var i = 0; myArray >= i; i = i + 1) {

myArray.push[i];

`

   
}

return myArray;

 
}

}



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

TypeError: Cannot read property '0' of undefined

Line 7

   
myArray.push[i];

               
^


Stack:


    
ints Line 7 - "myArray.push[i];"

    
testInts (Line 26:19)

`
No. 18681    
ReLIFE.png - (132.20KB, 520×245)
18681
Похоже на то, что ты собрался по одному имени «myArray» обращаться и к аргументу функции «ints» изнутри этой функции, и к ранее созданному вне её массиву.

Так не получится. Изнутри функции имя аргумента заслонит внешнее имя.

Например, если ты вызвал «ints(17)», то у тебя «myArray.push[i]» будет «17.push[0]» на первом шаге. Это и вызывает ошибку «Cannot read property '0' of undefined», потому что значение «17.push» не определено и никакого свойства 0 (через «17.push[0]» достигаемого) иметь не может.

Также сообщаю, что конструкция «имяМассива.push(значение)» записывается не через квадратные скобки (как обращение к свойству), а через круглые (как вызов функции — в данном случае, вызов метода массива).
No. 18784    
.jpg - (254.06KB, 1920×1080)
18784
>>18681
> Похоже на то, что ты собрался по одному имени «myArray» обращаться и к аргументу функции «ints» изнутри этой функции, и к ранее созданному вне её массиву.
> Так не получится. Изнутри функции имя аргумента заслонит внешнее имя.
А не подскажешь, как тогда в такой ситуации можно поступить? А то я как-то совсем запутался.
Получается параметр функции это тоже в каком-то смысле переменная?
> Также сообщаю, что конструкция «имяМассива.push(значение)» записывается не через квадратные скобки (как обращение к свойству), а через круглые (как вызов функции — в данном случае, вызов метода массива).
Чет не заметил. И правда.
No. 18786    
> буду кидать код
Зачем же так колхозно-то? Полно ведь сервисов для этих целей.
No. 18790    
>>18786
Да понял-понял. Больше так не буду. Я не знал что тут такие проблемы с отображением кода.
No. 18794    
>>18784

> Получается параметр функции это тоже в каком-то смысле переменная?

Да.

> А не подскажешь, как тогда в такой ситуации можно поступить? А то я как-то совсем запутался.

Просто дай параметру другое имя.
No. 19011    
Hanako yandere.jpg - (97.76KB, 400×626)
19011
>>18790

> Я не знал что тут такие проблемы с отображением кода.

А нѣтъ никаких особенных проблем с ним.

Просто достаточно одного обратного апострофа в начале кода (содержащего сколько угодно строк) и ещё одного в конце кода.

Выглядит так (на примере приведённого выше некорректного кода):

var myArray = [];


function ints(myArray) {
   if (myArray < 0) {
      return myArray;
   } else {
      for (var i = 0; myArray >= i; i = i + 1) {
         myArray.push[i];
      }
      return myArray;
   }
}

No. 19215    
Это бамп для того, чтобы реплика >>18679 отсеклась в архив и перестала вызывать горизонтальную полосу прокрутки во всём /dev/.

Месяц я терпел эту полосу, но на второй месяц задалбывает.
No. 19216    
1505889015007.jpg - (89.22KB, 1280×720)
19216
>>19215
Когда нечего написать по теме треда, надо использовать sage.
No. 19226    
Code Geass Ep02.png - (703.29KB, 1280×720)
19226
>>19216

Ах да.
No. 19311    
Почему эта функцию не хочет делать заглавным первый символ в строке?
https://pastebin.com/gTJ5JjLR

Неужели метод .toUpperCase() не способен работать со строкой, где только есть один символ?
No. 19313    
>>19311
toUpperCase() возвращает новую строку, а не изменяет существующую, и вообще в JS строки относятся к примитивным типам, что значит, что они всегда передаются по значению, а не по ссылке. В отличие от массива, строки не изменяются и с ними нельзя сделать так:
> var a = ['в', 'а', 'с', 'я'];
> a[0] = 'В';
> a // ['В', 'а', 'с', 'я']
Строка:
> var a = 'вася';
> a[0] // "в" - доступ по индексу работает как и в массиве
> a[0] = 'В';
> a // "вася" - нифига не изменилось
Все, что надо сделать в том примере это присвоить переменной firstLetter новое значение, возвращенное функцией toUpperCase():
> var firstLetter = str.charAt(0);
> firstLetter = firstLetter.toUpperCase();
И еще учи матчасть, прочитай хоть что-нибудь, все твои вопросы подробно разжевываются в первой главе любого учебника. Начинать можешь отсюда: https://www.w3schools.com/js/default.asp , https://developer.mozilla.org/en-US/docs/Web/JavaScript/A_re-introduction_to_JavaScript , https://webref.ru/dev/learn-javascript
No. 19317    
>>19313
> toUpperCase() возвращает новую строку, а не изменяет существующую, и вообще в JS строки относятся к примитивным типам, что значит, что они всегда передаются по значению, а не по ссылке.
Про это я вкурсе.
> > var firstLetter = str.charAt(0);
> > firstLetter = firstLetter.toUpperCase();
Не втянулся еще просто.
> И еще учи матчасть, прочитай хоть что-нибудь, все твои вопросы подробно разжевываются в первой главе любого учебника. Начинать можешь отсюда: https://www.w3schools.com/js/default.asp , https://developer.mozilla.org/en-US/docs/Web/JavaScript/A_re-introduction_to_JavaScript , https://webref.ru/dev/learn-javascript
Спасибо конечно за ссылки, но я уже читаю по learn.javascript.ru
No. 19319    
>>19313
> и вообще в JS строки относятся к примитивным типам, что значит, что они всегда передаются по значению, а не по ссылке.
Как раз таки передаются они всегда по ссылке, а по значению только сравниваются.
No. 19345    
Я сделал функцию, которая определяет, есть ли определенное свойство в объекте, но оно его не видел в функции. Пишет постоянно undefined. Почему?
var shedule = {};

shedule.name = "vasiliy";

function checkParametr(parametr) {

if (shedule.parametr === undefined) {

return true;

}

else {

return false;

}

}

alert(shedule.name);

alert(checkParametr(name));

No. 19347    
Файл
удалён
>>19345

При вызове «checkParametr(name)» в функцию «checkParametr» пытается передаться значение несуществующей переменной «name», которая-то и undefined.

Напрашивающимся выходом из этой ситуации является переписывание функции «checkParametr» таким способом, чтобы она принимала строковое значение.

Кроме того, идентификатор «undefined» не является зарезервированным словом, так что кто-нибудь может создать переменную с таким именем, поэтому на будущее надёжнее не сравнение с undefined напрямую, а сравнение строки «'undefined'» с результатом операции typeof.

С учётом вышеизложенного код принимает такой вид:

var shedule = {};

shedule.name = "vasiliy";

function checkParametr(paramName) {
   return typeof shedule[paramName] === 'undefined';
}

alert(shedule.name);
alert(checkParametr('name'));

No. 19348    
>>19345
1. Твой «checkParameter()» уже есть в языке и называется «Object.hasOwnProperty()» https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty
2. Ты передаешь в функцию необъявленную переменную «name»
3. Функция «checkParamter» у тебя проверяет, имеет ли свойство «parameter» объекта «shedule» значение undefined, она не проверяет ни что-либо еще, переданное ей в аргументы.
4. Аргумент «parameter» в функции ни разу не используется.
5. Ошибочно подразумевается, что «shedule.parametr» вернет «shedule.name», но для доступа к свойствам объекта по ключу из переменной должен использоваться другой синтаксис, через квадратные скобки. См. пост выше.
6. Если условие внутри if выполняется, то функция вернет true, когда свойства нет и false, если нет. Контринтуитивно.
7. Оператор сравнения уже возвращает булево значение, нет необходимости писать if ... else, если все, что оно делает, это возвращает то же самое, что и внутри скобок после if.
8. checkParameter() может проверять только объект «shedule», следовало бы сделать функцию более универсальной, чтобы она могла проверять любой объект, добавив еще один аргумент.
9. Все это не имеет смысла т.к. см. п. 1.
No. 19360    
Дано:
  • фиксированный урл на неподконтрольном домене, например нулевая страница чужой борды
  • регулярное выражение, определяющее нечто, что хочется поискать на этой странице, например все посты, содержащие слово "ОВОЩИ" в верхнем регистре
Задача:
Записать в JS-переменную список матчей этого регэкспа с заданной страницей
No. 19363    
>>19360
https://pastebin.com/k2KCzfTa
No. 19364    
>>19363
Что-то матчер ничего не находит. Такое ощущение, что ответ пустой. См. https://jsfiddle.net/cama387x/5/

Что я делаю не так?
No. 19365    
Файл
удалён
На сáмомъ дѣлѣ такія штуки не работаютъ во браузерѣ.

В конкретной форме https://jsfiddle.net/cama387x/5/ запрос отклоняется браузером по причине, в документе https://developer.mozilla.org/en-US/docs/Web/Security/Mixed_content указанной (смешанное активное содержимое), то есть действует запрет вызова HTTPS-сайтами содержимого HTTP-сайтов.

Если адрес http://iichan.hk/b на https://iichan.hk/b переменить, то адрес будет отклонён по другой причине: XMLHttpRequest не работает с одного сайта на другой в том случае, когда на запрашиваемом сайте (на Ычане, в данном случае) не настроены заголовки CORS (способом, в документе https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS указанным), потому что по умолчанию считается, что сайт (Ычан) не разрешал обращаться к себе через XMLHttpRequest снаружи.
No. 19366    
Решить проблему >>19360 можно, однако же, в рамках серверного JavaScript (Node.js).

Шаг 0: ставим Node.js (не только движок Node.js, но и прилагающийся по умолчанию менеджер пакетов npm).

Шаг 1: в некотором пустом тестовом каталоге ставим пакет https://www.npmjs.com/package/request командой «npm install request».

Шаг 2: запускаем REPL движка Node.js командой «node».

Шаг 3: в REPL вводим код «void require('request').get({ uri: 'https://iichan.hk/b'; }, (err, res) => console.log(res.body.includes('ОВОЩИ')))».

Шаг 4: видим, что в консоль вывелось значение «false», то есть слóва «ОВОЩИ» на странице https://iichan.hk/b в настоящее время нѣтъ.
No. 19368    
Движок 410чана, оформляя https://iichan.hk/b как гиперссылку с прилипшим к ней последующим апострофом, вставил в код >>19366 лишнюю точку с запятой перед закрывающей фигурной скобкой; предлагаю игнорировать её.

На всякий случай повторяю тот же код, обрамлённый обратными апострофами (чтобы движок 410чана воспринял его как код) и снабжённый дополнительными отступами (для красоты) и обработкою ошибок (примитивною, через «throw»):

void require('request').get(

   { uri: 'https://iichan.hk/b' },
   (err, res) => {
      if( err ) throw err;
      console.log( res.body.includes('ОВОЩИ') );
   }
);

No. 19369    
Файл
удалён
Соответственно, если вокруг кода >>19368 сочинить вебсервер (на основе http://expressjs.com/ или другого подходящего движка), отвечающий с CORS-заголовками, то через него и во браузере можно будет читать Ычан, а иначе барьеры >>19365 помешают.
No. 19370    
>>19366
Следующий логичный вопрос: есть ли поддержка node.js или другого серверного кода на github.io и аналогичных площадках?
No. 19371    
>>19370
Нет, только jekyll и html. Но с бордами, у которых есть api, и браузерный код будет работать.
No. 19373    
изображение.png - (10.56KB, 389×285)
19373
Запилил функцию, которая достает строку из свойства объекта и добавляет в конец строку-аргумент, если ее там нет. Только почему-то она не хочет работать. А именно, она стопается на этапе условия "if".
No. 19374    
>>19373
Для начала, не нужно писать велосипед, когда есть https://developer.mozilla.org/ru/docs/Web/API/Element/classList
По коду, в строке
> tempClassName.split(' ');
Допущена та же ошибка, что была описана в >>19313
String.spit() возвращает массив, а не превращает строку в массив и не присваивает переменной, хранящей эту строку новое значение. То, что alert(tempClassName) выдает значение obj.className, а не массив ["open", "menu"], не насторожило?
Ну а далее со строкой работают как с массивом, естественно у строки нет методов push и join.
Советую заиметь привычку использовать const вместо var, чтобы не возникало желания переиспользовать переменные для хранения разных типов и не подразумевать ошибочно, что неизменяемые типы должны изменяться.
https://jsfiddle.net/cgbzmk7u/1/
No. 19375    
>>19370

На странице https://www.heroku.com/pricing предлагают бесплатно до 1000 дино×часов в месяц на 512 мегабайтах памяти и с засыпанием через полчаса неактивности. (Больше и бессоннее — за денежку.)

Можно поискать и найти ещё другие хостинги. Я сообщил только о первом пришедшем на ум.
No. 19376    
Разумѣется, отвѣтъ >>19375 может дополнительно быть расширен упоминанием о том, что для Node.js не обязательно искать спецхостинг, так как можно вписать запуск сервера в автозагрузку у любого VPS, у любого VDS, да даже у домашнего компьютера с выделенным IP-адресом.
No. 19380    
>>19374
> Для начала, не нужно писать велосипед, когда есть https://developer.mozilla.org/ru/docs/Web/API/Element/classList
Да, я до них еще не дошел просто до того. Просто я специально не заглядываю наперед в методах, потому что хочу сделать велосипед из дерева. Ибо так я себе как бы делаю задачу тяжелее, а значит могу развивать мозг. Это как с книгами. Чтобы иметь хоть какую-то креативность, нужно читать книги, но слишком много читать - это вредно,так как все уже поднесено разжеванным и думать не надо. Что-то меня не в ту сторону понесло
> Допущена та же ошибка, что была описана в >>19313
> String.spit() возвращает массив, а не превращает строку в массив и не присваивает переменной, хранящей эту строку новое значение. То, что alert(tempClassName) выдает значение obj.className, а не массив ["open", "menu"], не насторожило?
Ой, я по привычке. Почему-то до сих пор на практике строки воспринимаю как массив. Не знаю, как выработать противоположную привычку.
> Советую заиметь привычку использовать const вместо var, чтобы не возникало желания переиспользовать переменные для хранения разных типов и не подразумевать ошибочно, что неизменяемые типы должны изменяться.
А вот тут детальнее. Что за const? Никогда о ней не слыхал.
No. 19381    
>>19380
const это как var, только const. Вместо переменной будет константа. На практике именно изменяемые переменные нужны довольно редко. Ознакомиться со всеми этими вещами можно в виде нескучных уроков: https://youtu.be/2iLVFyYwyRA
Еще по всем приведенным примерам кода видно очень вольное использование return:
> return alert("Данный класс уже существует")
Вопрос: что вернет эта функция в данном случае? Что она должна возвращать и зачем?
Кроме того, научись пользоваться консолью браузера и отладчиком, кажется весь твой инструментарий сейчас ограничен alert().
No. 24849    
5512_Orange_Hartpfy.png - (19.88KB, 128×121)
24849
Посоветуйте годный гайд по ascii рогаликом на чистом canvas js без всяких сторонних либ.
ЗЫ: нигде такого не нашел, а самому додуматся тяжело
No. 25508    
>>7318
https://github.com/azat-io/you-dont-know-js-ru
Удалить сообщение []
Пароль  
[Mod]