4

iOS 摸鱼周报 #82 | 去中心化社交软件 Damus

 1 year ago
source link: https://zhangferry.com/2023/02/03/iOSWeeklyLearning_82/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

iOS 摸鱼周报 #82 | 去中心化社交软件 Damus

moyu_weekly_cover.jpeg
  • 本期话题:设计开发加速器线下活动:女性开发者社区日;
  • 本周学习:Python 如何调用 Swift 程序
  • 内容推荐:涵盖现代 SwiftUI 编程探讨、可变视图、NSTimer、Swift Charts 等方面的内容
  • 摸一下鱼:去中心化社交软件 Damus;2022 年最后欢迎的 Chrome 插件;一款通过工作流驱动提效的办公工具 monday

设计开发加速器线下活动:女性开发者社区日

@远恒之义:Apple 在 2022 年 10 月开展了 Apple Entrepreneur Camp(苹果企业家培训营)课程活动,主要面向女性、黑人和西班牙裔/拉丁裔创业者,帮助她们提供技术支持与免费服务。女性开发者社区日是针对中国女性开发者的特别活动,以此帮助更多的中国女性开发者熟悉了解 Apple 平台。相比之前的企业家培训营要求,本次活动降低了门槛,参会资格不再限制组织必须满足女性创业者与女性开发者。

82-women-developer-community-day.jpeg

App 和 App 内购买项目即将实行税率和价格调整

@远恒之义:2023 年 2 月 13 日起,哥伦比亚、埃及、匈牙利、尼日利亚、挪威、南非和英国 App Store 的 App 及 App 内购买项目 (自动续期订阅除外) 的价格将上调。从 2023 年春季起,App 和 App 内购买项目的定价功能升级将带来 700 个新增的价格点,开发者可更加灵活地管理全球各地区定价。

整理编辑:zhangferry

Python 如何调用 Swift 程序

Swift 调用 Python 有现成的方案,就是 PythonKit,这个库是从 TensorFlow 迁移出来的,利用 Swift 里 @dynamicCallable@dynamicMemberLookup实现动态调用。

Python 调 Swift 则相对绕一些,核心思路是将 Swift 转成 C 语言库,然后利用 Python 的ctypes 去调用这个 C 语言库。大概流程如下:

20230203004524.png

1、导出 C 语言符号。

@_cdecl("myname")
public func myname (x: UnsafePointer<CChar>) -> UnsafePointer<CChar>{
    let ret : String = "My name is \(String(cString: x))"
    return UnsafePointer<CChar>(ret)
}

Swift 在编译时会根据命名空间和参数进行符号签名,为了保证符号的统一性,使用@_cdecl固定函数签名。另外C 语言的字符串跟Swift字符串不同,将字符串转成UnsafePointer<CChar>类型指针。

2、生成动态库让 ctypes 引用

$ swiftc -emit-library modules.swift

生成的动态库为libmodules.dylib。有时候还会出现一些动态库依赖关系,为了让 ctypes 也能够找到这个库,还需要修改动态检索路径:

export DYLD_FRAMEWORK_PATH="path/to/depend_dylib_folder"

该环境变量的指定要在 python 脚本外部执行。

3、python 通过 ctypes 调用对应函数

import ctypes
# 把对应动态库转成ctypes类型
modules = ctypes.CDLL('path/to/libmodules.dylib')

def py_myname(x):
    # 定义返回值类型
    modules.myname.restype = ctypes.c_char_p
    # python str to char
    y = ctypes.c_char_p(x.encode())
    # char to python str
    return modules.myname(y).decode()
    
str = py_myname("zhangferry")
print(str)  # My name is zhangferry

本期将推荐近期的一些优秀博文,涵盖现代 SwiftUI 编程探讨、可变视图、NSTimer、Swift Charts 等方面的内容

整理编辑:东坡肘子

1、现代 SwiftUI -- 来自:Piont Free

