作者汇整: 九条凛

Linux端口转发和3389远程桌面等实用工具

介绍两个不错的Linux下的实用工具:

1、端口转发:rinetd
作用:转发到达指定端口的请求到另一个IP的指定端口
Ubuntu下可以直接使用apt-get进行安装,也可以从官方下载源码编译:http://www.boutell.com/rinetd/
使用方法:apt-get后默认自启,修改/etc/rinetd.conf并在末尾添加配置即可
格式为 原目标IP 原端口 转发目标IP 转发目标端口
例如:

表示转发所有连接该服务器5100和80端口的请求到192.168.43.121上。

2、Linux下连接Windows远程桌面:rdesktop
可以从官网下载后编译安装:http://www.rdesktop.org/
使用方法:rdesktop 192.100.129.201
具体参数可参看帮助说明,例如指定分辨率:rdesktop 192.100.129.201 -g 1440×768

以上,推荐给工作上有需要的人,也当作自己的笔记。
======
kujou_rin

[271128]鼻炎的治疗方法

  事实上我的日记从来没有过如此平庸的标题,但是这个标题很容易被检索到,因此希望此文能在搜索引擎众多的结果中为真正需要看的人提供帮助,而不是医院和药品的广告。首先说一下,本文不能作为专业的医学文章进行阅读,在写此文的过程中,我也未曾参考任何资料,仅仅是自己的一些见解。
  在中国的空气不断恶化的今天,鼻炎已经是一种很常见的疾病,身边认识的很多人患有鼻炎。而大家所患的鼻炎类型又不一样,常见的是过敏性鼻炎和单纯性鼻炎。众所周知鼻炎是一种很难根治的慢性病,过敏性鼻炎的主要表现是季节性,以及对于粉尘,雾霾具有过敏反应,导致流鼻涕,打喷嚏,鼻子耳朵瘙痒的状况。而慢性单纯性鼻炎,主要是鼻甲肿大,导致呼吸道受阻,鼻子不通气,严重的状况可导致OSAS的发生。
  在鼻炎的治疗方法上,说实话鼻炎是不治之症,目前没有特别有效的治疗方法。对于过敏性鼻炎,主要依赖于激素类外用药物,着重于抗过敏,以缓解反应症状。而对于单纯性鼻炎的治疗,因为我本人也是此病,也尝试过很多治疗方法,因此有比较多的见解,下面说一下。
  对于单纯性鼻炎的保守治疗方案首先是口服用药,一般来说基本是中药,实话说,屁用没有。当然你连续吃好几年说不定有用,但是我没试过,因为也说不定没用。然后是外用药,外用药一般来说只有一种功能,就是收缩血管,收缩鼻甲,缓解鼻塞。无论是医学常规用药,呋喃西林,盐酸伪麻黄堿,盐酸羟甲唑啉,还是外面卖的优鼻还是日本佐藤做的那些。我就这么说吧,外面卖的也是这些成分,最长的也就能管十二小时左右,以效果来说,呋喃西林<盐酸伪麻黄堿<盐酸羟甲唑啉。收缩血管并不是长久之计,而且经常使用不仅会药物依赖,有效时长也越来越短,长期用还会药物性鼻炎。
  然后说说不保守的手术方案,手术方案实际上也分保守的和不保守的。最早的治疗单纯性鼻炎的方案是微波和冷冻,冷冻是用低温气体刺激鼻粘膜再生,说真的从理论到实际效果我认为都是狗屁,我试过一点用没有。然后微波就是用激光烧掉部分鼻甲,实际上这和切除鼻甲手术是一个套路,切除鼻甲手术也是治疗单纯性鼻炎的最不保守的方法,两种方法都是创面大,要住院,后者我就不说了,一刀下去不仅疼上天流血都要流死。我朋友试过我没试过我是个保守的人,这个险我不能冒,创面太大鼻粘膜很难恢复,以后肯定影响嗅觉和鼻腔机能,而且还有出现臭鼻症的可能。
  近年来出现了一种新的手术方案备受推崇,网上也有不少关于它的论文。所谓的“低温等离子射频消融”,号称从内部消融鼻甲的组织,微创不破坏鼻粘膜,在网上的论文中也称临床验证不易复发。而实际效果如何呢,我和朋友都做过这个手术,不用住院,无痛苦。但是实际效果并不像网上说的那样,消融完鼻子是通了,但是一旦感冒鼻炎又会复发,然后又不通气了。所谓的不易复发基本上也就能管个半年到一年,我已经做过两次,均复发。
  那么鼻炎是不是真的就是不治之症了,其实民间还有很多听起来有效的方案。一个是生理盐水洗鼻,每天喷生理盐水到鼻腔清洗,坚持一两年,我认为还是有效的,效果甚微。还有一个方案,是能治百病的,每天坚持锻炼身体,加强体育运动,增强体质。另外要注意饮食,不要饮酒,早睡早起,否则体抗力低下鼻炎可能加重。当然,这个方案对于很多家里蹲宅比来说简直就是。以上,就是我鼻炎多年的经验,希望对病友能有帮助。

