суббота, 26 ноября 2011 г.

Flash Player умер? Но мы ведь нет

В последние дни в рядах флеш-разработчиков идет активное брожение. Разумеется это коснулось и меня. Что-ж, Adobe послала нам месседж, глупо его игнорировать. Для себя я сделал такой вывод: флеш плеер может умереть, может не умирать и активно развиваться еще долгие и долгие годы, но лично мне не хочется зависеть от каких-то там дядек из Adobe, которые могут одним осенним утром прикрыть свое детище и мне останется лишь выжимать из умирающей платфомы последние соки в последние 2-3 года ее агонии. Немного поразмыслив я вспомнил про Haxe. Побродив по интернетам я убедился что этот язык может дать мне то, чего я хочу. 

Почему:
  • Haxe это тот же ActionScript3 и еще даже лучше. Флеш-разработчику перейти на него не составляет особых проблем.
  • Кроссплатформенность. Многие сейчас пытаются изобрести “золотую пулю”, и конечно же у такого рода решений куча недостатков, в отличие от того, что вы можете получить используя для платформ их “родные” языки. Но, тем не менее, в использовании Haxe плюсов для меня больше — я могу быстро, на “родном” мне языке, используя знакомые мне инструменты создавать кроссплатформенные приложения. И это не так уж и медленно будет работать:gamehaxe.com/2011/06/16/multi-language-bench. Я думаю, что побыстрее чем AIR. И я еще не говорил о том что на одном и том же языке можно разрабатывать и клиент и сервер (php, node.js и neko).
  • Я никуда не ухожу с флеш платформы. Используя Haxe, я все еще остаюсь флеш-разработчиком и могу использовать весь свой накопленный опыт и базу кода. К тому же Haxe компилятор для флеша выдает реально более быстрый код чем от Adobe. Просто у меня расширяются возможности. Еще есть такая штука как www.haxenme.org которая позволяет использовать флешевые апи для разработки на куче платформ. И у них в showcase вполне неплохие примеры игр. Результаты компиляции флешеподобного кода из этого примера www.joshuagranick.com/blog/2011/09/21/nme-3-flash-c-and-now-html5 меня приятно порадовали. Я пишу практически один и тот же код что год и два назад, а получаю гораздо больше.


Все это звучит очень хорошо, но куда же без минусов:

  • IDE. Самым продвинутым вариантом пока остается FlashDevelop. Он динамично развивается и на нем можно писать серьезные приложения. На маке его реально запустить из Parallels Desktop, хотя это уже из области танцев с бубном. Плагин для FDT плавно перешел в бету в мае этого года, темпы его разработки пока не радуют. Intelij Idea — моя любимая IDE. Плагина нет, но есть новостиgithub.com/fkorotkov/haXe-plugin Очень верю что будет. Еще можно упомянуть проwww.eclihx.org/home, до него руки пока еще не дошли.
  • Flex. Что говорить — флекса тут нет. Тему UI фреймворков для Haxe я изучил мало. Вроде что-то есть, но далеко конечно не флекс. Так что придется пользоваться тем что есть. Ну или портировать флекс что ли в конце-то-концов.
  • Все это развивается силами энтузиастов. За Haxe пока нет такой силы как Adobe. Может это и к лучшему. Но и колесящих по миру евангелистов, и кучи книг с обширной документацией и примерами тут тоже пока не видать.


Собственно зачем я это все написал. Сила Haxe в его комьюнити. Чем больше людей будет его использовать тем быстрее он будет развиваться. И мне кажется что за такими вещами какwww.haxenme.org действительно есть перспектива. Следующий свой проект я буду делать на Haxe. Ну а вы решайте сами.

Ссылки:

Открытие файла на диске через сайт


Постановка задачи


Был разработан сайт-надстройка над файлохранилищем. В качестве дополнения к данному сайту я разрабатывал клиент под windows. Данный клиент должен был синхронизировать файлы на диске с репозиторием.

Одной из фишек сайта было моментальное открытие файла с диска ассоциированным приложением. О реализации данной фишки и пойдет речь в данной статье.


Решение задачи


Решением в лоб является любая реализация технологии COMET, но все они чреваты трудностями и затратами на сервер. Вдохновением для моего решение была одна неприятная особенность работы скайпа: если его установить до IIS, то скайп начинал слушать 80-ый порт. Соответственно схема работы получилось очень простой:
  • пользователь нажимает на кнопку на сайте
  • браузер делает http запрос к localhost
  • клиент, слушающий соответствующий порт, открывает файл


