HiKariのTechLab

光の技术屋


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

  • 站点地图

  • 搜索

【DIY小记】解决技嘉Z390 AORUS PRO不识别SSD/机械硬盘的问题

发表于 2019-10-29 | 更新于 2024-04-07 | 分类于 DIY小记

笔者近期用技嘉(GIGABYTE)Z390装机时遇到了装上一个SSD跟一个机械硬盘后,机械硬盘无法被主板/操作系统识别的问题,经过一番研究后发现了解决方案,特地分享:

首先本经验理论上应当适用于不同厂家的Z390主板上(比如华硕之类)

SSD或机械硬盘无法识别可能是主板芯片共享频宽的问题。以技嘉为例,我们首先需要知道SSD或机械硬盘插在了哪里,以及硬盘有哪些接口。在技嘉Z390上,有以下的硬盘接口:

  • M.2(M2A/M2M)
  • SATA

在说明书中应当会有这些插口所插到的位置图示。

如果不了解硬盘原来插到了哪个接口,可以开机进入BIOS,BIOS中也会显示这些接口插了哪些硬盘。如果插过的硬盘没显示,那就是没识别到了。

接下来也得翻说明书找硬盘接口相关的内容,以技嘉Z390为例,在说明书的插座及跳线介绍——M.2及SATA插座安装注意事项中,会有表格及文字显示M.2的哪个接口安装了哪种SSD,会与哪个SATA接口共享频宽,从而不兼容。借助这个表格找到兼容的接口,把原先插在SATA的硬盘换一个兼容号码的插座,就好了。技嘉的话,SATA插到3、4号(中间两个),是没问题的。

【Lua杂谈】服务端架构skynet简易入门项目——create-skynet

发表于 2019-10-26 | 更新于 2024-07-20 | 分类于 Lua杂谈

前言

在skynet通信原理与源码分析一文中,我们已经详尽地弄清楚了skynet地通信架构,为我们上手skynet提供了极大的帮助。因此本篇文章接续上文,正式上手使用skynet。

skynet入门项目:create-skynet

要做一个基于skynet的项目,首先需要一个好的模板。skynet的最佳实践并非将服务卸载skynet模块中,而是将skynet当作一个单独的库/SDK看待,自己独立在另外的目录写业务逻辑。因此,笔者在数月前简单地整合了一下skynet的boilerplate项目——create-skynet,采用这个项目搭建skynet服务端结构会较为清晰。

服务&库的约定

在create-skynet的配置中,每个服务的lua文件入口以config中luaservice项为准:

  • service/服务名.lua
  • service/服务名/main.lua
  • skynet/service/服务名.lua(默认的服务)

skynet启动时会根据服务名注册相应服务,因此自己在service下定义的服务名最好不要与skynet原有服务重名。

skynet在为每一个服务读取lua库的时候,会根据运行skynet脚本的工作目录以及config里的设置去读取,这是由config的lua_path与lua_cpath为准的。在create-skynet里,lualib的位置有:

阅读全文 »

【极客日常】electron+react+antd深色主题打造桌面应用

发表于 2019-10-20 | 更新于 2025-04-12 | 分类于 极客日常

桌面应用的实现方式有很多,但谈到多操作系统平台兼容的话,就不得不提到electron。electron是前端开发的利好,做过web前端的同学只要稍微迁移下自己的项目,就能够将原本的web前端变成桌面应用。

因此,本文以react为例,以antd为UI库支持,讲解基于react的electron应用该如何搭建。

首先,electron-react-boilerplate项目,就帮助我们初始化了基于react的electron应用。electron-react-boilerplate内置了flow静态类型检查机制、基于webpack的electron应用打包支持以及with redux的前端架构。故在此基础上再引入其它的lib,也不会过于困难。本文采用的electron-react-boilerplate版本为0.17.1。

通过yarn add antd,就可以安装上antd库。要在内置的例子里以antd为layout的话,首先需要在app文件夹下新建app.global.less文件,填充内容:@import '../node_modules/antd/dist/antd.less';,然后我们可以再观察到,app/containers/Root.js是redux store的抽象层,wrap了路由;路由所在的文件为app/Route.js,是以<App>标签为根的路由集合;<App>主界面所在的文件为app/containers/App.js,我们通过更改其中的内容,就可以变换主界面的样式了。我们就以antd的layout为例,写一个App主界面:

阅读全文 »

【Lua杂谈】基于lua的服务端架构——skynet通信原理与源码分析

发表于 2019-10-20 | 更新于 2024-07-20 | 分类于 Lua杂谈

前言

提起中国的lua产品,就不得不想到skynet,一款针对游戏,但又不仅限于游戏的服务端架构。skynet充分利用了lua的特性,并且在此基础上易扩展HTTP、HTTPS、WebSocket等模块,因此由skynet入手理解lua原理以及服务端架构是一个非常不错的选择。

