• 让WebSocket支持Oauth2 TOKEN验证的尝试

    ​ 很早的时候在下用一种比较简陋的方式利用WebSocket实现了在线Selenium执行功能《一》《二》。大概效果如下:

    codeonline

    ​ 其实实现原理挺粗暴的,服务端开启一个WebSocket服务端,一直处于监听状态。浏览器利用js脚本发起连接,并将内容通过WebSocket发送给服务端。只要发送的格式符合服务端的定义,理论上讲,服务端会无条件执行任何请求

    59136ae0da0391e7329f8d9d0b918f8e.png

    ​ 虽然过去了这么久,但是一想到服务器上还运行这么危险的服务,我便久久无法入眠(其实并没有)。趁着这次国庆大假,在家又折腾了一下我的在线代码执行服务,最主要的目标就是让websocket能更安全的运行。

    ​ 怎么才能更安全的运行呢?当然要利用小云上已运行的KeyCloak所提供的OAuth2认证啦。

  • 科学摸鱼之Excel小技巧(二)

    logo.png

      接上一期我们分享了几个关于EXCEL的使用小技巧,本期我们继续聊一聊EXCEL其它看上去很酷炫的操作。

      本期内容同样是天选打工人熬夜整理出来的,吐血推荐。

      下面就开始我们今天的摸鱼小技巧吧。


    多级菜单

      EXCEL不仅仅只是单纯的录入数据,还可以变得非常“智能”的自动选择录入的内容,比如这样:

    员工信息录入

      这是一个常见的员工登记表格,不同的员工在不同的部门下工作。假设这家公司共有三级部门,每个一级部门下又有各自不同的二级乃至三级部门,在录入的时候二三级部门会跟随其上一级部门变化而变化。

  • 科学摸鱼之Excel小技巧(一)

    logo.png

      做为一名天选打工人,即便在当前疫情突然加重,需要居家办公的今天,仍然要在家处理各种各样的表格,为老板们准备各种各样的汇报材料。正因为居家办公不用上下班打卡了,所以老板们似乎也觉得7x24小时待命变得合情合理,唉,生活真是太难了。

      在不断与Office三剑客爱恨纠葛之后,慢慢也掌握了一些如何高效、快捷、省时省力的完成各种数据录入、数据整理、数据呈现的奇技婬巧,天选打工之人熬夜整理出各种高频、常用、一看就会小技巧都汇总在这里,吐血推荐。

      下面就开始我们今天的摸鱼小技巧吧。


  • 一次云服务器内核升级之旅

      最近突发奇想,想尝试在本就不富裕的小云上搭建一个云手机平台。于是在github上不停的搜关键字(这里吐槽一下gitee的搜索功能做得还是太弱了),终于让我找到了两个不错的开源项目,anboxredroid

      我们都知道Android是分层的,按语言可简单分为Java和Native,按类别可分为application和service,他们之间的通信几乎都是利用ashmem或binder完成。而这2个功能又需要内核支持。所以不管是那种容器(容器与主机共用同一个内核)方案,内核都需要支持ashmem和binder。遗憾的是我的小云运行的是CentOS7,内核是3.10。默认不开启ashmem和binder功能的。所以只有一条路可走,手动编译适合的内核(yum虽能安装高版本内核,但是不确认是否已开启这2个特性)。

  • 一次小游戏的开发尝试

      谁能想到闲来无事做的零玩家游戏,居然成了组内浏览器性能测试工具?这是怎么回事呢?

      这事儿还得从我在github上瞎逛,发现了一个用JScript配合Canvas实现康威生命游戏网页小动画说起。

      那个时候还不了解康威生命游戏是个什么鬼,第一次看见的时候只觉得这玩意儿有点神奇啊,居然能自主进化成不同的形态。加上被原作者一句“这玩意儿很容易添加别的动画规则”给引诱了。

    It would not be hard to add other rule sets so it can be used to run other automata. It’s my platform for learning and playing with some web technologies.

      虽然前半句说不难添加新规则,但后半句中却提到了「learning」,果然他的代码风格一言难尽啊。

      肝了几天才把原始代码按逻辑重新进行了拆分和封装。在这过程中,也顺手尝试了好几种不同的动画效果,来看看历代的变化吧。

  • Spring极简资源服务器

    -本文为填坑文-

      很早之前我在《Spring cloud gatway适配Keycloak》中给自己留了一个坑。

    可以看出token中已包含有用户相关信息,可进一步传递给下游,作为权限判断输入,符合上文中的预期。好了,用户登录有了,剩下的就是在资源服务器(即下游微服务)上实现权限验证了。

      后面再单独写一章吧,因为资源服务器的实现略有不同。

      其实能鉴权的资源服务器很早就实现了,不过因为最近在愉快的玩儿其他有意思的东东,没能顾上填坑,正好最近天气不错,那就把它填了吧。

      先来看看效果。

  • 基于Python的相片导入工具

      最近没顾上继续折腾 Spring Cloud,而是和 Python 相爱相杀。唉,一开始还小瞧了小小的 Python,没想到还真费了我不少劲呢,前前后后差不多搞了快 2 周,做出来的东西才稍微像那么回事。

  • 云上编译器 随时随地编代码

      在《Spring Cloud配置服务》中提到本人在小云上瞎折腾,奈何学艺不精,折腾得挺费劲的,为了让折腾变得轻松点,上线了配置服务一事。其实除了折腾配置参数之外,代码的修改也是不可避免的事儿(虽然常常只是增删一句代码)。比如跨域访问资源的时候会被CSRF拦截,为了验证功能,就不得不加上.csrf().disable()试试效果。为了能进一步让我的折腾之路走得更从容,我开始寻找轻量化、免费的CI环境。

      大约是几年前的时候吧,那时候用Github做代码仓库,就顺手白嫖了Travis CI的资源,他的用法很简单,在代码中加入.travis.yml配置文件(可参考这个),这个文件作用是告诉Travis CI需要做什么,然后在Travis CI控制面板中添加Github账户公钥即可。当代码提交到Github代码仓库的master分支以后,会被自动编译成jar包,然后打包进容器,并进一步自动发布到 Docker hub上,而云端只需要更新容器即可实现部署(注1:其实Travis CI可以再调用云端接口,实现真正全自动部署,只不过当时购买的菊厂弹性服务器并未开放相关接口。注2:其实也有办法,Travis CI 推送完DockerHub之后,向Github指定仓库再提交一个issue,利用Github的WebHook向云端发起POST请求,从而触发Docker更新,只不过这条路也太折腾了。)

    travis ci

  • Spring Cloud配置服务

      这一段时间都在小云上折腾微服务的事儿,一边愉快的加着新功能,一边苦逼的调试着参数。也许这就是痛并快乐着吧。所幸Spring Cloud是一款优秀的服务框架。

    它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。

      最大的特点就是代码与配置相互独立,开箱即用(写入极少代码),通过更改配置就可以调整功能细节,我这么努力吹Spring Cloud,社区不考虑请我吃饭吗?哈哈哈哈

    恰饭饭

  • 不一样的服务发现Eureka

      在《有了云服务器能干什么》一文中曾讲到从小小云有限的资源中扒拉了一小块来折腾微服务,在连肝数日之后,终于有了基本的微服务雏形(有SSO、有权限控制、有跨服务器资源访问)。

    demo

      接下来会用一个系列来记录微服务折腾的过程。本文主要记录服务发现Eureka的折腾之路。