ZeroNet Blogs

Static ZeroNet blogs mirror

Changelog: Feb 10, 2015

- Posted in ZeroBlog by with comments

  • Progressive publish timeout based on file size
    • Better tracker error log
    • Viewport support in content.json and ZeroFrame API to allow better mobile device layout
    • Escape ZeroFrame notification messages to avoid js injection
    • Allow select all data in QueryJson

ZeroTalk: - Display topic's comment number and last comment time (requires ZeroNet today's commits from github) - Mobile device optimized layout

Changelog: Feb 9, 2015

- Posted in ZeroBlog by with comments

  • Version 0.2.0
    • New bitcoin ECC lib (pybitcointools)
    • Hide notify errors
    • Include support for content.json
    • File permissions (signer address, filesize, allowed filenames)
    • Multisig ready, new, Bitcoincore compatible sign format
    • Faster, multi threaded content publishing
    • Multiuser, ready, BIP32 based site auth using bitcoin address/privatekey
    • Simple json file query language
    • Websocket api fileGet support

ZeroTalk:
- Decentralized forum demo - Permission request/username registration - Everyone has an own file that he able to modify, sign and publish decentralized way, without contacting the site owner - Topic creation - Per topic commenting

ZeroTalk screenshot

Changelog: Jan 29, 2015

- Posted in ZeroBlog by with comments

The default tracker (tracker.pomf.se) is down since yesterday and its resulting some warning messages. To make it disappear please update to latest version from GitHub.

ZeroNet: - Added better tracker error handling - Updated alive trackers list (if anyone have more, please let us know)

If you want to stay updated about the project status:
We have created a @HelloZeronet Twitter account

Changelog: Jan 27, 2015

- Posted in ZeroBlog by with comments

ZeroNet * You can use start.py to start zeronet and open in browser automatically * Send timeout 50sec (workaround for some strange problems until we rewrite the network code without zeromq) * Reworked Websocket API to make it unified and allow named and unnamed parameters * Reload content.json when changed using fileWrite API command * Some typo fix

ZeroBlog * Allow edit post on mainpage * Also change blog title in content.json when modified using inline editor

ZeroHello * Update failed warning changed to No peers found when seeding own site.

Changelog: Jan 25, 2015

- Posted in ZeroBlog by with comments

ZeroNet - Utf-8 site titles fixed - Changes in DebugMedia merger to allow faster, node.js based coffeescript compiler

ZeroBlog - Inline editor rewritten to simple textarea, so copy/paste, undo/redo now working correctly - Read more button to folded posts with --- - ZeroBlog running in demo mode, so anyone can try the editing tools - Base html tag fixed - Markdown cheat-sheet - Confirmation if you want to close the browser tab while editing

How to update your running blog? - Backup your content.json and data.json files - Copy the files in the data/1BLogC9LN4oPDcruNz3qo1ysa133E9AGg8 directory to your site.

How to have a blog like this

- Posted in ZeroBlog by with comments

Simple, one click cloning

Use Clone feature in ZeroHello

Clone

Alternative, manual method:

  • Stop ZeroNet
  • Create a new site using python zeronet.py siteCreate command
  • Copy all file from data/1BLogC9LN4oPDcruNz3qo1ysa133E9AGg8 to data/[Your new site address displayed when executed siteCreate] directory
  • Delete data directory and rename data-default to data to get a clean, empty site
  • Rename data/users/content-default.json file to data/users/content.json
  • Execute zeronet.py siteSign [yoursiteaddress] --inner_path data/users/content.json to sign commenting rules
  • Start ZeroNet
  • Add/Modify content
  • Click on the Sign & Publish new content button
  • Congratulations! Your site is ready to access.

Note: You have to start commands with lib\zeronet.cmd ... if you downloaded ZeroNet-win-dist package

Changelog: Jan 24, 2015

- Posted in ZeroBlog by with comments

  • Version 0.1.6
  • Only serve .html files with wrapper frame
  • Http parameter support in url
  • Customizable background-color for wrapper in content.json
  • New Websocket API commands (only allowed on own sites):
    • fileWrite: Modify site's files in hdd from javascript
    • sitePublish: Sign new content and Publish to peers
  • Prompt value support in ZeroFrame (used for prompting privatekey for publishing in ZeroBlog)

Previous changes:

