Archive for 算法-编程

在Mac上写cocos2d游戏代码的时候,写了个label,调了几次没居中,突然想到是不是mac屏幕的原因。然后鼠标滑了一下看了一下还正好差一倍居中。 然后网上搜了一下,在github上找到了解决方案。 HiDPI屏幕都会有这种问题,有两种patch,一个改pyglet的,一个改cocos2d的,然后我手动改了一下cocos2d的代码解决了。 话说cocos2d不更新了,维护也不知道会不会改。突然感觉选择cocos2d有点虚了。 issues:https://github.com/los-cocos/cocos/issues/303

Continue

scheduler.New() 定义在kubernetes/pkg/scheduler/scheduler.go 返回一个Scheduler type Scheduler struct { config *factory.Config } 首先先用New传过来的参数替换schedulerOptions默认配置 type schedulerOptions struct { // 调度器的名字,pod创建的时候可以根据这个名字选择使用哪个调度器,默认值"default-scheduler" schedulerName string // hardPodAffinitySymmetricWeight int32 disablePreemption bool percentageOfNodesToScore int32 bindTimeoutSeconds int64 } 然后调用factory.NewConfigFactory

Continue

代码读的master上最新的 1641ff411. 命令入口文件在kubernetes/cmd/kube-scheduler/scheduler.go 主要就两句,设置启动参数。其他的设置命令行参数和日志打印。具体不看了 command := app.NewSchedulerCommand() command.Execute(); NewSchedulerCommand 在文件kubernetes/cmd/kube-scheduler/app/server.go 很多代码都是设置scheduler命令参数的,也是用的cobra这个库,跟docker是一样的。 opts, err := options.NewOptions() 读取默认配置 runCommand()执行命令 runCommand 比较有用的几行: c, err := opts.Config() 这里边东西比较多,比如初始化kube-client与api交互,eventclient,选举相关的配置。没仔细看,代码在kubernetes/cmd/kube-scheduler/ap

Continue

开始只在在线Clojure网站上进行一些测试,后来感觉不行,操作速度都太慢。决定还是安装个环境。 去clojure官网看了一下也不麻烦。 去官网下载个zip包,解压到目录。 进入目录创建一个bin目录,新建一个clojure文件.添加几行代码 <pre lang="bash"> if [ x$* != x ] then java -cp /Users/a0x55aa/tools/clojure-1.8.0/clojure-1.8.0.jar clojure.main "$*" else java -cp /Users/a0x55aa/tools/clojure-1.8.0/clojure-1.8.0.jar clojure.main fi</pre> 然后加入环境变量path种就行了,方便到处使用.

Continue

接上次看的往下看 cli.Pidfile 创建pid文件"/var/run/docker.pid" serverConfig := &apiserver.Config{ Logging: true, SocketGroup: cli.Config.SocketGroup, Version: dockerversion.Version, EnableCors: cli.Config.EnableCors, CorsHeaders: cli.Config.CorsHeaders, } 这几个默认值为 SocketGroup 为docker, EnableCors false, CorsHeaders 这个看EnableCors api := apiserver.New(serverConfig) 这个就是实例化了个Server,cfg为上边的serverConfig cli.api = api 返回一个, 初始化cfg为serverConfig,看起来所有请求的路由都在这里了 type Server struct

Continue

在用Grafana绘图,后端时序数据库用的InfluxDB。在进行绘图的时候用到取top n的数据。有一个top函数,但是里边不能有函数计算了。我是先group by tag 然后求和的。 查了好多看大部分都是top,开始搜的时候还搜的Grafana,后来想到这是influxdb的查询。找到官方文档,有一个limit和slimit. 这里是有区别的,slimit是相当于之前想法的limit,只去分组的top n。而limit是取每个分组下的top n。 但是order by 也不能 用聚合的字段来,还不知道排序怎么搞。 感觉influxdb还是很新的东西,好多东西太难搞了。也许是不了解。。

Continue

dockerd/daemon.go start() loadDaemonCliConfig(opts) 里 daemon.MergeDaemonConfigurations(config, flags, opts.configFile)将配置文件设置的参数和命令参数合并。 过了好多代码,感觉都是配置啥的就不看具体干啥了。 setDefaultUmask() 设置umask 0022,把goup和other的写权限干掉了。 daemon.CreateDaemonRoot(cli.Config) 先获取docker daemon根目录 默认/var/lib/docker setupRemappedRoot 根据配置映射容器用户和组的 这个参数默认是空的,也就是不映射 如果设置了这个参数 parseRemappedRoot就是解析参数的,有四种格式 username username:groupname uid uid:gid 然后解析/etc/passwd和/etc/group看看参数对不对。其中解析是否是defaultIDSpeci

Continue

东西太多了,大体过了一下,感觉会少了很多东西。有一些三方库,也没去看库怎么用。就看函数名大体猜一下功能。 完全就是从main函数一步一步往下看,这种看法就是缺少一个大局的认识,开始会有很多不理解的做法。 cmd/dockerd/docker.go reexec.Init() 必须要提前调用的方法,用来初始化。如果初始化过了就会返回true,main函数也退出了。 判断是否调用过,就是看看registeredInitializers里有没有os.Args[0]的key。 如果有调用value,没有直接返回false,接着走main函数 具体value是个啥函数,慢慢看.里边还有个Register(函数用来往registeredInitializers里添加值。 cmd := newDaemonCommand() cmd.Execute() 这里一看就跟client的结构一样,突然就感觉好看多了。。 daemonOptions daemon.NewConfig() 返回一个Config,所有配置应该都在这,太多了,也看不到啥意思先过了。 c

Continue

哈哈,找了个跨平台的游戏框架玩玩。 在mac平台上安装试了一下。下载需要注册,第一次启动也需要填注册的账号,所以还是注册了。 安装完启动输入账号,完成后创建一个项目。直接点击是使用的手机模拟器启动的。 官方给出的命令启动方法,-no-console YES是不显示debug信息。 "/Applications/CoronaSDK/Corona Simulator.app/Contents/MacOS/Corona Simulator" ~/CoronaApps/MyApp 作为桌面软件启动的时候,还是要先开模拟器编译通过后,菜单选择File → Build → macOS.填填选项。选择 Open application编译完启动,或者编译完手动启动也行。

Continue

先看看上次没看完的client的初始化。 NewAPIClientFromFlags里 getServerHost(opts.Hosts, opts.TLSOptions),如果参数有指定用参数的,如果没指定用os.Getenv("DOCKER_HOST"). 设置customHeaders,环境变量如果有设置DOCKER_API_VERSION,设置api版本 newHTTPClient(host, opts.TLSOptions)返回一个http.client client.NewClient(host, verStr, httpClient, customHeaders)初始化一个新的Client对象,Client是啥, client/interface_stable.go package client // APIClient is an interface that clients that talk with a docker server must implement. type APIClient interface { CommonAPI

Continue