Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - Egorsha

Страницы: [1] 2 3 4
1
Всё о Html / Помогите с нарезкой
« : 28 Декабря 2007, 18:01:50 »
Могу посоветовать сделать как-то так:


<style>
* {
margin:0padding:0;}
div#col1 {position:absolute; top: 0px; left:0; width:240px; background-color:#00ff00; height:100%;}
div#col2 {width:100%; background-color:#ff0000; padding:0 243px 0 243px;  height:100%;}
div#col3 {position:absolute; top:0; right:0; width:240px; background-color:#0000ff; height:100%;}
</style>

<
div id="col1"><img src="images/logo.jpg" />
</
div>  
<
div id="col2">sadasd</div>  
<
div id="col3">asdasd</div>


(цвета колонок поменял "для наглядности")

2
Цитировать
commander:
Egorsha
оглавления нету..


Оглавление там есть.... На первой странице расписано как пользоваться.

Цитировать

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

4
Была такая  проблема (на виндовом сервере).
Вопрос решился без переписывания mysql_query на mysqli_query.
Проблема насколько помню была в несовместимости .dll.
(Решал это дело админ, но он уже не помнит какие именно .dll и где их менял).

Возможно ответ на Ваш вопрос
находится здесь .

5
Всё о Html / margin-top и margin-bottom
« : 17 Октября 2007, 17:09:40 »


И убери дивы.

(А вообще-то если дивы, то дивы...)

6
PHP / Внедрение PHP кода в класс из MySQL
« : 16 Октября 2007, 10:58:49 »
Одно время приходилось "ковыряться" во внутренностях  системы eGroupWare (http://www.egroupware.org/).
Кое-что взял оттуда на вооружение, но многое видоизменилось в процессе использования, поэтому пример приведу из первоисточника. Если кто заинтерессуется может скачать архив дистрибутива (около 38Мб), в котором около 40 000 файлов (очень долго распаковывается и копируется :)) и посмотреть  что там и как.

В коде классов этой системы создают и подключают на лету сколько угодно различных классов. Получаются что-то типа "класс наследник нескольких классов" (Вот это может и приходиться в интерессующей задаче).

Код имеет вид:


......
$this->so CreateObject(\'addressbook.soaddressbook\');
....
$ret = $this->so->contacts->check_perms(False,$rights,$addr);
....


В первой строчке создается и подключается "на лету" класс
../addressbook/inc/class.soaddressbook.inc.php.

Во второй строчке, в подключаемом классе в свою очеред подключили еще один класс, но используют все их методы в основном классе.

Код функции создания и подключения класса "на лету":


	
function &
CreateObject($class)
	
{
	
	
list(
$appname,$classname) = explode(\'.\',$class);

	
	
include_once($file=EGW_INCLUDE_ROOT.\'/\'.$appname.\'/inc/class.\'.$classname.\'.inc.php\');

	
	
if (class_exists($classname))
	
	
{
	
	
	
$args = func_get_args();
	
	
	
if(count($args) == 1)
	
	
	
{
	
	
	
	
$obj =& new $classname;
	
	
	
}
	
	
	
else
	
	
	
{
	
	
	
	
$code = \'$obj =& new \' . $classname . \'(\';
	
	
	
	
foreach($args as $n => $arg)
	
	
	
	
{
	
	
	
	
	
if ($n)
	
	
	
	
	
{
	
	
	
	
	
	
$code .= ($n > 1 ? \',\' : \'\') . \'$args[\' . $n . \']\';
	
	
	
	
	
}
	
	
	
	
}
	
	
	
	
$code .= \');\';
	
	
	
	
eval($code);
	
	
	
}
	
	
}
	
	
if (!is_object($obj))
	
	
{
	
	
	
echo "<p>CreateObject(\'$class\'): Cant instanciate class!!!
\\n".function_backtrace(1)."</p>\\n";
	
	
}
	
	
return $obj;
	
}


Для передачи данных между различными классами используется массив $GLOBALS. (Этот массив может быть лучше и использовать вместо MySQL).

7
PHP / Внедрение PHP кода в класс из MySQL
« : 15 Октября 2007, 15:32:36 »
А можно ли уточнить саму задачу. (По тексту обсуждается реализация одного из ее решений).

Если я правильно понял, то имеются несколько классов (объектов): class_1, class_2, ...., class_N. В этих классах, соответственно,  определены функции (методы) func_1, func_2, ..., func_N. И есть основной класс -  main_class, в котором необходимо выполнить один или несколько методов из набора func_1, ..., func_N. Причем заранее не известно сколько методов и какие именно методы понадобятся в ходе работы объета class_main.

Если задача именно такая, то могу предложить другое решение без использования MySQL.

В основном классе будет вызываться что-то типа:

$[результат]=$[основной_класс]->[подгружаемый_класс]->[метод_подгруженного_класса]([набор_аргументов]);

(Если задача именно такая, как я описал выше, то подробное решение приведу здесь. Если нет, то и незачем топик засорять).

8
Как вариант решения на PHP http://spectator.ru/technology/php/php_search

Нужно только в индекс-файле решить вопрос о сопоставлении  ссылок "индексируемый файл с контентом"-"\'собранная\' страница".

Задача, думаю, упростится, если структура сайта будет имет вид:

"Файлы с контентом лежат в одной папке и имеют различные имена, их названия совпадают  с названиями "собранных" страниц".

Но и при структуре: "Контент... содержится в отдельных файлах и папках ... файлы с контентом имеют одинаковое имя..." задача поиска и индексации решается в рамках предлагаемого примера.

9
Обсуждение сайтов / Что не так?
« : 19 Сентября 2007, 10:24:37 »

10
Если тема все еще актуальна, могу предложить следующее.

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

Для того чтобы удар был не всегда постоянный - ввсести т.н. моногмерный кубик - NdM+K .
Например, если максимальный удар 850, то для него считать удар где-то по такой формуле - 11d5+795. Что означает удар будет 800-850. 11d5 означает что подбросили 5 раз 11-гранный кубик, то есть сумма 5-ти случайных чисел от 1 до 11. (Возможны другие варианты).

Вероятность события можно считать следующим образом. Например, вероятность события равна N%, тогда надо получить случайное число от 0 до 100 и если полученное число меньше N, то событие произошло, если больше,то неудача.

При определении "попал-непопал" считать, что вероятность равна 50% у каждого корабля.

Для внесения большей непредсказуемости можно не одновременно списывать нанеаенный ущерб с каждого корабля а по очереди. Случайно определять кто первый ударил при каждом ходе. У первого будет явно преимущество и если первый попал во второго, то снижать вероятность нанесения удара вторым скажем до 45% (что-то типа не оправился от удара). На следующем ходе запоминать пропустил ли противник предыдущий удар. В случае если имелась вероятность 45% и противник предыдущим ударом промазал, то вероятность опять повышается до 50%.

Рассчетов больших проводить не нужно, а исход битвы станет более непредсказуемым.

11
Perl / MySQL - засада...
« : 19 Марта 2007, 16:01:26 »
Может в кавычках проблема?

12
PHP / Размер картинки
« : 16 Марта 2007, 17:34:26 »
Решал подобную задачу.
Без использования временных файлов - не получится видимо.

Вот кусочек класса (немного подредактированный).



//*****************************************************
//  Изменение масштаба рисунка в зависимости от параметра
//     (используется временный файл)
//***************************************************** function PrintFotoResize($id, $kod)
  
{
  
	
$this->pIdPhoto=$id;
  
	

    
$this->GetFoto();
    
$tmpfname tempnam ("/temp""img");
    
$fp fopen($tmpfname"w");
    
fwrite($fp$this->pPhoto);
    
fclose($fp);
       
$im=imagecreatefromjpeg($tmpfname);
       
$size=getimagesize($tmpfname);
       
$koef1=0.15;
       
$koef2=0.25;
    
unlink($tmpfname);
    switch(
$kod)
    {
    
	
case 
"small": { $new_w=intval($size[0]*$koef1); $new_h=intval($size[1]*$koef1); break; }
    
	
case 
"medium": { $new_w=intval($size[0]*$koef2); $new_h=intval($size[1]*$koef2); break; }
    
	
case 
"large": { $new_w=$size[0]; $new_h=$size[1] ;break; }
	
}
     
$im1=imagecreatetruecolor($new_w,$new_h);
     
$kd=imagecopyresized($im1,$im,0,0,0,0,$new_w,$new_h,$size[0],$size[1]);

     if(
$kod==="large")
     {
      
$my_www imagecolorallocate($im1000);
      
imagefilledrectangle ($im1$size[0]-145$size[1]-16$size[0]-3$size[1]-3imagecolorallocate($im1255255255));
      
ImageString($im15$size[0]-140$size[1]-17"www.mysite.ru"$my_www);
     }
   if (!
headers_sent()) { header("Content-type: image/jpeg"); }
  
Imagejpeg($im1);
  
ImageDestroy($im1);
}

13
PHP / Добавление файлов в БД
« : 15 Марта 2007, 18:30:33 »
Я на локальном сервере делал ;)

Или договаривайся с провайдером (что мало вероятно), или храни все в файлах, а в базе указатели на файлы.

14
PHP / Добавление файлов в БД
« : 15 Марта 2007, 16:21:53 »
Сталкивался. (База MySQL)
В моем случае изменений только php.ini тоже было не достаточно.
Что точно делал не помню... давно это было. :)
Собака была зарыта в настройках MySQL.
Есть предположение, что нужно изменить значение переменной max_allowed_packet.

Тут написано:

Цитировать
....Если используются поля BLOB большого размера, то рекомендуется увеличить значение этого параметра. В идеале нужно присвоить этой переменной значение размера самого большого BLOB поля.


Может и еще что менял... не помню, но копать надо от настроек базы (Если MySQL... В других может аналогично...).

15
PHP / Защита от автоматических регистраций
« : 15 Февраля 2007, 10:13:47 »
Один мой знакомый увлекался броузерными MMORG. И в каждом проекте писал программу-бота. (Совершенствовал свои программистские навыки). В результате его блочили в каждом проекте. Но не везде его бота быстро вычисляли.
Задавшись вопросом как быстро поймать его бота, надумал следующий вариант.  (Бот  попался при первом же подключении)

Суть в следующем.

Машина и человек ведут себя по разному (это можно было и не говорить). Надо отловить - отправили ли форму нажатием на Enter или кликнули мышкой.
Enter определялся при помощи JavaScript - в скрытое поле формы
записывался код последней нажатой клавиши.
А для определения клика мышки можно воскользоваться кнопкой вида В этом случае передаются на сервер еще и координаты точки картинки X,Y , в которую кликнули мышкой.

Вот на сервере и проверять "координаты"+"код клавиши".

Способ конечно из разряда "защита от дураков" (и его здесь сейчас разнесут "в пух и прах"). На основной способ защиты не потянет, но в качестве дополнительного вполне сойдет. И от пользователя заполняющего форму для отправки ничего дополнительного не требуется.

Если код нужен могу сюда выложить -  он коротенький.

Страницы: [1] 2 3 4