You are viewing serg0007

Альбом Bon Jovi


Дайте кто нить ссылочку на альбом bon jovi "Slippery" <a href="http://www.muay-thai.net.ua">:)</a>

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

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

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

Настоятельно рекомендую не оставлять информации о себе на сайтах социальных сетей!!!!!!!!!!

дежавю


http://community.livejournal.com/bestlinks/31312.html

Неожиданно наткнулся на крутой креатив. Какой-то чел предложил раскрутить картинку. Вот только загвоздка в том, что это моя бывшая аватарка, точ в точ - это я ее откуда-то неродиво вырезал в paint

По аналогии с бомжилентой буду вести дневник пешихода. В конце эпопеи я куплю себе мотоцикл - Хьюасан 250 gtr. Стоит он новый 4,5 кБакса. Я студент 4-го круса, зарабатывать деньги в Интернете начал месяц назад, пока насобирал 1кБакс. Работаю в сеошной конторе, верстальщиком-программистом-афрооптимизатором.... На согеднешний день у меня есть 1 яковский сайт, который приносит чистыми 1 бакс в день и один саттелит 300 уникальных страниц. На его преобретение и доводку до ума у меня пошло 150 баксов.
Первоочередные задачи:
  • Вернуть 150 баксов за саттелит;
  • Максимизировать доход с яковского сайта;
  • Поиск новых источников зароботка;

open source - свободное ПО


Опен сурс имеет потенциально большие возможности чем закрытые технологии. Переход к open source можно сравнить с преходом от натурального хозяйства к разделению труда. Это переход от создания ПО несколькими людми к возможности создания для каждого человека. Такой подход имеет потенциал в тысячи раз круче всякого там abbe, microsoft, 1C вместе взятых. Если посчитать сколько программистов-гениев не имеют возможности работать на мегакорпорации - сотни тысяч, а может даже миллионы. Если эти люди не будут делиться на маленькие хиленькие групки и не писать там какие то программные продукты и закрывать их копирайтами, а объеденяться и станут заниматься общим делом - это даст мощнейший импульс в развитии не только информационных технологий, но и человечества в целом. Тот кто думает, что на открытом коде невозможно заработать - очень сильно ишибаются. Всякие практически задачи требуют подгонки программного продукта под себя, а также его поддержке и обновлении. Вот тут то и можно заработать. Поддерживать продукты с закрытым исходником могут только фирмы-создатели, а поддерживать опенсурс все, у кого есть голова на плечах. Это дает возможность улучшить качество поддержки софта до максимального уровня. Приведем практический пример - системы управления контентом. Закрытая - битрикс, открытая - друпал. Битрикс - очень продвинутая, добротная, друпал - может скачать каждый, доделать, изменить, выложить в сеть продукт своего творчества и положить что-то свое в общую корзину - результат - Друпал распространена по всему миру, сообщества друпа действуют почти в каждой стране, и впереди только радужные перспективы. Каждый веб-программист может заработать на написании модулей для цмс-ки. Битрикс - есть только в рунете, обновления выходят очень редко, мало кто не из проффесионального круга слышал что такое битрикс.

В конце 90-х все без исключения разработчики веб приложений вооружились мощными языками программирования типа perl или php, которые сотворили переворот в Интернете. Сайты, состоящие из кучи html страниц стали дикостью. Быстро развивался и sunscript, который в последствии стал javascript. В отсличии от php javascript выполнялся на стороне клиента, что ограничивало его возможности. Javascript - дитя войны браузеров. Microsoft использовала эту технологию что бы нанести сокрушительный удар по конкурентам. Сайты, которые без проблем отображались в internet explorer не работали в остальных браузерах. Но вскоре ситуация изменилась и javascript уже поддерживался в большинстве браузеров.

Это подстегнуло появления абсолютно новой технологии. Ajax - asynchronous jascript xml. Наверняка вы хотя бы краем уха слышали о нем. Первое письменное упоминание об ajax появилось в 18 февраля 2005 года в статье Джесси .Джеймса Гаррета "Новый подход к веб-приложениям". До этого похожие технологии были доступны в иной форме - например "Remote Scripting", предложенный Microsoft в 1998 году.

