大象笔记

知者行之始,行者知之成

Nginx 配置支持 mjs 文件的加载

用 Nginx 部署了一个前端项目,发现 pdf.js 相关的功能异常。 从浏览器的 console 来看,报错信息如下: Failed to load module script: Expected a JavaScript module script but the server responded with a MIME type of "application/octet-stream". Strict MIME type checking is enforced for module scripts per HTML spec. 参考: https://git ...

阅读全文...

React Native 获取当前手机系统语言,或者浏览器语言

之前开发 app 都是基于手机系统 locale 实现多语言翻译就行。 但是在 AI 横行的时代,又多了一项需求,就是根据手机系统的语言,自动返回对应语言的聊天内容。 这样就需要传递一个语言参数给后台接口。 languageCode An IETF BCP 47 language tag without the region code. Example: 'en', 'es', 'pl'. 而 locale 则是 languageCode 和 regionCode 的组合。例如 en-US, zh-CN. 当然还有其他的 code 组合。 安装 expo-localization 依赖 在 ...

阅读全文...

React Native Gifted Chat 显示 vimeo 视频

vimeo 插件 https://www.npmjs.com/package/react-native-vimeo-iframe renderMessageVideo 但是直接使用 Vimeo 组件,会报错: Video is not implemented by GiftedChat. You need to provide your own implementation by using renderMessageVideo prop. 于是增加了 gifted chat 的自定义方法: renderMessageVideo WebView not support 增加了 render ...

阅读全文...

React Native Gifted Chat 中渲染 Markdown 消息

晚上实现了 React Native Gifted Chat 中渲染 Markdown 消息,折腾完之后,我甚至感觉 React Native 的库比 React 的库都可靠。 安装依赖 https://www.npmjs.com/package/react-native-markdown-display npm install react-native-markdown-display 会看到安装了最新版本的依赖 git diff .\package.json + "react-native-markdown-display": "^7.0.2&quo ...

阅读全文...

微信小程序新增回本计算器功能,给大 A 股民 2025 新年的一丝慰籍吧

周末出门的路上,收到一个大象计算器微信小程序热心用户的反馈。希望增加一个回本计算器的功能。看来 2025 新年以来连续两个交易日,大 A 行情低迷,不少股民面对被套的窘境。所以才急需一个计算股票涨多少才能回本的功能 💰 用户很热心,怕我不明白,还贴上了计算公式。从截图风格看,估计是从某书上看到的。 唯一的需求是能精确到百分之一。哎,大家太不容易了。 回家简单花五分钟实现了一下(第一次尝试 GitHub Copilot edits 的多文件代码生成功能,确实科幻,但是小程序代码还是不太行),功能界面如下 体验方法一 微信中搜索大象计算器,点击进入后,找到回本计算器。 体验方法二 长按识别,或 ...

阅读全文...

Expo 官方文档适合作为 React Native 的入门教程

Expo 这个文档写的非常好。通俗易懂。细节也到位。强烈推荐。甚至比 React Native 国内的书籍要好很多。 https://docs.expo.dev/tutorial/introduction/ 一共分9个小节, 把 react native 的基础概念都覆盖到了: Create your first app Add navigation Build a screen Use an image picker Create a modal Add gestures Take a screenshot Handle platform differences Configure sta ...

阅读全文...

修复 Magento 询盘组件在产品列表页不弹窗显示

在外贸站 Magento 主题中,使用了 bluethinkinc/magento2-module-product-enquiry 这个询盘组件。 在产品详情页是可以正常点击按钮进行询盘的。 但是在产品列表页,部分产品可以正常询盘。但是某些产品,点击了询盘组件之后,无法弹出询盘窗口。 问题出在哪里 看了一下页面的代码,发现这个询盘组件,会在产品框里增加一个询盘按钮,id 为产品的 sku。 问题就出在这里,因为 sku 中可能包含特殊的字符,例如空格,句号之类,导致生成了一个非法的 html 元素 id。 于是 js 的点击响应事件就无法触发了。 所以,需要修改一下插件的代码,来修复这个 bu ...

阅读全文...

React Native 项目打包为 Web 版本

用 React Native 开发了一个聊天的 APP,想同时支持 App 和 Web 版本。 之前一直以为 React Native 只能开发 Android 和 iOS 版本的 APP,没想到还能直接打包为 Web 版本。(当然微软也提供了 Windows 客户端版本的支持) Web 版本打包命令 npx expo export 可以看到输出如下: Starting Metro Bundler iOS Bundled 40778ms node_modules\expo-router\entry.js (1170 modules) Android Bundled 44507ms node_ ...

阅读全文...

Windows 11 上生成 public key

最近在搞 React Native Android App 的测试,由于涉及到 Android Studio 的使用,所以不适合在 WSL Ubuntu 环境下开发了。 于是把开发环境都搭建在了 Windows 11 系统里。命令行自然换成了 PowerShell,但是由于没有 public key,git 提交代码到远程仓库,就非常麻烦。 搜索了一下,发现 Windows 上已经可以直接使用 ssh-keygen 生成 key 文件了 (不知道啥时候支持的😅)。参考: https://learn.microsoft.com/en-us/windows-server/administratio ...

阅读全文...

Github Copilot Chat 初试,通过 SQL 导入 CSV 文件到 MySQL 数据表

我想将一个 Excel 中的数据导入到 MySQL 数据表,首先,将 Excel 转成了 CSV 文件。 但是不知道为啥,MySQL Workbench 的 Table Data Import Wizard 选中 CSV 文件之后就崩溃。 于是我想为何不用 Github Copilot 生成 SQL 来处理呢?正好试试 Chat 功能。 非常 nb,稍微修改一下就能直接使用。你可能会觉得,这跟直接向 chatgpt,或者豆包之类的 AI 问问题,得到答案没有什么不同啊?但是,copilot 加入了文件 context 之后,就能精准的把字段都识别出来了,省去了手工输入字段的麻烦。 Copil ...

阅读全文...

对不起豆包,我开通了 GitHub Copilot Pro 会员

体验了 GitHub Copilot Free 功能有两个周了吧,整体上还是非常惊艳的。虽然基本的功能豆包 marscode 都支持,但是我总感觉 copilot 的代码自动补全更强大一些。没有具体的对比指标,主观性更强一些。而且 copilot 还支持 vim 插件,就冲这份情怀,也值得冲一波,毕竟白嫖 GitHub 这么多年。 copilot free 每月 2000 次的自动补全额度是否够用。我觉得应该是不够用的。假设一个月工作 20 天,一天只有 100 次,一天工作五小时,一个小时只有 20 次补全。这肯定是不够的。特别是使用之后,就会产生严重的依赖性。一分钟用个 10 次都有可能。 ...

阅读全文...

React Native 编译 Android APK

React Native 编译 Android APK 真是费劲,周末折腾了半天。浪费生命。有空试试 Google NPX 能否云编译。 国内的网络环境,搭建环境能要人命。 新建项目 npx create-expo-app@latest 网页浏览器调试 > npm run web Android 真机调试 PS D:\android_sdk\platform-tools> .\adb.exe devices List of devices attached 1eb7903e device 最好是把 adb.exe 的目录,放到系统环境变量中。要不每次都要到 An ...

阅读全文...