admin 管理员组文章数量: 887021
[转]Android开源git40个App源码 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Android开源git40个App源码
作者:andyliulin 发表于 2018/03/04 17:11:39 原文链接 https://blog.csdn/andyliulin/article/details/79436865 阅读:111 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[转]使用PowerDesinger将mysql中的数据库逆向生成为PDM文件 转载 2017年02月04日 12:44:11 1574 Part 1 PowerDesigner连接mysql逆向生成pd | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
使用PowerDesinger将mysql(oracle、sqlServer)中的数据库逆向生成为PDM文件Part 1 PowerDesigner连接mysql逆向生成pdm转自:http://wwwblogs/dennyzhangdd/p/5550868.html 常用的建模工具有:PowerDesigner和ERWin,后者已快被淘汰,但前者依然活跃。相信大家都遇到过项目组已经运营很很久,但是竟然连一个ER图都没有,今天就讲解一下PowerDesigner连接mysql逆向生成pdm。PS:网络上各种老版本,各种文不对题,按照本文去做,10分钟即可搞定,就是这么简单。 假设大家已经安装好PowerDesigner,本人使用版本号15.1破解汉化版。 1.安装mysql-connector-odbc-5.1.5-win32.msi这个是驱动必须安装,大概4M,百度搜即可。
选择dbms为mysql 5.0 --》using a据源点击图中 红圈, 点击configure , 点击红圈,添加新数据源。 ,下一步选择第一步安装的驱动, 下一步,确定。
,填写相关数据,上面两行随便写,下面4行就是连接数据库的必须字段。点击OK,跳转到
下拉框选定刚配置好的数据源,点击connect,
,点击确定筛选要导出的表(<All users>下拉筛选)--》OK 即可生成PDM。 Part 2
PowerDesigner 把Comment写到name中 和把name写到Comment中 pd7以后版本可用转自:http://wwwblogs/cxd4321/archive/2009/03/07/1405475.html在使用PowerDesigner对数据库进行概念模型和物理模型设计时,一般在NAME或Comment中写中文,在Code中写英文。Name用来显 示,Code在代码中使用,但Comment中的文字会保存到数据库Table或Column的Comment中,当Name已经存在的时候,再写一次 Comment很麻烦,可以使用以下代码来解决这个问题:
-------------------------------------------- 另外在使用REVERSE ENGINEER从数据库反向生成PDM的时候,PDM中的表的NAME和CODE事实上都是CODE,为了把NAME替换为数据库中Table或Column的中文Comment,可以使用以下脚本:
----------------------------------------------------------------------- 以上两段代码都是VB脚本,在PowerDesigner中使用方法为: PowerDesigner->Tools->Execute Commands->Edit/Run Scripts 将代码Copy进去执行就可以了,是对整个CDM或PDM进行操作 Part 3 个人备注 直接使用 Part2 中的代码二:将Comment中的字符COPY至Name中 时,表名也会变成中文名,如果要保持表名为英文名则需要 删去 tab.name = tabment 以及 view.name = viewment 这两行代码。 作者:andyliulin 发表于 2018/01/25 12:22:06 原文链接 https://blog.csdn/andyliulin/article/details/79160309 阅读:64 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[译]让PIP源使用国内镜像,提升下载速度和安装成功率 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
让PIP源使用国内镜像,提升下载速度和安装成功率。对于Python开发用户来讲,PIP安装软件包是家常便饭。但国外的源下载速度实在太慢,浪费时间。而且经常出现下载后安装出错问题。所以把PIP安装源替换成国内镜像,可以大幅提升下载速度,还可以提高安装成功率。 国内源:新版ubuntu要求使用https源,要注意。 清华:https://pypi.tuna.tsinghua.edu/simple 阿里云:http://mirrors.aliyun/pypi/simple/ 中国科技大学 https://pypi.mirrors.ustc.edu/simple/ 华中理工大学:http://pypi.hustunique/ 山东理工大学:http://pypi.sdutlinux/ 豆瓣:http://pypi.douban/simple/ 临时使用:可以在使用pip的时候加参数-i https://pypi.tuna.tsinghua.edu/simple 永久修改,一劳永逸:Linux下,修改 ~/.pip/pip.conf (没有就创建一个文件夹及文件。文件夹要加“.”,表示是隐藏文件夹) 内容如下: [global] index-url = https://pypi.tuna.tsinghua.edu/simple [install] trusted-host=mirrors.aliyun windows下,直接在user目录中创建一个pip目录,如:C:\Users\xx\pip,新建文件pip.ini。内容同上。 记录自己、分享公众、成就别人 作者:andyliulin 发表于 2018/01/02 16:48:00 原文链接 https://blog.csdn/andyliulin/article/details/78953325 阅读:176 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[转]Spring Boot 中使用 Dubbo 详解 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Spring Boot 中使用 Dubbo 详解Dubbo是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提供3,000,000,000+次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。Dubbo 简介Dubbo 是什么?Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候,才有dubbo这样的分布式服务框架的需求,并且本质上是个服务调用的东东,说白了就是个远程服务调用的分布式框架 其核心部分包含: 1.远程通讯: 提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。 Dubbo 能做什么?1.透明化的远程方法调用,就像调用本地方法一样调用远程方法,只需简单配置,没有任何API侵入。 Dubbo 的架构架构图节点角色说明
Dubbo提供三个关键功能,包括基于接口的远程呼叫,容错和负载平衡以及自动服务注册和发现 调用关系说明 1.服务容器负责启动,加载,运行服务提供者。 Dubbo 特点Dubbo 架构具有以下几个特点,分别是连通性、健壮性、伸缩性、以及向未来架构的升级性 连通性
健状性
伸缩性
升级性 当服务集群规模进一步扩大,带动IT治理结构进一步升级,需要实现动态部署,进行流动计算,现有分布式服务架构不会带来阻力。下图是未来可能的一种架构: 未来可能的一种架构节点角色说明
快速开始Dubbo 采用全 Spring 配置方式,透明化接入应用,对应用没有任何 API 侵入,只需用 Spring 加载 Dubbo 的配置即可,Dubbo 基于 Spring 的 Schema 扩展进行加载。 环境安装任选其一 CentOs7.3 搭建 ZooKeeper-3.4.9 单机服务 Github 代码代码我已放到 Github ,导入 github github/souyunku/ym… Maven依赖在项目中添加
定义服务接口项目:
服务提供方项目:
加载 dubbo 配置
在提供方增加暴露服务配置 :
服务消费方项目:
加载 dubbo 配置
在消费方增加引用服务配置:
远程服务 Dubbo 配置项目:
测试 Dubbo
启动 ZooKeeper启动服务
启动提供方服务
测试消费远程服务
响应:
代码我已放到 Github ,导入 github github/souyunku/ym…
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[转]Android 开发资料便签 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Android 开发资料便签标签:Android
平台
技术
阅读
权威导航我的书签
第三方书签
其它书签
信息中心1:社区网站
2:技术源码
工具利器
进阶书籍
开发规范
经验之谈
作者:andyliulin 发表于 2017/10/27 17:18:27 原文链接 https://blog.csdn/andyliulin/article/details/78367089 阅读:271 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[译]iOS 收集的高仿项目 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
iOS 收集的高仿项目GSD_WeiXin高仿微信 v2ex- v2ex 的客户端,新闻、论坛。 V2ex-Swift- 用 Swift 写的 V2EX 客户端。 iBBS-Swift- “新手开源一个用Swift(2.0)写的论坛客户端”。BBS 服务端。 wikipedia-ios- wikipedia-ios 客户端。 jetstream-ios- 一款 Uber 的 MVC 框架。它同时提供了多用户实时通讯支持,一旦启动 JetStream 后端服务,通过 WebSocket 协议可以分分钟建立多用户实时通讯应用。 DeckRocket- 在相同 WiFi 网络环境内,通过iPhone 控制并播放 Mac 中的 PDF 文档。 ScanBook- 扫扫图书:可以扫描条形码查询图书,也可以关键字搜索,遇到合乎你口味的书,还可以看看别人的读书笔记,不同角度去体会。 DesignerNewsApp- Swift 开发的 DesignerNews 客户端,看着美美的! KYWeibo- 调用新浪API自己写的第三方微博客户端。 DouQu_IOS- 逗趣IOS手机端(一款笑话软件),拥有完整的功能的手机应用app 。 IT江湖iOS客户端- IT江湖iOS客户端。 Eidolon- 艺术品拍卖的投标亭平台,用swift与反应式编程框架 ReactiveCocoa。 CrazyPuzzle- 模仿“看图猜成语”App,功能齐全,配有音效,效果很不错。游戏使用cocoa框架完成,没有使用cocos2d的框架。 WhoCall- 谁CALL我,iOS来电信息语音提醒,无需越狱。(需要iOS 7.0及以上版本。)骚扰电话预警、来电归属地提醒、联系人姓名播报,这些有中国特色人性化的电话功能,iOS上也应该有。电话提醒、私有API。 仿iOS猎豹垃圾清理(实现原理+源码)- 仿iOS猎豹垃圾清理(实现原理+源码),用到私有API。 DSLolita- 模仿新浪微博做的一款app,有发送博文,评论,点赞,私聊功能。 STPhotoBrowser- 高仿新浪微博的图片浏览器,极佳的编写方式,易扩展,低耦合。 GSD_ZHIFUBAO- 支付宝高仿版。 Tropos- Tropos, 由 thoughtbot 推出的一款用 Objective-C 写的开源天气类应用, 截至今天, thoughtbot 已在 GitHub 上贡献了 174 个开源项目, 实在令人敬佩。 SmileWeather-开源天气类应用,天气图标很完整。 MVVMReactiveCocoa- GitBucket 2.0 通过审核啦,她是我在公司实践了一年多 MVVM 和 RAC 的基础上,利用业余时间开发的第三方 GitHub 客户端,旨在能够对想实践 MVVM 和 RAC 的 iOS 开发者有所帮助。AppStore地址,欢迎下载使用GitBucket和收藏MVVMReactiveCocoa。 Tomate- 这个圆盘式计时器让你更专注于工作或学习。P.S. App Store 上架收费应用(0.99 欧)。 StoveFireiOSMenu- 炉火餐饮系统iPad点餐端。 BaiduFM-Swift- 百度FM, swift语言实现,基于最新xcode6.3+swift1.2,初步只是为了实现功能,代码比较粗燥,后面有时间会整理,支持Apple Watch。 WNXHuntForCity- iOS高仿城觅项目(开发思路和代码)。 ZYChat- 关于聊天界面的可消息类型扩展,响应绑定设计。 meituan- 美团5.7iOS版(高仿),功能包括,团购首页,高德地图搜索附近美食并显示在地图上,上门服务,商家,友盟分享。 MeituanDemo- 造美团应用界面构建的 iOS 应用, 第一个是 @叶孤城_的 MeituanDemo。 JFMeiTuan- 造美团应用界面构建的 iOS 应用, 第二个是 @tubiebutu 的 JFMeiTuan。 chuanke- 高仿百度传课iOS版。 Tuan- 模仿MJ老师iPad版美团(swift版),偶有bug 见谅。 SXNews- 模仿网易新闻做的新闻软件,完成了主导航页,新闻详情页,图片浏览页,评论页。效果不错,比网上流传的各种和网易新闻UI架构有关的代码都要完整,都要好。 Monkey- Monkey for GitHub是一个GitHub开发者和仓库排名的开源App。这次主要增加了登录GitHub的功能,随手follow和star,并且增加发现模块,包括GitHub的trending,动态,showcases等。 Uther- 跟蠢萌的外星人聊天,还能帮你记事”。itunes下载。 CocoaChinaPlus- CocoaChina+是一款开源的第三方CocoaChina移动端。整个App都用Swift2.0编写(除部分第三方OC代码外,比如JPush和友盟)。 高仿斗鱼TV- 高仿斗鱼TV,点击头部滚动视图可以播放视频。 LXZEALER- 模仿着做了zealer客户端,App里几乎所有请求都是Post,所以内容都是固定的URL加载的,登录功能只做了微博的第三方登录。 ShiXiSeng_ios- 完整app的UI框架。 Coding-iPad- Coding-iPad 是@Coding的官方 iPad 客户端, 又是一个完整的开源应用。 SimpleMemo- 易便签已经转到Swift2.0,全面适配iOS9和Watch OS2,并支持iPhone6s和iPhone6sPlus的3D Touch功能,包括图标快捷键和内容预览。 XXYAudioEngine.swift- 基于NSURLSession 和 AVAudoPlayer的在线音乐的工具,可以把音乐保存在本地,也可以支持后台播放,后台下载,最低支持iOS7,swift版本1.2。 furni-ios.swift- furni-ios.swift是由 Twitter 开发团队出品的一款用 Swift 写的 iOS 家居商城应用, 其主要目的在于让开发者从这款 Demo 应用中看出 Fabric 的强大。 SelectionOfZhihu.swift- 『看知乎』iOS 客户端,项目说明。 WFZhiHu- WFZhiHu仿知乎日报客户端app。 NirZhihuDaily2.0_swift- 精仿了知乎日报iOS端练手,Swift2.0,注释相当详细。 Yep.swift- Yep 一个由天才开发给天才们使用的社交软件。 LoveFreshBeen.swift- 高仿爱鲜蜂 - Swift2.0 trySwiftApp.swift- trySwiftApp一款较为完整的会议原型应用。有需求的同学可以做为开发参考。 PinGo.swift- PinGo.swift:纯Swift编写的仿“随遇”App。 UmbrellaWeather.swift- UmbrellaWeather.swift使用 Swift 编写的一款天气应用,现已上架 AppStore。 SwiftWeather- SwiftWeather清新淡雅持续改进天气预报项目。 Phonetic.swift- Phonetic一个 iOS 版的 Phonetic Contacts,功能很多,其中昵称功能非常实用,已在 GitHub 开源并上架 App Store。 edhita.swift- edhita.swift支持Markdown, HTML预览的文本编辑器。 PilesSugar.swift- PilesSugar.swift:Swift高仿项目,堆糖。 react-native-gitfeed- 目前最实用简洁的github客户端了。 phphub-ios- PHPHub的iOS客户端,同时兼容iPhone和iPad。 SoundCloudSwift- SoundCloud的Swift版本,采用Swift2.0,Reactive API with ReactiveCocoa 4.0。 LeagueofLegends- 一个关于英雄联盟的完整iOS开源项目,接口均来自多玩,腾讯各大游戏平台。 Coderpursue.swift- 一款 Github 第三方客户端,使用最新 Swift 语言编写。 BTApp- BTApp 仿半糖 iOS App 的 Demo 应用。 iOS完整App资源收集- iOS开发学习者都希望得到实战训练,但是很多资料都是只有一小部分代码,并不能形成完成的App,笔者在此处收集了很多开源的完整的App,都有源代码哦!--标哥的技术博客 XCFApp-1- 高仿下厨房App,Objective-C,Xcode7.2,数据通过Charles抓的,有接口也有本地数据。说明:关于代码被清空,会用git的你肯定明白,教程 XCFApp-2- 高仿下厨房APP。 YoCelsius- 已经上线的一款天气预报的应用,几乎所有的交互动画效果,想学习动画的开发人员可以作为参考。 XiMaLaYa-by-HansRove-- 仿喜马拉雅FM, 对AVFoundation框架的一次尝试,采用MVVM模式,教程。 作者:andyliulin 发表于 2017/10/27 15:00:11 原文链接 https://blog.csdn/andyliulin/article/details/78365021 阅读:882 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[转]Python制作安卓游戏外挂 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Python制作安卓游戏外挂最近在玩一款背单词的手机游戏-单词英雄,是一个将背单词和卡牌游戏相结合的游戏,通过选择正确的单词意思进行有效攻击,边玩游戏就把单词给背了。游戏的界面是这样的: Paste_Image.png
安装步骤(win7环境):
(6)安装autopy,下载地址:https://pypi.python/pypi/autopy,下载autopy-0.51.win32-py2.7.exe进行安装,用来模拟鼠标操作。 说下程序的思路: 1485005-75900c16b01ca1f3.png
图片识别成字符:
2. 对于1位置的图片提前截一个保存下来,然后通过计算当前画面和保存下来的图片的距离,判断如果小于40的就表示已经到了选择界面,然后识别2,3,4,5,6成字符,判断如果2位置识别成英文字符的,就用2解析出来的英文在字典中获取中文意思,然后再通过2的中文意思和3,4,5,6文字进行匹配,匹配上汉字最多的就做选择,如果匹配不上默认返回最后一个。之前本来考虑是用Fuzzywuzzy来进行模糊匹配算相似度的,不过后来测试了下对于中文匹配的效果不好,就改成按汉字单个进行匹配计算相似度。
3.最后通过mouseMove调用autopy操作鼠标点击对应位置进行选择。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[转]Python的自动操作(挂机)脚本相关1 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
之前用了数个月VBS,受不了啦。听闻.py好使就试试看。 1. 鼠标/键盘操作从VBS过来的,先说用过的思路:
keycode/组合键等:keybd_event使用方法 附:Python获取屏幕分辨率
———————————————PyUserInput 2. 屏蔽鼠标键盘输入知道了能在VBS里调用api,于是听说BlockInput可以弄到死机。
也该注意到了,用了user32.dll,哦也就是win的api这样。在VBS中使用:
——————————————.Py
3. 检测/结束进程——————————————.VBS
——————————————.Py
4. 启动外部程序Py和VBS都有几种方式启动外部的程序(.exe等)这里不列出了。 而某些软件启动的时候会挂上其他东西… 最后搜到个命令行用start,微软界面How to redirect command-Line output
命令行:”%comspec% /k
根据以上弄了个拆文件路径的玩意:
(path不是随便输入的,用了PyQt中的QFileDialog获得文件路径。后面会讲)
5. 补充哦,用pyInstaller3.0打包成EXE(-w -F)调试的时候,发现前面有关检测/结束/启动进程用的所有os.popen(cmd)均没反应,不执行动作,搞不清原因,于是换subprocess.Popen(),顺带发现了”cwd=”这玩意,可以指定子进程工作路径了。参考:
os.path.dirname(os.path.abspath(“文件名”)): 表示获取当前文件夹的所在的目录。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[转]wxPython+Boa Constructor环境配置 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
配置之前先完成eclipse + Pydev的配置环境。详见http://wwwblogs/dflower/archive/2010/05/13/1734522.html 1. 安装 wxPython 2.8
用Boa Constructor可以很方便的设计界面,具体的入门教程在最后附上。 但是在Boa里直接写代码还是比较痛苦的,可以先在eclipse里面新建一个工程,然后用Boa constructor设计好GUI保存到工程文件夹里面,再到eclipse里面刷新一下就能载入设计好的py文件,然后就可以在eclipse里面编程和调试了。
--------------------------------------------------------你飘啊飘我摇啊摇无根的分隔线-------------------------------------------------------
附:一个Boa Constructor的入门教程 1、先创建一个wx.App,这样会自动创建wx.Frame,Boa constructor就是这样设置的,我也推荐这样,先有一个app(没有Frame),然后调用其他Frame。创建方法有两种:在最上方的 Palette中的New面板下面选择wx.app;或者在Editor中选择File菜单下面的New的wx.app。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[转]使用Python开发windows桌面程序 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
使用Python开发windows桌面程序一、开发前期准备1. boa-constructor-0.6.1.bin.setup.exe #一个wxWidges的集成开发环境,简单如Delphi,可以直接拖拽控件,并且和其他集成环境不一样, #它不与集成开发环境的MainLoop冲突,用pythonwin,pyScripter都会冲突,典型报错就是运行第二次 #程序的时候,直接导致集成开发环境的强制退出,因为MainLoop冲突了 2. wxPython3.0-win64-3.0.2.0-py27.exe
#wxPython库,提供了用C++写的windows组件库wx 3. py2exe-0.6.9.win32-py2.6.exe #打包发布工具,将python写的windows程序或控制台程序直接打包成exe可执行文件,供用户使用 上述三个软件都是基于python2.6的,软件版本一定要配套,因为他们默认的安装路径和python版本有关系,否则会找不到相关库的存在。 二、开发软件安装完以后,打开BOA,哇塞,拖控件真简单,而且属性啥的和Dephi差不多,你只要改改属性,代码会自动生成,它生成的控件很漂亮,记得以前用 C++6.0开发软件的时候,那个控件真丑,都需要我重新用控件库去绑定优化,现在不用了,BOA生成的控件,视觉效果相当好,开发软件速度相当快,再也 不用为了软件界面而写太多代码,也不用为了生成一个小程序而生成了很多的文件,python开发的程序,没有多余的文件,而且文件很小。 三、发布很多人都想在自己的软件程序写好以后,发布给其他人使用,一方面不希望自己的代码泄露,一方面以此显出一点成就感,呵呵,可以使用py2exe将你的 windows程序打包发布了!当然,首先你得写个如下的setup.py文件:
你可以在命令行下运行: python setup.py py2exe,那么你就会发现你的应用程序出现在dist文件夹里了,恭喜你,完成了windows应用程序的开发! 作者:andyliulin 发表于 2017/10/26 15:10:52 原文链接 https://blog.csdn/andyliulin/article/details/78354128 阅读:390 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[转]一步步用python制作游戏外挂 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
一步步用python制作游戏外挂玩过电脑游戏的同学对于外挂肯定不陌生,但是你在用外挂的时候有没有想过如何做一个外挂呢?(当然用外挂不是那么道义哈,呵呵),那我们就来看一下如何用python来制作一个外挂。。。。我打开了4399小游戏网,点开了一个不知名的游戏,唔,做寿司的,有材料在一边,客人过来后说出他们的要求,你按照菜单做好端给他便好~ 为啥这么有难度?8种菜单记不清,点点就点错,鼠标还不好使肌肉劳损啥的伤不起啊…… 首先要声明,这里的游戏外挂的概念,和那些大型网游里的外挂可不同,不能自动打怪,不能喝药不能躲避GM…… 那做这个外挂有啥用?问的好,没用,除了可以浪费你一点时间,提高一下编程技术,增加一点点点点点点的做外挂的基础以外,毫无用处,如果您是以制作一个惊天地泣鬼神不开则已一开立刻超神的外挂为目标过来的话,恐怕要让您失望了,请及早绕道。我的目的很简单,就是自动玩这款小游戏而已。 工具的准备 这篇文章需要您有Python基础,我不会讲解Python语法啥的~ Python 需要安装autopy和PIL以及pywin32包。autopy是一个自动化操作的python库,可以模拟一些鼠标、键盘事件,还能对屏幕进行访问,本来我想用win32api来模拟输入事件的,发现这个用起来比较简单,最厉害的是它是跨平台的,请搜索安装;而PIL那是大名鼎鼎了,Python图像处理的No.1,下面会说明用它来做什么;pywin32其实不是必须的,但是为了方便(鼠标它在自己动着呢,如何结束它呢),还是建议安装一下,哦对了,我是在win平台上做的,外挂大概只有windows用户需要吧? 截屏和图像处理工具 截屏是获取游戏图像以供分析游戏提示,其实没有专门的工具直接Print Screen粘贴到图像处理工具里也可以。我用的是PicPick,相当好用,而且个人用户是免费的;而图像处理则是为了获取各种信息的,我们要用它得到点菜图像后保存起来,供外挂分析判断。我用的是PhotoShop… 不要告诉Adobe,其实PicPick中自带的图像编辑器也足够了,只要能查看图像坐标和剪贴图片就好饿了,只不过我习惯PS了~ 编辑器 这个我就不用说了吧,写代码得要个编辑器啊!俺用VIM,您若愿意用写字板也可以…… 原理分析 外挂的历史啥的我不想说啦,有兴趣请谷歌或度娘(注:非技术问题尽可以百度)。 看这个游戏,有8种菜,每种菜都有固定的做法,顾客一旦坐下来,头顶上就会有一个图片,看图片就知道他想要点什么菜,点击左边原料区域,然后点击一下……不知道叫什么,像个竹简一样的东西,菜就做完了,然后把做好的食物拖拽到客户面前就好了。 顾客头上显示图片的位置是固定的,总共也只有四个位置,我们可以逐一分析,而原料的位置也是固定的,每种菜的做法更是清清楚楚,这样一来我们完全可以判断,程序可以很好的帮我们做出一份一份的佳肴并奉上,于是钱滚滚的来:) autopy介绍 github上有一篇很不错的入门文章,虽然是英文但是很简单,不过我还是摘几个这次用得到的说明一下,以显示我很勤劳。 移动鼠标 import autopy autopy.mouse.move(100, 100) # 移动鼠标 autopy.mouse.smooth_move(400, 400) # 平滑移动鼠标(上面那个是瞬间的) 这个命令会让鼠标迅速移动到指定屏幕坐标,你知道什么是屏幕坐标的吧,左上角是(0,0),然后向右向下递增,所以1024×768屏幕的右下角坐标是……你猜对了,是(1023,767)。 不过有些不幸的,如果你实际用一下这个命令,然后用autopy.mouse.get_pos()获得一下当前坐标,发现它并不在(100,100)上,而是更小一些,比如我的机器上是(97,99),和分辨率有关。这个移动是用户了和windows中mouse_event函数,若不清楚api的,知道这回事就好了,就是这个坐标不是很精确的。像我一样很好奇的,可以去读一下autopy的源码,我发现他计算绝对坐标算法有问题: point.x *= 0xFFFF / GetSystemMetrics(SM_CXSCREEN); 这里先做除法再做乘法,学过一点计算方法的就应该知道对于整数运算,应该先乘再除的,否则就会产生比较大的误差,如果他写成: point.x = point.x * 0xffff / GetSystemMetrics(SM_CXSCREEN); 就会准多了,虽然理论上会慢一点点,不过我也懒得改代码重新编译了,差几个像素,这里对我们影响不大~咱要吸取教训呀。 点击鼠标 import autopy autopy.mouse.click() # 单击 autopy.mouse.toggle(True) # 按下左键 autopy.mouse.toggle(False) # 松开左键 这个比较简单,不过记得这里的操作都是非常非常快的,有可能游戏还没反应过来呢,你就完成了,于是失败了…… 所以必要的时候,请sleep一小会儿。 键盘操作 我们这次没用到键盘,所以我就不说了。 怎么做?分析顾客头上的图像就可以,来,从获取图像开始吧~ 打开你钟爱的图像编辑器,开始丈量吧~ 我们得知道图像在屏幕的具体位置,可以用标尺量出来,本来直接量也是可以的,但是我这里使用了画面左上角的位置(也就是点1)来当做参考位置,这样一旦画面有变动,我们只需要修改一个点坐标就好了,否则每一个点都需要重新写一遍可不是一件快乐的事情。 看最左边的顾客头像上面的图像,我们需要两个点才可确定这个范围,分别是图像的左上角和右下角,也就是点2和点3,。后面还有三个顾客的位置,只需要简单的加上一个增量就好了,for循环就是为此而生! 同样的,我们原料的位置,“竹席”的位置等等,都可以用这种方法获得。注意获得的都是相对游戏画面左上角的相对位置。至于抓图的方法,PIL的ImageGrab就很好用,autopy也可以抓图,为什么不用,我下面就会说到。 分析图像 我们这个外挂里相当有难度的一个问题出现了,如何知道我们获得的图像到底是哪一个菜?对人眼……甚至狗眼来说,这都是一个相当easy的问题,“一看就知道”!对的,这就是人比机器高明的地方,我们做起来很简单的事情,电脑却傻傻分不清楚。 autopy图像局限 如果你看过autopy的api,会发现它有一个bitmap包,里面有find_bitmap方法,就是在一个大图像里寻找样品小图像的。聪明的你一定可以想到,我们可以截下整个游戏画面,然后准备所有的菜的小图像用这个方法一找就明白哪个菜被叫到了。确实,一开始我也有这样做的冲动,不过立刻就放弃了……这个方法查找图像,速度先不说,它有个条件是“精确匹配”,图像上有一个像素的RGB值差了1,它就查不出来了。我们知道flash是矢量绘图,它把一个点阵图片显示在屏幕上是经过了缩放的,这里变数就很大,理论上相同的输入相同的算法得出的结果肯定是一致的,但是因为绘图背景等的关系,总会有一点点的差距,就是这点差距使得这个美妙的函数不可使用了…… 好吧,不能用也是好事,否则我怎么引出我们高明的图像分析算法呢? 相似图像查找原理 相信你一定用过Google的“按图搜图”功能,如果没有,你就落伍啦,快去试试!当你输入一张图片时,它会把与这张图相似的图像都给你呈现出来,所以当你找到一张中意的图想做壁纸又觉得太小的时候,基本可以用这个方法找到合适的~ 我们就要利用和这个相似的原理来判断用户的点餐,当然我们的算法不可能和Google那般复杂,知乎上有一篇很不错的文章描述了这个问题,有兴趣的可以看看,我直接给出实现: def get_hash(self, img): image = img.resize((18, 13), Image.ANTIALIAS).convert("L") pixels = list(image.getdata()) avg = sum(pixels) / len(pixels) return "".join(map(lambda p : "1" if p > avg else "0", pixels)) 因为这是类的一个方法,所以有个self参数,无视它。这里的img应该传入一个Image对象,可以使读入图像文件后的结果,也可以是截屏后的结果。而缩放的尺寸(18,13)是我根据实际情况定的,因为顾客头像上的菜的图像基本就是这个比例。事实证明这个比例还是挺重要的,因为我们的菜有点儿相似,如果比例不合适压缩后就失真了,容易误判(我之前就吃亏了)。 得到一个图片的“指纹”后,我们就可以与标准的图片指纹比较,怎么比较呢,应该使用“汉明距离”,也就是两个字符串对应位置的不同字符的个数。实现也很简单…… def hamming_dist(self, hash1, hash2): return sum(itertools.imap(operator.ne, hash1, hash2)) 好了,我们可以用准备好的标准图像,然后预先读取计算特征码存储起来,然后再截图与它们比较就好了,距离最小的那个就是对应的菜,代码如下: def order(self, i): l, t = self.left + i * self.step, self.top r, b = l + self.width, t + self.height hash2 = self.get_hash(ImageGrab.grab((l, t, r, b))) (mi, dist) = None, 50 for i, hash1 in enumerate(self.maps): if hash1 is None: continue this_dist = self.hamming_dist(hash1, hash2) if this_dist < dist: mi = i dist = this_dist return mi 这里有一个50的初始距离,如果截取图像与任何菜单相比都大于50,说明什么?说明现在那个位置的图像不是菜,也就是说顾客还没坐那位置上呢,或者我们把游戏最小化了(老板来了),这样处理很重要,免得它随意找一个最相近但又完全不搭边的菜进行处理。 自动做菜 这个问题很简单,我们只需要把菜单的原料记录在案,然后点击相应位置便可,我把它写成了一个类来调用: class Menu: def __init__(self): self.stuff_pos = [] self.recipes = [None] * 8 self.init_stuff() self.init_recipe() def init_stuff(self): for i in range(9): self.stuff_pos.append( (L + 102 + (i % 3) * 42, T + 303 + (i / 3) * 42) ) def init_recipe(self): self.recipes[0] = (1, 2) self.recipes[1] = (0, 1, 2) self.recipes[2] = (5, 1, 2) self.recipes[3] = (3, 0, 1, 2) self.recipes[4] = (4, 1, 2) self.recipes[5] = (7, 1, 2) self.recipes[6] = (6, 1, 2) self.recipes[7] = (8, 1, 2) def click(self, i): autopy.mouse.move(self.stuff_pos[i][0] + 20, self.stuff_pos[i][1] + 20) autopy.mouse.click() def make(self, i): for x in self.recipes[i]: self.click(x) autopy.mouse.move(L + 315, T + 363) autopy.mouse.click() 这是本外挂中最没技术含量的一个类了:)请原谅我没有写注释和doc,因为都很简单,相信你懂得。 作者:andyliulin 发表于 2017/10/26 11:51:41 原文链接 https://blog.csdn/andyliulin/article/details/78352027 阅读:490 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[转]Python Boa-constructor的使用 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
上篇介绍了Python的环境搭建,主要是开发环境的介绍,本篇主要介绍Python的GUI开发工具Boa-constructor的使用和我们的程序开发完毕后的打包问题,本篇还会介绍在Python中我们如何使用第三方扩展库。
一、如何选择GUI开发工具Python的gui开发工具有很多,有Thiner,WxPython,PyQt,pyGtk,Jython,MFC,IronPython,PythonCard,Dabo,AnyGui,Wpy等,简直有太多了,选几种用的比较多的简单介绍一下,目前我用的是WxPyton。 Tkinter Tkinter 似乎是与tcl语言同时发展起来的一种界面库。tkinter是python的配备的标准gui库,也是opensource的产物。Tkinter可用 于windows/linux/unix/macintosh操作系统,而且显示风格是本地化的。Tkinter用起来非常简单,python自带的 IDLE就是采用它写的。除此外,tkinter的扩展集pmw和Tix功能上都要相对它强大,但tkinter却是最基本的。我认为,在用python 做gui开发,tkinter是最基本的知识,所以这个环节是必须要学习的。你或许在以后的开发中并不常用tkinter,但是一些小型的应用上面,他还 是很有用的,而且开发速度也很快。 WxPython WxWidgets应该算是近几年了比较流行的GUI跨平台开发技术了。 wxWidgets有不同的版本应用,有c++的,也有basic的,现在在python上面也有较好的移植。wxpython的功能上面要强于 tkinter,她提供了超过200个类,面向对象的编程风格,设计的框架类似于MFC。对于大型GUI应用上面,wxPython还是具有很强的优势 的。boa constructor可以帮助我们快速可视地构建wxwidgets界面。 Jython 尝试过用python访问java类库吗,那么就用jython吧。jython其实可以认为是另外一个python开发环境,基于java的,但是大多数 的CPython调用jython下还是可以的。你可以在jython环境下像使用java一样来通过python的语法来调用java语言,真的很酷。 MFC Windows Pywin32允许你像VC一样的形式来使用PYTHON开发win32应用。代码风格可以类似win32 sdk,也可以类似MFC,由你选择。如果你仍不放弃vc一样的代码过程在python下,那么这就是一个不错的选择。 WPY MFC风格的Gui开发库,代码风格也类似于MFC,仅管如此,你依旧可以使用这个库来开发GUI应用,而不用担心平台移植的问题。 IronPython 如果你要想开发下面的应用的话,那么IronPython就是你的选择,与jython有点类似,他同样支持标准的python模块,但同样增加了 对库的支持。你也可以理解为他是另一个python开发环境。你可以非常方便地使用python语法进行应用的开发,这一点听起来真的挺 有意思。 上面的内容是Google找的,总之,介绍了这么多,我个人意见是,如果你是java用户,你可以选择用jython;如果你是用户,那么就用ironPython吧。如果你对Visual C++很熟悉,那么你可以使用MFC,WPY或是wxPython,当然我更建议wxPython了。当然,我认为对于tkinter是每一个原来搞C的 人都应该了解和学习的GUI库,因为她很轻便,小型应用就可以使用她来搞定,而对于较大型应用可以采用pyGtk,pyQt,WxPython或 PythonCard来搞定,这样的话,既可以注重知识的衔接性,也可以快速进行开发了。
二、Python扩展库如果说强大的标准库奠定了python发展的基石,丰富的第三方库则是python不断发展的保证,随着python的发展一些稳定的第三库被加入到了标准库里面,可以在http://pypi.python/pypi?%3Aaction=index找到非常多的Python扩展库,其中下面讲的wxPython就是其中之一。我猜你喜欢Python的其中一个理由一定是它的非常多的拓展库,下面列出了常用的Python第三方库。 Django 开源web开发框架,它鼓励快速开发,并遵循MVC设计,我以前用过很多次,比较好用,开发周期短。 ActiveGrid 企业级的Web2.0解决方案。 Karrigell 简单的Web框架,自身包含了Web服务,py脚本引擎和纯python的数据库PyDBLite 。 webpy 一个小巧灵活的Web框架,虽然简单但是功能强大 。 CherryPy 基于Python的Web应用程序开发框架 。 Pylons 基于Python的一个极其高效和可靠的Web开发框架 。 Zope 开源的Web应用服务器。 TurboGears 基于Python的MVC风格的Web应用程序框架。 Twisted 流行的网络编程库,大型Web框架。 Quixote Web开发框架。 Matplotlib 用Python实现的类matlab的第三方库,用以绘制一些高质量的数学二维图形 。 SciPy 基于Python的matlab实现,旨在实现matlab的所有功能 。 NumPy 基于Python的科学计算第三方库,提供了矩阵,线性代数,傅立叶变换等等的解决方案 。 PyGtk 基于Python的GUI程序开发GTK+库。 PyQt 用于Python的QT开发库。 WxPython Python下的GUI编程框架,与MFC的架构相似。 Tkinter Python下标准的界面编程包。 BeautifulSoup 基于Python的HTML/XML解析器,简单易用。 PIL 基于Python的图像处理库,功能强大,对图形文件的格式支持广泛。 MySQLdb 用于连接MySQL数据库。 cElementTree高性能XML解析库,Py2.5应该已经包含了该模块,因此不算一个第三方库了。 PyGame 基于Python的多媒体开发和游戏软件开发模块。 Py2exe 将python脚本转换为windows上可以独立运行的可执行程序。 pefile Windows PE文件解析器
三、boa-constructor的使用我是一个.Net开发人员,我之所以不选择IronPython的原因是不想再让客户端去安装 framework这么庞大的库,所以我选择了wxPython。wxPython的介绍上面有,我个人觉得wxPython还是比较容易学习的。因为有API可以供我们查阅,它和MFC有很多相同或者相似的地方,我个人还是比较喜欢,或者可以我没有去尝试其他的库吧,因为我发现我已经喜欢上它了。 和wxPython库搭配的开发IDE 也有很多,spe, boa-constructor,eclipse+pydev. 个人建议选择boa-constructor 和 Eclipse+Pydev 搭配。其中boa-constructor用来开发界面,Eclipse+Pydev 用来编写代码。 boa-constructor个人感觉还是非常不错的,刚开始可能会不懂,比较吃力一点,但是等你学会使用了以后相信你会喜欢上它的。下载地址:点击此处下载。 安装boa-constructor之前请确定你的机器上已经安装了wxPython 和Python。目前需要wxPython 2.4.0.7 or higher and Python 2.1 or higher. boa-constructor 安装完毕后桌面或者开始菜单并没有它的启动快捷方式或者是目录。你需要在你的Python安装目录下找到Python26\Lib\site-packages\boa-constructor 这个路径下Boa.py文件。Boa.py为boa-constructor启动文件。 1.双击Boa.py文件加载完毕后会出现如下界面。
其中Python,wxPython, boa-constructor 的帮助文档你也会在这个工具条中找到,这几个文档能为你后面的开发工作起到很大的作用。
下面简单介绍一下如何新建工程。
1 # -*- coding: gb2312 -*- 2 3 #Boa:Frame:Frame1 4 5 6 7 import wx 8 9 10 11 def create(parent): 12 13 return Frame1(parent) 14 15 16 17 [wxID_FRAME1, wxID_FRAME1BUTTON1, wxID_FRAME1LABEL1, 18 19 ] = [wx.NewId() for _init_ctrls in range(3)] 20 21 22 23 class Frame1(wx.Frame): 24 25 def _init_ctrls(self, prnt): 26 27 # generated method, don't edit 28 29 wx.Frame.__init__(self, id=wxID_FRAME1, name='', parent=prnt, 30 31 pos=wx.Point(426, 280), size=wx.Size(400, 250), 32 33 style=wx.DEFAULT_FRAME_STYLE, 34 35 title=u'\u6211\u7684\u7b2c\u4e00\u4e2aWxPython\u7a0b\u5e8f') 36 37 self.SetClientSize(wx.Size(384, 212)) 38 39 40 41 self.Label1 = wx.StaticText(id=wxID_FRAME1LABEL1, 42 43 label=u'\u6211\u559c\u6b22BOA', name=u'Label1', parent=self, 44 45 pos=wx.Point(64, 24), size=wx.Size(97, 25), style=0) 46 47 self.Label1.SetBackgroundColour(wx.Colour(228, 252, 230)) 48 49 self.Label1.SetFont(wx.Font(14, wx.SWISS, wx.NORMAL, wx.NORMAL, False, 50 51 u'\u5fae\u8f6f\u96c5\u9ed1')) 52 53 54 55 self.button1 = wx.Button(id=wxID_FRAME1BUTTON1, 56 57 label=u'\u70b9\u51fb\u6309\u94ae', name='button1', parent=self, 58 59 pos=wx.Point(192, 24), size=wx.Size(75, 24), style=0) 60 61 self.button1.Bind(wx.EVT_BUTTON, self.OnButton1Button, 62 63 id=wxID_FRAME1BUTTON1) 64 65 66 67 def __init__(self, parent): 68 69 self._init_ctrls(parent) 70 71 72 73 def OnButton1Button(self, event): 74 75 76 77 fileDlg = wx.FileDialog(self,u'FileDialog',u'choose file') 78 79 re = fileDlg.ShowModal() 80 81 if re==5100: 82 83 sr= fileDlg.GetFilename() 84 85 print sr 86 87 self.ShowDlg(sr) 88 89 #todo: 90 91 event.Skip() 92 93 94 95 def ShowDlg(self,content=""): 96 97 dlg = wx.MessageDialog(self,content, 98 99 '确认框', 100 101 wx.OK | wx.ICON_INFORMATION 102 103 ) 104 105 dlg.ShowModal()
至此,BOA的使用简单介绍到这里,后面更多的探索还要自己去慢慢摸索。 作者:andyliulin 发表于 2017/10/26 11:46:20 原文链接 https://blog.csdn/andyliulin/article/details/78351958 阅读:162 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[转]Memcached和Memcache安装(64位win7) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Memcached和Memcache安装(64位win7)一、Memcached和Memcache的区别: 网上关于Memcached和Memcache的区别的理解众说纷纭,我个人的理解是:Memcached是一个内存缓存系统,而Memcache是php的一个扩展,是php用于操作和管理Memcached的工具。如果安装了Memcached但没有安装Memcache,php无法操控Memcached,但是可以使用命令行来操控Memcached;如果安装了Memcache却没安装Memcached,则无法使用。只有同时安装了Memcached和Memcache,才能在PHP中使用Memcached。 以上仅代表个人观点。 网上关于Memcached和Memcache的安装教程有很多,下面是我参考网上教程并动手操作后总结出来的方法,注意,我的操作是基于64位win7系统的。 二、安装memcached:1. 下载地址:http://pan.baidu/s/1gdKbp8R (这是在网上找的下载地址,我试过,可以下载)2. 解压下载后的文件,把它放到一个目录中,如D:\memcached。3. 打开cmd,进入memcached解压后存放的目录,运行命令: memcached.exe -d install 如果没有意外的话已经安装成功了。 (目录中应该有memcached.exe这个文件)4. 测试是否安装成功: 打开cmd,进入memcached解压后存放的目录,运行命令: memcached -h,若安装成功,会出现如下界面: 5. 启动memcached: 打开cmd,进入memcached解压后存放的目录,运行命令: memcached.exe -d start 这时memcached已经启动,在任务管理器中可以看到这个进程: 6. 连接Memcached: 打开cmd,运行命令: telnet 127.0.0.1 11211 即可连接Memcached。 注:win7中可能会出现“telnet’不是内部或外部命令”的错误,这是因为系统中默认没有安装telnet的缘故,可在“控制面板”->“程序”->“程序和功能”->“打开或关闭Windows功能”中打开“Telnet客户端”。 三、安装memcache的php扩展:1. 下载地址:http://windows.php/downloads/pecl/releases/memcache/3.0.8/ (注意:要下载对应php版本和系统位数的dll文件)2. 把php_memcache.dll放到php的ext目录下,如: D:\wamp\bin\php\php5.5.12\ext3. 打开php.ini,在extension处添加一行代码: extension=php_memcache.dll4. 重启服务器。5. 查看php的extensions服务,php_memcache现在应该可以使用了,即处于打钩状态,之 前是处于叹号状态的,若还处于叹号状态,用鼠标在上面点击一下就好了。6. 通过代码测试php是否已经可以使用memcached: $memcache = new Memcache; $memcache->connect("127.0.0.1",11211); echo "Memcached's version: " . $memcache->getVersion() . " "; $data = array( 'url' => "http://wwwblogs/wujuntian/", 'name' => "编程人,在天涯" ); $memcache -> set("info",$data,0,10); $info = $memcache->get("info"); echo ' '; print_r($info); 若能打印出memcache中的信息,则说明php的memcache扩展已安装成功且能使用了! 注意:运行代码时若出现错误Fatal error: Class 'Memcache' not found,有可能是下载的 php_memcache.dll文件与php版本不符,或者与系统位数不符。 我的是64位系统,php版本是5.5.12,下载的是php_memcache-3.0.8-5.5-ts-vc11-x64.zip 这个文件。作者:andyliulin 发表于 2017/10/24 18:03:26 原文链接 https://blog.csdn/andyliulin/article/details/78332562 阅读:102 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[转]在windows下安装运行disconf | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
在windows下安装运行disconf一.环境准备 1.下载disconf源码 (本文以2.6.36为例) https://github/knightliao/disconf 2.下载nginx1.10.2(windows版) http://nginx/download/nginx-1.10.2.zip 3.安装好tomcat 4.安装好redis 5.安装好zookeeper,可参见http://wwwblogs/mrluo735/p/5345879.html
二.修改配置 1.disconf配置修改 1).jdbc-mysql.properties 修改数据库连接 2).redis-config.properties 修改redis连接 3).zoo.properties 修改zookeeper连接 4).将application-demo.properties 改名为 application.properties 2.打包disconf-web 生成的最终target应当如下
3.构建war包 新建war文件夹,然后分别将war包和相关文件夹从disconfig-web及生成的target下copy出来,最终结果如下,tmp文件夹可以忽略
4.修改tomcat配置 打开/conf/server.xml文件 在Host节点里增加
重启tomcat 5.修改nginx配置 打开/conf/nginx.conf文件 将nginx默认端口改为8000(因为默认端口被iis占用) 增加server节点如下
重启nginx
三.安装disconf数据库 可以参考disconf-web/sql/readme.md 注意顺序执行 0-init_table.sql,1-init_data.sql,201512/20151225.sql,20160701/20160701.sql 作者:andyliulin 发表于 2017/10/21 17:53:05 原文链接 https://blog.csdn/andyliulin/article/details/78305230 阅读:361 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[转]disconf-web在windows下的部署 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
disconf,全称 Distributed Configuration Management Platform(分布式配置管理平台),是java下的一个开源项目,其地址为:https://github/knightliao/disconf 因为作者关于disconf-web项目的部署部分说明完全基于linux,笔者本机不想装个虚拟机再装Linux,所以折腾了N长时间,还找了Java方面的相关人员帮助,好不容易才在windows上成功的部署了web项目,故而在此记录下 disconfig_web的部署说明地址为:https://github/knightliao/disconf/tree/master/disconf-web#how-to-deploy 必须软件安装 1、Tomcat ,下载地址:http://tomcat.apache/ ,安装及配置(含java):http://jingyan.baidu/article/624e7459a7d6e734e9ba5a70.html 2、Nginx,下载地址:http://nginx/en/download.html,安装及配置:http://blog.163/njut_wangjian/blog/static/1657964252013327103716818/,这里因为本机已经装了IIS,所以配置上将Nginx的端口设置成了8081 3、zookeeeper,下载地址:https://zookeeper.apache/releases.html#download,安装及配置:中文版、英文版,这里我部署了三个服务端,配置如下: 物理结构如下: 4、mysql,本机已安装,忽略此步 5、redis,局域网服务器已安装,忽略此步 项目配置修改 此处按帮助说明修改成你实际的配置即可,这里忽略说明 将disconf-web打包成war包 因为没Linux,这里就跟文档上描述的不一样了,下载IdeaIU,安装后,在IDE中打开disconf-master下的pom.xml,当项目加载完成后,选择disconfig-web项目,在工具栏选择 Build -- Build Artifacts...,单击All,之后就是等着maven下载,以及war包生成了 生成的最终target应当如下 生成的结果看起来跟帮助说明中的不一样,但没关系,我们手工调整,先建立个war文件夹,然后分别将war包和相关文件夹从disconfig-web及生成的target下copy出来,最终结果如下,tmp文件夹可以忽略 将你修改的项目配置文件复制并覆盖 WEB-INF\classes 下的同名文件,然后修改Tomact的配置,在Host下增加Context配置,其docBase配置为你的war文件夹物理路径,举例来说我本机是配置成了 C:\\apache-tomcat-8.0.35\\webapps\\disconfig-rd\\war,注意这里反斜杠在xml中要配置成双反斜杠,Tomact端口部分我没变动,还是8080 MySql数据还原 按帮助说明一步步还原即可,此处忽略 Nginx部署 与帮助文档不同的地方在于:去掉了 upstream disconf,将listen端口设置成了8082(因为8081被我设置给了nginx自身),将root修改成了自己的物理路径,最重要的是将proxy_pass修改成了 http://127.0.0.1:8080 [html] view plain copy
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[转]nodejs破解验证码 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
nodejs破解验证码说明 node项目,实现了从pc网站抓取登录接口,获得验证码,并自动破解验证码,最终实现用手机自动登录pc网站。简单点就是 实现设计到验证码破解,网上node能搜出来的结果很少,都是java之类的,主流的组件叫
我们的运行环境是linux centos 6.5,首先谷歌了一个tesseract的安装教程,教程有坑,下面分享实际安装步骤 1、install gcc
2、install dependent packages 依赖包
3、install leptonica
4、install tesseract 需要翻墙
有需要的可以去我网盘下载([链接:]http://pan.baidu/s/1o8gCD1g 密码:ngno) 5、intall tesseract language package 语言包,需要翻墙
有需要的可以去我网盘下载([链接:]http://pan.baidu/s/1o8gCD1g 密码:ngno) 6、测试
如果输出:Tesseract Open Source OCR Engine v3.01 with Leptonica就说明安装没有问题了。
6152 完全正确
经过查找我们找到了tesseract的node包,node-tesseract 1、install
2、引用
3、调用
说明下,tesseract破解的时候建议用gif,或者png,不要用gif,因为gif会提示你报错(no pix returned)。 4、测试 和单独执行tesseract命令结果一样 最后由于这个pc站的验证码纹理少干净,所以破解率很高,如果是有纹理干扰的就会下降,当然也不是没有办法提升, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[转]docker+jenkins+seneca构建去集中化微服务架构 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
前言在微服务架构中,服务发现一直是一件比较复杂的事。而且服务发现式的架构处理不好,容易产生集中化。同时,微服务的提供,不可避免的需要一些负载均衡方案,实现服务的高可用和可扩展,这无疑增加了很多复杂度。 笔者认为,使用异步、基于消息的方式,可能更适合微服务架构。 基于消息的微服务架构,对于所有微服务的部署条件非常简单,只需要能访问到消息服务即可。同时微服务节点的移除和增加不会影响到服务的提供。相比服务发现的架构,简单太多了,简单即是美。 在这次实践中,使用到了seneca,一个nodejs 微服务框架。seneca,使用seneca-amqp-transport插件,可以轻松构建基于消息的微服务。 下面是架构图: www.processon/view/link/5… 在这个架构中,我们使用的是标准的seneca定义的命令规范,这可能是所有微服务都需要遵守的一个规范,至于说使用其他语言,也很简单。封装一个seneca命令规范的库即可。不知道官方有没开发,开发起来难度也不会太大。 接口层比较灵活,可以根据上层应用特性,来决定如何封装传输协议,最后将转化成标准命令发送到消息服务。不建议直接访问消息服务,上层应用应保持灵活。 完整的实践代码:github/luaxlou/mic… 1 前期准备使用docker-machine创建虚拟机。 关于docker的一些基本用法,可以读上一篇文章:docker+consul基于服务发现的极简web架构实践,这里就不再赘述。 依次创建3台虚拟机:
2 开始构建搭建Rabbitmq消息服务消息队列服务,已经成为高并发应用的必备基础服务。我们选用Rabbitmq,你可以换成任意的,遵循amqp协议即可。 使用docker安装很方便,但是生产环境不建议使用docker安装。更推荐的是使用云服务,这样能保证足够高的高可用和扩展性。虽然价格贵点,但是这是唯一的单点,花点钱还是值得的。 直接安装在宿主机上:
这样就启动了一个消息队里服务,并且开放5672端口 安装jenkinsjenkins用于自动集成,不然每次构建是个很麻烦的事。 下面的实践是笔者掉了不少坑之后完成的,jenkins在安装过程中会有不少麻烦,而且在mac下安装也会遇到麻烦。 将jenkins 安装到 node1
查看初始密码: $ cat /mnt/sda1/var/jenkins_home/secrets/initialAdminPassword 安装私有的Registry在mac上安装即可
文档参考:docs.docker/registry/sp… 准备代码代码使用的是seneca官方的例子,完整的Dockerfile也已经写好。
为了让nodejs能使用到多核cpu,Dockerfile 集成了pm2,使用pm2来管理node进程。 完整代码: 配置自动集成这里使用了最新版的jenkins,新版的jenkins使用了pipline。一种新的构建方式,使用groovy语法。 写起来是挺优雅的,但是学习成本颇高。因为文档不全及有些文档失效,笔者不得已反编译了pipeline插件,才得以调通。 使用pipeline script
开始构建,顺利的话,会看到如下的结果: image.png 这是pipeline的特性,可以可视化看到各个阶段的执行情况,算是不小的进步吧。 访问私有Registy的API,就可以看到生成的tag。 curl http://192.168.99.1:5000/v2/seneca-listener/tags/list 最后一步,试试我们的程序在宿主机发布消息:
seneca-clinet 代码是接口层代码的示意,可以根据自己的喜好封装。 同时直接发送了命令代码用于测试。 进入seneca-clinet 目录
这个程序会每隔两秒发送一个命令:
虽然一直在发命令,你很快就会发现命令全部超时了。这是因为还没有消费者,当然这些命令也没有丢失,只不过接口层没有得到及时返回。如果应用层支持异步的模式,每个command都有独立的id,可以保留id后,以后再过来取。这就很灵活了,一切看需求去封装接口层即可。 进入node2
启动后,回到seneca-clinet,发现之前超时的命令,全部接收到了。
至此,完整架构已经构建完毕。 一些未完的事项1.自动集成,只需要配置webhook即可。 总结这篇文章算是一个新的里程碑,实践的成果将用于后期的架构。docker让我从传统的架构模式中脱离出来,同时也让我吃了不少苦头。但这一切都是值得的。 同时也是一个新的开始,终于从之前的公司出来。未来何去何从,有很多的未知,但我相信都是美好的。 这也许就是人生的魅力。 Hello World!! 作者:andyliulin 发表于 2017/10/18 09:37:44 原文链接 https://blog.csdn/andyliulin/article/details/78269385 阅读:493 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[转]Centos7 搭建最新 Nexus3 Maven 私服 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Centos7 搭建最新 Nexus3 Maven 私服Maven 介绍Apache Maven 是一个创新的软件项目管理和综合工具。 Maven 提供了开发人员的方式来管理: Maven 主要目标是提供给开发人员: 私服介绍私服是指私有服务器,是架设在局域网的一种特殊的远程仓库,目的是代理远程仓库及部署第三方构建。有了私服之后,当 Maven 需要下载构件时,直接请求私服,私服上存在则下载到本地仓库;否则,私服请求外部的远程仓库,将构件下载到私服,再提供给本地仓库下载。 Nexus 介绍Nexus 是一个强大的 Maven 仓库管理器,它极大地简化了本地内部仓库的维护和外部仓库的访问。 为什么要构建 Nexus 私服?如果没有 Nexus 私服,我们所需的所有构件都需要通过 maven 的中央仓库和第三方的 Maven 仓库下载到本地,而一个团队中的所有人都重复的从 maven 仓库下载构件无疑加大了仓库的负载和浪费了外网带宽,如果网速慢的话,还会影响项目的进程。很多情况下项目的开发都是在内网进行的,连接不到 maven 仓库怎么办呢?开发的公共构件怎么让其它项目使用?这个时候我们不得不为自己的团队搭建属于自己的 maven 私服,这样既节省了网络带宽也会加速项目搭建的进程,当然前提条件就是你的私服中拥有项目所需的所有构件。 总之,在本地构建 nexus 私服的好处有: 1. 安装 jdk1.8 关于 jdk1.8 的安装, 在这里就不做赘述了 2. 安装 maven 关于 maven 的安装, 本文在这里就不详细写了 3. 安装 nexus3 1. 下载 NEXUS-3.6.0-02-UNIX.TAR.GZ 官网链接地址:www.sonatype/download-os… 下载 linux 最新版本,直接下载速度可能很慢,建议用迅雷下载会快很多的。 2. 解压
3. 启动 NEXUS3
稍等一会 (首次启动会比较慢), 当出现以下日志的时候表示启动成功!
4. 开启远程访问端口 关闭防火墙,并开启远程访问端口 8081
5. 测试
6. 设置开机自启动
7. 修改 NEXUS3 的运行用户为 ROOT
8. 修改 NEXUS3 启动时要使用的 JDK 版本
第 14 行:
9. 修改 NEXUS3 默认端口 (可选)
默认端口: 8081
10. 修改 NEXUS3 数据以及相关日志的存储位置 (可选):
出现上面 5 中的测试页面,说明配置 nexus 成功! 点击右上角 “Log in”, 输入默认用户名 (admin) 和默认密码(admin123)登录 至此, nexus3_maven 的私服就搭建完成了!!! 可以点击上面的 “设置” 图标,在 “设置” 里可以添加用户、角色,对接 LDAP 等的设置,如下: 可以在 “管理” 里查看 nexus 的系统信息 注意:1ponent name 的一些说明: 2.Nexus 默认的仓库类型有以下四种:
3.Policy(策略): 表示该仓库为发布 (Release) 版本仓库还是快照 (Snapshot) 版本仓库; 4.Public Repositories 下的仓库 1)3rd party: 无法从公共仓库获得的第三方发布版本的构件仓库,即第三方依赖的仓库,这个数据通常是由内部人员自行下载之后发布上去; 2)Apache Snapshots: 用了代理 ApacheMaven 仓库快照版本的构件仓库 3)Central: 用来代理 maven 中央仓库中发布版本构件的仓库 4)Central M1 shadow: 用于提供中央仓库中 M1 格式的发布版本的构件镜像仓库 5)Codehaus Snapshots: 用来代理 CodehausMaven 仓库的快照版本构件的仓库 6)Releases: 内部的模块中 release 模块的发布仓库,用来部署管理内部的发布版本构件的宿主类型仓库;release 是发布版本; 7)Snapshots: 发布内部的 SNAPSHOT 模块的仓库,用来部署管理内部的快照版本构件的宿主类型仓库;snapshots 是快照版本,也就是不稳定版本所以自定义构建的仓库组代理仓库的顺序为:Releases,Snapshots,3rd party,Central。也可以使用 oschina 放到 Central 前面,下载包会更快。 5.Nexus 默认的端口是 8081,可以在 etc/nexus-default.properties 配置中修改。 6.Nexus 默认的用户名密码是 admin/admin123
8.Nexus 的工作目录是 sonatype-work(路径一般在 nexus 同级目录下)
Nexus 仓库分类的概念: 1)Maven 可直接从宿主仓库下载构件, 也可以从代理仓库下载构件, 而代理仓库间接的从远程仓库下载并缓存构件 2)为了方便, Maven 可以从仓库组下载构件, 而仓库组并没有时间的内容 (下图中用虚线表示, 它会转向包含的宿主仓库或者代理仓库获得实际构件的内容). Nexus 的 web 界面功能介绍1.BROWSE SERVER CONTENT 1.1 Search 这个就是类似 Maven 仓库上的搜索功能,就是从私服上查找是否有哪些包。 注意: 1)在 Search 这级是支持模糊搜索的,如图所示: 2)如果进入具体的目录,好像不支持模糊搜索,如图所示: 1.2 Browse 1)Assets 2.SERVER ADMINSTRATION AND CONFIGURATION 看到这个选项的前提是要进行登录的,如上面已经介绍登陆方法,右上角点击 “Sign In” 的登录按钮,输入 admin/admin123, 登录成功之后,即可看到此功能,如图所示: 2.1 Blob Stores 文件存储的地方,创建一个目录的话,对应文件系统的一个目录,如图所示: 2.2 Repositories 1)Proxy 这里就是代理的意思,代理中央 Maven 仓库,当 PC 访问中央库的时候,先通过 Proxy 下载到 Nexus 仓库,然后再从 Nexus 仓库下载到 PC 本地。 这样的优势只要其中一个人从中央库下来了,以后大家都是从 Nexus 私服上进行下来,私服一般部署在内网,这样大大节约的宽带。 创建 Proxy 的具体步骤 1 点击 “Create Repositories” 按钮 2 选择要创建的类型 3 填写详细信息 Name:就是为代理起个名字 Remote Storage: 代理的地址,Maven 的地址为: repo1.maven/maven2/ Blob Store: 选择代理下载包的存放路径 2)Hosted Hosted 是宿主机的意思,就是怎么把第三方的 Jar 放到私服上。 Hosted 有三种方式,Releases、SNAPSHOT、Mixed Releases: 一般是已经发布的 Jar 包 Snapshot: 未发布的版本 Mixed:混合的 Hosted 的创建和 Proxy 是一致的,具体步骤和上面基本一致。如下: 注意事项: Deployment Pollcy: 需要把策略改成 “Allow redeploy”。 3)Group能把两个仓库合成一个仓库来使用,目前没使用过,所以没做详细的研究。 2.3 Security这里主要是用户、角色、权限的配置(上面已经提到了在这里添加用户和角色等) 2.4 Support 包含日志及数据分析。 2.5 System 代理中央仓库只要在 PMO 文件中配置私服的地址(比如 http://192.168.1.14:8081)即可,配置如下:
SNAPSHOT 包的管理1)修改 Maven 的 settings.xml 文件,加入认证机制
2)修改工程的 Pom 文件
注意事项: 上面修改的 Pom 文件如截图中的名字要跟 / usr/local/maven/conf/settings.xml 文件中的名字一定要对应上。 3)上传到 Nexus 上 1– 项目编译成的 jar 是 Snapshot(POM 文件的头部)
2– 使用 mvn deploy 命令运行即可(运行结果在此略过) 3– 因为 Snapshot 是快照版本,默认他每次会把 Jar 加一个时间戳,做为历史备份版本。 RELEASES 包的管理1)与 Snapshot 大同小异,只是上传到私服上的 Jar 包不会自动带时间戳2)与 Snapshot 配置不同的地方,就是工程的 PMO 文件,加入 repository 配置
3)打包的时候需要把 Snapshot 去掉
第三方 JAR 上传到 NEXUS[root@master-node src]# mvn deploy:deploy-file -DgroupId=org.jasig.cas.client -DartifactId=cas-client-core -Dversion=3.1.3 -Dpackag | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[转]github上实用、常用的插件和库 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
本文整合罗列一些平时工作或者练手项目中很可能用到的、github上实用、轻量级、无依赖的插件和库,包括功能插件、UI组件、炫酷动画、前沿技术等,让你在少造轮子的同时,享受快速开发的畅快体验。 我会在 github 上持续更新此列表,感兴趣的可以点我star Echo.js – 简单易用的图片延迟加载插件github:https://github/toddmotto/echo 官方网站:https://toddmotto/echo-js-simple-javascript-image-lazy-loading/ star: 3K+ size:2KB 功能介绍:
Lazyr.js – 延迟加载图片(Lazy Loading)github:https://github/callmecavs/layzr.js 官方网站:http://callmecavs/layzr.js/ star: 5K+ size:2.75KB 功能介绍:
infinite-scroll – 一款滚动加载按需加载的轻量级插件github:https://github/infinite-scroll/infinite-scroll 官方网站:http://www.infinite-scroll/ star:5k+ 功能介绍:
iscroll - 在网页上实现平滑滚动github:https://github/cubiq/iscroll 官方网站:http://iscrolljs star:9K+ 功能介绍:
better-scroll.js – 小巧,灵活的 JavaScript 模拟滚动条的插件github:https://github/ustbhuangyi/better-scroll 官方网站:https://ustbhuangyi.github.io/better-scroll/ star:1.7K+ size: 24KB 功能介绍:
better-picker – 一款轻量级IOS风格的JavaScript选择器github:https://github/ustbhuangyi/picker 官方网站:http://ustbhuangyi.github.io/picker/ star: 500+ size: 46.5KB 功能介绍:
nativeShare.js - 调起移动端浏览器自带分享功能github: https://github/fa-ge/NativeShare star: 60+ size: 4KB 功能介绍:
Share.js - 纯网页端一键分享github: https://github/overtrue/share.js star: 1.4k+ 功能介绍:
Sortable – 一款用于实现元素拖拽排序的功能的插件github:https://github/RubaXa/Sortable 官方网站:http://rubaxa.github.io/Sortable/ star:11k+ size: 5KB 功能介绍:
react-sortable-hoc - react 拖拽排序github: https://github/clauderic/react-sortable-hoc star:2.8K+ 功能介绍:
Draggabilly – 轻松实现拖放功能(Drag & Drop)github:https://github/desandro/draggabilly 官方网站:http://draggabilly.desandro/ star:2.9k+ size: 5KB 功能介绍:
slick – 功能异常强大的一个图片滑动切换效果库github:https://github/kenwheeler/slick 官方网站:http://kenwheeler.github.io/slick/ star: 19K+ size: 40KB 功能介绍:
react-slick - 基于 slick 打造的 react-slick组件github: https://github/akiran/react-slick 官网:http://neostack/opensource/react-slick star: 3.3K+ 功能介绍:
swipe – 非常轻量级的一个图片滑动切换效果库github:https://github/lyfeyaj/Swipe 官方网站:http://lyfeyaj.github.io/swipe/ star:390+ size: 5KB 功能介绍:
Slideout.js – 触摸滑出式 Web App 导航菜单github:https://github/mango/slideout 官方网站:https://slideout.js/ star:6.7k+ size: 4KB 功能介绍:
SweetAlert – 替代 Alert 的漂亮的提示效果github:https://github/t4t5/sweetalert 官方网站:http://t4t5.github.io/sweetalert/ star:16k+ 功能介绍:
push.js - 桌面通知 Notification框架库github: https://github/Nickersoft/push.js star: 6.1k+ 功能介绍:Push 是 BrowserStack 出品的,快速实现基于 HTML5 API Notification 的桌面消息推送工具;Push 能够自动利用 Chrome、Safari、Firefox、IE9+ 这些现代浏览器提供的底层接口,为开发者提供跨平台的统一调用,如果浏览器不支持此 API,则启动回退机制,支持 Chrome, Safari, Firefox, and IE 9+ tracking.js - web端图像追踪引擎github:https://github/eduardolundgren/tracking.js 官网:https://trackingjs/ star:5.4K+ 功能介绍:
AlloyImage - 堪称前端PS的前端图像处理类库github:https://github/AlloyTeam/AlloyImage 官网:http://alloyteam.github.io/AlloyImage/ star:1.7K+ 功能介绍:
gm - 基于nodeJS操作图片的库github:https://github/aheckmann/gm 官网:http://aheckmann.github.io/gm/ star:4.3K+ 功能介绍:
star:4.3K+ Awesomplete.js - 比datalist更强大更实用,零依赖的简单自动补全插件github:https://github/leaverou/awesomplete/ 官方网站:http://leaverou.github.io/awesomplete/ star: 5.6K+ size: 5KB 功能介绍:
Cleave.js – 自动格式化表单输入框的文本内容github:https://github/nosir/cleave.js/ 官方网站:http://nosir.github.io/cleave.js/ star: 7.2K+ size: 11.1KB 功能介绍:
Immutable.js – JavaScript 不可变数据集合(Facebook出品)github:https://github/facebook/immutable-js 官方网站:http://facebook.github.io/immutable-js/ star: 20K+ size: 60KB 功能介绍:
howler.js - 为现代web浏览器打造的 javascript音频库github:https://github/goldfire/howler.js 官网:https://howlerjs/ star: 8.4K+ size: 28.3KB 功能介绍:
Popmotion.js – 小巧,灵活的 JavaScript 运动引擎github:https://github/Popmotion/popmotion 官方网站:https://popmotion.io/ star:3.9k+ size: 12KB 功能介绍:
Dynamics.js - 创建逼真的物理动画的 JS 库github:https://github/michaelvillar/dynamics.js 官方网站:http://dynamicsjs/ star:6.5k+ size: 20KB 功能介绍:
Snabbt.js – 极简性能的 JavaScript 动画库github:http://daniel-lundin.github.io/snabbt.js/ star:5k+ 功能介绍:
animate.css - 经典的 cs动画库github: https://github/daneden/animate.css star: 44k+ 功能介绍:
velocity.js - javascript动画库,专注于动画的渲染速度github: https://github/julianshapiro/velocity 官网:http://velocityjs/ star:13.3K+ 功能介绍:
mojs - web端图形运动算法库,用于制作复杂的炫酷动画效果github:https://github/legomushroom/mojs star: 11.9K+ 功能介绍:
tween.js - javascript tweening enginegithub: https://github/tweenjs/tween.js star: 4.5k+ 功能介绍:
Rainyday.js – 使用 JavaScript 实现雨滴效果github:https://github/maroslaw/rainyday.js 官方网站:http://maroslaw.github.io/rainyday.js/ star:5.2k+ size: 10KB 功能介绍:
vx react + D3github: https://github/hshoff/vx 官网:https://vx-demo.now.sh/ star:2.6K+ 功能介绍:
vue-svg-icon - 轻量的Vue2多色动态svg图标方案github: https://github/cenkai88/vue-svg-icon star: 230+ 功能介绍:
pasition - 轻量级Path过渡库,渲染到任何地方github: https://github/AlloyTeam/pasition star:700k+ 功能介绍:
scrollReveal.js – 使元素以非常酷帅的方式进入画布 (Viewpoint)github:https://github/jlmakes/scrollreveal 官方网站:https://scrollrevealjs/ star:12k+ size: 8KB 功能介绍:
Swiper – 经典的移动触摸滑块轮播插件github:https://github/nolimits4web/Swiper 官方网站:http://idangero.us/swiper/ star:13.3k+ 功能介绍:
imagesLoaded – 检测网页中的图片是否加载完成github:https://github/desandro/imagesloaded 官方网站:http://imagesloaded.desandro/ star:6.6k+ size: 1.9KB 功能介绍:
Fort.js – 时尚、现代的表单填写进度提示效果github:https://github/idriskhenchil/Fort.js 官方网站:https://github/idriskhenchil/Fort.js star:900+ size: 6KB 功能介绍:
MagicSuggest – Bootstrap 主题的多选组合框github:https://github/nicolasbize/magicsuggest 官方网站:http://nicolasbize/magicsuggest/ star:1.2k+ size: 21.8KB 功能介绍:
Numeral.js – 格式化和操作数字的 JavaScript 库github:https://github/adamwdraper/Numeral-js 官方网站:http://numeraljs/ star:5.3k+ size: 10KB 功能介绍:
Quill – 可以灵活自定义的开源的富文本编辑器github:https://github/quilljs/quill/ 官方网站:https://quilljs star:14k+ 功能介绍:
request - 让 http请求变得更简单github: https://github/request/request star: 16.7K+ size: 500K+ 功能介绍:
r2 - 参考 request打造的轻量级、高可用的 http客户端github: https://github/mikeal/r2 size: 66K 功能介绍:
basket.js – 基于 LocalStorage 的资源加载器github:https://github/addyosmani/basket.js 官方网站:https://addyosmani/basket.js/ star:2.9k+ size: 4KB 功能介绍:
moment.js – 一款轻量级的Javascript日期处理类库github:https://github/moment/moment/ 官方网站:http://momentjs/ star:32k+ size: 16.6KB 功能介绍:
hammerjsgithub:https://github/hammerjs/hammer.js/ star: 16k+ 功能介绍:
ityped - 模拟打字效果github: https://github/luisvinicius167/ityped 官网:https://ityped.surge.sh/ star: 1.7K+ size: 1.9KB 功能介绍:
favico.js - 动态变换网站图标github:https://github/ejci/favico.js star: 7.6K+ 功能介绍:
move.js - js动态设置 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[译]阿里巴巴Java开发规约插件使用 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
就在今天 10月14日上午9:00 阿里巴巴于在杭州云栖大会《研发效能峰会》上,正式发布《阿里巴巴Java开发手册》扫描插件,该插件在扫描代码后,将不符合《手册》的代码按Blocker/Critical/Major三个等级显示在下方,甚至在IDEA上,还基于Inspection机制提供了实时检测功能,编写代码的同时也能快速发现问题所在。对于历史代码,部分规则实现了批量一键修复的功能。--两个字牛逼 IDea的安装方式:IDEA版的插件发布到了IDEA官方仓库中(最低支持版本14.1.7,JDK1.7+),
输入 Alibaba 搜索一下便可以看到对应插件了,点击安装等待安装完成。 这里写图片描述 Eclipse的安装方式:Eclipse版插件支持4.2(Juno,JDK1.8+)及以上版本,提供Update Site,通过
然后输入https://p3c.alibaba/plugin/eclipse/update 即可看到安装列表,安装即可。 插件的更新,可以通过 Help >> Check for Udates 进行新版本检测。 怎么用呵呵 右键,,看图 -- 这里写图片描述 这里写图片描述 这里写图片描述 还有自动提示的效果这里写图片描述 可以说是非常棒了 这里写图片描述 文章如有侵权地方,请告知删除 作者:andyliulin 发表于 2017/10/15 23:50:29 原文链接 https://blog.csdn/andyliulin/article/details/78245550 阅读:124 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
版权声明:本文标题:转自 静心梦工厂 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1726379409h948686.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论