小巧的代码片段管理工具--snippestlab

一个优秀的开发工程师,不应该重复的造轮子,而是应该在学习工作中,抽取和积累常用且经典的代码,保存为代码片段,有需要时随手翻出,节省重复码代码的时间来学习新知识,新业务,进行提高,这种工作坚持时间越长,效果越显著,良性的循环才会产生更大的惊喜,下面介绍一下一款代码片段的管理工具snippestlab。

snippestlab

Snippetslab不是一款传统意义上的代码编辑器,它的设计从头到尾都透着一股浓浓的为碎片化而生的味道。它所面向的不是连续的编辑一个完整程序的情景,而是将一个程序组件一个个拆分出来编写的情景。

在这种情景下,你可以非常碎片化的编写程序,并且可以快速的将代码调用到各个其他的程序上。而Snippetslab做的就是将这些代码收集在一起,让你可以快速搜索并调用,将一个个小的程序片段快速的组合。

SnippetsLab的终极目的就是将你容易遗忘在电脑角落中的各种代码片段收集在一起,构建成你个人的巨大的代码片段库。随着你编写与收集的代码片段越来越多,你的私人片段代码库也就积累的越来越多,你的可用代码也就越来越多,结合它的快速搜索和资料库结构,将能够极大的帮助你的程序构建。(虽说网上的代码库肯定更大,但用自己整理的代码不是更方便容易吗。)

同时,SnippetsLab支持iCloud,这意味着你可以在多台设备上快速同步。

 

(1)干净简洁的界面

而Snippetslab则是使用了类似Ulysses的三段结构,层级分明,便于管理。

左侧是文件夹目录,支持多层文件夹结构;中间是当前文件夹下的文件目录;右边是文件内容界面

(2)语法高亮

 可以选择100多种编程语言进行语言高亮标注。你可以自定义现在主要使用的几种语言来进行高亮。

(3)支持主题选择

(4)强大的菜单栏助手

Snippetslab的菜单栏助手有点像印象笔记的菜单栏助手的感觉,但在功能上更为强大,可以说在很多情况下这个菜单栏助手可以完全代替程序主体来使用。

点开菜单栏上的锥形烧杯图标,我们可以发现它是分成两个部分的,分别是作为搜索管理的find和编写收集新代码的new。

find部分是用来查找与查看代码,支持全内容搜索,而且最赞的是当你把鼠标移到相应的文件名上时会显示出一个预览窗口,你可以直接快捷的复制里面的代码。 

 new部分则是支持直接在小窗口里创建新的文件,并且可以选择保存所属的文件夹,同时还可以选择对应的语言类型,并且支持在当前界面下的语法高亮。

 

官网地址: http://www.renfei.org/snippets-lab/

使用文档: https://www.renfei.org/snippets-lab/manual/mac/index.html

 

开发人员都在关注的公众号,聚焦一线开发人员,真实的工作状态,有群可交流

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
下面是一个简单的self-attention代码片段,用于对输入序列进行自注意力计算: ``` class SelfAttention(nn.Module): def __init__(self, input_dim, hidden_dim): super(SelfAttention, self).__init__() self.query_linear = nn.Linear(input_dim, hidden_dim) self.key_linear = nn.Linear(input_dim, hidden_dim) self.value_linear = nn.Linear(input_dim, hidden_dim) def forward(self, x): # 计算query、key、value向量 query = self.query_linear(x) key = self.key_linear(x) value = self.value_linear(x) # 计算注意力分数 scores = torch.matmul(query, key.transpose(-2, -1)) scores = scores / math.sqrt(query.size(-1)) # 计算注意力权重 attention_weights = nn.functional.softmax(scores, dim=-1) # 计算加权和 weighted_values = torch.matmul(attention_weights, value) output = weighted_values.sum(dim=-2) return output ``` 下面是一个简单的cross-attention代码片段,用于计算query序列和key-value序列之间的跨注意力: ``` class CrossAttention(nn.Module): def __init__(self, query_dim, key_dim, value_dim, hidden_dim): super(CrossAttention, self).__init__() self.query_linear = nn.Linear(query_dim, hidden_dim) self.key_linear = nn.Linear(key_dim, hidden_dim) self.value_linear = nn.Linear(value_dim, hidden_dim) def forward(self, query, key, value): # 计算query、key、value向量 query = self.query_linear(query) key = self.key_linear(key) value = self.value_linear(value) # 计算注意力分数 scores = torch.matmul(query, key.transpose(-2, -1)) scores = scores / math.sqrt(query.size(-1)) # 计算注意力权重 attention_weights = nn.functional.softmax(scores, dim=-1) # 计算加权和 weighted_values = torch.matmul(attention_weights, value) output = weighted_values.sum(dim=-2) return output ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值