Blog.
2024 年毫无疑问是平平无奇的一年,彻底失败的一年

More Stories
重新开始骑行
作者从上周末开始尝试恢复骑行,尽管手臂和肩膀仍感到明显疼痛。经过一个月的恢复后,他去医院复查,并向主治医生询问是否可以骑车,得到了肯定的答复,增强了信心。在恢复骑行前,他将锁踏拆除,换上平踏,以防万一。在多次骑行后,尽管疼痛依旧存在,但有所减轻。他期待下一次检查的结果,希望一切顺利。

直面力有不逮的挑战
AI 导读:作者探讨了职场中理解老板指令的重要性,强调老板并非无知,而是希望观察员工的应对能力。通过一个荒诞的指令示例,作者指出成功与否并不是唯一标准,老板更关注员工的态度和处理问题的过程。他建议,与其焦虑未来的不确定性,不如专注于当下,努力推动计划的进展,积极应对挑战。最终,作者强调行动的必要性,结果则取决于外部因素。

Clubhouse演讲实录系列:独立开发者们,如何给你的产品定价?
AI 导读:作者在独立开发者会议上分享了对定价策略的见解,特别是“锚定效应”的应用。通过讨论小众App的定价困惑,作者指出设置多个价格选项可以影响顾客决策。此外他介绍了三种基本定价策略:成本导向、需求导向和竞争导向,并提供了实际的建议。文章强调了定价策略在市场环境和顾客心理中的重要性,鼓励读者灵活运用这些理论。

为什么 MySQL 选择 B+ Tree?
B+ Tree 是一种高效的数据结构,广泛应用于数据库(如 MySQL 的 InnoDB)、文件系统和内存管理。其优势包括快速查找、支持范围查询、适应磁盘存取特性和动态平衡,使其在处理大规模数据时表现卓越。相比其他数据结构,B+ Tree 提供更好的性能和灵活性,特别是在高并发环境下。

泛型箭头函数 in tsx
长久以来一直坚持用 TS 写各类 Web 应用,一个重要的乐趣就是 TS 的 Intellisence 在 VSCode 中自动提示做的特别好,甚至比其他真正的强类型语言例如 Java or Golang 都做的好。

使用 expect 自动登录 ssh
遇到一个小问题,之前直接使用 terminal 登录 ssh,使用 tmux 的时候,是可以随着窗口的缩放而适应大小的。改用 expect 自动登录 ssh之后,tmux 的适应窗口大小的能力消失了。在这里找到一个问答,解决这个问题。简而言之,expect 自己来捕获 sigwinch 信号,并传递给 children。

也谈「优雅中断定时任务」
本文讨论了如何优雅地中断定时任务。作者提供了一个示例,展示了传统的定时器用法无法关闭定时器的问题。为了解决这一问题,他引入了一个 exitChan 的 channel,通过 select 语法同时等待定时器和退出信号,实现了 goroutine 的优雅退出。作者还提到,这种用法来源于对 nsq 源码的学习,体现了其简单清晰的编程风格。

