«phpClub» — архив тем ("тредов"), посвящённых изучению PHP и веб-технологий.
Аноним 2017/04/08 21:10:20  №969476 1
Все тот же тупой анон на связи. Решаю задачу на строки, и тут возник вопрос, а что переделать в программе? Я нипанимаю( вот текст задачи.
l33tspeak
Если ты когда-нибудь видел хакеров (например, в кино или в интернете), то знаешь, что у них есть свой, особый язык, который позволяет отличать своих от чужих. Он называется l33tspeak, и объяснен в википедии: http://en.wikipedia.org/wiki/Leet (как видишь, википедисты обладают элитными знаниями).

Чем мы хуже хакеров? Давай напишем программу для перевода текста на элитный язык. Опять же, воспользуемся массивом перекодировки и функцией strtr

Задачка: доделай программу по ссылке http://codepad.org/5XEkSKHI для перевода текста на l33tspeak. Покажи нам результат.
Ответы: >>969496
Аноним 2017/04/08 21:52:14  №969496 2
>>969476
Это какая-то неприлично простая задача. У меня испанский стыд.
Ответы: >>969497
Аноним 2017/04/08 21:52:56  №969497 3
>>969496
я только начинаю изучать и это задача на самом начале изучения строк. я просто не понимаю в чем заключается вопрос, что не так работает в программе?
Ответы: >>969501
Аноним 2017/04/08 21:55:59  №969501 4
>>969497
Нужно все буквы в строке поменять на хуйню типа: "/7rN|3€t".
Ответы: >>969502 >>971929
Аноним 2017/04/08 21:56:42  №969502 5
>>969501
а, так это правда очень легко.
Аноним 2017/04/11 17:52:34  №971929 6
>>969501

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

>>969462

На странице могут быть программы на языке Яваскрипт, которые изменяют DOM в процессе работы. Также, если исходный код содержит ошибочный HTML код, то он не попадет в DOM или будет исправлен браузером. view-source показывает тот код, который пришел с сервера.

Получить текущий DOM можно так в хромоподобных браузерах: открыть отладчик в браузере (Ctrl + Shift + I) и набрать команды:

var html = document.documentElement.outerHTML;
copy(html);

Текущий HTML-код страницы будет скопирован в буфер обмена.

Насчет ФФ не знаю, может сработает, может нет, надо проверять.

>>969451

Можно освоить фронтенд, задания по HTML/CSS/JS ждут тебя в ОП-посте. И тогда половинка тебе не понадобится.

>>969450

Изучи HTML формы. Там есть возможность добавлять скрытые поля в форму.

>>968998

Ты создаешь локальную переименную Super, которая видна только внутри той маленькой функции и никак не видна снаружи нее. Лучше в момент вызова функции копировать ее название и прототип предка в глобальные переменные. А mySuper будет использовать эти переменные:

mySuper.currentParentFunction = Object.getPrototypeOf(object)[name];

Также, ты вызываешь this() не передавая родительской функции правильный контекст (она будет вызвана не на объекте, а с this = window).

Но тут есть еще один подвох: что, если функция, вызванная через super(), вызовет super() еще раз? Поясню кодом:

Есть классы Parent extends Grandparent, Child extends Parent:

addMethod(Child.prototype, 'test', function () {
console.log('in Child');
var a = super(1, 2);
var b = super(3, 4);
return a + b;
});

addMethod(Parent.prototype, 'test', function (x, y) {
console.log('in Parent');
return super() + x + super() + y;
});

addMethod(Grandparent.prototype, 'test', function() {
console.log('in Grandparent');
return 100;
});

var child = new Child;
console.log(child.test()); // 410 если не ошибаюсь

Тут при исплоьзовании глобальных переменных они затрут друг друга и будет ошибка. Предлагаю подумать над решением этой проблемы.

Вместо __proto__ я советую использовать стандартный getPrototypeOf из ES5.

Также, есть еще одна оптимизация. Добавление обертки над методом делает его немного медленнее. Некоторые JS движки позволяют получить код функции в виде строки и проверить, есть ли там вызов super(). Если нет - можно не добавлять обертку. Так делает например бибилиотека classy. Хотя тут есть свой подвох: можно сохранить ссылку на super в другую переменную и вызывать через нее.

Ты можешь потом, если хочешь, посмотреть, как проблему решили авторы библиотек:

- classy: https://github.com/mitsuhiko/classy/
- наследование от John Resig: http://ejohn.org/blog/simple-javascript-inheritance/
- klass: https://github.com/ded/klass

Сейчас эти библиотеки отмирают потхоньку, так как в JS в ES6 (?) появился синтаксис для классов.