Home
entries friends calendar user info My Website
maxi_star

Advertisement

Add to Memories
Tell a Friend
Сегодня встала задача сделать страничку с ютубовскими мувиками валидной в XHTML Transitional. Сама по себе задачка решена давно,  можно использовать для этих целей SWFObject, но он зараза никак wmode не позволяет менять, или я просто не умею это делать. Кроме того синтаксис его использования какой-то громоздкий и некрасивый. Решил своими силами сделать аналог посимпатичнее.
Конечно за безбаговость не ручаюсь но потестировал на IE6, IE7, в Опере, FF и Sfari.
Самое интересное что код с тегом Object нигде не понадобился. Я то думал что он нужен для эксплорера, оказывается что шестой эксплорер тег Object кушать наотрез отказался, а вот EMBED скушал за милую душу.

Вот что получтилось:
flasher.js

function flasher(){
 this.attr = {'wmode':'transparent','type':'application/x-shockwave-flash'};
 var i;
 for(i=0;i<arguments.length;i=i+2){
     this.attr[arguments[i]] = arguments[i+1];
 }
}

flasher.prototype.write = function(element){
    var el = document.getElementById(element);
    var args = '';
    for(key in this.attr){
      args = args + ' ' + key+'='+this.attr[key];
    }   
    el.innerHTML = '<embed '+args+'></embed>';
}


как это использовать:
<div style="width:425px;margin:10px auto;" id="darren_dicke"><!--Darren Dicke--></div>
<script type="text/javascript">
// <![CDATA[         
    var fo = new flasher("src", "http://www.youtube.com/v/g3Y_mQA0E0A", "width","425", "height","350" );
    fo.write("darren_dicke");
// ]]>
</script>
к недостаткам можно отнести отсутствие автообновления плагина, займусь этим как нибудь на досуге потом.

Tags: ,

Add to Memories
Tell a Friend
Интересно, является ли блогописательство новом направлением в шоубизнесе? Будем ли мы через какое то время закрывать все блоговые сайты как теперь выключаем рекламу или удаляем письма со спамом? Потеряет ли это направление свою ценность через некотрое время и если да то когда это произойдет? Время покажет....

Tags:

Add to Memories
Tell a Friend
Хотел написать более длинный блог, но гребанный ливджорнал, ужасно непродуманный, уже все написал, отредактировал, хотел было теги ввести, но забыл нужно ли их через запятую писать. Нажал на вопросик рядом с полем метки после чего быль любесно переадресован на хелп. Для возврата к блогу нажал на конопку "назад".
Спасибо создателям живого журнала за наше счастливое детство! Блог был пуст!
В принципе я и сам был хорош, нужно было текст взять в буфер, но всегда хочется верить в что то хорошее, типа программа будет работать так как этого ожидает пользователь а не как всегда....

Tags:

Add to Memories
Tell a Friend
Сегодня искал где бы захостить новый проект - нужен был SVN хостинг, платный или бесплатный. Наткнулся на любопытную штуку - называется Bazaar - почемуто сразу вспоминается Базар на Деве у Асприна. Суть простая - вместо централизованного контроля версий предлагается децентрализованный ее вариант. Как это будет работать я пока не понял, но собираюсь поиграться, глядишь что и получится.

Tags:

