IT相关

VMware Fusion 10Pro找不到可以连接的有效对等进程

随着mac系统的升级,之前用的vmware fusion 7.x版本似乎一直就不能用。一怒之下卸载,并下载了最新10.0版本。

初打开虚拟机,提示“找不到可以连接的有效对等进程”。一番搜索之后找到了答案:在系统偏好设置>安全性与隐私 会看到已阻止VM … 点允许 就行了。

飞速装完win7 64,装完vmware tools,我的win7 虚拟机回来了。

nginx服务无法启动问题解决一则

在配置某网站的nginx时新增了一个站点,重启服务时遇到了如下错误:

# systemctl start nginx.service
Job for nginx.service failed because the control process
exited with error code.
See "systemctl status nginx.service"
and "journalctl -xe" for details.

从字面意思上找了半天没看出毛病,百度了一圈找到的答案也没有能解决问题。于是只能撤销更新前的工作,网站恢复正常,几番折腾之后终于发现是新增的网站配置文件出了问题。

原来在新增文件时偷懒直接复制default的网站文件进行了简单修改,但忘记将listen的服务器名listen 80 default_server;中的default_server去掉,导致系统出现了两个default_server从而导致服务无法启动。

删除掉新配置文件的default_server,重新启动服务器成功。

阿里云ubuntu16.04和PHP7云主机安装edusoho备忘

edusoho是一款强大的云课程管理平台,非常适合于创建基于视频/图文的微课/慕课,并提供配套的手机APP客户端,易于推广使用。

目前官网的教程和一键安装脚本都是基于ubuntu14.04和PHP5的,而阿里云早已提供了ubuntu16.04系统,PHP7相对5也有很大的性能提升,因此需要对官方的教程做一些调整。

1、对PHP运行的配置,改成使用7。类似的地方都需要修改。

location ~ \.php$ {
include snippets/fastcgi-php.conf;
#
# # With php7.0-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# # With php7.0-fpm:
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
#}

2、如果之前已经有相关WEB应用运行,可以在site-enabled当中新建站点配置文件。edusoho默认要求以根目录方式运行,这点需要注意。另外,对PHP.ini需要做一些改动,主要是因为有上传视频的需求,放宽对上传数据和运行时间的限制。

3、edusoho的安装还是很人性化的,之前没有安装curl。结果apt-get多次失败,后来想起了更新了一下源就可以了,但安装curl会破坏之前设定好的php设置。这点需要注意,关键文件多多备份。

mysql当中的utf8和utf8mb4

原文:https://my.oschina.net/leejun2005/blog/343353

在mysql的日常使用当中,一般认为用utf8的编码就足够覆盖了。但utf8只有65536个编码空间,如果遇到一些不常用的汉字或者不在基本多文种平面的字符就会出现错误。

根本的解决方法在于升级mysql到5.5.3之后,将编码升级为utf8mb4即可。如果条件不允许,则可以在数据入库之前进行过滤。

看来对编码问题还得再深入学习研究。

google的blockly发布1.0正式版

https://developers.googleblog.com/2017/06/introducing-blockly-10-for-android-and.html (需梯子)

面向儿童的积木式可视化编程框架blockly发布了1.0正式版,可基于ios和android平台创建app,也对基于移动web的版本和跨平台兼容性进行了优化。

已经看到有朋友圈发布类似的小孩玩编程的东西,看来未来IT工程师也可以多一条出路了——编程,从起跑线开始。

strcpy和strcpy_s函数

最近有同学在编写作业时,用了字符串拷贝库函数strcpy,被编译器提示不安全,要求用strcpy_s代替。

一个典型的自定义strcpy函数代码可能如下:


char * mystrcpy(char *des , const char *src)
{
    char *t = des;
    while(*des++ = *src++)
        ;
    return t;
}

这个代码的问题在于如果des指向的空间不足以存放字符串src的内容,就可能会导致数据冲突或程序崩溃。

在高版本的vs当中,微软推出了更安全的strcpy_s函数。其函数声明为:

三个参数版本
errno_t strcpy_s(
    char *strDestination,
    size_t numberOfElements,
    const char *strSource
);
两个参数版本
template <size_t size>
errno_t strcpy_s(
    char (&strDestination)[size],
   const char *strSource
); // C++ only

其中三个参数的版本可以为c/c++通用,需要程序员主动指明可接受赋值的空间大小,这样避免只传递指针而无法控制复制长度的问题,通用性较强;而两个参数的版本使用了模板和对数组的引用技术,只能对c++使用,而且第一个参数要求必须是字符数组(不能是字符指针),否则无法运行。

不过这两个函数不是c++标准库函数,在linux环境下需要进行移植或者用strncpy函数(该函数也可以指定拷贝的数量)代替。

含有类、动态分配内存、插入和提取运算符重载、文件读写的程序示例

程序说明

  1. 在类当中定义提取和插入运算符重载,并对参数分别进行检测,如果是输入或输出对象则进行额外处理。
  2. 在写文件时需要写入字符串的长度,但输出不需要。读文件时需要读取字符串的长度,但输入不需要。
  3. 为了简化步骤,输入时控制了字符串的长度,否则可以用链表等不定长的容器来获取输入。
  4. 出于简化问题的角度,本程序把保存数据用的文件名固定了,因此如果创建需要多个对象(包括复制构造函数和赋值运算符等)时可能会出现问题(会导致数据的覆盖等)。
#include <iostream>
#include <fstream>
using namespace std;

class rect;
istream& operator >>(istream & is , rect & r);
ostream& operator <<(ostream & os , const rect & r);

class rect
{
    int left , top , right , bottom;
    char *info;
public:
    rect()
    {
        ifstream infile("rect.txt");
        if(infile)
        {
            infile >> *this;
            infile.close();
        }
        else
            cin >> *this;
    }
    ~rect()
    {
        ofstream outfile("rect.txt");
        outfile << *this;
        outfile.close();
        delete []info;
    }
    friend istream& operator >>(istream & is , rect & r)
    {
        int len;
        if(&is == &cin)
        {
            char c[20];
            cout << "请输入矩形的四个坐标:";
            cin >> r.left >> r.top >> r.right >> r.bottom;
            cin.get();
            cout << "请输入矩形的描述(20字符以内):";
            cin.getline(c , 20);
            len = strlen(c);
            r.info = new char[len + 1];
            strcpy(r.info , c);
        }
        else
        {
            is >> r.left >> r.top >> r.right >> r.bottom >> len;
            r.info = new char[len + 1];
            is.get();
            is.getline(r.info , len + 1);
        }
        return is;
    }
    friend ostream& operator <<(ostream & os , rect & r)
    {
        os << r.left << ' ' << r.top << ' ' << r.right << ' ' << r.bottom << endl;
        if(&os != &cout)
            os << strlen(r.info) << endl;
        return os << r.info << endl;
    }
};
int main()
{
    rect r;
    cout << r;
    return 0;
}

编写灵活、稳定、高质量的 HTML 和 CSS 代码的规范

编码规范 by @mdo

开发灵活,稳定,可持续 HTML 和 CSS 代码的规范(中文版)

值得学习和推荐。

非常棒的JavaScript在线教程

javascript.info

引自:网路冷眼@weibo

http://javascript.info/是一个现代化风格设计的JavaScript在线教程网站,目前仍处于Beta阶段。

从内容上,基本上涵盖了JS的所有基础内容。作为入门教材,应该是足够了。