Mac下MonoDevelop的快捷键记录

MonoDevelop

记录下Mac下MonoDeveloper快捷键

Window下开发Unity3D,除了Vs无它。

苹果下按键说明如下

  • ⌘——Command ()
  • ⌃ ——Control
  • ⌥——Option (alt)
  • ⇧——Shift
  • ⇪——Caps Lock

跳转:

Command+Y:跳转到声明 Command+L:跳转到具体行 Shift+Command+D:跳转/打开工程文件(VS里面大番茄快速打开文件)Command+上:跳转到文件顶部 Command+下:跳转到文件底部 Command+左:跳转行首 Command+右:跳转行尾 Option+Command+左右方向键:向前/向后转到光标所在位置(这个应该说特别有用)

查找:

Shift+Command+Y:查找所有引用 Command+Y:在文件中查找字符 Shift+Command+F:在所有文件中查找字符

注释:

Command+/:注释/取消注释当前行

编辑:

Command+C:复制 Command+V:粘贴 Command+Z:撤销 Command+X:剪切 Control+K:删除光标后所有当前行内容 Option+上下按键:将当前行向上/向下移动(VS里面Alt+上下按键效果)Option+左右按键:按整个单词切换(VS中Control+左右一样的效果)Option+Delete:删除单词内容 列出了常用的快捷键,自己做个记录,也希望帮助到需要的朋友,如果有更好的MonoDeveloper使用技巧   快捷键可以自己修改 Command+,  但是貌似monoDevelop上的设置选项有点少,比如复制当前行  没找到在,可能是unity自带的,版本有点老,你也可以去官方下载最新的

centos+nginx+uwsgi+python+django 部署应用

写在前面的话

折腾了近两天,终于把python小应用部署到阿里云服务器上了。作为一个运维小白,特记录一下部署过程,以备后续查验。 服务器选的阿里云,这里也有个和本文无关但是心酸的过程。因为以前用过阿里云,后来手机换号了,为了更换手机号简直心塞,整个流程简直死循环。大概是这样的:  

1.登陆阿里云账号,购买服务器
2.因为购买时候选择的是创建后设置服务器密码,所以购买完第一件事是重置服务器root密码
3.重置密码需要手机验证,但是老手机已经不用了
4.提交工单,申诉说明,客服让提交身份证件,手持身份证照等
5.身份证过期了,审核不通过
6.新身份证还没办下来,估计下个月才能拿到,但是服务器只买了一个月,到时候审核通过服务器也过期了

简直是心塞啊,幸好和客服沟通,可以用驾照代替,就这折腾两天,总算是把手机号给换了,泪奔! 好了,言归正传,开始说部署!

一、系统选的CentOS

看阿里云官方推荐的CentOS,就直接选它了,本来选的是CentOS 6.5 ,结果安装后发现,自带的Python版本是2.6.6,貌似有点旧了,后来又重置了一次系统,换成了CentOS 7.0,自带的Python版本是2.7.5。 在刚发现CentOS6.5自带的Python为2.6.6时,也看了几篇文章,尝试把Python从升级到2.7,但是因为不知道哪里配错的原因,2.7虽然装好了,但是pip一直装不上,算了,只是为了部署个小python项目测试用,就不搞那么麻烦了,直接换成CentOS 7.0吧。 另外除了CentOS,Ubuntu应该也是不错的选择,以后有机会尝试一下。

二、安装nginx和python等相关包

2.1.安装nginx和python

方法很简单,yum搞定(感觉nginx已经自带了python,貌似不用安装python-devel ???)

sudo yum install epel-release sudo yum install python-devel nginx

先关闭 CentOS的防火墙,防止访问不了,后续再通过开放端口的方式进行细节处理

临时关闭防火墙 sudo systemctl stop firewalld

将 SELinux 设置为宽容模式,方便调试: sudo setenforce 0

CentOS 7 iptables如何使用http://stackoverflow.com/questions/24756240/

