react-native一些总结

很多东西搞一次查一次很烦,记一下,下一次找笔记。加深记忆 react-native-vector-icons这个改了一下配置文件导入静态资源,upgrade react-native的时候每次选择替换配置文件,然后会找不到资源文件。执行rnpm link就好了 对于安卓和ios两个版本,发现大部分人的做法是开发两套,我直接写了一套,对于不兼容的地方判断操作系统不同针对。方法 var { Platform } = React; var styles = StyleSheet.create({ height: (Platform.OS === 'ios') ? 200 : 100, });    
Read more...

docker server服务启动参数定制

想要对docker的server服务进行启动参数的改变,绕了好多圈子,最后终于搞定。 debian的系统直接使用service启动docker服务,然后看官方文档有讲,直接修改/etc/default/docker文件就行了。 添加DOCKER_OPTS参数 然后修改了重启服务发现没用。然后发现/etc/init/docker是调的这个文件。然后找init.d/docker文件发现DOCKER_OPTS参数文件里自己定义了一下什么没有,然后在这里改。改完还是不行,google之,github上有问,修改/lib/systemd/system/docker.service文件。 修改成: #EnvironmentFile=-/etc/default/docker #ExecStart= #ExecStart=/usr/bin/docker -d $DOCKER_OPTS 这样直接启动不起来。 然后写死命令,不用配置文件就好用了 ExecStart=/usr/bin/docker daemon -g /home/www/wwwroot/docker_image -H tcp://10.0.10.119:7878 -H fd:// vi /lib/systemd/system/docker.service 加载配置,直接restart会有提示 systemctl daemon-reload /etc/init.d/docker restart -H参数光指定tcp的不行,必须保留原来的unix socket /var/run/docker.sock,不然本地命令执行不了了。
Read more...

vim清除搜索历史

清除vim搜索历史 :call histdel('/') 寄存器文档 :help registers ,少输入了一个然后文档没查到。用google直接搜文档找到了,,
Read more...

react-navie学习之hello world

react大体看了一下,设计的真好啊。没有DOM操作,只需要看stat,刷新只需要改变的组件。 react-navie安装 按照官网教程来就行了。安装xcode,npm install -g react-native-cli 创建一个项目 react-native init TestProject 运行ios 可以直接用xcode打开TestProject/ios/TestProject.xcodeproj ,然后运行。 也可以进到项目根目录运行,react-native run-ios。这个好处就是不用开xcode,用别的编辑器编辑就行了。 改完js文件也不需要重新编译,在模拟器快捷键command+r就能看到结果了。屌屌屌 通过我粗略的查看,每次都是ios应用请求http://127.0.0.1:8081/index.ios.bundle?platform=ios&dev=true,返回一个js文件,包括了我helloword的代码。有个flow的请求不知道干啥的,返回了404. 安卓安装 下载android-sdk_r24.4.1-macosx.zip,解压,添加到环境变量export ANDROID_HOME=/Users/tools/android-sdk-macosx, 然后运行tools里边的android,启动sdk管理界面,这里被墙了,可以使用翻墙代理,127.0.0.1:8086配置一下。必须选择“Force https://... sources to be fetched using http://...”不然回报证书错误。 SDK Platform Android 6.0, API 23, revision 2这个安装不是大小不对,就是超时。从代理log里找到下载链接http://dl.google.com/android/repository/android-23_r02.zip,直接下载,下载完放到.android/cache目录下。这种方法不好用,开始有些包还没有,我重启了sdk管理工具就都有了,不知道是依赖还是咋回事. 复制错目录了,是安卓sdk的temp目录,不是管理工具那个缓存目录。然后成功,其他也可以这么下载。 安装加速器/extras/intel/Hardware_Accelerated_Execution_Manager/IntelHAXM.dmg,检查安装 kextstat | grep intel 163 0 0xffffff7f82e39000 0x14000 0x14000 com.intel.kext.intelhaxm (6.0.1) 8FF2C637-0A5E-367E-B007-5B08655B1E8A <7 5 4 3 1> 运行模拟器emulator -avd 卸载 模拟器,sudo /System/Library/Extensions/intelhaxm.kext/Contents/Resources/uninstall.sh ./emulator -list-avds 没有 ./android avd 点击create创建一个设备,也可以在这里直接点start启动模拟器。 react-native run-android 开始需要安装依赖库,麻痹又是网络不能连接,都是安装网络原因费劲。配置项目,Android目录下的gradle.properties。添加 systemProp.http.proxyHost=127.0.0.1 systemProp.http.proxyPort=8087 systemProp.https.proxyHost=127.0.0.1 systemProp.https.proxyPort=8087 然后提示证书不行,导入代理证书还是不行,, 最后修改vim android/gradle/wrapper/gradle-wrapper.properties,吧下载连接https改成http,然后重新run-android就好了。真曲折,查的过程中发现这个也可以使用离线下载的方式。 卧槽 又报错,日了狗了。 Could not GET 'https://jcenter.bintray.com/com/android/tools/build/gradle/1.3.1/gradle-1.3.1.pom'. > peer not authenticated 发现能直接访问,然后把之前修改的代理配置注释掉就好了。。 然后提示“failed to find Build Tools revision 23.0.1” ,发现是装错版本了,最新23.0.2,必须要23.0.1.。 重新安装好了。 官网说开启Gradle Daemon能加快编译。这个也没太大必要,就不搞了。 然后成功编译运行,模拟器里提示“unable to download js bundle from the dev server”,网上都是实机的问题。 我重启模拟器好了。 麻痹 泪奔 安卓安装个东西好麻烦,需要各种翻墙。
Read more...

