Coder Social home page Coder Social logo

dreampiggy.github.io's Introduction

dreampiggy.github.io's People

Contributors

chengzhihuang avatar dreampiggy avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar

Forkers

chengzhihuang

dreampiggy.github.io's Issues

探秘越来越复杂的ImageIO框架 | 小猪的博客

https://dreampiggy.com/2022/09/07/%E6%8E%A2%E7%A7%98%E8%B6%8A%E6%9D%A5%E8%B6%8A%E5%A4%8D%E6%9D%82%E7%9A%84ImageIO%E6%A1%86%E6%9E%B6/

ImageIO是Apple提供的上层框架,用于处理常见图像格式的编解码,以抽象的Source-Destination设计来提供了诸如从图像压缩数据解析得到CGImage,从CGImage编码得到压缩数据,甚至是从一个图像格式(JPEG)转码到另一个图像格式(HEIF)的能力 ImageIO定位是上层框架,封装了诸多的苹果的底层解码器,开源编解码器,硬件HEVC/ProRes加速器等等底层细节,

发现iOS SDK的Bug - Hopper使用教程向 | 小猪的博客

https://dreampiggy.com/2019/06/13/%E5%8F%91%E7%8E%B0iOS-SDK%E7%9A%84Bug-Hopper%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B%E5%90%91/

Hopper简介Hopper,全称Hopper Disassembler,是一个macOS和Linux平台上的反汇编IDE。提供了诸如伪代码,子程序,脚本,Debugger,Hex编辑等等一些列工具。相比于其他知名的反汇编工具如IDA,最大的好处是对平台特性,也就是Objective-C的反汇编有优化,提供非常贴近原始代码的伪代码(IDA目前则会是保留诸如objc_msgSend的伪代码),并且新

主流图片加载库所使用的预解码究竟干了什么 | 小猪的博客

https://dreampiggy.com/2019/01/18/%E4%B8%BB%E6%B5%81%E5%9B%BE%E7%89%87%E5%8A%A0%E8%BD%BD%E5%BA%93%E6%89%80%E4%BD%BF%E7%94%A8%E7%9A%84%E9%A2%84%E8%A7%A3%E7%A0%81%E7%A9%B6%E7%AB%9F%E5%B9%B2%E4%BA%86%E4%BB%80%E4%B9%88/

主流图片加载库所使用的预解码究竟干了什么 很多图片库,都会有一个类似叫做Force-Decode,Decode For Display之类的感念,很多人可能对这个过程到底是为了解决什么问题不清楚,这里写一个文章来说明它。 这里列举了各个图片库各自的说法,其实讲的都是完全相同的一个概念。 SDWebImage:使用了forceDecode, decompressImages的概念 YYWebIm

iOS平台图片编解码入门教程(第三方编解码篇) | 小猪的博客

https://dreampiggy.com/2017/10/30/iOS%E5%B9%B3%E5%8F%B0%E5%9B%BE%E7%89%87%E7%BC%96%E8%A7%A3%E7%A0%81%E5%85%A5%E9%97%A8%E6%95%99%E7%A8%8B%EF%BC%88%E7%AC%AC%E4%B8%89%E6%96%B9%E7%BC%96%E8%A7%A3%E7%A0%81%E7%AF%87%EF%BC%89/

这篇教程,是系列教程的第二篇,前篇名为《iOS平台图片编解码入门教程(Image/IO篇)》。这篇主要讲第三方解码器如何在iOS平台上处理(和Image/IO的几大要点一一对应),更会介绍一些基本的Bitmap概念,总结通用的处理方法,毕竟授人以鱼不如授人以渔 第三方编解码对于图片编解码来说,Apple自带的Image/IO确实非常的易用,但是对于Image/IO不支持的图像格式就能无能为力了

CocoaPods资源管理—Data Asset最低部署版本的坑 | 小猪的博客

https://dreampiggy.com/2021/07/16/CocoaPods%E8%B5%84%E6%BA%90%E7%AE%A1%E7%90%86%E2%80%94Data-Asset%E6%9C%80%E4%BD%8E%E9%83%A8%E7%BD%B2%E7%89%88%E6%9C%AC%E7%9A%84%E5%9D%91/

