• 4643
  • 159
  • 4
Нравится блог?
Подписывайтесь!

Коппа — система орфо сообщений

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

первоисточник: http://network.com.kz/javascript/53-koppa.html

Так как в проекте уже использовался jQuery, решено было воспользоваться функциями этого JS фреймворка и решать поставленную задачу с его помощью. Собственно задача решена и небольшой скриптик, который был написан за пару часов, отправляется в свободное плаванье.

Для работы нам нужно:

1. jQuery оттуда, http://jquery.com/

2. Коппа отсюда, http://network.com.kz/show/js/koppa/koppa.js

3. Пишем простенький PHP скрипт для отправки сообщения на эл. почту (скрипт ложим в корень сайта)

/**
* Коппа — система орфо сообщений
*
* @автор        Хрищатый Максим
* @копирайты    Copyright (c) 2005-2008, Laboratory Khrishhatogo.
* @веб-сайт     http://www.laborant.kz
* @сборка       1.0.1
*/

#подключаем MySQL
$link = @mysql_connect("localhost", "имя пользователя", "пароль")
or die ("Соединение с сервером MySQL не установлено!");

@mysql_select_db("имя базы",$link)
or die("Необходимая база данных отсутствует на сервере MySQL!");

@mysql_query ("SET NAMES cp1251");

#из грязи в князи
function windows1251_decode_iconv($str) {
$str = iconv("utf-8", "windows-1251", $str);

return $str;
}

#обозначение переменных
if (isset($_SERVER['REMOTE_ADDR'])) $ip = $_SERVER['REMOTE_ADDR'];
else $ip = "";

if (isset($_GET['text'])) $text = $_GET['text'];
else $text = "";

#обычный 2007-12-21
$d = date("Y-m-d");
#обычный час формат [1..24]
$g = date("G");

$ok = 0;