@东坡肘子: 近期 Point Free 在其博客上发表了多篇免费文章,以探索现代 SwiftUI 开发的最佳实践。内容涵盖:视图沟通、可识别数组、状态驱动导航、依赖项、测试等内容。

2、可变视图 -- 来自:Chris Eidhof

@东坡肘子: _VariadicView 是 SwiftUI 提供的一个未公开 API ,它为布局容器提供了遍历子视图的能力。Chris Eidhof 在 Moving Parts 博客的基础上进一步对该 API 进行了研究,并提出了视图是列表的观点。

3、NSTimer Block 为什么不会触发循环引用?! -- 来自:wiiale

@东坡肘子: NSTimer 是 iOS Foundation 框架中一种计时器,在经过一定的时间间隔后触发,向目标对象发送指定的消息。本文将通过探究 NSTimer 与 Runloop 之间的关系来分析不会触发循环引用的原因。

4、Searchable -- 来自:Alex Grebenyuk

@东坡肘子: 从 iOS 15 开始,SwiftUI 通过新的 .searchable 修饰符开始支持搜索栏功能。Alex Grebenyuk 通过本文将其在 Pulse 应用中有关 searchable 的使用体验和心得分享给大家。

5、掌握 Swift Charts -- 来自:Majid

@东坡肘子: Swift Charts 是苹果的一个新框架,允许我们使用 SwiftUI 以声明性的方式可视化数据。Majid 将通过多篇文章对 Swift Charts 进行详尽介绍,目前已以完成:基础、自定义标记、标记样式等内容。

整理编辑:zhangferry

1、Damus:一个建立在去中心化网络上的社交软件,最近挺火的,被称为「推特杀手」,目前已上线 App Store,国区没有。它具有这些特点:

  • 你发的内容完全由你自己控制
  • 端到端加密,交流过程无法被其他人查看
  • 无注册限制,创建账户会生成一对公私钥,公钥表示你的id,可以让其他人找到你,私钥表示登录凭证
  • 无服务器,而是利用去中心化中继器来分发消息
  • 可编程,支持自定义机器人,用于处理消息分发和通知
  • 可以赚钱,利用比特币给帖子打赏
20230202222757.png

2、2022 年最受欢迎的 Chrome 插件:这些插件覆盖工作、学习、娱乐多个方面,列几个我感觉还不错的插件:

  • Tango:对于一个复杂的操作页面,如果我们想演示如何操作,可以利用 Tango 快速生成一个操作步骤指南。
  • workona:一个书签管理插件,我看大部分人使用 chrome 都会出现 tab 栏占满的情况,tab 管理对我来说也一直是一个头疼的事情。这个插件提供了一种解决方案,就是为所有页面和书签建一个管理页面,每次对tab的切换都通过这个管理页面进行。
20230202232756.png

3、monday:一个面相工作场景的项目管理平台,可以定制工作流来满足不同工作的需求,从而提高团队的一致性、效率和生产力。

20230202234211.png

4、Github 在个人信息页面新增了社交网络的链接,可以填四个链接:

20230202225613.png

iOS 摸鱼周报,主要分享开发过程中遇到的经验教训、优质的博客、高质量的学习资料、实用的开发工具等。周报仓库在这里:https://github.com/zhangferry/iOSWeeklyLearning ,如果你有好的的内容推荐可以通过 issue 的方式进行提交。另外也可以申请成为我们的常驻编辑,一起维护这份周报。另可关注公众号:iOS成长之路,后台点击进群交流,联系我们,获取更多内容。

iOS 摸鱼周报 #81 | Apple 推出 Apple Business Connect

iOS 摸鱼周报 #80 | 开发加速器 SwiftUI 中管理数据模型

iOS 摸鱼周报 #79 | Freeform上线 & D2 本周开始

iOS 摸鱼周报 #78 | 用 ChatGPT 做点好玩的事

WechatIMG384.jpeg

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK