Пользователь
0,0
рейтинг
9 апреля 2012 в 15:54

Разное → Как раскрутить «Социальную сеть Ковчег», если это фантастическая трилогия

Три книги с фантастикой и сайт для чтения – это проект, который длится уже 2 года.
И, чёрт возьми, мне это нравится. Сейчас расскажу, как я делал сайт для чтения своих произведений.

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

image

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



Почему не бумажная книга?


Сначала была мысль – отправить свою книгу в 200 издательств страны и ждать ответа. После получения ответа, нужно будет 6 месяцев доводить книгу до ума, при помощи редакторов и потом ещё 6 месяцев ждать 2000 бумажных экземпляров. Которые без рекламы (а её не дают для начинающих писателей) будут продаваться год. Обдумав этот вариант и учитывая, что я не привык получать деньги за своё хобби, я выбрал вариант раскрутки в интернете. Аудитория интернета в данный момент, больше чем читающая книги аудитория, которая не подключена к сети и ходят по книжным магазинам. Вы не подумайте, я не против бумажных книг, но как метод раскрутки начинающего писателя – бумажная книга очень сложный и долгий путь. (Вспомните, как начинал Лукьяненко, с бесплатных текстов в сети, в файлах .txt)

Каким должен быть сайт для чтения?


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

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

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

Пожелания современного читателя к сайту с книгами:
1) Хочу иметь возможность скачать книгу в любом формате с оглавлением, для любой читалки (PDF, fb2, epub, mobi).
2) Хочу иметь возможность комментировать главы в книге и делиться своими впечатлениями.
3) Хочу иметь возможность дать своим знакомым короткую ссылку или поставить Like при помощи любой социальной сети, если книга мне понравится (например продиктовать по телефону адрес сайта "990990.ru").
4) Когда я на работе, я не могу достать читалку, поэтому хочу доступ к чтению на сайте. Этот же пункт действует, если у меня нет читалки.
5) При чтении на сайте, хочу, чтобы сайт запоминал позицию чтения, где я закончил. Чтобы я мог открыть книгу дома и дочитать. И ещё, я ненавижу регистрацию. Хочу авторизовываться через любую свою социальную сеть.
6) Не хочу при чтении видеть рекламу и другие отвлекающие факторы. Хочу иметь возможность выбирать фон для чтения.
7) Не хочу пользоваться скроллом для чтения таких увесистых томов
8) Прервав чтение, не хочу потом искать место, где остановился последний раз.
9) Хочу узнавать о новых книгах и главах недописанных книг автора, если мне понравятся его книги.
10) Книги должны быть интересны и написаны лёгким языком и желательно с буквами «ё».

Учитывая, что мне ещё и писать книги, после того, как сайт будет готов, я учёл требования писателя:

Требования современного писателя к своему сайту:
1) Будет супер, если я смогу писать прямо на сайте. Хочу иметь красивый, удобный, минималистичный редактор, который не отвлекает меня в режиме Fullscreen. Хочу иметь сюда доступ в любой момент, в том числе с iPad.
2) Сайт в два клика должен принимать тексты из моей любимой программы для писателей Scrvener.
3) Редактор должен подсчитывать кол-во слов в создаваемой главе, чтобы главы не получались очень длинными и можно было ставить себе норму на день.
4) Публикация новой главы, должна осуществляться в один клик.
5) Хочу знать отзывы своих читателей.
6) Хочу видеть географическое положение своих читателей и статистику скачиваний и листаний книги.
7) Хочу, чтобы внешний вид читалки, располагал к чтению и не отвлекал моих читателей от сюжета.
8) Хочу иметь короткую ссылку, чтобы раздавать своим знакомым (например 990990.ru или wezel.ru)

Поберегите колёсико или почему книга с листанием страниц,
выигрывает у длинного текста со скроллингом:


Пусть это и эгоистично, но я выбрал ту форму чтения, которая удобна мне, когда впереди, меня ждёт более 2400 страниц. Я яркий представитель SMS поколения, который любит читать, но которого всё вокруг отвлекает. После звонка друга, я должен иметь возможность, быстро вернуть свои глаза на ту строчку, где они были до того, как отвлеклись.
Скроллинг я не люблю, так как длинная «портянка» текста, может случайно уехать в самое начало и, тогда уж, проще начать читать заново, чем искать место, где остановился. А чтение, это такое ритуальное действо, что не терпит любых отвлечений.
Можно было сделать постраничную «pagination» с номерами страниц внизу, но тогда, читателю придётся изучать этот интерфейс и понимать логику перемотки. Попадать в маленькие цифры внизу, тоже не так легко, когда ты сопереживаешь главным героям, на часах 3 утра и уже спать пора, а хочется дочитать.
Поэтому и по другим неосознанным причинам, было решено заморочиться с постраничным выводом, чтобы всё было похоже на настоящую книгу.