背景自己很早之前曾经写过一些CocoaPods管理Resource资源的文章:CocoaPods的资源管理和Asset Catalog优化 ,当时列举了对普通图片类型的管理方式和一些用法,也普及了一下UIImage获取Bundle去加载不在mainBundle图像的方式。 但是苹果早在iOS 9,Xcode 7时代,苹果就已经推出了Data Asset的概念,并在随后的Xcode,尤其是Xcode

Objective-C代码库的实现隐藏 | 小猪的博客

https://dreampiggy.com/2017/06/04/Objective-C%E4%BB%A3%E7%A0%81%E5%BA%93%E7%9A%84%E5%AE%9E%E7%8E%B0%E9%9A%90%E8%97%8F/

虽然Swift现在是开发iOS推荐入手的最佳语言,但是对于代码库而言,最大的一个问题是Swift ABI仍然没有定下(今年发布的的Swift 4.0,依然放弃ABI稳定性,而注重于Swift源代码3.x->4.0的兼容性)。所以这就意味着Swift 3.x编译的二进制库,在Swift 4.0将无法链接,只能重新代码编译。看来这又将是Objective-C这门古老的语法,能够作为一些fram

近期参与的APNG和WebP开源项目的经历及感受 | 小猪的博客

https://dreampiggy.com/2017/07/25/%E8%BF%91%E6%9C%9F%E5%8F%82%E4%B8%8E%E7%9A%84APNG%E5%92%8CWebP%E5%BC%80%E6%BA%90%E9%A1%B9%E7%9B%AE%E7%9A%84%E7%BB%8F%E5%8E%86%E5%8F%8A%E6%84%9F%E5%8F%97/

这篇文章讲的是有关近期自己参与的几个开源项目的经历以及感受,不过巧合的是内容都和APNG和WebP这两种图像格式相关,阅读前建议先简单略读一下之前写的一篇文章:客户端上动态图格式对比和解决方案 SDWebImageSDWebImage是iOS平台上非常著名的图片下载、缓存库,而今年发布的SDWebImage 4.0在架构、接口变动并带来性能优化的同时,还支持了Animated WebP,因此我

Swift Runtime符号在动态链接库丢失的排查之路 | 小猪的博客

https://dreampiggy.com/2023/12/26/Swift%20Runtime%E5%86%85%E7%BD%AE%E7%AC%A6%E5%8F%B7%E4%B8%A2%E5%A4%B1%E6%8E%92%E6%9F%A5%E4%B9%8B%E8%B7%AF/

声明此篇文章原作者就是我,版权所有。预计未来会刊登在《字节跳动终端技术》 公众号链接: DanceCC是字节Mobile Infra的一套编译工具链的品牌名,基于Swift.org的工具链进行了相关定制,包括调试优化,定制Clang插件特性,自研Pass做包大小和性能优化等等。在先前的文章中均有介绍。 背景近期,有人发来反馈,他们在接入DanceCC的新版本工具链时,在调整了一些库的工具链选择

一段简单逆向之旅-绕开Xcode 13.3最低macOS 12.0限制 | 小猪的博客

https://dreampiggy.com/2022/03/25/%E4%B8%80%E6%AE%B5%E7%AE%80%E5%8D%95%E9%80%86%E5%90%91%E4%B9%8B%E6%97%85-%E7%BB%95%E5%BC%80Xcode-13-3%E6%9C%80%E4%BD%8EmacOS-12-0%E9%99%90%E5%88%B6/

因为众所周知的原因,苹果的Xcode版本会不断提高自己的最低安装版本,在Xcode 13.0-13.2.1上,这个最低安装版本是macOS 11 而随着Xcode 13.3正式版放出,这个最低部署版本在最后关头被提升到了macOS 12 Why?一般来说,各位开发者或者众多基建,总有各种各样的原因需要暂时留在老版本的macOS系统上,但是又希望使用新Xcode版本自带的Toolchain进行一

2016年末总结和近期感想 | 小猪的博客

