《生如夏花》

生命,一次又一次轻薄过

轻狂不知疲倦

——题记

1

我听见回声,来自山谷和心间

以寂寞的镰刀收割空旷的灵魂

不断地重复决绝,又重复幸福

终有绿洲摇曳在沙漠

我相信自己

生来如同璀璨的夏日之花

不凋不败,妖冶如火

承受心跳的负荷和呼吸的累赘

乐此不疲

2

我听见音乐,来自月光和胴体

辅极端的诱饵捕获飘渺的唯美

一生充盈着激烈,又充盈着纯然

总有回忆贯穿于世间

我相信自己

死时如同静美的秋日落叶

不盛不乱,姿态如烟

即便枯萎也保留丰肌清骨的傲然

玄之又玄

3

我听见爱情,我相信爱情

爱情是一潭挣扎的蓝藻

如同一阵凄微的风

穿过我失血的静脉

驻守岁月的信念

4

我相信一切能够听见

甚至预见离散,遇见另一个自己

而有些瞬间无法把握

任凭东走西顾,逝去的必然不返

请看我头置簪花,一路走来一路盛开

频频遗漏一些,又深陷风霜雨雪的感动

5

般若波罗蜜,一声一声

生如夏花,死如秋叶

还在乎拥有什么

为电视盒子修改遥控器键值

以百度影棒为例,找到/system/etc/remote.conf

确认debug_enable = 1
如果不是1,修改为1后重启,然后拿将要修改的遥控器对着随便按下,然后使用dmesg,找到类似
Wrong custom code is 0xFFFF4040
4040就是工程号
替换
factory_code = 0xFFFF0001
FFFF部分
然后重启后,把所有按键按顺序按一遍,记得记录顺序,然后dmesg,查看对应的键值
最后更新key_begin段,进行键值映射,映射的目标键值可以通过/system/usr/keylayout/Vendor_0001_Product_0001.kl 进行查看。
完成后重启,键值修改完成。

letsencrypt

需求
python2.7
pip
virtualenv

git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
./letsencrypt-auto certonly --server https://acme-v01.api.letsencrypt.org/directory --agree-dev-preview

按提示输入对应内容后,会生成证书,会提示目录。

/etc/letsencrypt/live/域名

4个文件

cert.pem  chain.pem  fullchain.pem  privkey.pem

nginx的话增加

listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/域名/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/域名/privkey.pem;

 


MDK/armcc c99编译模式下的inline

先说下c99模式相较于默认的c90模式的优点

  • 变量声明不需要放在函数开头
  • 结构体初始化更方便
  • 增加了inline关键词,用来替代宏定义

那么就来说说inline关键词的使用

使用情况一般分为三种:

  1. 单元外使用
  2. 单元内使用
  3. 单元内外使用

1、单元外使用,需要在(.h)中使用static inline声明并定义:

static inline void func(void){}

2、单元内使用,(.c)中使用static inline申明并定义:

static inline void func(void){}

3、单元内外使用,(.c)使用inline定义,(.h)中声明:

xxx.c

inline void func(void){}

xxx.h

void func(void);

需要注意的是,这种情况下单元内调用是内联的,但是单元外调用则不是。

最后,要使inline生效,需要打开Optimize for time。


[转]windows服务注册工具nssm

在windows系统上注册一个服务通常你要这么做:

首先,如果这个服务程序是你写的话,你必须在程序中编写ServiceMain服务主函数用来启动服务,并且要在程序中注册服务启动函数,函数原型如下。

1
2
3
4
VOID WINAPI ServiceMain(
  DWORD dwArgc,
  LPTSTR* lpszArgv
);

然后,你需要修改注册表相关信息,在注册表项"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\"中自动增加项[服务名],并在其下成功添加各个键值:

"DisplayName"   =服务显示名     (字符串值)
"Description"      =服务描述       (字符串值)
"ImagePath"       =应用程序路径   (可扩充字符串值)
"ObjectName"    ="LocalSystem"  (字符串值)
"Type"                =10(16进制)     (dword值)
"Start"                =2(16进制)      (dword值)
"ErrorControl"     =1(16进制)      (dword值)

或者直接执行instsrv [服务名] [应用程序路径],自动添加注册表信息。(不过貌似只有服务器版的windows才有instsrv命令)

完成上述操作后,如果不出意外你可以在服务管理器services.msc中可以看到你的服务。当然你如果想卸载服务,至少得把上面的第二步反过来做一遍,即清理注册表。

现在有一个更好的工具可以完成这项任务,nssm

nssm是一个命令行工具,也支持gui。

1
2
nssm install <ServerName> <Program Path>  #安装
nssm remove <ServerName> confirm          #卸载

nssm_usage_demo.png
命令行使用

