作者:garens

GoLang学习心得1

最近在学习GoLang,学习这语言的最主要原因——换工作了

由于各种原因,辞去了待了三年的公司,然后又找了一家新的。由于这家规模没有之前那个大,各种福利就跟不上,多少心里有些落差,可这阻碍不了我工作的激情,面对工作,我还是很认真的。

或者是因为“金三银四”的原因,最近感觉跳槽的人很多……(好像我上一次跳槽也是在3月份)进到这个新公司,本来是一web前端为主,可人员变动,之前负责一个代理端的人员跑了,一下子没有人来接手这个项目,结果我就被苦逼的接下了这个项目——用GoLang开发的一个代理。接手的原因是——“我的基础比较扎实”,言外之意,大家都懂的,就好比立马被拉进了一个名叫”这个锅不好接“的聊天群里。说了那么多,结论就是,我换了个公司,然后接了一个用GoLang开发的项目,更直白点说,就是我开始学习GoLang了……

多的不说了,开始进入正题:

面对GoLang,可以说是一脸懵逼。打开百度搜搜,先了解下它到底是啥,然后了解下能干啥,有啥优缺点,一翻搜索后,开始搭建开发环境:

开发环境的搭建就掉进了坑,还好爬的快。网上各种“大神“推荐了好多开发工具:liteide,eclipse……还有好多,出了之前用过eclipse之外,其他都没听过……好吧,那就eclipse……可是,各种弄了后,发现,没法编译程序……或许是我哪里没配置好,还有一个主要原因,是我之前都不喜欢用eclipse,用起来感觉别扭(完全个人原因)。于是还是打开了我的VSCode,搜搜看这万能的”记事本“,能不能进行GoLang的开发。各种试水后,终于搭建起来了,说一下步骤:

1、下载GoLang的环境包,下载地址必须是官网

https://golang.google.cn/dl/

下载下来后,点击安装

2、配置GoLang的环境变量配置

添加GOROOT变量,值为安装的go开发包位置;

如:C:\Go\

添加GOPATH变量,值为你开发go的工作区,就是代码目录,类似java的workspace

如:E:\dev_2019\go

这下命令行中就可以使用go命令,敲击  go env  可查看当前go的环境配置

这个GOPATH很关键,你最好也必须把代码放到这个目录下,而且又讲究:里面会有三个必须目录:

bin\: 可执行文件目录,一般在src下使用go install后,就会生成如windows下的exe文件到这个目录

pkg\: 一些依赖包的目录

src\: 源代码目录,采用go get命令可以安装一些第三方包,然后会放到这个目录下,也会对应生成一个可执行文件到bin下,自己开发的代码也要放到这个目录下,里面的目录结构主要有三个:github.com,golang.org和自己的开发目录,当然,你也可以把自己开发的放到github.com中,然后以自己的github名字区分。

 

一个GoLang的项目,以main函数为入口,编译时候,生成的文件以main函数所在文件夹命名,创建一个简单的hello word后,即可在当前目录下使用go build命令进行编辑,会在当前目录下生成如hello.exe的文件,可以直接运行这个文件则运行你的程序,也可以使用go install命令,把你的程序生成如exe的可执行文件放到GOPATH的bin目录下。

VSCode的开发环境搭建,插件可在VSCode中直接下载,但编译就有些麻烦,需要使用GDB进行编译,一时还没来得及理清这编译环境怎么进行的,我是各种搜索后,就弄好了,等后期有时间了再好好缕缕这编译环境的具体细节。

 

FreeSWITCH核心命令

简介

下面的是根据最新的版本r14778(九月九号)中mod_commands模块提供的命令,这些命令可以使用方式有很多种,如下:

控制台

具体查看下面内容。 译者注:通过FreeSWITCH控制台使用

API/事件 接口

通过API或事件接口调用,如:

  • [[mod_event_socket]]
  • [[mod_xmpp_event]]
  • [[mod_erlang_event]]
  • [[mod_xml_rpc]]

脚本接口

通过脚本进行调用,如下:

  • [[mod_perl]]
  • [[mod_spidermonkey]]
  • [[mod_python]]
  • [[mod_lua]]

拨号方案调用

通过拨号方案进行调用,例子如下:

<source lang="xml">
 <extension name="Make API call from Dialplan">
   <condition field="destination_number" expression="^(999)$">
     <!-- next line calls hupall, so be careful! -->
     <action application="set" data="api_result=${hupall(normal_clearing)}"/>
   </condition>
 </extension>
</source>

其他例子:

<source lang="xml">
 <action application="set" data="api_result=${status()}"/>
 <action application="set" data="api_result=${version()}"/>
 <action application="set" data="api_result=${strftime()}"/>
 <action application="set" data="api_result=${expr(1+1)}"/>
</source>

如果API命令含有多个参数,通常都是以空格隔开。

<source lang="xml">
 <action application="set" data="api_result=${sched_api(+5 none avmd ${uuid} start)}"/>
</source>

API命令依赖于加载的相关模块,从每个模块注册的API命令中都能发现它们的踪影。

想要查看全部API命令列表的话,在cli中输入help或者show api即可。

注:如果你想从拨号方案中调用API命令的话,需要先确认拨号方案自带的dptools里面没有类似的命令。

核心命令

主要在http://fisheye.freeswitch.org/browse/freeswitch.git/src/mod/applications/mod_commands/mod_commands.c中实现。

注:一些状态或列表命令的返回结果默认是以逗号进行分隔的列表。一些模块的返回结果可能也会包含逗号,这样就导致针对结果的自动化处理比较困难。一个解决方法是,是在命令的最后加上“as xml”,这样返回的就是xml格式的结果。

acl

使用acl列表判断ip地址是否为合法访问。

Usage: acl

命令别名alias

别名:一种针对常用命令的快捷输入方式

用法: alias add <别名> <命令> | del [<别名>|*]

例子:

  freeswitch> alias add reloadall reloadacl reloadxml
  +OK
  freeswitch> alias add unreg sofia profile internal flush_inbound_reg
  +OK

别名在重启后需要重设,如果需要重启后仍然生效,需要使用stickyadd参数,如下:

  freeswitch> alias stickyadd reloadall reloadacl reloadxml
  +OK

注:只在mod_console中起作用,在fs_cli中无效。
译者注:mod_console为以前台模式启动的freeswitch的命令输入界面。而fs_cli指的是freeswitch的客户端。

bgapi

用于在线程中执行api命令

用法: bgapi <api命令>[ <参数>]

complete

Complete.

Usage: complete add <word>|del [<word>|*]

译者注:该命令从没用过,不知道干啥的,知道的童鞋,可以来更新该文档。

cond

运算指定的条件,并返回结果。

用法: cond <条件表达式> ? <true val> : <false val>

条件表达式支持的条件有:

== 等于
< 小于
> 大于

例子: 如果第一个值大于第二个,则返回true

 cond 5 > 3 ? true : false
 true

拨号方案中的例子:

   <action application="set" data="voicemail_authorized=${cond(${sip_authorized} == true ? true : false)}"/>

稍复杂的例子:

   <action application="set" data="voicemail_authorized=${cond(${sip_acl_authed_by} == domains ? false : ${cond(${sip_authorized} == true ? true : false)})}"/>

domain_exists

检查指定的domain是否存在:

 用法: domain_exists <domain>

eval

Eval (noop). 计算字符串,扩展通道变量.

用法: eval [uuid:<uuid> ]<expression>

例子:

 eval ${domain}
 10.15.0.94

 eval Hello, World!
 Hello, World!

 eval uuid:e72aff5c-6838-49a8-98fb-84c90ad840d9 ${channel-state}
 CS_EXECUTE

expand

执行变量扩展API。

 用法: [uuid:<uuid> ]<cmd> <args>

例子:

 expand originate sofia/internal/1001%${domain} 9999   

在这个例子中,扩展的变量是${domain}。比如domain的值是192.168.1.1,则扩展后执行的命令为:

 originate sofia/internal/1001%192.168.1.1 9999

fsctl

发送freeswitch控制消息。

 用法: fsctl [send_sighup |
               hupall |
               pause [inbound|outbound] |
               resume [inbound|outbound] |
               shutdown [cancel|elegant|asap|restart] |
               last_sps |
               sps [num] |
               sync_clock |
               sync_clock_when_idle |
               reclaim_mem |
               max_sessions |
               min_dtmf_duration [num] |
               max_dtmf_duration [num] |
               default_dtmf_duration [num] |
               loglevel [level] |
               verbose_events [on|off]
              ]

hupall

用于挂断呼向指定号码的通话。参数为:

clearing_type dialed_ext <extension number>

举个例子来说,杀掉正处于活跃状态、目标号码是1000的通话,命令为:

fsctl hupall normal_clearing dialed_ext 1000

sync_clock

FreeSWITCH不信任系统时间。当系统第一次启动的时候,从系统时间中获取样本时间,然后以此为基准使用单调时钟(monotonic clock)。你可以使用命令“fsctl sync_clock”将FreeSWITCH与系统时间进行同步。

注:该命令会立即生效,会影响CDR里面的时间统计。如会导致计费超前或延后,或者记录的挂断时间小于拨打时间。举个例子来说,如果FS的时钟比系统时间迟一个月,当进行时间同步后,CDR的呼叫记录里面就会出现有的呼叫持续时间为1个月。

命令fsctl sync_clock_when_idle要安全很多,作用和上面一样,但是要到系统中所有通道都空闲的时候才开始时间同步。这种方法不会对CDR产生影响。

sync_clock_when_idle

要到系统没有通话的时候才开始时间同步

sps

该设置会改变swithch.conf文件中设置的sessions-per-second(每秒并发通话数)属性限制

last_sps

查询显示目前生效的sessions-per-second属性。

pause

可以使用参数inbound或outbound来暂停创建呼入或呼出通话,如果没有指定参数的话,则呼入呼出都暂停。resume的用法类似。

min_dtmf_duration

例子:

fsctl min_dtmf_duration 800

译者注:没看懂,就不翻译出来误导人了!
This example sets the min_dtmf_duration switch parameter to 100ms. The number is in clock ticks where clockticks / 8 = ms. The min_dtmf_duration specifies the minimum DTMF duration to use on outgoing events. Events shorter than this will be increased in duration to match min_dtmf_duration. You cannot configure a DTMF duration on a profile that is less than this setting. You may increase this value, but cannot set it lower than 400 (the default). This value cannot exceed max_dtmf_duration. This setting can be changed in switch.conf.xml.

It is worth noting that many devices squelch in-band DTMF when sending RFC 2833. Devices that squelch in-band DTMF have a certain reaction time and clamping time which can sometimes reach as high as 40ms, though most can do it in less than 20ms. As the shortness of your DTMF event duration approaches this clamping threshold, the risk of your DTMF being ignored as a squelched event increases. If your call is always IP-IP the entire route, this is likely not a concern. However, when your call is sent to the PSTN, the RFC 2833 must be encoded in the audio stream. This means that other devices down the line (possibly a PBX or IVR you are calling into) might start considering your DTMF event a squelched tone and ignore it entirely. For this reason, it is recommended that you do not send DTMF events shorter than 80ms.

Checking the current value:

fsctl min_dtmf_duration 0

The code recognizes a duration of 0 as a status check. Instead of setting the value to 0, it simply returns the current value.

====max_dtmf_duration====

Example:

fsctl max_dtmf_duration 80000

This example sets the max_dtmf_duration switch parameter to 10,000ms (10 seconds). The number is in clock ticks (CT) where CT / 8 = ms. The max_dtmf_duration caps the playout of a DTMF event at the specified duration. Events exceeding this duration will be truncated to this duration. You cannot configure a duration on a profile that exceeds this setting. This setting can be lowered, but cannot exceed 192000 (the default). This setting cannot be set lower than min_dtmf_duration. This setting can be changed in switch.conf.xml.

Checking the current value:

fsctl max_dtmf_duration 0

The code recognizes a duration of 0 as a status check. Instead of setting the value to 0, it simply returns the current value.

====default_dtmf_duration====

Example:

fsctl default_dtmf_duration 2000

This example sets the default_dtmf_duration switch parameter to 250ms. The number is in clock ticks (CT) where CT / 8 = ms. The default_dtmf_duration specifies the DTMF duration to use on originated DTMF events or on events that are received without a duration specified. This value can be increased or lowered. This value is lower-bounded by min_dtmf_duration and upper-bounded by max_dtmf_duration. This setting can be changed in switch.conf.xml.

Checking the current value:

fsctl default_dtmf_duration 0

The code recognizes a duration of 0 as a status check. Instead of setting the value to 0, it simply returns the current value.

====verbose_events==== Enables verbose events. Verbose events have ”’every”’ channel variable in ”’every”’ event for a particular channel. Non-verbose events have only the pre-selected channel variables in the event headers. * This setting can also be set in [[switch.conf.xml]].

global_getvar

获取全局变量的值。如果没有提供参数,则返回所有全局变量的值。

用法: global_getvar <varname>

global_setvar

设置全局变量

用法: global_setvar <varname>=<value>

例子:

global_setvar foo=bar

group_call