Jan 20, 2014

  • Version 0.1.5
  • Detect computer wakeup from sleep and acts as startup (check open port, site changes)
  • Announce interval changed from 10min to 20min
  • Delete site files command support
  • Stop unfinished downloads on pause, delete
  • Confirm dialog support to WrapperApi

ZeroHello - Site Delete menuitem - Browser back button doesn't jumps to top

Jan 19, 2014:

Jan 18, 2014:

  • Version 0.1.3
  • content.json hashing changed from sha1 to sha512 (trimmed to 256bits) for better security, keep hasing to sha1 for backward compatiblility yet
  • Fixed fileserver_port argument parsing
  • Try to ping peer before asking any command if no communication for 20min
  • Ping timeout / retry
  • Reduce websocket bw usage
  • Separate wrapper_key for websocket auth and auth_key to identify user
  • Removed unnecessary from wrapper iframe url

ZeroHello: - Compatiblilty with 0.1.3 websocket changes while maintaining backward compatibility - Better error report on file update fail

ZeroBoard: - Support for sha512 hashed auth_key, but keeping md5 key support for older versions yet

Jan 17, 2014:

  • Version 0.1.2
  • Better error message logging
  • Kill workers on download done
  • Retry on socket error
  • Timestamping console messages

Jan 16:

  • Version to 0.1.1
  • Version info to websocket api
  • Add publisher's zeronet version to content.json
  • Still chasing network publish problems, added more debug info

ZeroHello: - Your and the latest ZeroNet version added to top right corner (please update if you dont see it)

ZeroBlog features

- Posted in ZeroBlog by with comments

Initial version (Jan 24, 2014):

  • Site avatar generated by site address
  • Distraction-free inline edit: Post title, date, body, Site title, description, links
  • Post format using markdown
  • Code block syntax highlight using highlight.js
  • Create & Delete post
  • Sign & Publish from web
  • Fold blog post: Content after first --- won't appear at listing
  • Shareable, friendly post urls

Todo:

  • ~~Better content editor (contenteditable seemed like a good idea, but tricky support of copy/paste makes it more pain than gain)~~
  • Image upload to post & blog avatar
  • Paging
  • Searching
  • ~~Quick cheat-sheet using markdown~~

Code highlight demos

Server-side site publishing (UiWebsocket.py):

def actionSitePublish(self, to, params):
    site = self.site
    if not site.settings["own"]: return self.response(to, "Forbidden, you can only modify your own sites")

    # Signing
    site.loadContent(True) # Reload content.json, ignore errors to make it up-to-date
    signed = site.signContent(params[0]) # Sign using private key sent by user
    if signed:
        self.cmd("notification", ["done", "Private key correct, site signed!", 5000])  # Display message for 5 sec
    else:
        self.cmd("notification", ["error", "Site sign failed: invalid private key."])
        self.response(to, "Site sign failed")
        return
    site.loadContent(True) # Load new content.json, ignore errors

    # Publishing
    if not site.settings["serving"]: # Enable site if paused
        site.settings["serving"] = True
        site.saveSettings()
        site.announce()

    published = site.publish(5) # Publish to 5 peer

    if published>0: # Successfuly published
        self.cmd("notification", ["done", "Site published to %s peers." % published, 5000])
        self.response(to, "ok")
        site.updateWebsocket() # Send updated site data to local websocket clients
    else:
        if len(site.peers) == 0:
            self.cmd("notification", ["info", "No peers found, but your site is ready to access."])
            self.response(to, "No peers found, but your site is ready to access.")
        else:
            self.cmd("notification", ["error", "Site publish failed."])
            self.response(to, "Site publish failed.")

Client-side site publish (ZeroBlog.coffee)

# Sign and Publish site
publish: =>
    if not @server_info.ip_external # No port open
        @cmd "wrapperNotification", ["error", "To publish the site please open port <b>#{@server_info.fileserver_port}</b> on your router"]
        return false
    @cmd "wrapperPrompt", ["Enter your private key:", "password"], (privatekey) => # Prompt the private key
        $(".publishbar .button").addClass("loading")
        @cmd "sitePublish", [privatekey], (res) =>
            $(".publishbar .button").removeClass("loading")
            @log "Publish result:", res

    return false # Ignore link default event

学荣《民国为何多光棍