В клиенте добавляем любую реализацию http сервера и вешаем слушателя на какой-нибудь порт (в нашем случае 7000).

На странице добавляем небольшую функцию:

function doSomethingOnDisk(){
$.getJSON(
                "http://127.0.0.1:7000?jsoncallback=?",
                { command: commandname [, optional params] },
                function (data) {
                   //do something
                }
            );
}

Нужно быть внимательным, т.к. в данном случае происходит кроссдоменный ajax запрос. Поэтому не забываем про «jsoncallback=?» и обернуть ответ в клиенте в соответствующую обертку (придет в параметре jsoncallback).

Плюсы

  • Просто
  • Быстро
  • Никакого лишнего трафика

Минусы

  • Порт может быть занят или закрыт
  • Если есть брандмауер, то windows попросит разрешения для приложения и пользователь может отказать


П.С. как не трудно заметить, данная реализация позволяет давать с сайта любые команды клиенту.

jQuery.getJSON
http server для C#

понедельник, 21 ноября 2011 г.

Получение S.M.A.R.T. параметров жестких дисков по сети

Для считывания S.M.A.R.T. параметров жестких дисков локального компьютера существует множество программ. Описывать их я не буду, потому что ни одна из них не позволяет считать S.M.A.R.T. удаленно по сети, имея права администратора домена. Поиск по просторам интернета ничего путного и бесплатного мне не дал, поэтому мне пришлось подумать как эту задачу решить самому. 

Недавно мне на глаза попалась небольшая консольная программка smartctl из комплекта smartmontools. Для того, чтобы запустить её на удаленном компьютере понадобится программа psexec, входящая в пакетPsTools от SysInternals.
Для работы я написал 2 скрипта: 
net_smart.bat:

@echo on
del netlist.txt
net view >> netlist.txt
for /F "eol=K skip=3 tokens=1" %%i in (netlist.txt) do (
for %%j in (smartctl.*) do copy %%j %%i\admin$
psexec -s %%i smartctl.bat )


и smartctl.bat:

@Echo on
Set $DST=\\server\share\smart
md "%$DST%\%COMPUTERNAME%"
del smartctl.txt
smartctl.exe --scan >> smartctl.txt
for /F "tokens=1" %%i in (smartctl.txt) do smartctl.exe -a %%i >> "%$DST%\%COMPUTERNAME%\%DATE:~-4%-%DATE:~3,2%-%DATE:~0,2%_%TIME:~0,2%-%TIME:~3,2%.txt"


