月度归档: 2021 年 3 月

IOS技术栈总结

IOS技术栈总结
前言
技术栈
一.语法
1.Objective-C
2.swift
3.C语言
二.UI
1.页面绘制
2.动画
3.图像处理
4.音频视频
三.网络
1.通讯协议
2.断点下载
3.断点上传
4.网络异常(弱网)处理
四.存储
1.文件系统与沙盒机制
2.NSUserDefaults存储
3.文件读写
4.数据流读写
5.数据库
五.线程
1.线程类型
2.线程通讯
3.线程锁
六.内存
1.内存管理机制ARC/MRC
2.内存泄露原理
3.缓存管理
七.架构
1.设计模式
2.路由
3.Native与Web混合开发架构
八.系统
1.RunLoop
2.RunTime
九.安全
1.应用安全防护
2.沙盒
3.网络安全
十.数据加解密
1.对称加密
2.非对称加密
3.报文加解密优化
十一.代码管理
1.SVN
1.git
十二.证书与发布管理
1.签名原理
2.证书签发流程
3.上架流程
4.审核问题处理
十三.开发工具
1.快捷键
2.插件
3.调试与性能测试工具
总结

 

前言
技术栈就是在某一个领域(项目或工程)所需要的一堆技能,整理起来的技术链。作为一个程序猿有必要整理一下自己的技能树方便查缺补漏,所以整理了一下这几年做IOS开发接触或使用到的技能树。这份整理的技能树带有很大的个人技能倾向性。

技术栈
一.语法
1.Objective-C
基础语法
对象模型
动态特效
2.swift
基础语法
3.C语言
基础语法
面向对象
数据结构与算法
常用网络协议
二.UI
1.页面绘制
UIkit
Core Animation
Core Text
2.动画
Core Graphics
Quartz 2D
3.图像处理
openGL ES
GLKit
SpriteKit
SceneKit
4.音频视频
AudioToolbox
AVAudioPlayer
三.网络
1.通讯协议
TCP/UDP
Http/Https
2.断点下载
3.断点上传
4.网络异常(弱网)处理
四.存储
1.文件系统与沙盒机制
2.NSUserDefaults存储
3.文件读写
4.数据流读写
5.数据库
五.线程
1.线程类型
GCD
NSHread
NSOperationQueue
2.线程通讯
3.线程锁
六.内存
1.内存管理机制ARC/MRC
2.内存泄露原理
3.缓存管理
七.架构
1.设计模式
MVC
MVVM
KVO
KVC
2.路由
3.Native与Web混合开发架构
JSBridge
UIWebView/WKWebView
八.系统
1.RunLoop
2.RunTime
九.安全
1.应用安全防护
加固
完整性校验
签名校验
放动态调试
越狱检测
越狱
2.沙盒
3.网络安全
通讯加密
https ssl证书校验
十.数据加解密
1.对称加密
2.非对称加密
3.报文加解密优化
十一.代码管理
1.SVN
1.git
十二.证书与发布管理
1.签名原理
2.证书签发流程
3.上架流程
4.审核问题处理
十三.开发工具
1.快捷键
2.插件
3.调试与性能测试工具
总结
以上技术栈是根据个人开发经验所整理的,也是对自己IOS技能的一个总结。会有些遗漏或者不完全合理的地方,在不断学习中会继续添加修改。

asp.net core web 开发

各位好

一直想学习 asp.net core web 开发 目前基础 熟悉 C#及 WPF 桌面应用开发、了解 asp.net core 原理及 MVC 模型 对 HTML 、CSS 也有一定的基础,刚接触 Razor 与 Blazor 想往 asp.net core web 开发深入发展,总感觉学习的很慢,上手慢 大家有什么好的学习教程或者资源,或者有什么上手建议啊,谢谢大家的指点:

