jQuery IE9 getAttribute from HTML object element

当页面同时使用jQueryUI的datepicker和uploadify控件时,如果是用IE9浏览器的话,先选日期,再点uploaddify的上传按钮就会报"Missing instance data for this datepicker"错误。 经过调试发现调用堆栈如下: -$(document).mousedown($.datepicker._checkExternalClick) |----$.datepicker._checkExternalClick |--------$.datepicker._getInst |-----------$.data |---------------$.acceptData 罪魁祸首是object元素调用getAttribute方法会返回null,而且jQuery Bug Tracker已经有类似的ticket,是由于引用了SWFUpload组件引起的,可惜状态是closed bug: cantfix。 可以添加如下workaround代码,来解决datepicker和SWF object冲突的问题: if ($.browser.msie && '9.0' === $.browser.version) { $.datepicker._getInst = function(target) { try { if ('object' === target.nodeName.toLowerCase()) { return false; } return $.data(target, 'datepicker'); } catch (err) { throw 'Missing instance data for this datepicker'; } }; }

Guns N' Roses - Use Your Illusion



不介绍了,电驴上的源都很少了
日版 2008, SHM-CD (Super High Material CD)
APE (Image) + Cue + Log
Use Your Illusion I
http://turbobit.net/hwv76sxnnyiz.html
Use Your Illusion II
http://turbobit.net/i8updsmhxw1d.html

原版 1991
Flac, img + cue + log
Use Your Illusion I
http://rapidshare.com/users/J26RVD
Use Your Illusion II
http://rapidshare.com/users/HFGB5

Jorge Bolet - Liszt: Piano Works (9CD Boxset)



博列特(Jorge Bolet)被称为浪漫乐派钢琴演奏家的最后代表,他的演奏是抒情与狂想的很好结合,所以被称为“李斯特的代表”。博列特在Decca录制了9张李斯特作品选集,是其代表性唱片。

APE(image) + CUE, No LOG

CD1:
01. Hungarian Rhapsody No.12
02. Liebestraum No.3
03. Mephisto Waltz No.1
04. Funerailles
05. Rigoletto (Verdi) - Concert Paraphrase
06. La Campanella (1851)

http://hotfile.com/dl/58441216/212c5b0/L1szt_b0let_D1.part1.rar.html
http://hotfile.com/dl/58441219/74db2f9/L1szt_b0let_D1.part2.rar.html

CD2:
01. Schubert Song Transcriptions - 1
02. Schubert Song Transcriptions - 2
03. Schubert Song Transcriptions - 3
04. Schubert Song Transcriptions - 4
05. Schubert Song Transcriptions - 5
06. Schubert Song Transcriptions - 6
07. Schubert Song Transcriptions - 7
08. Schubert Song Transcriptions - 8
09. Schubert Song Transcriptions - 9
10. Schubert Song Transcriptions - 10
11. Schubert Song Transcriptions - 11
12. Schubert Song Transcriptions - 12
13. Wanderer Fantasie - 1
14. Wanderer Fantasie - 2
15. Wanderer Fantasie - 3
16. Wanderer Fantasie - 4

http://hotfile.com/dl/58441217/78f29a0/L1szt_b0let_D2.part1.rar.html
http://hotfile.com/dl/58441246/8a04c62/L1szt_b0let_D2.part2.rar.html
http://hotfile.com/dl/58441244/9ded15e/L1szt_b0let_D2.part3.rar.html

CD3:
01. Sonata in B minor - Lento Assai
02. Sonata in B minor - Andante sostenuto
03. Sonata in B minor - Fugato
04. Valse impromptu
05. Liebestraume - 3 Nocturnes - No 1 in A flat Major
06. Liebestraume - 3 Nocturnes - No 2 in E flat Major
07. Liebestraume - 3 Nocturnes - No 3 in A flat Major
08. Grand galop chromatique

http://hotfile.com/dl/58441348/f2c9b01/L1szt_b0let_D3.part1.rar.html
http://hotfile.com/dl/58441476/3761e12/L1szt_b0let_D3.part2.rar.html

CD4:
01. Sposalizio
02. Il Penseroso
03. Canzonetta del Salvator Rosa
04. Sonetto 47 del Petrarca
05. Sonetto 104 del Petrarca
06. Sonetto 123 del Petrarca
07. Aprиs une lecture du Dante (Fantasia quasi Sonata)

http://hotfile.com/dl/58441640/962d933/L1szt_b0let_D4.part1.rar.html

http://hotfile.com/dl/58441644/45b2604/L1szt_b0let_D4.part2.rar.html

CD5:
01. Chapelle de Guillaume Tell
02. Au lac de Wallenstadt
03. Pastorale
04. Au bord d'une source
05. Orage
06. Vallee d'Obermann
07. Eglogue (Hirtengesang)
08. Le mal du pays
09. Les cloches de Geneve

http://hotfile.com/dl/58441672/492a490/L1szt_b0let_D5.part1.rar.html
http://hotfile.com/dl/58441760/e41b0de/L1szt_b0let_D5.part2.rar.html

CD6:
01. Venezia e Napoli - Gondoliera
02. Venezia e Napoli - Canzone
03. Venezia e Napoli - Tarantella
04. Les jeux d'eau a la Villa d'Este
05. Benediction de Dieu dans la solitude
06. Ballade no.2 in B minor

http://hotfile.com/dl/58441791/0659a10/L1szt_b0let_D6.part1.rar.html
http://hotfile.com/dl/58441823/ccfe9a6/L1szt_b0let_D6.part2.rar.html

CD7:
01. Preludio : Presto
02. Molto vivace
03. Paysage : Poco adagio
04. Mazeppa : Allegro
05. Feux follets : Allegretto
06. Vision : Lento
07. Eroica : Allegro
08. Wilde Jagd : Presto furioso
09. Ricordanza : Andantino
10. Allegro agitato molto
11. Harmonies du soir : Andantino
12. Chasse neige : Andante con moto

http://hotfile.com/dl/58441928/c09a005/L1szt_b0let_D7.part1.rar.html
http://hotfile.com/dl/58442020/19485e7/L1szt_b0let_D7.part2.rar.html
http://hotfile.com/dl/58442038/83d3458/L1szt_b0let_D7.part3.rar.html

CD8:
01. Two Concert Studies S.145 : Waldesrauschen
02. Gnomenreigen
03. Three Concert Studies S.144 : Il lamento
04. La leggierezza
05. Un sospiro
06. Consolations S.172: n.1 Andante con moto
07. n.2 Un poco piu mosso
08. n.3 Lento placido
09. n.3 Quasi adagio
10. n.5 Andantino
11. n.6 Allegretto sempre cantabile
12. Reminiscences de Don Juan, S.418

http://hotfile.com/dl/58442094/bc6fbf5/L1szt_b0let_D8.part1.rar.html
http://hotfile.com/dl/58442130/841883b/L1szt_b0let_D8.part2.rar.html
http://hotfile.com/dl/58442151/ab7d1fd/L1szt_b0let_D8.part3.rar.html

CD9:
01. Reminiscences de Norma
02. Totentanz
03. Malediction
04. Fantasia on Hungarian Folk Themes

http://hotfile.com/dl/58442185/f381496/L1szt_b0let_D9.part1.rar.html
http://hotfile.com/dl/58442278/6ea49c3/L1szt_b0let_D9.part2.rar.html
http://hotfile.com/dl/58442387/9772953/L1szt_b0let_D9.part3.rar.html

改变Evernote笔记的背景色

用惯了OneNote,再使用Evernote,翻遍了整个菜单选项,居然也找不到改变背景色的选项,千篇一律的白色太乍眼了。在网上搜寻了半天,终于在一个日本网站上找到了折中的解决方案。

  1. 新建一个空白笔记 (New Note)
  2. 导出这个笔记 (Export 1 Note...),命名为blue.enex
  3. 用记事本打开blue.enex,找到<en-note>,修改为<en-note bgcolor="87C1FF">,保存
  4. 导入blue.enex (File -> Import -> Evernote Export Files...),这个笔记会自动导入到Imported Notes中
  5. 把导入的笔记移动到你的笔记本中 (Move to Notebook)
  6. 删除Imported Notes

其实enex就是一个XML文件,你可以直接创建一个空白文件,命名为blue.enex,用记事本打开,粘贴如下文本即可。



同理可以创建各种背景的背景笔记,green.enex,orange.enex,需要用的时候导入即可。

我第一次尝试肖像摄影中学到的8条经验


译自:8 Lessons Learned from My First Attempt at Portrait Photography
作者:Aaron Meyers

我第一次肖像摄影中学到的:

1. 背景是关键!尽量保持简单:实际上,要让他比你想象中的还要简单。我认为我就是使用简单的背景,但是经常有些细微物体(比如垃圾桶)来干扰视线(参考右边照片)。

还有,不要忘记那些出现在树木或灌木丛之间的亮点,他们也非常干扰视线。试着去找一些同色背景。还可试着去找一些使用柱子,走廊,楼梯之类的来引入模特,为照片增色。




2. 使用物体来让模特放松:当你用一个没有经验的模特时,如果他们有柱子靠着,或者其他一些可以倚靠的,他们会非常舒服。若他们仅仅只是站在那,多少会有些尴尬的。

3. 关注手和头发:我经常花许多时间担心模特的站姿如何,或者是否融入背景,或者我的光线如何,以至于忘记注意他们手的位置。当我回到家里编辑照片时,我才发现他们手的位置有多别扭,足以毁掉整张照片。此外,零乱的头发(由于风或其他因素引起)也会干扰/覆盖模特的脸部。



4. 使用助手:如果你没有一个真正的助理,带一位朋友或者家人也可。他们能帮助把风吹乱的头发梳理好,举反光片,或者帮你确保照出的图像更自然。我曾经带着一个反光片,但我的朋友不停的和其中一个模特讲话,同时还拍照,我根本没有任何人帮我举反光片。下次我们会轮流做别人的助手。


5. 使用敏锐、快速、大焦距的镜头:我是从使用Sigma 105mm f/2.8镜头入门的。我起初发现在f/2.8时,105mm很完美(焦距越大,使你的模特看起来更好),但是他让镜头偏软,我不喜欢这个结果。在我转向50mm f/1.8时,发现他的效果更理想。我是一个硬图片迷,105mm软镜头让我的模特看起来太柔和。

6. 学会控制你的模特眼睛的位置是非常棘手的:我在Flickr上花了很长时间研究其他头像/模特照片,大部分的摄影者都让模特的眼睛位置,而不是让他们直接看镜头。我也试图让我的模特向左看或向右看,但我很快发现如他们看得太远,最好在照片上他们的眼睛几乎不在了。这需要花些工作去梳理出在不同方向中,要让他们看多远才合适。

7. 让你的模特穿上漂亮的衣服:我用的模特都是我的一些朋友,他们不太乐意被告知不晚于早上7点到我家(我想要好的光线!)。他们经常穿件普通的牛仔裤和上衣。尽管他们偶尔会做些改变,但我对这些改变仍旧感到不满。当我拍完照回到我的电脑前,我总希望他们能穿一些不是日常穿的衣服。因此当我拍照时总是春天,我拍过最好的照片都是他们穿春装时拍的。

8. 边玩边学:不要对你的每次拍摄(或者你的第一次拍摄)抱有很高的期待。这会是一个学习经历,放轻松,享受这个过程。如果你有一些有经验的朋友能教你的的话,你很幸运,如果没有,那像我一样,找些朋友一起出去好好玩吧!

Android游戏开发入门

译自:http://www.rbgrn.net/content/54-getting-started-android-game-development

如果你对开发Android平台游戏感兴趣的话,有一些是你需要了解的。我是Light Racer
, Light Racer 3D,AntigenWixel的开发者,它们现在在Android Market上。我之前开发过游戏,但是Light Racer是我第一个Android 程序,并且我学到了一些关于编写Android游戏的东西,很乐意与大家分享。我还写了一本在线书籍详细记录了 Light Racer 3D的开发,包含了如何做和一些有用的代码片段。如果你之前有过游戏开发的经验,转移到移动平台上开发不会有多大困难,你仅仅需要学习架构和API即可。如果你是一个游戏开发的新手,我收集了一个入门必须要懂得的列表,他适用于不同类型的游戏,包括动作,策略,模拟和解谜。

Android是基于Java环境的。这对于开发新手来说Java比从C++入门要更容易接受。Google的API文档也很详细,并提供了一些具体实例,API
Demos演示了接近100%的API功能叫。如果你熟悉Java并使用过Eclipse,让你的第一个程序运行起来会非常简单。如果你之前从未写过任何代码,那在你前进的过程中,将要理解消化更多的知识,但千万不要气馁。

获得SDK

Android平台入门第一步就是要获得Android SDK(软件开发包)。SDK包括核心类库,模拟器,工具和示例代码。我强烈推荐使用Eclipseandroid eclipse插件。如果你仅用于Android,Eclipse
IDE对Java开发者就足够了。如果这是你第一个Java开发的工程,你要下载Java SE Development Kit (JDK) 它包含了开发你的程序所要的工具。

学习程序架构

要往正确的方向走,第一步首先要理解android程序架构
。如果你不学习他,将来你的设计会很难去修正游戏中问题。你要理解Applications,Activities,Intents和他们之间的相互关系。Google在体系架构上提供了很详细的文档。真正重要的事情是要理解为什么你的游戏会由不止一个Activity组成,并且要知道设计一个良好用户体验的游戏意味着什么。这就是将所有事情都联系到一起的Activity生命周期。

学习activity生命周期

Activity生命周期
由Android操作系统管理。你的activity会依据操作系统的指示被创建,恢复,暂停和销毁。正确地处理这些事件对于一个设计优良的程序来说是非常重要的。在你开始设计你的游戏之前,懂得所有这些是如何运作的是非常好的,他会节约你之后的调试时间和代价昂贵的重新设计时间。对大部分的应用程序来讲,使用默认设置即可,但对于游戏,你会考虑把SingleInstance标志位打开。 当你设为默认值时,android一旦认为合适,就会创建新的activity实例。而对于一个游戏,你可能只想拥有1个activity实例。这会有为你如何管理事物状态带来影响,但对于我来说,他解决了一些资源管理问题,应该是值得考虑的。

主循环(The main loop)

根据你编写的游戏类型,你可能或不可能需要一个主循环。如果你的游戏不是依赖于时间的,或者他仅仅反应用户的操作,一直等待用户的输入而不会有任何界面上的变化,那你不会用到主循环。如果你是编写一个动作游戏或者一个有动画,定时器或者任何自动化的游戏,你应该认真的考虑使用主循环。

一个游戏的主循环是子系统以指定的顺序,每秒钟尽可能多的运行循环。你的主循环要在他自己的线程中运行。原因是Android 有一个主UI线程,如果你不在你自己的线程中运行,UI线程会被你的游戏阻塞,会导致Android 操作系统不能处理任何他自身的正常更新任务。通常的执行顺序如下所示:

1. 状态(State)
2. 输入(Input)
3. AI
4. 物理(Physics)
5. 动画(Animation)
6. 声音(Sound)
7. 视频(Video)

状态
意味着管理状态变化,比如游戏结束,角色选择或者进入下一级别。通常你想在一个状态下等待几秒钟,状态管理器会处理这个延时所发生的事件,并在延时过后设置为下一个状态。

输入
是来自用户的任何按键,滚屏或者触摸。在处理Physics之前处理输入非常重要,因为经常性的输入会影响Physics,因此先处理输入会使游戏更为灵敏。在
Android中,输入事件来自主UI线程,因此你必须要编写一段输入缓冲,以便你的主循环能够在正确的时候识别他。这不是一个困难的任务,为下一用户输入定义一个字段,一旦触发onKeyPressed 或者
onTouchEvent事件,把下一用户动作赋值到这个字段中。所有的输入需要判断在当前游戏状态下是否是合法的,并反应到Physics层面上来。

AI
类似于一个用户决定如何“按”下一步。学习如何编写AI超出了本文的范畴,但总体思想是AI会能像用户那样按下按钮。他也会被Physics取得并反应到。

Physics
变化可能也可能不是真正的物理上的变化。对于动作游戏,他的要点是考虑上次的属性,当前的由用户输入和AI输入更新的属性,来决定所有的物体应该在哪,是否有碰撞发生。对于那些要选取一个物体拖动到别的地方的游戏,他即是那个物体和拖放地点。对于益智问答游戏,即为决定答案正确与否。你也可以起个别的名字,但是每个游戏都有他自己的特点,在本文中,我倾向于称他为Physics。

动画
不是简单的在你的游戏中放入一个动态GIF图片。你会要在适当的时间,游戏画图像帧。他不想听上去的那么困难。维持字段状态,比如isDancing, danceFrame和lastDanceFrameTime,会允许动画根据他决定是时候切换到下一图像帧。这就是动画更新真正要做的。实际上显示动画变化是由视频更新处理的。


声音
更新处理由触发声音,停止声音,改变音量和改变音调。一般情况下,在游戏编写中,声音会产比特流,被发送到声音缓冲,但是Android 管理他自己的声音,你根据游戏来决定是使用SoundPool还是MediaPlayer。由于低层上的实现,他们音质都是有损的,但低比特率的OGG会有更高的性能和稳定性。

视频
会依据游戏状态, 玩家的位置,得分,状态等等,并把所有东西反映到屏幕上。如果使用主循环,你会用到SurfaceView并进行draw操作.
其他的view类,自己会调用draw操作,因此在主循环中就不用再调用了。SurfaceView拥有最高每秒帧数,适合有动画或者屏幕上有运动物的游戏。所有的视频都应依据游戏状态及时的反映出来。其他的自动化操作最好由别的更新任务来处理。

那代码会是什么样的呢? 这是一个例子。



3D 还是2D?

在你开始筹划你的游戏之前,你要决定是用3D还是2D。2D游戏有更平坦的学习曲线,通常更容易取得更好性能。3D游戏需要更多深层次的数学技能,如果你不小心,会遇到性能问题。如果你想要用比方形,球形更复杂的形状,还需要使用3D
Studio和Maya那样的建模工具。Android支持OpenGL用于3D编程,而且可以找到许多很好的OpenGL教程来学习。

构建简单,高质量的方法

在开始时,要确保避免为游戏写一个冗长的方法。如果你遵循我上面描述的主循环模式,那会很容易。你写的每个方法都应该完成一项特殊任务,并且应该没有错误。比如,如果你需要洗牌,你应该有一个"shuffleCards" 方法,并仅用于此。

这是一个适用于所有软件开发的编码实践,但在游戏开发中尤其重要。在一个有状态的实时系统中,调试会变得非常困难。保持你的方法小巧,每个方法应该只实现1个目标。如果你打算在屏幕上画背景,你可能会需要一个"drawBackground"方法。这样做会使你从开发游戏,在增加新的功能时不会过于复杂而难于理解。


效率高于一切(It's all about efficiency!)

性能是所有游戏面临的主要问题,其目标是使游戏尽可能的反应灵敏,看起来尽可能的平滑。某些方法,比如Canvas.drawLine会比较慢。在每帧上画整屏的图像也会消耗很多资源。如何平衡这些是达到最佳性能所必须的。你可以通过有效的管理资源,使用一些技巧减少CPU使用资源来完成你的任务。即使是最好的游戏,如果没有良好的性能,也不会好玩。人们总会在这之间寻求一个平衡点。


提示和技巧

请参考SDK中的LunarLander,他使用了SurfaceView,这对于每秒帧数要求非常高的游戏来说是非常合适的。如果你打算进行3D开发,可参考GLSurfaceView。他负责OpenGL设备初始化以及提供一套渲染机制。我对LightRacer进行了优化,我只在view初始化时将背景添加到位图上。光束在自己的位图上,一旦赛车移动他会被更新。这两个位图都添加到主canvas上,每帧赛车在上,最后是爆炸图。这个技巧使得游戏在一个流畅的比率下运行。


如果可能尽量指定位图的尺寸大小,这是一个良好的实践,他会确保图橡不会缩放并节约了CPU资源。

在游戏中使用一致的位图配置(比如RGBA8888),这将节省图像库CPU的使用率,而不用解释的不同格式的图。

如果你决定开发一个3D游戏而又没有3D知识,你要找一两本3D游戏编程书籍,从线性代数开始学起。最低限度,你必须懂得点积,向量积,矢量,单位矢量,法线,矩阵和平移。我推荐

Mathematics for 3D Game Programming and Computer Graphics

.这本书作为参考。

保持声音文件小巧精干(低比特率)。文件越小,载入越快,游戏用到的内存越少。

声音使用OGG格式,图像使用PNG格式.

确保释放所有媒体播放器,并在activity 被销毁时,你把所有资源清空。这样会保证垃圾收集器能收取到所有垃圾,而不会在游戏启动期间有任何内存泄露。

加入Android Google group并寻求社区支持。那里会有人帮你解决问题。

最重要的是,花时间测试,再测试确保每个小细节都如你所期望的正常运作。把游戏做到精益求精是开发过程中最耗时最艰难的部分。如果你急于投放到市场中,你可能会令人们失望,并使你感到你辛辛苦苦所做的一切都是徒劳的。虽然不可能让100%的人爱上你的作品,但你至少应该尽你所能来发布更高质量的作品。

Google有详尽的入门文档

Light Racer 3D Development Journal中可找到游戏代码和教程

Wagic Card Downloader v0.4


I just wrote a simple application to download other language cards using Python. It'll retrieve MTG sets directory and try to download image from magiccards.info (resolution 312px × 445px) first, and Wizards official site or playfactory.fr (resolution 223px × 310px) as a backup.

[How to run in PSP]

  1. Download StacklessPSP-2.5.2_R1.zip and carddownloader.zip
  2. Mark a directory under PSP/GAME, e.g. StacklessPSP
  3. Extract StacklessPSP-2.5.2_R1.zip and carddownloader.zip to that directory just created , e.g. PSP/GAME/StacklessPSP
  4. If Wagic home directory is not in PSP/GAME/WTH, please change WAGIC_SETS_DIR to correct value in script.py
  5. Configure WIFI connection, and make sure switch ON WIFI
  6. Run app

[How to run in PC]
  1. Install Python 2.6 environment
  2. Install Python Imaging Library (PIL)
  3. Unzip carddownloader.zip under PSP/GAME directory, or anywhere but need to change WAGIC_SETS_DIR to correct value in scriptpc.py
  4. Double click scriptpc.py file to start downloader.
In carddownloader.ini file, you can change locale value in general section to configure which language card you want to download.

  • en
  • de
  • fr
  • it
  • es
  • pt
  • jp
  • cn
  • ru
  • tw

[Change Log]

0.4:
  • Support mutil-thread download

0.3:
  • Add French card site playfactory.fr downloader
  • Fix occasionally download wrong language card from gatherer.wizards.com
  • Support download an individual set
  • Compatible with Stackless PSP, can run as a standalone app in PSP (Experimental!)

0.2:
  • Add override flag in carddownloader.ini, to control whether override an existing file
  • Support foreign language card download from Wizards official site and crop image border
  • Support generate thumbnails, add thumbnails flag and thumbnails size parameter in carddownloader.ini
  • Add Python Imaging Library (PIL) dependency to process image

Download the latest source code
Download the older source code (Wagic forum)

My Favorites