在 Windows 10 上使用 WSL 配置和运行 Kali Linux / Ubuntu Linux

操作环境

Windows 10 中文家庭版 64 位

(需要 Windows 10 16215.0 或更高版本的 Windows 10 才可以)

操作说明

WSL 全称为 Windows Subsystem for Linux (Windows 下的 Linux 子系统). Wikipedia 对 WSL 的描述摘录如下 (Source: HERE)

适用于 Linux 的 Windows 子系统(英语:Windows Subsystem for Linux,简称WSL)是一个为在Windows 10和Windows Server 2019上能够原生运行Linux二进制可执行文件(ELF格式)的兼容层。
WSL提供了一个由微软开发的Linux兼容的内核接口(不包含Linux内核代码),然后可以在其上运行GNU用户空间,例如Ubuntu,openSUSE,SUSE Linux Enterprise Server,Debian和Kali Linux。这样的用户空间可能包含Bash shell和命令语言,使用本机GNU/Linux命令行工具(sed,awk等),编程语言解释器(Ruby,Python等),甚至是图形应用程序(使用主机端的X窗口系统)。

来自维基百科词条: 适用于 Linux 的 Windows 子系统

由于 Windows 下的 Linux 子系统并不包含 Linux 内核, 所以这严格上讲并不是一个真正的 Linux 系统, 但是对终端用户而言, 使用感受上是和真正的 Linux 系统很接近的. 使用 Linux 子系统既避免了在一台计算机上使用双系统时同一时间内只能运行其中一个的问题, 也避免了使用虚拟机时系统资源的大量消耗, 如果喜欢使用 Linux 命令的话, Linux 子系统还是值得一试的.

继续阅读“在 Windows 10 上使用 WSL 配置和运行 Kali Linux / Ubuntu Linux”

解决 PHP 输出中文乱码的问题

问题描述