现在中国的男子,娶妻还是相当容易的——给婚姻介绍所一两百块大洋的介绍费,主要你不挑,当天就能见到人,对方同意的话,下个月就能摆酒、领证——当然,在现实生活中,确有一些男同胞暂时单身,但那不是因为他们找不到对象,而是因为他们要求高了、不愿意将就了。

可是在民国时代,情况就不一样了。民国那会儿,一个中国男子要找个对象,除非你有相当的经济实力,否则那是比较困难的——所以在民国时期的中国大陆,存在着大量的光棍。

举个例子:当年国民政府在北平搞“济良所”,将被拐卖的妇女从妓院里解救出来、暂时收容在“济良所”里,立马就有大量的北平老光棍前来围观,都说“我要”——要来干什么?要来当老婆!因为当时呀,在社会上讨个老婆不容易,“济良所”里面这些女娃,虽然说做过“那行生意”,但是也总比没老婆打光棍强吧。

民国这“济良所”的领导们那也是鬼精鬼精的,立马从中看到了权力寻租的机会——他们向北平的老光棍们伸手,说:“要见女娃儿,先给介绍费”,那北平老光棍们也没办法,该掏的还是得掏,挑了个女娃儿回去结婚,逢人就骂那“济良所”,说“济良所”那个所谓的政府机构,比他妈妓院还要黑。

这就是民国当年发生的事。

再来一个例子。抗战胜利之后,南京办起了一个“日侨收容所”,收容了一大批滞留在华的日本女人,很快,也有一大群的南京老光棍围了上来,也纷纷说“我要”——收容所的管理人员也将这些日本女人,逐个分配给了南京的这些老光棍,当老婆,过日子去了——日本鬼子的女人也是女人,总比没有女人强。在战后那段日子,南京城里流行一个说法,叫做——“人穷照样有老婆”。

在民国时期的国语地区,有一句这样的俗话:“有娶不的光棍,没有嫁不出去的”,意思就是说:在当时的中国,女人要嫁人是容易的,但是男人要娶老婆那就难了——你得有本事。

在方言地区,这句俗话则有各自的版本,例如在江西省瑞金县,是这样说的——“世间总有老单只,从来唔见老妮客”,这是瑞金方言,字面意思也是一样的:有娶不的光棍,没有嫁不出去的”。

在民国时期的中国,地不分南北,都是遍地光棍,到处都是关于光棍的谚语和民谣,这些关于光棍的谚语和民谣,我举几个例子如下:

湖南平江——“出门一把锁,进门一把火”;

福建龙岩——“三斤肉,一顿吃;衣裳破,无人补”;

湖南长沙——“单身汉,是神仙,半升米,上得天”;

浙西——“光棍好比活神仙;一把雨到天;吃个在肚里,着个在身上;生起病来叫皇天”;

江苏连云港——“光棍汉好做,五更天难挨”;

浙东——“光棍好做,正六难过”。

这些谚语和民谣,有的是嘲笑光棍,有的也隐隐约约对光棍这个群体,透露出了一丝的同情。其中,江苏连云港和浙东的这两则,却是直接道出了光棍汉的典型困境——性饥渴:

江苏连云港——“光棍汉好做,五更天难挨”——所谓“五更天”,就是指的天亮之前的几个小时,夜半梦醒,突然性致盎然,可是枕边却是空荡荡的,因而只能自撸,要么就一直熬到天亮,天亮之后,再想办法,去个什么地方解决下算了。

浙东——“光棍好做,正六难过”——这里所谓“正六”,指的是“正月”和“六月”,为什么光棍在正月和六月会特别难熬呢?因为正月是春节期间,大过年的,女孩子往往打扮得很漂亮;而六月则正是炎热时分,女孩子穿的少,肉光闪闪,光棍只能看,不能碰,浑身难受,真是煎熬。

中国的民国史上,光棍问题,是一个长期被历史研究者忽略的问题——民国婚恋市场上的男女比例,严重失调。这也许是造成民国社会不稳定的客观因素之一。

以山东济南为例。依据韩国学者金亨洌在其论文《近代山东城市社会环境的变化》中的统计,民国时代的济南,男女比例竟然高达140比100——也就是说,每140个男子当中,至少有40名找不到对象、打光棍。

再看一例:《中华民国史事日志》1930年5月9日记录:浙江省人口普查显示:女人比男人少了二百五十万人。

又,依据《中国人口史》的统计,1912年中国全国男女比例,大约为122比100。换言之:每122个男子当中,至少有22个男子找不到对象。