通过skynet,我们可以构建许多小巧而高性能、高可用的应用。废话不多说,让我们一起来探索skynet架构吧~

skynet通信原理与源码分析

服务端架构中,不同子服务的通信调度是核心功能。因此,我们以单点(standalone)的skynet实例为例,由外而内,逐步剖析。

要介绍skynet的通信原理,首先要提到lua中的一个概念——lua_State。lua_State是lua的运行时(runtime),是一个原生隔离的、高性能的运行环境,若在多核并行运行lua_State,其性能一定不会差。lua作为嵌入式语言,以C为基础,可以实现操作系统粒度级的lua_State调度,因此skynet也就如同lua_State管理器一样了。

每一种业务可以看作一个service,而每一个service中,都会有一个lua_State充当执行业务逻辑的环境。举个例子,在实际开发当中,比如做一个HTTP服务的话,我们需要自己预先配置好的skynet service主入口lua文件中,写上skynet.uniqueservice("app")启动一个独特的名为app的服务,而后在其中的逻辑中,根据每一个HTTP连接,解析其中的数据包。并调用skynet.newservice动态创建单独的上下文服务ctx来处理这个请求。ctx服务还有可能需要查询数据库中的数据,并返回结果,因此我们可能还需要通过skynet.uniqueservice("db")预先创建数据库服务db二次封装skynet内置mongo、mysql库的功能,然后再通过skynet.call来与db服务通信,获得db服务某个函数执行的返回结果,再在ctx服务的处理逻辑中写入HTTP Response,从而完成整个处理过程。在这一过程中,具体业务逻辑的处理都会在各个service所拥有的lua_State中运行,但调度通信的逻辑,则就是底层的活了。

因此在skynet底层中,不仅需要支持多个lua_State的运转,而且相对更有挑战性的是,如何让service之间能够相互交流。为了解决这个问题,我们可以看到,在底层中,每一个service都属于snlua类型。snlua除了包括自己的lua_State之外,还维护了一个称之为context的运行状态:

阅读全文 »

【Easy Python】另类实用Python教程——Easy Python精编版上线

发表于 2019-10-08 | 更新于 2024-04-07 | 分类于 Easy Python

最近小包装了一下Easy Python系列,放到语雀上整合精编了个pdf投放,完成Easy Python系列的最后一项任务。

第一次编撰一个短篇技术系列,小有成就,值得鼓励。但路还有很远,慢慢来吧~

传送门如下:

  • 百度网盘

【极客日常】hexo+NexT博客自定义代码高亮主题配色CSS

发表于 2019-10-07 | 更新于 2024-04-07 | 分类于 极客日常

用hexo+NexT搭建博客的同学或许会遇到一个问题:默认的代码配色只有Tomorrow Theme五种,如果想要自己的代码配色,应当如何自定义呢?

其实也是可以的。在NexT的source/css/highlight/theme.styl中,我们就可以看到几种主题的具体配色:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
$highlight_theme = hexo-config("highlight_theme")

if $highlight_theme == "normal"
$highlight-background = #f7f7f7
$highlight-current-line = #efefef
$highlight-selection = #d6d6d6
$highlight-foreground = #4d4d4c
$highlight-comment = #8e908c
$highlight-red = #c82829
$highlight-orange = #f5871f
$highlight-yellow = #eab700
$highlight-green = #718c00
$highlight-aqua = #3e999f
$highlight-blue = #4271ae
$highlight-purple = #8959a8
$highlight-gutter = {
color: #869194,
bg-color: #eff2f3
}

if $highlight_theme == "night"
$highlight-background = #1d1f21
$highlight-current-line = #282a2e
$highlight-selection = #373b41
$highlight-foreground = #c5c8c6
$highlight-comment = #969896
$highlight-red = #cc6666
$highlight-orange = #de935f
$highlight-yellow = #f0c674
$highlight-green = #b5bd68
$highlight-aqua = #8abeb7
$highlight-blue = #81a2be
$highlight-purple = #b294bb
$highlight-gutter = {
color: lighten($highlight-background, 50%),
bg-color: darken($highlight-background, 100%)
}

...

我们可以看到其实如果要增加一个自定义主题的话,其实加一段if跟其配色,然后在配置里配置theme的关键词就好了。那么自己配色的话应该怎样参考呢?我们可以在source/css/highlight/highlight.styl中找到答案:

阅读全文 »

【极客日常】解决国内go1.13的go mod无法安装依赖的问题

发表于 2019-10-07 | 更新于 2024-04-07 | 分类于 极客日常

在从零单排Golang第一话中讲到了Golang的基础开发环境配置,其中讲到了Go的依赖管理方面,提及了以后的趋势会采用官方的go mod进行管理。关于这一块,现在有了更加简单的方法。

