• Jenkins 系统升级 at 2014年07月25日

    这不是典型的升级后的症状么

  • svn 自动加锁功能 at 2014年07月24日

    冲突肯定是有的。代码覆盖丢失真是那么频繁的发生么? 本地修改代码后、提交代码到 svn 之前应该先 update,合并代码后再提交,这怎么能把代码丢失?

    如果丢失了,肯定要查查怎么丢失的,谁没合并就覆盖别人的代码了。这是个工作态度的问题。

    查清楚这些背后的原因,比慌忙的去找咋解决更有意义。

  • 你也快成面霸了。上海的职位都快让你面试完了。

  • 这是一个职位还是两个职位? 工作地点在哪里?

    把详细的职位要求说说。你这样发贴,可能收到的简历没针对性。

  • 三库的概念害了不少人啊。

  • 右键-> Run as administrator

  • Centurion A deployment tool for Docker. Takes containers from a Docker registry and runs them on a fleet of hosts with the correct environment variables, host volume mappings, and port mappings. Supports rolling deployments out of the box, and makes it easy to ship applications to Docker servers.

    We're using it to run our production infrastructure.

    Centurion works in a two part deployment process where the build process ships a container to the registry, and Centurion ships containers from the registry to the Docker fleet. Registry support is handled by the Docker command line tools directly so you can use anything they currently support via the normal registry mechanism.

    If you haven't been using a registry, you should read up on how to do that before trying to deploy anything with Centurion. Docker, Inc provide repositories, including the main public repository. Alternatively, you can host your own, or Quay.io is another commercial option.

    Status

    This project is under active development! The initial release on GitHub contains one roll-up commit of all our internal code. But all internal development will now be on public GitHub. See the CONTRIBUTORS file for the contributors to the original internal project.

    Installation

    Centurion is a Ruby gem. It assumes that you have a working, modern-ish Ruby (1.9.3 or higher). On Ubuntu 12.04 you can install this with the ruby-1.9.1 system package, for example. On OSX this is best accomplished via rbenv and ruby-build which can be installed with Homebrew or from GitHub.

    Once you have a running, modern Ruby, you simply:

    $ gem install centurion With rbenv you will now need to do an rbenv rehash and the commands should be available. With a non-rbenv install, assuming the gem dir is in your path, the commands should just work now.

    Configuration

    Centurion expects to find configuration tasks in the current working directory. Soon it will also support reading configuration from etcd.

    We recommend putting all your configuration for multiple applications into a single repo rather than spreading it around by project. This allows a central choke point on configuration changes between applications and tends to work well with the hand-off in many organizations between the build and deploy steps. If you only have one application, or don't need this you can decentralize the config into each repo.

    It will look for configuration files in either ./config/centurion or ..

    The pattern at New Relic is to have a configs repo with a Gemfile that sources the Centurion gem. If you want Centurion to set up the structure for you and to create a sample config, you can simply run centurionize once you have the Ruby Gem installed.

    Centurion ships with a simple scaffolding tool that will setup a new config repo for you, as well as scaffold individual project configs. Here's how you run it:

    $ centurionize -p centurionize relies on Bundler being installed already. Running the command will have the following effects:

    Ensure that a config/centurion directory exists Scaffold an example config for your project (you can specify the registry) Ensure that a Gemfile is present Ensure that Centurion is in the Gemfile (if absent it just appends it) Any time you add a new project you can scaffold it in the same manner even in the same repo.

    Writing configs

    If you used centurionize you will have a base config scaffolded for you. But you'll still need to specify all of your configuration.

    Configs are in the form of a Rake task that uses a built-in DSL to make them easy to write. Here's a sample config for a project called "radio-radio" that would go into config/centurion/radio-radio.rake:

    namespace :environment do task :common do set :image, 'example.com/newrelic/radio-radio' host 'docker-server-1.example.com' host 'docker-server-2.example.com' end

    desc 'Staging environment' task :staging => :common do set_current_environment(:staging) env_vars YOUR_ENV: 'staging' env_vars MY_DB: 'radio-db.example.com' host_port 10234, container_port: 9292 host_port 10235, container_port: 9293 host_volume '/mnt/volume1', container_volume: '/mnt/volume2' end

    desc 'Production environment' task :production => :common do set_current_environment(:production) env_vars YOUR_ENV: 'production' env_vars MY_DB: 'radio-db-prod.example.com' host_port 22234, container_port: 9292 host_port 23235, container_port: 9293 end end This sets up a staging and production environment and defines a common task that will be run in either case. Note the dependency call in the task definition for the production and staging tasks. Additionally, it defines some host ports to map and sets which servers to deploy to. Some configuration will provided to the containers at startup time, in the form of environment variables.

    All of the DSL items (host_port, host_volume, env_vars, host) can be specified more than once and will append to the configuration.

    Deploying

    Centurion supports a number of tasks out of the box that make working with distributed containers easy. Here are some examples:

    Do a rolling deployment to a fleet of Docker servers

    A rolling deployment will stop and start each container one at a time to make sure that the application stays available from the viewpoint of the load balancer. As the deploy runs, a health check will hit each container to ensure that the application booted correctly. By default, this will be a GET request to the root path of the application. This is configurable by adding set(:status_endpoint, '/somewhere/else') in your config. The status endpoint must respond with a valid response in the 200 status range.

    $ bundle exec centurion -p radio-radio -e staging -a rolling_deploy Rolling Deployment Settings: You can change the following settings in your config to tune how the rolling deployment behaves. Each of these is controlled with set(:var_name, 'value'). These can be different for each environment or put into a common block if they are the same everywhere. Settings are per-project.

    rolling_deploy_check_interval => Controls how long Centurion will wait after seeing a container as up before moving on to the next one. This should be slightly longer than your load balancer check interval. Value in seconds. Defaults to 5 seconds. rolling_deploy_wait_time => The amount of time to wait between unsuccessful health checks before retrying. Value in seconds. Defaults to 5 seconds. rolling_deploy_retries => The number of times to retry a health check on the container once it is running. This count multiplied by the rolling_deployment_wait_time is the total time Centurion will wait for an individual container to come up before giving up as a failure. Defaults to 24 attempts. Deploy a project to a fleet of Docker servers

    This will hard stop, then start containers on all the specified hosts. This is not recommended for apps where one endpoint needs to be available at all times.

    $ bundle exec centurion -p radio-radio -e staging -a deploy Deploy a bash console on a host

    This will give you a command line shell with all of your existing environment passed to the container. The CMD from the Dockerfile will be replaced with /bin/bash. It will use the first host from the host list.

    $ bundle exec centurion -p radio-radio -e staging -a deploy_console List all the tags running on your servers for a particular project

    Returns a nicely-formatted list of all the current tags and which machines they are running on. Gives a unique list of tags across all hosts as well. This is useful for validating the state of the deployment in the case where something goes wrong mid-deploy.

    $ bundle exec centurion -p radio-radio -e staging -a list:running_container_tags List all the containers currently running for this project

    Returns a (as yet not very nicely formatted) list of all the containers for this project on each of the servers from the config.

    $ bundle exec centurion -p radio-radio -e staging -a list:running_containers List registry images

    Returns a list of all the images for this project in the registry.

    $ bundle exec centurion -p radio-radio -e staging -a list Future Additions

    We're currently looking at the following feature additions:

    etcd integration for configs and discovery Add the ability to show all the available tasks on the command line Certificate authentication Customized tasks Dynamic host allocation to a pool of servers Contributions

    Contributions are more than welcome. Bug reports with specific reproduction steps are great. If you have a code contribution you'd like to make, open a pull request with suggested code.

    Pull requests should:

    Clearly state their intent in the title Have a description that explains the need for the changes Include tests! Not break the public API If you are simply looking to contribute to the project, taking on one of the items in the "Future Additions" section above would be a great place to start. Ping us to let us know you're working on it by opening a GitHub Issue on the project.

    By contributing to this project you agree that you are granting New Relic a non-exclusive, non-revokable, no-cost license to use the code, algorithms, patents, and ideas in that code in our products if we so choose. You also agree the code is provided as-is and you provide no warranties as to its fitness or correctness for any purpose

    Copyright (c) 2014 New Relic, Inc. All rights reserved.

    https://github.com/newrelic/centurion

  • 你可以简单介绍下自己,比如工作几年,想在哪里找配置管理的职位?薪水有没有要求。

    如果碰到合适的我们可以给你推荐。

    你也可以关注我们的微博,到时候有职位直接 at 你. weibo.com/scmroad

  • 广州伟 : 看看你那版本库的文件夹权限有没有问题。。 北京 - 霜 : 没有吧,刚创建一个账户 付给的是全权限 广州伟 : 不是啊,,是说文件夹的本地权限 北京 - 霜 : 权限刚都设置了 777 广州伟 : 将运行 APACHE 服务的用户 ,给权限 默认给的是 ROOT 的吧。。 广州伟 : ps -ef|grep apache 查不到进程,那服务肯定没启动起来呀 北京 - 霜 : 起来了呀 [attach] 2408[/attach] 广州伟 : 那你用 svn:// 协议访问看看。。 登陆 北京 - 霜 : [attach] 2409[/attach] 就是一输入用户名密码就到下面界面了 [attach] 2410[/attach] 广州伟 : 可能原因应是: 你的 APACHE 服务没与 SUBVERSION 连接起来。 上次我也是这样的,后来发现我的用户密码文件用错了,改了下这里面就正常了。。 [attach] 2411[/attach] 看看 用户密码文件,权限文件有没有错。

  • 这么多配置管理的职位,慢慢找肯定能找到

  • 这么多人面试。面试什么了?结果如何?

  • 关于 slave 假在线的问题 at 2014年07月16日

    不错,自己发现的方法是最好的。

  • 关于 slave 假在线的问题 at 2014年07月16日

    [i=s] 本帖最后由 laofo 于 2014-7-16 13:50 编辑

    Windows?机器死机是什么个现象? 如果这个时候从 jenkins 运行一个 job,这个 slave 运行吗?

  • 其实这样的要求到研发团队里去找更合适。

  • 第一次听说王春生的名字还是从 bugfree 那段狗血的事件中

  • 是的。松耦合,易定制

  • 北京-pikaqiu : Error retrieving baselines satus for this stream 季节·天空 : 源码库的问题? 北京 - 恐龙 : 首先 问题没说明 1、svn 服务器是由源代码编译生成?版本分别是什么? 2、项目代码迁移方式是什么? 3、在迁移前是否有问题 季节·天空 : 1.是源码库,未经编译 2.源码库压缩,共享到待迁移服务器,然后解压,放入 svn 源码库中,经测试客户端新增删除操作正常 3.迁移前无该报错 源码库迁移,所以包含历史所有版本 北京 - 恐龙 : 换 1.7 客户端再试 svn 项目代码仓库迁移不建议直接使用压缩解压方式,除非保证两个 svn 服务器软件版本一致 季节·天空 : 直接共享传输源文件相对安全吗? 对于较大的 svn 文件建议采用什么方式传输? 北京 - 恐龙 : dump load 是最好的,能检测是否有文件断层 虽然有点慢

  • 季节·天空: svn 客户端版本是 1.8 以上,较新的版本 服务器端是啥版本 :2.8.4 数据也是压缩过后共享传的 svn 工具本身有这种检测功能吗? 检出结束时,报错显示最终结果是 complete,但是存在无效的 xml 想定位一下,是工具方面的问题,还是源码库的问题?

  • 这就是最近发生的一件十分狗血的事情。

  • @ 俞昊然 泡面吧项目内部一些事情,本想内部解决,只可惜谣言已经浮世;对于每个犯错误的人,我们本应多给予机会,奈何不了某同学完全迷失。对用谎言堆出的一亿估值我无法认同,做教育的人更是要为人正直,习惯性的撒谎要不得。细想想,这是我 lead 的第 4 个项目了,沉下心做事,一切都不难。http://t.cn/Rv3Sakf

    鉴于近期关于泡面吧项目团队和众学致一网络科技(北京)有限责任公司的传闻四起,严重干扰了泡面吧项目团队的工作、影响了泡面吧项目团队的形象,为正本清源,特向各位关心和爱护泡面吧的各方人士说明事实并作出声明。

    2012 年 1 月,俞昊然申请注册了 “paomianba.com” 域名,同年 4 月构思完成了泡面吧项目的创意。同年 12 月,俞昊然设计了泡面吧商标,并邀请其在美国伊利诺伊大学香槟分校的学弟参与了 “泡面吧” 早期版本的开发。随后,俞昊然按照项目开发需要,陆续邀请多位成员加入,截止 2013 年 1 月,产品基本成型,进入封闭测试。2013 年 2 月,因项目缺乏综合后勤人员,俞昊然招募严霁玥加入(成为泡面吧项目团队第 8 位成员)。严霁玥负责人力资源、财务、法务、行政工作。2013 年 4 月,因项目需要加强内容开发运营力量,俞昊然招募王冲加入(成为泡面吧项目团队第 10 位成员)。王冲前期负责内容开发者关系维护,后期负责项目融资工作中的投资者关系维护。王冲加入第二天(2013年4月21日),项目进入内部测试阶段。

    2013年6月7日,创始人俞昊然代表泡面吧项目在天津进行路演,启动寻求天使投资的进程,并和某天使基金进行了首次接触。同年 10 月,在上述天使基金表示对泡面吧项目有进一步了解的兴趣后,当时身在美国的俞昊然指派王冲与相关基金进行进一步沟通、交流。同年 12 月 24 日,在俞昊然未被告知公司股权结构、注册资本等基本情况,并被假冒签名的情况下,众学致一网络科技(北京)有限责任公司成立;2014年6月19日,俞昊然委托律师向工商登记主管部门查询才得知,公司登记成立时,王冲持有该公司 65% 股份,严霁玥持有该公司 10% 股份,为该公司的执行董事。

    2013年12月16日,在俞昊然尚未同意主要条款,被假冒签名的情况下,王冲、严霁玥、“俞昊然”、上段提及的天使基金与另一天使基金以及当时尚未成立的众学致一网络科技(北京)有限责任公司签订了所谓的 “投资协议”。2014年5月20日,俞昊然首次被告知了上述协议的签署版本内容(该版本协议与此前俞昊然被告知投资协议最终版本信息严重不符,在该协议中,保证了投资人及执行董事有权合法剥夺俞昊然的全部股份),并首次了解到该协议已经不需要俞昊然作为当事人进行签字认可,当场表达了强烈的抗议。在此后与投资人见面的过程中,俞昊然被极力排除在外;俞昊然即使参加会面也只能叙述个人经历,不能纠正王冲、严霁玥夸大和背离事实的描述(王冲在媒体面前也曾陈述了大量不准确或不真实的信息,详见:http://blog.paomianba.com/post/156d26_1664e84)。

    2014年6月20日,泡面吧团队经商标查询发现,因严霁玥重大失职,“泡面吧” 商标在关键适用类别上被他人抢注;严霁玥利用职务便利,将泡面吧项目指派其注册的域名注册在个人名下,并称其为个人财产,造成泡面吧项目蒙受重大损失;王冲、严霁玥于2014年6月30日,未经许可擅自对 mian.ba、paomian.ba 等涉及泡面吧业务的域名进行操作,严重影响网站正常服务;严霁玥于2014年7月1日,擅自将项目团队和原先的用户管理人员从用户 QQ 群中踢出,严重妨碍产品市场运营工作。

    鉴于以上事实,严正声明如下:

    1. 泡面吧项目团队正式开除王冲、严霁玥,收回各类管理权限,并保留追究相关责任的权利。

    2. 泡面吧项目团队享有泡面吧项目代码无可争议的著作权。泡面吧项目团队成员责令众学致一网络科技(北京)有限责任公司及相关人员、王冲、严霁玥停止直接或间接使用非法窃取获得的泡面吧项目代码。泡面吧项目团队成员保留追究相关法律责任的权利。

    3. 泡面吧项目团队成员保留追究众学致一网络科技(北京)有限责任公司及相关人员、王冲、严霁玥伪造泡面吧项目团队成员中任一个人签字、非法冒名签署重要文件相关法律责任的权利。

    4. 泡面吧项目团队成员责令众学致一网络科技(北京)有限责任公司及其及相关人员、王冲、严霁玥停止诽谤、恶意诋毁以及其它所有损害泡面吧项目团队成员中任一个人的名誉的行为。泡面吧项目团队成员保留追究相关法律责任的权利。

    5.俞昊然享有泡面吧的商标设计的著作权,俞昊然责令众学致一网络科技(北京)有限责任公司及其及相关人员、王冲、严霁玥停止使用泡面吧商标。俞昊然保留追究相关法律责任的权利。

    6.泡面吧项目团队已经申请成立项目公司北京矩道优达网络科技有限公司。泡面吧所有业务已由该公司正常运营。其他任何公司或个人以 “泡面吧” 名义从事的任何行为均属于侵权行为,泡面吧项目团队成员保留追究相关法律责任的权利。

    泡面吧项目团队

    2014年7月2日

    额外说明:泡面吧项目团队除王冲和严霁玥外,近期并无人离开项目组,请大家周知。

  • 下面是杨斌所复述的场景:

    当天晚上九点多钟吧,大家就坐到一起,然后好像是王冲这边主动先提的,说我们这边形式一片大好,拿到了 termsheet,我们需要来聊一下股权这些的东西了。

    王冲说这一轮稀释是从他开始,一直要稀释到比昊然多 1%,就停止,然后两个人再一块稀释,再向下就再稀释严霁玥的。

    然后当时昊然就提出来,到底是谁占大股?王冲的意思就是说,他自己占 30% 多,但是代持了一部分,昊然占 20%,霁玥占 10%。然后说完之后,昊然提出来说当初可不是这么说的,为什么不是说好的我当大股东呢?

    昊然说是天使这么要求原来的股份比例的,但是说好到了 A 轮的时候会调过来,就说了这么一句话。然后王冲说他们没这么说过。所以看得出来王冲和昊然对同一件事情的描述是截然相反的,所以我自己的判断是,他们两个人当中有一个人撒了谎,但说实话我至今也没有证据说他们两个当中到底是谁说了谎。

    后来他们谈不拢,当时昊然就收拾他的电脑和键盘,已经是哭腔了,往外走,我还记得他的原话是 “我爸说的没错,你们就是欺负我”,可以说是一边哭着一边走出去了。当时我就觉得一个 92 年、一米九这么个个子的人说了这样的话,当时就有些心疼。

    包括后来我们私下聊天的时候会讨论说,创始人会不当大股东?大家就觉得很奇怪。

    Update:应昊然要求,我把他在文章底下的评论加到文章当中来,下面是他的一些直接回应:

    关于王冲说法中签 ts 的问题:我从来没说过股权的事情不解决好,我就不签 A 轮的 ts,我的表述一直是,“如果不给天使投资人、A 轮约谈的投资人说实话,我是不会签字的;同时,财务、法务存在甚至可能涉及刑事案件的问题,必须先弄清爽了才可以”。另外,在这也补充一点,王冲做媒体接洽说的假话,我一直在给他擦屁股,到今天网上都还有一堆稿子没换干净,前不久不得不出了一个文章来解释这些问题;在法务上,一个早就告诉我去做注册的商标被人在关键大类抢注了;财务上,实际花销怎么算都算不出现在花的这么多。各位读者,作为一个多少懂点法律的人,不难判断出如果签了 A 轮 ts,后面调查有任何可能性通过吗?恐怕过桥贷款都得连本带利还人家吧?

    关于和员工沟通的问题;沟通当天晚上,实际上王冲已经表示要和解,我这边也就基本同意了,后来我回去和员工说:达成了和解,大家都很愉快,对于不规范的事情,我们都已经决定好会规范下来,大家后来一直在人大边上避风塘聊天到天亮;我也一直和员工说,当天晚上是我设计的一场戏,就是让王冲重新能认识自己在团队中到底做了多少贡献,应该是什么位置,大家当时还开玩笑说我是 “俞导”。第二天王冲去和员工沟通完后,大家心情反而很低落、很绝望一个个打电话找我谈话,说我不厚道,大晚上回去和大家在住处旁边天桥那一点点梳理清楚,才算是弄了个明白,大家都是理科生,列举事实作出判断对于团队成员来说,没成为什么大问题。大家除了现在偶尔被一些 “无秘” 里面的消息恶心一下外,还都是在一起开心的赶 checkpoint 的。

    我们和投资人一起协商这个事情属实,之前一天达成了一个方向性的约束,我也认可这个方向性,并且和投资人说了需要进一步商量细节。第二天,为了保证事情做的合法,我带着律师去,当时现场一位投资人说了一些很抵触法律,甚至有些违背天使投资人本性的话(当然,事后他们道歉了,也就不需要太多追究)。对于之前一天晚上电话里说的框架,我们并没有提出修改,但是细节,当天我们没有达成一致,我和王冲约定 27 日再谈。26 日,我专门在微信找王冲约时间,他说需要和霁玥商量,此后一直到周五 24 时都没有再回复我。在这种情况下,我们才最终宣告和谈失败。

    我主观上的确认为王冲和霁玥应该引咎辞职,但我并未认同 “重大贡献”。如果大家不介意,王冲如果也愿意,我觉得可以让王冲自己列举下自己的工作具体一共有多少,然后大家可以找个代表人照着他邮件一一验证,然后我们可以再帮他计算下应该花费的工作时间。这样,或许所有人都可以明白他是否是有 “重大贡献”,还是他实际上对项目造成了重大损失。在霁玥的问题上,我觉得我就更不用赘述了。之前的评论中已经明确描述了那些失职的行为和相应的损失。

    刚才员工打电话提醒我,让我说一下:github 上代码当时的确删除了,但是所有技术员工手里都有大部分代码,王冲作为非技术人员在没有我允许和签字的情况下,在后来和天使谈判过程中声称自己有(获取来路不明的)老一些版本的代码,这违反我们的技术规范,也可能涉嫌窃取商业机密。其次,teambition 上所有的项目都好好的待着呢,员工很容易验证,我相信,如果必要 teambition 的 CEO 齐俊元应该也会愿意帮我验证并且说明一下的。邮件不存在封锁一说,当天按照原计划就在要求加强密码强度,只是王冲很久一段时间没在公司,不知道当时的事情,除了有一个同事的密码重置后不是名字全拼外,当时修改密码前,大家密码都变成了拼音全拼。继续说,当时的确有两封邮件,在当场我也陈述了,一封是会自动发给天使投资人的,一封是会自动发给 A 轮接洽投资人的,里面内容是关于之前谈投资期间,撒的谎和应该的事实,以及公司真实的发展计划;但是因为后来王冲表现出和解的态度,并且表示愿意一起去和投资人当面解释清楚,我才让另一个员工卡住邮件没有发出。如果有必要,两封邮件回头也可以披露,都带着时间,在邮箱的草稿箱里躺着呢。

    各种先斩后奏,关于公司的问题各种骗我。到现在我都还是一个合同或者协议上的字都没签过的状态。而且当时霁玥还给我发了邮件,让我 copy and paste 确认允许她代为办理,但必须委托人(也就是我)自己签字我自己才认可。结果后来字都没签就告诉我办完了,等我回来才给我看个伪造了签字的投资协议的具体版本,然后告诉我当时邮件里写委托人的意思是 “被委托人”,是漏了个字……然后我各种抗议就被他们说成小孩不懂事,要拿 A 轮就得按照原来撒谎版本继续撒谎;去合肥到我家,还和我父亲说要保持口径一致,一起撒谎,不能让人知道我还在读书,不然 A 轮就进不来了。有的时候一回想,真有点生气,我父亲作为一个大学老师,天天告诉那些硕士、博士要坦诚做人,凭什么要为两个 “骗子” 的面子来统一口径,简直胡闹。

    后话:

    你可能会想,为什么 36 氪要写这么一篇文章?这是一篇八卦吗?不是的。其实从我的角度来说,我想记录一家我报道过的公司它完整的生命历程,为何最终它在即将闪耀的时候,又突然失去光芒,发生了所有人意料之外的事情。我想弄清楚这里面的前因后果是什么,参与其中的人的心理因素是什么,以致有最终这个结局。

    总结来看,最关键的可能就是天使轮的协议到底是怎么签的,以及那个口头协议到底是怎样的?结合我自己听过的一些经历,觉得创始团队之间的利益权责分配,最好是能在关键时刻来临前,有一个清晰的纸面协议,不然后果基本无力回天了。

    另外对于这件事情本身,我的想法是,不可能有人可以下道德判断,但是在商言商,既然选择了创业,就应该想到所有的一切必须也只会按照成熟的商业逻辑走下去,哪怕它有现实或者很残酷的一面。所有人都只能选择面对、迎击,要不,就选择离场。

    目前王冲和昊然还没有达成最后的解决协定,还是希望他们可以妥善顺利解决这件事情。

    感谢我的同事 leon 和 @truant 同学对这篇文章的帮助,没有他估计我也完成不了第一次写这种文章的尝试。

  • 上传个最近在知乎上看到的图片。 [attach] 2392[/attach]

  • @ 杭州 - 两点:面试是门技术活,跳得太多的后果就是没人敢要你,哥们在单位也面过很多小伙伴,三年跳槽五次的,基本连简历筛选都通不过。 @ 济南-fixed:我认识一个小伙伴从来就没张国工资,没拿过年终奖,没在一个单位待满过一年,都是靠跳槽涨薪。 @ 成都 - 笑哈哈:什么时候跳一跳比较健康?五年没有跳过,也没有涨工资了,哎。 @ 济南-fixed:还是看个人发展,不能让公司成为制约自己发展的瓶颈。五年不涨工资,这公司也太不像话了。

    总结:总跳槽不行,不跳槽也不行。关键是个度。不要轻易跳槽,但是如果跳过去就要踏实的工作。

  • linux+svn+apche at 2014年07月03日

    弄清楚什么时候用哪个文件也就都清楚了