Add to Memories
Tell a Friend
Стояла следующая задача - сконкатенировать множество подгружаемых JavaScript файлов в один большой файл и по возможности убрать из него коментании Whitespace, чтобы размер файла был как можно меньше. Ранее я обнаружил что в библиотечки xajax есть замечетельная функация которая как раз и делает что удаляет из js файла все лишнее. Функция большая и некрасивая, зато со своей задачей справляется. Вот только в оригинале она почемуто не удаляет комментарии вида /* комментарий */ а заботливо их оставляет нетронутыми поэтому пришлось ее немного доработать, правда от этого она не стала красивей.
Вот что получилось:
  function CompressJavascript($sJS){
    //remove windows cariage returns
    $sJS = str_replace("\r","",$sJS);
   
    //array to store replaced literal strings
    $literal_strings = array();
   
    //explode the string into lines
    $lines = explode("\n",$sJS);
    //loop through all the lines, building a new string at the same time as removing literal strings
    $clean = "";
    $inComment = false;
    $literal = "";
    $inQuote = false;
    $escaped = false;
    $quoteChar = "";
   
    for($i=0;$i<count($lines);$i++)
    {
        $line = $lines[$i];
        $inNormalComment = false;
   
        //loop through line's characters and take out any literal strings, replace them with ___i___ where i is the index of this string
        for($j=0;$j<strlen($line);$j++)
        {
            $c = substr($line,$j,1);
            $d = substr($line,$j,2);
   
            //look for start of quote
            if(!$inQuote && !$inComment)
            {
                //is this character a quote or a comment
                if(($c=="\"" || $c=="'") && !$inComment && !$inNormalComment)
                {
                    $inQuote = true;
                    $inComment = false;
                    $escaped = false;
                    $quoteChar = $c;
                    $literal = $c;
                }
                else if($d=="/*" && !$inNormalComment)
                {
                    $inQuote = false;
                    $inComment = true;
                    $escaped = false;
                    $quoteChar = $d;
                    $literal = $d;   
                    $j++;   
                }
                else if($d=="//") //ignore string markers that are found inside comments
                {
                    $inNormalComment = true;
                    $clean .= $c;
                }
                else
                {
                    $clean .= $c;
                }
            }
            else //allready in a string so find end quote
            {
                if($c == $quoteChar && !$escaped && !$inComment)
                {
                    $inQuote = false;
                    $literal .= $c;
   
                    //subsitute in a marker for the string
                    $clean .= "___" . count($literal_strings) . "___";
   
                    //push the string onto our array
                    array_push($literal_strings,$literal);
   
                }
                else if($inComment && $d=="*/")
                {
                    $inComment = false;
                    //$literal .= $d;
                    //subsitute in a marker for the string
                    //$clean .= "___" . count($literal_strings) . "___";
                    //push the string onto our array
                    //array_push($literal_strings,$literal);
                    $j++;
                }
                else if($c == "\\" && !$escaped)
                    $escaped = true;
                else
                    $escaped = false;
   
                $literal .= $c;
            }
        }
        if($inComment) $literal .= "\n";
        $clean .= "\n";
    }
    //explode the clean string into lines again
    $lines = explode("\n",$clean);
   
    //now process each line at a time
    for($i=0;$i<count($lines);$i++)
    {
        $line = $lines[$i];
   
        //remove comments
        $line = preg_replace("/\/\/(.*)/","",$line);
   
        //strip leading and trailing whitespace
        $line = trim($line);
   
        //remove all whitespace with a single space
        $line = preg_replace("/\s+/"," ",$line);
   
        //remove any whitespace that occurs after/before an operator
        $line = preg_replace("/\s*([!\}\{;,&=\|\-\+\*\/\)\(:])\s*/","\\1",$line);
   
        $lines[$i] = $line;
    }
   
    //implode the lines
    $sJS = implode("\n",$lines);
   
    //make sure there is a max of 1 \n after each line
    $sJS = preg_replace("/[\n]+/","\n",$sJS);
       
    //strip out line breaks that immediately follow a semi-colon
    $sJS = preg_replace("/;\n/",";",$sJS);
   
    //curly brackets aren't on their own
    $sJS = preg_replace("/[\n]*\{[\n]*/","{",$sJS);
    $sJS = preg_replace("/[\n]*\}[\n]*/","}\n",$sJS);
    //finally loop through and replace all the literal strings:
    for($i=0;$i<count($literal_strings);$i++)
        $sJS = str_replace("___".$i."___",$literal_strings[$i],$sJS);
   
    return $sJS;
  }

Tags: ,

Add to Memories
Tell a Friend
Нет в жизни счастья. Только хотел зарегистрироваться в БейсКампе как обнаружил занятную статью посвященную  тому почему не нужно там регистрироваться, вот полюбуйтесь: http://www.whybasecampsux.org/

Tags:

Add to Memories
Tell a Friend

Нашел замечательный ресурс, называется Remember The Milk  www.rememberthemilk.com - я восхищен качеством работы.
Сайт сделан целиком на аякс, и представляет собой что то вроде онлайнового органайзера. По моей стобальной шкале качества - сто баллов из ста!
Работает потрясающе быстро возможно из за того что один из разработчиков Omar Kilani - создатель библиотеки для работы с json - именно так я и наткнулся на этот ресурс - просто искал наиболее простой и быстрый способ работы с json данными.
Кроме того на сайте возможен уход в офлайн с использованием Google Gears еще одна новая возможность о которой я до сегодняшнего момента ничего не знал и даже не догадывался что вебприложения это умеют в принципе.
Потрясающе. 

Tags: ,

Add to Memories
Tell a Friend
Интересно настоящих качественно сделанных социальных сетей не бывает, или все качественное не такое популярное? или все популярное не качественное? Живой Журнал еще более менее ничего выглядит, вот Майспейс, тот вообще ни в какие рамки не лезет, но это не мешает ему быть самой популярной сетью...

Tags:

Add to Memories
Tell a Friend
Завел себе аккаунт в живом журнале. Интересное явление эти социальные сети. Они как то незаметно вошли в нашу жизнь как мобильные телефоны и интернет и изменили в корне все представление об общении. Останимся ли мы самими собой или станем муравьями запутавшимися в паутине? Время покажет.

Tags:
Current Location: на работе

profile
maxi_star
User: [info]maxi_star
Name: maxi_star
Website: My Website
calendar
Back October 2007
123456
78910111213
14151617181920
21222324252627
28293031
page summary
tags

Advertisement

Customize