7342932904

webpack

安装需要本地环境支持 node.js
1.cnpm install webpack -g 安装webpackage
2.webpackage a.js b.js 将a.js编译成b.js,以供html中script标签src属性中b.js使用


loader

因为webpackage只能打包js,要打包css等其他文件需要安装loader,以css安装为例
1.cnpm install css-loader style-loader 执行以上命令后,会再当前目录生成 node_modules 目录,它就是 css-loader 和 style-loader 的安装目录。
2.require(“!style-loader!css-loader!./style.css”); !style-loader!css-loader!是指捆绑上css打包loader,捆绑后再用webpack打包js


配置文件

1,实例如下
module.exports = {
entry: "./runoob1.js",
output: {
path: __dirname,
filename: "bundle.js"
},
module: {
loaders: [
{ test: /\.css$/, loader: "style-loader!css-loader" }  #/\.css$/为正则,用于匹配要处理的文件
]
}
};
2,直接使用wbpack指令,会默认载入当前目录的 webpack.config.js 文件。

508-318-8492

视频元素:<vidio>

<video id="video1" src="movie.ogg" controls="controls"> </video>
<button onclick="playPause()">播放/暂停</button>   
               #playPause()是函数名,需要在<script>中定义函数的方法
<script type="text/javascript">
var myVideo = document.getElementById("video1");
function playPause()
{
if (myVideo.pause)
    myVideo.play;  #通play和pause相同的方法还有
else
    myVideo.pause;
}

音频元素:<audio>

<audio controls="controls">
  <source src="song.ogg" type="audio/ogg">
  <source src="song.mp3" type="audio/mpeg">
Your browser does not support the audio tag.
</audio>

多加一个src可以确保更多浏览器使用

Linux的ext文件系统

如果我想要读取 /etc/passwd 这个文件时,系统是如何读取的呢?

  1. / 的 inode:
    透过挂载点的信息找到 inode 号码为 128 的根目录 inode,且 inode 规范的权限让我们可以读取该 block
    的内容(有 r 与 x) ;
  2. / 的 block:
    经过上个步骤取得 block 的号码,并找到该内容有 etc/ 目录的 inode 号码 (33595521);
  3. etc/ 的 inode:
    读取 33595521 号 inode 得知 dmtsai 具有 r 与 x 的权限,因此可以读取 etc/ 的 block 内容;
  4. etc/ 的 block:
    经过上个步骤取得 block 号码,并找到该内容有 passwd 文件的 inode 号码 (36628004);
  5. passwd 的 inode:
    读取 36628004 号 inode 得知 dmtsai 具有 r 的权限,因此可以读取 passwd 的 block 内容;
  6. passwd 的 block:
    最后将该 block 内容的数据读出来。

新增一个文件,此时文件系统的行为是:

  1. 先确定用户对于欲新增文件的目录是否具有 w 与 x 的权限,若有的话才能新增;
  2. 根据 inode bitmap 找到没有使用的 inode 号码,并将新文件的权限/属性写入;
  3. 根据 block bitmap 找到没有使用中的 block 号码,并将实际的数据写入 block 中,且更新 inode 的 block
    指向数据;
  4. 将刚刚写入的 inode 与 block 数据同步更新 inode bitmap 与 block bitmap,并更新 superblock 的内容。

我们的 Linux 使用的方式是透过一个称为异步处理 (asynchronously)的方式。所谓的异步处理是这样的:
当系统加载一个文件到内存后,如果该文件没有被更动过,则在内存区段的文件数据会被设定为干净
(clean)的。 但如果内存中的文件数据被更改过了(例如你用 nano 去编辑过这个文件),此时该内存中
的数据会被设定为脏的 (Dirty)。此时所有的动作都还在内存中执行,并没有写入到磁盘中! 系统会不定时的将内存中设定为『Dirty』的数据写回磁盘,以保持磁盘与内存数据的一致性。

(928) 646-5229

什么是SSH:
SSH:Secure Shell安全外壳协议
建立在应用层基础上的安全协议
可靠,为远程登陆绘画和其他网络服务提供安全性的协议
SSH客户端使用于多种平台

服务端安装:
服务器安装SSH服务:yum install openssh-server
启动SSH:service sshd start
设置开机运行: chkconfig sshd on

客户端安装:
Windows安装Xshell
Linux安装yum install openssh-clients

SSH的连接:
Windows连接SSH命令:ssh root@192.168.1.106

