首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

1981年我在TRS-80上写了一个游戏,40年后,我想让它重新运行起来

在大家变成大佬之前,估计也受过不少折磨,做过不少训练,甚至也写过一些程序(bug)。如今过去了这么长时间,有没有想过回过头来重新看看那些古早的代码,或者让它重新运行起来?...但细看第一行后,他震惊了,这竟然是他自己写的: 1 CLS: REM BREAKER BALL CREATED AND WRITTEN BY NED UTZIG 1/1/81 FOR TRS-80 MODEL...随后在好友的激励下,博主毅然决定,复活这段代码,让游戏重新运行起来。 把纸质代码加载到TRS-80模拟器上 首先需要解决TRS-80的问题。...运行环境的问题弄清楚了,现在最麻烦的问题是,把打印出来的代码敲到电脑上去。 对于这个问题,当然可以老老实实逐字逐行地敲上去,但是不用点现代方法似乎有点不对劲了。...这时他才意识到,他可能还需要重新学习使用TRS-80调试器。 用bug堆出的游戏,还带有明显的街机风格 游戏里有一个盒子,里面有一个1像素的小球跳来跳去,你需要用一个垂直块来引导球摧毁一堵墙。

57530
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Dagger Android支持库(译文)

    与其他依赖注入框架相比,Dagger 2 最大的优点是他不使用反射,严格的生成实现类,这意味着他可以使用在 Android 应用上。但是在Android上使用仍有一些注意事项。...在确定组件位置后,使相应的类型实现 HasFragmentInjector。...在您自己的代码中创建BroadcastReceiver时,使用构造函数注入。 支持库 对于Android支持库的用户,dagger.android.support 包中存在相同类型。...:dagger-android-processor:2.x' } 注入时机 尽可能优先使用构造函数注入,因为 javac 将确保在设置之前不引用任何字段,这有助于避免NullPointerExceptions...在 onAttach() 中执行相同操作,这也可以防止重新附加Fragment时出现不一致。

    97830

    看到如此多的MVP+Dagger2+Retrofit+Rxjava项目,轻松拿star,心动了吗?

    RxCache 等 Rx 系三方库,并且提供 UI 自适应方案,本框架将它们结合起来,并全部使用 Dagger2 管理并提供给开发者使用,使用本框架开发你的项目就意味着你已经拥有一个 MVP + Dagger2...向框架任意位置注入自定义参数, 可轻松扩展任意自定义参数 全局使用 Dagger2 管理 (将所有模块使用 Dagger2 连接起来, 绝不是简单的使用) 全局监听整个 App 所有 Activity...Dagger2Google根据Square的Dagger1出品的依赖注入框架,通过Apt编译时生成代码,性能优于使用运行时反射技术的依赖注入框架....RxErroHandler 是 Rxjava 的错误处理库,可在出现错误后重试. RxPermissions用于处理Android运行时权限的响应式库....onDestroy)的List,和一个当前在最前端的Activity(未调用onPause),AppManager封装有多种方法,可以很方便的对它们进行操作,也可以在未持有AppManager的情况下,

    2.9K30

    Andriod-Dagger2

    翻译成中文就是: Dagger2是Java和Android的快速依赖注入器,是依赖注入的编译时框架。它不使用反射或运行时字节码生成,在编译时进行所有分析,并生成纯Java源代码。...在我们的想要的创建的对象上加@Inject 注解并且调用 DaggerPhotoComponet.create().inject(this)关联; 后我们就可以拿到这个对象的实例了。...当Component在所拥有的Module类中找不到依赖需求方需要类型的提供方法时,Dagger2就会检查该需要类型的有没有用@Inject声明的构造方法,有则用该构造方法创建一个,注意:这次我没是没有在...,一个是在Module里提供的依赖,规则是这样的:查找Module中是否存在创建该类的方法,如果没有则查找Inject注解的构造函数 4.高级使用 说完了基本使用,我们来看看Dagger2高级使用的注解...Container中需要被注入的类型,Lazy用于延迟加载,所谓的懒加载就是当你需要用到该依赖对象时,Dagger2才帮你去获取一个;Provide用于强制重新加载,也就是每一要用到依赖对象时,Dagger2

    2.2K10

    Dagger2-从入门到精通(上)

    如果以后有机会或需要会在以后学习更加深入后在另写文章。 ---- Dagger2 根据官网来说他就是一个快速的依赖注入框架。...在讲解后在结合概念我们就能很好的理解了 ---- 引入 引入方法有2种: 第一种: 在工程的build.gradle文件中添加android-apt插件(该插件后面介绍) buildscript {...在我们的想要的创建的对象加上@Inject注解并且调用DaggerUserComponet.create().inject(this);后我们就可以使用这个对象了。...我们运行看看结果: dagger2 D/TAG: ApiService: com.example.ggxiaozhi.dagger2 D/TAG: onCreate: com.example.ggxiaozhi.dagger2...UserModule的构造函数将conetxnt传入,最后提供一个创建UserManager的方法将两个参数穿进去,最后运行一下: dagger2 D/TAG: UserStroe: www.baidu.com

    1.2K10

    使用这些AI工作流来减少您的技术债务

    在这种情况下,Dagger 在管理代理工作流背后的基础设施方面至关重要。该系统使用 Dagger 创建、运行和管理封装 AI 生成的代码的 Docker 容器。这确保了代码在一致的环境中执行。...生成的代码在 Docker 容器中运行,允许一致且隔离的测试环境。Dagger 与 Docker 无缝集成,使管理容器化工作流更容易,无需人工监督。 如果没有 Dagger,我能做到吗?...当然可以,但是 Dagger 大大简化了处理依赖项的过程。在我的初始设计中,管理 AI 代码生成工具的各种依赖项非常繁琐。Dagger 通过在运行时自动处理依赖项来帮助降低复杂性。...AI 生成的单元测试 我首先构建了一个试点项目,该项目使用 AI 创建工作流来生成单元测试。AI 分析覆盖率报告并根据未覆盖的代码生成测试用例。...更优雅的版本是利用 Dagger 创建一个分布式 CLI,它可以在不依赖特定编辑器的情况下运行 AI 模型并生成测试。这允许更灵活的解决方案,可以在不同的工具中使用,无需构建特定于编辑器的扩展。

    9910

    带你了解Android Jetpack库中的依赖注入框架:Hilt

    在Hilt中,使用@Module和@InstallIn注解类,并使用@Provides方法提供依赖。 2、 Components:Hilt自动生成不同的组件来管理不同的生命周期。...在Hilt中,你可以创建一个带有@Module和@InstallIn注解的类,并用@Provides方法提供依赖: @Module @InstallIn(SingletonComponent::class...总结如下: 1、 模块(Module)和提供者(Provider Method):通过注解创建模块和提供者方法,并使用Dagger编译器生成相关代码。...2、 组件(Component):Hilt自动生成不同生命周期作用域的组件,这些组件负责管理实例的生命周期。...3、 注入点(Injection Site):通过注解确定类的哪些部分需要注入依赖,并在运行时由Hilt提供实例。

    18210

    Android--Hilt入门

    谷歌接管Dagger后,推出了自己的Hilt框架,Hilt基于Dagger做了一层封装,大大简化了Dagger的使用,定制了一系列规范,并支持Jetpack中部分组件,是一个专门为安卓开发的DI框架 一...1.预定义的Component Hilt定义的组件为SingletonComponent,子组件在dagger.hilt.android.components包下 这些组件对应的生命周期为: 组件...预定义的Scope Hilt定义的子组件作用域在dagger.hilt.android.scopes包下 这些作用域都是和子组件一一对应的,组件的层级关系如下图: 组件-作用域层级关系 3.模块中使用作用域...(): UserInfo2 { return UserInfo2("王五") } } ViewModel中替换成自定义的注解后运行 @HiltViewModel class UserViewModel...-绑定对应关系 组件下注入类可以获取对应的绑定对象 组件 创建时机 SingletonComponent Application ActivityRetainedComponent Application

    1.5K20

    Hilt 介绍 | MAD Skills

    Hilt 通过使用注解在编译期帮您生成代码,来保证运行时性能。这是利用 JVM DI 库 Dagger 的能力实现的,而 Hilt 是基于 Dagger 构建的。...绑定 有两种类型的绑定: 未限定作用域绑定 : 没有添加作用域注解的绑定,例如 MusicPlayer,如果它们没有被装载到模块中,则所有组件都可以使用这些绑定。...限定作用域绑定 : 添加了作用域注解的绑定,例如 MusicDatabase,以及被装载到模块中的未限定作用域绑定,只有对应组件及其组件层次结构下方组件可以使用这些绑定。...就是这样,Hilt 会帮助您创建 ViewModel 的提供程序,您无需再手动处理。 了解更多 Hilt 基于另一个流行的依赖注入库 Dagger 进行构建!...在接下来的文章中,Dagger 将会被频繁提及!如果您正在使用 Dagger,Dagger 可以与 Hilt 配合使用,请查看我们之前的文章《从 Dagger 迁移到 Hilt 可带来的收益》。

    1K10

    从 Dagger 迁移到 Hilt 可带来的收益

    对于新项目,Hilt 有着编译期校验,良好的运行时性能以及扩展性 (阅读文章 Android 和 Hilt 中限定作用域,获取更多信息)。然而,Hilt 对于已经使用 Dagger 的应用有何优势呢?...了解 Dagger 在应用中的配置和使用是一项艰巨且耗时的工作。 通过在应用中使用 Hilt,上述工作量将会显著减少,因为所有 Hilt 应用都使用相同的配置。...✅ 支持自定义组件 除了已经定义的标准组件之外,Hilt 也提供了创建自定义组件并添加到组件层次结构中的方法,详见文章 Hilt — 添加组件到层次结构。...❌ 不支持组件依赖 Hilt 的易用意味着它代替您做出了一些决定。Hilt 在组件关系中采用了子组件模式,您可以查看 相关文档 了解这样设计的原因。...如果您坚信您的应用更适合采用组件依赖,那么 Hilt 就不是您应用的正确选择。 在大多数项目中,将 Dagger 迁移到 Hilt 是值得的。Hilt 给您带来的收益超出了更新所需付出的努力。

    83310

    Dagger:我们用 GO 和 WebAssembly 替换了 React 前端

    既然我们决定直接在浏览器中运行 Go 代码,WebAssembly 就成了顺理成章的选择。...没有现成的组件库可用,开发工具也不够丰富,等等。我们清楚地意识到,我们将不得不从头开始构建大部分用户界面组件。 大多数浏览器对 WebAssembly 应用程序设定了硬性 2 GB 内存限制。...为了回答这些问题并降低项目风险,我花了将近一个月的时间进行原型设计,目标是尽可能多地使用 go-app 重新实现现有的用户界面。...从原型到生产 在成功完成一个可行的概念验证后,团队的信心大幅提升,我们随即启动了“awesome wasm”项目,致力于打造一个生产级的实现。...编写用户界面组件并不难,与其他服务的集成也非常顺利,我还找到了高效处理组件实时更新的方法。 我找到了一些有用的 NPM 包,想知道是否可以在 Go 中使用它们。

    6900

    带你解析Dagger2

    Dagger2具有以下好处: 1) 依赖的注入和配置独立于组件之外,注入的对象在一个独立、不耦合的地方初始化,这样在改变注入对象时,我们只需要修改对象的实现方法,而不用大改代码库。...2) 依赖可以注入到一个组件中:我们可以注入这些依赖的模拟实现,这样使得测试更加简单。 3) app中的组件不需要知道有关实例创建和生命周期的任何事情,这些由我们的依赖注入框架管理的。...使用 Dagger2 创建依赖对象,我们就不用手动初始化了。...所有的组件都可以通过它的modules知道依赖的范围。 @Scope: Scopes可是非常的有用,Dagger2可以通过自定义注解限定注解作用域。...Dagger建议使用的,因为在运行的过程中,总会有一些奇怪的问题甚至是空指针,这也意味着你的依赖在对象创建的时候可能还没有初始化 完成。

    75040

    Android |《看完不忘系列》之dagger

    于是就有了一些库来实现自动依赖注入,有两个实现思路(koin的实现以后再聊~), 一是运行期反射连接依赖项,编译影响小,但运行慢 二是编译期就连接依赖项,创建辅助类需要额外的io和编译耗时,会拖慢编译速度...,但运行快 像Android内存和算力都有限的终端设备,dagger当然是选择思路2啦。...Hilt 在热门 DI 库 Dagger 的基础上构建而成,因而能够受益于 Dagger 提供的编译时正确性、运行时性能、可伸缩性和 Android Studio 支持。...@Subcomponent:子组件... 注解还有很多,准备放到细枝篇来写了...? 实现原理 dagger编译期解析注解创建辅助类的过程就不分析了,我们直接看他生成的辅助类, ?...老的造车:姿势二,先创建后注入 //实例的创建也用makeCar,如果我们接口没有定义这个方法,dagger会生成一个功能一样的getCar DaggerActivity_MembersInjector.injectMCar

    93110

    Dagger2 入门解析

    再一个是,Dagger2不同于guice的运行时注入,编译时生成代码的做法很好。提前发现问题,更高的效率。 还是那句话,百度到的dagger2资料看着一大堆,大都表层,而且和Android集成很深。...[_]P "); heater.get().off(); } } 针对DaggerCoffeeApp_CoffeeShop不识别问题,运行编译后就可以了。...所有的组件都可以通过它的modules知道依赖的范围。 @Scope: Scopes可是非常的有用,Dagger2可以通过自定义注解限定注解作用域。...猜测会不会是在创建Pump的时候发现缺少Heater,然后压栈,去子module里找声明,找到后,弹出栈。 Anyway,demo的注入就是这么简单。...然而,毕竟dagger2是为了Android而打造的,为了适应其复杂的继承体系和生命周期的限制,dagger提供了SubComponent模型。也就是子组件。

    1.5K120

    Hilt 稳定版发布 | 更便捷的 Android 依赖项注入

    Hilt 无需手动创建依赖项关系图,也无需手动注入并传递类型,而是在编译期自动根据注解生成所需代码。...比 Dagger 更便捷 Hilt 基于流行的 DI 库 Dagger 构建,因此可以从 Dagger 提供的编译期校验、良好的运行时性能、扩展性以及 Android Studio 支持 中受益。...我强烈推荐利用 Dagger 在 Android 应用中进行依赖项注入,然而单纯地使用 Dagger 可能导致在创建时内存占用过多。...——Tinder 资深软件工程师 Marcelo Hernandez 如果您已经在应用中使用了 Dagger,并且希望迁移到 Hilt,无需担心!...最终,Hilt 提供了内置的可识别 Android 生命周期的 Dagger 组件。使用 Hilt,我们可以只关注 Dagger @Modules,而不必担心组件,子组件以及组件提供程序的模式等。

    1.9K20
    领券