使用 Rosetta 建立 Ubuntu x86 开发环境

版权声明:本文为博主原创文章,转载请注明出处。

前言

尽管换了 M1 设备也有一年多了,但平时仍然依赖于 x86 平台进行开发,为此不得不单独部署一套 x86 的开发环境在 intel PC 上。

随着 macOS 更新到了 Ventura (13.0.1),以及 UTM 4.0 的更新,现已可以在 Linux 环境下启用 Rosetta 对 x86(含amd64) 应用进行加速。

使用 Rosetta 加速后,在构建项目的速度上甚至几年前的 i7 8700 打得有来有回,比较离谱。

Read More

修复Chroot环境下APT包管理对systemd环境识别问题

版权声明:本文为博主原创文章,转载请注明出处。

前言

近期在折腾Chroot环境下的设备时,发现软件包无法更新,得到以下错误:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
(Reading database ... 77272 files and directories currently installed.)
Preparing to unpack .../mariadb-server-10.3_1%3a10.3.34-0ubuntu0.20.04.1_arm64.deb ...
Running in chroot, ignoring request.
/usr/sbin/invoke-rc.d: 551: rc-service: not found
invoke-rc.d: initscript mysql, action "stop" failed.
dpkg: warning: old mariadb-server-10.3 package pre-removal script subprocess returned error exit status 127
dpkg: trying script from the new package instead ...
Running in chroot, ignoring request.
/usr/sbin/invoke-rc.d: 551: rc-service: not found
invoke-rc.d: initscript mysql, action "stop" failed.
dpkg: error processing archive /var/cache/apt/archives/mariadb-server-10.3_1%3a10.3.34-0ubuntu0.20.04.1_arm64.deb (--unpack):
new mariadb-server-10.3 package pre-removal script subprocess returned error exit status 127
Running in chroot, ignoring request.
Errors were encountered while processing:
/var/cache/apt/archives/mariadb-server-10.3_1%3a10.3.34-0ubuntu0.20.04.1_arm64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
Read More

通过chroot实现Linux子系统

版权声明:本文为博主原创文章,转载请注明出处。

前言

在一些精简的Linux发行版里,很多时候会有无法运行需要某些依赖的程序的情况。

然而,会搭载这种精简系统的设备,一般无法重新安装系统;例如:路由器、手机等其他嵌入式设备。

而且受限于系统内核(缺少cgroup的一些高级特性等),也无法安装docker。

同时,在不同的Linux发行版下,使用的C语言标准库也不尽相同;如:glibc、musl等。

即使CPU支持程序所使用的指令集,使用glibc所编译的程序,也无法在musl环境下运行。(使用兼容层也会出现依赖问题)

Read More

PHP无法获取环境变量解决办法

版权声明:本文为博主原创文章,转载请注明出处。

前言

在开发PHP项目时,遇到了无法通过getenv获取PATH的情况,检查phpinfo发现PHP无法获取环境变量。

Read More

在Mac上开启AptX

版权声明:本文为博主原创文章,转载请注明出处。

前言

在使用Mac下使用蓝牙耳机时,声音时常断断续续;

我寻思着会不会是音频编码的问题,猜测Intel蓝牙对AAC编码支持较差。

在搜索相关资料后,发现Intel蓝牙似乎支持AptX,那么便尝试更换之。

Read More

在Windows平台安装PyCrypto

版权声明:本文为博主原创文章,转载请注明出处。

前言

在使用PyInstaller加密打包程序时,遇到了打包程序无法启动的问题。

查阅资料后发现是因PyCrypto未能正确安装。

首先尝试了安装替代品PyCryptoDome,后来发现并不可行。

然后编译安装PyCrypto时又出现了无法安装的问题,再以此记录。

Read More

Python在CentOS下的编译安装过程

版权声明:本文为博主原创文章,转载请注明出处。

前言

最近在编写CentOS环境下的自动部署脚本,开发环境使用Python3.7+在CentOS环境下需要自行安装。

在安装的过程中,把以前没记录下来的坑又踩了一遍,故以此记录。

Read More

unoconv转换Csv中文乱码问题

版权声明:本文为博主原创文章,转载请注明出处。

前言

最近在使用PHPSpreadsheet导出大量数据到Xlsx时,频繁出现各种问题;如内存溢出、数据丢失等。

后来更换导出格式为Csv,问题减少了,但是在Office中使用极其不友好;如不支持单元格格式、在不同系统中使用的编码不同可能会出现乱码的情况。

于是就有了这么一个折中的方案,PHP导出时使用Csv格式,导出完成后,使用unoconv将文件转换为Xlsx格式。

然而使用unoconv转换为Xlsx时,遇到了中文乱码的问题。

