C_Meng PSNA

Never wait for the storm to pass, just dance in the rain.

0%

商业模式画布

商业模式定义:

商业模式描述了企业如何创造价值,传递价值和获取价值的基本原理

苹果iPod/iTunes商业模式案例

9个构造块详细说明

  1. CS:客户细分 customer segments
  2. VP:价值主张 value propositions
  3. CH:渠道通路 channel
  4. CR:客户关系 customer relationships
  5. R$: 收入来源 revenue streams
  6. KR:核心资源 key resources
  7. KA:关键业务 key activities
  8. KP:重要合作 key partnerships
  9. C$:成本结构 cost structure

这9个商业模式构造块组成了构建商业模式边界工具的基础,这个工具我们称之为商业模式画布(Business Model Canvas)

客户细分

划分依据:

  • 满足需求的产品服务
  • 分销渠道
  • 类型关系
  • 盈利能力
  • 客户的提供物

价值主张

例子:新颖、性能、定制化、成分削减、风险抑制、可达性等

渠道通路

客户关系

客户关系被以下几个动机所驱动:

  • 客户获取
  • 客户维系
  • 提升销售额(追加销售)

例子:个人助理、自助服务、社区、共同创作等

收入来源

一个商业模式可以包含两种不同类型的收入来源:

  1. 通过客户一次性支付获得的交易收入
  2. 经常性收入来自客户为获得价值主张与售后服务而持续支付的费用

获取收入的方式:资产销售、使用收费、订阅收费、租赁收费、授权收费等

核心资源

核心资源用来描绘让商业模式有效运转所必须的最重要因素

核心资源分类:

  • 实体资产
  • 知识资产
  • 人力资源
  • 金融资源

关键业务

关键业务分类:

  • 制造产品
  • 问题解决
  • 平台/网络

重要合作

合作关系可以分为以下四类:

  1. 在非竞争者之间的战略联盟关系
  2. 竟合:在竞争者之间的战略合作关系
  3. 为开发新业务而构建的合资关系
  4. 为确保可靠供应的购买方——供应商关系

以下三种动机有助于创建合作关系:

  1. 商业模式的优化和规模经济的运用
  2. 风险和不确定性的降低
  3. 特定资源和业务的获取

成本结构

两种商业模式成本结构类型:

  1. 成本驱动
  2. 价值驱动

成本结构有以下特点:

  • 固定成本
  • 可变成本
  • 规模经济
  • 范围经济

第三方邮箱客户端(outlook、foxmail、各种手机自带邮箱APP等)可以选择IMAP或者POP3两种协议中的任意一种进行设置,设置方法如下:

客户端使用IMAP协议设置方法:

接收邮件服务器:imap.zju.edu.cn 端口:143  使用SSL端口:993

发送邮件服务器:smtp.zju.edu.cn 端口:25   使用SSL端口:994

  

客户端使用POP3协议设置方法:

接收邮件服务器:pop3.zju.edu.cn 端口:110  使用SSL端口:995

发送邮件服务器:smtp.zju.edu.cn 端口:25   使用SSL端口:994

note: 如果一种不行就试一下另一种,再不行重启试试
怎么都不行的时候可能是网络问题,本人的mac用实验室的wifi可以上网却连不上邮箱,但是手机热点就可以

Finder(访达)在最前端的时候,三个键一起按下即可

Shift + Command + .

注意:最后一个是点不是逗号

方法

使用包\usepackage{longtable},然后使用\begin{longtable}...\end{longtable}代替tabular即可

注意**不能在一个表格上同时使用table和longtable**,比如\begin{table}\begin{longtable}...\end{longtable}\end{table},这会使longtable无法分页。

栗子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
\begin{center}
\begin{longtable}{p{2.4cm}p{5.4cm}p{3.6cm}}
\caption{服务模式的语义解释和案例}\\
\label{revenuepatternexplain}\\
\hline\noalign{\smallskip}
名称 & 语义解释 & 案例说明 \\
\hline
名称 & 语义解释 & 案例说明 \\
名称 & 语义解释 & 案例说明 \\
名称 & 语义解释 & 案例说明 \\
名称 & 语义解释 & 案例说明 \\
名称 & 语义解释 & 案例说明 \\
名称 & 语义解释 & 案例说明 \\
名称 & 语义解释 & 案例说明 \\
名称 & 语义解释 & 案例说明 \\
名称 & 语义解释 & 案例说明 \\
名称 & 语义解释 & 案例说明 \\
名称 & 语义解释 & 案例说明 \\
名称 & 语义解释 & 案例说明 \\
名称 & 语义解释 & 案例说明 \\
名称 & 语义解释 & 案例说明 \\
名称 & 语义解释 & 案例说明 \\
名称 & 语义解释 & 案例说明 \\
名称 & 语义解释 & 案例说明 \\
名称 & 语义解释 & 案例说明 \\
名称 & 语义解释 & 案例说明 \\
名称 & 语义解释 & 案例说明 \\
名称 & 语义解释 & 案例说明 \\
名称 & 语义解释 & 案例说明 \\
名称 & 语义解释 & 案例说明 \\
名称 & 语义解释 & 案例说明 \\
名称 & 语义解释 & 案例说明 \\
名称 & 语义解释 & 案例说明 \\
名称 & 语义解释 & 案例说明 \\
名称 & 语义解释 & 案例说明 \\
名称 & 语义解释 & 案例说明 \\
\hline
\end{longtable}
\end{center}

