31 октября 2009 г.

Черная полоса

Ну вот и до ноября дожили :)
Притом практически за неделю на меня свалился
шквал неудач, впервые у меня сдохла видюха,
умер медиа раздел на 4.5TB информации, а следом
накрылся bootsector на ноуте :(
Потом еще тормознули гайцы без прав и ТО,
пришлось отдать им последнюю сотку.
Таким вот образом остался лишь старый системник
с которого я пытаюсь как-то решить проблему.
Штат боулинга где я работаю сократился до 13 человек,
1 начальник
1 ст.администратор
2 администратора
1 ст.барик
1 барик
2 механика
2 официанта
2 гардеробщика
1 посудомойщик

при круглосуточном режиме работы:
пн-чт с 16:00 до 23:00
пт с 16:00 до 03:00
сб с 10:00 до 03:00
вс с 10:00 до 23:00

Народ естественно негодует и очень устаёт :)
При такой работе иметь 9 выходных в месяц
работая (в выходные) по 13 - 17 часов
неправильно :(

Имея 16 дорожек для игры в боулинг и как всегда
под вечер нерадивых нетрезвых посетителей :D

Исключая измотанность на работе, я занялся
подготовкой ВАЗ 2107 к тому, чтобы в скоре
поехать, поставил зеркала мёртвой зоны, приобрёл DVD ресивер, долго и упорно
его подключал, теперь осталось только
докупить сабвуфер, а, и чехол на руль, который
нацепить было сущим неблагодарством исправил проблему
его прутико-образности :D

4 августа 2009 г.

Последние месяцы лета. Часть I

Ну вот собственно работаю я уже второй или даже третий месяц на боулинге :)
Вроде бы пока без особых происшествий, работаю по 2-3 рабочих смены, поэтому
на комп времени почти нету, сча вот кстати re-поступаю, ребята в зелёной форме
не успели меня загрести, хотя очень настойчиво пытались, а вожу их за нос ещё с апреля :) причём не то, что я там негоден, нет, я просто как-бы пропал из вида
т.к на месте прописки сейчас никого нету, а на их номер я не поднимаю трубку...

Собственно подготовил фото отчёт о том чем я занялся в свободное от работы
время, чтобы не перенапрягать мозг: кодингом, работой, автошколой, а
вобщем занялся я разработкой собственной акустической системы - далее (АС)
в составе которой очень грамотный (предусилок + усилок + эквалайзер + усилок под саб) и всё это добро в одном мини корпусе.
Колонки будут обладать индикатором уровня перегрузки (красный света диод) коей будет загораться без всякого доп питания чисто от самого звукового сигнала когда тот
будет очень мощный и ставится он будет в саму колонку.

Собственно 2 колонки на каждой по 2 двух-полосника, включенных синфазно - басовик + пищалка послабее + тоже самое но по мощнее, т.к качество звучания у динамиков Supra и Hyundai разное, приведены они на фото:



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

hyundai - по одному на каждую колонку:


в корпусе, без корпуса мне нравится больше:


Supra чуть меньшие, тоже 2 шт:


в корпусе:


саб в принципе также, пока только не знаю как лучше сделать в закрытом ящике или
с фазиком (трубка выхлопная для воздуха) :D

Всё естественно будет подвержено тщательным замерам резонирования головок в пространстве и в эквивалетном объёме 20 литров, на саб поставлю ещё фильтр среза высоких частот, пусть режет где-то свыше 200Гц.

Собственно 12" головка сабвуфера на 800W, тяжёлая и на фото выглядит в два раза меньше
чем на деле... ящик под неё спиливать де-то на 60 литров :D фигеть просто...



Вид сбоку:



Глядя на мою руку, приблизительно понятно какого
он размера...




Чертежи тоже выложу во второй части моего отчёта...

Усилок будет обладать по мимо (тембро блока) - регуляторов Volume, Bass, Treble и что большая редкость Balance, ещё и
10 полосным эквалайзером на каждый канал (стерео экв) + расширитель стереобазы
типо (3D) surround, туда ещё будут вкручены индикаторы сигнала, типо столбики лампочек как в WinAmp но только два.

