露紫衣的博客 遗失的小站

在公司内搞了个jenkins分享 技术

发表于 2019年03月05日 16时53分51秒


配图

不得不说这玩意对ruby来说还真的没啥用...还是gitlab方便啊

可能是java真的没啥好的流程管理工具?

说起来是不是该给博客加个上传附件功能了.

阅读全文

使用vscode调试rails应用 技术

发表于 2018年06月07日 17时22分52秒



printf "\n\"env\": {\n  \"PATH\": \"$PATH\",\n  \"GEM_HOME\": \"$GEM_HOME\",\n  \"GEM_PATH\": \"$GEM_PATH\",\n  \"RUBY_VERSION\": \"$RUBY_VERSION\"\n}\n\n"

    {
      "name": "Rails server",
      "type": "Ruby",
      "request": "launch",
      "cwd": "${workspaceRoot}",
      "program": "${workspaceRoot}/bin/rails",
      "args": [
        "server"
      ],
      "env": "env

    },
阅读全文

flex布局记录 技术

发表于 2018年03月26日 10时58分13秒


配图

成天谷歌太麻烦,还是自己记录一下

flex-direction: row | row-reverse | column | column-reverse; //决定主轴的方向(即项目的排列方向)
  • row(默认值):主轴为水平方向,起点在左端。
  • row-reverse:主轴为水平方向,起点在右端。
  • column:主轴为垂直方向,起点在上沿。
  • column-reverse:主轴为垂直方向,起点在下沿。
flex-wrap: nowrap | wrap | wrap-reverse;
  • nowrap(默认):不换行。
  • wrap:换行,第一行在上方。
  • wrap-reverse:换行,第一行在下方。
justify-content: flex-start | flex-end | center | space-between | space-around;
  • flex-start(默认值):左对齐
  • flex-end:右对齐
  • center: 居中
  • space-between:两端对齐,项目之间的间隔都相等。
  • space-around:每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍。
阅读全文

基于ruby的钉钉isv加密解密解析 技术

发表于 2017年11月29日 10时48分55秒



在处理钉钉isv的接入门槛那边卡了一晚上.果然还是太菜了.

仔细读了钉钉提供的php相关源码后总算解决了

明文msg的加密过程

msg_encrypt = Base64_Encode( AES_Encrypt[random(16B) + msg_len(4B) + msg + $key] )

AES加密的buf由16个字节的随机字符串、4个字节的msg长度、明文msg和$key组成。其中msg_len为msg的字节数,网络字节序;

  • $key对于ISV来说,填写对应的suitekey

  • $key对于普通企业开发,填写企业的Corpid



buf由16个字节的随机字符串: 直接SecureRandom.hex 8即可

4个字节的msg长度: 此处要使用ruby的pack方法用pack("N")把他打包成字节序.我就是在这部卡了导致一晚上钉钉那边不认我的消息

后面就没什么难度了.也是见识太少,知见障了.

阅读全文

小程序的一些小坑 技术

发表于 2017年11月17日 10时20分26秒


配图

开发模式中一切正常的absolute,在实机中,经常因为源生组建的问题层级出问题.要各种想办法调.

解决方法: 少用

textarea由于使用的源生组件,在z平面上永远是最高级.使用textarea的页面不能用诸如自定义的遮罩之类的弹出框.会有字体出现在上面

解决方法: 在用textarea的表单不用自定义的picker

阅读全文

从零开始的魔法上网书 技术

发表于 2017年06月20日 10时16分13秒


配图

这是一本教授新手魔法师如何从零开始部署自己的魔法上网工具的教程.

Across the Great Wall we can reach every corner in the world

施法工具连接

魔网架设方法

云主机这种事情量力而行,一般来说最低配置2.5$-5$一月的足够了.系统建议ubuntu或者centos

使用 ssh登录自己的服务器,或者通过vps站提供的远程管理,执行:

curl -sSL https://get.docker.com/ | sh

等待docker安装完成,执行:

docker pull oddrationale/docker-shadowsocks

