开发过程中,如果需要连接一个可用的本地 PostgreSQL 数据库,那么通过 Docker Compose 在本地运行 数据库 PostgreSQL 就很有必要了。

肯定是需要安装 Docker 的。

创建一个放置数据库以及数据的目录。
mkdir postgres-docker
cd postgres-docker

创建 docker-compose.yml 文件
在项目目录中,创建一个名为docker-compose.yml的文件并添加以下配置:

services:
  db:
    image: postgres:latest
    container_name: local-postgres
    environment:
      POSTGRES_USER: <postgres_user>
      POSTGRES_PASSWORD: <postgres_password>
      POSTGRES_DB: <postgres_db>
    ports:
      - "5432:5432"
    volumes:
      - postgres_data:/var/lib/postgresql/data 或 /postgres-docker/postgresql/data
      - ./init.sql:/docker-entrypoint-initdb.d/init.sql  # Optional: initialize with SQL script

volumes:
  postgres_data:

请将
<postgres_user> <postgres_password> <postgres_db> 替换为自己真实的配置信息。

/var/lib/postgresql/data 为 Linux 下路径。
/postgres-docker/postgresql/data 为 Windows 下路径, 第一个 / 表示当前盘的根目录

5432:5432 映射允许通过端口 5432 本地访问数据库。

postgres_data:即使在停止容器后也保留 PostgreSQL 数据。
init.sql:可选的 SQL 脚本,在容器启动时自动运行(也可以自定义此文件以进行初始配置)。

使用

docker-compose up -d
即可启动服务了。当然了,通过 docker desktop 也可以管理。

使用命令行

psql -h localhost -p 5432 -U postgres_user -d postgres_db
即可连接数据库了,或者通过 GUI 工具也可以。

CloudFlare 支持部署 Angular 17,但是需要稍微做一点调整。

使用 CloudFlare 命令行创建 Angular 17 工程后,需要将 package.json 中的命令

"start": "npm run pages:build && wrangler pages dev dist/cloudflare
改为:
"start": "npm run pages:build && wrangler pages dev dist/browser
angular.json 中需要将 outputPath 从:
"outputPath": "dist/(项目名称)",
修改为:
"outputPath": "dist",
cloudflare 新建 pages 项目,build 命令处设置为:
Build output directory:/dist/browser

这个 /dist/browser 请几个地方保持一致,就可以正常的访问了。

这么一设置之后,部署之后 functions 也可以正常访问,前端页面也可以正常访问,本地开发的 functions 也可以正常访问,只是还不能启动 ng serve 然后 wrangler pages dev 来开发。需要 ng build 之后,wrangler pages dev 来开发,但是不需要重新跑 wrangler pages dev。

主要可能是新版本系统(或者软件)对于获取设备的返回数据格式作了修改
所以这里在 cordova build ios 获取可用设备列表的时候,会报 Cannot read property ‘toLowerCase’ of undefined。

解决方法很简单
打开这个文件:platforms/ios/cordova/lib/list-emulator-build-targets,
大概 54 行左右

device.availability.toLowerCase().indexOf('unavailable') < 0
改成:
device.isAvailable
所以改完之后完整的代码是:
availableDevicesInCategory.forEach(function (device) {
    // console.log(device);
    if (device.name === deviceType.name.replace(/\-inch/g, ' inch') && device.isAvailable) {
        availAcc.push(device);
    }
});
如果还不对,看一看这个 console.log(device); 输出是什么,我这里输出的是:
{ state: 'Booted',
  isAvailable: true,
  name: 'iPhone 11 Pro',
  udid: 'A4E72C68-XXXX-XXXX-XXXX-DFB57EB137B7' 
}
所以看看这个输出的内容就知道怎么改了。

var x = [1,2,3,4,5,6,7,8,9,10];
// var x = (Array(101).join(0).split('')).map((a,i)=>{return i+1;});
var findIndex =  (target, x, lowIndex, highIndex) => {
	var low = lowIndex || 0;
	var high = highIndex === undefined ? (x.length - 1) : highIndex;
	var mid = Math.ceil((low + high) / 2);
    // var mid = Math.floor((low + high) / 2);
	// console.log('Mid : ', mid);
	if(target === x[mid]){
		return mid;
	} else {
		if(target < x[mid]){
			// console.log('Low : ', x.slice(low, mid));
			return findIndex(target, x, low, mid - 1);
		} else {
			// console.log('High : ', x.slice(mid, high));
			return findIndex(target, x, mid + 1, high);
		}
	}
};
x.forEach((z)=>{
	console.log(findIndex(z, x));
});

在VPS上面安装Wordpress可能没有虚拟空间那么简单,但是复杂也给了你更大的优化和自定义空间。安装 WordPress 很多人都会发现安装插件或者升级的时候提示要FTP账号,这就是因为文件权限没有设置正确。 

WordPress官网介绍了详细的各文件需要的权限,下面我们看看应该怎么做。

先设定用户所有者为 www (有些php默认运行用户和组是http这些,按照php和nginx的配置来设置),比如我的网站根目录是在/home/wwwroot 那么
chown -R www:www /home/wwwroot

下面将所有文件夹设置为755权限,所有文件设置为644权限,注意!任何时候都不要设置为777权限(本方法来自Virson’s Blog,原贴为Linux 批量单独修改文件夹、文件的权限和所有者)

进入网站根目录

cd /home/wwwroot

设置此目录下所有文件夹的权限为755

find -type d -exec chmod 0755 {} \;

设置此目录下所有文件的权限为644

find -not -type d -exec chmod 644 {} \;

问题解决!