======
kujou_rin

2016年追加:
  根据本人各种保守治疗,西药,中药,多次手术的实验和查阅国内外资料的结果,我负责的告诉各位病友,鼻炎是绝症。无论微波、切除还是射频消融都已经是很久之前过时的技术,国内也都是私人医院和军区医院敢用,包括近年某些军区医院上线的海扶刀,也是重庆国产货。鼻炎和免疫力、体质相关,不是药物和手术可以根治的,目前的手术基本都是缩小鼻甲缓解鼻塞,风险很大,过多的切除鼻甲将导致空鼻症的发生,导致患者生不如死,甚至有患者手术失败砍死医生的案例。因此我在此文后补充了这一段,鼻炎的唯一治疗方案是,锻炼身体增强体质,除此之外无他法。

======
kujou_rin

[271115]遥想当年风云人物

  前段时间我约了中学时代的德育处主任出来吃饭,虽然已经十年未见但也不是一见如故。曾经叱吒我校让学生闻风丧胆的德育处主任,如今坐在饭桌上和我们抽烟喝酒谈笑风生,一起回忆着我们中学时代的往事。我是和另一个高中同学一起出来聚会的,和德育主任的聚会则是我的安排,我同学对于我和德育主任保持着联系表示非常吃惊。在我说到今晚聚会的第三个人是高中德育处主任时,他在微信上连发了三个“卧槽”。
  同学吃惊的原因不仅因为他是曾经的德育处主任,也因为在我们那一届,他是我们的冤家。我校向来以严格的校风的而闻名,目前在全省也是排名数一数二的重点高中,当时我们届正是主任在任期间,在校风,仪容仪表,课堂纪律上要求非常严格。让我们记忆犹新的画面就是主任在上课时间推门而入,直接将上课玩手机的同学当场带走。还有一次同学们在游戏厅时,被突入的德育主任和年纪主任当场抓住,并检查作业本确认姓名。用主任自己的话来说,他真可以算我校的风云人物,他的名声甚至外校学生都有所耳闻。他常常去学校附近的厕所抓抽烟,也常常站在校门口检查校服和头发。被他处分的学生不少,但是被他开除的学生却不多。我们一起吃饭的时候,他坦言当时真有冲动在校大会上大喊一声“我本善良”,但教育工作总需要有一位黑脸的先生。我们那届以后,他也反思可能确实对我们过于严格,他说德育的根本应该是“育德”。
  十年后我们坐在一起说笑时,已不再是曾经的猫鼠关系,甚至有点称兄道弟的感觉。而他如今能和我坐在一起谈笑风生,连他自己都想不通,怎么就和我熟了呢,说起来这还要源于我的网易博客。大学时代的我很喜欢写博客,至今留下来并搬运到这里的文字大概也有三十多万,那时候我虽然不算有名,但好歹也有一些访问量。用主任的话说,我当时写了很多内参方面的消息,而我自己看来,只是对社会百态的针砭时弊,或者说就是发发牢骚,批判一番而已。当时有一篇关于社会责任文章的读后感,其中提到了主任的名字,不知怎么就让他搜到了,于是给我留了言,就这样我们就取得了联系。
  我和他能再见面其实并非偶然,因为曾经我在博客中提起他,正是因为我对他的尊敬和喜爱。坦白的说,高中时代,我学习成绩不错,在老师的眼中我是好学生,但事实上我不仅每天放学去网吧,上课看漫画,还是扰乱课堂纪律的领头羊。我向来就尊敬做德育工作的老师,也深知这份工作的不易,当然我喜欢他的原因还有一个,就是在网吧和游戏厅的突击检查中,我没有任何一次被他抓到(笑),而我其他同学都有着和他的恩恩怨怨。高中的时候我组织同学们传本子,因为作业本比起纸条更不易被老师察觉,当时一个学期我们传了几十本。我们不仅在本子上聊天,还写小说和画漫画,我们的每个新本子都会在第一页画一个封面,写上名字和刊号“婴儿JUMP”(笑),而我则是名誉主编。
  高三毕业的时候,我们流行在校服上让同学签名,而在我校服上签名的第一个人,就是德育处主任。我到他办公室去找他,让他第一个签名,不仅因为尊敬和喜欢,其实是有些私心在里面的,这份私心就是对自己笔下人物的感情。在我们传的本子上,我所连载的漫画,其中的主要人物正是我们德育处主任(笑),而剧情则是游戏厅突击检查将我同学悉数逮捕的故事。当然其中有一些夸张的成分在里面啦,比如双方的打斗与各种招式,黑科技之类的。我们聚会聊天的时候主任说很想看看这些本子,遗憾的是毕业之后这些本子就遗失了。因为同学想看借来借去就都丢了,对此我颇为后悔,我借出去的东西很少有还我的(包括钱,笑)。
  做德育主任这些年,恨他的人不少,但是时至今日,他却是出席毕业生婚礼最多的老师。我们一边吃饭喝酒一边唠叨著那些陈年旧事,说起在网吧抓住我同学,我们相视而笑,这次可以说是见老“朋友”非常开心的一次。毕业后和我关系好一直联系的,除了他也就我们数学老师了。我们数学老师我毕业后也一起吃过饭,他也是个很有趣的人,和我隔壁班的女生结的婚(笑),谈了七年终成正果(SANGSHI笑)。本来今天主任打算叫他一起出来,因家里有事没来。其实数学老师我也很久没见了,他结婚我也没去,我要是去了得把比我小的同学叫师母(笑)。说起来怎么像是在聊我校的黑历史。
  这次和主任的聚会过程十分欢乐而融洽,与其说是曾经的冤家现在的朋友,不如说一开始就是朋友。现在我们数学老师去了别的学校,而主任也在前几年离开我校去了一所大学当老师。这次相聚的时间虽然不长,却也十分开心与令人怀念,一说起当年来,真有说不完的故事。这真是,十年之后再聚首,相逢一笑乐开口。