react学习--hello world

需要npm安装依赖工具,npm安装方法 mac安装node js 这篇之前安装的。 安装好nodejs之后,安装工具 npm install --global babel-cli npm install babel-preset-react 之后让babel检查源文件目录,有更改自动编译。 babel --presets react src --watch --out-dir build src/hello.js -> build/hello.js html内容,react.js直接在官网下载的编译好的。

    
        test
        
        

    
    
        
hello.js文件。
ReactDOM.render(
    

Hello, world!

, document.getElementById('example') );
然后目录里起一个httpserver,就能看到hello world了。
Read more...

virtualenv源码阅读

想研究一下virtualenv是怎样保证python运行环境独立的。库里边带了几个二进制,导致clone源代码的时候发现库好大啊,当时就祈祷源码不要太多。 目录结构 大体看了一下文件目录,主要文件就一个virtualenv.py。(也确实安装完就这一个文件) bin/rebuild-script.py这个文件是用来构建新的virtualenv.py文件的。 virtualenv_embedded 文件夹里边的文件是 生成虚拟环境后的脚本,但不是最终版的。上边构建文件将这几个文件插入virtualenv.py virtualenv_support 几个二进制库 创建一个环境 $ virtualenv ENV 从virtualevn main()入手,2000多行。前边解析参数,extend_parser和adjust_options可以自定义修改参数,目的应该是可以使创建环境的命令简单。after_install是环境创建完成后执行,可以做一些基础包的安装等操作。我猜virtualenvwrapper应该会对这几个函数定义。 --python参数可以指定解析器的版本。resolve_interpreter是返回指定解析器的绝对路径,作者使用path变量和提供的执行文件名组合再判断文件是否存在,是否可执行来判断。我感觉可以直接使用which取一下,差不多。 VIRTUALENV_INTERPRETER_RUNNING是判断是否使用的指定解析器,不是指定解析器,就更改变量,用指定解析器重新执行。是的话就继续执行。在加载文件的时候判断是指定解析器,把virtualenv安装环境的path去掉。 后面删掉了PYTHONHOME,make_environment_relocatable好像是对环境目录移动复制等操作后进行重定向,这个没用过。主要就把环境bin目录下的文件的python执行解析器,修改lib库文件路径 create_environment就是创建环境的函数了,第一个参数是环境根目录,后边都是执行参数。 path_locations 根据不同系统解析器环境,返回要创建的环境的目录 install_python,开始先判断了不能用虚拟环境创建自己,clear参数清除环境下的lib库。使用sys.prefix找到python安装路径,还有一个real_prefix和base_prefix这俩路径官网没查到什么意思 创建新环境的lib文件夹,fix_lib64是为了兼容一些别的环境lib文件夹命名不同,咋不开始就定好。使用os库找到标准库的目录stdlib_dirs.然后将标准库文件软连接到新环境的lib下,copy_file分析了是软连接然后找到真实文件,连接到真实文件上. 还有一个REQUIRED_MODULES必要库,先判断这些必要库是否在标准库里边,不在通过imp.find_module找到,同样添加软连接到lib目录.这个应该也是为了兼容吧.其中lib目录有单独的一套,卧槽 我只能说这是python的坑吗,我觉得肯定不是作者特意写好多。(具体不了解不同系统有啥区别也不想看) 创建lib目录下的site-packages,site又是一套我查.include也是软连接 bin目录python二进制复制,那么多代码都是不同py实现的结果,其实就一句copy.不是windows解析器二进制还有带版本号的。然后测试了一把解析器能不能执行。最后返回新环境python的路径 install_distutils 安装 install_wheel 安装安装包的工具. install_activate 安装环境的启动退出脚本 install_python_config 安装python_config文件 上边两个模式基本相同,源文件在virtualenv_embedded下,通过编译到virtualenv.py文件里,然后安装的时候替换相关变量,然后生成新的文件。 最后再看看activate.sh文件如何启动 执行这个脚本的时候,先进行deactivate操作,相当于切换环境。主要就是判断之前的环境变量保存的几个变量是否存在,存在还原, 并删除。因为可以不存在,当前使用的system的python环境.ps1也还原 下边进行新环境变量的赋值。记录要切换的环境根目录,path加入环境bin目录, 删掉pythonHOME.更改ps1加上环境名,替换。pydoc重新绑定,变成了现在的pydoc。 然后就没了
Read more...

