nginx location, root

nginx location, root location 语法 Location 块通过指定模式来与客户端请求的URI相匹配。 Location 基本语法: 匹配 URI 类型,有四种参数可选,当然也可以不带参数。 命名 location,用@来标识,类似于定义goto语句块。 location [ = | ~ | * | ^ ] /URI { … } location @/name/ { … } location 匹配命令解释 空 location 后没有参数直接跟标准 URI, 表示前缀匹配,代表跟请求中的 URI 从头开始匹配。 = 用于标准 URI 前,要求请求字符串与其精准匹配,成功则立即处理,nginx 停止搜索其他匹配。 ^~ 用于标准 URI 前,并要求一旦匹配到就会立即处理,不再去匹配其他的正则 URI,一般用来匹配目录 ~ 用于正则 URI 前,表示 URI 包含正则表达式,区分大小写 ~* 用于正则 URI 前, 表示 URI 包含正则表达式,不区分大小写 @ @ 定义一个命名的 location,@ 定义的locaiton名字一般用在内部定向,例如error_page, try_files命令中。它的功能类似于编程中的goto。 location 匹配顺序 nginx 有两层指令来匹配请求 URI。第一个层次是 server 指令,它通过域名、ip 和端口来做第一层级匹配,当找到匹配的 server 后就进入此 server 的 location 匹配。 ...

2019-04-29 · 3 min · 627 words · -

golang开发目录结构

golang 开发目录结构 https://github.com/golang-standards/project-layout 在实际的项目中发现大家的目录结构都比较凌乱,基本每个人都有每个人的风格,一个项目在不断地变大,一些新的文件或目录又不断地被添加进来,从这里面去找到自己需要的信息的成本越来越高,一个统一的通用的目录结构非常有必要。 以下内容来自于github上的这个项目 (https://github.com/golang-sta…) /cmd main函数文件 (比如 /cmd/myapp.go) 目录,这个目录下面,每个文件在编译之后都会生成一个可执行的文件。 不要把很多的代码放到这个目录下面,这里面的代码尽可能简单。 /internal 应用程序的封装的代码,某个应用私有的代码放到 /internal/myapp/ 目录下,多个应用通用的公共的代码,放到 /internal/common 之类的目录。 /pkg 一些通用的可以被其他项目所使用的代码,放到这个目录下面 /vendor 项目依赖的其他第三方库,使用 glide 工具来管理依赖 /api 协议文件,Swagger/thrift/protobuf 等 /web web服务所需要的静态文件 /configs 配置文件 /init 服务启停脚本 /scripts 其他一些脚本,编译、安装、测试、分析等等 /build 持续集成目录 云 (AMI), 容器 (Docker), 操作系统 (deb, rpm, pkg)等的包配置和脚本放到 /build/package/ 目录 /deployments 部署相关的配置文件和模板 /test 其他测试目录,功能测试,性能测试等 /docs 设计文档 /tools 常用的工具和脚本,可以引用 /internal 或者 /pkg 里面的库 /examples 应用程序或者公共库使用的一些例子 /assets 其他一些依赖的静态资源 https://www.jianshu.com/p/1c47d99f33ed

2019-04-28 · 1 min · 64 words · -

舱壁模式

舱壁模式 什么是舱壁模式 舱壁模式 (Bulkhead) 隔离了每个工作负载或服务的关键资源,如连接池、内存和CPU。 使用舱壁避免了单个工作负载 (或服务) 消耗掉所有资源,从而导致其他服务出现故障的场景。 这种模式主要是通过防止由一个服务引起的级联故障来增加系统的弹性。 工业中使用舱壁将船舶划分为几个部分,以便在船体破坏的情况下,可以将船舶各个部件密封起来。舱壁的概念在软件开发中可以被应用在隔离资源上。通过应用舱壁模式,我们可以保护有限的资源不被耗尽。例如,对于一个有连接数限制的数据库实例来说,如果我们有两种连接它的操作,我们采用可以采用两个连接池的方式进行连接,来代替仅采用一个共享连接池的方式。由于这种客户端与资源进行了隔离,超时或过度使用池的操作页不会使其他操作失败。泰坦尼克号沉没的主要原因之一是其舱壁设计失败,水可以通过上面的甲板倒在舱壁的顶部,导致整个船体淹没。 作者: AskHarries 链接: https://juejin.im/post/5b32d3e36fb9a00e952ce899 来源: 掘金 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

