于人群中多看你一眼
初见 就如已相识千年
宿命于此刻 撞进胸口
把几辈子的记忆泛起在心头
我曾一次次的随您同行吧?
上路,相遇,前路漫长
在多少世的轮回里
如影 相随
共赴远方
而再见是陌生的脸庞
心却说那是熟悉的模样
眼里升起闪烁的星星啊
那又是哪一世思念的感伤
再湿了眼眶
移动互联网、软件开发话题及似水流年中的浪花朵朵
于人群中多看你一眼
初见 就如已相识千年
宿命于此刻 撞进胸口
把几辈子的记忆泛起在心头
我曾一次次的随您同行吧?
上路,相遇,前路漫长
在多少世的轮回里
如影 相随
共赴远方
而再见是陌生的脸庞
心却说那是熟悉的模样
眼里升起闪烁的星星啊
那又是哪一世思念的感伤
再湿了眼眶
刚刚得知我的一位大姐肖教授过世了。感觉很突然,心里很悲痛。肖大姐人挺好,我们挺聊得来,这几年虽然不常见面,但每次见到都能聊挺长时间。
前两年她就一直跟我说,如果经过长沙,过去她家做客聊天。现在这已经是不可能的事了,谁能想到才五十几岁的她这么早就走了。
想想看,她那个时候会不会是已经知道了自己的病情了,也许要我们去做客在她看来是一个关于告别的邀请呢。而我们却没有赴约,成为遗憾。
人这一辈子,真的很无常。有缘相见的人,尽量珍惜吧。
八十高龄患一疾,
幸得一院有高医。
医师断脉精而准,
护士服务周又勤。
几次吊针药对症,
吾身病痛早除净。
搭帮党的高医院,
感谢贵院好医生。
患者良臣2020年6月4日呼吸科二病区六病室17床
得闲叹秋爽
霜枫染潇湘
双亲今暂别
白发入梦乡
时光易老
等我再过些年
我也许会写这世上的风花雪月,我也许会写这人间的世态炎凉。
我也许会写山盟海誓,我也许会写生死无常。
我也许会想写尽我们每个人的一生。
如果写不下, 我也许只想静静睡眠,在一座无字的碑旁。
团队一直在用基于docker的gitlab。去年迁移过一次服务器,参见这篇文章。
今年因为某个原因再次迁移。但按照之前的办法,却一直不成功,服务起不起来,报错信息既有跟文件权限有关的,也有跟SSL证书有关的。最后没时间折腾,就换了种方式,使用备份gitlab数据,再进行恢复的方式解决。
在确保新、旧服务器上 Gitlab 版本一致的情况下,先在旧服务器上备份数据:
sudo docker exec -it gitlab /bin/bash进入旧服务器 gitlab容器的命令行,执行如下备份命令
gitlab-rake gitlab:backup:create RAILS_ENV=production
此操作备份所有gitlab数据,在 backups文件夹下生成了1523788820_2018_04_15_10.6.3_gitlab_backup.tar文件。
然后使用SFTP或SCP,将备份数据拷贝到新服务器上同名文件夹下,然后进入 gitlab 容器的命令行执行恢复命令:
gitlab-rake gitlab:backup:restore RAILS_ENV=production BACKUP=1523788820_2018_04_15_10.6.3
此过程中,有几个要点要注意:
1,注意新旧gitlab版本要一致,对于使用docker技术来说,可以通过指定版本号来确保;
2,注意文件路径要正确;
3,注意备份文件复制到新服务器后,可能存在权限问题。因为 gitlab默认使用git用户来对文件进行读写,可以使用 sudo chown git:git 1523788820_2018_04_15_10.6.3_gitlab_backup 命令来修改文件owner
之前曾用过沃通的免费SSL,结果几个月前备谷歌宣布不再信任该机构。也曾用过starSSL,似乎也有相似问题。
后来曾用Let’s Encrypt,挺好用,但有两个缺点:
1,证书有效期太短,才半年,感觉眼睛一眨就得要去renew了;
2,在复杂配置的centos上面自动化很麻烦,我们站点设置了80端口自动转https,但certbot(Let’s Encrypt客户端)要工作必须先要能访问验证域名,需要放置验证文件能在80端口下访问。这也意味着每次我们renew证书还需要修改站点配置。自动化Renew反正是没用上。
近期正好看到腾讯有免费ssl,就去申请了一下。很方便,验证方式也比较容易。有效期一年,比Let’s Encrypt长。既然自动化不了,暂时就用他家的方案了。
假设A对象与B对象是一对多的关系,B的集合作为A的属性children而存在。
class A{
……
@OneToMany(mappedBy=”parent”, cascade={CascadeType.ALL})
private Set<B> children;
……
}
使用CascadeType.ALL能够实现级联保存、级联删除。但是级联更新的时候遇到如下问题:
A.children.remove(child1);
A.children.add(child2);
这时候child2确实被添加到数据库了,但child1却并没有被删除。
其实只要加上orphanRemoval=true 就可以了
class A{
……
@OneToMany(mappedBy=”parent”, cascade={CascadeType.ALL},orphanRemoval=true)
private Set<B> children;
……
}
犹记昨日怀幼稚
不觉今时问壮年
临秋总恨盛夏短
愧与无常作缠绵
(2017年8月24日有感)
项目后端为Java,基于Spring Boot框架,前端为AngularJS。
前端有两个主要的组件可以用,一个是ng-file-upload,一个是angular-file-upload。
尝试使用ng-file-upload,却不能成功。主要是因为前端使用了Pace,有一些不兼容问题。报错如下:
Failed to execute ‘setRequestHeader’ on ‘XMLHttpRequest’
具体可以参见:https://github.com/danialfarid/ng-file-upload/issues/98
网上有人尝试解决这个问题,但在我的案例里面不适用,也没花时间多研究解决。
使用angular-file-upload则非常顺利,事实上从文档和示例来说,感觉angular-file-upload更加友好易用一些。