Jump to content

rgl

User
  • Posts

    109
  • Joined

  • Last visited

Everything posted by rgl

  1. Есть некий php-скрипт, который делает довольно ресурсозатратную работу (рисует картинку - график по данным). Чтобы это дело оптимизировать, хочется результат работы закэшировать, т.е. просто записать в файл чтобы при последующих запросах отдавать готовый результат. Но данные через некоторое время устаревают, т.е. кэш нужно обновлять. Вопрос - как это сделать безопасно? Т.е. вот вызвали скрипт, он понял что пора бы кэш обновить, сделал что надо, и вернул пользователю результат, но что если параллельно с ним кто-то еще вызовет тот же скрипт, и как ему понять, что кэш уже обновляют, все, что надо, это подождать секунду? Удивительно, но все попытки найти ответ в гугле ничего не дали.
  2. Случай к сайтам относится, но подходящего раздела не нашел (не в "библиотеку полезных приемов и решений" же, и не в "вопросы по верстке") поэтому напишу тут. Реальная история. Жил-был сайт, более-менее нормально работал. Одна из особенностей сайта - много страничек с маленькими картинками (как бы превьюшки) и ссылок, кликая на которые можно открыть большие картинки. Большие картинки открывались в виде маленького HTML-чика, где был один значимый тэг - img с нужной картинкой. В некоторый момент версию сайта обновили, новая версия отличалась многими мелкими деталями, в т.ч. подумалось, а зачем картинки открывать с помощью HTML-посредника, не лучше ли сделать ссылки непосредственно на картинки. Так и сделали, и все казалось что ОК. Через какое-то время сайт стал жутко тормозить, а временами вообще "падал". В чем причина? Поначалу, думали, это из-за наплыва пользователей (он действительно был). Но сайт продолжал сильно тормозить и без наплыва. Никто не думал, что это как-то связано с новой версией, ее ведь предварительно достаточно хорошо протестировали, и в тестовом режиме все работало замечательно. В конце концов причина нашлась - виноваты оказались непосредственные ссылки на картинки. Т.е. по ссылкам поисковые роботы никак не могли понять, что это картинки а не текст (расширение .php) они туда интенсивно заглядывали, надеясь найти что-то интересное для себя, и тем самым сайт перегружали. В качестве быстрой меры чтобы спасти сайт, добавили в robots.txt пару строк, мол, роботам это не смотреть. И, о чудо, сайт ожил. Вот такая история.
  3. Скопировал часть таблицы к себе на компьютер, на тестовую базу, чтобы поинраться. Вот результаты: 1. Вариант без создания временной таблицы, работает правильно, но с увеличением размера время растет невероятно быстро. На рабочем сервере даже думать нельзя такое запускать. 2. Вариант с временной таблицей несравненно шустрее, т.е. вполне ничего
  4. 1. Первичный ключ хороший, но предлагаю не спорить на эту тему (нужно ли всегда добавлять поле id, которое в некоторых книжках называют "суррогатным ключом"). Единственное, что плохо, это имя поля TIME, совпадающее с зарезервированным словом. 2. Записи из таблицы не удалаются. 3. Добавлять дельты, или делать что-либо с этой таблицей не хочу, т.к. это для работы (нормальной) не нужно, а только для решений внештатных ситуаций. 4. Что такое "итератор ключа" я не знаю, я только начинаю осваивать SQL. Хочется понять, можно ли не меняя имеющуюся таблицу сделать запрос, чтобы получить дельты. Я вижу только два варианта 1. Создать временную таблицу для этой задачи, которую потом дропнуть. 2. Вывести данные в текстовый файл, и дальше уже скриптовым языком независимо от базы найти что хочется.
  5. MySQL Есть таблица, поле первичный ключ типа datetime, остальные поля не важны. В таблице ок. 5 млн записей. Обычно записи следуют одна за другой с интервалом 1 минута, как-то так: Нужно найти в этой таблице "провалы во времени", т.е. места, гда промежуток времени между соседними записями больше заданной величины. Все, что сам я смог придумать, так это создать временную таблицу с полем id AUTO_INCREMENTи полем datetime, скопировать в нее, а затем сделать запрос из нее со джоином на себя же, по условию t1.id+1 = t2.id А можно ли без создания временной таблицы?
  6. Ничто не мешает. Но люди избалованы всяками там турбо-паскалями, вижуал-студиями, уже к такому сервису привыкли и хотят того же. Даже не того-же, а намного меньшего - отладчик не просят, всего-либо показывать строчки с ошибками. Можно я не буду оправдываться, доказывать что это действительно нужно? Я всего лишь спрашиваю совет, вполне конкретный и понятный вопрос, на него можно либо ответить, либо не отвечать.
  7. Для языка ничего нет. Хочется редактор, который будет понимать вывод компилятора, т.е. сообщения об ошибках и номера строк, и потом показывать эти строки, в идеальном вариатне с подсказкой. Язык редактору знать не нужно (я же не прошу у него подсветку), нужно лишь понимать Line 7, Error XXX Line 12, Erro YYYY Line31, Error ZZZ В том то и дело, что для известных языков решения уже есть, их несложно найти. С другой стороны, есть такие редакторы, как sublime и atom, которые вроде это умеют, но когда пытаешься найти информацию как это сделать, отсылают к готовым решениям для конкретных языков.
  8. Ситуация такая: есть некий язык, есть некий компилятор (назовем их так). Хочется найти редактор, чтобы в нем писать/редактировать программу, чтобы из него можно было вызвать компилятор, и (самое главное) чтобы после того, как компилятор отработал, редактор умел как-то показывать непонравившиеся строчки. Ничего готового для данного языка не существует. Желательно что-то прпроще, достаточно уметь работать с одним файлом, никакого так умения работать с FTP, никакой подсветки, и т.д. не требуется. Только уметь находить строки по их номерам из вывода компилятора.
  9. Есть такая проблема: Нужно сделать список, причем один пункт списка пометить маркером-картинкой. Когда помечаю, маркер-картинка располагается вроде бы как надо, но текст сдвигается на несколько точек вниз, и как следствие, 1) располагается не против маркера а ниже 2) расстояние между помеченным пунктом и предыдущим становится больше. Код: <style type="text/css"> ul { line-height: 25px; list-style-type: none; font-size: 15px; /* а это вроде к вопросу не должно иметь отношение, но для приближенности к реальной ситуации пусть будет */ font-family: Arial Narrow; font-weight: bold; text-transform: uppercase; } li.marker { list-style-image: url("marker26x25.png") } </style> <ul> <li>One</li> <li>Two</li> <li>Three</li> <li class="marker">Four</li> <li>Five</li> <li>Six</li> <li>Seven</li> <li>Eight</li> <li>Nine</li> <li>Ten</li> </ul> Или тут: http://k776070q.bget.ru/marker-test.html Расстояние между THREE и помеченным FOUR больше. Что я делаю не так?
  10. Много лет понемножку интересовался сайтостроительством, но исключительно как хобби, не думал что и по работе придется что-то делать. Но вот пришлось, посмотрите, покритикуйте, не сайт а всего лишь одна страничка :-) Есть такой сайт tesis.lebedev.ru, Сайт в основном содержит устаревшую информацию, но есть подраздел, называемый "космическая погода", где данные актуализируются несколько раз в день. Вот этот раздел и нужно, так сказать, улучшить и развить. Задача была такая - добавить в раздел возможность выбора региона, чтобы данные показывались не только для Москвы и по Московскому времени, а можно было выбирать. Одна из страничек раздела "космическая погода" - магнитные бури. Находится тут: http://tesis.lebedev.ru/magnetic_storms.html Мой предшественник начал делать возможность выбора региона (и часового пояса), но до конца не доделал, его работа тут: http://www3.tesis.lebedev.ru/magnetic_storms.html Казалось бы, все просто - доделать то, что уже почти сделано. Но оказалось, что в коде такой бардак, что стоит поменять что-то одно, как тут же все остальное разваливается. Поэтому пришлось все начинать с нуля. Для начала переверстал страничку, сохранив внешний вид. Написал заново календарь (т.к. разобраться в том, как работает то, что было, не смог). Затем собственно выбор региона - jquery и ajax в помойку, написал по-простому. Перерисовал картинку состояния магнитосферы за 3 дня. Вот что получилось, буду признателен за критику: http://tesis.lebedev.ru/magnetic_storms_dk.html
  11. Нужно в одной строке (ширина фиксирована) разместить два текстовых элемента и кнопку, причем текст прижать влево, а кнопку разместить как можно правее. Пусть вся строка - div, где text-align: left а у кнопки float: right И вопрос - в каком порядке размещать элементы в коде? Вроде интуитивно хочется в том же порядке, что и на экране, т.е. текст, текст, кнопка. Но вижу что применяют другой порядок, кнопку в коде размещают вначале. Оба варианта вроде работают, есть ли какая-то причина предпочитать второй? <style type="text/css"> div { text-align: left; width: 600px } input[type=button] { float: right }</style><!-- первый вариант, в коде в том же порядке что и на экране --><div> <span style="color:red">text1</span> <span style="color:green">text2</span> <input type="button" value="button"></div><br><!-- второй вариант - кнопка в коде раньше текстовых элементов --><div> <input type="button" value="button"> <span style="color:red">text1</span> <span style="color:green">text2</span></div>http://jsfiddle.net/c6du2y3a/
  12. background: url(path/to/image1.jpg) no-repeat center top, url(path/to/image2.jpg) no-repeat center bottom;Так не работает, в хоумсайте показывается только первая картинка, в хроме - вообще никакая Странно, должно работать. http://htmlbook.ru/css/background http://jsbin.com/pisunonaso/1/edit Да, работает и в хроме, и в мозиле и в ие, не знаю почему сначала показалось что не работает, может какая опечатка. Но (к сожалению) в хоумсайте не работает. Ничего страшного, терпимо (если об этом знать). Плюс, в хоумсайте надо сначала указывать вертикаль, потом горизонталь, т.е. только "top center" но не "center top". Всем спасибо. Ага, понял почему сначала не работало, и сейчас не работает если дополнительно указать ЦВЕТ фона, т.е. сверху картинка, внизу картинка, а место, не занятое картинками должно быть определенного цвета. Это возможно без вложенного дива? http://jsfiddle.net/7cvfqqge/1/ P.S. Ага, нашел, если отдельно задавать то все ОК http://jsfiddle.net/7cvfqqge/4/ Что это? https://ru.wikipedia.org/wiki/Macromedia_HomeSite И зачем же вы его используете? Последняя версия вышла в 2003 году! Я к нему привык, версткой никогда серьезно не занимался, а когда надо что-то разово сделать на коленках раз в пару лет, пользуешься тем, что уже есть, т.к. поиск что там сейчас считается современным плюс установка может занять больше времени, чем сделать вообще без всяких инструментов.
  13. Что это? https://ru.wikipedia.org/wiki/Macromedia_HomeSite
  14. background: url(path/to/image1.jpg) no-repeat center top, url(path/to/image2.jpg) no-repeat center bottom;Так не работает, в хоумсайте показывается только первая картинка, в хроме - вообще никакая Странно, должно работать. http://htmlbook.ru/css/background http://jsbin.com/pisunonaso/1/edit Да, работает и в хроме, и в мозиле и в ие, не знаю почему сначала показалось что не работает, может какая опечатка. Но (к сожалению) в хоумсайте не работает. Ничего страшного, терпимо (если об этом знать). Плюс, в хоумсайте надо сначала указывать вертикаль, потом горизонталь, т.е. только "top center" но не "center top". Всем спасибо.
  15. background: url(path/to/image1.jpg) no-repeat center top, url(path/to/image2.jpg) no-repeat center bottom;Так не работает, в хоумсайте показывается только первая картинка, в хроме - вообще никакая
  16. Нужно сделать так, чтобы вверху странички была одна фоновая картинка, а внизу - другая. Посмотрел, поискал где и как это сделано, не нашел ничего лучше чем так: <body style="background:url('img_bottom.jpg') no-repeat bottom middle"> <div style="background:url('img_top.jpg') no-repeat top middle"> тут содержимое странички </div></body>Вопросы: 1. Почему в примерах, что я нашел, во внешнем контейнере задается нижняя фоновая картинка, а во внутреннем - верхняя, а не наоборот? Так чем-то лучше или совершенно безразлично? 2. Есть ли более простой способ задать две фоновый картинки? З.Ы. не middle а center, спасибо!
  17. Есть ли на питоне функция чтобы раскодировать строки из заголовка e-mail, строки выглядят как-то так: '=?koi8-r?B?UkU6IPDJ09jNzyDPwiDPws7P18zFzsnJINXewdPUzsnLwc0g/OTv?='т.е. каждую конкретную строку раскодировать руками удается, но нужна штатная функция. Нашел, вопрос больше не актуален. from email.header import decode_headerresult = unicode( *decode_header(s)[0] )
  18. Немножко не в тему. 1. Создаем собственный конструктор, в прототипе заводим два свойства, создаем объект, пытаемся распечатать с помощью for in, все OK 2. Добавляем в объект собственное свойство (одноименное со свойством из прототипа). Распечатываем, все OK 3. Удаляем собственное свойство, распечатываем. В нормальных браузерах распечатываются оба свойства из прототипа, как и должно быть. В IE 6 - только одно. А как в IE 7, 8, ...? У меня их нет, попробовать негде. function MyObj() {} MyObj.prototype.a = 1; MyObj.prototype.b = 2; var test = new MyObj(); for( var i in test ) document.write( "test["+i+"]="+test[i]+"<br>" ); test.a = 100; for( var i in test ) document.write( "test["+i+"]="+test[i]+"<br>" ); delete test.a; for( var i in test ) document.write( "test["+i+"]="+test[i]+"<br>" );
  19. Опции различаются прежде всего по номерам (индексам). Вместо innerHTML лучше использовать text. var sp = document.getElementById( "spisok" ); for( var i = 0; i < sp.options.length; ++i ) console.log( "%d, index=%d, text=%s, value=%s", i, sp.options[i].index, sp.options[i].text, sp.options[i].value );
  20. Перед вопросом нужен слэш, чтобы он был именно вопросом, а не специальным символом [\s\S] - любой символ, почти как точка, только лучше (ведь внутри текста могут быть и переводы строки) http://learn.javascript.ru/regexp-specials#%D1%82%D0%BE%D1%87%D0%BA%D0%B0-%D0%B8-%D0%BF%D0%B5%D1%80%D0%B5%D0%BD%D0%BE%D1%81-%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8 *? - повторить как можно меньше раз, http://learn.javascript.ru/regexp-greedy-and-lazy
  21. replace( /<!--\?\s*?echo\s+HSC\("([\s\S]*?)"\)\?-->/g, "$1" )
  22. Я тоже начал этот курс, но после второй же лекции бросил (точнее, выбрал другой). Не помню уже про сам материал, но вопросы настолько идиотские (не говоря уже о том, что не имеющие никакого отношения к излагаемому материалу), что решил не продолжать. Я прошел полностью два курса по JS, не скажу чтобы они были бесполезными, но всю информацию необходимо перепроверять, ничему верить нелья.
  23. rgl

    тег button

    На кнопке input может быть только простой текст. А на кнопке button может быть html, т.е. можно делать менять цвета, размеры, и т.д. Пример: <button type="button">H<sub>2</sub>O</button>
  24. Просматриваю понемногу что понаписывали на сайте Интуит. Никому не рекомендую читать и верить. Если читать, то все абсолютно все проверять, для чего 1) находить информацию в достоверных источниках, 2) все пробовать самому. Масса ошибок, причем не опечаток (они тоже есть в большом количестве, но я сейчас не про них), а ошибок, которые показываю непонимание авторами темы даже на элементарном уровне. И такие берутся обучать других. Не сосчитаю уже, о скольких ошибках я им написал, но реакции никакой. Вот конкретный пример: http://www.intuit.ru...s/free/4/2.html там утверждается, что в одном тэге можно написать более одного обработчика одного и того же события, причем учат что именно так нужно делать. И приводят работающий пример (предпоследний на странице): <A HREF="http://www.mail.ru" onmouseover="document.bgColor='pink', onmouseover=window.status='Посетите MAIL.RU'; return true">Щелкните здесь</A> Они думают, что задали два обработчика события onmouseover и они оба работают. На самом деле они задали один обработчик, т.к. забыли закрыть двойную кавычку. Поэтому, то, что они считают вторым обработчиком, на самом деле просто присваивание переменной onmouseover того же значения, что они присваивают windows.status
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy