从零开始做产品 – 第一周

本人88年生,现即将离职的科研狗一枚,有Web开发, UI设计, 算法开发和工程经验若干,某日脑洞大开,于是启动了一个项目51好导师,主攻求职服务市场,主攻求职面试的培训和咨询。 因为产品开发是从2周前开始的,现在第一版已经上线,于是在这里先补充一下过去两周发生的事情。
本来求职者的面试培训,咨询以及可能的后续技能培训这块服务是考虑以B2C的形式来组织,但在接下来的Web线上平台开发过程中我意识到在没有单独项目经费(除了我可怜的工资)的情况下利用平台的项目服务收入来支撑自有员工的工资是不现实的。于是,C2C就成了我初期唯一的选择,因为所有产品开发都由我自己进行,所以没有任何产品开发上的现金开支,C2C不用养员工,唯一要做好的就是考虑平台的宣传和推广(虽然也很艰难)。
接下来就是产品设计,因为求快,我直接参考了业界已有的一些服务众包平台,但UI原型没有直接照抄,主要借鉴交互流程。最后因为设计,开发都是我一个人,所以没有出设计图, 直接上代码实现原型。这里直接在一个开源bootstrap模板的源码上进行二次开发。
本来技术上我倾向于ReactJS这套前段Render体系,以后也方便移植到ReactNative移动端上。但是速度就是一切,为了提高初期的开发效率,我还是采用了原始的html + css网页体系,布局使用bootstrap栅格系统。Web后台程序的选择,我激进的选择了golang语言并采用了beego框架。使用新语言虽然有开发效率上的损失,但考虑golang的执行效率(省VPS钱)和golang语言本身带来工程高规范性我还是愿意在这上面进行时间投资。
就这样摸索这golang和beego框架,经过两周的开发,我完成了平台第一版原型的所有基本功能。

前两周的事情回顾完了,现在从本周开始。

原型完成了,但是推广成问题。上线后百度客服打了很多电话,但是我没有推广费用。传统的SEO可以增加搜索曝光量,但是用户没有对51好导师这个产品的品牌认知,没有搜索关键词一样没有流量,况且我没有传统SEO的实操经验。所以我决定先以自媒体的形式生产内容,推广自媒体获取第一批内容用户,然后在合适的机会把用户导流到51好导师的服务页面以寻求用户现金流。

于是乎,自媒体的载体确定就成了当下的任务,为了形成独立品牌并方便以后导流,我决定自己搭建自媒体Web端并运营品牌的微信和微博公众号。自媒体搭建有成熟的解决方案,Wordpress, 织梦CMS等。我选了自己比较熟悉的Wordpress, WP模板的选择着实费了一番功夫,一方面我想让自媒体Web端拥有像界面新闻和钛媒体等知名媒体一样不low的UI效果,比如首页文章大图轮播什么的,另一方面,wordpress上有类似功能的模板并不多,而且经过我测试对应的后台模板设置很难用。最后我用了一个普通的博客模板Tweenty Sixteen。

VNC Notes

1.每次服务器关闭后,都要重新kill,重新申请vnc端口号。否则出现“authentication failure”

#vncpassword 修改密码
#vncserver -geometry 1280x1024(不能是*,用小写x(字母)) 设置vnc server分辨率
#vncserver -alwaysshared 设置vnc的同一个显示窗口可以连接多个客户机,一般默认是连接最后发送连接请求的客户机
vncserver -kill :15 暴力停止vnc server(一定要记得冒号前加空格,否则kill失败。开多个端口而不用,很浪费资源,一般就一个)

登录进去后,黑屏:
1。一般是因为xstartup配置信息错误,直接把别人的拷过来就行
2。然后重启vncserver(重新开端口),搞定。
(检查下是否需要更改权限 chmod 777 xstartup 用ll可查看文件的读写权限--不确定)。

VNC的基本运行原理和一些Windows下的远程控制软件很相象。VNC的服务器端应用程序在UNIX和Linux操作系统中适应性很强,图形用户界面十分友好,看上去和Windows下的软件界面也很类似。在任何安装了客户端的应用程序(vncviewer)的Linux平台的计算机都能十分方便的和安装了服务器端的应用程序(vncserver)的计算机相互连接。另外,服务器端 (vncserver)还内建了Java Web接口,这样用户通过服务器端对其他计算机的操作就能通过Netscape显示出来了,这样的操作过程和显示方式比较直观方便。

在Linux中,VNC包括以下四各命令:vncserver,vncviewer,vncpasswd,和vncconnect。大多数情况下我只需要其中的两个命令:vncserver和vncviewer。下面对这些命令详细描述:

vncserver
此服务程序必须在在主(或遥控)计算机上运行。你只能作为使用者(不需要根用户身份)使用此项服务。

vncviewer
本地应用程序,用于远程接入运行vncserver的计算机并显示其环境。
你需要知道远程计算机的IP地址和vncserver设定的密码。

vncpasswd
vncserver的密码设置工具。vncserver服务程序没有设置密码将不能运行(好习惯)。
如果你没有设置,运行vncserver时它会提示你输入一个密码。
所以,一般我不会单独运行这个命令来设置密码。

vncconnect
告诉vncserver连接到远程一个运行vncviewer的计算机的IP和端口号。
这样我就可以避免给其他人一个接入的密码。

Xvnc
一个vnc“主控”程序,一般来说不需要直接运行。(vncserver和vncviewer实际上是Xvnc的脚本)

查找所有可用的选项,运行:
Xvnc --help

出于安全的考虑,一般不建议直接以超级用户帐号运行vncserver程序。如果你需要超级用户的环境,请以一般用户登录后再使用su命令登录到超级用户帐号

Miscellaneous Notes

  1. The objective of natural language processing:
    The processing power of computers is huge, we need to take advantage of this processing power. There is a gap between natural language and computer language (formal language). NLP is designed to fill this gap.

  2. A sentence can be syntatically correct while semantically meaningless.
    Semantic grammar should be replaced by syntactic grammar in semantic parsing.

  3. Dependency grammar (dependency relations) are used to generate subject-verb-predict relationship, then this s-v-p relation is used to generate a semantic representation of the sentence (first-order-logic). To interoperate with other semantic systems. this FOL representation may need to be aligned with other representations.

  4. IN pycharm setting, saving theme settings (on your own name) should be performed on the "font" section instead of the "Colors&Fonts" section to change the background color of editor.

  5. In java, a package name must be a fully qualified name start from the top of the package. An import can be performed at the package level or the class level. In contrast, a golang package import can only be performed at the package level, also, the package declaration are at the current package only, fully qualified name is not needed.

  6. If a method has side-effect, then it will modify the value of memory outside of the local space.

  7. C++ function without overload can accept the specified type value as argument, such as sleep() in time.h.

  8. In C/C++ context, the programming API is mostly provided by the OS instead of the language spec/std library itself. Notably, glibc, posix standards, etc. However, C++11 provides standard libraries that are quite convinent. Most c and c++ "standard" libraries are provided by GNU, with a few useful third-party libraries such as boost being popular as well.