最近对Web App开发开始深入,老总做了个类似于Phonegap的中间件,整体上web app有了个初始的框架雏形,现在又有需求自动生成apk,将开发人员从打包工作中解脱出来(你可以想象同一个软件,只改一个去往网页的地址和apk包名,要打上百个包有多累),所以就学习Rexsee这个开源项目的一点形式,通过网站提交html页面,修改一些基本数据,自动生成apk,达到批量化的目的。所以先开始学习ant….

一,准备ant, 搭ant环境,这个没得所,谷大师会告诉你…

二,配置Android SDK环境,将tools 和platform-tools 都配置到环境变量Path中…

  三,创建一个android项目 
参数说明:
-k /--package 为命名空间(包名)-a /--name 工程名
-p /--path 项目              -t 为目标平台的版本编号(由下面步骤1列出的)

1)、列出你SDK中已有的平台版本,执行命令“ android.bat list targets”

2)、create一个Android工程,执行命令“android create project -k com.vatata.atest.ant  -a AntAndroidTest1  -p c:\test\AntAndroidTest1 -t 2”

这样工程创建完后,ant的build.xml 就自动生成了…

3) 执行“ant debug” ,这样就会编译生成apk…

四)Apk 安装

通过第三部生成的apk会出现在c:\test\AntAndroidTest1中的bin目录下,现在就可以安装了

1)--> adb device

2) -->

adb –s SH17JV805161 install c:\test\AntAndroidTest1\ bin\AntAndroidTest3-debug.apk

就行了

 

然后apk就安装到手机上,可以测试了…

 

 

那么再回到我之前的问题,一个apk 只要修改一个链接和包名,那么我们可以通过写文件的形式,修改某个字段和Manifest中的packagename,那么重新执行ant debug,这个apk又重新生成了,就是个全新的apk了,很爽吧…

转自:http://blog.csdn.net/mapboo/article/details/49536297

CSDN博主Mapboo原创,感谢博主!

==============================

前言:

纵观国内的广告平台,比如多盟,万普,百度,腾讯,或者别的一些广告平台,真是应接不暇,但是具体接入那就自己判断了,经过一番折腾,最终还是选择了谷歌平台,理应是稳定,可靠,安全,收入颇高,但是登录网络有点问题,应该大家都懂吧,这里就不再赘述了,各自想办法吧;

准备工作:

1,首先你是Android开发者,或者至少会点Java编程基础;

2,熟悉使用Android Studio(以下简称:AS),即官方Android应用开发工具;

3,注册了http://www.google.cn/admob/ 应用,并且有个banner_ad_unit_id吧;

4,待加入横幅广告条的app;

5,可参考官方接入指南:android/quick-start" target="_blank">https://developers.google.com/mobile-ads-sdk/docs/admob/android/quick-start

开发过程:

1,创建或打开AS 工程,本示例是新建工程;

2,打开Android SDK Manager安装Google Repository;

3,关联我们的广告SDK,这里有两种方式:

A  点击Project Structure 直接选取,如下图:

com.google.android.gms:play-services:7.8.0;

B 打开build-gradle 加入一行代码,如下图:

compile 'com.google.android.gms:play-services:6.+'

4,程序会开始自动编译,然后打开AndroidManifest.xml 文件,添加如下代码:

[java] view plain copy

print?

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3.     package="com.mapboo.adviewdemo" >
  4.    <span style="color:#ff0000;"> <uses-permission android:name="android.permission.INTERNET" />
  5.     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/></span>
  6.     <application
  7.         android:allowBackup="true"
  8.         android:icon="@mipmap/ic_launcher"
  9.         android:label="@string/app_name"
  10.         android:theme="@style/AppTheme" >
  11.        <span style="color:#ff0000;"> <meta-data android:name="com.google.android.gms.version"
  12.             android:value="@integer/google_play_services_version" /></span>
  13.         <activity
  14.             android:name=".MainActivity"
  15.             android:label="@string/app_name" >
  16.             <intent-filter>
  17.                 <action android:name="android.intent.action.MAIN" />
  18.                 <category android:name="android.intent.category.LAUNCHER" />
  19.             </intent-filter>
  20.         </activity>
  21.        <span style="color:#ff0000;"> <activity
  22.             android:name="com.google.android.gms.ads.AdActivity"
  23.             android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
  24.             android:theme="@android:style/Theme.Translucent" /></span>
  25.     </application>
  26. </manifest>

 

5,打开activity_main.xml 文件,输入如下代码:

[java] view plain copy

print?

  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2.     xmlns:tools="http://schemas.android.com/tools"
  3.     xmlns:ads="http://schemas.android.com/apk/res-auto"
  4.     android:layout_width="match_parent"
  5.     android:layout_height="match_parent"
  6.     android:paddingBottom="@dimen/activity_vertical_margin"
  7.     android:paddingLeft="@dimen/activity_horizontal_margin"
  8.     android:paddingRight="@dimen/activity_horizontal_margin"
  9.     android:paddingTop="@dimen/activity_vertical_margin"
  10.     tools:context=".MainActivity"
  11.     android:gravity="center_vertical">
  12.     <TextView
  13.         android:layout_width="match_parent"
  14.         android:layout_height="wrap_content"
  15.         android:text="@string/demoName"
  16.         android:gravity="center"
  17.         android:textSize="30dp"
  18.         android:layout_marginTop="150dp"
  19.         />
  20.     <com.google.android.gms.ads.AdView
  21.         android:id="@+id/adView_bottom"
  22.         android:layout_width="match_parent"
  23.         android:layout_height="wrap_content"
  24.         android:layout_alignParentBottom="true"
  25.         android:layout_centerHorizontal="true"
  26.         android:layout_gravity="bottom"
  27.         ads:adSize="BANNER"
  28.         ads:adUnitId="@string/banner_ad_unit_id" />
  29. </RelativeLayout>

 

[java] view plain copy

print?

  1. <resources>
  2.     <string name="app_name">AdViewDemo</string>
  3.     <string name="demoName">谷歌Admob广告条示例</string>
  4.     <string name="banner_ad_unit_id">ca-app-pub-8514769117499822/6386262194</string>
  5. </resources>

 

6,打开MainActivity文件,输入如下代码:

