Дек 2

Ubuntu 9.10 и WiFi

Рубрики: Новости

Решился я наконец то поставить 9.10 на ноутбук, все установилось замечательно с официального диска, без зависаний. Все красиво, сглаживание, шрифты уже не нужно было ставить – все отлично.

Пришло время настроить VPN. Чтобы не бегать с флешкой от компа к компу, таская зависимости от pptp-linux и network-manager-pptp я решил пойти в торговый центр, расположенный по соседству – там есть вайфай кафе.

Включил ноут – ничего не происходит, никаких Wireless сетей не обнаружено, хотя за соседними столиками сидят 5 человек с ноутбуками - у них все ОК. Поинтересовался у них что за настройки – говорят все само ловит, никаких паролей нет. Правда у них винда… Вот сделал фото контекстного меню, выпадающего с иконки вайфая – кто с подобным сталкивался как решается?

dsc00010

Я уже подумал, что просто вайфай у меня отключен – но нет, крайняя правая лампочка горит. Раньше вайфай на этом ноуте Асус работал нормально, правда тогда на нем была винда.

Ноя 26

Maulnet.ru/tools

Рубрики: Новости

Начиная с прошлого года, я делал, всякие побрякушки, типа определения Pr + ТИЦ, определение яндекс тематики, проверка индекса и еще с десяток разных мелких утилит для владельцев сайтов. Мои мелкие утилиты стали популярными, на них ссылались, их использовали. В сумме они собрали 10к скачиваний.

Естественно поступали разные предложения, в том числе создать панель вебмастера. До предложения Маула, мне предлагали создать такую панель 4 или 5 раз, один раз дошло уже до разработки ТЗ, но заказчик сдулся. Остальные же просто хотели халявы, и их предложения я не считал серьезным, даже в кризис, когда тяжело было фрилансить, я решил отказаться.

Как выяснилось – не зря. Начал помоему в начале сентября, ровно за один месяц я спроектировал БД, составил план разработки и создал ядро, две недели ушло на адаптацию сверстанного дизайна, а остальное время, до сегодняшнего дня уходило на всякие улучшения и реализацию новых идей.

В итоге появился сервис, аналога которому нет, и я думаю не появится (тьфу-тьфу и постучал по дереву), потому как сделать что-либо более мощное будет стоить не малых денег и усилий. Ну даже, если сделают – будет поздно, потому как наш maulnet.ru/tools скорее всего станет монополистом в области проверки внешних и внутренних параметров сайтов.

Прошло 3 дня с момента выпуска тестовой версии, зарегистрировано более 1000 юзеров, добавлено 11000 сайтов, ежедневно осуществляется проверка более чем 7000 сайтов. Объемы впечатляют, учитывая, что никто сервис не рекламировал, была только публикация на блоге.

Разрабатывал все на CodeIgniter с использованием паттерна MVC. Именно после этого проекта, я понял, что эта модель очень удобна и эффективна.

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

Общий вид панели вебмастера

Ноя 25

50 триллионов

Рубрики: Новости

Вчера пришло письмо из Питера, содержание которого меня немного повеселило – купюра в 50 триллионов, банка Зимбабве =). Это таким образом Профит-партнер развлекает своих партнеров. Меня повеселило, а вот жителям Зимбабве, наверное не до шуток. Интересно им дешевле купить рулон туалетной бумаги, или подтереться 50-ю триллионами.

Кстати, я застал то время, когда по Украине бродили купоны всякие и купюры в миллион и выше.

Кстати о Профите. У меня в РСЯ один сайт – rybalka.tv

При посещаемости в 1100-1200 хостов он дает ежемесячно 1000 рублей, средняя цена клика – $0,04. Мало конечно, очень мало, но в этой нише мало рекламодателей. Пробовал на те же места вешать адсенс, выходит в 2 раза меньше. Кстати что касается адсенса, я не люблю его за убогие блоки, к сожалению там нельзя растягивать блоки, а можно использовать только фиксированных размеров.

Вот понедельная статистика за октябрь.

Ноя 18

Фильтры Яндекса и их диагностика

Рубрики: Новости