сабику прикручу отдельный усилок на 300W с сумматором каналов, чтобы при регуляции Balance сабик играл одинаково. Возможно туда же прилеплю ещё и микшер, на всякий
если влезет конечно. и всё это чудо размером с видик :) корпус тоже буду делать
сам если найду материал :D

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

Напряжения 3.4, 5, 8, 12, 15, 17, 23, 30 вольт соответственно...

Сейчас от него питается микро дрель для сверления отверстий в платах,
видна слева:


Теперь о схемах, паяю, сверлю, черчу планирую:

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



Предпоследним винцом творения были тоже индикаторы уровня сигнала с тем-же
смыслом, но только они охватывают весь спектр, т.е если сигнал слабый
горит один зелёный если средний то уже загораются и жёлтые, а если сильный
то уже загораются красные, когда загорается и второй красный, то на колонках тоже загораются красные световые диодики :D



Схемы такие две, всё собранное запустилось и работает с первого раза...



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



вот вид сверху, не хватает микрухи, т.к она снизу:



Собственно продолжение будет совсем скоро в части второй :D

13 мая 2009 г.

Первый рабочий день.

Ну вот, сегодня отработал свой первый день на боулинге Expobel :)
Хорошая атмосфера, весёлый коллектив :D
Посмотрел по обстановке, можно смело переть с собой ноут и прогерить в свободное время :D

8 мая 2009 г.

Работаем по максу,

Ну вот сначала апреля и до сих пор, работал на стройках, грунт развозил, дыры для каналки сверлил, ну и имел в среднем по 2-4 часа, на то чтобы кодить свой игровой проект, думал написать звуковой движёк под ноль, но тяга к повсеместным лисапедам как-то заменилась тягой просто писать красивый ООП враппер, берём бесплатную библу
в большинстве они имеют под собой почти чистый Си, и пишем более функциональный враппер
C++ с своим аллокатором и контейнерами, как не странно всё получается быстро, компактно, а главное работает, странно что в столь короткий срок, написание кода который на след день уже не помнится, выстраивается в модуль (теоритический) и работает на отлично, когда год-два назад, отлаживать надо было сутками :)
Так о чём же я, прикрутил вот звук к проекту, и заканчиваю с геометрией которая в последствии будет решать проблемы определения столкновений в игре.
Синглтоны сьели мой моск :)
Перебрал конфу, дабы перейти на 8 S-ATA портов и S-AM3 45nm для тех кто знает, что это значит :)

Много читал различной низкоуровневой документации, как-то очень серьёзно по началу к ней относился, но в последствии понял, что намного проще делать в лоб, работает на конкретной платформе и ладно главное оверхед не допустить...

Допишу HUD и GUI, менюху, и самое поганое (ключи-значения) такое своеобразное дерево, вроде ini файла но с синтаксисом 'C' и можно уже будет начинать игровой контент клепать.

9 апреля 2009 г.

Рабочая неделя :)

Ну вот, только ушёл в отпуск с официальной работы как вдруг нахлынули
стекло-селекатные блоки, лопаты и грабли с тачанками :)
Как заманало уже достраивать этот бесконечно строящися особняк, (это я не про программинг) :D

Собственно 3 дня упорного подъёма в 6:00 AM с 8:00 AM по 6:00 PM стройка,
с 8:00 PM до 2:00 AM кодинг, и немного поспать, ну думаю до субботы дотяну как-нить,
спать жарко чё-то :) да и не спится особо,
почти ведь дописал TypeSafe Variable Arguments по стандарту ЦЭ 99, с небольшими
RTTI ворнингами вроде (null) или (badarg).

Подсел чё-то на Classic Black RAP, чисто такой My American Nigga.
Предвкушаю поездочки на чёрном джипце Nissan или Toyota Land Cruiser,
вот только закончу автошколу :D
Но Progressive Electro тоже слушаю, вобщем вперемешку... :)