systemctl 启动 openresty 失败的原因排查
近日, 为了改善 API 日益恶化的调用鸭梨,尝试做应用层的负载均衡,来调度读写流量和内外部流量。需用用到 [OpenResty](http://openresty.org/en/)。由于这次的平台是 CentOS7,已经采用了 `systemctl` 来作为服务的管理工具,并且这次是自己下载源码构建安装,碰到一些问题,记录下来。

怎样才能做好新瓶装旧酒的工作
这篇文章探讨了作者在重做旧版产品时遇到的挑战,尤其是项目进展缓慢的原因。他意识到自己承担了过多角色,包括设计和交互,导致工作效率下降。作者强调了在产品重做中保持设计一致性的重要性,以及团队合作中明确角色的必要性。

JavaScript 事件传播规则浅析
事情是这样的,对于JS的事件传播和事件默认行为的阻止一直像是隔着一层纱看风景,模模糊糊的。之前也碰到过几次类似的情况,由于强大的惰性,一直也没去彻底的追究一下传播的具体细节,今天呢,借着下面这个小例子,来学习一下事件的传播。

乱弹企业级WEB开发
这篇文章主要讨论了企业级项目开发的挑战和个人经验,特别是在浏览器兼容性和敏捷开发方面的感受。 主要内容: 团队合作:作者强调了在企业项目中的团队协作的重要性。 敏捷开发:虽然敏捷开发有其好处,但对团队成员的全面素质提出了高要求。 浏览器兼容性:随着技术的发展,浏览器市场出现了多元化使得前端开发面临兼容性挑战。 总体来说,作者通过自己的经历反映了在企业开发中遇到的各种问题和对新技术适应的思考。

突破防采集,再难也要上
这篇文章讲述了作者在进行项目采集时遇到的挑战,尤其是代理服务器的重要性。由于系统故障,作者丢失了几天的代码,导致情绪低落。但他决定继续进行代理服务器的采集工作。 介绍了通过自定义 Java StreamTokenizer 的方式处理采集页面的方法,提取经过 CSS 混淆隐藏的免费 Proxy IP,整篇文章既包含了技术细节,也展示了解决问题的思路和方法。

JSF网站优化实战(二)
JSF,我拿什么来拯救你? 接上回,本文将继续探索 JSF 项目的性能问题解决之道。经过一番艰苦的调试和观察,我们已经发现了一些线索。本篇,我们将循着这些线索,进一步深入挖掘内存居高不下的奥秘。

JSF 网站优化实战(一)
JVM调优和问题诊断是一个老生常谈,而又总也谈不好、谈不完的话题。常常是在本地开发、调试,甚至测试都没啥问题,一旦上线就纰漏百出,这种情况不鲜见,个人小项目、公司产品甚至大公司的产品多少都会遇到和 JVM 深人打交道的时候。本文不去照搬现成的各式调优建议,而试图通过对 JVM 的监控,结合使用 JSF 框架编写的测试项目,寻找内存泄漏问题的根源;通过使用一系列的工具来分析问题的细节,并最终尝试提供一些合理的、有效的改进建议和方法。

修改监听IP 解决 Oracle 11g ora-12514 问题
本文描述了在 Windows 7虚拟机中安装Oracle 11g R2时,使用JDBC thin驱动连接数据库时遇到的ORA-12514错误。该错误通常表示监听器不知道连接描述符请求的服务。 问题解决步骤: 检查监听状态, 修改hosts文件, 使用Net Manager配置监听器, 重启监听服务, 验证监听情况, 测试连接。 通过这些步骤,成功解决了连接问题。

JavaScript 数组的 sort 方法妙用两则
这篇短文讨论了两个JavaScript面试题:数组去重和找出不成对的数。 第一个问题:数组去重, 作者首先提到用哈希对象去重的方法,但引入了利用排序的方案。通过对数组进行排序,重复的元素会并排出现,从而可以直接删除副本中的重复项。 第二个问题:找出不成对的数 作者通过排序和删除重复元素的方式来解决。 最终,剩下的元素就是那个不成对的数。

保管箱与云计算
很喜欢杰森·斯坦森的电影,犀利的动作、充满力量感的打斗、惊险刺激的追车场面都让我热血沸腾。在重温其著名电影《银行大劫案》的时候,其中一个场景特别引起了我的注意,萨弗蓉·布罗斯饰演的玛蒂和杰森·斯坦森饰演的特里一起去他们要劫的银行,查看地下保险库中事先在里面租用的一个保管箱,在工作人员插入公钥之后,玛蒂拿出自己的私钥一并插入保管箱,啪地打开了。不再描述具体,看到此场景,突然就想到了当今正炒的如火如荼的云计算。

有意思的 nginx 访问日志检查
本文讨论了对访问日志的检查,特别是对百度和谷歌的爬虫行为的对比分析。作者通过分析nginx访问日志,发现以下有趣现象: 1. 百度爬虫:访问记录中没有请求robots.txt,且爬虫种类单一。 2. 谷歌爬虫:访问记录显示多种爬虫,包括针对移动设备的爬虫,且首条请求是读取robots.txt。 作者对百度的robots遵循问题表示无奈,而对谷歌的多样化爬虫行为感到惊讶,尤其是其移动设备爬虫的User-Agent表现。

使用 DropBox API 备份你的 VPS
自从本主机上托管的虚拟主机多起来了以后,备份工作不得不提上了重要的日程,备份数据刻不容缓。首先还是充分发挥搜索引擎的作用,找到了几种方法 ,其中,有两种,我觉得是切实可行的

从 hao123 pv 统计情况看工作的投入程度
本文讨论了对hao123访问统计的关注,特别分析了访问量的时段分布。数据显示,在17:00至18:00的时间段内,访问量达到最高。作者认为,这一现象可能与人们下班前的疲劳和饥饿感有关,同时也提到可以通过数据挖掘进一步分析这一时间段内的访问网址和IP情况。

phpMyAdmin(4.0.0-rc4)打开超慢故障解决一例
出于对开源软件的敏感,平时一直喜欢追新版本,这次追了一下 phpMyAdmin , 高高兴兴的安装完了之后,启动Nginx,启动php-cgi,快打开浏览器瞧瞧,尼玛

防止表单重复提交机制在JSF2中的实现
本文探讨了在JSF2中防止表单重复提交的方法,借鉴了Struts的思路。具体步骤包括生成并存储一个token,在表单中添加隐藏字段以携带token,提交时验证token是否一致,并在业务完成后重置token。实现中包括会话级bean FormTokenBean、自定义组件 FormTokenTag 和验证器 FormTokenValidator。

IE10 hack 一例
本文讨论了在IE10中遇到的CSS兼容性问题,尤其是由于IE10取消了条件注释,导致原本为IE9及更旧版本设计的hack CSS无法应用。作者的项目使用了CSS3的flexbox布局,这在IE9及以下版本中不受支持,因此专门为IE准备了一个hack CSS文件。为了解决IE10的问题,作者提出了两种解决方案

JPQL CASE WHEN 写法一则
这篇短文主要讨论了在JPA2中使用JPQL时遇到的问题。作者尝试通过JPQL查询统计交易金额,但由于需要处理不同的交易符号(正负),使用了复杂的CASE WHEN语句。在编写过程中,作者发现JPQL对枚举类型的处理存在问题,导致查询结果错误。最终,作者不得不使用字符串代替枚举,成功解决了问题。总结指出,在WHERE中可以使用对象和枚举比较,而在其他部分则需使用字符串。

tabindex 属性的妙用
这篇短文讨论了在HTML中实现键盘导航的问题,尤其是在使用Primefaces等第三方组件时。作者指出,许多组件默认不支持键盘焦点,导致用户体验差。通过示例,展示了一个看似正常的下拉菜单实际上无法通过键盘操作。作者最初尝试用<a>标签解决,但意识到这样不符合语义。最终,发现给其他元素添加tabindex属性可以使其获得焦点,解决了问题,并兼容多个浏览器。该发现让作者感到振奋,解决了心中的困扰。

Introduce Gakki
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Praesent elementum facilisis leo vel fringilla est ullamcorper eget. At imperdiet dui accumsan sit amet nulla facilities morbi tempus.

Learn How to Pre-render Pages Using Static Generation with Next.js
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Praesent elementum facilisis leo vel fringilla est ullamcorper eget. At imperdiet dui accumsan sit amet nulla facilities morbi tempus.
