莉特雅的结界

分享技术,很重要的!

  • FreeBSD Ports - 如何给 FreeBSD 打包

    FreeBSD Ports 系统使用 Makefile 来描述软件包信息。相比 Arch Linux Buildsystem 来说,FreeBSD Ports 灵活性非常差,要打个包比较恶心。 ${WRKSRC} - 是软件包源码解压的地方,一般是 work/软件包名 $STAGEDIR - 是打包用的小系统目录,软件包编译后安装在这个目录用来打包,一般是 work/stage work/pkg 中存放 make package 生成的 pkg 包文件 准备 Makefile 一般来说,最小 Makefile 模板是这样:

    Read more…
  • Windows 控制台应用程序隐藏控制台

    blender 的早期版本中,启动 blender 后会先显示一个控制台窗口,接着消失,弹出新的窗口。也许意味着控制台应用程序是可以隐藏控制台的。功夫不负有心人,找到了几种解决方法: 1 - 控制控制台窗口 ShowWindow(GetConsoleWindow(), SW_HIDE); 需要用到两个 Windows API: ShowWindow 设置指定窗口显示状态 GetConsoleWindow 返回控制台窗口句柄 获取控制台窗口句柄,然后修改他的显示状态。 但是官网不建议继续使用 GetConsoleWindow 接口。

    Read more…
  • 编译 linux 内核相关的问题

    在 Arch Linux 上,编译 Linux 内核需要依赖两个默认没有提供的工具: bc: An aribitrary precision calculator language (https://www.gnu.org/software/bc/) cpio: A tool to copy files into or out of a cpio or tar archive (https://www.

    Read more…
  • Java 程序启动

    你们说,带群友翻 jdk 代码会不会很酷? 拜托,超酷的好不好。 假设 首先假设在工作目录中指定并启动编译好的主类: $ java MainClass 至于 jar 包,你用压缩软件打开,然后打开文件 META-INF/MANIFEST.MF,里面 Main-Class 那一行就写着主类:

    Read more…
  • Blackarch 脚本两则

    sysclean.sh - 清理系统 #!/bin/sh # 清理孤包 # pacman -Rscn # -R 删除 # -s 包括目标包的依赖 # -c 包括依赖目标包的包 # -n 忽略文件备份 # -Q 查询 # -t 查询孤包 不再被依赖或可选依赖的包 # -d 查询作为依赖安装的包 # -q 只打印包名(对脚本很有用) pacman -Rscn $(pacman -Qtdq) # 更新源文件 (extra/pkgfile包的 pkgfile) pkgfile -u # 更新 mlocate 数据库 (core/mlocate 包) updatedb pacman-db-upgrade # 清理包缓存 两个 -c 清理缓存中所有文件 yes | pacman -Scc # 同步缓存的写入到持久性存储中 sync tuning.

    Read more…
  • 内核事件通知机制

    当进程持有充分大数量的资源时,如何跟踪资源的状态变成了问题,与其挨个轮询,不妨换一种思路,让内核通知我们。 比如在网络编程的条件下,我们可能会同时处理多种连接,可以使用这种接口让内核通知我们哪些套接字可以读写,传入连接等。 在 FreeBSD 中,使用 kqueue() 相关设施提供事件通知机制。 在 Linux 中,使用 epoll() 相关设施提供事件通知机制。 kqueue kqueue() 需要用到的头文件是:

    Read more…
  • gcc 关于链接库的参数顺序

    现象: buildbot@worker:/buildbot/allbuild/build$ make cc -c -o main.o main.c cc -c -o send.o send.c cc -c -o status.

    Read more…
  • su 以其他用户启动程序,但账号不可用

    本文章假设以超级用户 root 发起操作 Phabricator 中,守护程序 ./bin/phd 需要以 daemon-user 启动,在 Debian 中该用户名为 daemon。 所以如果不想给该守护进程默认的 root 权限,需要以 daemon 身份启动该程序。 (因为 daemon 的 sudoers 配都配了)

    Read more…
  • docker-compose 中让容器依赖与实际服务是否可用

    Phabricator 是一组开发软件用的工具。它包括了代码审查(code review),仓库托管(repository hosting),漏洞追踪(bug tracking),项目管理(project management)等工具。 其中 Phabricator 包含了一个守护进程,为了将其装进 docker 容器中,我是用 ENTRYPOINT 脚本在容器启动时,容器进程启动前来启动守护进程。 下头的是:该守护进程会在连接数据库失败后立即退出,并且普通的 docker-compose 的 depends_on 声明对其没有效果,主要是数据库容器启动后需要一段时间。

    Read more…
  • 简单使用 frp

    frp 是一个专注于内网穿透的高性能的反向代理引用。 它最常见的使用场景是:由于众所周知的原因,云服务器上访问某些服务速度感人,让服务器流量走本地机器。 以及,让云服务器做出口对外服务,配合搭建混合云,让一些信息的储存和计算发生在本地。 这里给出最简单的一个常见的配置:向服务器暴露本地机器的服务。 这里使用本地端口 5000 做示例,在服务器上暴露为相同的 5000 端口。 服务器的配置如下: [common] bind_port = 7000 ; frp 服务端口 ; 同时要配置网络防火墙(服务器安全组),使得该端口对外可见 token = xxx ; 令牌,用作简单的身份认证 ; 可以使用 python 标准库 secrets 生成: ; import secrets ; secrets.

    Read more…