2.2.安装pip

1.通过wget下载py文件 wget https://bootstrap.pypa.io/get-pip.py 2.用python安装 python get-pip.py

wget 下载https文件,如果报错,可以加上–no-check-certificate

2.3.安装django,上传项目文件

目前django的版本是1.9.3 pip install django

pip install Django==1.5 即可安装其他(1.5)版本

上传文件(项目暂时放在root) scp local_folder remote_username@remote_ip:remote_folder

 

三、 使用  uwsgi 来部署(也可以用gunicorn)

3.1安装uwsgi

pip install uwsgi

3.2启动uwsgi

执行uwsgi命令,启动

uwsgi –http :8001 –chdir /path/to/project –home=/path/to/env –module project.wsgi

--home 指定virtualenv 路径,如果没有可以去掉。project.wsgi 指 project/wsgi.py 文件 理论上这样就可以跑了,这时候访问你的服务器ip如(123.23.23.233:8001),应该可以看到页面的 这时候查看端口占用(netstat -lpnt),会看到0.0.0.0:8001,已经有项目在监听。

3.3简化启动命令

但是这样的命令太长了,我们换一种,写ini文件来配置(或者xml/json/yaml) 在项目目录(/path/to/project)下,新建uwsgi.ini,内容如下: ss[codesyntax lang=”python”]

[uwsgi]
socket = 127.0.0.1:8001
chdir = /root/python_project/djtest/
wsgi-file = djtest/wsgi.py
touch-reload=/root/python_project/djtest/reload

processes = 2
threads = 4

chmod-socket = 664
chown-socket = root:www-data

[/codesyntax]   我们执行以下命令,即可把项目部署到8001端口

uwsgi –ini /root/python_project/djtest/uwsgi.ini

#如果uwsgi无效,试试/path/to/uwsgi 即uwsgi的目录 注意,这里写的是“socket = 127.0.0.1:8001”,这里后面会和nginx关联到。 指定了touch-reload,执行如下命令,即可重新编译,重启应用

touch /root/python_project/djtest/reload

3.4端口占用,杀掉进程

如果端口被占用了,可以杀掉进程:

probably another instance of uWSGI is running on the same address (:8001). bind(): Address already in use [core/socket.c line 764]

根据端口查找

lsof -i :8001

可以查出

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
uwsgi 2208
root 4u IPv4 0x53492abadb5c9659 0t0 TCP *:teradataordbms (LISTEN)
uwsgi 2209 root 4u IPv4 0x53492abadb5c9659 0t0 TCP *:teradataordbms (LISTEN)

这时根据 PID 可以用下面的命令 kill 掉相关程序:

sudo kill -9 2208 2209

 

4. 使用supervisor来管理进程

安装 supervisor 软件包

sudo pip install supervisor

生成 supervisor 默认配置文件,比如放在 /etc/supervisord.conf 路径中:

sudo echo_supervisord_conf > /etc/supervisord.conf

打开sup,在底部添加如下配置

[program:djtest]
command=/usr/bin/uwsgi –ini /root/python_project/djtest/uwsgi.ini
directory=/root/python_project/djtest
user=root
startsecs=0
stopwaitsecs=0
autostart=true
autorestart=true

  command 中写上对应的命令,这样,就可以用 supervisor 来管理了。  

启动 supervisor
sudo supervisord -c /etc/supervisord.conf

重启 djtest 程序(项目):
sudo supervisorctl -c /etc/supervisord.conf restart
djtest

启动,停止,或重启 supervisor 管理的某个程序 或 所有程序:
sudo supervisorctl -c /etc/supervisord.conf [startstoprestart] [program-nameall]

  通过重启程序,也可以实现项目的重新编译,重启生效。  

5.配置nginx

在/etc/nginx/nginx.conf配置里http下家如下server:

[codesyntax lang=”php”]

