среда, 26 декабря 2012 г.

ого...

Как же я давно сюда не заходил! Последний раз был я тут.. ого.. 29 сентября. Ну, жаловаться на время, я думаю, не стоит. Ведь когда захотел - вроде как и нашел. В общем-то готовлюсь к диплому.
Решил отписаться здесь, так как думаю с небольшой но все же проблемой этой сталкивалось большинство.
Суть: приперло мне по работе узнать количество рабочих дней в php, как ни странно, ни 1 встроенной функции не нашел (от зараза... ) , решил не унывать и пошел щупать гуглю. После тесного общения с оной нифига вразумительного не нашел, лишь пару человеков намекали на то, как можно реализовать сию штуковину, то есть, функцию по рассчету.
В общем, мой моск решил сию задачу, возможно даже верно, код нижее:

/**
* Считает рабочие дни недели (без учета праздников, т.е убирает выходные)
* @cdays(int) - количество дней до нужной даты
* количество рабочих дней(int)
**/
function WorkDays($cdays)
{
 if($cdays<0)
 {
  $koef =-1;
  $cdays=abs($cdays);
 }
 else
  $koef =1;
  
 $weekends = floor($cdays/7)*2; //выходные с целых недель в сроке
 $freeDay = $cdays%7; //кол-во дней, недотянувшее до целой недели
 $cdays-=($weekends+$freeDay); //вычитаем точно известные выходные и вычитаем все "пока лишние" дни
 
 
 if ($freeDay>0)//если есть свободные дни
 {
  $nownum = @date('w'); //номер дня недели(сегодняшнего), как точка отсчета
  $all = $nownum+$freeDay; //сегодняшний день недели + кол-во дней
  if ($all-7 >= 0) //если во время срока точно есть выходные
   $freeDay-=2;
  elseif($all-6 >=0)
   $freeDay--;
  $cdays+=$freeDay; 
 }
 return $cdays*$koef;
}
Сопсно, получилось вот такое вот чудо, не знаю, насколько оно верно буит отрабатывать у кого - то, у меня она пока работает как надо. если кто-то найдет ошибку, оч прошу сообщить :) За сим пока откланиваюсь, но обещаю появляться почаще.

суббота, 11 августа 2012 г.

немного размышлений и новостей

Давненько я тут ничего не писал. 2 патча на сайт успел запилить, а тут как то все не отписывался, хотя, поводов то уже было много, и мыслей тоже. В общем, начинать надо сначала, наверно :)
что порадовало: порадовала тема вафлана, где он решил излить историю создания ммв, позже платного wbv, зацепил меня там момент
Так же MuWebClone был основан из всего разного, в нём и MMW, и DSW, и DEW ну вообщем всякое разное.
На самом деле MWC был основан 2 раза: 1й раз это был переписанный му веб 0.8, затем в него вошел 0.3 мувеб.. в общем, учился я тогда прогать только. Потом настал перерыв у проекта. Далее, был никому не известный сайт, который писал я же, и он был полностью на класах, но, по моему мнению, тогда это было уныло и проект не удался, хотя работает. Рано тогда мне было писать в классах, ой как рано.
Немного позже (год-полтора) уже стартовал тот MWC, который пишется/модернизируется сейчас. Да, примерно 20% сайта были уже готовые модули, правда я их усиленно переписал под свой двиг, но как бы про уникальные вещи, которые разбрелись по вебам тоже есть.
Всё самое сочное решил воссоединить в одно единое, простота, скорость и надёжность была моя цель.
 на самом деле, это была не только его цель. Начинал писать новый движек я с этим девизом, да и, наверное все сейчас стремятся к этому.

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

Хотя, вебы действительно очень похожи, принципами работы, модулями, я как то в последнее время даже не уверен, стоит ли вообще устраивать эти "кто лучше" или нет. Так как многим нравится одно, вторым другое. Кому - то удобнее так, кому -то вообще дев нравится...

Что касается последнего апдейта.. пришлось вымученно сделать капчу отключаемой, так как у многих в дизах её нет и вписывать явно не хотят/не могут.  Хотя я сугубо против отключения, но если надо... пусть не руками лазят по коду, а в настройках отключают...

вообще, чем дальше пишу, тем больше понимаю, что близится 2.0... Просто еще раз переписывать весь двиг придется, так  как в этом иногда такие куски кода нахожу, что в панике сижу и думаю "КАК!? КАК Я ТАКОУЮ :?*"№;%№;: МОГ НАПИСАТЬ?!!!"..
но 2.0 вряд ли будет фришным, ой как вряд ли.
 

пятница, 27 июля 2012 г.

о сайте да о скриптике MMOTOP

Фух, что-то закрутился я и забыл выложить пару апдейтов, но фанаты сайта не дремлют, бомбардируют асю. Спасибо им за это.
На самом деле, как то неуклюже я состряпал скрипты голосования, даже не сами а парсер. А точнее парсер ммо топа. В сайте он пока стандартный, но я уже начал клепать класс - заготовочку, так сказать, для удобства.

