Кът на програмиста...

За коментари и излияния от всякакъв род, число, спрежение и залог

Moderator: Moridin

User avatar
The Dragon
Elder God
Posts: 9062
Joined: Wed Jan 14, 2004 9:03 pm

Post by The Dragon » Fri Oct 16, 2009 11:29 am

туул за javascript refactoring. ако някой знае такъв.

Като бонус - начин да mauntna FTP фолдър като драйв/фолдър във файловата ми система.
The sinking of the Titanic was a miracle to the lobsters in the ship's kitchen.

User avatar
Roamer
Ascendent
Posts: 4895
Joined: Wed Jan 03, 2007 5:25 pm
Location: Hier ist hier und jetzt ist jetzt doch jetzt ist jetzt schon nicht mehr da...
Contact:

Post by Roamer » Fri Oct 16, 2009 12:32 pm

За бонуса - много зависи от операционната ти система :P Ако беше под нещо нормално, щях да ти кажа FUSE, ама като те знам и като говориш за устройството като "драйв", вероятно използваш некви други, дето FUSE не работи :)

Иначе за Windows може да пробваш FTP Drive или NetDrive или Novell NetDrive или, ако си склонен да пробваш 20-дневна тестова версия и после да мислиш какво да правиш, WebDrive. Само че не знам кое от тези работи за сравнително нови версии на Windows :(
Eric: I use my sword to detect good on it.
Ed: It's not good, Eric. It's a gazebo.

User avatar
termit
Jaghut Tyrant
Posts: 1758
Joined: Thu Jan 15, 2004 5:04 pm

Post by termit » Wed Oct 21, 2009 5:43 pm

Бисер от работата на един приятел...
Map<Integer, Map<Integer, Map<String, Map<Integer, Object>>>> castedTranslations = (Map<Integer, Map<Integer, Map<String, Map<Integer, Object>>>>) getTranslations();
Elves dig rocket launchers.

User avatar
thunder
Forsaken
Posts: 3376
Joined: Wed Jan 21, 2004 2:18 pm
Location: София

Post by thunder » Wed Oct 21, 2009 6:34 pm

тва е омгхакс :)

http://thedailywtf.com/Articles/Ask-Rumen.aspx

нещо нашенско в дъ дейли втф :)
Scalpel. Sponge. Magic Wand!

petri4kov
Farmer
Posts: 53
Joined: Thu Mar 13, 2008 8:26 pm

Post by petri4kov » Sun Nov 01, 2009 2:01 pm

Знам че не е точно за тука, но някой пробва ли новото убунту 9.10?

User avatar
thunder
Forsaken
Posts: 3376
Joined: Wed Jan 21, 2004 2:18 pm
Location: София

Post by thunder » Sun Nov 01, 2009 3:36 pm

petri4kov wrote:Знам че не е точно за тука, но някой пробва ли новото убунту 9.10?
ъпгрейднах старата дистрибуция и гръмна нещо, реинсталирах всичко и тръгна супер :) Една колежка имаше същия проблем, други ъпгрейднаха без проблеми - просто да имаш едно наум ;)
Scalpel. Sponge. Magic Wand!

petri4kov
Farmer
Posts: 53
Joined: Thu Mar 13, 2008 8:26 pm

Post by petri4kov » Sun Nov 01, 2009 3:40 pm

Аз като ъпгейдвах нямах никакви проблеми, всичко си беше супер. И доста ме кефи новата версия. Само едно ме дразни! Искам си старата иконка за терминала. :)

User avatar
Corwin
Archmage
Posts: 2002
Joined: Fri Mar 26, 2004 3:41 pm
Location: Land of Supidity

Post by Corwin » Thu Nov 19, 2009 8:14 pm

Един риъл лайф проблем. :).
В миниигрите които правим ("Не се сърди човече" да кажем) трябва да въведем система за ачийвмънти. Например: 3 поредни 6ци, дабъл кил в един ход, бутане на някой след 3 поредни 6ци, победа след като някой от противниците е бил с обиколка преднина, най-много поредни 1ци в цялото лоби и така нататък,
Очевидното и още по-очевидно грозно решение е да бухам данните в някакви масиви и на всеки хвърлен зар или каран ход да проверявам дали се е изпълнило някое от милионите условия, което сериозно ще утежни, загрози и удължи кода, да не говорим за това какви психо данни трябва да пазя за това с обиколката напред. Освен това всеки нов измъдрен от мениджмънта ачийвмънт си е ново кило код в кацата.
Тааа, мислех за някакво по-елегантно решение. Първото нещо което ми идва на мозъка е шаблона Observer, сега ще го гледам дали може да ми свърши работа, но ако някой има някаква хитра хрумка ще се радвам да я сподели. :)
I like rusty spoons....
I like to touch them...
It's almost orgasmic...

User avatar
Roamer
Ascendent
Posts: 4895
Joined: Wed Jan 03, 2007 5:25 pm
Location: Hier ist hier und jetzt ist jetzt doch jetzt ist jetzt schon nicht mehr da...
Contact:

Post by Roamer » Fri Nov 20, 2009 12:48 am

Мисля, че няма по-красив вариант от това с проверката на всичко на всеки ход; без нея няма да минеш. Красотата / улеснението може да ти е в това *как* правиш тази проверка. Аз лично бих измислил система от hooks - "дошъл е моят ред", "преди хвърляне", "след хвърляне", "преди движение", "след движение" и евентуално "цапардосах друг", "вкарах пионка", "получих божествено откровение" и т.н. На всеки такъв hook да закачиш списък от handlers... и така.

Handler-ите пък да си имат някакви опростени броячи - примерно това за трите поредни шестици да е клас с едно поле - брой последователни шестици. Лошото е, че, да, някои handler-и ще искат достъп до информация и за другите играчи... ама няма как.

Може и да има нещо по-елегантно, ама... не се сещам на прима виста.
Eric: I use my sword to detect good on it.
Ed: It's not good, Eric. It's a gazebo.

User avatar
The Dragon
Elder God
Posts: 9062
Joined: Wed Jan 14, 2004 9:03 pm

Post by The Dragon » Fri Nov 20, 2009 12:57 am

това което ми хрумна е едно дърво от условията. запомняш къде си и на всеки ход му гледаш дали има продължение или ресет най-горе. Но не знам дали самите условия позволяват подобно нещо.
The sinking of the Titanic was a miracle to the lobsters in the ship's kitchen.

User avatar
Roamer
Ascendent
Posts: 4895
Joined: Wed Jan 03, 2007 5:25 pm
Location: Hier ist hier und jetzt ist jetzt doch jetzt ist jetzt schon nicht mehr da...
Contact:

Post by Roamer » Fri Nov 20, 2009 1:01 am

Драгън, ако имаш предвид едно дърво, което да обхваща едновременно *всички* ачийвмънти.... ъъъъъ, не, sowwy, тая няма да я бъде :( Първо, повечето от тях са независими един от друг, ама напълно. После, при всяко добавяне на нова порода ачийвмънт - какво - ще сядаш с листа и химикалката, ще препострояваш дървото и после ще пренаписваш всичките 3000 реда код? Ъъъъъ. Не. :)

Да не говорим за това, че различните условия трябва - или поне, ако не сега, в един момент *ще* се наложи, помнете ми думата - да бъдат проверявани в различни моменти в lifecycle-а на един ход.

Ако имаш предвид все пак по дърво на ачийвмънт - така може би повече може, ама тогава пък не виждам за какво е нужно цяло дърво, като за повечето наистина е достатъчен един брояч или масив от броячи, по един за играч. Добавено: А тези, за които брояч не е достатъчен, би трябвало все пак да стават с прост краен автомат. Пак не става за дърво.
Eric: I use my sword to detect good on it.
Ed: It's not good, Eric. It's a gazebo.

User avatar
termit
Jaghut Tyrant
Posts: 1758
Joined: Thu Jan 15, 2004 5:04 pm

Post by termit » Fri Nov 20, 2009 9:33 am

На какъв език го правиш това? Ако е някакъв обектен (Java, C#, C++(брр)) вариант на тема observer е добър. На всеки ход се праща event със snapshot на текущото състояние на играта (или diff спрямо предишния snapshot, или каквото си избереш или ти трябва там). Имаш си някакъв event manager, който разпраща event-ите на заинтересовани listener-и, а те си ги обработват както си знаят. Плюса тук е, че можеш да имплементираш всеки achievement като самостоятелен клас, който ти имплементира listener интерфейса, така че няма да ти се налага да държиш на едно място масиви от броячи и кода ще стане четивен, а и закачането на нов achievement е просто да се регистрира един нов listener към dispatcher-а. Можеш да направиш филтър за интересите на listener-ите, за да се намали разпращането на event-и, както и да изпращаш event-ите асинхронно за да няма евентуално забавяне между ходовете.
Elves dig rocket launchers.

User avatar
Moridin
Global Moderator
Posts: 19290
Joined: Fri Dec 19, 2003 10:21 pm
Location: On the other side
Contact:

Post by Moridin » Fri Nov 20, 2009 9:49 am

И мойта виждане е нещо като това на Пенчев, т.е. грубо казано аспект програминг, а обсървърът е пак вариант на същото с малко излишна струва ми се инфраструктура.

Не можеш да минеш без проверките. Производителността няма как да се качи. Замисли се как човек би го направил. Можеш да се стремиш единствено към неинтрузивен код с минимален мейнтейнънс, което си е очертано от приказките на термо и пенчев.

естествено ако новият ачийвмънт е мамата си трака, ще ти трябват още хуукс или ивенти или както му викаме в случая и пак пренаписване, това също е неизбежно. не виждам как може да се направи пълна абстракция, но можете като програмисти да кажете на дизайнерите - майната ви, имате тия събития като възможност, действайте различни варианти с тях. иначе е мамата си джаса.
This is it. Ground zero.

User avatar
termit
Jaghut Tyrant
Posts: 1758
Joined: Thu Jan 15, 2004 5:04 pm

Post by termit » Fri Nov 20, 2009 10:45 am

Добавка, вариант с повече от един hook или event не е добър в случая, защото пак може да се наложи да се добавят нови hook-ове или event-и заради някой achievement, за който не си се сетил докато си правил началния дизайн. Според мен трябва да се дефинира един snapshot point, момент в играта, в който имаме стабилно текущо състояние (играчът е преместил пионката си в "Не се сърди човече", или е взел ръка в игра на белот) и event/hook да се вика само в този случай.

@Мор - не мисля, че допълнителната инфраструктура е излишна в случая. По-добре е да не се товари модула на играта с излишен код - поддържане на списъци с handler-и, регистрация/премахване на регистрация, викане на методи - това така или иначе трябва да се изнесе в една библиотека, по-добре е да е самостоятелен manager мисля си.
Elves dig rocket launchers.

User avatar
dellusion
Warmage
Posts: 1248
Joined: Thu Dec 28, 2006 10:36 am
Location: София

Post by dellusion » Fri Nov 20, 2009 11:40 am

Observer is the way to go. Тоя шаблон е роден за такъв проблем.
Look at the darkness...
...around me.

Who is online

Users browsing this forum: No registered users and 2 guests