Программный код - качество и пояснения

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

igk1972
Сообщения: 41
Зарегистрирован: Чт май 14, 2015 12:46 pm
Благодарил (а): 3 раза
Поблагодарили: 10 раз

Программный код - качество и пояснения

Сообщение igk1972 » Вс май 17, 2015 4:13 pm

Сергей, просьба пояснить следующее.
В почти каждом скрипте цикла и скриптах запускаемых переодически, есть следующие строки:

Код: Выделить всё

include_once(DIR_MODULES . "control_modules/control_modules.class.php");
$ctl = new control_modules();
 
Зачем они?
Ничто не использует их далее по коду.
Если я не прав, то укажите место использования.

То же самое со строкой (не в cycle.php)

Код: Выделить всё

include_once("./lib/threads.php"); 
Заранее спасибо.
За это сообщение автора igk1972 поблагодарил:
Bolik.Stav (Вт сен 22, 2015 10:13 pm)
Рейтинг: 1.16%
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Программный код - качество и пояснения

Сообщение sergejey » Пн май 18, 2015 12:57 pm

igk1972 писал(а):Сергей, просьба пояснить следующее.
В почти каждом скрипте цикла и скриптах запускаемых переодически, есть следующие строки:

Код: Выделить всё

include_once(DIR_MODULES . "control_modules/control_modules.class.php");
$ctl = new control_modules();
Зачем они?
Ничто не использует их далее по коду.
Если я не прав, то укажите место использования.
control_modules это общий "координатор" модулей системы. по большому счёту, его основная функция в методе checkInstalled, который вызывается конструктором, а последний, в свою очередь, проверяет наличие файла installed и при его отсутствии проходится по всем модулям и переустанавливает их. его вызов оставить в одной из "точек входа" и этого будет достаточно.
igk1972 писал(а): То же самое со строкой (не в cycle.php)

Код: Выделить всё

include_once("./lib/threads.php");
Заранее спасибо.
threads действительно нигде не нужно, кроме как в cycle, поэтому вызов этого файла можно убрать

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
igk1972
Сообщения: 41
Зарегистрирован: Чт май 14, 2015 12:46 pm
Благодарил (а): 3 раза
Поблагодарили: 10 раз

Re: Программный код - качество и пояснения

Сообщение igk1972 » Пн май 18, 2015 2:40 pm

sergejey писал(а):
igk1972 писал(а):Сергей, просьба пояснить следующее.
В почти каждом скрипте цикла и скриптах запускаемых переодически, есть следующие строки:

Код: Выделить всё

include_once(DIR_MODULES . "control_modules/control_modules.class.php");
$ctl = new control_modules();
Зачем они?
Ничто не использует их далее по коду.
Если я не прав, то укажите место использования.
control_modules это общий "координатор" модулей системы. по большому счёту, его основная функция в методе checkInstalled, который вызывается конструктором, а последний, в свою очередь, проверяет наличие файла installed и при его отсутствии проходится по всем модулям и переустанавливает их. его вызов оставить в одной из "точек входа" и этого будет достаточно.
Хм...... Как может координатор модулей быть тоже модулем? Нонсенс.
Мои слова касаются только того что инсталяция модулей находится в методе control_modules->install (что чревато проблемой при сбое), надо иметь отделый метод для инсталляции списка модулей, а метод install оставить для сугубо модуля control_modules.
igk1972
Сообщения: 41
Зарегистрирован: Чт май 14, 2015 12:46 pm
Благодарил (а): 3 раза
Поблагодарили: 10 раз

Re: Программный код - качество и пояснения

Сообщение igk1972 » Чт май 21, 2015 1:43 pm

Сергей! Прокоментируйте приведенный код - его насущность и его необходимость в файле jTemplate обработки шаблонов?
Зачем это в production-коде и hardcode-путями???

Код: Выделить всё

     // module class file was not found
     global $current_installing_module;
     $rep_ext='';
     if (preg_match('/\.dev/is', $_SERVER['HTTP_HOST'])) {
      $rep_ext='.dev';
      $install_dir="/var/projects/repository/engine_2.x/modules/";
     }
     if (preg_match('/\.jbk/is', $_SERVER['HTTP_HOST'])) {
      $rep_ext='.jbk';
      $install_dir="d:/jey/projects/repository/engine_2.x/modules/";
     }
     if (!$current_installing_module[$module_data["name"]] && $rep_ext!='' && (@Is_Dir($install_dir.$module_data["name"]))) {
      //$tmp="<div><iframe src=\"http://installer.dev/installer.php?host=".$_SERVER['HTTP_HOST']."&doc_root=".$_SERVER['DOCUMENT_ROOT']."&mode=install&modules[]=".$module_data["name"]."\" width=100% height=100></iframe></div>";
      $wnd_name="win".rand(1, 10000000);
      $tmp="<script language='javascript' type='text/JavaScript'>wnd=window.open(\"http://installer".$rep_ext."/installer.php?host=".$_SERVER['HTTP_HOST']."&doc_root=".$_SERVER['DOCUMENT_ROOT']."&mode=install&modules[]=".$module_data["name"]."\", \"".$wnd_name."\", \"height=400,width=400\");</script>";
      $current_installing_module[$module_data["name"]]=1;
      echo $tmp;
     } else {
      $tmp="<p align=center><font color='red'><b>Module \"".$module_data["name"]."\" not found</b> (".str_replace('#', '', $matches[0][$i]).")</font></p>";
     }
 
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Программный код - качество и пояснения