select2支持值搜索和文本搜索

用select2 支持搜索,value是拼音,文本是汉字。发现经常不知道输入什么,于是想支持两种方式。官方提供了方法。

function myMatcher(term, text, option) {
    return text.toUpperCase().indexOf(term.toUpperCase()) >= 0 || option.id.toUpperCase().indexOf(term.toUpperCase())>=0;
}

$(document).ready(function() {
    $.fn.select2.amd.require(['select2/compat/matcher'], function (oldMatcher) {
      $("#id_dev_user").select2({ matcher: oldMatcher(myMatcher), placeholder: "选择人员", allowClear: true })
    });
 });
Read more...

mac给virtualbox虚拟机硬盘扩容

virtualbox虚拟机硬盘容量不够用了,之前就分了10g。 >> VBoxManage list hdds UUID:           c9daba2d-b089-4d40-aea8-c0566466dd3e Parent UUID:    base State:          created Type:           normal (base) Location:       /Users/0x55aa/VirtualBox VMs/debian/debian.vdi Storage format: VDI Capacity:       8192 MBytes Encryption:     disabled   >> VBoxManage modifyhd /Users/0x55aa/VirtualBox\ VMs/debian/debian.vdi  --resize 25600 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%   这个ls的时候发现vdi容量没变,磁盘容量还是动态分配的。
Read more...

debian上更改jenkins的启动用户

只是为了保持和线上的环境一致,默认启动的用户是jenkins 修改/etc/default/jenkins配置文件 JENKINS_USER="sysop" JENKINS_GROUP="sysop" 更改jenkins目录权限
chown -R sysop:sysop /var/lib/jenkins 
chown -R sysop:sysop /var/cache/jenkins
chown -R sysop:sysop /var/log/jenkins


sudo /etc/init.d/jenkins restart
直接执行名利好像没反应,我重新启动虚拟机就好了
Read more...

python进程注入,查看gc状态

java有一个jstat 可以查看gc的情况等数据。可以看一下如何注入python进程获取gc每一代的次数。主要使用gdb 首先ps找一个python进程的pid。 ps aux| grep python 1264   然后执行 gdb -p 1264 -batch -eval-command='call PyGILState_Ensure()' -eval-command='call PyRun_SimpleString("exec(\"import gc\\nprint(gc.get_count())\")")' -eval-command='call PyGILState_Release($1)' 你会发现 1264启动日志输出一个元祖(492, 8, 0),分别代表每一代gc的次数。 同样也可以进行手动gc,或者查看线程数等操作。或者执行任意代码。  
Read more...

Previous Page 1 2 3 4 5 6 7 8 9 10 Next Page 最后一页