任何问题请联系WX:uu16853

买模板送网站采集器 让你轻松放开双手运营网站!

购买更多有优惠!

Android 3.0自带的天气预报例子代码 Android开发技术

Android 3.0正式版API Level 11中加入了一个天气预报例子,下面是manifest.xml中的关键代码,只是少了xml的编码头: <manifest xmlns:android=”http://schemas.android.com/apk/res/android” package=”com.example.android.weatherlistwidget”> <uses-sdk android:minSdkVersion=”11” /> <application android:label=”Weather Widget Sample”> <receiver android:name=”WeatherWidgetProvider“> <intent-filter> <action android:name=”android.appwidget.action.APPWIDGET_UPDATE” /> </intent-filter> <meta-data android:name=”android.appwidget.provider” android:resource=”@xml/widgetinfo” /> </receiver> <service android:name=”WeatherWidgetService” android:permission=”android.permission.BIND_REMOTEVIEWS” android:exported=”false” /> <provider android:name=”WeatherDataProvider” android:authorities=”com.example.android.weatherlistwidget.provider” /> </application> </manifest> 这里WeatherDataProvider.java的源码为主要是ContentProvider相关的处理,这里作为appWidget的receiver class WeatherDataPoint { String city; //城市 int degrees; //度数 WeatherDataPoint(String c, int d) { city = c; […]

Android平板开发注意点 Android开发技术

  很多网友可能看到即将有多款Android平板上市,就Android平板开发的注意点这里Android123给大家总结如下注意点:   1. 系统版本:   目前Google官方支持的平板开发版本为Android 3.0 honeycomb,API Level 11,有的网友可能看到HTC Flyer或Samsung Galaxy Tab这里并不推荐大家购买,Android 2.3或2.2并不适合平板,可能和主流的平板发展有些偏离,至少可以看到主流的3.0平板使用NVIDIA Tegra2双核处理器,而HTC Flyer是高通的单核、Galaxy Tab使用的是三星自己的单核处理器。移植和固件更新上无法得到Google官方的主流支持。   2. 硬件注意   这里从品质和固件升级来看,摩托罗拉Xoom还是很不错的,但目前主要是CDMA EVDO版本,只能在中国大陆的电信网络上使用,不过开发者可以考虑价格更优惠的WiFi版Xoom平板电脑,这里Android开发网再给大家两个候选推荐三星Galaxy Tab 10.1这是一款10.1的平板,使用NVIDIA Tegra2处理器,拥有1GB的RAM,还有就是LG Optimus Pad,总而言之。处理器使用NVIDIA Tegra2,RAM在1GB预装Android 3.0的,手机制造全球排名在前5的品牌可以保证用户数量和固件升级的效率。   3. 分辨率注意   目前来看即将主流Android平板分辨率在1280×800这个水平,屏幕尺寸也在10英寸左右,而1024×768的7英寸平板不推荐开发者使用,按照趋势来看更大尺寸和更高的分辨率是趋势。   4. 平板应用   平板在早期比较适合电子阅读,同时视频播放,游戏娱乐都是必不可少的,如果你是Android平板开发者可以考虑下平板和手机相比哪些软件是很稀缺的。

Android开发知识-3月13日总结 Android开发技术

   来自国内外的Android开发相关知识总结,整理于2011年3月13日。   1. NDK开发使用什么IDE比较好? 这里Android123推荐使用Visual Studio 2005或更高版本,对于代码管理和显示效果比较出色。   2. SurfaceView如何截图 ? 使用Linux下标准的Framebuffer无法获取是一片黑色,类似Windows下截取DirectX这样的DMA模式的数据一样,由于SurfaceView在游戏或高实时性画面比较多,Android除了从2.3.3开始新增了一个SurfaceFlinger API用于截图.当然有关OpenGL的截图还可以查看android开发网早期文章,如果你有Root权限截图普通图片通过读取/dev/graphics/fb0即可。   3. Android模拟器和真机到底性能差异多少? 这里Android开发网提示,模拟器的性能和PC的CPU、RAM有很大的关系,同时默认的模拟器启动时分配的RAM较小,而真机也分为很多层次,比如CPU从ARM11这样单核频率在550MHz左右,也有效率更高的A8、A9双核的,同时真机的RAM也是从256MB到1GB不等,对于实际性能差距mTweak评估可能造成10倍或更高的效率差别。   4. android开发时项目的包名管理和代码风格,一般考虑到设计模式,这里android123推荐大家有ui、view、service、provider、util、network以及常量const包,对于Java工程的管理和代码优雅性大家应该多参考优秀的开源工程,比如Android自带的apps的代码,看一些设计模式对于项目管理控制都有很大的帮助,尤其是模块化的开发。   5. 跨进程的数据传输,如果是几个应用协同处理需要跨进程,对于Android平台来说设计一个AIDL服务器比较方便,类似系统的很多服务都是通过getSystemService这样的方式访问server来处理在代码可复用上面和通讯上,类似微软的COM模型,开发者无需关注内部实现曝露出通用的接口即可。

Android平台待开发软件列表 Android开发技术

   很多Android开发者不知道做哪些软件,如果你的基础足够扎实可以尝试下列表中的应用吧:   1. 文件管理器 – Google在Android手机中并没有预装文件管理器,目前来看市面上还没有一款比较像样的文件管理器,这里Android123推荐大家做一款不错的文件管理器,对于平时SD卡的管理还是比较有帮助的。   2. 视频播放器 – 由于系统中的播放器支持识别3gp、H.264编码的mp4和wmv,对于flv、rmvb、rm、avi以及vob格式的文件来说都还无法播放,如果你做过解码器相关的项目,做一个全能播放器也是不错的。   3. 软件商城 – 对于Java的基础性测试,类似Market的客户端开发是一个不错的检验,当然你可能需要先学习下服务器相关的知识,这里Android开发网推荐使用JSON在Android平台,比较省流量吧。   由于目前国内的Android软件在上面涉及的,只有暴风影音手机版和QQ影音手机版做的还算正统外,第1类和第三类值得开发者深挖,这样你的基础会变得更加牢固。 