#ЗАПРОС /-> статистика
$sql = @mysql_query("SELECT u
FROM koppa
WHERE date = '$d'
AND hour = '$g'
AND ip = '$ip'");

if (@mysql_num_rows($sql) == 0) {

#ЗАПРОС /-> вносим информацию в статистику
$sql = @mysql_query("INSERT INTO koppa (u,date,hour,ip)
VALUES (
'1','$d','$g','$ip'
)");

$ok = 1;
}
else {
$malyava = @mysql_fetch_assoc($sql);

if ($malyava['u'] >= 3) {
echo "Ваш IP заблокирован за СПАМ!";
}
elseif ($malyava['u'] < 3 && $malyava['u'] >= 1) {

#ЗАПРОС /-> обновляем статистику
$sql = @mysql_query("UPDATE koppa
SET u = u+1
WHERE date = '$d'
AND hour = '$g'
AND ip = '$ip'");

$ok = 1;
}

@mysql_free_result($sql);
}

if ($ok == 1) {

//отправляем собщение
$to = "ЭЛ. ПОЧТА ВЕБ-МАСТЕРА";
$subject = "Коппа орфо ошибка";
$message = windows1251_decode_iconv($text);
$headers  = "MIME-Version: 1.0" . "\r\n" .
"Content-type: text/html; charset=windows-1251" . "\r\n" .
"From: ". $to . "\r\n" .
"Reply-To: " . $to . "\r\n" .
"X-Mailer: PHP/" . phpversion();

mail($to, $subject, $message, $headers);

echo "Ваше сообщение получено";
}

#ЗАПРОС /-> закрываем соединение
@mysql_close($link);
?>

4. Структура базы MySQL

CREATE TABLE IF NOT EXISTS `koppa` (
`u` tinyint(1) NOT NULL default '0',
`date` date NOT NULL default '0000-00-00',
`hour` tinyint(2) NOT NULL default '0',
`ip` varchar(16) NOT NULL,
PRIMARY KEY  (`date`,`hour`,`ip`),
KEY `u_views` (`u`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;

5. Подключаем

<!-- jQuery -->
<script src="jquery.js" type="text/javascript"></script>
<!-- Коппа -->
<script src="koppa.js" type="text/javascript"></script>

6. Информируем посетителей

Не забудьте поместить кнопочку, которая будет информировать посетителей о том, что они могут помочь редакторам при выявлении ошибки на сайте.

А теперь внимание! Когда будите размещать кнопочку не забудьте присвоить тегу img специальный id="koppa"

7. Заходим на сайт, выделяем текст, нажимаем Shift+Q

Если руки прямые — работать будет :)

NetWork
20 января 2009, 10:19
1226

Загрузка...

Комментарии

Прикольно, но слишком низкоуровнево-специфично.

Вот это:

> $link = @mysql_connect("localhost", "имя пользователя", "пароль") or die ("Соединение с сервером MySQL не установлено!");
> @mysql_select_db("имя базы",$link)
or die("Необходимая база данных отсутствует на сервере MySQL!");

называется монадой Either. Жестоко жалею, что в явном виде монады встречаются только в Haskell.
Существенный минус в вашем проекте это jQuery.
Вы сделали малюсенький проектик, который требует подключения некой библиотеки… быть может ссылаясь на то, что она многими используется но на деле все иначе… там где не использует придется ставить jquery, а там где используется другая lib'a его ставить не захотят…
Гораздо логичнее было бы сделать все это на нэйтив JS… учитывая что ума там много и не нужно…
Event Listener + xmlHTTPRequest ( по желанию )
> Гораздо логичнее было бы сделать все это на нэйтив JS… учитывая что ума там много и не нужно…
> Event Listener + xmlHTTPRequest ( по желанию )

1. Системы растут от простых к сложным.
2. IE

Поэтому лучше юзать любую библиотеку, но не чистый JS.
Человек который более менее не плохо знает JS сможет написать крос платформенный скрипт без библиотек…
Лучше юзать библиотеку тогда, когда это твой проект и ты будешь её юзать еще… но когда ты делаешь продукт из 100 строчек который не будет работать без огромной либы — это не правильно…

IE ? И что IE ? Ну jQuery ведь работает в IE, а там не космический код… такой же любой смертный напишет, что мешает?
> Человек который более менее не плохо знает JS сможет написать крос платформенный скрипт без библиотек…

Чистый JS неюзабелен как раз из-за жутких реализаций в браузерах. "A very hostile environment" (кто-то с Ajaxian)

> но когда ты делаешь продукт из 100 строчек который не будет работать без огромной либы — это не правильно…

Три соображения на этот счет:

- библиотеки позволяют значительно сократить количество набиваемого кода (сравни выражения CSS/XPath и обход дерева элементов вручную, методами DOM). Меньше кода -> меньше возможностей ошибиться.

- code bloat таки есть (20 kb jQuery vs 1 kb native), и пока что нету способа убрать его (был бы, если бы не природа JS :(), но эту разницу никто не заметит на сегодняшних скоростях

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

> IE ? И что IE ? Ну jQuery ведь работает в IE, а там не космический код… такой же любой смертный напишет, что мешает?

Отсутствие времени. Если за тебя этот долбаный баг уже поправили, зачем наступать на грабли еще раз?
Я тебе в 3 раз повторяю, продукт такого рода должен быть STANDALONE.
Я знаю для чего и почему юзают библиотеки… я 1.5 года пишу на JavaScripte и знаю что тут и почём…
посмотри на орфус и поймешь почему он лучше чем ЭТО.
Грубо говоря… когда ты приходишь в автосалон и хочешь купить машину, а тебе говорят, что без гаража она продаётся… ты удивишься так же как и я.
Синдром Not Invented Here до добра не доведет.

В принципе, ладно, это не мое дело. %)
Причём тут Not Invented Here?
Я не пропагандирую native код… мне он самому не нравится… я просто на все 100% уверен, что такая программа должна быть standalone…
Возьми в сравнение… по всему интернету гуляет скрипт орфус… который весит 10кб… он сам по себе и отлично работает…
Слушай… если у тебя будет проект где нужно будет один элемент при клике скрыть и показать… больше JS не будет… ты будешь подключать стороннюю либу? )) просто интересно?)
Фишка-то в том, что сначала надо будет просто скрыть, потом замутить плавную анимацию, потом добавится другой элемент, который будет зависеть от первого, потом еще что-нить...
Фишка в том, что в жопу анимацию… задача
Скрыть и показать обратно… четко и ясно.
Не в обиду вам… но преверженцы вашей модели запихивают свой любимый фреймворк для самых простейших задач… даже анимацию банальную можно сделать без либы… но не нужно на этом заморачиваться…
Видел кучу проектов, где именно для того, чтобы сменить цвет или скрыть-показать… юзают фреймворк…
Заказчики любят менять все подряд: задачи, цели, сроки, исполнителей. :)
Вы меня не слушаете и уходите от ответа.
Ваша задача. Сделать Кнопку которая меняет цвет фона и выводит некий текст в некий блок ( div )… все больше никаких задач нет…
У меня нету любимого фреймворка, я вообще ненавижу веб и фон-неймановские компьютеры...

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

Граничные случаи бывают, да. Конечно же, чтобы поменять цвет, не нужен фреймворк. Нужна библиотека комбинаторов или даже просто функция, которая сгладит различия в браузерах. Если ее напишут за разработчика, то почему бы не взять готовенькое, тем более, что там скукотища/исправление чужих багов?
Честно вам скажу, что чтобы поменять цвет, скрыть или показать левую функцию не нужно) данный пример не имеет разных решений под разные браузеры… у такой простой задачи нет кросс-платформенных проблем.
По-моему, с библиотечкой быстрее. Пеар Flapjax:


// btn - id кнопки
// back - id элемента-фона
// txt -- id элемента с текстом
function dothehardwork(btn,back,txt) {
var valE = extractValue_e(btn, 'click');
var colE = valE.constant_e('#FF0');

var txtE = valE.collect_e(false, function(_,x) {return !x;}).transform_e(function(x) { return x? 'block' : 'none';});

insertValue_e(txtE, txt, 'style', 'display');
insertValue_e(valE, back, 'style', 'backgroundColor');
}


Все-таки проще, чем через DOM, и расширяется лучше.
var divForText = document.getElementById("test");
var divForHide = document.getElementById("test2");
var buttonForAction = document.getElementById("buttonForAction");

buttonForAction.onclick = function()
{

divForText.innerHTML = "Привет";
if ( divForHide.style.display == "block" )
divForHide.style.display = "none";
else
divForHide.style.display = "block";
}

==
Этот код поймет любой JavaScript программист. не вдавясь в подробности.
Что-то ты перемудрил... ))
Чуть-чуть оффтопа.

Раз уже речь зашла про Javascript-программистов, помните статью Dean Edwards'a про уровни знания JS?

Нужно юзать addEventListener/attachEvent. )))
Плюс ко всему, все эти прямые бинды onclick'ов вызывают memory leaks в IE.
Мне это свойственно. :)

В сложных приложениях Flapjax зарулит callback'и, конечно!
Скинь ссылку плз, я что-то такое не припомню.
Я хотел максимально быстро пример показать :)
у jQuery имхо именование методов понятнее =)
Ремарка. У любой другой библиотеки. ))
jQuery основана на другом принципе.

Flapjax основывается на реактивном программировании, потому и код такой "странный" на первый взгляд. Кстати, хорошая штука, может сэкономить кучу времени на отладке событий и AJAX в сложном проекте (веб-приложение, например).
Да кстати… в php скрипте улыбнуло… если 3 раза человек нашёл ошибку — он спамер… а может он просто хорошо язык знает? Вроде бы доброе дело делает, решил весь сайт проверить… а ему — ПЫДЫДЫЩ! Ты спамер ! о_О? Хотя конечно)) это все настраивается :)
Кстати… скорее всего проект Котерова ваш вдохновитель — orphus.ru ( нативный код, 10кб )
Сорри, что пишу в комменте. Подскажите как мне начать писать в своем блоге? только что зарегился. вроде могу писать коммент, но когда кликаю по своему профайлу, вкладку Блог не работает - не видит что это я владелец профайла, поэтому не появляется кнопки - управление блогом.
Жмыкай "Мой блог" -> "Управление блогом" -> "Создать запись"
В том то и дело, что такой вкладки как Мой блог не появляется. Потому что когда захожу в свой профайл, он идентифицирует меня как постороннего человека, а не владельца профайла. Как быть?
Браузер какой? IE сильно советую хотя бы обновить (а еще лучше выкинуть).
Ну ты брат, совсем не в тот пост на писал свой комент:)
Пишу админам. в самом внизу сайта есть вот такое слово- "Тех. поддержка"
жми на нее и пишу свою проблему!
Я вроде на русском языке пишу. Почему никто внимательно не может отнестись к моей проблеме? Я же уже третий раз пишу: Нет у меня это вкладки "Мой блог", а соответственно нет и кнопки "управление блогом", которая находится во вкладке "Мой блог"