2019-04-28 · 1 min · 17 words · -

srt,ass,ssa 字幕

srt,ass,ssa 字幕 srt,ass,ssa三种字幕的区别 ass > ssa > srt 流行的字幕一共有三种就是 ass、ssa、srt。 srt 全称是 SubRip Text, 最常见的文本字幕,制作起来简单,时间代码+字幕。 ssa 全称是 S Station Alpha, 功能上比src更强大支持各种颜色、字体等特效。 ass 全称是 Advanced SubStation Alpha, 包含ssa所有的功能并在ssa原有功能的基础上还进行了扩展。 视觉角度上讲ssa和ass视觉效果更好一些。 扩展: 字幕常见的标识 chs、cht、GB、Big5、eng。 chs是Chinese Simplified的缩写,表示简体中文。 cht是Chinese Traditional的缩写,表示繁体中文。 GB既"国标"的汉语拼音的缩写,中华人民共和国国家标准的意思,简体中文。 Big5是在台湾和香港等地广为使用的计算机汉字编码方案,繁体中文。 eng是English的简写,也就是说表示英文。 https://blog.csdn.net/wuhao91/article/details/50454051

2019-04-27 · 1 min · 39 words · -

outlook 导出邮件, 备份, archive, import, export

outlook 导出邮件, 备份, archive, import, export 菜单: File > Options > Advanced > Export > Export to a file > 选择 Outlook Data File (.pst) > Next 展开树状列表,选择要备份的目录, 勾选 “include subfolders” 点击 Next 选择存放导出的 pst 文件的目标目录 (Save exported file as:) 点击 Finish 不设置 密码 点击 确定 等进度条走完 ( 备份文件比较小的时候可能看不到进度条 ) 在 outlook 里删除已经备份的目录. 导入 解压 导入 File> Open & Export> Open Outlook Data File 然后到 Outlook 窗口左侧的树状菜单底部的 Outlook Data File 下面就能找到了. ...

2019-04-24 · 1 min · 97 words · w1100n

alpine basic

alpine basic alpine mirror vi /etc/apk/repositories # b. 将里面 dl-cdn.alpinelinux.org 的 改成 mirrors.aliyun.com ; 保存退出即可 sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories # alpine install telnet apk update apk add busybox-extras busybox-extras telnet localhost 6900 apk add drill apk add tcpdump apk add curl 明明镜像中有对应的二进制文件,但是执行时却提示 not found 或 no such file¶ 有时可能会遇到明明镜像中存在相应的二进制文件,但是执行对应的二进制文件时却提示 not found 或 no such file 错误,类似下面这样: ls /usr/bin/grep /usr/bin/grep /usr/bin/grep /bin/sh: /usr/bin/grep: not found 常见原因:该二进制文件是使用动态链接方式编译了一个使用了 GLIBC 库的程序生成的,但是 alpne 镜像中没有 GLIBC 库而是用的 MUSL LIBC 库,这样就会导致该二进制文件无法被执行。 ...

2019-04-23 · 1 min · 149 words · -

Scrum的5个核心价值

