jquery, php, разработкаСервис коротких ссылок

Все же наверно знаете что можно из длинной ссылки получить маленькую? :) Например, с помощью сервиса tinyurl.com, просто вводите свою большую ссылку и получается короткую, и сервис просто вас редиректит на нужную. Все просто.

Сервисов уже сделано довольно много таких. Есть даже русские.

А вчера я вечером не знал что делать, гулять и ехать на open air было рано (я так и не уехал, поздно спохватился и все транспорты ушли :( ), я решил попробовать поработать с CURL. Не буду объяснят что это такое :)

Вобщем я добился такого, что из php скрипта получать короткие ссылки с разных сервисов. Ввожу свою ссылку, жму кнопку и получаю штук 8 других. 8 — потому что гугл мне показал 10 штук примерно их, но 2 сервиса отпали, так как были не рабочие.

Решил все это оформить как сервис, но вот беда — я не очень хороший верстальщик и у меня не получилсь сделать чтобы footer (подвал) был всегда внизу. Пока оставил, может придет вдохновение и доделаю. А получать весь набор ссылок через AJAX уже есть + есть проверка от спам-бота. Не серьезная конечно, но все равно от простых ботов защитит.

google, jquery, разработкаGoogle добавил интерфейс для AJAX-библиотек

Сегодня Google объявила об открытии интерфейса Google AJAX Libraries API. Что это и для чего нужно я в кратце поясню.

Во-первых, это хранилище всех версий следующих библиотек:

  • jQuery
  • Dojo
  • MooTools
  • script.aculo.us
  • prototype

Это значит вы можете получить любую версию библиотек сразу в коде страницы с помощью специального запроса (об этом чуть позже). Это также значит, что вам не предется хранить на своем сервере все эти кучи файлов и менять с выходом новых версий файл. И да, на сервере Google хранятся также сжатые версии.

Во-вторых, инфраструктура серверов Google довольна хорошо работает и сервера могут обеспечить хорошую скорость по выдаче файлов. Если кто-то уже загружал этот файл с сервера Google, он уже может оказаться в кеше. Разработчикам не придется заботиться о компресии и кеше, это сделает Google.

В-третих, все это работает максимально просто. Чтобы получить нужную библиотеку, можно воспользоваться двумя способами. Самый простой это сделать запрос через <script src=""></script>

Например, нам нужно получить prototype версии 1.6.0.2:

<script src="http://ajax.googleapis.com/ajax/libs/prototype/1.6.0.2/prototype.min.js"></script>

Второй способ это загрузить библиотеку через метож google.load из Google AJAX API Loader's

Пример для jQuery:

<script src="http://www.google.com/jsapi"></script>
<script>
  // загружаем jQuery
  google.load("jquery", "1");

  // когда страница загружена, вызываем метод jQuery
  // поиск через Google :)
  google.setOnLoadCallback(function() {

    $.getJSON("http://ajax.googleapis.com/ajax/services/search/web?q=google&;v=1.0&;callback=?",
      //запрос завершен, получаем данные
      function (data) {
        if (data.responseDate.results &&
            data.responseDate.results.length>0) {
          renderResults(data.responseDate.results);
        }
      });
    });
</script>

Вот и все :)

Ещё одна интересная вещь — загрузка последней версии библиотеки. Когда мы указываем версию файла, можно указать что мы хотим загрузить самую последнюю версию. Например, если укажем версию «1» для jQuery, мы загрузим версию 1.2.6. Для остальных библиотек также. Можно указывать ветки версий. То есть, если укажем версию 1.2, то нам загрузят 1.2.6. Но когда выйдет версия 1.3.х, она не будет загружена.

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

<script src="http://ajax.googleapis.com/ajax/libs/prototype/1.6.0.2/prototype.js"></script>

Это если мы используем URL для запроса. А если мы используем метод google.load,то надо указать в функцию допольнительный параметр {uncompressed:false}

Дополнительные ссылки:

Официальная страница

Документация

via Ajaxian

jquery, разработкаГадская связка FCKEditor и jQuery UI

Была у меня задача написать плагин для FCKEditor, чтобы была возможность вставлять фотографии из фотобазы. Плагин написал, окошко открывается из FCK, фотки показываются. У нас фотки все хранятся с разными размерами, то есть можно выбрать размер. Я решил это дело оформить с UI Dialog, чтобы было удобно. Все, открывается. Думаю закончил, щас только размеры соберу для всех фоток и будет готово. Ан нет! Когда кликаю на фотку, почему-то все окно браузера перекашивает и появляется черный прямоугольник.

Сначала думал что это глючит jQuery UI, начал тестить, закачал последнюю бету. Все равно, не работает и все. В Firebug тестил, из-за фрейма у окошка FCK там нельзя вызвать в консоли то что мне надо. И так и этак пробовал, не получается.

После 2х часов мучений решил поменять имя функции открытия окошка на другое. Теперь вместо «open», называется «openDialog». И чудо! Заработало. Оказывается, в Firefox эта функция открывает новое окно. Хотя я обычно использую window.open, и не понимаю как open делает тоже самое.

Совет: когда пишите на JS, проверяйте названия своих функций :)

разработкаmarkItUp! легкий редактор на JavaScript

markItUp! это «легкий» редактор для jQuery. Это не WYSIWYG редактор и никогда им не будет. Вся «соль» этого редактора в том, что можно настроить его для использования с любыми средствами подсветки. BBCode, Markdown, Wiki синтаксис, Textile и конечно же HTML.

Особенности:
— Легкая интеграция
— Поддержка «горячих» клавиш
— Панель управления легко настраивается
— Легко изменяется и настраивается
— Просмотр результатов через AJAX
— Настраиваемый внешний вид

Примеры использования
Домашняя страница

jquery, разработкаjQuery и выход из функции

Недавно мне понадобилось сделать проверку форму на заполнение формы. Форма не простая, там много повторяющихся полей (загрузка нескольких фотографий) и есть возможность добавлять новые поля «не отходя от кассы». Так как я активно использую jQuery, то решение родилось само собой.

function check()
{
$(".check").each(function() {
if(проверка)
{
return false;
}
});
}

По идее, когда условие не удовлетворяется, то функция check должна возвратить false и не дать форме отправиться. На самом деле получается так, что return относиться не к функции check, а к внутренней функции от each. То есть, false получится там, а он нам не нужен.

Так как я этого не знал, долго мучился и не мог понять где ошибка. В итоге я дебагером начал по строчно проходить код и увидел где у меня ошибка. Решение получилось простым:

function check()
{
var list = $(".check");

for(var i=0; i < list.length; i++)
{
var el = list[i];
var id = $(el).attr("name");
id = id.match(digitRegexp);
if(проверка)
{
return false;
}
};

Надеюсь, никто не столкнется с такой ошибкой :)