Top.Mail.Ru
? ?

Вдохновение

И вот, вчера, после полторамесячной задержки, мне отремонтировали телефон. Как и почему так долго - другая неинтересная история. Телефон у меня Motorola Z6, это который на Linux. Расковырянный сообществом ( по-умолчанию, это даже не смартфон считался. Но народные умельцы все таки нашли способ, и теперь телефон - компьютер на ARM процессоре с Linux'ом на борту ). 
Приятно удивило, что за последнее время появилось немного интересных вещей для телефона. В частности, порадовал родной Warcraft 2, который без тормозов идет на телефоне. И вот, я вспомнил, что когда-то ( около полугода назад ) я писал эмулятор Sega на этот телефон, но в виду его корявости забил на это дело. Вчера, с новыми знаниями ( век живи, век учись ), придумал один способ, который поможет сделать работающий эмулятор Сеги. А если будет сега - будет счастье для владельцев. Т.к. этот блог для более-менее технических людей, то буду выкладывать здесь сей процесс. Сегодня вечером буду пробовать прикрутить новый рендер на виджет, а не напрямую в fb. Скорость будет ниже, но гибкость - выше. А  там посмотрим.

З.Ы. А вообще-то я прочел на Хабре статью про страхи habrahabr.ru/blogs/arbeit/85875/, и решил, несмотря на всю бессмысленность этого поста, его запостить. Авось, и в этом счастье) 

Tags:

Идеальная работа

 Долго не писал, ибо не было обратной связи. Сейчас, одна дама вдохновила меня на написание поста. Напишу про волнующую меня в данный момент проблему. 
Начал я свои трудовые будни с 16лет, сейчас уже год с лишним, как я день у день хожу на работу. Сейчас у меня уже вторая работа, но, сейчас и она меня начинает не устраивает. Что там, что тут я работал веб-разработчиком. Но приходит время, когда понимаешь, что все задолбало, что-то похожее до депрессии. Сейчас нет никакой мотивации работать, большую часть времени провожу не за тем, чем надо. Подумываю о смене работы, и вообще, месте жительства ( еще личные фактор за смену места жительства ). 
В общих чертах охарактеризирую  текущую работу:
 - 8 часовой рабочий день. Жесткий график, хотя можно отпрашиваться, за прогулы не так больно бьют и т.п.
 - нет дней, когда нет работы. Т.е. есть всегда что делать.
 - платят стабильную з.п., не зависимо от твоих действий. Можешь из кожи рваться чтобы сделать, а можешь просиживать работу - результат тот же. 
 - нет развития. Делаешь то, что умеешь делать. Работа в большинстве скучная.
 - работа на дядю, знаешь что за твои труды дядя получит больше в несколько раз.

Я, по натуре, такой, что не могу длительное время делать что-то одно. Мне начинает надоедать, и еще круто надоедать. Поэтому я так развит в различных областях. HTML верстка, веб-разработка, прикладное программирование ( C++, JAVA ), администрирование Linux. 

Думал между тем, чтобы идти на такого же типа работу, или на вольные хлеба ( фрилансер ). В процессе обдумывания, решил, что подошла б работа с небольшой зарплатой, нестандартным графиком ( там день через два, и т.п, или "по вызову" ), в которой большинство рабочего времени "просиживал" ( я планирую это время использовать в своих целях ). Сначала подумывал про работу типа "сторож" или "вахтер", но, думаю в 17 лет трудновато будет найти. 
Буквально вчера озарило: нужно идти сисадмином. Благо знания в системах Linux есть. Плюсы:
 - работа по вызову, если какае-то неполадка.
 - свободное время можно использовать для фриланса
 - работа не пыльная, если знаешь как делать. В крайнем, гугль поможет. 

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

Цель этого поста: даже незнаю. Какой-то крик души. Возможно я ставлю высокие требование до работы, и стоит забить и не рыпаться никуда. Или наоборот - пробовать, пробовать, пробовать. Незнаю.
Сегодня сделал замеры выполнения алгоритма: матрица 12х10 вычисляется где-то секунду с лишним. При этом делается около 500 тысяч итераций цикла. Я представляю, что будет над матрицей 1000х1000 ( игровая карта ведь не будет 12х10 ). Так что, придется отказаться от  этой идеи, и выполнять поиск в реальном времени. А с другой стороны, пути будут не длинные, поэтому волновой алгоритм должен справиться на ура. 
Карта в игре - двумерный массив, где координаты x и y - соответствующие индексы. Каждая клетка характеризируется типом клетки ( лес, вода, дорога и т.п.) и доступностью. Алгоритм должен просчитывать поиск пути только по доступным клеткам. Расстояние между клетками одинаковое. В принципе, можно было преобразовать матрицу в элементарный граф, и работать с графом, но это только дополнительные затраты. Вместо проверок типа С[i,j] == ∞, я создал функцию, которая проверяет на смежность две ячейки матрицы. Кстати, с помощью этой функции можно регулировать, можно ли ходить по диагонали или нет ( путем правильных проверок ).
 И вот, после двух вечеров готова реализация поиска кратчайшего пути. Поступил по алгоритму Флойда, где сначала просчитываются пути от любой к любой ячейки, а потом с легкостью может быть получен кратчайший путь конкретных вершин. Это выгодно, потому как вычисления проводятся только при инициализации движка. 
 Вчера просто скопировал алгоритм, подставив нужные данные - не заработал ( заработал, но на половину ). Не просчитывал пути, между которыми более одной ячейки. Пришлось все таки вникать в алгоритм, и делать под себя. Но зато сейчас - полностью рабочий алгоритм.
 В результате два двумерных массива размерами [x*y][x*y], где x и y - размеры карты ( матрицы ). В одном хранятся короткие пути, в другом - длинна между вершинами. 
 В изучении этого вопроса очень помогла статья www.dtf.ru/articles/read.php.

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