server {
    listen      80;
    server\_name 123.23.23.233;
    charset     utf-8;

    client\_max\_body\_size 75M;

    location / {
        uwsgi\_pass  127.0.0.1:8001;
        include     /etc/nginx/uwsgi\_params;
    }
}

[/codesyntax]

重启nginx即可! 重点:之前以uwsgi的方式启动,外网可以访问(123.23.23.233:8001),但是nginx报错502,通过查看端口(netstat -lpnt)发现,以uwsgi –http :8001…的方式启动,监听的是0.0.0.0:8001,nginx无法转发过去,后直接把uwsgi启动至127.0.0.1:8001,然后nginx里的server配置也是uwsgi_pass 127.0.0.1:8001;可以正常访问了,此时通过ip:8001是不能访问的。 另外,uwsgi_pass可以用 unix:///tmp/zqxt.sock; 项目中uwsgi.ini的socket配置对应,也可以正常工作,但未实验成功。 作为一个运维小白,参考教程,一步一步出错排查,排查出错,总算跑起来了,虽然还有很多漏洞,但是足以欣慰。 参考资料:http://www.ziqiangxuetang.com/django/django-nginx-deploy.html     aliyun

Android国际化-多语言

1.  很大程度上,为什么我们能如此方便的实现国际化、分辨率匹配等? 主要就是得益于 Android 中这种独特的资源管理方式。程序员的代码可以不直接和资源发生关系。Android 中,我们通常通过 R 文件提供的索引来间接的引用某一个资源。而如何维护资源索引和真正的资源之间的关系,这个活,却是 Android 系统来做的。 这里面就可以大作文章了不是么? 我说过,最了解用户手机的,不是用户也不是程序员,而是Android操作系统。它最了解用户当前使用的是什么语言,最了解用户当前手机的分辨率是多少,了解电量,了解内存情况…等等。 既然你对自个的情况这么了解,为什么不自己把所有能完成的事情都做了?不要麻烦程序员好吧?好的,所以 Android 在这方面做得非常优秀。 基于这个角度,我们要转换的观念为:有可能,R 文件中的索引,并非是和资源一对一的。例如我们以前认为它就一定是对应了一张图片,对应了一个字符串,对应了一个布局文件。 而很可能,Android 其实会根据用户当前使用的环境对应几套方案:例如本文所讲的主题,从国际化角度,可能对应中文环境方案,英文环境方案?那么,这时候 R 文件对应的这个资源便不确定起来,当我们通过 R 文件调用一个图片资源显示在窗口上时,Android 操作系统会自动根据用户当前的环境,而选用最合适的图片(这个挑选过程却是透明的)。 程序员可以干预的是:英文环境到底对应哪套方案?中文环境对应到底哪套方案? OK。这就简单了。 2. Android 中要实现国际化比较简单。 字符串国际化:只要在 res 文件夹下新建对应语言的 values 文件夹就好了, 如,英语环境下的,文件夹命名为:values-en 美国英文环境:values-en-rUS 中文环境为:values-zh 大陆地区中文环境: values-zh-cn 在 eclipse 下新建 Android 项目时,会在 res 目录下自动创建一个默认语言环境的文件夹 : values 当某一个资源没有在语言环境的对应的资源集合中找到时,就会使用 values 下的资源。 若某一个语言环境没有在项目中定义语言环境,那么也会使用 values 下的资源。 3. 图片国际化 同理。 在 res 下新建 drawable-zh 文件夹,存放中文环境下的图片 新建 drawable-en 作为英语环境下的图片 在 eclipse 下新建 Android 项目时,会在 res 目录下自动创建三个默认语言环境的文件夹: drawable-hdpi drawable-ldpi drawable-mdpi 分别用于存放高、中。低分辨率的图片。Android 系统会根据手机的分辨率,而自动从不同的对应的某一个文件夹下去加载图片。 同样,它们也可以国际化,命名规则如: drawable-zh-hdpi drawable-en-ldpi drawable-en-rUS-mdpi 使用。在 XML 中需要使用到图片的地方用表达式: @drawable/icon 代码中使用:R.drawable.icon。因为图片资源同样也会在 R 文件中生成一个索引 ================================================================== android多国语言文件夹文件汇总如下: 中文(中国):values-zh-rCN 中文(台湾):values-zh-rTW 中文(香港):values-zh-rHK 英语(美国):values-en-rUS 英语(英国):values-en-rGB 英文(澳大利亚):values-en-rAU 英文(加拿大):values-en-rCA 英文(爱尔兰):values-en-rIE 英文(印度):values-en-rIN 英文(新西兰):values-en-rNZ 英文(新加坡):values-en-rSG 英文(南非):values-en-rZA 阿拉伯文(埃及):values-ar-rEG 阿拉伯文(以色列):values-ar-rIL 保加利亚文:  values-bg-rBG 加泰罗尼亚文:values-ca-rES 捷克文:values-cs-rCZ 丹麦文:values-da-rDK 德文(奥地利):values-de-rAT 德文(瑞士):values-de-rCH 德文(德国):values-de-rDE 德文(列支敦士登):values-de-rLI 希腊文:values-el-rGR 西班牙文(西班牙):values-es-rES 西班牙文(美国):values-es-rUS 芬兰文(芬兰):values-fi-rFI 法文(比利时):values-fr-rBE 法文(加拿大):values-fr-rCA 法文(瑞士):values-fr-rCH 法文(法国):values-fr-rFR 希伯来文:values-iw-rIL 印地文:values-hi-rIN 克罗里亚文:values-hr-rHR 匈牙利文:values-hu-rHU 印度尼西亚文:values-in-rID 意大利文(瑞士):values-it-rCH 意大利文(意大利):values-it-rIT 日文:values-ja-rJP 韩文:values-ko-rKR 立陶宛文:valueslt-rLT 拉脱维亚文:values-lv-rLV 挪威博克马尔文:values-nb-rNO 荷兰文(比利时):values-nl-BE 荷兰文(荷兰):values-nl-rNL 波兰文:values-pl-rPL 葡萄牙文(巴西):values-pt-rBR 葡萄牙文(葡萄牙):values-pt-rPT 罗马尼亚文:values-ro-rRO 俄文:values-ru-rRU 斯洛伐克文:values-sk-rSK 斯洛文尼亚文:values-sl-rSI 塞尔维亚文:values-sr-rRS 瑞典文:values-sv-rSE 泰文:values-th-rTH 塔加洛语:values-tl-rPH 土耳其文:values–r-rTR 乌克兰文:values-uk-rUA 越南文:values-vi-rVN

