所有由罗佳(博主)发布的文章

【工具】listen

今天写了个小工具,用来显示声音的波形和频谱。音源可以是麦或者音乐文件音乐文件可以直接拖入。

在线演示:https://jiajiajiang.github.io/listen/https://pages.luojia.me/listen/

项目地址:https://github.com/JiaJiaJiang/listen

默认会进入麦克风模式,如果想要显示本地音乐的频谱的话可以直接把音乐拖入。

继续阅读【工具】listen

[C++]std::async异步操作 笔记

相关文档:http://zh.cppreference.com/w/cpp/thread/async

这只是一篇个人学习笔记,如有错误欢迎指出

咕了C++一段时间,我又回来学习了,这次是关于STL里自带的线程相关的模板函数`async` 。

async可以非常方便地用来创建一个异步任务,不同于基于libuv那种事件轮回型的异步编程,这个异步是使用一个新的线程来执行任务,而coder不用自己去管理新的线程。

继续阅读[C++]std::async异步操作 笔记

四月要结束啦,这个月竟然一篇博文都没写

回忆一下也没做什么特别的事情,白天玩游戏补番,晚上恶补c++

另外帮同校生搭了个blog放在我服务器上,看起来是个生活向blog

这个学期的课表安排让我们感觉时间过得特别快,几乎都是上午的课,然后随便干点什么事下午就结束了,再干点什么事晚上就结束了,一周周转眼就过去了

[Javascript]进制转换

由于coding gists即将关闭,所以把此代码片搬到博客

js的Number支持直接使用toString转换到最多36进制(0-9a-z),而此函数支持转换到由传入进制表定义的任何进制。

默认进制表为0-9a-zA-Z的62进制

/*
COPYRIGHT luojia@luojia.me
MIT LICENSE
*/
function conv(n,o,t,olist,tlist){//数,原进制,目标进制[,原数所用字符表,目标字符表]
	var dlist='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
		tnum=[],m,negative=((n+='').trim()[0]=='-'),decnum=0;
	olist||(olist=dlist);
	tlist||(tlist=dlist);
	if(negative)n=n.slice(1);
	for(var i=n.length;i--;)
		decnum+=olist.indexOf(n[i])*Math.pow(o,n.length-i-1);
	for(;decnum!=0;tnum.unshift(tlist[m])){
		m=decnum%t;
		decnum=Math.floor(decnum/t);
	}
	decnum&&tnum.unshift(tlist[decnum]);
	if(tnum.length===0)tnum.unshift(tlist[0]);
	return (negative?'-':'')+tnum.join('');
}


conv(1234,10,2)			//"10011010010"
conv(15,10,16)			//"f"
conv('ABC',16,10)		//"9846"

conv(3245670,10,10,null,'零一二三四五六七八九')		//"三二四五六七零"
conv('①②③',10,2,'〇①②③④⑤⑥⑦⑧⑨')					//"1111011"

 

npm多用户

npm的用户登录信息写在用户目录的`.npmrc` 文件里,所以同一时间只能登录一个账号,要切换账号的话就要重新用`npm login` 登录,比较麻烦。

于是写了个切换.npmrc文件来直接切换用户的shell脚本

分别login到对应的用户,然后查看用户目录里的.npmrc文件内容,复制出来,填到下面对应的地方

#!/bin/bash
if [ $1 = "user1" ]
then
	echo "user : $1";
	echo -e "registry=http://registry.npmjs.org/\n//registry.npmjs.org/:_authToken=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" > ~/.npmrc;
elif [ $1 = "user2" ]
then
	echo "user : $1";
	echo -e "registry=http://registry.npmjs.org/\n//registry.npmjs.org/:_authToken=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" > ~/.npmrc;
fi

保存成比如`npmuser` 文件放在某个PATH目录里,然后用`npmuser user1` 这样的命令就可以直接切换用户而不用再登录了。

2018年

又是一年过去了,总结一下

  • osu水平上去了一点,但是std排名一直在往下掉,从曾经最高的接近50000+的排名掉到了现在96770,但是mania的单数键我会玩了,而且mania的排名更高了。
  • 努力学了一点日语,可以一定程度上不靠咕果了。
  • 火影忍者完结了,我大概也是从初中开始看的,一直看到大学。
  • 触及了一些webgl方面的东西(做弹幕),把以前学opengl的时候一些没搞懂的东西弄明白了。
  • 重构了个人弹幕站,改名为简易弹幕站
  • 改装了我的台式机大红黑,装上了1080ti,散热全部换成水冷
  • 在自家公司实习了一个月
  • 看了103部动画(同系列不同季分开算)见顶上菜单stat里的追番列表
  • 继续学习C++

记忆超差,不写在佳佳酱上的事情几乎不可能想起来。

接下来的一年也要undefined哦。

[C++]lambda表达式笔记

我刚开始学C++的时候似乎还没有lambda表达式这东西。这个blog的第一篇可见文章在2012年8月,还有一些更早的都是些垃圾水文被我删掉了,开设这个blog的时间我记得在学了web一段时间之后,在那之前我也在各种免费php空间搭过wordpress用过一段时间,后来废了。在更之前我还坚持用自己写的“佳佳空间”当blog用了很长一段时间(虽然后来终于还是放弃了,因为写得太垃圾)。推算下来可能要到9年多前了,大概就是小学的时候?反正是在2011年之前,而lambda表达式是C++11标准里的,所以那时候应该确实没有这东西。

 

好了回到正题。

C++的lambda表达式和js里的有点不一样,它可以自己选择是否打通函数范围之外的上下文,以使用外面的变量。还可以选择如何打通(引用外部变量和复制外部变量)。

lambda函数的结构长这样

[外部变量规则]{函数体}//没参数省略括号
[外部变量规则](参数){函数体}//省略返回类型指定
[外部变量规则](参数)->返回类型{函数体}//到C++11为止的完整形态

C++20又加了一个形式,暂时就不写在这了,毕竟2020年还没到呢不着急,而且也没编译器实现了。

继续阅读[C++]lambda表达式笔记