четвер, 12 лютого 2009 р.

Ajax - полезные ссылки

В процессе работы с Ajax накопилось некоторое количество полезных ссылок:

http://visualjquery.com/ - документация по JQuery в удобном виде.

http://getfirebug.com/ - помощник для отладки скриптов в firefox.

http://www.stilbuero.de/jquery/tabs/#fragment-27 - плагины для создания табов.
http://www.rsdn.ru/article/inet/jQuery.xml - Использование jQuery на рус. яз.
http://interface.eyecon.ro/demos/?page=demos - примеры различных эффектов.
http://code.google.com/p/gwt-ext/ - открытая библиотека различных эффектов.

http://www.ibm.com/developerworks/ru/library/j-ajax4/index.html?ca=drs-ru - статья Работа с Google Web Toolkit.
http://www.ajaxplanet.ru/google-web-toolkit-manual/ - не большое руководство по использованию Google Web Toolkit совместно с PHP.

http://www.miniajax.com/ - Ссылки с большим количеством разных Ajax - библиотек.

http://fancy.klade.lv/ - FancBox - библиотека для вывода больших изображений в Ajax-стиле.
http://ajaxian.com/archives/facebook-style-input-box - Мощные поля в Ajax-стиле. Так же, то сайт с огромным количеством библиотек на Ajax.

Орфография на интернет-страницах

Т.к. вопрос достаточно часто встречается, решил поместить его на блоге.
Взято из сайта webscript.ru: http://webscript.ru/stories/01/06/22/4814617

Hostpro - провайдер с лимитами, не дающими нормально работать сайтам

Вот в очередной раз столкнулся с тем, что за красивой рекламой прячется плохая поддержка и высокие риски.

Так, например, столкнулся с таким провайдером, как Hostpro. Данный провайдер в рекламе пишет о не больших стоимостях хостинга 3-5$/мес за 100Мб дискового пространства.
Но, как оказалось, не всё так просто...

Для одного заказчика, мне пришлось воспользоваться услугами данной компании.
Записал маленький скрипт - на несколько байт, который просто обращается к серверу и выводит картинку.
Всё работало некоторое время нормально. Когда, вдруг в один прекрасный момент домен полностью отключили.
Как оказалось в процессе исследования ситуации отключили из-за того, что "скрипт сильно нагружает сервер". 5% в кратко-временном времени. И, что они отключают скрипты, если они потребляют более 5% процессорного времени или 256Кб памяти...
Такую нагрузку может создать любой скрипт. И тем более, любой более или менее посещаемый сайт....

Т.е. получается любой мало-мальски посещаемый сайт может быть отключен без предупреждения!!!

Это не правильно!
Т.к.:
1. Ведь вместо 100 Мб дискового пространства мой скрипт использует всего несколько кб. Т.е. не используется по крайней мере 99,9% дискового пространства! А дисковое пространство - это ведь тоже деньги.
2. Я не использую почту. А почта ведь тоже создаёт значительную нагрузку!
3. Расчёты хост-про не правильны. Т.к. 5%, на которые они показывают - это 5% одного виртуального процессора. Т.е. если у Вас 2 процессора у которых 4 ядра, то получится 8 виртуальных процессоров. И 5% - это 5% нагрузки на виртуальный процессор, а не на процессор в целом и тем более не сервер. Т.е. по сути моя нагрузка в этом случае - это 5/8 = 0,625% от всего сервера. Что нужно признать ну очень мизерная цифра.
4. Всесто того, чтоб бороться со своими клиентами, лучше бы оптимизировали свою систему.
У них до сих пор используется 1 уровневая система веб-сервера. А это очень не эффективно! Давно пора было переделать на 2-х уровневую систему веб-сервера nginx-apache!!!

Словом, очень не рекомендую кому-либо работать с Hostpro. Т.к. "скупой платит дважды", а с Hostpro Вы заплатите ещё больше...

Рекомендации по разработке дизайна

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

1. Каждый блок - законченная смысловая структура. Т.е. теги в ограничивающие блок должны начинаться в блоке и в нём заканчиваться. Ни в коем случае, теги, которые относятся к какому-то из блоков не должны находиться в других блоках.


2. Все изображения должны находиться в отдельной папке. Папка должна называться images. Ни в коем случае, не i или ещё какое-то одно-буквенное название...

3. Все пути к файлам должны быть относительными.

4. Логотип - чаще всего является ссылкой на начло сайта. Т.е. ссылкой на '/'
... Логотип...

5. Все стили - в отдельном файле стилей, который называется styles.css или style.css.

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

7. Лучше использовать div, а не таблицы для расположения блоков. Т.к. div обладает большей свободой, чем таблицы.

8. Название стилей должно быть осмысленным. Название полей, форм и т.п. тоже осмысленные.

9. Не забывайте заключать формы в тег для форм - form.

10. Кнопки должны быть кнопками, а не ссылками.

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

h1, h2, h3, h4, h5, h6, body, a, a:hover и т.п.


12. В стилях используйте комментарии.

13. Теги, закрывающие должны быть под тегами открывающими. Форматируйте корреткно текст.

