2016年12月14日星期三

一个小问题,console log的 clickable to source code

[%l]不行,只能显示,click点说找不到文件。得在%前加一个空格。折腾。

http://stackoverflow.com/questions/9588580/log4j-in-java-project-displays-wrong-file-when-clicking-on-link-from-conversion

2016年11月29日星期二

firefox是越来越不给力了

突然就慢了,不是说启动慢,是说加一个tab,或者中键滚动慢。不知道是否因为自动升级导致,google了几下

设置了browser.tabs.animate为false,好像起了效果。

2016年11月2日星期三

类名.this 类名.super的用法

http://www.cnblogs.com/PengLee/p/3993033.html


①当在一个类的内部类中,如果需要访问外部类的方法或者成员域的时候,如果使用  this.成员域(与 内部类.this.成员域 没有分别) 调用的显然是内部类的域 , 如果我们想要访问外部类的域的时候,就要必须使用  外部类.this.成员域
package com.test;
public class TestA 
{    
    public void tn()
    {          
        System.out.println("外部类tn");         
    }  
    Thread thread = new Thread(){     
          public void tn(){System.out.println("inner tn");}        
          public void run(){           
                 System.out.println("内部类run");        
                 TestA.this.tn();//调用外部类的tn方法。          
                 this.tn();//调用内部类的tn方法           
             }    
     };          
     public static void main(String aaa[])
     {new TestA().thread.start();}
}

2016年10月19日星期三

firebug color

Format        Description
Bold Black    Objects
Black         DOM objects
get in gray   "Getter" functions
Bold green    User functions
Green         DOM functions
Bold Red      Constructor functions 
 
 http://getfirebug.com/wiki/index.php/DOM_Panel


Bold Black是Object,Class的instance了
Bold Red还是Class

2016年10月18日星期二

nth-of-type的选择器和class谁优先?

今天写一个东西,这样子的
.grid-autotrail  tbody tr td.range:nth-of-type(3) {
border-right: 1px red dotted;
}

本来想选出tr里面是td.range的第三个,结果选出来的是
tr里面第三个td,并且有range的

也就是nth-of-type这样的,不受前面class的影响。

2016年9月26日星期一

2016年9月23日星期五

csrf(跨站请求伪造)流程

1。用户正常登录了正规网站A。产生了cookie。
2。用户没退出的情况时,访问了网站B。B的页面里面,有网站A的连接,比如http://www.a.com/xxx,比如<img src="http://www.a.com/xxx/yyy"/>
3。用户往往B的他页面时,会去访问A,访问A时也会带上A的cookie,由于cookie是正常的,A会认为是一个合法的请求,进而进行处理。自然B网站也可以搞自动post等背后动作,只要cookie有效。

对于这样的情况,网站A的可以检查http_Referer来判断,但是referer也是可以伪造的,不保险。
所以有效的还是在form里面,埋入token。

spring security里面的csrf对策,就是埋入token,来检测请求的有效性。但是,一旦启用了csrf,就必须用到session。有没有不用session的csrf的检测方法呢?
【仔细看了文档,spring也可以将csrf写入cookie里,来做到stateless,CookieCsrfTokenRepository】


考虑到的方法有,写cookie,cookie里面埋入token,并且form里面也埋入hash过的token。服务器端来比较两个token是否一样。这里用到的原理是,第三方网站(比如上面的B)没法获取A的cookie【也是理论上的】,所以B的页面的form里面,也就没法埋入A的cookie了。

 http://docs.spring.io/spring-security/site/docs/current/reference/html/csrf.html
的文档里面,描述了为啥没用CookieCsrf作为默认而用Session作为默认的原因。如果要用session,那么普通的rest也就是有状态了,所有的请求都需要提交csrf字段。
 
https://www.blogger.com/blogger.g?blogID=8899947124180453470#editor/target=post;postID=327728104436759904

如果cookie泄漏了怎么办?XSS(跨站脚本攻击)手法是可以偷cookie的。
 怎么偷,首先,网站得是一个可以运行人发言的网站,比如论坛。A在发言代码里面嵌入javascript,如果网站没有做处理,照本显示,那么B浏览网站时就会执行A嵌入的代码。由于是网站页面自身的script,script就可以拿到B的cookie了,自然也可写script将偷来的cookie发给A。
