分类: 未分类

  • uniapp自定义入口Activity并进行交互

    第一步:首先新建自己的MainActivity

    package cn.com.sway.app
    
    import android.os.Bundle;
    
    import io.dcloud.WebAppActivity;
    
    public class MainActivity extends WebAppActivity {
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
        }
        public boolean isStreamAppMode() {
            return false;
        }
    
    }

    注意:

    1、务必集成io.dcloud.WebAppActivity这个类

    2、必须要有isStreamAppMode方法,如果没有这个方法,会无法正常加载页面

    第二部:在AndroidManifest.xml里修改入口Activity

        <activity
                android:name="cn.com.sway.app.MainActivity"
                android:configChanges="orientation|keyboardHidden|keyboard|navigation"
                android:label="@string/app_name"
                android:launchMode="singleTask"
                android:hardwareAccelerated="true"
                android:theme="@style/TranslucentTheme"
                android:screenOrientation="user"
                android:windowSoftInputMode="adjustResize" >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>

    其他:在前端与MainActivity进行交互

    前端这么写:

    var main = plus.android.runtimeMainActivity();//获取当前的Activity
    var res = main.getResData();//直接调用自定义Activity中的getResData方法
    console.log(res);

    在MainActivity补充getResData方法:

    public String getResData(){
        return data;
    }

     

  • 使用chrome进行跨域请求调试

    赠送不同版本chrome的下载地址:

    https://www.chromedownloads.net/chrome64win-stable/

    问题背景

    在跨平台开发IDE常遇到调试问题,在浏览器进行异步请求时出现如下提示:

    Access to XMLHttpRequest at 'https://***********' from origin 'http://www.sway.com.cn' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.

    这是因为跨域请求导致的,考虑到安全问题,浏览器默认是不允许进行跨域名访问的。

    333

    有时候我们在web开发时需要进行跨域调试,会出现上图错误提示。

    49版本以前的解决方案

    使用chrome的用户,可以找到chrome.exe的程序创建一个快捷方式,并在上图标识的位置加入如下参数:

     --args --disable-web-security --user-data-dir

    49版本以后的解决方案

     

    111

    使用chrome的用户,可以找到chrome.exe的程序创建一个快捷方式,并在上图标识的位置加入如下参数:

     --args --disable-web-security --user-data-dir=C:\Users\****\MyChromeDevUserData

    注意:****为您的winows账号目录名,另外还需要在该账号目录侠创建MyChromeDevUserData目录以保存相关的chrome信息。

    222启动刚刚配置号的快捷方式,出现如上图标示的提示,即可开启跨域模式。

    91版本以前的解决方案(未验证)

    有的用户还是不能访问,此时在console控制台里会看到一段背景是黄颜色的字

    ...Specify SameSite=None and Secure if the cookie should be sent in cross-site...'

    Chrome中访问地址chrome://flags/ 搜索samesite 将same-site-by-default-cookies,和SameSite by default cookies这两项设置为Disabled后重启浏览器再运行项目即可解决。该设置默认情况下会将未指定SameSite属性的请求看做SameSite=Lax来处理。

    91版本-94版本以前的解决方案(未验证)

    在chrome的快捷方式后面加上以下运行参数:

    --disable-features=SameSiteByDefaultCookies

    或者

    --flag-switches-begin --disable-features=SameSiteByDefaultCookies,CookiesWithoutSameSiteMustBeSecure --flag-switches-end

    94版本以后的解决方案(未验证)

    Chromium项目官网提到在94版本通过命令行禁用设置SameSite默认值的方式会被移除,到时方案1和方案2的方式都将无法使用,后续可通过nginx等代理工具或软件将跨域请求转为非跨域请求来解决改问题。以后如果要在开发环境作业, 老老实实上https也许是最简单的一种办法。

  • 使用Impactor进行unc0ver重签时提示line:81错误的解决方法

    折腾了好久,在网上找倒以下几种解决办法:

    1、使用管理员模式来运行Impactor

    2、使用impactor的revoke certificates清除证书后尝试

    3、关闭appleid的双重验证

    4、使用新的appleid

    以上说的,第二种apple已经不允许关闭了,第三种是不现实的,所以我使用第一种和第二种都死活不成功。

    原来,使用impactor的revoke certificates清除证书后,需要先重启你的iphone,然后再重签,否则死活不成功。

  • windows下根据cer证书ssl文件生成keystore文件

    指令如下:

    keytool.exe -import -alias "***.store" -file "***.c
    er" -keystore ***.store

     

  • 在java开发中,运行环境为windows或linux对路径问题的影响

    /是斜杠 \是反斜杠,
    Windows采用\,如 C:\Windows\(C盘Windows目录下)
    Linux采用/,如/root/(主分区的ROOT目录下)

    一般情况我们使用/,
    因为Java程序会自动识别操作系统的类型。
    也就是说,
    在Linux下,不变,仍然使用/;
    在Windows下,自动变为\进行使用。

  • 百度地图开发定位与显示Demo(Android)

    百度地图给我们提供了非常丰富的API供我们进行二次开发。百度地图的SDK与定位SDK在今年6月份进行了更新。地图更新为3.0,定位更新为4.2。百度说:这次更新对接口有了较大部分的调整,与之前版本不兼容。本篇博文基于以上最新版本的API提供一个小例子:获取自己当前的经纬度坐标,并且显示在地图上。这里只给出核心代码,其他KEY的引入,地图控件的添加,权限的声明,定位服务的声明可在百度地图API官网(http://developer.baidu.com/map/sdkandev-download.htm)进行查看,稍候会附上完整例子的下载链接。

    代码中的注释已经比较详细了,这里就不做说明,参考官网很容易理解。

    package org.zsl.android.map;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.util.Log;
    
    import com.baidu.location.BDLocation;
    import com.baidu.location.BDLocationListener;
    import com.baidu.location.LocationClient;
    import com.baidu.location.LocationClientOption;
    import com.baidu.mapapi.SDKInitializer;
    import com.baidu.mapapi.map.BaiduMap;
    import com.baidu.mapapi.map.BitmapDescriptor;
    import com.baidu.mapapi.map.MapStatusUpdate;
    import com.baidu.mapapi.map.MapStatusUpdateFactory;
    import com.baidu.mapapi.map.MapView;
    import com.baidu.mapapi.map.MyLocationData;
    import com.baidu.mapapi.model.LatLng;
    
    
    public class MainActivity extends Activity {
    	public MapView mapView = null;
    	public BaiduMap baiduMap = null;
    
    	// 定位相关声明
    	public LocationClient locationClient = null;
    	//自定义图标
    	BitmapDescriptor mCurrentMarker = null;
    	boolean isFirstLoc = true;// 是否首次定位
    
    	public BDLocationListener myListener = new BDLocationListener() {
    		@Override
    		public void onReceiveLocation(BDLocation location) {
    			// map view 销毁后不在处理新接收的位置
    			if (location == null || mapView == null)
    				return;
    			
    			MyLocationData locData = new MyLocationData.Builder()
    					.accuracy(location.getRadius())
    					// 此处设置开发者获取到的方向信息,顺时针0-360
    					.direction(100).latitude(location.getLatitude())
    					.longitude(location.getLongitude()).build();
    			baiduMap.setMyLocationData(locData);	//设置定位数据
    			
    			
    			if (isFirstLoc) {
    				isFirstLoc = false;
    				
    				
    				LatLng ll = new LatLng(location.getLatitude(),
    						location.getLongitude());
    				MapStatusUpdate u = MapStatusUpdateFactory.newLatLngZoom(ll, 16);	//设置地图中心点以及缩放级别
    //				MapStatusUpdate u = MapStatusUpdateFactory.newLatLng(ll);
    				baiduMap.animateMapStatus(u);
    			}
    		}
    	};
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		// 在使用SDK各组件之前初始化context信息,传入ApplicationContext
    		// 注意该方法要再setContentView方法之前实现
    		SDKInitializer.initialize(getApplicationContext());
    		setContentView(R.layout.main_activity);
    		
    		mapView = (MapView) this.findViewById(R.id.mapView); // 获取地图控件引用
    		baiduMap = mapView.getMap();
    		//开启定位图层
    		baiduMap.setMyLocationEnabled(true);
    		
    		locationClient = new LocationClient(getApplicationContext()); // 实例化LocationClient类
    		locationClient.registerLocationListener(myListener); // 注册监听函数
    		this.setLocationOption();	//设置定位参数
    		locationClient.start(); // 开始定位
    		// baiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL); // 设置为一般地图
    
    		// baiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE); //设置为卫星地图
    		// baiduMap.setTrafficEnabled(true); //开启交通图
    
    	}
    
    	// 三个状态实现地图生命周期管理
    	@Override
    	protected void onDestroy() {
    		//退出时销毁定位
    		locationClient.stop();
    		baiduMap.setMyLocationEnabled(false);
    		// TODO Auto-generated method stub
    		super.onDestroy();
    		mapView.onDestroy();
    		mapView = null;
    	}
    
    	@Override
    	protected void onResume() {
    		// TODO Auto-generated method stub
    		super.onResume();
    		mapView.onResume();
    	}
    
    	@Override
    	protected void onPause() {
    		// TODO Auto-generated method stub
    		super.onPause();
    		mapView.onPause();
    	}
    
    	/**
    	 * 设置定位参数
    	 */
    	private void setLocationOption() {
    		LocationClientOption option = new LocationClientOption();
    		option.setOpenGps(true); // 打开GPS
    		option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);// 设置定位模式
    		option.setCoorType("bd09ll"); // 返回的定位结果是百度经纬度,默认值gcj02
    		option.setScanSpan(5000); // 设置发起定位请求的间隔时间为5000ms
    		option.setIsNeedAddress(true); // 返回的定位结果包含地址信息
    		option.setNeedDeviceDirect(true); // 返回的定位结果包含手机机头的方向
    		
    		locationClient.setLocOption(option);
    	}
    
    }

     

  • 针对微信屏蔽淘宝,使用chrome模拟iphone或android在微信中访问网页的测试开发代码

    开始–运行中输入以下命令,启动浏览器:

    模拟谷歌Android:

    chrome.exe –user-agent=”Mozilla/5.0 (Linux; U; Android 2.2; en-us; Nexus One Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1″

    模拟谷歌Android在微信中的环境:

    chrome.exe –user-agent=”Mozilla/5.0 (Linux; Android 4.4.4; X98 Air 3G(C9J7) Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/33.0.0.0 Safari/537.36 MicroMessenger/6.0.0.57_r870003.501 NetType/3gnet”

    模拟苹果iPhone:

    chrome.exe –user-agent=”Mozilla/5.0 (iPad; U; CPU OS 3_2_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B500 Safari/531.21.10″

    模拟苹果iPhone在微信中的环境:

    chrome.exe –user-agent=Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_1 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Mobile/11d201 MicroMessenger/5.3″“

    这种方法仅供特殊情况下使用,因为重启Chrome将不能恢复正常User-Agent,所以是一次性.

  • 在CentOS下安装crontab服务

    执行

    crontab -e

    提示:-bash: crontab: command not found
    于是要安装这个crontab
    查了一下资料,才知道它不叫cron,crond,crontab,crontabs,它叫vixie-cron
    # yum install -y vixie-cron  执行安装
    [root@node16 ~]# crontab -l
    no crontab for root
    [root@node16 ~]#
    [root@node16 ~]# chkconfig –list crontab
    在 crontab 服务中读取信息时出错:没有那个文件或目录
    [root@node16 ~]# chkconfig –list cron
    在 cron 服务中读取信息时出错:没有那个文件或目录
    [root@node16 ~]# chkconfig –list crond
    crond           0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭
    [root@node16 ~]# service crond status
    crond 已停
    [root@node16 ~]# service crond start
    启动 crond:                                               [确定]
    [root@node16 ~]# service crond status
    crond (pid  16932) 正在运行…
    [root@node16 ~]#

    在root下输入:crontab -l
    如果提示:
    no crontab for root
    就输入crontab -e 会打开一个空白的文件。
    直接:wq保存退出
    然后一个新的crontab就生成了!

  • 什么人不怕死?那些没有文化、没有知识的人不怕死。

    什么人不怕死? 不怕死的人有很多种,在这里我们讨论一种人,就是那些没有文化、没有知识的不怕死的人,他们往往是一个盗抢犯或者是社会上的流氓、小混混等等。

    论证:

    1、他们没有接受过高等教育,九年的义务教育对他们来说没有价值,再者不好好读书,对他来说知识更加没有任何意义。

    2、他们不像那些大学生那样,单单一个大学就要花费父母上十万的金钱,那是他们可能攥个四五年也攥不到的数字,对大学生来说,那是消耗品,是获取知识的必需品;而那些不怕死的人通常会把钱用在吃喝玩乐上,或者是赌博上。

    3、他们的家庭往往是耕田之类的农民,对于他们来说,多生一个孩子只是等于多一双筷子,生多少有多少,孩子的抚养成本并不高,因为他们潜意识了没有生命价值这回事。

    结论:他们没有意识到生命的可贵,他们不怕死。

    总结:他们不怕死,因为他们不知道一个人长大的成本,所以他们也没有意识到他人的生命十分可贵,因此他们往往在犯罪时轻易剥夺了他人的生命,包括盗抢的时候、或者是生气的时候。因此,提高国家的教育水平很重要,文化教育程度提高了,社会上的犯罪一定会有所下降的。

  • CAS登录成功后,返回信息包含中文时无法正常登录的解决办法.

    345

    在客户端的web.xml中找到如下代码段并且加入高亮部分代码:

    <filter>
    	<filter-name>CAS Validation Filter</filter-name>
    	<filter-class>
    		org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter
    	</filter-class>
    	<init-param>
    		<param-name>casServerUrlPrefix</param-name>
    		<param-value>http://localhost:8080/txyin/cas</param-value>
    	</init-param>
    	<init-param>
    		<param-name>serverName</param-name>
    		<param-value>http://localhost:8080/</param-value>
    	</init-param>
    	<!-- 防获取参数中文乱码[开始] -->  
    	<init-param>  
    		<param-name>encoding</param-name>  
    		<param-value>UTF-8</param-value>  
    	</init-param>
    	<!-- 防获取参数中文乱码[结束] -->  
    </filter>