require "singleton"
class CoderA
include Singleton
attr_accessor :worktime
def initialize
@worktime = 996
end
def self.getWorktime
@worktime
end
def self.setWorktime
@worktime = 995
#print self.worktime
end
def work
p self.worktime === @worktime
p "self.worktime is %d" % self.worktime
p "@worktime is %d" % @worktime
end
end
CoderA.setWorktime
p CoderA.getWorktime
CoderA.instance.work
p CoderA.getWorktime
var data_params=" a,b " ;
var data_body=" var c=a + b;alert(c); ";
var d=new Function(data_params, data_body);
d(100,200);
这算元编程吗?
class Base
['xx', 'oo'].each do | method|
define_method(method.to_sym) do |name,block|
yield block
end
end
end
class MyApp < Base
xx "abc" do
p "aa"
end
oo "123" do
p "11"
end
end
想 eval 一下 MyApp 中的 block,怎么取得 MyApp 中的 block?
瞬间高大上的赶脚
因为女人 35 以后不值钱了,就象码农 35 以后要劝退一样 你没发现这个落户规则跟企业招人一个路数吗 翻译成大白话就是值钱的来,不值钱的滚蛋
低 30 个级别
纠正一下 ruby 性能并不低,基于 Rack 的框架跟原生 php 差不多,比 php 异步框架低一点
低的是 rails, 跟 laravel 一档 总体来说,ruby 与 php 相当,高档与低档的都是同一水平 很多人 php laravel 能分清,ruby rails 分不清
frrom https://www.techempower.com/benchmarks/#section=data-r20&hw=ph&test=fortune&l=y453b3-sf&d=d
两万多家客户竟然没有恒大,这不科学
写得太快穿越了 已更新
https://notepadqq.com/s/videos/multiselect.webm
scintilla 的 qt 版本,qt5 跨平台,除了启动慢以外,功能与 npp 一样
vue 是不定绑 俗称 x 绑。ng 双绑火了,vue 就双绑 react 单绑火了,vue 就单绑 哪天如果冒出个不绑的框架火了,vue 又改不绑了,跟着 vue,你不仅要不停地改 Api 还要眼观六路,耳听八方,写代码的时侯要用眼角的余光扫描下一个准备要火的框架
class << self 怎么访问 worktime?
上面的代码是从其他地方抽取后 简化过的,不写 self.work 读不到类变量
require "singleton"
class CoderA
include Singleton
attr_accessor :worktime
def initialize
@worktime = 996
end
def work
print "work at %d" % self.instance.worktime
end
end
CoderA.work
这个可以用来显示 Gem dep
padrino 在 sinatra 上面套了个外壳,里面还是 sinatra,报错信息跟 sinatra 一模一样,就是集成了外围组件,集成了 admin cache mailer 和脚手架,高仿 rails
命令行生成这种方式明显是过度设计,多增加了一些 Gem 依赖和学习成本 论效率远不如 git clone 一个项目 boilerplate
Error: Sequel::AdapterNotFound: LoadError: cannot load such file -- sequel/adapters/sqlite3
gem install sequel-adapters-sqlite3
ERROR: Could not find a valid gem 'sequel-adapters-sqlite3' (>= 0) in any repository
padrino + sequel
脚手架生成可以选 Sequel 吗?
sinatra 用 ar+reloader+slim 很少的代码实现拍黄片一大堆代码的效果,流行不起来的原因,主要是 DSL 写法太花哨了,各种花式 set/use ,
get :sample, :map => '/sample/url', :provides => [:any, :js] do
case content_type
when :js then ...
else ...
end
这些写法 要拿个小本本记下来, 不报错一切太平,报个错码农一脸懵逼,想改代码都不知道从哪里改。各种 get/post 都挂在 app 下面,写一两个 action 的时侯看着还行 业务稍微复杂一点,满屏的 end (跟够烂满屏的 err 有一拼)找个路由参数都费劲。只适合用来开发个人业余项目,就算耽误时间也不用担心扣钱
公司业务还是用 flame / rambutan / scorched 这种套个 Controller 帽子的,分门别类设置路由 调试和维护都比较方便 ,app.rb 中只放路由,只有两级 end 相当于 group
require "flame"
Dir[File.join(".", "controllers/*.rb")].map { |file| require file }
class App < Flame::Application
mount IndexController do
get "/", :dashboard
end
mount UserController do
get "/login", :login
post "/login", :logon
end
end
带上战五渣的猪队友打一把 dota 就秒懂了
扁平的团队适合远程开发,就象 linux 那样
非扁平的团队在开放的时代还好,都忙着干活挣钱,内卷时期都是搞办公室政治 怎么样维护江湖地位,提拔自己人,打击异已,凑巧的是异已一般能力比较强,马屁精的精力都花在看风向,察颜观色上了
以安全的名义 一个把持着客户端收钱 一个把持着网页入口收钱,3q 大战本质上就是抢地盘
https://www.oschina.net/news/160287/firefox-bypasses-windows-default-browser-settings m$和 mozilla 靠技术抢地盘 3q 靠吓唬小白抢地盘
魔幻现实主义时代,一会 996.ICU 非法,一会 996 违法 码农一脸懵逼
事务实现一般放在在 service 层
关于 rails 的分层 可以参考 https://ruby-china.org/topics/41603
当然 rails 框架不需要支持 因为标配的 rails 是类似 20 年前 struts/ Webwork 那样处理 form 表单的,配置一下表单验证和跳转流程 XXmodel.save 然后数据库里就有记录了 地铁终点站就是到 M 就下车了
如果是面向服务的应用,发现需要的没有 (或者跟老板硬杠耐心等待 6 个月以后的下一版,一切都完美了),不需要的一大堆,去掉不需要的一要花时间,二是提心吊担上线以后不知道什么地方会出幺蛾子。
基于 rack 写的不会比 rails 更好,但是可以做分布式事务处理,公司业务有新的需求讨论完了就直接写代码,不会跟老板硬杠 rails 这个版本还暂不支持这个功能,下个版本要等到 6 个月以后才发布,也不会看到一堆“warning @rails/webpacker > postcss-preset-env > postcss-color-gray > postcss-values-parser”心烦意燥
https://github.com/costajob/ruby-pico-frameworks
NYNY 这个在功能和性能之间处理得比较均衡 api 也很简洁,可惜也停更了
加机器 加内存效果更佳,两台服务器换成 8 台服务器,2g 内存换成 16g 内存