• 2

  • 很多人无脑直接装系统,这种情况下就是问题了。如果自己知道改prefix当然另当别论。

    另外像是你说的pg,还是要有人盯着官方的安全补丁,勤升级才好。有时候连带其他组件更新也需要重新编译。比如nginx可以选择静态编译OpenSSL,那OpenSSL有新的安全更新的时候,就要连带nginx一起重新编译了。

    而且就算要自己编译,我也是提倡用发行版自己的打包脚本来编译,减少每次编译之间带来的差异。我们这维护一个nginx mod版,就是debian打包脚本然后用docker编译成deb包,这样版本更新进度一目了然,而且编译过程reproducible。

  • 没有编程经验……这个超纲了,臣妾不知道啊……

  • #12是一方面。 另一方面是软件版本管理,make install装好以后很容易忽视安全更新。

  • 首先第一条,不要用make install安装软件包……

  • 入门的定义本来就不一样,怎么比较。

    部署一个Ruby网站需要你拿个VPS来搞;部署一个PHP网页只需要你找个免费空间FTP传上去。

    当时同样做一个MVC结构的网站:

    Rails命令行直接Generate,PHP你得先挑个或者做个框架……

  • 不折腾这个词本身就有两层含义。

    一是不用自己去定制,免得浪费自己宝贵的时间。

    二是仿佛你得认他做爹,什么都得听他的,没你的话语权。

    这也是安卓VS苹果中的一个关键点。对于普通人来说,拿到一台手机,听厂商的话,照着厂商给你定义的使用方式使用就行了。但是对于一小撮人来说,我的手机我做主,那就会变成「折腾」。买个能刷机的,解开BL,刷上自己惯用的安卓发行版,按照自己的喜好定制启动器、锁屏、按钮条等等……

    类似的还有什么群晖VS DIY NAS……还有波音VS空客……还有自动挡VS手动挡等等。

    具体想不想折腾,还是看人的风格习惯吧。如果你喜欢「让机器听人话」,你可能会更喜欢Linux环境。

  • 变量标识符是没有object_id的。

    对象是有id的。

    你把新的对象赋值给变量标识符,对象的id当然会改变。

  • 输入是什么?输出是什么?你别光给输出不给输入啊。

    如果只是要输出一个宽度为输入的半菱形的话

    num = 4
    row_sizes = 2.upto(num).to_a + (num-1).downto(1).to_a
    puts '*' # 第一行
    row_sizes.each {|width| puts '*' * width} # 重复多遍来反复输出
    
    # => *
    #**
    #***
    #****
    #***
    #**
    #*
    
  • ruby 没有 do while 语句吗? at 2019年02月15日

    据说比较提倡用break来实现。

    loop
        s += (cn % 2).to_s
        cn /= 2
        break unless cn > 0
    end