当前位置: 首页 > news >正文

安防 光速东莞网站建设百度推广平台登录

安防 光速东莞网站建设,百度推广平台登录,深圳网站开发antnw,区块链开发技术的应用Things3[1] 是一款苹果生态内的任务管理软件#xff0c;是一家德国公司做的#xff0c;非常好用。我前后尝试了众多任务管理软件#xff0c;最终选定 things3#xff0c;以后有机会会写文章介绍我是如何用 things3 来管理我的日常任务。本文主要介绍欧神写的 tli[2] 工具来…Things3[1] 是一款苹果生态内的任务管理软件是一家德国公司做的非常好用。我前后尝试了众多任务管理软件最终选定 things3以后有机会会写文章介绍我是如何用 things3 来管理我的日常任务。本文主要介绍欧神写的 tli[2] 工具来学习如何写一个定制的通过邮件和 things3 沟通的工具。很多软件都有类似的邮件功能例如给绑定的 kindle 邮件地址发送电子书文件就可以在 kindle 设备上看到。学会写工具的套路后今后就能自己写类似的工具了。使用场景正常情况下我们可以在 mac/ipad/iphone 上可以通过软件界面添加 TODO 事项而且  things3 本身也有全局快捷录入的功能非常方便。但是 things3 只能在苹果生态内使用当我们临时切换到 windows 或者 linux 上工作就不好操作了。这时如果产生了新的 TODO通过 tli打开 terminal 工具就能将 TODO 加到 inbox 里。命令行操作同步到 things3初始化配置因为要通过邮件来和 things3 沟通因此需要配置发送邮件的邮箱、SMTP 服务器、用户名、密码、things3 给我们的专属邮件地址。由于通过 tli 发送 TODO 是一次性的任务因此这些配置项需要保存在某个文件中之后用到的时候直接读取就好了。具体的配置项包括type tliConf struct {SMTPHost   string yaml:smtp_hostSMTPPort   string yaml:smtp_portAvatar     string yaml:avatarEmailAddr  string yaml:email_addrUsername   string yaml:usernamePassword   string yaml:passwordThingsAddr string yaml:things_addr }我用的 gmail 作为发送邮件配置的 SMTP 参数是smtp.gmail.com:587。EmailAddr 就是 gmail 地址Password 需要设置一个专用的。使用 user.Current() 方法可以拿到当前用户的信息包括 home directory用户名等等。tli 将配置文件保存到 home 目录下。使用 bufio 包在 terminal 里读取用户的输入s : bufio.NewScanner(os.Stdin) log.Printf(SMTP Host Address: ) if !s.Scan() {log.Println(init was canceled.)return } info : s.Text() tli.SMTPHost  info将配置序列化成 yaml 后写入 ~/.tli_config。func (c *tliConf) save() {checkhome()data, err : yaml.Marshal(c)if err ! nil {log.Fatalf(cannot save your data, err: %v, err)}f, err : os.OpenFile(homedir/pathConf,os.O_CREATE|os.O_RDWR, 0600)if err ! nil {return}defer f.Close()all : []byte(---\n)all  append(all, data...)if _, err : f.Write(all); err ! nil {return} }读取 title 和 body用户执行 todo 命令时可输入 title 和 body。且 body 支持多行输入输入空行或者按 ctrlC 时取消输入。TODO title 通过命令行直接传入body 则通过一个 for 循环等待用户输入func (a *tliTODO) waitBody() bool {s : bufio.NewScanner(os.Stdin)fmt.Println((Enter an empty line to complete; CtrlC/CtrlD to cancel))sigCh : make(chan os.Signal, 1)signal.Notify(sigCh, os.Interrupt)line : make(chan string, 1)go func() {for {fmt.Print( )if !s.Scan() {sigCh - os.Interruptreturn}l : s.Text()if len(l)  0 {line - return}line - l}}()for {select {case -sigCh:return falsecase l : -line:if len(l)  0 {return true}a.body  append(a.body, l)}} }并且监听了取消息信号异步启动一个协程去监听输入再在 for select 中监听 sigCh若用户手动取消了则返回 false。若用户输入了空行则返回 true代表输入完成之后就可以发送邮件。发送邮件因为 things3 有 2000 字的限制所以需要做一个分割防止被截断。func (a *tliTODO) Range(f func(string, string)) {whole : strings.Join(a.body, \n)if len(whole)  maxlen {f(a.title, whole)return}count : 1for i : 0; i  len(whole); i  maxlen {f(a.titlefmt.Sprintf( (%d), count), whole[i:min(imaxlen, len(whole))])count} }调了 smtp.SendMail 方法发送邮件。注意需要对中文字符做一个编码否则 things3 里会出现乱码。TODO 历史每次执行 todo 命令时都会保存到历史中同样是用 yaml 序列化。之后执行 log 命令时可将其读出来展示历史。每条记录前加一个”---“用于分离读的时候就可以读出多条记录rs : []record{} for {var r recorderr  d.Decode(r)if err ! nil {if err  io.EOF {break}log.Fatalf(corrupted ~/.tli_history file, err: %v, err)}rs  append(rs, r) }cobra 命令行这是一个比较常用的库了用于写命令行工具。定义 init, log, todo 三个 command再定义一个 root command说明用法。总结总体来说这个项目比较简单不到 500 行但也能学到不少写工具软件的技巧之后写类似的工具时可以参考。使用 cobra 创建不同的命令。将配置文件保存到用户 home 目录下。如何从控制台接收用户的输入文本。使用 smtp.SendMail 发送邮件。参考资料[1]Things3: https://culturedcode.com/things/[2]tli: https://github.com/changkun/tli
http://www.hkea.cn/news/14303288/

相关文章:

  • 15年做哪个网站能致富遵义市建设局网站官网
  • 建网站需要学什么电子版证件照免费制作微信小程序
  • 建设部网站社保联网福建建筑人才网官网
  • 西安前端开发招聘wordpress seo 主题
  • 京东如何进行网站建设昆山做网站好的
  • 网站开发软件开发流程跨境电商个人可以做吗
  • 现代电子商务网站建设技术创建网站的目的
  • 网站开发基础知识中国住房和城乡建设部网站公文
  • 遵义网站开发哪家便宜任城网络推广教程
  • 怎么做农产品垂直网站个人网站备案注销
  • 做网站,图片显示不出来wordpress视频投票
  • 网站建设策划 优帮云怎样做企业宣传推广
  • 网站建设项目策划书做网站老板不发工资我拿尾款
  • 嘉兴高端建站公司做企业网站所需要的资料
  • 现在建网站多少钱营销推广技巧
  • 如何跟进psd做网站山东建设厅网站
  • 如何去掉Wordpress访问网站浏览器网站大全
  • 校园兼职网站建设2022最新新闻素材
  • 内网门户网站网站备案接入ip
  • 网站制作用什么语言永久免费网站系统
  • 中山网站建设哪家强注册公司如何提供注册地址
  • 小说网站开发技术实现做的视频发到哪个网站
  • 事业单位门户网站开发php网站权限设置
  • 宁波网站推广公司价格教育中介公司网站建设费用
  • 秘鲁网站后缀谷歌seo引擎优化
  • 济南哪里有做网站的公司新网站在谷歌上面怎么做推广
  • 做ppt的模板的网站有哪些市场推广和销售的区别
  • 查看网站是什么语言做的客户引流推广方案
  • 共和网站建设公司wordpress 建商城
  • 自己做的网站如何上首页wordpress页头导航类目没有链接