php composer.phar install 无法安装解决方法

在使用 php composer.phar install 命令的时候,我们可能会收到下面这种提示:

mmap() failed: [12] Cannot allocate memory
PHP Fatal error:  Out of memory (allocated 523217676) (tried to allocate 4096 bytes) in phar:///usr/bin/composer/src/Composer/DependencyResolver/RuleSetGenerator.php on line 126

看到 stackoverflow 上有人说修改 memory_limit 的值,经过实际测试这种方法无效。

最好的解决办法是添加 Swap 虚拟内存。


宝塔Linux面板安装PHP失败原因

最近在安装宝塔面板的时候发现一件很奇怪的事,在 Debian 系统下 PHP7.1/7.2/7.3 一直都是装不上的状态。我去官方那搜到了很多反馈类似错误的,但大部分都是 Ubuntu 系统的,经过日志排查,确定不是宝塔的问题,最终把问题确定为性能导致。

如果你的安装机器在1G内存以上应该不会出现这类问题,1G以下是安装不上的。使用1G的机器会出现这类的问题,解决方法也是有的,首先安装宝塔后,在宝塔首页释放一下内存,不要使用一键安装LNMP环境,打开软件管理,首先安装PHP,然后在依次安装其它组件。如果安装失败了,可以尝试重启一下机器。

如果一直安装不上,可能就是机器的性能问题了,你要换一台机器或者尝试其它安装方式。

总结:小内存的机器尽量不要使用一键安装,在安装前清理一下内存,停止一些无用的进程。


macOS Wi-Fi密码破解抓包方法

注意:本文针对的是 macOS Mojave 不是该系统可能会有些出入。

我们破解 Wi-Fi 密码最好的方法就是先抓 cap 包,然后在使用 aircrack-ng 这种工具去跑字典,暴力破解,成功率主要是看字典强不强大。当然还有其他的方法像跑PIN这种,主要看你的网卡和对方的路由设备,如果对方关了PIN功能就没法用这种方法这里不去探讨。

macOS 自身带了一个非常的好用的 airport 工具。

安装命令

sudo ln -s /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport /usr/sbin/airport

如果你使用的是 macOS Mojave 系统,可能会收到操作不允许的提示,好像是内核保护什么鬼,网上有关闭方法,这里我也懒得折腾了,不安装快捷命令直接扫描。

扫描网卡

/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport scan

扫描完成后你会得到类似如下结果

 SSID BSSID             RSSI CHANNEL HT CC SECURITY (auth/unicast/group)
 1007 dc:d7:13:b4:38:6c -68  6      Y  -- WPA(PSK/AES/AES) WPA2(PSK/AES/AES)

抓包

sudo /System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Resources/airport sniff 6

注意:
1.sniff 后面的6要修改成你抓包的信道,可以看CHANNEL中的值。
2.比较操蛋的是该命令在 macOS Mojave 中会出现 Capturing 802.11 frames on en0. 的报错。什么原因目前不清楚,我在 Stack Overflow 看了一下,有人也在反应这个问题,好像是系统问题,以前的老系统就可以用。为了解决这个问题,airport sniff 可能不能用了,有人给出了更好的解决方案,使用 tcpdump 来抓包。

tcpdump 抓包

# capture a beacon frame from the AP
sudo tcpdump "type mgt subtype beacon and ether src $BSSID" -I -c 1 -i en1 -w beacon.cap
# wait for the WPA handshake
sudo tcpdump "ether proto 0x888e and ether host $BSSID" -I -U -vvv -i en1 -w handshake.cap

注意:把 $BSSID 改成你要抓的地址。

抓的包默认会保存在 /Users/username

拿到 .cap 文件就可以挂字典暴力破解了。
我这个人比较懒,不想在本地跑字典,也有很多在线网站可以实现。

推荐
https://gpuhash.me/
https://www.onlinehashcrack.com/wifi-wpa-rsna-psk-crack.php

参考:https://louisabraham.github.io/articles/WPA-wifi-cracking-MBP.html


macOS 下打造完美终端 iTerm2+Oh My Zsh

iTerm2 是 macOS 下公认的最佳默认终端替代品,当然只是安装上的话没有经过任何配置会和系统默认的终端使用无异,本文主要是来记录一下我的配置过程。

先来张效果图
iTerm2+Oh My Zsh

首先我们要安装 iTerm2 下载地址https://www.iterm2.com/