让我们看看今天,就知道当年问题有多严重:2010年中华人民共和国第六次人口普查所得出的数据显示:中国在2010年的男女人口比例,为105.2比100。也就是说:每105个男子,只有5个左右找不到对象,绝大多数男人,是可以成家立室的。

相比之下,民国初年男女人口比重问题(122比100),可想而知,该有多严重。

生物学告诉我们:在自然状态下,男女人口的出生比例,约为105:100。那么,为什么在民国时期,会出现140比100、122比100、甚至在一个省内(浙江),女人比男人少了二百五十万人这样严重的情况呢?

女人不会无端从人间蒸发。讲到这里,我们有必要旧事重提,讲一讲民国时期城乡普遍流行的一个恶习:溺死女婴。

“溺死女婴” 这个事,对于上了点年纪的中国人而言,并不陌生。由于家贫以及“重男轻女”传统观念的影响,中国在历史上长期存在溺死初生女婴的现象——当然了,溺死,只是其中的一种手法,在民国时期,父亲(通常是父亲)杀死初生女婴的办法有许多种,除了溺死之外,还有捂死、弃野、掐死等,各种办法都有。

为什么那个年代中国当父母的,能忍心溺死自己的亲生骨肉呢?主要是两个原因:首先是家穷;其次是“重男轻女”的观念——民国那个年代的中国人认为:养女儿是亏本的,不但是养不起,而且就算是勉强养大之后,女儿嫁到婆家去,从此事事向着婆家、就不再是娘家的人了,也就是说——白养了。当年的国民,尤其是农村里的,普遍都是怎么想。

本来就穷,谁还愿意养那么多女娃?所以民国时期的中国大地,溺死女婴的现象,十分严重——这就导致了前面所提到的全国男女122比100,其中济南更是男女140比100的性别严重失衡现象。

而众所周知的是,男女人口比例的警戒线,一般是107比100——民国初年的男女比例失衡程度,已经严重超标。

在这种男女比例严重失调的情况下,还出现了雪上加霜的现象:一夫多妻制。

民国时期的中国,实行的是一夫一妻多妾制,实质上就是一夫多妻制。例如,袁世凯有10个妻妾。四川军阀杨森,有12个妻妾,号称“渝舍十二钗”。在民国时期,中国官界、商界各种 “成功人士” 广泛存在一夫多妻现象,这个众所周知,读者耳熟能详,笔者也就不必列举了。

这还不算。除此之外,民国时期还存在合法的公娼制度,外加暗娼行业。因此,又有一部分青年女性脱离了婚恋市场、从事皮肉生涯去了。

依据1917年英国社会学家 S.D.Gamble 调查的数据,当时的上海市每 137 个人 (不分男女) 之中,就有一个是娼妓。

而到了1935年,上海市更是发展到每 20 个女性当中,就有一个人是娼妓。

本来男女比例早就超过了人口男女比例警戒线(107比100),而且婚姻制度还不公平(一夫多妻制),不但如此,还存在着娼妓制度.........在凡此种种、雪上加霜之下,依此推算,在民国的婚恋市场上,实际的男女比例,很有可能是在150:100上下。换言之:全中国大约有三分之一的男子,讨不到老婆、无法成家——这应该是比较合理的推断、甚至还是保守的推算。

而大量的研究表明:人口中单身男性比例的攀升,会导致暴力行为的增多、犯罪率的上升和社会结构的不稳定。

举捻军为例。学者邢采、张希、牛建林的论文《人口性别比例失衡对人类行为的影响》,对性别失衡间接导致捻军暴乱一事,作了系统的研究——1851年至 1863 年的捻军叛乱,是探讨性别失衡导致社会暴力的典型例子。在19世纪的华北地区,性别比例极高,达到了男女129比100, 有高达 25%的男性至死未婚。大量过剩的年轻男性,仇视社会,心理扭曲,成为无家可归的土匪,并最终形成一股强大的捻军,对当时的满清统治者,构成了巨大的威胁。

这一类研究,福建先民开发台湾岛的历史,也有同样的说法。在清朝初期,清政府禁止福建汉人携带女性家属前往台湾岛拓荒、造成了台湾存在大量的光棍、并因此严重危害了当时台湾岛上的治安。