Scrum的5个核心价值 什么是5个Scrum的核心价值? 什么是5个Scrum的核心价值? (英文原版) (日本語版) Scrum是敏捷软件开发的一个非常流行和众所周知的框架。几年前,Scrum在框架中添加了5个值,团队中的每个成员都使用它来指导他的决策。并不是很多人都知道并理解这些价值观,但它们对于scrum的成功实施至关重要,值得在这里详细阐述它们的含义。 Scrum值 那么Scrum值是什么?下图描绘了5个值: 五个Scrum值 (来源: Scrum.org – Scrum价值海报) 勇气 在Scrum团队成员有勇气做正确的事和棘手的问题的工作。团队成员在做正确的事情和承担明智的风险时相互支持,以便我们可以沿着我们的伟大道路学习和改进,包括: 承认没有人是完美的 提供撤消版本的产品 共享所有可能的信息以帮助团队和组织 承认没有完美的要求捕捉和面临快速变化是现实 焦点 每个人都关注Sprint的工作和Scrum团队的目标。当我们处理复杂性和不可预测性时,重点是必要的,以便做出任何有意义的事情。因为我们一次只关注一些事情,所以我们会尽快提供最有价值的物品。Scrum框架包含有助于促进关注的元素。 团队应该至少在每个Sprint结束时专注于"完成增量"。 每个Scrum 角色都有一个独特的问责制,可以帮助个人知道要关注什么作为他们的优先事项。这最终有助于团队成果。 Scrum团队专注于Sprint目标,以指导团队提供什么 该产品积压是一个优先顺序,以及创建专注于下一个是什么做的最重要的事情。 时间限制的冲刺事件创造了一种紧迫感,并帮助我们专注于事件的目的。 在Scrum的事件和文物帮助建立重点检查的进展和新的信息,让球队能够以足够频繁的间隔适应。 承诺 Scrum团队成员必须致力于成功,并愿意创建切合实际的目标并坚持下去。每个Scrum角色都致力于团队的成功,而不仅仅是关注我们的个人成就,通过以下方式创建信任,高效解决问题和高团队标准的环境: 该产品负责人演示了通过进行最佳决策,以优化产品的价值,而不是简单地试图取悦每一个利益相关者的承诺。 在Scrum Master的通过坚持Scrum的框架,这意味着我们不延长冲刺或其他时间盒压力去下演示的承诺"完成"。 在Scrum Master的证明通过删除Scrum团队不能自行解决的障碍,而不是容忍在组织现状的承诺。 该开发团队通过创建一个符合他们的"做,“不是东西,几乎是做了定义的增量演示的承诺。 尊重 作为自组织团队,我们不能没有彼此尊重,因此我们将为所有人培养一个参与,富有成效和人性化的环境。Scrum框架包含有助于促进尊重的元素。 整个Scrum团队参加Sprint Planning,Sprint Review和Sprint Retrospective。这促进了对每个角色,责任和不同观点的尊重。 开发团队是跨职能的,这意味着它具有提供"完成"产品增量所需的所有技能。这促进了对每个人的经验,技能和想法的尊重。这也促进了学习和成长。 该代办冲刺是由开发团队拥有。由于他们是做这项工作的人,他们决定他们在Sprint中可以做多少以及如何做这项工作。这表明了对他们的知识和技能的尊重,以及对以可持续的速度工作的尊重。 通过仅审查Sprint评审中的"完成"产品,我们为我们的真实进步带来了透明度。这体现了对利益相关者的尊重。 产品负责人寻求利益相关者的意见,合作并为利益相关者设定切合实际的期望。这是对利益相关者的尊重的另一种表现。 Scrum Master的重点是Scrum团队的健康状况以及Scrum的有效使用。担任教学,促进和辅导的角色表明了对人员和团队及其成长能力的尊重。 Scrum专注于提供价值,通过不花钱购买低价值功能或可能永远不会使用的东西来表达对我们组织的尊重。 在Sprint结束时具有潜在可释放的增量,通过不强迫更多投资实现价值,表明了对我们组织的尊重。它使组织可以灵活地做出投资决策。 透明度 Scrum的经验主义要求透明,开放,通过了解我们的工作安排,我们的进步,我们的学习和我们的问题。团队应该开放,跨学科和技能进行协作,与利益相关者和更广泛的环境协作,分享反馈和相互学习。Scrum框架包含有助于促进开放性的元素。 将Sprint限制在30天或更短时间,可以根据新信息促进对改变方向的开放性。 Sprint目标是固定的并提供指导,但是根据开发团队正在学习的内容,满足Sprint目标的计划是可以改变的。 透明的产品待办事项向我们的利益相关者展示了对产品计划内容 (以及未计划的内容) 以及下一步可能的内容的开放性。 Sprint Retrospective专注于持续改进我们团队的互动,流程和工具,这使我们能够开放反馈,反思和改变我们的工作方式。 Sprint Review展示了与利益相关者分享进展的开放性,以及对他们的反馈和协作的开放性。

