手机游戏现在乃至以后都是绝对的主流,中国手游是统治地位,原神一年赚几百亿。单一付费的模式被价格歧视模式打爆。什么 3A 游戏大作都要被边缘化了。你提的问题不重要。
社交平台这种赢家通吃的领域,个人开发者甚至普通小公司团队都没有赢面。
猎头群。
直接找相关政府部门告,公司怕政府。
乱码至少知道几点:字符编码区间,以及明文的统计学规律(比如 is 这种的出现频率),然后写一个函数检查是否符合明文的统计学规律就可以了。
你一篇文章写太长了,拆分成 5 篇文章吧。
@samatist 对了,你是深圳人,可以看看这个: http://blog.linjunhalida.com/blog/shuiku/ 比程序员有前途多了,深圳明年很大可能开涨一波。
背了二十五万卡债。。千万不要滚成高利贷了,你很危险呀,赶紧先还了。
难得看到昆山的工作,友情顶一下。我估计难招,会 ruby 的人不太会跑昆山,上海的人看不上这个工资。
@nikoloss Hi, 你好,我们工作经常英文开会,还是需要听说的能力的。
你道出了一个非常可怕的现实:
也就是说,程序员在整体业务里面,并不是核心需要推动的因素。
玩了大概 6 年了吧
打了补丁的部分可以跳过不做类型检查嘛。给个报警之类的。
还在招聘中,快快投简历。
还好,就是隔音成问题,影响开会
都不是好的办公环境,好的办公环境是一个人一个单间,保证不影响工作,开会到外面会议室开。 我这种才是最好的办公环境。封闭,安静,没其他干扰因素(唯一的缺陷是门不太隔音不过不要紧我买了隔音耳塞)
有诚意的老板不会不发工资,真没钱不可以多办几张信用卡,房子抵押掉付工资呀。楼主明显被忽悠了。走完了之后发贴说一下这家公司的名字,让大家不要掉坑。
自己顶一下,我们还在继续招聘。
OO 又是一个老话题了,编程范式跟着业务抽象来,什么合适用什么。比如 GUI 编程,没有 OO 怎么做?不要拿到锤子就把所有东西当钉子敲。通用编程语言应该支持所有编程范式。
我最近安装了 Linux, 下面用了 prax.cr 这个替代 pow 的工具,它就是用 crystal 重写的。看看能不能解决我关注的 Ruby 缺少类型检查的 问题。
新泽西节点。。。就算选美国你倒是找一个西海岸的 VPS 呀。
工资待遇是 13k 起,水平可以的话比这个高很多,具体看能力。
解析函数的阶段可以说是编译期。在这个阶段可以对函数代码进行优化。不过 Ruby 实现不支持。。。
Ruby 语言的语法特性和执行方式其实是可以支持函数边界类型验证的(比如 Racket 就实现了),这个是属于可以做的事情。
C# partial 应该可以做到这一点。
C 语言特性以外的都不是必需品,但是作为现代通用编程语言,很多特性是保证开发效率和工程质量必须的。 烂语言有很多,比如 Autoit,PHP,Perl,都能用,但是烂。
函数式,类型系统都是极大提升开发效率和质量的,作为通用编程语言,是必须有的特性,没有理由不加。
还是要用语言实现比较好。库写起来不好的。
实现类型验证的简单过程:
# 定义函数需要加上类型
define_function :calculate, [Array(A)] do |objects|
lambda {
objects.map{|o| count_method.call(o)}.sum
}
end
def define_function(name, types)
Function.new(method: block.call, types: types)
end
# 解析调用到这个函数的代码的时候,会进行类型验证
define_function :run do
call_function(:calculate, :objects)
end
def call_function(func_name, args)
func = get_function(func_name)
type_checking(func, args)
lambda { func.call(args) }
end
# 类型验证会去检查是否函数是否支持该类型,不支持的话就报错
def type_checking(func, args)
func.types.each_with_index do |type, i|
unless args[i].kind_of?(type)
raise TypeError
end
end
end
因为我就写了一句话,不明白是正常的。举个例子:
def calculate(objects)
objects.map(&:count).sum
end
class A
def count; rand; end
end
class B
def count; 10; end
end
calculate(12.times.map{A.new})
calculate(12.times.map{B.new})
在 ruby 里面,calculate 就不晓得传进来的是什么东西,只会把 count 消息传给 object,让 object 返回结果,object 本身要实现接收:count 然后执行对应方法的过程。
优化 1: 假设传进来的 objects 都是同样的类型,我们可以先取得 count_method,这样不需要 object 动态查找 count 的 method。
def calculate(objects)
# 假设objects都是同样类型
count_method = objects.first.class.get_method(:count)
objects.map{|o| count_method.call(o)}.sum
end
优化 2:宏编译优化,查找 count_method 的过程在编译期的时候就完成了。
def create_calculate(klass, objects)
count_method = klass.get_method(:count)
lambda { |objects|
objects.map{|o| count_method.call(o)}.sum
}
end
calculate_method = create_caculate(A) calculate_method.calculate(objects)
上面这两个优化可以提升很多的效率。要知道代码里面大多数的东西都是在方法调用来调用去。
很明显是执行的时候才会猜类型呀,能够动态定义函数,同时函数本身不带有类型信息,那么只能在执行时才可以知道传进来的参数类型。 我觉得你以为实现的方式是:函数是一个模板,类似:func(T arg),当然不可能是这样的。