bpngd / ohh-thinks

保持独立思考。
2 stars 0 forks source link

index #1

Open utterances-bot opened 1 year ago

utterances-bot commented 1 year ago

Ohh's Site - thinks

http://silence.pink/

bpngd commented 1 year ago

声明与介绍

这里是哦吼的思考片段集合,仅作为个人使用,请勿评论。 关于我: http://center.silence.pink/all-in-one/about-me.html 站点: http://www.silence.pink

bpngd commented 11 months ago

20231205_192254.jpg

test image

pinkkmin commented 11 months ago

【链接阅读】:Ubuntu版本生命周期及对应内核

https://ubuntu.com/about/release-cycle#ubuntu 通过上面链接可以知道:

Ubuntu版本生命周期:
image Ubuntu 版本与内核对应关系: 2023-12-20-10-48-05-image

bpngd commented 11 months ago

思考片段

信息流、碎皮化的时代,讯息多到稍后一万年阅读。严格来讲,是我们没控制好讯息入口即输入。让分散于各个平台的信息聚集到一处呈现,十分有益于解放生产力,专注于核心事物的处理。而all in one便是如此主题。当我遇到如此难题准备自行造轮子解决时,却发现cubox pocket notion等早已给出方案,并且相当成熟。 因而核心问题在于,如何将纵横交错的网络川流汇于一处,让所有的关注、跟踪、发现都能得到及时响应,无需人为干预。 说白了现在就是专注力商品化的时代,流量就是对人专注力的收割。如果之前有人把人口比作经济的原石,那么现在,专注力就是信息数据爆炸时代的原石。谁掌握了原石,谁拥有足够多的原石,谁就掌握了话语权,以及权力带来的一切。

bpngd commented 11 months ago

听歌2023

50a43fa2-f.png

Screenshot_2023-12-20-11-47-50-384_com.netease.cloudmusic.jpg

Screenshot_2023-12-20-23-25-35-713_com.tencent.qqmusic.jpg

pinkkmin commented 11 months ago

To 2024 当下

《明天会更好》是一首好歌,“明天会更好”是一个好期盼。当下,寄希望于“明天会更好”的前提是,昨天的“明天”按时发生“更好”,因而话题总是回归到活在当下。那,活在当下便是更好的明天。

pinkkmin commented 10 months ago

being toward dead 向死而生 being toward future 向着未来而生

pinkkmin commented 10 months ago

weread_image__ss5b9328f05dd9fb5b922d1ebss__458258705581544.jpeg

如果自己就是潮水的一部分,怎么能看见潮流的方向呢?你只能永远保持质疑:什么话是我不能说的?为什么?

pinkkmin commented 10 months ago

ohh的emo时刻

时而感觉自己一事无成,我心浮躁,想去奔跑,奔跑八百里,还是偶尔想要伟大,什么时候才伟大。

pinkkmin commented 9 months ago

思考

你必须把橘子放在你看得到、够得着的地方,只有这样你才会想起来有一个橘子需要吃。 只有你把问题、事情放在每天醒来就能看到、想起的地方,事情才会得到临幸。你知道,很多问题连被临幸的机会都没有,消散埋没在那些昏暗的角落。

pinkkmin commented 9 months ago

小憩

有一个话题在网络中被反复讨论提及,它是“原始资本的积累”。 过来人都在建议,抓紧完成人生原始资本的积累,只有当完成原始资本的积累,才有做更大事的继续。资本并不一定指金钱。 对于程序员,原始的技术积累应尽快完成。在工作5年再去谈论基础没有意义,这些基础的技术资本早应该在大学或初入职场1~3年完成。

pinkkmin commented 9 months ago

开发tips

Qt 界面开发,主题切换控制: 使用CSS的预编译处理器语言:Sass,Less CSS没有变量,但是Sass提供了类似编程式的编写 一旦有了变量 那么就好吧许多了 Qt简化,编程Sass ====> 生成 css

pinkkmin commented 9 months ago

Pimpl: Pointer to Implementation

一种设计模式,其核心思想是将类的实现细节封装到一个独立的类中,通过指针引用这个实现类,实现接口和实现的分离。

// Widget.h
class Widget {
public:
    Widget();
    ~Widget();

    void doSomething();

private:
    class Impl;
    Impl* pImpl;
};

// Widget.cpp
#include "Widget.h"

class Widget::Impl {
public:
    void doSomething() {
        // 实现细节
    }
};

Widget::Widget() : pImpl(new Impl()) {}