镜像拉取完成后执行

docker run -d -p 10086:10086 oddrationale/docker-shadowsocks -s 0.0.0.0 -p 10086 -k woshimima -m aes-256-cfb

10086是端口号,woshimima是密码

然后使用ss客户端连接.

服务器配置中服务器地址写你的服务器ip.

端口写你设定的端口,这里是10086

密码是你设定的密码,这里是woshimima

加密方式选aes-256-cfb

ss设为自动代理模式,更新pac即可

阅读全文

strict_encode64和urlsafe_encode64 技术

发表于 2017年04月06日 19时48分39秒



加密生成的东西要丢在url里时切忌要用urlsafe_encode64

阅读全文

祝你情人节快乐 生活

发表于 2017年02月14日 18时32分24秒



祝你情人节快乐.无论快乐或是悲伤,还是忧愁或是伤感.

即使过去的一切已不在,祝好.

阅读全文

eager_load 技术

发表于 2017年02月14日 18时31分11秒



使用eager_load之后在进行select * as xxx 取出来的model居然.xxx的时候提示method_missing.

换成joins就好了.eager_load真神奇

https://github.com/rails/rails/issues/15185

阅读全文

没什么事情过不去的…… 生活

发表于 2016年11月29日 16时29分57秒



有些事情总会过去的……

阅读全文

rubyconf china 有感(1) 技术

发表于 2016年10月04日 22时10分55秒


配图

rest.jpg

金数据的陈金洲所说的重构确实特别有意思.

在之前的项目中也遇到过到因为路由特别复杂,找一个逻辑找半天的问题.

把批量操作的"批量"这一概念本身看作是资源来处理,这个想法完美的解决了之前项目中遇到的头疼的取名问题.

另外注册用户本身也是.

之前的项目中创建用户的同时要生成默认的团队.处理的逻辑是

        ActiveRecord::Base.transaction do
          team = Team.create!(team_params)
          @customer = Customer.create!(customer_params)
          @customer.super_admin! team
        end

在用户的创建逻辑中进行Team的创建操作.十分不利于理解.

现在想来正确的做法应该是,创建一个registry的resource.

用户的创建应当是registry的create.而不是customer的create

阅读全文

修改一下actioncable的js的加载位置 技术

发表于 2016年09月27日 15时12分52秒



修改之前:

全站页面都挂载了actioncable的js

cabel.png

这导致不管什么页面都会打开websocket。很显然不喜欢这样。

把它从application.js中删除

在room页面增加

<%=javascript_include_tag 'cable', 'data-turbolinks-eval': false%>

assets.rb中增加

Rails.application.config.assets.precompile += %w( cable.js )


修改cable.js为

// Action Cable provides the framework to deal with WebSockets in Rails.
// You can generate new channels where WebSocket features live using the rails generate channel command.
//
//= require action_cable
//= require_self
//= require_tree ./channels
(function () {
  this.App || (this.App = {});

  App.cable = ActionCable.createConsumer();
}).call(this);

$(document).on("turbolinks:load", function () {
  this.App || (this.App = {});

  App.cable = ActionCable.createConsumer();
});


room.coffee添加关闭websocket的代码


$(document).on 'turbolinks:before-cache', ->
  App.cable.connection.close()
阅读全文

给小站加一下搜索功能,试试玩玩elasticsearch 技术

发表于 2016年09月26日 14时57分03秒


配图

在gemfile中添加

gem 'elasticsearch-model'

gem 'elasticsearch-rails'

然后在initializers中新建es的初始化文件elasticsearch.rb

Elasticsearch::Model.client = Elasticsearch::Client.new retry_on_failure: true, host: "localhost"

这里因为本地和线上都是用的服务器本地的es。所以直接写了localhost

安装es。由于使用了ik分词。so,


git clone https://github.com/medcl/elasticsearch-analysis-ik

然后,注意选择和自己的es相符合的版本

mvn package

编译之后把 target/release下的文件复制到es插件目录下

