之前有在高德和百度地图的软件上看到自己的足迹地图,不过这两个软件因为我使用的原因,数据都不完整。很多之前去过的地方并没有标记,或者只是坐火车坐高铁路过而已的地方也都记录了下来。然后就萌生了自己能不能做一个属于自己的足迹地图,且能够方便的嵌入在博客中。
在一番搜索研究,看了看已有的开源项目,首先看到了基于echarts的方案。仔细研究了一番,发现常规的geojson文件都是按照省份划分,如果想要精确到市级,要么做点击下穿,要么要自己花时间去做城市级的json数据整合。一番搜索没有找到现成的数据,又不想花额外的时间,随放弃。
又经过一番搜索,发现了pyecharts,echarts的python开源版本,echarts本身则是基于JavaScript的。pyecharts的官方示例直接就带了一个全国市级地图示例,这不正是我想要的吗。不过这个示例还有不少额外的标记,不太需要,经过又一番搜寻和文档阅读,首先找到了Python-pyecharts生成精确到市的地图, 经过一番魔改修改成了这样,成功把各种标识全部关闭:
from pyecharts import options as opts
from pyecharts.charts import Map
finished=["北京市", "天津市", "南京市", "合肥市","六安市","安庆市","黄山市","池州市","淮南市","焦作市","西安市","福州市","杭州市","绍兴市","苏州市"]#对应地图中的名字
citylist=[]
for each in finished:
citylist.append([each,100])
map_data = (
Map()
.add("中国地图", citylist, "china-cities", is_map_symbol_show=False,)
.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
.set_global_opts(
title_opts=opts.TitleOpts(title="我的城市足迹",is_show=False),
legend_opts=opts.LegendOpts(is_show=False), # 隐藏图例
visualmap_opts=opts.VisualMapOpts(is_show=False),
)
)
map_data.render("citymap_footprint.html")
但是这个时候,pyecharts生成的html文件,地图只在左上角的角落里,缩放之后更是直接被截断。按pyecharts学习2--自适应屏幕居中显示这个博客内容又处理了一番,唉嘿,输出的文件是我想要的样子了,一个全屏可自适应的,除了足迹以外无标记地图。
<iframe src= "/citymap_footprint.html" style= "border:none; width: 100%; height: 50vh; " scrolling="no"></iframe>
最后使用iframe嵌入到文章或者博客主题中,完美,效果如下:
🚅我的城市足迹
我最后是将我的足迹嵌入到了关于页面,毫无违和感,非常合适。可放大缩小,以后更新也只需要替换一下iframe嵌入的html文件即可。
]]>回看23年初时,写下的几个23年的愿望,现在有实现的吗?
2023年的几个愿望:
1.工作精进,技能增长 (√)
2.多出去走走转转看看 (...√)
3.加强锻炼,身体健康 (x)
4.坚持内容输出,提升自己的输出能力(√)
第一条,工作中有了新的变化,也能力上有提升,算是完成了,详细的下面细说。
第二条,下半年的周末,只要没有雨雪,基本每周都会出去走走,但是现在回头看来,基本没有走出市区,走出最常生活的范围。
第三条,今年算是荒废的一年,基本没有什么锻炼,虽然没有经常生病,但是感觉体能是真的差了不少。
第四条,2023年一年总共写了9篇或长或短的博客,还搭了memos时不时输出一下碎碎念,算是圆满。
从去年毕业到现在,毕业也已有一年半的时间,但也算是挺短的。年初部门因为很多人离职,就剩下一群应届生,换了大领导,完全不一样的行事风格。新领导比旧领导要push不少,但是愿意带我们新人,给予机会和帮助。这一年学了不少东西,虽然有些零碎不成系统,但是回看年初的时候工作中的自己已不可同日耳语。同时今年的公司,裁员降本不断,行业整体也不景气,不知道到2024会如何。同时我也从开始基本不加班,到现在加班多了,加班真的会降低生活质量,这算是这一年中工作中相当难受的点。
生活上,最大的变化是新家装修完之后,我自己一个人住了,而不是和去年一样和爸妈住一起。之前我还经常做饭,但是自己一个人住后加上经常加班,家里没菜,做饭变得异常麻烦起来,就不自己做饭了,之前还会准备第二天的午饭,带到公司去热,因为不做饭也就不再带了。但是一个人住,对于我这个享受独处的人来说,也是一种释放,每天少了许多我爸的啰嗦和负能量。
另一个是因为周内经常加班,到家一般都是9点多了,周内属于自己的生活时间基本所剩无几,回家之后基本打开电脑随便翻翻网页,就洗漱上床,刷会手机睡觉了。周末则就是拿起相机,出去瞎转,去寻找值得记录的风景。
这一年的生活,如果用一个词来总结,我大概只能用平淡来总结。
2023年为我自己花钱最贵的两个,一个是电脑,一个是相机,也算是工作后对之前多年愿望的满足吧。电脑现在有点后悔,稍微配的有些性能过剩了,工作之后已是电子阳痿状态😭,对很多游戏完全没有之前那样想玩的欲望。相机则是刚刚到手,希望后面多拍多用,毕竟拍的越多,用的越多,钱花的越值。
如果说我认为买的最值的,我则是认为一个是新买的小斜挎包,一个是Airpods pro。新包买回来之后基本每天出门都背着,包超级轻且背起来贴合身体,但是容量相当可观,出门所需的东西基本都能塞得下。Airpods pro则是佩戴舒适度超级好,基本无感,作为一个地铁通勤人真的是太有用了。能让我每天通勤过程中,隔绝于地铁那震耳欲聋的噪声之外,拥有一段本失去的时光。
经过一番短时间的碎碎念,可能遗漏了不少我在2023的所想,但是还是决定停下来,写下我在2024的愿望。
新的一年,开始~~
]]>大概6年前,我刚刚对摄影有了些认知的我买了索尼a6300,6300陪伴我度过了大学,研究生,到了工作时期。作为一代神机,真的很能打,有些规格即使到了现在仍然能和有些相机打的有来有回。兜兜转转的几年间,我用6300学习了摄影最基本的知识,摸清了我到底喜欢用相机拍什么。但是毕竟是发布于7年前的老机器了,用起来算是充满了年代感,microusb的充电接口,容量超小的电池,难用的菜单,稀烂的屏幕,都在不断的提示着我。
在今年,索尼发布的A7C2在发布前就让我眼前一亮,相比一代有了不少的提升,该有的拨轮,快捷按键都不少,整体的规格基本和A7M4也基本一致。同时那超小的体积和相对轻的重量,和我在使用的6300基本一致,是可以轻松放到我日常通勤的斜跨包当中,随时带着就走,而不用顾忌该如何带走。在几年的相机使用过程中,“能经常带出去拍照的相机才是最好的相机”,是我不断提醒自己,同时又在相机的使用中不断被验证的一句话。
因为工作了,有了自己的可支配收入,买一台全画幅的相机有了足够的预算。然而A7C2一发布就缺货,溢价不断,直到最近12月,价格才逐渐下降,回归到正常水平。在这几个月的纠结犹豫后,想买的心使用没有平复,终于下定决心把6300卖了买A7C2。
上周末,去线下实体店原价入手了银色的A7C2单机,为了搭配机子,在闲鱼淘了一个适马35F2镜头作为挂机镜头。还配了一个银色的底板,提升了握持手感,同时也和机身的颜色很搭。
新机子拿到手,手感确实和6300差不多,但是屏幕,电池续航,拍照防抖,AI对焦,菜单这些都提升巨大,尤其是拍照防抖,轻松用0.xs的快门在晚上拍照不会糊片,这个真的太爽了,之前完全不敢想。同时新的菜单比索尼之前的祖传菜单真是好用太多。
同时更高的像素加上全幅,拍出的成片也是能明显感到差别,真的是爱不释手的感觉。另外新的创意外观也是比较好用,有的时候不想修图调色就直接开创意外观直出就可以了。看网上还可以导入自定义lut,暂时还没有尝试,什么时候尝试一下。
最后放几张用新相机拍的照片,传递一下拥有新相机的快乐,嘿嘿😁:
首先是布局改造,整体变动不大,一个是把次卫门口处的洗手池位置改进了厨房,用来放冰箱,不然冰箱没有合适的位置来放。另一个是把原来主卧的门封了起来,把书房和主卧打通,做成了套房的形式。这样减少了客厅开间里门的数量,让电视背景墙更大,整体性更好。同时也把客厅与阳台设计成了一个整体,显得空间更大。
在拆改的过程中,把家里的所有门洞的抬高到了梁,正常门只有约2m高,抬高后的门大概约2.3m高左右。从现在装修完来看,效果相当不错,因为门洞拉高之后,门显得细长一些,有拉伸层高的观感,显得家里层高更高一下。同时也不会像有的人家里加的门楣板那种,尤其是开门之后,看起来整体性并不好。
水电改造相比原来的毛坯加了非常多的点位,主要注意的是厨房的厨下用来安装厨下净水器,洗碗机,以及吸烟烟机,冰箱插座的位置需要在设计阶段安排好,避免后续冲突。阳台的家政柜中和水池下柜分别预留了充电插座,以及洗衣机,烘干机,扫地机器人的供电插座点位。在两个卫生间门口留了装小夜灯的插座/86盒位置,卫生间内预留只能马桶以及智能镜柜的供电插座或者供电线。在各个房间的窗户顶位置预留了电动窗帘的点位。剩下的地方基本上能想到后续可能使用到的顺手的地方都留的插座,比如沙发,电视柜(尽可能多,大部分人家中这里的小电器都很集中),房间角落(用来接电风扇之类的)。除了这些需要特别注意的地方,其他都是按照设计师给的点位去做的。
最后完工安装插座总共装了60多个,从目前入住的使用感受来看,点位留的很充足,用起来很顺手。
对了还有记得给开关留零线,这样如果想做智能家居时,只需要换个开关就行,而且不挑。
新家的网络布局是完全我一手规划的,在每个房间都有留网线,在客厅和书房有做了特别的规划和加强。设计的思路主要是全屋2.5G网口接入,客厅与书房两台路由器做有线mesh组网。客厅电视柜位置有预留三个网口,一个网络做单独的IPTV接入网口,另外两个网口做主路由(可选)的来程和去程。然后进入交换机中再连接到各个房间中。书房设计了三个网口,一个用来接电脑,一个用来接mesh路由和NAS,还有一个备用。两个路由组网,WiFi覆盖家中的面积还是非常OK的,基本没有死角。同时两个卧室如果需要接网线也有网口可以接,在需要提升网络稳定性可以连接。
卫生间的设计次卫比较简单,就是马桶,花洒,以及为了解决原次卧门口洗手池位置被移走,放在卫生间中的一个超小洗手池。主卧花的心思比较多,做了下沉式的淋浴间和玻璃隔断,而不是传统的淋浴房。同时为了解决平时不想洗衣服的困扰,还在马桶上方设计了一个壁挂洗烘洗衣机,用来洗平时的贴身衣物。两个卫生间都是用的60*120cm的大砖上墙,最后小效果非常简洁,美缝完之后,一体性非常好。唯一的缺点可能就是贴砖的工费比较贵了。
管线机真的是解决喝水难题的重要发明,要多少温度的水,点一下就可以立刻出来。以前尤其是夏天的时候,烧开水然后再等着喝水实在是太痛苦了。管线机如果想效果好的话最好再水电阶段就做好预埋,我装修的时候就是因为没有考虑好,导致现在管线机的电源线拖在外面。最好的预埋方式就是从厨房橱柜预埋PE净水管到餐边柜,然后餐边柜中预留一个插座,然后预埋50管到安装位置,这样电源线以及净水管都可以隐藏起来。
净水器的话一定要选择支持零陈水的,不然使用管线机这种场景,喝的都是高TDS值的陈水。
书房做的比较简单,主要是作为书房和活动室来布置的,硬装上只做了一组书柜,剩下就都没做了。我在书房放了一个2m*0.8m的电动升降书桌。书桌旁边布置了一个矮柜,用来放我的NAS以及其他的小的东西。
因为户型改动的原因,导致书房和厨房如果安装传统的门打开后都会干涉正常的行走动线,最后在设计师的推荐下选择了外挂吊柜门,安装后左右推拉不占用空间,看起来也不丑,黑色也算是家中色彩的一抹点缀。
全屋定制需要细心的对设计图纸,有没有哪里和家中的其他设计有冲突或者干涉,如果不仔细对图纸非常容易踩坑。另外全屋定制也是价格相对不透明的一个品类 ,不同的板材,加工工艺差价很大。如果追求质感强烈建议用烤漆工艺,但是真的贵。不过最最重要的是最后的落地安装,如果选择用全屋定制,一定要去工地看看落地细节,不然设计的再好,最后安装一塌糊涂都白搭,很多安装工人的技术以及对细节的重视和追求都非常差劲。
扫地机器人的选择上现在竞争很激烈和透明,反而没有太多要注意的。只需要事先规划好放扫地机器人的位置,留好电源和上下水,尤其是上下水,这点很重要,有上下水扫地机器人基本就不太用去维护,只需要过一段时间换下尘袋,清理下基站就可以了。另外家中的家具尽量选择机器人可以进的高度,这样家中就基本不会有卫生死角。
电动窗帘一个注意的就是要在水电改造时预留插座,另一个则是做窗帘盒要做宽一些,不然安装后两个窗帘可能会蹭到一起。另外一个点,就是电动窗帘买的时候不要从旗舰店买,会贵很多,拼多多的店铺包安装的价格会便宜很多。我买的杜亚的电动窗帘就是这种情况,拼多多能便宜三分之一到一半。
如果是壁挂空调,有条件的话可以提前规划一下做管路背出,这样安装出来会显得很简洁好看。
最后
再放些装修完的一些照片:
最近因为这个斜挎包用着不是特别合用,就萌生了换一个新的斜挎包的想法,心中理想的包型是内部分隔合理,体积不是很大,背在身上看起来要相对贴合。这样基本能满足我日常通勤的需要,能够包正常需要随身携带的东西收纳清楚同时方便取拿,不浪费空间。同时最好在需要的时候能够放下我的相机。确定了这个目标,心理大概有个筛选条件了,经过一番搜索比较,发现满足我需求的包大概都落在长度在30cm左右,容量在5-10L这样。在淘宝,京东,拼多多一番搜索之后,将目光放在了这几个之中:
[1] 马可·莱登单肩包
这个包体积和我之前的斜挎包差不多,但是内部的隔层看起来要合理很多,但是缺少前拉链,拿东西都需要翻开上盖才行。整体的设计看起来感觉还可以。价格淘宝上约150RMB。
[2] 光影行星星云斜挎包
这款包的设计和之前的包有很多相似之处,甚至前袋都是一样的倾斜设计,倾斜设计一点不好用。然后体积和容积也是基本差不多,基本被我PASS了。这款的价格正版价格大概200+,仿版约80RMB左右。
[3] tomtoc 斜挎包
这款包体积和容积相较之前的也差不多,这个包的外形设计更加简洁,同时前袋设计整齐,内衬的设计看起来也划分也算是比较合理,是我心中的备选之一。这款的价格RMB200+接近300。
[4] Bellroy Lite Sling
这款包的体积和容积稍小,同时包很轻薄。这个的前袋设计也是整齐的,取拿东西应该也比较方便。因为包的设计是轻薄类型,内衬的质感就差了些,不过分隔看起来还是比较科学的。这款的设计也算是比较喜欢,这款国内仿版拼多多50RMB左右,正版则是要700+RMB,实在消费不起。
Bellroy这个品牌还有其他的几个型号,设计和质感从评论中看起来我也中意,不过价格来到1000+,而且国内并没有仿版,只得放弃,暂时消费水平还没有到在一个包上花费上千元。
目前还在[3]和[4]中纠结,准备是先买一个Bellroy Lite Sling试试看,毕竟便宜,如果感觉不喜欢,就在双11买一个tomtoc 的斜挎包。
新包到手
拼多多仿品Bellroy Lite Sling到手,银色的布料观感还可以,还带点反光质感。布料比较薄但是强度还不错。主袋拉链比较顺滑,副带拉链比较涩。包整体很轻。算是能完美符合我通勤时使用的小包,但是有时出门时想塞个相机就装不下了。能够完美符合我通勤+外出拍照随身携带相机的小包据需寻找中。
verible 项目托管于github,项目地址:https://github.com/chipsalliance/verible
verible可以自行编译安装,也可以下载已经编译好的可执行文件。下载路径见github release。下载完成后,将下载到的压缩包解压,在文件夹的子目录verible-bin/中就可以找到 verible-verilog-format 了。
使用命令调用:
verible-verilog-format -- [options] filename.v
举例:以原位替换的方式,按照默认规则进行verilog代码格式化, inplace及为原位替换选项。
verible-verilog-format --inplace testbench.v
其他可用配置参数可以参考,以为为部分选项的,全部选项见:https://chipsalliance.github.io/verible/verilog_format.html:
--column_limit
(Target line length limit to stay under when formatting.);default: 100;
行代码长度限制,默认最长100个字符。 使用示例: --column_limit=200 设置最长字符数为200个
--indentation_spaces
(Each indentation level adds this many spaces.);default: 2;
代码层级缩进深度,默认为2字符 使用示例:--indentation_spaces=4 设置代码层级缩进为4字符
--assignment_statement_alignment
(Format various assignments:{align,flush-left,preserve,infer}); default: infer;
赋值语句对齐方式:{对齐、左对齐、保留、推断} 默认值:推断;
--case_items_alignment
(Format case items:{align,flush-left,preserve,infer}); default: infer;
case语句格式化对齐方式:{对齐、左对齐、保留、推断} 默认值:推断;
--class_member_variable_alignment
(Format class member variables:{align,flush-left,preserve,infer}); default: infer;
类成员变量格式化对齐方式:{对齐、左对齐、保留、推断} 默认值:推断;
--compact_indexing_and_selections
(Use compact binary expressions inside indexing / bit selection operators); default: true;
使用紧凑的二进制表达式索引/位选择运算符; 默认值:true;
--distribution_items_alignment
(Aligh distribution items: {align,flush-left,preserve,infer}); default: infer;
distribution对齐方式:{对齐、左对齐、保留、推断}); 默认值:推断;
--enum_assignment_statement_alignment
(Format assignments with enums: {align,flush-left,preserve,infer}); default: infer;
枚举对齐方式:{对齐、左对齐、保留、推断}); 默认值:推断;
--expand_coverpoints
(If true, always expand coverpoints.); default: false;
--formal_parameters_alignment
(Format formal parameters: {align,flush-left,preserve,infer}); default: infer;
格式形参对齐方式:{对齐、左对齐、保留、推断} 默认值:推断;
--formal_parameters_indentation
(Indent formal parameters: {indent,wrap});default: wrap;
形参缩进方式{indent,wrap};默认:换行;
--module_net_variable_alignment
(Format net/variable declarations: {align,flush-left,preserve,infer}); default: infer;
wire声明对齐方式:{align,flush-left,preserve,infer}); 默认值:推断;
--named_parameter_alignment
(Format named actual parameters: {align,flush-left,preserve,infer}); default: infer;
命名参数对齐方式:{对齐、左对齐、保留、推断} 默认值:推断;
--named_parameter_indentation
(Indent named parameter assignments:{indent,wrap}); default: wrap;
命名参数缩进方式:{缩进,换行}); 默认:换行;
--named_port_alignment
(Format named port connections:{align,flush-left,preserve,infer}); default: infer;
端口名称对齐方式:{对齐、左对齐、保留、推断}); 默认值:推断;
--named_port_indentation
(Indent named port connections: {indent,wrap});default: wrap;
端口名称缩进方式:{缩进,换行}); 默认:换行;
--port_declarations_alignment
(Format port declarations:{align,flush-left,preserve,infer}); default: infer;
端口声明格式:{对齐、左对齐、保留、推断} 默认值:推断;
--port_declarations_indentation
(Indent port declarations: {indent,wrap});default: wrap;
端口声明缩进方式:{缩进,换行}); 默认:换行;
--port_declarations_right_align_packed_dimensions
(If true, packed dimensions in contexts with enabled alignment are aligned to the right.); default: false;
对齐的上下文中的尺寸将向右对齐。默认值:false;
--port_declarations_right_align_unpacked_dimensions
(If true, unpacked dimensions in contexts with enabled alignment are aligned to the right.); default: false;
--struct_union_members_alignment
(Format struct/union members: {align,flush-left,preserve,infer}); default: infer;
结构体,联合成员变量对齐方式: 默认:推断
--try_wrap_long_lines (If true, let the formatter attempt to optimize line
wrapping decisions where wrapping is needed, else leave them unformatted.
This is a short-term measure to reduce risk-of-harm.); default: false;
--wrap_end_else_clauses
(Split end and else keywords into separate lines); default: false;
将 end 和 else 关键字分成单独的行;默认值:false;
--inplace (If true, overwrite the input file on successful conditions.);default: false;
原位替换为格式化后结果,默认:false
为了方便使用,使用python写了一个基于filelist.f进行批量处理的脚本, 可以根据filelist进行代码批量格式化,有需要的可以自取:
https://github.com/wherelse/verilog-formatter
]]>https://circuitcove.com/tools-verible/
https://chipsalliance.github.io/verible/verilog_format.html
组电脑主机的想法由来已久,从大学到读研,一直种种原因没有组,而用了数年的笔记本也是廉颇老矣,打开个网页,风扇就开始呼呼的转了起来。5月份,终于下定决心,趁着618活动,组一台主机。兜兜转转,中间不断的考虑,逛购物软件,看视频,最终决定配一台白色风格的主机。最后配置如下,全是白色风格或者接近白色。自己组电脑的想法从大学到工作,总算落地了。
项目 | 型号 |
---|---|
机箱 | 乔思伯D40白 |
主板 | 华硕B760M-A 小吹雪 D5 |
CPU | I5 13600K盒装 |
内存 | 宏碁DDR5 16Gx2 6600 |
硬盘 | 西数SN850X PCIE4.0 1T + 致钛Tiplus5000 1T |
显卡 | 微星RTX4070TI白龙 |
散热 | 九州风神冰立方620白 |
风扇 | 利民C12CW/C12RW ARGB |
电源 | 先马XF1000W白色 |
在京东购买了除了显卡以外的基本所有配件,显卡因为京东没货,在天猫的旗舰店购买。在6月3日配件全部到齐,周末断断续续装了两个晚上,才装完。下面是配件和最后的成品效果。
虽然白色的配件都相对贵一些,但是最后成品的效果还是相当nice的,十分满意~
最后再看一下新电脑的性能提升,之前的笔记本是i7-6700HQ的CPU,GTX965M的显卡,CPU R23跑分约4193分,GTX965M 3DMARK Time Spy跑分约1952分,i5-13600K R23跑分约24320分, 4070ti 3DMARK Time Spy跑分根据天梯图,约22655分。CPU性能提升约500%,显卡提升约1000%。可以说是飞跃式提升。相当满足我现在的需求,之前玩不了的游戏现在也可以下下来体验体验了。
不过最后,算算花的钱还是相当肉痛的,但是想想可以快乐好几年,就又很开心。不过最快乐的还是下单的时候😂
]]>关于配一个自己的台式机。从大三左右,发现自己的笔记本电脑性能不行时,就萌生了想配台式机的想法,但是迫于当时没钱,也不想找爸妈要钱,就想着再等等,等着等着,就碰到了第一次矿潮,显卡价格飞起。本来就没什么预算,于是又开始了等等。紧接着大学毕业,开始读研。研一开始,又动了组电脑的想法,但是等等党又一次等等了,这一等,好了,和疫情一起的第二波矿潮又来了,随之而来的又是到现在都没降下来的显卡价格。最近又动起了组电脑的想法,因为现在的笔记本已经用了快8年了,但是仔细一想,发现,自己现在连电脑都不太想开了,之前的时间过去了,当时没有满足的反而觉得缺了什么。延迟满足,延迟着延迟着,给延迟没了,反而只有错过当时美好时光的难受。
经常,我会动一个念头,就是抽一个周末出去转转,但是往往要么有些其他事情,要么真到了那天,又想着后面再说吧,反而到最后,过了很久也没出去,而且周末也荒废掉了,并没有做多少有意义的事情。
很多事情,错过了时间,就再也没当时的心境与热情,后面尽量做到不要等等,不要延时满足,因为永远不能做到真正的延时满足。欲买桂花同载酒,终不似,少年游.
]]>自从本科毕业,最近今年都没怎么碰STM32,最近刚好有机会又要用STM32开发点东西,下了CubeIDE尝试使用,来体验一下STM32 All in one开发,自动生成的快乐。
首先,图形化的功能配置界面真的很讨喜,根据选择的功能和外设,自动分配重映射管脚,可以说是能够极大的提高项目初期的效率,避免因为管脚分配错误导致的硬件设计问题。也不用翻阅手册,一个一个去对各个管脚的重映射功能,直接就给分配好了。
然后是CubeIDE是基于HAL库做开发的,之前我一直用的标准库,配合正点原子的一些二次开发库函数,实现一些功能非常的迅速,这次也来浅尝一下HAL库.
首先是尝试了一下使用CubeIDE配置USB虚拟串口,只需要在配置界面将USB还有USB device相关的配置点一点,就可以生成一个包含虚拟串口功能的配置,并生成相应的代码模板,包含所使用的外设初始化,系统的时钟初始化等,可以自己根据需要再进行进一步的修改和配置。
生成的代码模板会给出哪里可以添加代码,在其中添加的代码在后续的配置修改时,不会被覆盖。如果在非指定位置意外的地方更改了代码,在重新构建代码模板时就会被覆盖。
通过CubeIDE,定时器,串口,IIC等外设也都可以很容易的进行图形化的配置,中断优先级,DMA的配置和使用和相当简化。各个中断都提供有可用户重定义的回调函数,功能性完全没有问题,使用起来相当方便。后续再有相关的开发内容,应该会选择CubeIDE作为开发环境来使用。
不过也有些缺点,最主要的是调试功能不强,和Keil的调试功能来比简直小巫见大巫,这点确实是个弱项。
]]>之前在学校一直在用群晖,想着毕业之后买一个新款的群晖,但是今年年底群晖总算发布了新款的DS923+,一看配置一点不香,没有2.5G网口,核显还没了,顿时没了兴趣,后面开始查资料,准备自组NAS。经过比较和选择,最终准备组一个UNRIAD系统的NAS。然后开始选定配置,最终列了个配置单,开始开组。
项目 | 型号 | 数量 |
---|---|---|
机箱 | 御夫座6盘位 | 1 |
主板 | 微星B660M迫击炮 | 1 |
CPU | i3 12100散片 | 1 |
内存 | DDR4 8G | 2 |
硬盘 | 西数HC550 | 2 |
固态 | 16g 傲腾 | 1 |
风扇 | XG-N92W x 4 | 1 |
散热 | 利民apx-90-x47 | 1 |
电源 | 酷冷GX450 | 1 |
最终不含硬盘总价大约3000元出头,比群晖还是便宜了非常多的,配置也高了很多😂不过群晖是开箱即用,自组是一路踩坑。
Unraid的系统是必须要安装到U盘中的,然后将主板调整为U盘启动,但是有的主板默认是开了快速启动的,有很大概率会忽略U盘中的启动项,我就踩了这个坑,来来回回折腾了很久,总是启动失败,最后才发现是主板设置的原因,改完之后,启动十分稳定。
/root
下新建.wgetrc
文件
填入内容
use_proxy=yes
http_proxy=http://server:port
https_proxy=http://server:port
wait=10
但是root目录重启会被清空,需要将以下配置添加到/boot/config/go
文件中:
echo "use_proxy=yes" >> /root/.wgetrc
echo "http_proxy=http://server:port" >> /root/.wgetrc
echo "https_proxy=http://server:port" >> /root/.wgetrc
echo "wait=10" >> /root/.wgetrc
至于代理的配置可以参考这一篇文章:https://fugary.com/?p=363 配置过程类似
开源的照片管理方案有很多,但是或多或少有一些硬伤,最方便使用的还是各个手机自带的云服务和群晖的相册服务,所以在Unraid中部署一个黑群晖用于备份照片。不过没想到安装黑群晖的过程也踩了坑,从DSM7之后,黑群晖的引导逐渐傻瓜化,基本不用特别修改,就可以直接使用,但是我下的引导是适用于实体机的,需要修改才能在虚拟机中使用,否则就会找不到硬盘。最后查了好久,参考这篇文章才解决:UNRAID 6.11 安装完美黑群晖 DSM7.X(虚拟化核显、Nvme 补丁等) 然后就一路顺畅,正常跑了起来黑群晖。
不过还是遗留了一个坑,就是黑裙只能通过UI界面进行关机,不能直接通过虚拟机外部控制关机。
目前安装了的一些服务:
使用刚刚开始,未完待续....
update 1:
jellyfin 配合 PT站,看剧真香,家里所有设备都可以连到jellyfin
update 2:
家里意外停电了一次,后面果断买了一个UPS,山特的850, unraid 使用NUT插件可以自动识别控制。在买后开始使用不久,家里就又出现了一次电力闪断,大概1s不到就又恢复了,不是UPS报警,我估计都意识不到。多来几次意外断电,非常容易坏硬盘。
**update 3: ** (2023/10/04)
之前的各种配置方法,虽然能够正常访问商店,下载docker等,但是docker的图标不能够自动下载导致加载失败,打开页面时docker加载很慢。最后为了彻底解决unraid的网络问题,我选择在unraid中使用虚拟机安装openwrt,然后在openwrt配置小猫服务,最后关闭虚拟机openwrt的DHCP,将unraid的网络网关指向虚拟机的IP,这样unraid的所有IPV4网络流量都会通过虚拟机中的openwrt进行转发和分流,完美解决unraid使用过程中的网络问题。
]]>