2作者: MongooseStudios8 个月前原帖
我是一个自学成才的开发者,努力工作多年,忍受了多家公司的“我们内部晋升”的谎言,终于得到了写代码的报酬。 自从去年11月被裁员以来,我一直在找工作,现在对此感到厌倦。每个人都在寻找拥有X年Y框架经验的“独角兽”,如果你没有完全符合的条件,就不必申请。与此同时,FAANG、微软和英特尔却不断发放裁员通知。 我仍然热爱编程,自从被裁员以来,我大部分时间都在忙于构建项目,除了“求职申请和存在主义的恐惧”之外。但想到要为另一家由无能的高管管理的公司工作,他们想把AI强行融入一切,或者又要经历一次人力资源部的贝基(她的技术技能有时只是使用Excel)问我“你为什么想在这里工作”的面试,我就感到恶心。 我开始告诉那些会议数量异常多、招聘流程繁琐以及单向视频面试的公司我不感兴趣。我发现自己对几乎任何事情都感到兴奋,只要不是在某个公司经历又一次的规划周,而这个公司还信誓旦旦地说他们在“做敏捷”。 我对公司决定将我们抛弃、将我们的工作外包给他们能找到的最便宜的国家,或者随便选择一家本周提供最好免费蜡笔的AI公司感到愤怒。我对越来越多公司推行的强制回办公室政策感到愤怒,因为他们的管理者工作糟糕,无法理解如何用Slack消息替代面对面的打扰。我感到愤怒,同时也感到疲惫。 还有其他人有这样的感觉吗?
1作者: flfljh8 个月前原帖
# HarmonyOS Flutter HAP包编译中的常见问题 ## 1. 配置别名以简化构建命令 将以下别名添加到您的环境变量中,以便于开发: *Windows*(通过 Git Bash): 在文件资源管理器中右键点击 → <i>Git Bash Here</i> *Linux/Mac*:编辑 `~/.bash_profile`,并通过 `source ~/.bash_profile` 将其添加到 `~/.zshrc`。 ``` # 可选 --local-engine 用于自定义引擎构建(推荐在 Linux/Mac 上使用) export ENGINE_DIR=~/ohos/engine export ENGINE_DEBUG=$ENGINE_DIR/src/out/ohos_debug_unopt_arm64 export ENGINE_PROFILE=$ENGINE_DIR/src/out/ohos_profile_arm64 export ENGINE_RELEASE=$ENGINE_DIR/src/out/ohos_release_arm64 # 构建别名 alias fbuildD="flutter build hap --local-engine=$ENGINE_DEBUG --debug" alias fbuildP="flutter build hap --local-engine=$ENGINE_PROFILE --profile" alias fbuildR="flutter build hap --local-engine=$ENGINE_RELEASE --release" # 运行别名 alias frunD="flutter run -d $(hdc list targets) --local-engine=$ENGINE_DEBUG --debug" alias frunP="flutter run -d $(hdc list targets) --local-engine=$ENGINE_PROFILE --profile" alias frunR="flutter run -d $(hdc list targets) --local-engine=$ENGINE_RELEASE --release" ``` *使用示例*: ``` flutter create hello --platforms ohos cd hello fbuildD # 构建调试版本 frunD # 运行调试版本 ``` ------ ## 2. 安装后出现白屏 *错误日志*: ``` 原因:信号:SIGSEGV(SEGV_MAPERR)@0x00000086e3272bf8 最后致命消息:线程:547846269584[致命:flutter/runtime/dart_vm_initializer.cc] 初始化 Dart VM 时出错: 快照版本错误,预期为 '8af474944053df1f0a3be6e6165fa7cf' 找到 'adb4292f3ec25074ca70abcd2d5c7251' ``` *原因*:引擎构建模式不匹配(例如,使用调试引擎构建发布版本) *解决方案*:将引擎模式与构建标志匹配: ``` flutter run -d --debug # 调试模式 flutter run -d --release # 发布模式 flutter run -d --profile # 配置模式 ``` ------ ## 3. 插件结构兼容性错误 *错误日志*: ``` 糟糕;flutter 意外退出: “类型 'Null' 不是类型 'List<dynamic>' 的子类型”。 ``` *解决方案*:将 Flutter 更新到最新的主分支/开发分支(提交 45bd5e627e1 或更新版本) ------ ## 4. `flutter pub get` 时的依赖冲突 *错误日志*: ``` 因为 flutter_cache_manager >=3.0.0-nullsafety.0 <3.3.2 依赖于 path_provider... 版本解决失败。pub get 失败... 退出代码:1 ``` *解决方案*:在 `pubspec.yaml` 中添加依赖覆盖: ``` dependency_overrides: path_provider: git: url: https://gitee.com/openharmony-sig/flutter_packages.git path: packages/path_provider/path_provider path_provider_ohos: git: url: https://gitee.com/openharmony-sig/flutter_packages.git path: packages/path_provider/path_provider_ohos ``` ------ ## 5. 未接受的 SDK 许可协议 *错误日志*: ``` hvigor 安装成功。 > hvigor 错误:原因:未接受 SDK 许可协议。 ``` *原因*:项目使用 API 12 SDK,但项目结构为 API 11 *解决方案*: 1. 在 DevEco Studio 中:<i>迁移助手 → 5.0.0 → 迁移</i> 2. <i>文件 → 项目结构 → 兼容 SDK → 5.0.0(12)</i> ------ ## 6. app.json 中版本重置 *问题*:在执行 `flutter build hap --release` 后,app.json 中的 `versionName` 重置为 1.0.0 *解决方案*:在构建命令中明确指定版本: ``` flutter build hap --build-name=4.0.3 --build-number=10000 ```
1作者: flfljh8 个月前原帖
# 在 HarmonyOS 服务小部件中访问应用数据 ### (1) 创建服务小部件 在创建基于 ArkTS 的小部件后,项目将生成以下与小部件相关的文件: - 小部件生命周期管理文件 (`EntryFormAbility.ets`) - 小部件 UI 文件 (`WidgetCard.ets`) - 小部件配置文件 (`form_config.json`) ### (2) 配置 module.json5 字段参考文档: ``` "extensionAbilities": [ { "name": "EntryFormAbility", "srcEntry": "./ets/entryformability/EntryFormAbility.ets", "label": "$string:EntryFormAbility_label", "description": "$string:EntryFormAbility_desc", "type": "form", "metadata": [ { "name": "ohos.extension.form", "resource": "$profile:form_config" } ] } ] ``` ### (3) 小部件特定配置 配置位于 `resources/base/profile/form_config.json`。 字段参考文档: ### (4) UI 开发和参数处理 小部件 UI 代码位于 `ets/widget/`。参数接收逻辑: ``` let storageUpdateByMsg = new LocalStorage(); @Entry(storageUpdateByMsg) @Component struct WidgetCard { @LocalStorageProp('diffExamDay') diffExamDay: number = -1; } ``` ### (5) 小部件生命周期和数据传递 - 在 `EntryFormAbility.onAddForm` 中的初始化逻辑(例如,将小部件 ID 传递给 WidgetCard) - 在 `onUpdateForm` 钩子中处理更新 ### (6) 在小部件初始化期间访问应用数据 #### 6.1 通知应用更新小部件数据 ``` postCardAction(this, { action: "call", abilityName: "EntryAbility", params: { method: "upDiffExamDay", formId: this.formId, }, }); ``` *时序问题解决方案:* 监控 `formId` 的变化,而不是使用 `aboutToAppear()`: ``` @LocalStorageProp('formId') @Watch('updateFormId') formId:string = ''; updateFormId() { postCardAction(this, { action: 'call', abilityName: 'EntryAbility', params: { method: 'upDiffExamDay', formId: this.formId } }); } ``` #### 6.2 应用端数据处理 在 `EntryAbility.onCreate` 中: ``` onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void { this.callee.on('upDiffExamDay', upDiffExamDayCall); } const upDiffExamDayCall = (data: rpc.MessageSequence): MyParcelable => { let params: Record<string, string> = JSON.parse(data.readString()); if (params.formId) { PreferencesUtil.putSync('formId', params.formId); const diffExamDay = UserCacheManager.getDiffExamDay(); diffExamDay === -1 ? getHomePageData(params.formId) // 如果数据不可用则获取数据 : Utils.updateDiffExamDay(params.formId); // 直接更新小部件 } return new MyParcelable(1, 'success'); }; ``` *更新小部件数据:* ``` // 导入所需模块 import { formBindingData, formProvider } from '@kit.FormKit'; updateDiffExamDay(formId: string) { const diffExamDay = UserCacheManager.getDiffExamDay(); let formMsg = formBindingData.createFormBindingData({ 'diffExamDay': diffExamDay }); formProvider.updateForm(formId, formMsg) .then(() => console.log('更新成功')) .catch((error) => console.error('更新失败:', error)); } ```
1作者: burnt-resistor8 个月前原帖
GFiber <p>我们迫不及待想要为您提供服务,但目前还没有达到这个阶段。</p> <p>很抱歉给您带来了困扰。由于系统错误,您错误地收到了“服务可用”的通知。不幸的是,Google Fiber 目前在您的住所不可用(我们对此也感到遗憾)。</p> <p>当您的地址符合服务条件时,我们会向您发送邀请以进行注册。</p> <p>感谢您的耐心等待,再次对造成的混淆表示歉意。</p> <p>我们非常感谢您对 GFiber 的关注!</p> <p>– GFiber团队</p>
1作者: taiyakihitotsu8 个月前原帖
你好。 我创建了一个 TypeScript 包,通过在类型层面实现一种名为 CionLisp 的脚本语言,来实现类似依赖类型的检查。通过从运行时值中提取类型,它能够进行 TypeScript 原生不支持的类型验证。 使用这个包,我实现了几个功能,包括: - 除零检测 - 长度索引向量(类似于 Idris 中的 Vect n) - 安全访问器(类似于 Lenses) 此外,任何可以在 CionLisp 中表达并在类型层面上解析的内容,例如通过正则表达式进行的电子邮件验证,也有可能进行类型检查。 请注意,这仍处于 alpha 阶段,因此请谨慎使用。 感谢您的关注。
1作者: arwong098 个月前原帖
我现在36岁,怀念和朋友们一起打扑克的那些深夜。<p>我们都忙于家庭和事业,几乎没有时间进行游戏。<p>于是我想到了回合制扑克,类似于《与朋友一起的单词》,但适用于德州扑克。<p>当轮到你行动时会收到推送通知,这样我们就可以在火车上、会议间隙、甚至在厕所里玩。<p>这个应用完全基于Expo + React Native + Firebase,并且有一个NextJS后端。<p>我在React Native的基础上编写了一个自定义动画引擎,用于渲染扑克牌的动画。<p>希望你喜欢!
1作者: whatbackup8 个月前原帖
我创建了一个简单的 WireGuard 配置生成器,适用于 Mesh 和 Hub-Spoke 网络。<p>目标包括: - 安全,仅限客户端 - 从种子生成以便重现密钥生成 - 简单的自托管 - 开源(MIT 许可证)<p>该项目尚未完成,我希望在未来添加一些功能,并进行安全审计(主要是为了学习)。<p>我非常欢迎您的反馈。
4作者: lendacerda8 个月前原帖
News-Hook 是一个用于在任何现实世界中设置网络钩子的工具,只需使用提示即可。<p>您可以写出类似这样的提示:<p>“当 [电影] 获得烂番茄评分时通知我” “当 [谣言] 被确认或否认时告诉我” “在美国和巴西之间的任何关税新闻时提醒我”<p>它的工作原理如下:<p>- 您写下一个提示,说明您想要获取的信息。 - 像往常一样设置一个网络钩子,包括 URL 和有效负载。 - 完成。<p>如果您想通过编程方式实现,还有完整的 API 可供使用。 我们提供了 Swagger-UI,方便您查看。<p>非常欢迎反馈、我未考虑到的使用案例,以及对设计或安全性的批评。<p>谢谢!