1
unoconv -f xlsx -o xx.xlsx xx.csv
Read More

Git禁止记住密码

版权声明:本文为博主原创文章,转载请注明出处。

前言

在生产环境中部署git项目时,当pull时输入账号密码后,会被Git Bash记住;但如果部署在公共环境下,被记住就不太合适了。

Read More

PHP中将Word文件转换为PDF

版权声明:本文为博主原创文章,转载请注明出处。

前言

在上一篇水文中,我提到了需要实现“docx转pdf”;

经过一番折腾,最终得出了一个结论:PHP可真不愧是一两面撬刀的🔨。

在尝试了使用“phpoffice/phpword”+“dompdf/mpdf”等主流PDF转换库对docx进行转换后,最后得到的效果实在是不尽人意。(错位+乱码)

虽然在Windows平台可通过“.net COM组件”这种外挂方式实现转换,但这种方法不具备跨平台特性,不方便部署,同时也不方便在日后的项目复用。

最后得到的解决方案则是通过PHP调用Python unoconv工具调用LibreOffice实现。(究极套娃)

Read More

Mac环境下配置XDebug

版权声明:本文为博主原创文章,转载请注明出处。

前言

近日接了个CURD项目,在实现docx转pdf时出了点小问题,需要使用XDebug进行调试。

在一般情况下,只要使用包管理工具安装“php-ext-xdebug”之类的包即可。

然而Mac下的包管理,使用Homebrew搜索“php”,却没有相关结果。

经过一番搜索,发现pecl可安装“xdebug”。

Read More

安卓应用全屏适配(游戏)

版权声明:本文为博主原创文章,转载请注明出处。

前言

在前些日子中,DFQ默认的全屏方案在各种花里胡哨的安卓手机屏幕(如水滴屏、额头屏等全面屏)中出现大黑边。

在游戏应用中,如果两边有黑边,自然是玩起来不舒服的;所以只能寻找解决方案进行适配。

经过一番搜寻、实践,发现问题意外的简单。

Read More

PyQt5 QWidget初始化问题

版权声明:本文为博主原创文章,转载请注明出处。

前言

在初始化QWidget时出现了以下问题。

1
2
3
4
5
6
Traceback (most recent call last):
File "form/__init__.py", line 62, in __init__
self.setupUi(self)
File "view/form.py", line 31, in setupUi
QtCore.QMetaObject.connectSlotsByName(Form)
SystemError: <built-in function connectSlotsByName> returned a result with an error set
Read More

重启Usb蓝牙设备(PD虚拟机模拟插拔)

版权声明:本文为博主原创文章,转载请注明出处。

前言

小米pro的Hackintosh方案挺香的,用了也有8个月了,还是挺稳定的。

但是其中有两个很操蛋的问题:

  • 内置蓝牙无法使用
  • 无法驱动内置Wi-Fi

由于不想硬改,作出一些不可逆操作,所以以上问题均采用USB方案解决。

  • Wi-Fi解决方案也比较完美了,使用Comfast的CF-811AC可支持5G网络,搭配GitHub上的驱动使用,效果极佳。

  • 蓝牙,当时随便在淘宝买了个比较mini的USB蓝牙(加搜黑苹果关键字),倒是能用,但睡眠唤醒(设备断电)之后(手动关闭亦是如此),会导致无法使用,但如果重新插拔就又能正常使用了。(可能是驱动问题)

所以为了让蓝牙正常的工作,而又不希望每次都进行物理插拔(一点都不geek),就诞生了现在的想法:

  • 使用虚拟机模拟插拔!
Read More

Python闭包问题的探讨

版权声明:本文为博主原创文章,转载请注明出处。

前言

今日在更新程序的时候遇到了个问题。

如何生成多语言的菜单,创建并绑定相应的回调函数?

生成菜单自然是很简单的,一个for循环就好了,但是生成相应函数就???

Read More

Web开发基础课程

版权声明:本文为博主原创文章,转载请注明出处。

前言

前段时间为完成学校任务,设计了一套Web开发课程。

课程涉及前后端的基础应用,最终目标为开发一款简易的博客程序。

博客程序包含最基本的功能(用户、发布文章、文章分类、文章留言、友情链接)。

Read More

Flask 蓝图嵌套

版权声明:本文为博主原创文章,转载请注明出处。

前言

Flask是一个轻量级的python web框架,与django相比,flask抛开了繁琐的配置项等等。

Flask与Django一样,支持模块化开发,使用BluePrint(蓝图)实现。

但是,这个蓝图并不支持嵌套。。

Read More

Python解析url请求参数

版权声明:本文为博主原创文章,转载请注明出处。

前言

在制作爬虫模拟登陆时发现表单数据如下。

1
userName=xxx&userPwd=xxx