Файл net_smart.bat сканирует сеть, сохраняет список компьютеров в файл netlist.txt (предварительно его очистив) и затем поочередно на каждый компьютер копирует файлы smartctl.bat и smartctl.exe и при помощи программы psexec. Там, удаленно, запускает файл smartctl.bat, который считывает количество и имена установленных жестких дисков в smartctl.txt, затем последовательно считывается S.M.A.R.T. c каждого установленного в системе жесткого диска и складывает в папку в виде текстовых файлов, указанную в строке: 
Set $DST=\\server\share\smart
файла smartctl.bat.
Хочу обратить внимание на то, что в строке 
for /F "eol=K skip=3 tokens=1" %%i in (netlist.txt) do (
файла net_smart.bat символ К в параметре eol=K русский и должен быть в ДОС кодировке.

Flex HelloWorld для Android на Adobe AIR за 5 минут

В сети ведется активное обсуждение, того что компания Adobe прекратила разработку Flash-плеера для мобильных устройств, в связи с этим хочу поделиться с вами, как используя технологию Adobe AIR написать HelloWorld, который запустится на Android смартфоне/планшете за 5 минут.

Процесс :


Для написания нам потребуется :

  • Flash Builder 4.5 (4.5.1 для iOS систем)
  • Поверхностное знание ActionScript 3.0 и FLEX
  • Телефон/планшет с Andoid

Для проверки возможностей AIR на мобильных платформах, нас интересуют следующие функции приложения :

  • Проигрывание FLV видео
  • Воспроизведение MP3 файла
  • Отображение нескольких картинок

Разработка

Создадим проект Flex Mobile Project
Выбираем мобильные платформы и основной класс приложения:
  1. Blank spark.Application (базовой контейнер без доп.элементов)
  2. View-Based Application spark.ViewNavigatorApplication (расширенный контейнер без доп.элементов)
  3. Tabbed Application spark.TabbedViewNavigatorApplication (расширенный контейнер с табами)
О различиях контейнеров, рекомендую почитать самим. В нашем случае я остановился на View-Based Application, он даст достаточно функциональности для написания без излишеств.

Во вкладке Permissions , в случае с Android (iOS будет каждый раз запрашивать или предложит сохранить настройку) выбираем необходимый набор функций для доступа к телефону.

Приступим к написанию кода :

Для начала создадим еще несколько компонентов:
videoView, audioView, pictureView
Так-же скопируем несколько файлов для теста:
/assets/1.flv, /assets/1.mp3, /assets/1.png
Сам код :

mobileHelloWorldHomeView.mxml

<?xml version="1.0" encoding="utf-8"?>
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
  xmlns:s="library://ns.adobe.com/flex/spark" title="Hello World">
 <fx:Declarations>
  <!-- Place non-visual elements (e.g., services, value objects) here -->
 </fx:Declarations>
 <s:Button id="videoButton" label="Video" click="navigator.pushView(videoView)" x="{(this.width - videoButton.width) / 2}" y="{videoButton.height}"/>
 <s:Button id="soundButton" label="Sound" click="navigator.pushView(soundView)" x="{(this.width - soundButton.width) / 2}" y="{videoButton.y + videoButton.height + 2}"/>
 <s:Button id="pictureButton" label="Picture" click="navigator.pushView(pictureView)" x="{(this.width - pictureButton.width) / 2}" y="{soundButton.y + soundButton.height + 2}"/>
 <s:Button id="exitButton" label="Exit" click="NativeApplication.nativeApplication.exit()" x="{(this.width - exitButton.width) / 2}" y="{pictureButton.y + pictureButton.height + 2}"/>
</s:View>

videoView.mxml

<?xml version="1.0" encoding="utf-8"?>
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
  xmlns:s="library://ns.adobe.com/flex/spark" title="Video"
  creationComplete="playVideo(event)" >
 <fx:Script>
  <![CDATA[
   import mx.core.UIComponent;
   
   [Embed(source="/assets/1.flv",mimeType="application/octet-stream")]
   private var VideoClass : Class;
   
   private var netConnection:NetConnection;
   private var netStream:NetStream;

   import mx.events.FlexEvent;
   private function playVideo(e:FlexEvent):void
   {
    netConnection = new NetConnection();
    netConnection.connect(null);
    
    netStream = new NetStream(netConnection);
    netStream.client = {};
    netStream.play(null);
    
    var videoObject:Video = new Video(videoCt.width , videoCt.height);
    videoObject.attachNetStream(netStream);   
    
    var ui:UIComponent = new UIComponent();
    ui.addChild(videoObject);
    ui.width = videoObject.width;
    ui.height = videoObject.height;

    videoCt.addElement(ui);
    
    var videoBytes:ByteArray = new VideoClass() as ByteArray;
    netStream.appendBytes(videoBytes);
   }
   private function stopVideo(e:Event = null):void
   {
    netStream.close();
    netConnection.close();    
    videoCt.removeAllElements();   
    navigator.pushView(mobileHelloWorldHomeView);
   }
  ]]>
 </fx:Script>
 <s:Group id="videoCt" x="{(this.width - videoCt.width) / 2}" y="{backButton.height}"/>
 <s:Button id="backButton" label="Back" click="stopVideo(event)" x="{(this.width - backButton.width)/2}"/>
</s:View>

soundView.mxml

<?xml version="1.0" encoding="utf-8"?>
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
  xmlns:s="library://ns.adobe.com/flex/spark" title="Sound"
  creationComplete="playAudio(event)" >
 <fx:Script>
  <![CDATA[
   import mx.events.FlexEvent;
   
   [Embed(source="/assets/1.mp3")]
   private var AudioClass : Class;
   
   private var soundChannel:SoundChannel;
   
   private function playAudio(e:FlexEvent):void
   {
    var sound:Sound = new AudioClass() as Sound;
    soundChannel = sound.play();
   }
   private function stopAudio(e:Event = null):void
   { 
    soundChannel.stop();
    navigator.pushView(mobileHelloWorldHomeView);
   }
  ]]>
 </fx:Script>
 <s:Button id="backButton" label="Back" click="stopAudio(event)" x="{(this.width - backButton.width)/2}"/>
</s:View>


pictureView.mxml

<?xml version="1.0" encoding="utf-8"?>
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
  xmlns:s="library://ns.adobe.com/flex/spark" title="Picture">
<s:Image id="picture" x="{(this.width - picture.width) / 2}" y="{backButton.height}" source="@Embed(source='/assets/1.png')" />
<s:Button id="backButton" label="Back" click="navigator.pushView(mobileHelloWorldHomeView)" x="{(this.width - backButton.width)/2}"/>
</s:View>


После нам необходимо добавить сертификат:
Заходим в настройки проекта Properties->Flex Build Packing->Google Andriod

Для того, чтобы создать его нажмем Create

Этот сертификат позволит нам вести debug, но не выкладывать приложение в Andriod.Market (для этого можно искать информацию в другой статье)

Запуск :

У нас есть два варианта запустить приложение Properties->Run/Debug Settings->New->Mobile Application:
  1. На эмуляторе Launch Method: On desktop
  2. На устройстве Launch Method: On device (для этого подключите устройство и включите в настройках usb-debugging)
Additions :
  1. На большинстве Android устройствах вам потребуется установить Adobe AIR для запуска
  2. Для создания приложения для iOS устройств, вам потребуется оплаченный аккаунт Apple Developer(99$/year) и несколько более сложных операций по созданию сертификата.

понедельник, 14 ноября 2011 г.

Nvidia Tegra

Сейчас непросто уследить за текущими трендами мира в сфере техники. Компьютеры, телефоны, планшеты… Да, в общем-то, любая техника. Казалось бы, что все уже придумано и создано, но компании все еще стараются удивить.


Сегодня вы покупаете топовую модель какого-нибудь товара, а уже через полгода производители смотрят на вас, как на лохов — «Серьезно?.. Вы это купили?..».
К примеру, взять планшеты. Я загорелся идеей взять себе планшет, попытался выбрать, но… Сейчас большинство брендовых андроид-планшетов работают на базе процессора NVIDIA Tegra 2. 

Из статьи про Nvidia Tegra (с примерным роад-мапом разработки планшетных/мобильных процессоров), можно составить следующий список (без глубоких технических подробностей):

Tegra 3 (Kal-El) series
  • Выпуск — конец 2011 года, начало 2012
  • четырех-ядерный процессор
  • 12 ядер для GPU
  • Примерно в 5 раз быстрее, чем Tegra 2

Tegra (Wayne) series
  • Выпуск — 2012 год
  • четырех- и восьми-ядерный процессор
  • 24 ядра (4-ядерный процессор) и 32-64 ядра (8-ядерный процессор) для GPU
  • Примерно в 10 раз быстрее, чем Tegra 2

Tegra (Grey) series
  • Выпуск — 2012 год
  • Integrated Icera 3G/4G baseband

Tegra (Logan) series
  • Выпуск — 2013 год
  • Примерно в 50 раз быстрее, чем Tegra 2

Tegra (Stark) series
  • Выпуск — 2014 год
  • Примерно в 75 раз быстрее, чем Tegra 2

И это только за 2 года! Через 2 года процессор планшета будет в 75 раз быстрее, чем сейчас!

Выводы


Да, для компании — это отлично, когда идет бурный процесс развития, инноваций, выпуск продукции. Но для рынка — это перенасыщение товарами, период активных продаж которых не превышает и полугода. Ведь зачем покупать заведомо устаревшую модель, когда рядом на полке магазина стоит абсолютно новая (на сегодняшний день) модель?

Это одна сторона, а вторая — это поддержка производителями своей продукции. Выпуск ПО (прошивок) для своих устройств компания делает в среднем год-полтора после выпуска продукта. Поддержка некоторых устройств вообще заканчивается еще до конца гарантийного обслуживания устройства (в большей мере это относится к мобильным телефонам). А дальше — снова меняй свой девайс…

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

Нет предела совершенству. Посмотрим, что принесет завтрашний день.

воскресенье, 13 ноября 2011 г.

Разгон Firefox

Как часто пользователи жалуются на то, что их любимый firefox жутко тормозит. Конечно, некоторая доля вины в этом лежит на разработчиках. Однако не стоит наивно полагать, что сами пользователи здесь непричем. Давайте попробуем разобраться как ускорить работу лисы. 

1) Не стоит думать, что все ресурсы потребляет mozilla. Ведь в браузере есть также куча плагинов и расширений. Поэтому огнелис очень долго запускается и «компьютер начинает тормозить». Попробуем это исправить. Открываем браузер и жмем на рыжую кнопку «firefox» в верхнем углу и переходим в дополнения – расширения (или «Инструменты – Дополнения»). Те расширения, которыми вы совсем не пользуетесь лучше всего удалить. А теми, что пользуетесь редко лучше всего отключить на время. 


