avatar
计算机天才
利用gitbook写文档
文档还是很重要的,特别是大型的复杂的项目。编译型语言还能自己调试研究一下,脚本语言连类型声明都没有,参数传什么类型都不知道,返回值any,这怎么搞 随便用gitbook写了个自己的项目文档,勉强用用了,很可惜的是gitbook导出pdf需要vip会员
avatar
xfyuan
领域驱动,必有勇夫
本文已获得原作者( Jorge Manrubia )和 37signals 授权许可进行翻译。原文描述了在领域驱动设计中,对于如何选择代码“遣词造句”的思考。 原文链接:Domain driven boldness 作者:Jorge Manrubia(Github、Twitter),居住于西班牙瓦伦西亚,目前工作于 37signals,诸多 Ruby、Rails 的 Gem/Library 的作者,比如:Active Record Encryption(已被纳入 Rails 7 成为默认特性)、mass_encryption、console1984、audits1984、ib_ruby_proxy、impersonator、turbolinks_render 等 站点:37signals 以创建了 Basecamp 和 HEY 而举世闻名,也撰写了很多商业和软件相关的书籍(Getting…
avatar
计算机天才
windows 系统DLL imagehlp.dll研究
主要是在用procmon研究一个软件的时候发现它加载了这个dll。 https://learn.microsoft.com/en-us/windows/win32/debug/image-help-library 这个dll大致的功能应该是方便快速操作pe文件的。 https://learn.microsoft.com/en-us/windows/win32/debug/imagehlp-functions dll函数表 https://github.com/search?q=imagehlp.dll+language%3AC%2B%2B&type=code&l=C%2B%2B 学习一下别人的代码,看看有啥用
avatar
yuan
TypeScript 笔记
TypeScript 项目文件结构 tsconfig.json { "compilerOptions": { "lib": ["es2015"], "module": "commonjs", "outDir": "dist", "sourceMap": true, "strict": true, "target": "es2015" }, "include": [ "src" ] } 放于项目根目录下。 include: TSC 在哪些文件夹中寻找 TypeScript 文件 lib: TSC 假定运行代码的环境中有哪些 API?(es2015, es2020, esnext 等等)编写在浏览器中运行的 TypeScript 需要加入 "dom" module: TSC 把代码编译成哪个模块系统(commonjs, amd 等等) outDir: 生成的 JavaScript 放置的目录 strict: TypeScript 严格模式(true, false) target: TSC 把代码编译成哪个 JavaScript 版本(es2015, es2020, esnext 等等) tsling.json { "defaultSeverity": "error…
avatar
写 bug 的大耳朵图图
IDEA高效使用指南
设置全局 JDK File -> New Projects Setup -> Structure... Maven 配置 Perferences -> Build,Execution,Deployment -> Build Tools -> Maven 自动导包/删除无用包 Perferences -> Editor -> General -> Auto Import 注释模板 Perferences -> Editor -> File and Code Templates class 注释模板示例 #if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end #parse("File Header.java") /** * @author: ${USER} * @date: ${DATE} ${TIME} * @description: */ public class ${NAME} { } 显示方法分割线 Perferences -> Editor -> General -> Appearance 代码自动补全 Perferences -> Editor -> General…
avatar
计算机天才
关于Hyper-V和Vmware配置网络的问题
// 不要加-b 127.0.0.1参数 python -m http.server 8000 https://www.jianshu.com/p/4f8efbd91292
avatar
沉冰浮水
所以就不是很懂 SEO
「SEO」 这个 TAG 下以前有没有发过文章甚至都不记得了,至少现在本篇是第一篇…… 我的 web 工具箱里有这个: LMSTFY - 让我帮你搜索一下 - 水水的演示站: https://demo.wdssmq.com/tools/LMSTFY/ 但是有时的有时,一些问题是没有明确答案的,比如: 「browser-sync的命令行参数能否排除多个路径?」 「在导入 json 文件时 eslint 报错:Parsing error: Unexpected token assert」 前者我实际看过源码发现并不支持,自己魔改了下用,哪天试下给官方…
avatar
steve lee
Azure App Service notes
Prerequisite: On the Azure dashboard, we must create a new app service and resource group that the app service belongs to. For simplicity, suppose our app is named beego-way and the resource group is named jedi-service_group. Firstly, we must set deployment user: az webapp deployment user set --user-name <username> --password <password> Get git clone url (or deployment url): az webapp deployment source config-local-git --name beego-way --resource-group jedi-service_group Add remote git url and deploy: git remote add azure <deployment_url> git push azure master Get…
avatar
计算机天才
存储器之Cache相关设计原理
缓存就是存储在芯片中的内存,只不过这部分区域成本高,速度快,因此和廉价的主存区别开了。 缓存中的数据结构决定了这部分缓存起什么作用。 下面图来自Wiki,我觉得不错(很多CPU内部图没有tlb缓存的位置) 主存(内存)有些书以内存块表示,有些书就以(虚拟)地址表示,当内存块为1字节的时候,两者就差不多了。 地址是64位的数(建立在现代CPU情况上),如何利用这个数索引缓存块是最关键的…
avatar
计算机天才
binary ninja如何安装和编写插件
binary ninja也是逆向的一员大将。 安装 第一种方式 一般这种情况下插件的存放地点都是github, git clone 仓库地址 第二种方式 第二种不知道咋用,没研究过 2023.4.19 第二种方法相当于包管理器,替你git clone一下,不过会因为网络问题出现错误。 https://docs.binary.ninja/guide/plugins.html 编写 建议直接改现成的项目中(如obfuscation_detection)的代码完成一些代码编写工作,之后在考虑单独搞成一个项目。 看上图,将test文件夹视为一个包。 binary ninja启动的…
avatar
razeos
如何启动一个 HTTP 服务器
如何在计算机上启动一个 HTTP 服务器? Python python -m SimpleHTTPServer 3323 python3 -m http.server 3323 Ruby ruby -rwebrick -e "WEBrick::HTTPServer.new(Port: 3323, DocumentRoot: Dir.pwd).start" PHP php -S localhost:3323 Node.js npm install -g serve serve -l 3323 npx serve -l 3323
avatar
razeos
创建可配置的 RubyGems
在 Ruby 开发中,有以下常见的配置模式: Papago.configure do |config| config.api_key = ENV['PAPAGO_API_KEY'] end papago 是一个简单的命令行翻译器。 从语法可以看出,Papago 的 #configure 方法接收一个代码块。 module Papago def self.configure yield configuration end def self.configuration end end 代码中 #configuration 需要返回一个可以用作数据容器的对象。 module Papago + class Configuration + end def self.configuration + @configuration ||= Configuration.new end end 其中,@configuration 作为模块的实例变量,#configuration 始终持有同一个 Configuration 实例。 最后,@configuration 需要…
avatar
razeos
整理一些有关自制编程语言的书籍/资料
最近想学习 Dart 语言,想用 Dart 实现一个简单的玩具语言。目前还没完成,也不知道能不能完成。之前买过许多「自制 XYZ」的书,也收藏了一些网络资料,在这里分享给一样对自制编程语言感兴趣的朋友。 一些书籍 两周自制脚本语言 自制编程语言 自制编译器 《自制编译器》作者「青木峰郎」也是《Ruby程序设计268技》作者之一。 这 3 本书我都买了,除了「两周」那本,另外两本都挺厚的,而且代码比较难懂。 入门首选 用Go语言自制解释器…
avatar
计算机天才
visual studio编译汇编源文件
以前那个方法太麻烦了。 今天学会一个新的 不勾选是没有masm这个选项的
avatar
计算机天才
C++ 模板参数推导相关问题
写项目的时候遇到相关问题, 上面注释的代码是编译不了的。 函数原型 WINBASEAPI HANDLE WINAPI CreateFileA( _In_ LPCSTR lpFileName, _In_ DWORD dwDesiredAccess, _In_ DWORD dwShareMode, _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes, _In_ DWORD dwCreationDisposition, _In_ DWORD dwFlagsAndAttributes, _In_opt_ HANDLE hTemplateFile ); 如果不加类型强制转换的话,也就是注释的代码 自动推导的类型如下 void * __ptr64 char [9] unsigned long int int int int int 很显然与函数原型不匹配。 下面是正确的推导。 void * __ptr64 char [9] unsigned long unsigned long struct _SECURITY_ATTRIBUTES * __ptr64 unsigned long unsigned…
avatar
电子芥末
在 Windows 中配置 nvim 的 Go 语言环境
去年我试用了 Helix 编辑器, 感觉很好, 写了一篇介绍文章 https://geeknote.net/SuperMild/posts/976 但 Helix 没有 GUI 程序, 必须在终端里使用, 我主要是在 Windows 里使用, 遇到了快捷键冲突, 显示不正常等一些问题, 不得不弃用了. 因此, 我重新看向 vim, 抽空试用了 neovim, 这个有 GUI 程序, 试用起来感觉还不错. 我暂时只配置了 Go 语言环境, 下面详细讲解配置方法, 本文注重可操作性, 每一个细节都讲到了, 确保你可以必然一定绝对安装…
avatar
Rei
用 CSS 控制页面内容对部分用户可见
问题 写 Web 应用的时候,经常需要写这样的 HTML 片段: <div class="post"> ... <% if current_user == post.author || current_user.admin? %> <a href="/posts/1/edit">edit</a> <% end %> </div> 其中 edit 这个链接只显示给作者或者管理员。但如果加入用户相关的逻辑,这个片段就无法缓存了。 除了写客户端 js 修改内容外,有没有简单的方法控制内容对部分内容可见呢? 解决方法 我在分析 hey.com 页面的时候发现一种…
avatar
Renny
在 Rails 中使用 SSE 来实现一个 ChatGPT 应用
英文原文:https://renny.ren/ch/articles/40 前言 在使用 ChatGPT 的时候,你会注意到这个回复不是一次性生成完的,而是边生成边返回,像打字一样的效果: 那么这是如何实现的呢,这篇来研究一下相关的技术细节。 其实这种效果叫 streaming response (流式传输的回复),很形象。 提到 streaming response 就不得不提到 SSE 关于 SSE 如果你看一下 OenAI API 文档,就会发现有一个参数叫 stream If set, partial message deltas will be sent, like in ChatGPT. Tokens will be…
avatar
写 bug 的大耳朵图图
Centos使用Tomcat安装Jenkins
安装步骤 安装JDK1.8 yum makecache yum install -y java-1.8.0-openjdk.x86_64 安装tomcat # 下载tomcat9.0 wget https://mirrors.bfsu.edu.cn/apache/tomcat/tomcat-9/v9.0.36/bin/apache-tomcat-9.0.36.tar.gz && tar -xvf apache-tomcat-9.0.36.tar.gz # 删除webapps下面的项目 cd apache-tomcat-9.0.36/webapps/ && rm -rf * # 下载jenkins.war并重命名为ROOT.war wget https://mirrors.huaweicloud.com/jenkins/war/2.240/jenkins.war -O ROOT.war 修改Tomcat启动脚本,支持Jenkins跨域…
avatar
计算机天才
RetDec框架之bin2llvmir工具的使用
python .\retdec-decompiler.py <binary_path> 测试代码 #include<iostream> #include<windows.h> #include<intrin.h> using namespace std; int dummy_1 = 1; int dummy_2 = 2; int res = 0; int cpuid[4]; int main() { res = IsDebuggerPresent(); printf("%d\n", res); res = dummy_1 + dummy_2; printf("%d\n", res); res = dummy_1 - dummy_2; printf("%d\n", res); res = dummy_1 * dummy_2; printf("%d\n", res); res = dummy_1 / dummy_2; printf("%d\n", res); res = dummy_1 << 1…