Home

Advertisement

January 1st, 2014


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

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

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

Заметки о программировании фильтруются по dev

(5 comments | Leave a comment)

November 13th, 2009


04:59 pm - shared_ptr экономим байты
Пока все пишут про функциональные ЯП, я, значится, обустраиваю свою С++ берлогу.
Так вот, shared pointer'ы в некоторых случаях просто незаменимая вещь, но надо помнить про накладные расходы, а именно - аллокация на sizeof(pointer) для shared counter'a. Чтобы избежать этой аллкации можно хранить каунтер прямо в теле shared объекта и пользоваться boost::intrusive_ptr. Чтобы пользоваться интрузивным умным указателем, пишется обертка вида:
namespace boost {
    void intrusive_ptr_add_ref(YourClass *c);
    void intrusive_ptr_release(YourClass *c);
}
_Winnie C++ Colorizer

Только вот неудобно писать ее для каждого класса, поэтому я немного "очеловечил" использование intrusive_ptr.
Собственно лисапед: )

Правка:
На комментарий [info]sleppy_drago
Множественное наследование - не проблема, проблемы будут при размере дерева наследования больше 1-го - вызовется неправильный деструктор.
SomeClass : public Base, public refcounted<SomeClass> (release вызовет SomeClass::~SomeClass)
DerivedClass : public SomeClass (release опять-таки вызовет SomeClass::~SomeClass) Чтобы такого избежать можно конструктор refcounted сделать private и добавить _Successor в друзья.
Current Music: Everlast - Stone In My Hand
Tags: ,

(2 comments | Leave a comment)

November 12th, 2009


11:27 pm - Partly cloudy
Просто отличный короткометражный мульт
http://www.youtube.com/watch?v=O0JdaUiPmQU
Current Mood: [mood icon] sleepy
Current Music: Seether - Like Suicide

(Leave a comment)

October 8th, 2009


04:56 pm - Пеарю
Ртутная река Киева

А интересно, сколько еще такого "наследия" по территории бывшего СССР осталось? Что еще забавно - я даже не удивлен.
Current Mood: [mood icon] blank
Tags:

(Leave a comment)

September 19th, 2009


10:45 pm - Оператор goto, мы его не используем
Я не хочу начинать тему про обработку ошибок и про нюансы использования опреатора goto. Мне интересно другое - неприязнь к этому оператору заставляет использовать goto-подобные решения. И даже САМ Макконели в "Code Complete" приводит пример обработчика ошибок такого плана, как альтернативу goto:
    do
    {
        
        if (FAIL == DoSomething())
            break;

        if (FAIL == DoSomethingElse())
            break;

    } while (false)
_Winnie C++ Colorizer

Мне понятны преимущества такого подхода перед goto - мы не можем прийти в контролирующую структуру хрен знает откуда, мы не можем уйти хрен знает куда. Но ведь мы говорим о коде, который легко читать. Мне дико видеть типичный код обработки ошибок, замаскированный под цикл. Я хочу видеть здесь именно goto
Current Mood: [mood icon] awake
Current Music: Incubus - Love Hurts
Tags:

(6 comments | Leave a comment)

August 31st, 2009


03:09 pm - Линуксовое
Вот лично для меня Linux станет primary desktop OS тогда, когда я буду делать "lsmod | grep snd" и переустанавливать ndiswrapper только после того как посмотрю стоит ли галочка "mute" в KMix
Current Music: Everlast - Lonely Road

(Leave a comment)

August 26th, 2009


04:46 pm - Мечта
Мдя, у меня сильно лирическое настроение, оно требует выхода, а посему
полкило сахара и столько же соплей )
Читать не рекоммендую - это надпись "&#$" на сарае, вот только лиричнее и не так глубокомысленно.

(2 comments | Leave a comment)

August 4th, 2009


04:32 pm - CVS / DCVS / etc
* xxx с удивлением обнаружил, что корзина в виндовс является прекрасным средством для резервного копирования исходников активного проекта. там могут находиться файлы с одинаковым именем а также пишется дата помещения в корзину

via ibash.org.ru
Current Mood: [mood icon] tired
Current Music: Placebo - Where Is My Mind (Pixies cover)

(Leave a comment)

July 27th, 2009


05:21 pm - Че-та я устал.
А никто Exodus from the Earth 2 не продюссирует? Берусь реализовать быстро, качественно, недорого. Не гербалайф.
Current Mood: [mood icon] tired
Current Music: Massive Attack - Teardrop
Tags: ,

(Leave a comment)

July 26th, 2009


12:13 am - Советы и грабли
Обидно, умные люди советуют умные вещи, но не объясняют почему нужно делать (не делать) именно так, в итоге я им не верю. В очередной раз наступаю на грабли самостоятельно, а дело вот в чем: самый простой способ выполнения чего-либо асинхронно это "вызвал метод, подписался на callback". Все хорошо, но ровно до тех пор пока порядок вызова и результат выполнения не влияют на логику программы. В противном случае вся программа превращается в стейт-машину неподъемной сложности.
Current Mood: [mood icon] crappy
Current Music: Theory Of A Deadman - Santa Monica
Tags:

(3 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:

(2 comments | 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

(5 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)

D.Rider on everything

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

> previous 20 entries
> Go to Top
LiveJournal.com

Advertisement