14. Если грузится для стиля фоновое изображение для стиля, то вначале грузите простой фон, а потом, следующим захом - стиль с изображением.

15. Используйте по-максимуму стили по-умолчанию.
Например, если идёт заголовок страницы, используйте тег

, а не указывайте отдельный div или класс для ячейки.

16. Форматируйте текст в стилях.
Не пишите так:
#knopka { background:url(/user/templates/alerta/images/fonsubmit.gif); background-repeat:repeat-x; border-color:#0f1324; border:none; color:#fff; font-size:11px; font-family:arial, verdana, sans-serif; font-weight:bold; text-align:center; padding-bottom:5px; padding-left: 6px; padding-right: 6px; padding-top:4px; height:23px; margin-top:1px;}

Лучше пишите так:
#knopka {
background: url(/user/templates/alerta/images/fonsubmit.gif);
background-repeat:repeat-x;
border-color:#0f1324;
border:none;
color:#fff;

font-size:11px;
font-family:arial, verdana, sans-serif;
font-weight:bold;
text-align:center;

padding-bottom:5px;
padding-left: 6px;
padding-right: 6px;
padding-top:4px;

height:23px;
margin-top:1px;
}

Т.е. каждый отдельный тег - в отдельной строке и с некоторым отступом. При завершении смысловой группы можно отступать строчку.

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

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

Пример:
#menu a{ text-decoration: none; color:#1c144d;}
#menu2 a:hover{color:#d8354a;}
#menu1 a:hover{color:#d8354a;}
Это не правильно. Т.к. menu 3-х уровневое, а первый уровень меню - без индекса.
Более правильно:
#menu1 a{ text-decoration: none; color:#1c144d;}
#menu3 a:hover{color:#d8354a;}
#menu2 a:hover{color:#d8354a;}

19. Всегда проверяйте дизайн на нескольких основных бразурах: Internet Explorer 6, Opera 9 и выше, FireFox 3, Safary.

20. Не применяйте не стандартные шрифты. Тестируйте на машинах с минимально-установленными компонентами. Так, например, шрифт Arial Narrow не существует, если не установлен MsOffice. Поэтому, не рекомендуется его использовать.

21. Всегда устанавливайте цвет фона в Body, т.к. на некоторых браузерах можно указывать цвет фона для body по умолчанию. Поэтому, если Вы не укажете фон, будет срабатывать цвент по умолчанию, а он не всегда такой, как нужно для дизайна...
Так же не забывайте указывать цвет посещённых ссылок. Т.к. стили для них тоже указываются в браузерах.

22. Ссылки на другие сайты должны открываться в новом окне.
Например:
RS™
Это не правильно, т.к. открывается в том же окне, где находится сайт.

Правильно писать так:
RS™

Мировые новости на нашей новой системе - Корпорация 2

У нас на сайте заработали мировые новости на новой системе сбора новостей, разработанной на системе Корпорация 2.
Посмотреть новый вариант мировых новостей можно по адресу:
http://corp2.net/news/allnews/

Концепция локализации в системе Корпорация 2

В Корпорации 2 CMS созданы компоненты для локализации приложения.
Компонента называется translate.

translate - компонента реализующая непосредственно перевод.
lang_bar - компонента для вывода перечня языков в котором можно переключиться.

В основном классе Корпорации внесены 3 свойства, связанных с переводом (локализацией):

public $lang='ru'; // Текущий язык публичной части
public $lang_adm='ru'; // Текущий язык админ-части
public $langs=array('ru','ua', 'en'); // Доступные языки

Соответственно, данные переменные можно указывать в основном конфигурационном файле: config_main.php

Для каждой компоненты есть папка lang в ней сохраняются файлы с массивами переводов.
Например:
/lang/ua/index.php - файл перевода для украинского языка.
Его содержимое:
defined( '_VALID_CORP' ) or die( 'Прямой вызов запрещён' );

$this->msg=array(
array('login_label', 'Логін'),
array('password_label' , 'Пароль'),
array('reg_label' , 'Реєстрація'),
array('forg_label' , 'Згадати пароль'),
array('hello_label' , 'Ласкаво просимо'),
array('exit_btn' , 'Вихід')

);

В компоненте, в которой реализовывается перевод создаётся класс перевода:
function CMain()
{
$GLOBALS["c"]->ins_comp_file("translate/main_class.php");
$this->trans=new translate($application);
$this->trans->get_msg('auth');
}

В шаблоне, используются вместо названий латинское обозначение выражения, например:
// Шаблон формы авторизации
$GLOBALS["myauth"]->auth_form='





















<%login_label%>:






<%password_label%>:





<%reg_label%> | <%forg_label%>





Перед тем, как вывести информацию на экран, переводим её:
echo $this->trans->tr($this->auth_form);

На данный момент, пример применения перевода можно просмотреть в компоненте авторизации auth.

Импорт новостей через RSS в системе Корпорация 2 CMS

В системе Корпорация создано несколько новых компонент:

rss_grabber - грабитель RSS-новостей.
pages - компонента для смены страниц.

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

