代码 > phonegap/cordova解决android下viewport无效的问题

2016-02-22

环境:linux debiantesting,cordova 6.0.0,android sdk 23

今天公司有需要,拿cordova封装一个app,结果安卓浏览器一跑一口老血喷出来了,viewport无效。

赶紧一顿搜索,装插件,依旧蛋疼。

只能老实怕代码。

总的来说,问题是需要调用android sdk的WebSettings的setUseWideViewPort和setLoadWithOverviewMode方法。

对代码连蒙带爬,大概整理出了头绪。

大部分相关代码都在platforms\android\CordovaLib\src\org\apache\cordove下。

 

  • 实际代码由src\io\cordova\hellocordova\MainActivity做入口,继承自CordovaActivity
  • 核心代码由CordovaActivity实现。CordovaActivity的appview指向了CordovaActivity。
  • CordovaWebView是接口类,具体的业务逻辑都在CordovaWebViewImpl下。
  • 这个类是虚拟的,调用CordovaWebViewEngine这个借口来实现渲染。
  • 而CordovaWebViewEngine也是一个虚拟类,具体的是由engine下的SystemWebViewEngine来实现的。
  • 而SystemWebViewEngine有个public属性webview,是继承自android系统webview的SystemWebView。
  • 具体的webview可以由CordovaWebView的getview,调用SystemWebViewEngine方法取得。

 

好在我现在写代码也不怕麻烦,爬一串还算轻松……

具体修改肯定是修改src\io\cordova\hellocordova\MainActivity。

代码如下

package io.cordova.hellocordova;

import android.os.Bundle;
import org.apache.cordova.*;


import android.webkit.WebView;

public class MainActivity extends CordovaActivity
{
@Override
public void onCreate(Bundle savedInstanceState)
{

    super.onCreate(savedInstanceState);
    loadUrl(launchUrl);
    // Set by <content src="index.html" /> in config.xml

    view=(WebView) this.appView.getView();
    view.getSettings().setUseWideViewPort(true);
    view.getSettings().setLoadWithOverviewMode(true);
   //Add By jarlyyn.http://blog.jarlyyn.com
}
}

 

然后 cordova run android 一下,真机跑一下,为了让第一页也起效,把给location夹在了setTimeout 0里。收工。

话说我最讨厌的语言依次就是PHP,Javascropt,Java了。

现在居然越来越火,工作中碰到的越来越多,这是说明我没眼光么……

工地 > 把主域名调整为了blog.jarlyyn.com

2016-01-13

具体在nginx里做了301跳转。

接下来就是做www.jarlyyn.com

准备做一个内容聚合页。

初步定为博客,500px,steam最近动态的抓取显示。

 

看了下500px的api,应该问题不大。

网络 > 把jarlyyn.com买回来了

2016-01-13

如题,之前在namecheap的帐号找不回了,只能等过期。

 

另外,但是为啥用jarln.net而非jarlyyn.com做主域名呢…………

 

依稀记得是因为比较短?

 

自己都快hold不住自己了。

娃 > 美人一笑

2015-11-08
美人一笑

一笑勾我心

娃 > 吃个小手

2015-10-18
吃个小手

萌啊萌

杂言碎语 > 反省,不要再和论坛上何人打口水杖了

2015-09-16

我自认是一个有想法,有判断力的人。

愿意在网络上表达自己的观点。

很看不上那些讲不上道理,只会逞口舌之快的人。

觉得没必要在意那些低级的人,让他们厌恶我是意见很好的事。

至于口舌之利,谁又怕了谁。

到现在,这个观点也没改变。

但昨天在无忌被和肆意攻击我的人一起被禁言,让我不禁反思了下自己。

的确,我一直试图在我活跃的论坛做一个有价值的人。

但不代表,我在言语之争时不给别人带来困扰。

也不代表,别人用低级的方式攻击我,我也做相应的回击,就不低级了。