Android裁剪图片最简单方法 Android开发技术

   很多网友平时如果需要在Android平台下开发处理图片裁剪的应用,如果感觉实现的逻辑比较麻烦,比如说需要写类此Win32下的橡皮筋类CRectTracker来设置裁剪区域,这里Android开发网给大家一个最简单可靠的方法,通过下面的Intent调用系统的Camera程序的裁剪功能实现图片修剪。   Intent intent = new Intent("com.android.camera.action.CROP");      intent.setClassName("com.android.camera", "com.android.camera.CropImage");     不过这里Android123提醒大家可能会出现无法找到Activity的android.content.ActivityNotFoundException异常,这是由于Android内部的gallery和camera都有处理,可以尝试另一种URI,com.android.gallery的com.android.camera.CropImage,在setClassName时,具体的代码为 final Intent intent = new Intent("com.android.camera.action.CROP"); intent.setClassName("com.android.camera", "com.android.camera.CropImage"); intent.setData(Uri.fromFile(mFile)); intent.putExtra("outputX", width); intent.putExtra("outputY", height); intent.putExtra("aspectX", width); intent.putExtra("aspectY", height); intent.putExtra("scale", true); intent.putExtra("noFaceDetection", true); intent.putExtra("output", Uri.parse("file:/" + mFile.getAbsolutePath())); startActivityForResult(intent, REQUEST_CROP_IMAGE);  

WordPress 技巧:删除列表页的 Shortcode

有时候我们希望保持首页和其他列表页尽可能的简单,比如不输出 Shortcode: /* Plugin Name: 删除列表页的 Shortcode Plugin URI: http://blog.wpjam.com/m/remove-shortcode-from-archive/ Description: 删除首页和其他列表页的 Shortcode。 Version: 0.1 Author: Denis Author URI: http://blog.wpjam.com/ */ function wpjam_remove_shortcode_from_archive($content) { if ( !is_singular() ) { $content = strip_shortcodes( $content ); } return $content; } add_filter('the_content', 'wpjam_remove_shortcode_from_archive'); 将上面的保存为一个插件,上传激活即可。 更多 WordPress Shortcode 介绍和使用技巧: WordPress 技巧:使用 Shortcode 投放 Google Adsense 广告 WordPress 技巧:在主题的文件中使用 Shortcode […]

WordPress 短代码(Shortcode)详细介绍和使用

WordPress Shortcode 指的是一些使用[]包含的短代码,WordPress 会识别这些短代码并根据短代码的定义输出为特定的内容,Shortcode API 这个功能是 WordPress 从 2.5 版本开始引入的,使用它可以给日志内容添加各种功能,并且 Shortcode 这个接口非常容易使用,并且功能非常强大。 Shortcode 类型 Shortcode API 支持几乎所有可能的组合形式:自关闭标签,开放标签,含有参数的标签等。 [mycode] [mycode foo=”bar” id=”123″ color=”red” something=”data”] [mycode]Some Content[/mycode] [mycode]<p><a href=”http://example.com/”>HTML Content</a<>/p>[/mycode] [mycode]Content [another-shotcode] more content[/mycode] [mycode foo=”bar” id=”123″]Some Content[/mycode] Shortcode 基本概念 首先你要去定义一个函数,来处理你定义的 Shortcode,和它的属性参数以及引用的内容。 function my_shortcode_func($attr, $content) {     // $attr $key=>$value 的数组     // $content 是 […]

WordPress 对象缓存(Object Cache)详细介绍和使用

WordPress 对象缓存简介和服务器设置 WordPress Object Cache(WordPress 对象缓存)是 WordPress 的默认缓存机制,它的主要功能是把负责查询或者运算的结果按照 Key-Value 这样的方式(WordPress 还支持按照 Group 来划分和避免缓存的内容冲突)存储到对象里面,下次进行同样操作的时候,可以让直接从这个对象中取出数据,不用重复到数据库中或者其他外部网站获取数据。 WordPress Object Cache 和服务器设置关系很大,如果系统支持内存缓存,则这个对象是直接存入内存,以后在未过期之前都是直接从内存中读取的,这样效率和速度都非常快的。如果服务器不支持内存缓存的话,则只能保证在当前页面下同样的查询或者操作不再重复从数据库中读取了。 WordPress 对象缓存的函数 使用 WordPress 对象缓存技术其实是非常简单的: 使用 wp_cache_set() 把数据写到缓存中。 使用 wp_cache_get() 到缓存中读取数据。 使用 wp_cache_delete() 删除缓存。 这些函数会涉及到的四个参数: $key: 对象的 key。 $data: 要存的值。 $group: 分组,可选参数,用来把缓存对象就行分组。 $expire: 过期时间,可选参数,如果是默认缓存,这个函数没用,如果是内存缓存,是设置缓存的时间,单位是秒,默认为0(0的意思就是永远,不会自动过期)。 使用 WordPress 对象缓存 下面以我即将更新 WordPress 相关日志插件为例,讲讲如何使用 WordPress 对象缓存: 我们知道 WordPress 相关日志插件是通过 tag 和分类来获取相关日志,相同的 tag […]

WordPress 技巧:让 WordPress 真正支持 jQuery Lazyload

