2012年5月30日星期三

Latex目录标题\section{}中如何换行

写论文时目录里面标题太长,却没有自动换行,撑破了版面窘窘窘。

\tableofcontent
\section{xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx}

用换行号\\是不行的,\protect\\或者\protect\linebreak或者\newline也一样没法用。

可供选择的解决办法是使用\section[xxx]{xxxxxxxxxxxxxxxxxxx}
其中中括号内是缩略标题,显示在目录;大括号内是长标题,显示在正文。

最简单的办法是检查是否用了\usepackage{hyperref}这个宏包,有用的话就用%注释掉,就OK了。

自己动手,快速创建网站

1. 注册一个域名。最普遍的是.com结尾,找个大一点的网站买一个,一般20刀以内,我用的是goDaddy.com,后来发现namecheap.com更便宜,所以还是应该先货比三家。。。需要信用卡或PayPal或支付宝。注册完了后就可以在Whois里面查到了。

2.申请网络空间,有很多免费的。我用的是awardspace.com,是注册了很多家Free Web Hosting终于找到一家看上挺简单的,免费的容量不大,先将就着用吧。

3.在你的Web Hosting的帐户中Domain Manager里面添加你已经注册的域名。

4. 在你的域名注册的帐户中Nameserver里面将nameserver改成你的Web Hosting所提供的nameserver(与3的相同位置可以查到),这样,你的域名就指向你的网络空间了。

5.在你的Web Hosting的帐户中上传你的网页。最方便的是FTP上传,下一个FTP client,比如最常用的Filezilla。利用你的Web Hosting所提供的FTP username和password,就可以很方便地连接到你的站点,然后批量上传你做好的网页了。

6.慢慢鼓捣HTML和CSS吧!

后记:之前花了一天时间才建了个小小的本地站点,今天花了仨小时就让它上线了,作为小白好得意啊。

2012年5月23日星期三

如何让你开发的Android应用在手机上运行(适用Ubuntu)

开发了一个应用后,总要想在自己的手机上跑跑的,下面就说说怎么在实机上运行开发好的应用:

1.确认你手机的Android版本不低于你开发的平台所用的Android版本。如果没达到,就升级吧,官方的没有,小心刷机啊。

2.在你的手机里选择“设置->应用程序->开发”,把开发里的两个选项“USB调试”和“允许模拟地点”打上勾勾。

3.通过USB接口将手机连在电脑上。

4.确认已经连上后,在终端里敲入如下命令:
    sudo gedit /etc/udev/rules.d/51-android.rules
来创建一个51-android.rules文件,在这里我是用gedit文档的。

5.在这个空的51-android.rules文件添加
   SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", MODE="0666", GROUP="plugdev" 
这样一句,保存。注意Vendor ID 注意对于不同品牌的手机是不一样的,见本文结尾处表。

6.在终端里敲入如下命令:
   sudo chmod a+r /etc/udev/rules.d/51-android.rules
来运行这个文件。

7.运行/android-sdks/platform-tools中的可执行文件adb,查看以确认你的设备已连接并可用。

8.在Eclipse中选择你所要运行的Package,点击运行,(如果之前已经在虚拟机上运行过,如果没有需要选择Android Application)跳出一个框框,选择Choosing a running Android device中你的手机,点击OK。完成。


CompanyUSB Vendor ID
Acer0502
ASUS0b05
Dell413c
Foxconn0489
Fujitsu04c5
Fujitsu Toshiba04c5
Garmin-Asus091e
Google18d1
Hisense109b
HTC0bb4
Huawei12d1
K-Touch24e3
KT Tech2116
Kyocera0482
Lenovo17ef
LG1004
Motorola22b8
NEC0409
Nook2080
Nvidia0955
OTGV2257
Pantech10a9
Pegatron1d4d
Philips0471
PMC-Sierra04da
Qualcomm05c6
SK Telesys1f53
Samsung04e8
Sharp04dd
Sony054c
Sony Ericsson0fce
Teleepoch2340
Toshiba0930
ZTE19d2
 

2012年5月17日星期四

解决WARNING: Application does not specify an API level requirement!

这是个不太能注意到又很常见的问题:

WARNING: Application does not specify an API level requirement!
Device API version is xx  (Android x.x)