В данный момент работаю над неким проектом, в котором планируется сервис диагностики сайта на фильтры Яндекса.

Общими усилиями форумов маулнета и серча удалось составить такой список фильтров:

  1. Непот фильтр
  2. ExceedDensityKeywords Filter
  3. Редирект фильтр
  4. Ты последний
  5. LinksText Filter
  6. АГС-17

Здесь начинается самое сложное. Как диагностировать? Ну к примеру с «Ты последний» я сталкивался и выводил из под него сайт. Там алгоритм примерно ясен:

  1. Делаем запрос на http://yandex.ua/yandsearch?text=rybalka.tv
  2. Если на первом месте не rybalka.tv, то сайт скорее всего под этим фильтром.
  3. Так же дополнительно убедиться можно, пропарсив выдачу дальше и найдя всетаки искомый домен на 14-15 месте (главное что не на первой странице).

Кто знает, как можно диагностировать остальные фильтры и готов поделиться информацией, мои заказчики готовы оплатить эту информацию. Пишите мне на samborskyv@gmail.com

Ноя 4

Идея создать свою CMS

Рубрики: Новости

Последнее 2 месяца плотно изучал разные CMS, т.к. все еще колебался. Требования были такие: регистрация юзеров, древовидные комментарии с функционалом, уровня Хабра, интернет-магазин с хорошим функционалом, форум, возможность связи всего со всем по ссылками (теги, товары, категории и т.п.) и пришел к выводу, что готового решения, которое устроит меня – нет. Где-то закрыт код зендом и посмотреть насколько хорошо написана CMS – нет возможности, что-то стоит дорого и «весит» много. В общем везде есть минусы.

Я уже давно работаю с фреймворком CodeIgniter, и пришел к выводу, что создавать сайты/сервисы и т.д. удобнее всего с помощью паттерна проектирования MVC (Model-View-Controller), особенно в том виде, в котором он представлен в CI. И все новые проекты собираюсь делать именно на CI.

Планировать что-то грандиозное пока не буду, для начала ограничусь минимальными классами ядра:

  1. Reg – функции регистрации юзера, восстановления пароля, изменения профиля
  2. Auth – вход, выход, проверка залогинености
  3. PageWrite – создание поста, изменение поста
  4. PageView – вывод поста/постов

Общая концепция такая – пишущие в базу классы будут отделены от тех что считывают из нее. Будет ли своя админка у CMS – пока не знаю, скорее всего систему буду сразу проектировать так, чтобы все управлялось ч-з XMLRPC с удаленной админки, так чтобы я мог в нее приглашать копирайтеров, переводчиков, чтобы все свои сайты я видел как на ладони.

Плагинов, в том виде, в котором все привыкли их видеть в CMS – не будет. Будет написан функционал в виде плагина CodeIgniter, а оформление и контроль будет уже в каждом сайте свое. Благо я не рассчитываю делать говносайты, где все будет шаблонно, а мои клиенты в состоянии оплатить индивидуальный дизайн с проработкой мельчайших элементов страницы.

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

Окт 29

Удобный инструмент для работы с БД в CodeIgniter

Рубрики: Новости

Некоторые пользуются чистыми SQL запросами, кто-то обычным классом Active Record из CodeIgniter, а более продвинутые подключают ORM. Я же для повседневной работы с базами данных уже давно использую свой класс-обертку. Этот класс в основном предназначен для быстрой работы с одной строкой из таблицы.

Начну с простых примеров

Загружаем все поля таблицы users где ID = 800

	$user = new Object('users');
	$user->id = 800;
	if( $user->get() ){
		// Данные юзера с ID=800 загружены
		// Все поля таблицы users находятся тут - $user->data
		print_r( $user->data );
	}
	else{
		// Юзер с таким ID не найден
	}

Удаляем юзера с ID = 800

	$user = new Object('users');
	$user->id = 800;
	$user->delete();

Вставляем новую запись

	$user = new Object('users');
	if( $user->insert(array(
		'login'	=> 'jeka',
		'wmid'	=> '11111111111111'
	))){
		// Новый юзер вставлен, его ID тут: $user->id
		echo $user->id;
	}