安装好以后我们要把 shell 切换成 zsh
(默认的shell是bash,关于bash和zsh之争网上有很多文章在讲,总结下来就是zsh比bash更优秀)

chsh -s /bin/zsh

使用上面的命令可以把默认的shell改成zsh

接着我们来安装 Oh My Zsh
首先来解释一下 Oh My Zsh 是什么,你可以理解成为是 zsh 辅助工具,因为 zsh 本身过于复杂,而安装 Oh My Zsh 后可以让你做到开箱即用。
Oh My Zsh GitHub https://github.com/robbyrussell/oh-my-zsh

GitHub里的文档给出两种安装方式
方法一 curl

sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

方法二 wget

sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"

安装好以后我们要做的就是来配置 Oh My Zsh
配置主要分为两部分,主题和插件
Oh My Zsh 的配置文件名称为 .zshrc 存放在你的用户名文件夹下,是个隐藏文件,你可以用 command+shift+. 这个组合键查看隐藏文件。官方文档中写的编辑方式采用的是 vi 编辑器,需要全部在shell中完成,这里考虑到新手,我们用比较传统的方式,用编辑器直接打开 .zshrc 编辑。

主题配置在11行
Oh My Zsh 自带了多个主题,可以来这里查看
选择你中意的主题,然后修改配置文件的参数。例:我选择的是 agnoster 修改的内容如下

ZSH_THEME="agnoster"

插件配置在65行
Oh My Zsh 自带了很多个实用的插件,可以来这里查看
挑选你需要的插件,当然你也可以安装第三方插件,比如自动补全,我用的是 zsh-autosuggestions
安装方法也很简单,直接克隆到本地

git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions

不管是自带插件还是第三方插件,你都需要写入配置文件中,写法如下

plugins=(git extract z zsh-autosuggestions)

git这个东西就不用介绍了;extract是一个解压插件,可以让你不用记住各种繁琐的解压命令;z这个插件就比较有意思了,他可以帮你快速的跳转目录,比如你想去home目录,只需要z home 就可以瞬间移动过去;zsh-autosuggestions就是上面写到的自动补全插件。以上就是我启用的几个插件,当然你想启用其他的插件,只需要在配置文件中开启就行。

补充一点:有些主题字体可能不支持,比如我用的 agnoster 主题如果不安装额外的主题,会出现乱码。
Oh My Zsh的文档写了你需要安装 Powerline字体 才能让某些主题显示正常。
安装方法

# 克隆到本地
git clone https://github.com/powerline/fonts.git --depth=1
# 安装
cd fonts
./install.sh
# 清理安装文件
cd ..
rm -rf fonts

以上就是大致的安装过程,具体某些个性化的设置你可以直接打开 iTerm2 的设置自行调整,比如给终端加个背景做个透明化改下配色方案等等,这个靠你自己发挥了。


如何选择 Linux 发行版系统

本文适合 Linux 新手阅读

扫盲
今天突然想理一理 Linux 发行版的一些知识,简单记录一下。帮助大家来更好的选择 Linux 发行版。

首先要纠正很多人的一个错误观念,Linux 不是一个系统,Linux是一个系统内核,开发这个内核的就是著名暴脾气程序员「Linus Torvalds」,因为 Linux 内核是免费的,所以在短时间内得到了快速的发展,比如安卓系统就是基于 Linux 内核开发的。

内核官方网站 https://www.kernel.org/

本文主要整理关于 Linux 发行版的一些知识,Linux 发行版就是基于 Linux 内核开发出来的系统。按照目前的分类主要分为Debian系和Red Hat系,当然除了这两大系还有Arch、Slackware、Gentoo等,他们最大的区别就是软件包管理系统不同。如何理解,举个例子,Debian系安装软件使用的是 apt-get ,Red Hat系安装软件使用的是 yum。除了Debian系和Red Hat系之外的发行版,因为比较小众,再加上使用难度较高,我就不在提了,感兴趣可以去了解一下,这里主要还是教你在 Debian系和Red Hat系中选择一个合适你的。

Debian系
主要有 Debian、Ubuntu、Linux Mint等,说实话 Debian 是我最喜欢的发行版,我最常使用的 Kali Linux 就是基于Debian 的非常稳定,并且占用内存小,用来做服务器系统是相当完美。对于 Ubuntu 我觉得这货纯粹就是一个另类,优点就是桌面做的非常完美,应该是目前体验最佳的 Linux 桌面发行版了。

