• 5132
  • 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
1303

Загрузка...
Loading...

Комментарии

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

Вот это:

> $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

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

О проститутках, ЗППП и других сексуальных страстях

О проститутках, ЗППП и других сексуальных страстях

У меня обширный сексуальный опыт, и я этим не хвастаюсь. Будь у меня возможность, променял бы это всё на одного партнёра. Но так как с личной жизнью не заладилось, а секс я очень люблю, то приходилось изворачиваться.
bez_prav
18 окт. 2017 / 18:01
Отчего в Казахстане предвзятое отношение к отечественному продукту?

Отчего в Казахстане предвзятое отношение к отечественному продукту?

Вы когда-нибудь пользовались казахстанской косметикой? Я тоже нет, поэтому сразу же откликнулась на приглашение своего фейсбук-френда протестировать отечественные крема… из Степногорска.
Shimanskaya
16 окт. 2017 / 11:32
  • 2964
  • 34
Я помню тот день, когда мне позвонили друзья и сообщили: «Она выходит замуж». Часть 2

Я помню тот день, когда мне позвонили друзья и сообщили: «Она выходит замуж». Часть 2

Я знал дату свадьбы. За неделю до свадьбы в соцсети "Вконтакте" на все мои последние фото, был проставлен лайк с её профиля. Сердце забилось сильнее. В душе загорелась наивная, крошечная надежда.
Dominator-kz
17 окт. 2017 / 15:41
Льготное кредитование для молодежи Алматы. Не хоромы, но для начала неплохо

Льготное кредитование для молодежи Алматы. Не хоромы, но для начала неплохо

Если вам нет 35 лет и у вас нет своего жилья, то есть интересная гос.программа. Нишевая программа - молодые семьи Алматы до 35 лет, семья - это как минимум 2 супруга без детей.
DanaJarlygapova
19 окт. 2017 / 16:21
Мой парень – «тиран». Почему я вступила в такие отношения?

Мой парень – «тиран». Почему я вступила в такие отношения?

История из моей жизни. Я вспоминаю эти отношения и сама не могу понять - как так произошло? А дело в том, что вы и сами не заметите. Это наступает плавно и динамично.
Altynai_JA
18 окт. 2017 / 14:17
Доверяют ли граждане Казахстана полицейским? Социальный опрос

Доверяют ли граждане Казахстана полицейским? Социальный опрос

Борьба с оборотнями в погонах идёт не один год, но без особого эффекта. Это даёт повод подробнее поговорить о нашей полиции и её проблемах. Как относятся к полицейским казахстанцы?
voiceQZ
20 окт. 2017 / 18:42
  • 2280
  • 39
«Автобусная неделя». Выдержит ли аким Шымкента давку в общественном транспорте?

«Автобусная неделя». Выдержит ли аким Шымкента давку в общественном транспорте?

Аким Шымкента Габидулла Абдрахимов нашёл решение накопившихся проблем городского транспорта. Все ключевые работники акимата некоторое время будут сами ездить на автобусах.
openqazaqstan
18 окт. 2017 / 10:53
  • 1844
  • 34
Сказ об офисных планктонах. А какой работник ты?

Сказ об офисных планктонах. А какой работник ты?

Я проработала во многих компаниях и повстречала очень много разных интересных людей. Исходя из моих наблюдений, могу описать несколько категорий работников. Может, речь пойдет о ком-то из вас…
Altynai_JA
18 окт. 2017 / 17:51
  • 1809
  • 16
Аркадий Волож привел в Казахстан «Яндекс.Лицей». Плакать или радоваться?

Аркадий Волож привел в Казахстан «Яндекс.Лицей». Плакать или радоваться?

"Яндекс.Лицей" зашел в казахстанские школы. План - учить бесплатно программированию, формировать себе кадры и выйти на мощность 10 тысяч школьников в год.
Zhumanova
18 окт. 2017 / 8:36
  • 1667
  • 14