Home

Advertisement

January 1st, 2014


12:00 am - sticker
Чтобы убрать неястности...

Я программист / орхетектор / аналитик / team lead, больше всего - программист. Занимаюсь я восновном приблудами для операторов мобильной связи. Ну, знаете? Биллинги там, провижининг, CRM'ы, платежи, sms сервисы и прочая дрянь.
Интересно это тем, что у твоего продукта десятки миллионов гарантированных пользователей.

Но здесь речь не об этом. Одно из моих хобби разработка игр и еще всякое, с ней связанное.

А ввиду того, что это не тематический блог, а ЖЖ, готовтесь встретить еще и всякий мусор эмоционального происхождения, да и прочий мусор тоже

(5 comments | Leave a comment)

July 1st, 2009


03:55 pm - По мотивам башорг
#define _2PI PIPI

(Leave a comment)

June 24th, 2009


10:01 pm - Мое отношение к OS

Current Mood: [mood icon] cold
Current Music: Blue October - Ugly Side

(4 comments | Leave a comment)

June 23rd, 2009


11:03 pm - Орхетектура
Потихоньку делаю себе не движок, но что-то вроде game framework, ради фана. Хочется построить что-то гибкое, чтобы поверх можно легко было лепить. Ну и несколько целей, которые я себе ставил перед началом:
  • модульность для упрощения написания / отладки, плюс возможность использовать уникальный набор модулей в каждом проЭкте (например не использовать сеть, или использовать навороченный AI), ну и ради лулзов ради фана, конечно же

  • поддержка многопоточности

  • использование готовых middleware библитек (Ogre / ODE / fmod / etc.)

Собственно, получилась некая орхетектура, которую хотелось бы пообсуждать.
Читать дальше )

Ссылки
Component-oriented design на консолях, лобзиком по шаблонам
A Flexible and Expandable Architecture For Computer Games Jeff Plummer's Masters Thesis
A Data-Driven Game Object System by Scott Bilas (слайды)
Паттерны revisited. Введение. На самом деле там [info]aruslan зажигал не только и не столько про паттерны
Tags: ,

(Leave a comment)

10:08 pm - В Diablo3 не будет ни шлюх ни блэкджека
Почему?

Да потому что выходцы из Blizzard так и норовят сделать свое Diablo, только с... ну вы поняли, короче.
Новый проект называется Torchlight, ну и как водится, после сингла ребята из Runic Games (теперь они зовутся так) планируют выпустить MMO.
Из интересного - в игре все dungeon'ы будут генерироваться движком, весь тулсет разработчики обещают отдать для растерзания игры моддерами.

Для рендера они использовали Огр, говорят - довольны, так что целесообразность использования ogre вроде бы подтверждается.
Current Mood: [mood icon] busy
Current Music: Stevie Ray Vaughan - The Sky Is Crying

(2 comments | Leave a comment)

June 20th, 2009


10:49 pm - Paderborn BBQ-Skatecontest 2009
Так получилось, что я сейчас ошиваюсь в Германии (Падерборн), а здесь как раз проходит фристайл скейтбоардинг контест - решил сходить. Честно говоря, ожидал увидеть уже успевший набить оскомину фристайл в парке - рампы / перила, но это оказалось намного круче - невозможно передать что оказывается можно делать с этой доской. Кстати, народ собрался совершенно разношерстный, были дети лет по 5, причем зажигали на уровне, были дядечки лет эдак под 40 - по тому что они вытворяли сразу становилось понятно чем они занимались последние 20 лет, проще говоря они на доске чувствуют себя увереннее, чем я на земле. Девушки были, да, но меньше.
Камеры у меня с собой не было, так что вот видео с прошлогоднего контеста.

А вообще замечательно, что спорт среди молодежи всячески поощряют, тем более такой, который ей действительно интересен.
Да, травмы были - ушибленные и поцарапанные коленки и локти.
Current Mood: [mood icon] impressed
Current Music: Everlast - Naked
Tags:

(Leave a comment)

June 18th, 2009


10:37 pm - Обратная сторона рептилии
Есть некоторые вещи в Python, которые меня раздражают, а именно - переопределение переменных:
a = 0
def set_a(new_a):
    a = new_a
set_a(5)
print(a)

И вот еще - отсутствие типизации в данном случае:
var = 0
print(Type(var))

var = "Hello, world"
print(Type(var))

Но на самом деле все это проще воспринимать с другой точки зрения - в Python нет оператора "присвоить значение", вместо него - создание переменной.

А еще я выяснил что внутрях питона список аргументов функции - это dict, еще бы интерпретатору не быть медленным при таких-то раскладах.
Вот пруфкод:
def foo(s1, s2):
    print (s1, s2)
args = {'s1' : 'Hello', 's2' : 'World'}
foo(**args)


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

Подсветку синтаксиса питона я утащил отсюда
Current Mood: [mood icon] sleepy
Current Music: Rolling Stones - Wild Horses
Tags: ,

(4 comments | Leave a comment)

June 17th, 2009


