пятница, 30 октября 2015 г.

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

воскресенье, 11 октября 2015 г.

Что такое MVC (Nodel-View-Controller) моими глазами. Тут только теория и много пьяных букв.

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

Второе, о чем хотелось бы сказать - я не являюсь теоретиком, а на 80% все познаю в практике, из-за чего могу быть неправ или не совсем прав. Так же из меня ужасный учитель и "объяснятель", так что если Вы все еще хотите читать дальше... вобщм, я предупредил.

Третье, но уже по теме: MVC является паттерном, то есть шаблоном программирования, который перерос в религию "тру-программистов". Шаблоны, если говорить на чистом и любимом русском - варианты решения типичной ситуации. И поэтому всегда, слышите? Всегда прежде чем использовать тот или иной шаблон трижды (если такой же как я, то все 5 раз) подумайте, а подходит ли данный шаблон под вашу ситуацию или нет, если нет, то не надо использовать что-то притянутое за уши. Пожалейте всех тех, кому сопровождать ваш код, ну или себя, если это будете Вы.

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

MVC он же Model - View - Controller (Модель - вид - Контроллер(управление, по-русски)) шаблон(алгоритм) программирования, в том числе используется PHP (на котором я иногда говногодю). В последнее время, данный принцип можно встретить в 99,99% серьезных проектов(сайтов), начиная от известных фреймворков типа симфонии yii, заканчивая моим тетрисом - mwce.

Принцип работы

Идея MVC, примерно, в следующем: ваш сайт делится на 3 логические части, которые вы описываете в 3 классах для каждой страницы сайта:

  • модель
  • контроллер
  • вид

Модель отвечает за данные. Вид отвечает за внешний вид страницы, то есть это интерфес. И контроллер, понятно из названия, управляет результатом, что предоставляет ему модель, чтобы потом некоторые из них появились у вас на экране через Вид.
Так же важно учесть, что модель - это не просто прослойка между базой данных и контроллером. По сути, модель работает с данными: перебирает, запрашивает у базы, может проверять, посылать, сортировать, в общем, вся работа с даннами проходит именно в ней...
Если не совсем понятно, то  представьте, что контроллер - начальник, который получает задачи от клиента, и в зависимости от его[клиента] хотелок требует и раздает поручения: модели получить и отсортировать определенные данные, а виду их отобразить на экран, вот оно и будет. Да, и не забывайте, что у начальника может быть много подчиненных (В том числе, из соседнего отдела Васи, который одолжит оных за определенный ништяк), то есть 1 контроллер может запрашивать данные с разных моделей, если это действительно нужно.

Для чего это надо и чем полезно

Во-первых, MVC почти всегда реализовывают на ООП (ни разу не видел этого в функциональном виде, хотя, думаю, при желании можно). А что такое объектно-ориентированное программирование? Правильно, это классы с инкапсуляцией, наследованием и полиморфизмом. Если не понятно о чем я говорю, то прежде чем пережевывать написанное тут, очень рекомендую поплотнее познакомится с ООП и с его плюсами и минусами.

Во-вторых, мы получаем некоторую степень абстракции, что позволяет нам не меняя архитектуры и принципов создавать и достаточно быстро создавать, новые страницы с совершенно разной логикой (что на 80% зависит от модели, на 15% от контроллера и на 5% от вида).

Как правило, все контроллеры и модели являются потомками родителя - контроллера и родителя - модели. ( с видом обстоит по-разному, все зависит от того, как реализован класс). Для чего? А все просто: в родителях описывается обязательное поведение для потомков: входная точка для контроллера, например. Подключение к базе данных и подключение ряда нужных данных(чтение файлов, разбор конфигов) для модели.

То есть, если так получилось, что вы меняете, например, базу данных с mysql на ms sql, все, что вам будет нужно - отредактировать модель (ту прослойку где идет работа с бд, возможно, это отдельный класс, что подключается к модели), причем, в большинстве случаев только 1 - родителя и все.

Если же требуется добавить логику или реакцию на какое-то действие пользователя, то вы точно знаете, что начинать нужно с контроллера. В этом заключается вся гибкость: не нужно лазить по всему коду и искать, какие же мне надо изменить строки, при постановке задачи уже будет ясно, что и где менять + так как все части независимы друг от друга, их можно перелопачивать не боясь, что поломается все.
Но всегда нужно помнить, что стрелять по воробью из танка хоть и весело, но глупо: писать "хелловорд" в паттерне MVC, зная, что он точно не будет развиваться - пустая трата времени.

