пятница, 26 августа 2011 г.

jQuery. Проверить видимость элемента на странице (видимый/невидимый)

Для того чтобы проверить видимый элемент или нет, можно воспользоваться двумя способами:

Допустим, у нас есть скрытый элемент с id="test":
$("#test").is(":visible") => false
или:
$("#test").is(":hidden")  => true

вторник, 23 августа 2011 г.

Перевод документации по jQuery

Представляю вашему вниманию ресурс, который содержит перевод документации jQuery с примерами: jQuery page2page

Ресурс также предоставляет интересные решения типовых задач (рецептов).

Если есть желание поучаствовать, детальнее читать тут

среда, 17 августа 2011 г.

Сравнение языковых конструкций PHP, Perl, Python, Ruby

Предлагаю вашему вниманию статью, в которой в удобной табличной форме представлены особенности реализации конструкций языков (таких как циклы, условные операторы, логические операторы, и многие другие) для PHP, Perl, Python, Ruby.

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

Scripting Languages: PHP, Perl, Python, Ruby

понедельник, 15 августа 2011 г.

JavaScript. Получить длину строки в байтах

Мне потребовалась функция подсчета количества байтов в строке (в UTF8 разные символы имеют длину от 1 до 6 байтов). Как источник - использовал статью на Википедии: UTF-8, там я подсмотрел в таблицу, в которой указано сколько байтов занимает символ, в зависимости от порядкового номера. Потом расширил стандартный класс String - новой удобной функцией, которая, корректно находит длину строки в байтах, а не символах:
String.prototype.byteLength = function(){
   var str = this, length = str.length, count = 0, i = 0, ch = 0;
   for(i; i < length; i++){
     ch = str.charCodeAt(i);
     if(ch <= 127){
        count++;
     }else if(ch <= 2047){
        count += 2;
     }else if(ch <= 65535){
        count += 3;
     }else if(ch <= 2097151){
        count += 4;
     }else if(ch <= 67108863){
        count += 5;
     }else{
        count += 6;
     }    
  }
  return count;
};
Пример использования:
var str = "Строка";
console.log('Length: ', str.byteLength(), ' byte(s)');
А можно поступить проще:
var str = "Строка";
count = unescape(encodeURIComponent(str)).length

четверг, 11 августа 2011 г.

Купить читалку Kindle 3 в Украине

Хочу купить Kindle 3, но не хочу заказывать на Amazon (стремно с карты снимать лимиты для платежа зарубеж).

 Подсказали интернет-магазин в Киеве: http://pro-store.kiev.ua/, цены вроде без накрутки совершенно:
 Amazon Kindle 3 Wi-Fi+3G - 1576 грн.
 Amazon Kindle 3 Wi-Fi - 1352 грн.
 Amazon Kindle 3 Wi-Fi Special Edition (модель с рекламой) - 1224 грн.

Габариты посылки для Киндле 3 Wi-Fi: 1.10 lbs (0.5 kg) 10"×9"×3" (26×23×8 cm)

Оплата или через Укрсоцбанк или при получении через "Новая почта"

Стоимость доставки пробовал вычислить используя спец. сервис "Новой почтой", зная габариты посылки, получилось для меня (в Черкассы) около 50 грн. (посмотрим ;) )

На следующей неделе закажу, отпишу сколько обошлась доставка Киев-Черкассы (если не передумаю и не закажу таки на Амазоне).

среда, 10 августа 2011 г.

JavaScript. Простой шаблонизатор

Когда работаешь с JavaScript, то приходиться часто работать с DOM страницы. Есть задачи, когда нужно вставить в какой-то узел документа - кусочек готового шаблона с подстановкой в него данных. Самым простым вариантом будет склейка готового текста из кусочков, например:
var classname = "myclass";
var value = "test";
var content = "
  • "+value+"
    "+"
  • "; $("#div_id").append(content);

    Но это не совсем удобно, особенно если "склеивать" большое количество частей. jQuery 1.6.x предлагает свой шаблонизатор, но он пока в бета-версии. Есть куча сторонних решений, но они, как правило, громоздкие и надо всегда оценивать целесообразность их применения. Когда-то нашел интересный пример реализации шаблонизатора, который и покажу в действии.

    Расширяем стандартный класс String:
    String.prototype.supplant = function(o) {
       return this.replace(/\{([^{}]*)\}/g, function(a, b) {
          var r = o[b];
          return typeof r === 'string' || typeof r === 'number' ? r : a;
       });
    };
    

    Пример его использования:
    var template = "
    
  • {value}
  • "; var content = template.supplant({classname: 'myclass', value: 'test'});

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

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


    JavaScript. Простой assert

    Часто бывает полезно поставить в коде некоторые проверки целостности кода, для этого очень хорошо подходит методо assert стандартной console, которая поддерживается всеми современными браузерами (с IE8+ для мелкософта). Так можно реализовать простейшее тестирование кода.

    Применение:
    var x = 1;
    console.assert(x == 1, "X should be eqaul 1");
    

    Первым аргументом идет проверяемое утверждение (результатом должно быть логическое значение TRUE/FALSE), вторым - подсказка отображаемая в консоли.

    Если интересно почитать о консоли глубже - выкладываю ссылку на хабру.

    JavaScript. Получить timestamp из даты

    Для того чтобы получить timestamp из объекта даты, нужно воспользоваться методом valueOf():
    var dateObject = new Date;
    var timestamp = dateObject.valueOf();
    console.log(timestamp);
    
    // Или проще
    var timestamp1 = +dateObject;
    
    // Еще проще
    var timestamp2 = +new Date;