Если кому надо, то могу выложить свою реализацию с комментариями.

Ты не хочешь..?

С детства меня смущало, почему на вопросы с отрицательным глаголом отвечают идентично, как с обычным.
Например, вопрос "Не хочешь пойти купить молока?". По логике, отвечать нужно "да", если действительно не хочешь, и "нет", если хочешь. Тебе говорят какое-то утверждение, ты говоришь, правдиво это утверждение или ложно.
Так почему все наоборот? Почему на вопросы "Хочешь пойти купить молока?" и "Не хочешь пойти купить молока" ответы равноценны?

Прогресс

Сегодня пару часов занимался онлайн игрой ( пора бы уже придумать название, чтобы не называть игру игрой, а по названии ). В ходе разработки структуру базы пришлось изрядно поменять. Все идеи, которые были актуальны вчера, сегодня заменились новыми, более подходящими. Реализовал базовые классы игрока, npc и их характеристики. Продумал наследования. При загрузке сервера он размещает несколько мобов на карту. За это время очень устал, поэтому, продолжать сегодня разработку наверное не буду. Пока просру проведу с пользой время, в поисках новых идей и решений. 
Сегодня на работе пришлось столкнутся с задачей интерактивного аплоадера ( загрузка контента на сервер ). В чем проявляется интерактивность? Да в том, чтобы загрузка была в фоне, желательно с прогресс баром. Тут коллега, который уже этим занимался подсказал решение данной задачи. При том без всяческих флешов и т.п. Только JavaScript и Ajax ( ну и немного уличной магии ).

Весь фокус в модуля для nginx'а - Upload Progress Module ( описание ), который позволяет узнать о прогрессе загрузки. Как говорится на странице описания, идея взята с модуля для lighttpd mod_uploadprogress. Я с lighttpd никогда не сталкивался, поэтому ничего сказать не могу. 

 В теории выглядит так: при сабмите формы мы в скрипт-аплоадер ( который принимает загрузку ) передаем дополнительный параметр - уникальный ключ для этой загрузки. Потом с помощью специально настроенной странички в nginx'е проверяем статус текущей загрузки по этому ключу. Чтобы сабмит формы не перегружал страницу - делаем его в iframe. 

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

Чтобы установить модуль, нужно пересобрать nginx.

Открытие блога

Недавно начал работу над собственным проектом ( якобы хобби ). Это будет онлайн-игра ( каких сейчас как говна ). Но я постараюсь реализовать ее на мобильный ( J2ME ).  Причем здесь ЖЖ? Я здесь планирую писать о прогрессе развития игры. Будет самоконтролем, большей мотивацией, для уменьшения желания просто "забить", узнать мнение других, да и, думаю, другим будет интересно почитать. И еще я хотел вести свой блог ).

Сразу предупреждаю - будет много технической информации связанной с программированием ( ну а о чем еще писать, как не о приемах, которые я заюзал в своей практике ). Сервер игры будет написан на Яве ( Java ), используя базу данных MySQL, клиент на J2ME. В будущем возможен клиент и для PC. ( или сначала будет для PC, а потом для J2ME - хз ). 

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

За два дня еще особо ничего не готово:
  • создан проект в NetBeans'е ( это уже залог успеха );
  • сервер на самой ранней стадии ( пока только грузит и держит в памяти локацию );
  • спроектирована БД.
Ну это пока все, что можно сказать.
Еще немного расскажу про себя:
Звать меня ..., а впрочем никого не волнует как меня звать. Здесь я просто Image kukunin (кстати читается как "Кукунин", от моей фамилии). Не звучит, но зато писать просто. Мне 17 лет, но свое знакомство с интернетом начал еще в далеком 7 классе. С тех пор научился хорошо верстать странички, девелопить на PHP с MySQL, а с недавних пор практикуюсь в прикладном программировании ( начинал с С++ и Qt, закончил Java'ой ). Ярый линуксоид. Венду не употребляю. Уже полгода как вместо учебы, хожу на роботу. Вот так и живу.

P.S. Раньше опыта блоговедения не имел, если что не по теме пишу - говорите, не стесняйтесь. 

Profile

Image
Imagekukunin
kukunin

Latest Month

March 2010
S M T W T F S
 123456
78910111213
14151617181920
21222324252627
28293031   

Syndicate

RSS Atom

Comments

  • kukunin
    23 Aug 2013, 16:35
    с днем рождения, дорогой друг. Твори и люби!
  • kukunin
    26 Feb 2010, 14:56
    привет.ну запость его в краткой только форме на http://community.livejournal.com/ru_job/profile
    да будет с тобой сила :-)
  • kukunin
    26 Feb 2010, 10:56
    Это СуперТукс: религиозный идол и покровитель линуксоидов ( людей, которые используют Linux вместо венды ). Существует древнее пророчество, что однажды настанет Вендокапец, и тогда именно СуперТукс…
  • kukunin
    26 Feb 2010, 10:51
    почему у вас на аватарке пингвин?
  • kukunin
    26 Feb 2010, 10:49
    Для моей головы если говорят "Не хочешь купить молока"? Я принципиально скажу "НЕТ".Отрицание, оно и в Африке отрицание. Еще меня бесить когда говорят: Извиняюсь и убираюсь. Получается,что человек…
Powered by LiveJournal.com
Designed by Lilia Ahner
Image