Записки самоучки

Май 23, 2008

Обновился jQuery, jQuery UI

Filed under: Глюки,JavaScript,jQuery — 4matic @ 9:54 пп

Как-то незаметно для меня обновился jQuery. Причём, версию 1.2.4 я пропустил, поэтому обновился сразу до 1.2.5. Пока полёт нормальный. Так же обновился jQuery UI до версии четвёртой беты. Очень много изменилось в расширении Datepicker. Частично из изменился API:

Version 3.4.x Updates

  • Formatting updates to demo page.
  • Code optimizations.
  • Added Bulgarian translation.
  • Starts with a semicolon.
  • Fixed scrolled overflow elements.
  • Fixed wiki demo in IE and Safari.
  • Added lithuanian translation.
  • Consolidate formatting parameters for formatDate and parseDate.
  • Replace hasClass() with is().
  • Allow control characters to be typed (copy/paste).
  • Fix width bug for multiple months display.
  • Trigger button now toggles date picker.
  • Default date is always within min/max date restrictions.
  • Use reverse animations for hide based on showAnim setting.
  • Added onClose setting.
  • Apply both datepicker_currentDay and datepicker_today styles if applicable.
  • Default date is not depicted as the current date.
  • Fix jump on Next when showing multiple months and selecting in later months.

Functions renamed for jQuery UI v1.5

  • attachDatepicker is now datepicker
  • removeDatepicker is now datepicker(«destroy»)
  • changeDatepicker is now datepicker(«change»)
  • disableDatepicker is now datepicker(«disable»)
  • enableDatepicker is now datepicker(«enable»)
  • isDisabledDatepicker is now datepicker(«isDisabled»)
  • showDatepicker is now datepicker(«show»)
  • getDateDatepicker is now datepicker(«getDate»)
  • setDateDatepicker is now datepicker(«setDate», …)

Version 3.3 Updates

Changes made to the core for constancy with jQuery UI

  • Changed $(selector).datepicker() to $(selector).attachDatepicker().
  • Changed $.datepicker.enableFor(control) to $(selector).enableDatepicker().
  • Changed $.datepicker.disableFor(control) to $(selector).disableDatepicker().
  • Changed $.datepicker.isDisabled(control) to $(selector).isDisabledDatepicker().
  • Changed $.datepicker.reconfigureFor(control, settings) to $(selector).changeDatepicker(settings).
  • Changed $.datepicker.setDateFor(control, date) to $(selector).setDatepickerDate(date).
  • Changed $.datepicker.getDateFor(control) to $(selector).getDatepickerDate().
  • Changed $.datepicker.showFor(control) to $(selector).showDatepicker().
  • Added $(selector).removeDatepicker.
  • Updated compatibility file to reflect changes to core functions.

Так же изменились названия некоторых атрибутов.

Пришлось покопаться с расширением Dialog. В данной версии не работает возможность перемещения окна, а так же если попытаться сделать окно модальным — то, скрипт будет выдавать ошибку. Расширение капризничало в Opera и IE. Оказалось, что виновата строка, где переменные определены следующим образом:

var var1 = f1(), var2 = f2(), var3 = var4 = f3()

Вот там, где инициализируются одновременно две переменные, и было проблемное место.

Ручками доработал скрипт, что бы z-index окна не изменялся при клике по нему. Из-за такой реализации некорректно ведет себя следующий алгоритм. В вызываемом окне используется объект Datepicker, и при клике по окну календарь накрывался окном. Как отключить эффект всплывающего события пока не додумался, а найденное решение меня вполне устраивает.

Сам jQuery немного поправился, упакованная версия весит на 1кБ больше, чем версия 1.2.3. А, вот jQuery UI более заметно прибавил в весе. Субъективно jQuery UI стал пошустрее.

Если кто не обновлялся с первых бет, то рекомендую подождать, как я понял совсем скоро грядёт первый RC, где будут исправлены баги, в том числе и те, что я озвучил в заметке.

Реклама

Май 28, 2007

Танцы с бубнами вокруг настройки сервера Windows 2003+Apache 2.2.4+PHP 5.2.2+MySQL 5.0.41

Filed under: Apache,Глюки,MySQL,PHP — 4matic @ 4:56 пп

Занимался настройкой веб-сервера. Давно не тратил столько времени на настройку!

Все сделал как обычно. Скачал свежие релизы. Установил каждый из продуктов. Начал настраивать совместную работу. И тут началось веселье.

При попытке установить расширения для работы с СУБД  получилось вот что. расширение для работы с MSSQL встало без капризов, а вот при попытке подключить расширение mysqli получил ошибку invalid access to memory location. Не буду рассказывать о всех танцах с бубнами на протяжении 4 часов, просто расскажу, в чем проблема и как решил.