======
kujou_rin

[271009]开往春天的地铁

  离开北京已经有半年了,再次回到这里看着以前住过的小区,走过的街道,满是怀念。说实话我并不喜欢这里,写过的关于北京的日志大多数是对这里的冷嘲热讽,污浊的空气,拥挤的高峰人流,脏乱差的老城区和郊区街道。上下班,挤地铁,在这里的日常生活并不特殊,但是平时的点点滴滴却值得让人纪念。
  刚刚来北京的时候有一个冠冕堂皇的理由,为了前女友(大概是前前),当然这只是表面上的,也许只是为了这个借口去摆脱曾经被父母规划出的两点一线的日常。来到北京之后就被前女友甩了,这并不意外也不过分,我也丝毫不会记恨,当时的我仅仅是一个屌丝,没有房子没有钱工作也不靠谱,甚至连一千多的房租都觉得贵。然而身为软汉子我一向没什么压力,想着总会好起来一路也就这么过来了。
  现在想想租房的生活还真是辛苦,每个月的工资并不高,那时候又是一个人,加上平时的花销真是紧张的够呛。因为房子到期要出售或者涨了房租,也换了好几次房子,折腾了几次搬家。除了大西边石景山没住过,东南北都算是住过了,刚开始是四惠那边,再是大兴,再是昌平,在昌平也搬过一回,对住宿环境很挑剔所以一直也没住太便宜的,倒是越搬越远了。每天上班单程就要一个多小时,没有手机和pad是活不了的。
  自从美国大使提出PM2.5之后开始发现北京的空气原来那么差,冬天有时候出门看见浓浓的雾霾真是让人毛骨悚然,渐渐地也开始想离开这里。当然原因大概也有买不起北京的房子,可我自己也并不认为值那个价,主要还是不喜欢这里。城市再大也不是自己的,我最喜欢的活动还是家里蹲,唯一的优点就是见朋友很方便,新的朋友很多,旧的同学也很多,来往的老朋友也常常能见到。
  离开北京之后我也经常回来,因为公司的所有关系还在这里,办社保和公积金也要回来。每次回来都会见见北京的同学,朋友。这次回到北京时间很赶,去我曾经住过的地方转了一圈,和室友们打了个招呼。小区门口的商店还是那个阿姨,常常去的披萨店倒了,多了很多其他的店铺。小区里面到了夜晚还是感觉挺黑暗,凉风吹在脸上,看着路灯下的树影,像是加班回家的感觉,想起了很多往事。
  见见以前的朋友,聊聊过去聊聊未来,说说谁结婚了,谁谈对象了,谁去相亲了。在这个城市中生活节奏和洪水一样,留不下自己的影子。留下的是和仍然在这里漂泊的朋友们的感情,以及自己所知道的回忆。回忆总是美好的,无论辛苦悲伤,还是喜悦欢乐,当再回忆起那些一去不复返的旧时光时,总会让人露出微笑。坐在地铁站附近的肯德基看着窗外人群渐少,写到这里也该回去睡觉了,诸君晚安。