spring security里面对xss,没有特别的招,就是3个encoding。
1。ouput文字的时候,html encoding
2。 ouput javascript的时候,javascript encoding
3。事件绑定时,handler encoding。

2016年9月21日星期三

spring oauth2,不用config,用xml

http://www.cnblogs.com/tinkerz/p/3759796.html

https://github.com/spring-projects/spring-security-oauth/blob/114fbd44beef0382009f207c08f0b1d9c24e95a9/samples/oauth2/sparklr/src/main/webapp/WEB-INF/spring-servlet.xml

https://github.com/cloudfoundry/uaa/blob/master/samples/api/src/main/webapp/WEB-INF/spring-servlet.xml


http://blog.csdn.net/monkeyking1987/article/details/16828059

http://wwwcomy.iteye.com/blog/2230265

https://gist.github.com/ddewaele/6411612

2016年9月16日星期五

查看进程的运行环境

strings –a /proc/<pid_of_the_process>/environ


https://blogs.oracle.com/myoraclediary/entry/how_to_check_environment_variables

2016年9月14日星期三

ftp的文件名乱码

vsftpd的文件上载后乱码,自然,可以设置ftp客户端的设定,设置为utf8,但是这得告诉别人这么去设置,需要找个法子,设置自然而然转码的的功能,查到vsftpd没这个功能,虽然以前有人做了patch,非官方的。
找到了proftpd,
设置UseEncoding UTF-8 CP932 strict,就可以了。


2016年9月5日星期一

org.apache.ibatis.logging.jdbc.BaseJdbcLogger.debug

这个一直输出,就算定义了
    <logger name="org.apache.ibatis.logging.jdbc.BaseJdbcLogger">
        <level value="info" />
    </logger>
也没用,查了一下,

别人也遇到这个问题,
http://stackoverflow.com/questions/27772563/why-mybatis-force-prints-log4j-debug-info-to-the-console

解决法子是将mapper的logger定义为info就可以。
看BaseJdbcLogger的源码,可以知道里面的log不是自己的,而是构造函数里面传递进去的
protected Log statementLog;

  public BaseJdbcLogger(Log log, int queryStack) {
    this.statementLog = log;
    if (queryStack == 0) {
      this.queryStack = 1;
    } else {
      this.queryStack = queryStack;
    }
  }
这就是原因了。

这里也碰到一个问题,就是loggername是否支持wildchar的事情
因为我的mapper不是在一个包下,而是在各个repository自己的目录下,比如,没有这样的定义
    <logger name="xiu.domain.repository.*.*Mapper">
        <level value="info" />
    </logger> 
找了找,发现logback有filter功能,于是这样来搞
http://logback.qos.ch/manual/filters.html

         <filter class="ch.qos.logback.core.filter.EvaluatorFilter">  
          <evaluator>          
            <matcher>  
              <Name>mapper</Name>     
              <regex>xiu\.domain\.repository\..+\.\w*Mapper</regex>  
            </matcher>                 
            <expression>mapper.matches(logger)</expression>  
          </evaluator>  
          <OnMismatch>NEUTRAL</OnMismatch>  
          <OnMatch>DENY</OnMatch>  
        </filter>  

2016年9月3日星期六

2016年8月31日星期三

@Transactional(readOnly=true) 和 @Cache谁优先?

执行下来,目前看到的是@Transaction肯定执行,它比@Cache先跑。

而不是说,先去@Cache里面找,找不到再开始 @Transaction,也就是计算你定义了@Cache,加了@Transaction的地方,仍然会先去拿一个connection,再还回Pool。

实际场景中,@Cache了Service层返回的内容,然后Controller层疯狂call Service,量大时仍然有挤爆max connection的可能。

https://github.com/arey/java-object-mapper-benchmark

https://github.com/arey/java-object-mapper-benchmark
http://mariusz.wyszomierski.pl/en/mapping-dozer-vs-mapstruct/
http://vytas.io/blog/java/java-object-to-object-mapping-which-framework-to-choose-part-2/
http://stackoverflow.com/questions/34786737/java-mapping-selma-vs-mapstruct/35327974

http://java-performance.com/

http://java-performance.com/

2016年8月30日星期二

deepclone

    // http://howtodoinjava.com/core-java/cloning/a-guide-to-object-cloning-in-java/
    // http://stackoverflow.com/questions/2156120/java-recommended-solution-for-deep-cloning-copying-an-instance

测试了几个,不是


        // method 1, ok
        // List<T> dst = (List<T>)SerializationUtils.clone(ArrayList.class.cast(src)); //too slow

        /*
        //method 2, ng      
        List<T> dst = new ArrayList<T>();
        CollectionUtils.addAll(dst,  new Object[src.size()]);
        Collections.copy(dst, src);
        */

        /*
        //method 3, ng
        T[] srcT = toArray(src);
        T[] dstT = (T[])Array.newInstance(srcT.getClass().getComponentType(), src.size());
        System.arraycopy(srcT, 0, dstT, 0, srcT.length);
        List<T> dst = Arrays.asList(dstT);      
        */

        /*
        //method 4, ng, need Clonable
        List<T> dst = new ArrayList<T>();
        for (T o: src)
        {
            T cloned = null;
            if (o instanceof Cloneable)
            {
                //cloned = o.clone();
                try
                {
                    cloned = (T)(o.getClass().getMethod("clone").invoke(o));
                } catch (Exception e)
                {
                    e.printStackTrace();
                }              
            }
            else {                              
                cloned = SerializationUtils.clone(o);
            }          
            dst.add(cloned);
        }
        */

        // method 5, ok
        List<T> dst = (List<T>) cloner.deepClone(src);

2016年8月28日星期日

使用mybatis的resultmap,将native 的ResultSet变成VO

混用mybatis和native jdbc时,一直考虑能否直接使用定义在mybatis里面定义的resultmap,发愁
了很久。

今天终于找到了方法,旧的版本是不支持的,用了新的3.4.1。

代码如下
    @SuppressWarnings("unchecked")
    public static <T> List<T> getListFromResultSet(ResultSet rs, String resultMapId) throws SQLException
    {
        List<Object> l;
        Configuration cfg = getSqlSession().getConfiguration();       
        ResultMap resultMap = cfg.getResultMap(resultMapId);       
        MappedStatement ms = cfg.getMappedStatements().iterator().next();//get first MappedStatement       
        DefaultResultSetHandler drsh = new DefaultResultSetHandler(null, ms, null, null, null, null);           
        ResultSetWrapper rsw = new ResultSetWrapper(rs, cfg);;
        DefaultResultHandler resultHandler = new DefaultResultHandler(cfg.getObjectFactory()) {
            @Override
            public void handleResult(ResultContext<? extends Object> context)
            {
                super.handleResult(context);
                //log.debug("{}", context.getResultObject());               
            }
        };
        drsh.handleRowValues(rsw, resultMap, resultHandler, new RowBounds(), null);
        l = (List<Object>)resultHandler.getResultList();
        for (Object o: l)
        {
            log.debug("{}", o);
        }
       
        return (List<T>)(List<?>)l;       
    }

handleRowValues这个函数,在以前的版本是private的。

参考了下面的url,但是他们都没给出答案
                 //http://www.codeproject.com/Tips/372152/Mapping-JDBC-ResultSet-to-Object-using-Annotations
                //http://resultsetmapper.sourceforge.net
                //http://nvry.iteye.com/blog/876076
                //http://stackoverflow.com/questions/32756530/how-to-use-mybatis-to-map-values-from-resultset-to-pojo

2016年8月24日星期三

spring aop vs aspectj

AspectJ是编译期间修改代码,属于静态编入,不需要代理类。spring aop基于代理的,用的是aopalliance(aopalliance只是一个规范接口,不是实现),是运行期间植入,是动态植入,没自己的代理,得通过cglib或者jdk代理实现。jdk的出发实现了interface的object,缺不能促发没有实现任何interface的object。如果设置了proxy-target-class="true",就可以用cglib去触发。

静态编入 比 动态编入 应该效率好一些。  spring-aop不好用,没有注解,所以搞出来spring-aspects, 靠注解就能搞定,spring-aspects其实和AspectJ没有任何关系,没有用到aspect的实现,只是用了AspectJ的类定义,所以它不是编译植入,而是动态植入,所以也需要代理实现(jdk或者cglib)


