- 博客(30)
- 收藏
- 关注
原创 ibus输入法开发记录:(三)属性菜单IBusProperty和配置IBusConfig
ibus输入法开发记录:(三)属性菜单IBusProperty和配置IBusConfig属性菜单初始化属性菜单属性变化:回调与显示更新配置项python gtk编写的首选项IBusConfig产生的一些问题属性菜单原生的ibus通过属性菜单提供即时变更输入法配置的方法。如下图所示,左侧的状态条内的图标与右侧红框内的属性菜单为一一对应关系,例如点击状态条里“中”的图标与属性菜单里“CN”的字样,都能够触发相同prop_name的回调函数,产生同样的效果。ibus的状态条默认是关闭的,一般可以通过设置唤
2020-07-11 20:42:20 865
原创 ibus输入法开发记录:(二)引擎engine
ibus输入法开发记录:(二)引擎engine引擎engine介绍引擎类构造引擎接入、初始化和销毁宏定义G_DEFINE_TYPE引擎注册:class_init引擎初始化init和销毁destroy引擎使用引擎接入引擎engine介绍ibus的引擎(engine)是提供输入功能的核心。对于用户而言,一个engine就是一个可选择使用的输入法,如下图所示:列表中安装的输入法实际上有英语、SunPinyin、Pinyin(和Bopomofo)三个组件(component),但总共有四个输入引擎。Piny
2020-07-04 22:04:48 1507
原创 ibus输入法开发记录:(一)概览
ibus输入法开发记录:(一)概览参考资料导航ibus简介ibus自定义输入法开发简介组件和引擎接入组件初始化ibus程序调试参考资料导航ibus源代码:https://github.com/phuang/ibusibus-pinyin源代码:https://github.com/phuang/ibus-pinyinibus-tmpl源代码:https://github.com/phuang/ibus-tmpl。此代码构件了一个极为简易的输入法引擎,适用于作为ibus自定义输入法引擎开发的框架使参考
2020-07-04 14:50:49 2079 1
原创 记一下这次JS劫持
症状ubuntu系统访问非https网站时chrome浏览器被疯狂弹xdg-open(企图唤起app),手机浏览器疯狂重定向、自动下载apk事情经过事情起源于全国大学生同上一堂课。。打开人民网看个思政课,chrome浏览器就开始疯狂弹窗,像这个样子↓超卡的!!我今天写博客特意开了一下!!!卡的我妈都不认!!!虽然以前也会偶尔弹一下。。取消就好了。。可是这个简直按了一分钟回车键都没消停...
2020-03-11 18:50:43 1137
原创 C语言中const的用法总结
const用法:const int a和int const a:都指定a为int类型,并用const修饰变量a的值不可变const int *p:首先p为指向整数类型的指针变量,const修饰该指针变量不可变,因此p所指向的地址的值不可变(p可以指向别的地址)int* const p:const修饰的是p本身,因此p的值不可变(不能修改p指向别的地址)int const *p:与cons...
2019-08-05 09:27:02 328
原创 一些Makefile的函数
origin查询参数VARNAME的出处。VARNAME为变量名,所以一般不通过$进行引用$(origin VARNAME)若从未定义过该变量,origin返回undefinedall: @echo $(origin V)make时输出:undefined若该变量为环境变量,则返回enviromentall: @echo $(origin USER)# 或者# V...
2019-06-25 16:04:07 175
原创 pytorch框架自定义正则项
利用pytorch框架构建神经网络时,可以使用框架中各优化方法中自带的“weight_decay”使用权重衰减,即L2范数正则项,例如:torch.optim.Adam(net.parameters(), weight_decay=0.1)但是当我们想使用自定义正则项,例如L1正则项的时候,可以使用如下方法:https://stackoverflow.com/a/50100180/9640...
2019-06-20 19:32:21 2786 2
原创 vi下使用方向键和退格
使用ubuntu自带的vi,在插入模式下,按键盘的上下左右不会移动光标,只会出现ABCD并换行,敲退键删除也是不行的,出现这种问题是因为Ubuntu只是安装了简易的vi,简易的vi相当于vim-tiny ,而需要的是vim full版本。解决方法1:安装vim full 版本:$sudo apt-get remove vim-common$sudo apt-get install vim...
2019-06-20 19:30:52 1139
原创 静态链接与动态链接
引入:理解链接过程由一个.c源文件得到一个二进制可执行文件需要经历预处理、编译、汇编和链接:预处理:包括头文件的包含、宏定义的扩展、条件编译的选择等 gcc -E hello.c编译:经过词法分析、语法分析、语义分析,将源代码翻译成汇编代码 gcc -S hello.c汇编:把作为中间结果的汇编代码翻译成了机器代码,即目标代码 gcc -c hello.s代码在链接之前经...
2019-04-24 19:18:31 200 1
原创 MIT-JOS系列:用户态访问页表项详解
在MIT-JOS lab4的实验中,为了能够在用户态自定义处理页面错误,我们必须要知道操作的页面的属性(是否当前用户具有读写权限、是否copy on write页面),这就需要查询指向当前物理页面的页表项和目录表项获取它的属性在之前的实验中,我们已经通过e->env_pgdir[PDX(UVPT)] = PADDR(e->env_pgdir) | PTE_P | PTE_U;修改UV...
2019-04-18 16:33:41 1118 1
原创 MIT-JOS系列:问题汇总
页目录表基址(保存在CR3)为物理地址,但GDT表基址(保存在GDTR)为线性地址,为什么?A:在开启了分页后,除了cr3,所有地址都要经过MMU自动进行虚拟地址到物理地址的转换,这个是无法绕过的。在进入kernel初期,GDTR放着的还是boot时载入的gdt表的地址(这时候是物理),随后载入简易页表开启保护和分页模式,此后GDTR存放的地址都视为虚拟地址。由于kernel初期的简易页表同...
2019-04-18 15:39:15 693
原创 MIT-JOS系列10:多任务处理(三)
Part C:抢占式多任务处理和进程间通信(IPC)注:根据MIT-JOS的lab指导手册,以下不明确区分“环境”和“进程”重要提醒:每次实现完系统调用,记得补充kern/syscall.c的syscall()!!!在lab4的最后一部分,我们将修改内核以支持抢占不合作环境拥有的资源并允许进程间通信时钟中断和抢占如果尝试运行user/spin,这个程序会fork创建一个子进程,子进程一旦...
2019-04-18 14:30:01 619
原创 MIT-JOS系列9:多任务处理(二)
Part B:fork的写时拷贝(Copy-on-Write Fork)注:根据MIT-JOS的lab指导手册,以下不明确区分“环境”和“进程”重要提醒:每次实现完系统调用,记得补充kern/syscall.c的syscall()!!!如上一篇文章提及到的,Unix提供系统调用fork()作为创建进程的原语,它将父进程的地址空间拷贝到子进程。xv6 Unix的fork()实现是:为子进程分...
2019-04-18 14:27:56 562
原创 MIT-JOS系列8:多任务处理(一)
Part A:多处理器支持和协作式多任务处理注:根据MIT-JOS的lab指导手册,以下不明确区分“环境”和“进程”在这部分实验中,我们将扩展JOS使之能在多处理器系统上运行,并实现一些新的系统调用以允许用户环境新建新的环境。我们还将通过协作轮询调度(cooperative round-robin scheduling)实现内核在当前环境放弃对CPU的占用(或退出)时切换到另一个环境。在之后的...
2019-04-16 10:45:59 1441 1
原创 MIT-JOS系列7:用户环境(三)
Part B:缺页异常,断点异常和系统调用到目前位置我们以及你实现了内核基本的异常处理,现在要在此基础上利用异常处理进行系统调用。处理缺页异常缺页异常(page fault,中断向量14)是我们在本实验和往后会大量使用的一个重要例子。当缺页异常发生时,处理器将导致故障的线性地址(虚拟地址)存放在特殊寄存器cr2中。在trap.c中,提供了一个用于缺页异常的函数page_fault_handl...
2019-04-14 15:04:37 410
原创 MIT-JOS系列6:用户环境(二)
Part A:用户环境和异常处理用户环境创建见上一篇:MIT-JOS系列5:用户环境(一)处理中断和异常基础知识受保护的控制转移异常(exceptions)和中断(interrupts)都是受保护的控制转移(protected control transfers),它们将处理器模式从用户态切换到内核态,不给用户模式干扰到其他环境或内核功能的机会。在Intel的术语里,中断一般是指由处理...
2019-04-14 14:51:30 617
原创 MIT-JOS系列5:用户环境(一)
Part A:用户环境和异常处理用户环境创建本节中我们将实现一些内核的基本工具来支持受保护的用户进程的运行。我们将增加JOS内核的功能,为它增加一些数据结构来追踪用户进程的一些信息;创建一个单一用户的环境,并在其中加载运行一个程序。我们也会使JOS内核处理用户进程做出的任何系统调用和它导致的任何异常内核利用ENV数据结构来记录每一个环境的信息。目前我们只创建单一的用户环境,以后再在此基础上设...
2019-04-11 14:20:24 1482 1
原创 MIT-JOS系列4:内存管理
在MIT-JOS lab1的实验中我们了解了bootloader和kernel载入的过程,并在kernel中完成了最初的虚拟内存映射、栈设置和硬件相关的一系列初始化。在Lab2中,我们将在JOS操作系统中实现分页内存管理,其包括:物理页面管理(对机器拥有的物理内存的管理,包括建立对应的数据结构、处理分配和回收动作等)虚拟内存管理(将内核和用户软件使用的虚拟地址映射到物理地址)在lab2开...
2019-04-10 10:04:12 1630
原创 MIT-JOS系列3:启动内核
使用虚拟内存为什么要使用虚拟内存?可以参考这篇博客:虚拟内存与物理内存的联系与区别简单的说可以总结为:使比实际物理内存更大的程序能够运行使每个进程拥有独立的虚拟地址空间,相互之间不能修改数据访问虚拟地址时,如果虚拟地址所对应的物理地址不在物理内存中,则产生缺页中断,此时才真正分配物理地址,同时更新进程的页表虚拟地址如何寻址?可以参考我之前博客中的保护模式寻址:MIT-JOS系列1:...
2019-04-08 19:18:37 738
原创 MIT-JOS系列2:bool loader过程
系统的启动过程(一):bool loader过程物理内存分布PC开机后的默认物理内存分布如图:早期PC是基于16位的8086处理器,因此只支持1MB物理内存,地址从0x00000000~0x000FFFFF物理内存前640K被标记为Low Memory,这一区域是早期PC唯一可以访问的RAM0x000A0000~0x000FFFFF的384K区域被硬件保留用于特殊用途:这一部...
2019-04-04 17:01:05 759
原创 MIT-JOS系列1:实模式和保护模式下的段寻址方式
实模式下的段寻址以8086为例8086 段寄存器16位(段地址/基地址),寄存器16位(偏移地址),地址总线20位(寻址1M:2^20)实际物理地址 = (段寄存器 << 4) + 偏移地址访问到的是实地址。段内最大64K(2^16),但一个段可以小于64K:在编程时可以根据需要,将若干个地址连续的内存单元看做一个段,用段地址×16定位段的起始地址(基地址),用偏移地址定...
2019-04-03 15:10:04 1275
翻译 Group Sparse Regularization for Deep Neural Networks:深度神经网络的组稀疏正则化 (翻译)
深度神经网络的组稀疏正则化 (翻译)Group Sparse Regularization for Deep Neural NetworksScardapane S, Comminiello D, Hussain A, et al摘要:在本论文中,我们考虑同时进行以下优化任务:深度神经网络的权重、隐层神经元的数量以及输入特征选择。虽然这三个问题通常被分开处理,但我们提出了一个简单的正则化公...
2018-11-29 17:36:26 9567 8
原创 如何使用google drive的免费GPU进行深度学习
最近想玩一玩深度学习,需要训练一些 yolo 之类的网络进行对象检测,苦于我的本子没有独显又没有实验室的机器给用,想起之前看到的 google 提供免费 GPU 用来学习的消息,就尝试一下。利用Jupyter Notebook测试Google Drive的GPU首先登录 Google Drive:https://drive.google.com。访问 google 需要一些不可描述的操作,此处...
2018-11-29 14:24:12 2528 1
原创 windows git:添加SSH key
git如果使用https协议,每次push时都会提示输入用户名和密码,使用ssh秘钥(git协议)则可以避免这一麻烦。配置方法:1、进入目录~/.ssh$ cd ~/.ssh在windows下,这个目录一般为C:\Users\your_username.ssh2、创建ssh key$ ssh-keygen -t rsa -C &amp;quot;your_email@example.com&amp;quot;代码参...
2018-10-26 11:22:13 6425 3
原创 python+openCV调用摄像头拍摄和处理图片
在深度学习过程中想做手势识别相关应用,需要大量采集手势图片进行训练,作为一个懒人当然希望飞快的连续采集图片并且采集到的图片就已经被处理成统一格式的啦。。于是使用python+openCV调用摄像头,在采集图片的同时顺便处理成想要的格式。详细代码如下:import cv2import osprint("============================================...
2018-10-20 16:56:32 24089 5
原创 keras中遇到的错误
在运行其他开源keras项目时,遇到了一些问题:1、在导入_obtain_input_shape时from keras.applications.imagenet_utils import _obtain_input_shape出现错误如下:ImportError: cannot import name '_obtain_input_shape'原因是在keras 2.2.2中,ke...
2018-10-19 20:37:47 9042 4
原创 Linux C编程一站式学习编程练习:实现简单的Shell
Linux C编程一站式学习P585编程练习:实现简单的Shell用讲过的各种C函数实现一个简单的交互式Shell,要求:给出提示符,让用户输入一行命令,识别程序名和参数并调用适当的exec函数执行程序,待执行完成后再次给出提示符。识别和处理以下符号:· 简单的标准输入输出重定向(&amp;lt;和&amp;gt;):仿照例30.5 “wrapper”,先dup2然后exec。· 管道(|):She...
2018-10-17 12:50:08 740
原创 vs code中使用Astyle排版C/C++代码
搜索扩展Astyle并安装下载Astyle:https://sourceforge.net/projects/astyle/files/,解压缩后添加Astyle.exe的路径到系统环境变量,例如我在Path中增加一条D:\vscode\AStyle_3.1_windows\AStyle\bin重启vscode使环境变量生效可修改astyle的配置:例如我在用户设置中增加字段 "...
2018-10-16 10:14:28 7964
原创 pip错误:'utf-8' codec can't decode byte解决方法
windows下python3.6安装flask时报错:Exception:Traceback (most recent call last): File "d:\python36\python36\lib\site-packages\pip\compat\__init__.py", line 73, in console_to_str return s.decode(sys.__...
2018-10-15 22:05:29 9601 3
原创 windows中python2与python3共存
windows中python2与python3共存python及pip安装一、python3及pip安装二、python2及pip安装pip出错python及pip安装一、python3及pip安装在python官网下载并安装需要版本的python3安装过程中选择“Add Python 3.6 to PATH”,并选择自定义安装(可以选择64位来装,我只是截个图示意下。。)装的时候...
2018-10-15 21:59:14 557
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人