Далее переходим к плагинам. Здесь обычно есть куча бесполезных надстроек, установленных различными приложениями. Практически все они бесполезны, кроме Adobe Acrobat, Java™ Platform и Shockwave flash. Не факт, что все эти плагины у вас есть. Adobe Acrobat нужен для того, чтобы просматривать pdf-файлы прямо через браузер. Без Java™ Platform вы не сможете просматривать некоторые сайты или они будут отображаться некорректно. Shockwave flash необходим для просмотра различных анимированных баннеров. Или же с его помощью можно играть в разнообразные игры. Остальные же надстройки имеют не столь большое значение. Ознакомиться с другими плагинами можно здесь http://aleksius.com/articles-2/miscellaneous/26-plug-ins-for-mozilla-firefox 

Теперь идем в «Настройки» и открываем вкладку «Общие» (или Инструменты – Настройки – Дополнительные – Общие). Здесь не мешало бы снять галочку с «отправлять данные о производительности» и не проверять, является ли firefox браузером по умолчанию. Далее идем в «сеть» и отключаем автоматическое управление кэшом. Под кэш можно использовать, например, 1 мегабайт. Правда это изменение не сильно повлияет на скорость запуска лисы, зато избавит нас от многочисленных подвисаний. Теперь идем в обновления и снимаем галочки со всех автоматических проверок: firefox, дополнения, плагины для поисковых систем. Все обновления всегда можно проверить вручную (справка – о firefox). Причем будет проверяться не только браузер, но и все расширения. С ускоренным запуском все. Перезапускаем браузер и переходим к следующему этапу.

