类别归档:他山之石

他山之石,可以攻玉。

RSS feed of 他山之石

程序员做副业有哪些选择

程序员在做副业方面拥有诸多优势,他们可以利用自己的技术专长和逻辑思维能力,在业余时间开展多种副业。以下是一些程序员常见的副业选择:

  1. 接私单或外包项目

    • 程序员可以在各大外包平台(如程序员客栈、gulu、开源众包、devnors等)或个人渠道上接取软件开发、网站维护、移动应用开发等私单或外包项目。
    • 这种方式能够灵活安排工作时间和工作量,但需要具备一定的项目管理和沟通协调能力。
  2. 在线教育和培训

    • 程序员可以利用自己的技术知识,在在线教育平台(如慕课网、小鹅通、CSDN学院等)或自建网站上开设编程课程,教授编程语言、框架、技术工具等。
    • 通过制定详细的课程计划、准备教学材料、录制教学视频等方式,提供高质量的教学服务。
    • 这种方式不仅能够分享自己的知识和经验,还能获得额外的收入。
  3. 技术博客和内容创作

    • 程序员可以在技术博客平台(如CSDN博客、oschina开源社区博客、Medium、Dev.to等)上撰写技术文章、分享编程经验和技术见解。
    • 通过提供有价值的内容,吸引读者关注,并通过广告、赞助或付费订阅等方式盈利。
    • 这种方式需要持续学习和更新自己的知识,以保持博客的竞争力和吸引力。
  4. 开发个人软件项目或应用

    • 程序员可以利用业余时间开发个人软件项目或应用,如移动应用、网站、桌面应用程序等。
    • 通过销售、广告或提供增值服务来获得收入。
    • 这种方式需要制定详细的计划、进行市场调研、选择合适的技术栈、进行开发和测试等工作。
  5. 技术咨询和解决方案

    • 程序员可以为客户提供技术咨询和解决方案服务,帮助他们解决技术难题、优化业务流程等。
    • 通过在线平台、社交媒体、个人网站等途径宣传自己的咨询服务,并建立长期的合作关系。
    • 这种方式需要具备一定的专业知识和经验,以及良好的沟通和解决问题的能力。
  6. 参与开源项目

    • 程序员可以参与开源项目的开发和维护,提升自己的技术水平和在开发者社区的影响力。
    • 通过分享自己的开源项目,获得曝光和star,可能会吸引需求方向你抛来橄榄枝。
    • 开源项目也可以作为一个简历上的亮点,增加自己的竞争力。
  7. 其他技术相关副业

    • 程序员还可以尝试其他技术相关的副业,如数据分析师、网络安全咨询师、AI应用开发者等。
    • 这些副业需要具备一定的专业知识和经验,以及持续学习和更新的能力。

程序员在选择副业时应考虑自己的兴趣、能力和市场需求等因素,并制定出合理的计划和策略。通过不断学习和提升自己的技能水平,程序员可以在副业领域取得更多的成就和收益。

fail2ban变更iptables封禁策略为DROP

fail2ban的默认iptables封禁策略为 REJECT --reject-with icmp-port-unreachable

在/etc/fail2ban/action.d/目录下创建文件 iptables-blocktype.local

内容如下:

[Init]
blocktype = DROP

重启fail2ban服务后,iptables封禁策略变更为DROP

Eclipse正则表达式查找匹配多行

使用Eclipse的正则表达式(Regular expressions)查找替换(Find/Replace)功能时,如果需要匹配多行,可以在搜索表达式中添加(?s)参数。

例如从下面的HTML文本中匹配<p class="strong"></p>的段落内容

可以采用正则表达式:(?s)<p class="strong">.*?</p>

<!doctype html>
<html>
<head>
    <title>Example Domain</title>
    <meta charset="utf-8" />
    <style type="text/css">
    .strong {
        font-weight: bold;
    }
    </style>    
</head>
<body>
<div>
    <h1>Example Domain</h1>
    <p class="strong">This domain is established to be ...

继续阅读

Java实现单向链表的归并排序

由于链表(LinkedList)不支持随机访问(Random Access),只允许顺序访问,因此对于链表的O(logn)时间复杂度的排序算法不可以采用诸如快速排序等基于随机访问的排序算法,而归并排序可以满足这一需求。

归并排序是分治法(Divide and Conquer)的典型应用,其伪代码如下:

merge_sort(list) {
  split list into two halfs, say first and second ;
  merge_sort(firstHalf);
  merge_sort(secondHalf);
  merge(firstHalf,secondHalf);
}

下面的Java代码实现了对单链表(singly linked list)的归并排序,代码实现优美,可读性强,具有较高的参考价值:

// The main function
public Node merge_sort(Node head) {
    if (head == null || head.next == ...

继续阅读

Discuz升级3.x社区银行插件金钱同步问题解决方案

原文链接:Discuz升级3.x社区银行插件金钱同步问题解决方案

在Discuz 2.x版本安装社区银行插件版本2.2(http://addon.discuz.com/?@bank_ane.plugin)可以正常使用

但是,升级Discuz版本到3.x之后,社区银行插件存取款金额与用户显示金额出现不同步的问题,导致插件无法正常使用。

问题描述参阅:http://www.discuz.net/thread-3484982-1-1.html

社区银行插件:当我存金币时,理应减少我个人账户的金币,取金币时应该增加个人账户金币,两者都无反应。
我升级到3.0后,才发现此问题,升级到3.1后,也一样,插件卸载删除目录后重装,问题依旧。
在用户存款时候他处理了几个事情
1、读取个人积分,
2、扣除个人积分,,
3、扣除相关手续费
4、增加银行帐号资金

故障原因实际上是Discuz 3.x修改了用户数据的缓存更新机制:

默认为0“永不更新”,导致后台数据库操作用户积分后,与前端显示不一致。

解决方案可选择下列2种方式:

  1. 停用用户数据缓存
  2. 将用户数据更新时间设为一个非0数值,之后删除用户缓存