结构相当简单,想要转换成dict,分割两下就好了,但是仔细想想,这么常见的需求,一定会有相应的模块。

寻找了一番,果然是有的。

Read More

使用QuickLook进行快速预览

版权声明:本文为博主原创文章,转载请注明出处。

前言

在macOS下有一个便捷的功能,其名为QuickLook

只要在文件管理器选中一个文件,按下空格,即可快速预览。

最近重装了macOS,发现这个功能好像失效了。(可能是应用没有注册快速预览功能)

经过一番搜索,找到了更好的解决方案。(还找到了win版的QuickLook)

Read More

PHP7 兼容旧 MySQL Api

版权声明:本文为博主原创文章,转载请注明出处。

前言

这几天折腾网络安全的玩意,在搭建安全测试平台的过程中出现了点小问题。

安全测试平台使用的php版本是5.x,但我在服务器上安装的是7.x,7.x的php废除了对mysql的api,添加了一套新的api,mysqli。

虽然可以去安装php5.x来解决这个问题,不过常用的5.6好像也不支持了,那就不折腾了。

考虑到各种因素,于是乎用mysqli的api修改一下,做了个mysql的api兼容层。

Read More

【转】安装PyCrypto时VS编译出错

版权声明:本文为博主原创文章,转载请注明出处。

前言

最近做了个project,需要用到PyCrypto。

PyCrypto在Windows下需要使用VC进行编译,不过Python模块在Windows平台编译坑点比较多。

如:

1
2
3
4
5
6
7
8
9
10
winrand.c
D:\Windows Kits\10\include\10.0.17134.0\ucrt\inttypes.h(27): error C2061: 语法错误: 标识符“intmax_t”
D:\Windows Kits\10\include\10.0.17134.0\ucrt\inttypes.h(28): error C2061: 语法错误: 标识符“rem”
D:\Windows Kits\10\include\10.0.17134.0\ucrt\inttypes.h(28): error C2059: 语法错误:“;”
D:\Windows Kits\10\include\10.0.17134.0\ucrt\inttypes.h(29): error C2059: 语法错误:“}”
D:\Windows Kits\10\include\10.0.17134.0\ucrt\inttypes.h(31): error C2061: 语法错误: 标识符“imaxdiv_t”
D:\Windows Kits\10\include\10.0.17134.0\ucrt\inttypes.h(31): error C2059: 语法错误:“;”
D:\Windows Kits\10\include\10.0.17134.0\ucrt\inttypes.h(41): error C2143: 语法错误: 缺少“{”(在“__cdecl”的前面)
D:\Windows Kits\10\include\10.0.17134.0\ucrt\inttypes.h(42): error C2146: 语法错误: 缺少“)”(在标识符“_Number”的前面)
... blah blah blah ...
Read More

C++之获取数组长度

版权声明:本文为博主原创文章,转载请注明出处。

前言

在研究数组排序的过程中,发现了个很基础的问题–如何获取数组长度(成员数)。

似乎C++并没有提供获取数组长度的方法,网上搜索得知sizeof可以计算变量大小,可以通过获取数组大小/成员大小的办法得到数组长度。

当我将这个计算数组长度的方法封装起来时,发现事情并不简单。

1
2
3
4
5
6
7
int array_length(int ai[]) {
return sizeof ai / sizeof ai[0];
}

int is[] = {2, 4, 1, 3, 6, 5};
cout << sizeof is / sizeof is[0] << endl; // 输出: 6,right.
cout << array_length(is) << endl; // 输出: 2,emmmm???
Read More

Python生成正则测试数据

版权声明:本文为博主原创文章,转载请注明出处。

前言

匹配文本,最简单的方法就是使用正则表达式了。

但根据表达式生成测试数据,反过来一看,缺没什么头绪。

万幸的是,使用的是轮子遍地的python,所以只要找到相关模块就可以了。

Read More

关于Qt插件无法加载的问题

版权声明:本文为博主原创文章,转载请注明出处。

前言

某友人做了个Qt/C++ Project,开发环境Qt4.8+VS2017。

开发环境运行程序正常,但发布版在实际环境中无法运行。

首先是Qt对VC2010的依赖,缺失msvc*xxx.dll。

运行库安装后,出现错误:

1
2
CATCH:    Driver not loaded Driver not loaded
SQL_ERR: Database Open Fail
Read More

关于Emoji在Ansi编码上的问题

版权声明:本文为博主原创文章,转载请注明出处。

前言

近期开发微信项目,其中消息转发部分遇到了个问题。

当被转发的消息包含emoji表情时,在utf8转unicode的过程中因为编码不支持emoji字符,导致emoji表情变成了乱码(?)。

