24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!
Этот тред посвящён главному языку будущего - JavaScript. Благодаря своей гибкости используется в браузере, на серверах, в мобильных приложениях, на десктопе и практически во всех видах программирования. Удобный синтаксис позволяет легко писать на нём, а высокая производительность делает его отличным выбором для решения любых задач - от небольших магазинов до огромных highload проектов. JavaScript по праву является самым популярным в мире языком. На каждом сайте есть браузерный JavaScript, а JavaScript на сервере используется такими крупными корпорациями, как Amazon, Yahoo, HP, NASA, Walmart и многими другими.
Блять. Пидорасы. Мне бомбит от всех этих ваших ecmascript, es20xx и бабелей.
Хипстеры в узеньких штанишках там совсем охренели?
Сделали классы, все дружно бросились их использовать, но приватные методы забыли. Как вообще сделать приватный метод класса в этом вашем яваскрипте?
Запилили декораторы @хуй пизда() {}
но обосрались, декараторы работают только с классами. нельзя повесить декоратор просто на функцию или объект.
хипстеры дружно бросились использовать декораторы и команда babel берет их и выпиливает нахуй из проекта, потому что они вообще были просто шуткой, питушки так и не решили нужны ли они вообще?
в итоге имеем: недоделанные классы, в которых надо писать this ехал через this и нет приватных методов. Куча проектов использующих декораторы, которых вроде как нет и не должно быть и которые все равно через жопу сделаные.
стрелочные функции поменял function на () => отвалилось все нахер
как вообще блять так жить?
хочется уже перейти на нормальный язык, без этих ебанутых плясок в яме с говном. жили же как-то раньше
>>911274 в питоне есть приватные методы. В пидорском es2015-2016 нет
>>911275 можно подумать динамическая типизация отменяет абстракцию ооп
class в javascript это просто сахар. что собственно мешало добавить private методы в этот сахар? учитывая, что эти слова уже зарезервированы, используй не хочу
>>911269 >поменял function на () => отвалилось все нахер Блядь, ты охуенен, анон. Честно, без иронии. Заведи бложик где-нибудь на Медиуме и пиши про ЖС. Обещаю подписаться.
>Как вообще сделать приватный метод класса в этом вашем яваскрипте? Сначала приведи аргументы в пользу наличия приватных методов в интерпретируемых ЯП. Тебе самому разбираться, где паблик, а где прайвет? Стандарт де-факто помечать имена приватных методов а-ля _myPrivateMeth() {} Если не хочешь выбрасывать методы в глобал скоуп, юзай WeakMap'ы, приемы навроде Closuring и т.д. Простор же для фантазии, а тебе обязательно надо было заморочиться вокруг ES6 Classes.
>Запилили декораторы >но обосрались, декараторы работают только с классами Ну тут-то ты перегнул палку, бро. Декораторы можно вешать на методы класса. Специально для тебя русек подогнали для описания декораторов: https://habrahabr.ru/post/277021/
>>911274 >>911275 > Какие тебе вообще приватные методы в ооп языках? > динамически типизируемых языках
Спецификаторы видимости важны для инкапсуляции, чтобы отделить внешний интерфейс от внутренней реализации. Типизация здесь вообще не при чём.
>>911269 > Сделали классы, все дружно бросились их использовать, но приватные методы забыли. Ну называй приватный методы с нижнего подчёркавания, нормальный программист их извне вызывать не будет. Вот наличие тайп-хинтов хотя бы как в PHP очень сильно помогло бы. Но вот есть ребята, которые не только ноют, а пытаются что-то изменить: https://flowtype.org/
> Flow can catch common bugs in JavaScript programs before they run, including: > silent type conversions, > null dereferences, > and the dreaded undefined is not a function.
Можешь и ты присоединиться, у них там около тысячи issues на гитхабе.
>>911342 > Если не хочешь выбрасывать методы в глобал скоуп, юзай WeakMap'ы, приемы навроде Closuring и т.д. Это ты сейчас преимущества или что перечислил? Почему бы эти костыли не заменить на поддержку приватных полей из коробки, вместо того чтобы фантазировать как еще можно это говно довести до состояния здорового яп.
Антонио, помогите пожалуйста. Есть файл icalendar или как-то так. Можно ли как то выудить из него информацию и использовать ее жс? Переконвертировать его в json может, или какая то библиотека есть для работы с такими файлами? Как вообще делают в подобных ситуациях?
Аноны, это M$ вкрай охуел или я что-то не так делаю? IE11, в Edge-режиме, выдаёт такой userAgent: >"Mozilla/5.0 (Windows NT 6.1; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; Tablet PC 2.0; rv:11.0) like Gecko" Они там пизданулись? Эта хуйня под FF косит.
>>911342 >Сначала приведи аргументы в пользу наличия приватных методов в интерпретируемых ЯП.
Разработка api, фреймворков, везде где надо скрывать реализацию от шаловливых ручек макак и принципы ООП никто не отменял.
Вот я сделал на англуяре контроллер используя class, angalar.module('analApp', []).controller(class { constructor(privateService) { this.privateService = privateService; } ebalJs() {} });
некоторые методы приватные, потому что не должны вызываться из шаблона (view). Однако в js я могу обратиться к этим методам и даже сервисы, которые заинджектил, вызвать, через {{ $ctrl.privateService }}
Кто скажет: нахуй так жить? Однако у нас на проекте ребята в узких штанишках именно так и живут.
>Стандарт де-факто помечать имена приватных методов а-ля _myPrivateMeth() {}
Вот сейчас открыл arbnb конвеншин, они пишут: не используйте _ перед именами, если хотите, что-то скрыть, скрывайте. Потому что _ не работает и выглядит убого.
>Ну тут-то ты перегнул палку, бро. Декораторы можно вешать на методы класса.
имел ввиду, что никуда кроме класса и метода класса ты их не повесишь
В той же статье: @mydecorator def myfunc(): pass
Вау!!! Мы сделали декораторы, как в пистоне, дивитесь, хлопцы
Это скорее попытка сделать яваскрипт строго типизированным. Интересно, почему команда ангуляра второго выбрала основным языком TypeScript, а не flow?
В тайпскрпте есть private, кстати. Вот только зачем использовать TypeScript, когда можно использовать java? Если писать на нем соблюдая все типы, то нужна будет тяжеловесная ide.
>Вот только зачем использовать TypeScript, когда можно использовать java? А еще можно своими кокошками жонглировать, попердывая в кресло. Ты от проблем привык фрустрировать, или все же решать их?
>>911427 >получается, что если ты хочешь приватные методы, то использовать новые фишки нельзя Риторический вопрос: ты сильно расстроился, когда узнал, что к fat arrow функциям нельзя биндить контекст? Это тоже ограничение новых фишек?
Запилил на express.js сайтик, который отображает некоторые мои файлики на компе, по аналогии с каталогами в винде, запустил ноду на компе, сайтик стал виден во всей локалке, т.е. дома на телефоне и планшете. Теперь могу дрочить не вставая с дивана. Завидуйте.
>>911579 > отображает некоторые мои файлики на компе > express.js Ради такого фреймворк жирнючий ставить... То, что ты описал, уместится в один index.php на 5-6 строк.
>Интересно, почему команда ангуляра второго выбрала основным языком TypeScript, а не flow? Почему команда говнуляра не выбрала dart?
Ты заебал уже хуйню пороть, маяковский. В js нет классового наследования, смирись. Здесь пишут функции, кооторые просто не экспортируют и все - нахуй не упали прайват методы. Используй java, раз так бомбит. Или костыли типа typescript/flowtype/dart
Аноны, почему для элементов, который запилины для стилизации шрифтов, нет конструкторов? Не существует HTMLBoldElement для <b> - он наследует напрямую от HTMLElement. И для всяких <i> и прочих <em> тоже.
>>911460 жаль не заскринил про че там, думал опять ебаный js свои финты крутит. Так-то в браузере все норм работает, там правда среда не совсем браузер обычный. Ну да похуй
>>911638 >внезапно на стороне клиента, это так и так бесполезно, в чем суть приватных свойств, если они видны в консольке бровзера в жс файле? Что ты несешь? Как ты собираешься добраться до приватных свойств из консольки спрятанных в викмапе, которая в замыкании?
Я не о том, что это годно. Все привычки классоебво в прототипном программировании не нужны (да-да, и конструкция класс в js не нужна, уебки).
Но то, что в js нельзя ничего спрятать от пользователя, так чтобы он до этого не добрался - чушь.
>>911276 > в питоне есть приватные методы нихуя, в питоне абсолютная рефлексия, там есть только pep8 на приватные и защищенные (protected) методы, а также магические методы и все. В js аналогично.
>>911350 > эффект медленного появления Играйся с прозрачностью, где 100% растянуты на нужный тебе интервал. >>911402 > везде где надо скрывать реализацию от шаловливых ручек макак Кек, тогда и браузеры заставляю этого стандарта придерживаться, чтобы базовые вещи типо xhr, array.prototype и прочее никто не мог переопределить.
Алзо поясните за react-way. Можно ли в реакт роутере использовать не один компонент, а несколько?
>>911655 Приватные методы как и классы вообще просят классоебы, которые не могут не пукнув перекатиться из КООП в ПООП. У них шаблон рвётся, так же как у статикодебилов, не способных писать код, так, чтобы их тайпчеккер по рукам все рвемя не ебашил.
>>911659 А как по мне, приватные метода - хорошая альтернатива. Чтобы пользователь, такой как я, лол, который если и захочет залезть - то не сможет. Если-бы была поддержка в IE9 и е.п. - давно-бы перекатился на новые стандарты. Но приватные методы ещё на стадии черновика, насколько я помню.
>>911721 >который если и захочет залезть - то не сможет. Сможет. У него же весь код под рукой. Он возьмёт и сделает нужный метод публичным, поссав вам на литсо.
>>911654 поясни про викмап, как в нем прятать приватные свойства?
>>911655 допустим я делаю перделку-виджет, который клиент сможет разместить у себя на сайте сославшись на мой js фаил. и экспортирую api widget.puk(); и не хочу, чтобы внутренний метод widget._perd(); был доступен клиенту.
все это можно спрятать в замыкания, однако js обезьяны вообще не понимают зачем что-то прятать, они запилили классы без праветов, потому что не осилили прототипы и замыкания.
>>911659 да. Рвется шабло, что есть класс, а скрыть метод я не могу. Зачем спрашивается нужны были классы?
>>911731 это уже будут его личные проблемы, потому что мы как бы предупреждали
>>911783 >Зачем спрашивается нужны были классы? А что, единственное предназначение классов это приватные методы? Даже у инкапсуляции две части: сокрытие данных и группировка данных с методами.
>зачем что-то прятать А ты можешь внятно объяснить, зачем? Толкьо без "не хочу, чтобы они имели доступ", желательно.
>>911802 >В смысле проблемы? Он же намеренно хочет покопаться, а не случайно там что-то сломает.
Вот именно. Может он вообще туда дебагером полезет. Инкапсуляция это ключевой принцип ООП, вообще-то.
>подчёркиванием предупредите и всё. Нахуя усложнять жизнь и себе, и другим-то, я никак не пойму?
лол. Вообще сокрытие методов и свойств должно упрощать жизнь.
>>911789 ну ничего же не мешало добавить в этот сахар приватные методы. а так в этом сахаре нет смысла, да и какое же это сахар, когда нужно везде писать this. Даже в java такого маразма нет.
>>911806 > объясни мне принципы OOP > яваскрипт тред
>>911783 >допустим я делаю перделку-виджет, который клиент сможет разместить у себя на сайте сославшись на мой js фаил. и экспортирую api widget.puk(); и не хочу, чтобы внутренний метод widget._perd(); был доступен клиенту.
>>911820 >>>911787 дело говорит: https://jsfiddle.net/ee9woaLg/ Нет, не правильно. Так у тебя в каждом инстансе инстансы собственных приватных методов, которые ты не сможешь использовать из других методов и вообще поебота какая-то.
Замыкать нужно сам класс, а не методы в конструкторе.
>>911817 >Даже в java такого маразма нет. Это совершенно разные языки. Люди не умеющие переключаться между абстракциями и ноющих о том, что в каком-то языке что-то не так как они привыкли, обычно идиоты
>Private visibility is a design-time construct; it is enforced during static type checking but does not imply any runtime enforcement. ... TypeScript enforces encapsulation of implementation in classes at design time (by restricting use of private members), but cannot enforce encapsulation at runtime because all object properties are accessible at runtime. Future versions of JavaScript may provide private names which would enable runtime enforcement of private members
>>911909 Вполне годная. Но у реакта больше материалов. Нет, ты начинаешь делать приложение и когда у тебя возникает потребность в какой-то технологии - ты начинаешь ее использовать. Я уже год пишу на реакте, но не знаю вебпак идеально. Найди awesome vue на github - там будут примеры приложений и ссылки на технологии, которые тебе могут понадобиться.
>>911929 Пример не он писал, а я скопипиздил и изменил имена функций. И да, у тебя паттерн "модуль" - я это понимаю, просто не заморачивался с фиддлом, а нарисовал общее понятие. Скопипиздил пример с кантора.
>>911817 >Инкапсуляция это ключевой принцип ООП, вообще-то. Инкапсуляция это не только методы прятать, я же написал.
>Вообще сокрытие методов и свойств должно упрощать жизнь. Так чем? Ты можешь не ссылаться на какие-то там принципы чего-то, деды так делали, а взять и пояснить по хардкору, зачем тебе это делать, кроме как скрыть от шаловливых ручек? Ведь последнее, как уже гвоорилось, с js не сделать, всегда есть относительно лёгкий способ всё расковырять.
>>911855 ТайпСкрипт, Дарт, ФлоуТайп нахуй не нужны. Единственный их плюс - это облегчить старт для всяких мракобесов, которые пришли из Java, например, и не могут переучиться. КофеСкрипт тоже хуета.
Сейчас, блять, ВСЕ кому не лень пилят свои неебатсо крутые фреймворки (но это еще можно понять) и пытаются вылечить JS, который, по их мнению, является хуетой. В итоге мы получим то, что сообщество будет полностью разобщено. Придется тратить больше сил на поддержку проекта, который написан на чуть-чуть ином стеке.
Поэтому не следует быть как Мелкомягкие и заставлять писать разработчиков на своей недоподелке.
Нахуй говнуляр 2 и туда же тайпскрипт. Вотэт у меня бомбануло, охуеть
>>912054 > не следует быть как Мелкомягкие и заставлять писать разработчиков на своей недоподелке. Ну да, именно поэтому ангуляр 2 через пару лет снова станет промышленным стандартом, на котором будут пилить толстые spa, как это было с первым.
>>912060 Там леченние проблем с обратной совместимостью. Когда пилили ангулар2, над совместимостью между версиями не подумали. Сейчас во 2-й версии api устаканится и можно будет все обновлять куда проще.
>>912065 Энивей ангулар2 это уже тяжелая махина на уровне эмбер или дерби, которые для простых приложений уже не годятся из-за оверхеда всяких фич "из-коробки".
>>912054 > Единственный их плюс - это облегчить старт для всяких мракобесов, которые пришли из Java, например, и не могут переучиться. А ты писал на Java/C# большие проекты?
>>911659 > У них шаблон рвётся, так же как у статикодебилов, не способных писать код, так, чтобы их тайпчеккер по рукам все рвемя не ебашил. Но ведь это удобно, чем больше проект - тем это полезнее. Вот, послушай чувака, у него явно и опыта и мозгов побольше, чем у тебя: https://www.youtube.com/watch?v=Ui8YfxzjaTY
>>912249 у меня перфекционизм и в этом нет ничего плохого. Может в яваскрипт сообществе поощряется написание говнокода, но в java мире за это бьют по рукам
>>912281 С того, что джава макака будет рассказывать, насколько этот язык позволяет писать хороший код. Обычно это такой же ад, как и js. Упрощает понимание как раз документирование в нужных местах и тесты. Неочевиднаю логику любой язык позволяет настругать.
>>912285 > как красиво писать код на javascript Посмотри исходники 2 ангулара, экспресс. Книги ему какие-то подавай.
>>912300 >С того, что джава макака будет рассказывать, насколько этот язык позволяет писать хороший код
ты удивишься, но действительно позволяет. Существует огромное количество литературы, как писать хороший код на яве. Многие передовые практики в программировании вышли из явы. Даже этот ваш тайпскрипт не более чем попытка запилить яву. Да даже яваскрипт это яваскрипт.
В общем, я тот, кто написал вот это http://pastebin.com/nhedaiHx Как можно заметить, функция isPair реализована не очень хорошо. Теперь мне понадобилось определять не только пары, но ещё и другие вещи, причём многим я не могу в constructor засунуть функцию, потому что они хоть и производятся одной функцией, но всё равно имеют разные типы. Собственно, мне интересно 1) как их отличать друг от друга, и 2) ничего же страшного не случится, если я в constructor затолкаю строку? Ну, кроме того, что это "плохой стиль".
>>912322 >Даже этот ваш тайпскрипт не более чем попытка запилить яву Нет, это попытка запилить С#. А знаешь в чём разница? В тайпскрипте есть дженерики. В жаве их нет.
>>911731 Ты ебанутый? Как он сделает публичным метод, к котором даже не имеет доступа даже через Консоль? Вообще, как он изменит тип метода? Ты ебанутый.
>>912054 Если хочешь один раз чему-то научится и работаьь следующие 50 лет, ничего не изучая, не читая и не гугля, то иди дворником работать. ЯП и решения на них будут постоянно развиваться, не смотря на все твое желание оставаться клавиатурной макакой
>>912475 ПРОСТО возьмёт и изменит. Скачает твой код, подправит, и будет использовать свою версию. Или скопирует нужную часть и через плагин добавит публичный метод, который выполняет тот же код, что и приватный.
>>912246 >и правильный код Разумеется, никакой конкретики, одни смехуечки и гринтекст.
>>912322 Красиво позволяет писать, наверное, любой язык. Однако, если требуется >огромное количество литературы, как писать хороший код значит есть вероятность, что некрасивый код оно писать позволяет гораздо проще, чем другие языки, на которые столько литературы не требуется, разве нет? Ведь не одни же джависты какие-то особенные, что хотят красивый код писать, все хотят.
>>912511 >ПРОСТО возьмёт и изменит. Скачает твой код, подправит, и будет использовать свою версию. Или скопирует нужную часть и через плагин добавит публичный метод, который выполняет тот же код, что и приватный.
про объясни, зачем это делать?
>значит есть вероятность, что некрасивый код оно писать позволяет гораздо проще, чем другие языки, на которые столько литературы не требуется, разве нет?
нет, это значит что яваскрипетры макаки необучаемые, вкатившиеся в кодинг неделю назад
>>912515 можно, но зачем? я просто скрыл от клиента все не нужное и весь информационный шум, оставив только нужные методы
Делаю веб-приложение с расчётом на длительную перспективу. Решил изначально использовать Angular 2, но мне не понравилось, что он слишком массивный, создаёт много файлов и директорий, а так-же устанавливает много модулей, которые мне не нужны (а нужны исключительно для работы ангуляра 2), тем самым, вовсе не вписывается в общую арххитектуру приложения. А за основу своего приложения, брать Angular 2 я не буду, так как его роль далеко не первостепенна. Но я вот вспомнил, что первый ангуляр просто подключается ссылочкой и работает сразу же. Но возникает вопрос, а Ангуляр 1, это вообще хороший продукт, а то я начитался об огромных преимуществах Ангуляра 2, над своим младшим братом, что возникает вопрос, стоит ли вообще использовать Ангуляр1? Или лучше обойтись православным JQuery и не морочить себе голову? Или быть может есть какой-то такой же простенький фреймворк (библиотека), чтобы просто подключить его ссылочкой и не собирать по частям, не закачивать какие-то дополнительные возможности, а просто сесть с сделать то что мне нужно?
>>912532 Я читал что он очень ограничен в своих возможностях, а что самое ужасное, ему нужно в случае всего каике-то сторонние модулиподключать. Это всё правда?
>>912511 > Скачает твой код, подправит, и будет использовать свою версию. >>912359 > C# это попытка сделать яву с кучей говна и сахора А получилось так, что все новые фичи и сахар джава перенимала из С# с опозданием на пару-тройку лет. Так что попытка вышла отличнейшая. Если бы еще не была привязана к одной платформе - java-приложения были бы очень сильно потеснены. >>912054 > ТайпСкрипт, Дарт, ФлоуТайп нахуй не нужны Яскозал! >>912530 Backbone, всего 2 зависимости - jquery и underscore/lodash. То бишь 3 скрипта. Не слушай этих (>>912532>>912534) петухов, с этой хуитой тебе еще придется всякие редуксы и роутеры использовать с довольно ограниченным функционалом, плохо принимающим что-то кастомное. Так-то ангулар первый очень хорош, но скоро его поддержку полностью дропнут, увы.
С сайта курса валют нужно утащить курс рубля. Например id: "USDRUB" и Rate: "59.6495". Но постоянно вылазит undefined. Я не могу cформатировать нормально нужный адрес к нужному столбцу. Жабаскрипта не знаю почти.
>>912300 >>912284 Найс попытка, но после жс жаба кажется очень хорошим языком. Просто ты видимо из тех кто "вкатывается" и так яро защищаешь родное болотце. А если бы посмотрел на другие языки, то понял бы к чему запилили тайпскрипт и почему жс все называют говном.
>>912556 Да. Хочешь сказать в джаве не нужны многопоточность или асинхронщина просто потому что? За асинхронщину недавно вот adswizz задвигал, как у них на джаве все круто с ней.
>>912557 >то понял бы к чему запилили тайпскрипт к тому, что гуглодебсы делают джяву из всего к чему прикасаются как бы понятно, почему гугелу это выгодно, не понятен только восторг дебилов, которых заставляют жрать говно (программировать на джяве)
>>912593 В том-то и дело, что не нужен в js этот синтаксис. В js не то что чего-то не хватает, как многие тут утверждают, а напротив, слишком много лишнего. В js не нужна ни конструкция class, ни оператор new, ни множества еще прочих вещей. Их впиливали чтобы закосить и облегчить жизнь перекатывальщикам. А перекатывальщикам все мало.
В js иная парадигма, не КООП, он динамичен, тут метапрограммироване во все поля. Но людям слишком сложно и они ноют что им нужно то, чего на самом деле тут не нужно.
Все, что вы просите, должно реализовываться для вас препроцессорами, трансляторами, а не самим языком. И если бы вы понимали что KISS это хорошо, то не ныли бы.
>>912595 >ни оператор new И как ты предлагаешь вызывать функцию с NewTarget? Через `Object.create(Constuctor.prototype)` и `Function#call`? Ты ебанутый? Ты ебанутый.
Насчёт всего остального -- согласен, да. Но раз уж заговорили -- просто поддержал тему. Да и мне всё-равно так-то. Всё-равно ещё года 3-4 не буду использовать ES6+, лол.
>>912606 При чем тут конструктор и оператор. блядь, дебил сука. Какой же ты тупой, если не понимаешь, что оператор в языке ты уже не перегрузишь, если тебе не запилят эту возможнсть через какие-нибудь мета-методы, а метод блядь легко.
Ты настолько туп, что не смог бы переделать bew Hui() в Hui.new() ? Ты дебил?
>>912549 Это ты ебанутый. Если код у тебя на сервере, то клиенту похуй, у него нет никакого доступа к твоему коду вообще, приватность методов тут никаком боком не относится. Изначальный посыл был, что "вот у меня есть два метода, но пользователю моей либы я хочу дать доступ лишь к одному из них". >>912554 Никак не посмотрит, ты даже не понимаешь, о чём речь в разговоре шла.
>>912529 >про объясни, зачем это делать? Для того, чтобы использовать методы, которые какой-то хуй приватными сделал.
>яваскрипетры макаки необучаемые, вкатившиеся в кодинг неделю назад Ээ, каким образом это вытекает из наличия кучи литературы по джаве?
>>912566 Одни джавадебилы говорят что это идеальный язык и делают из всего, к чему прикасаются джаву, даже из лиспа, даже из пайтона, да даже из аллаха. Вторые говорят что джава не нужна и вообще не тру и ебашат веб на пыхе, перле или рубях. Съебитесь в свой загон, заебали по всей борде срать.
>>912657 Строгую типизацию сожно прикрутить к любому языку ввиде препроцессинга. А ты попробуй выпилить строгую типизацию из языка, в который она вшита. Сможешь java использовать в качестве шелл-языка? В качестве интерактивного репла для управления какой-то среды? Удобно будет? А js удобно. А чтобы на js писать что-то большое для поддержки, есть внешние инструменты.
>>912660 Ты из тех, кто пишет GTK-приложения на руби? Я не слепой фанатик какого-то определённого языка и не пытаюсь пихать его там, где ему не место. Очевидно, что для шелла удобней использовать скриптовый язык.
>>912671 В треде вроде как не шелл обсуждали. То, что JS скриптовый и подходит для шелл скриптов лучше, чем джава, ещё не означает, что на js приятно писать что-то сложнее туду-списка.
>>912676 Тред посвящен языку, а не какому-то отедльному его применению. JS отлично подходит в качестве встраиваемого, в отличии от. Мой пост был о том, что из языка в котором зашито всё, нельзя это просто взять и выбросить, в отличии от того, что когда в языке тебе не хватает чего-то - прикрутить это.
Ребята, привет, есть один цикл, в каждой итерации я конструирую пикчу и добавляю её в документ, есть кое-какая обработка события onload каждой пикчи.
Я правильно понимаю если я напишу этот ивентлисенер инлайн, т.е. внутри тела цикла, то JS клонирует эти функции столько раз, сколько итераций цикла, а если я вынесу тело функции за пределы цикла, то в памяти будет только один экземпляр этого лисенера на все пикчи?
>>912707 Блджад, и правда заработало. Спасибо! Выходит, зафиксировать изображение из webgl канваса можно только передав соответствующий аргумент в получение контекста на этапе инициализации?
>>912715 Ну, а иначе буффер изображения не хранится в озу, оно в видеопамяти же. Откуда его брать, чтобы тебе отдать в виде пикчи?
Возможно и можно сделать скриншот страницы, через апи самого браузера, которое доступно для расширений например, и из него уже вырезать область с канвасом. Но в обычном клиентском js нет такого апи, то небезопасно..
>>912608 >переделать bew Hui() в Hui.new() Пиздец. Даун, не понимающий ООП. Спешите видеть!
>>912644 >Это ты ебанутый. Нет, ты Слушай, анон, в чём проблема? Приватные методы - хороший способ убрать то, что не нужно видеть. Я-бы с удовольствием перепилил некоторые функции для расчётов и пр., чтобы их не было видно вообще во внешнем коде. Это хорошое дополнение к языку, приучает контролировать геттерами-сеттерами всё важное и не давать добраться юзеру к чему-то важному.
Поясните, почему так расплодились уёбищые быдло-ориентированные пакетные менеджеры вроде composer и npm, где все зависимости кладутся в подпапку, вместо того, чтобы храниться и обновляться централизованно по принципу "1 пакет на всю систему, а если где-то в зависимостях обнаружилась несовместимость, то вы идёте и фиксите её, а не тащите 100500 версий пакетов ради какого-то брошенных пакета, на который разраб положил хуй". Вы понимаете вообще, что если вы позволите разрабам не устранять несовместимости, их никто не будет устранять, потому что "и так работает, работает - не трожь, а на самом деле мне просто лень копатся в чужом говнокоде", хотя там фиксить обычно от силы пару строчек, у вас будут копится пакеты, которые не совместимы с новыми версиями других пакетов, которые в свою очередь будут зависить от старых и потенциально уязвимых версий других пакетов. Какой дебил мог это придумать, какой дебил мог это поддержать и как вы собираетесь эту проблему решать?
>>912771 Если бы ты был хоть чуть-чуть прошаренее, то знал бы, что половина операторов и так перегружаются с помощью мета-методов. И твой instanceof ни что иное как obj[Symbol.hasInstance]()
>>912771 >Может, тогда ещё убрать `instanceof` и `in`? И циклы все в методы переделать. Охуенно было бы, кстати. После этого останется только this выпилить, === переделать в == и получится более-менее нормальный язык.
Есть массивы (arr), и есть нечто (smth), что сделано на основе массива (точнее, оно - специально сформированный массвив. Нужно написать функции isArray и is_SMTH, при этом isArray( arr ) === true, isArray( smth ) === true, но is_SMTH( arr ) === false и is_SMTH( smth ) === true. Есть идеи? inb4 переделай на объекты Там та же самая проблема будет, только с объектом вместо массива.
Сап, аномач. Как в жс можно целое число к float привести? Например, у меня есть 412, как его сконвертировать в 4.12? Т.е. брать последние 2 знака как знаки от точки. 550 = 5.5, 5155 = 51.55 и т.п.
Пока только идея конвертировать в строку, добавлять . на 3 с конца позицию, это нормально?
>>912748 В том же луа, например, все через Class.new() и хуячат, потому что по-другому нельзя, и ничего, живут.
>и не давать добраться юзеру к чему-то важному. Библиотеку свою спрячьте, блин.
>хороший способ убрать то, что не нужно видеть. Если не хочешь чего-то видеть — не смотри. Ни одного конкретного аргумента, кроме как "не хочу", "спрятать", "ооп", "правильный код" так и не прозвучало. Что такого хорошего-то в ограничении пользователя, особенно когда он может это обойти, если совсем надо? Задокументируйте, обозначьте — дальше пусть сам ебётся, если что-то сломает используя "приватное". Я уже слышу запах своего пердака из будущего, когда приватность введут. Вот есть OGVKit на ифон, webm проигрыватель. Там есть методы для показа и скрытия кнопок управления. И они приватные, блядь, вызывается только по внутренным событиям. Ну вот нахуя? Мне надо было в нужные мне моменты прятать или показывать, пришлось копипастить код тех функций в свой контроллер (даже к приватным переменным обращений не было). В питоне в xlwt, например, была возможность доступа к экселевским листам лишь по названию. А мне по индексу надо или просто по всем листам пройтись, а массив листов "приватный" (к счастью, в питоне это легко обходится). В итоге через workbook._Workbook__worksheets[idx] и приходилось лазить. Но тут имя класса указано, а это не очень хорошо и может принести проблем. Я уверен, у многих найдутся такие примеры, когда что-то полезное зачем-то прячут, вынуждая костыли пилить.
>>912839 > что не понимаешь о чем говоришь Я сравниваю. В С# многие вещи сделаны на голову продуманнее и удобнее. Только в 1.8 добавили лямбды например. > вообще не знаю что это за шняги и зачем она нужна Действительно, зачем в приложении может понадобится асинхронность? В общем этот холивар не имеет особого смысла.
Как вообще цивилизованно можно решить проблему с невозможностью задать в классе свойство-значение? Вот я, допустим (https://jsfiddle.net/bjg5Lv7L/), решил сделать класс User, каждому экземпляру которого давался бы свой айдишник от 0 до +∞. Лучше ничего не придумал, чем по совету Кантора задать прототипу а-ля "внутреннее" свойство. Так вот, как бы данную проблему решил прокаченный анон, или я накорябал максимум, который (пока) можно сделать?
>>912983 Так он как раз не понимает постулатов Кея. Он же из переделанной (new Class) конструкции в (Class.new) увидел сингелтон, а не посылку сообщения объекту.
>>913025 > как бы данную проблему решил прокаченный анон Не выебывался с сахаром, и писал бы все на страх добрых прототипах и конструкторах отдельно. Для консистентности.
>>913025 >User.prototype._quantity++; То, что ты в конструкторе дергаешь свойство их прототипа, а не из образешься к нему из самого инстанса, говорит о том, что ты вообще не понимаешь прототипную объектную модель
>>913043 Я как бы поэтому и спрашивал. А вот то, что ты сделал, это указал мне на то, что я дурак, ничего не предложив самому. И, кстати, ниже тебя, опять же, спросили, почему, на что ты ответил "вот уж действительно". У меня два предположения - либо ты сам нихера не понимаешь, либо ты просто мудак. Скорее всего, второе
>>913063 Нахуя тебе этот твой счетчик _quantity в протипе инстансов? Почему ты не сделаешь его статическим свойством самого конструктора User? Или ты не знаешь, что такое стические свойства, и что функции это тоже объекты?
>>913045 Менять свойства в прототипах вообще - хуевая практика, вносящая путаницу. Прототипы хранят методы. которые у всех инстансов будут одинаковыми, и если свойства - то со значениями по умолчанию.
В его конкретном примере, где он пытается хранить динамический счетчик чтобы генерировать id - это все равно, что в магазине, после каждого покупателя продавец будет рассылать сообщения всем предыдущим (и последующим) покупателям смс о том, что количество покупателей стало больше. У него короче нелогичное решение аблсолютли, ибо этот его счетчик никак не относится к отдельному инстансу, он относится к классу как таковому и считает количество инстансов этого класса, а значит и свойством должен быть класса, а не инстансов.
>>913066 >>913070 Если тебе так лень инициализировать статическое свойство строкой ниже декларирования класса, используй замыкание на здоровье. Но для одного свойства, это вполне себе оверхед. https://jsfiddle.net/erx7fbhk/
Посоны, поясните за геймдев на JS. Как оно вообще? В том плане, приятно ли на жс игростроем заниматься, при условии, что сам процесс разработки на жс очень доставляет. Описание логики нуднее, чем, скажем, на Lua?
Правильно ли я понимаю, что все современные игровые движки на жс задействуют canvas?
>>913684 Хорошо, а на каком движке можно быстро запилить простейший аналог арканоида или флаппи-берда, дабы ознакомиться? Без текстур и без физических наворотов.
Ангуляробояре, кто работал с ui-router? Есть простой способ превратить url в state? Суть в том, что когда я гружу приложение на роуте '/' и потом перехожу из него на '/url', то всё норм. Но если сразу попытаться зайти на '/url' или обновить страницу, будучи на нём, то ничерта не грузится. Не срабатывает даже перенаправление на '/' с неправильного роута.
Добрый анон помоги нубу. Выбрал JS основным языком, который буду юзать, но начинать дрищу с него не рекомендуют, потому начал изучать основы программирования на С. Понял синтаксис и основы, но не затачивал решения задач, т.е. я осознаю где и что в этом С, но не применял его на практике. Так вот, что хочу знать: таких знаний будет достаточно, чтобы начать учить JS и не стать говном, или всё-таки надо задрочить С? Просто скучноват он, да и все-равно его применять не планирую, но становиться быдлом не хочу. Спасибо!
>>913850 >но становиться быдлом не хочу А правда в том, что знания Си и прилагающиеся к нему в работе с JS тебе не понадобятся ещё очень долго, возможно - никогда.
>>913856 Чтобы начать изучать Js, тебе нужен просто курс основ программирования. Понимать, как работают циклы, ссылки, функции. И то, это все необязательно, в учебниках Js это в любом случае разжевывается. Другой вопрос - для чего ты собираешься использовать Js. Если для веба (а если не для веба, то это странно), то хорошо бы заштудировать html и css, благо, эти две вещи простые как жопа.
>>913885 Ну, если ты очень любишь Js, то ты захочешь писать на нем инструкции на холодильнике для своих детей. Вопрос в том, что человек спрашивал про то, с чего ему начать любить Js, а начать лучше с того, с чего начинал сам Js
Лучше со старта не забивать себе голову этой дрянью, а взять сишку и какой-нибудь учебник по алгоритмам, реализовать стек, очередь, различные алгоритмы на деревьях и графах. Далее взять язык с нормальным ООП и написать на нём пару игрулек. А потом, если уж припечёт, окунайся в джс-парашу.
Профи, поясните за Dojo Toolkit. Я смотрю на него и вижу, что из коробки есть многие фичи, которые в современных фреймворках типа Angular и Ember появились относительно недавно. Почему он так непопулярен? Пишется ли сейчас какой-то софт на нём? Алсо, дополнительный вопрос: пишу на Python/Django, хочу делать фронт для своего проектика, который задуман как SPA. Чем бы вы пользовались на моём месте? Таблицы, кнопки, тулбары и деревья в проекте будут, а на ExtJS денех нет (проект не планируется быть OpenSourсе, а пиратить убеждения не позволяют). [SPOLER]Скидываю лолей авансом[/SPOILER]
Ананасы, посоветуйте сборку реакта с вебпаком. Никак не могу его прикрутить к своей системе, хоть убей. Поднимает, но картинки не подключает и роуты не работают. Урл меняется, вьюха - нет. Нифига не понимаю суть вебпака этого. Может у кого-нибудь простейший проектик есть на react+scss+webpack?
>>914199 Для тебя нет. Ты мозговой инвалид. Некоторые киселя по ящику зырять, ты вот, корявыми пальцами в бородавках, гавнокод на жоэс набираешь за дошир.
А насколько ООП востребовано в веб-разработке? Во фронт-энде, например? Было вот такое тестовое - хз, что там отвечать, по-идее. Я бы тупо через ng-repeat ангуляром вывел или чем-то подобным в реакте. Нах там классы нужны и методы? Это ж комменты простые. Или это все так строят архитектуру? КЛАСС APP, У НЕГО ЕСТЬ КЛАССЫ ФУТЕР И ХЭАДЕР... Покажите простой пример ООП, который реально встречается, а не Animal -> Cat. На самом деле плюсую к тем, кто выше писал, что проблема не найти обучающие материалы, а найти материалы, которые РЕАЛЬНО используются или, хотя бы, близки к этому. Один раз вообще статью читал, где фронтам рекоммендовали выучить сколько кб ссылка занимает и задрочить алгоритмы с обходами бинарных деревьев. Где, блеать, в обычном SPA, это может пригодиться???
>>914251 >Где, блеать, в обычном SPA, это может пригодиться??? Никто не спорит, что создать виджет комментариев легко и без применения ООП. Однако создание изолированного класса [здесь] сродни компонентному подходу, т.е. повысит и упростит реиспользуемость кода в будущем. Так что ООП в фронт-энде не лишено смысла.
>>914176 Это же шутка какая-то? Айди даётся по порядковому номера элемента в массиве (зачем вообще такой айди нужен, это же индекс?), но при этом элеметы оттуда могут удаляться, то есть получится несколько элементов с одинаковыми айди.
Господа, у меня проблемы с гуглением. Вот, у массива есть метод map. Возвращает новый массив с результатами работы функции-коллбэка. Если ли нечто похожее для объектов (ассоциативных массивов)? Типа вот такого, только еще чтобы с ключами можно было что-то делать https://jsfiddle.net/jezh5vgm/
Товарищи, я написал небольшую либу на ванильке, задача которой - строить DOM в новом окне (через window.open()) и нет, это не попап, который открывает вкладки в бекграунде.
Скажите, можно ли каким-либо JS фреймворком тестировать функционал либы, кроме монструозных комбайнов типа фантома/селениума? Тестирование заключается в проверке атрибутов элементов созданного дома на соответствие эталонным.
>>914493 Я вот о чем подумал, дабы избежать использования фантома и селениума, в апи либы своей сделать доступным вызов, который бы возвращал объект window порожденного окна, а входящий в него дом далее использовать в тестировании. Ведь это гораздо проще.
Аноны, поясните, как развивался веб вкратце? Или где можно об этом почитать/посмотреть? Например: 1. Тупо были файлики index.html, style.css, script.js, где и была вся логика. Написал, закинул новые на сервак - всё работает. По желанию - модульность в отдельные файлики. 2. CRM, CMS - ???? 3. Пишем на фреймворках, собираем галпами и паками, получаем готовую сборку, которую и деплоим
Собственно, проблемы с п.2, т.к. не застал того момента и не особо шарю, как ээти ваши CRM/CMS работают. К чему они относятся вообще?
>>914585 Сначала был голый html, даже без css. Все форматирование происходило за счет семантики тегов b, i, p, blockquote и так далее. За стиль оформления отвечал сам браузер. Потом появился css, который вначале был куда плачевнее нынешнего. Только позднее, спустя почти пять лет начала существования гипертектста в браузерах появился js, но и тогда он не был призван для какой-то там логики. Он использовался для все того же фактически оформления страниц.
Веб эпохи один ноль, был устроен таким образом, что сайты были в большей степени статичны и наполнялись самими администраторами. Не было никаких комментариев чатов и прочего (суть такой интерактивной динамики, а если где-то и была, то выглядела совершенно иначе и работал на иных принципах), для общения и обсуждения использовались иные каналы связи, не веб. cms же тогда, если и были то только у крыпных ресурсов, для администрирования и генерации этого самого статичного контента. Сначала использовали perl, потом из него родился php. И так далее, иные серверные платформы, для написания этих самых штук. Айти самая динамичная индустрия в мире, тут все всегда развивается очень быстро и парарллельно. Нельзя точно сказать, что в какой-то момент это было, а этого в этот же момент не было. Оно могло быть но осуществлялось иначе. С тем как росли серверные фреймворки (к слову, php это имено веб-фреймворк, а все ваши симфони запилены уже поверх фрейворка. в то время и до сих пор были и остаются те кто писал сайты и на сишечке), как росли серверные платформы, менялся и веб. Нет такой статьи которая бы в полной мере охватывала каждую деталь в отдельный момент времени. Читай о каждом факте истории, технологии и прочем по отдельности. Так и придешь к осознанию. Можешь начать с Тима Бернса Ли. Википедия так и устроена, что из одной статьи можно переходит в иные. Самообучение наше все.
>>914547 >Нахуя? Костыль для того, чтобы перекомпоновать/изменить дом с исходной страницы с целью последующего преобразования (сохранение, печать и т.д.)
>>914640 Не хотел изменять контент в донорской странице, хотя... Это трезвая идея: создать фрейм 1х1, поместить в необходимом порядке контент во фрейм, и в финале заинжектить скрипт с триггером onload, как тут: http://plungjan.name/SO/testprintiframe.html Будет работать?
>>914657 Пиздец ты поехавший. Есть же data, blob-ы всякие для сохранения/отображения. Есть медиатип для стилей, которые будут использоваться при печати. Зачем хаки делать?
>>914629 > перекомпоновать/изменить дом с исходной страницы с целью последующего преобразования Йобаный стыд, чем тебе DocumentFragment не угодил, что свой велосипед понадобился?
>>914682 >DocumentFragment Причем здесь DocumentFragment?
Задача следующая: Выбрать фрагмент исходного дома -> произвести манипуляции над выбранным узлом -> добавить новые элементы -> подготовить к экспорту/печати.
Вопроса как это сделать у меня нет, уже все сделал тупо клонируя ноду и, при необходимости, добавляя новые элементы .appendChild'ом. Но вот анон годную идею подкинул, что вовсе нет необходимости вставлять узел в новое окно, достаточно все это запихать в iframe (который потом нужно удалить, да). Вопрос изначально состоял в том, как лучше провести тестирование полученного дома, не прибегая к очевидным фантомам. Сейчас, конечно, можно будет вооружиться любым фреймворком, если все содержимое будет в iframe.
>>914663 >Есть же data, blob-ы всякие для сохранения/отображения. Необходимо не просто сохранить исходный фрагмент. Уже накостылили до меня таких приблуд, типа html2canvas, нужно именно провести определенные манипуляции над имеющимися элементами и добавить новые. CSS @media решает проблему только отчасти.
>Йобаный стыд >ты поехавший
Ну стыдно немножко, да, но решение под чужие нужды.
Сап анон. Помогите пожалуйста, нужна адаптивная анимация под любую платформу и браузер. Как и с помощью чего писать? Тема такая есть конверт, есть открытка внутри него, и конверт должен открываться.
>>914702 Так и зачем тебе вообще отдельный браузерный контекст для этого? Клонируешь ноду в документфрагмент. Производишь над ней манипуляции. Вставляешь документ фрагмент в отдельный слой (который если хочешь, можешь убрать за границу видимости). К этому слою применяешь css с медиакуарес для печати (чтобы на печать выходил только он). И всё.
Кто знает, как вместо ответа сервера json-заглушки ставить? Например, в jQuery или Angular? Ведь надо, чтобы http.get вернул содержимое файла, а не реально выполнялся
>>914721 Что ты написал? Ты же хотел перехватывать запросы и возвращать поддельные данные, вместо реальеых запросов. А ты чего делаешь? Расскажи мне, что делает твой код, по-твоему.
>>914715 Я понял тебя, анон. Но одно из требований - обеспечить возможность сохранения исходных стилей при возможности (опция). В предложенном тобой способе, когда кусок склонированной ноды остается в одном контексте с донором, будет проблематично реализовать такой механизм. Можно, конечно, запплаить стиль, при котором будет сокрыто все, кроме склонированного узла, но затем нужно будет запплаить стиль, который бы отображал склонированную ноду, насколько это возможно, похожей на исходную. К тому же, появляется неиллюзорная вероятность возникновения в одном контексте нескольких элементов с идентичным идентификатором, а это уже не комильфо. Посему отдельный контекст - не блажь, но необходимость.
>>914657 контекст iframe работает по тем же принципам что и window.open (почти). тоесть ты точно также кимпортируешь склонированную тобою ноду, только в документ не в окне а в ифрейм. инжектишь туда какие-хочешь скрипты, обмениваешься с ним сообщеняиями на здоровье. он же локальный.
>>914757 Да-да, спасибо. Я так и сделаю. Просто объяснил анону, который предложил в одном оконном контексте производить манипуляции с склонированной нодой и аттачить их в донорский документ, почему такой вариант не подходит.
>>914702 > >Есть же data, blob-ы всякие для сохранения/отображения. > Необходимо не просто сохранить исходный фрагмент. Уже накостылили до меня таких приблуд, типа html2canvas, нужно именно провести определенные манипуляции над имеющимися элементами и добавить новые. CSS @media решает проблему только отчасти. > html2canvas Это же вообще скриншотер DOMа. Что-то я совсем потерял представление о твоей задаче
>>914734 Не знаю, я с W3School скопировал, там пример на эту тему был. Ну создаём новый объект запроса и кидаем его в xhr переменную. Потом открываем запрос GET и передаём туда файл, вместо урла, false для чего-то там. А потом отправляем. Всё.
>>914057 Зацените помимо лолей, что я пишу на Dojo. Рендеринг шаблонов - на Django. Возможно, кто-то поссыт мне в лицо сейчас, но пока пусть будет так.
Аномасы, кто может по срокам сориентировать? Пилю сейчас для тренировки всякие тудушки и прочие простенькие задачи на ангуляре и реакте. Сколько должно времени уходить на простое СПА у джуна/мида/сеньора? Начиная от пустой папки до готового проекта (включая стили и настройку gulp/webpack)? Очень интересно узнать, какая корреляция между опытом и затрачиваемым временем.
Хочу сделать простую поделку. Нужно генерить разноцветные пиксели и двигать их в сторону (как будто прогресс бар) Как это сделать лучше всего. Канвасом?
Вопрос от ньюфага по nodejs. В общем с помощью request перебираю адреса сайтов. Проблема в том что нода возвращает мне статус кода не тот который в браузере. Например отдаёт 503, вместо 200. А при следующем запуске может и 200 отдать. Поставил уже и UA и timeout (я не могу понять он работает или нет). Вот код https://jsfiddle.net/atd51zed/ В гугле предлагают setTimeout поставить, но у меня идёт просто задержка 2сек (например) и потом опять выплёвывает всё разом. Еще прочитал что якобы синхронные действия мешаю с асинхронными. В общем помогите.
>>915009 А вообще мне нужно перебрать эти страницы и на каждой поискать нужный мне элемент. Если нашел -> адрес в один массив, если нет -> в другой массив. Но запуская скрипт через раз находит элемент на сайте (хотя он там есть).
>>914357 Сути не меняет, добавление константы, перевод в строку и т.д. одинаковы для всех. Удаление хотя бы одной тудушки приводит к дублированию айди при следующем добавлении (кроме случая, когда удалённая была последней в массиве). А ещё ты нолик лишний приписал, по-моему, оно же будет 01, 11, 21, 31 и т.д.
>>914303 Не очень понял, что ты этим хотел сказать и как это противоречит (если должно было) моему посту. Где-то туду помечается выполненным и удаляется из списка. Когда и кем конкретно - не так уж важно.
>>915078 Другой тупой вопрос. Я Excel файл конвертирую в json. Мне сам json файл не нужен (я ставлю output в null, так в документации написано), а нужны данные. Данные находятся в result. Я не могу подобраться к ним вне функции. С глобальными переменными не работает. xtj({ input: "./test.xlsx", output: "./test.json" }, function(err, result) { if (err) { console.error(err); } else { console.log('done'); } });
>>915007 >>915082 Спасибо за отклик, но я загорелся более продвинутую вещь сделать, за одно освоить пару новых для себя вещей.
В общем на словах все должно быть так примерно
На первом шаге цикла генерируется столбик из разноцветных пикселей например.
На второй шаге готовый столбик сдвигается на 1 пиксель вправо, а в освободившемся месте генерируется новый уже другой столбик.
На третьем шаге уже оба столбика сдвигаются вправо, а новый столбик опять же генерируется в пустом месте.
Я так полагаю мне нужно хранить инфу о пикселях в массиве, и постоянно генерируя новый столбик размером Х пикселей просто добавлять в массив новую строку которая хранит инфу о них. А потом заново в обратном порядке отрисовывать всю картину?
>>915293 Нет, двигать надо. Не важно как проще или логичнее. Важно, что можно двигать. Можно, конечно, и не двигать, но тот факт, что есть такая возможность подвигать, непременно означает, что ею необходимо тотчас же воспользоваться. И подвигать. Двигай, если ты хочешь двигать. Подвинь это еще раз, и еще.
Тред по вёрстке не нашёл, спрошу тут. Один хер на ангуляре пилю. Сделал колонку на бутстрапе, пока было по одной глиф-иконке - всё нормально было. Решил добавить к одной из них счётчик - вышла хуита и всё разъехалось.
>>915358 Ваших бутстрапов не знаю, вот как в вузе учили, так и пишу. Значит, так: <div id="buttons-wrapper" style="position: relative;"> <div id="buttons-greenbutton" style="clear: both; width: 100%; border-radius: 5px; background-color: green; text-align:left">+</div>
>>912285 >Назови хоть одну книгу о том, как красиво писать код на javascript Я понимаю, что интеллект среднестатистического жабоеба требует наличия руководства, изложенного в книжном формате, даже для таких простых вещей, как поход в туалет, однако в жс коммьюнити достаточно свода кратких рекомендаций для обретения навыка написания семантически ясного и синтаксически верного кода.
>>915607 >while (new Date() < ms){ >} Никогда так не делай. ЖС асинхронен, линейный синхронный синхронный код с задержками в нём писать нельзя. И не пытайся пока. setTimeout, setInterval, коллбэки и промисы (что, по сути, то же самое). Потом про промисы через генераторы узнаешь, ES2048 выйдет с async/await, станет проще.
А по коду: браузер не прерывается на отрисовку страницы во время твоего лупа. То есть, что-то ты там может и меняешь, но браузер показывает лишь два кадра: "до" и "после" лупа.
Делаю задачку из учебника определение числа на четность при помощи рекурсии и чтот оно мне хуйню пишет. Сама функция, вижу же — пашет, а вот с получением результата из неё проблема. Где я накосячил-то?
если юзать рекурсию с setTimeOut, то всё норм, она вернёт коллбэк как отресуется пикселями - скажем 1%, и будет ждать нового вызова для отрисовки следущей порции процентов, браовзер при этом не остановится.
Блин как же тут все не для людей, вот на паскале 20 лет назад прогал и было всё изи. Прога не прерывалась если ты не хотел, если хотел выводить всё динмамически то и было все збс. Потом меня эта хуйня бесила в пхп, что нельзя получать динамически ответочку от скрипта, а только результат, и тут ща это же вижу БЛЯДЬ НУ ЗА ШТО
У тебя рекурсивная функция просто не была замкнута. В пре-финальном шаге ты просто вызывал функцию, после чего она возвратила (ф-ции в JS всегда что-то возвращают, так уж повелось) undefined. А уже в финальном ты вернул результат, но в никуда.
>>915692 Чтот я непонял. У меня в isEven стоит ретурн, который даёт функции check число и по идее же должен return фунции чек принимать в себя и тут же отдавать в console.log в самом конце. Разве не так всё?
>>915696 Т.е. то, что я постом выше написал — вызывается только один раз, а потом, само в себе, оно вызывает себя уже без ретурна, и по этому оно не передает значение в функцию isEven?
>>915697 > вызывается только один раз, а потом, само в себе, оно вызывает себя уже без ретурна, и по этому оно не передает значение в функцию isEven? >оно не передает значение в функцию isEven Вернее сказать: не возвращает значение. А в целом правильно размышляешь. Итого имеем, твоя исходная функция isEven(Number) вернет корректное значение только при аргументах 0 и 1, во всех остальных случаях будет возвращено undefined.
>>915701 > вернет корректное значение только при аргументах 0 и 1 И сделает это только потому, что они в самом начале проверяются, когда для них описано всё. Спасибо. А это не считается за какой-то костыль или неудобство, которого в других языках нет?
вопрос, если я правильно понял, в ЖС каждое объявление функции запускает отдельный тред с задачей, но при этом на это не выделяется особый процесс в ЦПУ, но в то-же время эти треды работают как бы параллельно, как это реализовано, и чем это лучше/хуже тру параллельных вычислений?
Привет, аноны. Нужен ваш совет касательно тестового задания. Предложили написать небольшое SPA (ng-repeat, несколько фильтров к нему и "хороший внешний вид") "на чём угодно", но за 1.5 дня. Типо симуляция будто заказчик дал задание и ему через 2 дня надо хотя бы рабочий эскиз показать, который потом уже развиваться будет. Т.е. большее внимание уделить вёрстке и UI, а что под капотом - важно, но менее. Он, сделал на 1м ангуляре, не спал 25 часов, нафигачил 80-90% функционала. Что успел - скинул.
Пришла простыня текста по косякам, но отметили и достоинства. А, главное, предложили переписать это под 2й ангуляр, типо это в задании указано было. Но когда я приходил туда - я сразу сказал, что 2й версии не знаю, мне ответили, что "Норм, мы тоже недавно перекатываться начали", а по заданию - было чёткое и ясное "на чём угодно". Специально уточнил, сказали хоть на реакте, хоть на ванилле.
А сейчас ВНЕЗАПНО переписать под 2ю версию. Зачем? Что должно это тестовое показать? Я, вроде, уже показал свои навыки и свой максимум, насколько это возможно. Какое исправление косяков и какое переписывание в ТЕСТОВОМ ЗАДАНИИ? Что это покажет?
И, хотя сказали, что этот код нигде применяться не будет, типо задание явно тестовое, но меня терзают смутные сомнения...
Компания разрабов клёвая, я б поработал, но КОМПАНИЯ, при этом, никаких ништяков не обещала, даже про зп речи не зашло, зато толсто, но в шутку типа, спросили работаю ли я от звонка до звонка обычно или есть варианты. И сказали, что у них офис 24/7 открыт и можно если что - ночью прийти поработать. Мне кажется это самый херовый "пряник" из всех возможных.
Посоветуйте, что думаете? Переписать/закрыть баги или плюнуть и пилить собственные проектики?
Создателям сайтов за 1 сек сразу скажу, что я - новичок и действительно долго проебался с этими вашими материал-дизайнами, чтобы всё хотя бы относительно невырвиглазно смотрелось. Плюс настройка вебпака с плагинами. Собственно, я ищу место, где можно начать учиться на готовом проекте и фиксить мелкие баги, т.к. в том же ангуляре пока опыта мало, а не херачить SPA соло. Может, возникло недопонимание? >>915867
>>915865 нет, ты все неправильно понял. тут нет параллельных вычислений. они все последовательны, но могут быть ассинхронны. асинхронны это значит, что если в коде у тебя вызов функций идет одна за другой, это не значит, что они выполнятся именно так. какая-то из них может выполнится хоть завтра, или раньше той, что объявлена перед ней. но ты это все сам контролируешь. нет никакой магии.
>>915867 > Зачем? Что должно это тестовое показать? На сколько ты быстро ориентируешься в технологиях/подходах. По сути твой профессионализм. > Мне кажется это самый херовый "пряник" из всех возможных. Это значит что им пофиг на твой график, хоть в ночь можешь работать а днем спать. Я б рискнул на твоём месте. А там потерся бы месяца 3 - не понравится то и свалить всегда можно.
>>915867 Вот честно, я бы не стал бы переписывать и написал им все как было изначально уговорено: прототип, на чем угодно, не стремно выглядящий. Сделал - сделал. Недостатки сказали, спасибо, учту на будущее, все равно это тестовое. Так же обговорил бы вилку зарплат, подхожу/не подхожу. И сказал что поработать я могу в принципе когда угодно, т.к. кодить люблю, но овертаймы должны оплачиваться. Ну и про баги и перепись на 2 версию: если подразумевается испыталка (оплачиваемая естественно) сказал бы что сделаю на ней. Если бы послали - для себя бы допилил и выложил в качестве поделия собственного.
т.е. сама ЖС не может создавать процессы в ЦПУ у неё всегда один тред/процесс, но она внезапно может создавать стек с очередью к другим рантаймам, которые могут это делать. т.е. жс вроде как получается неким таким диспетчером, который раздаёт задачи в другие среды выполнения и регулярно смотрит статус.
что, получается ЖС это универсальная обёртка(АПИ) для всех языков что-ли, и она сама вообще ничего не делает на процессоре?
>>915892 Ни один язык, кроме машинного, не может создавать какие-либо процессы. Это всегда делает окружение.
>у неё всегда один тред/процесс, и это тоже не верно. js выполняется в разных окружениях. в некоторых из них есть треды. в других есть кластеры процессов.
>>915892 >вообще ничего не делает на процессоре? На процессоре ни один в мире язык ничего не делает. Процессор твой понимает только машинный код. Ты откуда вылез такой неуч?
>>915898 Для тебя они не очевидны ни разу. Какой там по твоему язык умеет создавать треды или процессы? Си? А вот нхуя он не умеет, он дергает апи операционной системы для этого. Что он там у тебя умеет, числа складывать? А вот хуй, не умеет он этого - для сложения чисел компилятор генерирует машинный код. А си твой нихуя не делает, кроме как описывает Алгоритм. Как и любой другой язык, js в том числе.
меня нода и клиенты интересуют, там вроде всё как раз так, как я и написал:
ЖС типо рассылает задачи из своего окружения в разные другие окружения, которые могут на своё усмотрение распараллелить задачу. вроде как ЖС важен только статус done & result от них и что бы event loop летала, сама ЖС нехуя не делает кроме этого
я хочу, чтоб у меня была кнопка, которая записывает состояние комаонента(hui.state) в файл и при перезагрузке страницы брало данные оттуда, а не через getInitialState. реакт так умеет? Подскажи, анон. Погуглил, но нашел решения для серверов, а мне надо локально. Типа, лист ту ду чтоб сохранял задачи по кнопке или когда я закрываю страницу, а не проебывал.
>>915920 >какие языки могут открывать треды/процессы >Никакие не могут.
ок, погуглил, получается что процесс один на ядро ЦПУ, но в нём спаунятся треды с задачами, которые пушатся в РАМ параллельно. это как минимум могут C и C++. ЖС как раз оправляет в эти процессы задачи и ждёт решения. сама она кроме петли и стека с задачами, никаких тредов в своём процессе не создаёт?
>>915947 Ты хочешь записывать файлы на клиенте? Ты прежде чем задаваться такими вопросами задумался о том, что если бы была такая возможность, то любой бы сайт мог создавать у тебя на компьютере фалы и читать их? Это было бы нормально по-твоему?
>>915947 localStorage выполняет твою задачу. После закрытия вкладки то, что ты в него сохранишь останется в нем и загрузится снова, когда ты вновь откроешь вкладку. Он для того и сделан.
>>915954 >если бы это было реализовано как загрузка файла, то еще как. Тогда это не запись в файл. Ты можешь на здоровье, генерировать файл, скачивать его, а потом заново загружать. Но это не запись в файл.
>>915943 >Нет, они этого не могут >Они дергают для этого
лол анус себе дёрни, заносчивый пидорг. я тебе и ничего не говорил, про то как это реализовано. это имхо понятно, что все низкоуровневые ЯП это "обёртка" вокруг ядра системы - а ЖС внезапно обёртка вокруг этих ЯПов.
сука, аутист, вот скажи, нахуя ты такой аутист. зойчем ты доебался? я уже понял где я заблуждался насчет ЖС. не ясно, от чего тебе пригорает так. может ты просто тупой неосилятор с проекциями?
>>915962 в чем вообще проблема изменять локальный json файл? он же локальный. >>915954 >>915953 нихуя не работает, кстати. Создается ключ, но сразу после ре-рендера ДОМ древа он теряет свое значение(console.log(localStorage.getItem('key')) выдает null). Может есть таки вариант изменять какой то локальный, для приложения, json или еще что?
>>916000 >нихуя не работает, кстати Значит ты что-то делаешь не так. Локалсторадж персистентный.
>в чем вообще проблема изменять локальный json файл? он же локальный. Ну ты не против будешь, если когда та зайдешь на мой сайт, я тебе начну создавать json файлы на компе? Они же локальные у тебя, что в ыэтом такого?
localStorage.setItem('key', 'value') console.log(localStorage.getItem('key')) // value
{код реакта...
onClick() { // событие вызывает новый рендер всего документа ... console.log(localStorage.getItem('key')) // null
}
про второе, я имею ввиду локальный файл, кот.существует только в директории сайта/аппа. Т.е если он у тебя на сервере, он твой же жсон и редактирует. Похапе же так умеет, а жс нет что ли?
>>916020 закрывающее } для кода реакта проебал после второго консольлога, но и так понятно. Под "код реакта" я имею ввиду, внутри класса. hui extends react class etc
>>916020 >про второе, я имею ввиду локальный файл, кот.существует только в директории сайта/аппа. Т.е если он у тебя на сервере, он твой же жсон и редактирует. Похапе же так умеет, а жс нет что ли? Ты несешь какую-то чушь. На клиенте нет никаких папок с твоим сайтом\аппом.
>>916020 Ты вообще не умеешь в дебаг или тестировать? Ты хочешь спорит о том, что ошибка не у тея где-то в коде, а браузер себя ведет неправильно? Ты серьезно?
Открой консоль здесь в этом треде. вбей, блядь туда localStorage.setItem('key', 'value') и нажми enter. теперь закрой вкладку со с этим тредом. и открой снова. и вбей в консоль localStorage.getItem('key') Что блядь? Работает? Вот нихуя себе.
Тупые блядью Тупые. Одни идиоты. Откуда они сука лезут. >Почему я не могу писать/читать файлы из браузера? >ЖС обертка над другими ЯП! >локальные фалы как на сервере! >директория с сайтом на клиенте!
Пацаны, помогите ньюфагу с программой, в которой собственно пишется код. Выбрал атом, но в нем почему-то нет всплывающих окон. Можно сделать так чтобы были? Не гоните ссаными тряпками, только начал разбираться.
>>916039 Ну я делаю ран скрипт и не работает. Должно окно выскакивать такое. Я вообще не шарю нифига, надо определиться с программой, где все это делать, можете порофлить с того какой я даун, но ответ дайте. Чтобы уровнять это все скажу, что я инженер, работаю уже 3 года и шарю кадовские программы и вы можете у меня спросить что-то тоже.
>>916026 лол. На сервере есть папка с сайтом, в ней файл, кот.содержит дату. Те же юзернеймы и пароли. Логин и пароль передаются в файл при регистрации похапе запросом. Или ты прав и сервер содержит голый сайт, а логин и пароль - локалстораж браузера? Вот и я не думаю.
Я хочу иметь тоже самое в локальной версии, но без пхп. Жс редактирует жсон/что угодно. Такие дела.
>>916028 И че ты такой агрессивный и остроумный? Ты специально не читаешь мой текст? пишу тебе код словами:
если в начале файла я задаю ключ и значение, а потом след.строкой спрашиваю его консольлогом, все работает, т.к этот код находится до создания класса реакта.
Если же я пытаюсь прочитать ключ внутри класса(для тебя: var App = React.createClass( (какой то код и функции); onClick() { добавить элемент, создание которого вызывает перерисовку всего компонента; и если уже тут консольлог (localStorage.getItem('key')) который динамически перерисовывается, то значение null после первого перерендера. Ключ остается, а его значение становится "". Я бы записал тебе видео, да не хочу еще пол часа на создание шебм тратить, фома.
>>916043 алерт создает компонент window, а ИДЕ имеет только консоль. Твои всплывающие окна будут при нажатии кнопки ф6 в любом браузере на странице, куда ты добавишь код.
>>916045 >локальной версии В каой блядь локальной версии, дебил. Браузеру поебать откуда ты загрузил код. ограничения для всех одинаковые. Иди нахуй просто.
Посоны, хочу сделать веб интерфейс для прибора на арме с линухом. Необходим вывод графика с частотой сбора 20мс, порядка 10 минут в реальном времени, т.е. 30000 точек. Насколько это безумная идея? Какой стек использовать? Из просмотренных жс либ, только plotly отдаленно напоминает то, что я хочу. Хотелось бы, чтобы все это не тормозило. Что вы бы посоветовали использовать? Я склоняюсь к реакту и стековерфлоу дривен девелопмент. Насколько сырой дартангуляр? Эльм для игрушесных проектов?
Нужна программка. Сначала думал может на С# но потом решил что она должна запускаться у любой тети паши без требования .net. Ну и с html мордой, которую я смогу поправить если что.
Суть - нужен просмотрщик логов, который будет не просто выводить сообщения, а делать это имтитируя мессенджер. логи храняться в виде txt файла такого содержания:
09.02.2013 17:01:19 Vasiliy99 го дота 09.02.2013 17:02:23 Grigory го 09.02.2013 17:04:15 Vasiliy99 я создал 09.02.2013 17:05:13 Afanasiy пидорасы, если не будете работать, поувольняю к хуям
Работет так: Открывается страница, перетягивается файлик за допустим 2016. Потом можно выбрать любой день за который хочешь посмотреть логи. После выбора появляется в "чате" первое сообщение. Чтоб вывело второе надо нажать кнопку Send или тыцнуть enter если курсор стоит в текстовом поле снизу. При чем не важно какой текст вы пишете снизу, он не будет попадать в чат. Ты просто пищешь что угодно, жмешь кнопку и из лога подтягивается следующее сообщение. В двух словах такое, с некоторыми нюансами типа кнопки выбора рандомного дня и мелочей по покраске сообщений.
Такая балалайка не будет хоститься на сайте и ей не нужен интернет. Она будет запускаться локально на компе и просто показывать логи из файла, который ей скормили
>>916415 О, братишка, привет. Маялся подобной хуйней намедни, ибо асушник.
Итак, понеслася: >Необходим вывод графика с частотой сбора 20мс, порядка 10 минут в реальном времени, т.е. 30000 точек. Насколько это безумная идея?
Во-первых, Plotly, как и все либы для построения графиков, базирующиеся на движке D3, используют SVG. SVG хорош для создания богатых интерактивными плюшками графиков, но по сравнению со скоростью рендеринга сосут у движков, использующих webgl/2d-canvas технологию.
Во-вторых, продумай стратегию рендеринга графиков. Тебе действительно нужно ОБНОВЛЯТЬ ВИЗУАЛИЗАЦИЮ каждые 20мс? Скорее всего, нет. Данные можешь с определенной уверенностью собирать с такой частотой, а отрисовывать, скажем, раз в 5 секунд сразу пачку.
Ну и в-третьих, >Хотелось бы, чтобы все это не тормозило It depends. Рендеринг графиков - достаточное узкое место в общем процессе отрисовки страницы и обновления документа в целом. Поэтому, с целью минимизации тормозов, используй следующие рекомендации как говорится, мнение анона может не совпадать с мнением /pr/, лол: - отрисовывай графики с помощью canvas либ если не нужна богатая интерактивщина; - отрисовывай с меньшей частотой, чем собираешь данные; - если требуется интерактивная навигация по временной шкале, хендлеры лучше организовать таким образом, чтобы обновления графика подчитывались с сервера, ибо держать ВЕСЬ объем координатных точек для графика в памяти - удар по производительности и опять же, узкое место; - ну и, естественно, убирай за собой, как принято в культурном обществе. Удаляй массивы данных, более не нужных и находящихся в памяти.
Лично я использовал следующий стек и задействовать тебе, анон, я бы не рекомендовал в виду необходимости большой работы по оптимизации: Сервер-сайд: NodeJS + NeDB + socketIO, клиент: ReactJS + MobX + Highcharts (SVG-based) + Clusterize
Требовалось отрисовывать пять координантных графиков, обновляющиеся с частотой 100-250 мс. Отрисовывал раз в 5 сек.
>>916>>916433 Планируется достаточно много отчетов, возможность менять настройки модулей, смотреть архивы, там функционала можно придумать больше, чем на 90% сайтов. Да и божественные, самописные велосипеды я бы не хотел использовать.
>>916510 >Очистить память в за это обнулить ссылку на объект с данными и ждать Гц? Да. Ну и, очевидно, вызвать соответствующие методы для (пере)строения графиков с актуальными значениями.
Чего-то не понял. Почему JS до сих пор общепризнано не переименовали в ES, которым он сегодня и является?
>ECMAScript — это встраиваемый расширяемый не имеющий средств ввода-вывода язык программирования, используемый в качестве основы для построения других скриптовых языков
Все встраиваемые языки так или иначе расширя.тся за счет API окрудения, куда встраиваются. JS не приносит в ES какие-либо синтаксические расширения, как например это делал AS, все исключительно на уровне API. Так по факту JS это никакой не JS, а ES.
От признания этого факта все только выиграют. Отпадет эта глупая ассоциация с Java у дурачков. Отпадет легаси биография как язычок ща 10 дней и используется только для снежинок. Потому как первоначальные версии JS(хотя по факту вообще не js а то mocha, то live) и были запилены Айком за неделю, и потом на протяжении десяти лет использовался только для анимации снежинок и меню, сегодня нет никакого ТОГО JS, есть вполне себе ES, который встраивается в разные окружения, спеки на который курирует целый комитет комитет.
Такие дела, тащемта. Я бы прямо начал с переименования треда.
Можно ли в чистом ДС без Ангуляра как-то напрямую биндить значения из кода? Если у меня есть, скажем, объект Человек и у него есть поля Имя и Фамилия, а на странице есть элемент у которого есть свойство text, можно ли чтоб в этот Текст подтягивалось автоматом значение из Имя без нажатий кнопок и прочего?
>>916607 Не сам решал, а указать. В ангуляре это делается через [(ngModel)] Ты пишешь [(ngModel)]="Person.Name" и страница смотрит что там за значения у тебя в Person.Name и подставляет сразу. В чистом ДС так нельзя?
Возможно ли как-то организовать многопоточную загрузку видео в html5 video? Подвластны мне и сервер, и клиент. Если лёгкого пути нет, то может можно WebWorker'ами загрузить данные в память, скотчем склеить и потом как-то указать video элементу путь к ним? В моём случае загрузка в несколько потоков увеличивает скорость, в разы.
Посоны, на чем вы пишите ES5 или ES6? Хочу вкатится нормально в JS, стоит ли сразу начинать писать используя let, class и прочие плюшки нормальных языков?
Часто задаваемые вопросы:
https://github.com/xxxwww/js-thread/blob/master/Wiki/faq.md
Список материалов для изучения:
https://github.com/xxxwww/js-thread/blob/master/Wiki/learn.md
Список инструментов и направления JS-разработки:
https://github.com/xxxwww/js-thread/blob/master/Wiki/tools.md
Конфа /pr/ в Slack:
https://invite-me-to-2chpr.herokuapp.com/
JS-конфа в телеграме:
https://telegram.me/jsthread
НЕ КОПИРУЙ КОД ПРЯМО В ТРЕД!
Воспользуйтесь https://jsfiddle.net/ для браузерного кода и https://ideone.com/ для серверного кода.