① 如何基于七牛云存储+Markdown编辑器做静态博客
首先,在七牛上创建一个 bucket,我们假设名字叫 qiniu。上传一个样式单文件 stylesheet.css。假设关联的域名叫 open.qiniudn.com,那么这个样式单可以通过 http://open.qiniudn.com/stylesheet.css 访问到。
其次,为 qiniu 这个空间设置样式分隔符为 '.'。这可以通过 qboxrsctl separator qiniu '.' 来完成。
最后,为 qiniu 这个空间设置一个名为 html 的数据处理样式。命令为:
qboxrsctl style qiniu html '$0.md?md2html/0/css/='
其中,= 是对 http://open.qiniudn.com/stylesheet.css 进行 UrlsafeBase64Encode 后的结果。
如此,你上传任何一个 markdown 文件(比如 http://open.qiniudn.com/key-value-storage.md ),都可以通过对应的 html 后缀文件访问(比如 http://open.qiniudn.com/key-value-storage.html )。
如果你不希望让别人可以看到 markdown 文件的原始内容,可以将 bucket 设置为保护:
qboxrsctl protected qiniu 1
② 怎样用Markdown排版微信公众号
这款编辑器排版微信公众号文章,只需要点击两个按键。
好了,进入微信公众平台写作区域,粘贴一下。
这就是你在编辑器里面看到的排版效果了。
③ 什么是有道云笔记,有什么作用怎么用
一、有道云笔记(原有道笔记)是2011年6月28日网易旗下的有道推出的个人与团队的线上资料库。有道云笔记采用了增量式同步技术,即每次只同步修改的内容而不是整个笔记。
二、有道云笔记的作用:
1、文档管理,高效记录
文字/图片/语音/手写/OCR/Markdown等多种形式,随时随地记录你的精彩。全面兼容office、PDF等办公常用文档,无需下载即可查看编辑。
2、收藏
支持微信、微博、链接收藏和网页剪报等多种形式,优秀内容一键保存永不丢失,搭建属于你的知识体系。
3、OCR扫描
满足文档、手写、名片等多场景需求,特别支持PDF转Word功能,无需繁琐操作,一键轻松搞定。
4、多端同步,随时查看
PC/iPhone/Android/web/iPad/Mac/Wap……随时备份,云端同步,重要资料还可加密保存。 无惧断网/断电困扰,任何情况下都能轻松查阅。
5、轻松分享,协同处理
文档一键分享微信、QQ、微博、邮件等平台。团队协作修改,实时处理更高效。
三、用法:
1、首先注册上之后就可以实现云端的共享了,记笔记不用担心断电没有保存了。会隔一段时间就自动保存到云端。
(3)云存储markdown图片扩展阅读:
软件特点
1、纷繁笔记轻松管理——分类整理笔记,高效管理个人知识,快速搜索,分类查找,安全备份云端笔记,存储永不丢失的珍贵资料。
2、文件同步自动完成——自动同步,无需拷贝下载:支持图片及文档类附件,无限增长的大存储空间,轻松实现多地点办公。
3、路上创意随手记录——随时随地记录一切趣事和想法:轻松与电脑双向同步,免去文件传输烦恼,对会议白板进行拍照,有道笔记将对照片进行智能优化,轻松保存会议结果。
④ 如何使用七牛Python SDK写一个同步脚本及使
七牛云存储的 Python 语言版本 SDK(本文以下称 Python-SDK)是对七牛云存储API协议的一层封装,以提供一套对于 Python 开发者而言简单易用的开发工具。Python 开发者在对接 Python-SDK 时无需理解七牛云存储 API 协议的细节,原则上也不需要对 HTTP 协议和原理做非常深入的了解,但如果拥有基础的 HTTP 知识,对于出错场景的处理可以更加高效。
最近刚搭了个markdown静态博客,想把图片放到云存储中。
经过调研觉得七牛可以满足我个人的需求,就选它了。
要引用图片就要先将图片上传到云上。
虽然七牛网站后台可以上传文件,但每次上传都需要先登录,然后选择图片,设置连接地址,才能上传。
这个过程有些繁琐,所以我便想用七牛云提供的SDK写个一同步工具,方便增量同步文件。
有了这个想法,就马上行动。花了大概一个上午的时间,总算把这个工具给写出来,并放到GitOSC和github上。
?
#!/usr/bin/env python#-*- coding:utf-8 -*-## AUTHOR = "heqingpan"# AUTHOR_EMAIL = "[email protected]"# URL = "http://git.oschina.net/hqp/qiniu_sync"import qiniufrom qiniu import Authfrom qiniu import BucketManagerimport osimport reaccess_key = ''secret_key = ''bucket_name = ''bucket_domain = ''q = Auth(access_key, secret_key)bucket = BucketManager(q)basedir=os.path.realpath(os.path.dirname(__file__))filename=__file__ignore_paths=[filename,"{0}c".format(filename)]ignore_names=[".DS_Store",".git",".gitignore"]charset="utf8"diff_time=2*60def list_all(bucket_name, bucket=None, prefix="", limit=100):rlist=[]if bucket is None:bucket = BucketManager(q)marker = Noneeof = Falsewhile eof is False:ret, eof, info = bucket.list(bucket_name, prefix=prefix, marker=marker, limit=limit)marker = ret.get('marker', None)for item in ret['items']:rlist.append(item["key"])if eof is not True:# 错误处理#print "error"passreturn rlistdef get_files(basedir="",fix="",rlist=None,ignore_paths=[],ignore_names=[]):if rlist is None:rlist=[]for subfile in os.listdir(basedir):temp_path=os.path.join(basedir,subfile)tp=os.path.join(fix,subfile)if tp in ignore_names:continueif tp in ignore_paths:continueif os.path.isfile(temp_path):rlist.append(tp)elif os.path.isdir(temp_path):get_files(temp_path,tp,rlist,ignore_paths,ignore_names)return rlistdef get_valid_key_files(subdir=""):basedir=subdir or basedirfiles = get_files(basedir=basedir,ignore_paths=ignore_paths,ignore_names=ignore_names)return map(lambda f:(f.replace("\","/"),f),files)def sync():qn_keys=list_all(bucket_name,bucket)qn_set=set(qn_keys)l_key_files=get_valid_key_files(basedir)k2f={}update_keys=[]u_count=500u_index=0for k,f in l_key_files:k2f[k]=fstr_k=kif isinstance(k,str):k=k.decode(charset)if k in qn_set:update_keys.append(str_k)u_index+=1if u_index > u_count:u_index-=u_countupdate_file(k2f,update_keys)update_keys=[]else:# uploapload_file(k,os.path.join(basedir,f))if update_keys:update_file(k2f,update_keys)print "sync end"def update_file(k2f,ulist):ops=qiniu.build_batch_stat(bucket_name,ulist)rets,infos = bucket.batch(ops)for i in xrange(len(ulist)):k=ulist[i]f=k2f.get(k)ret=rets[i]["data"]size=ret.get("fsize",None)put_time = int(ret.get("putTime")/10000000)local_size=os.path.getsize(f)local_time=int(os.path.getatime(f))if local_size==size:continueif put_time >= local_time - diff_time:# is newcontinue# updateupload_file(k,os.path.join(basedir,f))def upload_file(key,localfile):print "upload_file:"print keytoken = q.upload_token(bucket_name, key)mime_type = get_mime_type(localfile)params = {'x:a': 'a'}progress_handler = lambda progress, total: progressret, info = qiniu.put_file(token, key, localfile, params, mime_type, progress_handler=progress_handler)def get_mime_type(path):mime_type = "text/plain"return mime_typedef main():sync()if __name__=="__main__":main()这个同步脚本支持批量比较文件,差异增量更新、批量更新。
使用方式
安装七牛Python SDK
?
1pip install qiniu填写脚本文件(qiniusync.py)的配置信息
?
123access_key = ''secret_key = ''bucket_name = ''注册后可以拿到对应的信息
将脚本文件(qiniusync.py)拷贝到待同步根目录
运行脚本
?
1python qiniusync.py后记
写完提交之后才发现,七牛已经提供相应的工具,我这个算是重复造轮子吧。
既然已经写,就发出来,当做熟悉一下七牛的SDK也不错,说不定以后还能用的上。
七牛云存储Python SDK使用教程
本教程旨在介绍如何使用七牛的Python SDK来快速地进行文件上传,下载,处理,管理等工作。
安装
首先,要使用Python的SDK必须要先安装。七牛的Python SDK是开源的,托管在Github上面,项目地址为https://github.com/qiniu/python-sdk。
安装的方式可以如项目的说明上所说,用 pip install qiniu 。当然也可以直接 clone 一份源代码下来直接使用。我一般喜欢直接 clone 源代码,这样的话,如果要对SDK做一些改动也是十分容易的。
最新版本的Python SDK需要依赖 requests 库,所以要提前安装好。安装方式当然也可以用 pip install requests 。
开发环境
Python的开发环境有很多种选择,如果喜欢文本的方式,比如vim,emacs,sublime text等都是很好的选择,如果你喜欢IDE,那么最流行的莫过于 PyCharm 了。 PyCharm 的最新版本到这里下载。
Access Key和Secret Key
我们知道七牛云存储的权限校验机制基于一对密钥,分别称为 Access Key 和 Secret Key 。其中 Access Key 是公钥, Secret Key 是私钥。这一对密钥可以从七牛的后台获取。
小试牛刀
好了,做了上面的这些准备工作,我们就去上传一个简单的文件,练练手。
?
1234python#coding=utf-8__author__ = 'jemy''''本例演示了一个简单的文件上传。
这个例子里面,sdk根据文件的大小选择是Form方式上传还是分片上传。
?
'''import qiniuaccessKey = "<Your Access Key>"secretKey = "<Your Secret Key>"#解析结果def parseRet(retData, respInfo):if retData != None:print("Upload file success!")print("Hash: " + retData["hash"])print("Key: " + retData["key"])#检查扩展参数for k, v in retData.items():if k[:2] == "x:":print(k + ":" + v)#检查其他参数for k, v in retData.items():if k[:2] == "x:" or k == "hash" or k == "key":continueelse:print(k + ":" + str(v))else:print("Upload file failed!")print("Error: " + respInfo.text_body)#无key上传,http请求中不指定key参数def upload_without_key(bucket, filePath):#生成上传凭证auth = qiniu.Auth(accessKey, secretKey)upToken = auth.upload_token(bucket, key=None)#上传文件retData, respInfo = qiniu.put_file(upToken, None, filePath)#解析结果parseRet(retData, respInfo)def main():bucket = "if-pbl"filePath = "/Users/jemy/Documents/jemy.png"upload_without_key(bucket, filePath)if __name__ == "__main__":main()运行结果为:
Upload file success!
Hash: Fp0XR6tM4yZmeiKXw7eZzmeyYsq8
Key: Fp0XR6tM4yZmeiKXw7eZzmeyYsq8
从上面我们可以看到,使用七牛的Python SDK上传文件的最基本的步骤是:
1.生成上传凭证
2.上传文件
3.解析回复结果
⑤ 有道云笔记 markdown怎么插入excel附件
打开有道云笔记客户端,点击左上角"新建/上传"
在弹出的菜单中点击"新建Markdown"
击新建的Markdown笔记,修改笔记的标题
在笔记正文左侧黑色输入框内输入 
(注释:E:YouDaoTest\clock.jpg 是需要导入到笔记中的本地图片的存储路径)此时本地图片插入完成。
笔记正文左侧黑色输入框内输入 
(注释:http://note.you.com/favicon.ico 是需要导入到笔记中的网络图片的URL)此时网络图片插入完成。
⑥ 求推荐一款好用的markdown编辑器!
Typora for Mac是一款运行在Mac平台上的Markdown编辑器,为读者和作家提供无缝体验,让您更加专注于内容本身。Typora Mac版不会将用户所选的文本分成源代码和预览两部分,删除了预览窗口,模式切换器,降价源代码的语法符号以及所有其他不必要的干扰。
typora mac中文版安装教程
pkg安装包下载完成后打开,欢迎使用”Typora“安装器,点击【继续】默认安装即可。
Typora for Mac官方介绍
Typora为读者和作家提供无缝体验。它删除了预览窗口,模式切换器,降价源代码的语法符号以及所有其他不必要的干扰,将其替换为实时预览,以帮助您专注于内容本身。
⑦ 有什么好支持云存储的 markdown 编辑器吗
坚果云markdown界面简洁、无内置广告、免费且多平台(支持iOS、Android、Web等多个平台)随时可用的Markdown文本编辑器。上传的Markdown文件可以一键转存至坚果云中进行备份。坚果云的云存储服务,帮助您高效管理文稿文件,从此无需再担心文件被误改误删、创作内容丢失等情况。
⑧ 有道云笔记的Markdown功能怎么用
你好,现在的有道云笔记仅在云协作中支持markdown,云笔记即将在后续的版本中支持,现在还不能使用。
Markdown具有一系列衍生版本,用于扩展Markdown的功能(如表格、脚注、内嵌HTML等等),这些功能原初的Markdown尚不具备,它们能让Markdown转换成更多的格式,例如LaTeX,Docbook。Markdown增强版中比较有名的有Markdown Extra、MultiMarkdown、 Maruku等。