Ещё раз хочу объяснить. Зайдите на мой профайл. Что вы увидите?... Вот то же самое вижу и Я!!!! То есть на свой профайл, где и находится вкладка "Мой блог" система выбрасывает меня как постороннего пользователя. Вы можете управялит моим блогом? вы видите у меня в профайле вкладку "Мой блог"... И Я тоже не вижу.
Это что? какие-то проблема с блог-платформой?
Это счастливый аккаунт… вы выйграли способность не писать в блог )
Пацан, мне щас не до шуток.

Скорее это такая ипанутая блог-платформа, что не позволяет половине зарегистрировавшихся писать в свой блог. Это претензия к создателю. Устрани этот баг.
Ты слишком сильно напрягаешься =)
тебе сюда писать нужно makemehappy2.yvision.kz
Привет. Можете прислать скриншот в личку?
Фу, как грубо. Какой браузер? Включены ли куки?
Я не напрягаюсь, пацан. Я тупых шуток не выношу.
Ты создатель yvision'a, если нет, то лучше не комментируй мои слова. Это совет.
Ой какие мы суровые… =) самое пездатое слово в твоих комментах это «пацан»… раскрывает тебя!
ежжжевика!!
Совет наверное хороший, только как-то вдоль стены )) не нравится не смотри))
Да, именно так и выходит. Понятно теперь, что я имел ввиду? на свой профайл система выбрасывает меня как постороннего пользователя.

Да, ребятки, похоже я обнаружил баааальшой баг в вашей системе. Акционеры казахтелекома будут недовольны таким обстоятельством. Ведь этот баг элементарно не дает возможности доступа на свой профайл для вновь зарегистрировавшихся. Поэтому нет роста числа пользователей.
Мне кажется Ювижн обрёл душу… и интуитивно решает… кому писать, а кому нет… видишь какой грубиян! система обороняеся)
Слышь, падла. Если такой борзый, кидай сюда свой мобильный. Пообщаемся.
За ежжи ответишь, сучара.
Надеюсь ты в городе Алматы. Но в любом случае я тебя из-под земли достану в любой точке планеты Земля.
Вообще-то я просил скриншот этой страницы из под Вашего аккаунта.

Скажу Вам по секрету... только тсс... Акционеры казахтелекома могут идти в жопу.
С таким успехом у Вас так и не получится пописать в своем блоге... да и покомментировать тоже.
Пацан сказал - пацан сделал.
Казахтелеком за такие слова вам везде кислород перекроет. Последние штаны свои продадите.
Ты че не понимаешь. Как я тебе пришлю скриншот, если он профайл не открывает, соответственно нет кнопки отправить мэйл, и вообще нет личного почтового ящика. Ну как можно быть таким тупым?. Скриншот ему в личку из-под аккаунта - подумайте сначала головой наконец. Свою систему не знаете что ли?
Я тебе ещё устрою жесть. Мог бы и не убирать свою харю с аватарки, я уже скопировал её. Я знаю где тебя искать.
Любишь Java-технологии?, я тебя так отджавлю, что будешь жалеть, что произнес эти слова, я имею ввиду "ежжи". За свой гнилой базар ответишь по полной программе, мразь. В следующий раз сначала хорошо подумаешь прежде чем называть кого-либо ежжом, понял сучара?
7 этаж, достану из-под земли.
:)))
какой злой! Чтобы меня достать из под земли тебе еще лет 50-60 ждать нужно ^_^
тебе не нравятся ягоды? ежжживка… ?
С Вами все понятно...
1. Будьте мудрее, я ведь сразу написал, что КОППА была создана под jQuery потому, что библиотека уже использовалась в проекте.

2. Наш вдохновитель - это наш заказчик (на сайт орфус даже не заходили, но про проект знаем)

P.S. Когда Вы идётe и на Вас лает собака, Вы становитесь на четвереньки и начинаете лаять её в ответ? (тот, кто мудр тот поймёт)
с этим согласен, просто я склонялся в сторону того, что такой проект в массы нужно)

