V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
linoder
V2EX  ›  程序员

14 年 7 月份入职,马上 PHP 从业满周年,总结下工作

  •  1
     
  •   linoder · 2015-05-17 23:19:51 +08:00 · 5589 次点击
    这是一个创建于 3479 天前的主题,其中的信息可能已经有所发展或是发生改变。
    关于PHP:

    关于PHP本身就学会了一件事搭框架。最开始用ThinkPHP发现,实现一个小项目引入那么多不必要的文件,实在是杀鸡用牛刀。随即学会了__autoload实现基本的MVC框架,接下来的许多英文站项目就用自己写的框架。进公司后前几个项目只是为了读写XML以及解析HTML源码,框架引入phpQuery作为XML的读写器。后来调用频率高了,服务商会返回Busy状态,自己实现了一个文件形式的Cache类,通过把对象两次json_encode,存储在磁盘,且引入了Cache过期机制(其实很简单,文件头部写明expire time,create time,读到时候判断过期没有,如果过期了重写一下,弊端就是不经常访问的cache会保存在目录。我是在linux下面写了一个Cron定期删除cache …… 好土),熟悉了很多File操作的东西。最近需要用到一些管理功能,就在框架中加入了模仿ThinkPHP的DB操作类,写起代码来顺手了很多。

    关于优化:

    就会用Memcached,构造出特殊key,实现数据的高速读写,定时持久化到数据库,销毁对象,仅此而已。

    关于前端:

    说实话,公司中写的前端页面比较少,私活写的多一些。HTML5+CSS3手写能很熟练的依据设计稿写出响应式页面,私有一套适合自己用的CSS reset,当然也结合已有的css reset了。为方便一般会用jQuery,原生JS也会用,但不精通。同样帮朋友写过简单的EDM,了解了很多EDM必须要注意的技术点。也会Bootstrap,不过如果不是特别紧的项目,怕自己荒废了基本功,所以并不经常用。

    关于Linux:

    说来惭愧,L从上学时候就用,目前也就是chmod、chown、ls、find、grep、axel、lvm分区的vg*、lv*这些基本的命令的水平。

    数据库:

    老土的增删改查,基本JOIN,或者FULLTEXT/MATCH/AGAINST这些,最多用个事务确保数据并发读取一致。

    一句话总结:

    范范的度过了一年,又老了一岁。

    以后的技术路程,应该怎么走呢?该学哪些呢?
    30 条回复    2015-06-13 16:43:49 +08:00
    pein0119
        1
    pein0119  
       2015-05-17 23:43:33 +08:00
    虽然是PHP研发,但不要老是局限于语言层面。
    linoder
        2
    linoder  
    OP
       2015-05-18 00:37:45 +08:00
    @pein0119 小公司,重点在于业务逻辑。 算法、数据结构什么的,上学时候也玩过一段时间。工作一年再没怎么刻意玩过。一年时间,学的不多,忘掉的倒是不少。
    Wangxf
        3
    Wangxf  
       2015-05-18 02:24:03 +08:00
    哈哈,同去年7月毕业,不过我是前端,我司也是用thinkphp,不过网上鄙视tp的蛮多的,不过我觉得蛮顺手啊,可能是没用过其他框架或者本身不是做php的体会不到吧
    g8287694
        4
    g8287694  
       2015-05-18 08:56:16 +08:00
    同样是去年7月份 差不多一年 LZ比我强多了
    sixbyte
        5
    sixbyte  
       2015-05-18 09:21:48 +08:00
    我觉得使用框架会本末倒置
    watcher
        6
    watcher  
       2015-05-18 09:25:31 +08:00
    跟我现在经历差不多,有时间交流一下?q 四1515393五
    pein
        7
    pein  
       2015-05-18 09:54:46 +08:00
    一年就学成这样,挺厉害的,楼主秋秋多少?一起交流下学习心得
    lidashuang
        8
    lidashuang  
       2015-05-18 10:13:26 +08:00
    @sixbyte 难道你要从头造轮子!!
    huigeer
        9
    huigeer  
       2015-05-18 10:24:07 +08:00
    楼主很不错了, linux还是要多多掌握练习, mysql建议多读读高性能mysql , 设计模式和企业架构方面的也要涉及学习下, 尽量往架构的方面发展
    linoder
        10
    linoder  
    OP
       2015-05-18 10:31:54 +08:00
    @Wangxf TP挺好的,只是杀鸡用牛刀不合适。
    linoder
        11
    linoder  
    OP
       2015-05-18 10:33:52 +08:00
    @g8287694 都只是用了一下而已,学到的实际上很少,是皮毛。
    shenxian
        12
    shenxian  
       2015-05-18 10:34:33 +08:00
    非科班,业余接触PHP快两年了,现在那本《》还没翻完,云主机玩了一堆,用wordpress搭了博客也没怎么写。。感觉我这一年才是迷茫没长进。共勉加油
    shenxian
        13
    shenxian  
       2015-05-18 10:38:19 +08:00
    @shenxian 晕 书名忘写了 PHP 和 MySQL Web开发。看书学习,给公司打了个报表数据处理+查询的简易网站
    linoder
        14
    linoder  
    OP
       2015-05-18 10:45:17 +08:00
    @sixbyte 用了一段时间框架,确实能学到很多框架的设计思路,虽然也就过眼云烟,但刚看明白的那瞬间是很惊艳的感觉。不过比起原生的自己打磨一个框架,学的效率不多。话说回来了,小公司做出东西才是王道,确保性能和稳定性满足产品需求就行,业务流程是大头。我是这样认为的,你呢?

    @watcher 好的加你了。

    @pein 不才,许多只是用了一点点,铺展开来说罢了。感觉根本没有学到什么,都是皮毛,但又不知道怎么才算学会。说下你的,我也很想找人交流交流。
    @huigeer 谢谢建议,数据库确实很头大。现成的库、表需要操作,难度我感觉不是大问题,毕竟操作不会了还有百度。可是让我独自设计一个系统的表、库结构,我HOLD不住。感觉模块划分更多的依赖于经验,以前就了解“不要通过数据流来划分模块”。不过到现在都不知道怎么样正确的划分。DB用的少,我会找机会多用用的。
    ChoateYao
        15
    ChoateYao  
       2015-05-18 12:07:27 +08:00
    如果你觉得数据库蛮OK,Linux操作系统也还可以,这时候我觉得你可以看下单元测试、代码重构、设计模式、代码整洁之道之类的东西,毕竟这些是基础哪种语言都需要用上。
    sixbyte
        16
    sixbyte  
       2015-05-18 12:33:24 +08:00
    @lidashuang 小公司确实是要做出东西来, 用框架是正确的.我thinkphp用过一段时间,现在公司用laravel,但由于框架太过强大,有时候会发现,就算不懂php, 看懂框架的官方文档就能编程. 过于依赖框架,就和题主的学习本末倒置了.
    raincious
        17
    raincious  
       2015-05-18 12:39:44 +08:00
    @sixbyte

    你刚好说明了框架存在的意义。

    相反,如果能用框架做出稳定可靠的东西,为什么要“深入研究”语言特性?何况现在语言的趋势就是尝试忽略具体的技术细节,将注意力集中在业务上,这样才能提高效率。否则PHP这种语言都不会存在,因为C也(就)能写服务器啊,甚至汇编(当然)也能写。

    (所以,正因为如此,考察语言细节才能准确体现出程序员的编程能力。
    pein
        18
    pein  
       2015-05-18 13:21:47 +08:00
    @linoder 28零7702二07
    yangmls
        19
    yangmls  
       2015-05-18 13:45:26 +08:00
    @sixbyte 那只能说明你们公司对代码质量的要求太低了,laravel 那点文档根本不顶用,很多代码你想写好,不把 laravel 源码翻得底朝天根本不知道如何写出 best practice 的代码。

    我平时和一些 php 码农打交道的过程中,能把 laravel 用好的少之又少。一个人不懂 PHP 也能编程?换句话说,连 PSR 都不懂的码农写出来的 php 代码能看?
    linoder
        20
    linoder  
    OP
       2015-05-18 13:56:53 +08:00
    @ChoateYao 我觉得,我目前对于PHP掌握的还是很少。打算再造一个好的轮子。

    @sixbyte 偶尔读读好框架的源码真的受益匪浅,Laravel久仰大名一直没看,我是重度手癌患者。


    @raincious 的确,差异大多在基本功。http://wulijun.github.io/php-the-right-way/ 我时不时会翻开这个看看。

    @pein 已经添加

    @yangmls 重度框架用的好真心不容易,我觉得比再造轮子都难。
    cvmax
        21
    cvmax  
       2015-05-18 14:03:00 +08:00
    我还在你的第一句话里面折腾呢
    pein
        22
    pein  
       2015-05-18 14:23:37 +08:00
    @linoder 对方设置了“只允许通过email添加”。。
    linoder
        23
    linoder  
    OP
       2015-05-18 16:22:01 +08:00
    @pein 我已经加你了 sigleo[#]foxmail.com
    cougar
        24
    cougar  
       2015-05-18 22:55:30 +08:00
    做了一阵子php了,一直没有用过ci和tp之类的框架,觉得太大,觉得用php和smarty模板就挺好用的了
    crabRunning
        25
    crabRunning  
       2015-05-19 00:42:44 +08:00 via Android
    和楼主同一届的,撸过东西也算蛮杂的,刚开始也是thinkPHP起步,后来撸了initPHP,也提交过一些代码,再后来撸了之yii,再后来就自己撸了个框架,当然PHP周边也折腾了很多,诸如sphinx,coreseek,mongo,redis有sphinx,coreseek之类,
    lujiajing1126
        26
    lujiajing1126  
       2015-05-19 14:40:41 +08:00 via Android
    以前做php好多年,做过专职前端架构,后来换了公司做rails去了,又学了安卓,现在做了nodejs。。当中服务器运维什么都干过
    业务方面感觉好无聊,现在觉得游戏,服务器和系统编程比较有趣
    charlestang
        27
    charlestang  
       2015-05-19 16:37:40 +08:00   ❤️ 1
    看了楼主的帖子,感触蛮深的,我是工作了5年的PHP

    1. 一个框架用好、用透就行了,别的框架也差不多,触类旁通的,不用自己写一个框架的,除非你觉得你写一个能够锻炼你的能力,否则的话,大部分应该有的功能,各种框架已经实现遍了,基本上,写框架除了练习,就是浪费时间了;

    2. PHP在语法上没有任何难点,设计思想上,基本上也没有什么亮点和营养,就是一个解决问题的语言,所以,个人觉得,归根结底还是去解决问题,学习解决问题的通用方法;比如面相对象方法论,设计模式,这些都是指软件构建时候的一些通用方法论,是值得去研究的,但是不必拘泥;

    3. 前端技术发展太快,而且个人也觉得是在朝着不断解放生产力的工程实践创新方向发展,没有技术本质的进步,没有必要去跟随,太过累了;

    4. 关系型数据库还是存储的主流,尤其是MySQL,基本是高性能、低成本的同义词了,还是要深入掌握的,尤其是InnoDB,索引,理解越深越好;

    5. 网站架构师可能是一个发展方向,走到后来,你不得不跟java,python,ruby,node,go,等各种兄弟开始竞争;

    6. 架构师要了解网站所有的层面的问题,并有所掌控。比如网站在规模扩大的时候,会遇到什么困难,比如数据库访问压力,那要怎么去处理,加cache,nosql,然后,读写分离,一主多从,队列;然后会有什么困难,可能是io压力,怎么平行扩容,冷备,热备,自动切换,自动伸缩,容灾;多种业务有不同特性,比如高并发,间歇性;读多写少,读少写多;高可靠优先,高性能优先,取舍问题;还有一种,类似游戏和聊天之类的,有大量连接的问题,怎么去处理;

    7. 架构师基本是技术广度的问题,鸟哥的道路也不错的,就是技术深度的问题,比如研究PHP的解释器,从领域语言层面解决问题,实现扩展,进而到改进PHP内核,都是不错的发展方向,只是我觉得,这是光荣的荆棘路,要吃得了苦,耐得住寂寞;
    linoder
        28
    linoder  
    OP
       2015-05-19 16:38:17 +08:00
    @cougar 看个人喜好 以及 公司要求了


    @crabRunning 牛,允许我膜拜一下


    @lujiajing1126 强人
    linoder
        29
    linoder  
    OP
       2015-05-19 17:10:31 +08:00
    @charlestang 非常感谢前辈的指点。我之所以会自己写一个简单框架确实只是希望能熟悉下PHP。实际开发中也发现自己写的框架坑确实不少,这也许是一个必经之路,不自己撸一把,永远也不知道别的框架有什么优秀特性。

    学艺不精,目前来说,PHP的许多东西还没摸透,估计等熟练的差不多,我才能像你一样说语法没任何难点。

    感触较深的就是“业务的抽象能力”,原本上学时候没什么想法,工作一段时间真的体会到这方面的不足。单独说清楚设计模式不是很难,但在何种情况用何种模式我自己还是有些心虚。重度手癌患者,欠缺太多工程知识。

    自己对前端比较生疏,只是停留在大体做出页面这个层次,用过一点Canvas,高端的MVVC框架譬如AngularJS之类没用过,目测以后主要精力在PHP后端。我数据库知识了解的太少,有待学习,实际工作中用都没怎么用过,也是预期精力投入的重点之一。

    我想等到前面这些学好,项目经验丰富起来,后面的事情就很好办多了。

    感慨前路漫漫,谢前辈经验分享。
    zymanor
        30
    zymanor  
       2015-06-13 16:43:49 +08:00
    hi,你好,我们霍比特公司目前在招募php技术伙伴,自荐或推荐成功奖金5000元哈(单身技术宅男,帮找女朋友),下面是我们在拉勾网的招聘信息,感兴趣的话可以看一下哦。http://www.lagou.com/jobs/206691.html
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   949 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 19:31 · PVG 03:31 · LAX 11:31 · JFK 14:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.