prism

国际化那点儿事儿

前提是你 提交于 2020-04-06 07:42:30
国际化那点儿事儿 前言 方案调研 规范说明 系统运行说明 重要概念 实施流程 改造过程 前言 前阵子对一个历史项目做了国际化改造,时下流行框架基本上都提供了自己的国际化标准,预留了国际化模块。本文讲的是从零开始的国际化方案,适用于改造已有项目。如果您使用的是这些标准规范的框架,那可以参考您的框架文档。 方案调研 市面上提供国际化解决方案有很多种,大致原理都是标记一个带翻译的key, 提供一个语言转换函数和对应的语言包,翻译这些标记的key。这里介绍一个使用广泛的,提供跨语言支持的方案 — GNU gettext utilities 。规范完整,考虑周全,提供了各种语言示例,就是它了,我调研时整理了一份 国际化解读 。 建议如果做之前,详细的阅读3遍,如果遇到问题了,仔细看规范,上面有你想要的一切答案。 规范说明 系统运行说明 由于gettext运行时,跟系统已安装的本地化语言包有关。如果你要设置的语言和编码,系统没有会导致翻译失效。可以通过 locale -m 查看环境支持的编码列表。 locale -a 查看已安装的语言列表。如果没有,请参考规范安装对应的语言包。 重要概念 po文件 可移植对象(Portable Object) 标记完成待翻译的内容之后,使用命令可以提取这些待翻译标签到po文件中,由翻译人员去审核校验。 # : lib / error . c : 116

C 语言编程 — 输入/输出与文件操作

时光总嘲笑我的痴心妄想 提交于 2020-04-06 07:28:40
目录 文章目录 目录 前文列表 输入/输出 scanf() 和 printf() getchar() 和 putchar() 文件操作 打开文件 关闭文件 写入文件 读取文件 二进制 I/O 函数 前文列表 《 程序编译流程与 GCC 编译器 》 《 C 语言编程 — 基本语法 》 《 C 语言编程 — 基本数据类型 》 《 C 语言编程 — 变量与常量 》 《 C 语言编程 — 运算符 》 《 C 语言编程 — 逻辑控制语句 》 《 C 语言编程 — 函数 》 《 C 语言编程 — 高级数据类型 — 指针 》 《 C 语言编程 — 高级数据类型 — 数组 》 《 C 语言编程 — 高级数据类型 — 枚举 》 《 C 语言编程 — 高级数据类型 — 结构体与位域 》 《 C 语言编程 — 高级数据类型 — 共用体 》 《 C 语言编程 — 数据类型的别名 》 《 C 语言编程 — 数据类型转换 》 《 C 语言编程 — 预处理器指令 》 《 C 语言编程 — 异常处理 》 输入/输出 输入,意味着要向程序输入数据,可以是以文件的形式或从命令行中进行。 输出,意味着要在屏幕上、打印机上或任意文件中输出数据。 C 语言把所有的设备都当作文件。所以处理设备(e.g. 显示器)的输入/输出的方式与文件操作的方式相同。以下三个文件称之为标准输入/输出文件,会在程序执行时自动打开

盲源分离算法学习笔记

会有一股神秘感。 提交于 2020-04-06 06:50:35
盲源分离算法学习笔记 优缺点(Pros & Cons) 优点 缺点 麦克风阵列算法有两大类,一类是波束形成算法,另一类是盲源分离算法,两者互有优劣。本篇博客先通过比较盲源分离和波束形成来说明盲源分离的优缺点,盲源分离的基础知识,然后分别介绍盲源分离的常见实现方式。本篇盲源分离算法主要是记录ICA算法,若无指明,BSS和ICA在本篇博客中是等价的。 优缺点(Pros & Cons) 优点 盲源分离不需要目标语音VAD的先验信息。 这个先验信息对于波束形成算法是很关键的,其准确程度直接影响性能。而盲源分离不需要做自适应滤 盲源分离不需要目标语音的DOA信息。 缺点 盲源分离的结果是混淆的。 比如两个声源 s 1 , s 2 s_1,s_2 s 1 ​ , s 2 ​ ,分离出来的顺序可以是 s 1 ^ , s 2 ^ \hat{s_1}, \hat{s_2} s 1 ​ ^ ​ , s 2 ​ ^ ​ ,也可能是 s 2 ^ , s 1 ^ \hat{s_2}, \hat{s_1} s 2 ​ ^ ​ , s 1 ​ ^ ​ 。 盲源分离要求输入的信号最多一个是高斯分布。 ICA算法的假设是两个声源 s 1 , s 2 s_1,s_2 s 1 ​ , s 2 ​ 是相互独立的,那么分离出来的 s 1 ^ , s 2 ^ \hat{s_1}, \hat{s_2} s 1 ​ ^ ​ ,

