Pull to refresh
0
0
Лёша @Yakud

Пользователь

Send message
Существует оператор for… range для итерации по массивам и слайсам, но вы не можете перебирать другие коллекции, потому что концепция итераторов отсутствует
На самом деле, еще можно сделать range по каналам
А если снимать в замедленном режиме iPhone и увеличить FPS. Может быть получится добиться лучших результатов?
Ну как же зачем?! Прогреть кэши перед входом пользователя на основной сайт, а не форму авторизации. Да, на одну страницу это слишком жирно, но зато после авторизации пользователь уже не будет ждать пока все скрипты загрузятся, особенно с медленным инетом, а сразу начнет поглощать контент.
habrahabr.ru/post/179399/
Модель умирающей программы
имеется ввиду
Часто приходится использовать похожую организацию в своих проектах. Небольшое отличие: называю объекты не репозиторием (Repository), а хранилищем (Storage).
Хранилище организовано в виде интерфейса, примерно так:

interface StorageInterface {
    public function add($item);
    public function update($item);
    public function delete($item);
    
    public function getById($id);
    public function getByIds(array $id);
}


Далее, следует реализации интерфейса под нужные базы данных, например:

class RedisStorage implements StorageInterface {
    ...
}

class MysqlStorage implements StorageInterface {
    ...
}

class MemoryStorage implements StorageInterface {
    ...
}


Реализации хранилищ баз данных оперируют с массивами/строками и ничего не знают о том, какие данные к ним приходят. Вся валидация и подготовка данных происходит выше.
Следующим слоем абстракции идет реализация хранилищ сущностей в нужных базах данных. Будь то User, News, Event, Point, etc…

class UsersRedisStorage extends RedisStorage {
    public function add(User $item);
    public function update(User $item);
    public function delete(User $item);
}

class PointsMysqlStorage extends MysqlStorage {
    public function add(Point $item);
    public function update(Point $item);
    public function delete(Point $item);
}


На этом слое, производится частичная валидация и подготовка данных. Кейсы вроде:
— База данных принимает фиксированное число полей для сущности, а на вход пришли только обязательные поля? Не беда, добавим недостающие поля со значениями по умолчанию.
— Хранилище базы данных работает с JSON? Сконвертируем и принятые данные и прокинем дальше.

Реализация сущностей проста. Это класс-обертка над данными (можно назвать стрктурой), которая имеет примерно такой интерфейс:

interface Entity {
    public function get($field);
    public function set($field, $value);
    public function imort(array $data);
    
    /**
     * @return array
     */
    public function export();
}


Хранилище сущностей принимает экземпляр сущности, делает экспорт данных и посылает их в реализацию базы данных. Примерно так:

class User implements Entity {
   ...
}

class UsersRedisStorage extends RedisStorage {
    public function add(User $item) {
        $userData = $item->export();
        // Вот тут валидируем $userData
        // Или переводим в json: $userData = json_encode($userData);
        parent::add($userData);
    }

    public function getById($id) {
        $userData = parent::getById($id);
        $User = new User();
        $User->import($userData);
        return $User;
    }
}


Вокруг хранилища сущностей можно обернуть какую-нибудь фабрику или фасад, например.
В итоге, система хранилищ получается очень гибкая. Быстро пишутся реализации хранения различных сущностей в различных базах данных.
Не обязательно! Попробуйте G, потом среднюю кнопку мыши использовать… Очень удобно. Так же работает с масштабированием и вращением.
Как же? У меня на сайте такие есть!
image
Все хотят знать, что будет если сунуть лом в туалет в поезде?? Попробуем? Авось получится?
image
спасибо К.О.
image
По-моему, она совершенно не ощущается…
Ещё есть хорошая вещь pix.am
Скрин в три клика. ctrl+win+r, сразу есть редактор изображения. Можно подрезать, написать комментарии и одним кликом послать на сервак.
С сайта можно удалять ненужные снимки. Очень удобный сервис!
image
А вы не дожидайтесь появления меню, можно делать все крайне быстро…
Ещё мне нравится зажал правую кнопку провел влево, отпустил — назад. Зажал правую кнопку провел вправо, отпустил — вперед. Зажал, вверх отпустил — остановка загрузки страницы. Актуально с медленным инетом. Зажал, вниз — новая вкладка.
Давно искал подобный материал, для усвоения и применения изученного в школе и универе. Большое спасибо за перевод!
Нет, скорее просто multiplayer online role-playing game.
Цель проекта — получение опыта по работе с сетевыми приложениями (севрер — клиент).
В данный момент коммерческие цели не преследуются. Хотя, графику заказываем у художника и платим из своего кармана.
Честно говоря, в данный момент это не совсем игра, а скорее движок MORPG (именно MO, а не MMO).
Все началось в далеком 2008 году.


А данный момент игра переживает новый виток. Разрабатывается новый движок, с новыми возможностями…
XNA вики:
Набор инструментов XNA был анонсирован 24 марта 2004 на Game Developers Conference.
Первый Community Technology Preview XNA Build был выпущен 14 марта 2006.


Первое упоминание о GTGE:
19 March 2004
GTGE Released: Golden T Game Engine (GTGE) initial released!


Есть сомнения?
Java мне показался с более низким порогом вхождения, чем C++, а так же, я руководствовался чем-то сверхъестественным при выборе ЯП. В общем, Java мне показался более перспективным на данный момент. Если будут какие-то аргументы против, изменю свое мнение… Благо, время на разработку ничем не ограничено. Плюс масса опыта.
1

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Registered
Activity