Hot For Coding
新浪微博加关注按钮IE下不能显示

今天产品给我提一个Bug,称在IE浏览器下微博关注按钮出不来,并且有JavaScript报错

full

其它浏览器均正常,唯独IE下有这个报错,但从图片上的错误信息来看,很难判断是哪出了问题?怎么解决?

当时想,微博不会有一个这么严重的Bug吧?在IE下就不能出现按钮?因此怀疑跟我的页面某块地方有冲突了,于是单独写一个html静态页测试

<html>
  <head>
  </head>
  <body>
    <wb:follow-button uid="2619203540" type="red_1" width="67" height="24" ></wb:follow-button>
    <script src="http://tjs.sjs.sinajs.cn/open/api/js/wb.js?appkey=2844920245" type="text/javascript" charset="utf-8"></script>
  </body>
</html>

...

READ ALL

Python实现斐波那契

昨天我写了一版JavaScript实现的,今天用Python实现一下

什么是斐波那契

斐波那契数列指的是这样一个数列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368........
这个数列从第3项开始,每一项都等于前两项之和

代码实现

arr = []

def fibonacci():
  i = 0
  l = len(arr)
  if l < 2:
    i = 1
  else:
    i = arr[l - 1] + arr[l - 2]
  arr.append(i)

  return i

for i in range(10):
  print(fibonacci())

...

READ ALL

JavaScript实现斐波那契

什么是斐波那契

斐波那契数列指的是这样一个数列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368........
这个数列从第3项开始,每一项都等于前两项之和

代码实现

function fibonacci() {
  var list = [];
  return function () {
    var i;
    if (list.length < 2) {
      i = 1;
    } else {
      i = list[list.length - 1] + list[list.length - 2]
    }

    list.push(i);
    return i;
  };
}

var f = fibonacci();
for (var i = 0; i < 10; i++) {
  console.log(f());
}

...

READ ALL

C读写字符getchar和putchar

C语言标准库提供了读写一个字符的函数,分别是getcharputchar两个函数

getchar

使用方法也很简单,每次调用getchar时,getchar函数从文本流中读入下一个输入字符,并将其作为结果值返回

#include <stdio.h>

int main() {
  int c = getchar();
  return 0;
}

以上代码使用int类型接收返回值是因为getchar返回的是ASCII码

putchar

每次调用putchar时将会打印一个字符,如

#include <stdio.h>

int main() {
  putchar(65); // Output: A
  return 0;
}

...

READ ALL

Canvas画饼图!

近来比较忙,有点无暇顾忌小站了!于是忙里偷闲,把项目中的收获记录下来,方便他人,提升自己!

饼图

饼图,大家都应该熟知,在统计数据对比方面,几乎处处用到。如cnzz的统计饼图

full

从饼图中,很形象地展示了访问者地区的分布,以扇形为块的方式拼成一个大圆。

都使用什么方法实现

目前众多站点制作饼图大多使用Flash,或者服务器端生成,如C++、PHP、Python、Java等等,只要安装相应的基础库就能实现画图。但很少有站点这么干,因为耗费服务器资源。

cnzz里使用的就是Flash

...

READ ALL

学习C语言

C语言,一门系统级语言,虽然现在很多应用层很少用到它,但学习一下C语言有利于更好的了解系统底层

任何语言的开端都从Hello World开始,新建一个hello.c并写入以下代码

#include <stdio.h>

int main() {
  printf("Hello world");
  return 0;
}

源码写完了,下一步是需要编译

[root@test01 learn]# gcc hello.c 

编译结束后会在目录下生成a.out编译文件

[root@test01 learn]# ll
total 16
-rwxr-xr-x 1 root root 8440 Oct 10 16:45 a.out
-rw-r--r-- 1 root root   72 Oct 10 16:45 hello.c

...

READ ALL

IE6通过class动态切换样式无效解决方法

美工那边给了一个焦点图的样式

full

当图片切换的时候,底部小白点的样式要相应变化,美工写好了样式,直接在白点element上添加class=ok就好。

但在IE6下不起作用,通过工具查看,发现样式class属性已改写成功,但小白点的样式就是不变化。

后来直接用JavaScript在标签inline-style方式写样式,而不是通过class切换修改样式,问题解决了!

有点不清楚IE6下为何会有这个bug

...

READ ALL

博文分页实现

通常我们在浏览新闻时发现有些新闻内容有分页功能,这些分页是怎么实现的呢?对于存在数据库里的文章内容,并没有没有分页概念或者功能,只能在写文章时通过一些技巧去实现。

目前分页多半是按照两种方式:

根据字节长度来实现分页

比如,文章有三千个字符,我每一页显示一千个字符,那么可以分三页。这种方式只能适用于纯文字的文章。否则如果有标签被拆开,就会影响页面美观了。比如你正好有一个标签<img src="img.jpg" />这样一个标签,但是第一页的长度截取只截取到了<im,剩下的g src="img.jpg" />被分割到了下一页,其实这种方式也可以处理,即判断是不是标签被断开?如果断开就递归处理耦合就好,第二页的开头也需要这么处理,但比较麻烦。

...

READ ALL

什么是EOF?

它是end of file的缩写,表示"文字流"(stream)的结尾。这里的"文字流",可以是文件(file),也可以是标准输入(stdin)。

但程序里为了判断EOF通常都定义了函数或者变量,比如C语言里可以这样来判断字符是不是等于EOF

if (getchar() == EOF) {
  printf("It's end of file");
}

这个EOF是定义在stdio.h里的常量,通常是-1,因为文本对应的ASCII码都是正值,不可能有负值。

但是正常的文件读取到末尾就会遇到EOF从而结束读取,如这段代码

int c;

while ((c = getchar()) != EOF) {
  putchar(c);
}

printf("Read end");

...

READ ALL

Zencart后台顶部提示框问题解决

一步步按照教程来操作,登录后台后页面顶部总是提示提示

full

教程里没有这个问题的解答方式,网上搜索也没有,仔细研究半天后才发现这是一个权限问题。

默认我们运行PHP以及WebServer程序总是创建www用户,组也是www,比如我的环境就是。而我们上传程序的时候往往是以root或者其它非www用户上传,导致PHP程序执行权限问题而无法写或者创建一些文件。

解决方法,项目下所有文件所有者、组都更改为你环境里运行PHP,WebServer得用户,比如我的可以这么解决

chown -R www *
chgrp -R www *

...

READ ALL