问题

使用spring的spbasic.bst模板,结果引文是按照作者名字的字母顺序排序的。

方法

  1. 使用任意一款文本编辑器打开spbasic.bst文件

  2. 找到其中所有的SORT

  3. 修改为%SORT即可

    注意大小写,spbasic.bst中应有两处

如果未生效,可能是bst编译的文件没有更新,试着把bbl文件删除,然后重新编译一下

解释

  1. bst文件什么也不写的话默认是按照引用顺序来排序的
  2. 很多模板中有一部分关于排序的函数,使其按照作者名字字母顺序排序
  3. SORT行的作用就是调用这些方法,注释掉之后就变成了默认排序方法

这是一篇W3school Schema 教程学习笔记。

概要

XML Schema 是基于 XML 的 DTD 替代者。XML Schema 描述 XML 文档的结构。XML Schema 语言也称作 XML Schema 定义(XML Schema Definition,XSD)。

简单类型

定义简易元素的语法:

1
<xs:element name="xxx" type="yyy"/>

定义简易属性的语法:

1
<xs:attribute name="xxx" type="yyy"/>

数据类型的限定

限定 描述
enumeration 定义可接受值的一个列表
fractionDigits 定义所允许的最大的小数位数。必须大于等于0。
length 定义所允许的字符或者列表项目的精确数目。必须大于或等于0。
maxExclusive 定义数值的上限。所允许的值必须小于此值。
maxInclusive 定义数值的上限。所允许的值必须小于或等于此值。
maxLength 定义所允许的字符或者列表项目的最大数目。必须大于或等于0。
minExclusive 定义数值的下限。所允许的值必需大于此值。
minInclusive 定义数值的下限。所允许的值必需大于或等于此值。
minLength 定义所允许的字符或者列表项目的最小数目。必须大于或等于0。
pattern 定义可接受的字符的精确序列。
totalDigits 定义所允许的阿拉伯数字的精确位数。必须大于0。
whiteSpace 定义空白字符(换行、回车、空格以及制表符)的处理方式。

限定的例子

对值的限定

下面的例子定义了带有一个限定且名为 “age” 的元素。age 的值不能低于 0 或者高于 120:

1
2
3
4
5
6
7
8
9
10
<xs:element name="age">

<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="120"/>
</xs:restriction>
</xs:simpleType>

</xs:element>

对一组值的限定

如需把 XML 元素的内容限制为一组可接受的值,我们要使用枚举约束(enumeration constraint)。
下面的例子定义了带有一个限定的名为 “car” 的元素。可接受的值只有:Audi, Golf, BMW:

1
2
3
4
5
6
7
8
9
10
11
<xs:element name="car">

<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="Audi"/>
<xs:enumeration value="Golf"/>
<xs:enumeration value="BMW"/>
</xs:restriction>
</xs:simpleType>

</xs:element>

对一系列值的限定

如需把 XML 元素的内容限制定义为一系列可使用的数字或字母,我们要使用模式约束(pattern constraint)。
下面的例子定义了带有一个限定的名为 “letter” 的元素。可接受的值只有小写字母 a - z 其中的一个:

1
2
3
4
5
6
7
8
9
<xs:element name="letter">

<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[a-z]"/>
</xs:restriction>
</xs:simpleType>

</xs:element>

下一个例子定义了带有一个限定的名为 “initials” 的元素。可接受的值是大写字母 A - Z 其中的三个:

1
2
3
4
5
6
7
8
9
<xs:element name="initials">

<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[A-Z][A-Z][A-Z]"/>
</xs:restriction>
</xs:simpleType>

</xs:element>

下一个例子也定义了带有一个限定的名为 “initials” 的元素。可接受的值是大写或小写字母 a - z 其中的三个:

1
2
3
4
5
6
7
8
9
<xs:element name="initials">

<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[a-zA-Z][a-zA-Z][a-zA-Z]"/>
</xs:restriction>
</xs:simpleType>