资料《噶玛兰厅志》对台湾岛开拓初期“光棍危害治安”的情况,有以下的记载:

           ……..台湾一种无宅无妻子,不士不,不工不,不负载道路,俗指谓罗汉脚。嫖摸窃,械斗旗,靡所不。曷言乎罗汉脚也?身游食四方,随处结党;且衫不全,赤脚生也……..

男人没有家庭,就没有束缚,没有束缚,就没有后顾之忧,也就什么都敢干,社会因此就难以稳定——当今人民法院审理离婚案件的时候,尽量劝说双方不离婚,就是这个思路。

当然,这里说的是光棍对社会治安的影响。但这个话题不是本文所要探讨的题目,因此在此不作深究,为免跑题,一笔带过。

讲到这里,民国时期的中国为何多光棍?这个问题的答案,已经是比较清晰的了,在此,笔者对这个问题的一些关键事实,再作一次梳理和总结如下:

1、民国时期由于国民贫穷,加上“重男轻女”观念的影响,当时的中国家庭生下女婴,有溺死女婴的恶习,当然并非人人都这样干,但是当时这样做的人,比例并不小。这样一来,长大之后的娃娃,就是男多女少,这造成了男女人口比例的第一次失衡;

2、民国时期实行一夫一妻多妾制,城乡地主、财主、乡绅、官老爷、武官基本上都娶多个妻妾,这再一次加重了中国青年婚恋市场上的男女失衡状态;

3、除此之外,民国时期还实行娼妓合法的制度。有一大批的女子远离婚恋市场、从事皮肉生涯去了——这样一来,青年婚恋市场上的女子,进一步减少,中华民国男子的娶妻一事,就更是僧多粥少,变得雪上加霜了。

综上所述,由于民国时期存在上述种种的社会背景,也就有了民国元年122100 的全国男女性别比,也因而有了民国时期遍地光棍的社会现象——而至于“民国多光棍”的社会现象,对民国时期社会的不稳定,产生了多大的负面影响,也许需要另文进行探讨。今天就写到这里。

   文/冯学荣,近代史写家,著有《日本为什么侵华:从甲午战争到七七事变》、《亲历北洋:从共和到内战1912-1928》



学荣请病假g bing jia﷽﷽﷽﷽﷽﷽﷽﷽﷽奶的力气,候国可传《民国为何不禁枪

民国时期的中国,有许多光怪陆离的事物,这些事物在当年,国民司空见惯、因此也并不觉得古怪。但是,由于七八十年时光的隔阂,我们今天回首看起来,它们是那样的难以想象、匪夷所思、三观尽毁、节操丧尽。

这些令人三观尽毁的事物,例如民国时期的娼业合法、一夫多妻制、鸦片专卖制度等,还有一个——持枪合法。“持枪合法”这件事,在我们今天的中国人看来,会令许多人难以理解:在民国时期,中国的国民竟然大量持枪,例如据统计,在1920年代末,广东仅番禺一县,就有民枪十八万支以上——看清楚了:不是十八支,而是十八万支。

持枪自由?那不是美利坚合众国的国民才可以干的事情吗?中华民国竟然曾经也是如此?老百姓公然持有枪支?这还得了?还有王法吗?

事实上,“民国不禁枪”这件事,我们现在看起来尽管是不敢想象,但是我以一个读书人的阅历告诉诸位看官:任何历史事物的存在和发展,都有它当时存在的合理性。民国时期国民的持枪自由,这件事其实也不能例外——它有它存在的历史渊源以及它发展的逻辑。

这件事的渊源,说起来也并不复杂,请听笔者慢慢道来——要讲清楚“民国为何不禁枪”这个问题,就要从古代中国的“保甲制度”说起。

什么叫做“保甲制度”呢?所谓“保甲制度”,是这么回事:古代中国的皇朝政府,基本上都是小政府。古代中国的传统政府,其行政只到县一级,也就是说:最低一级的行政机关,是县衙,也就是县政府。县衙之下呢?没有了——没有乡政府,也没有镇政府,也没有什么村委会、街道办事处之类的。

那么,县以下是怎么回事?就是无政府状态吗?无法无天了吗?其实也不是。当时县以下实行的,是一种半官方的治安管理制度——“保甲制度”——由乡绅将村民组织起来,以若干户为一“保”,若干户为一“甲”,并推选村里的贤能之士,充当“保长”、“甲长”。

为什么要这样组织起来呢?其中一个主要的动机,就是为了治安。山高皇帝远,县衙门离咱们村,是上百里地,倘若土匪要来村里杀人放火,我们派人到县衙去报案,人还没跑到县衙,村里的人儿都死光了。怎么办?所以俺们要自卫——古代中国政府是穷政府、小政府、弱政府,基层人民自己组织起来自卫,这样一来,人民好,政府也好,为什么说政府也好?因为人民自己组织自卫,政府可以节省巨额的财政经费——省钱才是硬道理。

正因为中国历代以来有“保甲制度”和乡村自卫的传统,所以中国的民间武力历来都是合法存在的——这也是中华武术得以生存和发展的重要土壤之一:人民要练拳,练好了拳,不但可以自卫,还可以参加一种叫做“团练”的人民基层武装。

什么叫做“团练”呢?所谓“团练”,就是基层人民的自卫武装。它不是政府的武装,而是人民自己的武装——在古代中国,“团练”在整个中国大地,到处开花,俺们村有团练,你们村也有团练,他们村也有团练。俺们这些老百姓,自己组织起来,操练兵器,练习搏击,为什么?为了防止盗匪来俺村杀人放火。县太爷鞭长莫及,我们平时主要靠自卫。皇帝管不了俺们。俺们只好自个儿管自己。

“团练”这种民间武装在当时非常厉害,厉害到了什么地步呢?我举个例子。在明代的历史上,有一个很出名的人——闯王李自成。这闯王李自成是怎么死的呢?他不是被明军杀死的,也不是被满清鞑子杀死的,李自成其实是被“团练”杀死的。咋回事呢?当年当天,李自成带了一些残兵败将,溃逃到湖北的一个农村,这当地村里的“团练”一看:不妙,来了一伙操陕西口音的大汉,个个都携刀带枪,这些是什么人?还用问?是盗匪!于是,团练的壮士们一哄而上啊,那闯王李自成尽管是久经沙场,但毕竟是虎落平阳、寡不敌众,就在田间,李自成被湖北的团练杀死,横尸郊野。

还有一个例子。在第一次鸦片战争时期,广州三元里村民的抗英事件,其实也是靠当地以及周边乡村的团练,敲锣打鼓,四面八方都来支援,声势才变得浩大起来,并直接给广州官府和英国洋兵施加了足够的压力,才使洋兵不敢前来报复,以息事宁人告终。

“团练”还有一次十分威风的历史,那就是和太平天国打仗的历史了。闹太平天国的时候,那八旗兵不能打仗,绿营也拼不过“长毛”,咋办呢?湖南人曾国藩就以“团练”这种民间自卫武装为基础,拉起了一支闻名中外的团练部队——湘军,并最终就是靠的这一支“团练”,剿灭了太平天国。

所以,在太平天国之后,清政府就更是放任“团练”在民间的发展——晚清政府并不热衷于消灭民间的武装,很多时候甚至是鼓励民间武装——不但清政府节省了警察财政支出,而且村村自卫,土匪就无法发展壮大,皇帝的政权就少了一份来自于绿林草莽的威胁,何乐而不为?

正是因为中国有这种“民间自卫”的传统,所以,民间有组织的自卫武装,政府向来都是允许的。清末民初知名的两广政治巨头龙济,曾经说过以下的一段话

        “粤省地方, 素称多盗,人民卫计,往炮,以不虞,时势使然,向未禁止。”

龙济这段话是什么意思呢?翻译成现代中文,是这个意思:

        “咱们广东、广西这块地方啊,从来是出了名的土匪多,人民老百姓为了自卫,往往自己配置枪支弹药,以防万一,这是社会环境所导致的必然结果,我们政府从来都是不禁止的”

龙济这段话,在旧时代的官场里面,具有很强的代表性:在当年当官的人,大多数都是这样想的:人民配备枪支用来自卫,不但对政府无害,而且是减轻了政府的治安工作负担——所以,清末民国,都不禁枪。

不但龙济光这样想,连民主革命先驱孙中山,也是这样想的。孙中山在生前,曾经发表过一篇演讲,叫做《在广州联欢会的演,在这篇演讲里,孙中山是公然鼓励农民持枪自卫——孙中山这篇演讲的原话是这样的,照录如下:

         “(你们农民)如果要以后不被人欺,便要从今日起体,挑各家的壮丁来练农民自卫军。你够这样进行,政府可以从中帮助,用极低的价卖枪给。你有了成了很好的民自卫军,便是中国第一等的主人翁,很有力的!”