【C++】C++11统一初始化(initializer_list源码分析)

扶醉桌前 提交于 2020-04-06 06:01:55
C++11之前的初始化语法很乱,有四种初始化方式,而且每种之前甚至不能相互转换。让人有种剪不断,理还乱的感觉。因此,C++11添加了统一初始化的方式,本文将对统一初始化的语法进行详细讲解。 本文实例源码github地址 : https://github.com/yngzMiao/yngzmiao-blogs/tree/master/2020Q2/20200404 。 统一初始化 几种初始化方式 先来看一下,C++用于的几种初始化的方式,以int为例: 小括号:int x(0); //C++98 等号:int x = 0; //C++98 大括号:int x{0}; //C++98成功,C++11成功 等号和大括号:int x = {0}; //C++98失败,C++11成功 可以看出,C++拥有较多的初始化方式,如此便引申出一种统一初始化的方式。 统一初始化方式 统一初始化 ,也叫做 大括号初始化 。顾名思义,是使用大括号进行初始化的方式。例如: # include <iostream> # include <vector> # include <complex> int main ( int argc , char * argv [ ] ) { int values [ ] { 1 , 2 , 3 } ; std : : vector < int > v { 2 , 3 , 5

HTK 3.5解码工具HVITE独立工程(Visual Studio Code实现)

无人久伴 提交于 2020-04-06 05:31:04
HTK3.5支持DNN HTK3.5支持DNN了,本来想做一个HMM+DNN的模型,作为HMM+GMM的对比。但是HTK不支持实时的HMM+DNN解码。原因有两个。 HTK不支持实时的计算MFCC_0_D_A_Z的特征,即无法实时计算出特征空间的均值。 HTK不支持实时的DNN或者HMM+DNN的解码。 所以只能做离线的演示。为了学习HVITE的细节,我决定将HVITE工具单独编译。 HTK的源文件结构 HTK的源文件分为lib和tool两个层次。lib文件之间可能有相互依赖(dependency),而tool文件之间相互独立。 HTK主要有HTK和HLM两大类工具,前者做语音识别而后者主要是语言模型。 这次只需要将HTKLib文件夹的所有文件和HTKTools中的HVITE文件提取出来即可。 Visual Studio Code 下面的内容有不详细的地方,可以参考这个链接。 https://code.visualstudio.com/docs/languages/cpp Visual studio code是一个轻量化,跨平台的调试工具。安装后,需要安装两个插件,分别是C/C++,C++ intellisense。 然后将源文件在workspace中打开 编译需要GCC工具,在编译之前需要配置tasks.json,相当于一个脚本。 1)打开 Command Palette

addprefix --Makefile加前缀函数

一笑奈何 提交于 2020-04-06 04:03:06
加前缀函数——addprefix $(addprefix ,<names…> ) 名称:加前缀函数——addprefix。 功能:把前缀加到中的每个单词后面。 返回:返回加过前缀的文件名序列。 $( addprefix src/,a.c b.c ) 返回值为“src/a.c src/b.c” 点赞 收藏 分享 文章举报 Achou.Wang 博客专家 发布了370 篇原创文章 · 获赞 153 · 访问量 34万+ 他的留言板 关注 来源: oschina 链接: https://my.oschina.net/u/4295062/blog/3216295

Redis从入门到实战:进阶篇