Widget::~Widget() {
    delete pImpl;
}

void Widget::doSomething() {
    pImpl->doSomething();
}

好处/优势:

pinkkmin commented 9 months ago

C++RAII: Resource Acquisition Is Initialization

RAII 的核心思想是"资源的获取就是初始化的过程"。这一理念主张,资源的生命周期应该由对象的生命周期来管理。具体来说,当一个对象被创建时,它负责获取所需的资源;当对象被销毁时,它负责释放这些资源。

pinkkmin commented 9 months ago

思考片刻

当我在工作时,我能为公司带来什么?公司能为带来什么? 直观上,工作就是我替老板解决问题,老板支付我薪水,只不过”解决问题“这一概念被按小时、按天而量化。而我们不过是在用时间换取薪酬,这样的方式很难创造出更大的价值。 工程师的职责是快速的解决一切问题,以问题和需求为导向,以解决问题为目的,不对自己设限,设限于具体的技术,一切为解决问题服务。而充分的知识储备是快速拿出解决方案的基础,因而又需要广泛地涉略。 当考虑学习一门新技术时,考虑技术可以用来解决当下的什么事情,做出实践,让双手脏。所以,工程师不会再以追逐技术为目的,他们时刻实践技术,时刻将技术应用于解决实际问题,知行合一。

pinkkmin commented 9 months ago

开发:Git约定式提交规范

https://www.conventionalcommits.org/zh-hans/v1.0.0/

摘录:

<类型>[可选 范围]: <描述>

[可选 正文]

[可选 脚注]

提交说明包含了下面的结构化元素,以向类库使用者表明其意图:

其它提交类型在约定式提交规范中并没有强制限制,并且在语义化版本中没有隐式影响(除非它们包含 BREAKING CHANGE)。 可以为提交类型添加一个围在圆括号内的范围,以为其提供额外的上下文信息。例如 feat(parser): adds ability to parse arrays.。

pinkkmin commented 9 months ago

How-To: Rust Demangle with C/C++

在C/C++项目中,使用Rust 的 rustc-demangle 库进行 Rust 语言的 demangle :

rustc-demangle Header file:

// ~/third_party/rustc-demangle/crates/capi/include/rustc_demangle.h
#ifndef RUST_DEMANGLE_H_
#define RUST_DEMANGLE_H_

#ifdef __cplusplus
extern "C" {
#endif

// Demangles symbol given in `mangled` argument into `out` buffer
//
// Returns 0 if `mangled` is not Rust symbol or if `out` buffer is too small
// Returns 1 otherwise
int rustc_demangle(const char *mangled, char *out, size_t out_size);

#ifdef __cplusplus
}
#endif

#endif // RUSTC_DEMANGLE_H_

C/C++ Code:

// main.cc
#include <iostream>
#include "rustc_demangle.h"

#define UASGE_STR "usage: ./cpp-rust-demangle xxxxx"
#define ERROR_STR "error: `mangled` is not Rust symbol or `out` buffer is too small."

int main(int argc, char*argv[]) {

    if(argc != 2) {
        std::cout << UASGE_STR << std::endl;
        return -1;
    }

    // Returns 0 if `mangled` is not Rust symbol or if `out` buffer is too small
    // Returns 1 otherwise
    char *out = new char[4096]{0};
    if(1 == rustc_demangle(argv[1], out, 4096)) {
        std::cout << out << std::endl;
    }
    else {
        std::cout << ERROR_STR << std::endl;
    }

    delete []out; 
    return 0;
}

CMakelists.txt :

cmake_minimum_required (VERSION 3.20)
project (cpp-rust-demangle)

# Baseline build flags.
set(CMAKE_CXX_FLAGS "-std=c++11 -W -Wall -Wno-sign-compare")
set(CMAKE_CXX_FLAGS_DEBUG "-g1")
set(CMAKE_CXX_FLAGS_RELEASE "-O2")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g1")

include_directories(third_party/rustc-demangle/crates/capi/include)

link_directories(third_party/rustc-demangle/target/release)
set(LIBBLOATY_LIBS "${LIBBLOATY_LIBS}" rustc_demangle)

add_executable(cpp-rust-demangle main.cc)
target_link_libraries(cpp-rust-demangle "${LIBBLOATY_LIBS}")

Out:

./cpp-rust-demangle _RNvYINtNtCsgmWPF0mSM2r_6rustls6stream6StreamNtNtNtB7_6client11client_conn16ClientConnectionNtNtNtCsauG8OnmUqT_3std3net3tcp9TcpStreamENtNtB1x_2io5Write9write_allCsjyt65HNCFtD_12simpleclient
<rustls::stream::Stream<rustls::client::client_conn::ClientConnection, std::net::tcp::TcpStream> as std::io::Write>::write_all
pinkkmin commented 8 months ago

片刻

现在所有的 UCG 应用对用户都太不公平了,用户不断输出内容,平台从用户这里赚取流量、热度,但是整个过程产生的收益都流向了平台。平台与用户间的关系是利用与被利用,完全是不平等的条约。 未来的趋势一定是收益会匀点给用户,甚至平台访问用户的数据、隐私都应该需要支付数据费用,用户绝不能在继续被收割。

pinkkmin commented 8 months ago

睡眠的事

过去一段时间,我总是在“补觉”,试图通过在周末晚起来弥补平常睡眠的不足,但不见成效,甚至陷入了一种缺觉--》补觉--》精神睡不着--》缺觉--》补觉的怪圈。

近来,我去看了中医,渴望能通过中医调理的方式改善一下睡眠状况。然而,我发现,医生的“望闻问切”结束如此迅速和潦草,让不禁我怀疑起调理的真实效果如何。诚然,中药肯定是能起到一定的调理作用的,但是既然是调理,那么更多的是依靠个人自觉的力量,调理的的最终结果是规律,符合自己身体的自然。

因而,我决定不能在陷入循环的怪圈之中,规律的早睡早起比起周末的疯狂补觉,从短期来看,肯定是痛苦的,但规律的好处在于,一旦适应,那便会形成一种自然力,无需额外的精力驱动。

所以,早睡早起吧,即使是在周末。

pinkkmin commented 7 months ago

Linux man 手册

   1   Executable programs or shell commands
   2   System calls (functions provided by the kernel)
   3   Library calls (functions within program libraries)
   4   Special files (usually found in /dev)
   5   File formats and conventions eg /etc/passwd
   6   Games
   7   Miscellaneous  (including  macro  packages  and  conventions), e.g. man(7), groff(7)
   8   System administration commands (usually only for root)
   9   Kernel routines [Non standard]
数字 说明
1 可执行程序或 Shell 命令
2 系统调用(内核提供的函数)
3 库调用
4 特殊文件(通常位于 /dev 目录)
5 文件格式和约定(比如 /etc/passwd)
6 游戏
7 杂项(包和一些约定)Miscellaneous (including macro packages and conventions), e.g. man(7), groff(7)
8 系统管理命令(通常是 root 用户执行的命令)
9 内核相关的文件 Kernel routines [Non standard]
pinkkmin commented 7 months ago

type,class,kind,category

kind(种类): 指性质相同,而特征很相似 type(类型): 客观界限比较清楚,有相同本质特点的同类事物 class(门类,纲.,类): 正式用词,表示"纲" classification:指根据已经确定的类型对某一实物做归类 category(标准,标签,类别):通常用于描述一组相似的事物或概念的集合

pinkkmin commented 7 months ago

辨析C/C++ 栈生长方向

堆、栈的地址高低? 栈的增长方向? - RednaxelaFX的回答 - 知乎 https://www.zhihu.com/question/36103513/answer/66101372

先说结论(看RednaxelaFX的回答):

进程地址空间的分布取决于操作系统,栈向什么方向增长取决于操作系统和CPU。

首先,需要明确 栈 到底值的是什么:函数调用栈(call stack)和 函数栈帧(stack frame)

“栈” 指的是 函数调用栈。每次函数调用会在栈上分配一个栈帧,被调函数结束,栈恢复到调用函数的栈帧。

被调函数(callee)的栈帧相对调用函数(caller)的栈帧的位置反映了栈的生长方向。

而在函数栈帧中,函数参数、局部变量的内存布局(栈帧布局 stack frame layout)是由编译器的ABI的决定的。

数组:数组元素分布在一段连续递增的地址上,也就是说a[1]的地址总是高于a[0]。

double a0[4]这个声明告诉编译器的是:我需要在栈帧里分配一块连续的空间,大小为sizeof(double)*4,并且让a0引用该空间的起始位置(最低地址);


很多文章提到C/C++内存管理中的栈是向下生长(高地址向低地址)的,也有人给出的答案是向上生长的,甚至还贴出了代码以论证。

比如,这位仁兄试图通过以下代码论证栈的生长方向。但其实,这种方法是不严谨的,甚至是错误的。因为比对函数参数、局部变量的地址,其实是在论证编译器的ABI,可能a先压栈也有可能c先压栈。