2019-04-22 · 1 min · 61 words · -

chrome extension

chrome extension content script, 只能访问 dom, 不能访问页面 js 变量和函数 Injected Script, 被插入到页面里的 js 代码 chrome://extensions puzzle button: chrome extension 图标后面的拼图按钮 develop chrome extension doc https://developer.chrome.com/docs/extensions/mv3/ javascript web api: https://developer.mozilla.org/en-US/docs/Web/API chrome api: https://developer.mozilla.org/en-US/docs/Web/API html: https://web.dev/learn/html/ css: https://web.dev/learn/css/ javascript: https://developer.mozilla.org/en-US/docs/Learn/JavaScript chrome extension development overview: https://developer.chrome.com/docs/extensions/mv3/devguide/ chrome extension 的构成 The manifest, manifest.json, 唯一一个必须要存在于 extension 根目录的文件 The service worker, service worker 监听 chrome 的各种事件, 可以调用 Chrome api, 但是不能直接操作页面内容 Content scripts: content script 可以直接在页面中执行 js 代码, 可以直接操作 DOM, 还可以跟 service worker 通信 The popup and other pages crxjs, react https://crxjs.dev/vite-plugin ...

2019-04-21 · 1 min · 90 words · -

Scrum Master

Scrum Master Scrum 主 管 (Scrum Master, 简称 SM) 解惑 Scrum 系列一: 什么是 Scrum Master? 不久前,我们在帮一家颇具规模的银行做组织级敏捷转型时,经常被问到这样的问题: “Scrum Master 究竟是干什么的?什么样的人适合当 Scrum Master?” 要回答这个问题,我们需要先了解 “什么是 Scrum Master” ?这是个在 Scrum 框架中,最让人困惑的角色。目前为止,Scrum Master 一直没有很好的中文译名 (不像 PO 翻译成产品负责人那般自然) 。如果要一定要翻译 Scrum Master,似乎只有直译成 Scrum 大师最为贴切。按照经典 Scrum 的定义,Scrum Master 是 Scrum 三个角色之一,是负责帮助团队理解接受 Scrum 的价值观,原则和实践。 曾经有一位在业界颇具影响力的敏捷专家曾提到,Scrum Master 这个词本身充满了矛盾的色彩。一方面,这个词暗示 Scrum Master 是团队内部唯一的权威;而另一方面,Scrum Master 并没有任何行政上被赋予的权力。他不像部门经理,或是以往的 team leader,原则上他并不对项目的成功负责 (现实中确实有一些 Scrum Master 沿袭了 team leader 或 manager 的权力) 。所以这些经常导致 Scrum Master 究竟是不是权威的争论。除此,还有人提出,Scrum Master 是否表现出色,可以用团队是否需要 Scrum Master 来衡量 (这方面可以参照 Spotify 的组织内没有 Scrum Master) 。于是我们面临的悖论是" 好的 Scrum Master 就是不存在的 Scrum Master"!! ...

2019-04-21 · 2 min · 347 words · -

Scrum