======
kujou_rin

禁止自动升级Win10禁止后台下载Win10的方法

Win7/8/8.1没有预定Win10,也不想升级Win10,但是系统总是提示已经准备好升级,后台也总下载好几G大的升级包,很让人烦恼。
解决办法1:
删除KB3035583补丁,并隐藏该补丁。(我不喜欢这个方案,强迫症不安装所有补丁会难受)
解决办法2:
此方案为微软官方设置办法。在注册表HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate下新建DWORD(32)值,命名为DisableOSUpgrade,数值为1。后台就不会再自动下载升级包了。(若没有WindowsUpdate键值可新建该目录)

======
kujou_rin

[270930]食戟之吃货

  由于工作的关系,常常在外出差,前段时间刚刚结束了天津的行程,又出差到新疆,算是一趟回到家乡的旅程吧。我小时候是在这里长大的,对于新疆算是再熟悉不过,虽然离家多年,但是有很多习惯还是难以改变。常常出差的人最常见的问题之一就是饮食,待最久的基本是华北地区,还有即将定居的东北,说实在的,那里的饭菜实在不喜欢。我不敢说哪里的菜不好吃,但确实不合我的胃口,觉得太淡,没有味道,也可以理解成是我太重口味。在东北吃酸菜炖猪肉,东北人要沾酱油之类的,不然自己都觉得淡,我很不能理解,如果啥东西都是白水炖了自己蘸酱,还要厨师调味做什么。

  回到新疆出差了一段时间,特别是吃家里的菜,又把嘴养刁了。虽然我自己也会简单的炒菜,但是在家里基本都是我爸掌勺,他是家里的特级大师傅。他平时不仅做菜,也偶尔把从饭店看来的菜拿回家试验。拜他所赐,基本也能学到一些东西,比如炒素菜可以用蒜香去调味,料酒去除肉腥味比葱姜蒜调料要强,油里扔些花椒可以看出油温之类的,其实也无非是些居家做饭的基本常识。真正的料理并不像“食戟のソーマ”那样精彩,有些时候甚至觉得千篇一律。写这篇文章一来是晒晒家乡饭菜,二来是当个记笔记的地方。

  提到新疆首先要说的是大盘鸡,那么大盘鸡究竟要怎么做呢,说说我家的做法吧。首先要准备好鸡和调料,这个不必多说。鸡切块,葱姜蒜调料备齐。(如下图)