http://docs.spring.io/spring/docs/current/spring-framework-reference/html/aop.html#aop-proxying
这个proxy-target-class,虽然可以在好几个个地方设置,但是其实只要设置一个地方,就影响到所有,也就是只要一个地方设置为true,那么就都是true。
<aop:config proxy-target-class="true"/>
<aop:aspectj-autoproxy proxy-target-class="true">
<tx:annotation-driven proxy-target-class="true"/> 
<task:annotation-driven proxy-target-class="true"/>
<cache:annotation-driven proxy-target-class="true/>
 ...

文档是这么写的,既然都是一票定,为啥还要搞一个
ScopedProxyMode?
proxyMode = ScopedProxyMode.TARGET_CLASS还能以bean单位进行的定义? 


找了个文章
http://www.udpwork.com/item/15373.html 

这个文字的意思
>>这个的答案是,aspectj虽然是静态,但spring-aspectj还是动态。用了@Aspectj注释的,就算method不是public的,也起作用,就多这么一个好处+可以不xml而可以注解来设置? 如果只是这样,@Aspectj用处就不算啥了。
 

2016年8月16日星期二

编译podofo时的错误

无论编译成静态还是动态,都会报
/home/advuser/src/lib/comm/pdf/podofo-src/src/base/PdfMemoryManagement.cpp:133: error: ‘SIZE_MAX’ was not declared in this scope,查看/usr/include/stdint.h的代码,

#if !defined __cplusplus || defined __STDC_LIMIT_MACROS
...
#  define SIZE_MAX              (18446744073709551615UL)
# else
#  define SIZE_MAX              (4294967295U)
# endif
...
#endif

#if !defined __cplusplus || defined __STDC_CONSTANT_MACROS
#endif

也就是得先定义__STDC_LIMIT_MACROS再include stdint.h。

那么就修改cmake的podofo_src下面的CMakeLists.txt,追加上

SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS")

就OK了。

2016年8月14日星期日

typescript 2.0

https://zhongsp.gitbooks.io/typescript-handbook/content/doc/handbook/tutorials/ASP.NET%20Core.html

https://zhuanlan.zhihu.com/p/21629069

2016年8月7日星期日

sa弄长些,弄频繁些

默认是是10分钟一采集
cat /etc/cron.d/sysstat
*/10 * * * * root /usr/lib64/sa/sa1 1 1
把10修改为1,就变成一分钟了。

默认是保留7天,
cat /etc/sysconfig/sysstat
# How long to keep log files (in days).
# If value is greater than 28, then log files are kept in
# multiple directories, one for each month.
HISTORY=7
把7修改为27就可以

2016年8月4日星期四

angualr multi lang

https://www.sitepoint.com/multilingual-support-for-angularjs/

2016年8月3日星期三

why react

https://medium.freecodecamp.com/angular-2-versus-react-there-will-be-blood-66595faafd51#.fqz71jrb6


2016年8月1日星期一

oracle的并行查询

parallel_server不是并行查询用的,是给RAC用的,和并行查询没有一毛钱关系,这个糊涂了一下。


一般下面几个参数调节,hint里面的并行是会起作用的,就算table自身没有并行。
parallel_degree_policy
parallel_max_servers
parallel_min_servers
parallel_servers_target


测试如下
1.先disable并行
ALTER TABLE SKADVUSER.AD_ORDER_LEADINFO NOPARALLEL;
2 SELECT * FROM AD_ORDER,看计划,没有PX msg pool相关的东西。
3. select /*+ parallel(o 2) */ * from ad_order o,看机会,有了px。

还有个法子,就是直接enable session的并行,
alter session force parallel query;

不要并行
用no_parallel,或者直接将 parallel_max_servers设置为0。
parallel_degree_polic默认是manual,所以,如果表设置了并行,还是会并行。

http://m.blog.itpub.net/9240380/viewspace-1806660/
http://oracleinaction.com/statement-queueing/
http://blog.csdn.net/tianlesoftware/article/details/5854583

2016年7月26日星期二

proc的pc里面,注释里面不要放引号

比如
// if zhangshan's xxx
这样的注释,编译老报莫名其妙的错误
PCC-S-02010, found end-of-file while scanning string literal
Error at line 0, column 0 in file transtp1.pc
PCC-F-02102, Fatal error while doing C preprocessing

2016年7月11日星期一

rhel dmesg加上时间

http://gabrieleg.altervista.org/enabling-timestamps-for-dmesg-kernel-ring-buffer/

临时的,只需要执行
echo Y > /sys/module/printk/parameters/time
就可以
永久的,
可以修改/boot/grub/grub.conf
追加上printk.time=1,注意等号两边不要与空格。