/**
* Класс, читающий статистику, предоставляемую ММО ТОПом по контролю голосования на сервере
* v 0.1
**/
class MMOTop
{
/**
* Получает текстовый файл контента с MMOTOPa
* @content - string адрес файла статистике на ММО ТОПЕ (узнается в пункте меню "статистика" в панеле пользователя на ммо топе)
* @type - int если равен 0, то Сортирует массив по ключам, сохраняя отношения между ключами и значениями от большего к меньшему. В случае с топом, сортирует голоса по дате от старых к новым
* возвращает массив со строками
**/
function get_content($content, $type=0)
{
$contentZ = file_get_contents($content);
$m = explode("\n", $contentZ);
if ($type == 0) krsort($m);
return array_diff($m, array(null));
}

/**
* возвращает массив с голосами формата
* [0] = voter ID [1] = date [2] = IP [3] = Nick(account) [4] = votes
* @ar - массив, возвращенный функцией get_content
* @t - int если, то преобразует дату в время (ф-я time())
**/
function getVoteArray($ar,$t=0)
{
$i=0;
foreach($ar as $id=>$value)
{
$asd=explode(" ",$value);
$r[$i][0]=$asd[0]; // voter ID
if ($t==0) $r[$i][1]=strtotime($asd[1]);
else $r[$i][1]=$asd[1]; // date
$r[$i][2]=$asd[2]; // IP
$r[$i][3]=$asd[3]; // Nick(Account)
$r[$i][4]=$asd[4]; // votes (1 - simple 2 - sms)
$i++;
}
return $r;
}

/**
* Функция принимает @address (string) адрес статистики ммо топа
* возврашает массив [n] = {[0]=voter ID [1]=date [2]=IP [3]=Nick(Account) [4] = votes}
**/
function ReadTop($address)
{
$array = MMOTop::get_content($address);
return MMOTop::getVoteArray($array);
}

function MWCreadTop ($adr, $topnum,)
{

}
/**
* Ищет в массиве @votequery сответсвие @value
* возвращает индекс первого найденного соотвествия
**/
function findmatch($value,$votequery)
{
foreach ($votequery as $id=>$oa)
{
if(trim($oa[0])==$value)return $id;
}
return -1;
}
}

в общем то пока подключив данный скрипт и набрав
$votear = MMOTop::ReadTop(<адрес стаститсики>);
можно получить двумерный массив с проголосовавшими, причем по дефолту он будет по возрастанию даты
в методе  MWCreadTop я подумываю реализовть уже исполнение непосредственно для моего движка 

суббота, 7 июля 2012 г.

не о чем

Не понятно, почему нужно постоянное соперничество.  Споры, соревнования... ох. Очень неприятный момент был сегодня. Написал мне друг, 1 из p4f, дал ссылку на помойку(в ранних постах, если кому интересно могут узнать, что за ресурс). В общем, нехотя открыл я форум, в принципе, уже точно зная к чему все сведется... Суть такова:
столкнулось 2 взгляда на решение 1 проблемы :
1. считает, что следует использовать шифрование встроенное (клиент <->сервер), с использованием Xor, ибо нет смысла изобретать и навешивать что-то когда есть готовый механизм.
2. считает, что использование xor весьма легко можно сломать, и предлагает использовать навесное, но более серьезное и затратное шифрование. Оно более надежно, а  главное, универсально для любых версий и для использования в других проектах в целом.

На самом деле, у меня сразу возникла аналогия со спором: *nix vs win.  Я попытался объяснить своему другу, что в этом споре нету выигрыша, что они придут к 1 и тому же, разными способами. Но его похоже зациклило на том, что произошел переход на личности, и со словами тебе не понять ушел в оффлайн.
Я не знаю, что его там так ослепило, то ли чувство обиды, то ли то, что он прав... Нет терпимости, нет скидок на недостатки оппонента. Возможно, просто повышенная нервозность.
Спор-то вышел не о чем, а кончился опять агрессией и обидами.

Конечно, то, что началось дальше в теме было еще неприятнее. Начался разбор полетов - влезли какие то совершенно непонятные личности со своими доводами по поводу всей системы, в которую в общем-то втачивается шифрование и с яростной критикой, совершенно беспочвенной, так как исходного кода никто не видел. Обвинения в использовании чужих сурсов, резкий троллинг по поводу методов защиты. Самое ведь забавное, что даже до вершины айсберга личность не дошла, ибо в принципе видела только то, что хотела видеть. Откуда столько агрессии у этой личности, я не знаю, да и не интересно. Неприятно стало потому, что человек не знает сколько трудов было положено на это все, сколько перекопано мануалов, мсднов, примеров, сколько потрачено сил на логику. И, буквально, в 1 мгновение кто-то устраивает толлинг. Всегда возникает 1 вопрос: а кто ты, чтобы критиковать или утверждать что-то если ты сам ничего подобного не можешь написать, зато посмотрев 1 день, сумев найти брешь или недоработку утверждать - говно.
Он пока не знает о 2.0 версии, которая   на голову выше предыдущей... Опять будут искать и если найдут еще злее будет реакция? К чему это все? Не понятно.
Вообще, вся комьюнити сгнила. Всем нужна халява и получше, но никто не хочет и пальцем шевелить. Все больше понимаю, что пора отсюда сваливать и чем быстрее, тем лучше.

