首页 文章 精选 留言 我的

精选列表

搜索[打包工具],共10000篇文章
优秀的个人博客,低调大师

【编译打包】Atlas-2.2.1-2.el7.centos.src.rpm

Atlas 是奇虎360 开源的一个数据库中间件,基于mysql-proxy,做了大量改造,是一个适合国情的高性能的mysql中间件。 官方提供源码下载和rpm下载,但是发现没有SRPM源码包,于是研究了一番,发现了不少问题,自行实现了spec文件,主要解决如下问题: 1、依赖包问题 2、实现了标准的init脚本,去掉了丑陋的mysql-proxyd 3、使用普通用户权限运行mysql-proxy 4、同时支持CentOS 6和CentOS 7 5、文件路径按照Linux 目录树标准FHS进行分布(/usr/local不符合rpm规范) 6、支持开发包(github上有人提问找不到头文件) 本着GPL精神,我希望将成果贡献给官方,以改进安装体验。Atlas.spec文件内容如下: 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 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 %global_enable_debug_package0 %globaldebug_package%{nil} %global__os_install_post/usr/lib/rpm/brp-compress%{nil} Name:Atlas Version:2.2.1 Release:2%{?dist} Summary:AProxyfortheMySQLClient/Serverprotocol License:GPL URL:https://github.com/Qihoo360/Atlas Source0:%{name}-%{version}.tar.gz Source1:mysql-proxy.cnf Source2:mysql-proxy.init BuildRequires:flex,libtool BuildRequires:glib2-devel>=2.32.0 BuildRequires:jemalloc-devel BuildRequires:libevent-devel BuildRequires:lua-devel>=5.1 BuildRequires:mysql-devel BuildRequires:openssl-devel BuildRequires:pkgconfig Requires:openssl Requires:jemalloc Requires:mysql Requires:lua>=5.1 Requires:glib2 Conflicts:mysql-proxy ExcludeArch:x86 %description AtlasisaMySQLprotocol-baseddatabasemiddlewareprojectdeveloped andmaintainedbyinfrastructureteamoftheWebplatformDepartment inQIHU360SOFTWARECO.LIMITED(NYSE:QIHU).Itfixedlotsofbugsand addedlotofnewfunctionsonthebasisofMySQL-Proxy0.8.2. CurrentlytheprojecthasbeenwidelyappliedinQIHU, manyMySQLbusinesshasconnectedtotheAtlasplatform. ThenumberofreadandwriterequestsforwardedbyAtlashasreachedbillions. %packagedevel Summary:DevelopmentfilesforAtlas Requires:Atlas=%{version}-%{release} %descriptiondevel DevelopmentfilesforAtlas %prep %setup-q %build %configure\ --with-lua\ CFLAGS="$CFLAGS-DHAVE_LUA_H"\ LDFLAGS="$LDFLAGS-lm-ldl-lcrypto-ljemalloc" make%{?_smp_mflags} %install rm-rf$RPM_BUILD_ROOT %{__make}DESTDIR=$RPM_BUILD_ROOTinstall %{__mkdir}-p$RPM_BUILD_ROOT%{_localstatedir}/log/mysql-proxy %{__mkdir}-p$RPM_BUILD_ROOT%{_sysconfdir}/mysql-proxy %{__mkdir}-p$RPM_BUILD_ROOT%{_initrddir} %{__install}-m644-p%{SOURCE1}\ $RPM_BUILD_ROOT%{_sysconfdir}/mysql-proxy/mysql-proxy.cnf %{__install}-m755%{SOURCE2}\ $RPM_BUILD_ROOT%{_initrddir}/mysql-proxy %clean %{__rm}-rf$RPM_BUILD_ROOT make-sclean %pre getentgroupmysql>/dev/null||groupadd-g27-o-rmysql getentpasswdmysql>/dev/null||\ useradd-u27-M-N-o-r-gmysql-s/bin/bash\ -d/var/lib/mysqlmysql exit0 %post ldconfig chkconfig--addmysql-proxy||: #fixlibpath %{__ln_s}-f%{_libdir}/mysql-proxy/usr/lib/mysql-proxy||: %postun ldconfig chkconfig--delmysql-proxy||: unlink/usr/lib/mysql-proxy||: %files %defattr(-,root,root,-) %{_bindir}/mysql-proxy %{_bindir}/encrypt %{_bindir}/mysql-binlog-dump %{_bindir}/mysql-myisam-dump %exclude%{_bindir}/mysql-proxyd %config(noreplace)%{_sysconfdir}/mysql-proxy/mysql-proxy.cnf %{_initrddir}/mysql-proxy %dir%attr(0755,mysql,mysql)%{_localstatedir}/log/mysql-proxy %dir%{_libdir}/mysql-proxy %{_libdir}/mysql-proxy/lua/* %{_libdir}/mysql-proxy/plugins/* %{_libdir}/libmysql-* %{_libdir}/libsql-* %docexamples/ %filesdevel %defattr(-,root,root,-) %{_includedir}/*.h %{_libdir}/pkgconfig/mysql-chassis.pc %{_libdir}/pkgconfig/mysql-proxy.pc %changelog *ThuDec32015PurpleGrape<purplegrape4@gmail.com>-2.2.1-2 -fixlibpath *ThuNov262015PurpleGrape<purplegrape4@gmail.com>-2.2.1-1 -freshbuild 注: 1、官方只提供el6的rpm包,但是在CentOS 6上编译,会有依赖不足的问题,glib2版本必须大于2.32.0(CentOS 6官方自带的是2.28.8),于是我将cenots 7的glib2 (2.40.0版本)向下移植到了centos 6,用于解决依赖问题。具体见下面的链接。 本文转自 紫色葡萄 51CTO博客,原文链接:http://blog.51cto.com/purplegrape/1717054,如需转载请自行联系原作者

优秀的个人博客,低调大师

net core 程序docker打包镜像并发布到官方store

学习一个技术的第一步,总是要先打印或显示一个hello world的。当然,学习docker也不例外。上一篇文章已经简单的介绍了环境的安装和配置。接下来就要打印我们的hello world了。 首先我们来跑一跑官方的hello world程序 #运行官方的hello-world镜像,顺带可以检查一下安装配置是否有问题。 docker run hello-world 出来这个就基本差不多了。 centos: windows: 在接下来跑一个我们自己的。net core 版本的hello world vs2017 preview装起来先,然后创建一个控制台项目.项目右键 add ,选择docker support。添加项目对docker的支持 完事之后大约就这样子 为了发布方便,我们吧项目改一下名字,czd890 是我在docker 注册的账号。所以我所有发布的项目都发布到自己的命名空间下。 然后,我们在main方法里面写上我们的hello world static void Main(string[] args) { Console.WriteLine("Hello World!"); Console.WriteLine("in docker -- private registry"); } 在然后,选择release模式,rebuild我们的项目 就出来 我们来跑一跑我们自己的 hello world。 --rm参数表示run完了之后自动参数容器。这样子,我们docker ps -a 显示所有容器的时候,就不会看到一个超长列表了...... 在在然后,我们吧我们的镜像发布到官方 首先,我们需要登录我们的账号: 在接着,发布:  最后,在我们的centos中来跑一下我们刚才发布的czd890/hello-world镜像

优秀的个人博客,低调大师

JFinal Undertow 2.0 发布,开发、打包、部署一体化

jfinal-undertow 用于开发、部署由 jfinal 开发的 web 项目。独创 HotSwapClassLoader + HotSwapWatcher 以 321 行代码极简实现热加载开发与部署,前无古人,后必有模仿者。 使用方法见官方文档:https://jfinal.com/doc/1-2 jfinal undertow 2.0 changelog: 1:undertow 由 2.0.25.Final 升级到 2.0.28.Final 2:jfinal 由 4.4 升级到 4.8 3:添加 WebBuilder.getDeploymentInfo() 方法,开放给用户更多 web 配置, 例如支持 JSP 的配置: https://jfinal.com/share/1890 https://jfinal.com/share/1899 JSP 配置 demo 源码: https://github.com/shanmine/undertow-jsp-demo.git 4:添加 WebBuilder.add404ErrorPage(),支持配置 undertow 容器 级别的静态资源找不到时的 404 页面 5:添加 WebBuilder.addErrorPage(),支持配置 undertow 容器 级别的其它类型错误页面 6:添加 WebBuilder.addWelcomePage() 方法,支持配置欢迎页面 7:PropExt 添加 File 参数构造方法

优秀的个人博客,低调大师

IntelliJ IDEA 本地打包 Docker 镜像并推送到阿里云 ACR