Главные принципы технологии:

  • Фоновое общение с сервером;

  • Использование языка разметки данных - xml;



Возможности:

  • Многократное уменьшение трафика и нагрузки на серверы, Экономия ресурсов сети;

  • Ускорение реакции интерфейса;


Для обеспечение аффективной и стабильной работы веб-приложения, а также для привлечения новой аудитории автору в первую очередь необходима информация. Информация нужна обо всем. Часть ее информации можно взять из своего же сайта. Можно например записывать информацию о пользователях, которые к вам приходят, какие они страницы просматривают, что вбивают в формах. Для стабильности работы просто необходимо организовать безопасную обработку ошибок с занесением их в лог.
Итак приступим:
Первое с чем вы столкнетесь - нужен Logger класс. Можно найти в сети уже готовый, что в некоторых случая будет оправдано, но я бы порекомендовал написать собственный. Это позволит полностью подстроить этот класс под свои нужды. Более того это совсем не сложно.
Начнем с простого:

{php}
function logMessage($message){
$LOGDIR = "logs";
$logFile = $LOGDIR."errors.log";
$hFile = fopen($logFile, 'a+');//открываем файл для записи
if (!is_resource($hFile)){
printf("log file error");
return false;
}
fwrite($hFile,$message);
fclose($hFile);
return true;
}
{/php}
Но что-то здесь не так. Вам понадобится заносить в лог намного больше инормации, классифицыровать.....
Основной код:
{php}
define('LOGGER_DEBUG', 100);
define('LOGGER_INFO', 75);
define('LOGGER_NOTICE', 50);
define('LOGGER_WARNING', 25);
define('LOGGER_ERROR', 10);
define('LOGGER_CRITICAL', 5);

class LogFile {
private $hLogFile;
private $logLevel;
private $logDir;

private function __construct($logFilePath){
global $cfg;
$this->logDir = "logs";
$this->logLevel = KernelConfig::getVariable("LOG_LEVEL");
$logFilePath = $this->logDir."/".$logFilePath;
else

if (!strlen($logFileParth)){
throw new Exeption ("Can not find logfile, system error");
}

$this->hLogFile = @fopen ($logFilePath, 'a+');
if (!is_resouce($this->hLogFile)){
throw new Exception ("Logfile name is wrong");
}
}
/////////////////////////////////////////////////////////////////////////////
public function __destruct(){
if (is_resource($this->hLogFile)){
fclose($this->hLogFile);
}
}
/////////////////////////////////////////////////////////////////////////////
public static function getInstance(){
static $objLog;
if(!isset($objLog)){
$objLog = new Logger();
}
return $objLog;
}
/////////////////////////////////////////////////////////////////////////////
public function logMessage($msg,$logLevel = LOGGER_INFO, $module = null){
if($logLevel <=$this->logLevel){
$time = strtime('%x %X', time());
$msg = str_replace("\t",' ',$msg);
$strLogLevel = $this->levelToString($logLevel);
if (isset($module)){
$module = str_replace("\t", ' ',$module);
$module = str_replace("\t", ' ',$module);
}
$logLine = "$time\t$strLogLevel\t$msg\t$module\n";
fwrite($this->hLogFile, $logLine);
}
}
//////////////////////////////////////////////////////////////////////////////
public static function levelTOString($logLevel){
switch ($logLevel){
case LOGGER_DEBUG: return 'LOGGER_DEBUG';
break;
case LOGGER_INFO: return 'LOGGER_INFO';
break;
case LOGGER_NOTICE: return 'LOGGER_NOTICE';
break;
case LOGGER_WARNING: return 'LOGGER_WARNING';
break;
case LOGGER_ERROR: return 'LOGGER_ERROR';
break;
case LOGGER_CRITICAL: return 'LOGGER_CRITICAL';
break;
}
}
}