01:12 pm - untitled-01
Кто-нибудь знает рецепт?

zerg
Current Mood: [mood icon] confused

(4 comments | Leave a comment)

May 29th, 2009


12:19 pm - sudo rm -f in a Windows way
Наверное любого, кто пользовался *nix сильно раздражает сообщение Windows "Cannot delete file. Access denied".
Выходы есть, конечно - Safe Mode, BootCD, но можно проще.
Unlocker.
Показывает процессы, использующие файл, может отобрать lock у процесса, или убить процесс. Что мне показалось чудом - утилита смогла убить процесс сервиса, работающего под LocalSystem.
Current Music: Everlast - Angel

(8 comments | Leave a comment)

May 25th, 2009


04:08 pm - libKISS
К сожалению подход KISS для библиотек не работает, потому что у библиотеки минимум 2 программиста - который разрабатывает библиотеку и который ее использует. Можно упростить разработку библиотеки, можно использование, а истина как всегда где-то рядом.
Кстати, как раз про это писал [info]ivansorokin
Tags:

(Leave a comment)

May 21st, 2009


08:50 pm - Insert? Append!
- Мне абсолютно нечего сказать
- Напиши об этом в блог


Как-то так получилось, что я принимаю участие в разработке уже третьей по-моему биллинговой системы и решил вот завести себе в журнале еще один тэг - oracle, собственно вот.

Иногда нужно лить в базу данные, много данных. В случае обычного INSERT INTO происходит много лишних телодвижений, а именно: заполнение свободных экстентов данными, генерация undo сегментов, генерация redo журналов, а еще возможно и flashback сегмента. Сюда же относится и перестройка индексов, выполнение триггеров и проверка констрейнтов (впрочем этого никак не избежать). Чтобы упростить процесс загрузки, Oracle предоставляет специальный режим вставки - append. При использовании этого режима данные добавляются не в свободные экстенты, а вконец таблицы, причем за high watermark (EOF для таблицы). Что происходит в этом случае? Информация в undo и redo не пишется - в случае ROLLBACK просто ничего не происходит, а записанные данные со временем перетрутся, в случае крэша инстанса до COMMIT'а тоже ничего страшного не произойдет. А сам commit в режиме append проходит практически моментально, oracle не нужно фиксировать транзакцию, только передвинуть high watermark за свежезалитые данные. Просто? - Да, но нюансы все-таки есть. Во-первых я не уверен смогут ли несколько сессий эффективно писать данные одновременно (говорят эту проблему решили в 10g), во вторых такой режим удобно использовать если данные из таблицы не удаляются, в противном случае дисковое пространство будет расходоваться неэффективно (Oracle не будет заполнять "дыры", а всегда писать вконец).
Ну и самое главное - как использовать режим append.
Можно просто добавить хинт в запрос INSERT /* +APPEND */ но в данном случае решение использовать этот режим, или нет принимает Oracle, гарантированно грузить в режиме append можно только с использованием OCI (Oracle Call Interface), это же API использует SQL*Loader
Current Music: Stevie Ray Vaughan - Mary Had A Little Lamb
Tags: , ,

(19 comments | Leave a comment)

May 5th, 2009


04:34 pm - Параноикам на заметку
Был просто эпический срач на тему QIP'a(например здесь), не надо воспринимать это буквально, это скорее в контексте: "QIP скурвился, это надо иметь ввиду"

Я вот о чем - QIP Infium умеет подключаться к Google Talk и делать notify о новых входящих в GMail, по клику на котором открывается браузер с почтой. Браузеру эта падла передает URL в виде gmail.com/someshit.ext?login="mylogin"&password="mypassword".
Я просто офигел, увидев свой пароль в history браузера (это рабочий компьютер - как минимум неприятно).
Current Mood: [mood icon] cold
Current Music: Evans Blue - Beg

(Leave a comment)

April 16th, 2009


12:57 pm - Не мог не запостить
Если вы заняты разработкой Fallout / Stalker MMORPG в свободное время, а вдохновения не хватает - его можно брать здесь просто-напросто черпаком.
Current Mood: [mood icon] cold
Current Music: Everlast - This Kind of Lonely

(Leave a comment)

April 13th, 2009


01:52 pm - Продолжая тему порно...
Включал коллегам мелодию с заставки студии Private.
Реакция разная, лучшие - морщатся и пытаются вспомнить "Где же я слышал(а) эту мелодию?", или "Ну, знакомое что-то, а в чем прикол?"

А еще диалог отличный вышел
- Так а откуда эта мелодия?
- Успокойся, ты ее проматывал постоянно
Current Music: Everlast - White Trash Beautiful
Tags: ,

(Leave a comment)

April 4th, 2009


08:11 pm - Про деревья и лес

<Joric> если девелопера оставить одного - он рано или поздно начнет писать класс вектора!
Взято у [info]cppguru


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

