2014 11 月14
String str = String.format(“%010d”, 1212);
2014 11 月10
ComboIocLoader loader = new ComboIocLoader(
new String[]{
“org.nutz.ioc.loader.json.JsonLoader”, “ioc/”,
“ org.nutz.ioc.loader.annotation.AnnotationIocLoader”, “cn.xuetang”}
);
ioc = new NutIoc(loader);
dao = ioc.get(Dao.class);
2014 11 月10
SELECT SUBSTRING_INDEX(SUBSTRING(url,LOCATE(“sn=”,url)+3),’&’,1),url FROM wx_kw_url_1111
2014 10 月24
adb shell
su
chmod 777 /data/local/tcpdump
/data/local/tcpdump -p -vv -s 0 -w /sdcard/capture.pcap
2014 10 月23
刚才在工商银行等号办业务,人巨多。突然一男子冲进来大喊:谁的路虎,停的地方挡住路了?众人期待。。。哥淡定的起身,带起黑色墨镜,缓缓的出了门,众人那个羡慕啊。依稀听到后面的声音:草,年轻有为啊;我噻,看不出来啊。。哥出门左拐,打开电动,扬长而去。。
2014 9 月29
select a.*
from wx_nickname a
left join (select distinct nickname_id from wx_group_nickname )b on
a.id = b.nickname_id
where b.nickname_id is null
2014 9 月23
NutzWk
https://github.com/Wizzercn/NutzWk
基于Nutz的开源企业级开发框架。
文件编码全部为UTF-8,可以导入Eclispe、IDEA中,jdk7,tomcat 6/7.
创建空的数据库,首次启动项目会自动初始化数据.
本框架已成功应用于XX省交通厅网络问政平台、XX省交通厅CMS内容管理系统、XX公司舆情监测管理中心等项目。
使用条款:
1、个人开源,可以任意修改使用;
2、商业使用,必须更改后台菜单布局、CSS样式、界面颜色等元素(既:不可使用原始界面用于商业项目)。
2014 9 月15
/cron/
Java 解析Cron表达式,计算执行时间源码:
@At
@Ok("raw")
public String getCron(@Param("exp") String exp,HttpServletResponse response) {
response.setHeader("Content-Type", "text/javascript");//设置跨越访问 $.getScript()
List list = new ArrayList();
try {
exp= URLDecoder.decode(Strings.sNull(exp),"utf-8");
log.info(exp);
CronTriggerImpl cronTriggerImpl = new CronTriggerImpl();
cronTriggerImpl.setCronExpression(exp);
Calendar calendar = Calendar.getInstance();
Date now = calendar.getTime();
calendar.add(Calendar.MONTH, 1);//把统计的区间段
List dates = TriggerUtils.computeFireTimesBetween(cronTriggerImpl, null, now, calendar.getTime());//这个是重点
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
for (int i = 0; i 9) {//这个是提示的日期个数
break;
}
list.add(dateFormat.format(dates.get(i)));
}
} catch (Exception e) {
}
return "var data="+ Json.toJson(list);
}
2014 8 月28
第一步:编写插件类
package cn.xuetang.plugin;
import android.widget.Toast;
import org.apache.cordova.CallbackContext;
import org.apache.cordova.CordovaInterface;
import org.apache.cordova.CordovaPlugin;
import org.json.JSONArray;
import org.json.JSONException;
/**
* Created by Wizzer on 14-8-28.
*/
public class ToastPlugin extends CordovaPlugin {
public ToastPlugin() {
}
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
if (this.cordova.getActivity().isFinishing()) return true;
if (action.equals("show")) {
this.show(args.getString(0));
} else if (action.equals("showlong")) {
this.showlong(args.getString(0));
} else {
return false;
}
callbackContext.success();
return true;
}
public void show(String message) {
Toast.makeText(this.cordova.getActivity(), Toast.LENGTH_SHORT).show();
}
public void showlong(String message) {
Toast.makeText(this.cordova.getActivity(), message, Toast.LENGTH_LONG).show();
}
}
第二步:配置 res/xml/config.xml
注:这里的 feature name ,要和↓↓面讲的的js文件里一致。
第三步:创建js文件 plugins/toast.js
/**
* Created by Wizzer on 14-8-28.
*/
cordova.define("cn.xuetang.plugin.ToastPlugin", function(require, exports, module) {
var exec = require('cordova/exec');
module.exports = {
/**
* 一共5个参数
第一个 :成功回调
第二个 :失败回调
第三个 :将要调用的类的配置名字(在config.xml中配置↑↑)
第四个 :调用的方法名(一个类里可能有多个方法 靠这个参数区分)
第五个 :传递的参数 以json的格式
*/
show: function(message) {
exec(null, null, "ToastPlugin", "show", [message]);
},
showlong: function(message) {
exec(null, null, "ToastPlugin", "showlong", [message]);
}
};
});
注:js里两个方法,分别对应类中的两个方法
第四步:修改 cordova_plugins.js 引用 tocas.js
在 module.exports = [ ] 中追加如下代码:
{
"file": "plugins/toast.js",
"id": "cn.xuetang.plugin.ToastPlugin",
"merges": [
"navigator.toast"
]
}
最后:调用
navigator.toast.show("再点击一次退出");
navigator.toast.showlong("再点击一次退出");
2014 8 月28
/**
* Created by Wizzer on 14-8-28.
*/
var num = 0;
var login = {
initialize: function () {
this.bindEvents();
},
bindEvents: function () {
document.addEventListener('backbutton', this.eventBackButton, false);
},
eventBackButton: function () {
num++;
if (num > 1) {
navigator.app.exitApp();
}
navigator.toast.show("再点击一次退出");
// 3秒后重新计数
var intervalID = window.setInterval(function() {
num=0;
window.clearInterval(intervalID);
}, 3000);
}
};
浮动提示插件见:
/?p=3026
2014 8 月26
.replaceAll(“[^a-zA-Z_\u4e00-\u9fa5]”, “”)
只剩下中文和英文字母了,悲催。
Caused by: java.sql.SQLException: Incorrect string value: ‘\xF0\x9F\x98\xB7’ for column ‘description’
2014 7 月9
使用帝国CMS,花了近一个月时间开发了一个网站,开发完成后客户对后台非常不满意,决定换成PHPCMS找人重做。- –
怎么说呢,帝国CMS开发起来比较灵活,可是弊端也很多,比如模板、标签、自定义SQL、自定义列表、模型等等,
做起来是相当的麻烦,从这里转到那里,又要自定义函数又要这个那的,,否则怎么会要花近一个月时间做个网站呢?
做网站真的应该是分分钟的事情,而帝国CMS让我花费了超过1/3时间在折腾自定义标签、函数等,边学习边研究边开发 。
我不清楚PHPCMS开发要多久,另外那个人说一周加班加点可以搞定。
帝国CMS最人命的是,不光对开发人员不友好,对网站编辑人员更加不友好,,各种麻烦,各种功能不支持 ,
对不之下,PHPCMS编辑网站起来方便多了,可以裁剪标题图不变形、可以推送文章到广告位等等。
一直是从事JAVA开发的,PHP的CMS也就接触过Wordpress而已,,如果不是老板确定用帝国CMS,
如果不是自己看中帝国自带的商城,打死也不会选择帝国CMS。。。。
难怪官方都不再更新维护了,,体验不是一般的烂,算是浪费时间换得了个教训,望后者不要付后尘 。
2014 7 月8
网易微博登陆验证,第一次请求使用BASE64加密、第二次请求使用MD5+RSA加密,比较变态,于是使用JAVA+JS相结合的方式,调用其JS方法得到加密字符串。
/core1.7.0.js 是经过处理的,删掉几行在JAVA引用中会报错的浏览器对象。
import org.apache.http.HttpResponse;
import org.apache.http.client.CookieStore;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.velocity.util.StringUtils;
import org.nutz.lang.Files;
import org.nutz.lang.util.ClassTools;
import org.nutz.repo.Base64;
import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
/**
* Created by Wizzer on 14-7-7.
*/
public class Netease {
static String index_url = "http://t.163.com/session";
static String login1_url = "http://reg.163.com/services/httpLoginExchgKeyNew";
static String login2_url = "http://reg.163.com/httpLoginVerifyNew.jsp";
static String status_url = "http://t.163.com/share/check/status";
UrlUtil urlUtil = new UrlUtil();
public static void main(String[] args) {
CookieStore cookieStore = new Netease().login("email", "password");
}
public CookieStore login(String userid, String password) {
try {
DefaultHttpClient client = new DefaultHttpClient();
HttpGet get = new HttpGet(login1_url + "?rnd=" + Base64.encodeToString(userid.getBytes(), true) + "&jsonp=setLoginStatus");
get.setHeader("Accept", "*/*");
get.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36");
HttpResponse response = client.execute(get);
int code = response.getStatusLine().getStatusCode();
if (code == 200) {
InputStream in = response.getEntity().getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
String line = "", res = "";
while (null != (line = reader.readLine())) {
res += line;
}
System.out.println("res:::" + res);
if (res.contains("200")) {
String[] str = StringUtils.split(urlUtil.getStr(res, "setLoginStatus(\"", "\")"), "\\n");
String o = str[1], h = str[2];
ScriptEngineManager sem = new ScriptEngineManager();
ScriptEngine se = sem.getEngineByName("javascript");
se.eval(getJs());
String jiami = "";
if (se instanceof Invocable) {
Invocable invoke = (Invocable) se;
jiami = invoke.invokeFunction("getCode",
password, o, h).toString();
System.out.println("jiami = " + jiami);
}
DefaultHttpClient client2 = new DefaultHttpClient();
client2.setCookieStore(client.getCookieStore());
HttpGet get2 = new HttpGet(login2_url + "?rcode=" + jiami + "&product=t&jsonp=setLoginStatus&savelogin=0&username=" + userid);
get2.setHeader("Accept", "*/*");
get2.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36");
HttpResponse response2 = client2.execute(get2);
int code2 = response2.getStatusLine().getStatusCode();
if (code2 == 200) {
InputStream in2 = response2.getEntity().getContent();
BufferedReader reader2 = new BufferedReader(new InputStreamReader(in2));
String line2 = "", res2 = "";
while (null != (line2 = reader2.readLine())) {
res2 += line2;
}
System.out.println("res2:::" + res2);
if (res.contains("200")) {
return client2.getCookieStore();
}
}
}
}
return null;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
private String getJs() {
String jscontent = Files.read(ClassTools.getClassLoader().getResource("").getPath() + "netease" + "/core1.7.0.js");
jscontent += "function getCode(p,o,h){\n" +
"\t\t\t\tvar l=new RSAKey();\n" +
"\t\t\t\tl.setPublic(h,o);\n" +
"\t\t\t\treturn l.encrypt(getMd5(p));\t\t\t\t\n" +
" }";
return jscontent;
}
}
2014 7 月1
版本特点:
1、使用系统自带的水印系统,勾选即可使用;
2、可勾选生成缩略图。
使用方法:
1、将 uploadify 文件夹解压至 ../e/extend/
2、系统–>数据表与系统模型–>管理数据表–>图片系统数据表–>管理字段–> morepic 修改:
将“输入表单替换html代码.html”文件内容,拷贝替换掉“输入表单替换html代码”
3、搞定。
ps:uploadify.php 第49行,没有用到的,可以删掉提高效率。
下载地址:
1、原版下载(或附件):
http://pan.baidu.com/s/1kTDmdyZ
2、上传时获取照片附加属性(曝光、光圈、相机型号等)版本:
http://pan.baidu.com/s/1qWuLahQ
2014 6 月9
img
{
max-width
:
800px
;
width
:
expression
(
this
.width
>
800
?
800
:
true
)
;
height
:
auto
;
}
2014 6 月8
HSSFWorkbook wb = new HSSFWorkbook();
OutputStream out = new FileOutputStream(“x.xls”);
wb.write(out);
out.close();
return new File(“x.xls”);
ByteArrayOutputStream out = new ……..;
wb………
out.close();
ByteArrayInputStream in = new ………..(out.toByte…);
return in;
2014 6 月5
/e/class/userfun.php
function currentPage($classid,$thisid){
global $class_r;
$fr=explode('|',$class_r[$classid][featherclass]);
$topbclassid=$fr[1]?$fr[1]:$classid;//取得第一级栏目id
if ($topbclassid==$thisid) {
echo "class='cur'";
}
else {
}
}
头部模板:
<li >首页
[e:loop={'select classid,classname,classpath,wburl from [!db.pre!]enewsclass where bclassid=0 order by classid',0,24,0}]
<li >
<a id="nav-hover" href="" title="" target="_self" >
[/e:loop]
2014 5 月28
首先配置好运行环境:
windows下配置nginx+php环境
其次修改nginx配置文件:
server {
listen 80;
server_name localhost;
location ~ ^/bbs/.+\.php$ {
alias E:/xuetang/cn/bbs;
rewrite /bbs/(.*\.php?) /$1 break;
fastcgi_index index.php;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME E:/xuetang/cn/bbs$fastcgi_script_name;
include fastcgi_params;
}
location ~ ^/bbs($|/.*) {
alias E:/xuetang/cn/bbs/$1;
index index.php index.html index.htm;
}
location / {
root E:/xuetang/cn/www;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location ~ \.php$ {
root E:/xuetang/cn/www;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
注意虚拟目录配置要在根目录上面。。