解决方法:

在AndroidManifest.xml中

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.android.xxx">

下方加入一行:

<uses-sdk android:minSdkVersion="xx"/>

其中xx是API version的版本号,在上述WARNING的第二行的下划线处。

2012年5月8日星期二

出现xxx cannot be resolved or is not a field问题的解决方案

这样的问题一般会在你的方法中引用resource中的场参数时出现,比如:

对于R.array有:array cannot be resolved or is not a field.
对于R.main有:main cannot be resolved or is not a field.
对于R.id有:id array cannot be resolved or is not a field.

要解决这个问题,首先看一下你的res文件夹中有没有这个场的定义,一般res中默认只有layout.main.xml, drawable.xxx和value.string.xml,需要自己添加一些你需要的xml文件。注意:一定要添加在恰当的位置比如说array.xml就应该在value这个文件夹下。

如果确认有,再检查一下res下面所有文件是否都无报错。如果res下某一个文件报错,比如main或者AndroidManifest,也会影响其他场不能正确被引用。

如果都没有错误,再检查一下在你的主程序中是否不小心引入了android.R如下:
import android.R
如果有,请删除。

如果还不行,可以尝试一下:Project ==> Clean ==> Check your project and press OK.

再不行的话,我也就没辙了。


2012年5月4日星期五

怎样解决Android类中TabActivity已经deprecated的问题

在Android官网中有一个做Tab的sample,使用了TabActivity这个类。但在实际操作过程中,你会发现这个类现在已经被官方弃用了,程序中会有如下提示:

This class is deprecated.
New applications should use Fragments instead of this class; to continue to run on older devices, you can use the v4 support library which provides a version of the Fragment API that is compatible down to DONUT.

再按照官网给出的代码运行这个本该含有几个Tab的项目时,几个Activity变成了几个独立的应用,而不是在一个应用的几个Tab里。

问题看上去是出在这个TabActivity上。(花了两天才发现不是这个问题,是在Android Manifest.xml中在每一个Activity中都加入了<intent-filter/>,修改了后只在主Activity中加这个tag就好了。)

  • 于是先按照程序中的提示加入@SuppressWarnings("deprecation"),以便漠视Warning。再运行——当然是没效果。       
                                                                                                     
  • 接着打算按照上面的建议,用Fragment来代替TabActivity,那就得先装上这个最近才更新的包android-support-v4.jar,步骤如下
     1.在Eclipse中选Windows->Android SDK Manager,选择Repository,找到最下面的Android    Support,点击安装这个package。
         2.装完之后,在你的project里面建立一个叫libs的文件夹,路径为XXXXX/libs,和src、res等文件夹并列的。
         3.在android-sdks/extras/android/support/v4中找到android-support-v4.jar,复制到步骤2中的libs里面去。
         4.在Eclipse的Package Explorer中找到XXXXX/libs/android-support-v4.jar,按右键点击Build path->Add to Build Path.

        好了,现在就可以用这个更新的包里面的东东了,比如我们需要的Fragment这个类。然后我们要来看看FragmentTab.java是怎么用的。

  • 除了这种方法呢,还可以直接让原本继承TabActivity的类来继承爷爷Activity,具体怎么做在下面两个帖子里有介绍:
           http://stackoverflow.com/questions/3163884/android-tabhost-without-tabactivity
           http://wazai.net/2109

2012年5月3日星期四

怎样在Android的项目中加入新的Activity Class

在开发Android的应用时,往往需要建立多个窗口,对于每个不同的界面,使用不同的Activity class会更加方便。如何在已经创造的项目中加入新的Activity Class呢?

有两种方法:第一种是用Manifest Editor,这里暂且不提;第二种是在Eclipse里创建,非常简单:

在Eclipse菜单栏里点击File->New->Class,出来一个框框,在Source Folder里选择你准备把这个class放的位置,一般是XXXX/src,package就是之前创建Project里面的package啦,比如com.example.helloworld, Name就是你要建的这个Activity,比如AlbumsActivity,然后点Finish。

接下来,就会在Eclipse的Package Explorer里找到你新建的这个Activity,打开这个java的文件写入代码。

最后,在AndroidManifest.xml里面加入新建的Activity如下:

        <activity
            android:name=".AlbumsActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

OK.