avatar
sunzhe
测试文档
Gateway健康检查接口为/actuator/health # restart.sh docker ps -a |grep 7.239|awk '{print $1}'|xargs docker restart # start.sh dokcer ps -a |grep Exited|awk '{print $1}'|xargs docker start # stop.sh dokcer ps -a |grep Up|awk '{print $1}'|xargs docker stop 接口500 记录 api/task/tasks/search
avatar
yanghailong
Maven 使用公司自签证书访问内部仓库
通过 ~/.m2/settings.xml 文件配置了公司内部 Maven 仓库镜像,Maven 下载依赖时报错: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 原因 是由于公司搭建内部 Maven 仓库时使用了自签证书,JRE 不识别该证书,导致 SSL 校验失败。 修复方法 导入证书到 JRE 的 Keystore 中 Import security certificate to the JRE Keystore 假设证书保存在 ~/Downloads/ca.pem $ cd $JAVA_HOME/jre/lib/security/ $ keytool -import -alias mycertificate -keystore cacerts -file ~/Downloads…
avatar
dongliu
关于异步编程的一些概念
当谈论到异步编程的时候总是会涉及到各种概念,比如进程(process) ,线程(thread),并行(parallel) ,并发(concurrency), 协程(coroutine),刚开始学习编程的时候一直理解不了这些概念之间的区别,只知道照着文档写写Demo,现在学了操作系统之后渐渐的对这些概念认识清晰了些,所以写这篇博客来记录一下。 1. 并发 (Concurrent) A logical flow whose execution overlaps in time with another flow is called a concurrent flow, and the two flows are said to run concurrently. More precisely, flows X and…
avatar
langrisser
Hotwire - Turbo Drive 笔记
Turbo Drive的工作原理是拦截链接的 "点击 "事件和表单的 "提交 "事件,转换为AJAX请求来加速 Rails 应用。 每次点击链接时,Turbo Drive都会拦截 "点击 "事件,通过将点击链接时通常会触发的HTML请求转化为AJAX请求来覆盖默认的行为。当Turbo Drive收到响应时,它会将当前页面的替换为响应的,在大多数情况下,不做改变。 Turbolinks是Turbo Drive的祖先:它只拦截对链接的点击,而不是表单提交。现在Turbo也处理表单…
avatar
HackerPie
stimulus.js 初体验
stimulus.js 框架是一个轻量的 JavaScript 框架,由大名鼎鼎的 Basecamp 公司开发,也就是 Ruby on Rails 框架核心开发团队所在的公司。老早就听说了 stimulus.js 框架,但是没有实际使用过。最近刚好在自己的一个小项目中有了实践的机会,有了一些心得体会,总结分享一下。 提醒:如果想快速体验 stimulus.js 做出来的 demo,可以看看这个 todomvc-stimulus。 一个克制的前端 JavaScript 框架 谈起对 stimulus.js 框架总的印象,我觉得这是一个非常克制的前端 JavaScript…
avatar
yuan
Kotlin 1.5 协程笔记
// in CoroutineScope launch { val users = loadContributorsSuspend(req) // suspend 方法 updateResults(users, startTime) } suspend fun loadContributorsSuspend(service: GitHubService, req: RequestData): List<User> { ...... } 这里的 launch 方法是 CoroutineScope 的一个方法,它能够创建一个协程,Kotlin 里协程被视作“轻量化”的线程,它是可以挂起 (suspend) 的。suspend 修饰的方法叫作 suspend 方法,例如这里的 loadContributorsSuspend()。suspend 方法只能在协程中被调用,或者被另一个 suspend 方法调用。 在一个协程内调用 suspend 方法(例如调用一个发起网络请求的 suspend 方法),该…
avatar
log
读一遍 ACME 协议
读一遍 ACME 协议 最近用 typescript 自己实现了一个 ACME 客户端:https://github.com/shiny/HandyAcme 读了一遍协议,一点点做了实现,然后把理解的内容记录到下文中。 2023 更新:最近又基于以上 library 写了一个 SSL 证书自动签发、部署的 Web 面板:https://github.com/shiny/late.ink ACME 协议全名为 “Automatic Certificate Management Environment”,为 RFC 8555,地址位于: RFC 8555 - Automatic Certificate Management Environment (ACME) 常见支持 ACME 协议的 Ca 有 Let’s Encrypt https://letsencrypt.org/ BuyPass https://www.buypass.com/ ZeroSSL https://zerossl…
avatar
电子芥末
超简单易用的 Java Web 框架 - Javalin
我习惯用 Go 来做一些小网站,最近想换个口味,试试 Java. 我以前嫌弃 Java 太啰嗦,但自从尝试在 Python 里严格认真地使用 type hint, 累死我了,这比 Java 更啰嗦。这样折腾过后, Java 在我眼中也眉清目秀起来。 以前虽然学过 Java, 但几乎没有真正用过,并且已经多年完全没写过 Java, 因此需要重新学习,就看了一遍 dev.java 由于我主要是想做些自用的小工具,就没必要学 Spring 了,找个更…
avatar
电子芥末
Javalin网站框架介绍之二 - 数据库
本文是《超简单易用的 Java Web 框架 - Javalin》的续篇。 理解了前文所述的基本原理,就能制作一个前后端分离的网站了,但前文没有涉及数据库的问题,下面以 sqlite 为例,说说如何与数据库沟通。 添加依赖 在 pom.xml 中添加以下与数据库操作有关的依赖: <dependency> <groupId>org.xerial</groupId> <artifactId>sqlite-jdbc</artifactId> <version>3.39.2.0</version> </dependency> <dependency> <groupId&gt…
avatar
yuan
SvelteJS 笔记(上)
Svelte 官方在线编辑和运行代码的工具:https://svelte.dev/repl/hello-world?version=3.49.0 组件 (Component) 在 Svelte 当中,一个 .svelte 文件就是一个组件。.svelte 文件中可以包含 HTML, CSS 和 JavaScript. 在组件的 HTML 里可以直接引用 JavaScript 当中定义的变量(即组件的状态)。 <script> let name = 'world'; let src = '/tutorial/image.gif'; </script> <h1>Hello {name}!</h1> <img src={src} alt='image'/> 当 HTML 标签的属性名跟变量名一样的时候,还可以简写…
avatar
Rei
Rails 7 Turbo 环境集成 reCAPTCHA 的方法
最近有人反馈 GeekNote 的注册流程体验很差(#23),我调试之后发现之前集成 reCAPTCHA 的代码有错,会导致验证经常失败。解决的过程记录如下。 问题 reCAPTCHA 是 Google 提供的验证码服务,Rails 有一个 Gem recaptcha 可以帮助集成。按照这个 Gem 的文档,在需要验证码的地方只需加入以下代码: <%= form_for @foo do |f| %> # … <%= recaptcha_tags %> # … <% end %> recaptcha_tags 插入的内容如下: <script src="https://www.recaptcha.net/recaptcha/api.js" async defer&gt…
avatar
Mark24
用Ruby讲从创业到996公司的故事(戏说master-worker模式)
前言 阅读大概需要20分钟。 假设你希望了解 线程、线程池、集群模式/Master-Worker模式、调度器。 需要了解 Ruby 基本的用法和面向对象思想。 本文戏说,无须严肃对待。勿对号入座。个人也没有严肃观点。个人观点和所有人没有关系。 本文博客地址 完整代码示例 github:rb-master-worker-demo Master Worker 模式 MasterWorker 模式,也有翻译成作集群模式、也叫 Master-Slave 模式。 Git 不许使用 master了,换成了 main ,Master/Slave 具有政治不正确的歧视色彩。不过这不重要了。其实这个名字很能表达…
avatar
Mark24
管窥蠡测从思考游戏到实现 2048
大家好,我是Mark24,可以叫我Mark Github Mark24Code 我的博客 RubyChina同话题 V2EX同话题 前言 本文比较啰嗦,更倾向于是自言自语。不过我写完回顾,这更像是这段时间,自由思考的总结 :P 不过我不是游戏领域的人,这部分都是业余摸鱼思考的记录,如果有勘误,请与我联系,非常乐意交流。 文章可能需要30分钟。 主要涉及的主题: 游戏之难 游戏基本构成 游戏引擎 游戏与交互程序 框架和库思考 语言是否是游戏的瓶颈 双缓冲…
avatar
Mark24
用 100 行 Ruby 代码模拟 JavaScript 的 Eventloop
前言 大家好,我是Mark24 代码仓库: Mark24Code/rb_simulate_eventloop [本文博客地址] (https://mark24code.github.io/ruby/2022/08/11/%E7%94%A8100%E8%A1%8CRuby%E4%BB%A3%E7%A0%81%E6%A8%A1%E6%8B%9FJavaScript%E7%9A%84Eventloop.html?source=juejin) RubyChina同话题讨论 背景 我们都知道 JavaScript 是单线程的。 今天看到一个有趣的帖子 www.v2ex.com/t/871848,主要是争论JavaScript的优缺点。我看到这个评论觉得很有意思: @qrobot: ....省略.... 多线程下会消耗以下资源 1. 切换页表全局目录 2. 切换内核态堆栈 3. 切换…
avatar
Mark24
代码会说话之一个脚本帮你检查项目 996 状态
马上要进新组了,一看他们的仓库眼泪留下来 项目地址 Mark24Code/check_996 Check 996 帮助你检查项目 996 状态. 😎 Usage: check_996.rb [options] -s, --start WORK_START_TIME start job time e.g. 10:00:00 -e, --end WORK_END_TIME end job time e.g. 18:00:00 -g, --git-log GIT_LOG_CMD use git log command, default is `git log --all` -f, --filter FILTER time range filter e.g. last_[day|week|month|year] last_5_[day|week|month|year] '2022-01-01 08:10:00,2022-10-01 08:10:00' -v, --version…
avatar
电子芥末
受 Mithril.js 启发的零学习成本极易用框架
框架名称: mj.js (https://github.com/ahui2016/mj.js) 在介绍本框架之前,我不得不恳求:请先别带着偏见小瞧本框架的能力。 本框架是很容易被小瞧、被误解的,因为基于 jQuery, 第一版一共由两个函数共约 10 行代码构成。 真组件 本框架中的组件是真组件,因为: 生成组件不需要写 HTML 或 JSX, 而是完全使用 JavaScript 组件可以有自己的方法,可调用组件的方法使组件发生变化 组件可以套娃,即组件内可以嵌套另…
avatar
busylog
add Windows Firewall Rules to Block UWP Applications
to create the firewall rule, you need to get the package SID. the normal method is DeriveAppContainerSidFromAppContainerName. but thankfully there's an alternate implementation from https://github.com/metablaster/WindowsFirewallRuleset/issues/6 that could convert PackageFamilyName to SID, and I ported the method to python3. New-NetFirewallRule -Displayname RULENAME -enabled false -action block -direction out -package SID # Get-AppxPackage|select Name,PackageFamilyName import hashlib # s is PackageFamilyName def AppSid(s): # unicode without bom a = hashlib.sha256(s.lower().encode('utf16')[2:]).digest() r = [] for i in range(0,28,4): # not 32, last part not needed r.append(int…
avatar
yuan
在 Kotlin 中代理成员变量的方法、属性
有如下代码 class A { fun fun1() { println("fun 1 in A") } } class B { val a = A() } 如果你想在类 B 里实现一个方法 fun1() 交给 a 代理, 最简单的办法是: class B { val a = A() fun fun1() { a.fun1() } } 但是需要代理的方法有很多,会出现许多重复的样板代码。Kotlin 提供了一个办法来简单的实现代理,但是你得首先声明一个接口,这个接口中要定义好所有你想代理的方法,同时让 A 和 B 都实现该接口。因为…
avatar
yuan
Android 网络请求绕过 HTTPS 限制
targetSDK 升 28 之后,Android 强制要求网络请求必须使用 https 协议。在公网服务器上这事情好办,直接开启 https 支持即可。而且现在也没有什么网站是不支持 https 的了吧。 但在自己的电脑上开发和调试 Android 程序时,这个限制就不太方便。可能 Google 也考虑到了这一点,因此提供了一个方法。 首先开启本地服务器,假设其运行在 3000 端口上。 新建一个 res/xml/network_security_config.xml 文件,并在 AndroidManifest.xml 当中引用它: <?xml version="1…
avatar
Rei
GeekNote 新增每周摘要邮件
GeekNote 本周五开始将发送每周摘要邮件,内容为最近一周的热门文章。希望每周摘要能让优秀的文章被更多人发现。 如何成为热门文章 热门文章主要由程序生成,目前的规则是: 区域时间内获得点赞最多的五篇文章。 每个账号仅限一篇文章,有多篇点赞数一样则选择发布时间较新的文章。 点赞数大于 0 尽可能不进行人工干预,但违反社区准则的情况除外。 如何退订邮件 注册用户默认开启每周摘要,但只有…