对于程序员来讲工作外的编程需求如何寻找呢? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
dodng12
V2EX    程序员

对于程序员来讲工作外的编程需求如何寻找呢?

  •  
  •   dodng12 2019-12-18 17:58:25 +08:00 3189 次点击
    这是一个创建于 2139 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我坐标北京,写代码有 7 年了,自认为实现某一功能或基于开源东西修改完成需求问题不大,可是除了工作
    上需求之外,如何自己主动去寻找写代码要实现什么功能呢?

    举例:redis 的那个长头发的作者是怎么想到要把这件事单拎出来开源的呢。。。?
    26 条回复    2019-12-20 09:18:02 +08:00
    crella
        1
    crella  
       2019-12-18 19:21:37 +08:00 via Android
    我有一个属于个人的非营利性的需求。非 it 专业。

    我看过 python3 的 pandas,好像没有自动更新单元格的说法,对应 Excel 的自动重算工作簿功能。

    所以我现在需要一个:后端:具有 excel 基本文本函数、基本计算函数、基本统计函数的功能;具有自动重算表格的功能、自定义变量和函数的功能。前端:简单的网页或者 qt windows 程序都可以。

    之所以有这个需求,因为之前处理数十万行表格,wps 稍微力不从心而且内存占用 2G 多;看不惯 vba 语法;因为经常要更改公式和判断逻辑,又不愿意用 Excel 高版本的数据库函数来写公式:最后竟然是手写 vb.net 程序来加工的。读取 csv,生成结果到 csv,.net 4+g4560 单核要一分多钟时间。

    那个需求的语法呢,尽量简单。

    现在稍微实现了一些很简单的计算功能,感慨实在是太难了。自动重算工作簿还没想好怎么搞。
    crella
        2
    crella  
       2019-12-18 19:25:25 +08:00 via Android
    excel 虽然很强大,但是不少函数存在不人性化的地方(自我感觉)。因为常用的编程语言,返回结果可以是数组、哈希、单变量等等,但是 excel 返回的结果基本都是按单元格来存放。

    还有 excel 的多层条件判断,几个括号叠起来实在太恶心…… 处理 vlookup 和 iferror,加上各种 offset、indirect,还有函数之王的 sumproduct 和 mmult……这些其实用常用的脚本语言来处理,绝对比 excel 的方式更好理解。
    crella
        3
    crella  
       2019-12-18 19:31:41 +08:00 via Android
    现在是往 dsl 的方向去考虑,比如用 python 或 lua 作解析器,那么类 excel 功能的语法也按 python 或 lua 的语法来设计。……
    wangkai0351
        4
    wangkai0351  
       2019-12-18 19:31:55 +08:00
    你这个编程需求要不要和钱产生关联?要和什么产生关联?换句话说,是什么导向的需求?
    magicluna01
        5
    magicluna01  
       2019-12-18 19:36:19 +08:00
    自己做产品经理~
    dodng12
        6
    dodng12  
    OP
       2019-12-18 19:43:08 +08:00
    @wangkai0351 有兴趣和当作事业去做吧,反馈可以是用户的信任和认可,并不一定是钱。
    dodng12
        7
    dodng12  
    OP
       2019-12-18 19:44:04 +08:00
    @crella 我看好你哦,有些东西看起来简单,做起来麻烦不断
    dodng12
        8
    dodng12  
    OP
       2019-12-18 19:45:29 +08:00
    @magicluna01 产品经理首先也得先想到做一个产品吧,尝试过解决生活中的痛点问题,但是感觉不明显啊,有种只缘身在此山中的错觉
    wangkai0351
        9
    wangkai0351  
       2019-12-18 19:50:48 +08:00
    @dodng12 这个东西要和事业和用户反馈沾边啊,那怪不得你想不出来呢,这个东西一开始背负的压力够大的。
    crella
        10
    crella  
       2019-12-18 19:58:39 +08:00
    @dodng12 目前最大的收获是知道了 ruby 里面哪些函数的性能消耗出乎意料的大,以及如何安排变量和函数要放在那个模块和类里面来防止污染……无脑 eval 流,就怕接受了错误的数据,eval 出错导致抛出异常到全局。
    IMCA1024
        11
    IMCA1024  
       2019-12-18 20:25:16 +08:00
    hui 产,
    代写,
    个人项目 side project
    Mutoo
        12
    Mutoo  
       2019-12-18 20:46:22 +08:00
    Nginx 之父被捕:程序员业余时间写的代码算公司的?
    https://www.huxiu.com/article/331133.html
    hehheh
        13
    hehheh  
       2019-12-18 20:46:53 +08:00
    先把 leetcode 刷完吧,之前做题纯粹为了面试。现在每天不刷一道题浑身不舒服
    ddzzhen
        14
    ddzzhen  
       2019-12-19 08:36:23 +08:00 via Android
    应该有现成的 python 库可以实现,忘记名字了,可以脱离 excel 实现
    dodng12
        15
    dodng12  
    OP
       2019-12-19 10:17:52 +08:00
    @Mutoo 瑟瑟发抖中
    dodng12
        16
    dodng12  
    OP
       2019-12-19 10:18:38 +08:00
    @wangkai0351 压力肯定有,找不到方向的感觉,可能这个阶段也是必须要经过的吧
    dodng12
        17
    dodng12  
    OP
       2019-12-19 10:20:06 +08:00
    @hehheh 刷 leetcode 也是种消磨时间提高自己笔试水平的途径,可是如果长期坚持下来感觉意义不大啊
    hehheh
        18
    hehheh  
       2019-12-19 10:28:48 +08:00
    @dodng12 意义不大?额,你已经做完了?
    dodng12
        19
    dodng12  
    OP
       2019-12-19 10:34:28 +08:00
    @hehheh 木有啊,一般身边人都是面试前刷一些题,进新单位之后一般都不刷了。。。。。
    samwalt
        20
    samwalt  
       2019-12-19 15:59:58 +08:00
    @crella python ruby vb.net 都会?最后用 ruby 写?
    crella
        21
    crella  
       2019-12-19 16:53:17 +08:00 via Android
    @samwalt 不会 python,vb.net 也是面对搜索引擎编程。ruby 算是勉强背的住常用的。
    samwalt
        22
    samwalt  
       2019-12-19 18:20:35 +08:00
    @crella 谦虚了。ruby 哪些函数性能消耗厉害?
    EscYezi
        23
    EscYezi  
       2019-12-19 20:23:54 +08:00 via iPhone
    当自己需要什么却找不到满意的工具的时候。
    之前攒了些 txt 的科幻小说想看,iOS 上没找到好用的阅读器,就自己用 PHP 写了个网站,后来改造一下 API 弄了个小程序,结果发现个人资质通过不了......
    用它看了两本书之后就没碰过了,后来网站挂了也没管,代码都找不着了(基地系列真好看)
    现在又觉得没有满意的日记应用,于是我又开始了......
    crella
        24
    crella  
       2019-12-19 23:20:49 +08:00 via Android
    @samwalt 我也算是夸大了吧。

    首先要看一下流行的那个 ruby 编程的规范,建议什么的。里面提到迭代器尽量用 range.each do |i|; …… ; end 而不是其他语言中常用的 for i in range 的形式。因为在 ruby 里面,后者 for 实际上是调用了前者 each 的封装,还有就是后者会把变量 i 暴露给代码下文。

    还有就是 ruby 的函数的参数都是对象引用方式(我之前看到的,不知道是不是都是这样。)在函数里面修改一个传入的对象会影响到那个对象本身。

    还有用 str <<来追加字符比 str +=快,也减少内存消耗,因为后者在不断生成新的字符串对象。隔壁贴说这在其他语言里 str +=基本上都被优化。

    还有:a='t'; b = a; b.gsub!('t', 'y')会影响到 a 的值。

    当 str.gsub!和 str = str.gsub 要达到同样的效果时,后者消耗内存较大,但是速度可能相差不大。

    同时我也感觉 func1(obj1); func1(objN)比 obj1.func2; objN.func2 要快,这里假设 func1 和 func2 对 obj 的影响是等效的。

    str.gsub 默认把参数看成正则表达式,我记得 string 有个方法会在替换的时候默认把参数看出字符串。

    还有就是在某个函数里读取全局变量会比在函数内本身读取 传入的这个变量 的 等效值 要快。我觉得可能是搜索全局变量比较耗时。

    str == '' 比 str.empty?又慢一点。

    符号量之间互相比较和字符串之间互相比较要快,因为后者是遍历各个字符。

    不显式指定函数的返回变量会慢一点。也就是函数里面最后一行的值加不加 return 语句。

    感觉 ruby 的设计还是有些不方便的,奈何轮子好用,就 irb、load 和 eval 都够我用了……作为一枚菜鸟暂时没什么追求。
    crella
        25
    crella  
       2019-12-19 23:22:35 +08:00 via Android
    还有就是在某个函数里读取全局变量会比在函数内本身读取 传入的这个变量 的 等效值 要 (之前这里输入错,应改成:)慢 。我觉得可能是搜索全局变量比较耗时。
    samwalt
        26
    samwalt  
       2019-12-20 09:18:02 +08:00
    @crella 谢了。str += 在之前的 java 里也是生成新的字符串对象,最新的 jdk 里不知道是否优化了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2754 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 12:37 PVG 20:37 LAX 05:37 JFK 08:37
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86