PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (22): В начало « ... 8 9 10 11 [12] 13 14 15 16 ... » В конец

> Найдено сообщений: 329
MAXUS Отправлено: 04 Февраля, 2014 - 06:03:11 • Тема: Утечки памяти JS • Форум: JavaScript & VBScript

Ответов: 20
Просмотров: 3620
Мелкий пишет:
Очень даже актуален. Я не слежу за фронтендом и то вижу материалы по этой теме.
Например, о яндекс.почте: http://habrahabr.ru/company/yandex/blog/195198/


Спасибо. Читал.
(Добавление)
nerv пишет:
еще ссылка
http://learn[dot]javascript[dot]ru/memory-leaks

Это тоже читал. Но это старое. Вопрос насколько актуально.
(Добавление)
Попробую вопрос конкретизировать.

CODE (javascript):
скопировать код в буфер обмена
  1. var a=new function(){
  2.  
  3. };
  4.  
  5. (function() {
  6.  
  7.                 function close(){
  8.                         this.node.parentNode.removeChild(this.node);
  9.                         delete(stack[this.settings.id]);
  10.                 }
  11.                 var stack={},
  12.                 init={
  13.                         "new":function(settings){
  14.                                 if(!settings||!settings.id) return false;
  15.                                 var div=document.createElement("div");
  16.                                 div.id=settings.id;
  17.                                 div.style.cssText="width: 100px; height: 100px; background: red;";
  18.                                 stack[settings.id]={
  19.                                         "settings":settings,
  20.                                         "node": div,
  21.                                         "close":close
  22.                                 };
  23.                                 document.body.appendChild(div);
  24.                         },
  25.                         "getStack":function(){
  26.                                 console.log(stack);
  27.                         }
  28.                 }
  29.                 function fn(id){
  30.                         if(id){
  31.                                 if(stack[id]) return stack[id];
  32.                                 else return false;
  33.                         }
  34.                         else return init;
  35.                 }
  36.                
  37.                 a.b=fn;
  38.                
  39. })();
  40.  
  41. window.onload=function(){
  42.         for(var i=0; i<100; i++){
  43.                 a.b().new({"id":"newDiv"+i});
  44.                 a.b("newDiv"+i).close();
  45.         }
  46.         console.log("Ready");
  47. }

Вот в этой ситуации будут утечки? Кто может опытным взглядом оценить?
(Добавление)
OrmaJever пишет:
Утечки памяти в js? Мир больше никогда не станет прежним


А чем вызвана ирония? Улыбка
(Добавление)
Относительно примера.

Если глянуть на эту функцию:
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. function close(){
  3.                         this.node.parentNode.removeChild(this.node);
  4.                         delete(stack[this.settings.id]);
  5. }


Я понимаю, что если вот эту строчку убрать

CODE (javascript):
скопировать код в буфер обмена
  1. delete(stack[this.settings.id]);


то ноды зависнут и не удалятся. Верно, ведь рассуждаю? А другие подводные камни есть в примере?
(Добавление)
nerv пишет:
В большинстве случаев этого будет достаточно, иногда избыточно) Чтобы работало, надо правильно писать код


Слушай, а поясни смысл этой конструкции. Т.е. я так понимаю, что ты расширяешь стандартный тип Object, добавляя туда функцию destroy, которая собирает все ключи объекта и удаляет их содержимое (ну и сами ключи тоже). И, насколько я понимаю, эту функцию надо вызывать вручную?
Просто ключи все равно собираются только с первого уровня, а если внутри этого объекта есть еще объекты, то с ними что будет? Тоже вручную? Или расчет на то, что они убьются при очистке первого уровня? В таком случае простым delete(нужный объект) это не решается?
MAXUS Отправлено: 03 Февраля, 2014 - 16:34:20 • Тема: Утечки памяти JS • Форум: JavaScript & VBScript

Ответов: 20
Просмотров: 3620
Доброго времени суток!

Подскажите, плз, светлые головы! Насколько актуален в 2014 году вопрос утечек памяти в JS? Стал изучать проблему. Пока достаточно поверхностно, но вообще уже складывается ощущение, что код на js - это обильно засаженное минное поле. Чихнул - и потеклоУлыбка
С другой стороны практически все статьи об утечках памяти датируются где-то не позднее 2008 года. Вот я и задумался, а насколько актуальна тема? И если актуальна, то не поделится ли уважаемое сообсчество свежими ссылками где почитать о современном состоянии проблемы?
Заранее благодарен, и прочая, и прочаяУлыбка
MAXUS Отправлено: 25 Января, 2014 - 09:18:56 • Тема: Скорость выполнения сценария • Форум: JavaScript & VBScript

