Coder Social home page Coder Social logo

imike-blog's People

Contributors

essencemike avatar

Watchers

 avatar

imike-blog's Issues

关于代码生成器

关于代码生成器

开始我非常反感代码生成器,认为他是没有作用的,浪费时间,浪费精力,生成的代码还是要修改,不能直接使用。后来我发现因为每个人都有自己的编码习惯,想要让所有的鞋的代码都是一个风格是一件非常困难的事情,后期的维护非常麻烦,但有了代码生成器就不一样了,很多共性的代码可以用代码生成器来完成,保证一模一样。后期维护非常简单。

吉日大神总结的代码生成器的好处:

  1. 效率高,可以在1分钟内生成几万行代码。
  2. 代码质量高。因为都是一个生成器生成出来的,代码的风格一致,以后好维护。
  3. 不用反复测试,人是靠不住的,很容易马虎、偷懒,代码生成器不存在这个问题。
  4. 可以把人从重复劳动中解放出来,用更多的精力去关注更核心的业务逻辑、系统的优化。

如果手写代码是小米加步枪,代码生成器就是飞机加坦克,当然小米加步枪也有战胜后者的时候,打游击战前者优点更多,但是打打仗、正面交锋还是后者更强一些,不承认不行啊。当然也不能过于夸大他们的功能,要用后者的长处,少用后者的短处。

做前端的这些年,前端越来越庞大,所以前端出现了很多脚手架,其实我觉得脚手架就是代码生成器,他将一些共同的地方封装起来,这样可以快速生成。代码生成器有利有弊,虽然代码生成器可以使代码质量很高,风格高度统一,但是这些都是共同的部分,业务逻辑代码还是需要不同的人来开发的,这时候代码风格还是难以保持统一。

但是后来想想程序员都擅长偷懒,你写好模子之后,都会照着你的模子继续开发,这样代码风格可以变相的统一。现在的前端我觉得已经越来越离不开脚手架了,代码生成器的优势还是很明显的。

前台页面设计比后台实现更值钱

前台页面设计比后台实现更值钱

看到这篇文章的时候我感触良多,做前端3年以来,见证了前端的发展,从jsp慢慢发展到拥有了自己的技术栈,angular,react,vue的框架的出现,webpack,gulp等构建工具,node服务器等等前端发展越来越完善。

但开始的时候前端一度是不被重视的,“前端有什么可做的,不就是写写html,css,js吗?”。就像吉日写到:

我不知道见过多少个程序员,写程序乱不说,页面排版也很乱,美化就更不用提了,但是借口很好: “功能对了不就可以了?还搞那么认真干啥?”,你给我100万,我给你一个茅草屋,不就是为了睡觉吗?功能难道不对?你愿意给我钱吗?

而且吉日大神还写到这就像有2个少女一样,一个少女长得很漂亮,但是没有内涵修养。一个长得不是很好看,但是很有内涵修养。要是你是男的,你会选哪个?其实真的是这样前台页面设计不好的话,后台在稳定在强壮也没有用,人家根本看不到,第一眼的感觉不好,项目就很难谈成。

现在是大数据时代,html5,css3,svg都大放异彩,前台页面也越来越华丽,各种动画,各种绚丽的特效。现在的主要的方向是大数据的可视化,如何利用svg,canvas等做出方便的可视化页面。

现在也有很多库来实现,包括d3,echarts等都可以很好的实现,包括3D效果等等,前端的效果要求越来越绚丽。再加上webGL,前端做游戏也不是梦想了。

前端越来越重要,吉日大神写到:“程序是技术,设计是艺术。技术可以批量生产,艺术无法批量制造啊。在没有搞科技的开发里,还是艺术更值钱一些。有艺术细胞,还会一点儿技术,那才是人才!”。

看来我也要培养一下艺术细胞了...哈哈。

为什么要创业

解读吉日嘎啦著的 《程序员你伤不起》之 为什么要创业!

为什么要创业?

  正确的答案是: 我已经发现了一个确定可以赚到钱的项目!

  我的答案是: 经验丰富、技术强、积累了5年的成熟的开发框架、项目开发周期短。