这样dmesg的前面就有了Unix Timestamp,要转换为我们可以读取的,还需要转换一下。
https://linuxaria.com/article/how-to-make-dmesg-timestamp-human-readable
https://gist.github.com/saghul/542780

2016年5月20日星期五

system cpu high

今天又9:20~9:38发生了 system cpu占用很高的情况,逮到100%的core,看到进程基本都堵在了_spin_lock_irq的系统调用。根据这个_spin_lock_irq,外加system cpu搞,google到了。 rhel 6.3里的内核参数, vm.zone_reclaim_mode目前1,需要修改为0,在减少这个现象。
vm.zone_reclaim_mode=1,表示即宁肯回收自己zone的page cache,也不去申请其它zone的free pages
vm.zone_reclaim_mode=0,表示只要其它zone有free pages就去其它zone里申请


# sysctl -a | grep zone_reclaim_mode
vm.zone_reclaim_mode = 0

# sysctl -w vm.zone_reclaim_mode=1
vm.zone_reclaim_mode = 1

参考了网站
http://blog.phpdba.com/post/473
http://mogu.io/156-156
http://eratostennis.hatenablog.com/entry/2015/12/12/201319
http://www.databasesoup.com/2012/08/wrong-defaults-for-zonereclaimmode-on.html
http://blog.etsukata.com/2015/09/hadoop-cpu-system-zonereclaimmode-1.html

2016年5月6日星期五

tomcat gzip enable

https://tomcat.apache.org/tomcat-8.0-doc/config/http.html#HTTP/1.1_and_HTTP/1.0_Support

$CATALINA_HOME/conf/server.xml を以下の様に設定する。

<Server port="8005" shutdown="SHUTDOWN">
    <Connector port="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" 
               useBodyEncodingForURI="true" 
               compression="on"/>
</Server>

2016年4月29日星期五

SecureFX文件名乱码的解决

连接到aws的ec2服务器,sftp却是乱码,折腾了时间。

修改法子为,修改securefx的session 配置文件的
D:"Filenames Always Use UTF8"=00000000
为 00000001,表示一直使用utf8,不要是作用本地的编码。

2016年4月22日星期五

windows 10用久了关机关不下来

开机,用上1个小时,关机,没问题,可以彻底关掉。
开机,用上1天,关机,一直关不下去。

解决法子,将默认的Intel Management Engine Interface是11,降级到9.5就可以了。只是去掉mei的电源睡眠,也好像不管用。

2016年4月8日星期五

2016年4月4日星期一

老话题,Ioc和DI啥区别

概念问题,一直觉得差不多
别人一问,也说不清差别
查一下
能明确下来,https://blog.tonyseek.com/post/notes-about-ioc-and-di/
IoC是目的,就是为了控制反转,DI是手段,是实现控制反转的手段




2016年4月1日星期五

centos7里面tomcat要跑80,非root用户

其实很简单,直接将80的请求,转发到8080就完事了

iptables -A PREROUTING -t nat -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 8080

压缩js时出现的问题

非压缩时,跑得好好的,压缩后,angualr的inject就不好使了,这种问题有时候真的很头痛,这也是angular的难搞的地方,到底哪个注入失败,看不出来。

追代码
发现
function configAngular($compileProvider) {
    'ngInject';
    $compileProvider.debugInfoEnabled(true);
} 
这样是没问题的
如果我注视掉
function configAngular($compileProvider) {
    'ngInject';
    //$compileProvider.debugInfoEnabled(true);
}
这样就有问题了,产生的js代码里,这个函数没有t.$inject这样的东西,uglify太聪明了,他认为这个函数是个空函数(啥也没干),就删掉了ngAnnotate产生的注入代码
configAngular.$inject = ["$compileProvider"];
了,虽然是个空函数,该注入的还是要注入啊,然后angular的函数有参数,却没有$inject,报错咯

明白了原因 ,就想到如何修改这个,
自然,注入了就要使用时到时最好,有没有别的法子来对付呢,我还得继续查查
https://github.com/mishoo/UglifyJS2
仔细看了Compressor options
没发现这样的参数可以对付这个情况
没法子,那就如何对付,我最后弄成这样的
function configAngular($compileProvider) {
    'ngInject';;
   //$compileProvider.debugInfoEnabled(true);
}
这样jshint会包一个警告,也就是ngInject后面多一个逗号
  line 98  col 16  Unnecessary semicolon.
