nginx

nginx的autoindex

如果想要把服务器上的某个目录对外开放,让所有人可以看到并下载目录里面的文件,可以使用nginx的autoindex 举个例子,我想把/home/nemo/publicdir/file/这个目录对外开放,我可以设置请求http://wwww.mysite.com/testpublic/这个url的时候,自动映射到我要开放的目录。nginx配置如下: location /testpublic/ { alias /home/nemo/publicdir/file/; autoindex on; } location / { root /home/nemo/www; try_

  • Nemo
    Nemo
3 min read
iOS

iOS给一张照片美颜

之前我的一篇笔记iOS实时美颜并获取原图里面写了如何实现实时的美颜滤镜,本篇作为补充说下如何给一张图片美颜。 还是使用之前提到的GPUImageBeautifyFilter // 原图 UIImage * sourceImage = [UIImage imageNamed:@"notBeauty.png"]; GPUImageBeautifyFilter *beautyFilter = [[GPUImageBeautifyFilter alloc] init]; //设置要渲染的区域 [beautyFilter forceProcessingAtSize:sourceImage.size]; [beautyFilter useNextFrameForImageCapture]; //获取数据源 GPUImagePicture *stillImageSource = [[GPUImagePicture alloc]initWithImage:sourceImage]; //添加上滤镜 [stillImageSource

  • Nemo
    Nemo
2 min read
iOS

iOS实现实时美颜滤镜并获取原图

实时美颜 在iOS里面进行实时美颜,我使用的是GPUImageBeautifyFilter, 具体原理可以看作者的文章。 具体使用方法如下: 1.在项目的Podfile里面引入GPUImage target 'TestBeauty' do pod 'GPUImage' end 2.将GPUImageBeautyFilter.h和GPUImageBeautyFilter.m添加到项目中 3.编写相关代码 在ViewController.m里面实现如下代码: #import "ViewController.h" #import <GPUImage/GPUImage.h> #import

  • Nemo
    Nemo
6 min read
iOS

iOS调用UIImagePickerController相机拍照图片旋转了90度

以前遇到过iOS调用相机拍照图片旋转了90度的问题,照片显示在UIImageView里面是正常的,但是传输到服务器之后发现不是正的。 要解决上面这个问题,在发送图片到服务器之前,要对图片方向进行纠正。一般有两种方法进行纠正。 方法一、使用CGAffineTransform + CGBitmapContextCreateImage UIImage+fixOrientation.h文件 // UIImage+fixOrientation.h文件 #import <UIKit/UIKit.h> @interface UIImage (fixOrientation) - (UIImage *)fixOrientation; @end UIImage+fixOrientation.m 文件

  • Nemo
    Nemo
4 min read
php

php下载utf8编码的csv,用excel打开乱码

服务器上有一个utf8编码的csv文件,经过php下载到本地之后,用excel打开,发现乱码了。原因是这个csv文件没有BOM头。 BOM头是放在UTF-8编码的文件的头部的三个字符(0xEF 0xBB 0xBF,即BOM)占用三个字节,用来标识该文件属于UTF-8编码。 所以在php里面下载utf8编码的csv的时候,需如下方代码所示,添加BOM头: $downloadUrl = '/home/nemo/firDir/test.csv'; $fileName = 'test.csv'; ini_set('memory_limit', '128M'); header('Content-type: application/

  • Nemo
    Nemo
1 min read
iOS

安装cocoapods

很久没有碰xcode了,都有点忘记怎么在工程里面使用cocoapods了,下面主要是为了以后方便,在此做下记录。 1.确认是否需要使用cocoapods 假如说从github上下了一个项目,看里面是否有xxx.xcworkspace文件或者Podfile文件,有就是需要使用cocoapods 2.如何使用cocoapods 2.1 确认你已经安装了pod工具 在terminal里面输入命令pod --version,查看是否已经安装pod工具 如果没有安装,则按照以下步骤进行安装: gem update --system升级ruby环境 替换ruby镜像 gem sources --remove https://rubygems.org/ gem source -a

  • Nemo
    Nemo
1 min read
php

使用nginx的XSendfile提升php下载文件性能

我在之前一篇笔记里面写了如何用php下载文件,里面写了两种方法来下载文件 nginx配置直接try_files下载文件 php读取文件之后再输出 对于第二种方法,php-fpm和nginx的内存和IO情况都有飙升。 在传统的文件传输过程中,文件数据经历了以下步骤: 硬盘 -> 内核buffer -> 用户buffer -> socket相关缓冲区 -> 协议栈 而sendfile机制被开启之后,减少了一次文件copy,提升了文件传输性能,文件数据经历的步骤如下: 硬盘 -> 内核buffer -> socket相关缓冲区

  • Nemo
    Nemo
2 min read
php

php处理base64图片

php将base64转成图片 最近做了一个上传图片的功能。本来的需求是直接上传图片,就可以把图片当成是一个文件。后来又在界面上加了个图片剪裁的功能,前端说传base64比较方便,所以php这边需要将base64转成图片。 看以下示例代码,将base64字符串转成图片,存储起来。 $paramPicBase64 = $_POST['imageBase64']; // 取出图片base64字符串 $paramPicBase64 = str_replace('data:image/png;base64,', '', $paramPicBase64); $paramPicBase64 = str_replace('data:image/jpeg;base64,', '',

  • Nemo
    Nemo
1 min read
php

php读取excel文件

PHP读取excel文件 我用的是PHPExcel这个库,相关的方法网上都有介绍,我这里主要是记录一下使用过程中遇到的问题 按单元格读取 先来看一段示例代码,这段示例代码是使用PHPExcel按单元格读取excel的内容 $firstfilename = 'test.xlsx'; if ( !file_exists($firstfilename)) { echo "$firstfilename not exits"; exit; } // init excel reader $reader = new PHPExcel_Reader_Excel2007(); // 判断是xlsx还是xls文件 if ( !$reader->

  • Nemo
    Nemo
5 min read
cname

CNAME

我之前写过一片笔记使用七牛云存储博客图片, 在使用七牛云的CDN的时候,需要把自己的域名cname到七牛云提供的一个域名上面去。 这篇笔记记录一下CNAME记录与A记录的区别。 可以先看一下七牛云官方网站上面对CNAME的介绍,如下图所示: 上图已经说得比较详细了,下面主要说几个点: 1.假如说域名www.A.com CNAME到了 www.B.com,在向域名A发请求的时候,浏览器里面看到的地址是谁的? 2.假如说域名www.A.com CNAME到了 www.B.com, nginx配置文件里面server_name应该监听哪个域名才能够正常处理请求? 3.自己的域名被别人恶意CNAME了怎么办?自己的服务器IP被别人恶意A了怎么办? 假如说域名www.A.

  • Nemo
    Nemo
3 min read
php

php array_search

php array_search 在数组中搜索给定的值,如果成功则返回首个相应的键名 mixed array_search ( mixed $needle , array $haystack [, bool $strict = false ] ) 第一个参数表示要查找的值,第二个参数表示数组,第三个参数表示是否严格比较类型 严格比较类型 vs 不严格比较类型的区别 看一下严格比较类型与不严格比较类型的区别 <?php $arr = ['0', 1, '2', '1']; $result = array_search('1',

  • Nemo
    Nemo
2 min read
php

php删除字符串最后一个字符

php删除字符串最后一个字符 方法一、substr 一般情况下,我用的是substr,关于substr的更多解释可以看官方手册 string substr ( string $string , int $start [, int $length ] ) 第一个参数是父字符串,第二个参数是子字符串开始的下标,第三个参数是子字符串的长度 $str = "Hello Nemo!"; $str2 = substr(str, 0, strlen($str) - 1); 上面这个方法是设置截取从0号下标开始的长度为strlen($str) -

  • Nemo
    Nemo
2 min read
php

safari下载文件自动加了html后缀

如何下载文件? 方法一、直接通过nginx下载静态文件 如果文件是保存在服务器上面的,可以直接用nginx下载文件 比如说可以供用户下载pdf文件,那么我的nginx配置可以是这样子的: location ~ /document/(.*)\.pdf$ { root /home/nemo/myfile; try_files /$uri 404; } 按照上面的配置,当我请求http://fbd.intelleeegooo.cc/document/test.pdf的时候,我服务器上的位于/home/nemo/myfile/document/test.pdf的这个文件就被下载了。

  • Nemo
    Nemo
7 min read
php

在php里面如何执行linux命令

php如何执行某个命令 ,官方手册在这里我们先从shell_exec来说如何使用shell_exec在php里面执行shell命令先来试一下,使用php执行某个shell命令,该命令是mkdir testdir。<?php $cmd = 'mkdir testdir'; shell_exec($cmd); 在这个php脚本执行之前,目录里面是这样子的:执行之后,目录里面是如下图所示,多了一个testdir文件夹,这是通过我们刚刚在php脚本里面执行shell命令生成的shell命令执行失败会如何?假如说执行shell命令的时候出错了,后面的php代码还能运行吗?看下面这个例子,我要执行的命令是读取并运行test.sh这个文件里面的内容,但是这个文件实际是不存在的。<?php $cmd = 'source test.sh';

  • Nemo
    Nemo
4 min read
bash

.bashrc与.bash_profile

我在之前的一篇安装node的笔记里面安装node的时候,有用到source这个命令来让配置文件生效。 有一次我在朋友的ubuntu机器上安装的时候,报source: command not found这个错。 奇怪,怎么会没有source命令,我想到source是bash里面的,会不会当前不是bash?于是我得查看一下当前使用的shell环境 查看当前使用的是什么shell 使用命令echo $SHELL 结果是/bin/sh 查看机器上装的所有shell环境 使用命令cat /etc/shells 切换shell 使用命令chsh -s /bin/bash,将shell切换到bash 切换到bash后,就可以使用source命令了 bash与sh的区别 bash可以理解为是sh的超集。sh里面可以执行的,

  • Nemo
    Nemo
5 min read
mysql

mysql的sql_mode

之前遇到过一个问题,就是同样的sql insert语句,在我的环境就执行不成功,在别人环境可以执行成功,而且我们的表结构是一样的!!! 这个问题一看上去很诡异,但是仔细地看报出的错误,原来是我的环境里面某些字段不能为null,但是sql语句里面却没有为这些字段提供默认值。 最后从网上找到了这个问题的解决办法,原来是和mysql的sql_mode有关。 查看当前数据库使用的sql_mode 上面查看的是全局情况下的sql_mode,也可以查看其它环境下的,如下面所示: 查询session变量 mysql> select @@session.sql_mode; 查询用户变量 mysql> select @sql_mode; 查询全局变量

  • Nemo
    Nemo
2 min read