avatar
flchp
puts "heoll world"
avatar
flchp
建议
还要做个拖拽上传功能
avatar
chenge
ggez: 轻松开发rust游戏
good game easy. 提供了十几个例子,我试了一下,可以编译通过,比较有趣。 用来学习rust绝对好,减少一些枯燥。 link--> 油管youCodeThings有详细介绍游戏原理。 Are we game yet? 下面是来自网站arewegameyet的对游戏开发的介绍,已经有很多的相关库可以探索,ggez属于engine类。 Rust有助于减少bug,未来在游戏开发值得期待。 Since you ended up here, you probably agree that Rust is potentially an ideal language for Game Development. Its emphasis on low-level memory safe programming promise a better development…
avatar
Rei
图片粘贴/拖拽上传和界面优化
GeekNote 过去一段时间进行了一些功能优化: 文章图片支持了复制粘贴和拖拽上传。 去掉了多余的编辑器工具栏,图片上传按钮移至右上角。 网站顶部导航不再固定在顶部,阅读空间更大。 账号管理面板布局重新设计,与整站风格更协调。 GeekNote 还将不断优化提供更好的体验,欢迎提供建议意见。
avatar
叨叨刀道
记我今天用 Python 干的一件小事
大清早的收到我弟弟的求助: 就这个地址,进去搜索XXX,出来过后点10个赞 http://my-h5news.app.xinhuanet.com/h5activity/huihuangbainian/vote-pc.html 用python做个自动点赞的简单不? 我很想说,你说呢?肯定是简单的。但是问题的关键是这个页面会不会有加密,协议复杂与否,所以,我说我还是先分析一下。 打开我熟悉的谷歌浏览器,开启控制台,开干,试着投票。发现投票就是个AJAX请求,那就简单了,点了"REPLAY…
avatar
Song Huang
后台系统重构 - 菜单同步
需求 公司决定要使用前后端分离方式,重构一个维护了十余年的后台系统(原来是后端渲染方式)。由于持续过程较长,需要新旧系统并存一段时间。这个并存希望对使用者透明,因此我们把新系统界面结构弄的跟旧系统很相似,且我们要实现两个系统菜单完全一致。 要做到完全一致,首先需要将旧系统菜单抽离出来,改成可配置形式。其次因为新系统是前端渲染形式,所以新系统菜单需要通过 API 获取。接下来详细介绍具体实现的要点…
avatar
击鼓说茶
武夷岩茶入门
什么是岩茶? 出产于武夷山的乌龙茶被称为岩茶,独具岩骨花香。 建阳、建瓯等称为闽北水仙或闽北乌龙。 根据工艺区分,正山小种、金骏眉属于红茶,虽然也来自武夷山,但不属于岩茶。 常见的岩茶品种有:大红袍、水仙、肉桂,岩茶品种大体可分为三类: 外来品种,如水仙来自建阳,梅占来自安溪 本土名枞,如大红袍、肉桂、白鸡冠等从当地菜茶品种遴选出来 本土菜茶,用种子繁殖的有性系品种,目前已很难见到 第一类外来品种…
avatar
alvin
ss
ss
avatar
richard
test
this is a test blog
avatar
busylog
Android zram writeback
commit message: "Create a Zram writeback job Zram on some devices can support writing idle pages on to disk. ZramWriteback schedules jobs to track idle pages and trigger write-to-disk when the device is idle." the functionality is based on idle page writeback support, and requires CONFIG_ZRAM_WRITEBACK=y in kernel config. losetup can be used to create loop device from swapfile, so backing_dev could be assigned to. it also requires config_zramWriteback to be set enabled. the commit introduced three properties (default value from pixel). ro.zram.mark_idle_delay_mins = 60 ro.zram.first_wb…
avatar
chenge
ggez游戏开发入门
内容来自github,介绍了ggez的基本使用和框架。还是比较简单明了的,就是有一个state保存游戏状态,以及update和draw两个方法函数。 完整代码如下: use ggez::*; struct State { dt: std::time::Duration, } impl ggez::event::EventHandler<GameError> for State { fn update(&mut self, ctx: &mut Context) -> GameResult { self.dt = timer::delta(ctx); Ok(()) } fn draw(&mut self, _ctx: &mut Context) -> GameResult { println!("Hello ggez! dt = {}ns", self.dt.as_nanos()); Ok(()) } } fn main() { let state = State { dt: std::time::Duration::new…
avatar
Song Huang
内部系统的 API 响应和异常实践
背景 Web 开发中前后端分离的一大阻碍是交互的数据结构复杂难用,离服务端直接渲染那样简单和灵活相差甚远。另外很多项目没考虑自身场景的滥用了 API 规范,比如内部的后台系统,经常被“规范”束缚强制统一响应结构,将 4xx 甚至 5xx 异常全部改成 2xx 响应,然后自己定义一套复杂的异常规范。 对于内部后台系统,这种简单场景下的 API 响应和异常处理,其实设计可以考虑这些: 完全用 HTTP Status 规范,不另起 code…
avatar
Martin
部分应用与柯理化
在最近学习函数式编程的过程中,反复接触到的就是“柯理化”这个概念,特别数学范有没有?虽然看过多次,但是一直不是很好地理解它,恰逢今天在阅读《Scala 函数式编程》这本书的过程中加深了理解,便写个文章,总结一下。 柯理化 柯理化,英文叫“Currying”,命名源自逻辑学家 Haskell Curry 的名字。在数学和编程领域,柯理化用于将一个接收多个参数的函数转换为一系列只接收单个输入参数的函数。比如,将一个接收三个参数…
avatar
Rei
合集功能上线
很高兴宣布,GeekNote 新增了合集功能,替代了之前的收藏功能。 合集被设计用于以下目的: 个人收藏、归档。 整理同一话题或系列文章。 你可以点击文章工具栏的“书签”按钮打开合集对话框。 图例:合集对话框 在合集对话框中可以新建或勾选需要添加到的合集。新建合集时,你可以设置合集的名称和公开范围(私有/公开)。 在“管理面板->合集”中,可以设置合集的高级属性和拖动排序合集文章。 图例:文章排序 注意:当选择了内置排序方法时,新…
avatar
fengzhi
钉钉机器人配置
打开钉钉群会话窗口,单击右上角群设置按钮群设置。开始群设置 在群设置中,选择【智能群助手】。 单击【添加机器人】。 单击添加机器人按钮添加 + 。 选择要添加的机器人为【自定义】。 单击【添加】。 根据配置项说明(见下表)配置机器人。设置 配置项 说明 机器人名字 输入机器人名称。您也可单击上方的图片编辑按钮设置机器人头像。 安全配置 - 自定义关键词(填写 pushconfig) - 加签 (复制出加签的内容到网站的签名) 注意 待发送消息必须通过 安全配置校验,否则…
avatar
fengzhi
飞书群机器人配置
打开飞书群会话窗口,单击右侧群设置按钮群设置。开始群设置 在群设置中,选择【群机器人】。 单击【添加机器人】。 单击添加机器人按钮添加 。 填写机器人名称与描述。 单击【下一步】。 根据配置项说明(见下表)配置机器人。设置 配置项 说明 安全设置 - 自定义关键词(填写 pushconfig) - 签名校验 (复制出加签的内容到网站的签名) 注意 待发送消息必须通过 安全配置校验,否则消息将会发送失败。 单击复制webhook地址,获取webhook地址。粘贴到后网站的url中。 9…
avatar
Rei
基于 Stimulus 实现拖动排序组件
最近开发 GeekNote 的时候基于 Stimulus 实现了一个拖动排序组件,在这里记录一下原理。 提醒:已经有一个很强大的排序 js 库 SortableJS,如果它能很好的满足你的需求,那么直接用这个库就好了。自己实现更多是为了学习原理,或者为了更好的定制功能。 首先定义一个基本的 HTML 结构: <ul> <li>item 1</li> <li>item 2</li> <li>item 3</li> </ul> 然后设置…
avatar
NoCode
Python ThreadPoolExecutor 限制_work_queue 大小
使用python的futures.ThreadPoolExecutor是,如果调用submit提交任务 ThreadPoolExecutor的会向执行 self._work_queue.put(w) 其中 self._work_queue = queue.SimpleQueue() SimpleQueue 是不限制队列大小的,如果提交的任务太多,处理不及时,则导致占用太多内存 可以替换到_work_queue的实现,使用queue.Queue(maxsize=maxsize) class ThreadPoolExecutorWithQueueSizeLimit(futures.ThreadPoolExecutor): def __init__(self, maxsize=50, *args, **kwargs): super(ThreadPoolExecutorWithQueueSizeLimit, self).__init__(*args, **kwargs) self._work_queue = queue.Queue(maxsize=maxsize) links: https://stackoverflow.com/questions/48263704/threadpoolexecutor-how-to-limit-the-queue-maxsize
avatar
fengzhi
企业微信群配置
企业微信
avatar
Hooopo
Build a Rails App with TiDB and the ActiveRecord TiDB Adapter
TiDB is an open-source NewSQL database that supports Hybrid Transactional and Analytical Processing (HTAP) workloads. It is MySQL compatible and features horizontal scalability, strong consistency, and high availability. I assumed using TiDB as a backend storage layer of Ruby on Rails application perhaps is a great way to manage storages into one place. This post describes how to get started and how to use TiDB as backend of Ruby on Rails applications for developers. Example source codes are available at rails-tidb in GitHub. Setting up local TiDB server Install tiup $ curl --proto '=https' --tlsv1.2 -sSf https…