既然自认很多人的确档次不如我,这么耿耿于怀只能自掉身价而已。

以此帖自勉,从此以后在网络上戒嗔。对于有脱离题目吵架的倾向的人,一律做如下回答。

为避免吵架浪费所有阅读者的精力,我不会再回复您在此帖里的其他回复。否则我就是一个自打耳光言而无信的人。

娃 > 太极

2015-09-10
太极

其实吧,金庸的武侠世界里,最喜欢的门派还是武当。

代码 > 解决react input框chrome无法输入中文的问题

2015-08-16

之前使用input框,value设为模型的值,发现无法输入中文。

研究了下。通过非托管的输入框组建,外带初始值设置解决这个问题。

也就是说,

<input onChange={this.change} value={this.state.model.v}>

改为

<input onChange={this.change} defaultValue={this.state.model.v}>

IE下并没有这个问题。感觉是输入法和chrome之间的问题。但是同时在linux下和win下都有这个问题。只能通过别的方式绕开了。 

网络 > 用nginx+cookie防止简单的抓取/破解骚扰

2015-07-02

最近公司的能从外方访问测试服务器很不稳定。查看日志是有大量的访问日志,以及很多调用wp/dedecms/phpmyadmin默认登录的地址的'破解'访问。

决定家一个简单的过滤,最早准备用basic auth,但为了尽量不干扰 普通客户的访问,尝试用cookie解决。没有cookie的话显示一个通过js设定cookie的页面。有cookie的话显示正常页面。

 

首先自然是安装nginx,改端口,反代。

配置文件如下 :

server {
  listen IP地址:80;
  error_page 403 /403.html;
  root /errmsg/;
  location = /403.html
  {
    root /errmsg/;
    allow all;
    internal;
  }
  location / {
    if ( $cookie_antiscanpassword != "password") {
      return 403;
    }
    proxy_pass http://127.0.0.1;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
  location = /antiscanpassword/cookie.js {
    alias /errmsg/antiscanpassword/cookie.js;
  }
  location ~*\.(jpg|png|jpeg|gif|js|css|flv|mp4|pdf)$ {
    proxy_pass http://127.0.0.1;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  } 
  index index.html index.htm;
}

建立/errmsg/403.html.内容如下:

<html>
<head>
<script src='/antiscanpassword/cookie.js'></script>
<script>
var login=function(){
  var date = new Date();
  date.setYear(date.getYear()+1);
  docCookies.setItem('antiscanpassword','password',Infinity,'/');
  if (docCookies.getItem('antiscanpassword')=='password')
  {
    location.reload(true);
  }
}
login();
</script>
</head>
<body>
</body>
</html>

 

建立 /antiscanpassword/cookie.js,内容见 https://developer.mozilla.org/en-US/docs/Web/API/Document/cookie

然后就可以测试了。

nginx里负责判断cookie值,页面负责赋值和刷新。

对各种静态文件不做判断,方便站外应用。

上了一套后感觉测试服务器的内存占用有显著改善。

可以通过curl进行测试。

这个无法防止各种基于浏览器模拟器的爬虫/恶意程序。

但对于普通骚扰还是能提升点难度的。

摄影 > 不得不说,看到SONY的a7r2,有点心动了

2015-06-11

每年多少都会更新点摄影器材。

去年是6D+T24-70+100l,今年收敛了点,滤镜+拍娃的s35。

镜头也就那么回事了,只差可能会拍放光的16-35f4和蛙大点的ISXXB了。

下一步的更新应该轮到机身了。

5ds说实话有点差强人意。

a7r2看上去到不错,虽然是evf,但好歹有机身防抖+4k。

外加谣传新一代的转接环,EF镜头能接近原生头的速度。

看起来可以玩一玩。

当然,等到真机出来,指不定和a7一样就见光死了。

但怎么总觉得,Sony和佳能这么搞下去,死的会是nikon?