26 条回复  •  2021-03-11 08:44:00 +08:00
1 kiracyan   20 天前 微软官方文档
2 luchong   20 天前 客户端做久了 感觉都跟不上时代了
3 aw2350   19 天前 via iPhone   1 千万不要!你这是自己往*路上走!不要学 net,不要吃微软的饭!
4 goobai   19 天前 via Android 学什么.net 自己把路走窄了
5 gumang1988   19 天前 博客园 老张的哲学
6 ooee2016   19 天前 后端使用 .net core web api 。前端使用 vue/react 等前端框架。 这种的教程多,工作中使用的也多。b 站找个视频跟着做一遍就了解了。
7 EKkoGG   19 天前 Razor,Blazor,MVC 都不用学 后端只学 webapi 就行了,前端可以学学 Vue,React 或者小程序 教程 B 站搜就行了
8 crclz   19 天前 后端只学 webapi 就行了,学会了可以无痛过渡到 springboot 。其他的学了也用不上。教程在 https://docs.microsoft.com/zh-cn/dotnet/
9 lancelock   19 天前 via iPhone 你要学可用来工作可能不太合适,我做自己的东西会用 blazor,但国内企业是不会用的。你顶多学学 web api 就可以了
10 jatai   19 天前 via Android 别自寻死路,大清自有国情在此
11 INCerry   19 天前 小伙子加油 有任何问题欢迎私聊我
12 ijrou   19 天前 国内做 net 还是*少数。。。诶。。。
13 jtsai   19 天前 我*近也接手到一个 core 的项目,直接看项目代码学挺快上手的,M$官方文档我也看了云里雾里。
14 leeg810312   19 天前 via Android 学好了,可以去微软工作
15 baobao1270   19 天前 微软的官方文档其实很详细 视频的话,B 站有个 UP 主叫软件工艺师,是微软的 MVP,教程挺不错的,还能顺便学学 Go 和 Rust,技多不压身
16 fiveelementgid   19 天前 via Android 诶,很欣慰还有人愿意学 asp net core 大系。我用一个过来人的角度+*近面试的情况告诉你,你学 go Java 都可以,你做 asp.net core 的话就是死路一条 千万别入坑,已经失业的老前辈正在看着你
17 PerFectTime   19 天前   1 https://pan.baidu.com/s/1pQIXYPj1XTq_Ioi6O0P1cg 提取码: d7nl 今天刚找到的资源,清晰度还可以,大概 47G
18 leoskey   19 天前 1. (官方文档)[https://docs.microsoft.com/zh-cn/dotnet/] 入门 2. 学习 asp.net core identity 和 identityServer 4 授权认证 3. (eShopOnWeb)[https://github.com/dotnet-architecture/eShopOnWeb] 入门 DDD 4. (eShopOnContainers)[https://github.com/dotnet-architecture/eShopOnContainers] 深入 DDD 与微服务
19 jing8956   19 天前 via Android (某落魄.net 程序猿,西安地铁口卖炸鸡 orz 。。。想来吃炸鸡来延平门地铁 D2 出口直走几步左手边就是
20 badacook   19 天前   首先 感谢各位的热心回复和指点 怎么说呢 一直想在 web 开发方面 构建自己的比较底层的知识系统也想拥有自己的开发能力 也想构建自己的技术栈,内心对朝令夕改的前端框架多少有些抵触,之前差点儿上手 PHP 和 JS 但是在上手 C#后,见 .net core 开源后呼声和支持也是比较高,就想往这方面发展 其实在接触 C#时,也有感受到*近十多年微软技术栈对开发者的不友好,及国内市场的不待见 学习的时候也甚是彷徨,语言众多,生命周期也是无法预见,就业市场的束缚,一个技术栈的学习成本着实比较高
21 quan01994   19 天前 *好的就是微软文档,和一些开源的项目。比如 musicstore,eshoponContainer,abp 之类的
22 aw2350   19 天前 via iPhone @jing8956 老哥,炸鸡应该收入还可以吧
23 fanfpy   19 天前 @jing8956 老哥 咱离的很近啊, 俺也.net ,请问卖炸鸡还招人吗
24 forgottencoast   18 天前 想学.Net Web 开发的,一定要学好英语,因为外企的机会多。
25 jing8956   18 天前 via Android @aw2350 收什么啊,也就三千块,优点不加班,离得近 @fanfpy Quin 啊,快来 前工作敲代码拧螺丝,还不如炸鸡轻松自在,而且钱还差不多。
26 stockmaster   18 天前 @aw2350 这话说的。微软早就拥抱开源了,.net core 现在也可以在 linux 上流畅运行。我觉得.net 把 java 干掉是迟早的事。

pandas.DataFrame 的列筛选

大家好 在使用 pandas 进行数据处理时 想实现类似中 在列标题上对表格数据进行筛选的功能
经过可以通过尝试 pandas.DataFrame.loc 函数实现,参数为 boolean array
boolean array 可以通过 DataFrame[ColumnIndexName]的 Series 的数值比较 或者 Series.str 的 contains 、startswith 、endswith 等方法获取
这取决于 DataFrame[ColumnIndexName]的 value 为数值还是 字符串,当然字符串也支持 “==”运算符,Series.str 部分方法也可支持正则表达式 使用更灵活
如果 pandas.DataFrame 想进行 多列的筛选是否 必须分步进行,不知道是否有更好的筛选方法 可以实现一步多列筛选数据
pandas.DataFrame result 实例如下 :
code code_name
0 sh.000001 上证综合指数
1 sh.000001 上证 A 股指数
2 sz.000001 上证 B 股指数
3 sh.000002 上证综合指数
4 sz.000002 上证 A 股指数
5 sz.000002 上证 B 股指数

分步筛选代码实例:
pat1 = “sz”
pat2 = “B”
result = result.loc[(result[“code”].str.contains(pat1))]
result = result.loc[(result[“code_name”].str.contains(pat2))]

是否可以一步直接实现多列组合条件的筛选,其中 result[“code”].str.contains(pat1)与(result[“code_name”].str.contains(pat2) 逻辑运算和 Series[]的逻辑运算为找到有效方法
还望有 pandas 数据筛选的前辈 指点一下 关于多列组合条件 筛选的实现方法,小弟不胜感激。

17 条回复  •  2021-03-26 09:47:42 +08:00    
1 badacook   5 天前 居然是使用&,明明 python 中逻辑运算符 不包含这个啊,测试有效 result = result.loc[(result[“code”].str.contains(pat1)) & (result[“code_name”].str.contains(pat2))] 不知道 各位 还有没有其他行之有效的方法 实现 pandas 数据的并列筛选
   
2 noqwerty   5 天前 文档里都写了的: https://pandas.pydata.org/docs/getting_started/intro_tutorials/03_subset_data.html#how-do-i-filter-specific-rows-from-a-dataframe 如果没有同时筛选列的话还可以把你的.loc 去掉  
 
3 lizliz   5 天前 @badacook 我都是这么操作的,基本上就是这样了吧,没见过其他操作
   
4 bigtan   5 天前 np.logical_and/or 我比较喜欢这个
   
5 badacook   5 天前 @noqwerty @lizliz @bigtan 现在 还遇上一个问题 如果其中一个条件需要取反 怎么表达式怎么写啊 就比如 不包含 pat2,并列筛选 result = result.loc[(result[“code”].str.contains(pat1)) & (result[“code_name”].str.contains(pat2))] 第二个条件 取反 如何写表达式啊,尝试了没实现 还望各位指点一下  
 
6 badacook   5 天前 @noqwerty 非常感谢你分享的文档链接,哈哈哈其实今天是*天 开始用 pandas 库,API 文档都是 今天别人分享给我后查到这么处理的,要是早看到 你的分享 就不用试这么久了,还是非常感谢了    
7 noqwerty   5 天前 @badacook #5 result[(result[“code”].str.contains(pat1)) & (~result[“code_name”].str.contains(pat2))]    
8 badacook   5 天前 @noqwerty 非常感谢啊 还有一列 数据格式为 str,类似 datetime.datetime.now().strftime(“%Y/%m/%d”)格式 实例如下:不知道能不能 将这个 str 转换为 一个可运算的 datetime 对象,从而对该列进行筛选 ipoDate 1990/12/10 1991/1/29 不知有何好的方法啊,还望不吝赐教    
9 noqwerty   5 天前 @badacook #8 真的建议你好好翻一下文档 ? Google 出来的前两条都是你要的答案 https://stackoverflow.com/questions/26763344/convert-pandas-column-to-datetime    
10 badacook   5 天前 @noqwerty 哈哈哈 昨天有看文档 都是 展示的 datetime 数据格式化输出的,就想到了问大佬了 多谢大佬 *近可能是 google 不太好使,就忘了这一茬了,一定改正 改正
   
11 bigtan   5 天前 numpy.logical_not    
12 lizliz   5 天前 取反就是~    
13 zyb201314   5 天前 via Android print(result[result.code.str.contains(“sz”)&result.code_name.str.contains(“B”)])    
14 princelai   5 天前 ()&()方法更常用,query 方法只有在不加 engine=’python’参数下才会更快,没办法,你这个必须用这样的。 “` result =result(“code.str.contains(pat1) and code_name.str.contains(pat2)”,engine=’python’) “`
   
15 princelai   5 天前 @princelai #14 上面写错了 “` result =result.query(“code.str.contains(pat1) and code_name.str.contains(pat2)”,engine=’python’) “`    
16 badacook   3 天前 @princelai 很抱歉 经查询 pandas.DataFrame.query 语法,并验证你提供的 答案报错,不过还是谢谢你的回复    
17 princelai   3 天前 @badacook #16 表达式内引用外部数据要用 @引用符,你这里可能要改为 @pat1,@pat2 试试

面向微服务架构与传统架构、SOA对比,以及云化对比

谈微服务,首先要谈“Monolithic架构”,例如网上是这样说的“网上对Microservice进行介绍的文章常常以Monolith作为开头,我也不会例外。原因是,知道了Monolith的不便之后才能更容易地理解Microservice架构模式所具有的各种优点。[1]”

1. 传统应用架构
传统的企业级应用是单体应用(monolith application),一般是分层结构,如表现层/应用层/领域层/数据层,这主要是水平切分的思想。

随着互联网应用的发展,特别是大型电商系统,业务非常复杂。这种巨型系统,首先要关注的是如何根据业务划分子系统,然后是子系统间如何协作,*后才是子系统内部实现。SOA设计可以很有效支持前面两步,在SOA体系里,每个子系统是独立的服务,服务接口体现子系统协作关系,至于子系统内部,直接作为黑盒子处理[6]。

所以对于复杂系统,首先采用SOA垂直切分子系统,然后使用分层设计水平切分单个子系统,服务化把传统的分层设计往前更推进一步。

当然SOA本身也在不断发展,*初跨企业的Web service交互可认为1.0时代;支持企业内部系统间轻量级访问,支持服务治理,可认为2.0时代;服务进一步分层和微服务化可认为3.0时代。

Web应用程序发展的早期,大部分Web工程是将所有的功能模块(service side)打包到一起并放在一个web容器中运行,很多企业的Java应用程序打包为war包。其他语言(Ruby,Python或者C++)写的程序也有类似的情况[5]。

%title插图%num
图1. 传统服务(Monolith)架构

但是,上述的好处是有条件的:应用不那么复杂。对于大规模的复杂应用,巨石型应用会显得特别笨重:要修改一个地方就要将整个应用全部部署(PS:在不同的场景下优势也变成了劣势);编译时间过长;回归测试周期过长;开发效率降低等。另外,巨石应用不利于更新技术框架,除非你愿意将系统全部重写(代价太高你愿意老板也不愿意)[5]。

2. 微服务架构
微服务是为适应当前互联网快速发展,互联网应用快速迭代、快速部署而产生的技术架构,微服务强调的是在共享硬件资源的基础上隔离,缺乏软件共享;相当于敏捷的建立了很多小烟囱系统,虽然降低耦合,但是未有效的解决信息孤岛。

微服务所设计的每个微服务都要非常容易被抛弃、被替换。拥抱不断变化的业务,快读迭代开发。微服务设计目标是降低系统复杂度,提高开发生产力,是适合敏捷方法快速建立持续改进的系统,例如互联网应用,而信息共享是需要通过另个维度来解决。

%title插图%num

图2. 微服务(Microservice)架构

微服务架构云化方案一般融合Docker和DevOps技术,解决租户隔离和统一开发平台的需求,依赖IaaS,以此形成云化。

例如以建设企业办公楼为例,微服务借助DevOps工具,使用服务化的建筑预制件快速搭建需要的办公楼(室),其中内含水电等都是独立的。

3. 轻量级SOA架构
在传统企业级SOA实施中,服务架构设计也采用轻量级模式,把业务、平台组件拆分为细粒度服务,按服务内容分别创建并管理服务容器,架构模式与微服务类似,主要差异是需要基于SOA GIRD(有的厂商为ESB),提供BPM、MDM等企业级组件。

%title插图%num

在上述轻量级SOA架构中,每个服务容器可以单独完善、优化,可以达到系统不停机,特别是在信息共享和系统集成方面,是优于微服务架构。

轻量级SOA架构云化方案是使用PaaS方案,企业私有PaaS,是统一运营平台、统一开发平台,是为传统大型企业解决信息孤岛问题,以及企业信息化优化、统一管理而形成的解决方案。

私有PaaS强调SOA,SOA很多的应用场景都是在对已有应用的打通,比如你买了SAP的软件,又买了另一家的软件,还有以前投资定制开发的软件。这些软件都很贵,要像祖宗一样供起来的,轻易不敢改动,而且有大量历史数据,改动成本很高。所以要尽量保留,要通过SOA的方式对接在一起。

再以建设企业办公楼为例,通过PaaS平台统一构建企业办公楼,每个单位或部门按需租用办公室,内部共享使用水电等资源,每个水、电、门禁资源是统一管理的,也可以个性化,并按使用情况计量。

4. 微服务与SOA二者云化比较
PaaS平台是不依赖IaaS,可以独立存在的,微服务云一般依赖IaaS来实现云;
PaaS实现软件层面的共享,能全面支持Gartner多租户模型,而微服务云平台仅是通过IaaS实现硬件资源的共享,以及容器的隔离;
PaaS平台符合Gartner多租户模型4到7高级模型,而微服务云平台*多符合1到3级资源层级的模型;
PaaS平台是统一可运营的平台,适用于大型企业,微服务云平台是个敏捷平台,更适合互联网多变的应用;
PaaS平台强调可重用、复用性强,继承信息化资产,微服务云平台的微服务强调的是重写,快速应变;
PaaS平台采用成熟中间件产品,例如Opentext的产品,平台稳定,高可用;微服务云平台微服务因为采用分布式系统而产生的复杂性和稳定性问题,而且测试、维护也复杂;
微服务强调替换比利旧重要;
基于PaaS平台开发的应用,天生就是SaaS。
5. 总结
综上所述,微服务云平台与SOA云平台,都能实现云,为*终用户提供SaaS,差别是适用场景上,在传统企业级应用中,基于SOA的PaaS更适合解决信息孤岛问题、消除部门壁垒、利旧信息资产;从技术层面来说,差别也不是很大,都是在服务化的体系和云的体系之下。

这些都是根据互联网上的经验综合梳理出的理解,欢迎讨论。

参考:
[1]. 《微服务架构模式简介》 博客园 Amber-Garden 2015.07
[2]. 《微服务架构设计》 博客园 PetterLiu 2016.12
[3]. 《面向集团客户云计算运营平台的运营开通技术方案及应用架构——之云计算运营平台方案(三)》 CSDN博客 肖永威 2013.12
[4]. 《管理支撑办公系统技术架构选型对比讨论(J2EE与SOA对比)》 CSDN博客 肖永威 2014.04
[5]. 《基于微服务的软件架构模式》 简书 杜琪 2015.12
[6]. 无架构,不系统,谈谈架构的发展趋势和现状 百度贴吧 2016
————————————————
原文链接:https://blog.csdn.net/xiaoyw71/article/details/75008335

简单计算器 -python

简单计算器 -python

简单计算器 -python

初步界面
初步一位运算
这几天才突然明白,很多屏幕原点坐标点原来在左上角…

from tkinter import *
from time import sleep

x = t = y = 0
base = Tk()
base.title(“计算器”)
base.geometry(“250×380”)

frame_top = Frame(width = 250, height = 80, bg = ‘#dddddd’)
frame_top.pack()

sv = StringVar()
sv.set(“0.0”)

num1 = 0
num2 = 0
num1_1 = 999
num2_2 = 999
op = None
def show_num(num):
global num1, num2, op, num1_1, num2_2, t, x, y
if not op:
if num == num1_1:
sv.set(num1_1)
else:
num1 +=int(num)
sv.set(num)
num1_1 = num
else:
if num == num2_2:
sv.set(str(num1) + op + str(num))
else:
num2 += int(num)
“”” if t == True:
x = num1 + 0.1* int(num)
y = int(num)
show_del(0)
num1 = x
print(num1, num2)

sv.set(str(num1))
else: “””
sv.set(str(int(num1)) + op + str(num2))
num2_2 = num

def show_op(opr):
global num1, num2, op, t
if opr in [‘+’, ‘-‘, ‘×’, ‘÷’, ‘%’, ‘.’]:
op = opr
sv.set(str(num1)+ op)
if opr == ‘.’:
t = True
else:
if op == ‘+’:
nums = num1 + num2
if op == ‘-‘:
nums = num1 – num2
if op == ‘×’:
nums = num1 * num2
if op == ‘÷’:
nums = num1 / num2
if op == ‘%’:
nums = num1 % num2
sv.set(nums)
show_del(0)
def show_yx(num):
sv.set(num)
def show_del(num):
global num1, num2, op, num1_1, num2_2
if num == 1:
sv.set(“0.0”)
num1 = 0
num2 = 0
num1_1 = 999
num2_2 = 999
op = None

label_top = Label(frame_top, textvariable = sv, width = 200, height = 2, font = (‘黑体’, 20, “bold”), anchor = ‘e’, bg = ‘#cccccc’, justify = LEFT)
label_top.pack(padx = 10, pady = 10)

frame_bottom = Frame(width = 400, height = 350, bg = ‘#cccccc’)

button_m = Button(frame_bottom, text = “影”, width = 7, height = 2, command = lambda:show_yx(“嘤嘤嘤”))
button_m.grid(row = 0, column = 0)
button_n = Button(frame_bottom, text = “修”, width = 7, height = 2, command = lambda:show_yx(“羞羞羞”))
button_n.grid(row = 0, column = 1)
button_chu = Button(frame_bottom, text = “%”, width = 7, height = 2, command = lambda:show_op(“%”))
button_chu.grid(row = 0, column = 2)
button_c = Button(frame_bottom, text = “C”, width = 7, height = 2, command = lambda:show_del(1))
button_c.grid(row = 0, column = 3)

button_7 = Button(frame_bottom, text = “7”, width = 7, height = 2, command = lambda:show_num(“7”))
button_7.grid(row = 1, column = 0)
button_8 = Button(frame_bottom, text = “8”, width = 7, height = 2, command = lambda:show_num(“8”))
button_8.grid(row = 1, column = 1)
button_9 = Button(frame_bottom, text = “9”, width = 7, height = 2, command = lambda:show_num(“9”))
button_9.grid(row = 1, column = 2)
button_chu = Button(frame_bottom, text = “/”, width = 7, height = 2, command = lambda:show_op(“÷”))
button_chu.grid(row = 1, column = 3)

button_4 = Button(frame_bottom, text = “4”, width = 7, height = 2, command = lambda:show_num(“4”))
button_4.grid(row = 2, column = 0)
button_5 = Button(frame_bottom, text = “5”, width = 7, height = 2, command = lambda:show_num(“5”))
button_5.grid(row = 2, column = 1)
button_6 = Button(frame_bottom, text = “6”, width = 7, height = 2, command = lambda:show_num(“6”))
button_6.grid(row = 2, column = 2)
button_cheng = Button(frame_bottom, text = “*”, width = 7, height = 2, command = lambda:show_op(“×”))
button_cheng.grid(row = 2, column = 3)

button_1 = Button(frame_bottom, text = “1”, width = 7, height = 2, command = lambda:show_num(“1”))
button_1.grid(row = 3, column = 0)
button_2 = Button(frame_bottom, text = “2”, width = 7, height = 2, command = lambda:show_num(“2”))
button_2.grid(row = 3, column = 1)
button_3 = Button(frame_bottom, text = “3”, width = 7, height = 2, command = lambda:show_num(“3”))
button_3.grid(row = 3, column = 2)
button_jian = Button(frame_bottom, text = “-“, width = 7, height = 2, command = lambda:show_op(“-“))
button_jian.grid(row = 3, column = 3)

button_0 = Button(frame_bottom, text = “0”, width = 7, height = 2, command = lambda:show_num(“0”))
button_0.grid(row = 4, column = 0)
button_dian = Button(frame_bottom, text = “.”, width = 7, height = 2, command = lambda:show_op(“.”))
button_dian.grid(row = 4, column = 1)
button_dengyu = Button(frame_bottom, text = “=”, width = 7, height = 2, command = lambda:show_op(‘=’))
button_dengyu.grid(row = 4, column = 2)
button_jia = Button(frame_bottom, text = “+”, width = 7, height = 2, command = lambda:show_op(“+”))
button_jia.grid(row = 4, column = 3)

frame_bottom.pack(padx = 10, pady = 10)

求教各位, MacOS 如何便捷修改文件的默认打开方式?

MacOS 如何便捷修改文件的默认打开方式


目前是点开文件的显示简介手动修改打开方式

但是每次更新了 xcode 这个就被重置为 xcode 了


有没有编辑的工具满足以下两点

  1. 可以方便的设置某种后缀默认被什么程序打开
  2. 可以方便的设置某个程序为某些后缀的文件的默认打开方式
6 条回复    2021-03-23 18:55:34 +08:00
hyrious
    1

hyrious   6 天前   ❤️ 1

https://github.com/moretension/duti
typhoonbb
    2

typhoonbb   6 天前

选择文件,Cmd+i,可以修改打开方式
chinvo
    3

chinvo   6 天前 via iPhone   ❤️ 1

duti (楼上给链接了)

用法很简单, 你可以搜 duti vscode, 有整理好的 shell 脚本

wuqingdzx
    4

wuqingdzx   5 天前

? 感谢 @hyrious @chinvo
CenN
    5

CenN   5 天前

App Cleaner & Uninstaller
SilentDepth
    6

SilentDepth   5 天前   ❤️ 1

如果你用 Finder 打开文件,右键菜单里按住 option 再选择应用程序

DataFrame 内容处理

想对 DataFrame 二维表内包含括号的数据进行处理
具体是 包含()的元素,只保留()内的内容,不包含的不作处理
df = pd.DataFrame([[“x(a)”,”(ab)”,”c”,”d”],[“a”,”2b”,”2x(3c)y”,”d”],[“a”,”b”,”c”,”4(d)e”]])
0 1 2 3
0 x(a) (ab) c d
1 a 2b 2x(3c)y d
2 a b c 4(d)e
其中含括号的值 只保留括号里面的内容,不含括号的不作处理
如*行处理后 :a ab c d
已找到如下 正则表达式匹配方式
p1 = re.compile(r'[(](.*?)[)]’, re.S)
print(”.join(re.findall(p1, ‘2x(3c)y’)))
3c
参照 stackoverflow 上的这篇 DataFrame 替换字符串的帖子
https://stackoverflow.com/questions/48214863/python-replace-whole-values-in-dataframe-string-and-not-substrings

想使用 df.apply 方法,结合 lambda 表达式 完成元素内容的正则判断,如果含括号就 replace ()里面的内容,不含就不做更改,保持 DataFrame layout
尝试了 写不出,不知道有没有朋友,能帮忙写一下 判断字符串是否包含()并实现这个条件替换,或者有其他思路 处理 DataFrame

10 条回复  •  2021-03-29 15:23:14 +08:00

1 HelloViper   3 小时 57 分钟前 axis=1,横向 apply,每个切片是一个 series,直接遍历了正则提取*后 join 就可以了

2 badacook   3 小时 48 分钟前 @HelloViper 我说了要保持 DataFrame layout,那 不包含括号的,这个 python 里的 if 返回值为 bool 值的 判断条件 我写不出来,还有就是 我想看看 有没有简便的方法

3 reself   2 小时 49 分钟前 mapper = lambda x: ”.join(re.findall(r, x)) or x df_new = df.applymap(mapper)

4 reself   2 小时 48 分钟前 @reself 前提是括号中有值。括号内是空的话就不行了,mapper 改一下就行。

5 reself   2 小时 47 分钟前 @reself 对了,r 就是 re.compile(r'[(](.*?)[)]’, re.S)

6 Gatsbywl   2 小时 39 分钟前 def getString(s): pattern = r'[(](.*?)[)]’ reString = re.compile(pattern, re.S) tmpString = re.findall(reString, s) return tmpString[0] if tmpString else s df.applymap(getString) =================================== 或者一行,易读性不好: df.applymap(lambda s:re.findall(re.compile(r'[(](.*?)[)]’, re.S), s)[0] if re.findall(re.compile(r'[(](.*?)[)]’, re.S), s) else s)

7 badacook   1 小时 3 分钟前 @reself 非常感谢 你的指点,这里面 lambda ‘or’ 咋这么厉害,居然实现了一个 if 分支的 else 输出,太感谢了

8 badacook   58 分钟前 @Gatsbywl 非常感谢你的细致指点,这边测试 ok 正试着理解一下 复合表达式 致敬!

9 HelloViper   57 分钟前 @badacook or 是取*个有值的,这样比较优雅;也可以 lambda x: ”.join(re.findall(r, x)) if re.findall(r, x) else x; 另外好像 str 列内置了正则,Series.str.findall

10 imn1   48 分钟前 不需要 lambda,pandas 的 str.replace 支持正则的,而且是跟 re 模块相同语法

11 badacook   几秒前 @imn1 我*先看的就是 str.replace,但这个 既不是全部替,也不是部分替换,是 若含有(),保留()内部内容,这个 replace,我写不出来,而且 想在 df.applymap 类似函数体内完成,判断就寄 希望与 lambda 的判断分支了

ARM 构架的 mbp,能否虚拟化 x86-64 的系统?

现在 M1 的芯片,能通过虚拟机软件( parallels 或 vmware )虚拟化 x86-64 的操作系统么? windows 10 之类的。

9 条回复    2021-03-26 13:42:13 +08:00
minamike
    1

minamike   3 天前

UTM 可以龟速运行 X86-64 的操作系统
pd 可以运行 ARM 的 win10 兼容 X86-64 架构的软件
systemcall
    2

systemcall   3 天前

异构虚拟化了解一下
kilala2020
    3

kilala2020   3 天前

我主要是想看看,能不能虚拟化 windows server 。
holong2000
    4

holong2000   3 天前

@minamike ARM 版 win10 可以运行 windows 下的 x86-64 软件吗?还是只是某些,少数
systemcall
    5

systemcall   3 天前

@holong2000 #4
据说现在可以了
本来也不算什么特别困难的事情,Linux 有类似的东西,就是用户态 QEMU
要专门维护一套给这套东西用的库之类的东西,微软的话还真的做到了,所以现在 ARM64 版 Windows 里面有 3 个 WoW
chonger
    6

chonger   3 天前

@holong2000 多数可以,少数不行
holong2000
    7

holong2000   3 天前

@chonger 少数是有特定的一类吗?我正在考虑买新机,就是怕在虚拟机下不能用一些行业的 x86-64 软件。
jdjingdian
    8

jdjingdian   3 天前

不可以虚拟化,因为架构不同。但是可以模拟,用 UTM ( qemu )
systemcall
    9

systemcall   3 天前

@holong2000 #7
涉及到硬件、驱动层的估计就不行了
连 64 位 Windows 加载驱动都得加载 64 位的,估计 ARM 版的是加载不了 X86 的驱动的
行业软件有很多种,有的还要插 PCI 接口的卡才能用

Mac 版微信消息同步不及时怎么办?

晚上合上电脑,第二天它不会主动同步(或者半天了都不同步)之后的消息。

除了退出重新登录还有其他办法吗?

6 条回复    2021-03-26 15:27:57 +08:00
nathan618
    1

nathan618   3 天前

打开手机版微信划拉几下就同步了
jobs0
    2

jobs0   3 天前 via iPhone

是的,微信就是这样。
csunny
    3

csunny   3 天前

某个版本开始就这样了,只能打开手机,它就同步了。
CenN
    4

CenN   3 天前

@nathan618 怎么个划拉法?我打开手机微信了没同步啊
nathan618
    5

nathan618   3 天前

@CenN 就是打开手机微信点开对话框划几下它就自动同步了
freeair
    6

freeair   3 天前

Mac 版微信保持登录状态,休眠后再打开,消息都会漏的。同步不及时都不算什么了。

Mac 版本的 Notability 资源占用很大啊

电脑信息:19 年 16 寸,macOS10.15.7,9980HK+5500M+64G

昨天晚上拿 notability 整理笔记本,笔记大小除去音频外 300M 左右,大概 200 页的手写笔记。打开笔记之后,电脑风扇开始狂转,CPU 主频提升到 4.5G 以上,CPU 占用 270%。

这个软件的 universal 版是只针对 M1 进行优化了么,不过老版本好像也很拉垮啊,你们的都是这样吗?

4 条回复    2021-03-25 12:23:14 +08:00
CipherSysu
    1

CipherSysu   5 天前 via iPhone

刚刚看了一下,在 M1 上的也是 Intel 版本啊,请问怎么安装 universal 版
imrei
    2

imrei   4 天前

这货头铁的很,前不久更新了个大版本,改了适配 big sur 的图标,就是死活不肯支持 m1
kiracyan
    3

kiracyan   4 天前

CPU 占用 270%。 ????
spacedebris
    4

spacedebris   4 天前 via iPhone

好奇现在 ios 和 macos 的 notability 统一了吗?之前是分开购买的
友情链接: SITEMAP | 旋风加速器官网 | 旋风软件中心 | textarea | 黑洞加速器 | jiaohess | 老王加速器 | 烧饼哥加速器 | 小蓝鸟 | tiktok加速器 | 旋风加速度器 | 旋风加速 | quickq加速器 | 飞驰加速器 | 飞鸟加速器 | 狗急加速器 | hammer加速器 | trafficace | 原子加速器 | 葫芦加速器 | 麦旋风 | 油管加速器 | anycastly | INS加速器 | INS加速器免费版 | 免费vqn加速外网 | 旋风加速器 | 快橙加速器 | 啊哈加速器 | 迷雾通 | 优途加速器 | 海外播 | 坚果加速器 | 海外vqn加速 | 蘑菇加速器 | 毛豆加速器 | 接码平台 | 接码S | 西柚加速器 | 快柠檬加速器 | 黑洞加速 | falemon | 快橙加速器 | anycast加速器 | ibaidu | moneytreeblog | 坚果加速器 | 派币加速器 | 飞鸟加速器 | 毛豆APP | PIKPAK | 安卓vqn免费 | 一元机场加速器 | 一元机场 | 老王加速器 | 黑洞加速器 | 白石山 | 小牛加速器 | 黑洞加速 | 迷雾通官网 | 迷雾通 | 迷雾通加速器 | 十大免费加速神器 | 猎豹加速器 | 蚂蚁加速器 | 坚果加速器 | 黑洞加速 | 银河加速器 | 猎豹加速器 | 海鸥加速器 | 芒果加速器 | 小牛加速器 | 极光加速器 | 黑洞加速 | movabletype中文网 | 猎豹加速器官网 | 烧饼哥加速器官网 | 旋风加速器度器 | 哔咔漫画 | PicACG | 雷霆加速