Архив за ‘Programming’ категория

JSBin онлайн редактор

Февраль 19th, 2010

JSBin онлайн редактор, сфокусированный в основном на Javascript. Имеет простой и ясный интерфейс. Любой код может быть протестирован с помощью функции «Предпросмотр» и затем экспортирован в файл.
Другая хорошая вещь в JSBin то, что он может импортировать популярные Javascript фреймворки, такие как jQuery или Mootools, так что можно тестировать плагины без проблем.
линк на редактор

Типовая структура технического задания на разработку сайта

Февраль 16th, 2010

Структура технического задания:
1. Термины, используемые в техническом задании
2. Общие положения
2.1. Название сайта
2.2. Наименование предприятий (объединений) разработчика и заказчика (пользователя) сайта и их реквизиты
2.3. Перечень документов, на основании которых создается сайт
2.4. Состав и содержание работ по созданию системы
2.5. Порядок оформления и предъявления заказчику результатов работ по созданию сайта
3. Назначение и цели создания сайта
3.1. Цели создания сайта
3.2. Задачи, решаемые при помощи сайта
4. Требования к сайту и программному обеспечению
4.1. Требования к программному обеспечению сайта
4.2. Общие требования к оформлению и верстке страниц
4.3. Требования к численности и квалификации персонала обслуживающего сайт
4.4. Требования к системе администрирования
5. Структура сайта
6. Языковые версии сайта
7. Группы пользователей
8. Дизайн сайта
9. Навигация по сайту
9.1. Основное навигационное меню
9.2. Дополнительная навигация по сайту
10. Описание страниц сайта
10.1. Описание статических страниц
10.2. Описание динамических страниц
11. Функционал сайта
12. Контент и наполнение сайта
12.1. Формат предоставления материалов для сайта
13. Дополнительная информация
14. Порядок контроля и приемки работ
15. Реквизиты и подписи сторон

Китайские власти закрыли сайт по обучению хакеров

Февраль 10th, 2010

В китайской провинции Хубэй арестованы три человека по подозрению во владении и управлении сайтом Black Hawk Safety Net (3800hk.com). BHSN — огромный сайт, предоставлявший посетителям платные и бесплатные уроки-тренинги по взлому сайтов и написанию вирусов, позволявший скачивать вредоносные программы и многое другое. Помимо трех арестов, была также осуществлена конфискация девяти серверов, пяти компьютеров и одного автомобиля. Об этом накануне сообщили China Daily и Wuhan Evening News.

Хакерство — тема для Китая больная, особенно с недавнего времени, когда Google обвинил правительство Китая в том, что под их началом были осуществлены попытки взлома серверов гугла (Правительство, естественно, подобный факт отрицает).

Black Hawk Safety Net был очень популярен. По меньшей мере 12 тысяч пользователей имели платные аккаунты, что позволило сайту собрать более 7 миллионов юаней (около одного миллиона долларов). Кроме того, на около 170 тысяч юзеров обладали «бесплатными» аккаунтами. Правительство провинции Хубэй никаких комментариев пока не дало.

Сайт Black Hawk Safety Net сейчас недоступен, однако юзеры и приближенные к стаффу люди на других форумах утверждают, что бэк-апы сайта сохранились и конфискованы не были, так что по крайней мере владельцы «платных» аккаунтов ничего не потеряют.

Представитель BBC в Пекине Damian Grammaticas утверждает, что связи между этим делом и атаками на Google (а также заявлением поисковика о возможном уходе из Китая) никакой нет. По крайней мере, на данный момент она не обнаружена.
Однако, кто знает, возможно, это такая попытка правительства Китая доказать гуглу, что им не все равно и они рьяно борются с хакерами.

Отправка формы без перезагрузки браузера

Февраль 5th, 2010

Делаем форму:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<form id="regForm" name="regForm" action="" method="post">
    <h2>Форма обратной связи</h2>
	<table cellpadding="0" cellspacing="15" class="feedback">
	   <tr>
        <td>
            <p>
                Ваше имя:<br />
				<div class="message" id="err_name"></div>
                <input name="name" id="name" size="40" maxlength="40" class="input" type="text">
            </p>
            <p>
                Ваш e-mail:<br />
				<div class="message" id="err_email"></div>
                <input name="email" id="email" size="40" maxlength="40" class="input" type="text">
 
            </p>
            <p>
                <strong>ЗДЕСЬ CAPTCHA</strong>
            </p>
        </td>
        <td>
            <p>
                Ваше сообщение:<br />
				<div class="message" id="err_text_message"></div>
                <textarea name="text_message" id="text_message" cols="40" rows="6" class="input"></textarea>
            </p>
        </td>
      </tr>
	   <tr>
        <td colspan="2" style="text-align:center;">
            <input name="mail_submit" type="submit" onclick="SendForm('regForm','name,email,text_message','sendemail.php');return false" value="Отправить сообщение">
 
        </td>
      </tr>
    </table>
	</form>

