less,but diff
Git的https和ssh
设置以下的命令,可以在一次输入密码之后,保存密码到本地.git-credentials
git config --global credential.helper 'store' ssh方式设置的是密钥…
Read more ⟶编译安装git新版本使用上出现问题
在centos上编译安装git2.45.1,然后再使用的时候报错:git: 'remote-https' is not a git command. See 'git --help',查找一个解决办法是export PATH=$PATH:/usr/local/libexec/git-core,但是不能解决。
最终看到一个说是git新版使用libcurl
Git使用libcurl库通过http://和https://.推送/获取存储库。如果在不存在库的情况下编译git,则会发生此错误。 安装它(yum/dnf install libcurl-devel),然后重新配置和重新编译git。应该管用的。 链接:https://github.com/git/git/blob/b896f729e240d250cf56899e6a0073f6aa469f5d/INSTALL#L141-L149 …
Read more ⟶Yum离线安装方式
找一台可以联网的yum源下载rpm安装包 yum install samba --downloaddir=/opt/samba/ --downloadonly 本地安装命令 yum localinstall ./*.rpm 要将XML错误码转换为C++代码,可以使用Python中的xml.etree.ElementTree模块来解析XML文件,然后使用Python的字符串操作方法构建C++代码字符串,最后将C++代码字符串写入到C++源文件中。
以下是一个简单的示例代码,假设我们有一个包含XML错误码的文件error_codes.xml,其中每个错误码都包含code和description两个属性:
<error_codes> <error_code code="1000" description="Invalid input parameter"/> <error_code code="1001" description="Missing required parameter"/> <error_code code="1002" description="Invalid parameter value"/> <error_code code="2000" description="Database error"/> <error_code code="2001" description="Database connection error"/> </error_codes> 我们可以使用以下Python代码解析并将其转换为C++代码:
import xml.etree.ElementTree as ET # 解析XML文件 tree = ET.parse('error_codes.xml') root = tree.getroot() # 构建C++代码字符串 cpp_code = '' for child in root: code = child.attrib['code'] description = child.attrib['description'] cpp_code += f'static const int ERROR_{code} = {code}; // {description}\n' # 将C++代码写入源文件 with open('error_codes.…
Read more ⟶真相
逛外网,外网中文电报的一些频道,他们没有什么限制的畅所欲言。
看到了一本所谓的禁书,《中国近代史》徐中约 写的,基于对建国后历史的追寻,下载下来查看了。
对这本书,评价褒贬不一,有说他太偏西化,还有说他太简单的。
基于一种追寻的心态,去阅读,去反思。
也算最近的 反思:
1.目前的信息源多为知乎,虎扑,短视频平台
2.国内机会越发减少。
3.试图寻找国外的机会。
对于信息不应该设置边界。…
Read more ⟶充实
由知乎“内心的充实从何而来”一些点。
揭秘了人的充实感机制。 情绪:追求内心的平和,需要去除负能量的情绪,但是这清除的操作于人来说基本无法完成。所以,换个思路来说就是用美好的事物去冲击负能量。 焦虑不外乎两件事:担心未来,懊悔过去。
1.充实的本质
思考一个问题:问你2019年,你印象最深刻的一段经历是什么,假如你19年出去旅游过,那么,你可能会回答是“旅行的经历” 为什么呢,因为旅行是去一个全新的地方,获得全新的体验,会带给你大量的新信息,从而把你从庸常的平凡的生活中解放出来。 进一步思考:枯竭的内在,乏味的人生,抑郁的情绪,这些表象的原因是什么呢? 其实就是信息的匮乏。 这也能解释为什么有些人很爱看书,看书能跟随作者的视角去获得全新的体验,而这也说明为什么现在抖音短视频那么火,短暂的时间获取到全新的信息。
明白这个本质之后,思考,咱如何不断的获取新知识来充实自己。 每天逼着自己去突破舒适区,去没去过的地方,体验没体验过的,写作,阅读,看新剧
2.建立目标感 目标主要是为了不让我们被日常的虚无主义吞噬自我,让我们快被淹没的时候能够看到救命稻草。
3.写作 看到充实二字的时候,我想到的就是写作。流水账和写作的区别在于,写作可以加入一些评价和思考。 做了一件事–》流水账
做这件事它好不好,好在哪里,怎么吸引我 不够好的地方,怎么优化,给我的启迪。 如果我来设计,怎么做。 4.主题阅读和学习 《越读者》给我印象深刻的就是作者写的一段关于以【爱情】为主题的阅读的旅程,怎么检索,怎么从不同的哲学角度看待。 而我自己,一直在阅读的一个主题是关于建国后的一段历史的阅读,于《黄金时代》中描述的文革感兴趣,然后去看《邓小平时代》看怎么破局的。…
Read more ⟶The_art_of_command_line
参考the art of command line in github 和自己的之前的积累
定时记录top的命令 watch -n 1 "top -b -d 1 -n 1 >> mem.log"
find 命令 和xargs find . -type f | xargs grep ...
for fun: 查看自己history中排名前十的命令 history | awk '{CMD[$2]++;count++;} END { for (a in CMD )print CMD[ a ]" " CMD[ a ]/count*100 "% " a }' | grep -v "./" | column -c3 -s " " -t |sort -nr | nl | head -n10…
Read more ⟶Cpp编码转换
c99 函数库 #include <iostream> #include <assert.h> #include <string> #include <fstream> #include <stdlib.h> #include <locale.h> #ifdef _WIN32 #define CSET_GBK "936" #define CSET_UTF8 "65001" #define LC_NAME_zh_CN "Chinese_People's Republic of China" #else #define CSET_GBK "GBK" #define CSET_UTF8 "UTF-8" #define LC_NAME_zh_CN "zh_CN" #endif #define LC_NAME_zh_CN_GBK LC_NAME_zh_CN "." CSET_GBK #define LC_NAME_zh_CN_UTF8 LC_NAME_zh_CN "." CSET_UTF8 bool Gb2312utf8(int i, const std::string &src, std::string &utfstr) { if (setlocale(LC_ALL, "zh_CN.gbk") == NULL) { std::cout << "setlocale failed, param is bad" << std::endl; return false; } int unicode_len = mbstowcs(NULL, src.…
Read more ⟶clang-format配置
https://clang.llvm.org/docs/ClangFormat.html
详细配置说明
clang-format -style=llvm -dump-config > .clang-format --- # 语言: None, Cpp, Java, JavaScript, ObjC, Proto, TableGen, TextProto Language: Cpp # BasedOnStyle: LLVM # 访问说明符(public、private等)的偏移 AccessModifierOffset: -2 # 开括号(开圆括号、开尖括号、开方括号)后的对齐: Align, DontAlign, AlwaysBreak(总是在开括号后换行) AlignAfterOpenBracket: Align # 连续赋值时,对齐所有等号 AlignConsecutiveAssignments: true # 连续声明时,对齐所有声明的变量名 AlignConsecutiveDeclarations: true AlignEscapedNewlines: Right # 左对齐逃脱换行(使用反斜杠换行)的反斜杠 #AlignEscapedNewlinesLeft: true # 水平对齐二元和三元表达式的操作数 AlignOperands: true # 对齐连续的尾随的注释 AlignTrailingComments: true # 允许函数声明的所有参数在放在下一行 AllowAllParametersOfDeclarationOnNextLine: false # 允许短的块放在同一行 AllowShortBlocksOnASingleLine: true # 允许短的case标签放在同一行 AllowShortCaseLabelsOnASingleLine: true # 允许短的函数放在同一行: None, InlineOnly(定义在类中), Empty(空函数), Inline(定义在类中,空函数), All AllowShortFunctionsOnASingleLine: Empty # 允许短的if语句保持在同一行 AllowShortIfStatementsOnASingleLine: false # 允许短的循环保持在同一行 AllowShortLoopsOnASingleLine: false # 总是在定义返回类型后换行(deprecated) AlwaysBreakAfterDefinitionReturnType: None # 总是在返回类型后换行: None, All, TopLevel(顶级函数,不包括在类中的函数), # AllDefinitions(所有的定义,不包括声明), TopLevelDefinitions(所有的顶级函数的定义) AlwaysBreakAfterReturnType: None # 总是在多行string字面量前换行 AlwaysBreakBeforeMultilineStrings: false # 总是在template声明后换行 AlwaysBreakTemplateDeclarations: false # false表示函数实参要么都在同一行,要么都各自一行 BinPackArguments: true # false表示所有形参要么都在同一行,要么都各自一行 BinPackParameters: false # 大括号换行,只有当BreakBeforeBraces设置为Custom时才有效 BraceWrapping: # class定义后面 AfterClass: false # 控制语句后面 AfterControlStatement: false # enum定义后面 AfterEnum: false # 函数定义后面 AfterFunction: true # 命名空间定义后面 AfterNamespace: false # ObjC定义后面 AfterObjCDeclaration: false # struct定义后面 AfterStruct: true # union定义后面 AfterUnion: true AfterExternBlock: false # catch之前 BeforeCatch: true # else之前 BeforeElse: true # 缩进大括号 IndentBraces: false SplitEmptyFunction: true SplitEmptyRecord: true SplitEmptyNamespace: true # 在二元运算符前换行: None(在操作符后换行), NonAssignment(在非赋值的操作符前换行), All(在操作符前换行) BreakBeforeBinaryOperators: None # 在大括号前换行: Attach(始终将大括号附加到周围的上下文), Linux(除函数、命名空间和类定义,与Attach类似), # Mozilla(除枚举、函数、记录定义,与Attach类似), Stroustrup(除函数定义、catch、else,与Attach类似), # Allman(总是在大括号前换行), GNU(总是在大括号前换行,并对于控制语句的大括号增加额外的缩进), WebKit(在函数前换行), Custom # 注:这里认为语句块也属于函数 BreakBeforeBraces: Custom # 在三元运算符前换行 BreakBeforeTernaryOperators: false # 在构造函数的初始化列表的逗号前换行 BreakConstructorInitializersBeforeComma: false BreakConstructorInitializers: BeforeColon # 每行字符的限制,0表示没有限制 ColumnLimit: 80 # 描述具有特殊意义的注释的正则表达式,它不应该被分割为多行或以其它方式改变 CommentPragmas: '^ IWYU pragma:' CompactNamespaces: false # 构造函数的初始化列表要么都在同一行,要么都各自一行 ConstructorInitializerAllOnOneLineOrOnePerLine: false # 构造函数的初始化列表的缩进宽度 ConstructorInitializerIndentWidth: 4 # 延续的行的缩进宽度 ContinuationIndentWidth: 4 # 去除C++11的列表初始化的大括号{后和}前的空格 Cpp11BracedListStyle: true # 继承最常用的指针和引用的对齐方式 DerivePointerAlignment: false # 关闭格式化 DisableFormat: false # 自动检测函数的调用和定义是否被格式为每行一个参数(Experimental) ExperimentalAutoDetectBinPacking: false # 需要被解读为foreach循环而不是函数调用的宏 ForEachMacros: [ foreach, Q_FOREACH, BOOST_FOREACH ] # 对#include进行排序,匹配了某正则表达式的#include拥有对应的优先级,匹配不到的则默认优先级为INT_MAX(优先级越小排序越靠前), # 可以定义负数优先级从而保证某些#include永远在最前面 IncludeCategories: - Regex: '^"(llvm|llvm-c|clang|clang-c)/' Priority: 2 - Regex: '^(<|"(gtest|isl|json)/)' Priority: 3 - Regex: '.…
Read more ⟶UDP最大传输
转自UDP最大传输
概念 以太网(Ethernet)数据帧的长度必须在46-1500字节之间,这是由以太网的物理特性决定的. 这个1500字节被称为链路层的MTU(最大传输单元). 但这并不是指链路层的长度被限制在1500字节,其实这这个MTU指的是链路层的数据区.并不包括链路层的首部和尾部的18个字节. 所以,事实上,这个1500字节就是网络层IP数据报的长度限制. 因为IP数据报的首部为20字节,所以IP数据报的数据区长度最大为1480字节. 而这个1480字节就是用来放TCP传来的TCP报文段或UDP传来的UDP数据报的. 又因为UDP数据报的首部8字节,所以 **UDP数据报的数据区最大长度为1472字节** . 这个1472字节就是我们可以使用的字节数。 原因 当我们发送的UDP数据大于1472的时候会怎样呢?
这也就是说IP数据报大于1500字节,大于MTU.这个时候发送方IP层就需要分片(fragmentation). 把数据报分成若干片,使每一片都小于MTU.而接收方IP层则需要进行数据报的重组. 这样就会多做许多事情,而更严重的是,由于UDP的特性,当某一片数据传送中丢失时,接收方便 无法重组数据报.将导致丢弃整个UDP数据报。
因此,在普通的局域网环境下,我建议将UDP的数据控制在1472字节以下为好.
进行Internet编程时则不同,因为Internet上的路由器可能会将MTU设为不同的值. 如果我们假定MTU为1500来发送数据的,而途经的某个网络的MTU值小于1500字节,那么系统将会使用一系列的机制来调整MTU值,使数据报能够顺利到达目的地,这样就会做许多不必要的操作.
结语 鉴于Internet上的标准MTU值为576字节,所以我建议在进行Internet的UDP编程时. 最好将UDP的数据长度控件在548字节(576-8-20)以内.…
Read more ⟶我的C++开发环境
开发场景一:macbook + 远程内网linux开发 vscode 配置 插件列表:clangd,cmake,remote-ssh,gitlens,copilot/continue,vscode-icons,GDB Debug
clangd 安装clangd-server centos8/ubuntu20.04 可以直接安装新版本,参考clangd page。 centos7则需要单独编译安装一套glic2.18以上的库。参考这里。
vscode配置 "clangd.arguments": [ "--log=verbose", "--header-insertion=iwyu", "--pch-storage=memory", "--function-arg-placeholders=false", "--background-index", "--clang-tidy", "-j=12", ], "clangd.path": "/path/to/clangd", remote + github copilot + 离线 https://github.com/orgs/community/discussions/6942
“remote.extensionKind”: { “GitHub.copilot”: [“ui”], “GitHub.copilot-chat”: [“ui”], “linhmtran168.mac-ca-vscode”: [“ui”], }
Here’s why it works: https://code.visualstudio.com/api/advanced-topics/extension-host
cmake-tools …
Read more ⟶