折腾半天,emoji是没办法转ansi了,但是可以通过字典的方式转成其他可解析字符来实现无损转换。

Read More

关于PyInstaller与PyQt5-5.11.2的问题

版权声明:本文为博主原创文章,转载请注明出处。

前言

前段时间由于没有使用virtualenv进行模块测试,导致pip安装的模块乱七八糟。

于是乎使用pip卸载掉所有模块,重新把常用的装上。

今天出现了个问题,pyinstaller打包出来的pyqt5应用无法启动。

1
ModuleNotFoundError: No module named 'PyQt5.sip'
Read More

Mpk文件格式(STEINS;GATE)

版权声明:本文为博主原创文章,转载请注明出处。

前言

近日看石头门0的动画入迷了,想要入手个游戏来玩玩。

近期steam刚好又有打折活动,不过可惜石头门0只有10%折扣,所以还是以后再买了。

但是石头门打折40%,于是乎又想回顾一下剧情,所以就。。。买!买!买!(买情怀)

当我通关全线后,忽然发现壁纸很久没换了,想换套壁纸,上网搜寻一番mpk解包工具,无果,于是乎就萌生了现在这个Mpk文件解析的念头。

Read More

Vim Adventures

版权声明:本文为博主原创文章,转载请注明出处。

前言

在知乎看到了关于vim学习的文章

想着vim在字符界面下使用很方便,使ssh环境下修改文件不再困难。

由于没有系统的学习过,突然又萌生了重头开始学习的念头。

当我打开以下链接后就停不下来了。(是个游戏,操作方式=vim使用方式)

点击查看

Read More

Python on Windows爆炸

版权声明:本文为博主原创文章,转载请注明出处。

前言

这几天做了一个基于python的project,使用pyinstaller进行打包。

在项目即将完成之际,经过三台PC的测试,并没有什么问题。

但是,当放到老板的两台PC上,均出现了无法运行的问题!

于是乎,离deadline也就剩下两三天了,翻车翻车。

Read More

Dnf资源文件格式-NPK篇

版权声明:本文为博主原创文章,转载请注明出处。

前言

在数个月之前,完成了OjoDnfExtractor的开发,该软件用于提取Dnf的资源包文件。

在做Dnf这些资源包文件的解析过程中,我明白了文件结构该如何设计。(也尝试了去设计文件结构)

经过多番观察、推测,成功解析了NPK以及IMG-Ver1、2、4、5、6的文件结构(支持读写)。

Read More

Python操作文件时间

版权声明:本文为博主原创文章,转载请注明出处。

前言

这次的项目涉及到了文件时间的伪装,即修改文件后恢复修改时间到原来得到的时间。

尝试使用某度搜索了相关文档,但却找不到相关的内容,google后立刻找到结果。

Read More

关于pyinstaller数据文件的打包

版权声明:本文为博主原创文章,转载请注明出处。

前言

使用pyinstaller进行打包程序,执行程序时发现,放置于程序目录的文件无法加载(相对路径方式访问)。

经过一番测试,发现执行程序时,程序执行的当前目录不一定是程序文件所在的目录。

而使用--add-data--add-binary打包的文件,发现存放于系统的临时目录。

Read More

揭秘开车技巧-幻影坦克

版权声明:本文为博主原创文章,转载请注明出处。

前言

前段时间在QQ上发现了一种特殊的图片,表面上看是一张正常的图片,而当你点开来看,emmmmm,撞车了。

在我看来,这很有趣,于是乎我搜索了一下,得知这种图片的称呼是“幻影坦克”(出自红警,虽然我没玩过),真霸气。

Read More

C/C++ WinApiHook注意调用方式!!!

版权声明:本文为博主原创文章,转载请注明出处。

前言

在前段时间使用易语言hook的方式,实现了《11月的阿卡迪亚》的部分汉化,当时只是抱着试一试的心态,不过既然成功了,就当然想要深入的理解和研究。

最近又发现了个有趣的エロ游戏,于是乎我又打算尝试汉化,不过机会渺茫,没有搞懂资源结构,但是修改程序使其支持中文显示,应该还是可以的。

然后在尝试Hook某些API的时候,程序崩溃了,研究了整整一天才发现原因,So,写篇文章记录下来。

Read More

【汉化】11月的阿卡迪亚

版权声明:本文为博主原创文章,转载请注明出处。

前言

在数个月前我听到了这游戏的OP,感觉挺好听的。
然后找了一下这个游戏,发现并没有汉化版,甚至连开坑的消息都没有,个人开坑的不算,谁知道整到什么时候

于是乎,我花了2天时间来进行程序的分析及修改。(初版完成)

后来又花了4天时间,对乱码文本进行修复。(解析完善)

最后,加上写这篇文章的时间,便是一周了。

Read More