0%

今天折腾Perfect服务端的时候,出现下面错误:

Can’t connect to local MySQL server through socket ‘’ (2)

然后各种Google,各种试错.最后在这篇文章中看到了IP这个字眼,突然灵感来了,直接把locahost改成127.0.0.1,然后成功了~

我了个大草,原来还能这么玩…

至于具体原因可以查看这篇文章Localhost 与127.0.0.1和IP的区别是什么

于2017/9/12,我的博客支持emoji啦,😁😁😝

–EOF–

系统环境:

#nginx -v
nginx version: nginx/1.10.2
#openssl version
OpenSSL 1.0.1e-fips 11 Feb 2013
#cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)

方式一

Certbot选择自己的操作系统以及服务器软件,按照说明安装即可.

安装方式二

acme.sh有中文文档,按照文档安装即可.

–EOF–

操作系统版本: CentOS7.2

1. 安装Nginx说找不到包

yum remove eprl-release
yum install eprl-release

2. 安装MySQL有问题

CentOS7.2安装的是Mariadb,安装方式如下:
安装命令
yum -y install mariadb mariadb-server
安装完成MariaDB,首先启动MariaDB
systemctl start mariadb
设置开机启动
systemctl enable mariadb
接下来进行MariaDB的相关简单配置
mysql_secure_installation
首先是设置密码,会提示先输入密码
Enter current password for root (enter for none):<–初次运行直接回车
设置密码
Set root password? [Y/n] <– 是否设置root用户密码,输入y并回车或直接回车
New password: <– 设置root用户的密码
Re-enter new password: <– 再输入一次你设置的密码
其他配置
Remove anonymous users? [Y/n] <– 是否删除匿名用户,回车
Disallow root login remotely? [Y/n] <–是否禁止root远程登录,回车,
Remove test database and access to it? [Y/n] <– 是否删除test数据库,回车
Reload privilege tables now? [Y/n] <– 是否重新加载权限表,回车
初始化MariaDB完成,接下来测试登录
mysql -uroot -ppassword
完成。

–EOF–

Photo by Brady Bellini on Unsplash

慢慢的你长大了,人们说你理性了,冷漠了,那是因为他们不知道,你对这个世界的情感不是变淡了,而是变深了,深到海面以下五百米深蓝的地方,在海面泛起一两个炫目漂亮的水花,对你已毫无意义。

在微博上看到上面一段话,大脑处于空闲状态,脑洞大开了一下.

上面例子可能是因为 折腾的次数多了,发现折腾并没有什么卵用.然后自然而然的就不折腾了.人也是动物,继承了动物的一些共有属性.→_→我的面向对象思想已经出神入化了.像一条被链子被栓着的狗一样,狗想挣脱链子,但是挣脱了N次,发现并挣脱不了.最后,即使被放开,也不会再想挣脱.

每个人都是一个对象,给每个对象的每个属性设置不同的值,就成了每一个不同的人. 这么说,TM人类就是new出来的.再这么说整个世界,也是被new World()出来的.当然这个new World()需要被一个变量引用一下,可以是全局变量,可以是局部变量.否则分分钟就被销毁了.虚拟机知道自己是虚拟机么?虚拟机肯定认为自己是一台完整的电脑.

人既然是人类的实例对象.那人类肯定可以重载父类的属性跟方法.属性不一样,造就了不同的人的非行为部分.像高,福,帅,矮,挫,穷.
方法不同表现为人的行为不同.这就是有些人不理解另一些人做法的原因.TM方法都不一样,结果怎么会相同.

这是不是就说明了,你以为的不一定是别人以为的.

最后一段是重点,’你以为的不一定是别人以为的’

脑洞结束

–EOF–

好久没更新博客了.

一是没什么东西可以写,看一些大神写的博客那质量,简直没法玩了.

二是还是实在没什么东西可以写.

想的东西有点杂,下面乱写了.

原来编程因为兴趣,而工作了之后才感觉兴趣并没什么卵用,最终还是钱.