https://dreampiggy.com/2016/12/31/2016%E5%B9%B4%E6%9C%AB%E6%80%BB%E7%BB%93%E5%92%8C%E8%BF%91%E6%9C%9F%E6%84%9F%E6%83%B3/

年后的最后一天,也是该总结一下这一年的成长了。 从校园到实习软件专业的大三学年,如果你不考研留学的话,说起来都是会走实习加校招的流程。自己这年印象最深的,也就是整个下半年的实习,面试,以及现在的实习了。 大三上的实习当时自己错过了机会,只进入了一个普通的互联网公司,但是也学到了更多校园中无法见到的东西(比如多移动App多Project管理,MapKit,React Native),开阔了一点眼

iOS逆向&iOS字体Fallback&游戏汉化 | 小猪的博客

https://dreampiggy.com/2016/06/05/iOS%E9%80%86%E5%90%91-iOS%E5%AD%97%E4%BD%93Fallback-%E6%B8%B8%E6%88%8F%E6%B1%89%E5%8C%96/

最近偶然间发现《命运石之门:线形拘束的表征图》(STEINS;GATE 线形拘束のフェノグラム)iOS版的汉化基本完成,只缺测试,于是加入帮忙汉化组……在这中间偶然间学到一些关于iOS逆向和字体相关内容 字体问题游戏是基于iOS UIKit以及Cocos游戏引擎写的(动画效果是Cocos的,文本框是定制的UITextField,而Backlog就是个UIScrollView……)本身支持UTF

客户端上动态图格式对比和解决方案 | 小猪的博客

https://dreampiggy.com/2017/03/06/%E5%AE%A2%E6%88%B7%E7%AB%AF%E4%B8%8A%E5%8A%A8%E6%80%81%E5%9B%BE%E6%A0%BC%E5%BC%8F%E5%AF%B9%E6%AF%94%E5%92%8C%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/

对各种客户端来说,无论是Web还是移动端,图片占据的容量和传输资源一定是非常大的。对于静态图,我们常见的PNG和JPEG格式在压缩率和画质无损上都存在着不尽如人意的地方,而动图格式的GIF更是存在着很多问题,比如因此,在很多情况下,我们需要迁移到新的图片格式。 GIF为什么我们不用GIF呢,GIF由于时代限制,存在的天生的问题。GIF的规范最新版本是在1989年制定的,一个24位色都没有普及的

探秘越来越复杂的ImageIO框架 | 小猪的博客

https://dreampiggy.com/2022/11/07/%E6%8E%A2%E7%A7%98%E8%B6%8A%E6%9D%A5%E8%B6%8A%E5%A4%8D%E6%9D%82%E7%9A%84ImageIO%E6%A1%86%E6%9E%B6/

ImageIO是Apple提供的上层框架,用于处理常见图像格式的编解码,以抽象的Source-Destination设计来提供了诸如从图像压缩数据解析得到CGImage,从CGImage编码得到压缩数据,甚至是从一个图像格式(JPEG)转码到另一个图像格式(HEIF)的能力 ImageIO定位是上层框架,封装了诸多的苹果的底层解码器,开源编解码器,硬件HEVC/ProRes加速器等等底层细节,

一步步带你开发macOS QuickLook Plugin | 小猪的博客

https://dreampiggy.com/2019/04/16/%E4%B8%80%E6%AD%A5%E6%AD%A5%E5%B8%A6%E4%BD%A0%E5%BC%80%E5%8F%91macOS-QuickLook-Plugin/

QuickLook简介QuickLook 是macOS上提供的一项快速展示文档预览的功能,只需要按下空格就可以快速查看各种文件格式的信息,包括文本,代码,图片,音频,视频等等。 由于QuickLook需要支持不断扩展的文件格式,因此macOS专门提供了一个QuickLook Plugin,能让开发者对自己的文件格式提供一个自定义的完整的UI显示,不必依赖macOS系统更新来支持缤纷复杂的格式。 之

WatchKit渲染原理以及SwiftUI桥接 | 小猪的博客