[java] view plain copy

print?

  1. package com.mapboo.adviewdemo;
  2. import android.support.v7.app.ActionBarActivity;
  3. import android.os.Bundle;
  4. import android.util.Log;
  5. import android.view.Menu;
  6. import android.view.MenuItem;
  7. import com.google.android.gms.ads.AdListener;
  8. import com.google.android.gms.ads.AdRequest;
  9. import com.google.android.gms.ads.AdView;
  10. public class MainActivity extends ActionBarActivity {
  11.     @Override
  12.     protected void onCreate(Bundle savedInstanceState) {
  13.         super.onCreate(savedInstanceState);
  14.         setContentView(R.layout.activity_main);
  15.         /**
  16.          * 创建广告条对象
  17.          */
  18.         AdView mAdView = (AdView) findViewById(R.id.adView_bottom);
  19.         AdRequest adRequest = new AdRequest.Builder().build();
  20.         /**
  21.          * 创建一个监听,比如判断用户是不是已经点击了广告条,以此来给用户增加积分等操作;
  22.          */
  23.         AdListener listener = new AdListener() {
  24.             @Override
  25.             public void onAdClosed() {
  26.                 super.onAdClosed();
  27.                 Log.i("TAG""onAdClosed");
  28.             }
  29.             @Override
  30.             public void onAdFailedToLoad(int errorCode) {
  31.                 super.onAdFailedToLoad(errorCode);
  32.                 Log.i("TAG""onAdFailedToLoad");
  33.             }
  34.             @Override
  35.             public void onAdLeftApplication() {
  36.                 super.onAdLeftApplication();
  37.                 Log.i("TAG""onAdLeftApplication");
  38.             }
  39.             @Override
  40.             public void onAdLoaded() {
  41.                 super.onAdLoaded();
  42.                 Log.i("TAG""onAdLoaded");
  43.             }
  44.             @Override
  45.             public void onAdOpened() {
  46.                 super.onAdOpened();
  47.                 Log.i("TAG""onAdOpened");
  48.             }
  49.         };
  50.         /**
  51.          * 设置监听
  52.          */
  53.         mAdView.setAdListener(listener);
  54.         /**
  55.          * 开始载入广告条
  56.          */
  57.         mAdView.loadAd(adRequest);
  58.     }
  59.     /**
  60.      *
  61.      官方示例:https://developers.google.com/mobile-ads-sdk/docs/admob/android/quick-start
  62.      
  63.      分享:安卓发布平台 http://blog.csdn.net/mapboo/article/details/49531043
  64.      应用汇:http://www.appchina.com/
  65.      安智市场:http://www.anzhi.com/
  66.      华为市场:http://appstore.huawei.com/
  67.      百度市场:http://app.baidu.com/pass/center
  68.      蒲公英:http://www.pgyer.com
  69.      N多网 :http://www.nduoa.com/developer
  70.      豌豆荚:http://developer.wandoujia.com/
  71.      360:http://dev.360.cn
  72.      QQ:http://op.open.qq.com
  73.      FIR:http://fir.im
  74.      Android中国开发者 交流QQ群:361871827 欢迎加入一起讨论技术...
  75.      */
  76. }

 

编译运行:

运行代码,就会出现Admob广告条,只要替换自己的banner_ad_unit_id就能开始赚钱了;

效果图:

本实例源代码下载地址:http://pan.baidu.com/s/1pJ3UEcr

Android中国开发者 QQ群:361871827 欢迎一起讨论技术..

原文:http://ask.android-studio.org/?/article/21

 

本篇教程中使用到的Android Studio版本为1.0, Eclipse ADT版本23.0.4。请尝试更新到该版本。

Android Studio默认使用 Gradle 构建项目, Eclipse 默认使用Ant构建项目。建议Android Studio导入项目时,使用Gradle 构建项目。

导入 Eclipse 项目

本例中,使用到的 Eclipse 项目结构如图:

android-studio.org/uploads/article/20141216/45f83b51565330ab635948c79a597239.png" target="_blank" rel="lightbox" data-fancybox-group="thumb">android-studio.org/uploads/article/20141216/45f83b51565330ab635948c79a597239.png" alt="" />

e-demo 为主项目, appcompat_v7 为 library 项目。

导入 Generate Gradle build files 项目

Google官方建议是通过本方法进行Android Studio导入 Eclipse 项目。

这种方式有一个好处就是兼容 Eclipse 的文件目录结构,通过版本控制中的文件过滤,可以在一个项目组中,同时使用 Eclipse 和Android Studio。

讲解1

File --> Export

android-studio.org/uploads/article/20141216/5f71fdc0d8a2aa0130f35878f56b42b7.png" target="_blank" rel="lightbox" data-fancybox-group="thumb">android-studio.org/uploads/article/20141216/5f71fdc0d8a2aa0130f35878f56b42b7.png" alt="" />

讲解2

选择导出类型。选择 Android --> Generate Gradle build files 。

android-studio.org/uploads/article/20141216/4a5bd6b43cfda8441245bbdaf3d0bb87.png" target="_blank" rel="lightbox" data-fancybox-group="thumb">android-studio.org/uploads/article/20141216/4a5bd6b43cfda8441245bbdaf3d0bb87.png" alt="" />

点击 Next 。

讲解3

很长一段英语(完全看不懂是什么意思)。

android-studio.org/uploads/article/20141216/6c948e5304c3b4ec8e28e94d952111ce.png" target="_blank" rel="lightbox" data-fancybox-group="thumb">android-studio.org/uploads/article/20141216/6c948e5304c3b4ec8e28e94d952111ce.png" alt="" />

点击 Next 。

讲解4

选择要导出的项目。

android-studio.org/uploads/article/20141216/430eb4e5f8d0fc5d33af14eaea7e0d2a.png" target="_blank" rel="lightbox" data-fancybox-group="thumb">android-studio.org/uploads/article/20141216/430eb4e5f8d0fc5d33af14eaea7e0d2a.png" alt="" />

因为我的 e-demo 项目依赖了 appcompat_v7 项目,所以我将 e-demo 和 appcompat_v7 都选择了导出。

点击 Next 。

讲解5

最终确认要导出的项目。

android-studio.org/uploads/article/20141216/6d60a606a98d7d7420b4114777e72468.png" target="_blank" rel="lightbox" data-fancybox-group="thumb">android-studio.org/uploads/article/20141216/6d60a606a98d7d7420b4114777e72468.png" alt="" />

Force overriding of existing files 表示覆盖导出文件。使用 Generate Gradle build files 的方式导出项目,会在项目目录中生成一些文件。这里的覆盖文件指的就是覆盖这些可能已经生成过的文件。如果你之前有使用这种方式导出过项目,建议勾选。

点击 Finish 。

讲解6

这一步没有什么好说的,直接点击 Finish 。

android-studio.org/uploads/article/20141216/8df260e8772e1612e7ddec6a6a9a2e07.png" target="_blank" rel="lightbox" data-fancybox-group="thumb">android-studio.org/uploads/article/20141216/8df260e8772e1612e7ddec6a6a9a2e07.png" alt="" />

讲解7

来人人都是产品经理【起点学院】,BAT实战派产品总监手把手系统带你学产品、学运营。

去年一直想写的Axure小技巧分享,终于还是动手写了,今天主要给大家分享关于axure高保真原型的一些东东。

本文核心内容点:

- 啥是高保真原型?(附简单说明原型)

- Axure可以画出什么水准的高保真?(给示例,开启装逼模式)

- 高保真原型图技巧:

- 啥时候上高保真?适用场景 and 不适用场景

如何优雅的用Axure装逼?高保真原型心得分享

啥是高保真原型 ?

啥是原型,从事互联网的同学,肯定非常熟悉,特别是产品岗同学。如果不是,那如下简单讲原型和高保真原型的:

原型:即产品草图。从产品流程来看,将想法形成草图原型,原型再有设计师形成效果图,程序猿们根据需求和效果图开发,出来的软件样子就是和效果图差不多。原型在过程中就是产品最终形态的骨架。

低/中/高保真:根据图的粗糙程度划分,以最终效果图为参照。保真程度越高,离最终效果图越接近。

Axure:工具只是实现想法的工具。在众多的原型软件中,最广泛使用的就是Axure了。

Axure可以画出啥水准的高保真?

在这里一图胜过千言,以下分享自己画过低/中/高保真原型截图。

低保真:最轻松和省时间的原型,粗犷的风格让我们只重视结构和流程,原型不在乎太多设计细节。

- 示例1:一个App官网下载页的低保真原型,我们甚至可以成为结果图,突出了这个需要哪一些元素。

如何优雅的用Axure装逼?高保真原型心得分享

- 示例2:wap版本下载页,同样低保真,突出结构和元素。

如何优雅的用Axure装逼?高保真原型心得分享

中保真:这类原型最常见,低保真不容易描述产品最终样子,高保真容易干扰设计师,中保真汇集了各类有点,也是比较常用的。

- 示例3:本示例图为微信酒店订房下的系列页面,中保真对比低保真,更能体现了交互细节和产品流程。

如何优雅的用Axure装逼?高保真原型心得分享

- 示例4:这是一个”邀请好友注册获取奖励“的流程,采用中保真并强调了多个页面的交互流程。

如何优雅的用Axure装逼?高保真原型心得分享

高保真:对比中低保真,高保真可以称之为效果图了,如果加深细节可以直接对着开发咯,换句话说,高保真更强调细节。

- 示例5:在校期间做的校园助手小项目,和同学的第一个5000+用户的项目,简直无以言必的自豪感。由于组内无设计同学,于是要求用Axur直接先画出类似最终效果的高保真,最后再开发。图中除了素材,其他都是使用Axure直接绘制出来。

如何优雅的用Axure装逼?高保真原型心得分享

- 示例6:在校期间某日看到了多年未更新的老版36Kr,根据自己兴趣画了新版效果图,也是可以直接通过Axure绘制出来。

如何优雅的用Axure装逼?高保真原型心得分享 如何优雅的用Axure装逼?高保真原型心得分享

- 示例7:近期众包某App中“我的”页面。

如何优雅的用Axure装逼?高保真原型心得分享

高保真的特殊技巧

高保真原型图技巧:

- 核心内功:目标清晰/理解设计规范

- 画图习惯:像素对齐/用浅色/上素材

核心:

目标清晰:不管采用低中高的原型,核心目标是交互稿就是想法的表达,产品流程的表达。可以采用“目标、堆叠、排序”方式来表达。目标指的是页面目的,流程目的,都是为了实现某些需求。堆叠指的是为了满足目的,一个新闻详情页需要哪些元素?一个登录页需哪些元素?建议先用思维导图或者手绘出基本包含的元素,先把包含的元素列出来,不在乎样式,正如HTML编码里面的”内容/样式/结构“,堆叠考虑的是内容和结构。等列出这个页面的所有元素,那就可以开始排列了,这就涉及涉及规范和画图习惯了。

如何优雅的用Axure装逼?高保真原型心得分享

了解设计规范:了解不同类型产品的设计规范是很有必要的。比如IOS、Android、Web设计规范,或者某个产品常用页面设计方法。没人会把登录按钮放在账户密码框的上面,了解设计规范的目标是调整好页面结构,将页面元素合理的摆放。推荐《UI设计模式》和《Web信息架构》这两本书,总结了移动端和Web端常用的页面设计知识。

如何优雅的用Axure装逼?高保真原型心得分享

习惯:

绘图习惯直接影响到了画出来的效果,如果想轻松画出颜值较高的原型,那么可以遵守以下细节。

控制组件到素级级别:低保真原型比较粗糙是因为不在乎细节,啥事细节,就是一个页面内元素的宽高圆角等。所以画高保真原型时候,最常用习惯就是计算和定义组件的宽高等属性。 比如App基础背景页面我们可以定义为320x480(Iphone4s的对半比例)、360x640(720P屏幕的对半)等其他比例,然后在此基础上,定义状态栏高度20PX像素,xxx栏高度44Px,几乎就是按照设计规范给的来画组件了,自定义组件一般取10px的倍数,如状态栏这类组件尽量复用。

如何优雅的用Axure装逼?高保真原型心得分享

善用对齐功能:对齐在Axure里面非常重要,善用Axure自带对齐功能!

1)不同组件间距尽量对齐相同,或者10px的倍数规律。

2)2个元素间关系善用向左/右对齐,居中对齐,页面内元素间必须存在对齐关系(左右居中)

3) 3个元素以上,善用间距对齐。

如何优雅的用Axure装逼?高保真原型心得分享 如何优雅的用Axure装逼?高保真原型心得分享

浅色为主,慎用深色:在组件颜色选择上,尽量采用浅色,首先是深色显得比较重,建议关键组件采用深色。

如何优雅的用Axure装逼?高保真原型心得分享

图标等采用真实素材:在低保真中,涉及图片图标等素材用占位符,而画高保真时,我们可以替换为真实素材。图标可以去Iconfont下载寻找,图片尽量找真是素材替换。

有兴趣适当配色:在不影响设计师的前提下,可以尝试配色,但是交付设计师的交互稿最好不带颜色。

啥时候上高保真?

并不是任何时候都适用于高保真原型,哪些场景下比较适合使用呢?

**适用场景**:

1. 不干扰设计师的前提下,想要尽量接近产品最终效果。

2. 涉及会议演示。

3. 做好方案对B/C端用户直接展示,越保真效果越好。

**非适用场景**

1. 产品流程还在探索期,此期强调流程而不是细节,建议采用低保真。 2. 周期短,那还是重点表达清流程和适当的细节。

总结,高保真原型:

- 制作周期:较长,耗时间。

- 适用场景:流程清晰的前提下,想要接近或者定义最终效果。

**END**

Axure小心得,望能对亲有所帮助,文笔粗糙请谅解,欢迎交流。

本文为作者@ygg(公众号:yggtalk) 原创发布于人人都是产品经理社区,并经人人都是产品经理编辑,转载请注明作者信息和本文链接。

营销代有手段出,各领风骚数百天。要说现在哪些营销方式最能传播,屡屡刷爆朋友圈的H5页面肯定就是首当其冲的,提到H5页面,就立马想到“围住神经猫”,上线微信朋友圈3天的时间便创造了用户500万,访问量超1亿的神话。

H5如此势头,不得不让营销人对H5页面的未来充满了期待,越来越多的人开始在营销中运用H5页面。其实在移动端各个领域,H5页面的叫法很多,也会称为翻翻看、手机微杂志、广告页、场景应用、海报\画报(动态海报、指尖海报、掌中海报、动画海报、微画报、微海报)等等,经常能见到的就是滑动翻页。

然而大企业大公司的土豪都在利用自己强大资源和技术比拼H5场景页面,一些小企业或普通独立营销者就只能眼巴巴看着吗?NO,实力差点技术差点效果差点,但是我们也能做。下面木木就给大家推荐一些H5场景页面免费制作神器来,排名不分先后!

搜狐快海报

快海报是搜狐快站平台上全新推出的免费H5页面制作工具,操作也极为简便易学,完全没有技术要求。采用拖拽式操作,属性式设置的模式。一拖一拽,简单配置,所见即所得,一分钟即可学会,三分钟便能完成。还有海量模板即将上线,替换内容即可生成。快海报还支持同一组件的多重动画设置,让画面更丰富更炫酷。和其他一样,搜狐快站海报也是适用于包括活动推广、企业宣传、产品展示、会议组织、预约报名、节日祝福等不同的场景。

体验地址:http://www.kuaizhan.com

初页

初页作为手机端制作动态海报的APP,门槛还是比较低的,容易上手,可以直接在手机上编辑,制作极为便利,图文混排的模板也很丰富。可免费下载安卓版和苹果版初页App,或通过电脑在线创建、编辑,轻松创作优雅、炫酷,利于微信传播的H5海报。

体验地址:http://chuye.cloud7.com.cn/

MaKa

MAKA这个平台制作起来非常简单,静态模板和动态模板都有,模板样式丰富,浏览体验不错。有多种动态效果以及交互效果可供选择,除收费版外提供免费版,不过免费版不提供自定义动效、支付、导航、预约等服务,也不能添加外链。

体验地址:http://www.maka.im/home/index.html

点点客海报

点点客是微信第三方开发服务商,大家都知道,不仅推出了微信营销服务,也有排版和免费的点点客海报,无需注册,扫码登录即可编辑动态海报,多种效果、翻页动画、背景音乐、可统计浏览量,也提供定制。

体验地址:http://www.dodoca.com/index

口袋通微杂志

口袋通是一个免费的微商平台,其场景海报也是为了其电商功能服务,不过免费得版提供的交互较为简单,没有多样的模板。

体验地址:http://youzan.com/

秀米秀制作

秀米在公众平台的图文排版上可是名声远扬。和秀米的图文神器一样,秀制作目前也是免费的,提供多种模板,傻瓜式操作,可以外链,可与秀米图文排版双剑合璧。

体验地址:http://xiumi.us/

易传单

编辑器界面比较友好,设计灵活方便,数据统计与表单上也是亮点所在。除了模板较少之外其他的都是相当好。

体验地址:http://www.echuandan.com/

epub360意派

这不是奇虎360的,意派的交互功能极为强大,可以说更适合专业的设计师打造的交互设计,动画效果出色,虽然简单傻瓜式的模板不多,但自由度相对较高。不过如果只是制作简单的单页,上手也并不是很复杂。只是免费版作品数量限制为10个,导出有logo。

体验地址:http://www.epub360.com/

易企秀

易企秀也是免费,有多种动态模板,能实现文本和图片带有滑动、隐现、放大缩小等动态效果。同时有ios移动客户端,在手机上也可创建场景应用,以及数据统计功能。大体上和maka差不多,但是表单和统计是免费也可用。

体验地址:http://eqxiu.com/#/home

Liveapp场景应用/云来

云来Liveapp是面向企业方的移动场景APP云服务平台,许多企业都在使用,需购买场景应用。不过,现在云来场景应用正式免费开放,所有“认证企业”都可以申请获取。免费体验长达31天,体验结束后,也会永久保存并持续展示你的场景应用。

体验地址:http://www.yunlai.cn/

Vxplo

Vxplo也是专注在线交互设计,功能强大,同epub360一样适合专业设计师,可以零代码制作轻应用。使用上相对较为复杂,不过其甚至也可以用来制作响应式网站,有时间可以试试。

体验地址:http://www.vxplo.cn/

最酷网

最酷网也是一个免费H5场景应用制作和发布平台。不用懂设计、不用会编程,1分钟上手制作,平台针对不同的应用场景和内容展现形式,提供海量的模板、丰富的控件、灵活的动画特效。用户可以简单快速的通过图片替换、内容编辑,就可以创建属于自己的、炫酷的云场景应用。

体验地址:http://www.zuiku.com/

FormFollowsFunction

严格来说,FormFollowsFunction不属于H5制作平台,而是一个预览平台。H5页面到底能实现什么样的动画效果?这一个网站几乎能看到所有H5能够实现的动画效果,引爆你的灵感,并且让你心中有数。

体验地址:http://fff.cmiscm.com/#!/main

Weebly

Weebly和Wix也是一款HTML5拖放式智能创建器,支持中文,拥有多种优秀网页模板和交互效果,并且有IOS和Android客户端可以管理自己的网页、随时随地跟踪。

体验地址:http://www.weebly.com/about/index.php?lang=zh

Wix

Wix基于H5技术,向用户提供多种网页模板,操作简单无需代码,智能拖拽即可实现网页建设。Wix每个类目下有上百的HTML5模板可供使用,响应式设计,在手机端也有很好的展示。

体验地址:http://www.wix.com/

Ceilfire

Ceilfire是一个创建H5游戏并分享的平台,点击进入你就会看到很多的H5页面游戏。用户可以直接在浏览器中创建游戏、参与游戏、分享游戏,对于想做简单的H5游戏的朋友可以用这种方式试试手。就算不做也可以看看已有的H5游戏来找找感觉。

体验地址:http://ceilfire.com/browse/most-played

做一些H5特效的动态页面,以前需要专业技术团队和设计师才能制作。现在通过这些简单的平台,你几分钟就能免费创作自己的H5页面。甚至有的你需要做的只是仅仅换上几张图,敲几个字,选自己喜欢的音乐\视频…一个不错的H5页面就出来了。

那么,工具地址都给大家了,接下来就是轮到你动手的时候了,找一个自己喜欢的平台,开始吧!

来源:木木博客

原文链接:http://mt.sohu.com/20150326/n410379051.shtml

本文来自微信公众号“给产品经理讲技术”(pm_teacher),欢迎关注。

做为一名产品经理,你是否遇到过这样的窘境,“帮我把字体调成16号呗,颜色变成#FFFF00FF,老大说这里最好改一下”,作为一名app的开发只能无奈但心里窃喜的告诉你,“只能等下个版本了,必须要重新发布才能改”,如果你问为什么不能改了就生效啊,那说明你对技术的理解要么真的很差,要么你就是知道这项React-Native新技术所爆发出来的力量。

React Native是Facebook推出的一个用JavaScript语言就能同时编写ios,android,以及后台的一项技术,今年9月发布了android版本,又在程序员里面掀起了一波小高潮,不断有喜欢尝鲜的程序员投入到这个领域。

用大白话说,就是从此一名程序员自己就可以创业了,他只用这一门技术,就可以同时写出androidapp,ios app,以及后台应用程序,并且,请注意这里,它可以做到实时热更新(就像网页一样,改了一个字体,随时可上线),app也能做到随时都能更新了,第一段讲的那个需求可以分分钟秒杀解决,不用新发版本,只需在服务器改动一下代码即可,是不是很牛逼,是不是很牛逼,是不是很牛逼,真的很牛逼。

到这里,你只需要理解一句话,就是Facebook提供了一套解决方案,它利用JavaScript作为开发语言,可以同时来编写前端,移动终端,后台应用程序。

我们再来讲讲,为什么React Native受到了如此大的关注,以及它的优越性到底在什么地方。

目前,一个成熟的互联网产品基本囊括了:移动终端和网页两种主要形态。在移动终端app和网页的开发历程中,涉及了很多技术角色:前端开发(俗名叫做网站的),移动终端开发(android和ios开发,现在满大街都是),后台开发(他们的程序大多没有界面,主要是为网页和app提供数据和保障服务的稳定性),每个角色各司其职,分别需要不同的技能,比如前端开发需要精通html,css,javascript这些基本的web语言知识。Android开发用Java(这个词读“扎瓦”,别读成了“加瓦”,读成这样很Low B的)语言编写,ios开发用Objective-c(把他想象成当年过计算机二级的那个C语言就可以了)编写。后台开发,有的公司用Java,有的公司用C++,用啥的都有,能满足性能需要就可以了。

已经看崩溃了吧,对于一个非计算机专业的人,根本不会理解他妈的为什么要存在这么多语言,为什么这里要用C语言,那里要用C++,有的地方要用Python,而又有很大的一个人群对你高呼:“PHP才是世界最好的语言”。其实他们每种语言都有不同的使用场景,有的语言效率高,有的语言语法更简洁漂亮,有的是专为后台而生,有的是特定场景下的唯一选择。如果你还听不懂,我们就用大白话做个比喻,为什么避孕套有的是螺纹的,有的是颗粒的,有的是延时的,有的是超薄的,还有一个品牌号称一只手就可以打开的,它们也都是依据个人身体状态,以及不同场景分别发挥各自的强项。你随便类比,任何一个领域,都有很多不同的工具来满足不同的场景,是需求决定了当前状态。

现在好了,React整套解决方案完成了江湖统一,FaceBook也号称这们技术是“Learn Once,Write AnyWhere”,学习成本只有一次,却完成了所有开发角色的统一。

这意味着:

  1. app将来都是可像网页一样热更新,随时发布。
  2. 对于一名开发人员,将再也没有前端,终端,后台的区分,他所关注的就是做一整套应用程序,人力将得到最大幅度的整合与释放。
  3. 代码复用将会是主旋律,因为是一种语言,大家重复造轮子的成本会越来越节省。

目前,React Native也还是有一些缺点的,比如他的sdk组件包size还比较大,crash还比较多,在ios上支持的内容已经相当不错,android还属于初级阶段,但是目前最新的版本也才是0.16,相信再过一年, 一定会牛逼闪闪。

