【Postgresql】Postgresql 常用命令

创建用户和数据库 # 进入命令行 su -u postgre psql # 创建用户 create user vksir with password 'passwd'; # 创建数据库并赋予用户权限 create database db owner vksir; grant all privileges on datebase db to vksir; # 退出 \q # 使用新用户登录数据库 psql -U vksir -d db 命令行命令 \h:查看SQL命令的解释,比如\h select。 \?:查看psql命令列表。 \l:列出所有数据库。 \c [database_name]:连接其他数据库。 \d:列出当前数据库的所有表格。 \d [table_name]:列出某一张表格的结构。 \du:列出所有用户。 SQL 语句 # 创建新表 create table t_person ( id serial primary key, name text not null, age int, alive bool ); # 插入数据 insert into t_person(name) values ('vksir'); # 选择记录 select * from t_person; # 更新数据 update t_person set age = '18' where name = 'vksir'; # 删除记录 delete from t_person where name = 'vksir'; # 删除表格 drop table t_person; 参考文档: ...

二月 8, 2023  |  119 字  |  总阅读

【C++】Windows 下使用 Cmake 编译附带第三方库的 C++ 程序

C++ 环境搭建 下载 Cygwin 并安装,选择 Category-Devel,勾选如下 Package: 开发简单 C++ 项目 打开 Cygwin64 Terminal。 mkdir -p /home/dev/cpp-code && cd /home/dev/cpp-code 编辑文件 /home/dev/cpp-code/main.cpp 如下: #include <fmt/core.h> int main() { fmt::print("Hello World!\n"); } 编辑文件 /home/dev/cpp-code/CMakeLists.txt 如下: cmake_minimum_required(VERSION 3.23) project(cpp_code) set(CMAKE_CXX_STANDARD 14) include(FetchContent) FetchContent_Declare( fmt GIT_REPOSITORY https://github.com/fmtlib/fmt.git GIT_TAG 9.1.0 ) FetchContent_MakeAvailable(fmt) add_executable(hello_world main.cpp) target_link_libraries(hello_world PRIVATE fmt::fmt) 这里使用了一个第三方库 fmt。 Cmake 编译 执行以下命令编译: cd /home/dev/cpp-code mkdir build && cd build cmake .. make 日志打印如下: $ cmake .. -- The C compiler identification is GNU 11.3.0 -- The CXX compiler identification is GNU 11.3.0 -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working C compiler: /usr/bin/cc - skipped -- Detecting C compile features -- Detecting C compile features - done -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Check for working CXX compiler: /usr/bin/c++.exe - skipped -- Detecting CXX compile features -- Detecting CXX compile features - done -- Module support is disabled. -- Version: 9.1.0 -- Build type: -- CXX_STANDARD: 14 -- Performing Test has_std_14_flag -- Performing Test has_std_14_flag - Success -- Performing Test has_std_1y_flag -- Performing Test has_std_1y_flag - Success -- Required features: cxx_variadic_templates -- Configuring done -- Generating done -- Build files have been written to: /home/dev/cpp-code/build $ make [ 20%] Building CXX object _deps/fmt-build/CMakeFiles/fmt.dir/src/format.cc.o [ 40%] Building CXX object _deps/fmt-build/CMakeFiles/fmt.dir/src/os.cc.o [ 60%] Linking CXX static library libfmt.a [ 60%] Built target fmt [ 80%] Building CXX object CMakeFiles/hello_world.dir/main.cpp.o [100%] Linking CXX executable hello_world.exe [100%] Built target hello_world 查看编译后的程序,并运行: ...

十二月 17, 2022  |  263 字  |  总阅读

【开发技巧】为 Clion 配置 Cygwin Terminal

习惯了使用 Unix 风格的终端,过去在 Windows 上,一直给 Clion 配置 Git Bash 作为终端: "D:\Program Files\Git\bin\sh.exe" 但近来发现,在 Git Bash 中运行编译好的 C++ 程序时,有时候会没有回显。Cygwin Terminal 就没这问题,Clion 中配置 Cygwin Terminal 如下: "D:\Dependencies\cygwin64\bin\sh.exe" -lic "cd ${OLDPWD-.}; bash"

十二月 17, 2022  |  29 字  |  总阅读

《星期三》