обработотчик нажатия кнопки отправить:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
function SendForm(formid,fieldnames,action){
 
var count = -1;
 
  //проверяем заполненность нужных полей
  var field = fieldnames.split(',');
  for(var i=0;i<=field.length;i++){
    if($('#'+field[i]).val()==''){//если поле пустое, выделяем его
        count++;
        $('#'+field[i]).css({backgroundColor: "#FFCECE",border: "1px solid #BB0000"});
        if(count==0)$('#'+field[i]).focus();//ставим курсор в первое незаполенное поле
        //выводим сообщение
        $('#err_'+field[i]).hide();
        $('#err_'+field[i]).html('заполните поле');
        $('#err_'+field[i]).fadeIn('slow');
 
      }else{//если поле заполено, отменяем выделение
        $('#'+field[i]).css({backgroundColor: "#fff",border: "1px solid #888"});
        $('#err_'+field[i]).empty();
      }
  }
 
  //если все поля заполены, отправвляем обработчику
  if(count==-1){
 
  var dataString = $('#'+formid).serialize();//собираем все данные в строку
 
    $.ajax({
      type: "POST",
      url: action,
      data: dataString,
      success: function(data){
 
        //если в ответе содержится символ '/', выводим сообщение об ошибке заполнениия
        if(data.indexOf('/')>-1){
          field = data.split('/');//отделяем сообщение от id (name) поля
          $('#'+field[1]).css({backgroundColor: "#FFCECE",border: "1px solid #BB0000"});
          if(count==0)$('#'+field[1]).focus();
          $('#err_'+field[1]).hide();
          $('#err_'+field[1]).html(field[0]);
          $('#err_'+field[1]).fadeIn('slow');
 
        }else{
           //если форма отправлена успешно выводим alert с текстом сообщения
           alert(data);
           $('#'+formid)[0].reset(); //сбрасываем значения формы
        }
 
      }
     });
 
  }
 
}

ну и сам отбработчик запощеных данных sendemail.php:

1
2
3
4
5
6
if(!preg_match("|^[-0-9a-z_]+@[-0-9a-z_]+\.[a-z]{2,6}$|i", $_POST['email']))
       {
         echo"Указан некорректный e-mail/email"; exit();
      }
//дальше заносим данные в базу или т.п.
echo "Спасибо! Вашe сообщение отправленно.";

Symbian OS теперь открытая и бесплатная

Февраль 4th, 2010

Исходный код платформы Symbian теперь будет полностью открытым и бесплатным начиная с сегодня. Как говорит Ли Уильямс, исполнительный директор компании, Symbian уже является доминирующей операционной системой, однако теперь у разработчиков ПО появились безграничные возможности. Также он рассказал о приемуществвах Symbian перед Android. «Исходники Android открыты не более чем на треть. Все остальное закрыто», — отметил он.
Еще одно преимущество Symbian заключается в том, что разработчики будут регулярно публиковать план развития платформы, отметил Ли Уильямс.

Инициатива открытия Symbian стартовала в июне 2008 года, когда Nokia объявила, что выкупит оставшуюся часть кода у других компаний и переведет ОС под управление Symbian Foundation. В настоящее время в мире насчитывается более 330 млн. Symbian-телефонов. Их выпуском занимаются Nokia, Samsung, Sony Ericsson, Fujitsu и Sharp.

Капча 4D на php