вторник, 6 октября 2015 г.

Почему не стоит начинать играть в CS:GO

В первую очередь, хочу сразу заметить, что это лишь мои умозаключения и наблюдения, основанные на моем собственном опыте, как программиста, так и игрока.

С чего все начиналось или позвольте представиться.

С counter-strinke я познакомился в начале двухтысячных, где-то в районе 2003-2004, может быть, чуть раньше. Точно сказать не могу, так как учился еще в школе. Помню только, что первая "играбельная" версия моя была 1.5, хотя чуть позже я видел и более ранние версии. Более-менее, по-геймерски, я подошел к игре где-то в 2006 году. На тот момент был пик всяких городских соревновашек по "каэс" и каждый "настоящий пацан" был в "тиме" и резался в игровых клубах... в общем, к чему я... А к тому, что мало-мальский опыт и понимание игры у меня было и есть. Поиграв пару тройку лет, побывав в команде, поиграв внутри колледжа на внутренних "соревнованиях", как - то благополучно отошел от нее. Да, кстати, забыл, еще основательно игрался в quake 3 arena, в общем, люблю иногда "пострелять".

...К кс я "вернулся" примерно года полтора назад, сначала вспомнил про 1.6 и периодически "восстанавливал скилл"  на дм-ах  и пабликах. CS:S я попросту пропустил, она для меня как windows vista для понимающих, в сравнении с тем же cs:go (как с win 7) и как win XP, с 1.6.
Так вот, поигравшись чутка в 1.6 я все-таки пересилил себя и решил взглянуть, чем же так разительно отличается эта ваша "каэс го". Ну, с точки зрения концепции, cg:go - весьма не плохое логическое развитие старой-доброй 1.6, но теперь эта игра приносит еще и прибыль и в первую очередь, огромную прибыль valve, как от визуальных моделек оружия, наборов музыки, наклеек, внутриигровых событий (в игре они называются "операции" (на данный момент, последняя закончившаяся - "bloodhound")), в принципе, законно и справедливо.. почти.

Первые звоночки

Ну как олдскульный олдфаг, считающий, что у него большие ...амбиции, более-менее, приноровившись к новой для себя динамике игры я пошел "катать катки" - играть в рейтиноговые игры - "соревновательный режим". Суть режима проста: стандартная 30-раундовая игра (за террористов и за спецназ) до 16 побед одной из сторон или ничьей в случае счета 15:15. Задумка автоматчей - супер, но вот реализация... В общем, самое первое изменение - уменьшение тикрейта до 64 в непрофессиональных играх, в то время, как на любом сервере 1.6 тикрейт по умолчанию не ниже 128.

Что такое тикрейт и что происходит, когда он низкий.

Чтобы четко понять, что это такое, сначала небольшой экскурс "на пальцах" в архитектуру. Архитектура CS клиент-серверная. Что это значит: все компьютеры, на которых включена cs  и играющих на 1 карте (игре) отсылают данные одному серверу. Сервер обрабатывает данные и отсылает клиентам ответ, по сути как начальник указывает клиентам что им делать.
В эти данные примерно входит: местонахождение игрока, движение, выстрелы, оружие, взрывы, ослепления, в общем, все движения в игре.
В ситуации, когда игроки стреляют друг в друга именно сервер решает кто в кого попал и кто увернулся, понятно, что с огромным числом особенностей. Так вот, тикрейт - это период, с которым сервер синхронизирует данные  и чем он выше, тем точнее и актуальней данные. Очень не плохое объяснение (в скриншотах) есть на этом ресурсе.
Чем чреват низкий тикрейт? а все просто. Помимо времени обновления и синхронизации данных на сервере, существует еще и скорость доставки данных до сервера и потеря некоторого числа данных по дороге. Так вот, из-за всех этих особенностей можно увидеть следующую картину: выбегаете вы такой довольный и высаживаете пол обоймы в глову человека (причем, при таких условиях, что промахнуться - невозможно), а он мало того, что не получает вообще урона, так еще и убивает вас. Это утрированно, но чем выше ваш уровень и уровень оппонентов, тем острее становятся эти вещи. На моем уровне счет идет на доли секунды и я уже очень сильно ощущаю это "фитчу", когда в тебя из-за угла прилетает пуля в голову причем, не через стену, а прямой наводкой. Это значит, что человек успел высунуть дуло и выстрелить, но я этого даже не увидел, причем дело не в моей реакции, А действительно, моделька игрока или оружия не высовывалась из-за угла.
Да, забыл упомянуть, на каждый матч в соревновательном режиме пишется демо (в демо все действия с точки зрения сервера, не клиентов(игроков)), которое можно потом посмотреть, как играл ты и твои оппоненты (очень полезно для работы над ошибками).
Так вот, каково же мое возмущения, когда я на втором экране включаю видео, что писал с игры и сравниваю демо и видео, там, как раз, данный случай четко характеризует проблему и таких возгласов цельный интернет. Valve со своим плюрализмом специально опустили тикрейт для "непрофессиональных игроков" до 64, мол, все это может компенсировать пинг и мощность компьютера (в плане отображения кадров в секунду: когда оно ниже 60, лучше не играть в cs). Но это еще не все.