Оглавление трёх книг

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

Белые ссылки, обычным читателям не видны, с их помощью, я могу открыть главу для редактирования или начать писать новую главу.

Номера страниц, это самое сложное


Книга без номеров страниц, это как прогулка по тёмному подвалу, когда не знаешь, где начало, и когда конец. Оглавление без номеров страниц, это просто набор ссылок.
Проблема одна, как разбить длинную книгу на страницы и при этом иметь возможность обновлять главы (при этом глава может увеличиться и уменьшиться). Bookmate.com — решил этот вопрос тем, что указывает номер страницы внутри главы. Сквозной нумерации по всей книге нет. Это не наш метод. У нас произведение собственное и у нас есть время подготовить книгу к чтению, путём пересчёта номеров страниц.

Простой алгоритм, который долго придумывать:


Как разбивается длинный текст на страницы, я попытаюсь описать простыми словами, потом приведу скрипт.
1. Берём исходный текст книги и вставляем туда «мягкие переносы». Делаем это при помощи трёх строчек кода (и работы Сергея Куракина):
  include 'hypher.php';
  $hy_ru = new phpHypher('hyph_ru_RU.conf');
  $text = $hy_ru->hyphenate($text,'UTF-8');

Без переносов, наш текст будет выглядеть очень разрежённым и некомпактным. В настройках плагина, я установил переносы только очень длинных слов, поэтому текст выглядит опрятным и переносы не «частят». Этот код добавляет внутрь текста символы "& shy;" — которые разрешают браузеру переносить слова в этих местах.

2. Разбиваем длинную книгу по главам и заносим в таблицу 1_book:
1_book таблица
num — это номера глав. book — это номер книги, пока их три штуки. title — название главы

3. Путём использования «долгодумающего» скрипта (работу которого опишу чуть ниже), создаётся простая таблица 1_books_p – в которой указан номер страницы и с какого символа по какой, резать текст этой главы:
1_book_p таблица

Так мы создаём таблицу, в которой всё заранее просчитано. Пользователю не нужно ждать (и тратить ресурсы сервера) на расчёт нумерации страниц книги. Всё посчитано до нас. Этот скрипт запускается только «писателем» после того, как он изменил главу. Если глава исправленна одна, то можно пересчитать только нумерацию этой изменённой главы, а нумерацию следующих страниц уменьшить или увеличить на разницу, между тем, что было и что стало. Работа скрипта просчёта страниц одной главы, занимает 1 секунду.

Вот сам скрипт:
<?
include 'hypher_.php';
include 'pass_of_db.php';

$hy_ru = new phpHypher('hyph_ru_RU.conf');

$book = intval($HTTP_GET_VARS['book']);
$glava = intval($HTTP_GET_VARS['glava']);
if ($glava == '') $glava=0;

$db = mysql_connect ($config[mysql_host], $config[mysql_user], $config[mysql_password]);
mysql_query("SET NAMES utf8");
mysql_select_db($config[base_name],$db);   
if (!$db) { echo "Ошибка подключения к SQL :("; exit();}

   	$sqlnews2="SELECT * FROM `1_books` WHERE book=$book AND num=$glava";  
	$result2 = mysql_query($sqlnews2); 
	@$sql2 = mysql_fetch_array($result2);
	$text=$sql2['text']; //вытаскиваем текст из базы
    $text = str_replace("\r",'</p><p>',$text); //вставляем параграфы там, где "возрат коретки" в простом тексте
?>

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title>Перенумерация страниц</title>
	<script src="../src/js/jquery.js"></script>
    <script src="../src/js/cookie.js"></script>
    <link rel="stylesheet" href="css/style.css" type="text/css" media="screen"/>
	<script type="text/javascript">