看到很多人在网上说 jQuery lazyload 插件没效果,看了下插件主页说要把图片的地址写入 data-original 属性,loading 图片地址写入 URL 属性就能实现真正图片稍后载入(lazyload)。 如果每张图片都这么改,非常不方便,并且图片在 Feed 中也无法查看,那么我们可以通过 WordPress 强大的 filter Hook,用正则表达式重组一下 img 标签就行了。于是花了点时间写了个貌似很强大代码: add_filter ('the_content', 'lazyload'); function lazyload($content) { if(!is_feed()) { $content=preg_replace('/<img(.+)src=[\'"]([^\'"]+)[\'"](.*)>/i',"<img\$1data-original=\"\$2\" src=\"loading1.gif\"\$3>\n<noscript>\$0</noscript>",$content); } return $content; } 把这段代码扔到当前主题的 functions.php 中,再把 loading1.gif 这个图片地址换成你的 loading 图片地址。再按潜行者m的这篇文章配置下站点的 jQuery 就搞定了。 详细效果,请查看示例。 标签:jQuery WordPress 技巧

WordPress 自定义字段(Custom Fields)详细介绍和使用

什么是 WordPress 自定义字段 我们在使用 WordPress 撰写日志或者页面的时候,都会在编辑框下面看到自定义字段(Custom Fields),那么什么是自定义字段呢?这个 WordPress 自定义字段又是干什么的? WordPress 自定义字段是对 WordPress Posts 表的一种补充和扩展,一般来讲 WordPress 提供了博客日志的作者,分类,标签,时间等,然后你可以根据你的需要自定义出一系列的其他信息,比如我在我爱水煮鱼上面就使用 WordPress 自定义字段记录当前日志的浏览次数和它的bit.ly 的短链接,如下图所示: WordPress 自定义字段 WordPress 自定义字段工作机制 WordPress 自定义字段通常有两个的变量:键 ( key ) 和值 ( value )。比如你想显示你写日志当时的心情,你可以把键叫做 “mood”(心情),显然在这里值就是 “高兴” 或者 “愤怒”。 当我们为某篇日志或者页面创建一个自定义字段的时候,我们所写的信息将会存储到该日志或者页面中。换句话说,我们所创建的自定义字段的的数据是属于当前的日志或者页面,所以我们能够显示当前日志或者页面相关的自定义字段信息。 如何在博客上显示自定义字段的数据 当我们想显示日志或者页面的自定义字段的时候,我们有几种方法。这里介绍两种简单的方法和一些更高级的用法。 首先,可以使用 the_meta() 这个模版函数,它会自动输出一个无序的列表,如下所示: Key1: Value of “Key1″ Key2: Value of “Key2″ Key3: Value of “Key3″ 第二个函数是:get_post_meta($post_id, […]

WordPress 技巧:自定义 WordPress 表情图片路径

很多同学在使用 WordPress 表情的时候,喜欢把 WordPress 表情改成自己喜欢的表情,但是每次都得到 WordPress 安装目录下 /wp-includes/images/smilies/ 去替换,并且每次 WordPress 一升级,还得再干一次,非常不方便,其实可以通过简单的 WordPress 插件 解决这个问题: <?php /* Plugin Name: Custom Smilies Src Plugin URI: http://blog.wpjam.com/m/custom_smilies_src/ Description: 自定义 WordPress 表情图片路径 Version: 0.1 Author: Denis Author URI: http://blog.wpjam.com/ */ add_filter('smilies_src','wpjam_custom_smilies_src',1,10); function wpjam_custom_smilies_src ($img_src, $img, $siteurl){ return $siteurl.'/wp-content/smilies/'.$img; } ?> 将上面代码复制成一个插件,上传激活,或者复制到当前主题的 functions.php 也可以。 上面的代码就是表情的文件夹定义到 /wp-content/smilies/,这样升级也不会影响到你自定义的 WordPress 表情图片了。 如果你想对 WordPress […]

WordPress 表情:WordPress Smilies

什么是 WordPress Smilies? 我们知道在 WordPress 撰写日志的时候,输入 “:-)” (前后要有空格)就会转化成一个笑脸 ,这个就是 Smilies。又称 “emoticons”,它是一些用来传达情感的特殊文字。是的,我们在撰写日志的时候通过这种方式来表达感受是一种非常好的方法。 WordPress Smilies 默认情况下 WordPress 最自动把文本 Smilies 转化为一张表情图片,所以你在撰写日志的时候输入 “:-)” (前后要有空格),在预览或者发布日志就会看到一个笑脸 。 如果你不想这个转化发生,你可以到 WordPress 后台关掉,WordPress 后台 > Setting (设置) > Writing(撰写),在 Formatting(格式)部分,把 Convert emoticons like “:-)” and “:-P” to graphics on display” (转换如 、:-P 等文本表情符号为图像)这个选项关掉即可。 WordPress 支持的表情 默认情况下 WordPress 支持一下几种 Smilies: Smile 笑脸 Shortcut: ‘:smile:’ , […]

如何有规律的备份 WordPress 博客

我们都知道备份 WordPress 博客应该是规律性的操作,但是事实上往往我们都会因为其它的事情的介入而忘记了。 没有备份博客所产生的后果是非常严重的,假如你的服务器因为某种原因宕掉了,或者网站被黑,而你恰恰又没有备份你的博客,这时候你将使你无法恢复你的博客或者丢失很多重要数据,你除了哭之外,真的没有别的办法了! 如何有规律的备份 WordPress 博客 一般来说,我会每周作一次网站的备份。下面我们来简单说一下如何快捷备份 WordPress 博客。 使用 FTP 工具将你的 BLOG 文件全部下载到本地; 登录 phpMyAdmin,选择你自己的 WordPress 数据库; 确认所有的 WordPress 表以后选择 Export; 在 Structure 部分,选择 Add Drop Tables,Add AUTO_INCREMENT 和 Enclose table and field names with backquotes; 在 Data 部分将所有选项留空; 选择 Save as file 开始下载数据库(如果你的数据库非常大的话你可以选择压缩)。 使用 WordPress Database Backup 自动备份数据库 如果你没有权限登录 phpMyAdmin,或者想把备份这件事情做成自动化,那么你可以使用插件 WordPress Database […]

WordPress 技巧:获取特色图片地址

我们知道 WordPress 可以在后台设置一张特色图片作为日志缩略图,但是我们如何获取这张特色图片的地址呢? <?php /* Plugin Name: 获取 WordPress 特色图片地址 Plugin URI: http://blog.wpjam.com/m/get_post_thumbnail_url/ Description: 获取 WordPress 特色图片地址。 Version: 0.1 Author: Denis Author URI: http://blog.wpjam.com/ */ function get_post_thumbnail_url($post_id){ $post_id = ( null === $post_id ) ? get_the_ID() : $post_id; $thumbnail_id = get_post_thumbnail_id($post->ID); if($thumbnail_id ){ $thumb = wp_get_attachment_image_src($thumbnail_id, 'thumbnail'); return $thumb[0]; }else{ return false; } } 将上面的代码复制到当前主题的 […]

WordPress 日志缩略图(Post Thumbnail)详细介绍和使用

很多 WordPress 主题,特别是那些杂志型的主题,会给每篇日志加上一张缩略图,这种展现方式一般用在首页,可能单独出现,或者和日志摘要一起。但是目前位置没有一个标准的方法去实现日志缩略图,很多主题是使用 WordPress 自定义字段来实现日志缩略图功能,这样的设置比较复杂,虽然我在制作的很多 WordPress 项目中都是用这个方法,并且设置了直接上传缩略图的方法,但是还是略显麻烦。 从 WordPress 2.9 开始,WordPress 开始内置了日志缩略图的功能,后面又改成了特色图片(Featured Image,这里为了统计叫法,还是使用日志缩略图的名称)并且提供了详细的接口让主题的作者设置和调用日志的缩略图。 WordPress 日志缩略图功能 开启 WordPress 日志缩略图功能 要使用日志缩略图功能,首先需要通过函数 add_theme_support() 来开启,具体是在当前 WordPress 主题的 functions.php 文件中添加以下代码: add_theme_support( 'post-thumbnails' ); 上面的代码会在 WordPress 后台编辑日志的界面开启设置日志缩略图的窗体,并且同时给日志和页面开启缩略图功能,如果想单独开启的话,使用以下代码: add_theme_support( 'post-thumbnails', array( 'post' ) ); // 给日志启用日志缩略图 add_theme_support( 'post-thumbnails', array( 'page' ) ); // 给页面启用日志缩略图 设置日志缩略图大小 开启了 WordPress 日志缩略图功能之后,我们可以通过函数 set_post_thumbnail_size() 来设置缩略图的大小,这里有两种方式:box-resize(盒大小模式)和 hard-crop(裁剪模式)。 盒大小模式按照比例缩小图片直到适合指定的盒子,所以不会扭曲图片。盒大小模式可以指定长度和宽度,比如一张 […]

Android开发之设置断点单步调试 Android开发技术

  Android平台的开发过程中,可能我需要使用到Java常规的设置断点,单步跟踪每个变量,相对于Android ADT独有的Logcat、TraceView以及DDMS中的其他一些工具而言,设置断点检查每个变量的运行输出更适合一些大型项目的排错,或状态检测,作为Java开发中不可缺少的调试方法,在Android项目中可以通过Eclipse IDE的在某行前面单击鼠标右键,选择Toggle Breakpoint来下断点,而Disable Breakpoint或Remove Breakpoint来禁用或移除断点,具体操作如图所示:    在下断点的运行,Android123提示大家,必须通过Debug方式才行,标准的Run是针对最终的release版本而设计的,要想单步跟踪,这里Android开发网给出两种方法,第一种可以在Eclipse中单击Debug这个小虫子按钮,选择你要调试的应用。   而第二种,在你的Package Explorer中对着工程名右击鼠标,在弹出的菜单中选择Debug As,Android Application,这样既可,如下图所示:

Android Zip文件解压缩代码 Android开发技术

   在Android平台中如何实现Zip文件的解压缩功能呢? 因为Android内部已经集成了zlib库,对于英文和非密码的Zip文件解压缩还是比较简单的,下面Android123给大家一个解压缩zip的java代码,可以在Android上任何版本中使用,Unzip这个静态方法比较简单,参数一为源zip文件的完整路径,参数二为解压缩后存放的文件夹。 private static void Unzip(String zipFile, String targetDir) {   int BUFFER = 4096; //这里缓冲区我们使用4KB,   String strEntry; //保存每个zip的条目名称    try {    BufferedOutputStream dest = null; //缓冲输出流    FileInputStream fis = new FileInputStream(zipFile);    ZipInputStream zis = new ZipInputStream(new BufferedInputStream(fis));    ZipEntry entry; //每个zip条目的实例     while ((entry = zis.getNextEntry()) != null) {      try {       Log.i("Unzip: ","="+ entry);      […]

Android线程优先级设置方法 Android开发技术

  对于Android平台上的线程优先级设置来说可以处理很多并发线程的阻塞问题,比如很多无关紧要的线程会占用大量的CPU时间,虽然通过了MultiThread来解决慢速I/O但是合理分配优先级对于并发编程来说十分重要。Android在线程方面主要使用的是Java本身的Thread类,我们可以在Thread或Runnable接口中的run方法首句加入    Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND); //设置线程优先级为后台,这样当多个线程并发后很多无关紧要的线程分配的CPU时间将会减少,有利于主线程的处理,相关的Thread优先级Android123就Android平台专有的定义罗列有以下几种: int THREAD_PRIORITY_AUDIO //标准音乐播放使用的线程优先级 int THREAD_PRIORITY_BACKGROUND //标准后台程序 int THREAD_PRIORITY_DEFAULT // 默认应用的优先级 int THREAD_PRIORITY_DISPLAY //标准显示系统优先级,主要是改善UI的刷新 int THREAD_PRIORITY_FOREGROUND //标准前台线程优先级 int THREAD_PRIORITY_LESS_FAVORABLE //低于favorable int THREAD_PRIORITY_LOWEST //有效的线程最低的优先级 int THREAD_PRIORITY_MORE_FAVORABLE //高于favorable int THREAD_PRIORITY_URGENT_AUDIO //标准较重要音频播放优先级 int THREAD_PRIORITY_URGENT_DISPLAY //标准较重要显示优先级,对于输入事件同样适用。