https://dreampiggy.com/2019/12/10/WatchKit%E6%B8%B2%E6%9F%93%E5%8E%9F%E7%90%86%E4%BB%A5%E5%8F%8ASwiftUI%E6%A1%A5%E6%8E%A5/

WatchKit渲染原理以及SwiftUI桥接背景Apple Watch作为苹果智能穿戴设备领域的重头,自从第一代发布已经经历了6次换代产品,操作系统的迭代也已经更新到了watchOS 6。 不同于iPhone的App,watchOS上的大部分App都侧重于健康管理,并且UI交互以直观,快速为基准。在2015年WWDC上,苹果发布的watchOS的同时,面向开发者发布了WatchKit,以用于构建

Xcode LLDB耗时监控统计方案 | 小猪的博客

https://dreampiggy.com/2022/09/07/Xcode-LLDB%E8%80%97%E6%97%B6%E7%9B%91%E6%8E%A7%E7%BB%9F%E8%AE%A1%E6%96%B9%E6%A1%88/?

声明此篇文章在字节跳动的技术公众号已经刊登:《字节跳动DanceCC工具链系列之Xcode LLDB耗时监控统计方案》 背景介绍在《Swift 调试性能的优化方案 》一文中,我们介绍了如何使用自定义的工具链,来针对性优化调试器的性能,解决大型Swift项目的调试痛点。 在经过内部项目的接入以及一段时间的试用之后,为了精确测量经过优化后的LLDB调试Xcode项目效率提升效果,衡量项目收益,需要开发

iOS平台图片编解码入门教程(vImage篇) | 小猪的博客

https://dreampiggy.com/2017/11/12/iOS%E5%B9%B3%E5%8F%B0%E5%9B%BE%E7%89%87%E7%BC%96%E8%A7%A3%E7%A0%81%E5%85%A5%E9%97%A8%E6%95%99%E7%A8%8B%EF%BC%88vImage%E7%AF%87%EF%BC%89/

这篇教程,是系列教程的第三篇,前篇名为iOS平台图片编解码入门教程(第三方编解码篇)。由于vImage已经属于较为底层框架,这一篇将不会特别着重图片封装格式的编解码,会介绍一些Bitmap级别的操作,包括了图像的色彩转换,Alpha合成、基本几何变换等实际用法。由于教程侧重是图像格式,所以不会介绍vImage强大的Convolution等知识,这方面涉及到数字图像处理的复杂知识,不是教程的目标

SteamDeck完全指南-以一名主机玩家视角.md | 小猪的博客

https://dreampiggy.com/2022/12/31/SteamDeck%E5%AE%8C%E5%85%A8%E6%8C%87%E5%8D%97-%E4%BB%A5%E4%B8%80%E5%90%8D%E4%B8%BB%E6%9C%BA%E7%8E%A9%E5%AE%B6%E8%A7%86%E8%A7%92/

熟悉我的人都知道我其实是一个游戏爱好者,只是很少在博客写非技术文章而已。我在11月左右,因为受不了某日厂的PC独占行为而决定入手Steam Deck,这也是我自从2017年彻底放弃PC阵营之后第一次重回PC游戏领域,因此这里从一个主机玩家的视角整理一下我自己对Steam Deck,SteamOS的一些指南,希望能帮助中文领域的类似玩家快速上手和方便折腾。 断断续续写了几个小时,后续不断把我遇到的

CocoaPods的资源管理和Asset Catalog优化 | 小猪的博客

https://dreampiggy.com/2018/11/26/CocoaPods%E7%9A%84%E8%B5%84%E6%BA%90%E7%AE%A1%E7%90%86%E5%92%8CAsset%20Catalog%E4%BC%98%E5%8C%96/

这篇文章介绍了关于CocoaPods的资源管理行为,对于Pod库作者是必须了解的知识。同时介绍了CocoaPods使用Asset Catalog的注意事项。如果已经了解某方面知识,可以大致略过直接看结论。 Asset Catalog和App ThinningAsset Catalog,是Xcode提供的一项图片资源管理方式。每个Asset表示一个图片资源,但是可以对应一个或者多个实际PNG图,

Core Animation 3D仿射变换知识 | 小猪的博客