Я когда-то на собеседовании получил задание, которое мне очень понравилось.
Общий принцип таков: дается задание часов на 6 - разработать какую-то систему (можно на выбор), к системе есть ТЗ со списком обязательных фич, дополнительные - в плюс. А теперь основной момент - за отведеное время систему написать невозможно. На выходе кандидат дает код, по которому ясны подходы к разработке и что самое важное - умение расставлять приоритеты и подход к проектированию
Current Mood: [mood icon] bored
Current Music: Сплин - Что ты будешь делать
Tags:

(7 comments | Leave a comment)

01:23 am - Всячина
В целях повышаемости рейтинга журнала буду выкладывать порно, вот как.

В этом мувике снимается Натан Филмор, он же капитан Малколм Рейнолдс в "Светлячке" и "Миссии Серенити"


А вообще-то это сериал - его можно найти по тэгам "PG Porn", "Порно для всей семьи"
Current Mood: [mood icon] sleepy

(7 comments | Leave a comment)

March 31st, 2009


09:40 pm - Передача ссылки на массив параметром функции в C++
Это я так, чтобы под рукой было. Ну и может не знал кто...

C++ for beginners
class A
{
public:
    const int (&get_array() const)[4] { return m_arr; }
    
    void set_array(int (&newArr)[4])
    {
        for (int i = 0; i < int(sizeof(newArr) / sizeof(int)); ++i)
            m_arr[i] = newArr[i];
    }

private:
    int m_arr[4];
};
_Winnie C++ Colorizer


Intermediate C++ - указатель на функцию-член, которая возвращает ссылку на массив фиксированного размера.
typedef const int (&(A::*get_arr_fcn)() const)[4];
_Winnie C++ Colorizer

Tags: ,

(6 comments | Leave a comment)

March 29th, 2009


03:03 pm - Фотостудия на колесах
Чтобы фоткать всякие штучки для фотостоков купили жене ([info]jenny_eyre) фотостудию и свет за кучу бабок, блэкджек и шлюхи в комплекте.

Вот они - первые блины (апельсины, если быть точным)



Фотки мегостудии )
Current Mood: [mood icon] creative
Current Music: Бумбокс - Наодинцi
Tags:

(3 comments | Leave a comment)

March 22nd, 2009


10:03 pm - Future is here
Ребята из Microfoft'а написали некое Touchless SDK.
Это творение позволяет разрабатывать multitouch интерфейсы, используя самую обычную web-камеру, как ввод, как они сами говорят: "Multitouch without touching".
По ссылке есть видео - показывают тестовую программу, которая трэчит разноцветные объекты, с помощью которых можно играть в пинг-понг, или рисовать двумя руками, вообщем довольно интересно.
Чтобы попробовать чудо инженерной мысли нужны всего лишь WEB-камера, .NET3.0 и SDK (которое open-source).
Current Music: B.B. King - The Thrill Is Gone

(Leave a comment)

March 20th, 2009


11:50 pm - Intrusive containers revisited
Я как-то вскользь упоминал про intrusive контейнеры. Это такие контейнеры, которые не требуют дополнительных аллокаций для внутренних структур, за счет того, что элементы контейнера сами хранят в себе доп. информацию (ссылки на next / prev для list'а и т.п.).
Так вот, в boost'е появилось целое семейство Intrusive, там все, начиная single-linked list'ом и заканчивая RB и AVL tree.
Они даже разрешили проблему хранения одного элемента в двух контейнерах сразу и добавили holding strategies. Выглядит это где-то так:
#include <boost/intrusive/list.hpp>

using namespace boost::intrusive;

struct mytag1;
struct mytag2;
struct linked
{
    typedef list_member_hook<tag<mytag1>, link_mode<auto_unlink> > hook1_t;
    typedef list_member_hook<tag<mytag2>, link_mode<safe_link> > hook2_t;
    hook1_t _hook1;
    hook2_t _hook2;
};
list<linked, member_hook<linked, linked::hook1_t, &linked::_hook1>,  constant_time_size<false> > list1;
list<linked, member_hook<linked, linked::hook2_t, &linked::_hook2>,  constant_time_size<false> > list2;
_Winnie C++ Colorizer

Согласен, на вид запутанно, но на деле все просто. Пока что есть один нюанс - невозможно определить контейнер внутри объекта-элемента (т.е. дерево объектов построить не получится), по этому поводу я запостил баг, так что будем надеятся что все поправят.
*UP Чего-то буст разочаровывает
Либы boost'а меня радовали своей секьюрностью, с Intrusive все не так, хоть и задача комплексная, конечно.
При использовании Intrusive надо либо публично наследоваться от ..._base_hook, либо добавлять ..._member_hook, но тоже в public секцию. В итоге всем становится доступен метод hook'а unlink(). Т.е. кто угодно может в любом месте выкинуть элемент из контейнера так, что никто об этом ничего не узнает.
Current Mood: [mood icon] cold
Current Music: Bloodhound Gang - The Ballad of Chasey Lain
Tags: , ,

(4 comments | Leave a comment)

D.Rider on everything

> Recent Entries
> Archive
> Friends
> User Info
> previous 20 entries

> previous 20 entries
> Go to Top
LiveJournal.com

Advertisement