今天给导航狗(https://daohanggou.cn/)的 PHP 程序和数据库文件迁移了服务器, 但是迁移到新的服务器上之后 PHP 输出的中文和 PHP 输出的从 MySQL 数据库查询出来的数据中的中文都出现了乱码的情况. 下面记录一下我解决该问题的过程.

继续阅读“解决 PHP 输出中文乱码的问题”

解决 Orange Pi 烧录完系统后剩余可用空间过少的问题

操作环境

香橙派使用的 SD 卡容量:16 GB
香橙派使用的 SD 卡文件系统类型:FAT32
香橙派型号:Orange Pi One
香橙派操作系统:Ubuntu 14.04.1 LTS
SSH 远程连接软件:Xshell 6
SSH 远程连接软件的运行平台:Windows 10 中文家庭版 64 位

问题背景

今天在向 Orange Pi 中克隆一个 GitHub 项目的时候,系统无法执行该指令并给出了如下提示:

fatal: could not create work tree dir ‘/home/orangepi/***’.: No space left on device

继续阅读“解决 Orange Pi 烧录完系统后剩余可用空间过少的问题”

Git Error: failed to push some refs to ‘git@github.com:**.git’

操作环境

操作系统:Windows 10 家庭中文版 64位
Git 客户端:mintty 2.9.0 (x86_64-pc-msys)
Git version: 2.19.0.windows.1
Git 仓库:github.com

报错说明

今天 Push 代码的时候遇到一个报错:

! [rejected]        master -> master (fetch first)
error: failed to push some refs to 'git@github.com:somebodyblog/somebodyblog.git'

报错截图如下:

图 1 报错截图
图 1 报错截图

解决方案

出现这样的报错一般是因为本地仓库分支的代码和远程仓库分支的代码不一致了。需要先拉取(fetch)远程分支的代码并在本地对两个分支的代码进行合并(merge / rebase)后才能继续向远程仓库分支 push 代码。
合并代码:

git pull --rebase origin master

代码解释:

  • git pull –rebase = git fetch + git rebase

推送代码:

git push

至此,问题解决。

又拍社区(yupoo.com)宣布进行业务升级维护

2018年11月05日,又拍社区(yupoo.com)发布公告称,将于2018年11月28日起关闭注册和上传等服务,进入关闭维护状态。在2019年5月31日之前,又拍社区用户可以使用官方提供的 数据备份工具备份自己在又拍社区中的照片。

本次停止服务的仅仅是又拍社区,又拍图片管家(http://x.yupoo.com/)仍然可用。

如果本站读者有存储在又拍社区中的图片,请记得及时下载。

继续阅读“又拍社区(yupoo.com)宣布进行业务升级维护”

神奇的异或:在不引入第三个变量的情况下交换两个变量的数值

运行环境

操作系统:Windows 7
Python版本:Python 3.7

正文

一般情况下,当我们需要交换两个变量的值的时候,至少需要引入1个第三方变量(当然,如果愿意的话,也可以引入第四方和第五方变量>_<),但是,当我们使用异或的时候就不必这么做,只需要这两个变量就可以完成他们之间数值的交换。

设,有两个变量 a 和 b.
其中,a = 10, b = 20.

现在使用 Python 进行如下的运算:

图 1 使用 Python 异或运算交换变量的数值
图 1 使用 Python 异或运算交换变量的数值

可以看到,经过三次异或操作,成功的交换了a和b的数值。

其实,只要明白了异或的规律,就知道了这其中的原因,异或的运算规则是:

相同为0, 不同为1.

将上面的运算过程展开写就是这样的:

a = a ^ b = 10 ^ 20 = 0b(01010) ^ 0b(10100) = 0b(11110) = 30
b = a ^ b = 30 ^ 20 = 0b(11110) ^ 0b(10100) = 0b(01010) = 10
a = a ^ b = 30 ^ 10 = 0b(11110) ^ 0b(01010) = 0b(10100) = 20

Kali Linux 更换系统主题

操作环境

物理机操作系统:Windows 10 家庭版
虚拟机操作系统:Kali Linux 2018.4
虚拟化软件:VMware Workstation 15 Pro (15.0.2 build-10952284)

工具准备

GNOME 主题下载:
https://www.gnome-look.org/

这里我使用的主题是:
https://www.opendesktop.org/p/1263666/

我下载的文件名称是:

McOS-MJV-Dark-mode-Gnome-3.30-1.1.tar.xz

操作步骤

将该主题文件复制进/usr/share/themes/目录:

cp McOS-MJV-Dark-mode-Gnome-3.30-1.1.tar.xz /usr/share/themes/

进入系统主题所在的目录:

cd /usr/share/themes/

解压 .xz 文件:

xz -d McOS-MJV-Dark-mode-Gnome-3.30-1.1.tar.xz

解压 .tar 文件:

tar -xvf McOS-MJV-Dark-mode-Gnome-3.30-1.1.tar

点击打开“优化”工具:

图 1 中文状态下的优化工具
图 1 中文状态下的优化工具

如果在英文状态下,是这样的,点击”Tweaks”:

图 2 英文状态下的优化工具
图 2 英文状态下的优化工具

依次找到“外观/主题/”,选中刚才下载的主题即可更换主题:

图 3 使用优化工具更换系统主题
图 3 使用优化工具更换系统主题

更换系统主题后的Kali Linux:

图 4 系统主题更换完成
图 4 系统主题更换完成

Android开发实战:点击按钮显示一个带有“取消”和“确定”两个选项的对话框

操作环境

  • Windows 10
  • Android Developer Tools (Build: v22.2.1-833290)
  • Android 4.3

代码

res/layout/activity_main.xml 代码如下:

<pre class="wp-block-code"><code><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textView1"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="90dp"
        android:text="点击开启一个对话框"
        android:onClick="onclick" />

</RelativeLayout></code></pre>

src/com/example/duihuakuang/MainActivity.java 代码如下:

package com.example.duihuakuang;


import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.Toast;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
	}
	
	public void onclick(View view)
	{
		AlertDialog.Builder builder = new Builder(this);
		builder.setIcon(null);//设置图标, 这里设为空值
		builder.setTitle("ZhaoKaifeng.com");
		builder.setMessage("确定要取消吗");
		builder.setPositiveButton("确定", new OnClickListener(){
			
			public void onClick(DialogInterface arg0, int arg1){
				Toast.makeText(MainActivity.this,"确定成功!",Toast.LENGTH_SHORT).show();
			}
		});
		
		builder.setNegativeButton("取消", new OnClickListener(){
			public void onClick(DialogInterface arg0,int arg1){
				Toast.makeText(MainActivity.this, "取消成功!", Toast.LENGTH_SHORT).show();
			}
		});
		AlertDialog b = builder.create();
		b.show();//显示对话框
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}

运行效果

程序首页效果:

图 1
图 1

点击“点击开启一个对话框”按钮后的效果:

图 2
图 2

点击“确定”按钮后的效果:

图 3
图 3

点击“取消”按钮后的效果:

图 4
图 4

使用 MSU StegoVideo 将信息隐藏进 AVI 视频文件中(两种方法 + 详细图文过程)

环境部署

操作系统:
Windows 7 专业版 64位

软件:

  • 下载 MSU StegoVideo

下载地址:http://www.compression.ru/video/stego_video/index_en.html
接下来还需要下载并安装如下两个解码器,否则在使用 MSU StegoVideo 的 .exe 程序的时候会报错:

Can’t find suitable decompresso

如果是在 VirtualDub 中使用 MSU StegoVideo 插件,则会报错:

Couldn’t locate decompressor for format XviD (Unknown)
VirtualDub requires a Video for Windows (VFW) compatible codec to decompress video. DirectShow codecs, such as those used by Windows Media Player are not suitable

继续阅读“使用 MSU StegoVideo 将信息隐藏进 AVI 视频文件中(两种方法 + 详细图文过程)”

使用 Python 3 在图片上绘制可见水印 (1.0 版)

运行环境:Ubuntu Ubuntu 18.04.1 LTS

代码如下:

import PIL
from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont

# 设置所使用的字体和字体大小
font1 = ImageFont.truetype("UbuntuMono-B.ttf", 100)

# 打开图片
imageFile = "1.jpeg"
im1 = Image.open(imageFile)

# 绘图实例化
draw1 = ImageDraw.Draw(im1)

# 设置水印的位置,内容,颜色,字体
draw1.text((10, 10), "www.zhaokaifeng.com", (255, 0, 0), font=font1)

# 将生成的图片另存
im1.save("11.jpg")

 

本项目 GitHub 地址:HERE

在 VirtualBox 中为 BlackArch Linux 设置共享文件夹

操作环境

虚拟化软件:VirtualBox 5.2.22 r126460 (Qt5.6.2)

物理机操作系统:Windows 10 家庭版 64位

虚拟机操作系统:blackarch-linux-2018.08.01

操作过程

在物理机上新建一个文件夹,打开”设备/共享文件夹”,添加一个共享文件夹并设置为“自动挂载”,如图:

图 1 添加共享文件夹
图 1 添加共享文件夹

之后重启虚拟机系统。

在虚拟机系统的/media/sf_share 目录下可以看到共享文件夹中的内容:

图 2 在虚拟机系统中查看共享文件夹中的文件
图 2 在虚拟机系统中查看共享文件夹中的文件

解决 BlackArch 联网报错:Could not connect to wicd’s D-bus interface. Check the wicd log for error message.

操作环境

虚拟化软件:VirtualBox 5.2.22 r126460 (Qt5.6.2)

物理机操作系统:Windows 10 家庭版 64位

虚拟机操作系统:blackarch-linux-2018.08.01

虚拟机联网方式:桥接

报错产生的过程

启动 BlackArch 之后,右键”network/wicd-gtk”, 如图:

图 1 启动 wicd-gtk
图 1 启动 wicd-gtk

随后出现弹窗提示:

图 2 无法连接到 wicd 的 D-Bus 接口
图 2 无法连接到 wicd 的 D-Bus 接口

上述报错的文字内容即是:

Could not connect to wicd’s D-bus interface. Check the wicd log for error message.

问题解决过程

ip a  命令查看网卡和网络连接情况:

图 3 网卡 enp0s3 未获取到 IP 地址
图 3 网卡 enp0s3 未获取到 IP 地址

运行 dhcpcd enp0s3  命令自动获取 IP 地址:

图 4 自动获取 IP 地址
图 4 自动获取 IP 地址

之后,使用 ip a 命令即可看到系统已经获取到了 IP 地址等网络配置信息:

图 5 成功获取 IP 地址
图 5 成功获取 IP 地址

ping 测试发现可以正常连接互联网:

图 6 ping www.zhaokaifeng.com
图 6 ping www.zhaokaifeng.com

GNS3 2.1.11 导入 c7200 路由器的过程(图文)

操作环境

GNS3版本:GNS3 2.1.11

c7200文件名称:c7200-adventerprisek9-mz.124-24.T.BIN

操作过程

依次点击“Edit/Preferences”:

图 0 点击preferences参数选择
图 0 点击preferences参数选择

选中”IOS routers”, 点击”New”:

图 1 New 一个 IOS router
图 1 New 一个 IOS router

“c7200-adventerprisek9-mz.124-24.T.BIN”这个文件的存放路径中如果有中文,会出现如下提示:

图2 IOS image 文件路径中只能包含ascii(英文)的字符
图2 IOS image 文件路径中只能包含ascii(英文)的字符

点击OK之后会询问我们是否将 IOS 的 image 文件拷贝至系统默认的路径下,这时点击”Yes”即可:

图 3 拷贝image文件至默认的目录
图 3 拷贝image文件至默认的目录

按照上面的步骤(将 image 文件放在包含中文的路径下并同意系统将其拷贝至默认的路径)。当然,我们也可以将 image 文件放在一个不包含中文的路径下,操作完成后,点击”Next”:

图 4 点击 Next
图 4 点击 Next

这一步需要我们指定名称和平台,由于我们导入的是 c7200 路由器而且系统已经帮助我们自动选择了 c7200 的平台,所以在这里使用默认即可,点击”Next”:

图 5 指定名称和平台
图 5 指定名称和平台

这一步让我们为路由器指定可使用的物理内存的上限,默认是 512MiB, 但是如果不准备使用该路由器进行大型实验而且物理内存不是很大的话,可以适当减小这个数值,这里我选择指定为 256MiB:

图 6 设置内存上限
图 6 设置内存上限

这一步让我们设置将默认插入到每台新的路由器实例中的网络适配器。

图 7 配置网络适配器
图 7 配置网络适配器

根据需要,我的网络适配器模块的配置如下:

图 8 网络适配器配置完成
图 8 网络适配器配置完成

这一步我们需要计算一下Idle-PC值(关于Idle-PC值的作用可查看文末附1),点击”Idle-PC finder”开始计算。计算完成后系统会自动填入,最后点击”Finish”即可。

图 9 正在计算Idle-PC
图 9 正在计算Idle-PC
图 10 Idle-PC值计算完成
图 10 Idle-PC值计算完成

应用配置:

图 11 应用配置
图 11 应用配置

测试。通过”File/New blank project”新建一个空白项目,拖出一台 c7200, 检测其是否能正常开机,:

图 12 c7200成功开机
图 12 c7200成功开机

附1:Idle-PC值的作用

Idle-PC 是 Dynamips 思科路由器模拟器的一项功能。在没有配置 Idle-PC 的情况下,我们很容易就会看到在模拟器上开启思科路由器后,CPU 占用率达到 100%. 通过 Idle-PC, Dynamips 可以知道虚拟出来的路由器什么时候是空闲的,什么时候在做有用的工作,这样的话那些处于“休眠”状态的路由器就可以极大的被减少 CPU 资源的消耗,从而使整个虚拟系统的 CPU 资源占用率降低。


荒原之梦网全部内容均为原创,提供了涵盖考研数学基础知识、考研数学真题、考研数学练习题和计算机科学等方面,大量精心研发的学习资源。

意见反馈 | 内容纠错 | 微信 | QQ | 公众号 | 知乎 | 微博 | 博客园 |CSDN | B 站 | 电子邮件
豫 ICP 备 17023611 号-1 | 公网安备 - 荒原之梦 豫公网安备 41142502000132 号 | SiteMap
Copyright © 2017-2024 ZhaoKaifeng.com 版权所有 All Rights Reserved.

Copyright © 2024   zhaokaifeng.com   All Rights Reserved.
豫ICP备17023611号-1
 豫公网安备41142502000132号

荒原之梦 自豪地采用WordPress