2) Сейчас мы будем ускорять загрузку веб-страниц. В интернете есть множество статей по этому поводу, обещающих значительное повышение скорости работы браузера. Зачастую такие обещания не выполняются, и все сводится к тому, что с лисы становится невозможно попасть на многие сайты. Однако мы будем действовать аккуратно, правда и сильно высокого прироста я не обещаю. Пишем в адресную строку about:config, жмем enter и обещаем огнелису, что будем осторожны. Перед нами предстает достаточно большой список настроек и строка фильтр сверху. Прописываем в фильтре network.http.pipelining и устанавливаем ему значение true. Далее находим network.http.proxy.pipelining и также ставим значение true. Эти две команды позволяют делать мозиле несколько запросов одновременно, не дожидаясь ответа сервера. Сразу же возникает вопрос: почему разработчики не сделали такие настройки по умолчанию? Дело в том, что раньше у многих была весьма низкая скорость подключения к интернету (1999-2003), и сервера были слабыми, не поддерживали большое количество запросов (до 2000). Однако сейчас это неактуально (разрабы лисы просто перестраховываются). В принципе эти 2 изменения, описанные выше, ключевые. К ним нужно еще кое-что добавить. Пишем network.http.pipelining.maxrequests и ставим ему значение 16 (присваивать можно от 1 до 32). Эта настройка показывает максимальное количество запросов, которое может быть при соединении. Не стоит думать, что чем больше запросов, тем выше скорость, т.к, например, многие сайты значение 32 вообще не поддерживают. На мой взгляд этих изменений достаточно. Перезапускаем лису и переходим к следующему этапу.

3) Осталось совсем немного до конца оптимизации. А точнее осталось подправить 2 небольших изъяна. Пишем снова about:config и обещаем лисе соблюдать осторожность. Сейчас нужно будет создать свою настройку. Для этого жмем правую кнопку мыши и из выпадающего списка выбираем «создать – логическое». В названии пишем config.trim_on_minimize, затем ок и выбираем значение true. Этой настройкой мы снизили потребление оперативки, когда браузер свернут. Далее пишем в фильтре (ничего не создаем!) browser.sessionhistory.max_total_viewers и ставим значение 0. Эта настройка отвечает за количество оперативной памяти, выделенной за сохранение уже посещенных страниц. Как вы понимаете, это избавит нас от повторной загрузки одной и той же страницы. В теории это так. Но на практике оказалось, что и без этой настройке все достаточно быстро работает. И в тоже время потребление оперативной памяти снижается.

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

Привлечение обратных ссылок

Хотите узнать способ получения множества высококачественных входящих ссылок?