于是我disable掉这个警告,大功告成,当然这个我只是用在app.config.es6里面
/* jshint -W032 */

2016年3月31日星期四

开发机11g的空间不够了,试着删了一下

开发机11g的空间不够了,得腾点空间来,想shrink表空,可是系统一直跑着,
先想到的是temp,我先add了一个datafile进temp后
ALTER DATABASE TEMPFILE '/ORADATA/sysdata/NKV2DDB/temp01.dbf' online
ALTER DATABASE TEMPFILE '/ORADATA/sysdata/NKV2DDB/temp01.dbf' DROP INCLUDING DATAFILES
第二部是会报错,系统又不能停,得找别的地方腾空间了。
在想搞undo,发现undo已经不在快满的分区 。

后来发现diag下面有太多的incident,空间还不少,于是就在这里下手了。

[oracle@NKV2DEVDB omdata]$ adrci

ADRCI: Release 11.2.0.1.0 - Production on Thu Mar 31 18:41:58 2016

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

ADR base = "/ORADATA/app"
adrci> show homepath
ADR Homes:
diag/tnslsnr/NKV2DEVDB/listener
diag/rdbms/nkv2ddb/NKV2DDB
diag/rdbms/dup/dup
adrci>  show incident
这里输出太多了

adrci>  purge -age 14400 -type incident    
DIA-48448: This command does not support multiple ADR homes
还不让我做
adrci> set homepath diag/rdbms/nkv2ddb/NKV2DDB
adrci> show control
看一下
adrci>  purge -age 14400 -type incident 
这下ok了,删掉了很多。
adrci>  purge -age 14400 -type TRACE     
顺便也干掉了TRACE
adrci> set control (SHORTP_POLICY = 240),这是小时单位,1天
adrci> set control (LONGP_POLICY = 1095),1个半月
adrci> purge      

空间有了

2016年3月25日星期五

一台老机器,DL360 G5,不能从dvdrom启动

一台老机器,DL360 G5,打算用来做dmz,重做机器时,发现却不能从dvdrom启动。
一查,很多人都在问这个,却没有人提出解决法子
 方法一说,可以将SmartArray的逻辑盘删掉就可以,测试了几次,都一样,还是不行
http://d.hatena.ne.jp/showten/20040809
方法二说,需要回退bios,咋回退哦
http://community.hpe.com/t5/ProLiant-Servers-ML-DL-SL/DL360-G5-Won-t-boot-from-a-CD-listed-as-1-in-IPL/td-p/4218249

我试着做了一个usb的启动盘,再删掉了smartarray的逻辑盘,再reset bios to default,居然可以了。

2016年3月19日星期六

babel6里面,ie9,ie10的super不执行?

运气差,遇到了这个bug,babel5是ok的,一查,的确有

https://github.com/babel/babelify/issues/133

目前,我是用下面的法子解决的

{
  "presets": ["es2015"],
  "plugins": [
    "transform-es2015-modules-amd",
    ['transform-es2015-classes', {loose: true}]
    ]
}

2016年3月6日星期日

64bit data type

http://docwiki.embarcadero.com/RADStudio/Seattle/en/64-bit_Windows_Data_Types_Compared_to_32-bit_Windows_Data_Types

2016年3月4日星期五

放了OTL,还是用Delphi自己的的PPL吧

偶尔写个小程序,发现OTL http://otl.17slon.com/index.htm 已经不更新很久,用回XE以来自带的PPL,发现也不错,思维好像还和OTL还一样

http://docwiki.embarcadero.com/RADStudio/XE8/en/Using_the_Parallel_Programming_Library

http://chee-yang.blogspot.jp/2015/12/delphi-multi-threading_4.html

2016年2月29日星期一

linux 6.3 一直不产生core,怎么设置都没用

# vi /etc/security/limits.conf

#* soft core 0
* soft core unlimited

# vi /etc/sysctl.conf

kernel.core_pattern = /tmp/core-%e-%s-%u-%g-%p-%t
fs.suid_dumpable = 2

Note:
%e is the filename
%g is the gid the processs was running under
%p is the pid of the process
%s is the signal that caused the dump
%t is the time the dump occurred
%u is the uid the process was running under
# vi /etc/sysconfig/init