Scrum scrum guide https://www.scrumguides.org/scrum-guide.html Scrum是一种敏捷软件开发的方法学,用于迭代式增量软件开发过程。 Scrum is a simple yet incredibly powerful set of principles and practices that helps teams deliver products in short cycles, enabling fast feedback, continual improvement, and rapid adaptation to change. Scrum是一套简单但功能强大的原则和实践,可帮助团队在短周期内交付产品,实现快速反馈,持续改进和快速适应变化。 Scrum是一个遵循敏捷宣言价值观,基于12条敏捷原则的敏捷过程,它是一种采用迭代式、增量开发的软件开发过程。Scrum在英语的意思是橄榄球里的争球。 Scrum是一个框架,它定义了高层次的管理流程,如下图所示。它并不涉及具体开发方法或者人员的有效沟通技巧等。这些没有涉及的领域需要和其他理论和技能互为补充,以确保项目的成功。 https://desert3.iteye.com/blog/1693360 Scrum是一种敏捷软件开发的方法学,用于迭代式增量软件开发过程。Scrum在英语是橄榄球运动中列阵争球的意思。 https://zh.wikipedia.org/wiki/Scrum 处理复杂的事情,要用框架 处理复杂的事情,如果有框架指导,就能保证最终结果的完整性、系统性及正确性。另外,通过框架,将复杂的事情切分成较小块、把工作流程标准化,从而将大问题变成一个个小问题,大大减少工作难度。 软件开发是一项复杂的活动,敏捷开发也有自己的一种框架: Scrum。 Scrum是什么? Scrum是基于敏捷思想的开发框架,用于迭代式增量软件开发过程。 它基于经验型流程控制理论,所以Scrum框架的坚信: 知识源于经验 决策基于已知的事物 透明性、检视、调整是经验型流程的三大支柱 采用迭代增量式的方法来优化可预测性和管理风险 https://www.jianshu.com/p/fff49687ebf2 Scrum概述 按照Scrum官方联盟的定义,Scrum是一个完成复杂项目的敏捷框架。最初是用以指导软件开发,目前已经延伸到更多复杂和创新的工作领域中。 Scrum为软件开发提供了一个迭代增量的过程框架: 在Scrum中,整个开发周期包括若干个小的迭代周期,这样的小迭代周期称为Sprint,每个Sprint的建议长度2到 4周。 Product Owner(产品负责人)会创建一个具有优先级的需求列表,称之为Product Backlog (产品待办事项) 。产品待办事项的表现形式通常为User Story(用户故事)。 Scrum开发团队通过Sprint Planning (Sprint计划会) ,从Product Backlog中挑选最有价值的需求进行开发。经过Sprint计划会议上的分析、讨论和估算得到任务列表,称为为Sprint backlog 。 ...

2019-04-21 · 2 min · 249 words · -

敏捷 Agile

敏捷 Agile 敏捷宣言 个体和互动 高于 流程和工具 工作的软件 高于 详尽的文档 客户合作 高于 合同谈判 响应变化 高于 遵循计划 也就是说,尽管右项有其价值, 我们更重视左项的价值。 # Kent Beck, James Grenning, Robert C. Martin # Mike Beedle, Jim Highsmith, Steve Mellor # Arie van Bennekum, Andrew Hunt, Ken Schwaber # Alistair Cockburn, Ron Jeffries, Jeff Sutherland # Ward Cunningham, Jon Kern, Dave Thomas # Martin Fowler, Brian Marick 著作权为上述作者所有,2001年 ,此宣言可以任何形式自由地复制, 但其全文必须包含上述申明在内。 Agile 12 Principle Our Highest Priority Is To Satisfy Customer through Early and Continuous Delivery Welcome-Changing Requirements Even Late In Development. Agile Processes Harnesses Change for Customer Competitive Advantage Deliver Working Software Frequently (Weekly or Monthly) With Focus on Shorter Timescale Business People and Developers Should Work Together Daily Build Projects around Motivated Individual. Provide Them the Environment and Support They Need and Trust Them The Most Efficient Way to Convey Information to Your Development Team is Face To Face Conversation Working Software Is a Primary Measure of Success Agile Process Promotes Sustainable Development. Sponsors, Developers and Users Should Maintain a Constant Pace Continuous Attention to Technical Excellence and Good Design Boosts Agility Simplicity—The Art of Maximizing The Amount of Work Not Done but Is Essential The Best Requirements, Architecture, and Design Emerge From Self Organizing Teams At Regular Interval, Team Reflects on How to Become More Effective and Tweak Behavior Accordingly 敏捷开发十二原则 我们的最高目标是,通过尽早和持续地交付有价值的软件来满足客户。 欢迎对需求提出变更——即使是在项目开发后期。要善于利用需求变更,帮助客户获得竞争优势。 要不断交付可用的软件,周期从几周到几个月不等,且越短越好 项目过程中,业务人员与开发人员必须在一起工作。 要善于激励项目人员,给他们以所需要的环境和支持,并相信他们能够完成任务。 无论是团队内还是团队间,最有效的沟通方法是面对面的交谈。 可用的软件是衡量进度的主要指标。 敏捷过程提倡可持续的开发。项目方、开发人员和用户应该能够保持恒久稳定的进展速度。 对技术的精益求精以及对设计的不断完善将提升敏捷性。 要做到简洁,即尽最大可能减少不必要的工作。这是一门艺术。 最佳的架构、需求和设计出自于自组织的团队。 团队要定期反省如何能够做到更有效,并相应地调整团队的行为。 敏捷的核心可以归纳成四个字: “渐进增强”。 ...