Требуется всего лишь создавать контент, который посетители сочтут ценным и будут на него ссылаться.
Бредовая мысль правда? Ведь все твердят что нужно создавать уникальный контент.
Это заявление или, лучше сказать, утверждение итак очевидно и звучит немного наивно. Но в тоже время очень много вебмастеров прикладывают слишком много усилий, а также времени, разрабатывая свои схемы по обходу поисковых систем и попытки ввести в заблуждение их же. Тратят время, в то время как они (вебмастера) могли бы получить невероятный результат с куда меньшими затратами сил и ресурсов.

Выбираем бесплатный сервис для блога

Каждый человек, который решает завести свой блог в интернете сталкивается с вопросом: какой блог-сервис использовать? «Продвинутые» вебмастеры и сеошники, конечно, порекомендуют зарегистрировать собственный домен, оплатить хостинг, заказать уникальный дизайн и движок. Есть рациональное зерно и в этом подходе, но есть и минусы, о которых я расскажу далее.

Преимущества бесплатных сервисов

Начнем с того, что бесплатные сервисы экономят уйму времени. От момента решения создать блог до первого поста в Вашем новеньком блоге Вас отделяет всего несколько минут, необходимых для регистрации. В то время, как регистрация и оплата домена, хостинга, ожидание пока обновятся DNS — занимает не менее суток.

Самое главное, что дают Вам бесплатные блог-сервисы — это аудитория. Исследования показали, что многие люди, которые пользуются социальными сетями, 90% времени проводят именно внутри этих социальных сетей и блогов, просматривая и доверяя только тем страницам, которые расположены внутри привычной для них среды. Они пользуются внутренним поиском сервиса, который выдает информацию только на основании проиндексированных документов, расположенных внутри данного сервиса или социальной сети.

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

Находясь внутри бесплатного сервиса блогов Вы сможете оставлять комментарии в тематических блогах, что даст Вам хороший прирост траста в поисковых системах, а возможно даже ТИЦ и ПР. Для этих целей лучше всего подходит сервис livejournal, т.к. его комментарии лучше всего индексируются поисковыми системами Яндекс и гугл. Однако, некоторые пользователи, как, к примеру, Артемий Лебедев, закрывают индексацию комментариев поисковиками, таким образом вес странички на Ваш блог, скорее всего, не передастся. Однако, по моим наблюдениям, гугл прибавляет траст сайту даже если ссылка на него находится внутри тега .

Таким образом, с помощью комментариев у меня получилось сделать PR3 своему блогу на livejournal без покупки ссылок. Так же, с помощью комментариев мой канал на YOUTUBE получил PR4, у меня так же есть знакомые, которым удавалось «раскрутить» свой канал на YOUTUBE до PR5 и PR6.

Какой сервис выбрать?

Однозначный ответ дать крайне сложно. Прежде всего нужно задаться вопросом — для какой цели создается блог? Если Вам нужно по-скорее вывести блог в ТОП поисковых систем, то, пожалуй, лучшим сервисом для Вас будет livejournal. Хотя, если честно, данный сервис обладает целым рядом недостатков: абсолютно дурацкий и не понятный интерфейс, скудные возможности бесплатного аккаунта, частые DDOS атаки.

Если Вы планируете продвигать свой ресурс в рунете, то Вам подойдет сервис я.ру. Удобная и беспроблемная регистрация, интуитивный и понятный интерфейс. Мгновенная индексация Ваших постов поисковой системой яндекс, правильный подсчет постоянных читателей (в отличии от ЖЖ), более короткий и красивый домен. К недостаткам можно отнести разве что меньшую аудиторию, относительно ЖЖ.

Бесплатный сервис блогспот от гугла. Если Вас интересует заработок на блоге, то это один из наилучших вариантов. Мгновенная индексация гуглом, беспроблемное интегрирование с гугл AdSense. Опять же недостаток в том, что аудитория значительно меньше, чем у ЖЖ, но это дело поправимое!

Как быстро повысить CTR в Google AdWords?

Как повысить СTR контекстной рекламы? Если задать этот вопрос, например, на семинаре по интернет-маркетингу, Вы услышите примерно следующее: «Попытайтесь понять, кто ваш покупатель, что ему нужно, исходя из этого, подберите ключевые слова и составьте рекламные объявления». Это, безусловно, правильно! Но системы контекстной рекламы имеют лазейки и технические тонкости, позволяющие быстро поднять СTR. Но не так много рекламодателей используют их.