Ответов: 7
Просмотров: 1220
Цитата:
На странице имеются блоки, например, меню, подвал, табы, таблицы и т.д. Все эти блоки имеют определенные классы, например,
CODE (html):
скопировать код в буфер обмена
  1. <div class="prefix-menu">
  2.         <div class="prefix-menu--item">
  3.         </div>
  4. </div>
  5. <div class="prefix-tab">
  6. </div>


Так вот js и css этих блоков привязан к классам, то есть для дива с классом prefix-tab используется css файл с названием prefix-tab.css, и js файл с названием prefix-tab.js

При первой загрузке страницы сайта никакие стили и js не грузится, только html и скрипт, который ищет все используемые блоки на странице, например, блок prefix-tab. Найдя все блоки, которые используются на странице скриптом
я подгружаю js и css файлы данных блоков и вставляю на страницу.

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


Логика. Если это шаблонизатор и пользователь где-то сам должен создать стили, а потом еще и раскидать их по файлам с префиксами, то тогда он должнн уметь и css подключить к файлу. Ну, или если там все автоматизировано, то тем более подключить css автоматом. А если ты будешь получать html с подключенным css, то проще выдрать из него линки (тут не уверен, что их вообще надо выдирать и что они не запустятся сами)... Будет сильно быстрее. Только один нюанс надо будет решить, как не дать js работать с размерами элементов загруженного html, пока не подгрузились новые стили.

Ну, и еще момент... Раз уж ты получаешь целиком html, то зачем ждать его загрузки в dom и потом разбирать? Проще до загрузки запустить регулярку на весь html, которая выдерет там все нужные префиксы. Потом подключить соответствующие таблицы стилей, а уж потом интегрировать html в dom.
(Добавление)
armancho7777777 пишет:
Pavelbeginner пишет:
js шлет ajax запрос за html-ем всей страницы

Зачем ?


Вот это, по-моему, ключевой вопрос.
MAXUS Отправлено: 25 Января, 2014 - 00:59:32 • Тема: jq не вставляет script • Форум: JavaScript & VBScript

Ответов: 13
Просмотров: 1853
OrmaJever пишет:
Bio man пишет:
Чистый JS все таки сработал

<sarcasm>Прям удивлён, как же чистый js сработал как надо... и при этом код занял меньше 1000 строк...</sarcasm>
Зачем вообще юзать jq для таких простых операций? Сэкономил 3 минуты и 2 строки кода - потратил 2 дня на решение проблемы.


Поддерживаю сарказм. Я, правда, вообще не понимаю зачем юзать jq... Для селекторов уже есть querySelector...

Но, с другой стороны, как в том анекдоте, когда американцы думали, почему отказал левый двигатель, а русские, а почему не отказал правыйУлыбка Я не могу понять, что в jq, в итоге не работало, потому что у меня прекрасно выполнилось и в jq и на нативном js...
MAXUS Отправлено: 23 Января, 2014 - 20:14:18 • Тема: jq не вставляет script • Форум: JavaScript & VBScript

Ответов: 13
Просмотров: 1853
teddy пишет:
MAXUS пишет:
что делает $(function(){})

это как onload, врядли из за этого. По идее этот кусок должен отработать после загрузки документа

вообще если честно смущает $('<script>') такая запись...


jquery-1.9.1.js прожевало и не подавилось. Все отрабатывает. Я даже удивился, потому что раньше, насколько помню, если скрипт попадает не в head, то он не запускается. Еще года полтора назад такая проблема была.
MAXUS Отправлено: 23 Января, 2014 - 19:56:45 • Тема: jq не вставляет script • Форум: JavaScript & VBScript

Ответов: 13
Просмотров: 1853
Bio man пишет:
В чем проблема?
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <script>
  3. $(function(){
  4.  var el = $('<script>').attr('src', '/lol');
  5.  $('#scrollable').append(el);
  6. });
  7. </script>
  8. <div id="scrollable">
  9. <div></div>
  10. </div>
  11.  

не вставляется скрипт..


Честно пытался понять, что не так. У меня все работает. Не уверен, что делает $(function(){}), если не отслеживает конец загрузки документа, то как вариант, возможно, нода #scrollable не успевает отработаться да попытки вставить в нее скрипт. А так... Проверял в 5 браузерах (FF, Safari, Chrome, Opera, IE11)... Везде пашет...
MAXUS Отправлено: 22 Января, 2014 - 03:23:11 • Тема: динамический вывод массива • Форум: Вопросы новичков

Ответов: 5
Просмотров: 211
caballero пишет:
шо сие такое "расфорчить"


Расфорычили и зафурычилоУлыбка Дико извиняюсь за флудУлыбка Не удержался...
MAXUS Отправлено: 13 Января, 2014 - 09:21:43 • Тема: Слишком долго загружаются картинки на сервер • Форум: Программирование на PHP