</xs:element>

下一个例子定义了带有一个限定的名为 “choice 的元素。可接受的值是字母 x, y 或 z 中的一个:

1
2
3
4
5
6
7
8
9
<xs:element name="choice">

<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[xyz]"/>
</xs:restriction>
</xs:simpleType>

</xs:element>

下一个例子定义了带有一个限定的名为 “prodid” 的元素。可接受的值是五个阿拉伯数字的一个序列,且每个数字的范围是 0-9:

1
2
3
4
5
6
7
8
9
<xs:element name="prodid">

<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:pattern value="[0-9][0-9][0-9][0-9][0-9]"/>
</xs:restriction>
</xs:simpleType>

</xs:element>

对一系列值的其他限定

下面的例子定义了带有一个限定的名为 “letter” 的元素。可接受的值是 a - z 中零个或多个字母:

1
2
3
4
5
6
7
8
9
<xs:element name="letter">

<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="([a-z])*"/>
</xs:restriction>
</xs:simpleType>

</xs:element>

下面的例子定义了带有一个限定的名为 “letter” 的元素。可接受的值是一对或多对字母,每对字母由一个小写字母后跟一个大写字母组成。举个例子,”sToP”将会通过这种模式的验证,但是 “Stop”、”STOP” 或者 “stop” 无法通过验证:

1
2
3
4
5
6
7
8
9
<xs:element name="letter">

<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="([a-z][A-Z])+"/>
</xs:restriction>
</xs:simpleType>

</xs:element>

下面的例子定义了带有一个限定的名为 “gender” 的元素。可接受的值是 male 或者 female:

1
2
3
4
5
6
7
8
9
<xs:element name="gender">

<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="male|female"/>
</xs:restriction>
</xs:simpleType>

</xs:element>

下面的例子定义了带有一个限定的名为 “password” 的元素。可接受的值是由 8 个字符组成的一行字符,这些字符必须是大写或小写字母 a - z 亦或数字 0 - 9:

1
2
3
4
5
6
7
8
9
<xs:element name="password">

<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[a-zA-Z0-9]{8}"/>
</xs:restriction>
</xs:simpleType>

</xs:element>

对空白字符的限定

如需规定对空白字符(whitespace characters)的处理方式,我们需要使用 whiteSpace 限定。
下面的例子定义了带有一个限定的名为 “address” 的元素。这个 whiteSpace 限定被设置为 “preserve”,这意味着 XML 处理器不会移除任何空白字符:

1
2
3
4
5
6
7
8
9
<xs:element name="address">

<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="preserve"/>
</xs:restriction>
</xs:simpleType>

</xs:element>

这个例子也定义了带有一个限定的名为 “address” 的元素。这个 whiteSpace 限定被设置为 “replace”,这意味着 XML 处理器将移除所有空白字符(换行、回车、空格以及制表符):

1
2
3
4
5
6
7
8
9
<xs:element name="address">

<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="replace"/>
</xs:restriction>
</xs:simpleType>

</xs:element>

这个例子也定义了带有一个限定的名为 “address” 的元素。这个 whiteSpace 限定被设置为 “collapse”,这意味着 XML 处理器将移除所有空白字符(换行、回车、空格以及制表符会被替换为空格,开头和结尾的空格会被移除,而多个连续的空格会被缩减为一个单一的空格):

1
2
3
4
5
6
7
8
9
<xs:element name="address">

<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
</xs:restriction>
</xs:simpleType>

</xs:element>

对长度的限定

如需限制元素中值的长度,我们需要使用 length、maxLength 以及 minLength 限定。
本例定义了带有一个限定且名为 “password” 的元素。其值必须精确到 8 个字符:

1
2
3
4
5
6
7
8
9
<xs:element name="password">

<xs:simpleType>
<xs:restriction base="xs:string">
<xs:length value="8"/>
</xs:restriction>
</xs:simpleType>

</xs:element>

这个例子也定义了带有一个限定的名为 “password” 的元素。其值最小为 5 个字符,最大为 8 个字符:

1
2
3
4
5
6
7
8
9
10
<xs:element name="password">

<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="5"/>
<xs:maxLength value="8"/>
</xs:restriction>
</xs:simpleType>

</xs:element>

最常用的类型是:

  • xs:string
  • xs:decimal
  • xs:integer
  • xs:boolean
  • xs:date
  • xs:time

属性的默认值和固定值

1
2
<xs:attribute name="lang" type="xs:string" default="EN"/>
<xs:attribute name="lang" type="xs:string" fixed="EN"/>

可选和必选

1
<xs:attribute name="lang" type="xs:string" use="required"/>