Имею привычку разворачивать PHP и прописывать PHPRC=»C:\PHP\» в системных переменных окружения. И потом все подключаемые библиотеки хранить в  C:\PHP\. Так вот после гугиления нашел на одном форуме скромное замечание о том, что не смотря на то, что в документации PHP предлагает делать те действия, которые я и выполнил, в некоторых релизах Windows подключение библиотек для работы PHP по путям отличным от C:\Windows или C:\Windows\System32 происходит некорректно. Почему — этого науке не известно.

Как решил проблему. Просто перекинул файлы libmysql.dll и php5ts.dll в папку C:\Windows\System32 и проблема почти решилась. Почти, потому что возникили еще одни грабли. Имею привычку (дурную???) использовать libmysql.dll не из релиза PHP, а из релиза MySQL. Так вот, клиент от MySQL не захотел подключать расширение mysqli, а родной PHP-шный запустился без проблем. Т.е. пришлось в папку C:\Windows\System32 кидать libmysql.dll, которая шла вместе с PHP, а не MySQL.

P.S. Неприятно, что после того, как MySQL перестал оперативно выпускать бинарники для Windows, вообще перестали обновлять библиотеки API PHP.

Февраль 16, 2007

Определение стилей ячеек столбца в теге COL

Filed under: CSS,Глюки,HTML — 4matic @ 1:37 пп

Я для верстки таблицы использую тег COL. Раньше как-то не придавал значения проблеме, которую сейчас озвучу.