其实可以将它视为动漫。 因其人物性格鲜明独特,画面精致,节奏紧凑……这么一说来其实更像是电影,但为何我觉得它更像动漫? ——星期三。 不像是电影亦或是电视剧中出现的人物,其性格——毒舌……说病娇不准确,有病无娇;说乖张不准确,并非疯狂,而是冷静沉着中满是怪异。经常会发出一些惊人之语,类似于“躺在停尸间冷冻柜里说,‘我感觉我快要好起来了。’”,”挖坟时深吸一口:‘Smell good.’” 其人是怪异的,这种怪异的人物性格带有奇幻色彩,鲜明而独特,所以我认为它不像电视剧或者电影。在我认知中,这二者是比较贴近现实的。 但星期三也有让我不喜的地方,一是利用朋友,冷漠且践踏她人的好意。 她在故事中并不是一个反面人物,从她关照养蜂男孩可以看出来,她内心深处还是有着感性的一面。只是通常情况下,她表现出来的行为,非常恶劣。这会伤害身边的人。 从旁边者的角度来看,当她朋友为她庆祝生日,切块蛋糕并不耽误事;说话时不要率先进行攻击,也并非难事。这些事情大可不必做,但她做了,且我看不到她做这个事情获取了什么快乐,所以说她的性格是恶劣的。 没有二。 剧尾被人牵着鼻子走,一次次断错案,每次都是斩钉截铁地指认凶手,但一次次指错。星期三应该是一个高智商的角色,但是断案出错并非不能接受的事情,总不能要求每个主角都像柯南一样吧,那也没什么意思。不过想起她每次斩钉截铁地陈述着错误的事实,我还是会感觉有点奇怪。 她是非常相信自己判断的,只是这些判断很多时候都是基于大胆猜测。而她对于自己的“大胆猜测”深信不疑,总让人有种高傲的感觉。 还好,并不是非常差,所以没有二。 是一部可以一看的美剧。只是看完下来,故事并不是非常吸引我,居中人物也无法完全戳中萌点。 还可以,75分。 ——记于 2022/12/13 23:48 安静中。 演技是在线的,第一次心理治疗从沉着应对到差点破防: 小狼女我以为是比较吸引人的角色,但看完甚至不记得她的名字。

十二月 13, 2022  |  21 字  |  总阅读

《来自深渊》

是值得一看的故事,也是需要记录的一个故事。 用最萌的画风讲述最黑深残的故事,仿佛这样能够把故事中的残酷和绝望气氛冲淡一些——像《少女终末旅行》。 深渊阿比斯是一个巨洞,人类还未探索完全的地方。深渊很危险,但其中有着价值连城的遗物,吸引着无数“探窟家”前来探索——亦或是仅仅因为对未知的好奇而去探索。 探窟是成本高昂的,因阿比斯有一个特性——只许下不许上。向下探索得越深,返回时受到的诅咒就越强烈。 如在深渊四层爬树到一定高度,便会受到诅咒而七窍流血。 人所能抵达并安全返回的极限,即是深渊五层,一旦到了六层,再返回便会永久丧失人性,变为“生骸”。而去往深渊六层乃至以下探索的行为,被称之为——绝界行(Last Dive)。 知名白笛探窟家莱莎在绝界行后未能返回,莉可寻找母亲,同奈落的至宝——雷古前往深渊,踏上寻找母亲的道路,这便是故事的开端。 探窟家很帅。 和普通的冒险不同,探窟属破釜沉舟之行为,至死地而无生,一旦下去,可能就永远无法再回来了。让我想起一段话“有些鸟,一生只起飞一次,降落一次,降落时便是归于尘土之时”。 浅层的探窟家可以说是为了生计,像那些白笛,像绝界行,给人感觉就是在像深渊阿比斯发起挑战。 那种一往无前的决心,那种对未知的探索欲——是人类没错了。 Kevin Penkin - Hanezeve Caradhina 每每这首 BGM 响起,总让人有种说不出的感动。 探窟家——悲壮而浪漫。 剧中有着非常多的稀奇古怪的生物,让人不得不佩服作者的脑洞,画面的表现力也是极好的。 这个故事,最让人有感觉的,就是它的设定了,至于故事中人性的光辉,我倒是没什么特别多的感觉:主角莉可,奈落至宝雷古、 惨剧终末娜娜奇、普鲁修卡、马璐璐库、不动卿奥森、黎明卿波多尔多。 娜娜奇很可爱,也很悲惨。 (以上是捧读,学的雷古的语气) 普鲁修卡很惨,天真直至消亡,是真正的“惨剧终末”。 普鲁修卡是黎明卿波多尔多的“女儿”,普鲁修卡寓意为黎明之花,是波多尔多取的名。 看到这儿时,我就知道要寄。 普鲁修卡是很惨的,幸好出场的时间不多,不至于让人有太多的感觉。最后她化为生命回响之石,陪伴莉可继续冒险。 说到这儿,不得不提一下白笛的原材料,即为生命回响之石,也就是生命。必须是一个全心全意为另一人着想的生命献祭,才会生成生命回响之石,并且最后雕刻出的白笛只有她一个人能用。 这是非常残酷的,想要获得强大的白笛,必须牺牲一个全心全意为你奉献的人——就像《复仇者联盟》中黑寡妇献祭自己换取心灵宝石。 相比起来,不动卿奥森的徒弟马璐璐库就要幸运得多,遇上一个好师父。 是个脑洞大开的故事。 ——记于2022/11/20

十一月 20, 2022  |  35 字  |  总阅读

【Linux】Ubuntu 历史命令补全