IMG_20150924_135951
[图]大盘鸡做之前备好材料

  热锅凉油基础不多说,油热后放糖,烧化。大盘鸡实际上无非是红烧,因此放糖一是味道,二是用于着色,注意不要烧糊。然后放肉,肉洗净后把水沥干再入锅。翻炒润色,颜色均匀差不多的时候入料酒和调料。无论加什么东西建议先放在炒勺上再入锅,方便控制适量,不要什么东西直接往锅里倒。料酒主要用于去腥,在肉类料理中常常用到,加上现在肉的质量越来越差,去腥必不可少。大盘鸡的调料和其他红烧时的调料基本相同,花椒,八角,桂皮,辣椒自不用说,我喜欢辣椒和花椒下的多一点,此外的调料还有小茴香,草果,丁香,陈皮,山奈,白蔻。中华料理拼的本来就是调料,自己家配一般很难配齐,买配好的亦可。草果捏烂了好出味。扔进去翻炒一会,肉的表面基本熟了,入锅酱油,葱姜蒜。葱姜蒜在炒菜中用于炝锅,而在红烧中用于配合炖的环节。翻炒两下就可加水了,因为酱油易糊。水漫过肉然后就可以慢慢炖了,一开始建议开盖炖,放一放气味,顺便把盐加了,尝尝烫的咸淡,考虑要收烫不能咸了。加盐早了肉不好烂,加盐晚了不好入味自己把握。炖一段时间后,依照肉的程度选择关小火慢慢炖,还是快点炖完了水出锅,或者土鸡肉太老,上高压锅,自己掌握。最后放土豆然后土豆软了,收烫即可出锅。如果需要中途补水一定要开水不然肉被凉水激了不容易烂。最后装盘摆盘,完成。

  以上就是家里做大盘鸡的基本工序,其他红烧类似。红烧羊肉的时候八角可以减少,调料也可以下的轻一些因为需要保留羊肉的味道。八角主要用于对付猪肉类似的腥味,在红烧猪肉中用的很多。说完这些来看看下面的成品吧。