Red Hat 系
Red Hat 也就是红帽公司,中国大部分搞IT最早接触的 Linux 应该就是红帽Linux了,Red Hat也是最早把 Linux 拿来进行商业运营的公司,你可能会想Linux不是开源免费的吗,这里要说明的是 Red Hat 人家收的是服务费,简单点来说就是提供有偿服务,Red Hat 也发行了免费的 Linux 版本,比如 Fedora Linux 版,但是 Fedora 更新比较频繁,所以用于生产环境还是要慎重,对于生产环境企业还是求稳为主,这时就可以使用 Red Hat Enterprise Linux 简称(RHEL),红帽就是这样把钱赚走的。除了上面说的两个Linux发行版,红帽还有一个很出名的发行版(CentOS),这应该是服务器上最受欢迎的 Linux 发行版,CentOS 可以看成是 RHEL 免费版,师出同门专为服务器而生,所以很受中小企业的喜爱,甚至有些大厂也在用 CentOS。

个人如何选择
个人使用主要是在桌面环境下,如果你不想折腾的话强烈推荐你使用 Ubuntu,虽然我不喜欢这货,但是他的图形界面做的是没话说,当然还有一个更的优秀的Ubuntu衍生版 Linux Mint 。对于Ubuntu和Linux Mint我推荐你都装一下,然后使用一段时间后在决定自己选择哪个,因为系统都是基于Debian的,所以区别就在界面设计上了,他们三者的关系可以这样理解,如果按亲属关系来分Debian是爷爷,Ubuntu是爸爸,Linux Mint是儿子。

服务器如何选择
对于服务器来说最主要的就是稳定,这里主推 Debian 和 CentOS。当然最好的选择是 RHEL,因为是付费产品,这里不做推荐。如果说稳定性 Debian 肯定更胜一筹,但是这里不想做推荐,因为服务器用于生产环境要考虑生命周期,Debian是社区维护版,没有商业公司支持,通常三年左右。而 CentOS 就不同,背靠红帽这座大山,支持个10年没什么问题,这对服务器是很重要的,特别是用于生产环境,稳才是最重要的。如果只是自己折腾个VPS玩玩的话,用 Debian 就足够了,占内存小能充分压榨服务器的性能,用于企业部署生产环境,建议 CentOS,资金允许可以上 RHEL。

上面就是我对 Linux 发行版的一些理解,涉及的东西不是很多,很多牛逼的发行版也没有提及,只是选了几个比较常用的 Linux 发行版让你大致的了解一下他们的区别,因为这些版本用的人比较多,所以你学习起来也比较快,遇到问题一搜答案就出来了。

最后纠正一下 Linux 应该是 GNU/Linux
为什么这么叫,可以参考 https://www.gnu.org/gnu/linux-and-gnu.zh-cn.html


Dash macOS 激活授权文件

Dash 是 macOS 系统里一个非常好用的 API 文档查询软件。

Dash is an API Documentation Browser and Code Snippet Manager. Dash stores snippets of code and instantly searches offline documentation sets for 200+ APIs, 100+ cheat sheets and more. You can even generate your own docsets or request docsets to be included.

官网 https://kapeli.com/dash
下载地址 https://singapore.kapeli.com/downloads/v4/Dash.zip

授权文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Product</key>
    <string>Dash</string>
    <key>Name</key>
    <string>Yang Wang</string>
    <key>Email</key>
    <string>[email protected]</string>
    <key>Licenses</key>
    <string>1</string>
    <key>Timestamp</key>
    <string>1487632616</string>
    <key>Version</key>
    <string>4</string>
    <key>TransactionID</key>
    <string>KAP170220-3181-48919</string>
    <key>Signature</key>
    <data>DxmY4cUBFC/iYn/zRodj/5EwhL/7TD5BKyqXAOHoE/K19lNCorbnTvWKGmTrWJC242/mT8DJ7Zod
db5J98m8h0Q/YOfDHeDTyTkz5o5gYRAplIzBOqCGwdUjn1YHOI4OsMKH6LIML5VoHIpkxAOQwmmH
iHrpg4CHXopKW1uB45Q=
</data>
</dict>
</plist>

文件另存为 license.dash-license

打开软件设置,找到 License 导入授权文件,完美激活。