Cabrite 发布的文章

杂说

MWeb 是一个 Markdown 写作的、记笔记的软件,而且功能很强大。具体介绍看官网吧!博主一直用这个写博客、记笔记,很方便哦。

技巧干货

在 MWeb 软件写完文章,你可以直接使用本软件的集成的一键发布功能,轻轻松松实现文章的发布。

  • 首先找到 Metaweblog API 这个选项
  • 在下面这张图中填写你博客的后台的账号密码,以及 API 地址。
  • API 地址说明下:如果你的博客开启了伪静态也就是说不会有index.php的话,你就填写
  • http://xxxx.com/action/xmlrpc //xxxx.com就是你的域名
  • 如果你的博客没有开启伪静态的话,就要填写如下地址:
  • http://xxxx.com/index.php/action/xmlrpc //xxxx.com就是你的域名
  • 如果你还是不懂有没有伪静态的话,你就打开博客首页,右键显示源代码: 找到 标签,如下图,将那个地址填在 API 地址中就 OK 啦。
  • 验证通过后,第二个图中红色框中的文字会自动填上让你核对的啦。

MWeb 是专业的 Markdown 写作、记笔记、静态博客生成软件,目前已支持 Mac,iPad 和 iPhone。MWeb 有以下特色:

软件本身:

  • 使用原生的 macOS 技术打造,追求与系统的完美结合。
  • 原则上,首先是追求界面简洁和高性能,然后才是强大易用,功能全面。

Markdown 语法:

  • 使用 Github Flavored Markdown 语法,简称 GFM 语法。
  • 支持表格、TOC、LaTeX、代码块、任务列表、脚注等。
  • 画图库支持 mermaid, viz, echarts, plantuml, sequence, flow。

Markdown 辅助:

  • 支持截图并粘贴、复制并粘贴、拖拽等方式插入图片并直接显示在编辑器内。
  • 在兼容 Markdown 语法的情况下支持设置图片宽度。
  • 好用的表格插入和 LaTeX 书写辅助。

Markdown 输出:

  • 支持导出为图片、HTML、Epub、PDF、RTF、Docx。
  • 支持发布到 Wordrpess、支持 Metaweblog API 协议的服务、Wordpress.com、印象笔记(Evernote)、Blogger、Medium、Tumblr。
  • 图片上传服务(图床)支持 Google Photos、Imgur、七牛云、又拍云和自定义的图床服务。

Markdown 笔记:

  • 强大的文档库支持分类树和标签管理文档,文档可归类于多个分类,可以把分类整个导出为 Epub、PDF 和生成静态网站。非常合适用于笔记、个人知识收集、管理和输出。
  • 快速笔记:随意增加笔记及图片等素材,支持以天为单位把增加的素材组合在一个文档内,方便整理及记录历史收集情况。
  • 快速搜索:目前已支持全局快捷键调出搜索。

外部 Markdown 文档:

  • 外部 Markdown 文档使用外部模式管理。外部模式使用目录树的方式编辑和管理你的 markdown 文档,还能很好的支持 gitbook、JekyII、hexo 等等编辑和图片插入。

MWeb 文档:

如果要更详细了解 MWeb,建议你一定要去看一下官网的帮助文档,网址为:https://zh.mweb.im/help.html。我们建议在使用文档库之前,一定要阅读一下 MWeb 文档库详细介绍 这篇文章,以便更好的使用文档库。

帮助我们改进 MWeb

如果你喜欢 MWeb,想让它变得更好,你可以:

  1. 推荐 MWeb,让更多的人知道。
  2. 给我们发反馈和建议:coderforart+2333@gmail.com
  3. 在 Mac App Store 上评价 (如果是在 MAS 上购买的话)。

  • 游戏公司经常看到策划修改配置表的时候各种冲突,各种饮用到老的文件,还有在导出到游戏引擎的时候与配置表内的内容不一致,差不多两年前意识到这个问题的时候策划们的解决方案差不多就几个,分人头每人负责几个表,有交叉的地方用svn的lock功能,为了保证同步就给配置表放在svn里面,用log去表示当前内容的版本与客户端是否一致。
  • 我个人认为之所以大家这样用,是因为暂时可以规避掉互相冲突的问题,也可能是因为公司策划内可修改配置文件的人不够多,没有碰到过灾难,大不了删掉重新导。
  • 还有一个方向觉得这是个问题的就是在持续集成构建包的时候,外网的某些继承模块拿不到内网的svn数据,导致得自己手动写shell去移动进客户端和服务器工程中,然后再去测试是否一致。
  • 当时想到的就是最好的情况就是实时修改数据,实时同步到所有的策划的显示器上,在打包的时候策划和程序不需要动手,直接从外网的数据源拉取,转换格式,放进包中,服务器也一样。当时找到的方案就是google doc/sheets,当时的实时程度是废了半天的劲找朋友给他装翻墙软件来测试,实时程度是被惊叹了,国内当时有个叫石墨文档的也做同样的内容,刚刚创业起步,做的不是很好,今天想到可以试试去拉取google sheets的内容去paser试试,就做了这么个玩意,最大的问题就是google的凭据认证的过程,有网络的影响,有权限,还有大小写的影响,最后都解决掉了,一条python命令可以拿到表格中的一列内容。
  • 其中依赖两个py的库分别是,oauth2client,google-api-python-client
  • 虽然我认为完全外网的开发环境和协作的方式很好,很多人也觉得不错,但是每人会用,大部分还是因为不安全,和稳定性,他们认为内网最安全,最稳定,毕竟可以拔网线。