Обещаю, скоро как разгребусь, буду отписываться чаще, опубликую чего-нить интересного непосредственно по программированию, а главное на несколько A4 листов.

16 марта 2009 г.

Сертификат по C++

Ну вот наконец решил сегодня полностью пройти курс лекций по C++
и получить сертификат, благо за прошлый месяц я завершил 15 из 18 лекций, и управился за вечер. :)
Выложил сертификат на виджет справа :)

12 марта 2009 г.

NTFS fighting

Ну вот, обновка ноута заставила себя подождать пока я подберусь к отметке 200 GB и прошла успешна, унеся всё, что я успел достать, различного рода документацию, книжки Александреску, sdk от Havok, PhysX, и сорсы нескольких операционок, также все конспекты и курсы, прочую требуху в том числе фильмы и много музыки. Столько траффика и гугло-копания потрачено в пустую...
Хотябы раздел с осью уцелел.

28 февраля 2009 г.

Скоро вод.права

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

23 февраля 2009 г.

Всего понемногу

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

На данный момент заканчиваю разработку Lolmen Library в которой будет всё, что часто мне необходимо в процессе программирования, но зависимость от кучи "стандартных" *.h'ников мозолит глаз. Туда входят аналогичные stl'ю контейнеры с большей функциональностью и без излишеств. Математическая библиотека, Набор паттернов проектирования. В библиотеке у всех компонентов названия методов говорят сами за себя, не нужно более использовать мелкие функции, например memcpy или sscanf и т.п.
Всё автоматизировано и встроено таким образом, что stdio и другие *.h'ники нетребуются, всё имплементировано с нуля практически на native C++ с шаблонами,
таким образом не нужно тянуть за собой горы глобальных переменных флагов и "мульти" функций 80x годов (пример - проследите цепочку вызовов vsnprintf( ... ) )

В библиотеке всё базируется на удобных классах.

LString str;
str.Format( "%s %d %s", "Players", nActivePlayerCount, "Active" );

Где сам Format и str.Scan( format, ... ); не начинают лезть в stdio.h и далее по цепочке, а лезут в класс за токенами и парсят всё вручную.

Естественно возможно я ещё тот велосипедист, но чего не сделаешь, когда прогаешь под себя.

На этой неделе начну довершать порт мода E32k3 на Source Engine Ep2
проведу пару прогонов, и отдам народу как есть.

С инетом сейчас напряги, так что в сети пока буду бывать редко.

З.Ы Совсем забыл, с праздничком мужЫки!

26 января 2009 г.

Дескридитация со стороны родственников.

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

Я программист самоучка, но по мнению старшего поколения, я тот кто:

  • Протирает сутками штаны в компе, нет чтобы делом заняться - копать участок например.

  • Страдает фигней, всё что ты пишешь уже написано либо устарело, не парься.

  • Не может написать круто как штат из 100 сотрудников включая дизайнеров: "Ох, у тебя коробочки сталкиваются? А я вот в ралли играл, там намного лучше, так что никакой ты не программист..."

  • Не уделяет должного внимания: "Зай, я пришла с учёбы, а ты пялишся в малопонятный текст, ну сколько можно, давай лучше фильм посмотрим!"



Ну и как спрашивается выжить в такой обстановке?
Ведь смотря фильмы и занимаясь "делом"
Я совершенно не могу полностью развить свои навыки,
выучить наконец банальный MFC, QT.

Основы программинга на платформах Solaris, Ubuntu, Mac OS X, IPhone.

Ну и наверное самое главное: ASM 80x86 и 80x87 для начала.

Решение у меня конечно есть, сидеть в компе ночью когда все спят, только это чревато
синяками под глазами, вечной усталостью и прострацией.

+ Накопленный стресс от горячей поддержки:
"Ну вот, что ты сидишь ночами и только деньги тратишь, на инет и электроэнергию? - Выспался бы, да и на нормальную работу устроился, а то не окупается твоё творчество!"

