16 октября 2011 г.

О чем может рассказать Ваш аккаунт в Gmail


Интересные заметки про сбор данных Гуглом. Т. е. то что недавно обнаружил у себя под боком.
Google, конечно же сделал правильно, что все свои сервисы прикрепляет к одному аккаунту, но.
В дебрях интерфеса gmail есть ссылка на "Google Личный кабинет" или "Google аккаунты"  ( ссылка https://www.google.com/dashboard/ ) , где можно узнать к каким сервисам гугла ВЫ подключены.

Пункты меню по пикантности данных
Почта, записи в блогах, Google Документы - пускай сохраняют (это нормально в личном кабинете).



Пункт "История веб-поиска"
По умолчанию сохраняет все запросы. На всякий случай отключил.



Пункт "Устройство Android"
Любопытный момент:

  • Определил устройство Android;
  • Сохраняет IMEI и время последний активности.

Так как я редко выхожу в инет с телефона и gps пользуюсь когда припрет, то ...

  1. В общем в тот день и в следующий я выходил в инет
  2. Определял свое местоположение с помощью GPS + подгружал карты (Яндекс.карты)

Пункт "Android Маркет"


То же отслеживает дату "последнего включения"

Вывод:
С точки зрения централизованного хранения google сделало все правильно. Но это только если к этим данным имеете доступ только ВЫ. Информация довольно таки-избыточна, так что не стоит подпускать третьи лица к своему аккаунту.

9 октября 2011 г.

Альтернатива тегу center или центрирование по горизонтали html элементов


В 2011 еще можно обнаружить случаи, когда приходится сталкиваться с применением древнего тега center. Примером такой встречи из повседневной работы может быть cms Bitrix, где тег center применяется довольно часто (да и другие древние теги, такие как font тоже).
Поэтому в этом посте хочу привести примеры, как можно перейти от использования тега center к использованию возможностей css.

Центрирование таблицы по горизонтали средствами css:
<table style=”margin: 0 auto;”>...</table>

Центрируем изображение по горизонтали:
<img src="fig1.jpg" style=”margin: 0 auto;”/>
Центрируем текст в выпадающем списке select
Работает только в FireFox и Opera!
html код:
<select>
	<option value="..." checked>...</option>
	<option value="...">...</option>
</select>
css код:
select option{
	text-align:center;
}
Выравнивание по центру Гиперссылки
Так к тегу по умолчанию установлено свойство display присвоено значение inline, то это свойство надо изменить на block:
<a href="#" style="text-align:center;display:block;">link</a>

Назначение шаблонов в Bitrix

Содержание поста довольно тривиально, по край ней мере для тех, кто достаточно долго работает с CMS Bitrix. Поэтому следует рассказать о причинах побудивших написать пост на такую скучную тему.
Осень 2011 года — компания 1C Bitrix анонсировала Bitrix 11.0 . Из пресс-релиза, как я понял, ничего, такого капитального не предвидится (в 10-й тоже ничего не было). Система прирастает, только раскрученными в IT/бизнес медиа фишками — облачными технологиями, поддержкой мобильных устройств, оставаясь по прежнему на уровне начала 2000-ных. Да система Bitrix построена на тех «практиках» которые уже редко где можно найти работающими, в этом можно убедится просмотрев исходные коды.
Интерфейс с помощью которого происходит назначения правил применения шаблонов в системе Битрикс — к сожалению, не удачный. Шаблоны применяются согласно правилам, которые не как не вытекают из дизайна интерфейса. Описанию по работы с ним мало. Официальная документация лаконична, как энциклопедическая справка.
Основные проблемы.
 Назначаются шаблоны различным ветвям структуры сайта, для тех кто не знает, в разделе «Редактирования сайта», который надо искать в Администрирование  → Настройки. Назначение шаблонов в CMS Битрикс реализовано довольно таки топорно. Во первых явно учитывается иерархия в виде порядка сортировки. Во вторых учитывается иерархия файловой системы.
К примеру имеется такой фрагмент файловой структуры и задаем шаблоны с помощью типа условия «для папки и файла» (о типах условиях так же будет написано далее).
/folder1
/sub_folder1
/sub_folder2
 Так если назначить какой либо шаблон для папки sub_folder1 c порядком сортировки 2, а /folder1 назначить другой шаблон иномер сортировки 1, то и у subfolder1 (да и subfolder2 и у всех остальных дочерних) будет тот же шаблон, что и у folder1 не смотря на то какой шаблон был им задан. Если порядок сортировки задать наоборот: sub_folder1 - 1, folder1 - 2. То тогда у каждой директории будут свои шаблоны.
Типы условия.
Одни из самых "ходовых" типов условий это:
  • для папки и файла 
  • выражение PHP 
Недостаток условия для "Папок и файлов" - это то что он задается для одной папки (и всех его дочерних директорий и файлов)/файла. И как следствие его придется задавать почти для каждой папки если получился сайт с "богатой" палитрой шаблонов. В помощь может пригодится тип условия «выражение PHP» Вариант с использованием выражения php:
preg_match("/\/yslygi_phis_licam\/(?:obmen_valyti|migom|denejnie_perevodi|bank_seif|priem_plateghei|internet_bank)\//i",$APPLICATION->GetCurDir())
Здесь уже можно использовать регулярные выражения. Почти как в кошерных Django или Ruby On Rails. [Вопрос про производительность такого решения лучше незадавать]
Таким образом, используя регулярные выражения, задаем правило назначения шаблона для адресов:
*/yslygi_phis_licam/obmen_valyti/*
*/yslygi_phis_licam/migom/*
*/yslygi_phis_licam/denejnie_perevodi/*
*/yslygi_phis_licam/bank_seif/*
*/yslygi_phis_licam/priem_plateghei/*
*/yslygi_phis_licam/internet_bank/*
И как следствие уменьшаем муки + повышаем производительность труда разработчика по сравнению с применением  типа условия «для папки и файла».


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

Перехват кликов на flash элементах при помощи java script


Иногда случается так что у тебя имеется flash баннер с «темной историей», т. е. не известно, кто и когда (зачем/почему?) его создал, но необходимо из него  сделать работающий баннер — чтобы при клике на него происходил переход в нужный раздел сайта.
Вариант как это делать, не обрабатывая сам flash баннер поместить под прозрачный элемент. Этот элемент может быть div элементом или gif картинкой 1 на 1 px.
Поэтому при помощи верстки необходимо разместить html объект по верх баннера,
и при помощи javascript прикрепить необходимые обработчики событий к этому объекту.

Html код:
<div class="flash-container">
<!-- Атрибут wmode="transparent" тега embed обязателен, иначе ничего не получится -->
	<embed  class="banner" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" src="http://www.tetrapolis.ru/flash/a7.swf" salign="top" autoplay="true" loop="true" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" wmode="transparent"></embed>
	<div class="flash-fon" id="click-field">
	</div>
</div>
CSS код:
/* styles for flash banners: */
/* Контейнер для flash и сам flash д.б. одного размера*/
embed.banner, .flash-container{
	width:1200px;
	height:165px;
}
.flash-container{
	/*border: 1px solid black;*/
	position:relative;
}
div.flash-fon{
	position:absolute;
	top:0;
	left:0;
	width:100%;
	height:100%;
	background:transparent;
	cursor:pointer;
}
/* :styles for flash banners */
Javascript код:
Javascript код:   
var setEvent=(function(){
if (window.addEventListener!=null){
	return function(obj,eventName,handler){
		obj.addEventListener(eventName,handler,false);
	}
}else{
	return function(obj,eventName,handler){
		obj.attachEvent("on"+eventName,handler);
	}
}
}());
setEvent(window,"load",function(){
	var clickField=document.getElementById("click-field");
	setEvent(clickField,"click",function(){
		location.href="http://tetrapolis.ru";
	});
});