Hot For Coding
  • 1月21日DNS大面积故障

    昨天,中国大部分地区DNS故障出现大量站点无法访问,DNS是将域名解析IP后才能真正请求目标资源,起到一个关键的作用。

    full

    虽然DNS出故障后IP请求的目标资源的方式不受影响,但没有几个使用IP访问的(除一些特殊的以外),DNS也是一台普通物理服务器,按理说发生点故障是很正常的。但区区只发生在中国,然后所有请求都转向自由门,在发布说是被自由门攻击了,这事就戏剧多了。

    全世界只有13台,这13台根域名服务器中名字分别为“A”至“M”,其中10台设置在美国,另外各有一台设置于英国、瑞典和日本。也就是说国内用户访问站点先从国内的分支DNS服务器开始查找,逐级向上,最后可到根。但昨天的故障是根本都无法访问,专家说可能又是网络运营商的问题,擦边球踢来踢去迷惑大家。其实大家用心想想就知道怎么回事了,乌龙事件!

    ...

    READ ALL

  • JavaScript遍历数组最好使用for而不是for-in

    在JavaScript中,严格来说所有的数据类型鼻祖都是Object,所以我们来看看以下这个例子:

    >>> var arr = ["a", "b", "c"];
    undefined
    >>> for(var i=0; i<arr.length; i++){ console.log(i); }
    0
    1
    2
    >>> for(var i in arr){ console.log(i); }
    0
    1
    2
    

    以上例子定义了一个包含3个元素的数组arr,然后分别使用for和for-in来遍历它的元素,结果都没问题。但如果我给arr添加一个原型方法,结果就不一样了。

    ...

    READ ALL

  • 关于字节的一些要点

    计算机只能识别0和1,简称二进制。表达人类常用的十进制数字,比如3,可以使用更多位的二进制来表示,这个过程我们称之为进制转换。

    十进制3转二进制 0011

    使用多少位的二进制表达一个数字我们称之为bit,在计算机中, 最小的单位是字节(Byte),它由8个bit组成,所以在计算机中要表达十进制3,利用一个字节即可表示

    一个字节存储3 0000 0011

    因为一个字节共有8个位,每一位共有两种状态0和1,即可组成2的8次方,256种不同的状态,所以一个字节最多可以表达十进制0到255之间的数字,如果超过了怎么办?超过了就使用2字节(16位)存储,以此类推

    ...

    READ ALL

  • 我们的网页要照顾低端浏览器吗?

    浏览器使用统计

    自从IE浏览器老大的位置动摇以后,后起之秀FireFox、Opera、Chrome、Safari都一直时时威胁着经典的独树一帜的IE老大,之所以IE受到如此的威胁是因为无论性能和兼容上它弱爆了。然而,即使人们心中知道这些浏览器随便抓一个都比IE强,但IE凭借Window系统的推广,已经深远的植入人心。先来看看w3c的一份统计:

    full

    这是2012年的统计数据,从图上我们可以看出IE份额逐月下滑,Safari和Opera几乎可以忽略,Firefox也出现了下滑,唯独Chrome持续增长。下面再来看2013年的统计图

    ...

    READ ALL

  • CSS移动端的Responsive Web Design @media

    随着移动端的出现,Responsive Web Design(响应式网页设计/自适应网页设计)早在前几年就已开始逐渐步入主流,但那会的移动端并不很多,使用桌面浏览器居多,大部分站点没必要考虑响应式支持,只有少部分尝鲜的站点使用。

    近两年,随着大屏手机,平板电脑的大量普及,人手一部,网页设计开始脱离固定的液晶显示屏,开始转移到移动端。最早的做法,差不多是为不同的主流设备下分别开发相应的CSS主题,然后使用js判断设备并引入相应的CSS使得网页在各个设备之间能够得体的显示。这种工作量是相当大的,特别是手机、平板电脑各种尺寸都有,这需要花大量的功夫与精心设计。

    ...

    READ ALL

  • Python批量把SVG转png、pdf脚本

    需要提前安装cairosvg模块,下载地址http://cairosvg.org/download/

    代码

    #! encoding:UTF-8
    import cairosvg
    import os
     
    loop = True
    while loop:
      svgDir = raw_input("请输入SVG文件目录")
      if os.path.exists(svgDir) and os.path.isdir(svgDir):
        loop = False
      else:
        print "错误:您输入的SVG文件目录不存在或者不是一个有效的目录,请重新输入"
     
    loop = True
    while loop:
      exportDir = raw_input("请输入导出目录")
      if os.path.exists(exportDir):
        loop = False
      else:
        print "错误:您输入的导出目录[" , exportDir  , "] 不存在,是否要创建这个目录?"
        loops = True     
        while loops:
          msg = ""
          cmd = raw_input("创建 (Y) 重新 (R)")
          if cmd.upper() == "R":
            loops = False
          elif cmd.upper() == "Y":
            os.makedirs(exportDir, True)
            if os.path.exists(exportDir):
              loop = False
              loops = False
            else:
              print "创建目录失败[",exportDir,"], 请重新输入"
          else:
            print "找不到您输入的命令,请重新输入"
                 
     
    cate = ("png", "pdf")
    print "导出类型:"
    for i in cate:
      print i
         
    loop = True
    while loop:
      exportFormat = raw_input("请输入导出类型")
      if exportFormat.lower() in cate:
        loop = False
      else:
        print "您输入的类型不存在,请重新输入"
     
    def export(fromDir, targetDir, exportType):
      print "开始执行转换命令..."
      files = os.listdir(fromDir)
      num = 0
      for fileName in files:
        path = os.path.join(fromDir,fileName)
        if os.path.isfile(path) and fileName[-3:] == "svg":
          num += 1
          fileHandle = open(path)
          svg = fileHandle.read()
          fileHandle.close()
          exportPath = os.path.join(targetDir, fileName[:-3] + exportType)
          exportFileHandle = open(exportPath,'w')
            
          if exportType == "png":
            cairosvg.svg2png(bytestring=svg, write_to=exportPath)
          elif exportType == "pdf":
            cairosvg.svg2pdf(bytestring=svg, write_to=exportPath)
                
          exportFileHandle.close()
          print "Success Export ", exportType, " -> " , exportPath
        
      print "已导出 ", num, "个文件"
    export(svgDir, exportDir, exportFormat)
    

    ...

    READ ALL

  • Java svg转png、pdf关于image路径问题

    最近在使用Java利用batic包把svg转换到png/pdf时总是无法解析XML文件里的image标签,在测试时突然发现只要把image的xlink:href URL写成http从网络上寻找的就可以,如

    <image xlink:href="https://www.qttc.net/image.svg"></image>
    

    但是写成相对于Java项目路径,如

    <image xlink:href="image.svg"></image>
    

    以上路径就不能正常转换,最后我索性写成绝对路径还是不行

    <image xlink:href="C:/image.svg"></image>
    

    ...

    READ ALL

  • CSS3下雨场景

    full

    点这里看效果

    简单说下制作思维

    雨滴

    雨滴其实就是一个宽150px高1px的div,然后使用css3的rotate让它倾斜一下就好,然后使用css3的线性渐变,就成雨滴了。由上往下掉使用animation控制它的left与top即可。为了让它有远近的效果可以随机给一部分半透明,top参差不平。

    雨水

    首先是画椭圆,很简单只要给一个长方形然后border-radius: 50%就好,然后animation控制它的width与height就好,最后消失的时候给下opacity由1到0就有效果了,同样为了有层次感,可以随机给一部分半透明。

    ...

    READ ALL

  • CSS3 animation效果不错

    在这之前要在网页中实现动画,基本都是Flash,这Flash老大的位置一直到CSS3出现以后开始发生变化了,主流浏览器支持CSS3特性。

    它的属性特别多,具体的可以看看教程,下面给出一些简单例子

    例子1

    html

    <div class="box">
      <span class="a1">从左边渐渐飘入</span>
      <span class="a2">从中间淡入闪动两下,然后淡出</span>
      <span class="a3">从右边渐渐飘入</span>
      <hr  />
      <span class="a4">这个一直永久重复飘动</span>
      <hr />
      <span class="a5">从小变大, 颜色从红变到绿</span>
    </div>
    

    ...

    READ ALL

  • MyEclipse2013中断开服务器下SVN提交卡死

    MyEclipse2013中断开服务器下SVN提交卡死

    full

    点击Cancel取消就永远都在关闭中

    full

    这确实很蛋疼,即使关闭MyEclipse这窗口还是顽固的运行,只能通过kill掉进程后才能把它Cancel掉。

    后来在MyEclipse->Preferences->Team->SVN->SVN接口->Client下拉选择框中 把JavaHL**改选为SVNKit**

    full

    ...

    READ ALL