nssm_gui_usage_install.png
GUI使用(安装)

nssm_gui_usage_remove.png
GUI使用(卸载)

使用nssm来安装windows服务是不需要主程序中注册服务的,也就是说想将一个程序变为服务程序有了nssm后你无需修改代码。


ss5编译安装总结

安装编译环境:
yum install make automake gcc gcc-c++

安装ss5必要软件包:
yum install pam-devel openssl-devel openldap-devel cyrus-sasl-devel

编译安装ss5:
wget http://sourceforge.net/projects/ss5/files/ss5/3.8.9-5/ss5-3.8.9-5.tar.gz/download
tar -zxvf ss5-3.8.9-5.tar.gz
cd ss5-3.8.9
./configure
make
make install

设置ss5开机自启动:
chmod +x /etc/init.d/ss5
chkconfig --add ss5
chkconfig --level 2345 ss5 on

修改用户权限:
vim /etc/opt/ss5/ss5.conf

找到:
# SHost SPort Authentication
#
#auth 0.0.0.0/0 – –
修改为:
# SHost SPort Authentication
#
auth 0.0.0.0/0 – u
找到:
#permit – 0.0.0.0/0 – 0.0.0.0/0
修改为:
permit – 0.0.0.0/0 – 0.0.0.0/0

修改默认端口:
默认端口为1080
vim /etc/sysconfig/ss5
之前为:
#SS5_OPTS=” -u root”
修改为:
# Add startup option here
SS5_OPTS=” -b 0.0.0.0:port”

添加用户:
vi /etc/opt/ss5/ss5.passwd
test test


GCode Joiner v0.2版发布

本工具用来合并一个模型文件采用不同参数多次切片生成的GCode文件,可以完成动态调整层高、填充、壁厚、底厚等功能。

使用唯一需要注意的地方是2个需要合并的文件(多个文件的话只要首尾相连的2个),需要有相同的层交集。
举例如下
切片参数1 初始层厚 0.3 层高0.2
切片参数2 初始层厚 0.3 层高0.3
切片1打印层 切片2打印层
0.3 0.3
0.5 0.6
0.7 0.9
0.9 1.2
1.1 1.5
1.3 1.8
1.5 2.1
1.7 2.4
1.9
2.1
如上有相同的层交集为0.9/1.5/2.1等等等,如果需要调节的层数相差一层,那么可以调节切片文件2的初始层厚。

更新记录
版本v0.2 2015年3月16日
依据网友┌﹎蔠嚸 ~(1525493320)提交的问题,修正一处层合并后E挤出的问题。

版本v0.1 2015年3月14日
建立初始版本。

下载地址
http://pb.itsong.com/gcode_joiner_release.rar


CURA运行不起来卡半天的解决方法。

默认情况下CURA在每次启动时候会检查更新,而国外服务器连接又不是太稳定,检查更新时候会导致整个CURA卡死,在卡死的时候很难进入CURA,这个时候你可以修改配置文件,再重新进入,方法如下:
首先按win+r键,输入 %USERPROFILE%\.cura 然后回车,找到你自己使用的版本对应的目录进入后,打开 preferences.ini 将 check_for_updates 修改 为False,顺便也可以将 submit_slice_information 也修改为False,该选项为提交使用过程中产生的数据,这样再次打开CURA就不会卡顿了。


CURA打开大文件时候太卡打不开的切片方法。

在cura中设置好切片参数,然后选择菜单
File->Save Profile...
保存下配置文件,名字随意尽量别中文,比如cura_config1.ini,记得保存的位置一会要用到。
接着将该文件及你模型文件(stl/obj/amf等)复制到cura目录下,该目录下应该包含(CuraEngine.exe),然后在该目录下新建一个名为start_slice.bat的批处理文件,填入内容如下:
CuraEngine.exe -c cura_config1.ini -o model.gcode model.STL
pause

其中model.gcode为输出gcode文件名,model.stl为你模型文件名,保存后,双击,即会开始切片,切片完成会在目录下生成model.gcode。

PS:配置文件名可以自由指定,你可以提前预置多份配置,然后编写多个批处理文件。


总结下3D打印ABS PLA翘边的原因

PLA相对ABS来说,翘边的几率很低,但是设置不当还是会导致翘边情况发生,以下依据我的经验总结下翘边的原因。
在热床和玻璃的情况下
喷头温度不够(pla 190+ abs 230+)
喷头和平台距离远(根据打印出来的情况,正常应该是扁平的面条,如果圆柱型则说明太远,如果出料很少则说明太近)
热床温度低(pla 60+ abs 100+)
打印速度快
挤出量偏少

以上5种情况都会导致不粘床翘边情况发生,请挨个确认,祝早日解决问题。