function jsDoFirst()
{
 //считаем сколько глав
 $.ajaxSetup({async: false}); 
 var maxgl;
 $('#load2').load("getinfo.php?book=<? echo $book; ?>&page=2",function()
       {
		maxgl = parseFloat( $('.maxglav').html() );

num=1;
gl=<? echo $glava; ?>;
if (gl==0) 
 {
 gl_start  = 0; 
 gl_finish = maxgl;
 }
else 
 {
 $('#load2').load("getinfo.php?book=<? echo $book; ?>&glava="+(gl-1)+"&lastpage=1");
 num = parseFloat( $('.lastpage').html() );
 if(!num) num=0;
 num = num+1;

 gl_start=gl;
 gl_finish=gl;
 }


for(glava=gl_start;glava<=gl_finish;glava++)
{
 lnk = "getinfo.php?book=<? echo $book; ?>&p="+glava+"&start=0&limit=1200000&num=1&final=5";
 $.getJSON( lnk ,function(text)
	{ 
	i=0;
	first=0;
	for(j=0;j<=20000;j++)
	   {
	   first=i; 
	   step=800;
	   if ((text.length-1-first)<=0) step=0; 
	   for(i=first;i<=text.length-1;i+=2)
	      {
	      if(j==0) pref="<h1>Заголовок</h1>";
	      else pref="";
	      $('#b-load2').html(pref+'<p>'+text.substr(first,i-first));
	      h = $('#b-load2').height();
	      if(h>=590) 
	        {
	        i=i-1;
	        newtext = text.substr(first,i-first);
	        vv=razvedka(text,first,i);
	        i=vv+first;
	        newtext = text.substr(first,vv);
	        next=first+vv;
		    $('#load2').html($('#load2').html()+'<font size=-2em>start='+first+' to='+next+' num='+num+'</font>'+'<hr>'+newtext);
		lnk = "getinfo.php?writepage="+num+"&start="+first+"&to="+next+"&book=<? echo $book; ?>&glava="+glava;
		$('#load3').load(lnk);
		console.log(lnk);
	    num=num+1;
	    	flag=1;
	        break;
	        }
	      }
	    if (flag==0) 
	      { 
	      	next=text.length+1;
			lnk = "getinfo.php?writepage="+num+"&start="+first+"&to="+next+"&book=<? echo $book; ?>&glava="+glava;
			$('#load3').load(lnk);
		    num=num+1;
			console.log('fin='+lnk);
	        break; 
	      }
	    flag=0;
	   }
	   
	   });
}	
if (gl!=0)
  {
   lnk="getinfo.php?book=<? echo $book; ?>&glava="+gl+"&getback=1";
   $('#load2').load(lnk);
   self.close();
  }
	   });
}

function razvedka(text,first,i)
{
/*
правила переноса на следующую страницу:

Ищу ближайший с конца Пробел, или </p>
Предпочитаю </p>, даже если </p> чуть дальше пробела (тогда сл.страницу начинаю с <p>)
Если рядом только пробел, то использую его разделителем и следующую страницу
начинаю с <p2>.
Если нужно выбрать пробел, смотрю сколько слов есть после него, нужно хотя бы два и он не должен быть внутри тега.

*/
newtext = text.substr(first,i-first);

space=newtext.lastIndexOf(" "); addspace=1;
parag=newtext.lastIndexOf("</p>"); addparag=4;

if ((space-parag)<5) {vv=parag; add=addparag; }
			else 	 {vv=space; add=addspace; }

return vv+add;
}	
	
	
	</script>


<script type="text/javascript">
$(document).ready(jsDoFirst); 
</script>    

</head>
<body>

<div class="book_wrapper">
<div class="animate2">	
<div id="b-load2" style="width:365px;padding-top:20px"></div>
</div>
</div>
<div id="load2" style="background-color:white"></div>
<div id="load3"></div>
</body>
</html>		


Я не горжусь своим стилем кодирования PHP и Javascript, поэтому прошу за код палками не бить. Суть моего описания, больше относится к алгоритму определения начального и конечного места разбивания главы, чтобы текста было столько, чтобы он влез на страницу и плавно продолжил предыдущий текст.

Суть скрипта, который выше в том, что он берёт 800 символов из главы и выводит его в div, который в точности повторяет страницу книги на самом сайте. Если высота этого div не превысила 590 пикселей, прибавляется 2 символа к тексту и замеряется его новая высота. Как только мы увеличили текст настолько, что он стал вылезать из 590 пикселей, мы останавливаемся и, при помощи функции Razvedka ищем ближайший пробел или символ конца параграфа. Так мы находим место, где будем разбивать эту главу. «getinfo.php?writepage» — записывает вычисленные значения в базу для «1_books_p».

Получается, что все вычисления номеров страниц, происходят у меня на компьютере в моём браузере. Сделать это на сервере — у меня не получилось. Чтобы предсказать сколько символов нужно разместить на странице, чтобы она корректно отображалась — нужно знать ширину символов, сделать переносы, учесть отступ между абзацами. Алгоритм не постижим для моего любительского мозга.

Как сделать анимацию перелистывания страницы:


