duangsuse::Echo
583 subscribers
4.12K photos
118 videos
579 files
6.13K links
import this:
美而不丑、明而不暗、短而不凡、长而不乱,扁平不宽,读而后码,行之天下,勿托地上天国。
异常勿吞,难过勿过,叹一真理。效率是很重要,盲目最是低效。
简明是可靠的先验,不是可靠的祭品。
知其变,守其恒,为天下式;穷其变,知不穷,得地上势。知变守恒却穷变知新,我认真理,我不认真。

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
duangsuse::Echo
https://github.com/telegramdesktop/tdesktop/blob/d98bbca353fa12cc7b7fcecd193335db363aec35/Telegram/SourceFiles/core/click_handler_types.cpp#L32 #telegram
(其实我一直以为 Telegram Desktop 源码结构维护得那么好的话,这种链接路由应该专门分一个文件实现的,但其实内联在链接点击里实现了?(其实只不过是在那个文件里实现,不是在点击事件函数里实现的

(说实话,我不是很了解他们是怎么找到这些黑科技一样的玩法的... 我都懒得玩这些呢... 🙈 (找 @lwl12 问问去

我们来分析一下相应的算法 #telegram #algorithm #frontend #qt #cplusplus #desktop #linux #tool

... 算了直接找我要用的吧,首先我们说说 Telegram links 基本的 impact

telegramdesktop/tdesktopd/Telegram/SourceFiles/core/click_handler_types.h@d98bbca353fa12cc7b7fcecd193335db363aec35

clickHandler 就是链接派发逻辑。它分类对 Post 里内联的链接进行派发(到实际动作,如打开用户信息窗口),Types 是里面处理的数据类型,如用户 ID、网址 URL 等

public:
TextClickHandler(bool fullDisplayed = true)
QString copyToClipboardText()
QString tooltip()

class UrlClickHandler
class HiddenUrlClickHandler
class BotGameUrlClickHandler
class MentionClickHandler
class MentionNameClickHandler
class HashtagClickHandler
class CashtagClickHandler
class BotCommandClickHandler

充分体现了面向对象编程的继承性和抽象性(迫真

然后我们看看实际上的实现们

QString tryConvertUrlToLocal(QString url)
where

matchOptions = Regex::CaseInsensitive
bool telegramMeMatch = Regex::match(qsl("^https?://(www\\.)?(telegram\\.(me|dog)|t\\.me)/(.+)$"), url, matchOptions)

if
telegramMeMatch {
query = telegramMeMatch->capturedRef(4);
query->ifMatch("^joinchat/([a-zA-Z0-9\\.\\_\\-]+)(\\?|$)", x => x->ifMatch("^/\\d+/?(?:\\?|$)", url("&post=")))
query->ifMatch("^addstickers/([a-zA-Z0-9\\.\\_]+)(\\?|$)")
query->ifMatch("^share/url/?\\?(.+)$")
query->ifMatch("^confirmphone/?\\?(.+)")
query->ifMatch("iv/?\\?(.+)(#|$)")
query->ifMatch("socks/?\\?(.+)(#|$)")
query->ifMatch("proxy/?\\?(.+)(#|$)")
query->ifMatch("^([a-zA-Z0-9\\.\\_]+)(/?\\?|/?$|/(\\d+)/?(?:\\?|$))")
}

... 有点累,不用伪代码了吧,实现细节都抖出来有点多了
... 总之,我觉得应该搞一个自动正则匹配 URL 然后拿指定逻辑替换的插件,这样以后我就不用手动弄优雅(隐式)链接了

$伪 hashtag
duangsuse::Echo
弄了个测试 LaTeX 排版的,顺手又学习一下 TeX 方便以后发博文
#Book #Fontend #GUI #Desktop 买了那本《Qt 5.9 C++ 开发指南》我才知道这种多『内部窗口』的被称为 MDI(多文档视口应用)

这次顺手买了一本 Qt、一本 C/算法数据结构计算机二级、一本嵌入式、一本操作系统的...

其中我觉得最有价值的目前是嵌入式,因为通过它我最终知道了很多汇编语言里 **h 这种语法是表示 C99 里的 0x** 十六进制数

并且领悟了 x86 的各种寄存器啊... 执行环境啊... 比如 AX AL AH 三寄存器有什么关系、MMU 是什么之类的
顺手悟出了 LR(系统栈链接寄存器)的用途(在 x86 里是 bp,栈指针是 sp,现在一般都算作通用寄存器,可惜即使这样都只有 8 个通用寄存器 GPR...)
#JavaScript #Qt #desktop #dev #Google 同意,绝对同意。
#frontend #Unity #gamedev #Qt #desktop Qt 5 里就支持的有 Qt CSS(QSS)用来增强界面风格动态自定义的能力
#GitHub #mobile +1, 之前看过 #Desktop 的,但不知道这个,他们好像没推广