返回组呼bridge字符串,组呼定义请参考[[XML User Directory Guide#Groups|call group]]。

Usage: group_call group@domain[+F][+A][+E]

+F将会以串行呼叫模式返回组成员(以“|”隔开各成员). +A将会以并行呼叫模式返回组成员(以“,”隔开各成员). +E将会议呼叫模式返回组成员(以:_:隔开各成员),关于企业呼叫请参考[[Freeswitch_IVR_Originate#Enterprise_originate|enterprise fashion]].

请注意:如果你需要设置在外呼通道上面设置用户变量,需要确保你的domain或被拨打组的变量列表里面没有设置dial-string和group-dial-string,用设置用户默认组里面的dial-string和group-dial-string来替代。这样的话,group_call将会返回user/101,user/将会设置你的外呼通道变量。

help

显示所有API命令的帮助信息。

用法: help

host_lookup

针对指定域名做主机查询(host lookup)。

用法: host_lookup <hostname>

hupall

断开现存通话。

用法: hupall <cause> [<variable> <value>]

挂断所有含有变量,并且值为的通话,挂机原因为。

例子:

originate {foo=bar}sofia/internal/someone1@server.com,sofia/internal/someone2@server.com &park

hupall normal_clearing foo bar

in_group

判断用户是否在指定的组中

用法: in_group <user>[@<domain>] <group_name>

is_lan_addr

判断IP是否为内网地址

用法: is_lan_addr <ip>

load

加载外部模块

用法: load <mod_name>

md5

返回指定数据的MD5值。

用法: md5 <data>

module_exists

检查模块是否存在。

用法: module_exists <module>

msleep

休眠指定毫秒

用法: msleep <休眠的毫秒数>

nat_map

用法: nat_map [status|reinit|republish] | [add|del] <port> [tcp|udp] [sticky] | [mapping] <enable|disable>
  • status – 用于显示NAT类型、外网IP(the external IP)以及当前映射的端口。
  • reinit – 重新初始化NAT模块。当你更换路由器或将路由器由NAT切换到UPnP模式的时候,使用该参数。
  • republish – 该参数会让FreeSWITCH重新(向路由器等)发布NAT映射信息。 正常情况下,没有必要使用该参数。
  • mapping – 该参数用于控制是否向NAT设备发送端口映射请求(可使用-nonatmap参数在系统启动时关闭该功能). 之所以存在该参数,是因为有可能需要通过NAT获取公网IP地址,而不需要通过NAT开启端口。

Note: sticky参数用于将映射信息固化下来,在下次FreeSWITCH重启后映射仍然生效。

警告: 如果你有多个网卡,并分别配置了使用相同端口的sip profiles。nat_map在映射端口的时候,会被弄昏头的,不需要将端口映射到哪个sip profile上面,千万别干这种挫事!

regex

执行正则表达式匹配。该参数会根据是否提供参数而实现不同的功能,如下:

  • 如果没提供该参数, ”regex” 将会执行正常的匹配,返回true或者false。
  • 如果提供该参数,如果匹配成功的话,会返回指定的子串。如果匹配失败,则返回全部源字符串。

默认的正则表达式分界符是|(管道符)。可以更改为~或者/,只要在字符串的前面加上’m:’。

Usage: regex <data>|<pattern>[|<subst string>]
       regex m:/<data>/<pattern>[/<subst string>]
       regex m:~<data>~<pattern>[~<subst string>]

例子:

 regex test1234|\d                  <== Returns "true"
 regex m:/test1234/\d               <== Returns "true"
 regex m:~test1234~\d               <== Returns "true"
 regex test|\d                      <== Returns "false"
 regex test1234|(\d+)|$1            <== Returns "1234"
 regex sip:foo@bar.baz|^sip:(.*)|$1 <== Returns "foo@bar.baz"
 regex testingonetwo|(\d+)|$1       <== Returns "testingonetwo" (no match)
 regex m:~30~/^(10|20|40)$/~$1      <== Returns "30" (no match)
 regex m:~30~/^(10|20|40)$/~$1~n    <== Returns "" (no match)
 regex m:~30~/^(10|20|40)$/~$1~b    <== Returns "false" (no match)

版本14727中的逻辑是,如果源字符串匹配匹配到结果,那么条件为false,但是这里仍有一个匹配结果,结果是1001。(这里的翻译是照字面翻译,小伙伴们,你们看懂了没?)
Logic in revision 14727 if the source string matches the result then the condition was false however there was a match and it is 1001.

regex 1001|(^\d{4}$)|$1
  • See also [[Regular_Expression]]

reload

重新加载模块。

用法: reload [-f] <mod_name>

reloadacl

重新加载ACL规则。

用法: reloadacl [reloadxml]

reloadxml

重新加载conf/freeswitch.xml的配置信息到内存中。

用法: reloadxml

show

输出多种(模块)状态报告。

 用法: show <item>
  item类型如下:
  codec
  endpoint
  application
  api
  dialplan
  file
  timer
  calls [count]
  channels [count|like <match string>]
  calls
  detailed_calls
  bridged_calls
  detailed_bridged_calls
  aliases
  complete
  chat
  management
  modules
  nat_map
  say
  interfaces
  interface_types
  tasks
  limits

XML格式输出: show foo as xml

修改输出分隔符: show foo as delim |

  • codec – 列出所有编码
  • endpoint – 列出所有endpoint类型模块
  • application – 列出所有应用程序
  • api – 列出所有api
  • dialplan – 列出拨号方案涉及的模块
  • file – 列出所有支持的文件类型
  • timer – 列出计时器timer模块
  • calls – 列出当前的通话[count]
  • channels – 列出当前的通道 [count|like ]
    注:关于calls与channels的对比,请参考Channels vs Calls
  • bridged_calls – 和”show calls”相同
  • detailed_calls – 和”show calls”类似,但是显示字段更多
  • detailed_bridged_calls – 和”show calls”类似,但是显示字段更多
  • aliases – 列出所有别名(别名干啥用的,暂时未查到)
  • complete – list command complete tables
  • chat – 列出所有chat模块,包括api、sms、conf等
  • management – list management?
  • modules – 列出所有模块
  • nat_map – 列出地址映射表
  • say – 列出有支持语言的say模块
  • interfaces – 列出所有接口
  • interface_types – 列出所有接口类型
  • tasks – 列出任务
  • registrations – 列出所有注册用户

Tips For Showing Calls and Channels

理解show calls/channels真义的最好方式是亲自去尝试。最近(2011.9)又在show命令家族中添加了几位:

  • show detailed_calls
  • show bridged_calls
  • show detailed_bridged_calls

这三个命令用于取代简单的”show calls”。
需要注意的是,”show detailed_calls”取代的是”show distinct_channels”。命令都是相似的,但是返回信息更多。
同样需要注意的是,这里并没有”show detailed_channels”命令,但是使用”show detailed_calls”会让你得到相同的结果。该命令能让你得到“单腿通话”(one-legged calls)或桥接后的通话信息,所以,少年,习惯这条新命令吧!

小贴士2: 有时,你需要获取某个特定的uuid,可以使用下面的方式。
假设你设置了通道变量presence_data,那可以使用下面的命令搜索符合条件的通道(即含有foo的通道): show channels like foo

like将会搜索下面的关键字段:

  • uuid
  • channel name
  • caller id name
  • caller id number
  • presence_data

注: presence_data 必须在bridgeoriginate期间设置,而不是在通道已经建立完成后才设置。

shutdown

停止FreeSWITCH程序。该命令只在cli中起作用,如果想作为api进行调用,需要使用fsctl shutdown

警告!在cli中运行shutdown会忽略掉参数,并立即退出!

用法: fsctl shutdown [cancel|elegant|asap|restart|now] 
  • cancel – 终止上一次提交的shutdown请求
  • elegant – 等待所有通话都停止后才关闭,允许新发起通话.
  • asap – 等待所有通话都停止后才关闭, 不再允许新通话.
  • restart – 在执行完“shutdown”后立即重启FreeSWITCH。
  • now – 立即重启FreeSWITCH。

当使用”elegant”, “asap”或者”now”参数后,还可以后跟restart命令,如下:

用法: fsctl shutdown [elegant|asap|now] restart

status

显示当前FreeSWITCH的运行状态

 用法: status

 freeswitch@internal> status
 UP 0 years, 0 days, 1 hour, 28 minutes, 4 seconds, 208 milliseconds, 305 microseconds
 FreeSWITCH is ready
 4 session(s) since startup
 0 session(s) 0/30                        <- 每秒创建的最大通话数 .. 来自switch.conf.xml
 1000 session(s) max                      <- 同时并存的最大通话数 .. 来自switch.conf.xml
 min idle cpu 0.00/100.00                 <- 达到拒接电话标准的最小闲置CPU值 .. 来自switch.conf.xml (如果该值被启动的话).

strftime_tz

根据不同的时区,显示格式化后的时间。需要查看linux时区标准列表的,请查看/usr/share/zoneinfo/zone.tab。

用法: strftime_tz <timezone> [format_string]

示例: strftime_tz US/Eastern %Y-%m-%d %T

unload

卸载外部模块

用法: unload [-f] <mod_name>

version

显示FreeSWITCH的版本号

用法: version [short]

xml_locate

xml_locate root: 返回FreeSWITCH使用的所有XML
xml_locate <section>: 返回指定<section>的XML

xml_locate directory
xml_locate configuration
xml_locate dialplan
xml_locate phrases

用法: xml_locate [root | <section> | <section> <tag> <tag_attr_name> <tag_attr_val>]

示例: xml_locate directory domain name example.com

xml_wrap

使用xml来包装API命令

用法: xml_wrap <command> <args>

呼叫管理命令

break

被废弃,请查看uuid_break命令

create_uuid

创建一个新的UUID,并以字符串的形式返回。

用法: create_uuid

originate

发起一个新的呼叫

Usage: originate <call_url> <exten>|&<application_name>(<app_args>) 
[<dialplan>] [<context>] [<cid_name>] [<cid_num>] [<timeout_sec>]

参数:

  • <call_url> 呼叫目标URL.
    想多了解sofia sip URL语法的童鞋可以参考: [[Sofia|FreeSwitch Endpoint Sofia]]
  • 目标有如下几类:
    • 进入拨号方案进行路由的目标号码
    • &<application_name>(<app_args>)
      • “&” 表明后面跟的是应用名称,不是一个目标号码
      • (<app_args>) 可选参数 (不是所有应用都需要传递参数,比如park)
      • 下面是可以用在’&’后面的应用列表:
        park, bridge, javascript/lua/perl, playback (移除mod_native_file), and many others.
      • 注1: 用单引号传递含有空格的参数,如’&lua(test.lua arg1 arg2)’
      • 注2: 在&和application_name之间不能含有空格
  • 默认为’XML’,如果没有特别指定的话。
  • 默认为’default’,如果没有特别指定的话。
  • 主叫名称.
  • 主叫号码.
  • 超时时长(单位为秒).

可选参数:
这些可选参数使用大括号包裹,如:

originate {ignore\_early_media=true}sofia/example/user 8334

参数需要使用逗号隔开,例子如下:

originate {ignore_early_media=true,originate_timeout=2}sofia/example/user 8334
  • group_confirm_key
  • group_confirm_file
  • forked_dial
  • fail_on_single_reject
  • ignore_early_media
  • return_ring_ready
  • originate_retries
  • originate_retry_sleep_ms
  • origination_caller_id_name
  • origination_caller_id_number
  • originate_timeout
  • sip_auto_answer

更多变量,参考下面的地址:
[[Channel_Variables#Originate_related_variables|Description of originate’s related variables]]

例子:
假设,你想拨打一个本地注册的sip终端,号码为300,然后执行park操作,如下:
(注:本例中用的sip profile是example,你在实际测试的时候,需要改成你本地电话注册的sip profile,一般为internal)

originate sofia/example/300%pbx.internal &park()

又或者,你想将远程注册的sip终端连到拨号规则8600上

originate sofia/example/300@foo.com 8600

再或者,你想将远程注册的sip终端连到另一个远程终端

originate sofia/example/300@foo.com &bridge(sofia/example/400@bar.com)

还或者, 你甚至可以在接通后执行javascript脚本test.js

originate sofia/example/1000@somewhere.com &javascript(test.js)

如果运行的javascript脚本需要传递参数,则需要使用单引号括起来。

originate sofia/example/1000@somewhere.com '&javascript(test.js myArg1 myArg2)'

在发起呼叫前,设置通道变量

originate {ignore_early_media=true}sofia/mydomain.com/18005551212@1.2.3.4 15555551212

在发起呼叫期间,设置通道变量,并传递给另一个FS

originate {sip_h_X-varA=111,sip_h_X-varB=222}sofia/mydomain.com/18005551212@1.2.3.4 15555551212

注: 你可以设置任何类型的通道变量,即使是自定义变量。如果变量的值含有空格或逗号等符号,使用单引号括起来即可。

originate {my_own_var=my_value}sofia/mydomain.com/that.ext@1.2.3.4 15555551212
originate {my_own_var='my value'}sofia/mydomain.com/that.ext@1.2.3.4 15555551212

如果你想自造一段回铃音给被呼叫方听,try this:

originate {ringback=\'%(2000,4000,440.0,480.0)\'}sofia/example/300@foo.com &bridge(sofia/example/400@bar.com)

如果你想发起呼叫后,通道进入”Ring-Ready”状态后就立即返回,try this:

originate {return_ring_ready=true}sofia/gateway/someprovider/919246461929 &socket(127.0.0.1:8082 async full)

更多信息请查阅return ring ready

你可以将保持等待音乐设置为回铃音,if you want:

originate {ringback=\'/path/to/music.wav\'}sofia/gateway/name/number &bridge(sofia/gateway/name/othernumber)

你可以在后台发起一个呼叫(异步模式),播放一段60秒的提示消息:

bgapi originate {ignore_early_media=true,originate_timeout=60}sofia/gateway/name/number &playback(message)

你可以指定被呼叫方的UUID,只需要下面几步:

  • 使用create_uuid创建一个UUID,待用。
  • 使用uuid_kill直接可以在对方未接听前杀掉该次呼叫。
  • 使用origination_uuid指定uuid之后,被叫方会在整个通话的生命周期中使用该UUID。 * originate {origination_uuid=…}user/100@domain.name.com

下面例子作用:发起一个到外部sip服务器echo conference的呼叫,然后转接到本地用户分机上

originate sofia/internal/9996@conference.freeswitch.org &bridge(user/105@default)

下面例子作用:向’default’以外的context上的分机发起呼叫(FreePBX会用到该特性,如context名字为context_1,context_2等等)

originate sofia/internal/2001@foo.com 3001 xml context_3

如果你想对多个分机发起呼叫,可以使用下面的命令:

originate user/1001,user/1002,user/1003 &park()

如果需要在收到early media的时候,将外呼的电话转入会议中,可以使用下面的两个命令,作用一样

originate sofia/example/300@foo.com &conference(conf_uuid-TEST_CON)
originate sofia/example/300@foo.com conference:conf_uuid-TEST_CON inline

   ( See [[Misc._Dialplan_Tools_InlineDialplan]] for more detail on 'inline' Dialplans )

下面的例子演示如何在A-leg上面使用loopback和inline
我是例子

pause

停止指定通道的媒体播放

用法: pause <uuid> <on|off>

uuid_answer

应答

用法: uuid_answer <uuid>
  • See Also: [[Misc.Dialplan_Tools_answer]]

uuid_audio

调整信道上面的音量,或直接通过一个媒体bug进行静音(读/写)

用法: uuid_audio <uuid> [start [read|write] [mute|level <level>]|stop]

level的值范围从-4到4,默认值为0。

uuid_break

断开发送至指定信道的媒体流。举例来说,如果此时正在信道上面播放一个音频文件,使用uuid_break命令,就会断开媒体,呼叫会顺着拨号方案、脚本等往下执行。

用法: uuid_break <uuid> [all]

如果使用all标记的话,所有信道上面正在排队等待播放的音频文件都会被移除,但是如果没有all标记的话,只有当前正在播放的音频文件会被断开。

uuid_bridge

桥接两条呼叫的腿。

Usage: uuid_bridge <uuid> <other_uuid>

uuid_bridge至少需要有一条腿是被呼通的。

uuid_broadcast

在一个指定UUID的信道上执行任意一个拨号方案程序。如果指定了某录音文件名,则代表将会在该信道上播放该文件。 执行拨号方案程序的语法规则是“app::args”。

用法: uuid_broadcast <uuid> <path> [aleg|bleg|both]

在选定的腿上执行应用程序,执行完毕后挂断,并指明挂机原因。

用法: uuid_broadcast <uuid> app[![hangup_cause]]::args [aleg|bleg|both]

具体应用举例如下:

 uuid_broadcast 336889f2-1868-11de-81a9-3f4acc8e505e sorry.wav both
 uuid_broadcast 336889f2-1868-11de-81a9-3f4acc8e505e say::en\snumber\spronounced\s12345 aleg
 uuid_broadcast 336889f2-1868-11de-81a9-3f4acc8e505e say!::en\snumber\spronounced\s12345 aleg
 uuid_broadcast 336889f2-1868-11de-81a9-3f4acc8e505e say!user_busy::en\snumber\spronounced\s12345 aleg
 uuid_broadcast 336889f2-1868-11de-81a9-3f4acc8e505e playback!user_busy::sorry.wav aleg

uuid_buglist

列出信道上面的媒体bug(media bugs)

用法: uuid_buglist <uuid>

uuid_chat

发送聊天信息

用法: <uuid> <text>

如果和会话(session,由uuid指定)相关的终端有一个receive_event handler,该消息会被发往终端,并以及时消息的形式显示出来。

uuid_debug_media

该命令过去为uuid_debug_audio,但是因为加入了一些视频的内容,所以改为现在的名字。

调试媒体流

用法:

<uuid> <read|write|both|vread|vwrite|vboth> <on|off>

使用“read”、“write”或者“both”(同时调试两个方向)作为语音流的方向,以进行调试。 在前面加上“v”,代表视频流的调试。

Read Format

“R %s b=%4ld %s:%u %s:%u %s:%u pt=%d ts=%u m=%d\n”

where the values are:

* switch_channel_get_name(switch_core_session_get_channel(session)),
* (long) bytes,
* my_host, switch_sockaddr_get_port(rtp_session->local_addr),
* old_host, rtp_session->remote_port,
* tx_host, switch_sockaddr_get_port(rtp_session->from_addr),
* rtp_session->recv_msg.header.pt, 
* ntohl(rtp_session->recv_msg.header.ts), 
* rtp_session->recv_msg.header.m

Write Format

“W %s b=%4ld %s:%u %s:%u %s:%u pt=%d ts=%u m=%d\n”

where the values are:

* switch_channel_get_name(switch_core_session_get_channel(session)),
* (long) bytes,
* my_host, switch_sockaddr_get_port(rtp_session->local_addr),
* old_host, rtp_session->remote_port,
* tx_host, switch_sockaddr_get_port(rtp_session->from_addr),
* send_msg->header.pt, 
* ntohl(send_msg->header.ts), 
* send_msg->header.m);

uuid_deflect

通过发送REFER方法,将当前FreeSWITCH上面的某个已经应答的sip呼叫转移走。

用法: uuid_deflect <uuid> <sip URL>

在命令执行后,uuid_deflect等待远端的应答,以此判断转移是否成功。远端返回的sip内容(sip fragment)将会作为uuid_deflect命令的返回结果。如果远端报告REFER成功,FreeSWITCH将会向那条信道发送bye信令。

举例如下:

uuid_deflect 0c9520c4-58e7-40c4-b7e3-819d72a98614 sip:info@example.net

返回内容:

Content-Type: api/response
Content-Length: 30

+OK:SIP/2.0 486 Busy Here

uuid_displace

将目标信道上面的语音流替换为指定的录音(文件)。

参数:

* uuid = 通话的唯一标识符(通过“show channels"可查看到)
* start|stop = 启动/停止该操作
* file = 要播放的语音源(wav,shout等等)路径
* limit = 语音替换(文件)的最大播放时长,秒数
* mux = 该选项将会导致原始的语音流与录音(文件)进行混音。比如,你在替换语音的时候,仍想与另一端进行会话(即在听到替换的录音文件的时候,也能听到对方的声音)。

用法:

uuid_displace <uuid> [start|stop] <file> [<limit>] [mux]

举例如下:

uuid_displace 1a152be6-2359-11dc-8f1e-4d36f239dfb5 start /sounds/test.wav 60
uuid_displace 1a152be6-2359-11dc-8f1e-4d36f239dfb5 stop /sounds/test.wav

uuid_display

更新话机的显示内容,前提是话机支持该功能。目前有Polycom和Snom等部分Sip话机支持该功能。

用法: <uuid> [<display>]

该命令会导致重新协商语音编码。SIP->RTP包的大小应该是0.020。如果在SPA系统话机上,设置为0.030的话,会引起DTMF延迟(DTMF lag)。当话机上的按键被按下的时候,我们可以通过fs_cli看到,但是会有4到6秒的延迟。

uuid_dual_transfer

将处于通话中的双方分别转移到不同的目的地。

-USAGE: <uuid> <A-dest-exten>[/<A-dialplan>][/<A-context>] <B-dest-exten>[/<B-dialplan>][/<B-context>]

uuid_dump

导出指定会话中的所有变量

Usage: uuid_dump <uuid> [format]

导出格式: XML

uuid_early_ok

停止忽略早期媒体(即正常播放early media)。 如果此时ignore_early_media=true,该命令将会停止忽略早期媒体(让参数ignore_early_media设置不起作用),并正常播放。

用法: uuid_early_ok

uuid_exists

检查给定的uuid是否存在。

用法: uuid_exists

uuid_flush_dtmf

刷新DTMF数字缓存,将在排队的DTMF全部送出

Usage: uuid_flush_dtmf

uuid_fileman

管理正在信道中播放的音频流,该音频来自一个语音文件。

用法: uuid_fileman <cmd:val>

命令如下:

*speed:<+[step]>|<-[step]>    语速
*volume:<+[step]>|<-[step]>   音量
*pause                         暂停
*stop                          停止
*truncate                      截断
*restart                      重启
*seek:<+[samples]>|<-[samples]> 定位

Samples,从字面上来讲,就是语音文件前进后退的取样数。在8KHZ的文件中,取样数8000代表的是一秒。同样,在16KHZ的文件中,16000代表的也是一秒。

uuid_getvar

获取指定的信道变量

用法: uuid_getvar

uuid_hold

保持通话

用法:

uuid_hold <uuid>           保持通话
uuid_hold off <uuid>       结束保持,恢复正常通话
uuid_hold toggle <uuid>    在保持和取消保持间切换

uuid_kill

重置(杀掉)指定的信道

用法: uuid_kill [cause]

uuid_limit

Apply or change limit(s) on a specified uuid.

Usage: uuid_limit [[/interval]] [number [dialplan [context]]]

See also [[Limit]]

uuid_media

Reinvite FreeSWITCH out of the media path:

Usage: uuid_media [off]

Reinvite FreeSWITCH back in:

Usage: uuid_media

uuid_media_reneg

API command to tell a channel to send a re-invite with optional list of new codecs

Usage: uuid_media_reneg

uuid_park

Park call

Usage: uuid_park

uuid_preanswer

Preanswer a channel.

Usage: uuid_preanswer

  • See Also: [[Misc._Dialplan_Tools_pre_answer]]

uuid_preprocess

Pre-process Channel

Usage: uuid_preprocess <>

uuid_recv_dtmf

Send DTMF digits to set.

Usage: uuid_recv_dtmf [@]

Use the character w for a .5 second delay and the character W for a 1 second delay.

Default tone duration is 2000ms .

uuid_send_dtmf

Send DTMF digits.

Usage: uuid_send_dtmf [@]

Use the character w for a .5 second delay and the character W for a 1 second delay.

Default tone duration is 2000ms .

uuid_send_info

Send info to the endpoint

Usage: uuid_send_info

uuid_session_heartbeat

Usage: uuid_session_heartbeat [sched] [0|]

uuid_setvar

Set a variable on a channel. If value is omitted, the variable is unset.

Usage: uuid_setvar [value]

uuid_setvar_multi

Set multiple vars on a channel.

Usage: uuid_setvar_multi =[;=[;…]]

uuid_simplify

This command directs FreeSWITCH to remove itself from the SIP signaling path if it can safely do so

Usage:

uuid_simplify

uuid_transfer

Transfers an existing call to a specific extension within a and . Dialplan may be “xml” or “directory”.

Usage:

uuid_transfer [-bleg|-both] [] []

The optional first argument will allow you to transfer both parties (-both) or only the party to whom is talking.(-bleg)

NOTE: if the call has been bridged, and you want to transfer either sides of the call, then you will need to use (or the API equivalent). If it’s not set, transfer doesn’t really work as you’d expect, and leaves calls in limbo.

Record/Playback Commands

uuid_record

Record the audio associated with the given UUID into a file. The start command causes FreeSWITCH to start mixing all call legs together and saves the result as a file in the format that the file’s extension dictates. (if available) The stop command will stop the recording and close the file. If media setup hasn’t yet happened, the file will contain silent audio until media is available. Audio will be recorded for calls that are parked. The recording will continue through the bridged call. If the call is set to return to park after the bridge, the bug will remain on the call, but no audio is recorded until the call is bridged again. (TODO: What if media doesn’t flow through FreeSWITCH? Will it re-INVITE first? Or do we just not get the audio in that case?)

Usage:

uuid_record [start|stop] []

Where limit is the max number of seconds to record.

If the path is not specified on start it will default to the channel variable “sound_prefix” or FreeSWITCH base_dir when the “sound_prefix” is empty.

You may also specify “all” for path when stop is used to remove all for this uuid

“stop” command must be followed by option.

[[Channel_Variables#Call_Recording_Related|See record’s related variables]]

Limit Commands

[[Limit#API|limit_reset]]

Reset a limit backend.

[[Limit#API|limit_status]]

Retrieve status from a limit backend.

[[Limit#API|limit_usage]]

Retrieve usage for a given resource.

[[Limit#API|uuid_limit_release]]

Manually decrease a resource usage by one.

[[Limit#API|limit_interval_reset]]

Reset the interval counter to zero prior to the start of the next interval.

Misc. Commands

bg_system

Execute a system command in the background.

Usage: bg_system

echo

Echo input back to the console echo This text will appear This text will appear

file_exists

Tests whether ”filename” exists.

file_exists filename

Examples:

file_exists /tmp/real_file true file_exists /tmp/missing_file false

Example dialplan usage:

 <extension name="play-news-announcements">
   <condition expression="${file_exists(${sounds_dir}/news.wav)}" expression="true"/>
     <action application="playback" data="${sounds_dir}/news.wav"/>
     <anti-action application="playback" data="${soufnds_dir}/no-news-is-good-news.wav"/>
   </condition>
 </extension>

”’Note”’ this tests whether FreeSWITCH can see the file, but the file may still be unreadable (permissions).

find_user_xml

Checks to see if a user exists; Matches user tags found in the directory, similar to [[user_exists]], but returns an XML representation of the user as defined in the directory (like the one shown in [[Mod_commands#user_exists|user_exists]]).

Usage: find_user_xml

Where key references a key specified in a directory’s user tag, user represents the value of the key, and the domain is the domain the user is assigned to.

list_users

Lists Users configured in Directory

Usage: list_users [group ] [domain ] [user ] [context ]

Example:

freeswitch@localhost> list_users group default

userid|context|domain|group|contact|callgroup|effective_caller_id_name|effective_caller_id_number
2000|default|192.168.20.73|default|sofia/internal/sip:2000@192.168.20.219:5060|techsupport|B#-Test 2000|2000
2001|default|192.168.20.73|default|sofia/internal/sip:2001@192.168.20.150:63412;rinstance=8e2c8b86809acf2a|techsupport|Test 2001|2001
2002|default|192.168.20.73|default|error/user_not_registered|techsupport|Test 2002|2002
2003|default|192.168.20.73|default|sofia/internal/sip:2003@192.168.20.149:5060|techsupport|Test 2003|2003
2004|default|192.168.20.73|default|error/user_not_registered|techsupport|Test 2004|2004

+OK

Search items can be combined:

freeswitch@localhost> list_users group default user 2004

userid|context|domain|group|contact|callgroup|effective_caller_id_name|effective_caller_id_number
2004|default|192.168.20.73|default|error/user_not_registered|techsupport|Test 2004|2004

+OK

sched_api

Schedule an API call in the future. Usage: sched_api [+@]

time is the UNIX timestamp at which the command should be executed. If it is prefixed by +, 

Scheduled task or group of tasks can be revoked with sched_del or unsched_api.

You could put “&” symbol at the end of the line to make command to be executed in its own thread.

Example: sched_api +1800 none originate sofia/internal/1000%${sip_profile} &echo() sched_api @600 check_sched log Periodic task is running…

sched_broadcast

Play a file to a specific call in the future. Usage: sched_broadcast [+]

Schedule execution of an application on a chosen leg(s) with optional hangup: Usage: sched_broadcast [+]

time is the UNIX timestamp at which the command should be executed (or if it is prefixed by +, the number of seconds to wait before executing the command)

Example: sched_broadcast +60 336889f2-1868-11de-81a9-3f4acc8e505e commercial.wav both sched_broadcast +60 336889f2-1868-11de-81a9-3f4acc8e505e say::en\snumber\spronounced\s12345 aleg

sched_del

Removes a prior scheduled group or task ID Usage: sched_del <group_name|task_id>

The one argument can either be a group of prior scheduled tasks or the returned task-id from sched_api.

Example: sched_del my_group sched_del 2

sched_hangup

Schedule a running call to hangup.

Usage: sched_hangup [+]

Note: sched_hangup +0 is the same as uuid_kill

sched_transfer

Schedule a transfer for a running call.

Usage: sched_transfer [+]

stun

Executes a STUN lookup. Usage: stun [:port]

Example: stun stun.freeswitch.org

system

Execute a system command.

Usage: system

The command is passed to the system shell, where it may be expanded or interpreted in ways you don’t expect. This can lead to security bugs if you’re not careful. For example, the following command is dangerous:

If a malicious remote caller somehow sets their caller ID name to “; rm -rf /”, you would unintentionally be executing this shell command:

log_caller_name; rm -rf /

time_test

Time test.

Usage: time_test [count]

Runs a test to see how bad timer jitter is. It runs the test count times (default 10) and tries to sleep for mss microseconds. It returns the actual timer duration along with an average.

Sample:

time_test 100 5

test 1 sleep 100 99
test 2 sleep 100 97
test 3 sleep 100 96
test 4 sleep 100 97
test 5 sleep 100 102
avg 98

timer_test

Timer test.

Usage: timer_test <10|20|40|60|120> [<1..200>] []

Runs a test to see how bad timer jitter is. Unlike time_test, this uses the actual freeswitch timer infrastructure to do the timer test and exercises the timers used for call processing.

First argument is the timer interval. Second is the count. Third is the timer name (“show timers” will give you a list)

Example:

timer_test 20 3

Avg: 16.408ms Total Time: 49.269ms

2010-01-29 12:01:15.504280 [CONSOLE] mod_commands.c:310 Timer Test: 1 sleep 20 9254
2010-01-29 12:01:15.524351 [CONSOLE] mod_commands.c:310 Timer Test: 2 sleep 20 20042
2010-01-29 12:01:15.544336 [CONSOLE] mod_commands.c:310 Timer Test: 3 sleep 20 19928

tone_detect

Start Tone Detection on a channel.

Usage: tone_detect [ ]

unsched_api

Unschedule an api command.

Usage: unsched_api

url_decode

Usage: url_decode

Url decode a string.

url_encode

Url encode a string.

Usage: url_encode

user_data

Retrieves user information (parameters or variables) as defined in the directory.

Usage: user_data @ [attr|var|param]

Where user is the user’s id, domain is the user’s domain, var|param specifies whether the info we’re requesting is a variable/parameter, and the name is the name (key) of the variable.

Example:

user_data 1000@192.168.1.101 param password

will return a result of 1234, and

user_data 1000@192.168.1.101 var accountcode

will return a result of 1000 from the example user shown in [[Mod_commands#user_exists|user_exists]], and

user_data 1000@192.168.1.101 attr id

will return the user’s actual alphanumeric ID (i.e. “john”) when number-alias=”1000″ was set as an attribute for that user.

user_exists

Checks to see if a user exists; Matches user tags found in the directory and returns either true/false:

Usage: user_exists

Where key references a key specified in a directory’s user tag, user represents the value of the key, and the domain is the domain the user is assigned to.

Example:

user_exists id 1000 192.168.1.101

will return true where there exists in the directory a user with a key called id whose value equals 1000: In the above example, we also could have tested for randomvar:

user_exists randomvar 45 192.168.1.101

And we would have received the same results, but:

user_exists accountcode 1000 192.168.1.101

or,

user_exists password 1000 192.168.1.101

Would have returned false.

See Also

  • [[Channel_Variables|Channel Variables]]

[[Category:Integration]] [[Category:Configuration]] [[Category:API]] [[Category:Modules]]

一些JS的神秘

之前在知乎上面看到的一些极其有意思的短小精悍的js代码,在这里做个记录:
1、JavaScript 错误处理的方式的正常姿势。

try{ something}catch(e){ window.location.href=”http://stackoverflow.com/search?q=[js]+”+e.message;}

2、单行写一个评级组件:”★★★★★☆☆☆☆☆”.slice(5 – rate, 10 – rate);

3、为什么 ++[[]][+[]]+[+[]] = 10?

4、这个正则表达式可以测质数……

function isPrime(n) { return !(/^.?$|^(..+?)/1+$/).test(‘1’.repeat(n))}

5、我给个最简单的:

1e3 => 1000
60e3 => 60000
经常用在 setTimeout 之类的地方,不用数零了。

另外,经常用 !! 将空/非空转化为真正的 bool 值,例如:
console.log(“GC enabled?”, !!global.gc)

我还有一个写 ES6 函数小习惯,
somePromise().then( _ = > doSomething() ),
其中 “_” 用来替代 somePromise().then( () = > doSomething() ) 的写法。括号多了很干扰,虽然凭空多声明了一个变量。
6、 将n维数组破开成一维(string-array)var foo0 =[1, [2, 3],[4, 5, [6,7,[8]]],[9], 10]; var foo1= foo0.join(‘,’).split(‘,’);console.log(foo1);//[“1”, “2”, “3”, “4”, “5”, “6”, “7”, “8”, “9”, “10”]

7、统计字符串中相同字符出现的次数。var arr = ‘abcdaabc’;var info = arr .split(”).reduce((p,k) => (p[k]++|| (p[k]= 1), p), {});console.log(info);//{ a: 3, b: 2, c: 2, d: 1 }

8、getSelection=false;前端写代码会检测一些变量判断浏览器是否有响应特性,然后做降级处理.尝试通过剪贴板赋值功能附带版权信息时,知乎的js会判断getSelection.所以我们可以在知乎的js脚本执行之前运行这行代码,假装自己是垃圾浏览器,从而不会被加入版权信息.

(7月17,知乎改代码了,所以要用下面不优雅的一段.)
var concatPre = Array.prototype.concat;Array.prototype.concat = function (arg1) { function checkExtra(arr){ return arr &;&; arr.slice &;&; arr[3] === “著作权归作者所有,转载请联系作者获得授权。”; } if (checkExtra(this)||checkExtra(arg1)) { return []; } else { return concatPre.apply(this, arguments); } };
另外附赠一段
var tipStyle=”color: white;font-size: 22px;display: inline-block;position: absolute;top: 0;bottom: 0;line-height: 22px;margin: auto;height: 22px;”;$(“.zu-top”).append($(“<span style='”+tipStyle+”left: 10px;”+”‘>”+decodeURI(“%E6%B0%91%E4%B8%BB”)+””)).append($(“<span style='”+tipStyle+”right: 10px;”+”‘>”+decodeURI(“%E8%87%AA%E7%94%B1″)+””));
9、生成6位的数字验证码
console.log((‘000000′ + Math.floor(Math.random() * 999999)).slice(-6));

10、再补充一个 大/小驼峰命名转下划线/连接符命名’componentMapModelRegistry’.match(/^[a-z][a-z0-9]+|[A-Z][a-z0-9]*/g).join(‘_’).toLowerCase();// component_map_model_registry

11、’?key1=value1&;key2=value2′ 转换成json
<span style=”font-size:18px;”>export const query = (search = ”) => ((querystring = ”) => (q => (querystring.split(‘&;’).forEach(item => (kv => kv[0] &;&; (q[kv[0]] = kv[1]))(item.split(‘=’))), q))({}))(search.split(‘?’)[1]);
个人觉得第9,10,11个还是比较实用的,其他的可能更偏向于趣味性。

Freeswitch内核之事件类型说明

Freeswitch内核之事件类型

事件 说明
3 Channel events 信道事件。
3.1 Channel states 信道状态。
3.2 CHANNEL_CALLSTATE 信道呼叫状态事件。
3.3 CHANNEL_CREATE 创建事件。
3.4 CHANNEL_DESTROY 销毁事件。
3.5 CHANNEL_STATE 呼叫状态事件。当一个信道切换通话状态时发送。此事件并不包含任何附加信息。
3.6 CHANNEL_ANSWER 呼叫应答事件。
3.7 CHANNEL_HANGUP 挂机事件。
3.8 CHANNEL_HANGUP_COMPLETE 挂机完成事件。
3.9 CHANNEL_EXECUTE PBX正在执行呼叫事件。
3.10 CHANNEL_EXECUTE_COMPLETE 执行完成。
3.11 CHANNEL_BRIDGE 一个呼叫两个端点之间的桥接事件。
3.12 CHANNEL_UNBRIDGE 停用桥接事件。
3.13 CHANNEL_PROGRESS 进度事件,外呼时对方提醒。或者入呼时提醒。
3.14 CHANNEL_PROGRESS_MEDIA 媒体进度事件,外呼时对方提醒。或者入呼时提醒。
3.15 CHANNEL_OUTGOING 创建一个外呼事件。
3.16 CHANNEL_PARK 一个呼叫被挂起(停放)在PBX中。
3.17 CHANNEL_UNPARK 一个呼叫被取消挂起(停放)在PBX中。
3.18 CHANNEL_APPLICATION 信道产生的应用程序就是事件application=event一般用来捕获呼转
3.19 CHANNEL_HOLD 信道保持,使用uuid_hold或者接收SDP的readonly
3.20 CHANNEL_UNHOLD 触发后uuid_hold关闭<uuid>或者接收到INVITE SDP= SendRecv的
3.21 CHANNEL_ORIGINATE 信道发起事件,触发完成发起(或桥)。
3.22 CHANNEL_UUID uuid事件表示唯一的ID通道已经改变。原来的ID将被报告的旧唯一ID。此事件会发生,当您使用参数origination_uuid时发出命令发起/桥。

4 System events
4.1 SHUTDOWN 设置以启动的FreeSWITCH的关机顺序。
4.2 MODULE_LOAD 模块加载
4.3 MODULE_UNLOAD 模块卸载
4.4 RELOADXML 重新加载已经配置的XML
4.5 NOTIFY 通知
4.6 SEND_MESSAGE 发送信息
4.7 RECV_MESSAGE 接收信息
4.8 REQUEST_PARAMS 请求参数
4.9 CHANNEL_DATA 信道数据
4.10 GENERAL 总体
4.11 COMMAND 命令
4.12 SESSION_HEARTBEAT session心跳
4.13 CLIENT_DISCONNECTED 客户端断开
4.14 SERVER_DISCONNECTED 服务器断开
4.15 SEND_INFO 发送信息
4.16 RECV_INFO 接收信息
4.17 CALL_SECURE 保密呼叫
4.18 NAT nat
4.19 RECORD_START 开始记录
4.20 RECORD_STOP 停止记录
4.21 PLAYBACK_START 开始播放
4.22 PLAYBACK_STOP 停止播放
4.23 CALL_UPDATE 更新呼叫

centos 的 yum 服务介绍

什么是 yum

Yum(全称 Yellow Dog Updater)是一个在 Fedora 和 RedHat 以及 CentOS 中的 Shell 前端软件包管理器。基于 RPM 包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包.

软件包来源

可供Yum下载的软件包包括 Fedora, Centos 和 RedHat 本身的软件包,其中 Fedora 的软件包是由Linux社区维护的,并且基本是自由软件。所有的包都有一个独立的PGP签名。

常用命令行命令

安装软件(以foo-x.x.x.rpm为例):

yum install foo-x.x.x.rpm

删除软件:

yum remove foo-x.x.x.rpm

或者

yum erase foo-x.x.x.rpm

升级软件:

yum upgrade foo

或者

yum update foo

查询信息:

yum info foo

搜索软件(以包含foo字段为例):

yum search foo

显示软件包依赖关系:

yum deplist foo

检查可更新的包:

yum check-update

清除全部:

yum clean all

清除临时包文件(/var/cache/yum 下文件):

yum clean packages

清除rpm头文件:

yum clean headers

清除旧的rpm头文件:

yum clean oldheaders

可安装和可更新的rpm包:

yum list 

已安装的包:

yum list installed

已安装且不在资源库的包:

yum list extras

可选项:

-e 静默执行  
-t 忽略错误
-R [分钟] 设置等待命令执行结束的最大时间
-y 自动应答,在执行 yum 操作时不需要用户交互确认
--skip-broken 忽略依赖问题
--nogpgcheck 忽略 GPG 校验过程
本文来自 阿里云

程序语录

1、假如编程易懂得,那么程序员就不会热情地写出注释,也不会有得到编程的快乐。

2、调试的错误就是编程给你最好的东西,因为在每个错误上面都标志着前进的一步。

3、程序员之所以犯错误,不是因为他们不懂,而是因为他们自以为什么都懂。

4、代码是最为耐心、最能忍耐和最令人愉快的伙伴,在任何艰难困苦的时刻,它都不会抛弃你。

5、编程是一种美德,是促使一个人不断向上发展的一种原动力。

6、算法和数据结构是程序的第一秘诀,缺之算法和数据结构是编程的最大原因。

7、有些代码不应该被忘记,也没有源代码不应该被记住。

8、编程之久除了算法和数据结构,什么也不属于我们。

9、编程就是算法和数据结构,算法和数据结构是编程的灵魂。

10、编程是一种美德,是促使一个人不断向上发展的一种原动力。

11、算法和数据结构就是编程的一个重要部分,你若失掉了算法和数据结构,你就把一切都失掉了。

12、对代码不满足,是任何真正有天才的程序员的根本特征。

13、有编过程的人的代码,比那些无知的人使用的软件更有价值。

14、尽管少写那么多代码,但省下来的时间又在哪里呢?

15、当你还不能写出自己满意的程序时,你就不要去睡觉。

linux 下安装nodejs开发环境

1、下载nodejs二进制包
2、xz解压
xz -d ***.tar.xz
3、tar解压
tar -xvf ***.tar

重命名解压下来的文件夹名称假如为 node-v10.15.0,路径在/home 下

4、安装
vim /etc/profile
添加
export NODE_HOME=/home/node-v10.15.0
export PATH=$PATH:$NODE_HOME/bin
export NODE_PATH=$NODE_HOME/lib/node_modules

执行source /etc/profile
查看版本 node -v

即可完成安装!

论语

论语全文

论语目录

学而篇第一 为政篇第二 八佾篇第三 里仁篇第四 公冶长篇第五

雍也篇第六 述而篇第七 泰伯篇第八 子罕篇第九 乡党篇第十

先进篇第十一 颜渊篇第十二 子路篇第十三 宪问篇第十四

卫灵公篇第十五 季氏篇第十六 阳货篇第十七

微子篇第十八 子张篇第十九 尧曰篇第二十

学而篇第一

1、1子曰:“学而时习之,不亦说乎?有朋自远方来,不亦乐乎?人不知而不愠,不亦君子乎?”

1、2有子曰:“其为人也孝弟,而好犯上者,鲜矣;不好犯上,而好作乱者,未之有也。君子务本,本立而道生。孝弟也者,其为仁之本与!”

1、3子曰:“巧言令色,鲜矣仁!”

1、4曾子曰:“吾日三省吾身:为人谋而不忠乎?与朋友交而不信乎?传不习乎?”

1. 5子曰:“道千乘之国,敬事而信,节用而爱人,使民以时。”

1.6 子曰:“弟子,入则孝,出则悌,谨而信,泛爱众,而亲仁。行有馀力,则以学文。”

1.7 子夏曰:“贤贤易色;事父母,能竭其力;事君,能致其身;与朋友交,言而有信。虽曰未学,吾必谓之学矣。”

1.8 子曰:“君子不重,则不威;学则不固。主忠信,无友不如已者。过则勿惮改。”

1.9 曾子曰:“慎终追远,民德归厚矣。”

1.10 子禽问于子贡曰:“夫子至于是邦也,必闻其政,求之与?抑与之与?”子贡曰:“夫子温、良、恭、俭、让以得之。夫子之求之也,其诸异乎人之求之与?”

1.11 子曰:“父在,观其志;父没,观其行;三年无改于父之道,可谓孝矣。”

1.12 有子曰:“礼之用,和为贵。先王之道,斯为美;小大由之。有所不行,知和而和,不以礼节之,亦不可行也。”

1.13 有子曰:“信近於义,言可复也。恭近於礼,远耻辱也。因不失其亲,亦可宗也。”

1.14 子曰:“君子食无求饱,居无求安,敏於事而慎於言,就有道而正焉,可谓好学也已。”

1.15 子贡曰:“贫而无谄,富而无骄,何如?”子曰:“可也。未若贫而乐,富而好礼者也。”子贡曰:“《诗》云:‘如切如磋,如琢如磨’,其斯之谓与?”子曰:“赐也,始可与言《诗》已矣,告诸往而知来者。”

1.16 子曰:“不患人之不己知,患不知人也。”

为政篇第二 论语目录

2.1 子曰:“为政以德,譬如北辰,居其所而众星共之。”

2.2 子曰:“《诗》三百,一言以蔽之,曰:‘思无邪。’”

2.3 子曰:“道之以政,齐之以刑,民免而无耻;道之以德,齐之以礼,有耻且格。”

2.4 子曰:“吾十有五而志于学,三十而立,四十而不惑,五十而知天命,六十而耳顺,七十而从心所欲,不逾矩。”

2.5 孟懿子问孝。子曰:“无违。”樊迟御,子告之曰:“孟孙问孝于我,我对曰,无违。”樊迟曰:“何谓也?”子曰:“生,事之以礼;死,葬之以礼,祭之以礼。”

2.6 孟武伯问孝。子曰:“父母唯其疾之忧。”

2.7 子游问孝。子曰:“今之孝者,是谓能养。至于犬马,皆能有养;不敬,何以别乎?”

2.8 子夏问孝。子曰:“色难。有事,弟子服其劳;有酒食,先生馔,曾是以为孝乎?”

2.9 子曰:“吾与回言终日,不违,如愚。退而省其私,亦足以发,回也不愚。”

2.10 子曰:“视其所以,观其所由,察其所安。人焉廋哉?人焉廋哉?”

2.11 子曰:“温故而知新,可以为师矣。”

2.12 子曰:“君子不器。”

2.13 子贡问君子。子曰:“先行其言而后从之。”

2.14 子曰:“君子周而不比,小人比而不周。”

2.15 子曰:“学而不思则罔,思而不学则殆。”

2.16 子曰:“攻乎异端,斯害也已。”

2.17 子曰:“由!诲女知之乎!知之为知之,不知为不知,是知也。”

2.18 子张学干禄。子曰:“多闻阙疑,慎言其馀,则寡尤。多见阙殆,慎行其馀,则寡悔。言寡尤,行寡悔,禄在其中矣。”

2.19 哀公问曰:“何为则民服?”孔子对曰:“举直错诸枉,则民服;举枉错诸直,则民不服。”

2.20 季康子问:“使民敬、忠以劝,如之何?”子曰:“临之以庄,则敬;孝慈,则忠;举善而教不能,则劝。”

2.21 或谓孔子曰:“子奚不为政?”子曰:“《书》云:‘孝乎!惟孝,友于兄弟,施于有政。’是亦为政,奚其为为政?”

2.22 子曰:“人而无信,不知其可也。大车无輗,小车无軏,其何以行之哉?”

2.23 子张问:“十世可知也?”子曰:“殷因于夏礼,所损益,可知也;周因于殷礼,所损益,可知也。其或继周者,虽百世,可知也。”

2.24 子曰:“非其鬼而祭之,谄也。见义不为,无勇也。”

八佾篇第三 论语目录

3.1孔子谓季氏:“八佾舞于庭,是可忍也,孰不可忍也?”

3.2 三家者以《雍》彻。子曰:“‘相维辟公,天子穆穆’,奚取于三家之堂?”

3.3 子曰:“人而不仁,如礼何?人而不仁,如乐何?”

3.4 林放问礼之本。子曰:“大哉问!礼,与其奢也,宁俭;丧,与其易也,宁戚。”

3.5 子曰:“夷狄之有君,不如诸夏之亡也。”

3.6 季氏旅于泰山。子谓冉有曰:“女弗能救与?”对曰:“不能。”子曰:“呜呼!曾谓泰山不如林放乎?”

3.7 子曰:“君子无所争。——必也射乎!揖让而升,下而饮。其争也君子。”

3.8 子夏问曰:“‘巧笑倩兮,美目盼兮,素以为绚兮。’何谓也?”子曰:“绘事后素。”曰:“礼后乎?”子曰:“起予者商也!始可与言《诗》已矣。”

3.9 子曰:“夏礼,吾能言之,杞不足征也;殷礼,吾能言之,宋不足征也。文献不足故也。足,则吾能征之矣。”

3.10 子曰:“自既灌而往者,吾不欲观之矣。”

3.11 或问禘之说。子曰:“不知也,知其说者之于天下也,其如示诸斯乎!”指其掌。

3.12 祭如在,祭神如神在。子曰:“吾不与祭,如不祭。”

3.13 王孙贾问曰:“与其媚于奥,宁媚于灶,何谓也?”子曰:“不然。获罪于天,无所祷也。”

3.14 子曰:“周监于二代,郁郁乎文哉!吾从周。”

3.15 子入太庙,每事问。或曰:“孰谓鄹人之子知礼乎?入太庙,每事问。”子闻之,曰:“是礼也。”

3.16 子曰:“射不主皮,为力不同科,古之道也。”

3.17 子贡欲去告朔之饩羊。子曰:“赐也!尔爱其羊,我爱其礼。”

3.18 子曰:“事君尽礼,人以为谄也。”

3.19 定公问:“君使臣,臣事君,如之何?”孔子对曰:“君使臣以礼,臣事君以忠。”

3.20 子曰:“《关雎》,乐而不淫,哀而不伤。”

3.21 哀公问社于宰我。宰我对曰:“夏后氏以松,殷人以柏,周人以栗,曰,使民战栗。”子闻之,曰:“成事不说,遂事不谏,既往不咎。”

3.22 子曰:“管仲之器小哉!”或曰:“管仲俭乎?”曰:“管氏有三归,官事不摄,焉得俭?”“然则管仲知礼乎?”曰:“邦君树塞门,管氏亦树塞门。邦君为两君之好,有反坫,管氏亦有反坫。管氏而知礼,孰不知礼?”

3.23 子语鲁大师乐,曰:“乐其可知也:始作,翕如也;从之一,纯如也,皦如也,绎如也,以成。”

3.24 仪封人请见,曰:“君子之至于斯也,吾未尝不得见也。”从者见之。出曰:“二三子何患于丧乎?天下之无道也久矣,天将以夫子为木铎。”

3.25 子谓《韶》:“尽美矣,又尽善也。”谓《武》:“尽美矣,未尽善也。”

3.26 子曰:“居上不宽,为礼不敬,临丧不哀,吾何以观之哉?”

里仁篇第四 论语目录

4.1 子曰:“里仁为美。择不处仁,焉得知?”

4.2 子曰:“不仁者不可以久处约,不可以长处乐。仁者安仁,知者利仁。”

4.3 子曰:“唯仁者能好人,能恶人。”

4.4 子曰:“苟志于仁矣,无恶也。”

4.5 子曰:“富与贵,是人之所欲也。不以其道得之,不处也。贫与贱,是人之所恶也。不以其道得之,不去也。君子去仁,恶乎成名?君子无终食之间违仁,造次必于是,颠沛必于是。”

4.6 子曰:“我未见好仁者,恶不仁者。好仁者,无以尚之;恶不仁者,其为仁矣,不使不仁者加乎其身。有能一日用其力于仁矣乎?我未见力不足者。盖有之矣,我未之见也。”

4.7 子曰:“人之过也,各于其党。观过,斯知仁矣。”

4.8 子曰:“朝闻道,夕死可矣。”

4.9 子曰:“士志于道,而耻恶衣恶食者,未足与议也。”

4.10 子曰:“君子之于天下也,无适也,无莫也,义之与比。”

4.11 子曰:“君子怀德,小人怀土;君子怀刑,小人怀惠。”

4.12 子曰:“放于利而行,多怨。”

4.13 子曰:“能以礼让为国乎,何有?不能以礼让为国,如礼何?”

4.14 子曰:“不患无位,患所以立。不患莫已知,求为可知也。”

4.15 子曰:“参乎!吾道一以贯之。”曾子曰:“唯。”子出,门人问曰:“何谓也?”曾子曰:“夫子之道,忠恕而已矣。”

4.16 子曰:“君子喻于义,小人喻于利。”

4.17 子曰:“见贤思齐焉,见不贤而内自省也。”

4.18 子曰:“事父母几谏,见志不从,又敬不违,劳而不怨。”

4.19 子曰:“父母在,不远游,游必有方。”

4.20 子曰:“三年无改于父之道,可谓孝矣。”

4.21 子曰:“父母之年,不可不知也。一则以喜,一则以惧。”

4.22 子曰:“古者言之不出,耻躬之不逮也。”

4.23 子曰:“以约失之者鲜矣。”

4.24 子曰:“君子欲讷于言而敏于行。”

4.25 子曰:“德不孤,必有邻。”

4.26 子游曰:“事君数,斯辱矣;朋友数,斯疏矣。”

公冶长篇第五 论语目录

5.1 子谓公冶长:“可妻也。虽在缧绁之中,非其罪也。”以其子妻之。

5.2 子谓南容:“邦有道,不废;邦无道,免於刑戮。”以其兄之子妻之。

5.3 子谓子贱:“君子哉若人!鲁无君子者,斯焉取斯?”

5.4 子贡问曰:“赐也何如?”子曰:“女,器也。”曰:“何器也?”曰:“瑚琏也。”

5.5 或曰:“雍也仁而不佞。”子曰:“焉用佞?御人以口给,屡憎於人。不知其仁,焉用佞?”

5.6 子使漆雕开仕。对曰:“吾斯之未能信。”子说。

5.7 子曰:“道不行,乘桴浮于海。从我者,其由与?”子路闻之喜。子曰:“由也好勇过我,无所取材。”

5.8 孟武伯问:“子路仁乎?”子曰:“不知也。”又问。子曰:“由也,千乘之国,可使治其赋也,不知其仁也。”“求也何如?”子曰:“求也,千室之邑,百乘之家,可使为之宰也,不知其仁也。”“赤也何如?”子曰:“赤也,束带立于朝,可使与宾客言也,不知其仁也。”

5.9 子谓子贡曰:“女与回也孰愈?”对曰:“赐也何敢望回?回也闻一以知十,赐也闻一以知二。”子曰:“弗如也;吾与女弗如也。”

5.10 宰予昼寝。子曰:“朽木不可雕也,粪土之墙不可圬也;于予与何诛?”子曰:“始吾于人也,听其言而信其行;今吾于人也,听其言而观其行。于予与改是。”

5.11 子曰:“吾未见刚者。”或对曰:“申枨。”子曰:“枨也欲,焉得刚?”

5.12 子贡曰:“我不欲人之加诸我也,吾亦欲无加诸人。”子曰:“赐也,非尔所及也。”

5.13 子贡曰:“夫子之文章,可得而闻也;夫子之言性与天道,不可得而闻也。”

5.14 子路有闻,未之能行,唯恐有闻。

5.15 子贡问曰:“孔文子何以谓之‘文’也?”子曰:“敏而好学,不耻下问,是以谓之‘文’也。”

5.16 子谓子产:“有君子之道四焉:其行已也恭,其事上也敬,其养民也惠,其使民也义。”

5.17 子曰:“晏平仲善与人交,久而敬之。”

5.18 子曰:“臧文仲居蔡,山节藻梲,何如其知也?”

5.19 子张问曰:“令尹子文三仕为令尹,无喜色;三已之,无愠色。旧令尹之政,必以告新令尹。何如?”子曰:“忠矣。”曰:“仁矣乎?”曰:“未知。焉得仁?”“崔子弑齐君,陈文子有马十乘,弃而违。至于他邦,则曰:‘犹吾大夫崔子也。’违之。之一邦,则又曰:‘犹吾大夫崔子也。’违之。何如?”子曰:“清矣。”曰:“仁矣乎?”曰:“未知。焉得仁?”

5.20 季文子三思而后行。子闻之,曰:“再,斯可矣。”

5.21 子曰:“宁武子,邦有道,则知;邦无道,则愚。其知可及也,其愚不可及也。”

5.22 子在陈,曰:“归与!归与!吾党之小子狂简,斐然成章,不知所以裁之。”

5.23 子曰:“伯夷、叔齐不念旧恶,怨是用希。”

5.24 子曰:“孰谓微生高直?或乞醯焉,乞诸其邻而与之。”

5.25 子曰:“巧言、令色、足恭,左丘明耻之,丘亦耻之。匿怨而友其人,左丘明耻之,丘亦耻之。”

5.26 颜渊、季路侍。子曰:“盍各言尔志?”子路曰:“愿车马衣轻裘与朋友共,敝之而无憾。”颜渊曰:“愿无伐善,无施劳。”子路曰:“愿闻子之志。”子曰:“老者安之,朋友信之,少者怀之。”

5.27 子曰:“已矣乎!吾未见能见其过而内自讼者也。”

5.28 子曰:“十室之邑,必有忠信如丘者焉,不如丘之好学也。”

雍也篇第六 论语目录

6.1 子曰:“雍也可使南面。”

6.2 仲弓问子桑伯子,子曰:“可也,简。”仲弓曰:“居敬而行简,以临其民,不亦可乎?居简而行简,无乃大简乎?”子曰:“雍之言然。”

6.3 哀公问:“弟子孰为好学?”孔子对曰:“有颜回者好学,不迁怒,不贰过。不幸短命死矣。今也则亡,未闻好学者也。”

6.4 子华使于齐,冉子为其母请粟。子曰:“与之釜。”请益。曰:“与之庾。”冉子与之粟五秉。子曰:“赤之适齐也,乘肥马,衣轻裘。吾闻之也:君子周急不继富。”

6.5 原思为之宰,与之粟九百,辞。子曰:“毋!以与尔邻里乡党乎!”

6.6 子谓仲弓曰:“犁牛之子 且角,虽欲勿用,山川其舍诸?”

6.7 子曰:“回也,其心三月不违仁,其馀则日月至焉而已矣。”

6.8 季康子问:“仲由可使从政也与?”子曰:“由也果,于从政乎何有”曰:“赐也可使从政也与?”曰:“赐也达,于从政乎何有?”曰:“求也可使从政也与?”曰:“求也艺,于从政乎何有?”

6.9 季氏使闵子骞为费宰。闵子骞曰:“善为我辞焉!如有复我者,则吾必在汶上矣。”

6.10 伯牛有疾,子问之,自牖执其手,曰:“亡之,命矣夫!斯人也而有斯疾也!斯人也而有斯疾也!”

6.11 子曰:“贤哉,回也!一箪食,一瓢饮,在陋巷,人不堪其忧,回也不改其乐。贤哉,回也!”

6.12 冉求曰:“非不说子之道,力不足也。”子曰:“力不足者,中道而废。今女画。”

6.13 子谓子夏曰:“女为君子儒!无为小人儒!”

6.14 子游为武城宰。子曰:“女得人焉耳乎?”曰:“有澹台灭明者,行不由径,非公事,未尝至于偃之室也。”

6.15 子曰:“孟之反不伐,奔而殿,将入门,策其马,曰:‘非敢后也,马不进也。’”

6.16 子曰:“不有祝鲩之佞,而有宋朝之美,难乎免于今之世矣!”

6.17 子曰:“谁能出不由户?何莫由斯道也?”

6.18 子曰:“质胜文则野,文胜质则史。文质彬彬,然后君子。”

6.19 子曰:“人之生也直,罔之生也幸而免。”

6.20 子曰:“知之者不如好之者,好之者不如乐之者。”

6.21 子曰:“中人以上,可以语上也;中人以下,不可以语上也。”

6.22 樊迟问知。子曰:“务民之义,敬鬼神而远之,可谓知矣。”问仁。曰:“仁者先难而后获,可谓仁矣。”

6.23 子曰:“知者乐水,仁者乐山。知者动,仁者静。知者乐,仁者寿。”

6.24 子曰:“齐一变,至于鲁;鲁一变,至于道。”

6.25 子曰:“觚不觚,觚哉!觚哉!”

6.26 宰我问曰:“仁者,虽告之曰:‘井有仁焉。’其从之也?”子曰:“何为其然也?君子可逝也,不可陷也;可欺也,不可罔也。”

6.27 子曰:“君子博学于文,约之以礼 ,亦可以弗畔矣夫!”

6.28 子见南子,子路不说。夫子矢之曰:“予所否者,天厌之!天厌之!”

6.29 子曰:“中庸之为德也,其至矣乎!民鲜久矣。”

6.30 子贡曰:“如有博施于民而能济众,何如?可谓仁乎?”子曰:“何事于仁!必也圣乎?尧舜其犹病诸!夫仁者,已欲立而立人,已欲达而达人。能近取譬,可谓仁之方也已。”

述而篇第七 论语目录

7.1 子曰:“述而不作,信而好古,窃比于我老彭。”

7.2 子曰:“默而识之,学而不厌,诲人不倦,何有于我哉?”

7.3 子曰:“德之不修,学之不讲,闻义不能徙,不善不能改,是吾忧也。”

7.4 子之燕居,申申如也,夭夭如也。

7.5 子曰:“甚矣吾衰也!久矣吾不复梦见周公。”

7.6 子曰:“志于道,据于德,依于仁,游于艺。”

7.7 子曰:“自行束修以上,吾未尝无诲焉。”

7.8 子曰:“不愤不启,不悱不发。举一隅不以三隅反,则不复也。”

7.9 子食于有丧者之侧,未尝饱也。

7.10 子於是日哭,则不歌。

7.11 子谓颜渊曰:“用之则行,舍之则藏,惟我与尔有是夫!”子路曰:“子行三军,则谁与?”子曰:“暴虎冯河,死而无悔者,吾不与也。必也临事而惧,好谋而成者也。”

7.12 子曰:“富而可求也,虽执鞭之士,吾亦为之。如不可求,从吾所好。”

7.13 子之所慎:齐、战、疾。

7.14 子在齐闻《韶》,三月不知肉味。曰:“不图为乐之至于斯也。”

7.15 冉有曰:“夫子为卫君乎?”子贡曰:“诺。吾将问之。”入,曰:“伯夷、叔齐何人也?”曰:“古之贤人也。”曰:“怨乎?”曰:“求仁而得仁,又何怨?”出,曰:“夫子不为也。”

7.16 子曰:“饭疏食饮水,曲肱而枕之,乐亦在其中矣。不义而富且贵,于我如浮云。”

7.17 子曰:“加我数年,五十以学《易》,可以无大过矣。”

7.18 子所雅言,《诗》、《书》、执行,皆雅言也。

7.19 叶公问孔子于子路,子路不对。子曰:“女奚不曰:其为人也,发愤忘食,乐以忘忧,不知老之将至云尔。”

7.20 子曰:“我非生而知之者,好古,敏以求之者也。”

7.21 子不语:怪、力、乱、神。

7.22 子曰:“三人行,必有我师焉;择其善者而从之,其不善者而改之。”

7.23 子曰:“天生德于予,恒 其如予何?”

7.24 子曰:“二三子以我为隐乎?吾无隐乎尔。吾无行而不与二三子者,是丘也。”

7.25 子以四教:文、行、忠、信。

7.26 子曰:“圣人,吾不得而见之矣;得见君子者,斯可矣。”子曰:“善人,吾不得而见之矣;得见有恒者,斯可矣。亡而为有,虚而为盈,约而为泰,难乎有恒矣。”

7.27 子钓而不纲,弋不射宿。

7.28 子曰:“盖有不知而作之者,我无是也。多闻,择其善者而从之,多见而识之,知之次也。”

7.29 互乡难与言,童子见,门人惑。子曰:“与其进也,不与其退也,唯何甚?人洁已以进,与其洁也,不保其往也。”

7.30 子曰:“仁远乎哉?我欲仁,斯仁至矣。”

7.31 陈司败问:“昭公知礼乎?”孔子曰:“知礼。”孔子退,揖巫马期而进之,曰:“吾闻君子不党,君子亦党乎?君取于吴,为同姓,谓之吴孟子。君而知礼,孰不知礼?“巫马期以告。子曰:“丘也幸,苟有过,人必知之。”

7.32 子与人歌而善,必使反之,而后和之。

7.33 子曰:“文,莫吾犹人也。躬行君子,则吾未之有得。”

7.34 子曰:“若圣与仁,则吾岂敢?抑为之不厌,诲人不倦,则可谓云尔已矣。”公西华曰:“正唯弟子不能学也。”

7.35 子疾病,子路请祷。子曰:“有诸?”子路对曰:“有之。诔曰:‘祷尔于上下神祗。’”子曰:“丘之祷久矣。”

7.36 子曰:“奢则不孙,俭则固。与其不孙也,宁固。”

7.37 子曰:“君子坦荡荡,小人长戚戚。”

7.38 子温而厉,威而不猛,恭而安。

泰伯篇第八 论语目录

8.1 子曰:“泰伯,其可谓至德也已矣。三以天下让,民无得而称焉。”

8.2 子曰:“恭而无礼则劳,慎而无礼则葸,勇而无礼则乱,直而无礼则绞。君子笃于亲,则民兴于仁;故旧不遗,则民不偷。”

8.3 曾子有疾,召门弟子曰:“启予足!启予手!《诗》云:‘战战兢兢,如临深渊,如履薄冰。’而今而后,吾知免夫!小子!”

8.4 曾子有疾,孟敬子问之。曾子言曰:“鸟之将死,其鸣也哀;人之将死,其言也善。君子所贵乎道者三:动容貌,斯远暴慢矣;正颜色,斯近信矣;出辞气,斯远鄙倍矣。笾豆之事,则有司存。”

8.5 曾子曰:“以能问于不能,以多问于寡;有若无,实若虚,犯而不校。昔者吾友尝从事于斯矣。”

8.6 曾子曰:“可以托六尺之孤,可以寄百里之命,临大节而不可夺也。君子人与?君子人也。”

8.7 曾子曰“士不可以不弘毅,任重而道远。仁以为己任,不亦重乎?死而后已,不亦远乎?”

8.8 子曰:“兴于诗,立于礼,成于乐。”

8.9 子曰:“民可使由之,不可使知之。”

8.10 子曰:“好勇疾贫,乱也。人而不仁,疾之已甚,乱也。”

8.11 子曰:“如有周公之才之美,使骄且吝,其馀不足观也已。”

8.12 子曰:“三年学,不至于谷,不易得也。”

8.13 子曰:“笃信好学,守死善道。危邦不人,乱邦不居。天下有道则见,无道则隐。邦有道,贫且贱焉,耻也。邦无道,富且贵焉,耻也。”

8.14 子曰:“不在其位,不谋其政。”

8.15 子曰:“师挚之始,《关雎》之乱,洋洋乎盈耳哉!”

8.16 子曰:“狂而不直,侗而不愿,悾悾而信,吾不知之矣。”

8.17 子曰:“学如不及,犹恐失之。”

8.18 子曰:“巍巍乎,舜、禹之有天下也,而不与焉!”

8.19 子曰:“大哉尧之为君也!巍巍乎!唯天为大,唯尧则之。荡荡乎!民无能名焉。巍巍乎其有成功也!焕乎其有文章!”

8.20 舜有臣五人而天下治。武王曰:“予有乱臣十人。”孔子曰:“才难,不其然乎?唐、虞之际,于斯为盛。有妇人焉,九人而已。三分天下有其二,以服事殷。周之德,其可谓至德也已矣。”

8.21 子曰:“禹,吾无间然矣。菲饮食而致孝乎鬼神,恶衣服而致美乎黻冕,卑宫室而尽力乎沟洫。禹,吾无间然矣。”

子罕篇第九 论语目录

9.1 子罕言利与命与仁。

9.2 达巷党人曰:“大哉孔子!博学而无所成名。”子闻之,谓门弟子曰:“吾何执?执御乎?执射乎?吾执御矣。”

9.3 子曰:“麻冕,礼也;今也纯,俭,吾从众。拜下,礼也;今拜乎上,泰也。虽违众,吾从下。”

9.4 子绝四:毋意,毋必,毋固,毋我。

9.5 子畏于匡,曰:“文王既没,文不在兹乎?天之将丧斯文也,后死者不得与于斯文也;天之未丧斯文也,匡人其如予何?”

9.6 太宰问于子贡曰:“夫子圣者与?何其多能也?”子贡曰:“固天纵之将圣,又多能也。”子闻之,曰:“太宰知我乎!吾少也贱,故多能鄙事。君子多乎哉?不多也。”

9.7 牢曰:“子云:‘吾不试,故艺。’”

9.8 子曰:“吾有知乎哉?无知也。有鄙夫问于我,空空如也。我叩其两端而竭焉。”

9.9 子曰:“凤鸟不至,河不出图,吾已矣夫!”

9.10 子见齐衰者、冕衣裳者与瞽者,见之,虽少,必作;过之,必趋。

9.11 颜渊喟然叹曰:“仰之弥高,钻之弥坚。瞻之在前,忽焉在后。夫子循循然善诱之,博我以文,约我以礼,欲罢不能。既竭吾才,如有所立卓尔。虽欲从之。末由也矣。”

9.12 子疾病,子路使门人为臣。病间。曰:“久矣哉,由之行诈也!无臣而为有臣。吾谁欺?欺天乎?且予与其死于臣之手也,无宁死于二三子之手乎?且予纵不得大葬,予死于道路乎?”

9.13 子贡曰:“有美玉于斯,韫椟而藏诸?求善贾而沽诸?”子曰:“沽之哉!沽之哉!我待贾者也。”

9.14 子欲居九夷。或曰:“陋,如之何?”子曰:“君子居之,何陋之有?”

9.15 子曰:“吾自卫反鲁,然后乐正,《雅》《颂》各得其所。”

9.16 子曰:“出则事公卿,入则事父兄,丧事不敢不勉,不为酒困,何有于我哉?”

9.17 子在川上曰:“逝者如斯夫!不舍昼夜。”

9.18 子曰:“吾未见好德如好色者也。”

9.19 子曰:“譬如为山,未成一篑,止,吾止也。譬如平地,虽覆一篑,进,吾往也。”

9.20 子曰:“语之而不惰者,其回也与!”

9.21 子谓颜渊曰:“惜乎!吾见其进也,未见其止也。”

9.22 子曰:“苗而不秀者有矣夫!秀而不实者有矣夫!”

9.23 子曰:“后生可畏,焉知来者之不如今也?四十、五十而无闻焉,斯亦不足畏也已。”

9.24 子曰:“法语之言,能无从乎?改之为贵。巽与之言,能无说乎?绎之为贵。说而不绎,从而不改,吾未如之何也已矣。”

9.25 子曰:“主忠信,毋友不如已者,过则勿惮改。”

9.26 子曰:“三军可夺帅也,匹夫不可夺志也。”

9.27 子曰:“衣敝緼袍,与衣狐貉者立,而不耻者,其由也与?‘不忮不求,何用不臧?’”子路终身诵之。子曰:“是道也,何足以臧?”

9.28 子曰:“岁寒,然后知松柏之后凋也。”

9.29 子曰:“知者不惑,仁者不忧,勇者不惧。”

9.30 子曰:“可与共学,未可与适道;可与适道,未可与立;可与立,未可与权。”

9.31 “唐棣之华,偏其反而。岂不尔思?室是远而。”子曰:“未之思也,夫何远之有?”

乡党篇第十 论语目录

10.1 孔子于乡党,恂恂如也,似不能言者。其在宗庙朝廷,便便言,唯谨尔。

10.2 朝,与下大夫言,侃侃如也;与上大夫言,誾誾如也。君在,踧踖如也,与与如也。”

10.3 君召使摈,色勃如也,足躩如也。揖所与立,左右手,衣前后,襜如也。趋进,翼如也。宾退,必复命曰:“宾不顾矣。”

10.4 入公门,鞠躬如也,如不容。立不中门,行不履阈。过位,色勃如也,足躩如也,其言似不足者。摄齐升堂,鞠躬如也,屏气似不息者。出,降一等,逞颜色,怡怡如也。没阶,趋进,翼如也。复其位,踧踖如也。

10.5 执圭,鞠躬如也,如不胜。上如揖,下如授。勃如战色,足蹜蹜如有循。享礼,有容色。私觌,愉愉如也。

10.6 君子不以绀緅饰。红紫不以为亵服。当暑,袗絺绤,必表而出之。缁衣,羔裘;素衣,麑裘;黄衣,狐裘。亵裘长,短右袂。必有寝衣,长一身有半。狐貉之厚以居。去丧,无所不佩。非帷裳,必杀之。羔裘玄冠不以吊。吉月,必朝服而朝。

10.7 齐,必有明衣,布。齐必变食,居必迁坐。

10.8 食不厌精,脍不厌细。食饐而餲,鱼馁而肉败,不食。色恶,不食。臭恶,不食。失饪,不食。不时,不食。割不正,不食。不得其酱,不食。肉虽多,不使胜食气。惟酒无量,不及乱。沽酒市脯不食。不撤姜食,不多食。

10.9 祭于公,不宿肉。祭肉不出三日。出三日,不食之矣。

10.10 食不语,寝不言。

10.11 虽疏食菜羹,必祭,必齐如也。

10.12 席不正,不坐。

10.13 乡人饮酒,杖者出,斯出矣。

10.14 乡人傩,朝服而立于阼阶。

10.15 问人于他邦,再拜而送之。

10.16 康子馈药,拜而受之。曰:“丘未达,不敢尝。”

10.17 厩焚。子退朝,曰:“伤人乎?”不问马。

10.18 君赐食,必正席先尝之。君赐腥,必熟而荐之。君赐生,必畜之。侍食于君,君祭,先饭。

10.19 疾,君视之,东首,加朝服,拖绅。

10.20 君命召,不俟驾行矣。

10.21 入太庙,每事问。

10.22 朋友死,无所归,曰:“于我殡。”

10.23 朋友之馈,虽车马,非祭肉,不拜。

10.24 寝不尸,居不客。

10.25 见齐衰者,虽狎,必变。见冕者与瞽者,虽亵,必以貌。

凶服者式之,式负版者。有盛馔,必变色而作。迅雷风烈,必变。

10.26 升车,必正立,执绥。车中,不内顾,不疾言,不亲指。

10.27 色斯举矣,翔而后集。曰:“山梁雌雉,时哉时哉!”子路共之,三嗅而作。

先进篇第十一 论语目录

11.1 子曰:“先进于礼乐,野人也;后进于礼乐,君子也。如用之,则吾从先进。”

11.2 子曰:“从我于陈、蔡者,皆不及门也。”

11.3 德行:颜渊、闵子骞、冉伯牛、仲弓。言语:宰我、子贡。政事:冉有、季路。文学:子游、子夏。

11.4 子曰:“回也非助我者也,于吾言无所不说。”

11.5 子曰:“孝哉,闵子骞!人不间于其父母昆弟之言。”

11.6 南容三复“白圭”,孔子以其兄之子妻之。

11.7 季康子问:“弟子孰为好学?”孔子对曰:“有颜回者好学,不幸短命死矣!今也则亡。”

11.8 颜渊死,颜路请子之车以为之椁。子曰:“才不才,亦各言其子也。鲤也死,有棺而无椁。吾不徒行以为之椁。以吾从大夫之后,不可徒行也。”

11.9 颜渊死。子曰:“噫!天丧予!天丧予!”

11.10 颜渊死,子哭之恸。从者曰:“子恸矣!”曰:“有恸乎?非夫人之为恸而谁为?”

11.11 颜渊死,门人欲厚葬之。子曰:“不可。”门人厚葬之。子曰:“回也视予犹父也,予不得视犹子也。非我也,夫二三子也。”

11.12 季路问事鬼神。子曰:“未能事人,焉能事鬼?”曰:“敢问死。”曰:“未知生,焉知死?”

11.13 闵子侍侧,誾誾如也;子路,行行如也;冉有、子贡,侃侃如也。子乐。“若由也,不得其死然。”

11.14 鲁人为长府。闵子骞曰:“仍旧贯,如之何?何必改作?”子曰:“夫人不言,言必有中。”

11.15 子曰:“由之瑟奚为于丘之门?”门人不敬子路。子曰:“由也升堂矣,未入于室也。”

11.16 子贡问:“师与商也孰贤?”子曰:“师也过,商也不及。”曰:“然则师愈与?”子曰:“过犹不及。”

11.17 季氏富于周公,而求也为之聚敛而附益之。子曰:“非吾徒也。小子鸣鼓而攻之可也。”

11.18 柴也愚,参也鲁,师也辟,由也喭。

11.19 子曰:“回也其庶乎?屡空。赐不受命,而货殖焉,亿则屡中。”

11.20 子张问善人之道。子曰:“不践迹,亦不入于室。”

11.21 子曰:“论笃是与,君子者乎?色庄者乎?”

11.22 子路问:“闻斯行诸?”子曰:“有父兄在,如之何其闻斯行之?”冉有问:“闻斯行诸?”子曰:“闻斯行之。”公西华曰:“由也问‘闻斯行诸’,子曰:‘有父兄在’,求也问‘闻斯行诸’,子曰:‘闻斯行之’。赤也惑,敢问。”子曰:“求也退,故进之;由也兼人,故退之。”

11.23 子畏于匡,颜渊后。子曰:“吾以女为死矣。”曰:“子在,回何敢死?”

11.24 季子然问:“仲由、冉求可谓大臣与?”子曰:“吾以子为异之问,曾由与求之问。所谓大臣者,以道事君,不可则止。今由与求也,可谓具臣矣。”曰:“然则从之者与?”子曰:“弑父与君,亦不从也。”

11.25 子路使子羔为费宰。子曰:“贼夫人之子。”子路曰:“有民人焉,有社稷焉,何必读书,然后为学?”子曰:“是故恶夫佞者。”

11.26 子路、曾皙、冉有、公西华侍坐。子曰:“以吾一日长乎尔,毋吾以也。居则曰:‘不吾知也!’如或知尔,则何以哉?”子路率尔而对曰:“千乘之国,摄乎大国之间,加之以师旅,因之以饥馑;由也为之,比及三年,可使有勇,且知方也。”夫子哂之。“求!尔何如?”对曰:“方六七十,如五六十,求也为之,比及三年,可使足民。如其礼乐,以俟君子。”“赤!尔何如?”对曰:“非 曰能之,愿学焉。宗庙之事,如会同,端章甫,愿为小相焉。”“点!尔何如?”鼓瑟希,铿尔,舍瑟而作,对曰:“异乎三子者之撰。”子曰:“何伤乎?亦各言其志也。”曰:“莫春者,春服既成,冠者五六人,童子六七人,浴乎沂,风乎舞雩,咏而归。”夫子喟然叹曰:“吾与点也!”三子者出,曾皙后。曾皙曰:“夫三子者之言何如?”子曰:“亦各言其志也已矣。”曰:“夫子何哂由也?”曰:“为国以礼,其言不让,是故哂之。”“唯求则非邦也与?”“安见方六七十如五六十而非邦也者?”“唯赤则非邦也与?”“宗庙会同,非诸侯而何?赤也为之小,孰能为之大?”

颜渊篇第十二 论语目录

12.1 颜渊问仁。子曰:“克已复礼为仁。一日克已复礼,天下归仁焉。为仁由己,而由人乎哉?”颜渊曰:“请问其目。”子曰:“非礼勿视,非礼勿听,非礼勿言,非礼勿动。”颜渊曰:“回虽不敏,请事斯语矣。”

12.2 仲弓问仁。子曰:“出门如见大宾,使民如承大祭。己所不欲,勿施于人。在邦无怨,在家无怨。”仲弓曰:“雍虽不敏,请事斯语矣。”

12.3 司马牛问仁。子曰:“仁者,其言也讱。”曰:“其言也讱,斯谓之仁已乎?”子曰:“为之难,言之得无讱乎?”

12.4 司马牛问君子。子问:“君子不忧不惧。”曰:“不忧不惧,斯谓之君子已乎?”子曰:“内省不疚,夫何忧何惧?”

12.5 司马牛忧曰:“人皆有兄弟,我独亡。”子夏曰:“商闻之矣:死生有命,富贵在天。君子敬而无失,与人恭而有礼,四海之内皆兄弟也。君子何患乎无兄弟也?”

12.6 子张问明。子曰:“浸润之谮,肤受之愬,不行焉,可胃明也已矣。浸润之谮,肤受之愬,不行焉,可谓远也已矣。”

12.7 子贡问政。子曰:“足食,足兵,民信之矣。”子贡曰:“必不得已而去,于斯三者何先?”曰:“去兵。”子贡曰:“必不得已而去,于斯二者何先?”曰:“去食。自古皆有死,民无信不立。”

12.8 棘子成曰:“君子质而已矣,何以文为?”子贡曰:“惜乎,夫子之说君子也!驷不及舌。文犹质也,质犹文也。虎豹之鞟犹犬羊之鞟。”

12.9 哀公问于有若曰:“年饥,用不足,如之何?”有若对曰:“盍彻乎?”曰:“二,吾犹不足,如之何其彻也?”对曰:“百姓足,君孰与不足?百姓不足,君孰与足?”

12.10 子张问崇德辨惑。子曰:“主忠信,徙义,崇德也。爱之欲其生,恶之欲其死。既欲其生,又欲其死,是惑也。‘诚不以富,亦祗以异’。”

12.11 齐景公问政于孔子。孔子对曰:“君君,臣臣,父父,子子。”公曰:“善哉!信如君不君,臣不臣,父不父,子不子,虽有粟,吾得而食诸?”

12.12 子曰:“片言可以折狱者,其由也与?”子路无宿诺。

12.13 子曰:“听讼,吾犹人也。必也使无讼乎?”

12.14 子张问政。子曰:“居之无倦,行之以忠。”

12.15 子曰:“博学于文,约之以礼,亦可以弗畔矣夫!”

12.16 子曰:“君子成人之美,不成人之恶。小人反是。”

12.17 季康子问政于孔子。孔子对曰:“政者,正也。子帅以正,孰敢不正?”

12.18 季康子患盗,问于孔子。孔子对曰:“苟子之不欲,虽赏之不窃。”

12.19 季康子问政于孔子曰:“如杀无道,以就有道,何如?”孔子对曰:“子为政,焉用杀?子欲善而民善矣。君子之德风,小人之德草。草上之风必偃。”

12.20 子张问:“士何如斯可谓之达矣?”子曰:“何哉,尔所谓达者?”子张对曰:“在邦必闻,在家必闻。”子曰:“是闻也,非达也。夫达也者,质直而好义,察言而观色,虑以下人。在邦必达,在家必达。夫闻也者,色取仁而行违,居之不疑。在邦必闻,在家必闻。”

12.21 樊迟从游于舞雩之下,曰:“敢问崇德,修慝,辨惑。”子曰:“善哉问!先事后得,非崇德与?攻其恶,无攻人之恶,非修慝与?一朝之忿,忘其身,以及其亲,非惑与?”

12.22 樊迟问仁。子曰:“爱人。”问知。子曰:“知人。樊迟未达。子曰:”举直错诸枉,能使枉者直。”樊迟退,见子夏曰:“乡也吾见于夫子而问知,子曰:‘举直错诸枉,能使枉者直’,何谓也?”子夏曰:“富哉言乎!舜有天下,选于众,举皋陶,不仁者远矣。汤有天下,选于众,举伊尹,不仁者远矣。”

12.23 子贡问友。子曰:“忠告而善道之,不可则止,毋自辱焉。”

12.24 曾子曰:“君子以文会友,以友辅仁。”

子路篇第十三 论语目录

13.1 子路问政。子曰:“先之劳之。”请益。曰:“无倦。”

13.2 仲弓为季氏宰,问政。子曰:“先有司,赦小过,举贤才。”曰:“焉知贤才而举之?”子曰:“举尔所知;尔所不知,人其舍诸?”

13.3 子路曰:“卫君待子而为政,子将奚先?”子曰:“必也正名乎?”子路曰:“有是哉,子之迂也!奚其正?”子曰:“野哉,由也!君子于其所不知,盖阙如也。名不正,则言不顺;言不顺,则事不成;事不成,则礼乐不兴;礼乐不兴,则刑罚不中;刑罚不中,则民无所措手足。故君子名之必可言也,言之必可行也。君子于其言,无所苟而已矣。”

13.4 樊迟请学稼。子曰:“吾不如老农。”请学为圃。曰:“吾不如老圃。”樊迟出,子曰:“小人哉,樊须也!上好礼,则民莫敢不敬;上好义,则民莫敢不服;上好信,则民莫敢不用情。夫如是,则四方之民襁负其子而至矣,焉用稼?”

13.5 子曰:“诵诗三百,授之以政,不达;使于四方,不能专对;虽多,亦奚以为?”

13.6 子曰:“其身正,不令而行;其身不正,虽令不从。”

13.7 子曰:“鲁卫之政,兄弟也。”

13.8 子谓卫公子荆:“善居室。始有,曰:‘苟合矣。’少有,曰:‘苟完矣。’富有,曰:‘苟美矣。’”

13.9 子适卫,冉有仆。子曰:“庶矣哉!冉有曰:“既庶矣,又何加焉?”曰:“富之。”曰:“既富矣,又何加焉?”曰:“教之。”

13.10 子曰:“苟有用我者,期月而已可也,三年有成。”

13.11 子曰:“‘善人为邦百年,亦可以胜残去杀矣。’诚哉是言也!”

13.12 子曰:“如有王者,必世而后仁。”

13.13 子曰:“苟正其身矣,于从政乎何有?不能正其身,如正人何?”

13.14 冉子退朝。子曰:“何晏也?”对曰:“有政。”子曰:“其事也。如有政,虽不吾以,吾其与闻之。”

13.15 定公问:“一言而可以兴邦,有诸?”孔子对曰:“言不可以若是其几也。人之言曰:‘为君难,为臣不易。’如知为君之难也,不几乎一言而兴邦乎?”曰:“一言而丧邦,有诸?”孔子对曰:“言不可以若是其几也。人之言曰:‘予无乐乎为君,唯其言而莫予违也。’如其善而莫之违也,不亦善乎?如不善而莫之违也,不几乎一言而丧邦乎?”

13.16 叶公问政。子曰:“近者说,远者来。”

13.17 子夏为莒父宰。问政。子曰:“无欲速,无见小利。欲速,则不达;见小利,则大事不成。”

13.18 叶公语孔子曰:“吾党有直躬者,其父攘羊,而子证之。”孔子曰:“吾党之直者异于是:父为子隐,子为父隐。——直在其中矣。”

13.19 樊迟问仁。子曰:“居处恭,执事敬,与人忠。虽之夷狄,不可弃也。”

13.20 子贡问曰:“何如斯可谓之士矣?”子曰:“行己有耻,使于四方,不辱君命,可谓士矣。”曰:“敢问其次。”曰:“宗族称孝焉,乡党称弟焉。”曰:“敢问其次。”曰:“言必信,行必果,硜硜然小人哉!抑亦可以为次矣。”曰:“今之从政者何如?”子曰:“噫!斗筲之人,何足算也?”

13.21 子曰:“不得中行而与之,必也狂狷乎?狂者进取,狷者有所不为也。”

13.22 子曰:“南人有言曰:‘人而无恒,不可以作巫医。’善夫。”“不恒其德,或承之羞。”子曰:“不占而已矣。”

13.23 子曰:“君子和而不同,小人同而不和。”

13.24 子贡问曰:“乡人皆好之,何如?”子曰:“未可也。”“乡人皆恶之,何如?”子曰:“未可也。不如乡人之善者好之,其不善者恶之。”

13.25 子曰:“君子易事而难说也。说之不以道,不说也;及其使人也,器之。小人难事而易说也。说之虽不以道,说也;及其使人也,求备焉。”

13.26 子曰:“君子泰而不骄,小人骄而不泰。”

13.27 子曰:“刚、毅、木、讷近仁。”

13.28 子路问曰:“何如斯可谓之士矣?”子曰:“切切偲偲,怡怡如也,可谓士矣。朋友切切偲偲,兄弟怡怡。”

13.29 子曰:“善人教民七年,亦可以即戎矣。”

13.30 子曰:“以不教民战,是谓弃之。”

宪问篇第十四 论语目录

14.1 宪问耻。子曰:“邦有道,谷;邦无道,谷,耻也。”“克、伐、怨、欲不行焉,可以为仁矣?”子曰:“可以为难矣,仁则吾不知也。”

14.2 子曰:“士而怀居,不足以为士矣。”

14.3 子曰:“邦有道,危言危行;邦无道,危行言孙。”

14.4 子曰:“有德者必有言,有言者不必有德。仁者必有勇,勇者不必有仁。”

14.5 南宫适问于孔子曰:“羿善射,奡荡舟,俱不得其死然。禹、稷躬稼而有天下。”夫子不答。南宫适出,子曰:“君子哉若人!尚德哉若人!”

14.6 子曰:“君子而不仁者有矣夫,未有小人而仁者也。”

14.7 子曰:“爱之,能勿劳乎?忠焉,能勿诲乎?”

14.8 子曰:“为命,裨谌草创之,世叔讨论之,行人子羽修饰之,东里子产润色之。”

14.9 或问子产。子曰:“惠人也。”问子西。曰:“彼哉!彼哉!”问管仲。曰:“人也。夺伯氏骈邑三百,饭疏食,没齿无怨言。”

14.10 子曰:“贫而无怨难,富而无骄易。”

14.11 子曰:“孟公绰为赵、魏老则优,不可以为滕、薛大夫。”

14.12 子路问成人。子曰:“若臧武仲之知,公绰之不欲,卞庄子之勇,冉求之艺,文之以礼乐,亦可以为成人矣。”曰:“今之成人者何必然?见利思义,见危授命,久要不忘平生之言,亦可以为成人矣。”

14.13 子问公叔文子于公明贾曰:“信乎,夫子不言,不笑,不取乎?”公明贾对曰:“以告者过也,夫子时然后言,人不厌其言;乐然后笑,人不厌其笑;义然后取,人不厌其取。”子曰:“其然?岂其然乎?”

14.14 子曰:“臧武仲以防求为后于鲁,虽曰不要君,吾不信也。”

14.15 子曰:“晋文公谲而不正,齐桓公正而不谲。”

14.16 子路曰:“桓公杀公子纠,召忽死之,管仲不死。”曰:“未仁乎?”子曰:“桓公九合诸侯,不以兵车,管仲之力也。如其仁,如其仁。”

14.17 子贡曰:“管仲非仁者与?桓公杀公子纠,不能死,又相之。”子曰:“管仲相桓公,霸诸侯,一匡天下,民到于今受其赐。微管仲,吾其被发左衽矣。岂若匹夫匹妇之为谅也,自经于沟渎而莫之知也?”

14.18 公叔文子之臣大夫 与文子同升诸公。子闻之曰:“可以为‘文’矣。”

14.19 子言卫灵公之无道也,康子曰:“夫如是,奚而不丧?”孔子曰:“仲叔圉治宾客,祝鲩治宗庙,王孙贾治军旅。夫如是,奚其丧?”

14.20 子曰:“其言之不怍,则为之也难。”

14.21 阵成子弑简公。孔子沐浴而朝,告于哀公曰:“阵恒弑其君,请讨之。”公曰:“告夫三子!”孔子曰:“以吾从大夫之后,不敢不告也。君曰‘告夫三子’者!”之三子告,不可。孔子曰:“以吾从大夫之后,不敢不告也。”

14.22 子路问事君。子曰:“勿欺也,而犯之。”

14.23 子曰:“君子上达,小人下达。”

14.24 子曰:“古之学者为己,今之学者为人。”

14.25 蘧伯玉使人于孔子。孔子与之坐而问焉,曰:“夫子何为?”对曰:“夫子欲寡其过而未能也。”使者出。子曰:“使乎!使乎!”

14.26 子曰:“不在其位,不谋其政。”曾子曰:“君子思不出其位。”

14.27 子曰:“君子耻其言之过其行。”

14.28 子曰:“君子道者三,我无能焉:仁者不忧,知者不惑,勇者不惧。”子贡曰:“夫子自道也。”

14.29 子贡方人。子曰:“赐也,贤乎哉?夫我则不暇。”

14.30 子曰:“不患人之不己知,患其不能也。”

14.31 子曰:“不逆诈,不亿不信,抑亦先觉者,是贤乎!”

14.32 微生亩谓孔子曰:“丘何为是栖栖者与?无乃为佞乎?”孔子曰:“非敢为佞也,疾固也。”

14.33 子曰:“骥不称其力,称其德也。”

14.34 或曰:“以德报怨,何如?”子曰:“何以报德?以直报怨,以德报德。”

14.35 子曰:“莫我知也夫!”子贡曰:“何为其莫知子也?”子曰:“不怨天,不尤人;下学而上达。知我者其天乎!”

14.36 公伯寮愬子路于季孙。子服景伯以告,曰:“夫子固有惑志于公伯寮,吾力犹能肆诸市朝。”子曰:“道之将行也与,命也。道之将废也与,命也。公伯寮其如命何!”

14.37 子曰:“贤者辟世,其次辟地,其次辟色,其次辟言。”子曰:“作者七人矣。”

14.38 子路宿于石门。晨门曰:“奚自?”子路曰:“自孔氏。”曰:“是知其不可而为之者与?”

14.39 子击磬于卫,有荷蒉而过孔氏之门者,曰:“有心哉,击磬乎!”既而曰:“鄙哉!硜硜乎!莫己知也,斯己而已矣,深则厉,浅则揭。”子曰:“果哉!未之难矣。”

14.40 子张曰:“《书》云:‘高宗谅阴,三年不言。’何谓也?”子曰:“何必高宗,古之人皆然。君薨,百官总己以听于冢宰三年。”

14.41 子曰:“上好礼,则民易使也。”

14.42 子路问君子。子曰:“作己以敬。”曰:“如斯而已乎?”曰:“修己以安人。”曰:“如斯而已乎?”曰:“修己以安百姓。修己以安百姓,尧舜其犹病诸?”

14.43 原壤夷俟。子曰:“幼而不孙弟,长而无述焉,老而不死,是为贼。”以杖叩其胫。

14.44 阙党童子将命,或问之曰:“益者与?”子曰:“吾见其居于位也,见其与先生并行也。非求益者也,欲速成者也。”

卫灵公篇第十五 论语目录

15.1 卫灵公问阵於孔子。孔子对曰:“俎豆之事,则尝闻之矣;军旅之事,未之学也。”明日遂行。

15.2 在阵绝粮,从者病,莫能兴。子路愠见曰:“君子亦有穷乎?”子曰:“君子固穷,小人穷斯滥矣。”

15.3 子曰:“赐也,女以予为多学而识之者与?”对曰:“然。非与?”曰:“非也,予一以贯之。”

15.4 子曰:“由!知德者鲜矣。”

15.5 子曰:“无为而治者其舜也与?夫何为哉?恭己正南面而已矣。”

15.6 子张问行。子曰:“言忠信,行笃敬,虽蛮貊之邦,行矣。言不忠信,行不笃敬,虽州里,行乎哉?立则见其参於前也,在舆则见其倚于衡也,夫然后行。”子张书诸绅。

15.7 子曰:“直哉史鱼!邦有道,如矢;邦无道,如矢。君子哉蘧伯玉!邦有道,则仕;邦无道,则可卷而怀之。”

15.8 子曰:“可与言而不与之言,失人;不可与言而与之言,失言。知者不失人,亦不失言。”

15.9 子曰:“志士仁人,无求生以害仁,有杀身以成仁。”

15.10 子贡问为仁,子曰:“工欲善其事,必先利其器。居是邦也,事其大夫之贤者,友其士之仁者。”

15.11 颜渊问为邦。子曰:“行夏之时,乘殷之辂,服周之冕,乐则《韶》、《舞》、放郑声,远佞人。郑声淫,佞人殆。”

15.12 子曰:“人无远虑,必有近忧。”

15.13 子曰:“已矣乎!吾未见好德如好色者也。”

15.14 子曰:“臧文仲其窃位者与!知柳下惠之贤而不与立也。”

15.15 子曰:“躬自厚而薄责于人,则远怨矣。”

15.16 子曰:“不曰‘如之何,如之何’者,吾未如之何也已矣。”

15.17 子曰:“群居终日,言不及义,好行小慧,难矣哉!”

15.18 子曰:“君子义以为质,礼以行之,孙以出之,信以成之。君子哉!”

15.19 子曰:“君子病无能焉,不病人之不己知也。”

15.20 子曰:“君子疾没世而名不称焉。”

15.21 子曰:“君子求诸己,小人求诸人。”

15.22 子曰:“君子矜而不争,群而不党。”

15.23 子曰:“君子不以言举人,不以人废言。”

15.24 子贡问曰:“有一言而可以终身行之者乎?”子曰:“其‘恕’乎!己所不欲,勿施於人。”

15.25 子曰:“吾之於人也,谁毁谁誉?如有所誉者,其有所试矣。斯民也,三代之所以直道而行也。”

15.26 子曰:“吾犹及史之阙文也。有马者借人乘之,今亡矣夫!”

15.27 子曰:“巧言乱德。小不忍,则乱大谋。”

15.28 子曰:“众恶之,必察焉;众好之,必察焉。”

15.29 子曰:“人能弘道,非道弘人。”

15.30 子曰:“过而不改,是谓过矣。”

15.31 子曰:“吾尝终日不食,终夜不寝,以思,无益,不如学也。”

15.32 子曰:“君子谋道不谋食。耕也,馁在其中矣;学也,禄在其中矣。君子忧道不忧贫。”

15.33 子曰:“知及之,仁不能守之,虽得之,必失之。知及之,仁能守之,不庄以涖之,动之不以礼,未善也。”

15.34 子曰:“君子不可小知而可大受也,小人不可大受而可小知也。”

15.35 子曰:“民之於仁也,甚於水火。水火,吾见蹈而死者矣,未见蹈仁而死者也。”

15.36 子曰:“当仁,不让于师。”

15.37 子曰:“君子贞而不谅。”

15.38 子曰:“事君,敬其事而后其食。”

15.39 子曰:“有教无类。”

15.40 子曰:“道不同不相为谋。”

15.41 子曰:“辞达而已矣。”

15.42 师冕见,及阶,子曰:“阶也。”及席,子曰:“席也。”皆坐,子告之曰:“某在斯,某在斯。”师冕出。子张问曰:“与师言之道与?”子曰:“然。固相师之道也。”

季氏篇第十六 论语目录

1 季氏将伐颛臾。冉有、季路见于孔子曰:“季氏将有事于颛臾。”

孔子曰:“求!无乃尔是过与?夫颛臾,昔者先王以为东蒙主,且在邦域之中矣,是社稷之臣也。何以伐为?”

冉有曰:“夫子欲之,吾二臣者皆不欲也。”

孔子曰:“求!周任有言曰:‘阵力就列,不能者止。’危而不持,颠而不扶,则将焉用彼相矣?且尔言过矣。虎兕出于柙,龟玉毁于椟中,是谁之过与?”

冉有曰:“今夫颛臾,固而近于费。今不取,后世必为子孙忧。”

孔子曰:“求!君子疾夫舍曰‘欲之’而必为之辞。丘也闻有国有家者,不患寡而患不均,不患贫而患不安。盖均无贫,和无寡,安无倾。夫如是,故远人不服,则修文德以来之。既来之,则安之。今由与求也,相夫子,远人不服而不能来也,邦分崩离析而不能守也,而谋动干戈于邦内。吾恐季孙之忧,不在颛臾,而在萧墙之内也。”

16.2 孔子曰:“天下有道,则礼乐征伐自天子出;天下无道,则礼乐征伐自诸侯出。自诸侯出,盖十世希不失矣;自大夫出,五世希不失矣;陪臣执国命,三世希不失矣。天下有道,则政不在大夫。天下有道,则庶人不议。”

16.3 孔子曰:“禄之去公室五世矣,政逮于大夫四世矣,故夫三桓之子孙微矣。”

16.4 孔子曰:“益者三友,损者三友。友直,友谅,友多闻,益矣。友便辟,友善柔,友便佞,损矣。”

16.5 孔子曰:“益者三乐,损者三乐。乐节礼乐,乐道人之善,乐多贤友,益矣。乐骄乐,乐佚游,乐宴乐,损矣。”

16.6 孔子曰:“侍于君子有三 :言未及之而言,谓之躁;言及之而不言,谓之隐;未见颜色而言,谓之瞽。”

16.7 孔子曰:“君子有三戒:少之时,血气未定,戒之在色;及其壮也,血气方刚,戒之在斗;及其老也,血气既衰,戒之在得。”

16.8 孔子曰:“君子有三畏:畏天命,畏大人,畏圣人之言。小人不知天命而不畏也,狎大人,侮圣人之言。”

16.9 孔子曰:“生而知之者上也,学而知之者次也;困而学之,又其次也;困而不学,民斯为下矣。”

16.10 孔子曰:“君子有九思:视思明,听思聪,色思温,貌思恭,言思忠,事思敬,疑思问,忿思难,见得思义。”

16.11 孔子曰:“见善如不及,见不善如探汤。吾见其人矣,吾闻其语矣。隐居以求其志,行义以达其道。吾闻其语矣,未见其人也。”

16.12 齐景公有马千驷,死之日,民无德而称焉。伯夷、叔齐饿于首阳之下,民到于今称之。其斯之谓与?

16.13 陈亢问于伯鱼曰:“子亦有异闻乎?”对曰:“未也。尝独立,鲤趋而过庭。曰:‘学《诗》乎?’对曰:‘未也。’‘不学《诗》,无以言。’鲤退而学《诗》。他日,又独立,鲤趋而过庭。曰:‘学礼乎?’对曰:‘未也。’‘不学礼,无以立。’鲤退而学礼。闻斯二者。”陈亢退而喜曰:“问一得三:闻《诗》,闻礼,又闻君子之远其子也。”

16.14 邦君之妻,君称之曰“夫人”,夫人自称曰“小童”;邦人称之曰“君夫人”,称诸异邦曰“寡小君”;异邦人称之,亦曰“君夫人”。

阳货篇第十七 论语目录

17.1 阳货欲见孔子,孔子不见,归孔子豚。孔子时其亡也,而往拜之。遇诸涂。谓孔子曰:“来!予与尔言。”曰:“怀其宝而迷其邦,可谓仁乎?”曰:“不可。”“好从事而亟失时,可谓知乎?”曰:“不可。”“日月逝矣,岁不我与。”孔子曰:“诺。吾将仕矣。”

17.2 子曰:“性相近也,习相远也。”

17.3 子曰:“唯上知与下愚不移。”

17.4 子之武城,闻弦歌之声。夫子莞尔而笑,曰:“割鸡焉用牛刀?”子游对曰:“昔者偃也闻诸夫子曰:‘君子学道则爱人,小人学道则易使也。’”子曰:“二三子!偃之言是也。前言戏之耳。”

17.5 公山弗扰以费畔,召,子欲往。子路不说,曰:“末之也,已,何必公山氏之之也?”子曰:“夫召我者,而岂徒哉?如有用我者,吾其为东周乎?”

17.6 子张问仁于孔子。孔子曰:“能行五者于天下,为仁矣。”“请问之。”曰:“恭宽信敏惠。恭则不侮,宽则得众,信则人任焉,敏则有功,惠则足以使人。”

17.7 佛肸召,子欲往。子路曰:“昔者由也闻诸夫子曰:‘亲于其身为不善者,君子不入也。’佛肸以中牟畔,子之往也,如之何?”子曰:“然。有是言也。不曰坚乎,磨而不磷;不曰白乎,涅而不缁。吾岂匏瓜也哉?焉能系而不食?”

17.8 子曰:“由也!女闻六言六蔽矣乎?”对曰:“未也。”“居!吾语女。好仁不好学,其蔽也愚;好知不好学,其蔽也荡;好信不好学,其蔽也贼;好直不好学,其蔽也绞;好勇不好学,其蔽也乱;好刚不好学,其蔽也狂。”

17.9 子曰:“小子何莫学夫《诗》?诗,可以兴,可以观,可以群,可以怨。迩之事父,远之事君;多识于鸟兽草木之名。”

17.10 子谓伯鱼曰:“女为《周南》、《召南》矣乎?人而不为《周南》、《召南》,其犹正墙面而立也与?”

17.11 子曰:“礼云礼云,玉帛云乎哉?乐云乐云,钟鼓云乎哉?”

17.12 子曰:“色厉而内荏,譬诸小人,其犹穿窬之盗也与?”

17.13 子曰:“乡原,德之贼也。”

17.14 子曰:“道听而涂说,德之弃也。”

17.15 子曰:“鄙夫可与事君也与哉?”其未得之也,患得之,既得之,患失之,苟患失之,无所不至矣。“

17.16 子曰:“古者民有三疾,今也或是之亡也。古之狂也肆,今之狂也荡;古之矜也廉,今之矜也忿戾;古之愚也直,今之愚也诈而已矣。”

17.17 子曰:“巧言令色,鲜矣仁。”

17.18 子曰:“恶紫之夺朱也,恶郑声之乱雅乐也,恶利口之覆邦家者。”

17.19 子曰:“予欲无言。”子贡曰:“子如不言,则小子何述焉?”子曰:“天何言哉?四时行焉,百物生焉。天何言哉?”

17.20 孺悲欲见孔子,孔子辞以疾。将命者出户,取瑟而歌,使之闻之。

17.21 宰我问:“三年之丧,期已久矣。君子三年不为礼,礼必坏;三年不为乐,乐必崩。旧谷既没,新谷既升,钻燧改火,期可已矣。”子曰:“食夫稻,衣夫锦,于女安乎?”曰:“安。”“女安,则为之。夫君子之居丧,食旨不甘,闻乐不乐,居处不安,故不为也。今女安,则为之!”宰我出。子曰:“予之不仁也!子生三年,然后免于父母之怀。夫三年之丧,天下之通丧也。予也有三年之爱于其父母乎?”

17.22 子曰:“饱食终日,无所用心,难矣哉!不有博弈者乎?为之,犹贤乎已。”

17.23 子路曰:“君子尚勇乎!”子曰:“君子义以为上。君子有勇而无义为乱,小人有勇而无义为盗。”

17.24 子贡曰:“君子亦有恶乎!”子曰:“有恶:恶称人之恶者,恶居下流而 上者,恶勇而不礼者,恶果敢而窒者。”曰:“赐也亦有恶乎?”“恶徼以为知者,恶不孙以为勇者,恶讦以为直者。”

17.25 子曰:“唯女子与小人为难养也,近之则不孙,远之则怨。”

17.26 子曰:“年四十而见恶焉,其终也已。”

微子篇第十八 论语目录

18.1 微子去之,箕子为之奴,比干谏而死。孔子曰:“殷有三仁焉。”

18.2 柳下惠为士师,三黜。人曰:“子未可以去乎?”曰:“直道而事人,焉往而不三黜?枉道而事人,何必去父母之邦?”

18.3 齐景公待孔子曰:“若季氏,则吾不能;以季、孟之间待之。”曰:“吾老矣,不能用也。”孔子行。

18.4 齐人归女乐,季桓子受之,三日不朝,孔子行。

18.5 楚狂接舆歌而过孔子曰:“凤兮凤兮!何德之衰?往者不可谏,来者犹可追。已而!已而!今之从政者殆而!”孔子下,欲与之言。趋而辟之,不得与之言。

18.6 长沮、桀溺耦而耕,孔子过之,使子路问津焉。长沮曰:“夫执舆者为谁?” 子路曰:“为孔丘。”曰:“是鲁孔丘与?”曰:“是也。”曰:“是知津矣。”问于桀溺。桀溺曰:“子为谁?”曰:“为仲由”。曰:“是鲁孔丘之徒与?”对曰:“然。”曰:“滔滔者天下皆是也,而谁以易之?且而与其从辟人之士也, 岂若从辟世之士哉?”耨而不辍。子路行以告。夫子怃然曰:“鸟兽不可与同群,吾非斯人之徒与而谁与?天下有道,丘不与易也。”

18.7 子路从而后,遇丈人,以杖荷蓧。子路问曰:“子见夫子乎?”丈人曰:“四体不勤,五谷不分,孰为夫子?”植其杖而芸。子路拱而立。止子路宿,杀鸡为黍而食之,见其二子焉。明日,子路行以告。子曰:“隐者也。”使子路反见之。至,则行矣。子路曰:“不仕无义。长幼之节,不可废也;君臣之义,如之何其废之?欲洁其身,而乱大伦。君子之仕也,行其义也。道之不行,已知之矣。”

18.8 逸民:伯夷、叔齐、虞仲、夷逸、朱张、柳下惠、少连。子曰:“不降其志,不辱其身,伯夷、叔齐与!”谓“柳下惠、少连,降志辱身矣,言中伦,行中虑,其斯而已矣。”谓“虞仲、夷逸,隐居放言,身中清,废中权。我则异于是,无可无不可。”

18.9 大师挚适齐,亚饭干适楚,三饭缭适蔡,四饭缺适秦,鼓方叔入于河,播 武入于汉,少师阳、击磬襄入于海。

18.10 周公谓鲁公曰:“君子不施其亲,不使大臣怨乎不以。故旧无大故,则不弃也。无求备于一人!”

18.11 周有八士:伯达、伯适、仲突、仲忽、叔夜、叔夏、季随、季駉。

子张篇第十九 论语目录

19.1 子张曰:“士见危致命,见得思义,祭思敬,丧思哀,其可已矣。”

19.2 子张曰:“执德不弘,信道不笃,焉能为有?焉能为亡?”

19.3 子夏之门人问交于子张。子张曰:“子夏云何?”对曰:“子夏曰:‘可者与之,其不可者拒之。’”子张曰:“异乎吾所闻:君子尊贤而容众,嘉善而矜不能。我之大贤与,于人何所不容?我之不贤与,人将拒我,如之何其拒人也?”

19.4 子夏曰:“虽小道,必有可观者焉;致远恐泥,是以君子不为也。”

19.5 子夏曰:“日知其所亡,月无忘其所能,可谓好学也已矣。”

19.6 子夏曰:“博学而笃志,切问而近思,仁在其中矣。”

19.7 子夏曰:“百工居肆以成其事,君子学以致其道。”

19.8 子夏曰:“小人之过也必文。”

19.9 子夏曰:“君子有三变:望之俨然,即之也温,听其言也厉。”

19.10 子夏曰:“君子信而后劳其民,未信则以为厉己也。信而后谏,未信则以为谤己也。”

19.11 子夏曰:“大德不逾闲,小德出入可也。”

19.12 子游曰:“子夏之门人小子,当酒扫应对进退,则可矣,抑末也。本之则无,如之何?”子夏闻之,曰:“噫!言游过矣!君子之道,孰先传焉,孰后倦焉?譬诸草木,区以别矣。君子之道,焉可诬也?有始有卒者,其惟圣人乎!”

19.13 子夏曰:“仕而优则学,学而优则仕。”

19.14 子游曰:“丧致乎哀而止。”

19.15 子游曰:“吾友张也为难能也,然而未仁。”

19.16 曾子曰:“堂堂乎张也,难与并为仁矣。”

19.17 曾子曰:“吾闻诸夫子:人未有自致者也,必也亲丧乎!”

19.18 曾子曰:“吾闻诸夫子:孟庄子之孝也,其他可能也;其不改父之臣与父之政,是难能也。”

19.19 孟氏使阳肤为士师,问于曾子。曾子曰:“上失其道,民散久矣。如得其情,则哀矜而勿喜!”

19.20 子贡曰:“纣之不善,不如是之甚也。是以君子恶居下流,天下之恶皆归焉。”

19.21 子贡曰:“君子之过也,如日月之食焉;过也,人皆见之;更也,人皆抑之。”

19.22 卫公孙朝问于子贡曰:“仲尼焉学?”子贡曰:“文、武之道,未坠于地,在人。贤者识其大者,不贤者识其小者。莫不有文武之道焉。夫子焉不学?而亦何常师之有?”

19.23 叔孙武叔语大夫于朝,曰:“子贡贤于仲尼。”子服景伯以告子贡。子贡曰:“譬之宫墙,赐之墙也及肩,窥见室家之好。夫子之墙数仞,不得其门而入,不见宗庙之美,百官之富。得其门者或寡矣。夫子之云,不亦宜乎!”

19.24 叔孙武叔毁仲尼。子贡曰:“无以为也!仲尼不可毁也。他人之贤者,丘陵也,犹可逾也;仲尼,日月也,无得而逾焉。人虽欲自绝,其何伤于日月乎?多见其不知量也。”

19.25 陈子禽谓子贡曰:“子为恭也,仲尼岂贤于子乎?”子贡曰:“君子一言以为知,一言以为不知,言不可不慎也。夫子之不可及也,犹天之不可阶而升也。夫子之得邦家者,所谓立之斯立,道之斯行,绥之斯来,动之斯和。其生也荣,其死也哀。如之何其可及也?”

尧曰篇第二十 论语目录

20.1 尧曰:“咨!尔舜。天之历数在尔躬,允执其中。四海困穷,天禄永终。”舜亦以命禹。曰:“予小子履,敢用玄牡,敢昭告于皇皇后帝:有罪不敢赦。帝臣不蔽,简在帝心。朕躬有罪,无以万方;万方有罪,罪在朕躬。”周有大赉,善人是富。“虽有周亲,不如仁人。百姓有过,在予一人。”谨权量,审法度,修废官,四方之政行焉。兴灭国,继绝世,举逸民,天下 之民归心焉。所重:民、食、丧、祭。宽则得众,信则民任焉,敏则有功,公则说。

20.2 子张问于孔子曰:“何如斯可以从政矣?”子曰:“尊五美,屏四恶,斯可以从政矣。”子张曰:“何谓五美?”子曰:“君子惠而不费,劳而不怨,欲而不贪,泰而不骄,威而不猛。”子张曰:“何谓惠而不费?”子曰:“因民之所利而利之,斯不亦惠而不费乎?择可劳而劳之,又谁怨?欲仁而得仁,又焉贪?君子无众寡,无小大,无敢慢,斯不亦泰而不骄乎?君子正其衣冠,尊其瞻视,俨然人望而畏之,斯不亦威而不猛乎?”子张曰:“何谓四恶?”子曰:“不教而杀谓之虐;不戒视成谓之暴;慢令致期谓之贼;犹之与人也,出纳之吝谓之有司”。

20.3 孔子曰:“不知命,无以为君子也;不知礼,无以立也;不知言,无以知人也。”

Web Response Status

[code lang=javascript]
100 “continue”
101 “switching protocols”
102 “processing”
200 “ok”
201 “created”
202 “accepted”
203 “non-authoritative information”
204 “no content”
205 “reset content”
206 “partial content”
207 “multi-status”
208 “already reported”
226 “im used”
300 “multiple choices”
301 “moved permanently”
302 “found”
303 “see other”
304 “not modified”
305 “use proxy”
307 “temporary redirect”
308 “permanent redirect”
400 “bad request”
401 “unauthorized”
402 “payment required”
403 “forbidden”
404 “not found”
405 “method not allowed”
406 “not acceptable”
407 “proxy authentication required”
408 “request timeout”
409 “conflict”
410 “gone”
411 “length required”
412 “precondition failed”
413 “payload too large”
414 “uri too long”
415 “unsupported media type”
416 “range not satisfiable”
417 “expectation failed”
418 “I’m a teapot”
422 “unprocessable entity”
423 “locked”
424 “failed dependency”
426 “upgrade required”
428 “precondition required”
429 “too many requests”
431 “request header fields too large”
500 “internal server error”
501 “not implemented”
502 “bad gateway”
503 “service unavailable”
504 “gateway timeout”
505 “http version not supported”
506 “variant also negotiates”
507 “insufficient storage”
508 “loop detected”
510 “not extended”
511 “network authentication required”

[/code]