前言 RetHat 系列 Linux 发行版,如 Centos 7,自带历史命令补全。 如之前敲过一条命令: ps -ef | grep sshd 下次再敲只需要按敲 ps 再按 PageUp 键即可自动补全,非常方便。 而 Debian 系列如 Ubuntu 20.04 默认没开启这项功能。 开启历史命令补全 vim /etc/inputrc 下两条设置取消注释: # alternate mappings for "page up" and "page down" to search the history # "\e[5~": history-search-backward # "\e[6~": history-search-forward 改为: # alternate mappings for "page up" and "page down" to search the history "\e[5~": history-search-backward "\e[6~": history-search-forward 然后执行 exec bash 即可。

十一月 20, 2022  |  69 字  |  总阅读

【Shell】标准的 Shell 脚本

记录一下 shell 脚本模板。 #!/usr/bin/env bash args_num=$# action="${1}" ALLOWED_ACTION_ARGS=("set" "unset" "test") function print_ok() { local msg="${1}" echo "${msg}" } function print_err() { local msg="${1}" echo "${msg}" > /dev/stderr } function contain() { local list="${1}" local ele="${2}" for i in ${list[*]}; do if [ "${ele}" == "${i}" ]; then return 0 fi done return 1 } function check_args_num() { if [ ${args_num} != 1 ]; then print_err "Wrong args num" return 1 fi } function check_action_arg() { if ! contain "${ALLOWED_ACTION_ARGS[*]}" "${action}"; then print_err "Action arg must be [ set || unset || test ]" return 1 fi } function set_proxy () { export ALL_PROXY=http://www.vksir.zone print_ok "Set proxy success" } function unset_proxy() { unset ALL_PROXY print_ok "Unset proxy success" } function test_proxy() { if curl -k https://www.google.com --connect-timeout 3 >/dev/null 2>&1; then print_ok "Proxy is available" else print_err "Proxy is not available" fi } if ! check_args_num; then return 1 fi if ! check_action_arg; then return 1 fi if [ "${action}" == "set" ]; then set_proxy elif [ "${action}" == "unset" ]; then unset_proxy elif [ "${action}" == "test" ]; then test_proxy fi return $? source proxy set source proxy unset source proxy test 注意,这里如果想写 source 脚本,那就不能使用 exit,否则会使 ssh 会话退出。 ...

九月 1, 2022  |  198 字  |  总阅读

【Linux】新建 swap 交换分区

最近开我的世界服,发生了好几次内存占满服务器卡死、导致不得不重启服务器的事情,遂而想新建一个交换分区,以免内存占满服务器直接卡死。 # 新建交换分区文件 dd if=/dev/zero of=/var/swap bs=1M count=4096 # 格式化交换分区 mkswap /var/swap # 设置为交换分区 swapon /var/swap # 设置开机自动挂载交换分区 echo "/var/swap swap swap defaults 0 0" >> /etc/fstab # 查看交换分区是否生效 free -m # 关闭交换分区 swapoff -a

九月 1, 2022  |  35 字  |  总阅读

Linux / 使用 systemctl 部署后台常驻服务

执行命令,添加配置内容, systemctl edit --force --full xxx.service [Unit] Description=xxx After=network.target [Service] Type=simple # WorkingDirectory=xxx ExecStart=xxx Restart=on-failure # User=root # Group=root [Install] WantedBy=multi-user.target 启动服务, # 启动服务 systemctl start supernode # 开启自启 systemctl enable supernode

九月 1, 2022  |  32 字  |  总阅读

【Electron】使用 Electron + Vue + Antd + Python 构建桌面程序

写在前面 也算是个记录吧,以免以后想写桌面程序又要走一遍弯路。这玩意不难,只是也有些坑,会耗些时间。 前端真没什么好说的,搞框架、搞设计的人很强,但调包这件事,人人都会干。 搭建前端 创建 vue 项目 yarn global add @vue/cli vue create electron-vue 参考:https://cli.vuejs.org/zh/guide/installation.html。 引入 electron 有现成的不用是…… cd electron-vue vue add electron-builder 参考:https://nklayman.github.io/vue-cli-plugin-electron-builder/guide/#installation。 没事儿不要自己瞎折腾,有时候遇上一些奇怪的报错,作为后端开发党,很难解决。 试一试 yarn electron:serve 引入 Antd Vue yarn add ant-design-vue 参考:https://www.antdv.com/docs/vue/getting-started-cn。 这里如果使用 npm 进行安装 npm i --save ant-design-vue,就会报错。——咱也不懂,咱也懒得看。 修改 src/main.js 如下: import { createApp } from 'vue' import App from './App.vue' import Antd from 'ant-design-vue' import 'ant-design-vue/dist/antd.css' createApp(App).use(Antd).mount('#app') 修改 src/components/HelloWorld.vue 如下: <script setup> import {ref} from "vue"; const content = ref('hello electron') function click() { content.value = 'hello vue' } </script> <template> <a-button type="primary" @click="click">click me</a-button> <a-typography-paragraph>{{ content }}</a-typography-paragraph> </template> 搭建后端 后端用什么都行,go、python 都可以。 ...

八月 30, 2022  |  349 字  |  总阅读