Пример использования компоненты импорта новостей, вывода списка новостей и прокрутки страниц Вы можете просмотреть на тестовом сайте:
http://image.corp2.net/news/allnews/

Проблема вставки кавычек в insert

В украинском языке часто в качестве апострофа вставляют одинарную кавычку.
Данный символ используется в SQL-запросах, как результат - не верное срабатывание SQL-запросов. Для того, чтоб SQL-запрос корректно воспринимался необходимо вместо 1 кавычки ставить 2 одинарных кавычки. В этом случае, в базу данных будет записана корректно 1 кавычка.

В Корпорации 2, чтобы не было конфликта с кавычками данная ситуация обрабатывается в командах кодирования/декодирования информации.
Таким образом, получается:
$GLOBALS["c"]->ec('Текст') - кодирует из кодировки сайта в кодировку базы данных, а так же заменяет одинарные кавычки на двойные, чтоб корректно срабатывал SQL, если есть одинарные кавычки в тексте.
$GLOBALS["c"]->dc('Текст') - декодирует из кодировки сайта в кодировку базы данных, а так же заменяет одинарные кавычки на двойные, чтоб корректно срабатывал PHP и Java-скрипт, если есть одинарные кавычки в тексте.

Так же сделаны 2 ф-ции, которые просто кодируют и декодируют информацию, но не заменяют кавычки. Эти функции пишутся так:
$GLOBALS["c"]->ec_simple('Текст') - кодирует из кодировки сайта в кодировку базы данных.
$GLOBALS["c"]->dc_simple('Текст') - декодирует из кодировки сайта в кодировку базы данных.

Компоненты в системе Корпорация 2 CMS

Система Корпорация 2 быстро развивается. Мы уже разработали несколько десятков компонент. На данный момент в системе уже есть:

КОМПОНЕНТЫ РАЗНОГО НАЗНАЧЕНИЯ:
topmenu - вывод меню.
rewrite - ЧПУ, вывод заголовков. Компонента для переписывания выводимого контента.
pathway - компонент "хлебная крошка"
search - компонента поиска информации.
tiptop - советы дня.
inc_region - Включаемая область.
map - карта сайта.

РЕГИСТРАЦИЯ И АВТОРИЗАЦИЯ:
auth - авторизация.
reg_user - Регистрация пользователя.
forg_passwd - Функция "вспомнить пароль".

КАТАЛОГ ТОВАРОВ (ИНТЕРНЕТ-МАГАЗИН):
catalog_tov_dataset - класс SQL-запросов к базе данных для работы с каталогом товаров и товарами.
catalog_tov - каталог товаров (интернет-магазин).
group_tov - выводит группы товаров.
group_tov_map - карта групп товаров.
spis_tov - компонента, выводящая список товаров.
tov_detile - товары детально.
scroll_tov - полоса прокрутки товаров.
map_tov - компонента для вывода карты товаров. Работает в компоненте map.
gtov_menu - Меню из групп товаров (часто делается левым меню).
basket - Оформление заказа (корзина).
basket_informer - маленькая компонента-информер. Оповещает о количестве товаров в корзине, а так же содержит основной класс корзины.


АДМИНИСТРАТИВНЫЕ:
page_editors - кнопки для редактирования статической страницы.
fckeditor - редактор HTML.
page_props - свойства страницы.
edit_menu - редактор меню.

Основные принципы системы Корпорация 2:
1. Простота и лаконичность. Все компоненты просты в использовании и вызов их чаще всего занимает всего 1 строчку.
2. Модульность. Каждая компонента реашает одну маленькую задачу. Но, делает этот очень хорошо.
3. Надёжность и универсальность. За счёт того, что компоненты не велики по размеру и просты, они находят множество применений в других компонентах и разных проектах. И из-за этого хорошо отлаживаются, проверяются.

Сохранение текстовой информации в Корпорации 2

Часто приходится сохранять текстовую информацию в файл.
Программисты порой этот процесс реализуют довольно запутанными способами, хотя на самом деле он может занимать всего несколько строк (а в Корпорации 2 - 1 строку).

echo 'Записываемый файл: '.$filename.'
';

if (is_writable(trim($filename))) { // Убеждаемся что файл доступен и существует для записи.
$savesize=file_put_contents(trim($filename), $text_data);
}else {
echo "Файл $filename недоступен для записи";
}

return $savesize;

Сохраненеие в Корпорации 2:
$GLOBALS["c"]->save_textfile('Название файла','Текст, который хотим сохранить в файл');

Корпорация 2009

В начале 2009 года мы планируем выпустить релиз нашего продукта Корпорация 2.
В качестве примера работы системы, на данном релизе предполагается выложить несколько сложных демонстрационных интернет-магазинов.
Так же планируется перевод всех программных продуктов на работу в системе Корпорация 2.

Скільки коштує K2 ERP: онлайн-калькулятор ліцензій, SaaS, хостингу та обслуговування

Скільки коштує впровадження K2 ERP саме для вашого підприємства? У новому онлайн-калькуляторі можна обрати формат роботи — безкоштовну хмару...