dukang's notes


  • 首页

  • 标签

  • 分类

  • 归档

  • 搜索

gitlab修改地址和修改密码

发表于 2023-08-16 | 阅读次数:
字数统计: 107 | 阅读时长 ≈ 1

修改地址

  • 通知gitlab服务

    1
    sudo gitlab-ctl stop
  • 修改配置文件

    1
    sudo vi /etc/gitlab/gitlab.rb
  • 修改external_url

    1
    external_url 'http://a.b.c'
  • 重配置gitlab

    1
    sudo gitlab-ctl reconfigure
  • 启动gitlab服务

    1
    sudo gitlab-ctl start

修改密码

  • 进入gitlab后台控制台,等待打开ruby控制界面

    1
    sudo gitlab-rails console production
  • 修改用户名密码

    1
    2
    3
    4
    user = User.where(username: "root").first
    user.password=123456 //此处用纯数字,至少8位
    user.save!
    quit

[转]打开文件fopen函数的用法

发表于 2023-03-23 | 阅读次数:
字数统计: 935 | 阅读时长 ≈ 3

在C语言中,对文件操作之前,首先需要打开文件,使用的函数是fopen函数,它的作用是打开文件,获取该文件的文件指针,方便后续操作。函数原型为:

1
FILE *fopen(const char *filename, const char *mode);

可以看得出来,该函数需要两个字符串类型的参数,第一个是文件名,既要操作的文件对象。第二个是打开方式,这里的打开方式只是,对文件以何种模式打开,包括文本模式打开还是二进制打开、是读还是写还是追加等等等等,具体类型如下表,可以根据情况使用:

参数 作用
r 以只读方式打开文件,该文件必须存在。
r+ 以读/写方式打开文件,该文件必须存在。
rb+ 以读/写方式打开一个二进制文件,只允许读/写数据。
rt+ 以读/写方式打开一个文本文件,允许读和写。
w 打开只写文件,若文件存在则文件长度清为零,即该文件内容会消失;若文件不存在则创建该文件。
w+ 打开可读/写文件,若文件存在则文件长度清为零,即该文件内容会消失;若文件不存在则创建该文件。
a 以附加的方式打开只写文件。若文件不存在,则会创建该文件;如果文件存在,则写入的数据会被加到文件尾后,即文件原先的内容会被保留(EOF 符保留)。
a+ 以附加方式打开可读/写的文件。若文件不存在,则会创建该文件,如果文件存在,则写入的数据会被加到文件尾后,即文件原先的内容会被保留(EOF符不保留)。
wb 以只写方式打开或新建一个二进制文件,只允许写数据。
wb+ 以读/写方式打开或新建一个二进制文件,允许读和写。
wt+ 以读/写方式打开或新建一个文本文件,允许读和写。
at+ 以读/写方式打开一个文本文件,允许读或在文本末追加数据。
ab+ 以读/写方式打开一个二进制文件,允许读或在文件末追加数据。

函数的返回值则表示打开成功后的文件指针,格式为FILE类型,是一个结构体类型,供后面使用,如果打开失败,则返回NULL经济师考试时间

FILE结构体类型虽用不到,但可以了解,定义如下:

1
2
3
4
5
6
7
8
9
10
11
typedef struct {  
  int level;           /* fill/empty level of buffer */
  unsigned flags;        /* File status flags */
  char fd;            /* File descriptor */
  unsigned char hold;     /* Ungetc char if no buffer */
  int bsize;           /* Buffer size */
  unsigned char _FAR *buffer; /* Data transfer buffer */
  unsigned char _FAR *curp;  /* Current active pointer */
  unsigned istemp;      /* Temporary file indicator */
  short token;         /* Used for validity checking */
} FILE;             /* This is the FILE object */

比如,如果我们现在想打开一个D盘根目录下的abc.dat,并且想读出该文件里的数据,那么我们可以这样写:

1
2
3
FILE *fp;
fp=fopen("d:\\abc.dat","r")
//后面通过fp指针开始读文件

值得说明的是

1.该文件的目录是绝对路径,因此这样写,如果不写盘符比如abc.dat则表示相对路径,表示与本程序同目录下。

2.路径中的反斜杠虽然只有一个,但这里打了两个,原因在于C语言字符串中对反斜杠要当作转义字符处理,因此要用两个反斜杠才能表示一个。

3.一旦以r也就是只读的方式打开文件,后面则不允许写数据,否则会出错,一定要保持一致!

Qt 5.6与Visual Studio 2013