Ответов: 6
Просмотров: 2595
doommaan пишет:
Грузится столько же. Пробовал ставить в начале принимавшего скрипта return true, и вообще ничего не изменилось, как грузились долго так и осталось.


Узких мест может быть три.

1. Кодировка
2. Передача
3. Декодирование

3. Декодирование отпало.

1. Точно не в процессе кодировки тормозит? Если кодируется через js, то два сообщения в консоль до и после строки с кодированием помогут определить визуально, а можно и время засечь (разность посчитать). В php-то махом кодирует...

2. Тут можно сравнить размер исходного файла и того, что получается на сервере до декодирования. Закодированный через base64 файл точно должен быть больше процентов на 20-25%. Но, вдруг, получается критично больше.
Ну и если с кодированием (п.1) все нормально, размеры файлов отличаются не критично, то, как вариант, стоит копать особенности httprequest.
MAXUS Отправлено: 13 Января, 2014 - 05:55:54 • Тема: mysqli_real_escape_string выводятся \r\n • Форум: Работа с СУБД

Ответов: 22
Просмотров: 3992
wget пишет:
Ребят.... накопал....

Я после mysqli_real_escape_string делал подготовленный запрос mysqli_prepare
Он и ломал мою строку, если делать с mysqli_real_escape_string и обычным mysqli_query то все в порядке.

НО, нигде, ни в каких мануалах нет упоминания о несовместимости этих функций...


MAXUS пишет:
Но суть в том, что в базе скорее всего два слэша. Может, два раза ескейпируется при записи где-нибудь еще?


Получается, что первое предположение было верным. Функции не несовместимы, просто в этом случае дублируют друг друга. Первым заходом экранирует \r\n, вторым - слэши. Т.е. все-таки два слэша. Потому в базу записывается chr(92).chr(114).chr(92).chr(110), а не chr(13).chr(10)... Соответственно, и выводится.

Хотя, с pre я немного не в том направлении рассуждал. Конечно, если написать
PHP:
скопировать код в буфер обмена
  1. echo "Строка 1\\r\\nСтрока 2"

то на выходе получишь Строка 1\r\nСтрока 2, но суть была не в этом.

Просто php, встретив в строке \r\n, преобразует их в chr(13).chr(10), поэтому
из "Строка 1\r\nСтрока 2" на выходе получается Строка 1.chr(13).chr(10).Строка 2,
а ты из базы получал Строка 1.chr(92).chr(114).chr(92).chr(110).Строка 2...
Оно уже никуда не преобразовывалось, а так и выводилось.

Ниже видно, что получается, если строки до эскейпирования и после (как ты делал в примере) перевести в код.

PHP:
скопировать код в буфер обмена
  1. $info="1\r\n2";
  2.  
  3. function to_chr($n) {
  4.         return ord($n);
  5. }
  6.  
  7. echo implode(", ", array_map("to_chr", str_split($info)))."<br />";
  8.  
  9. echo implode(", ", array_map("to_chr", str_split(mysqli_real_escape_string($mysqli, $info))));


Результат будет таким:

CODE (html):
скопировать код в буфер обмена
  1. 49, 13, 10, 50
  2. 49, 92, 114, 92, 110, 50


И, кстати, еще момент. nl2br() не заменяет последовательность chr(13).chr(10) на тэг <br />, а вставляет этот тэг перед. Получается "<br />".chr(13).chr(10). Вот так это становится очевидно:

PHP:
скопировать код в буфер обмена
  1. echo nl2br("1\r\n2");
  2.  
  3. echo "<pre>";
  4. echo nl2br("1\r\n2");
  5. echo "</pre>";


Поэтому оно тебе и не помогало.
MAXUS Отправлено: 12 Января, 2014 - 09:08:12 • Тема: Спасите!) Нужно отправить форму на емейл! • Форум: Вопросы новичков

Ответов: 8
Просмотров: 279
gefard пишет:

тег такой есть
http://htmlbook[dot]ru/html/frame
позволяет выводить на сайте страницу с другого сайта или ее часть
то есть вывести в письме страницу с вашего сайта - форму


А почему не iframe?!
(Добавление)
IllusionMH пишет:
gefard, это ведь так безопасно - давать своим пользователям открывать письма в которых фрэймы. Закосят как и с формами.


Iframe тоже закосят?
MAXUS Отправлено: 09 Января, 2014 - 06:25:04 • Тема: История посещений сайта • Форум: Вопросы новичков

Ответов: 12
Просмотров: 438
caballero пишет:
ничего она там не навешивает