DAEMON_COREFILE_LIMIT=’unlimited’

# sysctl -p
以上都作了,还是不行。

进一步,我
https://www.stigviewer.com/stig/red_hat_enterprise_linux_6/2015-03-06/finding/V-38640
disable 的abrtd,还是没出来。

2016年2月22日星期一

在IE9,IE10里面,babel编译的类,构造函数父类不被执行

在IE9,IE10里面,babel编译的类,父类不被执行,也就是super()没进去,查了几个小时,发现是
babel编译类,依赖 __proto__

http://ricostacruz.com/til/babel-ie-class-inheritance.html

https://babeljs.algolia.com/docs/advanced/transformers/spec/proto-to-assign/ 


但是我没找到如何传递这个参数进gulp-babel
放哪都是Unknown option: base.optional,.babelrc.optional
.pipe($.babel({optional: ['spec.protoToAssign']})).on('error', conf.errorHandler('Babel'))
 不行
放.babelrc里面
 "optional": ["spec.protoToAssign"]
都不认

咋搞

 



搞定,用这个
http://babeljs.io/docs/plugins/transform-es2015-object-super/ 


"plugins": ["transform-es2015-modules-amd", "transform-es2015-object-super"]
 

2016年2月15日星期一

郁闷,真是郁闷,查了半天问题,才发现是ocLazyLoad和ng injector不搭配

ng injector在调试angular时的确是非常好用,最近用到了ocLazyLoad,老把angular的模块统统再次reload一遍,导致动态加载mod失败,追了大半天ocLazyLoad代码才发现ng injector的缘故。因为ocLazyLoad拦截angualr的函数后,只打算bootstap一回,ng injector也进了被拦截的函数里,导致问题所在。

解决法子,用了ocLazyLoad的地方,就disable掉ng injector插件。

2016年2月12日星期五

ie11突然啥地址也访问不了了

基本我也就用ie看兼容性,突然啥都访问不了了,输入url没反应,但是用管理员模式却没啥问题。
开始以为是毛豆防火墙导致,禁止了还是一样。重新reset ie11所有设置仍然一样,没解决。

后来发现是 由于ie的保护模式,去掉勾勾就可以。

http://answers.microsoft.com/en-us/ie/forum/ie10-windows_7/internet-explorer-10-works-only-in-administrator/f369671b-f8aa-403d-810c-5e8cd18b0ef8?auth=1

这个保护模式到底保护啥了?
找了文档看了
https://msdn.microsoft.com/en-us/library/bb250462%28v=vs.85%29.aspx#upm_undpm

Understanding Protected Mode

 

https://www.microsoft.com/china/msdn/library/webservices/WebApp/ProtectedMode.mspx?mfr=true

Office Outlook2013突然启动不了了,一直在 「処理中」状態から進みません。

不知道为啥,突然就这样了,由于我修改了windows的登录密码,想起mac的修改密码会导致一堆chain的问题,我还专门去控制面板里面找到 email的设定,重新做了一个profile,还是不行。

后来动搞西搞,又怀疑到是不是我切换笔记本显卡的缘故,

注册表,追加上
HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Common\Graphics\
DisableHardwareAcceleration DWORD 1
居然启动起来了 

2016年2月4日星期四

12c的pdb,jdbc 1.4连不上的解决方法

修改sqlnet.ora
设置上
SQLNET.ALLOWED_LOGON_VERSION_SERVER=8就可以了。

http://docs.oracle.com/database/121/NETRF/sqlnet.htm#NETRF2010

2016年1月28日星期四

form, component


控件
* @property {Object} $error An object hash with all failing validator ids as keys.
* @property {Object} $pending An object hash with all pending validator ids as keys.
*
* @property {boolean} $untouched True if control has not lost focus yet.没摸过
* @property {boolean} $touched True if control has lost focus.摸过,并失去了。
* @property {boolean} $pristine Truerol if user has not interacted with the cont yet.没交互过
* @property {boolean} $dirty True if user has already interacted with the control.交互过
* @property {boolean} $valid True if there is no error.合法
* @property {boolean} $invalid True if at least one error on the control.非法
* @property {string} $name The name attribute of the control.