Сообщение sergejey » Чт май 21, 2015 3:20 pm

Этот код в таком виде действительно не нужен -- хвосты старых разработок.

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
igk1972
Сообщения: 41
Зарегистрирован: Чт май 14, 2015 12:46 pm
Благодарил (а): 3 раза
Поблагодарили: 10 раз

Re: Программный код - качество и пояснения

Сообщение igk1972 » Чт май 21, 2015 3:50 pm

Открытый проект - открытое обсуждение :-)

Прокомментируйте еще и это, файл /objects/index.php.
Вам не знакомы функции reverse proxy в apache или nginx? Странно...

Мало того, константа MASTER_URL вообще не фигурует в ином коде или конфиге.

// ---------------------------------------------------------------------------
// REDIRECT TO MASTER HOST

//Define('MASTER_HOST', 'homenetserver.jbk'); // uncomment to use master host

if (defined('MASTER_URL') && MASTER_URL!='') {
// redirecting request master URL

if ($argv[1]!='') {
$url='http://'.MASTER_HOST.'/objects/?source=remote&op=m';
$total=count($argv);
for($i=2;$i<$total;$i++) {
if (preg_match('/^(.+?):(.*?)$/is', $argv[$i], $matches)) {
$url.='&'.$matches[1].'='.urlencode(trim(win2utf($matches[2])));
}
}
} else {
$url='http://'.MASTER_HOST.$_SERVER['REQUEST_URI'];
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT_MS, 5000);
curl_setopt($ch, CURLOPT_TIMEOUT, 1);
curl_setopt($ch, CURLOPT_TIMEOUT_MS, 5000);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$data=curl_exec($ch);
curl_close($ch);
exit;
}
Последний раз редактировалось igk1972 Чт май 21, 2015 5:26 pm, всего редактировалось 1 раз.
igk1972
Сообщения: 41
Зарегистрирован: Чт май 14, 2015 12:46 pm
Благодарил (а): 3 раза
Поблагодарили: 10 раз

Re: Программный код - качество и пояснения

Сообщение igk1972 » Чт май 21, 2015 5:14 pm

Зачем вот это?
/verimage.php
и используемые в нем файлы:
/lib/codebook.txt
/lib/_vimage_tahoma.ttf

Нигде в коде не упоминается.
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Программный код - качество и пояснения

Сообщение sergejey » Чт май 21, 2015 5:17 pm

igk1972 писал(а):Открытый проект - открытое обсуждение :-)
Прокоментируйте еще и это, файл /objects/index.php.
Вам не знакомы функции reverse proxy в apache или nginx? Странно...
Мало того, константа MASTER_URL вообще не фигурует в ином коде или конфиге.

...

Зачем вот это?
/verimage.php
и используемые в нем файлы:
/lib/codebook.txt
/lib/_vimage_tahoma.ttf

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

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
LutsenkoDenis
Сообщения: 521
Зарегистрирован: Вс апр 07, 2013 9:30 pm
Откуда: Moscow
Благодарил (а): 2 раза
Поблагодарили: 58 раз
Контактная информация:

Re: Программный код - качество и пояснения

Сообщение LutsenkoDenis » Чт май 21, 2015 5:53 pm

В приведенном под спойлером коде, прошу объяснить несколько вещей:
  • Почему 15 число месяца берется? Что этим хотели добиться?
  • Что за магия с днями недели в конце скрипта и зачем $days[] обнуляется первого числа месяца?

    Код: Выделить всё

    if ($i==1) {
          for ($k=0;$k<($rec['WEEKDAY']);$k++) {
           $rec2=array();
           $days[]=$rec2;
          }
         } 
\modules\userlog\userlog_calendar.inc.phpПоказать

Код: Выделить всё