关于容器镜像服务 ACR 容器镜像服务(Container Registry)提供安全的镜像托管能力,稳定的国内外镜像构建服务,便捷的镜像授权功能,方便用户进行镜像全生命周期管理。容器镜像服务简化了Registry的搭建运维工作,支持多地域的镜像托管,并联合容器服务等云产品,为用户打造云上使用Docker的一体化体验。(摘自阿里云容器镜像服务 ACR 官网) 延伸阅读:《IntelliJ IDEA 部署应用到容器服务 Kubernetes》 本地开发 本文采用一个极其基础的样例《在 Web 页面打印 HelloWorld 的 Java Servlet 》为例,做代码工程的参考。 public class IndexServlet extends HttpServlet { private static final long seri

优秀的个人博客,低调大师

HBuilder打包成apk之后,如何让版本检测自动更新

var btn = [“确定升级”, “取消”]; //获取app系统更新[是否手动点击获取更新] function appUpdate(ismanual) { console.log('appUpdate'); mui.plusReady(function () { plus.runtime.getProperty(plus.runtime.appid, function (inf) { ver = inf.version; console.log('ver:' + ver); var url = config.GetAppVersion; var client; var ua = navigator.userAgent.toLowerCase(); if (/iphone|ipad|ipod/.test(ua)) { //苹果手机 mui.ajax({ type: "get", dataType: 'json', url: "https://itunes.apple.com/lookup?id=1318127518",//获取当前上架APPStore版本信息 data: { id: 131812xxxx //APP唯一标识ID }, contentType: 'application/x-www-form-urlencoded;charset=UTF-8', success: function (data) { console.log('data:' + JSON.stringify(data)); var resultCount = data.resultCount; for (var i = 0; i < resultCount; i++) { var normItem = data.results[i].version; console.log('normItem:' + normItem) if (normItem > ver) { var _msg = "发现新版本:V" + normItem; //plus.nativeUI.alert("发现新版本:V" + normItem); mui.confirm(_msg, '升级确认', btn, function (e) { if (e.index == 0) { //执行升级操作 document.location.href = 'https://itunes.apple.com/cn/app/san-gu-hui/id131812xxxx?mt=8'; //上新APPStore下载地址 } }); return; } } if (ismanual) { mui.toast('当前版本号已是最新'); } return; } }); } else if (/android/.test(ua)) { mui.ajax(url, { data: { apkVersion: ver, }, dataType: 'json', type: 'get', timeout: 10000, success: function (data) { //console.log('data:'+JSON.stringify(data)) if (data.StatusCode = 200 && data.Data > ver) { //mui.toast("发现新版本:V" + data.Data);//获取远程数据库中上新andriod版本号 var _msg="发现新版本:V" + data.Data; mui.confirm(_msg, '升级确认', btn, function (e) { if (e.index == 0) { //执行升级操作 plus.nativeUI.toast("正在准备环境,请稍后!"); var dtask = plus.downloader.createDownload(config.apkUrl, {}, function (d, status) { if (status == 200) { var path = d.filename;//下载apk plus.runtime.install(path); // 自动安装apk文件 } else { plus.nativeUI.alert('版本更新失败:' + status); } }); dtask.start(); } }); } else { console.log('当前版本号已是最新'); if (ismanual) { mui.toast('当前版本号已是最新'); } return; } }, error: function (xhr, type, errerThrown) { if (ismanual) { mui.toast('网络异常,请稍候再试'); } } }); } }); }); } 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 80 81 82 83 84 85 86 感谢分享 我们的ios应用是发布在苹果应用商店的,而android应用则直接部署在我们自己的服务器上面(如IIS服务器),因为android的应用市场是在太多了,那样的话每次升级版本都是一件非常麻烦的事情,当你每发布一个版本,你不得不去所有的android应用市场去提交更新。 需要注意的是:采用手动更新和自动更新调用此方法,要传入不同的参数,因为自动更新的话,如果系统检测到当前已经是最新版本,那么将不会在客户端进行展示,而手动更新的话如果已经是最新版本,那么是需要提示客户的。 自动更新调用:appUpdate();//检测app更新 手动更新调用:appUpdate(true);//检测app更新 不过我本人使用的时候,精简了一些,因为他要调取plus对象 var first = null; document.addEventListener('plusready', function() { var webview = plus.webview.currentWebview(); plus.key.addEventListener('backbutton', function() { webview.canBack(function(e) { if(e.canBack) { webview.back(); } else { if(!first){ first = new Date().getTime(); mui.toast('再按一次退出应用'); setTimeout(function(){ first = null; },1000); }else{ if(new Date().getTime()-first<1000){ plus.runtime.quit(); } } } }) }); var btn = ["确定升级", "取消"]; plus.runtime.getProperty(plus.runtime.appid, function (inf) { ver = inf.version; $.ajax({ url:"http://218.4.57.4:19011/version", success: function (data) { if (data.result.version != ver) { var _msg="发现新版本:V" + data.result.version; mui.confirm(_msg, '升级确认', btn, function (e) { if (e.index == 0) { //执行升级操作 plus.nativeUI.toast("正在准备环境,请稍后!"); var dtask = plus.downloader.createDownload('http://218.4.57.4:19011/app/xieguan.apk', { }, function (d, status) { if (status == 200) { var path = d.filename;//下载apk plus.runtime.install(path); // 自动安装apk文件 } else { plus.nativeUI.alert('版本更新失败:' + status); } }); dtask.start(); } }); } else { console.log('当前版本号已是最新'); if (ismanual) { mui.toast('当前版本号已是最新'); } return; } }, error: function (xhr, type, errerThrown) { if (ismanual) { mui.toast('网络异常,请稍候再试'); } } }); }); }); 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 还有一篇大佬差不多的文章的,也可以看看http://www.cnblogs.com/jiekzou/p/8204469.html 原文发布时间:2018-6-19 原文作者:没有名字的昵称 本文来源掘金如需转载请紧急联系作者

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册