孙中山的演讲是白话文,我就不必翻译了,大家都能看得懂——很明显,孙中山这是在鼓励广州的农民编练自己的自卫武装,并鼓励农民武装向政府购买枪支。对的,你没有看错——孙中山鼓励广州的农民向广东政府的兵工厂购买枪支。

辛亥革命实际上很大程度上是依靠民军的力量,才得以对清政府形成巨大的压力,孙中山在辛亥革命以前乃至期间,一直在培植各地的民军力量——从某种程度而言,是民间武装成就了孙中山,所以孙中山对人民持枪自卫这件事,不但不反感,而且往往是鼓励。所以当年广东的民团、乡团购买枪支弹药,广东政府一般都是许可的。

读到这里,我想有的读者可能会有这样的疑问:孙中山允许民间持枪,难道孙中山就不担心民间武力壮大了之后,会凭借手中的枪支、颠覆中华民国吗?

问得好。是的,孙中山的确曾经这样担心过。讲到这里,笔者有必要对以下两个概念进行区分:

1、失控的政治武装集团;

2、可控的民间自卫力量。

什么叫做“失控的政治武装集团”?李自成的部队就是:它不以自卫为目的,而是以颠覆明朝为目的。而“可控的民间自卫力量”则指的是各乡各村的团练武装,这些团练都是自卫武装,它们无意颠覆皇朝政府。

一个村一个村的团练,基本上都是几十到一百人的规模,而且其组织的宗旨是十分明确的——自卫防匪。这种武力并不以颠覆皇帝政府为目的,也不具备颠覆皇权的能力,所以,无论清政府、孙中山、龙济光,蒋介石,都是允许的——因为这些零散武装,都在政府的控制力之内,属于可控的武装。用俗话来说:你怎么闹也跳不出我的五指山。

而那种有组织的、大规模的、动机叵测的、甚至有国外势力做后盾的武装,孙中山也是不允许的,最典型的例子,就是发生在1924年的广州“商团叛乱”事件——当年的广州商团,其武装力量十分庞大,而且在孙中山的眼中,广州商团有“英国势力支持”的背景、有颠覆广州国民政府的危险性,所以,广州国民政府毫不犹豫地对广州商团进行了武力取缔。

孙中山死后,蒋介石对“国民持枪自卫”这件事,并没有什么新鲜的创见——他沿袭了清末民初以来的传统,继续容许“团练”在民间的存在,继续允许基层老百姓持枪。

事实上,蒋介石不但是继续容许民间自卫枪支的存在,而且蒋介石其实是借鉴了曾国藩的经验——大规模地利用了当时的民间武装、帮他剿共。在当时,国民政府在湘赣等地区,以乡村“团练”为基础、成立了大量的“剿共民团”,这些“民团”接受了国民政府的委任、充当了国民党军队的马前卒、捕杀共产分子,不遗余力。例如,当年彭德怀、毛泽东、谢觉哉等共产人士被抓,就是被民团抓的——当然,这些人最后都得以逃出,但不是人人都能如此幸运,当年死于民团手下的共产志士,不计其数,例如李天佑、陈仁江等,这些人由于死得早,说起来现在很多人都不知道他们。

国民党于1927年在南京成立中央政府之后,其有效行政区域,不断扩张,在其行政所及之处,国民政府对“人民持枪”这件事,实行了“执照”政策——人民可以持枪,但是必须事先向政府提出申请、领取“持枪执照”。

这些事情,我们今天看起来是匪夷所思,但是我们看历史问题,一定要用历史的眼光——国民政府时期,在当时的世界上,“凭证持枪”是一个国际惯例——美国、英国、法国……很多国家都是这么干的,所以当时的国民政府认为:允许人民持枪自卫,这件事无论是从中国历史的纵向考察,还是从国际惯例的横向观察,国民政府都不认为有什么不妥,所以,国民政府不禁枪。

讲到这里,我想许多读者应该开始能理解当时的国民政府不禁枪的理由了——因为首先从中国历史来看,当时的中国一直不禁枪;其次从当时的国际惯例来看,那些帝国主义列强,基本上也不禁枪。所以,国民政府当时也认为:没有禁枪的必要。国民政府所要做的,只是对人民持枪这件事,做好执照管理就是了。