我那时就有比较成熟的 B/S 和 C/S 的开发框架,而且是兼容的,有稳定的权限系统,只开发业务模块就可以了,开发效率高,别人为此投入了上百万的学费,我现在是成本低、风险低、有竞争力,自己干劲也足。
后来想想,我这是瞎扯淡,必败无疑。

  关于为什么创业,技术扎实,积累丰富只能作为你的基础,或者说你的工具,而不是理由,当让你可以当成是你创业的动力。更重要的是你发现了一个实现自我的机会。

我是个有经营头脑的人吗?

  正确的答案是:经营头脑不等于管理头脑,也不等于执行头脑,没有经营头脑的人,不适合独立创业!

  我的答案是:天天想技术,走火入魔,根本没把管理当回事情,甚至觉得管理是多余的,浪费时间,浪费钱财,
我这TMD是哪儿到哪儿啊。

  这就是为什么现在创业的都需要好合伙人,多数都是联合创业。技术大牛好找,懂业务、有经营头脑、会管理、又很信任的人很难找。

如何判断一个项目是好项目?

  我的答案是:刚创业,有项目就可以,先解决生存问题,在解决稳定发展,什么项目都做,因为觉得有把握,以前也几乎没失败过。

  这是吉日没有讲到怎么判断一个项目是好项目,因为要先解决温饱...,个人觉得项目没有好坏,要看你对公司的定位是什么。是想专注某一个方向慢慢发展、慢慢积累,还是想快速积累资金。其实对于现在的创业来说这个问题变得很简单了,就是你如何定位自己的公司,找准方向,因为现在的风投相对于以前还是好很多,你可以得到一笔不错的启动资金。

财务预算与控制

  我的答案是:交给合伙人全权负责。又不是我老婆,也不是我家人,我怎么这么糊涂呢?

  钱的问题还是要控制在自己或者家人手中,大家都懂的...

只追一只兔子,一定把它追到手!

  我的答案是:各行各业的开发项目都做,培训也做,两条腿走路,我连内部小饭馆也开了呀。

  其实这就是公司要对自己有个定位,什么都做就很难在某个方向有所突破,有所积累。

如何与人合伙

  创业的人,超过半数选择合伙,而合伙人就像现在的婚姻一样,破裂的多,完美的少,也许不到七年就痒了吧?

  我的答案是:虽然跨越了两个年头,但是只有半年左右就闹分家了。

在这个风投的时代感觉破裂的更多...

把自己摆正位置

  我的答案是:我到底应该重点抓哪个方向?次要的可以放一放,事必躬亲是不行的。

  这就是管理艺术,一个人的精力毕竟是有限的,如何能利用好身边的人创造出无限的价值才是正确的。或者说将自己放到更需要的地方去以达到自我价值最大的发挥。

创业改变不了一个失败的打工者

  我的答案是:还是一直打工比较好,这个还是有点儿信心的。

  我觉得创业还是可以改变一些东西的,至少你可以从你工作的地方学到很多,学到你失败的原因。

对行业的认识程度,上游下游的掌控

  我的答案是:先杀出第一步。不迈出第一步,永远没有第二步。啥叫上有下游,根本没有放在心上,干了2年,绝大部分利润全部被中间人拿走了,都是在给别人拼命干活。

  从我创业开始就分出去3家小公司,哇靠,这个门槛也太低了,从我这里就分出3~4个公司来啊,虽然创业是给自己创业,钱都被别人赚了,这还不如打工呢,打工最起码还轻松愉快,每个月按时发工资。

  就我个人看来盲目的迈出第一步是很不明智的,你会在忙碌的工作中逐渐失去方向(因为你本来就没有方向),当然有的人会说你不去尝试,只是在不停的计划,那么理想、梦想就会变成空想。所以如何把握这个度,什么时候迈出第一步是很重要的。

害人之心不可有,防人之心不可无

  虽然领着老虎打猎能抓到鹿,领着猫打猎只能抓到老鼠,但是老虎也会随时吃掉你。还有自己创业计划等,不应该轻易地给别人讲,给别人推演,自己的公司也不要让局外人过多接触。

  这个没有什么好说的,就是标题:害人之心不可有,防人之心不可无。

