1.iPad mini2降级教程
2.miniui详解
3.vue3实用工具mini-vue|阮一峰推荐
4.å¦ä½ç¼è¯ä¸ä¸ªç²¾ç®çAndroidç³»ç»
5.源码阅读忆丛(37)Minigui
6.llama.cpp理解:跑通MiniCPM-2B版本
iPad mini2降级教程
无需赘言,源码直接步入教程。源码
这个教程基于国外开发者Matty(@mosk_i)的源码工具Vieux,适用于MacOS ..x或更高版本的源码设备(包括Hackintosh和正版Mac)。
首先,源码你需要下载Vieux,源码mtk 源码介绍国内的源码下载链接如下,源代码源自:
下载后,源码你会得到一个文件,源码请解压并将其移动到默认的源码文件夹中(在Finder中操作)。
接下来,源码使用爱思助手下载固件文件iPad_bit_.3.3_G_Restore.ipsw,源码将其也放置在Vieux文件夹内。源码
然后,源码打开终端,源码按照以下步骤操作:
首先检查Python版本,确保在3.5以上,如果不足,请进行升级。
接着,开始执行命令:
整个过程会显示一个解压过程,此时将你的设备置于dfu模式:长按Home键和电源键秒后松开电源键,保持Home键按住秒进入dfu模式。注意,要在显示Unzipping信息前进入dfu,否则可能导致设备重启退出dfu。
设备会显示两次进度条后成功降级到.3.3版本。
如果遇到特定错误,纸牌老虎源码如以下情况:
解决方法是,先在终端中执行特定命令,如果显示的版本如图:
则执行相应的命令:
如果出现-bash提示,执行其他命令:
按照提示逐一执行,直到看到Installation successful!的提示。
最后,确认brew版本后,执行brew install libusb,安装成功后,继续执行python3 vieux -i iPad_bit_.3.3_G_Restore.ipsw命令,完成降级。
miniui详解
在Android源码中,为了实现adb调用的多个Linux可执行程序,涉及到miniui框架的编写与应用。以下是miniui框架的详细介绍。
miniui是一个由Android提供的用于简单UI输出的库,其源码位于factory/src/minui目录下。
此库包含关键函数如gr_init()和gr_font_size()。gr_init()用于准备UI输出环境,而gr_font_size()则提供获取字体大小的功能。
进一步了解,miniui库还提供了res_create_surface()函数,用于将转换为表面。
使用miniui时,主程序通常通过dlopen()加载一个.so动态库文件。动态库在运行时自动执行_init()初始化函数,该函数输出提示信息,step函数源码并调用主程序的注册函数以重新赋值给结构体。随后,结构体的函数指针被调用,以打印结构体的值。这种机制实现了主程序与动态库之间的函数调用和指针传递。
关于miniui的使用和功能介绍,本文仅提供基础信息,后续内容将不断更新,敬请期待。
vue3实用工具mini-vue|阮一峰推荐
欢迎各位开发者,今天我要介绍一个专为学习 Vue3 源码设计的利器——mini-vue,此工具由我开发并推荐,阮一峰老师在第期周刊中也推荐了它。mini-vue旨在让学习者快速了解 Vue3 核心逻辑,通过减少非核心逻辑的干扰,使代码更具可读性。
Vue3作为热门技术,其源码复杂度高,代码量大,理解起来让人头疼。特别是在`renderer.ts`中的`baseCreateRenderer`函数,代码量接近行,这对于初次接触的同学来说是一个巨大的挑战。如何有效阅读和理解如此庞大的代码?通过分而治之的方法,我们专注于核心逻辑,忽略边缘情况和特定环境的逻辑,从而更高效地理解 Vue3。websocket框架源码
mini-vue正是基于这一思路设计的,它仅包含 Vue3 的核心功能,帮助开发者在理解复杂代码时聚焦关键点,提高学习效率。为了帮助大家快速上手,我在代码中添加了详细的注释,清晰记录了每个函数的行为。同时,关键路径上设有`console.log`,在调试时提供清晰的运行流程视图。
使用 mini-vue 时,可以先从`example`目录下的示例开始,通过`console.log`查看代码运行过程,阅读注释理解代码逻辑,然后深入源码细节,如`props`和`children`的处理方式。通过与Vue3源码对照,可以更快速地掌握核心功能。
为了验证学习成果,可以尝试自己实现mini-vue中的功能,这是一个极佳的学习方式,能加深对代码的理解和记忆。mini-vue的使用教程可在视频版本中找到,详细的项目结构包括`example`、`lib`和`src`文件夹。开始时,从`example`中的zipkin源码详解示例开始,逐步深入了解核心流程。
在掌握mini-vue后,阅读Vue3源码将变得更加轻松。感谢使用mini-vue,如能给予支持,通过在GitHub上star或参与issue讨论,将为我的项目提供更多动力。我将持续更新和完善mini-vue,以帮助更多前端开发者。期待与大家共同进步,共享学习的喜悦。
作者:花果山瑞哥
å¦ä½ç¼è¯ä¸ä¸ªç²¾ç®çAndroidç³»ç»
æ¬æ¬¡è¯éªä½¿ç¨çandroidæºç æ¯4.2ï¼ç¼è¯çæ¶ææ¯mini-mipsã
ä¸ãæåçå·¥ä½
1ãä¿®æ¹build/target/product/mini.mkï¼å»æä¸äºä¸å¿ è¦ç模åï¼ä¾å¦PhoneãDownloadManagerçï¼
2ãä¿®æ¹SystemServer.javaï¼å±è½ä¸äºserviceï¼è®©ç³»ç»è½å¤å¯å¨èµ·æ¥ï¼ä¾å¦ï¼Location ManagerãTelephony Registryï¼
3ãä¿®æ¹dalvik/vm/native/dalvik_system_Zygote.cppï¼æ³¨éæå 为æ£æ¥ä¸å°å¤é¨åå¨è导è´dalvik abortçå°æ¹ ï¼è¿æ¯googelçä¸ä¸ªbugï¼å¨å¹´1æ份已解å³ï¼å¦æç¨è¿ä»¥åç代ç ä¸ç¨ä¿®æ¹æ¤å¤ï¼
4ãä¿®æ¹WindowManagerService.javaï¼æåéBOOT_TIMEOUTæ¶æ¯çæ¶é´æ¹ä¸º0ï¼ä¹å为ç§ï¼
äºãç³»ç»ä¼ååçææï¼éªè¯å·¥ä½åå¨mips模æå¨ä¸è¿è¡ï¼
1ãèçè¿è¡å åï¼ä¸é¢æ¯å ¨ç¼è¯ä¸miniç¼è¯çå å使ç¨ç¶æç对æ¯
1ï¼full build
MemTotal: kB
MemFree: kB
2ï¼mini build
MemTotal: kB
MemFree: kB
2ã缩çå¼æºå¯å¨æ¶é´
å¨èææºä¸çå¯å¨æ¶é´
1ï¼full buildï¼ç§
2ï¼mini buildï¼ç§
3ãåªå¯å¨homeç¨åºï¼å ¶ä½çåºç¨ç¨åºå被移é¤
ä¸ãä¿çandroidçå¼åç¯å¢
1ãadbï¼ddmsï¼apkinstallçï¼é½è½æ£å¸¸å·¥ä½
2ãå¨eclipseä¸ç¼åçandroidåºç¨ç¨åºè½å¤è¿è¡å¨è¯¥mini-androidä¹ä¸
åãå¼æºèªå¨å¯å¨æå®åºç¨ç¨åº
æ¬æ¬¡æµè¯ä½¿ç¨Gallery.apkåºç¨ç¨åºï¼ä¿®æ¹å ¶æºç åå¯ä»¥å®ç°éç³»ç»çå¯å¨èèªå¨å¯å¨çåè½ã
源码阅读忆丛()Minigui
探索GUI的历史与实现
对于GUI的细节仍然存在一些困惑,似乎总是有新的东西需要学习。年轻时,对《Windows程序设计》、MFC等书籍充满热情,那些API的神奇之处让人着迷。然而,花费大量时间深入学习,却似乎事倍功半,微软似乎更倾向于教人如何使用,而非深入解释实现原理。尽管如此,还是尝试实现过文字版的GUI,涉及基本的按钮、滚动条、菜单等元素。但一些细节仍不清楚。
通过网络搜索,了解到魏永明的Minigui项目是对Windows GUI和GDI的模仿。通过下载vc6版本的MinGUI,能够进行调试。在分析代码时,发现事件回调、消息链等常见功能并无特别之处。而DefaultMainWinProc、InvalidateRect、PopupMenuTrackProc等函数则更具实际意义。GUI就像是在显存沙漠中绘画,有其既定规则。DefaultMainWinProc负责实现画最大、最小按钮、窗口方框等常规操作,而绘制的动作有其先后顺序,即消息的先后处理。
GDI部分则展示了如何在显存中书写文字,包括粗体、斜体等效果;如何绘制图标和位图;关键的rgn裁剪矩形技术,用于加速绘制,矩形外的绘制不会进行。rgn裁剪矩形的运算包括加、减、合、并等,对应着窗口的各种移动和形状改变。不同线程之间的窗口管理由HWND_DESKTOP统一处理,desktop-common.c相当于窗口管理器,不同程序无法直接获取其他窗口的位置和大小,由其进行统一管理。desktop包含三个线程,分别负责捕捉键盘、鼠标消息,以及实际消息的处理,以及窗口给desktop的消息交由DesktopWinProc统一处理。
MinGUI的模拟版本在调试方面虽能使用,但功能实现上有缺失。相比之下,libminigui-1.0.提供了完整的gui、gdi、kernel代码,定义了大部分的画窗套路和动作,只需要关注关键部分和自己定义的动作即可。
Linux的GUI采用了xwindows,通过socket将xclient进程中的窗口绘制信息传输到xserver,由xserver统一处理。xclient之间互相不知道窗口的位置和大小,因此都通过xserver进行绘制,xserver还包含了窗口管理器。而MinGUI在一个进程的多个线程中实现,不存在窗口管理器与进程间位置信息传递的问题。
Windows使用wink.sys作为窗口管理器,作为内核态程序,用户态的动态链接库在不同进程间数据段不同,但内核态的数据段统一,因此实现了窗口管理。Windows显示流畅的原因之一在于窗口管理机制与MinGUI的desktop类似,但实现机制有所不同。
工作繁忙,业余时间进行学习。尽管以前对GUI有过大量无用功,但这次的探索仅用几天时间便有所收获。
llama.cpp理解:跑通MiniCPM-2B版本
源码的理解与调试是一个逐步深入的过程。以最近备受欢迎的minicpm为例,因其体积小巧,适合移动端使用,拥有丰富的资料,且效果令人满意,而且已有了llama.cpp版本。OpenBMB/MiniCPM: MiniCPM-2B:端端LLM性能优于 Llama2-B。
下载并运行llama.cpp,首先确保能正常编译,通过命令`make LLAMA_DEBUG=1`实现。
下载gguf格式的模型,提供两种格式选择:`fp`和`q4km`。创建目录`/tmp/code/pretrainmodel`并进入,使用Git LFS下载模型,可使用huggingface镜像加速下载。
模型成功下载后,运行示例代码。执行命令`./main -m /tmp/code/pretrainmodel/MiniCPM-2B-dpo-fp-gguf/MiniCPM-2B-dpo-fp-gguf.gguf --prompt "写藏头诗,藏头是龙年大吉" --temp 0.3 --top-p 0.8 --repeat-penalty 1.`。
运行时,代码执行速度较慢,可能源于代码问题或Docker运行环境的硬件限制。使用`free -m`命令查看内存使用情况,但未找到明确解释。
迷你世界抄袭我的世界是不是
我是MC玩家。先拿迷你抄袭MC来说吧。在网络上很多人都说迷你抄袭了MC的源代码。Mc的源代码是用Java来作为语言的。迷你世界则是c++。连抄都抄不了。怪物特性,难道你们以为都一样吗?就拿苦力怕和爆爆蛋来做对比吧,别看他们都会爆炸,苦力怕的代码简单来说是靠近目标后并攻击,爆爆蛋则是一边靠近目标一边攻击,别看代码很相似,其实代码千差万别。你们能不能别争了?网易告了迷你,他都败诉了。版权问题在网易败诉的那一刻就解决了,迷你又不要被处罚。 你们还想让他付版权费?我作为一个MC的玩家。为你们这种行为感到无比的耻辱。难道你们就是要饭的吗?真不要脸!想让人家给你们1亿多元吗?无耻!就为了你们心中所谓的“正义”吗?猥琐!难道你们这群小学生的思想还固化在“谁抄袭谁”上吗?幼稚!难道你们认为让迷你世界下架,我的世界那那两个傻瓜创始人Mojang AB和4J Studios就会回来吗?天真!迷你和MC的二元争霸时代已经过去了。其实在就过去了。早已进入《迷你世界》,《我的世界》,《手工星球》和《乐高无限》等沙盒游戏的群雄逐鹿时代了。一起试玩这几款游戏吧。我们不要再对骂了。恩怨早就结清了。愿沙盒游戏与我同在。你们看一下下面这张。网易不是很邪恶吗?你们为什么还要同情他?