实事求是地讲:就当时的情况而言,国民政府不禁枪,是有它的道理的。当然,几十年之后,许多西方国家开始重新审视枪支政策、并先后在不同的程度上,实施了枪支管制,现在台湾的中华民国,参考当今世界各国的惯例,也修正了自己的枪支管理法律、实施了枪支管制,这是后话,但是我们谈历史,就要站在历史当时的具体语境中去,才不至于得出“刻舟求剑”的结论。

1946年,抗战胜利不久,国民政府出台了一部《卫枪枝管理条例》,在这部法律当中,国民政府规定了人民可以持有的自卫枪支的种类,仅限于以下几种:步枪、马枪、手枪、土枪、猎枪。

我们来看看这部《卫枪枝管理条例》的相关条文:

第二条

本条例所称自卫枪枝如左。

一、新式枪类:各式步枪、马枪、手枪等属之。

二、旧式枪类:土造各式枪铳等属之。

前项枪类包括弹药及新式猎枪。

这一条的意思是说:人民持有自卫枪支,可以,但是,持有大炮、坦克、炸弹,是不允许的。

卫枪枝管理条例》的第六条,则规定了每人一支、每户两只的持枪限额。条例第六条的原文如下:

第六条

  人民及公务员、退伍军官佐自卫枪枝,每人以一枝为限,每户不得超过二枝。应于本条例施行后第一期内,申请查验给照,其程序如左。

  一、备具请领执照申请书,连同当地往户三家或商店二家之担保,及本人最近脱帽像片二张,送由保甲乡镇区长分别层转审查。但公务员、退伍军官之担保,得由荐任或校官以上公务员二人为之,并须在申请书加盖服务机关印信,迳送审查。

  二、主管查验官署收到申请书后,应即详核,并分别地区编造登记册,派员前往适中地点,办理查验烙印事宜,并发给临时查验证及收纳照费。

  三、查验完竣后,应于一个月内发给枪枝执照,如为临时请领补换执照者,其执照使用年限,仍填至每期期底止。

  在华外人携有自卫枪枝时,应备具申请书,连同照费、相片,送由附近各该国使馆或领事馆签证具保,转送当地查验官署审查给照。如系各国驻华外交使节人员请领枪照时,应送由外交部转首都警察厅办理。

我们从上述的《卫枪枝管理条例》第六条看得出来:在1946年的中华民国,不但中国人民可以持枪自卫,就是连在中国境内的外国人,也可以合法持枪——这真是三观尽毁。

卫枪枝管理条例》的第十二条则规定得很清楚:机关枪、炮弹、大炮等超出自卫范围的武器,政府是要收缴的。政府为什么要收缴这些呢?因为这些武器已经不是“自卫”那么简单了,它们是要“颠覆民国”的,所以必须是要收缴的——所以,民国尽管不禁枪,但它对重型武器、进攻型武器,仍然是要管制的。

我们也来看看这个《卫枪枝管理条例》第十二条的原文:

第十二条

  左列各项枪炮、弹药,应报由主管军事机关给价收归国有。

  一、本条例第二条所列枪枝以外之各式自动步枪、轻重机关枪、炮类及其他新式武器及弹药等。

  二、未经核准给照及超额之自卫枪弹。

  前项枪炮、弹药,省或院辖市政府得呈准收购,以为充实所属警察及保安部队之用,其办法由内政部会同主管军事机关定之。

讲到这里,我要指出一点:国民政府允许团练存在、容许人民持枪,本意是为了遏制土匪,但却在无意中,使土匪得到了大量的枪支。依据1925年上海泰东图书出版、由何西亚编著的《盗匪问题之研究》,当时中国土匪手中的枪支,许多其实就是抢劫人民而得来的。

由此,我们发现这是一个悖论:国民政府容许人民持枪,本意是为了防土匪,却万万没有想到,人民手中的枪支,却最终流转到了土匪的手中——本意是维护治安,却以祸害治安告终。

也正因为如此,国民政府的枪支管理制度,并不一定是对的,本文仅仅是从历史的角度,探讨其存在的历史渊源,仅此而已,并无他意,读者不必作过度解读。

文/冯学荣   近代史写家,著有《日本为什么侵华:从甲午战争到七七事变》、《亲历北洋:从共和到内战1912-1928》