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
充分体现了面向对象编程的继承性和抽象性(迫真
然后我们看看实际上的实现们
... 总之,我觉得应该搞一个自动正则匹配 URL 然后拿指定逻辑替换的插件,这样以后我就不用手动弄优雅(隐式)链接了
$伪 hashtag
(说实话,我不是很了解他们是怎么找到这些黑科技一样的玩法的... 我都懒得玩这些呢... 🙈 (找 @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
GitHub
telegramdesktop/tdesktop
Telegram Desktop messaging app. Contribute to telegramdesktop/tdesktop development by creating an account on GitHub.
duangsuse::Echo
不是天才的话 1k 小时定律依然是有效的啊,只要一直努力用心的做某件事情,一定就能得到想要的效果吧... 虽然这一切精力啊,都要分散到超过 10 个的子科目,子知识范畴里面去呢... 那就要 10k 个小时呢,就是两年也没关系,只要能做到想要的水平
不过啊,虽然现在偏向数学性、偏向理论性的一些东西还是不好理解,至少其他的都还不错,能用了,可喜可贺。上次对 Telegram $RICH 这个标签的分析就是一个例子,不管怎么样是不是天才(笑)技术进步都是在那里的(指背书)所以值得庆祝?((((不到能手写红黑树的程度绝不罢休
Telegram
duangsuse::Echo
(其实我一直以为 Telegram Desktop 源码结构维护得那么好的话,这种链接路由应该专门分一个文件实现的,但其实内联在链接点击里实现了?(其实只不过是在那个文件里实现,不是在点击事件函数里实现的
(说实话,我不是很了解他们是怎么找到这些黑科技一样的玩法的... 我都懒得玩这些呢... 🙈 (找 @lwl12 问问去
我们来分析一下相应的算法 #telegram #algorithm #frontend #qt #cplusplus #desktop #linux #tool
... 算了直接找我要用的吧,首先我们说说…
(说实话,我不是很了解他们是怎么找到这些黑科技一样的玩法的... 我都懒得玩这些呢... 🙈 (找 @lwl12 问问去
我们来分析一下相应的算法 #telegram #algorithm #frontend #qt #cplusplus #desktop #linux #tool
... 算了直接找我要用的吧,首先我们说说…
duangsuse::Echo
弄了个测试 LaTeX 排版的,顺手又学习一下 TeX 方便以后发博文
#Book #Fontend #GUI #Desktop 买了那本《Qt 5.9 C++ 开发指南》我才知道这种多『内部窗口』的被称为 MDI(多文档视口应用)
这次顺手买了一本 Qt、一本 C/算法数据结构计算机二级、一本嵌入式、一本操作系统的...
其中我觉得最有价值的目前是嵌入式,因为通过它我最终知道了很多汇编语言里
并且领悟了 x86 的各种寄存器啊... 执行环境啊... 比如 AX AL AH 三寄存器有什么关系、MMU 是什么之类的
顺手悟出了 LR(系统栈链接寄存器)的用途(在 x86 里是 bp,栈指针是 sp,现在一般都算作通用寄存器,可惜即使这样都只有 8 个通用寄存器 GPR...)
这次顺手买了一本 Qt、一本 C/算法数据结构计算机二级、一本嵌入式、一本操作系统的...
其中我觉得最有价值的目前是嵌入式,因为通过它我最终知道了很多汇编语言里
**h
这种语法是表示 C99 里的 0x**
十六进制数并且领悟了 x86 的各种寄存器啊... 执行环境啊... 比如 AX AL AH 三寄存器有什么关系、MMU 是什么之类的
顺手悟出了 LR(系统栈链接寄存器)的用途(在 x86 里是 bp,栈指针是 sp,现在一般都算作通用寄存器,可惜即使这样都只有 8 个通用寄存器 GPR...)
Wikipedia
Multiple-document interface
A multiple-document interface (MDI) is a graphical user interface in which multiple windows reside under a single parent window. Such systems often allow child windows to embed other windows inside them as well, creating complex nested hierarchies. This contrasts…