О читерах, бустерах и других несправедливостях.

Не так давно в cs:go ввели патрули. То есть, сыграв не менее 150 игр, со званием выше silver valve дает возможность просматривать демки и оценивать игру других игроков на предмет нечестной игры. Отличая мысль! Но... решение принимается коллегиально, голосованием определенного кол-ва игроков, срок принятия решения может быть более 2х недель.Сколько за это время можно "убить" званий игрокам посчитать не сложно, и кстати, если читер будет особенно хитер, то его могут забанить, а потом и разбанить, в случае, если он сумеет доказать, что это не чит.
 Аккаунт "признанного читера" банится в рейтинговых играх и весь его инвентарь так же банится, унося с собой все заработанные шкурки для оружия. Чем это плохо: в рейтинговый игре существует 2 вида читеров:

  • те, кто просто не умеют играть по-другому
  • те, кто специально за деньги поднимает звание игрокам 

И еще один вид не читеров, но читеров - те, кто заведомо имеет очень высокое звание, но играет против людей, что в несколько раз слабее по званию и опыту, поднимая звание аккаунту или команде, опять же, за деньги или для хорошего видео на ютуб.
Читером назвал я таких людей потому что против тех, которые играют в cs 20 часов всего, встает "читер" - человек с опытом, как правило, выше 400 часов, предугадывая все их действия, убивая с 1 выстрела или ножа (что, пожалуй, еще обиднее). Как вы считаете, какое настроение будет у вас после такой вот игры или у вашего дитя, что в нее играл. Нервное? Возможно, это даже мягко сказано. Но, как минимум, настроение будет попорчено и скорее всего, в следующей игре и не у 1 человека.


Еще одна несправедливость, как следствие предыдущей, или то, что можно назвать просто "фартом", вы играете в команде с игроками, которые не заслуживают то звание, которое у них есть, а против вас играют "заслуженные". Подобная "катка" бывает просто адом - вы читаете игру, вы если не сильнее, то наравне с оппонентами, НО ВАША КОМАНДА... в общем, это из разряда - я все понимаю, все делаю, но сделать ничего не могу и виноват не я - кусай свои локти, друг, если достанешь.  

В результате, настроение ваше может быть, мягко говоря, подпорчено от таких вот игр, это не есть гуд. Но и это еще не все.

Слово - не воробей, вылетит - не поймаешь.

Никогда, повторяю, никогда, даже своему врагу я не пожелаю играть с разноязычными игроками в одной команде. Чем это чревато: непонимание -> раздражение -> оскорбления -> большая вероятность слитой игры и настроения. Особенно опасен тот самый момент, когда команда состоит из пары русскоязычных игроков и выходцев из Польши, Литвы... Если они прознают, что вы - русский, то в большинстве случаев кроме слов "kurwa, fu*k  you" и т.д., вы ничего не увидите и самое страшное, не услышите. А если еще учесть, что средний возраст игроков - 14-18 это очень печально. Честно сказать, будучи человеком с возрастом уже за 25 лет, я узнал некоторые нецензурные выражения, о которых раньше даже не ведал. Самое страшное, что люди оскорбляют даже не вас, а ваших родителей, и похоже, сами того не понимают. Что так же убивает ваше настроение, мораль в игре и моральный уровень.