Attention !! 36 氪正在招募全职创业公司作者,如果你对报道互联网创业感兴趣,充满好奇心,善于发现新事物,又能沉心做行业研究,恰好又对教育、社交、农业、大公司其中一个方向了如指掌,那么你就是我们想要的人 !!快把简历投至:zhaopin@36kr.com

转:http://36kr.com/coop/toutiao/5041233.html

转:http://lusongsong.com/reed/398.html

我觉得HTML5的兴起完全是因为iPhone和iPad,自从Adobe停止开发flash、Android4.0不支持flash后,我觉得在不久的将来HTML5会广泛应用,而且HTML4已经10年没更新了。

HTML5与搜索引擎优化

HTML5与HTML4代码结构对比

HTML5很多功能已经被介绍过了,比如在图片中可以直接写标题(不是alt哦),更精简的代码,直接用HTML5播放音频、视频,HTML5新增了不少内联元素,这为黑帽SEO节约了一笔不菲的时间。不过主流浏览器支持的比较少,卢松松在这里就不介绍了。

随着HTML5的到来传统的<div id="header">和<div id="footer">无处不在的代码方法现在即将变成自己的标签如<Header>和<footer>,下面以一张图来表达更为清楚:

HTML4的div+css写法

(传统的div+css写法)

HTML4的写法

(HTML5的写法)

可以看看出HTML5的代码可读性更高了,也更简洁了,内容的组织相同,但每个元素有一个明确的清晰的定义,不再被迫去猜测之间不同命名的<div>标记,搜索引擎可以更容易地衡量你网页上的内容和相关内容。

值得介绍的一些标签

虽然我们看到了HTML5的简洁和强大之处,但据我所知,很多人制作html页面的时候不会按照语义来书写代码。边栏(aside)会写成sidebar,如果是这样的话,会使网页更加混乱,最终导致搜索引擎不好理解。

noscript标签将会被大量使用,因为HTML5时代将会是一个富媒体时代。传统的文字、图片、链接、视频、音频可能已经满足不了用户的需求,大量的脚本能够编辑出丰富的信息,包括游戏、个性化设计等等。

time标签可能会作为一个来判断网页文字源,也就是能够通过time标签来识别哪篇文章是原创的。而time标签可能将是成为HTML5时代SEO们争论不休的一个标签。

video标签中间区域的文字信息将会让搜索引擎读懂视频,这是一次飞跃。

那么搜索引擎会抓取HTML5吗?

这是一篇来自Google站长论坛John Mu的文章,我觉得比较中肯,拿来给大家分享下:

一般来说,我们(Google)的搜索引擎爬虫是不能够百分百地从语法层面去精确地描述或者分析HTML中的标签的,新兴的HTML5也不例外。如果HTML5组织的网站越来越多,并且在实际当中给我们的爬虫抓取信息带来方便与效益的话,我们会尽力将完善我们的算法去迎合HTML5的标签特性。要记住的是,我没有明确地支持你们大家都用HTML5来构建网站,并且我没有明确提出希望大家的网站由于用HTML5来构建而在搜索当中获得很好的对待。HTML5仍然有许多地方需要不断完善,而如果大网站致力于运用HTML5的话将是令人振奋的事。

对于HTML5,我觉得它仍没有得到广泛的推广与应用,因此我们暂时不会将焦点放到它上面,我们不肯定使用HTML5构建的网站比用旧版本的HTML构建的网站在搜索中是否表现出优势。

Google尚未准备好,百度更不用说了。

最终用户优先(Priority of Constituencies)

“In case of conflict, consider users over authors over implementors over specifiers over theoretical purity.”

一旦遇到冲突,最终用户优先,其次是作者,其次是实现者,其次标准制定者,最后才是理论上的完满。

当HTML5提供了一些令用户兴奋的东西,其次产品得到更好的展现,其次我们可以放心地使用它们,其次元素被更谨慎的方式定义,最后搜索引擎也不再淡定了。

写在最后:

我觉得,因为HTML5现在并没有广泛地运用,而且搜索引擎支持效果也不佳,现在用HTML5来写网站并不会给你的网站带来什么好处,但我不否认将尝试用HTML5来编写卢松松博客模板。而HTML5会让搜索引擎读懂图片、视频、富媒体,一个新的时代即将到来,SEOer将会有大量的工作要去处理。

来源:卢松松博客(微信/QQ:13340454),欢迎分享本文,转载请保留出处!

从2013年4月份开始至今,就有传闻称小米一直在秘密研发的mios系统。果不其然,mios真的来了。近日,有消息称,小米与联芯合作开发的399元超廉价新机将会在今年12月底发布,这将是首部采用mios系统的小米手机。

那这到底是怎么回事呢,为什么小米要研发MIOS系统呢?小米为什么要推出399元的超廉价新机呢?别急,且听ROM基地小编慢慢道来。看完本文,你也许就能找到答案。

一、安卓系统正在逐步走向封闭

在谈到这个问题之前,我们先来说说另一件事。很多人可能不知道的是,谷歌正在收紧最Android的控制权,并开始逐步封闭root权限。如果你的手机是Android 4.4以上系统,你想要获取root的权限可是异常的艰难,这一点相信不用我说很多人也是深有体会的。

细心的朋友可能还会发现,你的手机在开机的时候屏幕下方会出现“Powered by Android”字样,这也是谷歌强制要求的。另外,全球除了包括中国在内的少数几个国家,只要是安卓手机,就必须预装Google Play套件等20个谷歌自家的软件,如果厂商敢不这么做,将被永久取消安卓系统的授权使用权利。为什么中国的手机不需要预装谷歌的软件,因为就算给我们装了我们用不了,其中的原因我不细说,聪明人都懂。

魅族已经想到了解决办法,现在你买到的魅族MX4全部都是YunOS版的,它有效的逃脱了谷歌的控制。值得一提的是,在UI界面还是使用体验上都和基于Android的Flyme一模一样,唯一不同的是开机动画,从“Flyme powered byAndroid”改成了“Flyme powered byYunOS”。虽然只是一个单词的改动,魅族和阿里的工程师都付出了巨大的努力。

面对野心勃勃的谷歌,小米也不能坐吃等死啊。等到安卓系统铺满了整个手机行业,如果哪一天谷歌的安卓要收大额的专利费呢?到时候后悔就晚了。所以小米一直都在秘密的研发新系统,避免将来发展壮大后受到谷歌方面的控制。

二、MIOS的的本质到底是什么呢?

小米为了自家mios系统,还特地收购了mios.cn和mios.com.cn两个域名。那mios系统到底是什么呢?其实他的前身就是FirefoxOS,中文名称为火狐系统,也可以叫火狐OS。通俗点讲,mios是只是基于火狐OS开发对UI进行了大幅度的改造,并进行深度优化,这有点类似于基于Android深度定制的MIUI系统。说的难听点,就是为火狐OS做了一层皮肤,话虽然难听但却是是事实。

全新的mios基于火狐OS深度定制的,但是经过小米的高度优化后,使用起来和目前的MIUI体验相差无几。火狐OS与安卓类似,采用Linux核心,应用于智能手机。火狐OS的所有应用都基于网页技术,运行的app,你可以称它为webapp。

一直以来,很多人有个误区,这个系统是不是要时时刻刻联网才能用呢?胡扯,根本就不是你想的那样。网页不同于网络的,是已经从云端下载下来了的页面。火狐OS的webapp只需要第一次联网后,以后使用就不需要耗费多少流量,也不需要时时刻刻联网。目前的兼容Android系统的YunOS 3.0在主屏往左滑动的那些卡片APP就是类似于webapp的应用,这一点和火狐OS类似。

不服气的朋友,我再举个例子,就算是我们目前使用的安卓应用,在下载了APK软件后,其实内容也是从云端抓取的,包括淘宝/微博/今日头条这样的APP提供的只是一个基本内容和API接口的框架,其实大部分内容都是从云端的服务器推送给你的,包括今日头条在内的这些APP还会智能分析用户的兴趣爱好,精准的推送你喜欢的内容。

三、安卓APP开发已经陷入困境

众所周知,安卓设备由于硬件不同,所以碎片化严重。光是CPU的就有ARM/X86/MIPS等多种架构,屏幕分辨率和设备的尺寸更是种类繁多,所以开发者的适配工作非常麻烦。

有时候为了满足一个软件能同样很多机型,不得不适配很多dpi大小的框架和图片。这也就是为什么ROM基地曾报道过,曾有一位Android开发者狂买600多款不同的Android设备,而且他还抱怨还有很多设备买不到,因为他必须反复测试APP的的兼容性。

为了满足日益增长的手机屏幕大小和超高分辨率的需求,现在安卓的的APP也是越做越大,APP越做越大对手机的硬件需求就越来越大了,仅仅以QQ为例,三年时间,从最早的2M的体积么猛增至20多M的体积。从最早128M内存的手机都能流畅运行QQ,到现在就算是1G内存的手机只要开了QQ后再用其他软件都可能卡成狗。

四、火狐OS的优势体现在哪?

既然现在目前所有APP的内容都是云端推送,那么火狐OS为何不像安卓一样也搞个框架呢?其实这才是火狐OS的优越之处。安卓系统和众多操作系统一样,都是应用先下载再运行,需要考虑到硬件的兼容性问题,而火狐OS完全就不用考虑这个问题。

火狐OS是一个完全基于HTML5的系统,没有所谓的“原生应用”。无论是打电话、发短信、玩游戏,使用的都是HTML 5技术。这倒不是说这些应用都需要时刻联网才能用,而是他们的结构采用了目前国家通用的HTML 5架构,你可以这么理解,这些APP都是一个个已经下载好的网页。

而火狐OS的应用webapp正是一个个网页,你首次联网后,这个app就会像网页一样被下载并缓存到本地,因为目前的HTML 5都是响应式的网页,也就是自适应网页。

火狐OS下载的webapp会根据你手机的屏幕尺寸自适应大小,避免了安卓app想一个apk通吃所以安卓设备面临困境。所以火狐OS与其他系统相比,它的webapp对硬件配置的要求非常低,单核512M内存的手机运行一大堆软件后依然非常流畅。

由于产品定位的关系,火狐OS从来都不和高端市场进行竞争,因为就算是竞争也打不过人家。所以它选择的目标是低价的入门级别手机,第一个国家选择巴西,随后是印度等东南亚国家,一直火狐OS都刻意的避开了手机系统争夺战很激烈的的确,包括美国、中国等国家。

五、为什么小米要做MIOS?

小米公司到目前位置,已经涉及到了包括手机、智能穿戴、智能家居、新能源汽车、包括小米公寓在内的所以能触及到的领域。之所以一开始选择做手机,是因为手机是获取用户群最快最直接的工具。

单单从和国内手机的竞争来看,小米的老对手可以通过自家海思芯片主打高端市场,并获得自主研发的好评。所以小米也不甘示弱,小米与联芯合作推出联芯1860方案的399廉价手机,是为了更低端手机进军,抢占低端市场。目前推广一台火狐OS可以得到4美元的补贴,也就是25块钱人民币,补贴到399元的廉价新机上也是一笔不少的钱。

从国际市场来看,小米试图进入国际市场,专利方面的缺乏绝对是小米的一块心病。硬件方面,小米选择之所以选择和大唐电信旗下的联芯合作是为了解决专利难题,因为大唐电信拥有一大批与电子通讯有关的专利,在小米海外扩张后,可以让小米规避专利风险等问题。

软件方面,小米可以通过和火狐OS合作,推出自家的mios以逃脱和被谷歌控制的厄运。俗话说,要防范于未然,这有点类似于微软在中国推广Office一样,微软当初放任Office盗版后火速占领中国市场,把老牌的WPS打的元气大伤。现在很多朋友看到WPS都会误以为WPS是模仿Office,其实WPS才真的是办公软件的祖师爷,比微软的Office早了十几年。

现在谷歌发布了免费的Android系统就有点类似于当年的微软一样,像是在撒网,等谷歌真动起手来收网的时候,众多手机厂商就像网中的鱼一样要任由宰割了。

目前唯一不能确定的是,尽管mios在界面上和设计交互上可以和miui一样,但小米的mios系统能否像魅族的“Flyme powered byYunOS”一样兼容安卓应用。小米研发团队的工程师可要加油了,加入mios要是也能兼容安卓应用,那绝对会有一大批发烧友买单的。

 