几十天之前,前公司刚招了一个前端,结果第二天就走了,是因为学历问题.当技术总监跟boss说那个人走了的时候,boss就”哦”了一句…TM,当时我就笑喷了.这老板真是可以的.你他妈倒是问问什么原因啊!!!就TM’哦’了一句,当员工是什么了.也是比较服气.

因为各种原因,有个人原因,有外部原因.原来还想着公司不辞我,我肯定不会辞职.现在说这些好像是婊子给自己立牌坊.

前公司人事人挺好,发现我的问题,没有跟任何人说.

在前公司因为经验不够,导致项目延期了好长时间.给人一种不靠谱的感觉.继续留在那的话得花好长时间才能让人改变这种印象.算了,也懒得让人改变了.毕竟自己靠不靠谱自己说的算,不是么.

HTML5带的播放器样式太TM难看了,换一个.

现在凌晨3:13,还不打算睡.

难看就难看吧,折腾了几个小时,没弄出来.就这样吧.

现在凌晨3:12,打算整点东西喝.

–EOF–

此人已死.有事烧纸.小事招魂.大事挖坟.

联系方式:43BA5BBCBD7622A060509FB1B1D96663

定位问题

using background location services must provide a reason that clarifies the purpose of the use, using mechanisms described in the Human Interface Guidelines

这个原因主要是向用于请求定位权限时,要说明原因.

解决方法
在info.plist文件中设置下面两个字段

占位符问题

we found that your app and/or its metadata does not appear to include final content, which is not in compliance with the App Store Review Guidelines

可能原因一:这个原因主要是图片的placeholder,当从服务器没有请求到图片时,显示的placeholder图片被苹果认为是半成品的APP
可能原因二:在上架项目的时候对于APP的介绍描述不清楚,能吹则吹,多写点,又死不了人.

解决方法
在服务器弄好完整的图片,让APP能请求到.多些应用的描述.


以上方法仅限于理论,因为需要上架的项目没有源码.

–EOF–

报错信息

ld: embedded dylibs/frameworks are only supported on iOS 8.0 and later (@rpath/Alamofire.framework/Alamofire) for architecture x86_64

其实从名字大概也能猜出来,某个库支持的最低部署环境是8.0.

修改方法

我这应该修改成8.0

本文参考xyxjn的专栏

–EOF–

步骤

  1. 获取JSON文件路径
  2. 根据路径创建NSData对象
  3. 根据NSData对象对JSON进行序列化,得到一个数组
  4. 遍历数组,提取出视图名,标题,图片名,根据这三项创建视图,并用UINavigationViewController包裹起来,将navi添加到tabBarViewController中.

MainVCSettings.json文件

[
 {
    "vcName": "HomeTableViewController",
    "title": "首页",
    "imageName": "tabbar_home"
 },
 {
     "vcName": "MessageTableViewController",
     "title": "消息",
     "imageName": "tabbar_message_center"
 },
 {
 "vcName": "NullViewController",
 "title": "",
 "imageName": ""
 },
 {
     "vcName": "DiscoverTableViewController",
     "title": "广场",
     "imageName": "tabbar_discover"
 },
 {
     "vcName": "ProfileTableViewController",
     "title": "我",
     "imageName": "tabbar_profile"
 }
 ]

具体实现代码

//
// MainViewController.swift
// weibo
//
// Created by Adrift on 16/6/5.
// Copyright © 2016年 Adrift. All rights reserved.
//
import UIKit
class MainViewController: UITabBarController {
    //MARK: - 生命周期
    override func viewDidLoad() {
        super.viewDidLoad()
        //设置当前控制器对应的tabBar的颜色,iOS7之前如果设置了tintClor只有文字会变,而图片不会变
        tabBar.tintColor = UIColor.orangeColor()
        addChildViewControllers()
    }
    override func viewWillAppear(animated: Bool) {
        super.viewWillAppear(true)
        tabBar.addSubview(composeBtn)
        //计算宽度
        let width = UIScreen.mainScreen().bounds.width / CGFloat(viewControllers!.count)
        //创建 frame
        let rect = CGRect(x: 0, y: 0, width: width, height: tabBar.bounds.height)
        //设置 frame 跟 偏移量
        composeBtn.frame = CGRectOffset(rect, width * 2, 0)
    }
    //MARK: - 方法
    /**
     添加所有子控制器
     */
    func addChildViewControllers() {
        //获取json文件路径
        let path = NSBundle.mainBundle().pathForResource("MainVCSettings", ofType: "json")
        //通过文件路径创建NSData
        if let tempPath = path {
            let jsonData = NSData(contentsOfFile: tempPath)
            do {
                //序列化
                let dictArr = try NSJSONSerialization.JSONObjectWithData(jsonData!, options: NSJSONReadingOptions.MutableContainers) as! [[String: String]]
                //遍历数组,并创建视图控制器
                for dict in dictArr {
                    addChildViewController(dict["vcName"]!, title: dict["title"]!, imageName: dict["imageName"]!)
                }
            }catch{
                print("crash")
                //并添加到TabBarViewController
                addChildViewController("HomeTableViewController", title: "首页", imageName: "tabbar_home")
                addChildViewController("MessageTableViewController", title: "消息", imageName: "tabbar_message_center")
                addChildViewController("NullViewController", title: "", imageName: "")
                addChildViewController("DiscoverTableViewController", title: "发现", imageName: "tabbar_discover")
                addChildViewController("ProfileTableViewController", title: "我的", imageName: "tabbar_profile")
            }
        }
    }
    /**
     将navigationViewController 添加到 TabBarViewController
     - parameter childController: 子控制图
     - parameter title: 标题
     - parameter imageName: 非高亮图片名称
     */
    private func addChildViewController(childControllerName: String, title: String, imageName: String) {
        //获取命名空间
        let speaceName = NSBundle.mainBundle().infoDictionary!["CFBundleExecutable"] as! String
        //通过字符串转换为类
        let cls:AnyClass? = NSClassFromString(speaceName + "." + childControllerName)
        //通过类创建对象
        let vcCls = cls as! UIViewController.Type
        let vc = vcCls.init()
// 设置首页
        vc.tabBarItem.image = UIImage(named: imageName)
        vc.tabBarItem.selectedImage = UIImage(named: imageName + "_highlighted")
        vc.title = title
        //2.给首页包装一个导航器
        let navi = UINavigationController()
        navi.addChildViewController(vc)
        //3.将导航控制器添加到当前控制器
        addChildViewController(navi)
    }
    func composeBtnClick() {
        print("被点击...")
    }
    //MARK: - 懒加载
    private lazy var composeBtn:UIButton = {
        let button = UIButton()
        //设置button图片
        button.setImage(UIImage(named: "tabbar_compose_icon_add"), forState: UIControlState.Normal)
        button.setImage(UIImage(named: "tabbar_compose_icon_add_highlighted"), forState: UIControlState.Highlighted)
        //设置button背景图片
        button.setBackgroundImage(UIImage(named: "tabbar_compose_button"), forState: UIControlState.Normal)
        button.setBackgroundImage(UIImage(named: "tabbar_compose_button_highlighted"), forState: UIControlState.Highlighted)
        //添加监听事件
        button.addTarget(self, action: #selector(MainViewController.composeBtnClick), forControlEvents: UIControlEvents.TouchUpInside)
        return button
    }()
}

–EOF–

自从安装Ghost博客之后,邮件服务都是被弃用的…闲的无聊,百度了一下…

mail: {
    transport: 'SMTP',
    host: 'smtp.qq.com',
    fromaddress: 'vip@qq.com',
    options: {
        port: 465,
        service: 'QQ',
        auth: {
            user: 'vip@qq.com',
            pass: 'abcdefg123456789'
        }
    }
}

设置之后可以发QQ邮件,如果是其他邮箱,修改一下host就可以了.

本文参考:Ghost博客系统数据库自动邮件备份

–EOF–