发表于 2023-03-22 | 分类于 qt , vs2013 | 阅读次数:
字数统计: 84 | 阅读时长 ≈ 1

cannot open file ‘kernel32.lib’

Project properties -> VC++ Directories -> Library Directories
\$(WindowsSDK_LibraryPath_x86) (for win32 project) or $(WindowsSDK_LibraryPath_x64) (x64 project)

开始调试时,我会得到:程序无法启动,因为您的计算机缺少Qt5Cored.dll。 尝试重新安装程序来修复此程序。

使用

1
PATH=%QTDIR%\bin;%PATH%;

以下不会工作

1
PATH=$(QTDIR)\bin;$(PATH);

初始化列表

DEFINES += Q_COMPILER_INITIALIZER_LISTS

sqlite-sqlcipher编译

发表于 2022-09-06 | 阅读次数:
字数统计: 227 | 阅读时长 ≈ 1

源码地址:https://github.com/sqlcipher/sqlcipher.git

分支v4.5.2在windows10编译

1.在开始菜单中找到vs的开发工具命令提示,使用nmake工具生成sqlite3.c

1
nmake /f Makefile.msc sqlite3.c TOP=.

2.使用cl编译成dll库

1
cl -Iopenssl\install\include sqlite3.c -DSQLITE_API=__declspec(dllexport) -DSQLITE_TEMP_STORE=2 -DSQLITE_HAS_CODEC /MT -link -dll -out:sqlite3.x86.dll -LIBPATH:openssl\install\lib libeay32.lib ssleay32.lib

3.使用cl编译成exe,命令行操作sqlite数据库

1
cl -Iopenssl\install\include shell.c sqlite3.c -DSQLITE_API=__declspec(dllexport) -DSQLITE_TEMP_STORE=2 -DSQLITE_HAS_CODEC -DNDEBUG /MT -link -W4 -O2 -Zi -out:sqlcipher.exe -LIBPATH:openssl\install\lib libeay32.lib ssleay32.lib

加密已有库

1
2
3
4
5
sqlcipher.exe

ATTACH DATABASE '1.db' AS encrypted KEY 'thisiskey';
SELECT sqlcipher_export('encrypted');
DETACH DATABASE encrypted;

打开已加密库

1
2
3
4
sqlcipher.exe "1.db"

PRAGMA key='thisiskey';
.schema;

修改密码

1
2
3
4
sqlcipher.exe "1.db"

PRAGMA key='thisiskey';
PRAGMA rekey='thisiskey2';

解密库

1
2
3
4
5
6
7
sqlcipher.exe "1.db"

PRAGMA key='thisiskey';

ATTACH DATABASE 'plaintext.db' AS plaintext KEY '';
SELECT sqlcipher_export('plaintext');
DETACH DATABASE plaintext;

json-c使用

发表于 2022-07-14 | 分类于 c | 阅读次数:
字数统计: 193 | 阅读时长 ≈ 1

源码地址:https://github.com/json-c/json-c.git

编译成tcc的静态库

  1. 在根路径创建build目录作为编译目录
  2. 将tcc的include头文件和lib库文件复制到build目录
  3. 复制tcc执行程序到build目录
  4. 在mingw中build目录下执行以下命令编译
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    .\tcc -I . -I .. -D _MSC_VER -c ../arraylist.c
    .\tcc -I . -I .. -D _MSC_VER -c ../debug.c
    .\tcc -I . -I .. -D _MSC_VER -c ../json_c_version.c
    .\tcc -I . -I .. -D _MSC_VER -c ../json_object.c
    .\tcc -I . -I .. -D _MSC_VER -c ../json_object_iterator.c
    .\tcc -I . -I .. -D _MSC_VER -c ../json_pointer.c
    .\tcc -I . -I .. -D _MSC_VER -c ../json_tokener.c
    .\tcc -I . -I .. -D _MSC_VER -c ../json_util.c
    .\tcc -I . -I .. -D _MSC_VER -c ../json_visit.c
    .\tcc -I . -I .. -D _MSC_VER -c ../libjson.c
    .\tcc -I . -I .. -D _MSC_VER -c ../linkhash.c
    .\tcc -I . -I .. -D _MSC_VER -c ../printbuf.c
    .\tcc -I . -I .. -D _MSC_VER -D WIN32 -c ../random_seed.c
    .\tcc -I . -I .. -D _MSC_VER -c ../strerror_override.c
    ar rcs libjson.a *.o
    del *.o

tcc使用