ADT插件的10.0.1必须要Eclipse 3.5才能升级 Android开发技术

   目前Android开发工具ADT插件最新版本已经升到了10.0.1,但是如果你使用的Eclipse版本过低,可能无法升级,比如说使用的Eclipse版本过低无法运行在Windows Vista/7操作系统上,同时升级插件会提示 Android Development Tools (10.0.1.v201103111512-110841) requires plug-in "org.eclipse.core.runtime (3.5.0)", or later version.这样的错误。

android.resource://这个Uri你知道吗 Android开发技术

   如何访问平时APK文件Res目录下的内容呢? 如果直接访问Apk下的assets目录可以使用AssetManager类处理,而需要访问res/raw这样的文件夹怎么办呢? 这里Android123可以告诉大家APK在安装时已经解压缩,部分资源存放在/data/data/package_name/这里, 比如我们想访问res/raw/android123.cwj文件,可以使用android.resource://package_name/" + R.raw.android123 这个Uri,其中package_name是你工程的包名。   完整的处理代码为 Uri uri = Uri.parse("android.resource://com.android123.Sample/raw/android123.cwj"); 即可使用工程res/raw目录下的文件了。   

WordPress 角色和权限终极指南

WordPress 在 2.0 版本中引入了角色和权限(Roles and Capabilities)系统,以前的用户等级的方法(User Levels)已经被弃用。但是还是有很多插件和主题仍然使用用户级别的方法来控制用户查看设置页面和其他功能。所以这篇指南将详细介绍 WordPress 的角色和权限系统,最终将让你在你的插件和主题中能够正确使用。 什么是角色和权限? 和其他 CMS 或者 Web 程序一样,WordPress 也有一个内置的系统来验证一个特定的用户是否有足够的权限来进行某种动作。WordPress 这个内置的系统就是角色和权限系统,它首先将用户分为角色(Role),然后给每个角色都分配一定的权限。 下面是 WordPress 默认的用户角色: 管理员 -拥有所有的管理权限 编辑 -发表文章,编辑文章,以及编辑其他人的文章,等等。 作者-发布和编辑自己的文章 投稿者 -撰写和编辑自己的文章,但不能发布 订阅者 -查看评论/添加评论/查看文章,等等。 WordPress 的角色和权限系统比用户等级的方法灵活得多,它支持对现有用户角色添加,删除和重新分配权限,甚至还可以添加更多的用户角色,并且不破坏系统原有内置的用户角色。 用户权限和后台菜单 很多插件都都会在 WordPress 后台添加一个管理页面,让用户自定义插件选项,一般我们可以通过下面的函数实现: // 添加主菜单 add_menu_page(page_title, menu_title, capability, handle, [function], [icon_url]); // 添加子菜单 add_submenu_page(parent, page_title, menu_title, capability, file/handle, [function]); //添加选项菜单子菜单 add_options_page(page_title, menu_title, capability, handle, [function]); //添加工具菜单子菜单 add_management_page(page_title, […]

WordPress 技巧:禁用 WP Cron

我们知道 WordPress 有个进程专门用来在指定的时间周期或者将来的某个时间点运行特定的任务,比如定时发布某篇日志。这个功能 WordPress 是通过 WP-Cron 实现的,它会在每次你的博客有人访问或者在后台工作的时候,都会去检查当前是否有任务要执行。这样可能会引起一些问题: 增加服务器加载时间,特别是网站访问用户特别多的时候。 而网站的访问用户很少或者加载了静态缓存插件,指定的任务可能又不运行。 所以最好不要让 WordPress 在后台执行 WP-Cron,而是使用服务器的真正的定时 Cron 功能来执行。 可以通过在 wp-config.php 添加下面的代码禁用 WP-Cron: /* Disable background wp-cron */ define('DISABLE_WP_CRON', true); 然后在服务器上创建真正 Cron 作业,如果你使用 Bluehost 这类使用 Cpanel 管理的主机,可以直接在 Cpanel 面板 > 高级选项 > Cron Jobs 中添加: 根据你自己博客定义作业的情况,定义执行的时间周期,比如一天2次等。然后输入下面的命令: /usr/bin/php -f /home/username/public_html/wp-cron.php >/dev/null 你需要根据自己主机的实际情况更改下上面的命令中 wp-cron.php 文件的路径。 或者直接使用服务器访问 wp-cron.php: wget http://YourDomain.com/wp-cron.php 标签:WordPress 技巧 […]

简洁蓝色 Metro 风格的 WordPress 主题:Qetro