// https://blog.csdn.net/weixin_43083491/article/details/115386238
void test_example(int a,int b,int c)
  {
     int arr[2] = {1,2};
     int d = 0;
     int e = 0;

    printf("a:%d a_ptr: %p,  b: %d b_ptr: %p, c: %d c_ptr: %p   \n",a,&a,b,&b,c,&c);
    printf("d: %d d_ptr:%p , e: %d, e_ptr: %p \n",d,&d,e,&e);
    printf("arr: %p \n",arr);

    memcpy(&e,arr,sizeof(arr));

    printf("c: %d c_ptr: %p, d: %d e: %d ",c,&c,d,e); 
  }

要论证栈的生长方向,得从函数调用的角度着手:

如果 a 的地址高于 b 的地址,说明栈是向上生长的;

如果 b 的地址高于 a 的地址,说明栈是向下生长的。

void foo() {
    int a = 0;
}

void bar() {
    int b = 0;
    foo();
}
pinkkmin commented 7 months ago

C/C++内存管理

https://mp.weixin.qq.com/s/THeioX_BLsLMP1AJy_AldA

内存管理的功能有:

内存分配方式

其实个人感觉下面这种分区方式有点不太严谨,从程序的角度来说:

静态的时候:有data段、text段、.bss段 (其实段多个section合并的而成,这时候叫段也不太严谨)

运行的时候:有data段、text段、栈、堆区(.bss是未初始化的数据,但是不包含在程序内,因为这部分有系统创建),而data段其实是 .data section 和 .rodata section的合并,(很显然那么常量就应该在.rodata)

所以,感觉下面这种什么全局。。。常量的分类是不太严谨的。

不过从语言的角度来讲,也没啥问题。

内存错误

内存管理:智能指针、RAII

智能指针 smart pointer

RAII (Resource Acquisition Is Initailization):在构造时获取,在析构时释放

pinkkmin commented 7 months ago

Docker 容器技术实现原理

pinkkmin commented 7 months ago

编程语言

pinkkmin commented 7 months ago

一门现代编程语言通常由以下几个组成部分构成:

语法:语言的基本结构和规则,包括关键字、标识符、运算符、数据类型等。良好的语法设计可以提高代码的可读性和可维护性。

语义:语言的含义和行为,即代码在执行时的预期结果和行为。语言的语义定义了程序员可以使用的语言特性以及它们的行为方式。

标准库:一组预先编写好的函数和类,可供程序员使用以实现常见任务,如字符串处理、文件操作、网络通信等。标准库的丰富性和实用性对于编程语言的生态系统至关重要。

工具链:编译器、解释器、调试器、构建系统等工具的集合,用于开发、调试和部署程序。优秀的工具链可以提高开发效率和代码质量。

社区和生态系统:由开发者、用户、文档、教程、框架、库等组成的生态系统,对于语言的发展和推广起到至关重要的作用。一个活跃的社区可以为语言的学习和使用提供支持和资源。

扩展性和灵活性:现代编程语言通常支持模块化、泛型编程、元编程等特性,以便程序员可以根据需要扩展语言的功能和特性,提高代码的复用性和可扩展性。

跨平台性:随着计算机和移动设备的多样化,一门现代编程语言通常需要支持多个平台,如Windows、Linux、macOS、Android、iOS等,以确保程序能够在不同的环境中运行和部署。

pinkkmin commented 7 months ago

相见恨晚 发现一个很好的技能学习路线图

比如C++的学习路线 https://roadmap.sh/cpp mmexport1714112117527.png

pinkkmin commented 7 months ago

C++ killed me again.

最近又在学 modern C++ 的知识,给我弱小的心灵带来了巨大的震撼,真**博大精深啊。

bpngd commented 6 months ago

职业生涯第一次提辞职,未来充满着未知和挑战,心情忐忑不安,拥抱未知吧。

bpngd commented 6 months ago

乱码

mmexport1715823446100.png

pinkkmin commented 6 months ago

5月

曾经以为,当我要离开南京时背景配乐应该会是《你离开了南京,从此没有人和我说话》最为贴切; 而今,真的准备要离开时,满脑子里想的却是声音碎片乐队的《黄金时代》,歌词不断在脑海里浮现:

“继续摇摆吧,我的天真老朋友”

“只有滚动的石头,才能不长青苔”

是啊,只有滚动的石头,才能不长青苔。