发表于 2022-07-14 | 分类于 c | 阅读次数:
字数统计: 159 | 阅读时长 ≈ 1

源码地址:https://github.com/LuaDist/tcc.git

  1. 使用mingw在win32目录中执行build-tcc.bat

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    gcc -Os -fno-strict-aliasing ../tcc.c -o tcc.exe -s
    gcc -Os -fno-strict-aliasing ../libtcc.c -c -o libtcc.o
    gcc -Os tools/tiny_impdef.c -o tiny_impdef.exe -s
    gcc -Os tools/tiny_libmaker.c -o tiny_libmaker.exe -s
    mkdir libtcc
    ar rcs libtcc/libtcc.a libtcc.o
    del libtcc.o
    copy ..\libtcc.h libtcc
    :
    .\tcc -c lib/crt1.c
    .\tcc -c lib/wincrt1.c
    .\tcc -c lib/dllcrt1.c
    .\tcc -c lib/dllmain.c
    .\tcc -c lib/chkstk.S
    .\tcc -c ../lib/libtcc1.c
    .\tcc -c ../lib/alloca86.S
    .\tcc -c ../lib/alloca86-bt.S
    ar rcs lib/libtcc1.a crt1.o wincrt1.o dllcrt1.o dllmain.o chkstk.o libtcc1.o alloca86.o alloca86-bt.o
    del *.o
  2. include即头文件,lib中的即库文件,tcc.exe可用于编译tcc的第三方静态库

jsoncpp使用

发表于 2021-06-09 | 分类于 c++ | 阅读次数:
字数统计: 22 | 阅读时长 ≈ 1

源码地址:https://github.com/open-source-parsers/jsoncpp.git

  1. cmake生成vs2013工程
  2. 使用vs2013编译

NodeJS安装

发表于 2020-03-23 | 分类于 node | 阅读次数:
字数统计: 22 | 阅读时长 ≈ 1

cnpm安装

1
npm install -g cnpm --registry=https://registry.npm.taobao.org
1
2
npm config set registry http://registry.npm.taobao.org
cnpm -v

3阶魔方

发表于 2019-05-17 | 阅读次数:
字数统计: 75 | 阅读时长 ≈ 1

U(上),D(下),F(前),B(后),M(中),L(左),R(右)
字母后面如果加上“ ‘ ”的话表示逆时针旋转90度

二层:

1
2
3
4
5
URU'R'
U'F'UF

U'F'UF
URU'R'

小鱼:

1
2
FUF'UFUUF'
R'U'RU'R'UUR

角:

1
RRDDR'U'RDDR'UR'

hexo插件使用

发表于 2019-04-13 | 分类于 hexo | 阅读次数:
字数统计: 386 | 阅读时长 ≈ 1

hexo-admin插件

安装

安装hexo-admin只需要一条命令

1
npm install hexo-admin --save

当然如果你有配置淘宝的数据源可以使用下面的命令,安装时网络会稍微稳定一些,插件不大,感觉也差不多。

1
cnpm install hexo-admin --save

使用

输入“hexo”运行hexo,打开浏览器输入“http://localhost:4000/admin ”,现在就可以正常使用了。

安全设置

在hexo的“_config.yml”文件中还可以配置一些hexo-admin插件的参数,用于保证安全的。如果是部署到GitHub pages上的话就没必要设置这个,因为GitHub只支持静态,而且hexo-admin的管理界面并不会一起被部署上去。

在hexo的“_config.yml”文件中添加以下参数

1
2
3
4
admin:
username: 用户名
password_hash: md5密码
secret: 用于加密cookie的密码

“_config.yml”的参数可以使用hexo-admin自动生成,打开hexo-admin界面,点击导航的“settings”选项,输入内容。

输入内容后下滑,找到生成的代码,复制到“_config.yml”中重启hexo,打来hexo-admin的界面。

注意:
这里要注意的是“secret”一定一定不能太过于简单,我设置“123456”报错了,后来我再乱输了一堆字母,成功。

hexo-admin新建文章设置参数

在hexo-admin新建文章可以设置一些文章参数,文章参数配置如下,参数默认值可以为空:

1
2
3
4
# hexo-admin默认文章参数
metadata:
参数名1: 参数默认值2
参数名2: 参数默认值2

12
dukang

dukang

16 日志
9 分类
12 标签
© 2019 — 2025 dukang
由 Hexo 强力驱动
|
主题 — NexT.Gemini v5.1.4
蜀ICP备2022004359号