SSH的配置文件与免密登陆
我有这样的需求就是,因为需要ssh连接到服务器,然后每次需要输入好大一长串的信息,而且连接到一台服务器后,还可能跳转到另外一台服务器,而且每次还需要输入密码,所以感觉非常的麻烦。
为了解决这个问题,我用上了ssh中的config配置文件

  1. 配置前
    ssh username@hostname -p port
    �
    然后输入密码
  2. 配置后
    配置以后,我们只需要输入连接账户的别名即可
    ssh 别名
  3. 配置方法
    在.ssh/config中配置,如果没有config,创建一个即可,然后将下面的(别名,主机名,端口,用户名替换即可),端口如果默认22可以不要,删除那行即可。
    Host 别名 Hostname 主机名 Port 端口 User 用户名
    配置好之后,就可以直接ssh 别名连接了,不需要输入一长串,但是还是有一个问题,就是还是需要输入密码。解决办法就是将我们的公钥拷贝到连接的机器上就可以了。
  4. 密钥生成
    ssh-keygen -t rsa
    �
    然后一直回车就可以了
  5. 拷贝公钥
    5.1 一种方法是直接用ssh-copy-id,会拷贝之前生成的公钥
    ssh-copy-id 别名

这里可以用别名的前提是之前已经配置好了。如果没有的话,就只有像ssh在配置前的操作一样。
5.2.1 另外一种方法是用scp进行拷贝,替换下面的username和hostname
scp .ssh/id_rsa.pub username@hostname:~/.ssh/
5.2.2 然后将拷贝之后的id_rsa.pub内容添加到.ssh/authorized_keys里面(如果不存在,那么就创建一个)
cat id_rsa.pub >> .ssh/authorized_keys

6.重启服务器的ssh服务
/etc/init.d/ssh restart

基于Eric+QtDesigner+PyQt5开发的UI环境搭建

PyQt5的安装:
1.pip install PyQt5
2.pip install pyqt5-tools

eric6的安装:
1.官网下载有中文汉化包的版本,/eric-ide.python-projects.org/eric-download.html
2.解压,打开命令行,进文件夹,python install.py
3.进入python目录下的script里,运行eric6.dat即可打开
4.配置PyQt5,eric6,pyhton3.7的api并编译
5.设置QtDesigner路径:进入eric6-配置-Qt-Qt工具-X:Python\Lib\site-packages\pyqt5_tools
QtDesigner的汉化:
1.复制汉化包到python目录下\Lib\site-packages\pyqt5_tools\translations

初识UI编程之猜数字:
1.打开Eric6-新建项目-命名为test-设置目录
2.新建主窗体-打开QDesigner-拖clickbottom和lineEdit进主窗体-保存并返回eric-右键编译窗体-右键生成对话框代码-命名类为Action
3.在源代码处编写代码:

# -*- coding: utf-8 -*-

"""
Module implementing actionn.
"""

from PyQt5.QtCore import pyqtSlot
from PyQt5.QtWidgets import QMainWindow
from random import randint
from Ui_main_window import Ui_MainWindow
from PyQt5.QtWidgets import *
import sys


class Actionn(QMainWindow, Ui_MainWindow):
    """
    Class documentation goes here.
    """
    def __init__(self, parent=None):
        """
        Constructor
        
        @param parent reference to the parent widget
        @type QWidget
        """
        super(Actionn, self).__init__(parent)
        self.setupUi(self)
        self.num=randint(1, 100)
        self.show()
    def closeEvent(self, event):
        yes_not=QMessageBox.question(self, '确认', '确认退出吗', QMessageBox.Yes|QMessageBox.No, QMessageBox.No)
        if yes_not==QMessageBox.Yes:
            event.accept()
        else:
            event.ignore()
    @pyqtSlot()
    def on_pushButton_clicked(self):
        input_num=int(self.lineEdit.text())
        print(num)
        if input_num>self.num:
            QMessageBox.about(self, '看结果', '猜大了')
            self.lineEdit.setFocus()
        elif input_num<self.num:
            QMessageBox.about(self, '看结果', '猜小了')
            self.lineEdit.setFocus()
        else:
            QMessageBox.about(self, '看结果', '猜对了')
            self.num=randint(1, 100)
            self.lineEdit.clear()
            self.lineEdit.setFocus()
            
if __name__=='__main__':
    app=QApplication(sys.argv)
    actionn =Actionn()
    sys.exit(app.exec_())