2019-04-21 · 2 min · 277 words · -

Apache HttpClient 4.5 How to Get Server Certificates

Apache HttpClient 4.5 How to Get Server Certificates package com.memorynotfound.httpclient; import org.apache.http.HttpResponseInterceptor; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.utils.DateUtils; import org.apache.http.conn.ManagedHttpClientConnection; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.protocol.BasicHttpContext; import org.apache.http.protocol.HttpContext; import org.apache.http.protocol.HttpCoreContext; import javax.net.ssl.SSLSession; import java.io.IOException; import java.security.cert.Certificate; import java.security.cert.X509Certificate; /** * This example demonstrates how to obtain server certificates {@link X509Certificate}. */ public class HttpClientGetServerCertificate { public static final String PEER_CERTIFICATES = "PEER_CERTIFICATES"; public static void main(String... args) throws IOException { // create http response certificate interceptor HttpResponseInterceptor certificateInterceptor = (httpResponse, context) -> { ManagedHttpClientConnection routedConnection = (ManagedHttpClientConnection)context.getAttribute(HttpCoreContext.HTTP_CONNECTION); SSLSession sslSession = routedConnection.getSSLSession(); if (sslSession != null) { // get the server certificates from the {@Link SSLSession} Certificate[] certificates = sslSession.getPeerCertificates(); // add the certificates to the context, where we can later grab it from context.setAttribute(PEER_CERTIFICATES, certificates); } }; // create closable http client and assign the certificate interceptor CloseableHttpClient httpClient = HttpClients .custom() .addInterceptorLast(certificateInterceptor) .build(); try { // make HTTP GET request to resource server HttpGet httpget = new HttpGet("https://google.com"); System.out.println("Executing request " + httpget.getRequestLine()); // create http context where the certificate will be added HttpContext context = new BasicHttpContext(); httpClient.execute(httpget, context); // obtain the server certificates from the context Certificate[] peerCertificates = (Certificate[])context.getAttribute(PEER_CERTIFICATES); // loop over certificates and print meta-data for (Certificate certificate : peerCertificates){ X509Certificate real = (X509Certificate) certificate; System.out.println("----------------------------------------"); System.out.println("Type: " + real.getType()); System.out.println("Signing Algorithm: " + real.getSigAlgName()); System.out.println("IssuerDN Principal: " + real.getIssuerX500Principal()); System.out.println("SubjectDN Principal: " + real.getSubjectX500Principal()); System.out.println("Not After: " + DateUtils.formatDate(real.getNotAfter(), "dd-MM-yyyy")); System.out.println("Not Before: " + DateUtils.formatDate(real.getNotBefore(), "dd-MM-yyyy")); } } finally { // close httpclient httpClient.close(); } } }

2019-04-18 · 2 min · 251 words · -

reveal.js, markdown > PPT

‘reveal.js, markdown > PPT’ 快捷键 全屏 f , 退出全屏 Esc 上一页 p, 下一页 n/空格 首页 Home, 末页 End 缩略图 Esc 或 o 黑屏 b 演讲提示模式 s vi导航键: h, j, k, l 帮助页面: ? 字号 reveal.js的markdown支持4种字号#,##,###,#### 安装nodejs sudo pacman -S nodejs 安装npm sudo pacman -S npm git clone reveal.js git clone https://github.com/hakimel/reveal.js.git cd reveal.js npm install mv index.html index.html.bak ln -s scrum/index.html index.html npm start npm start – –port=8001 ```xml 内容左对齐 .reveal .slides { text-align: left; } .reveal .slides section>* { margin-left: 0; margin-right: 0; } </style> 插入图片并控制样式 路径是相对于index.html的路径 ...

2019-04-16 · 1 min · 91 words · -

idea config, 配置

idea config, 配置 intellij idea 设置显示空格 View>Active Editor>show whitespaces 在IDEA里输入中文,fcitx vim /sbin/idea export XMODIFIERS="@im=fcitx" export GTK_IM_MODULE="fcitx" export QT_IM_MODULE="fcitx" https://blog.csdn.net/shiyibodec/article/details/73549501 java compiler File > Settings > Build, Execution, Deployment > Compiler > Java Compiler Change Target bytecode version to 1.8 of the module that you are working for. https://yangbingdong.com/2017/note-of-learning-idea-under-ubuntu/ font JetBrain推出了一个新的字体 JetBrain Mono. 号称是最适合程序员的编码的字体 terminal 字体 Setting->Editor->Color Scheme->Console Font openjdk source Go to Project Structure dialog, select the “SDKs” node, select your JDK, ...

2019-04-14 · 1 min · 161 words · -

docker btrfs

docker btrfs 镜像分层与Btrfs共享 Docker利用Btrfs subvolumes和快照来管理镜像和容器数据层的硬盘组件(on-disk components)。Btrfs subvolumes看起来像一个正常的Unix文件系统。因此,他们可以有自己的内部目录结构,挂钩到更广泛的Unix文件系统。 subvolumes更新文件时涉及写时拷贝操作,写入新文件时涉及从一个底层存储池来按需分配空间的操作。它们既能嵌套也能做快照。下图显示了4个subvolumes。“subvolume 2″和"subvloume 3″是嵌套的,而"subvolume 4"显示它自己的内部目录树。 使用btrfs驱动的Docker主机创建镜像和容器的过程如下: 1.镜像的基础数据层存储在/var/lib/docker/btrfs/subvolumes的Btrfs subvloume中。 2.后续的镜像数据层存储为subvolume或快照的父级数据层的一个Btrfs快照中。 https://www.centos.bz/2016/12/docker-and-btrfs-in-practice/

2019-04-14 · 1 min · 16 words · -

btrfs command

btrfs command # 安装 btrfs 的用户空间工具 pacman -S btrfs-progs # 像 df 这样的用户空间工具可能不会准确的计算剩余空间 (因为并没有分别计算文件和元数据的使用情况) 。推荐使用 btrfs filesystem usage 来查看使用情况 btrfs filesystem usage / #列出当前路径 (path) 下的子卷: btrfs subvolume list -p path # 碎片整理 btrfs filesystem defragment -r /

2019-04-14 · 1 min · 38 words · -

linux 查看 SATA 速度, 版本

linux 查看 SATA 速度, 版本 https://www.cyberciti.biz/faq/linux-command-to-find-sata-harddisk-link-speed/ sudo pacman -S smartmontools sudo smartctl -a /dev/DEVICE-NAME-HERE sudo smartctl -i /dev/DEVICE-NAME-HERE sudo smartctl -a /dev/sda | grep "^SATA" sudo smartctl -i /dev/sdb | grep "^SATA" sudo smartctl -a /dev/sda sudo smartctl -i /dev/sdb dmesg | grep -i sata | grep 'link up'

2019-04-14 · 1 min · 49 words · -

SSD

SSD TRIM #检查 SSD 是否支持 TRIM lsblk --discard # 或者用 hdparm sudo pacman -S hdparm sudo hdparm -I /dev/sda | grep TRIM Linux 文件系统对于删除操作,只标记为未使用,实际并没有清零,底层存储如 SSD 和传统机械磁盘并不知道哪些数据块可用,哪些数据块可以 Erase。所以对于非空的 page,SSD 在写入前必须先进行一次 Erase,则写入过程为 read-erase-modify-write: 将整个 block 的内容读取到 cache 中,整个 block 从 SSD 中 Erase, 要覆写的 page 写入到 cache 的 block 中,将 cache 中更新的 block 写入闪存介质,这个现象称之为写入放大( write amplification)。 SSD中提供了一个TRIM命令,操作系统在删除文件时可以通过向SSD发送TRIM命令告诉它哪些数据块中的数据已经不再使用了。SSD在收到TRIM命令后,通常会在定期的垃圾收集操作中重新组织这些区块,为将来写入数据做好准备,不过每一款SSD在底层对TRIM命令的执行机制都不尽相同,但无论如何,通过TRIM能够显著改善SSD的性能和寿命。 https://www.guokr.com/blog/483475/ https://zhuanlan.zhihu.com/p/34683444 SSD 检测工具 Crystal Dick Info Crystal Disk Mark Samsung_Magician_Installer_Official_7.0.1.630 https://semiconductor.samsung.com/consumer-storage/support/tools/

2019-04-14 · 1 min · 67 words · -

GraphViz

GraphViz pacman -S graphviz GraphViz是什么? GraphViz是一个开源的图像可视化的软件,是贝尔实验室开发的一个开源的工具包,它使用一个特定的 DSL(领域特定语言): dot 作为脚本语言,然后使用布局引擎来解析此脚本,并完成自动布局。graphviz 提供丰富的导出格式,如常用的图片格式,SVG,PDF 格式等。 Graphviz由一种被称为DOT语言的图形描述语言[3] 与一组可以生成和/或处理DOT文件的工具组成: dot 一个用来将生成的图形转换成多种输出格式的命令行工具。其输出格式包括PostScript,PDF,SVG,PNG,含注解的文本等等。 neato 用于 sprint model 的生成 (在Mac OS版本中称为energy minimized) 。 twopi 用于放射状图形的生成 circo 用于圆形图形的生成。 fdp 另一个用于生成无向图的工具。 dotty 一个用于可视化与修改图形的图形用户界面程序。 lefty 一个可编程的(使用一种被EZ影响的语言[4])控件,它可以显示DOT图形,并允许用户用鼠标在图上执行操作。Lefty可以作为MVC模型的使用图形的GUI程序中的视图部分。 作者: 疯狂的小托马斯 链接: https://www.jianshu.com/p/8e88b2a5dc03 来源: 简书 简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

2019-04-13 · 1 min · 41 words · -

win10 onedrive cpu

win10 onedrive cpu https://mingjiejian.github.io/2017/09/15/onedrive/ 推荐且不怎么伤的办法 从解决方法来说原因应该是Onedrive的log出错了,一直以为没有更新所以卡在更新/安装上,所以一个比较简单的解决办法就是删掉错误的log。这两个log是 C:\Users\用户名\AppData\Local\Microsoft\OneDrive\setup\logs\userTelemetryCache.otc C:\Users\用户名\AppData\Local\Microsoft\OneDrive\setup\logs\userTelemetryCache.otc.session 在Onedrive打开而且用户没有注销登录的情况下在任务管理器中结束OneDriveSetup.exe进程 将上述的两个log文件删除 运行C:\Users\用户名\AppData\Local\Microsoft\OneDrive\Update\OneDriveSetup.exe 应该就可以了 有的时候可能自己觉得太烦想重装,已经将Onedrive卸载了 (我就是这么做的) ;这个时候只需要做上面的第2步然后双击安装文件就行了,不会再卡在安装那。不过之后要重新登录一下自己的账户。

2019-04-11 · 1 min · 15 words · -