avatar
Muspi Merol
ChatCLI
背景 自从官方开放API开始,OpenAI就被墙了,国内用户访问ChatGPT越来越麻烦了,然而官方的API却出乎意料地,没有封禁国内用户。对ChatGPT重度用户,用API请求ChatGPT可以作为有时登不上官网的后备策略。 市面上已经有大量ChatGPT的GUI了,有WEB端,也有原生APP,但是大多用的是一次性得到response并显示的方式。事实上,官方API中,有一个 stream 参数(默认值为 False ),若为 True 就能实现像 ChatGPT 官方网页版那样,一个一个字…
avatar
计算机天才
debian上编译项目内存不够的解决办法
简单来说就是用页面文件替代内存。 如何配置页面文件参考下面链接,写的不错 https://blog.csdn.net/weixin_44796670/article/details/121234446 可以看到编译非常慢,瓶颈从cpu上转移到硬盘IO上 这个阿里云云盾也吃不少资源。 最后: 不太行,太慢了
avatar
Hooopo
Chain GPT
ChatGPT的chat只是表象,改名为ChainGPT就容易理解了。 它只是一个自然语言和程序的翻译桥梁。 不能访问网络、不能执行代码、没有最新的领域知识问题都可以通过外部Agents和Embedding方式解决,再把过程和结果chain回来就可以了。 举几个简单的例子: 解决当前时间问题: ChatGPT 默认情况不知道当前时间,所以你问它涉及到当前时间相关的问题都很不准确。对于应用来说,可以通过每次调用之前把当前时间注入到 prompt 里来解决…
avatar
计算机天才
Windows 线程调度研究
主要目的是看看windows和实时操作系统的区别。 先列举一下几个关键函数 NtYieldExecution 此函数让当前cpu放弃时间片,操作系统会开始选择下一条线程开始调度 KiFindReadyThread 此函数涉及到以什么样的机制来选择下一条要调度的线程 KiDispatcherReadyListHead为线程全局链表(只适用于windows XP),查引用就可以找到其他跟线程调度有关的函数。 PKTHREAD FASTCALL KiFindReadyThread ( IN ULONG ProcessorNumber,//当前放弃时间片的NextProcessor成员 IN KPRIORITY LowPriority //太低的优先级队列不检查 ){ // 位图调度算法,很多…
avatar
steve lee
Export large file in Rails with Sidekiq
In some systems, you'll have to do something very slow. Maybe you need to export a large dataset to a CSV file, or need to generate a thousand row Exel file that takes some minutes to complete. Instead of try building these kinds of reports in a normal Rails controller action, this task should be moved into a background job for processing outside the life cycle of a single HTTP request. But when you move work to a background job, code execution does not stop and you need a way to “connect” back to the user that caused the…
avatar
计算机天才
如何使用windows wfp技术将udp信息转发到另一个程序中
接上文,proxifier目前不支持udp的转发 https://geeknote.net/tiancai/posts/2191 目前我还不会驱动层的ndis、wfp等类似网络过滤的技术。 但是我把这个问题给Chatgpt,它给了我一个答案,我决定试一下(如果用google去查的话,几乎搜不到wfp在应用层的应用,因为大多数人都是用这个写驱动的)。 答案如下 使用Windows Filtering Platform (WFP) 将UDP流量转发到另一个程序需要编写一个应用程序,该应用程序在用户模式和内核模式之间进行通信…
avatar
计算机天才
windows下使用wget下载指定http server文件夹
Remove-Item Alias:wget;wget -c -r -np -nH --no-check-certificate https://wudiaoteman.cn/tool/processhacker-2.39-bin/processhacker-2.39-bin/ https://www.gnu.org/software/wget/manual/html_node/Directory-Options.html
avatar
写 bug 的大耳朵图图
Springboot业务信息国际化
业务背景 用户上传一个 excel 文件,要对 excel 内容做校验,然后返回校验结果。校验通过之后,在执行导入。但是现在平台要做国际化,支持中英双语,目前校验结果是直接中文返回,为了完成国际化需求,需要根据请求头中的 Accept-language 来决定返回何种语言的内容。 当前处理方式 国际化方案 使用工具类获取国际化内容 import org.springframework.context.MessageSource; import org.springframework.context.MessageSourceAware; import org.springframework.context.support.MessageSourceAccessor; import org.springframework.stereotype.Component; @Component public class I18nMessageUtil implements MessageSourceAware { private static MessageSourceAccessor accessor…
avatar
计算机天才
C++ new操作符对可析构类的行为
如果一个类有自定义的析构函数,那么new会在分配的size加上8(或4)字节,用来放new[]的object的数量,析构的时候可以为申请的每一个对象调用析构(这也是为什么要delete[]) 写STL库的时候会用到
avatar
计算机天才
[_KUSER_SHARED_DATA] dump
0: kd> dt _KUSER_SHARED_DATA 0xFFFFF78000000000 nt!_KUSER_SHARED_DATA +0x000 TickCountLowDeprecated : 0 +0x004 TickCountMultiplier : 0xfa00000 +0x008 InterruptTime : _KSYSTEM_TIME +0x014 SystemTime : _KSYSTEM_TIME +0x020 TimeZoneBias : _KSYSTEM_TIME +0x02c ImageNumberLow : 0x8664 +0x02e ImageNumberHigh : 0x8664 +0x030 NtSystemRoot : [260] "C:\Windows" +0x238 MaxStackTraceDepth : 0 +0x23c CryptoExponent : 0 +0x240 TimeZoneId : 0 +0x244 LargePageMinimum : 0x200000 +0x248 AitSamplingValue : 0 +0x24c AppCompatFlag : 0 +0x250 RNGSeedVersion : 0xa +0x258 GlobalValidationRunlevel : 0 +0x25c TimeZoneBiasStamp : 0n6 +0x260 NtBuildNumber : 0x4563 +0x264 NtProductType : 1 ( NtProductWinNt ) +0x268 ProductTypeIsValid : 0x1 '' +0x269 Reserved0 : [1] "" +0x26a NativeProcessorArchitecture : 9 +0x26c NtMajorVersion : 0xa +0x270 NtMinorVersion : 0 +0x274 ProcessorFeatures : [64] "" +0x2b4 Reserved1 : 0x7ffeffff +0x2b8 Reserved3 : 0x80000000 +0x2bc…
avatar
计算机天才
dll函数以序号形式导出,隐去函数名字
需要建立个.def模块定义文件 .def的内容如下 LIBRARY msgbox EXPORTS f @800 NONAME
avatar
计算机天才
IDT dump
0: kd> !idt Dumping IDT: fffff80727868000 00: fffff8072565fd00 nt!KiDivideErrorFault 除0异常 #DE 01: fffff80725660000 nt!KiDebugTrapOrFault 硬件断点或者硬件读写访问断点 #DB 02: fffff807256604c0 nt!KiNmiInterrupt Nmi异常 03: fffff80725660980 nt!KiBreakpointTrap 软件断点 #BP 04: fffff80725660c80 nt!KiOverflowTrap 移除 #OF 05: fffff80725660f80 nt!KiBoundFault 边界检查#BR 06: fffff80725661480 nt!KiInvalidOpcodeFault 不合法指令#UD 07: fffff80725661940 nt!KiNpxNotAvailableFault 08: fffff80725661c00 nt!KiDoubleFaultAbort 双重异常 09: fffff80725661ec0 nt!KiNpxSegmentOverrunAbort 0a: fffff80725662180 nt!KiInvalidTssFault 0b: fffff80725662440 nt!KiSegmentNotPresentFault 0c: fffff807256627c0 nt!KiStackFault 0d: fffff80725662b00 nt!KiGeneralProtectionFault #GP 0e: fffff80725662e40 nt!KiPageFault 页错误 10: fffff80725663480 nt…
avatar
Hooopo
LLM ReAct 模式的实现
ChatGPT 存在的问题 ChatGPT 是一个语言模型,对自然语言的理解和输出比人类要强很多,对编程语言和结构化处理相关的问题更是比人类好很多。 对于开发者来说,目前ChatGPT 存在的几个问题: 在Chat模型里对话过长会出现失忆现象 无法读取大型文档和数据 无法数学计算 无法执行代码 无法联网获取最新讯息 前两个问题可以通过 数据填充机制(Augmentation)解决。后几个问题一般引入 ReAct(Reason+Act) 模式来解决。数据填充机制在网上的资料和应用非常多,但是ReAct…
avatar
咸的鱼
new_System_Call!
近期的工作是改造为WebAssembly加入一组新的API来实现相应功能,翻找了一些资料和类似代码感觉这方面的内容还是比较少,可能大家关注的焦点还是更多在于怎么把某些代码编译到WASM上去或者怎么嵌入WASM来实现轻量级的Out-box Sandbox。所以在这里记录了一点自己的笔记和参考资料以备查阅。 WASM or WASI WebAssembly ,顾名思义,是在Web上执行Assembly的技术。这项技术的初衷就是避开JavaScript在技术密集型应用上的先天不足,尝试在…
avatar
计算机天才
Copilot初体验
首先谷歌直接搜Copilot,然后直接点第一个。 用自己的github账号登陆后,然后需要激活体验版(白嫖2个月,后面10刀一个月),中间需要绑定支付方式,我直接用的paypal随便绑了一个银行卡。 然后就是Getting started with GitHub Copilot。 我先用的visual studio,有版本要求的。 GitHub Copilot is an AI pair programmer that helps you write code faster and with less work. Requires Visual Studio 2022 17.4.4 or later. 后来发现老版本也可以。 https://github.com/settings/copilot 开启…
avatar
Rei
在 Fly.io 部署 Meilisearch
最近在 Fly.io 部署了一个 Meilisearch,记录一下过程。 首先创建应用: $ fly launch -i getmeili/meilisearch:v1.0 --no-deploy 修改 fly.toml: app = "your-app-name" [build] image = "getmeili/meilisearch:v1.0" [env] # 设为生产环境,需要使用 api key 访问 MEILI_ENV = "production" # 设置 fly 内部监听地址,否则无法从内部网络访问 MEILI_HTTP_ADDR = "fly-local-6pn:7700" # 关闭数据收集 MEILI_NO_ANALYTICS = "true" [mounts] destination = "/meili_data" source = "meili_data" 设置 Master Key: $ fly secrets set MEILI_MASTER_KEY=your-master…
avatar
计算机天才
IDA插件Class Informer的使用
下面几幅图是应用场景。 这个DLL的导出接口用的是虚基类的方法,这种开发方式我不太熟悉,但是要弄明白具体的类实现首先要找到IPlugin和IAntiDebug的类结构,此时就需要用到Class Informer插件了。 最好用IDA Pro7.0。 2023.4.3 这种开发是COM技术,在COM本质论1.6章有详细描述,老开发应该都知道。 2023.5.4 IDA8.2 free版本也可以用ClassInformer插件。 https://github.com/herosi/classinformer-ida8
avatar
计算机天才
C++20 协程
据我理解,协程是为了充分利用单线程的资源。 协程之间切换只涉及到2次上下文的切换(而且理论上是不用进内核的),而线程切换的流程复杂,涉及包含上下文切换的很多操作和算法。 在IO密集型的程序中,一般(比如A线程)涉及到IO之后就直接阻塞,然后操作系统调度其他要工作的线程(比如B线程)。这个时候A线程直接用协程来调度B,是能省点性能。 目前我没有遇到这种重IO的项目,等…
avatar
计算机天才
利用processhakcer库让用户层开发使用内核层的变量或类型
git clone https://github.com/processhacker/phnt.git #include"phnt/phnt_windows.h" #include"phnt/phnt.h"
avatar
计算机天才
关于C/C++和python字符串编码
上次实习的时候写了个鸟项目,编码的事情一直没清楚,因为那个项目主要是英文居多,所以什么编码一般都不会出问题。 int main() { const char* nihao = "你好"; const wchar_t* lnihao = L"你好গা"; for (int i = 0; i < strlen(nihao); i++) printf("%x ", (unsigned char)nihao[i]); printf("\n"); for (int i = 0; i < wcslen(lnihao); i++) printf("%x ", (wchar_t)lnihao[i]); printf("\n"); } 结果 c4 e3 ba c3 4f60 597d 997 9be 使用gb2312肯定是比unicode省内存的,但是…