WRITING LOG · 03
技术博客
记录技术实践、问题排查和持续成长,把每一次解决问题的过程留下来。
WORKSPACE
文章阅读
关于MySQL数据库的布尔类型
2021-09-22
今天撸代码的时候发现表里面现存的一个字段用的bit类型,长度为1没有注释。问了下建表的同事这个字段是个布尔值字段,true和false用0和1来表示。这让我有点为难,因为php写入这类型的值有点麻烦需要把前端传过来的数字转成bit兼容的类型才能存。php确实是有char函数能数字转成ASCII码来存,但是个人觉得很不方便,在前端页面bit型的写入和展示都不如int型。mysql是有布尔类型的,关键字BOOLEAN,但实际也是存的tinyint数字,所以平常这种类型的字段我都直接用tinyint(1)。私以为比起代码的维护成本用bit省下来的mysql空间不值得一提。
centos下利用nginx+ffmpeg搭建直播推流服务
2021-09-10
手头有台闲置的服务器,前段时间搭了个aria2c视频下载服务下了些资源。直接在网页上打开资源有点慢所以想着开个在线播放的服务,于是想到以前玩的nginx+ffmpeg直播推流。下面是搭建过程:1、nginx+推流模块的安装。原本我服务器上是有nginx服务的,奈何没有推流模块需要安装rtmp推流模块扩展。查了一圈nginx的rtmp扩展是没有现成的yum安装包依赖的只能自己去github下载模块然后重新把rtmp模块编译进nginx。本来我的nginx服务也没放任何项目,折腾一阵发现还不如重新编译安装一遍nginx。于是卸载了现有的nginx服务 yum remove nginx,然后下载rtmp模块和nginx源码。
填入拉流地址
如果播放不了则需要检查服务器1935端口是否打开,服务器控制台安全策略需要打开1935,服务器也要给这个端口放行,然后检查下自己地址填错没。
###### nginx我这里下载的是nginx-1.20.1# wget http://nginx.org/download/nginx-1.20.1.tar.gz###### 下载rtmp模块和相关依赖# wget https://github.com/winshining/nginx-http-flv-module/archive/master.zip###### 解压并安装# tar -xvf nginx-1.20.1.tar.gz# unzip master.zip###### 如果提示unzip不存在则安装下 yum install unzip -y###### 编译安装nginx# cd nginx-1.20.1# ./configure --add-module=../nginx-http-flv-module-master# make && make install###### 编译安装过程没有报错的话nginx至此安装完成 ######2、启动推流服务。要先配置nginx监听1935端口,然后用ffmpeg把视频流推到nginx监听的1935端口。修改/usr/local/nginx/conf/nginx.conf,如果没有在此目录的话可以find / -name nginx.conf查找一下配置文件。nginx的rtmp配置如下:rtmp { server { listen 1935; chunk_size 2048; drop_idle_publisher 10s; application mylive { live on; record off; } application hls { live on; hls on; hls_path /tmp/hls; hls_continuous on; } }}这段配置应该放在nginx.conf的 http { 这行之前。配置好后尝试启动nginx服务 /usr/local/nginx/sbin/nginx,如果找不到nginx服务也可以find / -name nginx,找到的列表中一般在/usr/sbin/nginx或者/usr/local/nginx/sbin/nginx 成功启动后使用ffmpeg推流。# ffmpeg -re -i 你的视频地址(如/home/zhangsan/test.mp4) -c copy -f flv rtmp://0.0.0.0:1935/mylive/play如果提示ffmpeg命令不存在则安装相关依赖# rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro# rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm# yum install ffmpeg ffmpeg-devel -y3、收看自己推送的视频流。看视频流我采用的VLC这个拉流软件
填入拉流地址
如果播放不了则需要检查服务器1935端口是否打开,服务器控制台安全策略需要打开1935,服务器也要给这个端口放行,然后检查下自己地址填错没。
Deepin通过局域网共享文件夹给Windows
2021-09-08
有时候可能有共享文件给其他电脑的需要,如果两台电脑在同一个局域网就可以直接采用文件共享方式。下面是操作步骤:1、确保要共享的电脑在同一个局域网,并查看记下deepin的局域网IP。
2、找到你要共享的文件夹(前提要这个文件夹是你创建的自己有读写权限),右键呼出菜单依次选择【属性】->【共享管理】并勾选【共享此文件夹】,【匿名访问】选可读写。
3、到windows电脑上打开文件管理器或者浏览器,输入地址 file://第一步记下的IP/就可以看到共享的文件了。比如我的deepin局域网ip是192.168.8.34,那只要文件夹共享开启后在windows电脑文件管理器地址栏输入 file://192.168.8.34即可。如果不成功可以看看网络是否是同局域网,是否开了防火墙再尝试。
2、找到你要共享的文件夹(前提要这个文件夹是你创建的自己有读写权限),右键呼出菜单依次选择【属性】->【共享管理】并勾选【共享此文件夹】,【匿名访问】选可读写。
3、到windows电脑上打开文件管理器或者浏览器,输入地址 file://第一步记下的IP/就可以看到共享的文件了。比如我的deepin局域网ip是192.168.8.34,那只要文件夹共享开启后在windows电脑文件管理器地址栏输入 file://192.168.8.34即可。如果不成功可以看看网络是否是同局域网,是否开了防火墙再尝试。
laravel-admin自定义主键的表单编辑
2021-09-06
手里有套基于larval-admin的老系统在维护,今天要做点小东西发现其中一张表是用date日期做主键的。然后发现larval-admin自带表单在编辑的这个日期的时候会隐藏主键字段。这就很头疼了,需求是要能改这个主键字段的,只能自己去改造表单form方法。查了下官方论坛给的方法是自定义一个不存在的字段然后根据传参判定是否是编辑模式再接收这个不存在的字段写到表里,代码如下:
protected function form($creating = false){ // 其他的代码.... if ($creating) { $form->text('gid', 'ID'); } $form->saving(function ($form) { $form->input('id', request()->get('gid')); }); // 其他的代码....}public function create(Content $content){ return $content ->header('Header') ->description('description') ->body($this->form(true));}在例子里面$creating就是是否在编辑的标识,gid是自定义的字段用于替换编辑id字段,我反复尝试了一下觉得不好用。我更喜欢简单粗暴,思路就是直接自定义一个临时字段并改写name值为主键字段,在提交的时候直接写进去。如下:protected function form(){ // 其他代码...... $js = <<<EOF $("#test_filed").attr("name","主键字段");EOF; Admin::script($js); $form->date('test_filed','测试字段')->default(request()->path('主键字段'))->required(); $form->saving(function($form){ $form->model()->主键字段 = request()->input('主键字段'); }); // 其他代码......}这样就搞定了,虽然颇有脱裤子放屁的感觉。别人的框架用起来是方便但要个性化定制的时候就很难受了,本着【能跑就行】的态度堆积代码屎山也是无奈之举。
composer自动加载外部文件
2021-09-03
现在主流的PHP框架大多都使用composer作为依赖管理工具,有时候自己写了公共的库懒得做成composer包但是想优雅地引入项目,那可能就需要这样做了:第一种:自己玩,也不讲什么开发规范,直接require或者include文件,这样有点丑且不好维护。如果有三四个这样的文件需要引用就更丑了,但胜在简单明了。第二种:项目有用composer管理,直接在composer.json文件里面加files配置引入php文件,然后执行composer dumpautoupload命令,这样会自动生成composer自动加载文件。其实有时候composer依赖很大很难拉取的时候也可以直接去git下载对应依赖放进vendor包然后进入依赖根目录composer install再composer dumpautoupload。
同事电脑遭遇比特币勒索病毒感染
2021-09-03
群里突然就炸了,一看聊天记录原来是同事的电脑中毒了,还不止一台。文件全被加密无法打开,连浏览器都开不了了。被加密的文件后缀改为了.eking,然后留下了一个说明文件,长下面的样子:
经过同事的杀毒找到了可疑的可执行文件reopening1999@tutanota.com.exe
经过同事的杀毒找到了可疑的可执行文件reopening1999@tutanota.com.exe
解决Oracle云服务器ssh登不上问题
2021-09-01
今天突然发现Oracle云服务器登不上了,用密钥文件和密码都登陆被拒。第一反应是服务器被黑了,但是去控制台又没发现什么异常反应,昨天还用得好好的。原因先不深究,下面是解决过程:1、登陆到Oracle云服务控制台查看网络安全策略动过没,22号端口正常开放,没问题。2、重新下载ssh密钥文件来尝试登陆。登陆后依次进入【仪表板】>【实例】> 左侧资源列表的【Console connection】>【创建本地连接】然后在弹出框保存私有密钥就ok。然后发现用新下载的密钥也连不上,那说明不是密钥的问题。
3、在上一步不下载密钥选择【启动cloud shell连接】,加载完黑窗口后用账户密码登陆进去看了下/etc/ssh/sshd_config配置文件也没啥问题。这里吐槽下Oracle的cloud shell真难用,不知道是网络问题还是浏览器问题上下左右键全按不动,Esc键无效导致我无法正常编辑配置文件。重启服务器依旧连不上,实在不行我只能祭出绝招:重装。4、先尝试重装ssh服务,因为cloud shell不受ssh服务影响所以我直接yum remove openssh-server,卸载完再yum install openssh-server安装服务。然后直接service sshd start开启服务,这次再去终端尝试ssh连接可行了。这里因为我选的操作系统是centos7并且用的root登陆,所以命令前面不用加sudo,启动服务也还可以用过渡的service命令。如果是ubuntu就要用apt替代yum了。问题解决,打完收工!
3、在上一步不下载密钥选择【启动cloud shell连接】,加载完黑窗口后用账户密码登陆进去看了下/etc/ssh/sshd_config配置文件也没啥问题。这里吐槽下Oracle的cloud shell真难用,不知道是网络问题还是浏览器问题上下左右键全按不动,Esc键无效导致我无法正常编辑配置文件。重启服务器依旧连不上,实在不行我只能祭出绝招:重装。4、先尝试重装ssh服务,因为cloud shell不受ssh服务影响所以我直接yum remove openssh-server,卸载完再yum install openssh-server安装服务。然后直接service sshd start开启服务,这次再去终端尝试ssh连接可行了。这里因为我选的操作系统是centos7并且用的root登陆,所以命令前面不用加sudo,启动服务也还可以用过渡的service命令。如果是ubuntu就要用apt替代yum了。问题解决,打完收工!