понедельник, 27 октября 2008 г.

Статьи: Vkontakte.ru: несколько интересных фактов о социальной сети №1

1) По посещаемости “Vkontakte” занимает третье место в Рунете, уступая лишь «Яндексу» и Mail.ru. Ежедневно на сайт заходит около миллиона человек и просматривается более 130 миллионов страниц.

2) В плане продвижения “ВКонтакте” является настоящим вебдванольным проектом - сеть активно продвигали сами пользователи, посредством “сарафанного радио”. Не использовались покупка дорогих баннеров и контекстная реклама

3) Психологи уже всерьез говорят о симптоме зависимости от “Vkontakte “.

4) Несмотря на запоминающийся URL «Vkontakte» активно ищут посредством ПС. Вот статистика «Яндекс.Директ» за последний месяц (21.09-21.10):

vkontakte - 293 319 показов
vkontakte ru - 206 335 показов
вконтакте - 191 858 показов
www vkontakte - 87 634 показов
www vkontakte ru - 86 696 показов
вконтакте ру - 16 088 показов
v kontakte - 6 438 показов
вконтакте ru - 6 123 показов
граффити вконтакте - 1 261 показов

5) Прототипом “Vkontakte” является западная сеть Facebook. Сети схожи как по концепции, так и по верстке, дизайну и функционалу.

Facebook активно используется в маркетинговых и PR целях, причем кампании в этой социальной сети проводят такие гиганты как Mc’Donalds, Wal-Mart и Target (однако не всегда кампании проходят гладко). Рекламные и PR кампании, проводимые в отечественном “Vkontake” пока локальны и носят любительский характер. Однако уже сейчас можно прогнозировать рост интереса к сервису со стороны маркетингового сообщества.

6) До сих пор не ясен вопрос с финансированием проекта. Для поддержки проекта необходимы значительные средства, в частности для оплаты мощных серверов и оплаты работы команды программистов (на одном из форумов даже приводились примерные расчеты затрат), однако рекламы на проекте нет. Существует несколько мнений относительно того, кто является “покровителем” проекта, наиболее популярна версия об участии спецслужб.

7) Vkontakte далеко не единственный игрок в рунетовской нише социальных сетей. Из других известных сайтов подобного типа можно выделить первопроходца «Odnoklassniki», яндексовский «MoiKrug» и майловский «МойМир». Однако Vkontakte лидирует с большим отрывом.
Опасность, с которой может столкнуться «Vkontakte» в дальнейшем - приход локализованных версий западных социалок: Facebook, MySpace, Squidoo.

8) В «Vkontakte» зарегистрировано 22 Жириновских, 39 Дим Биланов и 14 Ксюш Собчак. Часто на их стенах можно увидеть восторженные дифирамбы фанатов, а также вопросы вроде «А вы действительно настоящий??? КРУТО!». Также не редки горячие дискуссии клонов о том, кто из них настоящий.

9) Создатель «Vkontakte» - Павел Дуров выпускник филологического факультета СПбГУ. По словам Павла, ему неоднократно поступали предложения о покупке проекта со стороны как российских, так и иностранных инвесторов. На стене Павла – более 18 000 записей, по большей части это слова благодарности.

воскресенье, 26 октября 2008 г.

Статьи: Шифрование методом Атбаш

Некоторые фрагменты библейских текстов зашифрованы с помощью шифра, который назывался Атбаш. Правило зашифрования

состояло в замене i-й буквы алфавита буквой с номером n - i + 1, где n - число букв в алфавите.

Происхождение слова Атбаш объясняется принципом замены букв. Это слово составлено из букв Алеф, Тав, Бет, Шин, то есть первой и последней, второй и предпоследней букв древнесемитского алфавита.

Функция, шифрующая строку методом Атбаш, имеет вид:

Код:

