Elisp中的interactive参数

interactive 参数的含义 若一个函数带有交互模式声明,则它是一个命令函数。即可以通过 M-x(execute-command) 来调用。 声明格式 (defun kumo-interactive-func () (interactive "code-string") ;; do something...) 种类 Completion: 提供补全。TAB,SPC 和 RET 完成补全。 Existing: 必须是存在的对象名。不接受无效名称。如果输入无效则不会退出 minibuffer。 Default: 如果未输入则使用默认值。 No I/O: 不读取任何输入。因此不会使用提示符。 Prompt: 放在提示符或\n之前。 Special: 只能放在交互式字符参数前。 含义 接收多个输入以 \n 来分隔。 *: 如果当前buffer处于read-only-mode时提示。 [Special] @: 在第一个鼠标事件触发的window调用。[Special] ^: 通过 shift 调用前需要标记区域,没有公共 shift 调用则停止标记。[Special] a: 一个函数定义的符号名。[Existing, Completion, Prompt] (defun with-func-arg (arg) (interactive "aEnter a function:") (funcall arg)) b: buffer名(已存在)。[Existing, Completion, Default, Prompt]...

July 20, 2021 · 2 min · zakudriver

手把手教你读财报

要点 会计政策的改变; 会计事务所出具 “标准无保留意见”; 上市时间长于5年; 某科目出现大比例变化,查看附注; 与同行对比; 关注的重点 财务会计报告 董事会报告 重要事项 财务会计报告 货币资金 货币资金余额比短期负债小很多; 货币资金充裕,却借了很多有息甚至高息负债; 定期存款很多,其他货币资金很多,流动资金却严重缺乏; 其他货币资金数额巨大,但没有合理解释; 经营相关资产 应收票据,银行承兑汇票>商业承兑汇票; 应收账款,增长幅度及坏账准备计提政策; 其他应收款,越小越好; 存货,存货和营业成本的合理比例; 生产相关资产 固定资产,年年折旧,折旧算费用; 在建工程,迟迟不转固定资产一般有鬼; 折旧 == 摊销; 无形资产,研发费用 = 机会+风险。房企,土地算存货而非无形资产 利润高的公司更愿意把研发支出都记入费用中,这样可以减少当期税收支出;反之计入无形资产凸显财报好看; 商誉:若一家企业的获利能力超过可辨认净资产的正常获利能力,超出的部分,一定是另外一种资产带来的,这个资产就被叫作“商誉”。没有进行过收购的企业商誉栏目为0。商誉不用摊销; 长期待摊费用,越小越好; 递延所得税资产,税务局收的税大于公司酸的应交税款; 递延所得税负债,税务局收的税小于公司算的应交税款; 企业净资产与真实相差甚远,如资产折旧或商誉价值; 投资相关资产 交易性金融资产,不折旧。以卖出产生利润收税;产生递延所得税资产和负债的重要源头。公允价值变动计入利润表; 持有至到期投资,按实际利率计算的投资收益,减值损失; 可供出售金融资产,汇兑损益,股利或利息,减值损失等公允价值变动加入净资产; 长期股权投资,分红影响利润,或经营盈亏影响利润; 买入返售金融资产,规避监管的抵押贷款; 投资性房地产,公允价值对利润和净资产影响巨大; 负债和所有人权益...

June 1, 2021 · 1 min · zakudriver

golang并发写slice

package sliceSafe type SliceSafe struct { channel chan int `desc:"即将加入到数据slice的数据"` data []int `desc:"数据slice"` } // 新建一个size大小缓存的active object对象 func New(size int, done func()) *SliceSafe { s := &SliceSafe{ channel: make(chan int, size), data: make([]int, 0), } go func() { s.schedule() done() }() return s } // 把管道中的数据append到slice中 func (s *SliceSafe) schedule() { for v := range s.channel { s.data = append(s.data, v) } } // 增加一个值 func (s *SliceSafe) Add(v int) { s....

May 21, 2021 · 1 min · zakudriver

typescript常用的泛型

函数参数类型 type TFuncParameterType<T> = T extends (arg: infer P) => void ? P : string; // e.g function func(arg: string) {} type TParamsType = TFuncParameterType<typeof func>; // string 函数返回值类型 type TFuncReturnType<T> = T extends (arg: any) => infer P ? P : string; // e.g function func(arg: string): number {} type TReturnType = TFuncReturnType<typeof func>; // number 元祖成员作为键约束 const keys = ["a", "b", "c"] as const; type TKeysMap = Record<typeof keys[number], string> // KeysMap: { a: string; b: string; c: string; } 数组元素类型 type ArrayElement<T extends readonly unknown[]> = T extends readonly (infer P)[] ?...

May 21, 2021 · 4 min · zakudriver

H5复制文字到剪切板

// 复制文字 // copyText('h5实现一键复制到粘贴板 兼容ios') /*兼容性补充: 移动端: 安卓手机: 微信(chrome)和几个手机浏览器都可以用。 苹果手机: 微信里面和sarafi浏览器里也都可以, PC: sarafi版本必须在10.2以上,其他浏览器可以. */ export function copyText(text: string | number) { // number类型没有 .length 不能执行selectText 需要转化成字符串 const textString = text.toString(); let input: HTMLInputElement | null = document.querySelector('#copy-input'); if (!input) { input = document.createElement('input'); input.id = 'copy-input'; input.readOnly = true; // 防止ios聚焦触发键盘事件 input.style.position = 'absolute'; input.style.left = '-1000px'; input.style.zIndex = '-1000'; document.body.appendChild(input); } input.value = textString; // ios必须先选中文字且不支持 input.select(); selectText(input, 0, textString....

August 6, 2020 · 1 min · zakudriver