С помощью тега COL нельзя передать всем ячейкам столбца свойство class по наследству. Поведение в каждом из распространенных броузеров различается: где-то наследование заканчивается на уровне THEAD, где-то вообще полное игнорирование. В любом случае систематизировать и искать закономерности нет никакого желания. (Кому интересно: может глянуть http://www.w3.org/TR/CSS21/tables.html#q4)

Поиск по русскоязычному интернету ничего не дал (хм… мало кто пользуется тегом COL для верстки таблиц или CSS для таблиц рулит???). Поиск по англоязычным сайтам был более удачным.

Оказалось, что с помощью тега COL для ячеек столбца можно задать только некоторые атрибуты. предложенные решения:

  1. Задавать атрибуты для каждой ячейки. Это решение влоб. Работает 100%, НО, согласитесь, что не удобно работать с таким кодом, плюс лишний трафик на клиента.
  2. Устанавливать стил, используя родительские связи (селекторы сестринских или дочерних элементов). Т.е. что-то по типу TD, TD+TD, TD+TD+TD, TD+TD+TD+TD. Обратите внимание, что стили будут переопределяться : т.е. стиль второго столбца будет актуальным и для третьего (TD+TD+TD). Думаю, что можно поизварщаться с DOM и дочерним селектором >. В сети предлагается использовать псевдоэлемент first-child, но он работает не везде.
  3. Хаки-велосипеды с помощью JS.
  4. Комбинировать все знания, для достижения прозрачного и удобного индивидуального решения.

Ссылки по теме:

  1. http://css-discuss.incutio.com/?page=StylingColumns
  2. http://ln.hixie.ch/?start=1070385285&count=1

Февраль 3, 2007

У Access файлы не резиновые

Filed under: Глюки,Софт — 4matic @ 12:08 дп

Достаточно положительные ощущения от пользования MS Access. Сейчас работаю с большими объемами информации. Сегодня сделал для себя два «открытия», которые и «дали» название топику:

  1. Если удалить часть данных из таблиц, то размер файла не уменьшится. Для того, что бы уменьшить размер нужно «поколдовать» над файлом с помощью меню Access Сервис->Служебные программы->Сжать и восстановить базу данных…
  2. Максимальный размер файла, который может себе позволить Access — это 2 гб. Причем, когда размер файла достигает максимума, при поптыке добавить данные — получим ошибку. Если удалить часть данных и попытаться добавить новые данные — получим опять ошибку. Правильно, получим ошибку, потому что у Access файлы не резиновые и нужно над ними «поколдовать».

Январь 22, 2007

Порядок выдачи в поисковиках

Filed under: Глюки,Это жизнь — 4matic @ 1:53 пп

Никогда бы не подумал, что мой блог по фразе wordpress.com в Яндексе будет вторым, а в русском Гугле четвертым.

Январь 13, 2007

PCSuit лучше переустанавливать, а не обновлять

Filed under: Глюки,Софт — 4matic @ 8:46 пп

Как я уже говорил. Я приобрёл Nokia 6233 и столкнулся с проблемой, когда попытался установить софт, синхронизирующий данные на телефоне и на ноутбуке. Очень долго мучился: ходил на форумы, гугилил темы и т.д. — безрезультатно.

Заметил, что у Нокии нет мощной поддержки в сети, нет какого-то ярко выраженного ресурса. Я почему-то думал, что есть Нокиа-клуб или что-то в этом роде — нет ничего. У Самсунга по-моему есть.

Ладно, меньше лирики.

Вводные данные.

  • Ноутбук HP Compaq nc6230.
  • ОС Windows XP SP2.
  • Мобильный телефон Nokia 6233 с прошивкой 3.70
  • PCSuit 6.7 и 6.82

Итак. Купил мобильный телефон. В комплекте шёл диск с PCSuit 6.7 — сразу его установил. Появилось сообщение о том, что есть свежая версия. Я не задумываясь согласился и обновил ПО. После этого начал подключатся по Bluetooth. Удалось установить соединение между устройствами, но не через интерфейс PCSuit. PCSuit наотрез отказывался определять телефон.

После длительных телодвижений было найдено, в чем проблема. Обновление PCSuit происходит как-то криво, а если устанавливать свежую версию PCSuit с ноля, то проблем с синхронизацией устройств средствами PCSuit нет.

Другими словами я снес ВСЕ программы, которые устанавливается вместе с PCSuit (Nokia Connectivity Cable Driver, PC Connectivity Solution, Windows Driver Package …) и установил последнюю версию — все заработало.

Много положительных отзывов  о программе Oxygen Phone Manager II for Nokia And Vertu Phones. Этот продукт платный, где-то 20 у.е. Для любителей «халявы» предусмотрено наказание. Если вы при регистрации программы укажите ключ, который сгенерирован кейгеном, предназначенным для ранних версий, то при синхронизации данных с мобильника будет удалена вся информация. Не знаю на сколько это правда, но в сети такие случаи описаны. Как по мне, так радикальная защита ПО. Я не куплю продукт, который может обладать таким диструктивным функционалом.

P.S. «Подмывает» обновить прошивку мобильника. Дождусь 5-й версии. Прошивать буду самостоятельно, потому что в сервисном центре Nokia, в котором я был — очереди нереальные.

Декабрь 22, 2006

У атрибутов id и name общее пространство имен в Opera`е и IE`е

Filed under: DOM,Броузеры,Глюки,HTML,JavaScript — 4matic @ 12:28 дп

Представим ситуацию. У вас сложная форма с достаточно большим количеством элементов. Для доступа к некоторым элементам в скрипте вы используете тривиальную конструкцию document.getElementById(). К своему удивлению вы обнаруживаете, что атрибуты объекта отличаются от тех, которые вы ожидаете увидеть. Возможно причина в том, что у вас совпадают значения атрибута id одного объекта и атрибута name другого объекта. Пример:

<input type=»text» name=»test» id=»bad_id»>
<input type=»button» id=»test» onclick=’alert(document.getElementById(«test»).id)’>

Так вот, если мы кликнем по кнопке, то должны получить сообщение «test». НО. Вы получите ожидаемый результат только в Firefox, а вот в Opera и IE вы получите неожиданный результат в виде сообщения «id_test».

Согласно документации getElementById() возвращает первый найденный объект с искомым id. Согласно той же документации id должен быть уникальным, а вот name может повторяться.

В примере мы делаем все правильно и получаем некорректный результат. Скорее всего проблема в том, что в Opera и IE для name и id отведено общее пространство имён. А этого быть не должно. Немного погугилив я нашёл достаточно большое количество ссылок по озвученному вопросу. Показательными я считаю вот эти две:

  1. document.getElementById() returns element with name equal to id specified
  2. Element Name vs Id

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

Как решить проблему?

Очень просто. Давать атрибутам id и name логичные значения. Ситуации, когда два разных объекта могут называться одинаково нужно еще поискать.

Если с логикой туго, то давать всем объектам уникальные id и name, уникальные в общем пространстве имен.

А еще лучше разработчикам браузеров устранить баг.

P.S. Нужно будет поэксперементировать с js-фреймворками.

Ноябрь 17, 2006

GMAIL имеет ввиду трафик пользователя, а броузеры радует безопасностью.

Filed under: Броузеры,Глюки,Это жизнь,Google,Web 2.0 — 4matic @ 2:24 пп

Попросили меня скинуть на мыло экзешный файл. Этот экзешник лежит у меня в зиповом архиве.

Открыл GMAIL, прикрепил файл на скрепку к письму. GMAIL честно перекачал файл на сервер! Причем перекачал по событию «окончание выбора файла», как только я указал файл, а не подтвердил отправку всего сообщения. Я набрал текст письма и нажал кнопку отправить письмо. И тут GMAIL огорошил меня новостью: в целях безопасности сервис не отправляет файлы в том формате, в котором хранится файл на скрепке. Точнее сказать именно с расширением exe. Я имел ввиду GMAIL и его тупую и бездарную заботу о безопасности клиентов. Я просто переименовал файл, снова зазиповал и отправил без всяких проблем. Понятно, что я потратил на повторный поиск файла, разархивирование, изменение расширения, архивирование…

Что возмутило.

  1. Сервис разрешил прикрепить файл, но запретил его отправить. (Я прекрасно понимаю, что бы узнать больше о файле — нужно его скачать.) А если бы я прикреплял файл размером в несколько десятков метров? Потратил время, трафик (читать деньги), а потом бы получил подобное «заботливое предложение»? Кто возместит убытки???
  2. Хорошо, что я знаю, что нужно поменять расширение файла, и как это сделать. А если пользователь чайник, сидит в Windows, который по умолчанию скрывает расширение файла? Все — курим бамбук. Почту в этом случае отправляем голубями.
  3. «Порадовала» безопасность броузера, которая разрешила без моего явного разрешения отправить файл на сервер. А если бы я по ошибке выбрал не тот (конфиденциальный) файл, броузер бы все равно разрешил его скачать на сервер, а GMAIL воспользовался этой возможностью, и, заботливо, по самому безопасному http протоколу закачал бы этот файл на сервер.
  4. Что за привычка проверять предмет по внешнему виду, а не по его атрибутам и другим данным? Заботитесь о безопасности клиента — проверяйте антивирусом, а не способом «от лукавого» по вторичным половым признакам.

Выводы.

  • Не отправляйте через GMAIL ничего большого на скрепках, предварительно не проверив на меньших по размеру файла, как будет отправляться содержимое скрепок.
  • Обращайте внимание, к каким файлам указываете путь в форме выбора файла. А еще лучше, что бы у тега INPUT type=file не было вообще никаких событий.
  • Когда разрабатываете пользовательский интерфейс, то ограничивайте возможности пользователя, исключая те возможности, которые приводят пользователя в тупик, а не к ожидаемому результату.

Сентябрь 19, 2006

Прощай, OmeaReader!!!

Filed under: Глюки,Это жизнь — 4matic @ 6:08 пп

Я не пользуюсь on-line RSS reader. Я пользуюсь клиентами, которые считывают ленты и сохраняют их содержимое локально на компьютер. До последнего времени я пользовался клиентом OmeaReader. Отличнейший клиент, в нем есть все, что нужно для меня, а так же все достаточно удобно в использовании. В частности, есть отличная функция, которая позволяет ставить свое теги для новостей, удалять ненужные новости, поиск и т.д. и т.п.

Все было безоблачно до прошлой недели. В одно осеннее утро Omea встретила меня сообщением об ошибке. Ошибка сообщала, что у меня сбойнули кластеры БД. Я попытался перезапустить программу, но получал одно и тоже сообщение. Не долго думая, я отправил письмо на ящик саппорта Omea. Ответ был практически моментальным. В ответе был совет запустить Omea с определенными параметрами.

«Разряд!!!!» …. пыдыдыщь!!!! «It’s a life.» Ридер ожил и встал на колени. В таком положении клиент продержался неделю. Сегодня заветная комбинация параметром не смогла оживить столь горячо любимый программный продукт. Почтив минутой молчания пепелище отмодерированного собрания сочинений из всех уголков сети за последние полгода, я начал искать альтернативу.

Альтернатив оказалось много, но в каждой альтернативе чего-то не хватало. Немного побродив по просторам сети и перечитав несколько обзоров, я остановился на двух: FeedDeamon и Abilon. Я спросил совета у Яшникова, который тоже пользовался Omea, и у которого Omea так же покрывшись сыпью из алертов скончалась, не приходя в сознание. Как я понял, Яшников пользуется Abilon.
FeedDeamon — триал, который, по-мимо прочего, мне не понравился тем, что повторно считывал удаленные новости, и был платным. Если не придираться к дизайну и не сравнивать с Omea, к которой я привык, то Abilon достойная бесплатная замена. На этой замене я и остановился.

P.S. Берегите информацию!!!

Сентябрь 11, 2006

Странное поведение RSS и Omea Reader

Filed under: Глюки — 4matic @ 12:29 пп

Сегодня заметил странное поведение новостных лент. Например, достаточно большое количество лент почему-то не читается. Проверил наличие лент с помощью интегрированного ридера Оперы, а так же Omea Reader — эффект один и тот же — ленты не доступны.

Omea Reader при чтении лент просто вываливается с сообщением об ошибке, мол, проверьте дисковое пространство, на котором хранится БД программы, потому что были обнаружены ошибки в кластерах информации.

Даже и не знаю, что думать и что делать.

Следующая страница →

Создайте бесплатный сайт или блог на WordPress.com.