如果你喜欢简洁,喜欢蓝色,喜欢文字居多的博客风格。那么,你可以看一下这个 Qetro 这个主题。Qetro 是潜行者M的一个原创作品,以简洁为主线,搭配一些简单的色彩,主要用来展示文字。支持自定义顶部导航菜单、以及三个小工具(边栏、底部一区、底部二区),可以实现大部分用户的普通需求,直接在后台操作即可,无需复杂的科学知识。 当然,如果你是一个 WordPress 主题折腾爱好者,Qetro 的结构和代码也比较简洁简单,可以方便的进行修改,也可以让非常菜的新手朋友研究学习制作主题。 Qetro 结构较为合理,对页面进行了轻微的优化,打开速度尚可。对浏览器的兼容性较好,兼容主流现代浏览器,对于IE来说,除了 IE6 没有实际测试之外,在 IE7、8 中的测试均达到预期效果。在 W3C html校验 中,仅有一处百度分享代码不规范。在 W3C CSS3 校验 中,仅有4处 CSS hack 没有通过。 因为 多说 这样的社会化评论插件功能过于强大,再加上编写评论模块比较复杂,所以现在的1.4版只带有比较简单的原生评论模块,推荐安装多说插件。此外一些短代码之类的高级功能暂时还没有。这些将会在后续版本中升级增加。 主题演示 | 主题官方介绍 | 下载主题 标签:WordPress 主题

WordPress 技巧:清理选项设置,加速博客运行效率

当我们开始使用 WordPress,肯定会试着去装一些插件,然后觉得一些插件没用或者不适合自己了,就卸载了。但是由于一些 WordPress 插件写的不规范或者考虑的不全面,会在系统中留下一些使用的痕迹,所以 WordPress 会越用会越慢。 其中相当一部分痕迹是插件将选项写到了 WordPress Options 表中,卸载的时候并没有删除这些选项,而 WordPress 在运行的时候,会把所有的 autoload 为 yes 的选项都导入,所以这样就会造成了 WordPress 效率降低。 查看 WordPress 博客中所有选项设置 在 WordPress 中,我们是可以快速查看到所有博客选项设置,包括已经卸载了的插件留下的。通过这个 url 就可以查看到所有选项设置:http://你博客安装 URL/wp-admin/options.php,并且还能修改设置,不过有些数据是以序列化形式保存的(比如一些复杂的设置以一个数组存到选项中),这些选项就无法修改。但是这个页面并没有提供让我们删除没用的选项的链接,通过这个页面获取无用的选项之后,我们可以直接使用 PHPMyAdmin 到数据库中去删除它们。 使用插件清理 WordPress 中没用的选项设置 如果你觉得手工在 PHPMyAdmin 删除这些选项风险太大,毕竟有很多选项是 WordPress 自带,有时还是比较难以判断的,那么我们可以通过插件来进行清理: Clean Options Clean Options 可以查找 wp_options 表中废弃的选项,它通过 get_option 和 get_settings 这两个函数来检查那些选项是博客中真正用到的,这样保证了我们不会删除那些当前博客运行真正需要的选贤。并且这个插件还提供了链接让你去 Google 上搜索下选项。 WP-Options-Manager WP-Options-Manager 这个插件可以让你浏览,删除和 debug 博客的选项,并且它会自动被隐藏 […]

WordPress 插件:Last Post Redirect(最新日志跳转)

Last Post Redirect 是一个 WordPress 插件,主要功能是在你的博客上快速定位到你博客的第 N 篇文章。比如要定位到第一篇文章,可以在浏览器的地址栏输入这样的的地址: http://yourblog/?lastpost 或者 http://yourblog/?lastpost=1。如果要快速定位到第10篇文章,则输入:http://yourblog/?lastpost=10。 根据上面的描述,所以这个插件最大的用途可能是,可以通过 http://yourblog/?lastpost 这个链接将博客的最新的日志贴到 QQ 的签名档,或者邮件的个人签名中,让你的朋友点击你最新的日志。 这个插件主要代码参考 Matt 的 Random Redirect,整个插件使用非常简单,只需上传激活即可,然后就可以实现跳转。 下载 Last Post Redirect:last-post-redirect.zip 标签:WordPress 插件

Android 3.0开发用的平板推荐 Android开发技术

  随着Android 3.0的平板不断曝光,很多公司开始介入Android平板电脑的开发。这里Android123就市面上主流的平板做一个简单的分析。   一线品牌: 摩托罗拉Xoom、三星Galaxy Tab 8.9和Galaxy Tab 10.1 、LG Optimus Pad(LG G-Slate)、HTC未知型号的产品。   二线品牌: 宏碁Iconia Tab、华硕Eee Pad Transformer等。   由于Motorola Xoom是CDMA EVDO网络的设备,同时有传闻将在6月份推出Xoom第二代产品,如果喜欢Xoom的网友可以考虑购买一个WiFi版本。而三星Galaxy Tab 8.9和10.1这里Android开发网推荐购买。在二线品牌中我们选择了老牌的笔记本和上网本制造商 Acer和Asus可以保证品质,同时华硕的Eee Pad Transformer支持外接笔记本键盘,可以变身一个“笔电”   而对于部分市场上的Android 2.x平板作为开发完全不推荐大家够买   三星Galaxy Tab P1000   同时目前是Android 2.x可能升级3.0的产品有   联想LePad、HTC Flyer。   最终购买的结论是Android平板考虑到固件升级及时,以及质量保证建议购买上述一线品牌产品,同时CPU尽量是NVIDIA Tegra2 A9双核,RAM在1GB,屏幕在1280×800,预装Android 3.0或3.0.1系统的平板设备。

