私有云源码
1. 极光消息推送私有云产品是什么
私有云产品是对于安全性要求更高,希望推送数据和系统存储在自己服务器的客户,及个性化需求需要定制开发的,性能更高要求的,或者想拥有自己推送平台的甚至要求源码授权二次开发的开发者,极光提供全功能的私有云解决方案。除此以外,极光推送还有短信补充,通过极光后台推送APP通知消息,对于一些重要又不能遗漏的信息可以调用极光短信的后台对未收到的客户端发送短信通知,保证消息的可靠性。
而且极光推送合理的推送能够激活用户,提高用户粘性,使用A/B分组测试的科学方法,根据测试反馈的结果,帮助开发者选择最优化的推送方案。现在极光推送还增加了极光推送安全包,为金融、新闻、政务及其他对推送安全要求极高的客户提供安全严谨、稳定可靠的信息推送解决方案
2. 源代码检测软件 漏洞多,开发怎么办
1、让开发修复;
2、使用安全防御服务,比如:创宇盾。有一项功能就是:虚拟补丁服务,采用协同防御的方式修复漏洞。
这样可以节省你们开发的时间。
3. 如何用windows系统搭建企业和个人私有云
第一步:预装软件。
ownCloud 内核是用php5写的,支持sqlite、MySQL、Oracle以及PostgreSQL等数据库。为了简单,我们将用MySQL数据库。在你的linux系统下你需要安装以下软件:
PHP 安装包:php5, php5-gd, php-xml- parser,php5-intl
数据库驱动:php5-mysql(如果你使用其他数据库,需要安装相应的数据库以及驱动)
Curl 安装包:curl, libcurl3, php5-curl
SMB 客户端:smbclient (这个用来挂载windows共享文件夹的)
Web 服务器:apache2
如果你的Linux是基于Debian的,你可以运行下面的命令一键安装所有的软件:
$ sudo apt-get install apache2 php5 php5-gd php-xml-parser php5-intl php5-sqlite php5-mysql smbclient curl libcurl3 php5-curl mysql-server
第二步:安装ownCloud——设置web 根目录。
从http://owncloud.org/releases/ 网站上下载最新版的ownCloud,对于本教程,我们使用owncloud-4.5.6 版本。到此,我们需要设置web服务器的根目录,对于基于Debian发行版的Linux系统,根目录为/var/www,将ownCloud安装包解压到此目录下。如下命令:
$ tar xjf owncloud-4.5.6.tar.bz2
$ cp -r -v owncloud/ /var/www/guohlcloud/
在我们的例子中,以guohlcloud作为安装的根目录。
OwnCloud在安装的过程中需要对一些目录有写的权限,为此,web服务器用户(www-data对于基于Debian的系统)必须要拥有apps、data、config目录的权限。运行以下命令完成:
$ cd /var/www/ludcloud
#这个文件夹不存在,但在安装过程中需要,应该先建立。
$ sudo mkdir data/
$ sudo chown -R www-data:www-data data
$ sudo chown -R www-data:www-data config
$ sudo chown -R www-data:www-data apps
第三步:安装ownCloud——配置web服务器。
这一步我们要为 ownCloud配置Apache服务器,OwnCloud需要启用 Apache上 .htaccess 文件,.htaccess文件(或者"分布式配置文件")提供了针对目录改变配置的方法。为了启用web服务器上的.htaccess,可以通过 Apache配置文件(基于Den系统是/etc/apache2/sites-enabled/000-default)的 AllowOverride指令来设置。
<Directory/var/www/>
Options Indexes
FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
下一步我们需要启动Apache的mod_rewrite模块,mod_rewrite模块提供了实时地将访问者请求的静态URL地址映射为动态查询字符串的一种规则。运行下面的命令来启动这个模块:
$ sudo a2enmod rewrite
$ sudo a2enmod headers
一旦你使能了这个必要的模块,你可以重启apache服务来使之生效:
$ sudo service apache2 restart
第四步:安装OwnCloud——安装运行。
在浏览器中打开 http://localhost/ludcloud ,你会被引导进入ownCloud的安装界面。
首先你要建立一个管理员帐号,输入必填的用户名和密码就完成了。为了配置数据库,点“Advanced” 选择MySQL,然后输入MySQL的数据库名、用户名和密码。
点“Finish” 完成安装过程。
下图为我安装完成登录的主界面(红色框为设置项):
第五步:使用桌面同步客户端同步文件。
你可以使用桌面同步客户端同步不同电脑、设备上的文件,适用于Linux、OS X 和 Windows系统。跟ownCloud一样,桌面同步客户端也是开源的。
例如Ubuntu下,你可以通过apt-get安装:
$ sudo apt-get install owncloud-client
对于其他的发行版(Den,CentOS,Fedora,openSuse 等),你可以通过这个URL下载ownCloud的桌面同步客户端:http://software.opensuse.org/download/package?project=isv:ownCloud:devel&package=owncloud-client 。
从http://owncloud.org/sync-clients/ 可以下载Windows 和 OS X 同步客户端。
桌面同步客户端可以连续同步、选择文件夹同步、多文件夹同步。多文件夹同步是你可以同步对多个文件夹位置进行同步到多个ownCloud文件夹下,这是大多主流云服务提供商做不到的。
下图为Windows下桌面同步客户端,它可以添加多个位置进行同步到ownCloud不同文件夹下。
第六步:使用移动同步客户端同步文件。
ownCloud 文件同步不仅仅局限于桌面端,你也可以使用ownCloud的移动同步客户端同步你的文件,ownCloud 移动应用适用于Andorid、iOS(iPhone/iPod touch/iPad)平台。Andorid版的应用允许你从任何Android应用上传文件,以及提供自动同步文件功能。
你可以从Google Play商店(https://play.google.com/store/apps/details?id=com.owncloud.android)或者Amazon 应用商店(www.amazon.com/ownCloud-Inc/dp/B00944PQMK/ref=sr_1_1?ie=UTF8&qid=1352459188&sr=8-1&keywords=owncloud)付费下载。如果你不愿意付费,也可以自己编译源代码(https://github.com/owncloud/android)或者下载预制的APK文件(http://alefzero.eu/a/master )。
对于iOS版应用不是开源的,只能成Apple 应用商店获得https://itunes.apple.com/us/app/owncloud/id543672169?mt=8 。
我从github clone 一个最新的源代码,经过编译之后安装在我的Android上,下图为软件运行时截图。
4. 有没有类似可以搭建私有云笔记的软件
一个在线笔记,支持Markdown和富文本编辑器,实时预览。支持代码高亮。支持latex公式。支持流程图,时序图。内嵌网络脑图编辑器,可以画思维导图。有win, mac, linux 客户端。支持将笔记发布到leanote提供的博客。支持导出pdf。导入印象笔记。
还有它是开源的,可以直接下载源码搭建一个私有的leanote。
5. 我为什么从python转向go
坦白的讲,在一帮python用户面前讲为什么放弃python转而用go其实是一件压力蛮大的事情,语言之争就跟vim和emacs之争一样,是
一个永恒的无解话题,稍微不注意就可能导致粉丝强烈地反击。所以我只会从我们项目实际情况出发,来讲讲为什么我最终选择了go。
为什么放弃python
首先,我其实得说说为什么我们会选择python。在我加入企业快盘团队之前,整个项目包括更早的金山快盘都是采用python进行开发的。至于为
什么这么选择,当时的架构师葱头告诉我,主要是因为python上手简单,开发迅速。对于团队里面大部分完全没服务端开发经验的同学来说,python真
的是一个很好的选择。
python的简单高效,我是深有体会的。当时私有云项目也就几个程序员,但是我们要服务多家大型企业,进行定制化的开发,多亏了python,我们才能快速出活。后来企业快盘挂掉之后,我们启动轻办公项目,自然也使用python进行了原始版本的构建。
python虽然很强大,但我们在使用的时候也碰到了一些问题,主要由如下几个方面:
动态语言
python是一门动态强类型语言。但是,仍然可能出现int + string这样的运行时错误,因为对于一个变量,在写代码的时候,我们有时候很容易就忘记这个变量到底是啥类型的了。
在python里面,可以允许同名函数的出现,后一个函数会覆盖前一个函数,有一次我们系统一个很严重的错误就是因为这个导致的。
上面说到的这些,静态语言在编译的时候就能帮我们检测出来,而不需要等到运行时出问题才知道。虽然我们有很完善的测试用例,但总有case遗漏的情况。所以每次出现运行时错误,我心里都想着如果能在编译的时候就发现该多好。
性能
其实这个一直是很多人吐槽python的地方,但python有它适合干的事情,硬是要用python进行一些高性能模块的开发,那也有点难为它了。
python的GIL导致无法真正的多线程,大家可能会说我用多进程不就完了。但如果一些计算需要涉及到多进程交互,进程之间的通讯开销也是不得不考虑的。
无状态的分布式处理使用多进程很方便,譬如处理http请求,我们就是在nginx后面挂载了200多个django server来处理http的,但这么多个进程自然导致整体机器负载偏高。
但即使我们使用了多个django进程来处理http请求,对于一些超大量请求,python仍然处理不过来。所以我们使用openresty,将高频次的http请求使用lua来实现。可这样又导致使用两种开发语言,而且一些逻辑还得写两份不同的代码。
同步网络模型
django的网络是同步阻塞的,也就是说,如果我们需要访问外部的一个服务,在等待结果返回这段时间,django不能处理任何其他的逻辑(当然,多线程的除外)。如果访问外部服务需要很长时间,那就意味着我们的整个服务几乎在很长一段时间完全不可用。
为了解决这个问题,我们只能不断的多开django进程,同时需要保证所有服务都能快速的处理响应,但想想这其实是一件很不靠谱的事情。
异步网络模型
tornado的网络模型是异步的,这意味着它不会出现django那样因为外部服务不可用导致这个服务无法响应的问题。话说,比起django,我可是非常喜欢tornado的,小巧简单,以前还写过几篇深入剖析tornado的文章了。
虽然tornado是异步的,但是python的mysql库都不支持异步,这也就意味着如果我们在tornado里面访问数据库,我们仍然可能面临因为数据库问题造成的整个服务不可用。
其实异步模型最大的问题在于代码逻辑的割裂,因为是事件触发的,所以我们都是通过callback进行相关处理,于是代码里面就经常出现干一件事情,传一个callback,然后callback里面又传callback的情况,这样的结果就是整个代码逻辑非常混乱。
python没有原生的协程支持,虽然可以通过gevent,greenlet这种的上patch方式来支持协程,但毕竟更改了python源码。另
外,python的yield也可以进行简单的协程模拟,但毕竟不能跨堆栈,局限性很大,不知道3.x的版本有没有改进。
开发运维部署
当我第一次使用python开发项目,我是没成功安装上项目需要的包的,光安装成功mysql库就弄了很久。后来,是一位同事将他整个python目录打包给我用,我才能正常的将项目跑起来。话说,现在有了docker,是多么让人幸福的一件事情。
而部署python服务的时候,我们需要在服务器上面安装一堆的包,光是这一点就让人很麻烦,虽然可以通过puppet,salt这些自动化工具解决部署问题,但相比而言,静态编译语言只用扔一个二进制文件,可就方便太多了。
代码失控
python非常灵活简单,写c几十行代码才能搞定的功能,python一行代码没准就能解决。但是太简单,反而导致很多同学无法对代码进行深层次的思
考,对整个架构进行细致的考量。来了一个需求,啪啪啪,键盘敲完开速实现,结果就是代码越来越混乱,最终导致了整个项目代码失控。
虽然这也有我们自身的原因,譬如没好的代码review机制,没有好的项目规范,但个人感觉,如果一个程序员没经过良好的编码训练,用python很容易就写出烂的代码,因为太自由了。
当然,我这里并不是说用python无法进行大型项目的开发,豆瓣,dropbox都是很好的例子,只是在我们项目中,我们的python代码失控了。
上面提到的都是我们在实际项目中使用python遇到的问题,虽然最终都解决了,但是让我愈发的觉得,随着项目复杂度的增大,流量性能压力的增大,python并不是一个很好的选择。
为什么选择go
说完了python,现在来说说为什么我们选择go。其实除了python,我们也有其他的选择,java,php,lua(openresty),但最终我们选择了go。
虽然java和php都是最好的编程语言(大家都这么争的),但我更倾向一门更简单的语言。而openresty,虽然性能强悍,但lua仍然是动
态语言,也会碰到前面说的动态语言一些问题。最后,前金山许式伟用的go,前快盘架构师葱头也用的go,所以我们很自然地选择了go。
go并不是完美,一堆值得我们吐槽的地方。
error,好吧,如果有语言洁癖的同学可能真的受不了go的语法,尤其是约定的最后一个返回值是error。项目里面经常会充斥这样的代码:
if _, err := w.Write(data1); err != nil {
returun err
}
if _, err := w.Write(data2); err != nil {
returun err
}
难怪有个梗是对于一个需求,java的程序员在写配置的时候,go程序员已经写了大部分代码,但是当java的程序员写完的时候,go程序员还在写err != nil。
这方面,errors-are-values倒是推荐了一个不错的解决方案。
包管理,go的包管理太弱了,只有一个go
get,也就是如果不小心更新了一个外部库,很有可能就导致现有的代码编译不过了。虽然已经有很多开源方案,譬如godep以及现在才出来的gb等,但毕
竟不是官方的。貌似google也是通过vendor机制来管理第三方库的。希望go 1.5或者之后的版本能好好处理下这个问题。
GC,java的GC发展20年了,go才这么点时间,gc铁定不完善。所以我们仍然不能随心所欲的写代码,不然在大请求量下面gc可能会卡顿整个服务。所以有时候,该用对象池,内存池的一定要用,虽然代码丑了点,但好歹性能上去了。
泛型,虽然go有inteface,但泛型的缺失会让我们在实现一个功能的时候写大量的重复代码,譬如int32和int64类型的sort,我们
得为分别写两套代码,好冗余。go 1.4之后有了go
generate的支持,但这种的仍然需要自己根据go的AST库来手动写相关的parser,难度也挺大的。虽然也有很多开源的generate实现,
但毕竟不是官方的。
当然还有很多值得吐槽的地方,就不一一列举了,但是go仍旧有它的优势。
静态语言,强类型。静态编译能帮我们检查出来大量的错误,go的强类型甚至变态到不支持隐式的类型转换。虽然写代码感觉很别扭,但减少了犯错的可能。
gofmt,应该这是我知道的第一个官方提供统一格式化代码工具的语言了。有了gofmt,大家的代码长一个样了,也就没有花括号到底放到结尾还是新开一行这种蛋疼的代码风格讨论了。因为大家的代码风格一样,所以看go的代码很容易。
天生的并行支持,因为goroutine以及channel,用go写分布式应用,写并发程序异常的容易。没有了蛋疼的callback导致的代码逻辑割裂,代码逻辑都是顺序的。
性能,go的性能可能赶不上c,c++以及openresty,但真的也挺强悍的。在我们的项目中,现在单机就部署了一个go的进程,就完全能够胜任以前200个python进程干的事情,而且CPU和MEM占用更低。
运维部署,直接编译成二进制,扔到服务器上面就成,比python需要安装一堆的环境那是简单的太多了。当然,如果有cgo,我们也需要将对应的动态库给扔过去。
开发效率,虽然go是静态语言,但我个人感觉开发效率真的挺高,直觉上面跟python不相上下。对于我个人来说,最好的例子就是我用go快速开
发了非常多的开源组件,譬如ledisdb,go-mysql等,而这些最开始的版本都是在很短的时间里面完成的。对于我们项目来说,我们也是用go在一
个月就重构完成了第一个版本,并发布。
6. 如何搭建自己的私有云
第一步:预装软件。
ownCloud 内核是用PHP5写的,支持SQLite、MySQL、Oracle以及PostgreSQL等数据库。为了简单,我们将用MySQL数据库。在你的Linux系统下你需要安装以下软件:
PHP 安装包:php5, php5-gd, php-xml- parser,php5-intl
数据库驱动:php5-mysql(如果你使用其他数据库,需要安装相应的数据库以及驱动)
Curl 安装包:curl, libcurl3, php5-curl
SMB 客户端:smbclient (这个用来挂载windows共享文件夹的)
Web 服务器:apache2
如果你的Linux是基于Debian的,你可以运行下面的命令一键安装所有的软件:
$ sudo apt-get install apache2 php5 php5-gd php-xml-parser php5-intl php5-sqlite php5-mysql smbclient curl libcurl3 php5-curl mysql-server
第二步:安装ownCloud——设置web 根目录。
从http://owncloud.org/releases/ 网站上下载最新版的ownCloud,对于本教程,我们使用owncloud-4.5.6 版本。到此,我们需要设置web服务器的根目录,对于基于Debian发行版的Linux系统,根目录为/var/www,将ownCloud安装包解压到此目录下。如下命令:
$ tar xjf owncloud-4.5.6.tar.bz2
$ cp -r -v owncloud/ /var/www/guohlcloud/
在我们的例子中,以guohlcloud作为安装的根目录。
OwnCloud在安装的过程中需要对一些目录有写的权限,为此,web服务器用户(www-data对于基于Debian的系统)必须要拥有apps、data、config目录的权限。运行以下命令完成:
$ cd /var/www/ludcloud
#这个文件夹不存在,但在安装过程中需要,应该先建立。
$ sudo mkdir data/
$ sudo chown -R www-data:www-data data
$ sudo chown -R www-data:www-data config
$ sudo chown -R www-data:www-data apps
第三步:安装ownCloud——配置web服务器。
这一步我们要为 ownCloud配置Apache服务器,OwnCloud需要启用 Apache上 .htaccess 文件,.htaccess文件(或者"分布式配置文件")提供了针对目录改变配置的方法。为了启用web服务器上的.htaccess,可以通过 Apache配置文件(基于Den系统是/etc/apache2/sites-enabled/000-default)的 AllowOverride指令来设置。
<Directory/var/www/>
Options Indexes
FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
下一步我们需要启动Apache的mod_rewrite模块,mod_rewrite模块提供了实时地将访问者请求的静态URL地址映射为动态查询字符串的一种规则。运行下面的命令来启动这个模块:
$ sudo a2enmod rewrite
$ sudo a2enmod headers
一旦你使能了这个必要的模块,你可以重启apache服务来使之生效:
$ sudo service apache2 restart
第四步:安装OwnCloud——安装运行。
在浏览器中打开 http://localhost/ludcloud ,你会被引导进入ownCloud的安装界面。
首先你要建立一个管理员帐号,输入必填的用户名和密码就完成了。为了配置数据库,点“Advanced” 选择MySQL,然后输入MySQL的数据库名、用户名和密码。
点“Finish” 完成安装过程。
下图为我安装完成登录的主界面(红色框为设置项):
第五步:使用桌面同步客户端同步文件。
你可以使用桌面同步客户端同步不同电脑、设备上的文件,适用于Linux、OS X 和 Windows系统。跟ownCloud一样,桌面同步客户端也是开源的。
例如Ubuntu下,你可以通过apt-get安装:
$ sudo apt-get install owncloud-client
对于其他的发行版(Den,CentOS,Fedora,openSuse 等),你可以通过这个URL下载ownCloud的桌面同步客户端:http://software.opensuse.org/download/package?project=isv:ownCloud:devel&package=owncloud-client 。
从http://owncloud.org/sync-clients/ 可以下载Windows 和 OS X 同步客户端。
桌面同步客户端可以连续同步、选择文件夹同步、多文件夹同步。多文件夹同步是你可以同步对多个文件夹位置进行同步到多个ownCloud文件夹下,这是大多主流云服务提供商做不到的。
下图为Windows下桌面同步客户端,它可以添加多个位置进行同步到ownCloud不同文件夹下。
第六步:使用移动同步客户端同步文件。
ownCloud 文件同步不仅仅局限于桌面端,你也可以使用ownCloud的移动同步客户端同步你的文件,ownCloud 移动应用适用于Andorid、iOS(iPhone/iPod touch/iPad)平台。Andorid版的应用允许你从任何Android应用上传文件,以及提供自动同步文件功能。
你可以从Google Play商店(https://play.google.com/store/apps/details?id=com.owncloud.android)或者Amazon 应用商店(www.amazon.com/ownCloud-Inc/dp/B00944PQMK/ref=sr_1_1?ie=UTF8&qid=1352459188&sr=8-1&keywords=owncloud)付费下载。如果你不愿意付费,也可以自己编译源代码(https://github.com/owncloud/android)或者下载预制的APK文件(http://alefzero.eu/a/master )。
对于iOS版应用不是开源的,只能成Apple 应用商店获得https://itunes.apple.com/us/app/owncloud/id543672169?mt=8 。
我从github clone 一个最新的源代码,经过编译之后安装在我的Android上,下图为软件运行时截图。
7. app推送是什么
app推送是移动端的APP进行消息的推送,用户可以选择接受推送信息和不接受。对于一款APP来说,消息推送是企业觉得非常好用、成本最低的一种打广告的方式,很多APP都会用到消息推送。然而关于APP推送可以选择第三方工具来实现,例如深圳极光,极光推送私有云产品的优势如下:
1、数据安全:私有云部署私有环境,客户数据在客户自己的内网,数据安全合规。
2、性能强大:私有云目前只服务本身自己,性能方面会超出公有云共用平台。
3、参数调优:私有云环境允许用户根据自己的需求随意调配设置参数,直到性能最优。
4、弹性扩容:私有云异步架构,多点备份部署,通过弹性横向扩容节点来增加每一个模块处理能力,轻松应对用户增长,可随数据变化快速扩容。
5、专业服务:专属的私有云团队支持,包含咨询、测试、技术支持等相关服务。
6、源码授权:私有云可授权极光的核心源代码给予用户使用。
极光推送私有云基于极光推送海量用户的公有云版本演进而来,相对于推送公有云增加了几项特色功能:支持 Web、PC 平台推送,支持消息盒子,厂商失败可转极光补发。
8. 什么叫“私有云”“内部云”
“私有云”和“内部云”可是说是同一个概念,私有云是为一个客户单独使用而构建的,因而提供对数据、安全性和服务质量的最有效控制。私有云可部署在企业数据中心的防火墙内,也可以部署在一个安全的主机托管场所。
搭建私有云比如搭建云盒子,只需要在内部搭建云盒子服务器即可。可以实现企业数据的集中存储、授权分享、多端登录,实时同步。
9. 国内有哪些能提源代码的bpm平台
目前国内的BPM产品已经形成对国外产品的反超,一些国外的bpm品牌在国内市场也逐渐失去了技术、产品领先的优势,近年来国内BPM发展的相当不错,像以 天翎、奥哲、炎黄为代表的一批国内BPM产品在BPMN标准后实现了从产品、功能到场景匹配的反超。各有各的优势,具体如下:
天翎:整合快速、拓展灵活,掌握流程管理大脑流程引擎核心科技,更适应中国式流程管理,支持定制化开发,有提供源码的版本;
奥哲:围绕以流程、应用、移动为基础的私有云开发平台,帮助企业构建连接上下、快速迭代、全面移动的私有云信息化综合管理基础平台;
炎黄:采用元数据驱动、可视化配置的设计思想,强调低代码驱动的交付流水线,业务应用场景覆盖广;
10. 国内有私有云源码提供商吗做的比较好的,求推荐
业内公认的做私有云比较牛的是华云私有云。
|
|
|
缀化是指花卉中常见的畸形变异现象,属于植物形态的一种变异现象。某些品种的多肉植物受到不明原因的外界刺激(浇水、日照、温度、药物、气候突变等),其顶端的生长锥异常分生、加倍,而形成许多小的生点,而这些生长点横向发展连成一条线,最终长成扁平的扇形或鸡冠形带状体。
因“叶插”而生成的缀化现象较多,
相比其他因素更易产生缀化。
另外,从缀化后的植株上剪下一部分再重新扦插,重新生长出来的部分会是正常植株。而从已经缀化的植株上剪下正常的叶片小苗再扦插,生长出来的不会是变异品种,而是普通品种。
最后,由于缀化是一种变异形态,各方面的能力较普通品种都会差,养护上的要求也会相应提高。缀化变异植株因形态奇异,观赏价值更高,又因其稀少,较原种(种植)更为珍贵。