• 最近很多人都在推荐这个,还没看过。 最近玩儿了一下 react 和 flutter。还没玩儿到这个。慢慢来。 flutter 是和很二的东西,必须要切换到 beta 的版本才可以--enable-web。但是 web 下没法调用 graphql。很傻。

  • 我是个业余程序员,能够让网页稍微好看一些,也就可以了。于是引入了一大堆懒人库。 至于分拆 webpack,并调用 cdn 提速的问题。只是做一个思考,并没有真的要去写一个网站上线。 我看了你发的文档链接,看来确实是需要修改 config/webpack/environment.js,感谢,还没来得及测试。

  • 现在 ruby on rails 的前端,越来越依赖 javascript 了,webpack 精简的各种文章都是完全针对 nodejs 写的。完全搞不明白。

    这一块,ruby on rails 的文档就非常少了。

    咱们是修改 config/webpack/environment.js 吗?有例子吗?

  • 分开加载,放在 cdn 上,每次更新自己的代码,库文件,很多电脑都已经在访问其他网页的时候下载过了。

  • 我是用的七牛云存储做得 cdn 存储。这个值得试试。

  • 你这种方式,我早就试过了,是不行的。

    <a>
    

    里面规定,如果是加入 download 下载属性,则内容必须是在本机的。

    如果是在其他域名和服务器上的东西,会失效的。

    所以必须拉回到本机上,再生成临时 url,才能通过 download 属性实现下载。

  • person 没有实现的问题解决了。

    这个东西很傻。

    我一开始写成了这样,结果报错。

    def resolve(name: , age: , description: )
       person = Person.create!(name: name, age: age, description: description)
     end
    

    然后写成了

    def resolve(name: , age: , description: )
       person: Person.create!(name: name, age: age, description: description)
     end
    

    说是语法结构错误。 最后改成了:

    def resolve(name: , age: , description: )
       person = Person.create!(name: name, age: age, description: description)
       {
         person: person,
       }
     end
    

    可以跑了,实在是奇葩啊。

    input 嵌套的问题,还是没有解决,求大神帮忙。

  • 我使用下面这个 mutition 字符串倒是成功的将数据添加进去了,只是觉得好麻烦,好诡异。 并且得到了一个报错,说是 person 没有被实现过。

    为什么网上的案例都是直接输参数,我的却要用 input 包裹一下呢?

    mutation{addPerson(input:{
      name: "张三",
      age: 25,
      description: "2021要更加有趣。"
    }){
      person{
        id
        name
        age
        description
      }
    }
    
    }
    
  • 看来需要慢慢研究了。

  • 没太明白,我希望可以实现登录、注册,以及每一次 query 或 mutation 请求之前,都进行认证。

  • 稍微折腾了一下 FontAwesome at 2020年12月28日

    我是一个业余程序员,写程序的原因是满足业余爱好。所以会学习并尝试使用新技术,并不是以商业效率为第一出发点的。

  • 稍微折腾了一下 FontAwesome at 2020年12月26日

    RESTful 肯定是最简单,最直接的。GraphQL 的优点是自解释,以及更大的灵活性。 比如 RESTful,你把接口写好了,就是固定的。GraphQL 则可以写一次,依靠不同的 Query 字符串就可以获得不同的结果。比如多传几个字段,少传几个字段。

  • 我觉得我是在做 gem 的时候,没有规定版本,所以搞得乱七八糟的。 其实,web 应用、移动应用通常用户只分为两个大类,用户和管理人员。管理人员是很少的少数,即使在里面稍微再做一些细分,其实也都不是那么重要了。

    对于用户来说,只要能够确保不被黑客攻击就够了。相对来说并不那么复杂,搞得复杂了也没有意义。

    对于管理人员来说,即使再复杂也无所谓,毕竟频度不高。

    我是一个业余程序员,只是把学习新技术作为一种类似于打游戏的活动。 现在需要找一种方法,放在 graphql 里面,可以让 react 和 flutter 编写的前端,可以安全的取到后台的数据,稍微做一些验证,不被人随便存取,也就够了。

    管理端,其实无所谓了。好玩儿就折腾一下。

  • webpack 的各种项目之间的相互引用,实在是太麻烦了。

  • 稍微折腾了一下 FontAwesome at 2020年12月26日

    感谢,我学习一下。 现在的问题是,前后端的整合和分割的问题。 后端以后提供 webpack 的后端渲染,以及 graphql 的数据服务。 前端,一边是 web,一边是 flutter,使用同一套后端。 矢量图标,iconfont 也看了,感觉系统性没有 fontawesome 好,比较零碎。

    关于 fontawesome,如果用了本地的库,比如 fontawesome-react 或 fontawesome-less 之类的库,引入了之后。如何在发布的时候,再改成直接用 fontawesome 提供的 cdn 模式呢?

    现在还在研究 graphq-auth 或 devise-jwt 之类的东西,graphql 还需要加入 jwt 之类的东西保障一下。这东西好像也是很麻烦的。

  • rails_admin 好像是也可以用 pundit,回头准备试试。cancancan 即使要用 mongoid,项目中也必须有 ActiveRecord,否则会报错。

    通常我的项目都是用 rails new -O 指令,把这部分去掉的。 尝试了一下,加上 ActiveRecord 之后,再上 mongoid,cancancan 能跑了,devise 却报错了。 还是很麻烦啊。 不知道 pundit 对 mongoid 的支持如何。好像文档要比 cancancan 少很多啊。

  • 我现在遇到的问题是,加了 gem 'cancancan-mongoid'之后,依然报错,说是没有定义过 activerecord。

  • 我用 cancancan 是因为要用 rails_admin 以后前端就用 react 和 webpack,并不需要那么复杂的权限管理了。 能够有一个系统修改一下后端就好了。

  • 作为一个业余程序员,发现 ruby on rails,现在好像没有以前活跃了。 最近在学习 RoR 下得 react 编程 询问一下,react 组件和 rails 的 MVC 之间的接口应该怎么搞? 有没有相对完整的教程?那部分在 View 里面做,那部分在 react 里面做,中间如何对接和传递参数?

  • 终于搞对了。

    r = HTTP.headers('Content-Type' => 'application/json').post(k_url, body:JSON.generate(params), params: form)
    r.parse
    {"log_id"=>6317715199120415505, "items"=>[{"score"=>0.997762, "tag"=>"iphone"}, {"score"=>0.861775, "tag"=>"手机"}, {"score"=>0.845657, "tag"=>"苹果"}, {"score"=>0.83649, "tag"=>"苹果公司"}, {"score"=>0.797243, "tag"=>"数码"}]}
    //下面的方法也是对的
    r = HTTP.headers('Content-Type' => 'application/json').post(k_url, json:params, params: form)
    

    原来一直在用 form 参数往里面传递固定的参数,在获取 token 的过程中也没有问题。 但是到了获取关键词的时候,就不对了。 access_token 和 charset,要放在 params 里面传入。其他信息通过 json 或 body 传入,差别在于使用 json 格式或字符串格式。 作为一个业余程序员,慢慢研究这种东西,也就获得了玩儿游戏的快感了。虽然搞对了,但还是没明白 form 和 params 的差异。

  • 又做了有一次失败的尝试:

    body = "{\"title\":\"#{params[:title]}\",\"content\":\"#{params[:content]}\"}" 
    body
    "{\"title\":\"iphone手机出现“白苹果”原因及解决办法,用苹果手机的可以看下\",\"content\":\"如果下面的方法还是没有解 决你的问题建议来我们门店看下成都市锦江区红星路三段99号银石广场24层01室。在通电的情况下掉进清水,这种情况一不需要拆机处理。尽快断电。用力甩干,但别把机器甩掉,主意要把屏幕内的水甩出来。如果屏幕残留有水滴,干后会有痕迹。^H3 放在台灯,射灯等轻微热源下让水分慢慢散去。\"}"
    r = HTTP.headers('Content-Type' => 'application/json').post(k_url,form: form, body:body)
    r.to_s
    "{\"error_code\":100,\"error_msg\":\"Invalid parameter\"}"
    

    我尝试了把 body 重新写成了 json 格式,还是错误的。

  • 换了一种写法,也是错误的。

    body = "title=\"#{params[:title]}\"\&content=\"#{params[:content]}\""
    
    body
    "title=\"iphone手机出现“白苹果”原因及解决办法,用苹果手机的可以看下\"&content=\"如果下面的方法还是没有解决你的问题建议来我们门店看下成都市锦江区红星路三段99号银石广场24层01室。在通电的情况下掉进清水,这种情况一不需要拆机处理。尽快断电。用力甩干,但别把机器甩掉,主意要把屏幕内的水甩出来。如果屏幕残留有水滴,干后会有痕迹。^H3 放在台灯,射灯等轻微热源下让水分慢慢散去。\""
    form[:charset] = 'UTF-8'
    form[:access_token] = access_token
    r = HTTP.headers(:accept=>'application/json').post(k_url,:form=>form,:body=>body)
    r.to_s
    "{\"error_code\":100,\"error_msg\":\"Invalid parameter\"}"
    
    r = HTTP.headers(:accept=>'application/json').post(k_url,:form=>form,:json => params)
    r.to_s
    "{\"error_code\":100,\"error_msg\":\"Invalid parameter\"}"
    

    我测试了将 params 作为 json,通过 params 传入,或作为字符串,通过 body 传入,也测试了将 params 作为 json 传递给 json 变量。 都失败了。

  • 我使用了你推荐的 http,结果还是一样的。

    
    
    params = {:title => 'iphone手机出现“白苹果”原因及解决办法,用苹果手机的可以看下',:content=>'如果下面的方 法还是没有解决你的问题建议来我们门店看下成都市锦江区红星路三段99号银石广场24层01室。在通电的情况下掉进清水,这种情况一不 需要拆机处理。尽快断电。用力甩干,但别把机器甩掉,主意要把屏幕内的水甩出来。如果屏幕残留有水滴,干后会有痕迹。^H3 放在台 灯,射灯等轻微热源下让水分慢慢散去。'}
    k_url = 'https://aip.baidubce.com/rpc/2.0/nlp/v1/keyword'
    form = {:access_token=>access_token}
    r=HTTP.post(k_url,:form=>form,:params=>params)
    r.to_s
    "{\"error_code\":100,\"error_msg\":\"Invalid parameter\"}"
    

    应该如何调整?

  • 不知道 open-uri 默认的字符集是什么? 我一直猜测是编码问题,我曾经加上过 :charset => 'utf-8' 的 params,还是不对。 估计还是需要做一次 iconv。有空再试吧。 看来是没人搭理啊。

  • 用过 vscode 或 android studio,撸 flutter 之后,总觉的用各种 IDE 撸 Ruby 非常不爽。那种强类型语言的自动提示和自动格式化,各种自动代码生成,以及各种简单方便的调试工具,实在是太爽快了。总觉的撸 ruby 的过程就像是隔靴搔痒,不得劲儿啊。

  • 嵌入的数据,倒不是经常需要修改。只是在统计、或者一些状态判断的时候很麻烦。 另外,我还遇到了一个窝心的事情,原来用早期的 carrierwave 版本学的爬虫程序,没 mount 的字段,比如是 picture 吧,那么数据库里面存的字段就是 picture_filename。现在用新版本的 rails 和 carrierwave 写了一个 graphql 服务器,默认的字段名变成了 picture,每次都需要把字段名换一下。 对于普通的 collection,直接做 JavaScript:

    db.collection.update({},{$rename:{"picture_filename":"picture"}});
    

    或者用 mongoid 在 Rails 环境下

    Picture.all.rename(picture_filename: 'picture')
    

    就可以了,在嵌入式文档里面,实在是没搞明白怎么折腾。

  • mongodb,一直在用。中间也偶尔会用到 pg。mysql 在被 oracle 收购之后,就用得很少了。 用了一段时间的 mongodb 之后,再要回去用 pg,是非常辛苦的。各种表的结构都是固定的,不像是 mongodb,随时随地的调整,加减内容,每个文档都不需要保持相同。 在数据量没有那么大的情况下,各种数据库的效率其实是差不多的。 在复杂的统计分析方面,mongodb 肯定是没有 SQL 方便,在数据量不大的时候做 aggregation 其实 SQL 有的功能基本也都能实现。数据量大的时候,通过 MapReduce 也还是可以实现的。 NoSQL 数据库,复杂的统计分析,肯定是比较麻烦实现的。这东西本来也不是为了那种上万实体,每个实体几十上百个字段的复杂系统设计的。 不过,用来搞网站还是基本够用的。

  • 我现在是直接用 string 类型了,回头用你的方法试试。

  • 询问一下,应该如何查询 DateTIme 格式的字段? 我在网上查了一下,有人说是要用 Types::DateTimeType,我得到了:uninitialized constant Types::DateTimeType 请问应该如何处理?

  • 试验了几次,感觉还是字段的问题,重新赋值了字段,将原来 picture_filename 里面的信息,复制到 picture 里面,但是需要重启之后,才能够 run。估计是内存里面还有一些残留。 诡异。