冷暖自知 提交于 2020-04-06 03:43:25
之前只是在项目简单使用了Redis(只是充当缓存层实现),对Redis的体系技术没深入了解,最近时间比较充裕,所以再次复习巩固Redis,然后打算写几篇博客记录以及分享所复习的Redis知识。 Redis从入门到实战:入门篇 Redis从入门到实战:实战篇 Redis从入门到实战:进阶篇 Redis从入门到实战:完结篇 Redis从入门到实战:进阶篇 Redis事务 Redis的发布与订阅 Redis持久化机制(RDB+AOF) Redis明明是单线程,为什么性能还那么高(每秒读写10W次等特性) Redis流水线技术(管道) Redis事务 事务这个词我们应该不陌生了,我们在使用MySQL或者Oracle过程中,都会开启事务,直到SQL执行完毕才会关掉事务。 可以说,事务是一种保证数据安全的机制。在关系型数据库中,事务是一组SQL的集合,要么全部执行成功,要么全部执行失败。 而在Redis中,事务是一组命令的集合,这一组命令会按照顺序在隔离的环境中执行,不受其他客户端发送来的命令打断。 下面给出官方解说 事务是一个单独的隔离操作,事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。 事务是一个原子操作,事务中的命令要么全部被执行,要么全部都不执行。 事务可以一次执行多个命令。MULTI、EXEC

Ecos操作系統查看进程信息

回眸只為那壹抹淺笑 提交于 2020-04-06 03:30:26
由于最近公司用到了ecos操作系统,所以简单的了解了一下这个RTOS,其相关的社区资源较少,国内基本不用,这里结合手册整理了一部分的内容。本文章主要两部分,一是建立基本的测试进程,而是枚举所有进程并查看相关信息。 如下代码是在原来的基础上增加的进程信息获取,其中堆栈使用的查看需要在ecos系统配置时启用测量堆栈使用,实际上就是启用一个宏定义。图形化配置如下,也可以直接配置宏(不推荐)。 启用堆栈测量1: 启用堆栈测量2: # ifdef CYGFUN_KERNEL_THREADS_STACK_MEASUREMENT info -> stack_used = thread -> measure_stack_usage ( ) ; # else # include <cyg/kernel/kapi.h> # include <cyg/cpuload/cpuload.h> # include <stdio.h> # include <math.h> # include <stdlib.h> /* now declare (and allocate space for) some kernel objects, like the two threads we will use */ cyg_thread thread_s [ 3 ] ; /* space for two thread

后渗透——域权限维持之利用黄金票据与白银票据获取域控权限

a 夏天 提交于 2020-04-06 03:01:25
声明:本文介绍的技术仅供网络安全技术人员及白帽子使用,任何个人或组织不可传播使用相关技术及工具从事违法犯罪行为,一经发现直接上报国家安全机关处理 权限维持 黄金票据 ms14068的漏洞原理是伪造域管的tgt,而黄金票据的漏洞原理是伪造krbtgt用户的票据,krbtgt用户是域控中用来管理发放票据的用户,拥有了该用户的权限,就可以伪造系统中的任意用户 黄金票据的条件要求: 1.域名称 hacker.com 2.域的SID 值 S-1-5-21-1854149318-4101476522-1845767379 3.域的KRBTGT账户NTLM密码哈希或者aes-256值 0028977ae726d766b150520dc63df9b4 4.伪造用户名 administrator 提取域用户krbtgt的NTLM密码哈希 lsadump::dcsync / domain:hacker . com / user :krbtgt 伪造administrator用户 kerberos::golden / admin:administrator / domain:hacker . com / sid:S - 1 - 5 - 21 - 1836192064 - 1636381992 - 1218642615 / krbtgt:ce420fcea94d02d7051ebfb82833edf7 /

001-webaudio

空扰寡人 提交于 2020-04-06 02:36:47
这是学习Three.js 官方案例系列 001-webaudio - visualizer 体验地址 片元 shader: // tAudioData: 0~64数组,只在 tAudioData[0].a 有数值,该数值表示该通道上的音值大小。 uniform sampler2D tAudioData ; uniform float style ; varying vec2 vUv ; void main ( ) { vec3 backgroundColor = vec3 ( 0.8 , 0.8 , 0.8 ) ; vec3 color = vec3 ( 0.0 , 0.65 , 0.97 ) ; float f = texture2D ( tAudioData , vec2 ( vUv . x , 1.0 ) ) . a ; float i2 = step ( vUv . y , f ) * step ( f - 0.0125 , vUv . y ) ; float i1 = step ( vUv . y , f ) ; float i ; if ( style == 1.0 ) { i = i1 ; } else { i = i2 ; } vec3 tt = mix ( backgroundColor , color , i ) ; gl_FragColor = vec4 (