Февраль 2nd, 2010

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<?php
 
  class Captcha4d
  {
	 const CHARS = 'WEafRTYIPAGHJKXBNM3479j';
	  protected $hypot = 5;
	  protected $image = null;
	  protected $_sin = array();
	  protected $text = '';
 
	  public function __construct()
	  {
	  $this->time = microtime(true);
	  $this->generateCode();
 
	  }
	   protected function generateCode()
	  {
 
 
	  $this->text = 'aG5';
 
	  }
 
	  public function getText()
	  {
	  return $this->text;
	  }
 
	  protected function getProection($x, $y, $z)
	  {
 
	  $xx = 0.70710;
	  $xz = 0.70710;
	  $xy = 0.70710;
 
	  $yx = 0.40824;
	  $yz = 0.81649;
	  $yy = -0.40824;
 
	  $cx = $xx*$x + $xy*$y + $xz*$z - 5;
	  $cy = $yx*$x + $yy*$y + $yz*$z + 20;
	  return array(
	  'x' => $cx * $this->hypot,
	  'y' => $cy * $this->hypot
	  );
	  } 
 
 
	  function zFunction($x,$y){
	  $z = imagecolorat($this->image,$y/2,$x/2)>0?3:0;
	  if( $z != 0 ){
	  $z += -2+ 2*
	  $this->_sin[($x+$this->startX)%30];
 
	  $this->_sin[($y+$this->startY)%30];
	  }
	  $z += mt_rand(0,30)/50;
	  return $z;
	  }
 
  public function render()
  {
 
  $xx = 30;
  $yy = 60;
 
 
  $animation = new Imagick();
  $animation->setFormat( "gif" );
 
 
  $cw = new ImagickPixel("white");
  $cb = new ImagickPixel("black");
 
  $this->image = imageCreateTrueColor(100, 20);
 
  $whiteColor = imageColorAllocate($this->image,255,255,255);
   imageFilledRectangle($this->image,0,0,$yy * $this->hypot , $xx * $this->hypot, $whiteColor);
  $textColor = imageColorAllocate($this->image,0,0,0);
  imageString($this->image, 5, 3, 0, $this->text, $textColor);
 
  $cof = 2*3.141592654/$xx;
  for($x = 0; $x < $xx + 1; $x++){
  $this->_sin[$x] = sin($x*$cof);
  }
  $this->startX = mt_rand(0,$xx);
  $this->startY = mt_rand(0,$yy);
 
  $draw = new ImagickDraw();
  $countFrame = 25;
 
  for ( $i = 0; $i < $countFrame; $i++ ) {
  $this->startX += $xx / $countFrame;
 
  $coordinates = array();
  for($x = 0; $x < $xx + 1; $x++){
  for($y = 0; $y < $yy + 1; $y++){
  $coordinates[$x][$y] = $this->getProection($x,$y,$this->zFunction($x,$y));
  }
  }
 
 
  $animation->newImage( $yy * $this->hypot , $xx * $this->hypot, $cw);
 
  $im = new ImagickDraw();
  $im->setFillColor($cw);
  $im->setStrokeColor($cb);
  $im->setStrokeAntialias(true);
  for($x = 0; $x < $xx; $x++){
  for($y = 0; $y < $yy; $y++){
  $coord = array();
  $coord[] = $coordinates[$x][$y];
  $coord[] = $coordinates[$x+1][$y];
  $coord[] = $coordinates[$x+1][$y+1];
  $coord[] = $coordinates[$x][$y+1];
 
  $im->polygon($coord);
  }
  }
  $animation->drawImage($im);
  $animation->setImageDelay( 100/$countFrame );
  }
 
  header( "Content-Type: image/gif" );
  echo $animation->getImagesBlob();die();
 
  }
  }
 
  $captcha = new Captcha4d();
  $captcha->render();
?>

Закачка файлов с depositfiles.com из консоли

Февраль 2nd, 2010

Функция для скриптов на bash, предназначенная для автоматизации скачивания файлов с файлообменника Depositefiles.com:

1
2
3
4
5
down_deposit()
{
wget -O- -q --post-data 'gateway_result=1'  "http://depositfiles.com/ru/files/$(basename ${1})" |
sed -n -r -e 's/.*&lt;form action=\"([a-z0-9A-Z\/\.:_\-]+)\"  method=\"get\" onSubmit=\"download_started.*/wget -c \"\1\"/gp;  s/\t+([0-9]{1,3}) минут\(ы\)\./echo Спим \1 минут/gp' | sh
}

Как работает функция:

  • переход по ссылке на страницу с выбором варианта скачивания («Платно»/»Бесплатно»)
  • «нажатие» на кнопочу «Бесплатно» путём отправки –post-data с параметром ‘gateway_result=1’
  • после нажатия на кнопку происходит поиск прямой ссылки на файл в исходном коде страницы
  • когда ссылка найдена начинается загрузка файла.
  • бывает такое что Вы скачали слишком большое количество файлов за раз и сайт вам говорит что нужно подождать некоторое время. Если такое случилось, то скрипт терпеливо ждёт это время и после истечения начинает загрузку файла.

Можно, естественно, просто сохранить вышеприведенные строчки в файле и вызывать скрипт «down_deposit <ссылка_на_скачивание>». :-)

источник

Документация по jquery

Февраль 1st, 2010

Неплохой справочник по jquery построенный ввиде стандартного хелпа с примерами.

ссылка

mp3 плеер на сайте

Январь 22nd, 2010

Как разместить достаточно простой и красивый флешплеер на сайте? да очень просто, переходим по ссылке
http://ksanlab.com/player/
вникаем на буржуйском языке, выполняем все шаги и получаем канфетку :-D