AndroidStudio 升级配置,不只需要翻墙(Mac)

翻了墙还不能升级AndroidStudio,今天中午下点功夫找找原因 原来还需要在安装包的bin文件夹下studio.vmoptions加上如下配置: 配置如下: -Djava.net.preferIPv4Stack=true -Didea.updates.url=http://dl.google.com/android/studio/patches/updates.xml -Didea.patches.url=http://dl.google.com/android/studio/patches/ 或者在 info.plist文件的VMOptions 里加上这些配置,也是一样的! 终于升级了,越来越好用了!

Mac下使用dex2jar

1.去http://sourceforge.net/projects/dex2jar/ 下载一个新版本dex2jar.  目前是2.0,下载后文件名dex2jar-2.0.zip 2.可以到这里看看用法: http://sourceforge.net/p/dex2jar/wiki/Faq/ http://sourceforge.net/p/dex2jar/wiki/UserGuide/ 3.解压缩dex2jar-2.0.zip 到文件夹dex2jar-2.0 4.注意修改文件属性为可执行文件:

chmod +x _/home/…/_d2j-dex2jar.sh  _/home/…/_d2j_invoke.sh

5.输入命令 _   sudo sh /home/…/dex2jar-version/d2j-dex2jar.sh   /home/…/someApk.apk_ 6.在命令文件夹下面即可看到someApk.jar文件包