Сначала я думал, что потрачу на эту часть проекта несколько дней, но, чудом, удалось всё реализовать за 30 минут. Оказалось, что перелистывание — это анимация двух сторон одного листа. Один див нужно уменьшить по ширине до нуля, а другой увеличить до ширины листа. До сих пор удивлён простоте решения. За это я обожаю jQuery.
function rotate()
{
  ease = 'easeInQuad'; //easing - неравномерное ускорение
  tim = 700;

  maxpages=parseFloat($('.maxpages').html());  //сколько страниц всего, чтобы не перелистнуть последнюю

  $('.animate3').show(); //приводим нужные div в начальное положение
  $('.animate3').css("left",105).css("width",0);
  
//плавно сдвигаем правый див и увеличиваем его ширину до 413 пикселей
  $('.animate3').stop().animate({"left": "523","width":"413"},tim,ease, function()
     {
     $('.b-load4').html($('.b-load3').html()); //после пролистывания, меняем текст чтобы придти к начальному состоянию
     $('.num4').html($('.num3').html());
     $('.animate3').css("left",105).css("width",0).hide();
     $('.animate3').css("-webkit-box-shadow","");

	if ( $('.b-load3 #end').html() != null ) //если это последняя страница главы, вставляем комменты
	   {
		update_comment();
	  	$('.clip_right').fadeIn(600);
		$('.comments_right').fadeIn(600);
	   }
	 else
	   {
	   	$('.clip_right').fadeOut(50);
		$('.comments_right').fadeOut(50);
	   }

	if ( $('.b-load2 #end').html() != null )
	   {
		update_comment();
	  	$('.clip_left').fadeIn(600);
		$('.comments_left').fadeIn(600);
	   }
	 else
	   {
	  	$('.clip_left').fadeOut(50);
		$('.comments_left').fadeOut(50);
	   }
     
	 afterrotate();
     });

  $('.animate1').css("width",413).show(); //анимируем параллельно ещё один див (уменьшаем его ширину до 0)
  $('.b-load1').show();
  $('.animate1').stop().animate({"width":"0"},tim,ease, function()
     {
     $('.b-load1').html($('.b-load2').html())
     $('.num1').html($('.num2').html())
     
     $('.animate1').show();
     $('.animate1').css("width",413);
     });
}


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

Как авторизоваться на сайте за одну секунду:


Авторизация для подобного сайта, нужна для одной простой, но нужной вещи. Читатель не должен помнить, какую страницу он открывал в прошлый раз. Закладку на монитор не повесишь, а книги три и нужно помнить позицию в каждой из них. Я использовал замечательный сервис авторизации Loginza.ru

Авторизация при помощи Loginza

Нужная кнопка посередине. Кто хочет, кликнет и попробует, как просто авторизоваться при помощи: vkontakte, odnoklassniki, mail, gmail, facebook и так далее…
Тут же разместились кнопки Like от яндекса для всех социальных сетей. Счётчик LIKE'ов («ссылку на книгу разместили 22 читателя») работает перехватывая клики при помощи javascript.

Тут же можно выбрать фон для чтения, нажав на кнопку «сменить фон». Сдесь же можно выбрать одну из трёх книг и даже кликнуть в ссылку "скачать книгу".

Посчитать всех, кто скачал PDF, epub, mobi, fb2:


У меня нет необходимости монетизировать данный проект, поэтому скачка файлов бесплатная.
Выглядит страница так:

Скачать книгу социальную сеть Ковчег

Казалось бы, ничего сложного. Но как сделать счётчик на скачивание, если ссылки должны выглядеть по честному, вот так: «wezel.ru/book/download/kovcheg-1.fb2»?

Ещё по опыту работы с 4pda.ru, я помню, как часто ссылки утаскивают к себе на сайт и ссылки по типу: «download.php?file=kovcheg-1.fb2» очень не любят.

Это решается простым mod_rewrite:
RewriteEngine On
RewriteRule kovcheg-1.(.+..+)$ getfile.php?name=kovcheg-1&ext=$1
RewriteRule kovcheg-2.(.+..+)$ getfile.php?name=kovcheg-2&ext=$1
RewriteRule kovcheg-3.(.+..+)$ getfile.php?name=kovcheg-3&ext=$1


При этом сам скрипт getfile.php тут:
<?
header("Content-type: application/x-gzip");
$name = $HTTP_GET_VARS['name'];
$ext = $HTTP_GET_VARS['ext'];
$filename = $name.'.'.$ext;
if (!stristr($filename,'kovcheg')) exit;
if (stristr($filename,'..')) exit;

include "../pass_of_db.php";
$db = mysql_connect ($config[mysql_host], $config[mysql_user], $config[mysql_password]);
mysql_query("SET NAMES utf8");
mysql_select_db($config[base_name],$db);   
if (!$db) { echo "Ошибка подключения к SQL :("; exit();}

$sqlnews2="INSERT `1_books_log` (`id`, `identity`, `book`, `page`, `date`, `file`) VALUES (NULL, '".$_SERVER['REMOTE_ADDR'].' : '.$HTTP_COOKIE_VARS['identity']."', '-2', '0', NOW(),'".$filename."')";  
$result2 = mysql_query($sqlnews2); 

$fd = fopen ($filename, "r");
$code = fread ($fd, filesize($filename));
fclose ($fd);

switch ($ext) {
case 'fb2' :
echo $code;
break;

case 'epub' :
echo $code;
break;

case 'pdf' :
echo $code;
break;

case 'mobi' :
echo $code;
break;
}
?>