Ну как не навешивает? Перехватывает все события onclick, например, на кнопках и ссылках. Вешает, соответственно, свои обработчики событий. Я вот недавно столкнулся. Чето в именах где-то с метрикой пересекся.
(Добавление)
DelphinPRO пишет:
а вы не включайте в настройках абсолютно все. Там, ксати около каждой галочки есть примечание, если опция увеличивает нагрузку.


А не я метрику настраивал. Не я, как говорится, прикручивал, не мне и откручиватьУлыбка Даже не вникал, что там настроено.
MAXUS Отправлено: 09 Января, 2014 - 06:19:44 • Тема: mysqli_real_escape_string выводятся \r\n • Форум: Работа с СУБД

Ответов: 22
Просмотров: 3992
DelphinPRO пишет:
MAXUS пишет:
Ты возьми и запиши в базу просто как есть, без эскейпирования.
Привет, инъекция Голливудская улыбка


Не, ну инъекция, конечно, приветУлыбка Но зато человек увидит, что на самом деле происходит.
Потому я, в том числе, и предлагаю перенос строк сразу превращать в <br />. Ну, или как вариант, при выводе делать обратную обработку...
MAXUS Отправлено: 09 Января, 2014 - 05:48:19 • Тема: mysqli_real_escape_string выводятся \r\n • Форум: Работа с СУБД

Ответов: 22
Просмотров: 3992
wget пишет:


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



Ну, во-первых, это не костыль. Это не предложение в качестве решения твоей проблемы, а просто рациональное рассуждение. Если ты в дальнейшем собираешься выводить информацию в браузер (а не в алерты или в консоль через js), то смысла хранить в базе \r\n нет никакого, т.к. при выводе браузер их проигнорирует, а переноса строки не будет, т.к. он делается тэгом <br />... Если, конечно, ты не планируешь выводить все, оборачивая в <pre></pre>...

wget пишет:

В общем тупик мысли...


А во-вторых, я, собственно, не тупанул, а все правильно тебе сказал. Ты попробуй не долбиться апстену, а воспарить над проблемойУлыбка
Смотри, у тебя есть строка:

Строка 1\r\nСтрока 2

Ты ее выводишь в браузер через <pre> и получаешь:

Строка 1
Строка 2

Все верно. В тэге <pre> браузер воспринимает \r\n как полагается и делает перенос строки. Что ты делаешь дальше? Эскейпируешь \r\n и получаешь \\r\\n. Соответственно, в теге <pre>, выводя результат, получаешь:

Строка 1\r\nСтрока 2

Потому что вот это \\r браузер воспринимает как заэскейпированный слэш+буковка rУлыбка Так и выводит. Прям, как попросили. То же самое с \\n...

И в базу у тебя пишется то же самое. И выводится, соответственно. Ты просто от real_escape_string хочешь добиться чего-то прямо противоположного тому, что она должна делатьУлыбка Ты возьми и запиши в базу просто как есть, без эскейпирования. И удивишься, потому что твоя проблема неожиданным образом решитсяУлыбка
MAXUS Отправлено: 08 Января, 2014 - 23:14:44 • Тема: mysqli_real_escape_string выводятся \r\n • Форум: Работа с СУБД

Ответов: 22
Просмотров: 3992
wget пишет:


В первом случае выводит

Строка 1
Строка 2

Во втором

Строка 1\r\nСтрока 2 - так и записывает в БД, в таком виде и выводит....

Дело таки в real_string, но почему?....


Простите, щас, может, тупану, но может, и нет. А задача у real_escape_string какая? Экранировать спецсимволы, в тч и nr. Она это и делает. Они там, скорее всего с двойным слэшэм в базу и записываются. При выводе в браузер два слэша дают один на экран и потом n или r. Чтобы картину четко увидеть надо через phpmyadmin в базу глянуть, а еще лучше выводить не в браузер, а в лог файл.
Если тупанул, то не судите строго.

Добавление. nr браузер все равно проигнорирует, поэтому если это все-таки из базы в браузер будет выводиться, надо nr сразу при записи заменять на html тэг br...

Еще добавление...
Хотя, конечно, отчасти, скорее всего тупанул-такиУлыбка
Но суть в том, что в базе скорее всего два слэша. Может, два раза ескейпируется при записи где-нибудь еще?
MAXUS Отправлено: 08 Января, 2014 - 22:55:33 • Тема: История посещений сайта • Форум: Вопросы новичков

Ответов: 12
Просмотров: 438
DelphinPRO пишет:

Яндекс.Метрику подключите, нафиг изобретать что-то...


А ни у кого с метрикой никогда конфликтов не возникало? Она же стока навешивает на страницу...

Страниц (22): В начало « ... 8 9 10 11 [12] 13 14 15 16 ... » В конец
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB