Welcome to my blog! You can find the useful information about Windows PC, MAC, Linux and iDevice(iPhone iPod iPad).
2010年12月4日星期六
iphone正确恢复固件(进入DFU模式)的三种方法
第一种方法 : 正常恢复
1.将你的iPhone关机
2.同时按住开关机键和home键
3.当你看见白色的苹果logo时,请松开开关机键,并继续保持按住home键
4.开启iTunes,等待其提示你进行恢复模式后,即可按住键盘上的shift键,点击'' 恢复'' , 选择相应的固件进行恢复
第二个方法 : 黑屏恢复
1.用USB线将iPhone连接上电脑,然后你将会听见电脑已连接成功的提示声音
2.现在请先将iPhone关机,然后你将会听见电脑未连接成功的提示声音
3.请同时按住开关机键和home键,持续到第10秒的时候,请立即松开开关键,并继续保持按住home键
4.这个时候iTunes会自动启动,并提示你进行恢复模式(iPhone会一直保持黑屏状态) , 那么你就可以按住键盘上的shift键,点击 '' 恢复'', 选择相应的固件进行恢复
第三个方法 : 下载第三方软件辅助进入DFU模式,不按任何键即可进入DFU模式(不实用,就不介绍了)
2010年8月5日星期四
2010年7月5日星期一
收藏:第一个 Android 程序 — Hello World
原文出自http://www.mxjava.com/android-helloworld.html
通过《Android 开发环境的安装》我们了解了 Android 的一些基本知识,也介绍了如何安装 Android 开发环境。就从这一篇开始进入 Android 开发的学习过程。
任何一门语言或者框架的第一课都是精典的 Hello World,我们跟随主流,从 Hello World 开始吧。
有了 Eclipse 插件(Android ADT)创建并运行一个工程是十分容易的,只要简单的2个步骤就可以顺利完成 HelloWorld 。
1、单击菜单 File > New > Project 弹出的窗口选择创建一个新的 Android 项目。
2、并在创建 Android 项目的对话框里填写项目的详细信息,确认无误后按下 finish 按钮一个工程就被顺利的创建成功了。
创建的工程结构如下:
简单介绍一下几个比较重要的目录。
1、src 目录用于存放代码。
2、gen 目录用于存放对应该资源文件的代码。
3、res 目录用于存放资源文件。
4、res\layout 目录用于存放布局描述文件。
5、res\values 目录用于存放常量定义文件。
简单介绍一下几个比较重要的文件。
1、HelloWorld.java 程序代码文件,其内容与一般 Java 程序格式完全相同。
- package com.mxjava.android.hello;
- import android.app.Activity;
- import android.os.Bundle;
- public class HelloWorld extends Activity {
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- }
- }
我们看到 HelloWorld 类继承了 Activity 类,并且覆写了 onCreate() 方法。方法中利用 setContentView() 方法来设置界面的布局。这里重点说明一下该方法的参数 R.layout.main 。R.java 文件存放在 gen 目录下,layout 是该类中的静态类,它对应 res\layout 目录。常量 main 对应 main.xml 文件。所以 R.layout.main 就对应着 res\layout\main.xml 文件。若在 res\layout\ 目录下新增一 Android 配置文件,ADT 会自动在 R 中增加相对应的代码。
main.xml 是界面布局配置文件,用于设计显示界面样式。
- <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent">
- <textview android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello">
- textview>linearlayout>
布局配置中设置了一个 TextView,表示界面上显示一个文本标签,属性 android:text 是显示的内容。这里是 @string/hello 。在这里 @ 是引用标志,string 是常量配置文件 string.xml ,hello 是 string.xml 中 name=”hello” 的配置项。让我们再看看 string.xml 的配置:
- <resources>
- <string name="hello">Hello World, HelloWorld!string>
- <string name="app_name">HelloWorldstring>
- resources>
hello 的值为 Hello World, HelloWorld!。所以文本标签的显示内容就为Hello World, HelloWorld!。
每一个项目都包含一个 AndroidManifest.xml 配置文件,该文件配置了程序的各种设定。比如前端应用程序 Activity (Foreground Activities),后台服务(Background Services)以及间隔执行的 Activity (Intermittent Activities)。HelloWorld 类继承自 Activity ,所以它是一个前端应用程序,其配置如下:
- <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.mxjava.android.hello" android:versioncode="1" android:versionname="1.0">
- <application android:icon="@drawable/icon" android:label="@string/app_name">
- <activity android:name=".HelloWorld" android:label="@string/app_name">
- <intent-filter>
- <action android:name="android.intent.action.MAIN">
- <category android:name="android.intent.category.LAUNCHER">
- category>action>intent-filter>
- activity>
- application>
- manifest>
application 标签设置了程序的基本信息。如:android:icon 程序的图标,android:label 程序的名称等。文件中有一个名为 HelloWorld 的 Activity,并为其设置了 Intent-filter ,action 和 category 两个标签表明了该 Activity 为程序默认要运行的 Activity(因为可以建立多个继承自 Activity 的类,每个类都要在该文件进行配置,所以为其指定默认运行的 Activity 至关重要)。
了解了以上内容后,就可以运行我们的程序了。右键点击工程 > Run As > Android Application ,程序将启动运行。
注意:模拟器将模拟 Android 手机启动过程,可能有点慢,请耐心等待。
有了 ADT 我们不用编写一行代码就可以运行 HelloWorld,非常方便。不过 Activity 类的应用程序有着自己的运行方式,为了能更好的编写代码,我们必须了解其运行方式,如下:
onCreate -> onRestore ->onStart -> onResume -> onSave -> onPause -> onStop -> onDestroy
onCreate -> onRestore ->onStart 为应用的启动,一般 Activity 用 onCreate。当程序失去焦点或者被关闭将会触发 onPause 状态,当程序再次被唤醒,将会回到 onResume 状态。
收藏:Android 开发环境的安装
本文是为了日后学习方便做的收藏,原文作者保留一切权利。
原文出自http://www.mxjava.com/android-setup.html
Google 的产品天生就拥有着超高的关注度,很多程序员在 Android 手机还没有上市之前就开始学习。相对他们来说我的起步比较晚,今天刚刚开始,但相对于那些还没有开始学习的朋友来说,我的起步还不算太晚。
学习 Android 最主要原因当然是这几年 Android 手机的流行,让我感觉到它的未来不可限量。到目前为止,仅仅三年的时间,各大手制造厂家都陆续推出了自己的 Android 手机,也成为了各国移动通讯服务商争相合作的焦点。另外几个原因是首先它是开放性的,底层核心是 Linux 。再者 Android SDK 使用我常用的开发语言 — JAVA。
JAVA 开发第一件事永远是配置环境,采用 JAVA 作为开发言的 Android 也不例外。接下来就开始配置我们的 Android 开发环境。(本文仅针对 Android 环境进行说明,默认您的系统中已经安装了 JAVA SDK 和 Eclipse,若没有请安装。)
1、首先到官网下载安装 Android SDK。http://developer.android.com/sdk/ 可惜的是天朝河蟹了该网站(http://www.android.com是可以访问的)。为了方便,本站提供了下载。解压后运行 SDK Setup.exe ,将会运行 Android SDK and AVD Manager 下载程序。选择“Settings”,勾选“Force https:// …”如图:
切换到“Avaliable Packages”,勾选要安装的 SDK Packages 和 API(建议全部选择),按下“Installed Selected”按钮开始安装。 若列表中没有选项,请按“Refresh”按钮刷新。
2、IDE 使用 Eclipse ,所以需要安装 Eclipse ADT (Android Development Tools) Plugin,这是 Android 的开发工具。安装方法同安装普通 Eclipse 插件相同,启动 Eclipse ,选择菜单 Help – Install New Sofware ,单击 Add 按钮,在 Location 栏输入网址:http://dl-ssl.google.com/android/eclipse/ 后单击 OK 按钮。在 Install 窗口中选择刚刚输入的地址并选中 Developer Tools ,按下 Next 按钮开始安装。安装完成后,需要重新启动 Eclipse 才能使用 Android ADT 。
3、若要使用 Android SDK ,还要为其指定环境变量或在 ADT 中指定其路径。选择 Window – Preferences ,选择 Android ,单击 Browse 按钮,选择解压 Android SDK 的路径,单击 OK 按钮即可。
到此 Android 的开发环境就安装完成了。对于有 JAVA 环境配置基础的人来说,应该是很容易吧。
2010年5月26日星期三
无意发现的Google浏览器垃圾清除方法
2010年4月22日星期四
Macで\(バックスラッシュ)を入力する
文字列を改行するために「¥n」と入力しても「¥n」と表示がされるだけで改行されません。
「¥」は本来は「エン」ではなく「バックスラッシュ」なのは理解しているのですがどうやって入力したらいいのやら・・・。
で、「Option」+「¥」で入力できました。
Windowsでは「エン」と「バックスラッシュ」は同じ文字の扱いですが、Jeditの環境設定に「円マーク」を「バックスラッシュ」に置き換えるとあるので、Macでは別の文字の扱いのようです。。
jedit.png
2010年3月2日星期二
转 pickle——python对象的串行化
最近感觉自己虽然玩了3年多的python,但仅仅停留在使用的阶段上,对python的很多内容还不算很了解,打算沉下心来,扎扎实实的学些东西了。
对象的串行化感觉上是很有用的(但自己很少用到),不过还是好好学习下吧。
1)相关的python模块
在python 3.0里,和python相关的模块主要有2个:_pickle,marshal.
其中_pickle是对pickle的优化,是使用C语言对底层进行了一部分的优化。
marshal是python里原生的串行化类,但是在使用上pickle更加优秀,marshal的存在主要是为了支持python的*.pyc文件。
pickle模块和marshal模块有几方面的差别:
1>pickle模块对已串行化的对象进行跟踪,因此对同一个对象的引用不需要再次串行化。marshal不这么做。
对于循环对象而言,他们包括对自己的引用,因此marshal不支持循环对象。
共享对象由于是指有多个实例指向同一个引用,pickle保存一个引用,并使得其他实例都指向该对象,来保证所有实例的一致性。
2>marshal不能用来串行化用户自定义对象和它们的实例。pickle可以串行化这些对象,但前提是类的定义是可以引入的,并且和对象串行化的类在一个模块里。
3>marshal不能跨版本,因为它主要是用来支持*.pyc文件的,解释器不需要保持对以前版本的兼容性。而pickle可以做到这一点。
2)用法
pickle.dump(obj, file[, protocol])
pickle.dumps(obj[, protocol])
pickle.load(file[, *, encoding="ASCII", errors="strict"])
pickle.loads(bytes_object[, *, encoding="ASCII", errors="strict"])
3)异常
exception pickle.PickleError 基本的Error,从Exception继承而来
exception pickle.PicklingError 当一个不支持Pickle的对象被pickle被激发
exception pickle.UnpicklingError Unpickle出错时被激发,例如数据损坏或安全问题
4)可以被pickle的对象
None,True,False
数字,复数
字符串,字符集
元组,列表,集合,字典
模块的顶层函数、内置函数、类
2010年1月12日星期二
转:wxpython 换肤
如果只用通用控件(不用Panel),可以实现完美换肤....
对newedit进行换肤,好玩....
原理是用win32com调用ActiveSkin实现的,因为wxpython的控件是native的,加上ActiveSkin支持COM,我也是突发奇想试了一下,想不到成功了,不过ActiveSkin是商业组件,而且现在已经停了,想买都没法买了,只有用盗版,而且只能在windows下用,有一些控件也不能很好支持,问题太多,所以我一直没公开这个技术,后来我试了很多支持COM的换肤控件包,都不关用。现在有人问起这个问题,就说一下。只需要增加三行代码。 需要安装:ActiveSkin43.rar
1 import wx, win32com.client 2 .... 3 class MyApp(wx.App): 4 def OnInit(self): 5 self.skinLib = win32com.client.Dispatch("ActiveSkin4.Skin2") #载入ActiveSkin 6 self.skinLib.LoadSkin("Paper.skn") #载入皮肤 7 frame = MyFrame(None, "Simple wxPython App") 8 self.SetTopWindow (frame) 9 self.skinLib.ApplySkin(frame.GetHandle()) #使用皮肤
-- flyaflya [2005-08-04 09:45:16]