воскресенье, 1 июля 2012 г.

и в продолжение

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

среда, 27 июня 2012 г.

снова туда, где интересно


Много идей и мыслей есть для сайта и для своего сервера... Много есть, да великая лень со мною борется. В общем, на чистом интересе сел писать крафтовую систему, на этот раз все по-взрослому, хорош модульного программирования, все в классах :) Очень долго думал о самом сложном во всей этой системе - как распознать вещи(ингридиенты), и ура, подсказал мной друг и товарищ киллбрум, работа закипела, и в общем - то, благодаря тому, что до этого я уже переписал и сделал статический класс для парсинга вещей, вышло весьма не плохо и сравнительно за короткий срок: всего то 2 не полных выходных на теоретическую для более сложной системы и 2 не полных дня на разработку родительского класса, который умеет читать рецепты и почти научился вещи упихивать в сундук(ну, это дело 5 минут, уже не тяжко в общем-то)
то есть можно из нескольких вещей нечаянно получить 1 требуемую :) Очень долго я боялся садиться за разработку. Думал будет нудно и мне не справится. Ан нет, кое-что смог, слава Богу :) 

понедельник, 25 июня 2012 г.

обдуманное решение

Все, я закипел, надоело...
Надоела эта пародия общения на х-му. Для тех кто не в курсе, x-mu.net - пожалуй самый крупный русскоязычный портал о muonline.


Самый крупный и самый паскудный. Да, Вова, если прочтешь, не обижайся, но оно так и есть. Правила работают для избранных, то есть, не избранных, обычных смертных - их можно банить, чмырить, оскорблять более избранным и никакого, в общем - то наказания не последует.
Мне всегда казалось, что администрация форума должна быть беспристрастна, но, похоже только мне так кажется. Мат, расизм, прочие унижения иногда просто льются потоками и правят их, если правят, то, такое ощущение, что весьма и весьма не охотно.
Про баны из группы "проверенные 2" и выше, я вообще не слышал, хотя многие из них иногда такие вещи вытворяют.
То, как раздают группы для меня тоже загадка, но тут дело сугубо личное, хозяевам виднее, как говорится...

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

Последней каплей стало заявление одного... м.. человека, что p4f могут и "зажать" собственные разработки.
Интересно... все ли выкладывают исходный код некоторых приложений, сложных приложений и весьма гибких для той сферы, для которой они предназначаются... и как понять "зажать". Смешно и стыдно. Вроде бы обычное слово, но настолько выбило из колеи, что готов был разорвать.
В общем, решено. Отдохну от этой помойки русской комьюнити, благо, тем кому нужен, найдут на наших ресурсах. Да меньше народу, но зато пока они адекватны и с ними комфортно общаться.

суббота, 2 июня 2012 г.

Как заресторить базы на 2008 SQL для muonline

Забавная вышла тут дискуссия: говорил о файрволах, а кончилось SQL серверами :D. в общем, накатал по быстрому гайдик как ресторить базы.
итак, для начала, качаем Microsoft® SQL Server® 2008 R2 с пакетом обновления 1 (SP1) — Express Edition, нас интересует SQLEXPRADV_x64_RUS или SQLEXPRADV_x86_RUS, зависит от ОС. Ставим. При установке проставьте engine и SQL Server Management Studio
далее, открываем SQL Server Management Studio  пкм на database
Далее получаем что-то вроде
указываем название базы(создастся автоматом), выбираем откуда восстанавливаем. далее
ставим галку на выбранном файле для восстановления базы и идем в опции
вы можете указать названия для файлов базы (кружок слева) и указать где они будут храниться(кружок справа), далее жмем акей и через н-секунд получаем сообщение
тадам! вот и все. не страшно, но немного ново, по сравнению с 2000 SQL

пятница, 1 июня 2012 г.

Первое сообщение блога.

Это первое сообщение в этом блоге...
На самом деле, даже не знаю, что в нем написать. Создал блог для изрыгания своих никчемных мыслей и, наверно, размышлений по поводу своего проекта , поддержки оного. Хотя, есть и форум p4f.ru, но тут как-то по обособленнее, что ли. иногда требуется отдельное пространство...

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

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