Quantcast
Channel: 看得透又看得远者prevail.ppt.cc/flUmLx ppt.cc/fqtgqx ppt.cc/fZsXUx ppt.cc/fhWnZx ppt.cc/fnrkVx ppt.cc/f2CBVx
Viewing all 20464 articles
Browse latest View live

dns解析服务器程序-MaraDNS

$
0
0
MaraDNS: A small open-source DNS server | 2019 update: ip4 and ip6 added 

ABOUT

MaraDNS is a small and lightweight cross-platform open-source DNS server. The server is remarkably easy to configure for someone comfortable editing text configuration files. MaraDNS is released under a BSD license.
I wrote MaraDNS while I was a college student and a travelling English teacher during the first 2000s decade. Now that I’m working as a professional software developer, I have much less time to devote to MaraDNS.
Since MaraDNS is open source, there is nothing stopping anyone from forking this repository; I ask such users to please not call any such forks “MaraDNS”.

Table of contents

  • Supported OSes
  • Important note for Windows users
  • What is DNS
  • MaraDNS' History
  • Overview
  • Internals
  • Other DNS servers
  • MaraDNS' future

Supported OSes

There are no “supported OSes” for MaraDNS. I currently use CentOS 7 to develop MaraDNS, and a Windows XP virtual machine to make the Windows binary.
Distribution-specific issues should be forwarded to the bug processing system for your distribution.

Important note for Windows users

Users of Microsoft Windows are better off downloading a prebuilt Windows binary: http://maradns.samiam.org/download.html Be sure to download the file with the .zip extension.

What is DNS

The internet uses numbers, not names, to find computers. DNS is the internet's directory service: It takes a name, like "www.maradns.org", and converts that name in to an "IP" number that your computer can use to connect to www.maradns.org.
DNS is one of these things many take for granted that is essential to using today's internet. Without DNS, the internet breaks. It is critical that a DNS server keeps the internet working in a secure and stable manner.

MaraDNS' History

MaraDNS was started in 2001 in response to concerns that there were only two freely available DNS servers (BIND and DjbDNS) at the time. MaraDNS 1.0 was released in mid-2002, MaraDNS 1.2 was released in late 2005, and MaraDNS 2.0 was released in the fall of 2010.
MaraDNS 1.0 used a recursive DNS server that was implemented rather quickly and had difficult-to-maintain code. This code was completely rewritten for the MaraDNS 2.0 release, which now uses a separate recursive DNS server.
MaraDNS was fully maintained and actively developed without needing contributions from 2001 until 2010. MaraDNS 2.0 is the final release that will be made without significant financial support being made. Security and other critical bugs are still taken care of, but there is no guarantee of any technical support above and beyond that.

Overview

MaraDNS 2.0 consists of two primary components: A UDP-only authoritative DNS server for hosting domains, and a UDP and TCP-capable recursive DNS server for finding domains on the internet. MaraDNS' recursive DNS server is called Deadwood, and it shares no code with MaraDNS' authoritative DNS server.
In more detail: MaraDNS has one daemon, the authoritative daemon (called "maradns"), that provides information to recursive DNS servers on the internet, and another daemon, the recursive daemon (called "Deadwood"), that gets DNS information from the internet for web browsers and other internet clients.
A simplified way to look at it: MaraDNS puts your web page on the Internet; Deadwood looks for web pages on the Internet.
Deadwood has its own webpage and release schedule. When new MaraDNS releases are made, they bundle the current stable version of Deadwood in the source code tree; the build scripts compile both MaraDNS and Deadwood at the same time.
Since MaraDNS' authoritative daemon does not support TCP, MaraDNS includes a separate DNS-over-TCP server called "zoneserver" that supports both standard DNS-over-TCP and DNS zone transfers.
Neither MaraDNS nor the UNIX version of Deadwood have support for daemonization; this is handled by a separate program included with MaraDNS called Duende. Deadwood's Windows port, on the other hand, includes support for running as a Windows service.
MaraDNS also includes a simple DNS querying tool called "askmara" and a number of other miscellaneous tools: Scripts for processing MaraDNS' documentation, a simple webpage password generator, some Unicode conversion utilities, scripts for building and installing MaraDNS, automated SQA tests, etc.
MaraDNS is a native UNIX program with a partial Windows port. Deadwood, MaraDNS' recursive resolver, is a fully cross-platform application with a full Windows port.
MaraDNS 2.0 has full (albeit not fully tested) IPv6 support.

Internals

MaraDNS 2.0's authoritative server uses code going all the way back to 2001. The core DNS-over-UDP server has a number of components, including two different zone file parsers, a mararc parser, a secure random number generator, and so on.
MaraDNS is written entirely in C. No objective C nor C++ classes are used in MaraDNS' code.
MaraDNS 2.0's "Deadwood" recursive server was started in 2007 and has far cleaner code. Its random number generator, for example, uses a smaller, simpler, and more secure cryptographic algorithm; its configuration file parser uses a finite state machine interpreter; its handling of multiple simultaneous pending connections is done using select() and a state machine instead of with threads.
Deadwood's source code can be browsed online, and there are a number of documents describing its internals available.

Other DNS servers

The landscape of open-source DNS servers has changed greatly since 2001 when MaraDNS was started. There are now a number of different DNS servers still actively developed and maintained: BIND, Power DNS, NSD/Unbound, as well as MaraDNS. DjbDNS is no longer being updated and the unofficial forks have limited support; notably it took nearly five months for someone to come up with a patch for CVE-2012-1191.
MaraDNS' strength is that it's a remarkably small, lightweight, easy to configure, and mostly cross-platform DNS server. Deadwood is a tiny DNS server with full recursion support, perfect for embedded systems.
MaraDNS' weakness is that it does not have some features other DNS servers have. For example, while Deadwood has the strongest spoof protection available without cryptography, it does not have support for DNSSEC.
As another example, MaraDNS does not have full zone transfer support; while MaraDNS can both serve zones and receive external zone files from other DNS servers, MaraDNS needs to be restarted to update its database of DNS records.

MaraDNS' future

2019 update: There have been been some changes in my personal life which make it possible for me to work on MaraDNS and Deadwood again for a couple of hours each week.
My plans for MaraDNS in 2019 is to fix at least two bugs (I have already fixed one and released Deadwood 3.2.14), and to add at least one new feature to MaraDNS. While I now have a little more time to look at non-critical bugs and to add small features, I do not have enough free time for MaraDNS to do significant overhauls (e.g. DNSSEC).
It would require some large company or government agency paying me a full-time living wage to add significant new features to MaraDNS.

dns解析服务器程序-dnserver

$
0
0
Simple development DNS server written in python.
Simple DNS server written in python for use in development and testing.
The DNS serves it's own records, if none are found it proxies the request to an upstream DNS server eg. google at 8.8.8.8.
You can setup records you want to serve with a custom zones.txt file, see example_zones.txt for the format.
To use with docker:
docker run -p 5053:53/udp -p 5053:53/tcp --rm samuelcolvin/dnserver
Or with a custom zone file
docker run -p 5053:53/udp -v `pwd`/zones.txt:/zones/zones.txt --rm samuelcolvin/dnserver
(assuming you have your zone records at ./zones.txt, TCP isn't required to use dig, hence why it's omitted in this case.)
Or see docker-compose.yml for example of using dnserver with docker compose. It demonstrates using dnserver as the DNS server for another container which then tries to make DNS queries for numerous domains.
To run without docker (assuming you have dnslib==0.9.7 and python 3.6 installed):
PORT=5053 ZONE_FILE='./example_zones.txt' ./dnserver.py
You can then test (either of the above) with
~➤  dig @localhost -p 5053 example.com MX
...
;; ANSWER SECTION:
example.com. 300 IN MX 5 whatever.com.
example.com. 300 IN MX 10 mx2.whatever.com.
example.com. 300 IN MX 20 mx3.whatever.com.

;; Query time: 2 msec
;; SERVER: 127.0.0.1#5053(127.0.0.1)
;; WHEN: Sun Feb 26 18:14:52 GMT 2017
;; MSG SIZE rcvd: 94

~➤ dig @localhost -p 5053 tutorcruncher.com MX
...
;; ANSWER SECTION:
tutorcruncher.com. 299 IN MX 10 aspmx2.googlemail.com.
tutorcruncher.com. 299 IN MX 5 alt1.aspmx.l.google.com.
tutorcruncher.com. 299 IN MX 5 alt2.aspmx.l.google.com.
tutorcruncher.com. 299 IN MX 1 aspmx.l.google.com.
tutorcruncher.com. 299 IN MX 10 aspmx3.googlemail.com.

;; Query time: 39 msec
;; SERVER: 127.0.0.1#5053(127.0.0.1)
;; WHEN: Sun Feb 26 18:14:48 GMT 2017
;; MSG SIZE rcvd: 176
You can see that the first query took 2ms and returned results from example_zones.txt, the second query took 39ms as dnserver didn't have any records for the domain so had to proxy the query to the upstream DNS server.

from https://github.com/samuelcolvin/dnserver

dnshjmon

$
0
0
dnshjmon is a free tool to monitor public DNS records and report hijacks.

Syntax

python dnshjmon.py [arguments]
Valid arguments:
 -h                   : show help

-d : full path to dns config file.
Defaults to dnshjmon_dns.conf in current folder

-s : full path to file that contains
DNS server IP addresses
Use this setting to overrule the default behaviour
of using the OS DNS server configuration
** Note: option -n requires the python-dnspython library **
(http://www.dnspython.org/)

-mail : Test e-mail configuration

DNS Config file

This is a flat ascii file (dnshjmon_dns.conf) that contains the list with hostnames that need to be checked and the list with valid IPs for that hostname.
hostname=ip
You can specify multiple IP addresses and/or even use CIDR notation. Simply separate entries with a comma:
hostname=127.0.0.1,192.168.0.1/25
If you want to exclude a certain IP, prefix it with a dash
hostname=127.0.0.1,192.168.0.1/25,-192.168.0.5

SMTP Config file

This file (dnshjmon_smtp.conf) will be created the first time you run dnshjmon.py, using an interactive wizard. If you want to add additional mailserver configurations or change the existing one, simply edit the conf file. You can test if the mail configuration works correctly by using the -mail argument. By default, emails will be sent with high-priority and requesting a return-receipt.

Custom nameservers

By default, dnshjmon will use the OS DNS configuration. If you want to use specific nameservers, you'll need to install the python-dnspython library. dnshjmon will automatically detect if the library is present and allow you to use the -n option. Using -n, you can specify the location of a flat ascii file that contains the IP addresses of the nameservers to use.

Usage

Simply schedule the script as a Cron job or Scheduled Task. Please note that the script was written and tested against python 2.7. More info: https://www.corelan.be/index.php/2013/12/29/a-chain-is-only-as-strong-as-its-weakest-link-dns-hijack-monitoring/

基于netty实现的socks5代理服务器程序:socks5-netty

$
0
0


基于netty实现的socks5代理

安装

  • 下载git代码 ,mvn install
  • 或者直接下载bin/proxy

运行

  • linux : target/assembler/jsw/proxy/bin/proxy start
  • windows : target/assembler/jsw/proxy/bin/proxy.bat start

配置

  • config.properties
    • port=11080 监听端口
    • auth=true 是否鉴权
  • password.properties
    • user=password 鉴权用户密码,每行一个
  • log4j.perperties
    • log4j.logger.com.geccocrawler.socks5=info 默认级别是info只输出流量日志

扩展

  • 自定义鉴权方式
    实现PasswordAuth接口,通过proxyServer.passwordAuth()方法设置。系统自带的是PropertiesPasswordAuth,基于properties文件的鉴权
  • 自定义代理日志
    实现ProxyFlowLog接口,通过proxyServer.proxyFlowLog()方法设置。系统自带的是ProxyFlowLog4j,基于log4j的日志记录.

哪里见过这样的“暴徒”?

$
0
0
7月1日晚上发生的,可不是食面食得不过瘾就打人抢钱的流氓行为。先不说那根本是当局为了公关而置的陷阱,大家看一看,整个过程只针对政权,没有伤害半个附近的商店汽车或途人,这在欧美不大可能发生,日本也不一定做得到。入去了,一切文物完好无缺,什么“肆意捣毁”基本上是抹黑,就连汽水也畀钱才敢饮,没有半点私人得益。请问一下,你哪里见过这样的“暴徒”?
猪狗升天见证香港堕落
大军压境,清场在即了,学生没有只顾自己逃命,当听到有人宁愿被打穿唔肯走,竟然有人掉头,回去会议厅把他们拉走,这种leave no one behind的情义,我只从讲述军人的书本上见过,那天却在自己的城市看见。相比之下,特府那些一出事就你推我我推你的中年高官,真的丑死人了。这个城市之所以堕落,正正是因为有情有义的,多数都给压在下面,而有奶就是娘的却很多猪狗升天.

川普在G20峰会上的见好就收

$
0
0
与中国打贸易战,是川普总统从竞选时起就坚持的政策主张。

可惜一开始没有人将此当回事,总觉得不过是政客的口号而已。然而近一年半的事实证明,川普是在玩真的,第一轮对500亿中国商品加税,制裁了中兴公司,第二轮对2000亿商品加税,切断华为的美国供应链........

并且,眼看着第三轮对2500亿商品的加税又要来了,如果G20上两国领导人谈崩的话。

"川普是在玩真的",G20峰会前已经无人再怀疑这一点。全世界都屏息以待两国领导人的会谈结果。

结果是戏剧性的,川普这次又不玩真的了,全世界为此虚惊一场。

他会谈后宣布:不再加新税,华为供应部分解禁,双方重启会谈。同时也没有要求中方付出什么了不起的代价,做出什么了不起的承诺,不过就是大量购买美方农产品,开放几个产业,这些都是中方早就同意的。

会谈后第二天,川普的主要助手之一,首席经济顾问库德洛在受访时表示:双方已经达成了90%,但剩下的10%是最棘手的,因此需要时间。即将重启的谈判没有明确的时间表......也就是说:慢慢谈去吧,谈到哪天算哪天......
中国人常说:真真假假,虚虚实实。按照川普自己的话说:交易谈判中最重要的是"unpredictable"——不可预测性,只有不可预测,才能让对方感觉到压力,从而做出最大可能的让步。

正如我们在川普总统的最新表态说明了什么?一文中所说的,不论是中兴华为,还是据说美方在谈判中给中方开出的"苛刻条件",在川普心中,都不过是筹码,不可不当真,也不可太当真。

经过一年半的较量,美方得到了2500亿商品的关税,农产品和能源的大订单,还打击了中国两家关键企业。或许在国会山的政客眼里,这些还远远不够,但地产商总统虽然表面上经常给人以气势汹汹,漫天要价的印象,内心中却有着生意人的现实。他觉得差不多了,再进一步会面临不测的风险......
什么风险呢?

作为一个美国政治人物,最关心的莫过于选民手中的选票,而选民最关心的自然是自己的生活,也就是经济的好坏。虽然目前美国民众中没有强烈反对贸易战的声音,可一旦经济下行,生活变差,就不好说了。正所谓"民意如流水"!

与其他国家比,美国经济还算健康,但也只是相对而已。毕竟从2008年金融危机的底部算起,已经增长了十年,股票也涨了十年。俗话说,天下没有不散的筵席,不可能有永不停息的增长,几天前,美国长期国债的利率居然跌到比短期国债还低,正反映了投资者内心的忧虑。经济的下行,股票的熊市,都一定会到来,只是什么时间来,以什么方式来的问题。不只是美国,全世界如此。

川普总统怕的是:那一刻,熊市开启的一刻,会在2020总统大选期间到来,也就是从现在起到明年底。

川普总统更怕的是:如果熊市正式开启,如果他继续扩大对华贸易战,反对党一定会把二者联系在一起,从而将其塑造为经济危机的"元凶"!在经济下行,失业率增加,生活水准下降的氛围中,这可是极具杀伤力的.....

正因为投鼠忌器,川普选择了适可而止,恢复双方贸易谈判,增加了关税与订单,不给反对派以任何攻击的口实,为可能到来的经济熊市留有余地,另一方面也不宣布贸易战的结束,谈判仍在继续,2500亿商品关税的大棒始终高高举起,保持一定的威慑。

如此说来,G20峰会上的戏剧性一幕,出乎意料之外,却又合乎情理之中,是一个现实的选择。

中美重启贸易谈判感言

$
0
0
举世瞩目的习近平特朗普的会谈,终于在昨天举行。两国元首经过80分钟的交谈,一致同意重启经贸磋商,不再加征关税。公开披露的信息虽然简短,却仍然使全世界都松了一口气。人们期待两国贸易代表恢复谈判后,能够实现明智的妥协与谅解,顺利地取得共识,签订协议,为中美两国以至世界各国的经济发展创造新的机会。
预测恢复谈判的前景,说难也不难。早在6月18日特朗普和习近平通电话后,白宫的通告说是两国元首讨论了"建立公平和互惠的经济关系,为美国的农民、工人和企业提供公平的竞争环境","包括解决中国贸易的结构性障碍,实现可执行和可验证的有意义的改革。"新华社的报道只谈到他们"就事关中美关系发展的根本性问题交换意见。"这两个有所不同的通报方式,在一定程度上透露出贸易谈判恢复后的指导意向。白宫通告里说的"解决中国贸易的结构性障碍"和"实现可执行可验证的改革"实际上就是在将近一年里十一次谈判的主要内容。前十次谈判经过艰辛的讨价还价,在"解决中国贸易的结构性障碍"方面取得基本一致的妥协,但最后却在"实现可执行可验证的改革",即"保证执行协议的检查机制"问题上卡了壳。
所谓"中国贸易的结构性障碍",是一个比较模糊的概念,它泛指中国贸易的现行结构中所有不符合于市场经济规则的状态,包括贸易壁垒、政府补贴、国企垄断、市场管制、技术转让,以及保护私有财产不力、保护知识产权不足等等。解决这些"障碍",把中美贸易放在平等竞争的基础上,符合于美国的国家利益,更符合于中国的国家利益。但就我国执政的权力机构来说,一方面,解决这些"结构性的障碍",可以为中国市场经济的发展创造更为有利的条件,将会进一步改善民生,增强国力,使专制统治更具合理性;另一方面,市场经济的发展,也将加强政治民主化的经济基础,对专制统治构成威胁。贸易谈判前景对于中国统治当局的这种双重性质,使他们在贸易谈判中往往举棋不定,虽然不是虚与委蛇,却难免半推半就,这就增加了谈判的复杂性。好在壁垒、补贴、垄断、管制、知识产权、技术转让这些"结构性障碍"的内涵,幅度都相当宽泛,讨价还价的余地较大,所以最后还能达成妥协,取得共识。
所谓"可执行可验证的改革",指的应该是:写进协议的条文,既须是"可执行"的,也应是"可验证"的。为此,就必须规定能够保证执行并能检验执行情况的机制。正是两国在这个问题上的分歧,使前一轮谈判陷于破裂。在前一轮谈判的后期,美方提出:协议签订后双方分别全文公布中文和英文的协议文本,他们的意图在于让中国的社会各界,都能了解协议内容并监督协议的执行,但中方却坚持中文本只能公布协议的节要,不能公布全文。美方还提出,协议签订后将定期相互通报协议执行情况并接受检查,美国将在中国派驻检查人员,以便及时监督、检查协议的落实。这个主张中方就更不能接受了
贸易谈判的这两个主题,结构性障碍是实质性的谈判内容,检查机制是技术性的验证手段。为什么实质性的内容能够妥协让步,技术性的手段却拒绝接受呢?这个问题不难理解。结构性的每个障碍,内涵都十分宽泛,解决时需要根据实际情况,逐步推进,它的弹性很大,可以为拖延、辩解、甚至拒绝落实协议留下许多空隙。而实施协议的检查机制却没有弹性,是否全文公布协议,是否建立检查机制,或是或否,没有第三条道路可走。特朗普和他的谈判团队正是有鉴于中方过去在履行承诺方面的不良记录,才坚持要在协议中写进检查机制的内容。这就使中方感到缺乏回旋余地,成为最后否定前十次谈判成果的重要原因。官方媒体前一时期在发出好战叫嚣的同时,大谈不能放弃"主权",不能超越"底线"、"红线",指的大概就是这个问题。
恢复贸易磋商后,大概仍然需要经历一个艰辛的谈判过程,但肯定用不了像前一轮谈判那样的一年功夫。美国财政部长姆努钦6月26日接受全国广播公司财经频道采访时表示:"中美贸易协议已经完成了90%,我认为我们还有最终达成协议的道路。"看来,接下来的谈判将会在过去已经达成、而在近两个月前被中方否定的协议基础上进行,继续谈判那尚未完成的10%。至于谈判的前景,白宫贸易顾问纳瓦罗6月21日在接受福克斯新闻采访时说:"要么我们得到一个很棒的协议,要么就是没有协议。"这大概是美国鹰派的典型逻辑。我的看法恰恰相反,最后的协议既不会是"一个很棒的协议",也不会是"没有协议"。最大的可能,是经过讨价还价,达成一个双方都不很满意、但又不得不签订的协议。对特朗普来说,签下中美贸易协议,可以成为他明年参加总统大选的竞选筹码,势在必签;对于习近平来说,协议是他提高个人威信、巩固专制统治的有效工具,签订协议的利大于弊;对于中国社会,不论最终的贸易协议在多大程度上接受市场经济的普遍规则,都可以为加快资本主义市场经济在中国的发展,提供十分可贵的有利条件;对于那些叫嚣"奉陪到底"、"不惜一战"的好战分子,则是当头棒喝,至少可以让他们消停一段时间。因此,我们可以说,签订中美贸易协议,将会实现双赢,甚至是三赢、四赢.

教育不是把脑袋装满,而是让思维飞跃

$
0
0
1
说到中美教育的差异,一个看起来是悖论的现象特别引起我的浓厚兴趣:
一方面,中国学生普遍被认为基础扎实,勤奋刻苦,学习能力——特别在数学、统计等学科领域——超乎寻常,在国际大赛中屡屡摘取桂冠,将欧美发达国家的学生远远甩在后面;另一方面,中国科学家在国际学术舞台上的整体地位不高,能够影响世界和人类的重大科研成果乏善可陈,至今也只有一位本土科学家获得了诺贝尔科学奖,难怪钱学森先生临终之前会发出最后的考问:为什么我们的学校总是培养不出杰出人才?
与此类似的另外一个看起来也是悖论的现象是,一方面,美国基础教育质量在世界上被公认为竞争力不强,就连美国人自己也承认这一点。和其他国家——特别是和中国、印度——相比,美国学生在阅读、数学和基础科学领域的能力和水平较差,在各种测试中的成绩常常低于平均值;另一方面,美国的高等教育质量独步全球,美国科学家的创新成果层出不穷,始终引领世界科学技术发展的前沿。
一个水平很低的基础教育却支撑了一个水平最高的高等教育体系,这也许是世界教育史上最吊诡的现象之一。
在通常情况下,就整体而言,优秀学生的基数越大,未来从中涌现出优秀学者的可能性就相应越大。然而,当下的中国教育正在验证我们的担忧:优秀的学生和未来优秀学者之间的相关性似乎并不显著。如果事实果真如此,我们就不禁要问:我们的教育是有效的吗?这也促使我们反思:到底什么才是有效的教育?
2
教育是否有效要看它是否帮助人们实现了教育的目的。然而,今天越来越多的我们——无论是教育者还是被教育者——已经渐渐忘记了教育的目的。恢复高考以来的三十多年里,我们一直在不停地奔跑,跑得越来越快,也越来越累,却很少停下来问一问自己,我们为什么要奔跑?
教育似乎正在变成我们日常生活中不得不去完成的例行公事:教师上课是为了谋生;学生上学在义务教育阶段是国家规定,在非义务教育阶段是为了通过上一级的考试;校长看上去像是一个企业的总经理等等。凡此种种,无不显示出教育的有效性正在慢慢消失。
古代中国的教育实质上是一种关于社会和人生的伦理学训练。教育固然有其功利化的一面,但也有其超越性的一面:学生们通过反复阅读经典的经书来完善自己的道德,管理家族和宗族事务,进而服务于国家和天下苍生。
科举制废除之后,基于政治经济文化的颠覆性变革,中国教育走上了向西方学习的道路,由此形成了一整套语言、学制和评估体系。这一源于特殊历史环境下的教育体系尤其强调功利性的一面,即教育是为了解决现实中的某种问题而存在的:教育为了救国;教育是实现现代化的工具和基础等等。
到了当代,教育更加呈现出相当显著的工具性特征:学生们希望通过教育获得一些"有用"的技能,使他(她)们能够通过竞争激烈的考试,增强他(她)们在就业市场上的竞争力,进而获得更高的社会地位和物质财富。如果教育不能帮助他(她)们实现这些目标,他(她)们就会毫不犹豫地抛弃教育——这就是为什么近年来"读书无用论"渐渐开始抬头的思想根源。
3
反观美国,其教育也有功利性的一面,但其功利性不肯直接示人,而是附着于公民教育背后的产物。越是优秀的教育机构,越强调教育对人本身的完善。即使是公立教育机构,也依然把提高本州人民素质作为最根本的教育目标。
因此,实用主义哲学最为盛行的美国,在教育领域却非常地"不实用主义":越是优秀的教育机构,教给学生的越是些"无用"的东西,如历史、哲学,等等;越是优秀的学生,越愿意学这些"无用"之学。
实际上,美国学生之所以基础差,和美国中小学的教学方式有直接关系。美国教育界深受古希腊苏格拉底"产婆术"教育思想的影响,强调教育是一个"接生"的过程,教师就是"接生婆",人们之所以接受教育是为了寻找"原我"以不断完善自身。也就是说,他们认为,知识非他人所能传授,主要是学生在思考和实践的过程中逐渐自我领悟的。
所以,在美国课堂里——无论是大学、中学还是小学——教师很少给学生讲解知识点,而是不断提出各种各样的问题,引导学生自己得出结论。学生的阅读、思考和写作的量很大,但很少被要求去背诵什么东西。
美国学校教育是一个观察、发现、思考、辩论、体验和领悟的过程,学生在此过程中,逐步掌握了发现问题、提出问题、思考问题、寻找资料、得出结论的技巧和知识。虽然他们学习的内容可能不够深不够难也不够广,但只要是学生自己领悟的知识点,不仅终身难以忘记,而且往往能够举一反三。
与之相比,中国学校教育深受孔子"学而时习之"思想的影响,老师把知识点一遍又一遍地教给学生,要求学生通过不断地复习背诵,使之成为终身不忘的记忆。这种教学方式对于传统的人文经典教育是有效的,但对于现代自然科学和社会科学的教育而言,其弊端显而易见:学生的基础知识普遍比较扎实,但也因此束缚了思想和思维,丧失了培养创新意识的机会。
4
从教育的目的和教学方式出发,中国和美国关于"教育有效性"的理解可能存在相当大的差异。
对于当代中国而言,提高教育有效性的关键在于如何把价值观教育自然而然地融入教育的全部过程之中。这是一个巨大的挑战。因为统一的高考录取体制对基础教育的制约和影响,以及社会外部环境的变化,教育的过程正在逐步被异化为应付考试训练的过程。
目前,这个过程正在向低龄化阶段发展。由于"不能输在起跑线上"的比拼心理,对儿童的早期智力开发正在进入历史上最狂热焦躁的阶段。越来越多的孩子从教育中不能享受到快乐,不快乐的时间一再提前。教育提供给人们的,除了一张张毕业证书外,越来越难以使人感受到精神的愉悦和心灵的平和。反社会的行为越来越严重。
政府也已经意识到这个问题的严重性,下决心通过大学考试招生制度的改革来逐步扭转这一局面。然而,当下的社会舆论环境、公众对于教育公平的简单理解和忧虑以及缺乏信任度的社会文化心理,都进一步强化了教育过程中对"选拔进程的负责度与选择结果的公正性"的非理性追求,进而加大了改革所面临的阻力并可能削弱改革的效果。
5
此外,正如储蓄不能直接转化为投资一样,上学也并不意味着一定能接受到好的教育,学生所具有的扎实的基础知识如何转化为提供创新思想的源泉和支撑,也是中国教育界所面临的另一个严峻的挑战。
我们之所以送孩子上学,并不是因为孩子必须要上学,而是因为他(她)们要为未来的生活做好充分的准备。上学是一个人为了实现人生目标而必须经历的过程。在这个过程中,最重要的也是首要的一件事是:认识到你未来会成为一个什么样的人。
人的一生虽然漫长,可做的事情看似很多,但其实真正能做的,不过只有一件而已。这件事就是一个人来到世间的使命。教育的价值就在于唤醒每一个孩子心中的潜能,帮助他们找到隐藏在体内的特殊使命和注定要做的那件事。
这是每一所学校、每一个家庭在教育问题上所面临的真正挑战。和上哪所学校,考多少分相比,知道自己未来将成为一个什么样的人是更为重要和根本的目标。回避或忽略这个问题,只是忙于给孩子找什么样的学校,找什么样的老师,为孩子提供什么样的条件,教给学生多少知识,提高学生多少分数,这些都是在事实上放弃了作为家长和教师的教育责任。
实际上,一旦一个孩子认识到自己未来将成为什么样的人,就会从内心激发出无穷的动力去努力实现自己的目标。无数的研究结果已经证明,对于人的成长而言,这种内生性的驱动力要远比外部强加的力量大得多,也有效得多。
我们应该清醒地认识到,人生不是一场由他人设计好程序的游戏,只要投入时间和金钱,配置更强大的"装备"就可以通关。一旦通关完成,游戏结束,人生就会立即面临无路可走的境地。人生是一段发现自我的旅程,路要靠自己一步一步走出来。认识到自己未来会成为一个什么样的人,就像是远方的一座灯塔,能够不断照亮前方的道路。

今天,美国人都在发问:为啥二十年前要放过中国?

$
0
0
一、今天,中国让美国感到害怕

在上个世纪九十年代,如果你到欧美国家去给西方人说,中国迟早会有一天让你们深感恐惧,我想在座的所有人都会以为你得了阿尔兹海默症(老年痴呆)。

同样,彼时的中国人也觉得你得了失心疯。

为什么?

原因很简单:因为当时的美国实在太强了,跟其他国家比起来完全是开了外挂的存在。

-现代化战机三千多架
-国家GDP比十个中国加起来还多
-十万吨级核动力航母,一造就是十艘,一年下水一个舰队

别说中国,即便是当年如日中天的苏联,在排除掉核武库之后,也无法跟美国比拟。

所以在当时,没有任何国家、没有任何组织、更没有任何人相信中国会有一天能超过美国,甚至平起平坐都不可能,包括咱们中国人自己。

2002年,国家统计局在十六大报告中提出:到2020年时,争取国内生产总值比2000年翻两番,达到35万亿人民的规模。同时,许宪春(时任国家统计局经济核算司司长)作出预测,中国有望在2020年成为世界第三经济大国;2050年时,有可能超过日本,成为世界第二经济大国。

这就是当时中国人对自己能力的判断。

然而,计划永远赶不上变化,谁也没有想到,在统计局作出经济预测的七年后,中国就超越日本成为世界第二大经济国,时间比我们的最佳设想提前了整整43年!

更令人不可思议的是,中国不止赶超了日本,更在以一往无前的气势冲向世界的巅峰:

-2010年,中国超越美国,成为世界第一大制造业输出国
-2011年,歼20首飞,中国成为第三个拥有五代战机的国家
-2012年,中国第一艘航空母舰辽宁号服役
-2013年,中国以60万亿GDP的规模,彻底与日本拉开距离
-2014年,蛟龙潜水器下四洋捉鳖、嫦娥卫星上九天揽月
-2015年,国务院出台《中国制造2025》白皮书,正式吹响进军高端产业的号角
-2016年,中国展开多次高超音速武器实验,技术储备超越美国
-2017年,中国第二艘航空母舰001A下水,同年,世界最强驱逐舰055下水
-2018年,美国对中国发起经贸战,中国悍然反击

"太疯狂!太恐怖!太可怕!"

这是如今美国精英阶层对中国的一致看法。

也难怪他们如此惊讶,在这个世界上,还有什么比颠覆自己认知更可怕的事情呢?

2017年初,特朗普入主白宫后,美版知乎曾提出这样一个问题:为何特朗普这么害怕中国?

在众多回答中,有一个近百万赞的回答,作者的答案也很简单:不是特朗普在害怕中国,而是美国在害怕中国。

美国在害怕中国?

听起来不可思议,但这的的确确是美国正在发生的现实。

我们不妨来回忆下这几年发生的事情:

2017年,奥巴马卸任前夕,美国科技顾问委员会向白宫提交了一份战略白皮书,该白皮书认为,中国正在大力发展的高科技产业将对美国国际地位产生威胁,美国政府应该对此作出预案。

随后奥巴马作出指示,让委员会详细评估态势,并交由下届政府处理。

2018年3月,特朗普签署301调查的行政命令,正式对中国掀起经贸战。4月,在美国国会举行的有关制裁ZTE、Huawei的听证会上,与会的美国两党、情报界、商界等100多名代表均举手表示同意,无一人反对!
华盛顿邮报指出:美国之所以要对中国两家企业发起制裁,本质上是因为美国害怕中国高科技产业的崛起!

你看,连自家的媒体都承认了,美国对中国有一种"害怕"的情绪。

接下来发生的事,就更加印证了这个现实。

2019年3月,美国商务部发布的数据显示:在中美经贸战的背景下,美国对华贸易逆差不升反降,从开战前的5000亿美元,上升到开战后的6000亿美元。

现在美国对中国的态度非常矛盾:

不打,美国害怕中国会很快超越他们。继续打?但中国全球供应链和市场的位置摆在那里。

所以白宫很精分,一会说要谈、一会儿说要打、一会儿说相信能达成协议。

若放在以前,美国完全没有这种顾虑。

苏联强大吧?打!从冷战到阿富汗战场,美国人意志很坚定,从来没有怂过。

日本经济厉害吧?打!从半导体战争到广场协议,直到把日本打到彻底投降为止。

欧盟够格吧?打!从科索沃战争到伊拉克战争,直接把欧元打得只剩半条命,如今还要用英国脱欧搞掉另外半条命。

可到了中国这,为啥就想下手又不敢下手;下了手又顾左顾右呢?

于是,不少美国人都在思考同一个问题:既然今中国如此强大,为什么美国当初不彻底干掉他?

这是美国人的疑惑,也是今天整个西方集团的疑惑。

而想要厘清楚这个看似简单却又极为复杂的问题,我们必须从二十多年前的那些历史说起。

二、昨天,美国让中国感到害怕

二十八年前,也就是1991年,美国就科威特问题向伊拉克发起进攻,震惊世界的海外战争由此拉开颠覆传统的帷幕。

或许,对于正在看文章的你而言,这场战争地点太遥远、时间太遥远,似乎没什么值得回忆的场景。

但对解放军来说,这场战争刻骨铭心,至今都难以释怀,它就好像发生在中国身上。

当年,美国还在中东地区调兵遣将时,中国就曾做出预测,别看美军阵仗闹得那么大,打起来肯定又是一场旷日持久的消耗战,美国迟早会重蹈苏联在阿富汗的覆辙。

中国的预测可不是空穴来风,而是有事实、有依据的推断。

彼时,经过八年两伊战争的伊拉克军队空前强大:正规军95万、预备役48万、装甲车7500辆、坦克5600辆、火炮3800门、作战飞机770架

就这规模,常规力量妥妥的世界第四,如果当年的中国没有核武器,搞不好伊拉克还得把咱取代了,成为继印度、越南之后,第三个"世界第三大军事强国"。

然而,现实却给解放军一记大大的耳光!

42天!

仅仅42天!

这个号称世界第四大军事强国的伊拉克,竟然被美军完爆!

中国人震惊了!中国军队傻眼了!

在这42天总计1008个小时里,美军仅是凭借强大制空权与制信息权,把伊拉克打得晕头转向,甚至还出现过三架阿帕奇全歼一个坦克团的恐怖战绩。

更为夸张的是,美国陆军从登陆开始到兵临巴格达城下,用时不到100个小时!

整场海湾战争,伊拉克军队阵亡20000余人,受伤80000余人,直接经济损失2000亿美元,间接经济损失更是高达8000亿。

美国呢?

战斗减员606人,其中直接阵亡118人,非战斗阵亡30人,是为友军误伤。

我记得有媒体曾揭露过这样一个新闻:

海湾战争爆发时,伊拉克装备了大量中国生产的69式主战坦克。厂商不相信我们的坦克不堪一击,遂派出军工人员去战地勘察。后来军工人员发现,大量坦克是被遗弃在路边被美国人定点清除的,原因是指挥部在开始的第一时间就被摧毁了,而收不到信息的伊拉克军队直接弃车逃亡!

一个指挥部,在开战不到半个小时就被端了,如此先进的作战理念与作战手法,在解放军从南昌起义到对越自卫反击战的六十多年间,简直是闻所未闻、见所未见!

金一南将军后来在回忆录中写道:

1991年海湾战争后,美国的作战模式对我们冲击非常大。我们一度大量翻译美军的作战条例、军事报告,无形中开始参照对方的模式和标准来建军。

海湾战争结束后,美国海军部、空军部联合兰德智库也做过一番针对中国的兵棋推演,在完全不出动地面作战部队的情况下,美军在一天之内就能彻底摧毁长江三角洲、珠江三角洲、京津唐这三大经济与工业中心。

现在知道美国为什么当初不收拾我们了吧?

答案很简单:中国实在太弱了,弱到连美军收拾的资格都没有。

而美国当时的对手是谁?

是继承苏联庞大核武库的俄罗斯!

是想用欧元取代美元的欧洲联盟!

是妄图称霸中东控制石油命脉的伊拉克!

是在高端制造业上对挑战美国地位的日本!

上面这个些对手,哪个不比中国厉害?哪个不比中国棘手?

论核武库,中国比不过俄罗斯。论制造业,日本甩中国十万八千里。论经济,中国都不配给欧盟提鞋。论常规军事实力,偏安一隅的伊拉克都比解放军强!

对敌人最大的侮辱,不是彻底干掉他。而是忽视他、侮辱他,让他一直生活在你的阴霾之下!


中国意图威吓台湾在其附近海域演习试射导弹,我们派出航空母舰进驻该区,两支航母舰队浩浩荡荡的驶过台湾海峡,在最后一刻中国结束导弹试射,解除紧张局势。没有人想惹上尼米兹,中国还是放聪明点好!

看看,多么嚣张的话语!

但是,我们能有什么办法呢,你弱就活该被羞辱。想逆袭,就得卧薪尝胆的活下去。

还有南斯拉夫炸馆事件,侵略如同领土的大使馆不说,还炸死三名中国记者。而面对群情激奋的国人,美国人只是毫不在意的说了一句:地图用错了!

一句"地图用错了",中国人就要承受奇耻大辱,而美国人却冷眼旁观着我们的愤慨。

这就是当年中美的现实。

窝囊吗?

窝囊至极!

屈辱吗?

非常屈辱!

甘心吗?

是个有骨头的男人,都TM的不甘心!

但你告诉我,中国能怎么办?中国军人能怎么办?

在绝对的实力面前,任何的狠话与愤怒都是不值一提的莽夫气概。

这就是中国人的九零年,一个屈辱的十年,一个在无边黑暗中寻找光明的时代!

那些年,知识分子开口就是"中国崩溃论"。

很多美国的精英也相信了,他们认为对付我们根本不需要自己动手,中国人自己就会内讧,就像当年的苏联那样。

于是,对中国不屑一顾的美国人,开始着手建立自己的全球帝国。

兵临阿富汗、二度出征伊拉克、剑指欧元...从军事到经济,美国人掀起了一场有一场旷世大战。

而中国人就靠着这缝隙之间的20年,赌上民族的未来,拼命发展、玩命前景。

当美国的恐怖战争落下帷幕后,突然发现,这个昔日的吴下阿蒙,已成为统帅千军的一方诸侯。

现如今,美国人鼓吹的"中国崩溃论",已经换成了你我耳熟能详的"中国威胁论"。








只有记住屈辱,才有更加强大的动力。

胡平:特习会和发改委的两个新清单——小议美中贸易战谁输谁赢

$
0
0


这次大阪G20峰会,最受瞩目的一幕莫过于6月29日美中两国元首会晤。特习会后,双方各自发表了简要报道。由于双方的报道都很简略且各说各话,让一般读者不明所以,如堕五里雾中。次日,6月30日,中国官媒刊出一篇报道:"国家发展改革委、商务部发布2019年版全国和自贸试验区外商投资准入负面清单"。认真阅读这篇报道,或许对我们理解这次特习会有所帮助。

发改委和商务部分别发布了2019年版《外商投资准入特别管理措施(负面清单)》和《自由贸易试验区外商投资准入特别管理措施(负面清单)》,自2019年7月30日起施行。这两个负面清单的2018年版同时废止

我们知道,两个负面清单的2018年版是在整整一年前,即2018年6月30日发布的。2018年版的这两个负面清单又是对2017年版两个负面清单的修订。2017年版的全国外资准入负面清单条目有63条,2018年版减至48条,最新版即2019年版又进一步减至40条;2017年版的自贸区外资准入负面清单条目有95条,2018年版减至45条,2019年版又进一步减至37条。

2018年3月22日,美国总统特朗普宣布对中国进口的600亿美元的商品加征关税,由此开启了贸易战。美国以加征关税为手段,要求中国方面做出若干改进或让步,其中之一就是要求中国放宽外资准入。中国政府在3个多月后,也就是在2018年6月30日,推出2018年版的两个负面清单,以很可观的幅度放宽了外资准入;一年之后又推出2019年版的两个负面清单,进一步放宽了外资准入。

尽管中国政府反复申明它这两次放宽外资准入都是党中央国务院的部署,是新形势下进一步扩大对外开放的需要,但是明眼人都不难发现,这些举措实际上是对美国打贸易战的回应,是对美国的让步。否则,为什么不早不晚,偏偏发生在美国开打贸易战之后,为什么在一年前刚做了大幅度的改变、在一年后又作出进一步的改变呢?

就在6月29日特习会的第二天,中国发改委和商务部就发布了2019年版的两个负面清单,有些人看到了不禁惊呼:原来习近平投降了啊!当然,习近平确实向美国做了不少让步,但还远远谈不上投降。中国政府依然保留了很多领域对外资的限制,特别是在互联网和相关服务,教育、新闻出版、广播电视等方面。单凭贸易战即加征关税这种手段,我们很难指望中国政府会在这些方面作出重大让步。

我先前讲过,美国打贸易战,小胜很容易,大胜不可能。美方以加征关税为手段要求中方做若干改进或让步,中方答应要多买美国商品,也立了几条关于外资准入和保护知识产权等法律,虽不能保证实施,但立了总比不立好。如此说来,美方已是小胜。但是单凭贸易战要中方进行体制性改革则是不可能的,单凭贸易战甚至连美中贸易的问题都不可能真正解决。美国要取得它期待的效果,还有很多事要做。

——RFA

被玩坏的锦绣河山

$
0
0
老侯/文

“南水北调”刚完,“红旗河”又开始鼓噪。
“南水北调”的愿景是把南方丰水区的水资源用人工方式,输送到缺水的北京及周边津冀豫。2002年开工,2014年完工。
诡异的是,如此大型的工程,通水典礼居然没有一个常委出席!
“南水北调”的悄无声息,并没影响“红旗河”的大肆喧嚣。

“红旗河”的愿景是把雅鲁藏布江水,经怒江、岷江、黄河,绕一个大圈子,向北、向西输送到缺水的西部。
这中国腹地开膛破肚的两大工程,能否改变供水生态?“南水北调”似乎已经给出答案,而“红旗河”还要继续艰辛探索。
事实上,中国的水利工程的“前车之鉴”,举不胜举,对环境的改变,也是毋庸置疑。这里先说一个——葛洲坝。
我到宜昌寻找一个一百多年前的码头,它叫南津关。1900年,一个英国植物学家从南津关登陆宜昌,以此为基地,开始为时十年的植物大搜集,并导致东西半球的植物大迁徙。
宜昌的初春,温煦暖人,铁路桥洞下,围坐着野餐的游人。我们来到长江岸边,“三游洞”下,一个很简陋的码头。我被告知这里就是南津关码头,但这并不是我们要寻找的那个百年前的南津关码头,我们寻找的那个南津关码头在我们脚下的几十米水下。1981年,修建葛洲坝水库,它被淹没。
现在,站在码头,向南望去,水面浩淼,那就是葛洲坝水库。当地人告诉我,水面看似烟波浩渺,其实,现在,水下十几米就全是泥沙。
这里是西陵峡口,我们乘船溯江西上,进入三峡最东端的西陵峡。
水面平静,波涛不惊。但是,百年前,那个英国植物学家乘平底船,溯流而上,却是礁石密布,水流湍急,行船需要岸上的纤夫拉动。逆水行舟,险象丛生。无数的船只被急流冲走,撞成碎片。
葛洲坝蓄水后,礁石没了,急流也没了,当然,纤夫也没了。

我们要还原百年前,英国人逆流而上的艰险,只能去神农架,在那里,一条长江的支流上,还有礁石,还有险滩,当然也有纤夫,不过他们都是演员,纤夫拉纤只是旅游表演。

自然环境的改变换来的是设计库容的不到两成。葛洲坝论证时,有专家提到过淤积问题,但是,主流观点认为,长江泥沙问题没有预想的那么严重,建设时,也预先建设了清淤设施。
事实上,葛洲坝有淤积,但并没到影响蓄水发电的正常运作,只是效益远不如当初的设计。
葛洲坝对当地环境的真正影响是物种的消失。
据说当年葛洲坝工程论证时,就包括如何保护中华鲟等大型溯河洄游性鱼类。虽然有过多种的方案,但是,无可挽回地,白鲟、白鳍豚、中华鲟,一个接一个,逐渐从长江消失。据说,现在步前辈后尘的,是江豚。
诚然,与水库带来的效益相比,物种灭绝不在水利部门的考虑之内。而且,同后来的三峡大坝相比,葛洲坝对环境的改变,已经是小巫见大巫。
如果说,葛洲坝只是切断了长江的腰部要道,影响了三峡峡口西陵峡的生态,那三峡,则是影响了整条长江,长江下游出现两大季节性平原,朱元璋大战陈友谅的鄱阳湖消失。由于水道的截断,回游金沙江产卵的习性被彻底改变。
齐岳山断裂,2009年就已有报道。千米的相对落差,形成恐怖的大峡谷,下面的地质情况,不敢想象。更严重的是,从战略意义看,如果战争来临,大坝将成为整个下游的灾难。
如果说三峡的灾害还在观察期,那么,这里有个已经死掉的样板——三门峡
我第一次到三门峡,是上世纪的90年代。
三门峡在陕豫交界,黄河水道上,是1949年后,最早修建的水库。
“黄河清,圣人出”是这个国家自古以来的一个传说,也是帝王和革命家的梦想标配。苏联专家说,三门峡可以做到“黄河清”。
三门峡立项,反对最激烈的不是河南,而是陕西,因为他们顾虑,下游的清,代价可能是上游的淤。
1960年,大坝基本竣工,并开始蓄水。1961年下半年,陕西的担忧变成现实:15亿吨泥沙全部淤在了从潼关到三门峡的河道里。潼关的河道抬高,渭河成为悬河,关中平原的地下水无法排泄,田地出现盐碱化甚至沼泽化,粮食因此年年减产。传说,要“高峡出平湖”的毛泽东听到三门峡的境况,毅然发出最高指示:“不行就炸掉!”
三门峡水库故事里,最让我动容的是其实还是——移民悲歌。
中原人多灾难,上世纪以来就有多次的中原难民潮,难民的流向是向西,进入西安,所以,今天的西安,河南话是第二语言。
三门峡淹没耕地85.6万亩,实际移民总数达40.38万人。这世代居住在富庶河谷平原地带的几十万人,分别迁往宁夏、甘肃敦煌等偏远地区及其他山区旱塬、沟壑区,但他们一直为返回家园而进行斗争。许多人历尽艰辛,举家千里跋涉,终于得以重返家乡。可他们原本世代耕种的肥沃土地已被黄河泥沙厚厚地覆盖。许多地方,已经被军队和国营农村捷足先登地占据。他们又不得不开展旷日持久的斗争,要求退还他们被占据的土地。
为了“圣人出”,而强行“黄河清”,黄河清不清不重要,圣人铁定要在这块锦绣河山上为自己树立丰碑。
如果说,毛的改天换地是出于“圣人出”的情怀,那三峡的动机,则只剩下了利益。
三峡移民经费国家出,全民为三峡工程缴纳建设基金,但是,三峡获益却归于三峡集团公司。再看看三峡工程的鼓动者和获利者是什么人?就不难明白为什么三峡工程必须上?
据说,1992年,七届人大表决三峡工程,唯一一个发出反对声音的是来自台湾的人大常委黄shunxing,但是,当他拿起话筒准备发言时,发现会场的麦克风,除了台上的,全部消声了
为了强行通过一个争议很大的工程,决策者费尽了心机!
但是,不管遭遇多少挫折,不管有多大的艰难险阻,也不管这块土地上有多少无效的大工程,也绝对阻止不了下一个更大的劳民伤财工程的启动!

2019320

《经济学人》最新社论:美国的未来,就看这两个地方

$
0
0
导读:最新一期《经济学人》,将焦点对准了两个地方——加州和德州,这两大州代表了美国内部两种截然不同的治理模式。要读懂美国的国运,先读懂加州和德州的发展逻辑。

译文如下:

新闻报道中的美国,总统会坐在白宫,发号施令,形塑美国。现实生活中,情况却并非那样。现实中的美国,很多最为重大的政治决定,并不在于华盛顿,而在于地方州,特别是德州、加州这两大地方州。

德州与加州,是合众国中最大、最重要、最吸引眼球的两大地方州。而且,两者也都坚信自己就代表着美国的未来。不过,近几十年间,德州与加州却朝着完全相反的方向阔步前进。

这样一来,就给人们创造了机会得以观察,到底是低税负、松管制、小政府的“德州模式”,还是高税负、强管制、大政府的“加州模式”,对美国来说更佳。

鉴于华盛顿政治运行长期以来一直效果不良,两种模式竞争的结果对美国将会成为一个什么样的国家的决定性意义,将不亚于下次总统选举中谁能胜出。

从某种程度上说,最终的结果,将取决于“规模”。目前,有20%的美国人称自己的家在德州或加州。到2050年,该比例将攀升至25%。

过去的20年间,德、加两州创造的新增就业机会数量,占全美的三分之一。德、加两州的经济规模,比很多国家的经济体量还要大。

如果把德州、加州看成是国家,德州则能成为世界第十大经济体,比加拿大还要大,而加州则能成为世界第五大经济体,紧跟德国之后


目前,德、加两州正在经历的人口变化趋势,也就是整个美国人口的变化趋势。在德、加两州,西裔美国人占比都在40%左右,是美国全国的平均水平的两倍。

德、加两州都是较早就成为少数族裔占多数的地方州。在加州,自2000年起,非白人的数量就已超过白人。在德州,这种情况起自于2005年。

美国其他地区,预计到本世纪中叶也会出现这种情况。德、加两州接受教育的儿童数量,占美国全国近四分之一,这其中很多都是贫穷和母语非英语的非本土儿童。德、加两州靠近墨西哥,过去又曾都是墨西哥的一部分,这就意味着,随着华盛顿那边逐步对美国移民法规进行加码,他们就必须面临相应的后果。

德州与加州,乍一看,它们之间的差异,堪比藜麦汉堡与牛腩面之间的不同。从某种程度上讲,加州就是一个“民主党一党制”的州,进入权力体系的共和党人士,可能很快就像珍稀动物一样稀少,需要予以一定保护。

在德州,共和党人士几乎霸占了州立法机构以及所有州级权力机关,20多年来,在州级竞选中,民主党从未赢过。上次民主党总统候选人在德州获胜,还是远在40多年前。

德州没有州级所得税,而加州的所得税税率则高达13%,是全美最高。德州在环境保护方面的法规相当宽松,而加州,正努力利用自身的经济实力,迫使美国其他州采取更加严厉的碳排放标准

德州的城市,可以任意扩建、自由生长,而加州,在城市建设方面,却有着严格的规划条款。

不过,如果细看的话,就会发现,德州就像是一个十几岁时的加州。德州的人口,只是在近期才达到加州在1980年代晚期时的水平。

有着“黄金之州”美誉的加州,曾几何时,也是一个任由城市自由蔓延、低税负、由共和党执政的地方州。德州首府奥斯汀的共和党人士,几十年来首次开始感到来自民主党的政治竞争压力,因而,他们也已开始把注意力聚焦于诸如教育等短板领域。

这个问题很重要,因为德州的学校也像加州的一样相当差劲。而且,德州的大学,还远远没有达到“好”大学的标准。

上个月结束的德州立法会议,政界人士已减少了对诸如堕胎以及跨性别洗手间等议题的关注,而对公立学校资金支持的关注得到了加强。如果有更多的德州人能够投票的话,那么他们可能会鼓励政界人士,也为德州那疲弱的医疗保障多做点事。

这样一来,可能就意味着,随着德州逐渐“长大”,它会变得越来越像加州,不过,理想状况下,也只不过是在某种程度上有点像,主要是因为,加州“长大”的过程,并非完美无缺。加州的人口每年都在下降,而德州的人口每年却都在增长。

尽管加州政府已取得很多成绩,比如,十年前财政还入不敷出,现在却已拥有相当的财政盈余,而且还设立了充裕的“雨天基金”,但与此同时,加州面临的各种社会问题,也相当严峻。

其中,尤以无家可归者这个现象最为显眼。与德州相比,加州的失业率一直较高,收入不平等问题也更为严重。

加州自认为,自己是全美的一个进步先锋,但加州的贫困率,却是全美最高的。之所以这样,部分原因在于,加州的法规让新建房子非常困难,导致居住成本节节攀升。

而德州,任由城市自由生长,至少在这方面,德州是一个更为自由的州,而加州则是一个更为保守的州。想要移居到房价低、税负低、就业机会多的地方的美国人,都在用脚投票,搬到德州。就目前状况来讲,与加州相比,德州更有创新空间,并进而更能在小政府与社会福利政策之间,实现某种平衡。

在美国的联邦体系中,没有哪个单一的地方州,能成为全国性的模板。但是,德、加两州,各自都有值得所有其他地方州学习的地方。德州作为美国最大的产油州,这点有点与众不同

相较来说,加州尽管有着这样或那样的毛病,但至今依然像块巨大磁铁一样,对具有良好教育背景的移民有着很强的吸引力,因而,加州也就成为人才和创新理念的集中地,这也是为什么诸如谷歌(Google)、脸书(Facebook)、特斯拉(Tesla)、优步(Uber)、网飞(Netflix)等行业佼佼者能够诞生在加州的原因所在,同时,这也是为什么各大风投资本以及好莱坞各大影视公司依然选择留在加州的原因所在,尽管有声音对加州若隐若现的社会主义色彩有所抱怨。

德州与加州两个地方州,美国能从它们两者身上学习很多。特别是在联邦政府立法功能运转不良时,而当下,多数情况下,联邦政府立法功能的运转,都是不良的。这样一来,地方州在决定自己命运方面的能力,相应地也就显得更具重要性。

因此,可以设想一下,德州模式与加州模式优势互补,实现融合,从而形成一种兼具两者优点的新模式:自由气氛浓厚、政府不插手民众的私人领域、营商环境良好、人们都能获得发展机会,与此同时,环境能得到有效保护,教育也能获得充分的资金支持。

加州可以学习德州的城市建设经验,而德州则可以学习加州对优质高等教育的投入。如果真能实现,那么,到访德州或加州的休斯顿、洛杉矶、达拉斯等都市的其他地方的美国人,被当地人口族裔结构震撼的强烈程度,或许会缓和很多。那就让我们把这样的一个地方,命名为“德加州”吧。

thestandnews.com

一款极易搭建的自助 Git 服务-gitea

$
0
0

 易安装

您除了可以根据操作系统平台通过 二进制运行,还可以通过 Docker 或 Vagrant,以及 包管理 安装。

 跨平台

任何 Go 语言 支持的平台都可以运行 Gitea,包括 Windows、Mac、Linux 以及 ARM。挑一个您喜欢的就行!

 轻量级

一个廉价的树莓派的配置足以满足 Gitea 的最低系统硬件要求。最大程度上节省您的服务器资源!

 开源化

所有的代码都开源在 GitHub 上,赶快加入我们来共同发展这个伟大的项目!还等什么?成为贡献者吧!

真实的悲情故事:北京人在纽约


dns解析服务器程序-robdns

$
0
0
A fast DNS server.
This is a fast super-slave DNS server, designed to be constantly attacked on the public Internet. The intent is to shield master servers that are hidden behind firewalls. The key feature is a built-in custom TCP/IP stack capable of handling millions of DNS queries-per-second per CPU core.
Currently, this tool is in a prototype stage. It parses records and responds to queries on port 53, but it's missing key features such as dynamic updates.

Building

The only dependency is libpcap-dev (or WinPcap).
Just type make to build the software on Linux, Mac OS X, and Windows (MinGW).
The included XCode4 and VS10 projects should also work on Mac and Windows respectively.

Running

The easiest way to test the server is to run on the comman-line with one or more DNS zone-files, like so:
# robdns example.zone
This will start listening on the any IP address (v4 and v6) on port 53. Zone-files are in the standard format, with a filename ending in .zone, and starting with an SOA record.
To test that it's running, you can use the normal dig command.
$ dig chaos txt version.bind @localhost +short
You should get back the version string of robdns/1.
However, the above example is the slow way of running the software. The intended use is to bypass the kernel's network stack using special drivers like PF_RING. To run in this faster mode, install the drivers and run with a command like the following:
# robdns example.zone dna0 192.168.1.222
In this example, the server will use it's own user-mode TCP/IP stack instead. Currently, this benchmarks to about 1-million packets-per-second for each CPU core.

Feature status

The following RR types have been implemented:
SOA, NS,
A, AAAA, PTR, CNAME,
SSHFP, LOC, TXT, SRV, SPF, HINFO, MX,
DNSKEY, NSEC, NSEC3, NSEC3PARAM, RRSIG, DS, TLSA,
EDNS0,
The following interfaces are supported: sockets, libpcap, PF_RING

NamedManager

$
0
0
web-based DNS management interface in PHP。

Project Homepage

For more information including source code, issue tracker and documentation visit the project homepage:

Introduction

NamedManager is an AGPL web-based DNS management system designed to make the adding, adjusting and removal of zones/records easy and reliable.
Rather than attempting to develop a new nameserver as in the case of many DNS management interfaces, NamedManager supports the tried and tested Bind nameserver, by generating Bind compatible configuration files whenever a change needs to be applied.
This also ensures that an outage of the management server web interface or SQL database will not result in any impact to DNS servers.

Key Features

  • Allows addition, adjusting and deletion DNS zones.
  • Supports Bind 9 and pushes Bind compatible configuration and zone files to configured servers.
  • Supports Amazon Route53
  • Ability to import from Bind zonefile support.
  • Includes a log tailer that runs on the name servers and sends back logs that are rendered in the web interface.
  • SOAP API to allow other tools to hook into the interface.
  • Written in PHP and uses a MySQL database backend.
  • Supports IPv4 and IPv6 users of the management interface.
  • Supports IPv4 and IPv6 forward and reverse records zones.
  • Supports internationalized domain names.

Application Structure

  • docs/ Documentation, authors file, copyright/license and other information.
  • htdocs/ Web-based Frontend
  • bind/ Scripts for integrating with Bind name servers.
  • resources/ Sample config files, spec files, packaging tools and other bits.
  • sql/ Database schemea install and upgrade components.

dns解析服务器程序-Shaman

$
0
0

A Small, clusterable, lightweight, api-driven dns server.

Quickstart:

# Start shaman with defaults (requires admin privileges (port 53))
shaman -s

# register a new domain
shaman add -d nanopack.io -A 127.0.0.1

# perform dns lookup
# OR `nslookup -port=53 nanopack.io 127.0.0.1`
dig @localhost nanopack.io +short
# 127.0.0.1

# Congratulations!

Usage:

As a CLI

Simply run shaman
shaman or shaman -h will show usage and a list of commands:
shaman - api driven dns server

Usage:
shaman [flags]
shaman [command]

Available Commands:
add Add a domain to shaman
delete Remove a domain from shaman
list List all domains in shaman
get Get records for a domain
update Update records for a domain
reset Reset all domains in shaman

Flags:
-C, --api-crt string Path to SSL crt for API access
-a, --api-domain string Domain of generated cert (if none passed) (default "shaman.nanobox.io")
-k, --api-key string Path to SSL key for API access
-p, --api-key-password string Password for SSL key
-H, --api-listen string Listen address for the API (ip:port) (default "127.0.0.1:1632")
-c, --config-file string Configuration file to load
-O, --dns-listen string Listen address for DNS requests (ip:port) (default "127.0.0.1:53")
-d, --domain string Parent domain for requests (default ".")
-f, --fallback-dns Fallback dns server address (ip:port), if not specified fallback is not used
-i, --insecure Disable tls key checking (client) and listen on http (api). Also disables auth-token
-2, --l2-connect string Connection string for the l2 cache (default "scribble:///var/db/shaman")
-l, --log-level string Log level to output [fatal|error|info|debug|trace] (default "INFO")
-s, --server Run in server mode
-t, --token string Token for API Access (default "secret")
-T, --ttl int Default TTL for DNS records (default 60)
-v, --version Print version info and exit

Use "shaman [command] --help" for more information about a command.
For usage examples, see api and/or cli readme

As a Server

To start shaman as a server run:
shaman --server
An optional config file can also be passed on startup:
shaman -c config.json
config.json
{
"api-domain": "shaman.nanobox.io",
"api-crt": "",
"api-key": "",
"api-key-password": "",
"api-listen": "127.0.0.1:1632",
"token": "secret",
"insecure": false,
"l2-connect": "scribble:///var/db/shaman",
"ttl": 60,
"domain": ".",
"dns-listen": "127.0.0.1:53",
"log-level": "info",
"server": true
}

L2 connection strings

Scribble Cacher
The connection string looks like scribble://localhost/path/to/data/store.

API:

RouteDescriptionPayloadOutput
POST /recordsAdds the domain and full recordjson domain objectjson domain object
PUT /recordsUpdate all domains and records (replaces all)json array of domain objectsjson array of domain objects
GET /recordsReturns a list of domains we have records fornilstring array of domains
PUT/records/{domain}Update domain's records (replaces all)json domain objectjson domain object
GET/records/{domain}Returns the records for that domainniljson domain object
DELETE/records/{domain}Delete a domainnilsuccess message
note: The API requires a token to be passed for authentication by default and is configurable at server start (--token). The token is passed in as a custom header: X-AUTH-TOKEN.
For examples, see the api's readme

Overview

+------------+     +----------+     +-----------------+
| +-----> +----->|
| API Server |||| Short-Term |
|<-----+ Caching <-----+ (in-memory) |
+------------+ | And | +-----------------+
| Database |
+------------+ | Manager | +-----------------+
| +-----> +----->|
| DNS Server |||| Long-Term (L2) |
|<-----+ <-----+ |
+------------+ +----------+ +-----------------+

Data types:

Domain (Resource):

json:
{
"domain": "nanopack.io.",
"records": [
{
"ttl": 60,
"class": "IN",
"type": "A",
"address": "127.0.0.1"
},
{
"ttl": 60,
"class": "IN",
"type": "A",
"address": "127.0.0.2"
}
]
}
Fields:
  • domain: Domain name to resolve
  • records: Array of address records
    • ttl: Seconds a client should cache for
    • class: Record class
    • type: Record type
      • A - Address record
      • CNAME - Canonical name record
      • MX - Mail exchange record
      • Many more - may or may not work as is
    • address: Address domain resolves to
      • note: Special rules apply in some cases. E.g. MX records require a number "10 mail.google.com"

基于ruby的dns解析服务器程序-RubyDNS

$
0
0

RubyDNS is a high-performance DNS server which can be easily integrated into other projects or used as a stand-alone daemon. By default it uses rule-based pattern matching. Results can be hard-coded, computed, fetched from a remote DNS server or fetched from a local cache, depending on requirements.

Build Status Code Climate Coverage Status Gitter

Installation

Add this line to your application's Gemfile:
gem 'rubydns'
And then execute:
$ bundle
Or install it yourself as:
$ gem install rubydns

Usage

There are lots of examples available in the examples/ directory.

Basic DNS Server

Here is the code from examples/basic-dns.rb:
#!/usr/bin/env ruby
require'rubydns'

INTERFACES= [
[:udp, "0.0.0.0", 5300],
[:tcp, "0.0.0.0", 5300],
]

IN=Resolv::DNS::Resource::IN

# Use upstream DNS for name resolution.
UPSTREAM=RubyDNS::Resolver.new([[:udp, "8.8.8.8", 53], [:tcp, "8.8.8.8", 53]])

# Start the RubyDNS server
RubyDNS::run_server(INTERFACES) do
match(%r{test.local}, IN::A) do |transaction|
transaction.respond!("10.0.0.80")
end

# Default DNS handler
otherwise do |transaction|
transaction.passthrough!(UPSTREAM)
end
end
Start the server using RUBYOPT=-w ./examples/basic-dns.rb. You can then test it using dig:
$ dig @localhost -p 5300 test.local
$ dig @localhost -p 5300 google.com

File Handle Limitations

On some platforms (e.g. Mac OS X) the number of file descriptors is relatively low by default and should be increased by calling ulimit -n 10000 before running tests or even before starting a server which expects a large number of concurrent incoming connections.

Custom Servers

It is possible to create and integrate your own custom servers, however this functionality has now moved to Async::DNS::Server.
classMyServer< Async::DNS::Server
defprocess(name, resource_class, transaction)
transaction.fail!(:NXDomain)
end
end

Async::Reactor.run do
task =MyServer.new.run

# ... do other things, e.g. run specs/tests

# Shut down the server manually if required, otherwise it will run indefinitely.
# task.stop
end
This is the best way to integrate with other projects.

Performance

Due to changes in the underlying code, there have been some very minor performance regressions. The numbers below will be updated in due course.
We welcome additional benchmarks and feedback regarding RubyDNS performance. To check the current performance results, consult the travis build job output.

Server

The performance is on the same magnitude as bind9. Some basic benchmarks resolving 1000 names concurrently, repeated 5 times, using RubyDNS::Resolver gives the following:
                           user     system      total        real
RubyDNS::Server 4.280000 0.450000 4.730000 ( 4.854862)
Bind9 4.970000 0.520000 5.490000 ( 5.541213)
These benchmarks are included in the unit tests. To test bind9 performance, it must be installed and which named must return the executable.

Resolver

The RubyDNS::Resolver is highly concurrent and can resolve individual names as fast as the built in Resolv::DNSresolver. Because the resolver is asynchronous, when dealing with multiple names, it can work more efficiently:
                           user     system      total        real
RubyDNS::Resolver 0.020000 0.010000 0.030000 ( 0.030507)
Resolv::DNS 0.070000 0.010000 0.080000 ( 1.465975)
These benchmarks are included in the unit tests.

一个基于go的DNS Proxy程序-dnsp

$
0
0

dnsp: A DNS Proxy

Wercker GoDoc Coverage
dnsp is a lightweight but powerful DNS server. Queries are blocked or resolved based on a blacklist or a whitelist. Wildcard host patterns are supported (e.g. *.com) as well as hosted, community-managed hosts files. Ideal for running on mobile devices or embedded systems, given its low memory footprint and simple web interface.

Installation

$ go get -u github.com/gophergala/dnsp/...

Example Usage

  • Forward all queries to Google's public nameservers:
$ sudo dnsp --resolve 8.8.4.4,8.8.8.8
  • Use a community-managed blacklist from hosts-file.net and check it hourly for changes:
$ sudo dnsp --blacklist=http://hosts-file.net/download/hosts.txt --poll 1h
  • Block everything except Wikipedia:
$ cat > /etc/dnsp.whitelist <<EOF
*.wikipedia.org
*.wikimedia.org
wikipedia.org
wikimedia.org
EOF

$ sudo dnsp -r 8.8.8.8 --whitelist=/etc/dnsp.whitelist

Advanced Usage

$ dnsp -h
NAME:
dnsp - DNS proxy with whitelist/blacklist support

USAGE:
dnsp [global options] command [command options] [arguments...]

VERSION:
0.9.2

COMMANDS:
help, h Shows a list of commands or helpfor one command

GLOBAL OPTIONS:
--net, -n "udp" listen protocol (‘tcp’ or ‘udp’) [$DNSP_NET]
--listen, -l ":dns" listen address (host:port, host or :port) [$DNSP_BIND]
--resolve, -r "8.8.4.4" comma-separated list of name servers (host:port or host) [$DNSP_SERVER]
--whitelist, -w URL or path to file containing whitelisted hosts [$DNSP_WHITELIST]
--blacklist, -b URL or path to file containing blacklisted hosts [$DNSP_BLACKLIST]
--poll, -p "0" poll the whitelist or blacklist for updates [$DNSP_POLL]
--http, -t start a web-based UI on the given address (host:port, host or port) [$DNSP_HTTP]
--help, -h show help
--version, -v print the version
Notes:
  • --listen defaults to :dns, which is equivalent to 0.0.0.0:53, meaning: listen on all interfaces, on port 53 (default DNS port).
  • --resolve defaults to the list of nameservers found in /etc/resolv.conf. If no nameservers were found, or the file does not exist (e.g. on Windows), the default value will be `8.8.4.4,8.8.8.8" (Google's public DNS service).
    • However, explicitly setting --resolve to false or an empty string disables resolving completely. What that means is all queries will still be checked against the active whitelist or blacklist, but ones that would not be blocked will return a failure response (as opposed to no response).
  • --whitelist and --blacklist are mutually exclusive. Setting both is an error.
  • --whitelist and --blacklist files are parsed according to a simple syntax:
    • Empty lines are ignored, and # begins a single-line comment.
    • Each line can contain a single hostname to be whitelisted or blacklisted.
    • Alternatively, a line can contain a pattern like *.wikipedia.org or *.xxx.
    • Additionally, the /etc/hosts-like syntax is supported.
      • However, only lines starting with 127.0.0.1 or ::1 are taken into parsed, everything else is ignored.
      • This is for compatibility with popular, regularly updated blocklists like the ones on hosts-file.net.
  • --whitelist and --blacklist support both file paths and URLs.
  • --poll instructs dnsp to periodically check the whitelist or blacklist file for changes.
    • The file is only re-parsed if the file size or modification time has changed since the last read.
    • Same is true for URLs: the Content-Length and Last-Modified headers are compared to previous values before re-downloading the file.

Running with a non-root user

Because dnsp binds to port 53 by default, it requires to be run with a privileged user on most systems. To avoid having to run dnsp with sudo, you can set the setuid and setgid access right flags on the compiled executable:
sudo mkdir -p /usr/local/bin
sudo cp $GOPATH/bin/dnsp
sudo chmod ug+s /usr/local/bin/dnsp
While dnsp will still run with root privileges, at least now we can run it with a non-admin user (someone who is not in the sudoers group).
-------
我的补充说明:
在mac机器上。首先安装go环境。然后,
cd $GOPATH
go get -u -v github.com/gophergala/dnsp/cmd/dnsp
dnsp -h
dnsp --net tcp  --listen 127.0.0.1:5353 --resolve 8.8.8.8
(意思是dnsp监听本机的5353端口,以tcp协议,向公共的dns解析服务器8.8.8.8发出dns解析请求)
显示:

2019/07/04 22:02:53 dnsp: listening on 127.0.0.1:5353, proxying to [8.8.8.8:53]

使用例子:
sudo wg-quick up wg0 

networksetup -setdnsservers "Wi-Fi""Empty"&& networksetup -setdnsservers "Wi-Fi" 127.0.0.1

dnsp --net tcp  --listen 127.0.0.1:5353 --resolve 8.8.8.8

不知能用多久,尽管是以tcp协议,发出dns解析请求,其实也可能用不了多久就不行了。
所以靠谱的办法还是这个:用dns-tcp-socks-proxy搭配一个socks proxy,解决dns污染问题。一定要套个代理才靠谱。
Viewing all 20464 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>