靠人的买卖是最不可靠的

  相信机器的可以说不是傻瓜,相信人的绝对是傻瓜。人不是机器,人有脑子,有**,是最难管的,而且人是不断变化思维、变化想法的。做外包,为啥不给自己做?我看你这么干有前途,我为啥不可以做?我又不是比你傻呀,我为啥给你干活?

  我感触最深的并不是这些,而是代码生成器(后面会将详细),开始我非常反感代码生成器,认为他是没有作用的,浪费时间,浪费精力,生成的代码还是要修改,不能直接使用。后来我发现因为每个人都有自己的编码习惯,想要让所有的鞋的代码都是一个风格是一件非常困难的事情,后期的维护非常麻烦,但有了代码生成器就不一样了,很多共性的代码可以用代码生成器来完成,保证一模一样。后期维护非常简单。所以能用机器来完成的就不要用人去完成。

偶然必然的概率关系

  这么多年了,还真没亲眼见过谁搞IT软件,发达成功了。所有的公司都是赔钱搞IT软件,不管规模大小,日子都比较艰难,现在回想起来,还真不如到澳门赌一下来的爽快,最起码有10%的成功率,又不累,也不浪费时间,还更刺激一些。

  我无害人之心,希望像创业或者将要创业的朋友,多想想,多思考,然后在创业,经商不只是编写程序,编写程序只是经商的很小的一部分而已。我们只是工人,不要一时头脑发热,冲动是魔鬼,烧钱也别烧家里的钱,烧自己的钱,最好烧别人的钱。为社会做出点儿贡献,多创作几个就业机会,解决一下就业难的问题。

  现在的风投就是这种模式,创业在烧投资人的钱。现在是互联网时代,搞IT成功的还是有很多的,APP大行其道。但是一味的烧别人的钱,自己找不到赢利点,必然也是会失败的。毕竟投资人也不是傻子,这就是为什么现在是互联网的寒潮,投资人都很谨慎。因为好多人都是盲目创业。

目前正在看吉日的《程序员你伤不起》这本书,虽然是以前的书,但是你们讲的一些东西还是能给我们很多启发,我也会陆续的更新自己的感悟,希望可以帮到大家。同时也强烈推荐大家去看看这本书。

团队工作氛围

公司团队工作氛围

吉日大神说:“天下的乌鸦是一般黑的。没有理想的公司,只有个人去适应公司。理想的工作环境只在天堂里有,想干啥就干啥,薪水多多的,压力小小的。”

而现实的公司是这样的:

  • 有些公司,人人都想着跳槽高攀,要是哪个人跳槽到了另一个号公司,拿了多少薪水,学了什么技术等,大家都很羡慕,以他为榜样,天天投简历,天天寻觅哪个公司可能有机会。这样的环境下,人人都没心思干活,导致公司恶性循环,产品质量不好,没人专心做事情,也没人负责,大家就把这里当成过渡的跳板。这样的公司老板其实也很可怜的,给大家按月发工资,却是在给别人做嫁衣。
  • 有些公司,人人都飘在空中,人人都干那些轻飘不累的活儿,表面看起来很热闹,其实大家都没有好好干活,走走形式敷衍了事。这样的公司也基本上长久不了,很快就进入困境,因为没人在踏踏实实干活,给公司赚钱,尽搞那些没多大用的花架子,客户是不会为此买单的(也许能碰上傻帽客户)。
  • 有些公司,人人都在抱怨,说这里不好那里不好,这里不完善那里不完善,没有规章没有制度,时间长了,竟然成了公司的文化了。所有人天天抱怨公司,能说出无数个不完善的地方,然后自己天天上网,看看新闻、电影、聊QQ,或者学习些技术什么的。大家不知道为啥整体找理由找借口。自己不反过来想想,公司就是这些人组成的,公司不行,说白了,就是这些人不行!
  • 有些公司,人人都喜欢玩技术,天天玩技术,结果项目没人做。客户是不看技术的,客户要的是功能。同样的功能,用越简单的技术实现了,越是省事省心省力。有些刚开始走得很好的公司,往往会走入技术的怪圈,人人都热衷于研究技术,没人想做实际项目,实际项目累人啊,无法蒙混过关,那是要应用到实际生产里的,什么错误、问题都会暴露的。说白了,公司是咨询公司还是技术研发公司没有定位好,从咨询公司走向了技术公司,结果公司Game Over了,搞技术也是要有强大的研发实力才可以的。
  • 有些公司,人人都抱怨学不到技术,其实能学到的技术都是很有限的,学技术很大程度上要靠自己。现在找工作也不容易,也要适当地珍惜工作机会才对,何况网络这么发达,想学技术,相对来讲还是比较容易的。
  • 有些公司,人人抱怨工资低,工资其实是你自己创造出来价值的一部分而已,靠剥削公司是不太实际的,公司是需要赚钱的,公司是需要剥削员工的,否则公司怎么发展呢?若你觉得创造出来的价值真的很可观,拿到的工资的确很低,那你可以去找老板商谈一下了。
  • 有些公司,人人觉得工作压力太小了,没能得到提高,真跳槽了,到了一个压力很大的公司,工资又不高,周末也没休息,晚上也要加班,公司又在郊区,交通也不方便的,干不了一年,就彻底绝望想跳槽了。这是真的,给多少钱,都不想干了。