IMG_20150915_201046
[图]大盘鸡成品(一般家庭如图半只鸡即可

IMG_20150915_204145
[图]大盘鸡一般会配合腰带面(如果觉得面太淡可以在下面的水里放点盐

  下面来图片介绍一下最近几天家里的部分晚餐食谱。

IMG_20150919_161911
[图]红烧羊肉骨头

IMG_20150922_202113
[图]炸虾和青椒烧茄子

IMG_20150916_203631
[图]左边的芹菜炒羊肉为了让肉更嫩,先过了油。右边其实是一个实验失败的作品,薯片炸虾,薯片炸过火了,苦了。

IMG_20150917_202127
[图]名为“鲜”的实验失败品,鱼肉炖羊肉,不怎么好吃,鱼的味道没处理好。

======
kujou_rin

Linux下查看pptpd等VPN拨入日志的方法

使用pptpd和xl2tpd搭建VPN之后,会发现在/var/log下并没有详细的日志,在syslog中虽然有IP记录和拨入时间,但却没有帐户和连接等信息,当需要查看当前连接的用户,或者之前的使用日志则无从查起。
之前的文章中介绍过利用shell脚本对VPN拨入的PPP连接进行限速,原理是利用ppp拨入时会加载ip-up,事实上在ppp断开时也会加载ip-down。参考pptpd帮助可以得知其中可以使用的参数。因此可以用如下方法:
在ip-up结尾添加

在ip-down结尾添加

之后当连接拨入和断开时则写入日志,如果担心日志过大可以在crontab写一个自动清理脚本即可。

======
kujou_rin

WordPress升级4.3后无法统计中文摘要字数的解决方法

WordPress升级4.3之后,首页摘要以及搜索结果摘要字数统计不正确,只统计了英文而不统计中文,导致中文摘要几乎要包含到全篇的内容。
解决方法为,打开/wp-includes/formatting.php,找到如下内容:

参考注释,根据需要把这一行
strpos( _x( ‘words’, ‘Word count type. Do not translate!’ ), ‘characters’ )
中的’words’改为’characters_excluding_spaces’或者’characters_including_spaces’。

======
转载自nex3z’s blog

连接VPN后自动区分国内国外流量的方法

大陆的网友常常遇到这样的问题,连接VPN后,会遇到国内网站访问变慢问题。这也是全局VPN的一大缺陷,如何解决这个问题呢。
之前的文章讲过如何设置路由,那么我们可以用路由区分国内和国外流量,从而实现目的地不同走不同网络的效果。
方法如下:
1,下载以下附件
pre_created_for_win
2,解压,右键管理员身份运行vpnup.bat。
3,连接VPN
注意,以上方案适用与中国大陆翻X的网友,重启后可能需要重新运行bat进行设置。
相关文章,路由表的原理和基本配置方法:
https://lilith.pro/gijyutsu/1930
======
kujou_rin

C语言socket编程发送HTTP请求实例

前几天在自己的私服中用c写了一个模拟股市系统,所使用的数据是通过socket发送HTTP请求,然后获得新浪财经的接口页面进行处理。那么现在我们把需求和需要做的事情总结一下:
1、如何发送HTTP请求
2、请求到某个股票网站的输入和输出分别是什么
3、处理收到的字符串数据

先试着写一个简单的HTTP请求发送和接收程序

上面的例子使用非阻塞的recv作为接收,优点是接收后不会阻塞的运行程序进行接下来的输出打印,而缺点是如果返回的页面数据很多,分包之后会发现recv接收的页面是不全的,只有大概2k多数据。所以在实际应用中我使用了read作为接收函数。

我的需求是通过上证股票代码获得开盘收盘和当前价格等信息,已知新浪股票的HTTP接口用法是这样 http://hq.sinajs.cn/?list=sh600000,sh600406 放到浏览器一看就明白了,已经满足通过代码获的所有信息,接下来写具体的处理过程。

下面是我所写的通过股票代码获得实时价格的程序:

由于涉及自己服务器数据库的数据结构,数据库处理过程已经省略。getline得到的每一行可以用sscanf分隔成字符串,然后再使用atof转化为价格数的浮点。引号内的字段可以分别保存到zd[33][50]的二位数组中,关于新浪的股票接口,它们每个字段表示的意义大概如下:
0股票名称;1今开价;2昨收价;3当前价;4今最高;5今最低;……最后是30更新日期和31时间

自用程序写的比较烂,如有缺陷欢迎指正。
=======
kujou_rin

[270713]守候永恒的爱

  这个日记标题应该我是第二次使用了,实际上它是仙境传说(RO)中文版主题曲的名字。一转眼这个游戏已经诞生了十年多,现在已经少有人知,它和传奇一样是一个时代的象征,它也在我们这一代的回忆中叙说著时光的飞逝。喜欢仙境传说,这个属性其实相当于暴露了年龄。虽然我对网游并无太大热情,但这却是我中学时代唯一玩过的网游。
  去年的时候出于对RO的好感,玩了一年的RO2,但是却很令人失望。除了怪和城市的名字沿用了仙境传说的老传统以外,其他技能和操作设定已经完全和其他3D网游没有区别,加上二流临时团队所打造的各种粗糙的画面和各种各样的BUG,以及猖獗没人管的外挂,开了一年服之后台服就关门大吉了。当然RO2其实并不能算是仙境传说,只是随随便便一个捞钱跑路的渣作而已。
  实际上很久之前我和小伙伴们假期一起玩的RO私服,依旧在我手下经营著,目前正常运行。去年开始正式对外开放,这一年来除了正常的运营维护外,BUG也改了不少,特别是NPC脚本的BUG机会每周都能发现。为了给玩家朋友们带来一些新的东西,花费了一整个周末,甚至熬了一下夜写了一个股票交易的NPC,可以模拟进行股票交易。虽然我的私服提供给大家都是免费的,但我却乐此不疲。
  为了写这个NPC几乎翻遍了eathena的英文wiki网站,还把以前扔掉的socket编程的知识也重新捡了起来。原理是C程序使用socket模拟发送HTTP请求,从新浪财经处获得个股实时数据,然后分别存MySQL中,eathena再使用NPC脚本从SQL中取出数据存到服务器内存变量中。在网上做RO私服的人很多,但是估计像我这样用真实数据去做模拟交易的服务器,应该算是独创。我自己虽然觉得很厉害,但除了经常玩我游戏的那十几个玩家,估计也没其他人看得到了。
  至于socket模拟HTTP请求的具体编码,之后应该会在技术分类单独写一篇文章。今天的回忆就先到这里吧。
13
[图]自己写的股市交易NPC
======
kujou_rin

相关链接 [110306]守候永恒的爱(旧文)
https://lilith.pro/nikki/1433

相关链接 拯救世界委员会仙境传说私服
http://ro.lilith.pro

eAthena NPC Script Variables

Variables
———

The meat of every programming language is variables – places where you store
data.

Variables are divided into and uniquely identified by the combination of:
prefix – determines the scope and extent (or lifetime) of the variable
name – an identifier consisting of ‘_’ and alfanumeric characters
postfix – determines the type of the variable: integer or string

Scope can be:
global – global to all servers
local – local to the server
account – attached to the account of the character identified by RID
character – attached to the character identified by RID
npc – attached to the NPC
scope – attached to the scope of the instance

Extent can be:
permanent – They still exist when the server resets.
temporary – They cease to exist when the server resets.

Prefix: scope and extent
nothing – A permanent variable attached to the character, the default
variable type.
“@” – A temporary variable attached to the character.
SVN versions before 2094 revision and RC5 version will also treat
‘l’ as a temporary variable prefix, so beware of having variable
names starting with ‘l’ if you want full backward compatibility.
“$” – A global permanent variable.
They are stored in “save\mapreg.txt” or database table mapreg,
depending on server type.
“$@” – A global temporary variable.
This is important for scripts which are called with no RID
attached, that is, not triggered by a specific character object.
“.” – A NPC variable.
They exist in the NPC and dissapear when the server restarts or the
npc is reloaded. Can be accessed from inside the NPC or by calling
‘getvariableofnpc’.
“.@” – A scope variable.
They are unique to the instance and scope. Each instance has it’s
own scope that ends when the script ends. Calling a function with
callsub/callfunc starts a new scope, returning from the function
ends it. When a scope ends, it’s variables are converted to values
(‘return .@var;’ returns a value, not a reference).
“#” – A permanent local account variable.
They are stored with all the account data in “save\accreg.txt” in
TXT versions and in the SQL versions in the ‘global_reg_value’
table using type 2.
“##” – A permanent global account variable stored by the login server.
They are stored in “save\account.txt” and in the SQL versions in the
‘global_reg_value’ table, using type 1. The only difference you will
note from normal # variables is when you have multiple char-servers
connected to the same login server. The # variables are unique to
each char-server, while the ## variables are shared by all these
char-servers.

Postfix: integer or string
nothing – integer variable, can store positive and negative numbers, but only
whole numbers (so don’t expect to do any fractional math)
‘$’ – string variable, can store text

Examples:
name – permanent character integer variable
name$ – permanent character string variable
@name – temporary character integer variable
@name$ – temporary character string variable
$name – permanent global integer variable
$name$ – permanent global string variable
$@name – temporary global integer variable
$@name$ – temporary global string variable
.name – npc integer variable
.name$ – npc string variable
.@name – scope integer variable
.@name$ – scope string variable
#name – permanent local account integer variable
#name$ – permanent local account string variable
##name – permanent global account integer variable
##name$ – permanent global account string variable

If a variable was never set, it is considered to equal zero for integer
variables or an empty string (“”, nothing between the quotes) for string
variables. Once you set it to that, the variable is as good as forgotten
forever, and no trace remains of it even if it was stored with character or
account data.

Some variables are special, that is, they are already defined for you by the
scripting engine. You can see the full list somewhere in ‘db/const.txt’, which
is a file you should read, since it also allows you to replace lots of numbered
arguments for many commands with easier to read text. The special variables most
commonly used are all permanent character-based variables:

StatusPoint – Amount of status points remaining.
BaseLevel – Current base level
SkillPoint – Amount of skill points remaining
Class – Current job
Upper – 1 if the character is an advanced job class.
Zeny – Current amount of zeny
Sex – Character’s gender, 0 if female, 1 if male.
Weight – The weight the character currently carries.
MaxWeight – The maximum weight the character can carry.
JobLevel – Character’s job level
BaseExp – The amount of base experience points the character has.
Notice that it’s zero (or close) if the character just got a level.
JobExp – Same for job levels
NextBaseExp – Amount of experience points needed to reach the next base level.
NextJobExp – Same for job levels.
Hp – Current amount of hit points.
MaxHp – Maximum amount of hit points.
Sp – Current spell points.
MaxSp – Maximum amount of spell points.
BaseJob – This is sneaky, apparently meant for baby class support.
This will supposedly equal Job_Acolyte regardless of whether the
character is an acolyte or a baby acolyte, for example.
Karma – The character’s karma. Karma system is not fully functional, but
this doesn’t mean this doesn’t work at all. Not tested.
Manner – The character’s manner rating. Becomes negative if the player
utters words forbidden through the use of ‘manner.txt’ client-side
file.

While these behave as variables, do not always expect to just set them – it is
not certain whether this will work for all of them. Whenever there is a command
or a function to set something, it’s usually preferable to use that instead. The
notable exception is Zeny, which you can and often will address directly –
setting it will make the character own this number of zeny.
If you try to set Zeny to a negative number, the script will be terminated with an error.