function Atbash(toCode: string): string;
var i: integer;
begin
  for i := 1 to length(toCode) do
  toCode[ i ] := Chr(256 - Ord(toCode[ i ]));
  Atbash := toCode;
end;


{ Использование: }
var
  s: string;

begin
  s := Atbash('Just a test');
{ зашифровать }
  writeln(s);
  writeln('s = ', Atbash(s));
{ расшифровать }
end.


Для дешифрования сообщения нужно просто повторно применить к нему этот же алгоритм.

Статьи: Шифрование методом Льюиса

(я проверял на латинском алфавите, поэтому Alpha_Hor следует заполнить символами русского алфавита, и в Len написать их количество)

+ еще кое-что важное. Эта программа оставит символы, не присутствующие в строке Alpha_Hor без изменения. То же самое касается и заглавных букв (хотя заглавные буквы можно внести в эту самую строку).

Код:

const
  len = 26;


  {Это символы для выбора столбца таблицы}
  alpha_hor: string = 'abcdefghijklmnopqrstuvwxyz';

  {Здесь будут символы для выбора строки таблицы}
  alpha_ver: string = '';

var
  {Это собственно таблица кодирования}
  table: array[1 .. len, 1 .. len] of char;

{функция получает строку S и возвращает строку,
  полученную из исходной сдвигом на N позиций}
function shift(s: string; n: integer): string;
  begin
  s := copy(s, length(s) - pred(n), n) + s;
  delete(s, length(s) - pred(n), n); shift := s
  end;

var
  i, j, row, col: integer;
  s: string; ch: char;

  key: string;
  is_russian: boolean;
  f_in: file of char; f_out, f_key: text;
begin

  { Заполнение таблицы кодировки }
  for i := 1 to len do
  begin

  {получаем строку символов для текущей строки таблицы}
  s := shift(alpha_hor, pred(i));
  for j := 1 to len do
  table[i, j] := s[j];

  {
  не забываем первый символ заносить в "хранилище"
  для выбора строк по кодируемой букве
  }
  alpha_ver := alpha_ver + s[1]
  end;


  { связываем логические файлы программы с физическими файлами на диске }

  {файл с фразой для кодирования - открываем для чтения}
  assign(f_in, 'f_00in.txt');
  {$i-} reset(f_in); {$i+}

  {файл для сохранения результата - открываем для записи}
  assign(f_out, 'f_00out.txt');
  {$i-} rewrite(f_out); {$i+}

  {
  файл, содержащий ключевое слово - открываем для чтения,
  считываем слово в строковую переменную и закрываем файл
  }
  assign(f_key, 'f_00key.txt');
  {$i-} reset(f_key); {$i+}
  readln(f_key, key);
  close(f_key);


  {счетчик закодированных символов}
  i := 0;
  {до конца кодируемого файла делаем следующее:}
  while not eof(f_in) do
  begin

  {читаем очередной символ}
  read(f_in, ch);
  {находим по нему строку таблицы}
  row := pos(ch, alpha_ver);
  {
  эта переменная содержит значение успеха предыдущей операции
  (если True, то символ присутствует в таблице, иначе False)
  }
  is_russian := (row > 0);
  if is_russian then
  begin

  {Если символ присутствует в таблице, его надо кодировать}

  {увеличиваем счетчик закодированных символов}
  inc(i);

  {
  находим столбец по значению ключевого символа
  (операция mod используется, чтобы исключить выход
  за пределы ключа, т.к. длина ключа обычно меньше
  длины шифруемой последовательности)
  }
  col := pos(key[i mod (length(key))], alpha_hor);
  {и заменяем простой символ на зашифрованный (из таблицы)}
  ch := table[row, col];
  end;

  {
  если символ надо было шифровать, он уже зашифрован,
  если он не может быть зашифрован, он остался без изменений.
  Пишем его в выходной файл
  }
  write(f_out, ch)
  end;


  {И закрываем оба файла: исходный и зашифрованный}
  close(f_out);
  close(f_in)
end.