Так можно собрать статистику читателям, которые скачивают файлы, даже если ссылка находится на другом сайте.

Как выглядит моё рабочее место:


Я пишу книги тут:
Редактировать книгу социальную сеть Ковчег
Ничего лишнего и при нажатии F11, можно начинать строить в голове хрустальные замки сюжета. Ничего не отвлекает. Хром проверяет грамотность текста во время ввода, а нанятый мной корректор, после того, как я дописываю каждую книгу. У меня большая беда с запятыми, поэтому без корректора было бы сложнее.
В заголовке закладки браузера, у меня считается кол-во слов в редактируемой главе, это обеспечивает примерно равное кол-во слов в главе (примерно 2000).

В конце повествования, всегда идут комментарии:



Комментарии на книгу социальная сеть Ковчег

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

Про что собственно ваша книга? – спросите вы


Книги три и они разные.
1 книга: Это фантастическая трилогия о том, как главный герой попадает в Москву будущего. Прошло 1500 лет и наступил 36 век. Описывается со всеми подробностями их гаджеты, политика, природа, психология. Сможет ли «социальная сеть Ковчег» спасти человечество? Начало может показаться кому-то скучноватым, поэтому нетерпеливые, могут начинать с 18 главы. В конце книги у многих происходит разрыв шаблонов и задумчивость на несколько недель.

2 книга: Рассказывает про Америку нашего времени. Описывается природа различных человеческих зависимостей и методы их использования. Вы посмотрите на мировое устройство, которое нас окружает с неожиданной стороны. По сюжету, мы приходим к новой теории мирового заговора.

3 книга: Главный герой и 200 000 людей, попадает на другую планету. Её населяют необычные белые ангелы, которые видят сны, которые они не помнят. Главный вопрос романа, как две цивилизации уживутся друг с другом.

Лучше меня, про книгу расскажут отзывы читателей.

Приятного чтения.
Евгений @imater
карма
88,5
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Разное

