跳转至

toLearn

Naming your work

导言

While reading various research papers, it's fascinating to observe a trend where researchers use names from popular culture to label their scientific work. This practice not only adds a cool and captivating touch to the research but also leaves a lasting impression, e.g, transformer in AI. Popular culture symbols and names serve as powerful tools when incorporated into research titles, especially when they align with the core concept.

Speech

导言

随着翻译软件逐渐结合到工作流中,再加上chatgpt等润色英文写作。我相信在未来读写不会再是难点。但是与外国人直接打交道的听说还是需要积累的。(听的话假如是zoom会有实时翻译,说反而更重要。You should always reading the blog content

内容选择

科技相关的有意思的TED视频演讲视频。

Mkdocs

导言

mkdocs在今年支持了blog的基本功能,而且已经有探路者实践过了1。也是时候升级博客生成器了。

CProgramReading

visibility & attribute & capability

#ifndef _LIBCPP_TYPE_VIS
#  if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS)
#    define _LIBCPP_TYPE_VIS __attribute__ ((__visibility__("default")))
#  else
#    define _LIBCPP_TYPE_VIS
#  endif
#endif

#ifndef _LIBCPP_THREAD_SAFETY_ANNOTATION
#  ifdef _LIBCPP_HAS_THREAD_SAFETY_ANNOTATIONS
#    define _LIBCPP_THREAD_SAFETY_ANNOTATION(x) __attribute__((x))
#  else
#    define _LIBCPP_THREAD_SAFETY_ANNOTATION(x)
#  endif
#endif  // _LIBCPP_THREAD_SAFETY_ANNOTATION

class _LIBCPP_TYPE_VIS _LIBCPP_THREAD_SAFETY_ANNOTATION(capability("mutex")) mutex
{
}

It's part of code from __mutex_base

需要进一步的研究学习

暂无

遇到的问题

暂无

开题缘由、总结、反思、吐槽~~

参考文献

上面回答部分来自ChatGPT-3.5,没有进行正确性的交叉校验。

6 FPS

卡拉彼丘

  • 信息差:发现分布以及落单对方,灵活跑动隐藏自身,干扰对方准备好时,对方换弹/倒地时补射。
  • 躲避对方多枪线,己方架多枪线,多路线包围
  • 一个位置偷一枪,就换位置。不要再露头。
  • 对枪注意弦化
  • 位置的选择:一要有掩体,二要有安全的退路通道和队友大部队汇合,不要被敌人包夹。
  • 不要急于补人,要观察有没有被敌人包
  • 进阶:时刻预瞄出人点,
    • 弦化靠左墙,预瞄靠左,因为向右出掩体,准星会被向右移动。
    • 学习弹道,反向压枪。
  • 注意不要冲动,以身试陷(除非是突破位)

角色特点

  1. 熊当掩体(带闪光弹,烟雾弹),熊会自动冲锋并结冰
  2. 防守方
  3. 米雪儿:适合压制补枪,技能适合补枪。引诱敌方到背面炮台射程里
  4. 进攻方:
  5. 明:侦察 + 干扰器,风场雷

地图,高空卡墙脚。

  1. 欧拉港口/海湾图:复杂的短距离(掩体之间的距离)小路。适合白墨(带烟雾弹增加自身能力)和熊。白墨攻击走中间,抄底路偷对面的大狙。或者A点上上下下,适合近身跳散弹。
  2. 防守走A
  3. 404基地/巨炮图:白墨可以中路强压。
  4. 防守方 熊,进攻方沙猫无敌B
  5. 88区/古风图,大图远视野,适合大狙,大机枪。还有熊
  6. 禁止白墨。
  7. 风曳镇:大狙和小画家
  8. 防守必选熊(AB滑)和信(传送)
  9. 禁止白墨。

需要进一步的研究学习

暂无

遇到的问题

暂无

开题缘由、总结、反思、吐槽~~

参考文献

上面回答部分来自ChatGPT-3.5,没有进行正确性的交叉校验。

Scons

Scons

  • SCons is a software construction tool that can be used as an alternative to traditional build systems like Make and CMake.
  • It is a Python-based build tool that provides a convenient and flexible way to define and manage the build process for software projects, including C++ programs.

Scons VS cmake

  1. 基于python语言的构建工具,对开发者来说过度自然,简单,no need to learn domain-specific language like cmake

其余cmake有的, Scons 也有。

  1. cross-paltform,
  2. SCons has built-in support for dynamic dependency analysis, meaning it can automatically detect changes in source files and rebuild only what's necessary. This can result in faster builds for large projects.

Project structure

  1. Sconstruct python file as compile entry

framework grammar

  1. add option for scons command
AddOption('--buildDir', 
   dest='buildDir', 
   type='string', 
   default="build/", 
   # default=False,
   nargs=1, 
   action='store', # meaning save the string
   # or action='store', meaning True or false
   metavar='DIR', 
   help='Base build directory'
)
baseBuildDir = GetOption('buildDir') 
  1. add sub scons config file and build result path using variant_dir
env.SConscript("src/SConscript", variant_dir=buildDir, exports= {'env' : env.Clone()})     
  1. achive debug mode

using scons debug=1 command.

env = Environment()
debug = ARGUMENTS.get("debug", 0)
if int(debug):
   print "in debug mode"

main construct grammar

  1. Define the Build Environment: In the SConstruct file, define the build environment by creating an Environment object. You can specify compiler options, flags, include paths, library paths, and other build settings within this object.
env = Environment(CXX='g++', CCFLAGS=['-O2', '-Wall'], CPPPATH=['include'], LIBPATH=['lib'])
 libEnv = env.Clone()
  1. Specify Source Files and Targets: Define the source files for your C++ program and specify the target(s) you want to build using the Program() function.
source_files = ['main.cpp', 'util.cpp', 'other.cpp']
# or select the src files 
Object('hello.cpp')
program = env.Program(target='my_program', source=source_files)

In this example, main.cpp, util.cpp, and other.cpp are the source files, and my_program is the name of the target executable.

  1. static or dynamic lib
# static
Library("t", Glob("src/*.cpp"))
# dynamic
source = Glob("src/*.cpp")
SharedLibrary("t", source)
Program(["hello.cpp"], LIBS=["t"], LIBPATH=".")
  1. execute command during compilation

  2. this is usually to print info

  3. The command is executed when any of the specified dependencies (allSrcs, ".git/index", or "SConstruct") change.
env.Command(
 target='bar.out',
 source='bar.in',
 action=["rm -f $TARGET", "$BAR_BUILD < $SOURCES > $TARGET"],
 ENV={'PATH': '/usr/local/bin/'},
)
env.Command(
   versionFile, 
   allSrcs + [".git/index" "SConstruct"],                                                 
   'printf "#define ZSIM_BUILDDATE \\"`date "+%Y-%m-%d %T"`\\"\\n#define ZSIM_BUILDVERSION \\"`python misc/getver.py`\\"" >>' + versionFile) 

Command

scons -c  # Clean
scons debug=1    # Rebuild using `SConstruct` file in debug mode

scons-project analysis

TODO: multipim how to add a singel head file during compilation process.

需要进一步的研究学习

暂无

遇到的问题

暂无

开题缘由、总结、反思、吐槽~~

参考文献

上面回答部分来自ChatGPT-3.5,没有进行正确性的交叉校验。

https://scons.org/doc/production/PDF/scons-man.pdf

3.3 EfficientWorkLearning

科研工作的目标

  1. 从底层的优化做起,自底向上的。对整个AI训练的难点有个全面细致的认知。
  2. 或者从应用的问题出发建模,从上到下有个全面的认知。
  3. 往架构师的方向努力

淡而不厌,简而文,温而理,知远之近,知风之自,知微之显,可与人德矣。

科研学习

狠狠吸收

华为实习部门的都是手握A会的博士大佬。本人望尘莫及,我会狠狠吸收的。

科研的长远与犀利的眼光

  1. 如何识别伪装信息 和被包装的工作
  2. 明确理论目标上限,当前的差距,实现路径

研究理解与实现

  1. 跨领域知识:公众号,订阅
  2. follow前沿论文:follow学者, 公众号,
  3. 实际问题、需求的发现
  4. 技术论证:理论上限,可行方案
  5. 独立任务分割
  6. 高效实现(解决问题)

科研工作的全局观念

  • 自顶向下的设计规划、工作全局观 (从目标、需求、愿景出发。不断细化实现点)
  • 顶:论文全流程思路图(构思与其余工作的对比):当前实现和问题、兼顾创新性的方法 和 设计目标期望效果。
  • 中:代码实现逻辑框架图
  • 底:代码语言具体实现:高内聚低耦合的重要性,解耦,拆分,这样就容易重构了。独立的微服务
  • 自底向上的知识积累 与研究方法提出
  • 底:领域的基础知识
  • 中:领域的主流方法和解决方案
  • 顶:行业痛点和有待补完的领域空白。
  • 当两者相联,目标才能顺利的达成,

高效学习的过程中注意点

  1. 学习的优先级:用20%时间先掌握80%的基础知识或者感兴趣的关键
    1. 难的问题可以讨论合作得出
  2. 提问式主动学习:不是被动学习,尝试通过提问、讨论、教授他人等方式来加深理解和巩固所学内容。
  3. 合作学习: 不仅能头脑风暴idea。对概念的理解,表达能力,心理健康有好处
  4. 交叉与分割学习: 概念文字、视频和案例分析交叉理解。长时间执行单一学习会枯燥,效率降低。切换学习一些新鲜东西:每日关注LLM的有趣实现。
  5. 理论实践交融:实际运行或者编写测试代码运行来深入理解
  6. 持续反馈与评估:每天每周对学习的进度和效果进行分析、来调整学习计划和研究方向。可以遵循STAR 法则。

具体研究点的克服

体系结构量化分析方法,重点就在于量化分析开销,比较然后进行tradeoff。当前前提是你要有基本的相关概念。

具体知识来源的优先级,或者说如何使用搜索引擎:

  1. 明白原理,设计实验,实际机器测量
  2. 认知概念,理解 (图解 >> 列表对比 >> 文字list >> 大段描述)
  3. 阅读相关的论文以及书籍
  4. 国内大佬的博客和大论文
  5. 国外论坛Stack Overflow > 国内知乎 > 博客园 > csdn > 其他
  6. 资料的来源(论文 >> 官方文档 >> 英文博客 >> 高质量中文资料)

在理解概念,量化了具体场景的数值后,就可以开心进行tradeoff了。

  1. 思维导图、摘要,来理清概念 和思路
  2. 结合PPT 数据与图表展示效果

注意项目的可读性和可拓展性一般与性能是不兼容的。这取决于项目的checkpoint/middleValue的保存,在性能优化时往往会消除中间变量。这样会导致代码的可读性和可拓展性下降。

check-point的合理设置

  1. 合理的检查点,既是阶段性的成果,又能在此衍生出无限的可能
  2. 需要能高效的复现与重构

关于如何解决困难

困难的定义可以基于以下几个要素进行评估:

  1. 个人技能能力:困难的程度可以取决于个人所具备的技能和能力水平。对于一个人来说,某项任务可能很容易,而对另一个人来说可能很困难,这取决于他们的专业知识、经验和技能。如果一个人已经具备了必要的知识和技能,那么他们可能更容易应对困难任务。相反,如果缺乏必要的知识和技能,任务就会更具挑战性。
  2. 任务量评估:任务的规模和复杂性也是评估困难程度的重要因素。任务量的多少以及任务本身的复杂性(比如需要解决的问题、涉及的步骤等)会对困难程度产生影响。
  3. 多人合作:效率会由于沟通同步而减半
  4. 量化分析加深理解:对于某些任务,特别是涉及复杂问题解决或决策制定的情况,进行量化分析可以加深对问题本质的理解。这种理解的深度也会对困难程度产生影响,因为解决关键核心会对整个任务的理解的评估进行重大修正。
  5. 对未知领域的任务量评估,会随着了解而变得准确。(这不是产品经理的工作吗?
  6. 时间的紧迫程度:完成任务所要求的时间紧迫程度也是评估困难程度的因素之一。如果任务需要在很短的时间内完成,那么它可能会被认为是更具挑战性和困难的。

参考文献

上面回答部分来自ChatGPT-3.5,没有进行正确性的交叉校验。