035D572C-D5D6-41FC-A51D-E21CA5644426.png

AD2C2E62-F707-42D7-871F-07051915FF07.png

from __future__ import print_function
import httplib2
import os

from apiclient import discovery
from oauth2client import client
from oauth2client import tools
from oauth2client.file import Storage

try:
    import argparse
    flags = argparse.ArgumentParser(parents=[tools.argparser]).parse_args()
except ImportError:
    flags = None

# If modifying these scopes, delete your previously saved credentials
# at ~/.credentials/sheets.googleapis.com-python-quickstart.json
SCOPES = 'https://www.googleapis.com/auth/spreadsheets.readonly'
CLIENT_SECRET_FILE = 'client_secret.json'
APPLICATION_NAME = 'Google Sheets API Python Quickstart'


def get_credentials():
    """Gets valid user credentials from storage.

    If nothing has been stored, or if the stored credentials are invalid,
    the OAuth2 flow is completed to obtain the new credentials.

    Returns:
        Credentials, the obtained credential.
    """
    home_dir = os.path.expanduser('~')
    credential_dir = os.path.join(home_dir, '.credentials')
    if not os.path.exists(credential_dir):
        os.makedirs(credential_dir)
    credential_path = os.path.join(credential_dir,
                                   'sheets.googleapis.com-python-quickstart.json')
    print("client_secret path = ",credential_path)
    store = Storage(credential_path)
    credentials = store.get()
    if not credentials or credentials.invalid:
        flow = client.flow_from_clientsecrets(CLIENT_SECRET_FILE, SCOPES)
        flow.user_agent = APPLICATION_NAME
        if flags:
            credentials = tools.run_flow(flow, store, flags)
        else: # Needed only for compatibility with Python 2.6
            credentials = tools.run(flow, store)
        print('Storing credentials to ' + credential_path)
    return credentials

def main():
    """Shows basic usage of the Sheets API.

    Creates a Sheets API service object and prints the names and majors of
    students in a sample spreadsheet:
    https://docs.google.com/spreadsheets/d/1sEkLLL5kCKWkQQAoQW2Pxy0uh7jXmRTFIrTSr0NmNK4/edit
    """
    credentials = get_credentials()
    http = credentials.authorize(httplib2.Http())
    discoveryUrl = ('https://sheets.googleapis.com/$discovery/rest?'
                    'version=v4')
    service = discovery.build('sheets', 'v4', http=http,
                              discoveryServiceUrl=discoveryUrl)

    spreadsheetId = '1sEkLLL5kCKWkQQAoQW2Pxy0uh7jXmRTFIrTSr0NmNK4'
    rangeName = 'test!A:A'
    result = service.spreadsheets().values().get(
        spreadsheetId=spreadsheetId, range=rangeName).execute()
    values = result.get('values', [])

    if not values:
        print('No data found.')
    else:
        print('B Cloumns:')
        for row in values:
            # Print columns A and E, which correspond to indices 0 and 4.
            if row[0]:
                print('%s' % (row[0]))


if __name__ == '__main__':
    main()

内聚的分类:

  • 偶然内聚
  • 逻辑内聚
  • 时间内聚
  • 过程内聚
  • 通信内聚
  • 顺序内聚
  • 功能内聚

耦合的分类:

  • 非直接耦合
  • 数据耦合
  • 标记耦合
  • 控制耦合
  • 外部耦合
  • 公共耦合
  • 内容耦合

1.平时遇到的技术问题
2.对特定业务的解决方案
3.被提问到的问题
4.影评,书评,游戏评论
5.新技术的学习
6.已知技术的教程
7.游戏引擎模块设计

8.导出xcode工程时的自动设置code sign等等配置文件和饮用framework