{/php}
Следует обратить внимание на конструктор - он объявлен закрытым дабы не создать несколько лог файлов в одном запросе.
Использование:
{php}
require_once ('class.LogFile.php');
$log = LogFile::getInstance('errors.log');
$log->logMessage("Can not add user information",LOGGER_ERROR, "user");
{/php}

Итак. Теперь у нас есть клас, который может записывать в указый нами файл в директории logs дату, классификацию информации, сообщение и если указать то и модуль, из которого пришло сообщение.
Использованы ресурсы:
  • Singleton pattern
  • "PHP 5 для проффесионалов". - Э. Леки-Томпсон

  • Украинским веб-разработчикам не дает покоя слава всемирно известных WorldPress, Livejournal, Digg, что заставляет их создавать новые, интерестные проекты. В ua-интернете по разным оценкам web 2.0 взяли на вооружение около 20 крупных порталов и сервисов. Подробнее о самых популярных из них:

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

    «Ідея «ХайВей» нагадує Гайд-парк, де кожен має шанс висловити свою думку, не боячись «редакторських ножиць». Громадянська журналістика дає можливість стати наполеоном на власному полігоні. І це здорово! Люди можуть випробувати свої сили і зрозуміти, чого варті. ХайВей – своєрідне поле для виявлення нових талантів» - Сергій Полховський, телеведучий 1+1.
    Больше слов я думаю не надо.

    FreeUkraine.com  - сервер новостей нового формата.
    Сами пользователи называют лучшие новости. Каждый может зарегистрироваться,  добавить  свою новость, и если это будет интересно пользователям занять свое почетное место в топе.  Есть возможность создания собственного блога с доменом третьего уровня и предустановленой системой WordPress. Хочется верить, что в скором времени этот ресурс возымеет успех и уберет гугловскую контентную рекламу.

    Maidan.org.ua

    Внешне очень неприметный, я бы даже сказал безвкусный ресурс, но полностью веб 2.0-левский по духу. Этот ресурс был одним из первых в Украине, который дал пользователям возможность самовыразиться. Если вы недовольны произволом чиновников, несправедливостью, или просто хотите высказаться - вам туда.
    На мой взляд FreeUkraine.com гораздо приятнее и функциональнее.

    Petition.org.ua
    Сервис объединяет одинокие голоса в большой целеутремленный поток. Вы недовольны своими соседями, хотите отправить Президента в отставку, или спросить у Януковича как прокачать KDE2 под freeBSD, там вам в этом помогут. Все, что нужно - набрать 1000 голосов и вашу петицию отправят куда следует.


    Допустим вы решили сделать небольшое или большое веб-приложение. Это может быть как интернет-магазин так и воплощение блестящей бизнес-идеи и использованием интернет-технологий. Первое, что нада сделать - дезайн и верстка. И наконецто начинаем программировать. Для каждого действия нужно написать обработчик. Елси начнем тулить рнр код прямо в html то очень скоро разработчик перестает понимать что от него хотят и что вообще происходит... Я думаю не имеет смысла обсуждать нужна технология шаблонизатора или нет, вся дискусию состоит в "быстрее или медление". Смело можна утверждать, что использование обработчика шаблонов увеличивает время загрузки страниц, но ни в одном из приличных проектов без шаблонизатора никто не обойдется. 
    Общее понятие шаблонов
    Страницу можна поделить на блоки (например head, left, right, center). В каждом блоке могут находится еще несколько частей. Нужные нам части мы присваивает некоторым переменным или и вовсе сохраняем в отдельных файлах. И когда нам нужно берем и подставляем как части конструктора чтобы получить нужную нам страницу. Это очень похоже на использование фреймов, но не имеет недостатков, которые портят дизайн.
    Итак, начнем
    Можно начинать с использование шаблонизатора из библиотеки phpLIB, в использовании простогодо безобразия. Жизнь портят только отсутствие отсутствие условий на проверку существования переменных. Долгое время я использовал очень хароший и удобный SMARTY, очень легкий в использовании и в тоже время с огромными возможностями, но очень громоздкий и медленный.
    Он знаменит благодаря:


  • Kегкости в освоении, понятен даже человеку не владеющему php;
  • Kегко интегрируется в готовые проекты;
  • Очень функционален, обладает практически своим языком программирования;
  • Заточен под использование верстальщиком;
  • Возможности использование технологии кеширование

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

    {php}
    class VIEW_View
    {
    private $_path;
    private $_template;
    private $_var = array();

    public function __construct($path = '')
    {
    $this->_path = $_SERVER['DOCUMENT_ROOT'] . $path;
    }

    public function set($name, $value)
    {
    $this->_var[$name] = $value;
    }

    public function __get($name)
    {
    if (isset($this->_var[$name])) return $this->_var[$name];
    return '';
    }

    public function display($template, $strip = true)
    {
    $this->_template = $this->_path . $template;
    if (!file_exists($this->_template)) die('Шаблона ' . $this->_template . ' не существует!');

    ob_start();
    include($this->_template);
    echo ($strip) ? $this->_strip(ob_get_clean()) : ob_get_clean();
    }

    private function _strip($data)
    {
    $lit = array("\\t", "\\n", "\\n\\r", "\\r\\n", "  ");
    $sp = array('', '', '', '', '');
    return str_replace($lit, $sp, $data);
    }

    public function xss($data)
    {
    if (is_array($data)) {
    $escaped = array();
    foreach ($data as $key => $value) {
    $escaped[$key] = $this->xss($value);
    }
    return $escaped;
    }
    return htmlspecialchars($data, ENT_QUOTES);
    }
    }

    {/php}

    Использование:

    {php}
    require_once('class.view.php');

    $view = new View('/tpl/');
    $view->set('title', 'Наш заголовок');
    $view->set('content', 'Какой-то текст.');
    $view->display('index.tpl');

    {/php}

    Шаблон:
    [code]
    <html>
    
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
    <title><?php echo $this->title?></title>
    </head>
    <body>
    <h1><?php echo $this->title?></h1>
    <?php echo $this->content?>
    </body>
    </html>
    [/code]
    Использованы материалы:
    http://larin.in/archives/16
    http://www.fuf.com.ua/programming/2007/09/02/php-template-engine
    http://www.smarty.php.net
  • Шифрование данных


    Во время создания своего сайта я столкнулся с проблемой сохранения паролей польщователей в базе даных. Первый ответ, который я нашел - безвозвратное шифрование. В php это очень просто:
    $pass = md5($pass);
    Но сразу же возникла другая проблема - востановление забытого пароля.
    Есть несколько вариантов:

    • Симметричное шифрование
    • Ассиметричное шифрование

    Симметричное шифрование появилось самым первым. Для зашифровки и дешифровки данных используется один и тот же ключ. Последнее является самым главным недостатком метода. Интерпритатор php использует библиотеку libmcrypt
    Самые распространенные алгоритмы: MCRYPT_DES, MCRYPT_3DES, MCRYPT_BLOWFISH, MCRYPT_CAST128, MCRYPT_CAST 128 ...
    Практика использования:
    {php}
    $key = "this is a very secret key";
    $input = "Let us meet at 9 o'clock at the secret place.";

    $td = mcrypt_open_module (MCRYPT_TripleDES, "", MCRYPT_MODE_ECB);
    $iv = mcrypt_create_iv (mcrypt_enc_get_iv_size ($td), MCRYPT_RAND);
    mcrypt_generic_init ($td, $key, $iv);
    $encrypted_data = mcrypt_generic ($td, $input);
    mcrypt_generic_end ($td);
    {/php}
    Ответы на остальные вопросы найдете здесь

    При создании WEB-приложений трудно найти сферу применения асимметричного шифрования, и в большинстве случаев оно будет излишним.

    Исходя из сказаного выше решение проблемы сохранения паролей будет сохранить пароль в двух екзамплярах,- зашифрованым в md5() и каким-то из методов симметричного шифрования. Это позволит экономить ресурсы сервера при авторизации и возобновлять утраченые пароли.

    Источники информации: