java打jar包记录

记录,说不定以后还能用到。打jar包指定main程序入口
public class Hello{
    public static void main(String[] args){
        System.out.println("hello");
    }
}
java版helloworld。保存成Hello.java。执行 javac Hello.java会生成Hello.class jar cvf hello.jar Hello.class生成hello.jar 现在直接执行java -jar hello.jar会提示“hello.jar中没有主清单属性”要先指定程序入口 解压hello.jar,会看到/META-INF/MANIFEST.MF文件 Manifest-Version: 1.0 Created-By: 1.8.0_25 (Oracle Corporation) 加上两行 Class-Path: . Main-Class: Hello 执行 jar umfv MANIFEST.MF hello.jar 更新一下jar包里边的文件 执行java -jar hello.jar 成功显示hello。
Read more...

服务器ssh密码验证错误次数太多进行iptables屏蔽

额 早就想写这么个脚本了。这次有点时间写了一下,借助shell下的工具和python还是可以很快写好。 发现总有人爆破我ssh密码,我修改了端口还是跑。是盯上了还是怎么。如果关闭密码登录会好,但是每次换电脑就要添加公key,感觉还是密码方便一点。
# coding: utf-8
import os
import time


def lo():
    ban_ip_list = []

    output = os.popen("""grep "Failed password for root" /var/log/auth.log | awk {'print $11'} | uniq -c | sort -rn""")
    for l in output.readlines():
        count, ip = l.split()
        if int(count) > 5 and ip not in ban_ip_list:
            ban_ip_list.append(ip)
    print ban_ip_list

    iptables_ban_ip_list = []
    output = os.popen("""iptables -L -n|grep "DROP" | awk {'print $4'} """)
    for l in output.readlines():
        iptables_ban_ip_list.append(l.split()[0])

    print iptables_ban_ip_list
    iplist = list(set(ban_ip_list) - set(iptables_ban_ip_list))
    print iplist
    for ip in iplist:
        os.popen("""iptables -I INPUT -s {} -j DROP """.format(ip))


#iptables -L -n --line-numbers
#iptables -D INPUT 8


while 1:
    lo()
    time.sleep(1)
    break
代码还可以改进,比如后边set了 前边就不用判断ip在不在列表里了。我是用服务器上另一个脚本用vim复制后按思路写的。功能跑通就不想改了。加入crontab搞定。 以后有时间改成只屏蔽10分钟,这样实用性就强一点了。想法就是要记录下错误时间,错误时间加十分钟就是解禁时间。
Read more...

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...

iterm2终端高亮设置

官网:http://iterm2.com/downloads.html 参考配置 http://blog.csdn.net/zhaoxy_thu/article/details/9409999 vim ~/.bash_profile 然后将下面的代码拷贝到该文件中: export CLICOLOR=1 export LSCOLORS=GxFxCxDxBxegedabagaced export PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
Read more...

第二天面试记录

这一天打击挺大的,突然感觉真的基础不行。 第一家提前到了半个小时,问了基本情况,聊了一点框架,不搭边的问题,然后黑板画算法题,突然感觉脑袋空白,只能说想法,然后很多还不是最好的处理方法。然后见了hr,问了基本问题。具体多长时间没算,总之导致第二家面试迟到,而且期间没吃午饭。。 第二家,做面试题,填空什么的都是php,写程序,shell,还有基本的系统什么的,能用python就用python写,做完说,人力给错题了,重新给我python的题做。除了一个算法题,都做出来了,感觉那些比较简单。算法题以前还见过,不过怎么也想不起应该怎么做来了。就是一组数分两组个数相同的组,使和差值最小。 第三家, 突然就感觉无力了,问了一个mysql两个常用引擎的区别,索引优化,只答出了一点,回去的路上都想起好几点,不知道当时怎么搞的。还做了一份笔试题,都是基本的,不过很多函数名记不住,只能画横线了。。。还问了一个二分法查找,想了半天什么是二分法。然后写了个递归,被问,list很大,栈是不是会溢出。。然后换人,连问三个基本数据结构,忘干净了。 其实感觉问的问题不是难,借口就是忘记了,其实一看就会的东西。面试完了什么心情都没了,不过好处也显而易见,目标也很明确了。
Read more...

第一天面试记录

蛋碎的一整天--总记 总共面了三家。 第一家,手机app,用户量很多。简单问了一下简历上的东西,没问技术、python的东西。我问了入职一下要做什么,总体很紧张,最后我问了一下我的不足。说:高并发接触太少了,不要死磕一个django框架。说的都挺有道理的,都是做的访问量不高的东西,随便写写就行。感觉面试官人很好,虽然紧张的说话都不自然了应该。答复,等消息,感觉希望不大。 第二家,手机游戏,早到十多分钟,前台没人,以为中午吃饭没上班,面试完走的时候也没人,坑啊。然后令来一个刚毕业的同面试的。到点我打了个电话。。然后让我做面试题,蛋碎的题,一个统计一个字符串有多少个‘a’字符的问题,没写出来。一个mysql创建表修改字段名的,写不出来,用django用的像创建,改字段名基本不操作。一个查看进程所有端口的,我写的netstat -an不知道为啥错了,一个问进程线程的区别,我写了进程开销大,线程小。线程可以共享数据。也说错了,然后总结为基础太差。其中笔试题一题出错,字典写成{{'a':1},{'b':2},...}让我统计字典里的元素个数,我当时就慌了,大叫一声“我操”,python还有这种写法。然后我就把那个字典圈出来了,等后边问,然后是出错题了。突然就感觉,麻痹的太不自信了,虽然没背过python语言参考,但也写了这么长时间了。还有个python题就是考察传参的,缩进都错了,当时我就感觉,我操 搞python的这能容忍。好在题没逻辑,我也知道考的是什么,直到缩进应该到哪。面试官岁数挺大,面部一脸疲惫,也是不容易。总体感觉不爽。让等,让我去我也不会去。 第三家, 先来笔试,sort函数,参数忘记都有什么了,map函数也是,reduce好像根本没用过。问了一个进程间通信的问题。其他的还好,一上来直接边看我做的边说哪里错了,怎么改。心里默默和第二家做了对比,懂的都不怕给你说。然后问了简历上的问题,问了很多相关问题。 后换了一个领导,低头看简历,然后各种刁钻问题,有不知道的。印象最深的问了个数据库范式,名字确实熟悉,但是确实不知道。不过你的回答他满不满意很容易从他答应的声音里听出来,哈哈。最后来个技术副总裁,让我直接画黑板。然后聊了很多,总体感觉说的话有很多很有说服力,能当领导的果然口才还是要有的。聊的什么也就不说了,对错只能自己分辨。然后工资和在现在公司涨的一样。 收获还是蛮多的,我首先决定,下载一本超基础的mysql书,背mysql语句。有官方文档下载就下载官方文档。面试一下还是有好处的,突然就感觉动力十足了。
Read more...

操作系统编写-hello world

clear主要作用是清屏 ax=0600h初始化屏幕 cx起始位置 dx结束位置 然后调用bios中断 clear下边是设置光标的位置 ah=02h dh行,dl列 DispStr主要打印hello world 详细介绍google搜索得到。 boot/boot.asm代码:
org 07c00h
mov ax,cx
mov ds,ax
mov es,ax
call clear
call DispStr
jmp $

clear:
    mov cx,00h
    mov dx, 2580h
    mov bh, 00h
    mov ax, 0600h
    int 10h

    mov bh, 00h
    mov dh, 11h
    mov dl, 00h
    mov ah, 02h
    int 10h
    ret

DispStr:
    mov ax,BootMessage
    mov bp, ax
    mov cx, 12
    mov ax, 1301h
    mov bx, 000ch
    mov dl, 0
    int 10h
    ret

BootMessage:    db  "hello, world!"
times 510-($-$$) db 0
dw 0xaa55

Read more...

操作系统编写环境搭建

lisp群里有人写操作系统,我又想起了以前写的。以前写的没做完,当时有很多不明白的,现在决定看书再做一遍。 环境搭建:系统是ubuntu,编译器gcc,make,nasm,虚拟机bochs,然后应该没了。 bochsrc.txt文件配置 floppya: image=./img/a.img, status=inserted,加载软盘镜像 ata0-master: type=disk, path="./img/c.img", mode=flat, cylinders=20, heads=16, spt=63, 硬盘镜像,这个还没用,建了个10M的文件 boot: floppy,,启动顺序 #boot: disk log: ./log/bochsout.txt 日志记录 parport1: enabled=1, file="./log/parport.out"# 并口的数据记录文件 应该在没啥了,有错误可以再改。 Makefile文件配置
build/boot : boot/boot.asm
	nasm boot/boot.asm -o build/boot

a.img : build/boot
	dd if=build/boot of=img/a.img bs=512 count=1 conv=notrunc

run : a.img
	bochs

clean :
	rm build/boot
每次直接make run就可以了
~/code/os$ tree
.
├── bochsrc.txt
├── boot
│   └── boot.asm
├── build
│   └── boot
├── img
│   ├── a.img
│   └── c.img
├── log
│   ├── bochsout.txt
│   └── parport.out
└── Makefile

目录结构,先这样了。慢慢添加
Read more...

pytoto django论坛放到github上了

github地址 https://github.com/0x55aa/pytoto 写不下去了,又开始写别的了 我去。 总是做着做着发现东西越来越多。
Read more...

Previous Page 1 2 3 4 5 6 7 8 9 10 Next Page 最后一页