使用mac的home brew安装的话记得用brew info elasticsearch看看详细的插件目录信息。别丢错了(这里坑了很久)

然后解压ik插件文件重启es即可

需要搜索的model中加入

  include Elasticsearch::Model

  include Elasticsearch::Model::Callbacks

然后加入search方法。

还有建立索引

   settings index: { number_of_shards: 5 } do
     mappings dynamic: false, include_in_all: false do
       indexes :title, {
              type: :string,
              term_vector: :with_positions_offsets,
              analyzer: :ik,
              search_analyzer: :ik
            }
     end
   end


   def self.search(q)
     __elasticsearch__.search(
       query: {
         multi_match: {
           query: q,
           fields: ['title']
         }
       }
     )
   end
sudo add-apt-repository ppa:webupd8team/java

sudo apt-get update
sudo apt-get install oracle-java8-installer

安装Java

然后从官网安装es。然后

groupadd es
useradd es -g es 0p elasticsearch
chown -R es:es /opt/elasticsearch

给es单独创建一个用户用来启动es。cd到es目录

bin/elasticsearch -d

后台启动

阅读全文

把树莓派变成git服务器 技术

发表于 2016年09月13日 23时17分33秒



新建git用户

sudo adduser git


导入authorized_keys文件到/home/git/.ssh下

如果是复制过去的文件的话注意使用

sudo chown -R git:git /home/git/.ssh

来把.ssh下的文件权限全丢给git用户

修改etc/passwd将

git:x:x1001:1001:,,,:/home/git:/bin/bash

修改为

git:x:x1001:1001:,,,:/home/git:/usr/bin/git-shell

取消用户的登录权限.让他只能用gitshell

然后新建一个store目录

cd /


sudo mkdir gitstore


cd gitstore


sudo git init --bare myblog.git
阅读全文

配置树莓派的ruby环境 技术

发表于 2016年09月13日 17时44分59秒



安装rvm

gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3


\curl -sSL https://get.rvm.io | bash -s stable


gem sources --add https://ruby.taobao.org/ --remove https://rubygems.org/

更换淘宝源完毕后重启终端

rvm install 2.3.0

安装ruby

rvminstall.png没有现成的arm版本ruby.需要现成编译.编译速度特别慢,慢慢等吧...

等待半小时即可.树莓派也就只能玩玩吧,还是太慢了

阅读全文

树莓派入手 技术

发表于 2016年09月12日 16时32分12秒



hehe.png

留着待编辑,打算拿来做模拟器+git私人仓库+迁移网站

---

庆祝树莓派3b入手,顺手给博客加了图片上传功能。用的carrierwave的gem和tower的simditor编辑器自带的上传,rails方面随便写了个接口就搞定了

--------

尝试安装了一下ubuntu mate 16.04

感觉下来对板子的负担还是有点大,一些事情明显很慢,决定还是重新刷官方系统

系统镜像写入,mac下

sd卡插入后先把sd卡unmount掉,然后用dd指令写入镜像,为了快一点,所以需要指定bs写入速度和输出指向为rdisk

diskutil unmount /dev/disk2s1 
sudo dd bs=4m if=2016-05-27-raspbian-jessie.img of=/dev/rdisk2 

使用了官方的RASPBIAN JESSIE的镜像,国内没有找到镜像source。更新较慢。

阅读全文

一个不错的文档网站 技术

发表于 2016年09月09日 11时21分08秒



devdocs.io

很多语言的文档都有。

阅读全文

小站概况 技术

发表于 2016年09月04日 15时20分40秒


配图

服务器用的ubuntu 14.04

主要框架是rails5.数据库是mysql.+redis(actioncable需要)

首页使用的是actioncable做的简单的聊天室demo

服务器用的puma.入口用的nginx做反代.

部署用的mina.总的来说还是挺方便的.

登录用的rails自带的轮子bcrypt做密码比较

博客的富文本编辑器用的tower团队的simditor

图片上传是用的喜闻乐见的carrierwave

阅读全文

博客搜索

博客类别