clutch —— Emacs 数据库客户端(MySQL/PostgreSQL/SQLite/Oracle/SQL Server 等)

Reddit 上以前发过帖子,很多人还是不太喜欢AI参与的项目。

感觉是外国人不信任大公司啦,因为大公司经常以知识产权收回啥啥的,AI 模型也会有风险。但国内这个知识产权意识比较少。这方面的话还是要理解外国人的顾虑。

AI 说到底还是工具,加快开发的工具,最终还是需要人去设计,去校对的。从这方面来讲,有些外国人就有点保守了。

我们对大公司的不信任,说到底其实源于嫉妒。要是有AI公司给我们开六位数的高薪,我们会毫不犹豫地去。我们在网上公开批评那些CEO,但要是能跟他们换个位置,我们也会乐意得很。我们对知识产权表面上嗤之以鼻,实际上是彻头彻尾的虚伪——凡是跟自己饭碗无关的,我们开口就批,但要是涉及到自己的利益,我们又护得比谁都紧。比如,我们呼吁Anthropic把Claude Code开源,但我们给自己雇主写的那些东西,再普通不过,却从来没想过要开源。 中国文化在这方面,我觉得反而更诚实。财富传统上跟实物挂钩,主要是黄金之类的东西,所以对古人来说,一个想法这么虚无缥缈的东西居然能买卖,感觉挺奇怪的。中国科技界的富豪CEO们,少数例外不算,大多数都是从严格的应试文化里走出来的,所以大家尊重他们,普遍把他们当成值得效仿的人。

我倒是有不同的看法,太多功能意味着维护压力很大,不像其它软件,emacs 包大多数无法赚钱,人少很难长期支持。

中国文化感觉就没有开源的概念,很多东西宁愿它失传,埋葬。也不会选择开放,所以确实没理由要求别人开源

有 AI 了还好,一个人维护。主要还是架构和模块化一定要做好,不然后期一堆乱麻。

AI 是个放大器和加速器,软件工程不做好,技术债很快就要还了。

2 个赞
(defun my-clutch-sql-strip-line-trailing-comment (line)
  "Strip trailing `--` comment from LINE, respecting single-quoted strings."
  (let ((pos 0)
        (len (length line))
        (comment-start nil))
    (while (and (< pos len) (not comment-start))
      (if-let* ((skip (clutch-db-sql-skip-literal-or-comment line pos)))
          (if (and (= (aref line pos) ?-)
                   (< (1+ pos) len)
                   (= (aref line (1+ pos)) ?-))
              (setq comment-start pos)
            (setq pos skip))
        (setq pos (1+ pos))))
    (if comment-start
        (string-trim-right (substring line 0 comment-start))
      line)))

(defun my-clutch-sql-filter-comments (text)
  "Remove SQL `--` comments from TEXT.
Strips trailing line comments and drops comment-only or blank lines."
  (string-join
   (seq-filter
    (lambda (line)
      (not (string-empty-p (string-trim line))))
    (mapcar #'my-clutch-sql-strip-line-trailing-comment
            (split-string text "\n")))
   "\n"))

(defun my-clutch-exec-xml-inner ()
  "Execute SQL inside the XML tag at point, ignoring `--` comments."
  (interactive)
  (let ((sql (save-excursion
               (re-search-backward "<[^/][^>]*>")
               (search-forward ">")
               (let ((beg (point)))
                 (re-search-forward "</[^>]+>")
                 (string-trim
                  (my-clutch-sql-filter-comments
                   (buffer-substring-no-properties beg (match-beginning 0))))))))
    (when (string-empty-p sql)
      (user-error "No SQL in tag (comments filtered)"))
    (clutch--ensure-connection)
    (clutch-execute sql)
    (when-let* ((win (clutch--result-window)))
      (select-window win))))

可以配置成使用xml 分割的方式

最近在尝试做 MongoDB 和 Redis 的支持,不知道是否有人有这个需求。

3 个赞

必须有

1 个赞