https://dreampiggy.com/2016/11/01/Core-Animation-3D%E4%BB%BF%E5%B0%84%E5%8F%98%E6%8D%A2%E7%9F%A5%E8%AF%86/#more

Core Animation 3D 仿射变换知识 之前写的Core Graphics是2D平面上的坐标变换,而iOS开发中,为了实现复杂的动画效果,视图切换效果,会用到很多3D变换,这就是Core Animation提供的CATransform3D,其中大部分API都和2D情况类似,但这里需要详细解释一下透视投影这个概念,和m34这个值的真实来源,一些博客抄来抄去却没有点到点子上,让人看不下去……

LLDB调试信息裁剪传输方案 | 小猪的博客

https://dreampiggy.com/2023/04/04/LLDB%E8%B0%83%E8%AF%95%E4%BF%A1%E6%81%AF%E8%A3%81%E5%89%AA%E4%BC%A0%E8%BE%93%E6%96%B9%E6%A1%88/

声明此篇文章原作者就是我,版权所有。预计未来会刊登在《字节跳动终端技术》 公众号链接: 背景介绍在如今,越来越多应用采取分布式构建系统,以及一些云IDE的兴起,在这种场景下,如何保证跨机器的编译产物,能够正常的在另一台机器进行正常的开发调试,是一个常见的问题。 传统的单机编译和链接流程中,编译器会在产物中嵌入当前编译单元的单机的路径,中间产物的路径;链接器在链接时,也会尝试写入链接器输入的所有Ob

Swift 调试性能的优化方案 | 小猪的博客

https://dreampiggy.com/2022/05/07/Swift-%E8%B0%83%E8%AF%95%E6%80%A7%E8%83%BD%E7%9A%84%E4%BC%98%E5%8C%96%E6%96%B9%E6%A1%88/

声明此篇文章预计5月中,发布于微信公众号《字节跳动终端技术》,原作者就是我,版权所有。在个人博客这里转发去掉了招聘相关的文案。如果需要也可以进行进一步交流(邮件或者GitHub)提供试用版工具链。 公众号链接: 背景通常来说,大型Swift项目常含有大量混编(Objc/C/C++甚至是Rust)代码,含有超过100个以上的Swift Module,并可能同时包含二进制部分和源码部分。而这种大型项目

iOS平台图片编解码入门教程(Image/IO篇) | 小猪的博客

https://dreampiggy.com/2017/10/30/iOS%E5%B9%B3%E5%8F%B0%E5%9B%BE%E7%89%87%E7%BC%96%E8%A7%A3%E7%A0%81%E5%85%A5%E9%97%A8%E6%95%99%E7%A8%8B%EF%BC%88Image:IO%E7%AF%87%EF%BC%89/

这篇教程是系列教程的第一篇,主要是面向于没有怎么接触过iOS平台上图像编解码的人的,不会涉及到多媒体处理中的数字信号处理、图像编码的深入知识。这是系列最简单的一篇,之后会有关于第三方编解码,以及vImage的另两篇教程。 Image/IOImage/IO是Apple提供的一套用于图片编码解码的系统库,对外是一层非常直观易用的C的接口。上层的UIKit,Core Image,还有Core Gra

iOS端矢量图解决方案汇总(SVG篇) | 小猪的博客

https://dreampiggy.com/2020/03/30/iOS%E7%AB%AF%E7%9F%A2%E9%87%8F%E5%9B%BE%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88%E6%B1%87%E6%80%BB%EF%BC%88SVG%E7%AF%87%EF%BC%89/

iOS端矢量图解决方案汇总(SVG篇)简介矢量图,指的是通过一系列数学描述,能够进行无损级别的变化和缩放的一种图像。相比于标量图(如JPEG等标量图压缩格式),能够在绘制时进行任意大小伸缩而不产生模糊,甚至能够实现动态着色,动画等等一系列交互。 在当今移动端设备尺寸越来越复杂,各种操作系统级别的夜间主题(或者Dark Mode)越来越提倡的场景下,如果依旧使用标量图,我们需要针对不同的屏幕大小(

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.