2020年4月

Ubutnu 安装 Samba 服务器

Samba 是一个共享协议,支持不同主机间进行文件的共享访问

服务器版本:18.04

以下是在 Ubutnu 服务器上安装 Samba 服务器的步骤:

更新软件源

sudo apt update
sudo apt upgrade

安装Samba服务器软件

sudo apt install samba

安装完Samba服务器软件后,可以通过以下命令查看是否安装成功:

samba -V

如果显示以下内容,说明安装成功:

Version 4.7.6-Ubuntu

配置Samba

创建分享目录并配置相应权限

首先我们需要创建一个分享目录,譬如 share,我们执行以下命令创建分享目录:

mkdir /home/xsir/share

在创建了分享目录之后,我们需要给该目录配置相应的权限,这关系到我们对分享目录下文件的操作:

chmod 777 /home/xsir/share

创建分享用户账号

使用以下代码创建一个 Samba 用户,并根据提示信息,初始化密码:

sudo smbpasswd -a xsir

现在我们已经有一个用户名为:xsir 的用户,密码是你刚设置的密码。

配置 Samba 的配置文件

现在我们开始配置 Samba,使用以下命令打开 Samba 的配置文件并进行编辑:

sudo vim /etc/samba/smb.conf

在配置文件最后添加以下代码:

[share]
   comment = share folder
   browseable = yes
   path = /home/xsir/share
   create mask = 0700
   directory mask = 0700
   valid users = xsir
   force user = xsir
   force group = xsir
   public = yes
   available = yes
   writable = yes

这样我们对 Samba 的所有配置就都完成了。接下来我们需要重启下 Samba 服务器使刚才的配置生效即可。使用以下命令对 Samba 服务器进行重启:

sudo service smbd restart

下面我们就可以愉快的访问刚配置好的 Samba 文件服务器进行愉快的玩耍了。

  • Mac 使用快捷键 CMD + K 进入前往面板,在地址栏里输入 smb://192.168.0.89/share 输入用户名和密码就可以进行文件分享操作。
  • Windows 下使用快捷键 Windows徽标+R 进入运行窗口,在地址栏里输入 \\192.168.0.89 输入用户名和密码就可以进行文件分享操作。
PS: 我们可以对 Samba 共享文件夹映射网络驱动器,这样就可以在下次双击映射好的文件夹进入共享目录。
Mac 下直接将刚才的文件夹拖到左侧个人收藏下,Windows 选中文件夹右键进行映射操作

Link:

正则表达式匹配空行

测试所用的编辑器:notepad++,sublime

^(\s*)\r\n

根据文档格式(windows, mac, linux行尾符)不同 将其中的\r\n替换成不同行尾符

windows: ^(\s*)\r\n
linux: ^(\s*)\n
mac: ^(\s*)\n (mac 也是一种类linux系统)

方法二: 模式修饰符

/.*/s   其中的 /s修改点号的匹配范围, 使之可以匹配换行符

附:

正在表达式在行尾添加字符

\n

在替换处添加需要添加的字符

Link:

WKWebView文字图片自适应

我们在使用 WKWebView 时,图片和文字有时不会进行自适应屏幕,这样我们可以通过嵌入 JavaScript 代码的方式,达到文字图片自适应的效果。

文字自适应屏幕

文字自适应屏幕,可以在创建 WKWebView 的时候,添加 JS 代码实现
// 自适应屏幕宽度js
NSString *jScript = @"var meta = document.createElement('meta'); meta.setAttribute('name', 'viewport'); meta.setAttribute('content', 'width=device-width'); document.getElementsByTagName('head')[0].appendChild(meta);";
WKUserScript *wkUScript = [[WKUserScript alloc] initWithSource:jScript injectionTime:WKUserScriptInjectionTimeAtDocumentEnd forMainFrameOnly:YES];
WKUserContentController *wkUController = [[WKUserContentController alloc] init];
[wkUController addUserScript:wkUScript];
WKWebViewConfiguration *wkWebConfig = [[WKWebViewConfiguration alloc] init];
wkWebConfig.userContentController = wkUController;
WKWebView *contentWeb = [[WKWebView alloc] initWithFrame:self.view.bounds configuration:wkWebConfig];

图片自适应屏幕

图片自适应屏幕可以在加载 HTML 代码前,拼接相应代码实现
NSString *htmlString = [NSString stringWithFormat:@"<html> \n"
    "<head><meta name='viewport' content='width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no' charset=\"UTF-8\"> \n"
    "<style type=\"text/css\"> \n"
    "body {font-size:15px;}\n"
    "</style> \n"
    "</head> \n"
    "<body>"
    "<script type='text/javascript'>"
    "window.onload = function(){\n"
    "var $img = document.getElementsByTagName('img');\n"
    "for(var p in  $img){\n"
    "$img[p].style.width = '100%%';\n"
    "$img[p].style.height ='auto'\n"
    "}\n"
    "}"
    "</script>%@"
    "</body>"
    "</html>", html];

Link:

iOS 后台进入前台和进入后台通知

1. 注册通知

//后台进前台通知 UIApplicationDidBecomeActiveNotification
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didBecomeActive) name:UIApplicationDidBecomeActiveNotification object:nil];

//进入后台UIApplicationDidEnterBackgroundNotification
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didEnterBackground) name:UIApplicationDidEnterBackgroundNotification object:nil];

2. 实现通知方法

//进入后台方法
- (void)didEnterBackground {
    NSLog(@"%@", NSStringFromSelector(_cmd));
}

//每次后台进前台都会执行这个方法
- (void)didBecomeActive {
    NSLog(@"%@", NSStringFromSelector(_cmd));
}

3. 移除通知

- (void)dealloc {
    [[NSNotificationCenter defaultCenter]removeObserver:self]; //移除通知
}

更新Xcode描述文件包含的设备UUID

更新Xcode描述文件

  • 找到 Xcode 描述文件并删除,
rm ~/Library/MobileDevice/Provisioning\ Profiles/
// XCode 16
rm ~/Library/Developer/Xcode/UserData/Provisioning\ Profiles
  • 清理工程
  • 打包

查看ipa文件包含的设备UUID

  • 修改 ipa 包后缀为 zip 并解压
  • 查看包内容,找到 embedded.mobileprovision 文件下的 ProvisionedDevices,列表显示就是所有的设备UUID
查看描述文件内容命令:(需要先进入描述文件所在目录)
security cms -D -i embedded.mobileprovision