avatar
steve lee
Rails helpers tips for writing better view
1. DOM id convention with dom_id The dom_id helper takes a string or any object as an argument that can be converted to a dom_id. And it helps us convert an object into a unique id like this: post = Post.find(10) dom_id(post) # => "post_10" dom_id(post, new_comment) # => "new_comment_post_10" dom_id helper is introduced a long time and is become more valuable when working with Hotwire concept like Turbo Frame or Turbo Stream. Turbo Frames and the dom_id helper Because turbo_frame_tag uses…
avatar
计算机天才
VisualStudio Release编译开启调试
有时候项目因为各种情况是需要必须以发布(Release)的形式编译的。 这个时候变量优化严重,调试不了的。 Debug Release 把Release优化的选项搞成debug一样的就可以了。
avatar
计算机天才
关于github最近更新的code search功能
一些start数比较少的只能等仓库被索引进来才进来够搜索。 2023.5.28 日常存放代码的仓库被索引了,可以搜索代码了,昨天还不行的 参考链接: https://stackdiary.com/githubs-new-code-search-is-bad/ https://github.com/orgs/community/discussions/18624 https://www.theregister.com/2023/02/07/github_code_search/ https://www.youtube.com/watch?v=ujVY8xqkflQ
avatar
wulu
指定 Whisper 输出为简体中文
Whisper是OpenAI推出的一种开源语音识别模型,能够自动识别多种语言,将音频转换文字。Whisper由python实现,同时拥有丰富的社区支持。除了原始的Whisper之外,还有一些相关的项目,有移植到 C/C++的whisper.cpp和能使用GPU加速的faster-whisper。如果你不懂编程或者不熟悉命令行,也有也有很多开发者开发了图形界面,比如buzz和Const-me/Whisper等。 Whisper 支持直接输出srt格式的字幕文件。我最近用 Whisper 生成字幕文件,再配合ChatGPT 使用subtitle-translator…
avatar
Muspi Merol
用cookies应对DDOS的Sanic中间件
最近网站遭到了DDOS,流量飙得老高,100GB的流量包半周就能耗完。发现攻击集中在 376 KB 的最大的bundle文件上。由于攻击来自多个IP,且(由于我比较菜)没有什么特征可以分辨,逐url逐IP的令牌桶没效果,所以一直都没有实质性的办法。 说起来,这人一开始还通过尾随 queryString 的方式击穿我CDN的缓存,跑了我源站几十GB的流量直接给我干欠费了 哈哈哈 今天突然想到了一种办法…
avatar
计算机天才
编译器之后端代码优化学习
主要内容为依赖LLVM为后端,学习各种编译器优化算法,目前是阅读LLVM源代码。 ​ https://www.youtube.com/watch?v=Ml-4hkFQcnE&list=PL0qj8UdnOw30ZGMcM6DwvM1J2tttyy_D6&index=2
avatar
计算机天才
如何判断Visual Studio 编译的lib/dll运行库的链接方式
dumpbin.exe /directives <lib名称>
avatar
计算机天才
windows powershell 更换控制台编码
切换到utf-8,不然有时候输出中文会乱码 chcp 65001
avatar
计算机天才
windows powershell 等价|grep的用法
grep是linux下的一个程序,用来对shell输出的字符串过滤的。windows下一般是没有的,但是powershell有相应的功能findstr。 Example: CMake --system-information |findstr "CMAKE_INSTALL_PREFIX"
avatar
计算机天才
Notepad++ 使用SFTP教程
vim和nano用的我头痛。vscode每次打开自动加载一大堆插件,太重量级,我只需要基本的文字编辑和语法高亮。 此方案适合只把linux作为工具的人,想要玩linux的那种程度还是老老实实学vim吧。 这个视频讲的非常明白。 https://www.youtube.com/watch?v=rGeAnehkEuA
avatar
计算机天才
CMake之find_package问题研究
主要是用CMake的时候遇到了find_package的奇怪问题(windows上)。 先写一个测试CMakeLists set(CMAKE_VERBOSE_MAKEFILE TRUE) find_package(retdec 5.0 REQUIRED COMPONENTS retdec) add_executable(main main.cpp) target_link_libraries(main PUBLIC retdec::retdec) target_include_directories(main PUBLIC retdec::retdec) 试着构建一下 cmake -Bbuild 竟然可以构建出来。打开项目工程(.sln) 奇怪了,我确实下载过retdec的release bin,CMake怎么能识别到的呢。(后来发现是系统的Path环境变量里有这个路径,也就是说CMake还会自动去…
avatar
写 bug 的大耳朵图图
Mac使用Jenv实现Jdk多版本管理
前言 目前在开发过程中,需要同时安装 Jdk8, Jdk11, Jdk17 进行项目开发,为了统一管理Jdk 环境,需要一款类似 conda 的工具来管理多套 Jdk 环境,可选的方案有以下几种: 使用 shell 脚本来动态设置 JAVA_HOME; 使用 scoop 来管理环境; 使用 jenv 来管理环境; 经过使用体验,最后选择了 jenv 来做 jdk 版本管理。 安装 在 mac 下面可以使用 brew 来安装 jenv brew install jenv 我用的 zsh,因此还需要将 jenv 添加到 zsh 中 echo 'export PATH="$HOME/.jenv/bin…
avatar
steve lee
Ruby - DIY accessor methods
1. Ruby accessor methods Ruby does not allow instance variables to be accessed outside of methods for that object. class Person def initialize(name) @name = name @age = 10 end end p = Person.new('steve') p.name # => undefined method `name=' for #<Person ..> This design ensures OOP encapsulation - an object’s data is protected from the outside world. In some languages like Java, to access private instance variables, we must define getter/setter methods for each attribute. But in Ruby, we can generate getter/setter methods by using one of the methods in the Module…
avatar
写 bug 的大耳朵图图
Jdk11获取系统信息
闲话少说,直接上代码,下面用到的 api 仅在 jdk11 上测试通过,其他 jdk 版本没试过 工具类 SystemInfoUtils.java import com.demo.constant.SystemInfoConstant; import com.sun.management.OperatingSystemMXBean; import lombok.extern.slf4j.Slf4j; import java.lang.management.ManagementFactory; import java.net.InetAddress; import java.net.NetworkInterface; import java.nio.file.*; import java.text.DecimalFormat; import java.util.ArrayList; import java.util.Enumeration; import java.util.List; import java.util.stream.Collectors; /** * @description: 系统信息工具类 */ @Slf4j public class SystemInfoUtils { /** * 获取本地IP地址 * @return 本机 ip,过滤了回环地址和 localhost */ public…
avatar
计算机天才
LLVM调试技巧之Value类
Value是llvm中最重要的一个类,它是最基础的基类 https://llvm.org/doxygen/classllvm_1_1Value.html 一般Value它是有一个类成员提供这个对象的名字的,这个名字作为创建时用户提供的参数。这个成员在调试的时候我认为是有大用的。 bool llvm::Value::hasName ( ) const StringRef Value::getName ( ) const StringRef Value::getName() const { // Make sure the empty string is still a C string. For historical reasons, // some clients want to call .data() on the result and expect it to be null…
avatar
计算机天才
retdec项目源代码阅读部分记录
只涉及到x86架构的部分,像arm mips powerpc架构我目前用不上。 // 获得对应长度的整数类型 llvm::IntegerType* getIntegerTypeFromByteSize(llvm::Module* module, unsigned sz) { sz = sz ? 8*sz : module->getDataLayout().getPointerSizeInBits(); return llvm::Type::getIntNTy(module->getContext(), sz); } // llvm中的CreateNot可不是x86的not指令,not指令要xor -1来模拟 llvm::Value* generateValueNegate(llvm::IRBuilder<>& irb, llvm::Value* val) { return irb.CreateXor(val, llvm::ConstantInt::getSigned(val->getType(), -1)); } llvm::Value* Capstone2LlvmIrTranslatorX86_impl::loadOp(...){ case X86_OP_REG: { //把llvm ir中的@op…
avatar
计算机天才
github代码搜索功能排除指定仓库
以前一直遗留下来的一个问题。当时还没有chatgpt,我就一直留着忘记解决了。现在有了ai,顺手问一问。直接看答案吧,也没啥好说的。 虽然我的英文很垃圾,但是跟chatgpt交流没啥问题,哈哈 比如我要搜索有关ntcreatefile的代码(github搜索是大小写无关的), 搜索结果如下 要想排除比如chromium的项目, ntcreatefile -repo:chromium/chromium 要注意的是,每个fork都是独立的仓库,排除的时候是用用户名+仓库名排除的,所以后面…
avatar
mengencn
union struct bit field在嵌入式编程中的使用
在嵌入式编程中,由于贴近硬件,需要经常对寄存器进行操作,涉及到比较多的位运算,例如 /// set val bit 3 to 1b val = val | (1<<3) /// clear val bit 4 to 0b val = val & (~(1<<4)) 如果涉及到多个 bit field 的清除,赋值操作,其实现更加复杂且容易出错,例如 // set bit 7:5 to 101b val = val & (~(0x07<<5)); val = val | (0x05<<5); // set bit 2:1 to 01b val = val…
avatar
busylog
curl/chrome resolve to SNI proxy
--resolve "*:443:127.0.0.1" --resolve "*:80:127.0.0.1" for chrome/chromium browsers: --host-resolver-rules="MAP * 127.0.0.1"
avatar
鱼翅
瞎话 JavaScript 函数式:add(3)(4)一点都不酷
这可能是一篇很无聊的文章,它无聊就无聊在或许这个世界真的需要这样的文章。 国际惯例,写在前面 作为一名野鸡大学毕业的野路子程序员,第一次听说函数式编程这个概念的时候我大概已经工作一年了。彼时的我正在做 Ruby&JavaScript 全栈工程师的美梦。 一名有抱负(暂时)的工程师通常不会放过任何一个知识盲点,于是我立刻打开某书某乎某 SDN 找来了几篇文章学习。 当柯里化、纯函数、高阶函数等一个个…