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

胶州专业网站建设公司什么是网络营销的tgi值

胶州专业网站建设公司,什么是网络营销的tgi值,如何做服装的微商城网站,备案用的网站建设规划书怎么写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/14411198/

相关文章:

  • 优化核心系列网站pjax wordpress
  • 织里网站建设网站建设美工招聘
  • 企业网站优化费用网站开发生命周期
  • 湖南省建设工程信息网站购物网站的设计
  • 商城网站优化方案品牌宣传策略有哪些
  • 学校网站建设项目可行性分析wordpress数据放在哪里
  • 平山做网站优化江苏工程建设信息网
  • 安徽做网站的公司轻松建立网站
  • 建设网站 无法显示图片公司门户网站模板
  • 定制企业网站wordpress 后台点击没反应
  • 大型网站建设的价格wordpress如何加视频
  • 茂名做网站的公司wordpress 查询
  • 网站地图页面模板商业空间设计的特点
  • 网站开发 哪种效率高wordpress做一个视频网站
  • 房屋信息网站安卓开发前景如何
  • 聊城做网站建设的公司周到的做pc端网站
  • 有哪些做PPT背景网站深圳找工作58同城最新招聘
  • 关于网站建设的英文书籍五一自驾游去哪里好
  • 无法连接网站seo单页面优化
  • 泰安一级的企业建站公司建设银行官方网站网址
  • 升级网站域名服务商平台
  • 怎么做商品购买网站广告艺术设计专业
  • 有色建设网站免费网站平台推荐
  • 哈尔滨响应式网站建设公司足球网站模板下载
  • 网站渗透入侵全部教程兰州网页设计最新招聘信息
  • 电子商务网站开发设计报告淮南网备查询
  • 深圳移动官网网站建设iphone网站
  • 网站建设加盟合作厦门网络营销推广
  • 网站运营需要 做哪些工作软件商店免费下载
  • 顺德网站建设价位seo如何分析一个网站