form
 * @property {boolean} $pristine True if user has not interacted with the form yet.没交互
 * @property {boolean} $dirty True if user has already interacted with the form.已交互
 * @property {boolean} $valid True if all of the containing forms and controls are valid.合法
 * @property {boolean} $invalid True if at least one containing control or form is invalid.非法
 * @property {boolean} $submitted True if user has submitted the form even if its invalid.已提交,就算没提交成功也是已提交。



区分一下






 $dirty和$pristine是相反的
 $dirty是交互过,比如获得了焦点,并且输入了东西(比如输入A,然后删掉A)。
 $touched只是获得过焦点。

2016年1月27日星期三

babel输出deafult时,不要带default

https://www.npmjs.com/package/babel-plugin-add-module-exports

看了这个文章解决的

2016年1月26日星期二

做了一个dmz,用了selinux,比起没用selinux一堆麻烦

1。apache启动时,没法监听端口。
[root@dmz conf]# service httpd start
(13)Permission denied: make_sock: could not bind to address [::]:8085

这是因为selinux没有让8085运行。
semanage port -l命令可以看到,默认是
http_port_t                    tcp      80, 443, 488, 8008, 8009, 8443
需要追加上我的8085
semanage port -a -t http_port_t -p tcp 8085
追加上后,ok。

另外,rhel 6l里,默认semanage是没安装的。需要yum -y install policycoreutils-python
可以用
yum whatprovides /usr/sbin/semanage找到哪个包里有这个命令。

但是奇怪的是tomcat缺可以启动监听其他端口,不需要selinux,原因不知道,估计和用户所属组有关。

2.反向代理没法用
[Tue Jan 26 16:51:41 2016] [error] (13)Permission denied: proxy: HTTP: attempt to connect to 192.168.101.41:8080 (192.168.101.41) failed
[Tue Jan 26 16:51:41 2016] [error] ap_proxy_connect_backend disabling worker for (192.168.101.41)


需要执行
/usr/sbin/setsebool -P httpd_can_network_connect 1
才可以。 

2016年1月20日星期三

非root用户执行crontab时的环境变量

crontab -e,编辑完后,以为会按照指定的执行,结果发现crontab 执行虽然是以用户权限执行的,但是用户的环境根本没加载。

解决法子
1。最笨自然是用root用户里面crontab 然后 su - user -c "script.sh"咯
2。其实写script的时候,最前面加上-l就可以啦,#!/bin/bash -l这样子。也可以放job前面
* * * * * bash -l script.sh
3。要不然就是job的前面,加载也可以 . ~/.bash_profile;script.sh

2016年1月19日星期二

Invalid password while logging 12c ASM instance

12c的grid里


sqlplus / as sysdb ok
sqlplus / as sysasm ok
sqlplus sys/sys_pw as sysdba ok
sqlplus sys/sys_pw as sysasm NG


解决法子在这里
http://www.sqlplus.ca/blog/?p=1142


[grid@orasrv ~]$  ls -l $ORACLE_HOME/dbs
total 12
-rw-rw----. 1 grid oinstall 1328 Jan 19 15:41 ab_+ASM.dat
-rw-rw----. 1 grid oinstall 1544 Jan 19 15:41 hc_+ASM.dat
-rw-r--r--. 1 grid oinstall 2992 Feb  3  2012 init.ora


SQL> select * from v$pwfile_users;                              

USERNAME                       SYSDB SYSOP SYSAS SYSBA SYSDG SYSKM     CON_ID
------------------------------ ----- ----- ----- ----- ----- ----- ----------
SYS                            TRUE  TRUE  TRUE  FALSE FALSE FALSE          0
ASMSNMP                        TRUE  FALSE FALSE FALSE FALSE FALSE          0

[grid@orasrv ~]$ srvctl config asm -a
ASM home: <CRS home>
Password file: +DG_GRID/orapwasm
ASM listener: LISTENERASM
Spfile: +DG_GRID/ASM/ASMPARAMETERFILE/REGISTRY.253.865375963
ASM diskgroup discovery string: /dev/raw/*
ASM is enabled.
ASM is individually enabled on nodes:
ASM is individually disabled on nodes:

我的orapwasm缺是有的。sys也已经有了 SYSAS =true,想不通。
后来,connect / as sysasm后修改sys密码,alter user sys identified by oracle居然过了。
莫非asm实例的sys密码还有两份?一份给sysdba一份给sysasm?莫名其妙。