<?php
/*
* @version 0.1 (auto-set)
*/
  if ($field=='') return;
  $lfield=strtolower($field);
  global ${$lfield.'_from'};
  global ${$lfield.'_to'};
   if (${$lfield.'_from'}) {
    $tmp=explode('/', ${$lfield.'_from'});
    $tm=mktime(0, 0, 0, $tmp[0], 15, $tmp[2]);
   } else {
    $tm=mktime(0, 0, 0, date('m', time()), 15, date('Y', time()));
   }
   $month=date('m', $tm);
   $yr=date('Y', $tm);
   $out[$field.'_MONTH']=date('F', $tm);
   $last_days=array(31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
   $out[$field.'_PREV_MONTH']=date('m/01/Y', $tm-30*24*60*60);
   if (checkDate(date('m', $tm-30*24*60*60), $last_days[(int)date('m', $tm-30*24*60*60)-1], date('Y', $tm-30*24*60*60))) {
    $out[$field.'_PREV_MONTH_TO']=date('m/'.$last_days[(int)date('m', $tm-30*24*60*60)-1].'/Y', $tm-30*24*60*60);
   } else {
    $out[$field.'_PREV_MONTH_TO']=date('m/'.($last_days[(int)date('m', $tm-30*24*60*60)-1]-1).'/Y', $tm-30*24*60*60);
   }
   $out[$field.'_NEXT_MONTH']=date('m/01/Y', $tm+30*24*60*60);  
   if (checkDate(date('m', $tm+30*24*60*60), $last_days[(int)date('m', $tm+30*24*60*60)-1], date('Y', $tm+30*24*60*60))) {
    $out[$field.'_NEXT_MONTH_TO']=date('m/'.$last_days[(int)date('m', $tm+30*24*60*60)-1].'/Y', $tm+30*24*60*60);
   } else {
    $out[$field.'_NEXT_MONTH_TO']=date('m/'.($last_days[(int)date('m', $tm+30*24*60*60)-1]-1).'/Y', $tm+30*24*60*60);
   }
   $out[$field.'_THIS_MONTH']=date('m/01/Y', $tm);  
   if (checkDate(date('m', $tm), $last_days[(int)date('m', $tm)-1], date('Y', $tm))) {
    $out[$field.'_THIS_MONTH_TO']=date('m/'.$last_days[(int)date('m', $tm)-1].'/Y', $tm);
   } else {
    $out[$field.'_THIS_MONTH_TO']=date('m/'.($last_days[(int)date('m', $tm)-1]-1).'/Y', $tm);
   }
   $days=array();
   for($i=1;$i<=31;$i++) {
   if (checkDate($month, $i, $yr)) {
     $tm=mktime(0, 0, 0, $month, $i, $yr);
     $rec=array();
     $day=$i;
     if ($i<10) $day="0$i";
     $rec['DAY']=$i;
     $rec['DATE']="$month/$day/$yr";
     $rec['DB_DATE']="$yr-$month-$day";
     if ($field!='') {
      $event=SQLSelectOne("SELECT ID FROM userlog WHERE TO_DAYS($field)=TO_DAYS('".$rec['DB_DATE']."')");
      if ($event['ID']) {
       $rec['EVENTS']=1;
      }
     }
     if ($rec['DATE']==${$lfield.'_from'} && $rec['DATE']==${$lfield.'_to'}) {
      $rec['SELECTED']=1;
     }
     if ($rec['DATE']==date('m/d/Y')) {
      $rec['TODAY']=1;
     }
     if ($tm>time()) {
      $rec['FUTURE']=1;
     }
     $rec['WEEKDAY']=date("w", $tm);
     if ($i==1) {
      for ($k=0;$k<($rec['WEEKDAY']);$k++) {
       $rec2=array();
       $days[]=$rec2;
      }
     }
     $last_wday=$rec['WEEKDAY'];
     $days[]=$rec;
    }
   }
   $weekdays=array("Su", "Mo", "Tu", "We", "Th", "Fr", "Sa");
   outArray($field."_WDAYS", $weekdays, $out);
   $out[$field.'_DAYS']=$days; 
________________________________________________________
Majordomo (GitHub) на HP Microserver Gen8. OS Debian Stretch
igk1972
Сообщения: 41
Зарегистрирован: Чт май 14, 2015 12:46 pm
Благодарил (а): 3 раза
Поблагодарили: 10 раз

Re: Программный код - качество и пояснения

Сообщение igk1972 » Чт май 21, 2015 6:35 pm

Запуск циклов стартует startup_maintenance.php (в нем делает бекап бд, бекап файлов, и еще ко-что)
Спрашивается зачем файл fix_linked_properties.php в котором основная часть кода из startup_maintenance.php (или наоборот)?
И еще есть файл periodical_db_save.php
Ответить