Оставьте свой комментарий

Спасибо за открытие блога в Yvision.kz! Чтобы убедиться в отсутствии спама, все комментарии новых пользователей проходят премодерацию. Соблюдение правил нашей блог-платформы ускорит ваш переход в категорию надежных пользователей, не нуждающихся в премодерации. Обязательно прочтите наши правила по указанной ссылке: Правила

Также можно нажать Ctrl+Enter

Популярные посты

Что дал Казахстану переход к трехступенчатой судебной системе?

Что дал Казахстану переход к трехступенчатой судебной системе?

С 1 января 2016 года Казахстан перешел на трехступенчатую судебную систему. Данные изменения действуют уже более 8 месяцев, и в данной публикации мы попробуем разобраться, что это дало Казахстану?
RuSnake
24 сент. 2016 / 11:50
  • 13074
  • 3
В октябре 2016 года состоится VII съезд судей Казахстана

В октябре 2016 года состоится VII съезд судей Казахстана

Проведение съездов судей позволяет принимать стратегические решения по вопросам развития судебной системы и способствует укреплению принципов независимости судейского сообщества.
elawkz
23 сент. 2016 / 13:45
  • 11078
  • 0
О законе законов: Замолвите слово о справедливости

О законе законов: Замолвите слово о справедливости

Акимат г. Астаны предлагал собственнику компенсацию...4 тенге 13 тиын за землю. Потолкуем о справедливости?
mirabeisenova
23 сент. 2016 / 16:39
  • 10879
  • 5
Я –живой пример того, что для начала собственного дела не нужны большие деньги

Я –живой пример того, что для начала собственного дела не нужны большие деньги

Сегодня утром ко мне позвонила тетя и сообщила, что хочет открыть свое дело, но не знает с чего начать и не уверена, хватит ли ей первоначального капитала. Вы не представляете, как она удивилась, когд
toskanbayev_a
21 сент. 2016 / 16:45
  • 10609
  • 28
США открыла у нас лабораторию смерти. Даже Есимов не знал о её существовании

США открыла у нас лабораторию смерти. Даже Есимов не знал о её существовании

Думаю, не многие знают, что 9 сентября этого года в городе Алматы была открыта сверхсовременная биолаборатория, предназначенная для хранения опаснейших патогенов. Конечно же, с ее строительством...
Duraton
вчера / 18:50
  • 10083
  • 76
Кызылорда: перезагрузка, или что изменилось за последние несколько лет

Кызылорда: перезагрузка, или что изменилось за последние несколько лет

В преддверии Дня города мы решили вспомнить, как росла и развивалась наша родная Кызылорда в последние годы. Хотим поделиться своей любовью к родному городу с читателями Юви в этой фотоподборке ...
socium_kzo
22 сент. 2016 / 10:09
  • 6930
  • 9
Сватовство в Казахстане или Заберите скорее мою дочь к себе

Сватовство в Казахстане или Заберите скорее мою дочь к себе

Всю мою сознательную жизнь мне приходилось ходить в гости. В гостях неплохо, не спорю. Бесплатная еда и напитки. В особо продвинутых семьях ещё предоставляются услуги Free Wi-Fi. В особо весёлых...
almatinec_92
23 сент. 2016 / 9:33
Apple – это уже прошлое. XIAOMI тихо стал настоящим и будущим

Apple – это уже прошлое. XIAOMI тихо стал настоящим и будущим

Безусловно мы все относимся с большим уважением с Стив Джобсу. Но его уже больше 5 лет нет с нами. Бессмысленно продолжать фанатеть от продукции Apple...
GALAN
22 сент. 2016 / 23:19
  • 3900
  • 14
Оралманка из Китая! Надеюсь, ты встретила того, кто по достоинству оценил тебя...

Оралманка из Китая! Надеюсь, ты встретила того, кто по достоинству оценил тебя...

В один прекрасный день я все же подошел к ней и попытался с ней нормально поговорить и пригласить куда-нибудь погулять или поужинать. Мы разговаривали с ней минут 20, я использовал весь свой...
Timurkhan
23 сент. 2016 / 12:26
  • 3706
  • 11