Но как может окупиться опыт который ещё не получен целиком?

Но я буду верить в светлое будущее :)

Заводы

Вот думал тут над тем, чтобы реализовать завод по производству игровых сущностей entity, т.е все игровые обьекты наследуются от некого предка Entity который обладает базовой функциональностью применимой к большей части игровых объектов и заведует логикой. завод должен уметь:
регистрировать название объекта в игре, создавать объект по игровому названию, названию класса создавать какой-либо другой объект с начальными установками из своего нутра.
Сразу оговорюсь, что это всего лишь мысли в слух и надо срочно покурить кинигу паттернов C++ на предмет паттерна завод/фабрика, дабы избежать велосипедизма с многократными имплементациями различных фабрик.

т.е есть завод с конвеерами по производству данного типа обьекта, например:






  1. // пример приведён псевдо кодом,

  2. // семантика 'L' это мой ник: Lolmen

  3. // во избежании пересечений с неоговоренными

  4. // в сообщении деталями.


  5. // создаём конвеер таким вот образом:

  6. Factory.Register( CLASS_NAME, gameName );


  7. // например в классе бомбы сделаем след:

  8. // в bomb.cpp перед непосредственной имплементацией класса LBomb


  9. RegisterFactory( LBomb, "fake_bomb" ); 


  10. // Добавит конвеер для рождения бомб, сделает ссылку на бомбу

  11. при создании оной в список игровых Entities.


  12. // теперь нам нужно допустим,

  13. // родить обьект в мире при каком-то дейтвии,

  14. // например при вводе в консоль entity_create "entity_name" "position[x y]"

  15. // например entity_create 512.0 286.0 spawn


  16. void LWorld::OnConsoleCmdCreateEnt( const LString &name, const LVec2D &position, bool_t bShouldSpawn )

  17. {

  18.    LEntity *pSomeObj = CreateEntityByName( name, bShouldSpawn );

  19.    

  20.    if ( pSomeObj ) // убедимся что такой конвеер есть!

  21.       pSomeObj->SetPosition( position );

  22. }


  23. // или в классе гранатомёта родить гранату:


  24. void LGrenadeLauncher::PrimaryAttack( void )

  25. {

  26.    LGrenade *pGrenade = 0; 

  27.    // метод Create рождает энитю указывая начальные положения в мире

  28.    // и флаг рождать или просто создать

  29.    if ( Create( pGrenade, "projectile_grenade", GetShootPos(), GetAngles(), true ) )

  30.    {

  31.       pGrenade->SetMoveType( MT_FLY ); // тип перемещения

  32.       pGrenade->SetLifeTime( 10.0f  ); // время жизни 10 секунд

  33.    }

  34. }


  35. // удалять тоже просто:


  36. void RemoveEntity( LString &name, LEntity *pEntity );




Удаление и создание работает через список конвееров завода и список созданных в мире игровых сущностей.
Удобно также осуществлять поиск какого-то класса, например поиск в сфере указанного радиуса всех Entity с именами "projectile_detonation_bomb"

24 января 2009 г.

Контейнеростроение

Строя контейнеры под свой гейм проект,
установил некоторые правила, которые распростроняются и на STL контейнеры
1. Не передавайте в контейнер обьект по оператору new если не собираетесь его удалять через delete
2. Старайтесь не использовать контейнер обьектов, если добавляете обьекты на стёке, перфоманс падает на конструкции и деструкции на стёке + конструкции или копировании в самом контейнере. Используйте контейнер указателей на обьекты.

21 января 2009 г.

Сертифицирование полным ходом.

Вот сижу набиваю сертификаты в intuit, некоторые зачёты по лекциям сдаю на собственных знаниях, обычно оценки идут отлично или хорошо.
Если где-то пишет зачёт, раскуриваю письменность, сча решил догнаться по C++ и теории операционок, ох уж эти потоки с их семафорами :D

