EdmondFrank's 时光足迹

この先は暗い夜道だけかもしれない それでも信じて進むんだ。星がその道を少しでも照らしてくれるのを。
或许前路永夜,即便如此我也要前进,因为星光即使微弱也会我为照亮前途。
——《四月は君の嘘》

Go语言var/init/main的执行顺序

Go语言var/init/main的执行顺序

执行顺序(降序):

  1. var
  2. init
  3. main

大家也可以亲自动手把下面的代码复制到Go Playground上执行看看!

示例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package main

var someVar = defaultVar()

func init() {
    println("main.init was called")
}

func main() {
    println("main.main was called")
}

func defaultVar() int {
    println("main.var was initialized")
    return 0
}

输出结果如下:

main.var was initialized

main.init was called

main.main was called

Httpscan爬虫扫描小工具

httpscan 爬虫扫描小工具

httpscan是一个扫描指定网段的Web主机的小工具。和端口扫描器不一样,httpscan是以爬虫的方式进行Web主机发现,因此相对来说不容易被防火墙拦截。 httpscan会返回IP http状态码 Web容器版本 以及网站标题。


 


1
2
Usage:./httpscan IP/CIDR –t threads
Example:./httpscan.py 10.20.30.0/24 –t 10

Github地址

代码预览:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#!/usr/bin/env python
#coding:utf-8
# Author: Zeroh

import re
import sys
import Queue
import threading
import optparse
import requests
from IPy import IP

printLock = threading.Semaphore(1)  #lock Screen print
TimeOut = 5  #request timeout

#User-Agent
header = {'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.125 Safari/537.36','Connection':'close'}

class scan():

  def __init__(self,cidr,threads_num):
    self.threads_num = threads_num
    self.cidr = IP(cidr)
    #build ip queue
    self.IPs = Queue.Queue()
    for ip in self.cidr:
      ip = str(ip)
      self.IPs.put(ip)

  def request(self):
    with threading.Lock():
      while self.IPs.qsize() > 0:
        ip = self.IPs.get()
        try:
          r = requests.Session().get('http://'+str(ip),headers=header,timeout=TimeOut)
          status = r.status_code
          title = re.search(r'<title>(.*)</title>', r.text) #get the title
          if title:
            title = title.group(1).strip().strip("\r").strip("\n")[:30]
          else:
            title = "None"
          banner = ''
          try:
            banner += r.headers['Server'][:20] #get the server banner
          except:pass
          printLock.acquire()
          print "|%-16s|%-6s|%-20s|%-30s|" % (ip,status,banner,title)
          print "+----------------+------+--------------------+------------------------------+"

          #Save log
          with open("./log/"+self.cidr.strNormal(3)+".log",'a') as f:
            f.write(ip+"\n")

        except Exception,e:
          printLock.acquire()
        finally:
          printLock.release()

  #Multi thread
  def run(self):
    for i in range(self.threads_num):
      t = threading.Thread(target=self.request)
      t.start()

if __name__ == "__main__":
  parser = optparse.OptionParser("Usage: %prog [options] target")
  parser.add_option("-t", "--thread", dest = "threads_num",
    default = 1, type = "int",
    help = "[optional]number of  theads,default=10")
  (options, args) = parser.parse_args()
  if len(args) < 1:
    parser.print_help()
    sys.exit(0)

  print "+----------------+------+--------------------+------------------------------+"
  print "|     IP         |Status|       Server       |            Title             |"
  print "+----------------+------+--------------------+------------------------------+"

  s = scan(cidr=args[0],threads_num=options.threads_num)
  s.run()

Ubuntu下Web服务器Apache的安装及配置

Ubuntu下Web服务器Apache的安装及配置

一.安装

1. 终端下安装Apache:

1
$ sudo apt-get install apache2

回车后等待安装完成即可.

2. 源码编译安装

1.前往 Apache官方网站 下载并解压源码包.

1
2
$ tar zxvf httpd-2.4.20.tar.gz
$ cd httpd-2.4.20

2.配置安装路径

1
$ ./configure --prefix=/usr/local/apache

3.编译并安装

1
2
$ make
$ make install

4.启动服务器

1
2
$ cd /usr/local/apache/bin
$ ./apachectrl start

二.配置

(1)默认页面的路径 Apache安装完成后,默认的网站根目录是"/var/www/html"

1
2
$ ls /var/www/html
=> index.html //该文件即为apache的默认页面

(2)Apache配置文件的路径 apache2.conf的路径:

1
$ ls /etc/apache2

000-default.conf的路径:

1
$ ls /etc/apache2/sites-available

(3)修改网站根目录 有关网页根目录的设置以上讲述的两个配置文件的设置有关

1)

1
2
$ sudo vim /etc/apache2/apache2.conf
-->找到"<Directory /var/www/>"的位置-->更改"/var/www/"为新的根目录就可以了

2)

1
2
$ sudo vim /etc/apache2/sites-available/000-default.conf
-->找到"DocumentRoot /var/www/html"的位置-->更改"/var/www/html"为新的根目录就可以了

三.重启Apache使设置生效

1
$ sudo /etc/init.d/apache2 restart

重启完毕后,往修改后的新目录添加你的自定义index.html主页文件,再在浏览器的地址栏键入127.0.0.1就可以查看apache服务器的运行效果了.

Electron-用JavaScript来构建跨平台的桌面应用

Electron - 用JavaScript来构建跨平台的桌面应用

   Electron 框架的前身是 Atom Shell,可以让你写使用 JavaScript,HTML 和 CSS 构建跨平台的桌面应用程序。它是基于io.js 和 Chromium 开源项目,并用于在 Atom 编辑器中。Electron 是开源的,由 GitHub 维护,有一个活跃的社区。最重要的是,Electron 应用服务构建和运行在 Mac,Windows 和 Linux。