自己工作这3年也带过了2个公司,以前的公司大家都还比较踏踏实实,但是太满足于现状了,从老板到员工都不想着改变自己,是自己更好,总觉得现在已经可以了。现在这个公司,有一个很好的架构师,他是一个技术狂,他的评判标准就是你要不断的变化。不断的玩技术,这样的人他的评价很高,就是吉日大神所说的,大家都在玩技术,谁来做项目呢,做项目的没有功劳吗?

其实我觉得工作的氛围是非常重要的,团队里面的人要踏踏实实的,但是要有很强的学习氛围,不满足于现状,同时有不会过度的、一味的玩技术。其实这就是**人一直讲究的中庸之道。中庸不是平庸,他是一种态度,既不过分激进,也不过分平庸。团队稳定,公司才能长久发展。

svg中use等标签和html中base标签冲突的问题

SVG中使用use等标签和html中base的冲突问题

  • svg attributes: ['clip-path', 'color-profile', 'src', 'cursor', 'fill', 'filter', 'marker', 'marker-start', 'marker-mid', 'marker-end', 'mask', 'stroke’]
  • check attribute value for url(...) using regex

在SVG中使用上面的属性的时候,要检查是否使用的 url 来引入的,如果使用了url 来引入的话,就需要注意html的head中是否使用了base标签

如果使用了base标签的话,url的引入机制就会发生变化,导致引入不进来。请看下面的例子:

<svg style="width: 100%;height:100%;" class="svgGraph" xmlns="http://www.w3.org/2000/svg" "> 

    <g id="rootGroup" transform="translate(175, 175)">

        <path class="link" fill="#eb4f38" d="M0,124C654,124 654,124 1308,124"></path>

        <g class="node" id="e5b306f27b614ee58e5df8282091a52c" transform="translate(0,124)">

            <circle class="node-dot" r="35" stroke="#FB5F6D" stroke-width="4"></circle>

            <text x="20" dy=".35em" text-anchor="end">FLUME</text>

        </g>

        <g class="node" id="d22c856d5efe40d2b4ddedfdd72b1894" transform="translate(1308,124)">

            <circle class="node-dot" r="35" stroke="#46cdc7" stroke-width="4"></circle>

            <text x="20" dy=".35em" text-anchor="end">KAFKA</text>

        </g>

    </g>

    <defs>

        <filter id="f1" filterUnits="userSpaceOnUse">

            <feColorMatrix result="matrixOut" in="SourceGraphic" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 0"></feColorMatrix>

            <feGaussianBlur result="blurOut" in="matrixOut" stdDeviation="10"></feGaussianBlur>

            <feBlend in="SourceGraphic" in2="blurOut" mode="normal"></feBlend>

        </filter>

    </defs>

    <g class="menu">

        <circle id="out-circle" class="ring" cx="175" cy="299" r="115" fill="rgba(0, 0, 0, .3)"></circle>

        <circle id="in-circle" class="ring" cx="175" cy="299" r="90" fill="white"></circle>

        <circle class="ring-button" r="35" cx="175" cy="299" stroke="white" stroke-width="2" filter="url(#f1)" fill="white" transform="translate(0,99)"></circle>

        ...

    </g>

    <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#e5b306f27b614ee58e5df8282091a52c" x="175" y="175"></use>

</svg>

上面是没有使用base标签的时候,filter: url(#f1) 是可以显示出来的,当使用了base之后:

<html>

<head>

<base href="/">

</head>

<body>

<svg style="width: 100%;height:100%;" class="svgGraph" xmlns="http://www.w3.org/2000/svg" "> 

    <g id="rootGroup" transform="translate(175, 175)">

        <path class="link" fill="#eb4f38" d="M0,124C654,124 654,124 1308,124"></path>

        <g class="node" id="e5b306f27b614ee58e5df8282091a52c" transform="translate(0,124)">

            <circle class="node-dot" r="35" stroke="#FB5F6D" stroke-width="4"></circle>

            <text x="20" dy=".35em" text-anchor="end">FLUME</text>

        </g>

        <g class="node" id="d22c856d5efe40d2b4ddedfdd72b1894" transform="translate(1308,124)">

            <circle class="node-dot" r="35" stroke="#46cdc7" stroke-width="4"></circle>

            <text x="20" dy=".35em" text-anchor="end">KAFKA</text>

        </g>

    </g>

    <defs>

        <filter id="f1" filterUnits="userSpaceOnUse">

            <feColorMatrix result="matrixOut" in="SourceGraphic" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 0"></feColorMatrix>

            <feGaussianBlur result="blurOut" in="matrixOut" stdDeviation="10"></feGaussianBlur>

            <feBlend in="SourceGraphic" in2="blurOut" mode="normal"></feBlend>

        </filter>

    </defs>

    <g class="menu">

        <circle id="out-circle" class="ring" cx="175" cy="299" r="115" fill="rgba(0, 0, 0, .3)"></circle>

        <circle id="in-circle" class="ring" cx="175" cy="299" r="90" fill="white"></circle>

        <circle class="ring-button" r="35" cx="175" cy="299" stroke="white" stroke-width="2" filter="url(#f1)" fill="white" transform="translate(0,99)"></circle>

        ...

    </g>

    <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#e5b306f27b614ee58e5df8282091a52c" x="175" y="175"></use>

</svg>
...

这是如果 filter: url(#f1) 就显示不出来了。

解决方案

如果前端主流框架Angular 1.3之后的版本都支持html5Mode模式,这时候就需要设置base属性。包括如果使用nginx反向代理之后也需要设置base属性
只需要将location.href添加到url中即可

<base href="http://someone.com">

<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://someone.com#e5b306f27b614ee58e5df8282091a52c" x="175" y="175"></use>

如果使用框架,并且use等标签是js动态生成的,那么:

var useEle = document.getElementById('use');

// 或者使用jq, 这是使用jq

var useEle = $('#use');

useEle.attr('xlink:href', window.location.href + d.id)

        // .attr('fill-opacity', 0)

        .attr('x', 175)

        .attr('y', 175);

投简历的问题

投简历的问题

  我经常会收到一些简历,附件的名字一般是“简历.doc”NND,我不知道发这个简历的人有没有想过,当我接收到几十个叫这个名字的文件时,真想当场就把这个邮件删除了。每个简历都需要仔细保存到另外的位置,怕把别人的覆盖了,再打开简历,看名字,再另外命名,然后又存到本次招聘的人员列表里。其次是经常在简历里看到错别字,哎,请你把简历仔细写好,检查一下错别字;还有,没有电话号码、邮件联系方式的,排版也很乱的。别人看中你了,你也得留下联系方式让人好联系你吧。

  若不是我工作负责一些,绝对当场就删除你的邮件了,理由很简单:一个不会换位思考的问题的人,也绝对不会写出啥好的程序来。

写好简历确实是一个大问题,刚毕业的时候也犯过这样的错误,那时候啥也不知道,写的简历很糟糕,也很长时间找不到工作,其实现在想想发现真的想吉日所说的一样,负责招聘的人每天要收到非常多的简历,如果全是这样的,对他的工作量是一个很大的提高,他心情自然不会很好,你让他心情不好,他自然不会给你好好办事。很容易就会删掉你的简历。这为我们提了一个警钟,以后面试,简历一定要写好。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.