最新的Go1.13中已经将go mod列为默认的包管理方法,但国内用户go mod vendor时还是有可能会出错,这是因为在go get时会检查哈希值,需要访问官方的sumdb。由于众所周知的不可抗因素,sumdb没法直接访问,这样就会造成下载依赖失败。解决的方法也很简单,只需要一行终端命令即可:

1
go env -w GOPROXY=https://goproxy.cn,direct

如果采用idea+Go插件开发的话需要注意,idea可能会托管环境变量,这个时候需要进入settings, languages & frameworks, go, go modules里,设置proxy为https://goproxy.cn,direct,就ok了。

【从零单排Golang】第四话:Win10安装minikube,用client-go部署mongodb

发表于 2019-10-03 | 更新于 2024-04-07 | 分类于 从零单排Golang

前言

Github传送门

提起Golang,就不得不提起kubernetes,在崇尚上云的今天,kubernetes已成为服务端同学必需掌握之学问。在第三话中,我们介绍了docker容器,它相当于虚拟操作系统,可以提供环境供各种不同的应用运行,从而实现轻量部署。但要是业务复杂,需要部署较多应用的话,就会遇到许多运维相关的问题,比如:

  • 应用关联的资源很多都需要持久化存储,它们的存储空间需要怎样分配及调度呢?
  • 不同地域的应用,如何取得相互联系?
  • 在应用集群中,如果有一个子应用挂了,该怎么办?
  • 。。。

这些问题,单靠docker是解决不了的(也不是docker所要关心的),需要在docker的基础上做更高层次的运维平台才能解决,而kubernetes,就是方案之一。复杂的调度逻辑,都会由kubernetes负责,而运维开发人员则基本只需向kubernetes提供资源及其描述,就能满足运维需求,从而提升工作效率。

既然准备入坑,就需要强行踩下去,因此今天就试试“家中上云”,单机搭建kubernetes,部署一个mongodb数据库。废话不多说,咱们开始吧~

minikube——在Win10本地搭建kubernetes

阅读全文 »

【DIY小记】CSGO究极装机优化设置指南

发表于 2019-09-21 | 更新于 2025-07-12 | 分类于 DIY小记

前言

上周电脑突发极其奇怪的bug,启动了不到一会儿CPU阻塞,所有程序打不开,安全模式查毒、修复系统、清存储卸软件均没有获得较好的效果。因此索性重装了Windows,所有一切推倒重来。

既然推倒重来,那CSGO就是不得不装的一款游戏。CSGO到现在也有10年的历史了,然而在网上能搜到的游戏优化设置要么过时,要么没有详尽的整合。因此,本文章借着装机经验,整理了自己优化CSGO的历程~

由于笔者为Win10+N卡,因此在Linux/Mac以及非N卡下玩CSGO的同学,部分配置还需另行google~

Win10游戏设置

运行在Win10的游戏需要关闭Win10自带的游戏优化与配置

首先关闭XBox自带的DVR(游戏内录像之类),有很多种方法,这里通过注册表方式解决:

阅读全文 »

【Lua杂谈】lua专用rpc协议sproto——基础介绍&用于协议测试的二次开发

发表于 2019-09-12 | 更新于 2024-04-07 | 分类于 Lua杂谈

前言

rpc(远程过程调用),是不同主机间的交互的机制之一。好比说,我们想要获取服务器的某个资源,我们就可以发送一条讯息给服务器,然后服务器解析信息,再返回推送资源的信息,这样,便实现了我们客户端跟服务器的相互的“远程调用”。

为了让不同主机之间能够相互理解发送的讯息,我们需要约定统一的信息格式标准,使得不同的主机可以发送基于这个信息格式的讯息,也可以解析这个格式。这种标准,我们称之为协议(protocol)。

Lua中协议选择有许多种,protobuf、json均可。但是今天,就稍微介绍一下云风同志当年为lua量身设计的sproto协议以及其用于协议测试的二次开发。So, let the party begin~

sproto协议描述

sproto是专用于lua的协议框架,相对于protobuf跟json,sproto在数据的序列化/反序列化效率上有极大的优势。rpc中为了快速效率地传送协议数据,会将数据组装压缩发送,接收端再解压拆解数据识别消息,从而减小了网络传输的开销。这个数据处理过程便可称之为序列化/反序列化。

sproto的设计类似于protobuf,基本类型为string、binary、integer以及boolean四种。对于array序列的支持,则加上引用星号*即可;对于非整数的支持方面,用户可以parse string来处理实数,或者指定integer的小数位数来处理小数(decimal)。除此之外,用户也可以像编程里面strcut那样自定义类型,类型与类型之间也可以嵌套。

我们可以从readme中寻找各种例子。数据类型的例子如下:

阅读全文 »
1…161718…20
ひかり.HDQ

ひかり.HDQ

talk is cheap, code is rich
195 日志
14 分类
417 标签
GitHub Mail CSDN Juejin Steam Bilibili
© 2019 – 2025 ひかり.HDQ
|