豆瓣竟然有网友用我的脚本了,还希望我加个次数限制,所以升级了一下,刚看到,复制到博客里了。
// 检查间隔
var interval = 30000;
// 是否开启提醒计数,0关闭,>0为几次停止
var open_count = 4;
// ==UserScript==
// @name 豆瓣豆油提醒脚本
// @namespace http://0x55aa.com/
// @version 0.2
// @description 豆瓣豆油提醒脚本,来豆油后进行弹窗提醒!
// @author 0x55aa
// @match https://*.douban.com/*
// @grant none
// ==/UserScript==
(function() {
'use strict';
// 检查间隔
var interval = 30000;
// 是否开启提醒计数,0关闭,>0为几次停止
var open_count = 4;
var count = Number(window.localStorage.getItem("count")) || 0;
// 提醒
if (Notification && Notification.permission !== "granted") {
Notification.requestPermission(function (status) {
if (Notification.permission !== status) {
Notification.permission = status;
}
});
}
function notify() {
var titleText = "豆油来啦";
var options = {
dir: "ltr",
lang: "utf-8",
icon: "https://img3.doubanio.com/favicon.ico",
body: "请赶快处理!!!!!"
};
if (Notification && Notification.permission === "granted") {
var n = new Notification(titleText, options);
}
window.localStorage.setItem("count", count+1);
window.location.reload();
}
function check() {
console.log($('#top-nav-doumail-link').children().text());
console.log(count);
if ($('#top-nav-doumail-link').children().text()){
if (!open_count){
notify();
}else{
if (count < open_count){
notify();
}else{
window.location.reload();
}
}
}else{
window.localStorage.setItem("count", 0);
count = 0;
}
}
var timer = setInterval(check, interval);
})();
Read more...
Archive for web
centos 安装mysqlclient,mysql session错误的问题
折腾了我一个周五下午加一个周末的问题。
写的代码上线两个周了,之前只测试了同步跟列表的功能,展示没问题,上周测试了一下更新问题,开始删除没刷新,我还以为是前端老版本的编译有问题,发现接口确实调用了就没管了。
直到测试一个更新功能,发现接口调用成功了,但是数据没更新。还返回了http 200。我就看了一下代码,返回200不可能没执行到更新保存的代码。
发现只有在提交commit之前有查询操作,就会导致表更新失败。所以应该是个session问题。
试了我本机环境没问题,然后我就想到装的python包的版本问题,踩什么bug了吧。然后我对比了一下版本,我管理都是只写主要包的版本,依赖包的版本没有写,所以依赖包有的版本会高一点。
我选了几个可能的包,更换版本,发现不是这个原因。周末想想,如果是这个包的问题,应该早就发现了,会打补丁。
然后我就想到数据库的问题,我用的mariadb,测试系统是centos,然后我看了一下有新版本的mariadb,更新了一下,这里现在想想数据库的问题的概率也十分小了,而且是这么明显的bug。
mariadb的源巨慢无比,我又在尝试更新mysqlclient包,因为我记得安装的时候mariadb-devel不能用,网上说的用mysql-devel。我又从新试了一次,各种方法,发现不成功。
到下午快下班,安装完mariadb,又试了一遍mariadb-devel也不行。觉得还是用mysql,又安装称mysql。
但是发现数据库数据文件不兼容,升级的命令好像也不太行,我备份的导出数据库数据,导入又有外键关联的限制,懒得搞数据了。下班了。
周末有时间的时候就想了想,我之前虽然抓包测试环境mysql,发现没问题,但是没对比本机的。如果周一mysql不行,试试本机环境连线上数据库,排除一下是包的问题还是数据库问题。感觉周五的时候应该先排除问题再更新数据库才对。
周一来,同步了一下数据,更新了一下发现mysql还是不行。然后重新编译mysqlclient,测试发现通过了。
最后还是mysqlclient编译依赖有问题,使用mysql-devel编译,连接mariadb有问题。好像还不是所有的版本有这个问题。
Read more...
使用umeditor上传图片一直提示上传失败
网站的编辑器从simditor换到了emeditor。原因是嫌simditor的编辑功能太弱。比如样式都在前台定义的,不能控制单个字符的大小,源代码编辑刚加上,效果也不尽人意。
但是换成emeditor,开始挺快,配置也简单,但是上传图片这一关,搞了好长时间,不知道错在哪里。返回的数据按照官网来的,蛋就是提示上传失败。然后没办法Google了一下,发现也有人有这个问题。最后找的了别人的解决方法,貌似是官方的bug,不知道为什么一直不修复。
修改image.js里的186行左右,添加一行
Read more...
r=r.replace("<pre>", "").replace("</pre>", ""); var json = eval('('+r+')');
jquery post一个array
jquery在post一个array的时候,我直接{array:array},提交的字段名字会改称array[].
解决方法是在发送post之前加上一个jQuery.ajaxSettings.traditional = true;
直接用ajax的话加一个traditional:true 参数。然后就好了,从提交的数据看,array[]=[]直接提交一个list。而array是array=&array=&&&这种形式。
Read more...
option selected属性设置问题attr,prop
在选中一个值的时候,设置必须选中其他值。开始使用attr('selected','selected'),发现只有在第一次选中的时候好用。
从网上查找发现要使用prop('selected','selected')来做,问题就解决了。
Read more...
go实现第一个web框架小总结-tfwf
从上上个周开始,就开始进行了。为啥起了这么蛋疼的一个名字,0 0当时建目录的时候不知道起啥名字,然后就起了一个the first web framework(tfwf),然后在bitbucket上开了一个私有项目,就开始写了。
先说说目的:一直都在用别人写的东西,包括接触的n多东西,一直想自己也实现一个。终于下决心用go准备写一个web框架,因为对这个还算是熟悉的了。选择go的原因是,写了可能会有别人用,但是我的出发点是学习并玩玩。不懂设计,不懂高深的理论,能有点样子就好了。
其实go自带的包写web应用已经非常方便了,现在主要实现的功能有:
url的正则匹配,并且可以定义`^/aa/(?P<second>\d+)/`这样的样式。
网站的基本设置,像域名,名字,templedir等
控制器模仿tornado的样子写的,感觉蹩脚的很0 0.
启动时模板的导入。
就这些了。
说说从一开始写的过程,现在只记得七七八八了,时间有点长了。
准备写web框架的时候,我先去大略看了一遍谢大的 goweb编程那本书,第3.4节是对web框架开头路由的编写起了关键性的作用。
然后我就直接从http包 函数找到源码,把那里的代码意思看懂,就开始写了支持正则匹配的路由,然后对应的handler是函数。之后我就想写成python里边面向对象可以重载的方法,就研究了一下go的面向对象的编程,写成了接口的模式,什么走路像鸭子就是鸭子0 0。。写这里的时候我遇到一点问题:从接口取到对应struct的元素和方法,我有去看来reflect包的内容。
这期间我找了,web.go和beego的代码,大体看来一遍,发现beego的控制器写的跟我想的基本一样,直接看代码,借鉴了很多代码- -算不算抄袭。像url里匹配的变量,我发现go不支持继承的方法参数啥的必须一样。我就在context里边加了一个属性args,感觉真二。
今天开会的时候又加上了temple的启动时集中导入功能,功能的来源beego。再可耻一下0 0.settings和templates都是全局的,这些都不需要修改,第一次启动添加,应该不会有问题。
现在还有好多细节没处理好。还有很多必要的功能没有,像:错误提示,我自己写的时候测试,都发现非常困难,只是自己比较了解,能快速定位刚才修改的代码。我现在很多代码的错误验证都还没有0 0.、
对 一个主要的功能准备,明天实现:异步的问题,现在还没头绪,明天仔细研究一下,并测试一下在普通http请求这两个差别真的很大吗。我现在只是直接调用方法。觉得挺直观明白的0 0.
代码明天实现异步在上传到github上,现在也没格式化。我觉得我应该用我自己写的框架写点能用的东西,才知道还有哪里需要修改的更好0 0.
Read more...
毕业设计题目
老师说要实现一个在线c语言学习的网站,引导用户一步一步编程。
找到这个网站:http://www.codecademy.com,准备以这个网站为原型设计。这个也不错http://www.paomianba.com/astar/
需要一个一步一步的引导语,一个代码框,再一个代码保存的功能。代码运行这个先不考虑,安全性我还没考虑好。
加入用户登录功能,记录学习进度。加入每个步骤的提问,评论功能。
后台能够添加教程。
难度主要在代码输入编辑框中后,检测输入是否正确。
代码框准备使用http://ace.ajax.org/。前端使用js与服务器进行数据交互,判断是否正确。
后台代码用python写,框架不准备用django了,笨了点,使用tornado或者web.py,这两个文档都有看,就是没有实践一下了。数据库还是用mysql,查查资料,看看换个,借机学学其他数据库。
Read more...
javascript提示是否删除
非常简单实用的方法,收藏了。这几天写的东西没用jquery,但是有些功能还是想从简,比如这个提示是否删除。最简单的方法还是只是弹个提示框,于是找到这个方法。
JavaScript弹出确认消息框判断是否删除,删除前提示用户是否删除,点是删除,点否返回。
Read more...
删除
用法:onClick="return confirm('是否删除此条记录?')"
onClick在点击时(这里是指点击这条超链接)触发,confirm会返回“是”(true)或者“否”(false),返回“否”就不产生跳转。
原来这个js中return可以控制超链接是否跳转啊,神奇,嘿嘿,忒神奇了~
wamp搭建环境不能ip访问的解决办法
apache在本机上访问正常,但是用ip访问为403禁止访问!
apache配置文件修改:
#
# Possible values for the Options directive are "None", "All",
# or any combination of:
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important. Please see
# http://httpd.apache.org/docs/2.2/mod/core.html#options
# for more information.
#
Options Indexes FollowSymLinks
#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
AllowOverride all
#
# Controls who can get stuff from this server.
#
# onlineoffline tag - don't remove
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
Allow from 127.0.0.1修改为Allow from all,没有查文档,搜索解决。
Read more...
sae-python使用django1.4搭建网站
几个需要注意的地方,官网说的很清楚:
1、 config.yaml文件修改,
Read more...
name: py version: 1 libraries: - name: django version: "1.4" handlers: - url: /static static_dir: static2、index.wsgi文件修改,
import os
import django.core.handlers.wsgi
import sae
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'
application = sae.create_wsgi_app(django.core.handlers.wsgi.WSGIHandler())
之后就打印了一个hello world!
用到的几个svn命令
svn checkout https://svn.sinaapp.com/newapp #此处需要认证,用户名/密码为您的SAE安全邮箱和安全密码
svn add 1/
svn commit -m"add wordpress"