Комментарии (83)

  • +9
    Я считаю, это прекрасно. И книги и принцип чтения.
    Вы же не будете против, если я попробую реализовать ваш код у себя? :-)
    • +5
      Пожалуйста. Если нужна будет помощь, пишите.
      • +1
        Отличная идея! Автору спасибо. Я тоже думал о том, чтобы сделать возможность чтения книги на своем сайте. Но «стрижка только начата». Ресурс только-только начал работать… Он несколько тяжеловат, но сделан для антуражности и создания настроения.

        Вопрос: что, если книга объединена с другими материалами, как в моем случае? piedpiper.ru
  • –14
    Прочитаю, содержательный коммент отпишу потом ))
  • +1
    Недостатки: жмете на скрепку, перелистываете страницу и после этого комментарии уже не убрать. Листание периодически подглючивает и получается некрасиво. При выделении перелистывается страница — это неудобно для тех, кто оставляет «закладки» подобным образом. Сама книга не масштабируется.
    • +2
      Спасибо. Учту и исправлю.
  • +15
    Написав первую книгу и получив множество хороших отзывов, у меня встал вопрос

    <grammarnazi>
    Я, конечно, дико извиняюсь, но книгу точно Вы писали?
    </grammarnazi>
    • +2
      Пардон, писал коммент одновременно с Вами.
      • +1
        В первой строке: «это проект который, длится уже 2 года»…
        • +2
          Да там много такого, это просто самое очаровательное место. Автор — Чехов, практически.
    • –1
      У меня вштал вопрос!
  • +6
    Написав первую книгу и получив множество хороших отзывов, у меня встал вопрос…


    Эта фраза наводит на мысль, что писательская деятельность выбрана Вами несколько преждевременно.
    • +3
      у меня встал вопрос…

      … у кого чешется ответ?
    • +6
      Автор написал, что это у него хобби.

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

      За такой доскональный подход и внимание к удобству читателя, автору почёт и уважение.

      Меня конечно раздражает безграмотность, но в данном случае этот недостаток с лихвой окупается способом подачи материала. Мне так кажется. :)
      • 0
        Нет, я понимаю, что статья не об изящной словесности. К сожалению, восприятие её сути затруднено косноязычием и безграмотностью. Это как листинг кода, в котором расстановка отступов не соответствует структуре и нарушены соглашения об именованиях.

        Кстати, тут — «За такой доскональный подход и внимание к удобству читателя, автору почёт и уважение» — запятая не нужна.
    • +1
      Я, к примеру, работаю сценаристом, но в сети позволяю себе не особо следить за стилем. Ну, ляпнул автор, с кем не бывает?
      Стиль — дело наживное. Главное, чтобы идея и сюжет были. Хотя, если за каждое слово глаз будет цепляться, это не дело.

      Закончу Мартина и попробую оценить «Ковчег» :)

      Вспомнилось, у Пехова в «Пересмешнике» словосочетание «труп мертвеца» встречал. Да и у более маститых авторов встречаются ляпы. Не стоит сразу придираться.
      • 0
        Это не стилистический недочёт, а синтаксическая ошибка. И не единственная — рядом же можно видеть орфографическую. Пунктуация вообще по всему тексту произвольная. Мучительно читать.
        • –1
          Тогда деятельность выбрана действительно преждевременно :)

          По поводу Пехова. Я его, если честно, с трудом воспринимаю как писателя. «Хроники Сиалы» даже не смог читать — настолько дилетантским мне показался текст. «Пересмешник», наверное, останется единственной книгой, которую я прочёл.
      • 0
        Вот как раз про пеховского «Пересмешника» я когда-то счёл нужным написать в ЖЖ: «…Сложилось впечатление, что автор писал не в полную силу, был невнимателен. Иначе как объяснить не то, что пестрящие по тексту, но неоднократные стилистические ляпы? Я об них периодически спотыкался. Волосы не могут быть блондинистыми, блондинистым может быть только человек, а волосы у него — светлые, русые или белые. Невежа перепутан с невеждой. Профиль не может быть трёхгранным, он — плоская фигура, проекция. Ну, и так далее». При том, что «Ничего, понравилось. Пристойный сюжет, атмосферный мир, сочный мультикультурализм и расовый вопрос, проблема технического прогресса».
  • +1
    Казалось бы, ничего сложного. Но как сделать счётчик на скачивание, если ссылки должны выглядеть по честному, вот так: «wezel.ru/book/download/kovcheg-1.fb2»?

    Помню, делал статистику показов картинок так:
    Пишем подробный лог обращений к файлу, и с помощью tail -f и пайпа направляем вывод на php-демон, который анализирует ввод и пишет в базу всё необходимое.

    Если используется nginx, то можно через X-Accel-Redirect подцепить.
  • +2
    Счётчик реализован особенно изящно.

    Решение по перенумерации страниц выглядит сильно громоздким, по самой задумке. Для нескольких книг еще потянет, конечно.

    Про Лукьяненко порадовало. Ну и да, я за скроллинг :-)

    Кстати, первоначально ожидал увидеть что-то в стиле вики, дабы читатели могли по мелочи править запятые и указывать на технические ляпы не только в комментах.
    • 0
      «В стиле вики» тоже бывает. Вот вспомнился "Ник", например.
  • +3
    Спасибо за такую открытость, интересный проект, интересная задумка.
    Из минусов, что бросилось первым в глаза
    — лично меня анимация перелистывания страниц раздражает, отключил бы с удовольствием.
    — так и не нашел как закрыть комментарии (http://prntscr.com/7x6l6), потыкался и просто свернул форму, чтоб не мешало prntscr.com/7x6m0
    — чтоб на ноутбуке уместилось, пришлось уменьшить масштаб. В результате чего слишком много свободного места появилось. Уж я бы не стал так сильно пытаться сделать сервис в виде книги в ущерб удобству.
    Это всё имхо, в любом случае Вы автор и спасибо Вам за такое разнообразие в рунете!
    • 0
      *В результате чего слишком много свободного места появилось по бокам.
  • +3
    В целом супер! Но не могу удержаться от замечаний о вещах, которые бросаются в глаза:

    1) в блоке пейджинатора написано например 0.5% из 970 — имхо или должно быть одним из вариантов:
    — 10 страниц из 970
    — просто 0.5%
    — 10 страниц из 970 (0.5%)

    2) при наведении на подвал книги появляется скролл, который закрывает собой всю информацию подвала — мне кажется нужно сделать скролл полупрозрачным или выводить его чуть ниже

    3) при перетягивании ползунка скролла во всплывающей подсказке текст последней строки выходит за рамки фона всплывающей подсказки

    4) кликнул «настройки», после чего кликнул на тело книги, «настройки» не свернулись, как ожидал, то же самое с содержанием

    5) авторизация — активный элемент строка, надпись, а картинка с изображением сервисов не активна, хотя на автомате обычно кликают именно ее

    6) закладка ниже книги: долго кликал — без результата :)
    • 0
      Спасибо. Исправлю.
      По поводу 6го пункта, искал в интернете скрипты «виляния», но не нашёл :)
      • +2
        7) при перелистывании скроллом хоть вперед хоть назад анимация всегда слева на право, как будто листаю назад
      • 0
        Кстати, считалку скачивания файлов и прочего может заменить нормальная система веб-аналитики типа Метрики.
  • +1
    Текущую страницу можно и в куке запомнить, но да да, тогда не будет повода регистрироваться на сайте.
    • +1
      Так идея в чтении с разных устройств, не?
      • +1
        А кому то и куки хватит на одним, не?
        • +2
          Не ссорьтесь. Куки — это правильно. Сделаю. Мало ли кому приспичит F5 нажать.
  • 0
    Остается добавить возможность совместного писательства книги
  • +4
    Желаю всяческих успехов, пишите вы уверенно четко, что не может не доставлять ))

    Но есть у вас пара багов.
    Первый, который всегда досаждает мне во всех ctrl-крутилках! Когда пишешь коммент и перескакиваешь между слов с помощью ctrl+стрелка листаются страницы и, как следствие, теряется комментарий.

    И второй, при падении с небоскреба ничего не почувствуешь, сознание теряется раньше.
    • +2
      Второе утверждение спорно, проверял во сне.

      Челябинску и автору — уважение!
      • +1
        Спасибо за добрые слова.
  • 0
    Лукьяннко был на безрыбье, поэтому и стартанул. Сейчас этого недостаточно, сейчас нужно ещё и писать уметь.
    ИМХО, конечно.
    А вообще, желаю вам всяческих успехов. Деепричастные обороты подтянуть, и вперёд!
    • +2
      Вот вы, товарищ, на мой взгляд, сейчас фигню сказали про безрыбье и особенно про неумение писать. Очень многие как раз больше хвалят ранние вещи Лукьяненко.
      • +2
        Я высказал своё мнение, никого не убеждаю в нём. «Очень многие» — это не аргумент, скорее наоборот.
        Когда в сети появлялись эти тексты, был бум компьютерный, а среди писателей-фантастов старые советские уже отжили своё, а новые ещё только появлялись. Поэтому всё это получилось очень коньюнктурно и свежо — русский писатель, да про компьютеры…
        • 0
          Последняя фраза вогнала в задумчивость. А ведь и правда, в то время лично мне именно «про компьютеры» запоминалось лучше. «Лабиринт отражений», «Принц Госплана», «Нажмите Enter».
          • +2
            Это всем лучше запоминалось… На то и рассчитано было. Романы про компьютерщиков для компьютерщиков. Хороший расчёт, молодец — психолог-маркетолог.
            Я «Лабиринт отражений» прочёл в своё время, на волне. Остальные уже не пошли,- к примеру «дозоры» эти раскрученные и прочее. В дозорах, кстати, главный герой опять изначально сисадмин, который потом внезапно крутеет — хитро, да? Игра на комплексах читателей.

            В СССР было книг не так много, и трудно их было достать. Фантастики мало было. Помните: «Я по Москве весь день бегал, подарок искал, по твоему заказу! Полное собрание фантастики!»

            Ну и тут вдруг попёрло. В результате, кто первый встал, того и тапки.
            А уж когда пошла волна переводов, и мы вплотную познакомились с авторами международного уровня… И сквозь пиратские переводы начало просвечивать такое…

            Я сравниваю с Жюлем Верном, Беляевым, Хайнлайном, Желязны, Шекли, Саймаком… Как говорится — думайте сами, решайте сами. Повторюсь — не хочу никого уговаривать, упаси бог. Каждый сам думает и сам решает. Раз уж топик такой, то и мысли в тему.
  • +1
    Знаете, лень как-то возиться с этим веб-интерфейсом, скачал fb2, загружу в андроидофон.
    • +1
      Знаете, как-то лень возиться с ручным скачиванием fb2. Ткну пару кнопок в aFlibusta на андроидофоне
      • 0
        Разве? Такой книги там нет.
  • +3
    Лично мне ваш проект очень по душе. И плевать на недостатки — я сам в веб-строительстве ни фига не разбираюсь :)
    У меня тоже хобби — писательство, тоже есть сайт захудалый (на вордпрессе, с одним из бесплатных шаблонов).
    Но всё же я считаю, что не смогу считаться писателем, пока у меня не будет опубликован хотя бы один роман. Рассказы в журналах не в счёт :)
    А пока получилось найти даже работу по хобби: работаю сценаристом в одном интересном проекте. Это параллельно основной работе (сопровождение ИТ-систем банка). Что интересно, обе работы приносят одинаковый доход :)
    Мечтаю однажды совсем соскочить с ИТ-шной сферы.

    А вы пытались куда-то в издательства продвинуть книги?
    • +3
      > тоже есть сайт захудалый

      Это ни в коем случае не значит, что ваш захудалый :)))
  • 0
    Вопрос не разбирающегося в этом человека: не смотря на то, что Ваши тексты предоставляются Вами же безвозмездно, с Вас могут потребовать отчисления за публикацию авторского материала? :)
    • +1
      Кто??? :)
      • 0
        Организации, живущих на «защите» авторских прав :) Много же похожих случаев было…
        Если такого каламбура нет, то и хорошо )
      • 0
        Ну кто-кто… РАО и Михалков.
  • +1
    Да, сайт просто очень крутой.
  • 0
    А у вас предусмотрено изменение размера шрифта? Ведь в таком случае на книгу придется постоянно пересчитывать «координаты» разрезания глав по страницам
    • 0
      Планируется сделать несколько форм подачи текста с тремя размерами шрифтов и без обложки книги.
      Просчитать координаты страниц для глав, в таком случае не проблема.
      В том числе будет версия для iPhone и другие мобильные платформы.
  • НЛО прилетело и опубликовало эту надпись здесь
    • 0
      У меня Kindle DX, только что проверил – всё открывается. Может скачать файл ещё раз? Если не получится, на комментарий ниже, есть ссылка на txt версию первых двух книг.
      • 0
        У Вас докачка не работает (и работать не будет, пока Вы её ручками не допишете). Статистику лучше делать средствами вебсервера.
    • 0
      PDF вообще наихудший формат для худлита

      по идее, наиболее продуманный ePub должен восторжествовать на всех платформах
  • +1
    При всей грандиозности проделанной работы, простую txt-версию с километровым скроллингом лучше тоже оставить. Я, например, долгое время читал книги именно в txt-версии через BookR для PSP (программа поддерживала и закладки и прочие плюшки, но работала только с txt/pdf, причём с последним неторопливее).
  • +1
    Я смотрю что-то уже XSS нашел и развлекается.
    • –2
      Было такое. Было весело. Intval и strip_tags помогли (может временно).
      • +1
        htmlspecialchars($string, ENT_QUOTES);
        проще и надежнее, чем strip_tags в большинстве случаев.
        • 0
          тем более что strip_tags совершенно для другого предназначена, а не для «борьбы» с XSS %)
  • +3
    Параметры запросов к БД неплохо бы экранировать…
    • +1
      весь код — говно, если так по-честному
      какой-то адский привет из начала 00-х
  • 0
    Большое спасибо!
  • +1
    Помогу с серверной и клиентской частью. Безвоздмездно, тоесть дадом :). Если интересно — пишите в личку.
  • 0
    Очень странные артефакты на полосе скролла… долго думал — быть может так задумано?

    image

    WinXP SP3 Chrome 18.0.1025.151
  • 0
    А как у вас теперь свои произведения опубликовать можно? :)
    • 0
      Есть в планах такая функция, но пока это очень далеко.
      • +2
        Я как бы просто намекаю, своего ничего нет, но сама модель — интересная.
    • 0
      Если ищете площадку для публикации, где не забывают о читателях, попробуйте escalibro.com
  • 0
    На разрешении 1366x768 сайт целиком не помещается по высоте, скроллится примерно на 15% вверх-вниз без необходимости. Немного раздражает, но не критично.
  • +1
    Отличная идея, восхищен.
    Сам уже не первый год нахожусь в поиске как бы получше сделать жене сайт — чтобы одновременно отобразить все виды деятельности. Театр, книги, рок-группа… обычную домашнюю страничку делать скучно, а никаких лучше идей пока не пришло :-) Поздравляю с удачным решением вопроса.
  • 0
    для прокачки перфекционизма еще нужно:
    1. Сделать висячую пунктуацию;
    2. Небольшая тень для названий глав, будет шрифт без лесенки;
    3. Поубивать висячие предлоги, а также слова и строки-сироты;
    4. Я бы убрал назойливый блок авторизации из центра вправо, например;
    5. Наиболее комфортно для чтения, когда в строке 60-65 знаков с пробелами;
    6. Моя чисто вкусовая хотелка, сделать метафору книги более абстрактной, просто контур начертить.
  • 0
    imater, на что же вы живёте?
    • 0
      Как большая часть России. На продажах наших услуг и перепродажах иностранных четырёхколёсных товаров.
  • +1
    Вспомнил где видел такой эффект: builtbywill.com/code/booklet/
    Может быть будет полезно…
    • 0
      Мне одному мешает такое перелистывание? (что у автора статьи, что у booklet плагина реалистичность настолько плохая, что хочется закрыть глаза и листать с закрытыми глазами...)
  • +1
    Всяческие поздравлялки и пожелалки творческих узбеков!

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

    Сейчас уже появились сервисы для печати книги по заказу для тех кто хочет читать с листа и держать книгу на полке. Не пробовали с ними связываться? Я знаю две конторы, но еще не печатал у них.
  • 0
    наш текст будет выглядеть очень разряжённым и некомпактным

    разрежённым
  • +1
    за сайт спасибо!
    Идея хорошая, хотелось бы еще переключение в режим нормального текста
    и сделайте отображение автора хоть где-то :)
    в конце концов, я, конечно, нашёл где это написано, но лучше где-то поближе разместить… сверху книги например или первой страницей книги…
  • –1
    Реализация восхитительна! Добавил в закладки, обязательно почитаю ваши книги.

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