О заработке в CS:GO 

 У истоков концепции cs:go, похоже стоят евреи - деньги в данном сообществе делаются, буквально из воздуха и света. Покупка продажа игровых предметов за реальные деньги, повышение званий за реальные деньги(буст), сайты - лотереи, где можно выиграть шкурку на оружие за реальные деньги, сайты - мошенники. Я знаю 2 больших портала, который за деньги предоставляет доступ к своим внутренним лигам для игры в  CS:go, отличие от того что есть - меньшее количество читеров, так как существует абонентская плата и античит, помимо vac'a. Работа стримером и ютубером, то есть, производство роликов с собой в главные роли по игре, начиная от гайдов, заканчивая приколами. Воровство аккаунтов, причем, чем больше дорогих шкурок оружия у вас есть, тем больше шанс, что у вас сопрут аккаунт, а если учесть, что аудитория несколько не подкована в IT-безопасности, то этот шанс изрядно повышается. Не однажды я сталкивался в игре с людьми, которые сетовали, что у них украли скины или же аккаунты на сумму от 5000-10000 рублей, на вопрос, зачем вы столько вливали денег я так и не услышал внятного ответа. И последний вид "заработка" - внутриигровой: за игры вам иногда выпадают оружия или ящики, которые можно продать на внутренней торговой площадке или обменять на другие вещи у игроков.

Вместо итогов

В cs:go я поигрывал примерно год- год + пару месяцев, за это время было выиграно в соревновательной игре 200 игр (не считая тех, где я играл с читерами), статистику проигрышей, я не знаю, но думаю где-то не менее 100-150, "наиграно" более 2000 часов в общем. На всех основных "оружиях" у меня настреляно не менее 1000 убийств, на второстепенных в среднем 300, на АК и m4 более 4700 на каждом (причем, за последние месяцев 6), "набивалось" все это на паблик серверах, дм и в соревновательном режиме, соотношение паблика к соверновательному режиму "по набиву" - 1/3, хотя, в последнее время стал 1/2, звание в соревновательной игре  - "биг стар" или distinguished master guardian, это чуть выше "среднячка". Начинал после "калибровки звания" с silver 2 или silver 3 (Да, я прошел почти через все круги ада в этой игре). Это не хвастовство, это статистика, чтобы вы понимали, что я знаю, о чем говорю и не писали, что это "плач рака". Я - командный игрок и для меня всегда на первом месте стояла не моя статистика, а выигрыш команды. + я реально до сих пор получаю огромное удовольствие от слаженной командной игры, где есть и тактика и поддержка, несмотря на тот совершенно ужасный уровень качества самой игры: игра вышла в 2012 году в ней до сих пор есть баги и недоработки. Это говорит о уровне тех, программистов, что пишут игру. Проверить новую "архитектуру" cs:go легко и не принужденно - просто зайдите на deathmatch (dm/дм) сервер, где народу будет хотя бы 15 человек и сравните с тем, что было в 1.6 это красноречивей всех слов.

Итак, на данный момент, зная, что меня ждало в игре, честно, я бы не стал даже думать об этой ней, где бОльшая часть ее механизмов сейчас направлена только на заработок и получения сомнительных регалий, в обмен на нервы, настроение, и в большинстве случаев впустую потраченное время. Если же вы все-таки решили купить и поставить оную, чтобы часок посидеть на классик сервере - то предупреждаю сразу: остерегайтесь болезни моделек! если затянет, то будет худе азартных игр!

Простите за столь сумбурное изложение, просто наболело, нужно выпустить было пар.




суббота, 3 октября 2015 г.

Работа над "билдом" muonline

...идет полным ходом, но... в основном, по выходным.

Что уже сделано:

  • подобран диз (название на одном известном форуме у темы espada-legend, но сам диз сделан для thanatos'a)
  • все элементы диза разбиты по плагинам
  • сделаны плагины авторизации, серверов(qinfo), меню
  • модули: новости, показ ошибок 

Скорее всего, сначала сделаю упрощенную версию и выложу ее. далее посмотрим, как пойдет.