По ходу дела, всё больше начинаю переосмысливать устоявшиеся понятия, заодно решил накуриться видео из Академии Управления, аж 10 лекций по 2 часа, ну дабы раскрыть тему сисек с пирамидами знаний, мол массоны там знают всё, а мы просто ячейки общества которые не обладают должными знаниями и мировоззрением.

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

Интересно чего там админы gdru мутят с БД, невозможно покурить форумы.

17 января 2009 г.

Закошу от армии.

Серьёзно нацелен косить от армии, есть какие-то дополнительные хорды в сердце,
изучил свод законов и болячек для призывной комиссии.
Теперь пройду независимое тщательное обследование:


  • сердца ( УЗИ/ЭКГ/Давление )

  • позвоночника (степень искривления)

  • зрение (тщательная вымерка линейкой в отклонения в диоптриях)

  • лимфа (щитовидная железка и мендальки)

Ну и далее выясню по списку, что подпадает под НГМ.

16 января 2009 г.

Сессия, не люблю тебя.

Ну вот опять, уже близится сессия, и снова нужно покидать родной город и ехать в недоразвитый, две недели без инета и макдака это просто ужость, прибавить к этому сьём квартиры, отсутствие любимой девушки под боком и отсутствие данных по предметам, получим отличный депресняк.
Эх если бы не поганая армия, я бы спокойно доучился бы себе на intuit'e да и устроился уже сис админом на Unix платформы.

15 января 2009 г.

Помощь E32K3 Mod для Hl2

Для проекта E3 совершенно не хватает времени ни теперь ни в перспективе, а мод доделать надо.

А поскольку мод ждёт не малая публика, то нужно как-то публике отдать мод, вопрос как?

Мод надо залить на FileSpace.ru при договорённости с админами bbs.nashalife.ru
Но интернет у нас в белораше дорогой, один пров монопольнег типо beltelecom.by
Поэтому скажу прямо без всяких умных фраз - нуна бабла на инет!

И так, собственно к делу, это не является целью рекламы и наживы, если вам интересен мод, то думаю стоит помочь.

Помощь заключается вот в чём:

Перечислить некоторую сумму (хоть 2 WMZ) в фонд поддержки E32k3
на яндекс кошелёк: 4100196765946

Естественно вы этого делать не обязаны, и мод у вас будет, но если вам хочется получить его быстрее чем выход EP3, то можно это организовать...

Какие условия:
По предварительным оценкам для отлива мода в просторы интернет пространства потребуется порядка 2100 рублей, заметьте если бы 21 человек скинулся по 100 рублей (символическая сумма) то мод можно было бы отгружать хоть сейчас.
Формула такой суммы простая
1RUR = 90BYR; 1mb price = 48 BYR, ~4GB = (1mb price*4000times) / 90 RUR = ~ 2100 RUR.


Но этого будет достаточно только на выкладку мода, который в данный момент не портирован целиком.

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

При отказе от своих слов ручаюсь вернуть вам ваши средства.

Доработки везде и всегда.

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

Тест подсветки C++ кода:



  1. void printData( LSList<int> &intList )

  2. {

  3.    for ( intList.GetLast(); !intList.BadIter(); intList.GetPrev() )

  4.       printf("%d ", intList.GetNode() );


  5.    printf("\ntotalcount:%u\n", intList.Count() );

  6. }


  7. class testObj

  8. {

  9. public:

  10.    testObj(){ printf("%s", "ctor\n"); }

  11.    ~testObj(){ printf("%s", "dtor\n"); }

  12.    testObj( float i ){ printf("%s %f\n", "cCtor", i); value = i; }


  13.    float value;

  14. };


  15. void StackInit()

  16. {

  17.    testObj a(4), b(5);

  18.    printf("objects constructed\n");



  19.    printf("beginning putting in stack:\n");


  20.    tStack.Put( a );

  21.    tStack.Put( b );


  22.    sStack.push( a );

  23.    sStack.push( b );

  24. }