Jump to content

Aroused

User
  • Posts

    92
  • Joined

  • Last visited

  • Days Won

    1

Everything posted by Aroused

  1. Где не спроси, везде на вопрос "почему нельзя использовать табличную верстку" ответят, мол с блоками html чище, да и вообще, что нельзя сделать используя блоки? Вопрос, есть к примеру вот такой код: div { width: 600px }span, input { display: inline-block }<div> <span class="lable">Имя</span> <input type="text" value=""> <br /> <span class="lable">Фамилия</span> <input type="text" value=""></div>Элемент span может менять свое содержимое, соответственно и собственную ширину, следовательно, что бы две строки с элементами span и input имели одинаковую ширину необходимо задать поведение для input. С одной стороны, если мы зададим для input display: block, он замечательно занимает свободное пространство, но так как блочный элемент не может быть на одной строке с другими, он соскакивает. А если мы используем display: inline-block, он отлично сидит как строчный, но уже не заполняет свободное место. Как быть? http://jsfiddle.net/okn0w4hp/
  2. ... Another Hard Days Work Здравствуйте. Целью создания темы является огромное желание решить мои сложности в работе как веб-девелопер. Мне очень хочется справиться с трудностями, хочется что бы мне кто-то сказал, что «О, да ты не правильно всё делаешь! Ни кто не строит так сайты, не разрабатывает никакой архитектуры, всё уже давно готово! Два месяца возишься с сайтом? Если так работать, то ничего не заработаешь, время обходится слишком дорого! Вот серебряная пуля веб-разработчика! Держи!». Но я понимаю, что нет никакой серебряной пули. Ни кто (по крайней мере добровольно) не предоставит мне свой опыт и инструменты. Но думаю, у меня отличная возможность получить совет у более опытных разработчиков и от тех, кто возможно в начале своего пути испытал подобные проблемы. Веб-разработкой я увлёкся два года назад. Буквально пару-тройку недель потратил на html и css, всё остальное время старался глубоко освоить javascript, поверхностно PHP и MySQL. Я стал браться за работу: небольшие сайты, портфолио, магазины, hyip-сервисы. И тут я понял, что я делаю что-то не так. Основная сложность в том, что все проекты делаю очень долго, бывало даже такое, что к моменту сдачи, элементарно заканчиваются все моральные и финансовые ресурсы. К примеру, последний проект — интернет-витрину я писал два месяца за штуку баксов и последние две недели «ворк-лайна», простите за выражение, не было даже «напожрать». В то время как веб-студии раздают сайты как горячие пирожки. Еще обратил внимание на тз крупного портала, за которое даже и не стал бы браться, но к моему удивлению, два парня из Белоруссии выполнили его за две недели. Возможно, что моё развитие в этом направлении где-то свернуло не туда. Я стал все свои разработки выделять в отдельную библиотеку (методами). Стараться создавать что-то универсальное, то есть если я делаю сайт-портфолио, я должен создать движок, что бы при необходимости быстро сделать еще 100500 таких сайтов. Так время разработки практически удвоилось, признав свою ошибку, понял, что предусмотреть всё невозможно. Собственно, ответа на вопрос «Какого черта ты так долго работаешь?» у меня нет. Но если попытаться обратить внимание на некоторые сложности которые я испытываю в своей работе, можно выделить несколько моментов. И так, в основном, всю нагрузку я переношу на клиента. То есть сервер отдаёт только стили, скрипты и json. Контент собирается уже в браузере. Всё работает очень шустро и я к такому принципу привык. Суть этого момента в том, что если проект большой, то приходится писать большое количество javascript-а. Вот пример без особых деталей: мы создаём объект который отвечает за работу с хешем(route) в нем методы; потом, объект по работе с контентом, в нем тоже методы запроса и методы вывода в dom; потом всякие модули для типов контента(что бы упростить дальнейшую поддержку); обработчики всякие; далее разработка админки, да и забыл, еще нужно перед всем этим спроектировать нормально расширяемую базу, пусть на mysql. С условием, что перечислена только основная часть объектов ядра сайта, в процессе разработки, дойдя до какого-то объема объектов, методов, функций, около 1000-1500 строк кода, всё это в голове превращается в кашу, ты уже не можешь видеть приемлемо детальную, общую картину в голове, что бы ничего не упускать. И дальнейшая разработка превращается в ад. Из этого результат - долго и нудно, а иногда и больно(если сроки сорвать). Прошу дать совет, знаю, что всё слижком субъективно, но возможно кто-то с этим сталкивался. Спасибо.
  3. Ладно, всем спасибо! Проще сделать прямой вызов функции по клику. Какой-нибудь класс ".hashed" с атрибутом "hash='newhash'". Забуду про это.
  4. Может действительно криво реализован механизм этого события в jQuery. Что самое странное, вообще никакого дока для bind('hashchange') на оффициальном сайте jQuery нет. И еще, я искал в самом jquery.js хоть какие-то методы с "hashchange", но их тоже нет! Непонятно как это работает (но понятно что как-то криво). В ie 8 обработчик $().bind('hashchange') работает вроде , может у jQuery там проверка какая. Типа: var event = "onhashchange" in window || "hashchange" in window ... хотя нет, не нашел.
  5. Сейчас я попробую объяснить почему меня это так беспокоит. Для нового сервиса была выбрана технология «hash-bang». https://developers.g...ification?hl=ru Не буду приводить код, просто поясню где возникают проблемы. 1. Загрузка страницы. 2. Запись пар ключ - значение (из хэша) в объект. 3. Проверка этих значений на допустимые (типа там "page", "lang", etc..). 4. Правим хэш в случае некорректного значения (установки по умолчанию). 5. Вешаем одноразовый обработчик "hashchange" (для запуска пунктов 2, 3, 4, 5 и 6 данного списка). 6. Запускаем функцию синхронной подгрузки контента. В итоге исходя из принципа работы обработчика, пункты 2, 3, 4, 5, 6 выполняются дважды (2, 3, 4, 5, 6, 2, 3, 4, 5, 6). При переходе по «hash-bang» ссылке, так же выполняются пункты 2, 3, 4, 5, 6 дважды. Первый запуск этих пунктов выполняется при клике по ссылке, а второй инициирует четвертый пункт из списка выше (чего не должно происходить, ведь обработчик $.one(), хотя с $.bind() + $.unbind() то же самое ). Если ни кто не понял о чем я сейчас написал, просто объясните почему после console.log('js end'); выполняется срабатывание обработчиков? И как кроме "нулевого" таймаута (кода много, таймаут опасен) обойти эту проблему?
  6. Код : // js start console.log('js start'); var hash = { 'set' : function(val){ window.location.hash = val }, 'log' : function(){ console.log('Hash log: '+ window.location.hash) }, 'bind': function(){ $(window).bind('hashchange', this.log) } }; // set hash.set('hash0'); hash.set('hash1'); hash.set('hash2'); hash.set('hash3'); // bind hash.bind(); // js end console.log('js end'); Резултат : js start js end Hash log: #hash3 Hash log: #hash3 Hash log: #hash3 Hash log: #hash3 1. Консолим запуск. 2. Меняем хэш 4 раза. 3. Вешаем обработчик. 4. Консолим завершение. Какого черта тут происходит? Почему обработчик вообще сработал? (Откуда ему знать что я сделал до его навешивания?) Почему хэш в консоле последний? (Ведь ни каких замыканий тут нет!) Javascript - это скриптовый язык или где? http://jsfiddle.net/ghTP9/
  7. Пример. var a = {}; a.b = {} a.b.c = {} a.b.c.d ={ 'method': function(){ console.log(this); // Object { method:function() } - то есть a.b.c.d.method() } } Всё вополне понятно. А вот как получить доступ из метода к родительским объектам, к примеру a.b ? p.s. вариант прямого вызова по имени объекта не подходит. p.p.s. хотелось бы, что-нибудь простенькое, типа this.parent.parent Всем спасибо!
  8. Да, пытаясь решить эту задачу я попал на ту же статью на хабре. Там решение есть только для ie - TextRange.htmlText - вернет HTML-содержимое объекта. UPD: А вот и счастье, совсем забыл про stackoverflow. ... here's a function that will get you HTML corresponding to the current selection in all major browsers: function getSelectionHtml(){ var html = ""; if(typeof window.getSelection != "undefined"){ var sel = window.getSelection(); if(sel.rangeCount){ var container = document.createElement("div"); for(var i = 0, len = sel.rangeCount; i < len; ++i){ container.appendChild(sel.getRangeAt(i).cloneContents()); } html = container.innerHTML; } }else if(typeof document.selection != "undefined"){ if(document.selection.type == "Text"){ html = document.selection.createRange().htmlText; } }; return html; };
  9. Aroused

    setTimeout

    <script> setTimeout(function(){ document.getElementById('fstip').style.visibility = 'hidden'; }, 4000); </script>
  10. Всем добрый вечер! Помогите с решением. Задача - получить html код выделенной области на странице. То есть, мы вешаем обработчик на событие выделения (ну, можно mouseup), который при срабатывании запустит функцию, которая в свою очередь, вернёт строку выделенной области с наличием html тегов, буд-то мы выделяли исходный html код страницы. Где копал: 1. document.getSelection(); document.selection.createRange().text; window.getSelection(); - в возвращаемых объектах нет удобных методов и значений решающих мою задачу. 2. библиотека jQuery++ (amd/range.js) - $.Range.current() - возвращает выделенную строку без тегов. - $.Range.parent() - возвращает текущий DOM Node выделенной области. Подскажите, что как можно решить такую задачу?
  11. Я думаю это хорошая защита от дурака (ну или от нервного ). Честно говоря меня пугает подтверждение регистрации по мылу тем, что я этого еще не делал и мне кажется, одним bool mail () и `secret` в базе тут не отвертишься. Предположу, что нужно будет хитро настроить что-то на серве и поговорить с буржуйской т.п.
  12. Это как раз тот самый MySql Scheduler Я так понял моё беспокойство напрасно. Значит лучше сделать как у всех, что поделать... Хорошо. Спасибо свсем за советы.
  13. С куками понятно. А вот на счет механизма проверки с таймером и если что последующим баном мне не ясно. Я к тому что, единственное в голову приходит это создать в базе табличку к примеру `activity` и пихать в неё каждое подключение и ++счетчик в ячейке +время. но само по себе это и будет запрос даже когда бан, я должен буду получать ip клиента, обрабатывать на серве и отфутболивать. что тоже запрос. Или это нормальный вариант? Или это не то? Пусть даже вся подсеть будет в бане из-за ip, это ничего, главное, что бы серв был "морозоустойчевый" И спать спокойно. Как-то слижком круто Стоит рассматривать. Спасибо Правда я почитал, что боты могут взять на себя 80% подключений. Может и надуманно. Не поднимаю ли я панику? А вообще такое часто бывает?
  14. Здравствуйте. Прикручиваю не сложную регистрацию. Форма Name Login Pass E-mail. Отправляется post конечно, затем условно reg.php обрабатывает запрос (если всё нормально) и добавляет в базу. Что предусмотреть, (ну, к примеру) какая-то программа будет делать нч запросы на сервер и серв может лечь допустим. Капча не подходит, т.к. для клиента (и меня субъективно) это может послужить источником раздражения. Есть какие либо варианты? Я просто подумал, может, отслеживать такие атаки и закрывать доступ по ip. хотя толку мало. Всё равно будет проверка на серве забанен ip или нет. Вообще желание сделать регистрацию максимально простой, что бы не напрягать клиента. Скорее всего я чего-то не знаю, вот и прошу вашего совета. upd: "нч" - низкочастотные
  15. Главное – донести информацию. VVV Мне нужен был многомерный массив. Не знал, что такое есть.
  16. Добрый день Мне нужна конструкция типа этой => elem elem.one[0], elem.one[1], elem.one[2]... elem.two[0], elem.two[1], elem.two[2]... elem.three[0], elem.three[1], elem.three[2]... Я не могу использовать 3 массива, мне нужно что-то одно, что бы имело помимо ключ-значение еще несколько параметров, то есть массив = [ключ = массив, ключ = массив, ключ = массив...] И сохранить возможность получать длинну массив.length и глубже массив.ключ.length Про что почитать подскажите пожалуйста. Спасибо!
  17. Чуть что сразу разборки Я же не говорю "Эй ты, не пиши в моем топике." нагло. Просто есть вещи которые трудно обьяснить, это не по тематике форума, если начну, то будет оффтоп на пару мегабайт. Просто не так выразился видимо. Я говорил именно про мои вопросы, не в коем случае про топик. А на счет нагрузки, действительно не ясно. Сам искал отзывы, не нашел. Блин, без обид. Просто смотрю написанно так. исправлю.
  18. rus, Вы очень много пишите, и представляете ценность для форума, несомненно. Я не могу вам запретить, но хочу попросить впредь, не отвечать на мои вопросы на форуме.
  19. Авторизация? Да, я думаю это удобно. Спасибо =)
  20. Добрый день. Постараюсь как всегда конструктивно. Задача: Возможность оставлять комментарии на странице от аккаунтов социальных сервисов. Условие: Чел видит 2 блока - (1) блок - предложение авторизоваться с помощью всевозможных соц. сетей, после авторизации блок меняется на форму для отправки коммента. (2) блок - это собственно комментарии. Это не должен быть какой-то плагин с фиксированным стилем, рекламой и прочей чепухой выдающих его `e-commerce` и происхождение. Так вот, еще одна тема в которой я плохо понимаю, но подозреваю что задача тривиальна. Прошу ваших мыслей по теме, подозреваю, что кто-то из читающих проделывал это.
  21. Ох и темка получилась Весь замес из-за таймеров. Просто опишу к чему я пришел. И так, нам нужно средство планировки задачь в базе. Видимых мне способов было 2, Cron и MySQL Event Scheduler. Ни с тем, ни с другим я не был знаком. Потому пришлось выбирать. Я остановился на MySQL Event Scheduler. Нашел мануал, увидел сколько читать, испугался и закрыл. Заглянул в навикат (пока это моя любимая альтернатива myPhpAdmin). И о'Чудо, там реализованна поддержка MySQL Event Scheduler! Быстренько создал задачу(граф. интерфейс не обязывал рыться в мануалах). И задача сработала! Нужно было создать табличку(для теста). Но я всё же хотел понять как навикат это всё реализовал. Смотрю лог. > CREATE EVENT `some` // тут всё очевидно ON SCHEDULE AT '2012-01-17 04:35:07' // время срабатывания ON COMPLETION PRESERVE DISABLE // типа не удалять эвент после срабатывания DO // что собственно нужно сделать CREATE TABLE IF NOT EXISTS `sometbl` (`somecolumn` INT(1) NOT NULL AUTO_INCREMENT PRIMARY KEY) И всё бы хорошо, только как мне узнавать время до вызова?? Сильно расстроился и подумал что всё, буду разбираться с кроном. Случайно зашел в базу которая устанавливается вместе с MySql(information_schema) и увидел таблицу `EVENTS`!!! Там то и были все данные(START, END, etc..) Дальше всё очевидно по запросу в mysql TIMESTAMPDIFF - клиент получает оставшееся время по средством php. Всем спасибо!
  22. VVVV Есть *НЕЧТО* на сервере, что побуждает изменить значение в табличке через определенный период времени. Единственное что может клиент, это узнать сколько времени осталось до конца таймера так скажем. Клиент ничего друго не делает. Ура, за понимание + вам. Потому я и говорю, что это нужно делать на сервере! 2 часа прошлсь потратить, что бы в топике определиться накой человеку нужно именно то, что он спрашивает. Что тут можно путать? Есть клиентские языки, есть серверные. Они выполняются соответственно определению. Ни слова по делу не сказанно. Закройте нахрен тему.
  23. Мне самому проще найти решение. Временем на не распологаю. Как сделаю, сюда же отпишу. Проще обьяснить не возможно - только сделать и показать. Жгете +) Я тут не при чем
  24. Я еще раз говорю, мне нужно серверное решение. Задание должен инициировать сервер потому что: клиент не должен влиять на процесс, тем более использовать клиентские скрипты; сессия не должна прерываться когда клиент закрыл страницу (nonStop так сказать); вешать на клиента любое изменение бд в моем случае не приемлемо. Я про таймеры на серве. Ну к примеру взять тот-же MySQL Event Scheduler, понятно что он использует ресурсы gpu. Но вот на счет нагрузки не понятно.
  25. Мне необходимо серверное решение, т.к. процесс не должен зависеть от клиента.
×
×
  • 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