将以下脚本保存到本地,命名为uninstall-pandoc.pl

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#!/usr/bin/perl

# Script to remove all files installed by the macOS pandoc installer
# and unregister the package. Modified from a script contributed
# by Daniel T. Staal.

use warnings;
use strict;

use File::Spec;

# The main info: this is the list of files to remove and the pkg_id.
my $pkg_id = 'net.johnmacfarlane.pandoc';

# Find which, if any, volume Pandoc is installed on.
my $volume;

# First check /, then other volumes on the box.
my $cur_test = `pkgutil --pkgs=$pkg_id`;
if ( $cur_test =~ m/$pkg_id/ ) {
$volume = '/';
} else {
opendir( my $dh, '/Volumes' ) or die "Can't list Volumes: $!\n";
foreach my $dir ( readdir($dh) ) {
next if $dir =~ m/^\./; # Skip dotfiles.

my $path = File::Spec->rel2abs( $dir, '/Volumes' );
next if !( -d $path ); # Skip anything that isn't a directory.

my $cur_test = `pkgutil --pkgs=$pkg_id --volume '$path'`;
if ( $cur_test =~ m/$pkg_id/ ) {
$volume = $path;
last;
}
}
}

die "Pandoc not installed.\n" if !( defined($volume) );

# Get the list of files to remove.
my @pkg_files = `pkgutil --volume '$volume' --only-files --files '$pkg_id'`;
@pkg_files = map { chomp; File::Spec->rel2abs($_, $volume) } @pkg_files;

# Confirm uninistall with the user.
print "The following files will be deleted:\n\n";
print join("\n", @pkg_files);
print "\n\n";
print "Do you want to proceed and uninstall pandoc (Y/N)?";
my $input = <STDIN>;

if ($input =~ m/^[Yy]/) {

# Actually remove the files.
foreach my $file (@pkg_files) {
if ( -e $file ) {
if ( system( 'sudo', 'rm', $file ) == 0 ) {
warn "Deleted $file\n";
} else {
warn "Unable to delete $file: $?\n";
die "Aborting Uninstall.\n";
}
} else {
warn "File $file does not exist. Skipping.\n";
}
}

# Clean up the install.
if (system('sudo', 'pkgutil', '--forget', $pkg_id, '--volume', $volume) != 0) {
die "Unable to clean up install: $?\n";
}

} else {

print "OK, aborting uninstall.\n";
exit;
}

print "Pandoc has been successfully uninstalled.\n";
exit;

在uninstall-pandoc.pl目录下运行

perl uninstall-pandoc.pl

附:官方链接和截图

官方链接:http://pandoc.org/installing.html#macos

截图:

安装jupyter

pip install ipython
pip install jupyter

生成jupyter配置文件

jupyter notebook –generate-config

1
2
#: jupyter notebook --generate-config
Writing default config to: /home/xm/.jupyter/jupyter_notebook_config.py

自动生成密码

jupyter notebook password

1
2
3
4
5
#: jupyter notebook password
Enter password: # 这里输入密码不会显示字符的
Verify password:
[NotebookPasswordApp] Wrote hashed password to /home/xm/.jupyter/jupyter_notebook_config.json
# 密码已经被加密记录到这个文件中了

获取密码

cat /home/xm/.jupyter/jupyter_notebook_config.json

1
2
3
4
5
6
#: cat /home/xm/.jupyter/jupyter_notebook_config.json
{
"NotebookApp": {
"password": "这是你的密码,一整段都复制 下来"
}
}

修改配置文件

vim /home/xm/.jupyter/jupyter_notebook_config.py

1
2
3
4
5
#懒得找对应配置项的朋友,直接把这四项配置写到文件开头就可以了
c.NotebookApp.ip = '*'
c.NotebookApp.password = 'sha:ce...刚才复制的那个密文'
c.NotebookApp.open_browser = False
c.NotebookApp.port = 8888 #可自行指定一个端口,访问时使用该端口

命令

df -h

示例

1
2
3
4
5
6
7
8
9
10
11
12
USER_MANE@PC_NAME:~$ df -h
Filesystem Size Used Avail Use% Mounted on
udev 16G 0 16G 0% /dev
tmpfs 3.2G 26M 3.2G 1% /run
/dev/sda1 198G 151G 38G 81% /
tmpfs 16G 4.0K 16G 1% /dev/shm
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 16G 0 16G 0% /sys/fs/cgroup
/dev/sdb1 917G 290G 581G 34% /SATA
tmpfs 3.2G 8.0K 3.2G 1% /run/user/1004
tmpfs 3.2G 0 3.2G 0% /run/user/1010
tmpfs 3.2G 0 3.2G 0% /run/user/1003