Обновляем юзера с ID = 800

	$user = new Object('users');
	$user->id = 800;
	$user->update(array(
		'email'		=> 'samborskyv@gmail.com',
		'login'		=> 'jeka',
		'password'	=>	md5('хуй')
	));

Поиск юзера по мылу. Как вы понимаете можно уточнить условия поиска, задав к примерно пароли и логин. Если будет найдено несколько строк, будет выдана все равно первая найденая, т.к. стоит LIMIT 1

	$user = new Object('users');
	if( $user->find(array(
		'email' => 'samborskyv@gmail.com'
	)) ){
		// Юзер найден а данные уже загружены в $user->data
	}

Как видите из примеров, у всех таблиц, должно присутствовать обязательное поле ID, как называются остальные поля – классу все равно. Все данные хранятся в массиве $this->data в таком формате

		array(
			'Название столбца 1' => 'Значение 1',
			'Название столбца 2' => 'Значение 2',
			'Название столбца 3' => 'Значение 3',
			'Название столбца 4' => 'Значение 4'
		)

Получился по моему очень удобный и продуктивный класс, который существенно сокращает время разработки, когда надо что-то быстро получить из БД, записать, обновить. Если же нужно делать какие-то сложные выборки, то, конечно мой класс вам не помощник. Повторюсь – его предназначение – работа с единичными строками в таблице.

Еще у моего класса есть интересная особенность. Его можно наследовать. В примерах я показывал работу с таблицей users, а ниже прототип класса users который наследует Object. В нем уже появились какие-то специфические функции, но работа с БД, происходит все равно на том же удобном и простом уровне. Так же можно создать класс post, category, а там уже и до ядра CMS не далеко =)

	class User extends Object{

		function __construct(){
			$this->set_table('users');
		}

		function is_login(){
			// Проверка залогинености
		}

		function logout(){
			// Удаляем кукисы
		}
	}

Окт 28

Новые правила выдачи инвайтов на talk.maulnet.ru

Рубрики: Новости

С момента публикации поста о выдаче инвайтов на форум тех, кто доит интернет, прошло 2 месяца. За это время я выдал 45 инвайтов. Интересно, что 5 человек так и не зарегистрировались, хотя инвайт я высылал. Сколько было заявок – даже не считал, но думаю пару сотен.

Сегодня я ужесточаю правила выдачи инвайтов, и те, что просит инвайт не соблюдаю инвайт будут игнориться.

Итак, чтобы получить инвайт, нужно мне на почту samborskyv@gmail.com сбросить анкету, заполнив все пункты:

  1. Чем вы занимаетесь в сети?
  2. Ваш WMID
  3. На каких форумах зарегистрированы? Надо не просто перечислить, а скинуть ссылки на профили.
  4. Примеры из портфолио. К примеру вы копирайтер – покажите ваши тексты. А может вы дизайнер – ссылка на портфолио. А вдруг вы программист – покажите что вы делали. В большинстве случаев ссылки на профиль в веблансере или фрилансере хватит.

Примерно так должен выглядить ответ:

  1. Веб-программист
  2. 743658763473
  3. http://forum.searchengines.ru/member.php?u=76005
  4. http://www.samborsky.com/portfolio/

Анкеты присылайте только на почту. Если я решу что инвайт есть смысл выслать – я его вышлю вам на мыло, но лично уведомлять об это не буду. Если я что-либо заподозрю, возможно проверю путем отправки в ЛС сообщения, чтобы точно узнать свои ли профили вы указываете, свое ли портфолио вы демонстрируете.

Инвайты больше не выдаю – не пишите мне!

Окт 14

Как получить кол-во FeedBurner подписчиков, зная домен

Рубрики: Php

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

Полазил по рейтингам блогов – там вообще все тупо спрашивают у юзера адрес фида… лол… зачем делать дополнительное действие, раз фид и так получить можно.