第2层隧道协议 (L2TP),是 VPN 隧道协议的一种,是 PPTP 的后续版本。L2TP 支持两端点间多隧道,但通常要由 IPSec 来提供加密和验证功能,可建立变动的客户端到固定服务器的连接。

一、安装 IPSec

IPSec 用于对 IP 数据包进行加密和验证,通常使用 Openswan 来实现 IPSec。

1.1、安装编译工具

1
apt-get -y install build-essential

1.2、安装 OpenSwan 依赖包

1
apt-get -y install libgmp3-dev flex bison

1.3、编译安装 OpenSwan

1
2
3
4
wget -c http://www.openswan.org/download/openswan-2.6.33.tar.gz
tar -zxf openswan-2.6.33.tar.gz
cd openswan-2.6.33
make programs install

1.4、编辑 IPSec 配置文件

注意将"192.168.1.102"换成服务器公网IP。

1
cp /etc/ipsec.conf /etc/ipsec.conf.old
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
cat >/etc/ipsec.conf<<EOF
version 2.0

config setup
    nat_traversal=yes
    virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12
    oe=off
    protostack=netkey

conn L2TP-PSK-NAT
    rightsubnet=vhost:%priv
    also=L2TP-PSK-noNAT

conn L2TP-PSK-noNAT
    authby=secret
    pfs=no
    auto=add
    keyingtries=3
    rekey=no
    ikelifetime=8h
    keylife=1h
    type=transport
    left=192.168.1.102
    leftprotoport=17/1701
    right=%any
    rightprotoport=17/%any
EOF

1.5、设置 PSK 预共享密钥

注意将"192.168.1.102"换成服务器公网IP。将"123456"换成你自己的PSK。

1
2
3
cat >/etc/ipsec.secrets<<EOF
192.168.1.102 %any: PSK "123456"
EOF

1.6、调整网络策略

for 循环语句,请一行一行地输入,输完后按回车。

1
2
3
4
5
for each in /proc/sys/net/ipv4/conf/*
do
echo 0 > $each/accept_redirects
echo 0 > $each/send_redirects
done

1.7、重启IPSec 服务

1
2
/etc/init.d/ipsec restart
/usr/local/sbin/ipsec verify

可尝试使用 L2TP/IPSec 客户端连接一次,以测试 IPSec 部分配置是否成功。

1
cat /var/log/auth.log | grep pluto

如出现"IPsec SA established transport mode"则成功了。

二、安装 L2TP

使用 xl2tpd 来实现 L2TP,另外要注意的是 xl2tpd 需要从 rp-l2tp 中提取 l2tp-control。

2.1、提取 l2tp-control

1
2
3
4
5
6
7
8
wget http://nchc.dl.sourceforge.net/project/rp-l2tp/rp-l2tp/0.4/rp-l2tp-0.4.tar.gz
tar zxvf rp-l2tp-0.4.tar.gz
cd rp-l2tp-0.4
./configure
make
cp handlers/l2tp-control /usr/local/sbin/
mkdir /var/run/xl2tpd/
ln -s /usr/local/sbin/l2tp-control /var/run/xl2tpd/l2tp-control

2.2、编译安装 xl2tpd

1
apt-get -y install libpcap-dev #安装依赖包
1
2
3
4
5
wget -c http://www.xelerance.com/wp-content/uploads/software/xl2tpd/xl2tpd-1.2.8.tar.gz
tar -zxf xl2tpd-1.2.8.tar.gz
cd xl2tpd-1.2.8
make install
mkdir /etc/xl2tpd

2.3、编辑 xl2tpd 配置文件

ip range 是连接上来的客户端所获得的服务器端内网的 IPv4 地址段。
local ip 是 pppX 所占用的那个 IP 地址。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
cat >/etc/xl2tpd/xl2tpd.conf<<EOF
[global]
ipsec saref = yes

[lns default]
local ip = 10.10.11.1
ip range = 10.10.11.2-10.10.11.245
refuse chap = yes
refuse pap = yes
require authentication = yes
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes
EOF

三、PPP 的安装配置

3.1、安装 ppp 包

1
apt-get -y install ppp

3.2、配置 options.xl2tpd

主要是改MS-DNS,其他默认。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
cat >/etc/ppp/options.xl2tpd<<EOF
require-mschap-v2
ms-dns 8.8.8.8
ms-dns 8.8.4.4
asyncmap 0
auth
crtscts
lock
hide-password
modem
debug
name l2tpd
proxyarp
lcp-echo-interval 30
lcp-echo-failure 4
EOF

四、添加 VPN 用户

chap-secrets 文件为4段,分别是:用户名、服务器名称、密码、分配给客户端的IP。
服务器名可以是l2tpd 或 pptpd,*号代表全部。
密码以明文填写,不需进行加密。
最后的*号代表从remoteip指定的IP段随机分配

1
2
3
cat >>/etc/ppp/chap-secrets<<EOF
user * 123456 *
EOF

五、配置数据包转发

否则连接VPN后,只能访问服务器资源,而不能访问这台服务器以外的资源。

1
2
sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/g' /etc/sysctl.conf
sysctl -p

开启iptables转发

1
iptables -t nat -A POSTROUTING -j MASQUERADE

设置MTU

1
iptables -I FORWARD -p tcp --syn -i ppp+ -j TCPMSS --set-mss 1356

六、启动 xl2tpd 服务

1
2
/usr/local/sbin/xl2tpd
/usr/local/sbin/xl2tpd -D #以调式模式启动

参考资料:

1. http://www.linuxhomenetworking.com/wiki/index.php
2. http://www.linode.com/wiki/index.php/AndroidL2TPPSKServer
3. https://humou.net/blog/201102061326.html
4. http://b.gkp.cc/2010/06/19/setup-ipsec-l2tp-on-centos-55/
5. http://apple4.us/2010/05/setting-up-l2tp-vpn-on-debian-ubuntu.html

原文地址 : http://wangyan.org/blog/debian-l2tp-ipsec-vpn.html
本站遵循 : 知识共享署名-非商业性使用-相同方式共享 3.0 版权协议
版权声明 : 原创文章转载时,请务必以超链接形式标明 文章原始出处