Android Theme主题样式开发注意点 Android开发技术

  Android默认情况下提供了一些实用的主题样式,比如说Theme.Dialog可以让你的Activity变成一个窗口风格,而Theme.Light则让你的整个Activity具有白色的背景,而不是黑色那么沉闷。具体使用方法很简单在Androidmanifest.xml文件中对你的Activity节点上加入些代码,如图所示   部分代码为 android:theme="@android:style/Theme.Dialog"  和  android:theme="@android:style/Theme.Dialog"  ,这里Android123提醒大家,有关@后面是android:的定义均在Android内部的Framework层由系统自带。

Android开发之Java基础系列教程目录 Android开发技术

   对于越来越多的开发者加入Android开发行列,Android123决定推出Java基础系列教程,让大家打牢Java基础,主要我们以Java的虚拟机原理、Java集合类以及Java设计模式这三方面,让C/Objective-C/C++/Symbian C++以及Visual C++开发者轻松掌握Java语言特性和易错点。   一、Java虚拟机原理、内存分配   二、Java集合类和数据结构类   三、Java设计模式和面向对象   如果你过去从没有系统的学习过Java,Android开发网强烈建议关注我们今后的系列教程,最重要的是完全免费,好学易懂。

Android开发之Java虚拟机原理和内存分配 Android开发技术

   开发出高效稳定的Android应用我们不得不需要了解下Java虚拟机的原理和内存分配机制,Android使用的是Google经过优化的Dalvik Java VM。通常情况下Java编译过的代码是一些class文件,通过Java VM的类解析器分析、效验后执行。Java语言和C/C++有着本质区别的就是内存管理上,Java VM有一个垃圾收集清理器GC可以自动的回收内存。   Java虚拟机在执行代码的时候,首先解析Class,查找该类的方法、常量,这些对于常规情况下都编译成二进制的代码保存在jar文件中,而对于Java的反射,VM的类加载器需要动态的查找这些类名,虽然节省了编译时间,但是运行时的查找大大降低运行效率。   对于Android应用来说,手机的RAM相对于PC还小了很多,同时电脑上的主流应用使用的是Visual C++编写,所以对于手机上已经不占优势的硬件来讲使用Java这样的内存大户语言必须严格的了解内存释放有助于提高程序的性能。对于Android的内存释放情况,大家可以在DDMS中的Logcat中看到类似  08:10:18.895: DEBUG/dalvikvm(1281): GC freed 38611 objects / 2097960 bytes in 182ms 这样的语句。可以大概了解你的应用的对象回收情况,如图     Android应用通常情况的运行的RAM占用在20MB左右,对于程序美工我们尽量用代码绘制方式实现,而不是贴图。下面我们一起看下有关内存的使用跟踪: 首先我们在Eclipse的DDMS中找到Devices设备管理,选择需要查看的进程,单击上方的Update head那个绿色的按钮,然后切换到Heap页面,单击Cause GC按钮即可,如图   如果你在左边找不到你应用的进程,可以先在手机上运行你的软件之后即可,同时上面的Update Heap按钮不要忘记,上图中标记为红色的一个都不能少。

Android开发之Java集合类性能分析 Android开发技术

   对于Android开发者来说深入了解Java的集合类很有必要主要是从Collection和Map接口衍生出来的,目前主要提供了List、Set和Map这三大类的集合,今天Android123就他们的子类在标准情况和多线程下的性能做简单的分析。   Collection接口主要有两种子类分别为List和Set,区别主要是List保存的对象可以重复,而Set不可以重复,而Map一般为key-value这样的对应关系,比如我们常用的HashMap。   一、List 主要有ArrayList、LinkedList、Vector和Stack   有关这些子类的性能,Android开发网从插入、删除、移动等方面按照元素的执行效率做一一分析,通过分析Sun 的Java源码和实际元素操作得出下面结论:   ArrayList – 他的构造主要从AbstractList实现,主要是判断下初始元素的容量,ArrayList最大的特点就是提供了Add、Get操作,当然可以通过迭代器来遍历,对于元素的存在可以通过contains方法判断。   LinkedList – 作为一种双向链表结构,对于元素的插入、删除效率比较高,只需要调整节点指向即可,但是对于随机查找而言性能主要看这个链表长度和运气了。LinkedList也提供了ArrayList的get方法,但是要复杂的多,主要通过next或previous方法遍历得到。   Vector – 比较简单和ArrayList差不多,主要是内部实现了synchronized关键字,实现了线程安全访问但性能有些降低,同时对于元素的扩充在算法上和ArrayList稍有不同,通过构造的容量增量系数来决定。   Stack – 作为栈的操作,本次继承于Vector,提供了push,pop和peek方法,peek是不弹出根据数据大小获取最后一个元素对象。   二、Set 主要有HashSet 和 TreeSet   HashSet – 该类是从Set接口继承而来,相对于List而言就是说内部添加的元素不能重复,当然从名字的Hash来看就是通过哈希算法来实现防止冲突来获得防止重复的,整体上从HashMap实现,存放元素方法的也是类似key- value的对应的,通过迭代器遍历,不过HashSet不是线程安全的。   TreeSet – 这个相对于HashSet而言主要是提供了排序支持,TreeSet是从TreeMap类实现,也是非线程安全的。   可以看到Set的两个类都和Map有关,下面就一起看下有关映射(Map)相关的使用。   三、Map 主要有 HashMap 和 TreeMap   HashMap – 提供了比较强大的功能实现,比如说loadFactor可以控制元素增长时内存分配,HashMap也是非线程安全的。   TreeMap – 相对于HashMap它的排序可以通过传入包含comparator的属性来控制。 […]

Android开发之Java并发包集合类性能分析 Android开发技术

  上一次我们主要分析了Java集合类在单线程和多线程下的性能 Android开发之Java集合类性能分析,今天Android123就并发包concurrent库中的集合类性能做简单的评估分析。   并发包java.util.concurrent库是JDK 1.5中加入的,Android可以很好的支持,在线程的控制和同步管理方面比Thread有更好的表现,就其中的ConcurrentHashMap、CopyOnWriteArrayList、CopyOnWriteArraySet以及ArrayBlockingQueue和前面的HashMap、ListArray、Set以及Queue最简单的性能对比在多线程下。   一、ConcurrentHashMap是线程安全版的HashMap,它的构造同样有initialCapacity和loadFactor系数属性,但是还多了一个concurrentcyLevel,默认空构造方法下,这三个值为16、0.75和16。在ConcurrentHashMap内部并不是通过synchronized实现同步的,如果传入的对象value为null将会抛出空指针异常,而防止冲突仍然使用java Object类的hashcode方法实现的。   1) 单线程下,100个元素   ConcurrentHashMap 的添加效率远差于 HashMap,不过整体一般的应用几乎感觉不到。   2) 多线程下,100个元素   在10个线程下它们两个的性能差不多,不过这时候ConcurrentHashMap性能已经超越了HashMap无论元素多少,而随着线程数的增加效率提升明显,不过对于Android手机这样的应用,应用超过10个线程可能不是很多,不过对于Java VM而言,并发包在多线程下性能优势明显,强烈推荐。   二、CopyOnWriteArrayList是一个线程安全版的ArrayList,但在读取元素时CopyOnWriteArrayList是无锁的,通过这点可以看出它的内部并不是简单实用synchronized关键字实现加锁的,对于并发包来说内部使用了ReentrantLock实现线程安全访问的。对于元素增加来说CopyOnWriteArrayList的新内存分配是通过创建一个比原始大1的缓冲区,将老的数据复制到新的缓冲区,新增的元素加到数组尾部实现元素添加的。删除时也是通过ReentrantLock实现的,比ArrayList的删除操作复杂一些,首先创建一个比当前数组元素少1的缓冲区,然后复制现有的数组到缓冲区,但复制的过程中比现有的数组少1,和添加元素正好相反。Android开发网提示大家CopyOnWriteArrayList使用的添加和删除并不是类似ArrayList那样简单的System.arrayCopy,所以性能上肯定和ArrayList有些出入。   1) 单线程下,100个元素   CopyOnWriteArrayList在元素添加、删除时比ArrayList慢了近一倍,但查找性能没有多大变化,但是随着元素的增加,在单线程下CopyOnWriteArrayList效率大不如ArrayList,在元素数量达到100以后时。  2) 多线程下,100个元素   这里Android123主要测试手机上可能发生的10个线程,这样环境下CopyOnWriteArrayList的添加和删除效率也是远不如ArrayList,但查找效率已经快于ArrayList,当元素增加到10000个时,他们的添加和删除效率相当,但CopyOnWriteArrayList的查找效率远大于ArrayList。   三、CopyOnWriteArraySet 是基于CopyOnWriteArrayList的,由于Set机制不允许重复,所以CopyOnWriteArraySet的add方法在处理元素添加时,调用CopyOnWriteArrayList内部的addIfAbsent方法,如果存在了则返回,不过仍然效率不是很理想。在添加时由于做了额外的操作,所以再添加时比CopyOnWriteArrayList慢,其他和CopyOnWriteArrayList相同。   四、ArrayBlockingQueue 从名字来看就知道是一个队列,不过属于FIFO的线程安全队列,结构类似栈。

Android开发之Java设计模式 Android开发技术

  对于很多C/C++程序员初入Android开发来说,如果你没有认证学习过Java的设计模式,不理解托管语言的OOP设计方法,可能你的应用变得很结构化,对于项目管理、架构扩展来说将会存在很多问题,Android123参看了目前国内很多应用发现很多代码完全就不是一个Java程序员写出来的,虽然能用但是这样设计对于日后的维护等方面将会有很严重的问题.   目前注明的主要有23种设计模式,就常规的Java设计模式Android开发网给大家应该掌握的主要有以下:   一、创建型模式   1. 工厂方法模式   2. 单例模式   3. 生成器模式  二、行为型模式   1. 迭代器模式   2. 责任链模式   3. 观察者模式   4. 模板方法模式  三、结构型模式   1. 代理模式    2. 外观模式   由于设计模式讲解较费时,具体的Android123分多个章节具体描述,同时希望初入Java开发的网友先深刻了解下Java的抽象类、接口和继承相关的问题,以便理解今后相关的内容。

Android开发之Java设计模式入门篇 Android开发技术

   有关Android开发相关的Java基础系列之设计模式入门篇,Android123帮助一些初入Java语言开发的程序员补充些常识性问题,可以帮助C/C++程序员少走些弯路。   1. 抽象类 – 在一个类的前面有abstract关键字,一般描述些公共属性,没有具体对象概念,比如    abstract class Android123 {     }    2. 最终类 – 在一个类前面有final关键词,这样的类无法再被派生,没有子类,需要注意的是abstract和final不能同时出现在一个类中。final修饰的类为:    final class Android123 {     }    3. 接口 – 接口关键字interface,特点就是不能用new去实例化,同时C++和Java语言有本质不同,C++支持多重继承,可以继承多个父类,而Java只能集成一种类型的父类,定义方法如下:    public interface Android123() {    }    4. 抽象类和接口的区别    Java接口和Java抽象类表示的都比较抽象,接口只能是抽象和公开的,不能有构造器,也就是上面提到的不能被实例化,比如 public abstract class Android123() {        public void CWJ() {          //dosomething    这里可以写具体的实现方法        } […]

100% Secure Checkout

PayPal / MasterCard / Visa