Остановился на таком алгоритме:

  1. Скачиваем страницу, например http://www.samborsky.com
  2. Ищем link теги, с атрибутом application/rss+xml
  3. Получаем полный адрес фида, например, если он указан локально /feed/
  4. Заходим на полный адрес фида, получаем таким образом адрес редиректа – http://feeds.feedburner.com/samborsky
  5. Имея на руках полный адрес ленты в фидбернере – получить кол-во подписчиков – дело техники

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

function feedburner(){

	if( !$this->page_loaded ){
		$this->domain_source();
	}

	if( $this->page_loaded ){

		$feed = '';

		// Найдем RSS фид
		preg_match_all('/<link(.+?)\s*\/?\s*>/i',$this->source_code,$out,PREG_SET_ORDER);
		foreach( $out as $link ){

			$link = strtolower($link[1]);

			if( strpos($link,'application/rss+xml') ){

				// Если адрес взят в двойные кавычки
				if( preg_match('/href="(.+?)"/i',$link,$href) ){
					$feed = $href[1];
					break;
				}

				// Если адрес взят в одинарные кавычки
				if( preg_match("/href='(.+?)'/i",$link,$href) ){
					$feed = $href[1];
					break;
				}

				// Если адрес указан без кавычек
				if( preg_match("/href=\s*(.+)\s*/i",$link,$href) ){
					$feed = $href[1];
					break;
				}
			}
		}

		// Получаем полный адрес фида
		$url = parse_url($feed);
		if( empty($url['host']) ){
			$feed = 'http://' . $this->domain . $feed;
		}

		// Скачиваем фид, получаем реальный адрес
		if( $this->get($feed) ){

			// Получаем последний урл, на который редиректили
			$feed = $this->get_info(CURLINFO_EFFECTIVE_URL);

			if( !empty($feed) ){

				// Нужно получить название канала
				if( preg_match('/feedburner.com\/(.+?)$/i',$feed,$out) ){

					$feed = $out[1];

					// Делаем запрос на фидбернер
					if( $this->https_get('https://feedburner.google.com/api/awareness/1.0/GetFeedData?uri=' . $feed) ){

						echo $this->data;
						if( preg_match('/circulation="(\d+?)"/',$this->data,$match) ){

							return $match[1];
						}
					}
				}
			}
		}
	}

	return 'n/a';
}

———

Окт 13

Арсенальчик

Рубрики: Новости

Раз Леха опубликовал в своем портфолио мой заказ, не вижу смысла скрывать этот проект от масс. Да, сайт для болельщиков лондонского Арсенала, а может быть и для одного болельшика – меня, потому что нормальных, которые меня устраивают в рунете нету.

Что я жду от этого сайта. Прежде всего хочу зайти, почитать новости, переведенные с официального arsenal.com на русский, посмотреть видео, табличку, бомбардиров, интервью и т.д.

Заработок? Наверное нет, сайт изначально сайт – моя прихоть и растратил на него уже 500$ которые ясное дело на подобном сайте и за год проблематично отбить. Кто-то покупает себе новый телефон за 800$, мне захотелось вот такой сайт. Все.

Что еще добавить. Делаю его я очень медленно, когда есть время (т.к. сижу на заказе), делаю на чистом CodeIgniter, используя паттерн проектирования MVC. Замечу что MVC – это крайне удобно, но многие вещи приходится писать самому. Делаю с нуля только для того, чтобы удовлетворить свой интерес к MVC, ясное дело что на том же MaxSite CMS можно было бы сделать быстрее и не хуже.

Сен 22

Город Ж

Рубрики: Новости

Вот и настал час, когда я презентую работу, над которой работал 2,5 месяца. Мог бы показать и раньше, но хотел, чтобы сайт оброс контентом и посетителями.

Итак gorod-zhe.ru – это портал с элементами социальной сети, подмосковного города Железнодорожный. Над проектом работало несколько человек, думаю есть смысл поблагодарить их за сотрудничество: дизайн (Степан Комаров, http://alfatech.ru/), верстка (Дмитрий Лялин, http://dimox.name/), настройка linux, софта (Никита Менькович , http://librarian.spb.ru/). Я же руководил всем проектом, и выполнял функции кодера.

Отдельно благодарю Макса за MaxSite CMS на которой построен проект.

Главная страница: